TBR: golang.org/x/{oauth2,text,tools/...}: update to latest version, remove x/mobile.

MultiPart: 1/2

Change-Id: I95817cfd53725d288844bd1f662a619a8affedf5
diff --git a/go/src/github.com/visualfc/gotools/README.google b/go/src/github.com/visualfc/gotools/README.google
index d413a52..a47d173 100644
--- a/go/src/github.com/visualfc/gotools/README.google
+++ b/go/src/github.com/visualfc/gotools/README.google
@@ -1,5 +1,5 @@
-URL: https://github.com/visualfc/gotools/archive/07fb242eb9ee0950a31ff3d809c1faa5c3b2a5f6.zip
-Version: 07fb242eb9ee0950a31ff3d809c1faa5c3b2a5f6
+URL: https://github.com/visualfc/gotools/archive/b8348693492ca3791bccfa028f3c19634c11c5b5.zip
+Version: b8348693492ca3791bccfa028f3c19634c11c5b5
 License: BSD
 License File: LICENSE
 
@@ -8,4 +8,4 @@
 source code.
 
 Local Modifications:
-No modifications
\ No newline at end of file
+No modifications
diff --git a/go/src/github.com/visualfc/gotools/astview/astview.go b/go/src/github.com/visualfc/gotools/astview/astview.go
index 2572e77..af07319 100644
--- a/go/src/github.com/visualfc/gotools/astview/astview.go
+++ b/go/src/github.com/visualfc/gotools/astview/astview.go
@@ -32,9 +32,10 @@
 	Command.Flag.BoolVar(&astViewStdin, "stdin", false, "input from stdin")
 }
 
-func runAstView(cmd *command.Command, args []string) {
+func runAstView(cmd *command.Command, args []string) error {
 	if len(args) == 0 {
 		cmd.Usage()
+		return os.ErrInvalid
 	}
 	if astViewStdin {
 		view, err := NewFilePackageSource(args[0], os.Stdin, true)
@@ -52,6 +53,7 @@
 			command.Exit()
 		}
 	}
+	return nil
 }
 
 const (
diff --git a/go/src/github.com/visualfc/gotools/command/command.go b/go/src/github.com/visualfc/gotools/command/command.go
index 6e98570..a20a3fb 100644
--- a/go/src/github.com/visualfc/gotools/command/command.go
+++ b/go/src/github.com/visualfc/gotools/command/command.go
@@ -25,7 +25,7 @@
 type Command struct {
 	// Run runs the command.
 	// The args are the arguments after the command name.
-	Run func(cmd *Command, args []string)
+	Run func(cmd *Command, args []string) error
 
 	// UsageLine is the one-line usage message.
 	// The first word in the line is taken to be the command name.
@@ -43,6 +43,10 @@
 	// CustomFlags indicates that the command will do its own
 	// flag parsing.
 	CustomFlags bool
+
+	Stdin  io.Reader
+	Stdout io.Writer
+	Stderr io.Writer
 }
 
 // Name returns the command's name: the first word in the usage line.
@@ -63,18 +67,39 @@
 	os.Exit(2)
 }
 
+func (c *Command) PrintUsage() {
+	fmt.Fprintf(Stderr, "usage: %s %s\n", AppName, c.UsageLine)
+	c.Flag.SetOutput(Stderr)
+	c.Flag.PrintDefaults()
+}
+
 // Runnable reports whether the command can be run; otherwise
 // it is a documentation pseudo-command such as importpath.
 func (c *Command) Runnable() bool {
 	return c.Run != nil
 }
 
+func (c *Command) Println(args ...interface{}) {
+	fmt.Fprintln(c.Stdout, args...)
+}
+
+func (c *Command) Printf(format string, args ...interface{}) {
+	fmt.Fprintf(c.Stdout, format, args...)
+}
+
 var commands []*Command
 
 func Register(cmd *Command) {
 	commands = append(commands, cmd)
 }
 
+func CommandList() (cmds []string) {
+	for _, cmd := range commands {
+		cmds = append(cmds, cmd.Name())
+	}
+	return
+}
+
 var exitStatus = 0
 var exitMu sync.Mutex
 
@@ -86,6 +111,53 @@
 	exitMu.Unlock()
 }
 
+var (
+	Stdout io.Writer = os.Stdout
+	Stderr io.Writer = os.Stderr
+	Stdin  io.Reader = os.Stdin
+)
+
+func RunArgs(arguments []string, stdin io.Reader, stdout io.Writer, stderr io.Writer) error {
+	flag.CommandLine.Parse(arguments)
+	args := flag.Args()
+	if len(args) < 1 {
+		printUsage(os.Stderr)
+		return os.ErrInvalid
+	}
+
+	if len(args) == 1 && strings.TrimSpace(args[0]) == "" {
+		printUsage(os.Stderr)
+		return os.ErrInvalid
+	}
+
+	if args[0] == "help" {
+		if !help(args[1:]) {
+			return os.ErrInvalid
+		}
+		return nil
+	}
+
+	for _, cmd := range commands {
+		if cmd.Name() == args[0] && cmd.Run != nil {
+			cmd.Flag.Usage = func() { cmd.Usage() }
+			if cmd.CustomFlags {
+				args = args[1:]
+			} else {
+				cmd.Flag.Parse(args[1:])
+				args = cmd.Flag.Args()
+			}
+			cmd.Stdin = stdin
+			cmd.Stdout = stdout
+			cmd.Stderr = stderr
+			return cmd.Run(cmd, args)
+		}
+	}
+
+	fmt.Fprintf(os.Stderr, "%s: unknown subcommand %q\nRun '%s help' for usage.\n",
+		AppName, args[0], AppName)
+	return os.ErrInvalid
+}
+
 func Main() {
 	flag.Usage = usage
 	flag.Parse()
@@ -101,7 +173,9 @@
 	}
 
 	if args[0] == "help" {
-		help(args[1:])
+		if !help(args[1:]) {
+			os.Exit(2)
+		}
 		return
 	}
 
@@ -114,6 +188,9 @@
 				cmd.Flag.Parse(args[1:])
 				args = cmd.Flag.Args()
 			}
+			cmd.Stdin = Stdin
+			cmd.Stdout = Stdout
+			cmd.Stderr = Stderr
 			cmd.Run(cmd, args)
 			Exit()
 			return
@@ -199,15 +276,15 @@
 }
 
 // help implements the 'help' command.
-func help(args []string) {
+func help(args []string) bool {
 	if len(args) == 0 {
 		printUsage(os.Stdout)
 		// not exit 2: succeeded at 'go help'.
-		return
+		return true
 	}
 	if len(args) != 1 {
 		fmt.Fprintf(os.Stderr, "usage: %s help command\n\nToo many arguments given.\n", AppName)
-		os.Exit(2) // failed at 'go help'
+		return false
 	}
 
 	arg := args[0]
@@ -218,19 +295,20 @@
 		printUsage(buf)
 		usage := &Command{Long: buf.String()}
 		tmpl(os.Stdout, strings.Replace(documentationTemplate, "{{AppName}}", AppName, -1), append([]*Command{usage}, commands...))
-		return
+		return false
 	}
 
 	for _, cmd := range commands {
 		if cmd.Name() == arg {
 			tmpl(os.Stdout, strings.Replace(helpTemplate, "{{AppName}}", AppName, -1), cmd)
 			// not exit 2: succeeded at 'go help cmd'.
-			return
+			return true
 		}
 	}
 
 	fmt.Fprintf(os.Stderr, "Unknown help topic %#q.  Run '%s help'.\n", arg, AppName)
-	os.Exit(2) // failed at 'go help cmd'
+	//os.Exit(2) // failed at 'go help cmd'
+	return false
 }
 
 var atexitFuncs []func()
diff --git a/go/src/github.com/visualfc/gotools/command/version.go b/go/src/github.com/visualfc/gotools/command/version.go
index aea260a..0a88780 100644
--- a/go/src/github.com/visualfc/gotools/command/version.go
+++ b/go/src/github.com/visualfc/gotools/command/version.go
@@ -5,7 +5,7 @@
 package command
 
 import (
-	"fmt"
+	"os"
 	"runtime"
 )
 
@@ -22,10 +22,12 @@
 	Long:      `Version prints the version.`,
 }
 
-func runVersion(cmd *Command, args []string) {
+func runVersion(cmd *Command, args []string) error {
 	if len(args) != 0 {
-		cmd.Usage()
+		cmd.PrintUsage()
+		return os.ErrInvalid
 	}
 
-	fmt.Printf("%s version %s [%s %s/%s]\n", AppName, AppVersion, runtime.Version(), runtime.GOOS, runtime.GOARCH)
+	cmd.Printf("%s version %s [%s %s/%s]\n", AppName, AppVersion, runtime.Version(), runtime.GOOS, runtime.GOARCH)
+	return nil
 }
diff --git a/go/src/github.com/visualfc/gotools/docview/docview.go b/go/src/github.com/visualfc/gotools/docview/docview.go
index 9c5a95a..85d96b6 100644
--- a/go/src/github.com/visualfc/gotools/docview/docview.go
+++ b/go/src/github.com/visualfc/gotools/docview/docview.go
@@ -40,9 +40,10 @@
 	Command.Flag.StringVar(&docViewMode, "mode", "text", "Print mode [text|html|lite]")
 }
 
-func runDocView(cmd *command.Command, args []string) {
+func runDocView(cmd *command.Command, args []string) error {
 	if docViewFind == "" && docViewList == "" {
 		cmd.Usage()
+		return os.ErrInvalid
 	}
 
 	var template string
@@ -117,6 +118,7 @@
 	}
 	contents := info.GetPkgList(docViewMode, template)
 	fmt.Fprintf(os.Stdout, "%s", contents)
+	return nil
 }
 
 var (
diff --git a/go/src/github.com/visualfc/gotools/finddoc/finddoc.go b/go/src/github.com/visualfc/gotools/finddoc/finddoc.go
index 45f2553..dfe2b75 100644
--- a/go/src/github.com/visualfc/gotools/finddoc/finddoc.go
+++ b/go/src/github.com/visualfc/gotools/finddoc/finddoc.go
@@ -129,8 +129,7 @@
 	Command.Flag.StringVar(&urlHeadTag, "urltag", "", "url head tag, liteide provate")
 }
 
-func runDoc(cmd *command.Command, args []string) {
-
+func runDoc(cmd *command.Command, args []string) error {
 	if !(constantFlag || functionFlag || interfaceFlag || methodFlag || packageFlag || structFlag || typeFlag || variableFlag) { // none set
 		constantFlag = true
 		functionFlag = true
@@ -163,6 +162,7 @@
 		pkg, name = args[0], args[1]
 	default:
 		cmd.Usage()
+		return os.ErrInvalid
 	}
 	if strings.Contains(pkg, "/") {
 		fmt.Fprintf(os.Stderr, "doc: package name cannot contain slash (TODO)\n")
@@ -171,6 +171,7 @@
 	for _, path := range Paths(pkg) {
 		lookInDirectory(path, name)
 	}
+	return nil
 }
 
 var slash = string(filepath.Separator)
diff --git a/go/src/github.com/visualfc/gotools/goapi/goapi.go b/go/src/github.com/visualfc/gotools/goapi/goapi.go
index 7495abc..92721cc 100644
--- a/go/src/github.com/visualfc/gotools/goapi/goapi.go
+++ b/go/src/github.com/visualfc/gotools/goapi/goapi.go
@@ -67,9 +67,10 @@
 	Command.Flag.StringVar(&apiOutput, "o", "", "output file")
 }
 
-func runApi(cmd *command.Command, args []string) {
+func runApi(cmd *command.Command, args []string) error {
 	if len(args) == 0 && apiLookupInfo == "" {
 		cmd.Usage()
+		return os.ErrInvalid
 	}
 	if apiVerbose {
 		now := time.Now()
@@ -157,7 +158,7 @@
 					}
 				}
 			}
-			return
+			return nil
 		}
 		features = w.Features("")
 	} else {
@@ -217,7 +218,7 @@
 		info := w.cursorInfo.info
 		if info == nil {
 			os.Exit(1)
-			return
+			return os.ErrInvalid
 		}
 		//		fmt.Println("kind,", info.Kind)
 		//		fmt.Println("name,", info.Name)
@@ -247,7 +248,7 @@
 			}
 			fmt.Println("pos,", w.fset.Position(info.T.Pos()))
 		}
-		return
+		return nil
 	}
 
 	fail := false
@@ -263,7 +264,7 @@
 	for _, f := range features {
 		fmt.Fprintf(bw, "%s\n", f)
 	}
-	return
+	return nil
 }
 
 type CursorInfo struct {
diff --git a/go/src/github.com/visualfc/gotools/goimports/goimports.go b/go/src/github.com/visualfc/gotools/goimports/goimports.go
index 61b09b2..0a9b108 100644
--- a/go/src/github.com/visualfc/gotools/goimports/goimports.go
+++ b/go/src/github.com/visualfc/gotools/goimports/goimports.go
@@ -70,14 +70,14 @@
 	exitCode = 2
 }
 
-func runGoimports(cmd *command.Command, args []string) {
+func runGoimports(cmd *command.Command, args []string) error {
 	runtime.GOMAXPROCS(runtime.NumCPU())
 
 	if goimportsTabWidth < 0 {
 		fmt.Fprintf(os.Stderr, "negative tabwidth %d\n", goimportsTabWidth)
 		exitCode = 2
 		os.Exit(exitCode)
-		return
+		return os.ErrInvalid
 	}
 
 	options = &Options{
@@ -107,6 +107,7 @@
 		}
 	}
 	os.Exit(exitCode)
+	return nil
 }
 
 func isGoFile(f os.FileInfo) bool {
diff --git a/go/src/github.com/visualfc/gotools/gopresent/gopresent.go b/go/src/github.com/visualfc/gotools/gopresent/gopresent.go
index 7120466..e0242a2 100644
--- a/go/src/github.com/visualfc/gotools/gopresent/gopresent.go
+++ b/go/src/github.com/visualfc/gotools/gopresent/gopresent.go
@@ -36,9 +36,10 @@
 	Command.Flag.StringVar(&presentOutput, "o", "", "output html file name")
 }
 
-func runPresent(cmd *command.Command, args []string) {
+func runPresent(cmd *command.Command, args []string) error {
 	if presentInput == "" || !isDoc(presentInput) {
 		cmd.Usage()
+		return os.ErrInvalid
 	}
 
 	if presentVerifyOnly {
@@ -48,7 +49,7 @@
 			command.SetExitStatus(3)
 			command.Exit()
 		}
-		return
+		return nil
 	}
 	w := os.Stdout
 	if !presentStdout {
@@ -72,8 +73,8 @@
 		fmt.Fprintf(os.Stderr, "present:%s", err)
 		command.SetExitStatus(3)
 		command.Exit()
-
 	}
+	return nil
 }
 
 var extensions = map[string]string{
diff --git a/go/src/github.com/visualfc/gotools/jsonfmt/jsonfmt.go b/go/src/github.com/visualfc/gotools/jsonfmt/jsonfmt.go
index d620dd4..f9657ef 100644
--- a/go/src/github.com/visualfc/gotools/jsonfmt/jsonfmt.go
+++ b/go/src/github.com/visualfc/gotools/jsonfmt/jsonfmt.go
@@ -43,7 +43,7 @@
 	Command.Flag.BoolVar(&jsonTabIndent, "tabs", false, "indent with tabs")
 }
 
-func runJsonFmt(cmd *command.Command, args []string) {
+func runJsonFmt(cmd *command.Command, args []string) error {
 	opt := &JsonFmtOption{}
 	opt.List = jsonFmtList
 	opt.Compact = jsonFmtCompact
@@ -78,6 +78,7 @@
 			}
 		}
 	}
+	return nil
 }
 
 type JsonFmtOption struct {
diff --git a/go/src/github.com/visualfc/gotools/main.go b/go/src/github.com/visualfc/gotools/main.go
index 2a40ae9..bc14399 100644
--- a/go/src/github.com/visualfc/gotools/main.go
+++ b/go/src/github.com/visualfc/gotools/main.go
@@ -13,6 +13,7 @@
 	"github.com/visualfc/gotools/goimports"
 	"github.com/visualfc/gotools/gopresent"
 	"github.com/visualfc/gotools/jsonfmt"
+	"github.com/visualfc/gotools/oracle"
 	"github.com/visualfc/gotools/pkgs"
 	"github.com/visualfc/gotools/runcmd"
 	"github.com/visualfc/gotools/types"
@@ -29,6 +30,7 @@
 	command.Register(gopresent.Command)
 	command.Register(goapi.Command)
 	command.Register(pkgs.Command)
+	command.Register(oracle.Command)
 }
 
 func main() {
diff --git a/go/src/github.com/visualfc/gotools/oracle/oracle.go b/go/src/github.com/visualfc/gotools/oracle/oracle.go
index 6b1a20c..954bd10 100644
--- a/go/src/github.com/visualfc/gotools/oracle/oracle.go
+++ b/go/src/github.com/visualfc/gotools/oracle/oracle.go
@@ -46,9 +46,10 @@
 	Command.Flag.BoolVar(&oracleReflect, "reflect", false, "Analyze reflection soundly (slow).")
 }
 
-func runOracle(cmd *command.Command, args []string) {
+func runOracle(cmd *command.Command, args []string) error {
 	if len(args) < 2 {
 		cmd.Usage()
+		return os.ErrInvalid
 	}
 	if os.Getenv("GOMAXPROCS") == "" {
 		n := runtime.NumCPU()
@@ -74,14 +75,22 @@
 			args = []string{pkg.ImportPath}
 		}
 	}
-	res, err := oracle.Query(args, mode, oraclePos, nil, &build.Default, oracleReflect)
-	if err != nil {
-		fmt.Fprintf(os.Stderr, "oracle: %s.\n", err)
-		os.Exit(2)
+	query := oracle.Query{
+		Mode:       mode,
+		Pos:        oraclePos,
+		Build:      &build.Default,
+		Scope:      args,
+		PTALog:     nil,
+		Reflection: oracleReflect,
 	}
-	res.WriteTo(os.Stdout)
+
+	if err := oracle.Run(&query); err != nil {
+		fmt.Fprintf(os.Stderr, "oracle: %s.\n", err)
+		return err
+	}
+
 	if mode == "referrers" {
-		ref := res.Serial().Referrers
+		ref := query.Serial().Referrers
 		if ref != nil {
 			fmt.Fprintln(os.Stdout, ref.Desc)
 			fmt.Fprintln(os.Stdout, ref.ObjPos)
@@ -90,6 +99,7 @@
 			}
 		}
 	} else {
-		res.WriteTo(os.Stdout)
+		query.WriteTo(os.Stdout)
 	}
+	return nil
 }
diff --git a/go/src/github.com/visualfc/gotools/pkgs/pkgs.go b/go/src/github.com/visualfc/gotools/pkgs/pkgs.go
index 98ec140..fe47e5c 100644
--- a/go/src/github.com/visualfc/gotools/pkgs/pkgs.go
+++ b/go/src/github.com/visualfc/gotools/pkgs/pkgs.go
@@ -44,10 +44,11 @@
 	Command.Flag.StringVar(&pkgsFind, "find", "", "find package by name")
 }
 
-func runPkgs(cmd *command.Command, args []string) {
+func runPkgs(cmd *command.Command, args []string) error {
 	runtime.GOMAXPROCS(runtime.NumCPU())
 	if len(args) != 0 {
 		cmd.Usage()
+		return os.ErrInvalid
 	}
 	//pkgIndexOnce.Do(loadPkgsList)
 	var pp PathPkgsIndex
@@ -64,11 +65,11 @@
 					p.copyBuild(pkg)
 					b, err := json.MarshalIndent(&p, "", "\t")
 					if err == nil {
-						os.Stdout.Write(b)
-						os.Stdout.Write([]byte{'\n'})
+						cmd.Stdout.Write(b)
+						cmd.Stdout.Write([]byte{'\n'})
 					}
 				} else {
-					fmt.Println(pkg.ImportPath)
+					cmd.Println(pkg.ImportPath)
 				}
 			}
 		}
@@ -84,17 +85,18 @@
 						p.copyBuild(pkg)
 						b, err := json.MarshalIndent(p, "", "\t")
 						if err == nil {
-							os.Stdout.Write(b)
-							os.Stdout.Write([]byte{'\n'})
+							cmd.Stdout.Write(b)
+							cmd.Stdout.Write([]byte{'\n'})
 						}
 					} else {
-						fmt.Println(pkg.Name)
+						cmd.Println(pkg.Name)
 					}
 					break
 				}
 			}
 		}
 	}
+	return nil
 }
 
 // A Package describes a single package found in a directory.
diff --git a/go/src/github.com/visualfc/gotools/runcmd/runcmd.go b/go/src/github.com/visualfc/gotools/runcmd/runcmd.go
index 2cfebdd..6560d62 100644
--- a/go/src/github.com/visualfc/gotools/runcmd/runcmd.go
+++ b/go/src/github.com/visualfc/gotools/runcmd/runcmd.go
@@ -28,9 +28,10 @@
 	Command.Flag.BoolVar(&execWaitEnter, "e", true, "wait enter and continue")
 }
 
-func runCmd(cmd *command.Command, args []string) {
+func runCmd(cmd *command.Command, args []string) error {
 	if len(args) == 0 {
 		cmd.Usage()
+		return os.ErrInvalid
 	}
 	if execWorkPath == "" {
 		var err error
@@ -39,7 +40,7 @@
 			fmt.Fprintf(os.Stderr, "liteide_stub exec: os.Getwd() false\n")
 			command.SetExitStatus(3)
 			command.Exit()
-			return
+			return err
 		}
 	}
 	fileName := args[0]
@@ -71,6 +72,7 @@
 	}
 
 	exitWaitEnter()
+	return nil
 }
 
 func exitWaitEnter() {
diff --git a/go/src/github.com/visualfc/gotools/types/types.go b/go/src/github.com/visualfc/gotools/types/types.go
index 696ea26..1605adb 100644
--- a/go/src/github.com/visualfc/gotools/types/types.go
+++ b/go/src/github.com/visualfc/gotools/types/types.go
@@ -141,9 +141,10 @@
 	})
 }
 
-func runTypes(cmd *command.Command, args []string) {
+func runTypes(cmd *command.Command, args []string) error {
 	if len(args) < 1 {
 		cmd.Usage()
+		return nil
 	}
 	if typesVerbose {
 		now := time.Now()
@@ -204,7 +205,7 @@
 			w.LookupCursor(pkg, conf, cursor)
 		}
 	}
-	return
+	return nil
 }
 
 type FileCursor struct {
diff --git a/go/src/golang.org/x/mobile/.gitignore b/go/src/golang.org/x/mobile/.gitignore
deleted file mode 100644
index 8339fd6..0000000
--- a/go/src/golang.org/x/mobile/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-# Add no patterns to .hgignore except for files generated by the build.
-last-change
diff --git a/go/src/golang.org/x/mobile/AUTHORS b/go/src/golang.org/x/mobile/AUTHORS
deleted file mode 100644
index 15167cd..0000000
--- a/go/src/golang.org/x/mobile/AUTHORS
+++ /dev/null
@@ -1,3 +0,0 @@
-# This source code refers to The Go Authors for copyright purposes.
-# The master list of authors is in the main Go distribution,
-# visible at http://tip.golang.org/AUTHORS.
diff --git a/go/src/golang.org/x/mobile/CONTRIBUTORS b/go/src/golang.org/x/mobile/CONTRIBUTORS
deleted file mode 100644
index 1c4577e..0000000
--- a/go/src/golang.org/x/mobile/CONTRIBUTORS
+++ /dev/null
@@ -1,3 +0,0 @@
-# This source code was written by the Go contributors.
-# The master list of contributors is in the main Go distribution,
-# visible at http://tip.golang.org/CONTRIBUTORS.
diff --git a/go/src/golang.org/x/mobile/Dockerfile b/go/src/golang.org/x/mobile/Dockerfile
deleted file mode 100644
index 51762ba..0000000
--- a/go/src/golang.org/x/mobile/Dockerfile
+++ /dev/null
@@ -1,82 +0,0 @@
-# Dockerfile to build an image with the local version of golang.org/x/mobile.
-#
-#  > docker build -t mobile $GOPATH/src/golang.org/x/mobile
-#  > docker run -it --rm -v $GOPATH/src:/src mobile
-
-FROM ubuntu:12.04
-
-# Install system-level dependencies.
-ENV DEBIAN_FRONTEND noninteractive
-RUN echo "debconf shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections && \
-	echo "debconf shared/accepted-oracle-license-v1-1 seen true" | debconf-set-selections
-RUN apt-get update && \
-	apt-get -y install build-essential python-software-properties bzip2 unzip curl \
-		git subversion mercurial bzr \
-		libncurses5:i386 libstdc++6:i386 zlib1g:i386 && \
-	add-apt-repository ppa:webupd8team/java && \
-	apt-get update && \
-	apt-get -y install oracle-java6-installer
-
-# Install Ant.
-RUN curl -L http://archive.apache.org/dist/ant/binaries/apache-ant-1.9.2-bin.tar.gz | tar xz -C /usr/local
-ENV ANT_HOME /usr/local/apache-ant-1.9.2
-
-# Install Android SDK.
-RUN curl -L http://dl.google.com/android/android-sdk_r23.0.2-linux.tgz | tar xz -C /usr/local
-ENV ANDROID_HOME /usr/local/android-sdk-linux
-RUN echo y | $ANDROID_HOME/tools/android update sdk --no-ui --all --filter build-tools-19.1.0 && \
-	echo y | $ANDROID_HOME/tools/android update sdk --no-ui --all --filter platform-tools && \
-	echo y | $ANDROID_HOME/tools/android update sdk --no-ui --all --filter android-19
-
-# Install Android NDK.
-RUN curl -L http://dl.google.com/android/ndk/android-ndk-r9d-linux-x86_64.tar.bz2 | tar xj -C /usr/local
-ENV NDK_ROOT /usr/local/android-ndk-r9d
-RUN $NDK_ROOT/build/tools/make-standalone-toolchain.sh --platform=android-9 --install-dir=$NDK_ROOT --system=linux-x86_64
-
-# Install Gradle 2.1
-# : android-gradle compatibility
-#   http://tools.android.com/tech-docs/new-build-system/version-compatibility
-RUN curl -L http://services.gradle.org/distributions/gradle-2.1-all.zip -o /tmp/gradle-2.1-all.zip && unzip /tmp/gradle-2.1-all.zip -d /usr/local && rm /tmp/gradle-2.1-all.zip
-ENV GRADLE_HOME /usr/local/gradle-2.1
-
-# Update PATH for the above.
-ENV PATH $PATH:$ANDROID_HOME/tools
-ENV PATH $PATH:$ANDROID_HOME/platform-tools
-ENV PATH $PATH:$NDK_ROOT
-ENV PATH $PATH:$ANT_HOME/bin
-ENV PATH $PATH:$GRADLE_HOME/bin
-
-# Install Go.
-#   1) 1.4 for bootstrap.
-ENV GOROOT_BOOTSTRAP /go1.4
-RUN (curl -sSL https://golang.org/dl/go1.4.linux-amd64.tar.gz | tar -vxz -C /tmp) && \
-	mv /tmp/go $GOROOT_BOOTSTRAP
-
-
-#   2) Download and cross compile the Go on revision GOREV.
-#
-# GOVERSION string is the output of 'git log -n 1 --format="format: devel +%h %cd" HEAD'
-# like in go tool dist.
-# Revision picked on Jan 21, 2015.
-ENV GO_REV      34bc85f6f3b02ebcd490b40f4d32907ff2e69af3
-ENV GO_VERSION  devel +34bc85f Wed Jan 21 21:30:46 2015 +0000
-
-ENV GOROOT /go
-ENV GOPATH /
-ENV PATH $PATH:$GOROOT/bin
-
-RUN mkdir -p $GOROOT && \
-	curl -sSL "https://go.googlesource.com/go/+archive/$GO_REV.tar.gz" | tar -vxz -C $GOROOT && \
-	echo $GO_VERSION > $GOROOT/VERSION && \
-	cd $GOROOT/src && \
-	./all.bash && \
-	CC_FOR_TARGET=$NDK_ROOT/bin/arm-linux-androideabi-gcc GOOS=android GOARCH=arm GOARM=7 ./make.bash
-
-# Expect the GOPATH/src volume to be mounted.  (-v $GOPATH/src:/src)
-VOLUME ["/src"]
-
-# Generate a debug keystore to avoid it being generated on each `docker run`
-# and fail `adb install -r <apk>` with a conflicting certificate error.
-RUN keytool -genkeypair -alias androiddebugkey -keypass android -keystore ~/.android/debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 365
-
-WORKDIR $GOPATH/src/golang.org/x/mobile
diff --git a/go/src/golang.org/x/mobile/LICENSE b/go/src/golang.org/x/mobile/LICENSE
deleted file mode 100644
index 6a66aea..0000000
--- a/go/src/golang.org/x/mobile/LICENSE
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright (c) 2009 The Go Authors. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-   * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-   * 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.
-   * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
-OWNER OR 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/go/src/golang.org/x/mobile/PATENTS b/go/src/golang.org/x/mobile/PATENTS
deleted file mode 100644
index 7330990..0000000
--- a/go/src/golang.org/x/mobile/PATENTS
+++ /dev/null
@@ -1,22 +0,0 @@
-Additional IP Rights Grant (Patents)
-
-"This implementation" means the copyrightable works distributed by
-Google as part of the Go project.
-
-Google hereby grants to You a perpetual, worldwide, non-exclusive,
-no-charge, royalty-free, irrevocable (except as stated in this section)
-patent license to make, have made, use, offer to sell, sell, import,
-transfer and otherwise run, modify and propagate the contents of this
-implementation of Go, where such license applies only to those patent
-claims, both currently owned or controlled by Google and acquired in
-the future, licensable by Google that are necessarily infringed by this
-implementation of Go.  This grant does not include claims that would be
-infringed only as a consequence of further modification of this
-implementation.  If you or your agent or exclusive licensee institute or
-order or agree to the institution of patent litigation against any
-entity (including a cross-claim or counterclaim in a lawsuit) alleging
-that this implementation of Go or any code incorporated within this
-implementation of Go constitutes direct or contributory patent
-infringement, or inducement of patent infringement, then any patent
-rights granted to you under this License for this implementation of Go
-shall terminate as of the date such litigation is filed.
diff --git a/go/src/golang.org/x/mobile/README.google b/go/src/golang.org/x/mobile/README.google
deleted file mode 100644
index 580ac41..0000000
--- a/go/src/golang.org/x/mobile/README.google
+++ /dev/null
@@ -1,9 +0,0 @@
-URL: https://go.googlesource.com/mobile/+archive/f17dcbad8d17642aaeff781952613c089f07f966.tar.gz
-Version: f17dcbad8d17642aaeff781952613c089f07f966
-License: New BSD
-License File: LICENSE
-
-Description:
-Libraries and build tools for Go on Android.
-
-Local Modifications:
diff --git a/go/src/golang.org/x/mobile/README.md b/go/src/golang.org/x/mobile/README.md
deleted file mode 100644
index ba74e5b..0000000
--- a/go/src/golang.org/x/mobile/README.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# Go support for Mobile devices
-
-The Go mobile repository holds packages and build tools for using Go on Android.
-
-This is early work and the build system is a bumpy ride. Building a binary for
-Android requires using a Go cross compiler and an external linker from the NDK.
-
-For now, the easiest way to setup a build environment is using the provided
-Dockerfile:
-
-	docker pull golang/mobile
-
-Get the sample applications.
-
-	go get -d golang.org/x/mobile/example/...
-
-In your app directory under your `$GOPATH`, copy the following files from either
-the [golang.org/x/mobile/example/basic](https://github.com/golang/mobile/tree/master/example/basic)
-or [golang.org/x/mobile/example/libhello](https://github.com/golang/mobile/tree/master/example/libhello)
-apps:
-
-	AndroidManifest.xml
-	all.bash
-	build.xml
-	jni/Android.mk
-	make.bash
-
-Start with `basic` if you are writing an all-Go application (that is, an OpenGL game)
-or libhello if you are building a `.so` file for use from Java via
-[gobind](https://godoc.org/golang.org/x/mobile/cmd/gobind). Edit the files to change
-the name of your app.
-
-To build, run:
-
-	docker run -v $GOPATH/src:/src golang/mobile /bin/bash -c 'cd /src/your/project && ./make.bash'
-
-Note the use of -v option to mount $GOPATH/src to /src of the container.
-The above command will fail if the -v option is missing or the specified
-volume is not accessible from the container.
-
-When working with an all-Go application, this will produce a binary at
-`$GOPATH/src/your/project/bin/name-debug.apk`. You can use the adb tool to install
-and run this app. See all.bash for an example.
-
---
-
-APIs are currently very limited, but under active development. Package
-documentation serves as a starting point:
-
-- [mobile/app](http://godoc.org/golang.org/x/mobile/app)
-- [mobile/gl](http://godoc.org/golang.org/x/mobile/gl)
-- [mobile/sprite](http://godoc.org/golang.org/x/mobile/sprite)
-- [mobile/cmd/gobind](http://godoc.org/golang.org/x/mobile/cmd/gobind)
-
-Contributions to Go are appreciated. See https://golang.org/doc/contribute.html.
diff --git a/go/src/golang.org/x/mobile/app/Go.java b/go/src/golang.org/x/mobile/app/Go.java
deleted file mode 100644
index 3502d4b..0000000
--- a/go/src/golang.org/x/mobile/app/Go.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package go;
-
-import android.content.Context;
-import android.os.Looper;
-import android.util.Log;
-
-// Go is an entry point for libraries compiled in Go.
-// In an app's Application.onCreate, call:
-//
-// 	Go.init(getApplicationContext());
-//
-// When the function returns, it is safe to start calling
-// Go code.
-public final class Go {
-	// init loads libgojni.so and starts the runtime.
-	public static void init(final Context ctx) {
-		if (Looper.myLooper() != Looper.getMainLooper()) {
-			Log.wtf("Go", "Go.init must be called from main thread (looper="+Looper.myLooper().toString()+")");
-		}
-		if (running) {
-			return;
-		}
-		running = true;
-
-		// TODO(crawshaw): context.registerComponentCallbacks for runtime.GC
-
-		System.loadLibrary("gojni");
-
-		new Thread("GoMain") {
-			public void run() {
-				Go.run(ctx);
-			}
-		}.start();
-
-		Go.waitForRun();
-
-        new Thread("GoReceive") {
-            public void run() { Seq.receive(); }
-        }.start();
-	}
-
-	private static boolean running = false;
-
-	private static native void run(Context ctx);
-	private static native void waitForRun();
-}
diff --git a/go/src/golang.org/x/mobile/app/android.c b/go/src/golang.org/x/mobile/app/android.c
deleted file mode 100644
index 1e4785c..0000000
--- a/go/src/golang.org/x/mobile/app/android.c
+++ /dev/null
@@ -1,233 +0,0 @@
-// Copyright 2014 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.
-
-// +build android
-
-#include <android/asset_manager_jni.h>
-#include <android/log.h>
-#include <dlfcn.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <jni.h>
-#include <pthread.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
-#include "_cgo_export.h"
-
-#define LOG_INFO(...) __android_log_print(ANDROID_LOG_INFO, "Go", __VA_ARGS__)
-#define LOG_FATAL(...) __android_log_print(ANDROID_LOG_FATAL, "Go", __VA_ARGS__)
-
-// Defined in the Go runtime.
-static int (*_rt0_arm_linux1)(int argc, char** argv);
-
-jint JNI_OnLoad(JavaVM* vm, void* reserved) {
-	current_vm = vm;
-	current_ctx = NULL;
-	current_native_activity = NULL;
-
-	JNIEnv* env;
-	if ((*vm)->GetEnv(vm, (void**)&env, JNI_VERSION_1_6) != JNI_OK) {
-		return -1;
-	}
-
-	pthread_mutex_lock(&go_started_mu);
-	go_started = 0;
-	pthread_mutex_unlock(&go_started_mu);
-	pthread_cond_init(&go_started_cond, NULL);
-
-	return JNI_VERSION_1_6;
-}
-
-static jclass find_class(JNIEnv *env, const char *class_name) {
-	jclass clazz = (*env)->FindClass(env, class_name);
-	if (clazz == NULL) {
-		LOG_FATAL("cannot find %s", class_name);
-		return NULL;
-	}
-	return clazz;
-}
-
-static jmethodID find_method(JNIEnv *env, jclass clazz, const char *name, const char *sig) {
-	jmethodID m = (*env)->GetMethodID(env, clazz, name, sig);
-	if (m == 0) {
-		LOG_FATAL("cannot find method %s %s", name, sig);
-		return 0;
-	}
-	return m;
-}
-
-static void init_from_context() {
-	if (current_ctx == NULL) {
-		return;
-	}
-
-	int attached = 0;
-	JNIEnv* env;
-	switch ((*current_vm)->GetEnv(current_vm, (void**)&env, JNI_VERSION_1_6)) {
-	case JNI_OK:
-		break;
-	case JNI_EDETACHED:
-		if ((*current_vm)->AttachCurrentThread(current_vm, &env, 0) != 0) {
-			LOG_FATAL("cannot attach JVM");
-		}
-		attached = 1;
-		break;
-	case JNI_EVERSION:
-		LOG_FATAL("bad JNI version");
-	}
-
-	// String path = context.getCacheDir().getAbsolutePath();
-	jclass context_clazz = find_class(env, "android/content/Context");
-	jmethodID getcachedir = find_method(env, context_clazz, "getCacheDir", "()Ljava/io/File;");
-	jobject file = (*env)->CallObjectMethod(env, current_ctx, getcachedir, NULL);
-	jclass file_clazz = find_class(env, "java/io/File");
-	jmethodID getabsolutepath = find_method(env, file_clazz, "getAbsolutePath", "()Ljava/lang/String;");
-	jstring jpath = (jstring)(*env)->CallObjectMethod(env, file, getabsolutepath, NULL);
-	const char* path = (*env)->GetStringUTFChars(env, jpath, NULL);
-	if (setenv("TMPDIR", path, 1) != 0) {
-		LOG_INFO("setenv(\"TMPDIR\", \"%s\", 1) failed: %d", path, errno);
-	}
-	(*env)->ReleaseStringUTFChars(env, jpath, path);
-
-	if (attached) {
-		(*current_vm)->DetachCurrentThread(current_vm);
-	}
-}
-
-// has_prefix_key returns 1 if s starts with prefix.
-static int has_prefix(const char *s, const char* prefix) {
-	while (*prefix) {
-		if (*prefix++ != *s++)
-			return 0;
-	}
-	return 1;
-}
-
-// getenv_raw searches environ for name prefix and returns the string pair.
-// For example, getenv_raw("PATH=") returns "PATH=/bin".
-// If no entry is found, the name prefix is returned. For example "PATH=".
-static const char* getenv_raw(const char *name) {
-	extern char** environ;
-	char** env = environ;
-
-	for (env = environ; *env; env++) {
-		if (has_prefix(*env, name)) {
-			return *env;
-		}
-	}
-	return name;
-}
-
-static void* init_go_runtime(void* unused) {
-	init_from_context();
-
-	_rt0_arm_linux1 = (int (*)(int, char**))dlsym(RTLD_DEFAULT, "_rt0_arm_linux1");
-	if (_rt0_arm_linux1 == NULL) {
-		LOG_FATAL("missing _rt0_arm_linux1");
-	}
-
-	// Defensively heap-allocate argv0, for setenv.
-	char* argv0 = strdup("gojni");
-
-	// Build argv, including the ELF auxiliary vector.
-	struct {
-		char* argv[2];
-		const char* envp[4];
-		uint32_t auxv[64];
-	} x;
-	x.argv[0] = argv0;
-	x.argv[1] = NULL;
-	x.envp[0] = getenv_raw("TMPDIR=");
-	x.envp[1] = getenv_raw("PATH=");
-	x.envp[2] = getenv_raw("LD_LIBRARY_PATH=");
-	x.envp[3] = NULL;
-
-	build_auxv(x.auxv, sizeof(x.auxv)/sizeof(uint32_t));
-	int32_t argc = 1;
-	_rt0_arm_linux1(argc, x.argv);
-	return NULL;
-}
-
-static void wait_go_runtime() {
-	pthread_mutex_lock(&go_started_mu);
-	while (go_started == 0) {
-		pthread_cond_wait(&go_started_cond, &go_started_mu);
-	}
-	pthread_mutex_unlock(&go_started_mu);
-	LOG_INFO("runtime started");
-}
-
-pthread_t nativeactivity_t;
-
-// Runtime entry point when embedding Go in other libraries.
-void InitGoRuntime() {
-	pthread_mutex_lock(&go_started_mu);
-	go_started = 0;
-	pthread_mutex_unlock(&go_started_mu);
-	pthread_cond_init(&go_started_cond, NULL);
-
-	pthread_attr_t attr; 
-	pthread_attr_init(&attr);
-	pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-	pthread_create(&nativeactivity_t, NULL, init_go_runtime, NULL);
-	wait_go_runtime();
-}
-
-// Runtime entry point when using NativeActivity.
-void ANativeActivity_onCreate(ANativeActivity *activity, void* savedState, size_t savedStateSize) {
-	// Note that activity->clazz is mis-named.
-	current_vm = activity->vm;
-	current_ctx = (*activity->env)->NewGlobalRef(activity->env, activity->clazz);
-	current_native_activity = activity;
-
-	InitGoRuntime();
-
-	// These functions match the methods on Activity, described at
-	// http://developer.android.com/reference/android/app/Activity.html
-	activity->callbacks->onStart = onStart;
-	activity->callbacks->onResume = onResume;
-	activity->callbacks->onSaveInstanceState = onSaveInstanceState;
-	activity->callbacks->onPause = onPause;
-	activity->callbacks->onStop = onStop;
-	activity->callbacks->onDestroy = onDestroy;
-	activity->callbacks->onWindowFocusChanged = onWindowFocusChanged;
-	activity->callbacks->onNativeWindowCreated = onNativeWindowCreated;
-	activity->callbacks->onNativeWindowResized = onNativeWindowResized;
-	activity->callbacks->onNativeWindowRedrawNeeded = onNativeWindowRedrawNeeded;
-	activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyed;
-	activity->callbacks->onInputQueueCreated = onInputQueueCreated;
-	activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyed;
-	// TODO(crawshaw): Type mismatch for onContentRectChanged.
-	//activity->callbacks->onContentRectChanged = onContentRectChanged;
-	activity->callbacks->onConfigurationChanged = onConfigurationChanged;
-	activity->callbacks->onLowMemory = onLowMemory;
-
-	onCreate(activity);
-}
-
-// Runtime entry point when embedding Go in a Java App.
-JNIEXPORT void JNICALL
-Java_go_Go_run(JNIEnv* env, jclass clazz, jobject ctx) {
-	current_ctx = (*env)->NewGlobalRef(env, ctx);
-
-	if (current_ctx != NULL) {
-		// Init asset_manager.
-		jclass context_clazz = find_class(env, "android/content/Context");
-		jmethodID getassets = find_method(
-			env, context_clazz, "getAssets", "()Landroid/content/res/AssetManager;");
-		// Prevent the java AssetManager from being GC'd
-		jobject asset_manager_ref = (*env)->NewGlobalRef(
-			env, (*env)->CallObjectMethod(env, current_ctx, getassets));
-		asset_manager = AAssetManager_fromJava(env, asset_manager_ref);
-	}
-
-	init_go_runtime(NULL);
-}
-
-// Used by Java initialization code to know when it can use cgocall.
-JNIEXPORT void JNICALL
-Java_go_Go_waitForRun(JNIEnv* env, jclass clazz) {
-	wait_go_runtime();
-}
diff --git a/go/src/golang.org/x/mobile/app/android.go b/go/src/golang.org/x/mobile/app/android.go
deleted file mode 100644
index 0a8d5a9..0000000
--- a/go/src/golang.org/x/mobile/app/android.go
+++ /dev/null
@@ -1,280 +0,0 @@
-// Copyright 2014 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.
-
-// +build android
-
-// Go runtime entry point for apps running on android.
-// Sets up everything the runtime needs and exposes
-// the entry point to JNI.
-
-package app
-
-/*
-#cgo LDFLAGS: -llog -landroid
-
-#include <android/log.h>
-#include <android/asset_manager.h>
-#include <android/configuration.h>
-#include <android/native_activity.h>
-
-#include <jni.h>
-#include <pthread.h>
-#include <stdlib.h>
-
-pthread_cond_t go_started_cond;
-pthread_mutex_t go_started_mu;
-int go_started;
-
-// current_vm is stored to initialize other cgo packages.
-//
-// As all the Go packages in a program form a single shared library,
-// there can only be one JNI_OnLoad function for iniitialization. In
-// OpenJDK there is JNI_GetCreatedJavaVMs, but this is not available
-// on android.
-JavaVM* current_vm;
-
-// current_ctx is Android's android.context.Context. May be NULL.
-jobject current_ctx;
-
-// current_native_activity is the Android ANativeActivity. May be NULL.
-ANativeActivity* current_native_activity;
-
-// asset_manager is the asset manager of the app.
-// For all-Go app, this is initialized in onCreate.
-// For go library app, this is set from the context passed to Go.run.
-AAssetManager* asset_manager;
-
-// build_auxv builds an ELF auxiliary vector for initializing the Go
-// runtime. While there does not appear to be any spec for this
-// format, there are some notes in
-//
-// Phrack, V. 0x0b, Issue 0x3a, P. 0x05.
-// http://phrack.org/issues/58/5.html
-//
-// Much of the time on linux the real auxv can be read from the file
-// /proc/self/auxv, however there are several conditions under which
-// Android apps cannot read this file (see a note to this effect in
-// sources/android/cpufeatures/cpu-features.c). So we construct a
-// fake one, working backwards from what the Go runtime wants to see
-// as defined by the code in src/runtime/os_linux_GOARCH.c.
-void build_auxv(uint32_t *auxv, size_t len);
-*/
-import "C"
-import (
-	"fmt"
-	"io"
-	"log"
-	"os"
-	"runtime"
-	"unsafe"
-
-	"golang.org/x/mobile/geom"
-)
-
-//export onCreate
-func onCreate(activity *C.ANativeActivity) {
-	C.asset_manager = activity.assetManager
-
-	config := C.AConfiguration_new()
-	C.AConfiguration_fromAssetManager(config, activity.assetManager)
-	density := C.AConfiguration_getDensity(config)
-	C.AConfiguration_delete(config)
-
-	var dpi int
-	switch density {
-	case C.ACONFIGURATION_DENSITY_DEFAULT:
-		dpi = 160
-	case C.ACONFIGURATION_DENSITY_LOW,
-		C.ACONFIGURATION_DENSITY_MEDIUM,
-		213, // C.ACONFIGURATION_DENSITY_TV
-		C.ACONFIGURATION_DENSITY_HIGH,
-		320, // ACONFIGURATION_DENSITY_XHIGH
-		480, // ACONFIGURATION_DENSITY_XXHIGH
-		640: // ACONFIGURATION_DENSITY_XXXHIGH
-		dpi = int(density)
-	case C.ACONFIGURATION_DENSITY_NONE:
-		log.Print("android device reports no screen density")
-		dpi = 72
-	default:
-		log.Print("android device reports unknown density: %d", density)
-		dpi = int(density) // This is a guess.
-	}
-
-	geom.PixelsPerPt = float32(dpi) / 72
-}
-
-//export onStart
-func onStart(activity *C.ANativeActivity) {
-}
-
-//export onResume
-func onResume(activity *C.ANativeActivity) {
-}
-
-//export onSaveInstanceState
-func onSaveInstanceState(activity *C.ANativeActivity, outSize *C.size_t) unsafe.Pointer {
-	return nil
-}
-
-//export onPause
-func onPause(activity *C.ANativeActivity) {
-}
-
-//export onStop
-func onStop(activity *C.ANativeActivity) {
-}
-
-//export onDestroy
-func onDestroy(activity *C.ANativeActivity) {
-}
-
-//export onWindowFocusChanged
-func onWindowFocusChanged(activity *C.ANativeActivity, hasFocus int) {
-}
-
-//export onNativeWindowCreated
-func onNativeWindowCreated(activity *C.ANativeActivity, w *C.ANativeWindow) {
-	windowCreated <- w
-}
-
-//export onNativeWindowResized
-func onNativeWindowResized(activity *C.ANativeActivity, window *C.ANativeWindow) {
-}
-
-//export onNativeWindowRedrawNeeded
-func onNativeWindowRedrawNeeded(activity *C.ANativeActivity, window *C.ANativeWindow) {
-}
-
-//export onNativeWindowDestroyed
-func onNativeWindowDestroyed(activity *C.ANativeActivity, window *C.ANativeWindow) {
-	windowDestroyed <- true
-}
-
-var queue *C.AInputQueue
-
-//export onInputQueueCreated
-func onInputQueueCreated(activity *C.ANativeActivity, q *C.AInputQueue) {
-	queue = q
-}
-
-//export onInputQueueDestroyed
-func onInputQueueDestroyed(activity *C.ANativeActivity, queue *C.AInputQueue) {
-	queue = nil
-}
-
-//export onContentRectChanged
-func onContentRectChanged(activity *C.ANativeActivity, rect *C.ARect) {
-}
-
-//export onConfigurationChanged
-func onConfigurationChanged(activity *C.ANativeActivity) {
-}
-
-//export onLowMemory
-func onLowMemory(activity *C.ANativeActivity) {
-}
-
-type androidState struct {
-}
-
-func (androidState) JavaVM() unsafe.Pointer {
-	return unsafe.Pointer(C.current_vm)
-}
-
-func (androidState) AndroidContext() unsafe.Pointer {
-	return unsafe.Pointer(C.current_ctx)
-}
-
-var (
-	windowDestroyed = make(chan bool)
-	windowCreated   = make(chan *C.ANativeWindow)
-)
-
-func openAsset(name string) (ReadSeekCloser, error) {
-	cname := C.CString(name)
-	defer C.free(unsafe.Pointer(cname))
-	a := &asset{
-		ptr:  C.AAssetManager_open(C.asset_manager, cname, C.AASSET_MODE_UNKNOWN),
-		name: name,
-	}
-	if a.ptr == nil {
-		return nil, a.errorf("open", "bad asset")
-	}
-	return a, nil
-}
-
-type asset struct {
-	ptr  *C.AAsset
-	name string
-}
-
-func (a *asset) errorf(op string, format string, v ...interface{}) error {
-	return &os.PathError{
-		Op:   op,
-		Path: a.name,
-		Err:  fmt.Errorf(format, v...),
-	}
-}
-
-func (a *asset) Read(p []byte) (n int, err error) {
-	n = int(C.AAsset_read(a.ptr, unsafe.Pointer(&p[0]), C.size_t(len(p))))
-	if n == 0 && len(p) > 0 {
-		return 0, io.EOF
-	}
-	if n < 0 {
-		return 0, a.errorf("read", "negative bytes: %d", n)
-	}
-	return n, nil
-}
-
-func (a *asset) Seek(offset int64, whence int) (int64, error) {
-	// TODO(crawshaw): use AAsset_seek64 if it is available.
-	off := C.AAsset_seek(a.ptr, C.off_t(offset), C.int(whence))
-	if off == -1 {
-		return 0, a.errorf("seek", "bad result for offset=%d, whence=%d", offset, whence)
-	}
-	return int64(off), nil
-}
-
-func (a *asset) Close() error {
-	C.AAsset_close(a.ptr)
-	return nil
-}
-
-func runStart(cb Callbacks) {
-	State = androidState{}
-
-	if cb.Start != nil {
-		cb.Start()
-	}
-}
-
-// notifyInitDone informs Java that the program is initialized.
-// A NativeActivity will not create a window until this is called.
-func notifyInitDone() {
-	C.pthread_mutex_lock(&C.go_started_mu)
-	C.go_started = 1
-	C.pthread_cond_signal(&C.go_started_cond)
-	C.pthread_mutex_unlock(&C.go_started_mu)
-}
-
-func run(cb Callbacks) {
-	// We want to keep the event loop on a consistent OS thread.
-	runtime.LockOSThread()
-
-	ctag := C.CString("Go")
-	cstr := C.CString("app.Run")
-	C.__android_log_write(C.ANDROID_LOG_INFO, ctag, cstr)
-	C.free(unsafe.Pointer(ctag))
-	C.free(unsafe.Pointer(cstr))
-
-	if C.current_native_activity == nil {
-		runStart(cb)
-		notifyInitDone()
-		select {}
-	} else {
-		notifyInitDone()
-		windowDrawLoop(cb, <-windowCreated, queue)
-	}
-}
diff --git a/go/src/golang.org/x/mobile/app/android_arm.c b/go/src/golang.org/x/mobile/app/android_arm.c
deleted file mode 100644
index e9b9b21..0000000
--- a/go/src/golang.org/x/mobile/app/android_arm.c
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2014 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.
-
-// +build android,arm
-
-#include <android/log.h>
-#include <stdint.h>
-#include <string.h>
-#include "_cgo_export.h"
-
-#define AT_PLATFORM  15
-#define AT_HWCAP     16
-#define HWCAP_VFP    (1 << 6)
-#define HWCAP_VFPv3  (1 << 13)
-
-void build_auxv(uint32_t *auxv, size_t len) {
-	// Minimum auxv required by runtime/os_linux_arm.go.
-	int i;
-	if (len < 5) {
-		__android_log_print(ANDROID_LOG_FATAL, "Go", "auxv len %d too small", len);
-	}
-	auxv[0] = AT_PLATFORM;
-	*(char**)&auxv[1] = strdup("v7l");
-
-	auxv[2] = AT_HWCAP;
-	auxv[3] = HWCAP_VFP | HWCAP_VFPv3;
-	for (i = 4; i < len; i++) {
-		auxv[i] = 0;
-	}
-}
diff --git a/go/src/golang.org/x/mobile/app/android_x86.c b/go/src/golang.org/x/mobile/app/android_x86.c
deleted file mode 100644
index 6393422..0000000
--- a/go/src/golang.org/x/mobile/app/android_x86.c
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2014 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.
-
-// +build android,x86
-
-#include <android/log.h>
-#include <dlfcn.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
-#include "_cgo_export.h"
-
-void build_auxv(uint32_t *xauxv, size_t xauxv_len) {
-	char* auxv = (char*)xauxv;
-	size_t auxv_len = xauxv_len*sizeof(uint32_t);
-
-	// TODO(crawshaw): determine if we can read /proc/self/auxv on
-	//                 x86 android release builds.
-	int fd = open("/proc/self/auxv", O_RDONLY, 0);
-	if (fd == -1) {
-		__android_log_print(ANDROID_LOG_FATAL, "Go", "cannot open /proc/self/auxv: %s", strerror(errno));
-	}
-	int n = read(fd, &auxv, auxv_len);
-	if (n < 0) {
-		__android_log_print(ANDROID_LOG_FATAL, "Go", "error reading /proc/self/auxv: %s", strerror(errno));
-	}
-	if (n == auxv_len) { // auxv should be more than plenty.
-		__android_log_print(ANDROID_LOG_FATAL, "Go", "/proc/self/auxv too big");
-	}
-	close(fd);
-
-	for (; n < auxv_len; n++) {
-		auxv[n] = 0;
-	}
-}
diff --git a/go/src/golang.org/x/mobile/app/app.go b/go/src/golang.org/x/mobile/app/app.go
deleted file mode 100644
index 75652f7..0000000
--- a/go/src/golang.org/x/mobile/app/app.go
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright 2014 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.
-
-// +build linux darwin
-
-package app
-
-import (
-	"io"
-
-	"golang.org/x/mobile/event"
-)
-
-// Run starts the app.
-//
-// It must be called directly from the main function and will
-// block until the app exits.
-func Run(cb Callbacks) {
-	run(cb)
-}
-
-// Callbacks is the set of functions called by the app.
-type Callbacks struct {
-	// Start is called when the app enters the foreground.
-	// The app will start receiving Draw and Touch calls.
-	//
-	// If the app is responsible for the screen (that is, it is an
-	// all-Go app), then Window geometry will be configured and an
-	// OpenGL context will be available during Start.
-	//
-	// If this is a library, Start will be called before the
-	// app is told that Go has finished initialization.
-	//
-	// Start is an equivalent lifecycle state to onStart() on
-	// Android and applicationDidBecomeActive on iOS.
-	Start func()
-
-	// Stop is called shortly before a program is suspended.
-	//
-	// When Stop is received, the app is no longer visible and not is
-	// receiving events. It should:
-	//
-	//	- Save any state the user expects saved (for example text).
-	//	- Release all resources that are not needed.
-	//
-	// Execution time in the stop state is limited, and the limit is
-	// enforced by the operating system. Stop as quickly as you can.
-	//
-	// An app that is stopped may be started again. For example, the user
-	// opens Recent Apps and switches to your app. A stopped app may also
-	// be terminated by the operating system with no further warning.
-	//
-	// Stop is equivalent to onStop() on Android and
-	// applicationDidEnterBackground on iOS.
-	Stop func()
-
-	// Draw is called by the render loop to draw the screen.
-	//
-	// Drawing is done into a framebuffer, which is then swapped onto the
-	// screen when Draw returns. It is called 60 times a second.
-	Draw func()
-
-	// Touch is called by the app when a touch event occurs.
-	Touch func(event.Touch)
-}
-
-// Open opens a named asset.
-//
-// On Android, assets are accessed via android.content.res.AssetManager.
-// These files are stored in the assets/ directory of the app. Any raw asset
-// can be accessed by its direct relative name. For example assets/img.png
-// can be opened with Open("img.png").
-//
-// On iOS an asset is a resource stored in the application bundle.
-// Resources can be loaded using the same relative paths.
-//
-// For consistency when debugging on a desktop, assets are read from a
-// directoy named assets under the current working directory.
-func Open(name string) (ReadSeekCloser, error) {
-	return openAsset(name)
-}
-
-// ReadSeekCloser is an io.ReadSeeker and io.Closer.
-type ReadSeekCloser interface {
-	io.ReadSeeker
-	io.Closer
-}
-
-// State is global application-specific state.
-//
-// The State variable also holds operating system specific state.
-// Android apps have the extra methods:
-//
-//	// JavaVM returns a JNI *JavaVM.
-//	JavaVM() unsafe.Pointer
-//
-//	// AndroidContext returns a jobject for the app android.context.Context.
-//	AndroidContext() unsafe.Pointer
-//
-// State is not valid until Run has been called.
-var State interface{}
diff --git a/go/src/golang.org/x/mobile/app/darwin_amd64.go b/go/src/golang.org/x/mobile/app/darwin_amd64.go
deleted file mode 100644
index 5ddcc77..0000000
--- a/go/src/golang.org/x/mobile/app/darwin_amd64.go
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2014 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.
-
-// +build darwin
-
-package app
-
-// Simple on-screen app debugging for OS X. Not an officially supported
-// development target for apps, as screens with mice are very different
-// than screens with touch panels.
-
-/*
-#cgo CFLAGS: -x objective-c
-#cgo LDFLAGS: -framework Cocoa -framework OpenGL -framework QuartzCore
-#import <Cocoa/Cocoa.h>
-#import <OpenGL/gl.h>
-#include <pthread.h>
-
-void glGenVertexArrays(GLsizei n, GLuint* array);
-void glBindVertexArray(GLuint array);
-
-void runApp(void);
-void lockContext(GLintptr);
-void unlockContext(GLintptr);
-double backingScaleFactor();
-uint64 threadID();
-
-*/
-import "C"
-import (
-	"log"
-	"runtime"
-	"sync"
-
-	"golang.org/x/mobile/event"
-	"golang.org/x/mobile/geom"
-	"golang.org/x/mobile/gl"
-)
-
-var initThreadID uint64
-
-func init() {
-	// Lock the goroutine responsible for initialization to an OS thread.
-	// This means the goroutine running main (and calling the run function
-	// below) is locked to the OS thread that started the program. This is
-	// necessary for the correct delivery of Cocoa events to the process.
-	//
-	// A discussion on this topic:
-	// https://groups.google.com/forum/#!msg/golang-nuts/IiWZ2hUuLDA/SNKYYZBelsYJ
-	runtime.LockOSThread()
-	initThreadID = uint64(C.threadID())
-}
-
-func run(callbacks Callbacks) {
-	if tid := uint64(C.threadID()); tid != initThreadID {
-		log.Fatalf("app.Run called on thread %d, but app.init ran on %d", tid, initThreadID)
-	}
-	cb = callbacks
-	C.runApp()
-}
-
-//export setGeom
-func setGeom(pixelsPerPt float32, width, height int) {
-	// Macs default to 72 DPI, so scales are equivalent.
-	geom.PixelsPerPt = pixelsPerPt
-	geom.Width = geom.Pt(float32(width) / pixelsPerPt)
-	geom.Height = geom.Pt(float32(height) / pixelsPerPt)
-}
-
-func initGL() {
-	// Using attribute arrays in OpenGL 3.3 requires the use of a VBA.
-	// But VBAs don't exist in ES 2. So we bind a default one.
-	var id C.GLuint
-	C.glGenVertexArrays(1, &id)
-	C.glBindVertexArray(id)
-	if cb.Start != nil {
-		cb.Start()
-	}
-}
-
-var cb Callbacks
-var initGLOnce sync.Once
-
-var events struct {
-	sync.Mutex
-	pending []event.Touch
-}
-
-func sendTouch(ty event.TouchType, x, y float32) {
-	events.Lock()
-	events.pending = append(events.pending, event.Touch{
-		Type: ty,
-		Loc: geom.Point{
-			X: geom.Pt(x / geom.PixelsPerPt),
-			Y: geom.Height - geom.Pt(y/geom.PixelsPerPt),
-		},
-	})
-	events.Unlock()
-}
-
-//export eventMouseDown
-func eventMouseDown(x, y float32) { sendTouch(event.TouchStart, x, y) }
-
-//export eventMouseDragged
-func eventMouseDragged(x, y float32) { sendTouch(event.TouchMove, x, y) }
-
-//export eventMouseEnd
-func eventMouseEnd(x, y float32) { sendTouch(event.TouchEnd, x, y) }
-
-//export drawgl
-func drawgl(ctx C.GLintptr) {
-	// The call to lockContext loads the OpenGL context into
-	// thread-local storage for use by the underlying GL calls
-	// done in the user's Draw function. We need to stay on
-	// the same thread throughout Draw, so we LockOSThread.
-	runtime.LockOSThread()
-	C.lockContext(ctx)
-
-	initGLOnce.Do(initGL)
-
-	events.Lock()
-	pending := events.pending
-	events.pending = nil
-	events.Unlock()
-	for _, e := range pending {
-		if cb.Touch != nil {
-			cb.Touch(e)
-		}
-	}
-
-	// TODO: is the library or the app responsible for clearing the buffers?
-	gl.ClearColor(0, 0, 0, 1)
-	gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
-	if cb.Draw != nil {
-		cb.Draw()
-	}
-
-	C.unlockContext(ctx)
-
-	// This may unlock the original main thread, but that's OK,
-	// because by the time it does the thread has already entered
-	// C.runApp, which won't give the thread up.
-	runtime.UnlockOSThread()
-}
diff --git a/go/src/golang.org/x/mobile/app/darwin_amd64.m b/go/src/golang.org/x/mobile/app/darwin_amd64.m
deleted file mode 100644
index e8517f2..0000000
--- a/go/src/golang.org/x/mobile/app/darwin_amd64.m
+++ /dev/null
@@ -1,164 +0,0 @@
-// Copyright 2014 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.
-
-// +build darwin
-
-#include "_cgo_export.h"
-#include <pthread.h>
-#include <stdio.h>
-
-#import <Cocoa/Cocoa.h>
-#import <Foundation/Foundation.h>
-#import <OpenGL/gl.h>
-#import <QuartzCore/CVReturn.h>
-#import <QuartzCore/CVBase.h>
-
-static CVReturn displayLinkDraw(CVDisplayLinkRef displayLink, const CVTimeStamp* now, const CVTimeStamp* outputTime, CVOptionFlags flagsIn, CVOptionFlags* flagsOut, void* displayLinkContext)
-{
-	NSOpenGLView* view = displayLinkContext;
-	NSOpenGLContext *currentContext = [view openGLContext];
-	drawgl((GLintptr)currentContext);
-	return kCVReturnSuccess;
-}
-
-void lockContext(GLintptr context) {
-	NSOpenGLContext* ctx = (NSOpenGLContext*)context;
-	[ctx makeCurrentContext];
-	CGLLockContext([ctx CGLContextObj]);
-}
-
-void unlockContext(GLintptr context) {
-	NSOpenGLContext* ctx = (NSOpenGLContext*)context;
-	[ctx flushBuffer];
-	CGLUnlockContext([ctx CGLContextObj]);
-
-}
-
-uint64 threadID() {
-	uint64 id;
-	if (pthread_threadid_np(pthread_self(), &id)) {
-		abort();
-	}
-	return id;
-}
-
-
-@interface MobileGLView : NSOpenGLView
-{
-	CVDisplayLinkRef displayLink;
-}
-@end
-
-@implementation MobileGLView
-- (void)prepareOpenGL {
-	[self setWantsBestResolutionOpenGLSurface:YES];
-	GLint swapInt = 1;
-	[[self openGLContext] setValues:&swapInt forParameter:NSOpenGLCPSwapInterval];
-
-	CVDisplayLinkCreateWithActiveCGDisplays(&displayLink);
-	CVDisplayLinkSetOutputCallback(displayLink, &displayLinkDraw, self);
-
-	CGLContextObj cglContext = [[self openGLContext] CGLContextObj];
-	CGLPixelFormatObj cglPixelFormat = [[self pixelFormat] CGLPixelFormatObj];
-	CVDisplayLinkSetCurrentCGDisplayFromOpenGLContext(displayLink, cglContext, cglPixelFormat);
-	CVDisplayLinkStart(displayLink);
-}
-
-- (void)reshape {
-	// Calculate screen PPI.
-	//
-	// Note that the backingScaleFactor converts from logical
-	// pixels to actual pixels, but both of these units vary
-	// independently from real world size. E.g.
-	//
-	// 13" Retina Macbook Pro, 2560x1600, 227ppi, backingScaleFactor=2, scale=3.15
-	// 15" Retina Macbook Pro, 2880x1800, 220ppi, backingScaleFactor=2, scale=3.06
-	// 27" iMac,               2560x1440, 109ppi, backingScaleFactor=1, scale=1.51
-	// 27" Retina iMac,        5120x2880, 218ppi, backingScaleFactor=2, scale=3.03
-	NSScreen *screen = [NSScreen mainScreen];
-	double screenPixW = [screen frame].size.width * [screen backingScaleFactor];
-
-	CGDirectDisplayID display = (CGDirectDisplayID)[[[screen deviceDescription] valueForKey:@"NSScreenNumber"] intValue];
-	CGSize screenSizeMM = CGDisplayScreenSize(display); // in millimeters
-	float ppi = 25.4 * screenPixW / screenSizeMM.width;
-	float pixelsPerPt = ppi/72.0;
-
-	// The width and height reported to the geom package are the
-	// bounds of the OpenGL view. Several steps are necessary.
-	// First, [self bounds] gives us the number of logical pixels
-	// in the view. Multiplying this by the backingScaleFactor
-	// gives us the number of actual pixels.
-	NSRect r = [self bounds];
-	int w = r.size.width * [screen backingScaleFactor];
-	int h = r.size.height * [screen backingScaleFactor];
-
-	setGeom(pixelsPerPt, w, h);
-}
-
-- (void)mouseDown:(NSEvent *)theEvent {
-	double scale = [[NSScreen mainScreen] backingScaleFactor];
-	NSPoint p = [theEvent locationInWindow];
-	eventMouseDown(p.x * scale, p.y * scale);
-}
-
-- (void)mouseUp:(NSEvent *)theEvent {
-	double scale = [[NSScreen mainScreen] backingScaleFactor];
-	NSPoint p = [theEvent locationInWindow];
-	eventMouseEnd(p.x * scale, p.y * scale);
-}
-
-- (void)mouseDragged:(NSEvent *)theEvent {
-	double scale = [[NSScreen mainScreen] backingScaleFactor];
-	NSPoint p = [theEvent locationInWindow];
-	eventMouseDragged(p.x * scale, p.y * scale);
-}
-@end
-
-void
-runApp(void) {
-	[NSAutoreleasePool new];
-	[NSApplication sharedApplication];
-	[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
-
-	id menuBar = [[NSMenu new] autorelease];
-	id menuItem = [[NSMenuItem new] autorelease];
-	[menuBar addItem:menuItem];
-	[NSApp setMainMenu:menuBar];
-
-	id menu = [[NSMenu new] autorelease];
-	id name = [[NSProcessInfo processInfo] processName];
-	id quitMenuItem = [[[NSMenuItem alloc] initWithTitle:@"Quit"
-		action:@selector(terminate:) keyEquivalent:@"q"]
-		autorelease];
-	[menu addItem:quitMenuItem];
-	[menuItem setSubmenu:menu];
-
-	NSRect rect = NSMakeRect(0, 0, 400, 400);
-
-	id window = [[[NSWindow alloc] initWithContentRect:rect
-			styleMask:NSTitledWindowMask
-			backing:NSBackingStoreBuffered
-			defer:NO]
-		autorelease];
-	[window setStyleMask:[window styleMask] | NSResizableWindowMask];
-	[window cascadeTopLeftFromPoint:NSMakePoint(20,20)];
-	[window makeKeyAndOrderFront:nil];
-	[window setTitle:name];
-
-	NSOpenGLPixelFormatAttribute attr[] = {
-		NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core,
-		NSOpenGLPFAColorSize,     24,
-		NSOpenGLPFAAlphaSize,     8,
-		NSOpenGLPFADepthSize,     16,
-		NSOpenGLPFAAccelerated,
-		NSOpenGLPFADoubleBuffer,
-		0
-	};
-	id pixFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:attr];
-	id view = [[MobileGLView alloc] initWithFrame:rect pixelFormat:pixFormat];
-	[window setContentView:view];
-
-	[NSApp activateIgnoringOtherApps:YES];
-	[NSApp run];
-}
diff --git a/go/src/golang.org/x/mobile/app/darwin_arm.go b/go/src/golang.org/x/mobile/app/darwin_arm.go
deleted file mode 100644
index 335fc32..0000000
--- a/go/src/golang.org/x/mobile/app/darwin_arm.go
+++ /dev/null
@@ -1,144 +0,0 @@
-// Copyright 2015 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.
-
-// +build darwin
-
-package app
-
-/*
-#cgo CFLAGS: -x objective-c
-#cgo LDFLAGS: -framework Foundation -framework UIKit -framework GLKit -framework OpenGLES -framework QuartzCore
-#include <sys/utsname.h>
-#include <stdint.h>
-#include <pthread.h>
-
-extern struct utsname sysInfo;
-
-void runApp(void);
-void setContext(void* context);
-uint64_t threadID();
-*/
-import "C"
-import (
-	"log"
-	"runtime"
-	"sync"
-	"unsafe"
-
-	"golang.org/x/mobile/geom"
-	"golang.org/x/mobile/gl"
-)
-
-var initThreadID uint64
-
-func init() {
-	// Lock the goroutine responsible for initialization to an OS thread.
-	// This means the goroutine running main (and calling the run function
-	// below) is locked to the OS thread that started the program. This is
-	// necessary for the correct delivery of UIKit events to the process.
-	//
-	// A discussion on this topic:
-	// https://groups.google.com/forum/#!msg/golang-nuts/IiWZ2hUuLDA/SNKYYZBelsYJ
-	runtime.LockOSThread()
-	initThreadID = uint64(C.threadID())
-}
-
-func run(callbacks Callbacks) {
-	if tid := uint64(C.threadID()); tid != initThreadID {
-		log.Fatalf("app.Run called on thread %d, but app.init ran on %d", tid, initThreadID)
-	}
-	cb = callbacks
-	C.runApp()
-}
-
-// TODO(crawshaw): determine minimum iOS version and remove irrelevant devices.
-var machinePPI = map[string]int{
-	"i386":      163, // simulator
-	"x86_64":    163, // simulator
-	"iPod1,1":   163, // iPod Touch gen1
-	"iPod2,1":   163, // iPod Touch gen2
-	"iPod3,1":   163, // iPod Touch gen3
-	"iPod4,1":   326, // iPod Touch gen4
-	"iPod5,1":   326, // iPod Touch gen5
-	"iPhone1,1": 163, // iPhone
-	"iPhone1,2": 163, // iPhone 3G
-	"iPhone2,1": 163, // iPhone 3GS
-	"iPad1,1":   132, // iPad gen1
-	"iPad2,1":   132, // iPad gen2
-	"iPad2,2":   132, // iPad gen2 GSM
-	"iPad2,3":   132, // iPad gen2 CDMA
-	"iPad2,4":   132, // iPad gen2
-	"iPad2,5":   163, // iPad Mini gen1
-	"iPad2,6":   163, // iPad Mini gen1 AT&T
-	"iPad2,7":   163, // iPad Mini gen1 VZ
-	"iPad3,1":   264, // iPad gen3
-	"iPad3,2":   264, // iPad gen3 VZ
-	"iPad3,3":   264, // iPad gen3 AT&T
-	"iPad3,4":   264, // iPad gen4
-	"iPad3,5":   264, // iPad gen4 AT&T
-	"iPad3,6":   264, // iPad gen4 VZ
-	"iPad4,1":   264, // iPad Air wifi
-	"iPad4,2":   264, // iPad Air LTE
-	"iPad4,3":   264, // iPad Air LTE China
-	"iPad4,4":   326, // iPad Mini gen2 wifi
-	"iPad4,5":   326, // iPad Mini gen2 LTE
-	"iPhone3,1": 326, // iPhone 4
-	"iPhone4,1": 326, // iPhone 4S
-	"iPhone5,1": 326, // iPhone 5
-	"iPhone5,2": 326, // iPhone 5
-	"iPhone5,3": 326, // iPhone 5c
-	"iPhone5,4": 326, // iPhone 5c
-	"iPhone6,1": 326, // iPhone 5s
-	"iPhone6,2": 326, // iPhone 5s
-	"iPhone7,1": 401, // iPhone 6 Plus
-	"iPhone7,2": 326, // iPhone 6
-}
-
-func ppi() int {
-	// TODO(crawshaw): use lookup table to get the correct PPI.
-	//C.uname(&C.sysInfo)
-	//machine := C.GoString(C.sysInfo.machine)
-	//return machinePPI[machine]
-	return 326
-}
-
-//export setGeom
-func setGeom(width, height int) {
-	geom.PixelsPerPt = float32(ppi()) / 72
-	geom.Width = geom.Pt(float32(width) / geom.PixelsPerPt)
-	geom.Height = geom.Pt(float32(height) / geom.PixelsPerPt)
-}
-
-func initGL() {
-}
-
-var cb Callbacks
-var initGLOnce sync.Once
-
-//export drawgl
-func drawgl(ctx uintptr) {
-	// The call to lockContext loads the OpenGL context into
-	// thread-local storage for use by the underlying GL calls
-	// done in the user's Draw function. We need to stay on
-	// the same thread throughout Draw, so we LockOSThread.
-	runtime.LockOSThread()
-	C.setContext(unsafe.Pointer(ctx))
-
-	initGLOnce.Do(initGL)
-
-	// TODO not here?
-	gl.ClearColor(0, 0, 0, 1)
-	gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
-	if cb.Draw != nil {
-		cb.Draw()
-	}
-
-	// TODO
-	//C.unlockContext(ctx)
-
-	// This may unlock the original main thread, but that's OK,
-	// because by the time it does the thread has already entered
-	// C.runApp, which won't give the thread up.
-	runtime.UnlockOSThread()
-}
diff --git a/go/src/golang.org/x/mobile/app/darwin_arm.m b/go/src/golang.org/x/mobile/app/darwin_arm.m
deleted file mode 100644
index 5a2f52e..0000000
--- a/go/src/golang.org/x/mobile/app/darwin_arm.m
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2015 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.
-
-// +build darwin
-
-#include "_cgo_export.h"
-#include <pthread.h>
-#include <stdio.h>
-#include <sys/utsname.h>
-
-#import <UIKit/UIKit.h>
-#import <GLKit/GLKit.h>
-
-struct utsname sysInfo;
-
-@interface AppController : GLKViewController
-@end
-
-@interface AppDelegate : UIResponder<UIApplicationDelegate>
-@property (strong, nonatomic) UIWindow *window;
-@property (strong, nonatomic) AppController *controller;
-@end
-
-@implementation AppDelegate
-- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
-	self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
-	self.controller = [[AppController alloc] initWithNibName:nil bundle:nil];
-	self.window.rootViewController = self.controller;
-	[self.window makeKeyAndVisible];
-	return YES;
-}
-@end
-
-@interface AppController ()
-@property (strong, nonatomic) EAGLContext *context;
-@end
-
-@implementation AppController
-- (void)viewDidLoad {
-	[super viewDidLoad];
-	self.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
-	GLKView *view = (GLKView *)self.view;
-	view.context = self.context;
-	view.drawableDepthFormat = GLKViewDrawableDepthFormat24;
-
-	// TODO(crawshaw): set correct geometry.
-	//CGRect bounds = view.bounds;
-	//view.contentScaleFactor;
-	setGeom(300, 300);
-}
-- (void)update {
-	NSLog(@"AppController update");
-	drawgl((GoUintptr)self.context);
-}
-@end
-
-void runApp(void) {
-	@autoreleasepool {
-		UIApplicationMain(0, nil, nil, NSStringFromClass([AppDelegate class]));
-	}
-}
-
-void setContext(void* context) {
-	EAGLContext* ctx = (EAGLContext*)context;
-	if (![EAGLContext setCurrentContext:ctx]) {
-		// TODO(crawshaw): determine how terrible this is. Exit?
-		NSLog(@"failed to set current context");
-	}
-}
-
-uint64_t threadID() {
-	uint64_t id;
-	if (pthread_threadid_np(pthread_self(), &id)) {
-		abort();
-	}
-	return id;
-}
diff --git a/go/src/golang.org/x/mobile/app/debug/fps.go b/go/src/golang.org/x/mobile/app/debug/fps.go
deleted file mode 100644
index 4d1d0b2..0000000
--- a/go/src/golang.org/x/mobile/app/debug/fps.go
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2014 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 debug provides GL-based debugging tools for apps.
-package debug // import "golang.org/x/mobile/app/debug"
-
-import (
-	"fmt"
-	"image"
-	"image/draw"
-	"log"
-	"math"
-	"sync"
-	"time"
-
-	"code.google.com/p/freetype-go/freetype"
-	"golang.org/x/mobile/font"
-	"golang.org/x/mobile/geom"
-	"golang.org/x/mobile/gl/glutil"
-)
-
-var lastDraw = time.Now()
-
-var monofont = freetype.NewContext()
-
-var fps struct {
-	sync.Once
-	*glutil.Image
-}
-
-// TODO(crawshaw): It looks like we need a gl.RegisterInit feature.
-// TODO(crawshaw): The gldebug mode needs to complain loudly when GL functions
-//                 are called before init, because often they fail silently.
-func fpsInit() {
-	b := font.Monospace()
-	f, err := freetype.ParseFont(b)
-	if err != nil {
-		panic(err)
-	}
-	monofont.SetFont(f)
-	monofont.SetSrc(image.Black)
-	monofont.SetHinting(freetype.FullHinting)
-
-	toPx := func(x geom.Pt) int { return int(math.Ceil(float64(geom.Pt(x).Px()))) }
-	fps.Image = glutil.NewImage(toPx(50), toPx(12))
-	monofont.SetDst(fps.Image.RGBA)
-	monofont.SetClip(fps.Bounds())
-	monofont.SetDPI(72 * float64(geom.PixelsPerPt))
-	monofont.SetFontSize(12)
-}
-
-// DrawFPS draws the per second framerate in the bottom-left of the screen.
-func DrawFPS() {
-	fps.Do(fpsInit)
-
-	now := time.Now()
-	diff := now.Sub(lastDraw)
-	str := fmt.Sprintf("%.0f FPS", float32(time.Second)/float32(diff))
-	draw.Draw(fps.Image, fps.Image.Rect, image.White, image.Point{}, draw.Src)
-
-	ftpt12 := freetype.Pt(0, int(12*geom.PixelsPerPt))
-	if _, err := monofont.DrawString(str, ftpt12); err != nil {
-		log.Printf("DrawFPS: %v", err)
-		return
-	}
-
-	fps.Upload()
-	fps.Draw(
-		geom.Point{0, geom.Height - 12},
-		geom.Point{50, geom.Height - 12},
-		geom.Point{0, geom.Height},
-		fps.Bounds(),
-	)
-
-	lastDraw = now
-}
diff --git a/go/src/golang.org/x/mobile/app/desktop.go b/go/src/golang.org/x/mobile/app/desktop.go
deleted file mode 100644
index 12434b2..0000000
--- a/go/src/golang.org/x/mobile/app/desktop.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2014 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.
-
-// +build linux,!android darwin
-
-package app
-
-import (
-	"os"
-	"path/filepath"
-)
-
-// Logic shared by desktop debugging implementations.
-
-func openAsset(name string) (ReadSeekCloser, error) {
-	if !filepath.IsAbs(name) {
-		name = filepath.Join("assets", name)
-	}
-	f, err := os.Open(name)
-	if err != nil {
-		return nil, err
-	}
-	return f, nil
-}
diff --git a/go/src/golang.org/x/mobile/app/doc.go b/go/src/golang.org/x/mobile/app/doc.go
deleted file mode 100644
index 544368d..0000000
--- a/go/src/golang.org/x/mobile/app/doc.go
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2014 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 app lets you write Apps for Android (and eventually, iOS).
-
-There are two ways to use Go in an Android App. The first is as a
-library called from Java, the second is to use a restricted set of
-features but work entirely in Go.
-
-Shared Library
-
-A Go program can be compiled for Android as a shared library. JNI
-methods can be implemented via cgo, or generated automatically with
-gobind: http://golang.org/x/mobile/cmd/gobind
-
-The library must include a package main and a main function that does
-not return until the process exits. Libraries can be cross-compiled
-using the Android NDK and the Go tool:
-
-	GOOS=android GOARCH=arm GOARM=7 CGO_ENABLED=1 \
-	go build -ldflags="-shared" .
-
-See http://golang.org/x/mobile/example/libhello for an example of
-calling into a Go shared library from a Java Android app.
-
-Native App
-
-An app can be written entirely in Go. This results in a significantly
-simpler programming environment (and eventually, portability to iOS),
-however only a very restricted set of Android APIs are available.
-
-The provided interfaces are focused on games. It is expected that the
-app will draw to the entire screen (via OpenGL, see the go.mobile/gl
-package), and that none of the platform's screen management
-infrastructure is exposed. On Android, this means a native app is
-equivalent to a single Activity (in particular a NativeActivity) and
-on iOS, a single UIWindow. Touch events will be accessible via this
-package. When Android support is out of preview, all APIs supported by
-the Android NDK will be exposed via a Go package.
-
-See http://golang.org/x/mobile/example/sprite for an example app.
-
-Lifecycle in Native Apps
-
-App execution begins in platform-specific code. Early on in the app's
-life, the Go runtime is initialized and the Go main function is called.
-(For Android, this is in ANativeActivity_onCreate, for iOS,
-application:willFinishLaunchingWithOptions.)
-
-An app is expected to call the Run function in its main. When the main
-function exits, the app exits.
-
-	package main
-
-	import (
-		"log"
-
-		"golang.org/x/mobile/app"
-	)
-
-	func main() {
-		app.Run(app.Callbacks{
-			Draw: draw,
-		})
-	}
-
-	func draw() {
-		log.Print("In draw loop, can call OpenGL.")
-	}
-
-*/
-package app // import "golang.org/x/mobile/app"
diff --git a/go/src/golang.org/x/mobile/app/loop_android.go b/go/src/golang.org/x/mobile/app/loop_android.go
deleted file mode 100644
index f39fea4..0000000
--- a/go/src/golang.org/x/mobile/app/loop_android.go
+++ /dev/null
@@ -1,172 +0,0 @@
-// Copyright 2014 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 app
-
-/*
-#cgo android LDFLAGS: -llog -landroid -lEGL -lGLESv2
-#include <android/log.h>
-#include <android/native_activity.h>
-#include <android/input.h>
-#include <EGL/egl.h>
-#include <GLES/gl.h>
-
-// TODO(crawshaw): Test configuration on more devices.
-const EGLint RGB_888[] = {
-	EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
-	EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
-	EGL_BLUE_SIZE, 8,
-	EGL_GREEN_SIZE, 8,
-	EGL_RED_SIZE, 8,
-	EGL_DEPTH_SIZE, 16,
-	EGL_CONFIG_CAVEAT, EGL_NONE,
-	EGL_NONE
-};
-
-EGLint windowWidth;
-EGLint windowHeight;
-EGLDisplay display;
-EGLSurface surface;
-
-#define LOG_ERROR(...) __android_log_print(ANDROID_LOG_ERROR, "Go", __VA_ARGS__)
-
-void createEGLWindow(ANativeWindow* window) {
-	EGLint numConfigs, format;
-	EGLConfig config;
-	EGLContext context;
-
-	display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
-	if (!eglInitialize(display, 0, 0)) {
-		LOG_ERROR("EGL initialize failed");
-		return;
-	}
-
-	if (!eglChooseConfig(display, RGB_888, &config, 1, &numConfigs)) {
-		LOG_ERROR("EGL choose RGB_888 config failed");
-		return;
-	}
-	if (numConfigs <= 0) {
-		LOG_ERROR("EGL no config found");
-		return;
-	}
-
-	eglGetConfigAttrib(display, config, EGL_NATIVE_VISUAL_ID, &format);
-	if (ANativeWindow_setBuffersGeometry(window, 0, 0, format) != 0) {
-		LOG_ERROR("EGL set buffers geometry failed");
-		return;
-	}
-
-	surface = eglCreateWindowSurface(display, config, window, NULL);
-	if (surface == EGL_NO_SURFACE) {
-		LOG_ERROR("EGL create surface failed");
-		return;
-	}
-
-	const EGLint contextAttribs[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE };
-	context = eglCreateContext(display, config, EGL_NO_CONTEXT, contextAttribs);
-
-	if (eglMakeCurrent(display, surface, surface, context) == EGL_FALSE) {
-		LOG_ERROR("eglMakeCurrent failed");
-		return;
-	}
-
-	eglQuerySurface(display, surface, EGL_WIDTH, &windowWidth);
-	eglQuerySurface(display, surface, EGL_HEIGHT, &windowHeight);
-}
-
-#undef LOG_ERROR
-*/
-import "C"
-import (
-	"log"
-
-	"golang.org/x/mobile/event"
-	"golang.org/x/mobile/geom"
-	"golang.org/x/mobile/gl"
-)
-
-func windowDrawLoop(cb Callbacks, w *C.ANativeWindow, queue *C.AInputQueue) {
-	C.createEGLWindow(w)
-
-	// TODO: is the library or the app responsible for clearing the buffers?
-	gl.ClearColor(0, 0, 0, 1)
-	gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
-	C.eglSwapBuffers(C.display, C.surface)
-
-	if errv := gl.GetError(); errv != gl.NO_ERROR {
-		log.Printf("GL initialization error: %s", errv)
-	}
-
-	geom.Width = geom.Pt(float32(C.windowWidth) / geom.PixelsPerPt)
-	geom.Height = geom.Pt(float32(C.windowHeight) / geom.PixelsPerPt)
-
-	// Wait until geometry and GL is initialized before cb.Start.
-	runStart(cb)
-
-	for {
-		processEvents(cb, queue)
-		select {
-		case <-windowDestroyed:
-			if cb.Stop != nil {
-				cb.Stop()
-			}
-			return
-		default:
-			if cb.Draw != nil {
-				cb.Draw()
-			}
-			C.eglSwapBuffers(C.display, C.surface)
-		}
-	}
-}
-
-func processEvents(cb Callbacks, queue *C.AInputQueue) {
-	var event *C.AInputEvent
-	for C.AInputQueue_getEvent(queue, &event) >= 0 {
-		if C.AInputQueue_preDispatchEvent(queue, event) != 0 {
-			continue
-		}
-		processEvent(cb, event)
-		C.AInputQueue_finishEvent(queue, event, 0)
-	}
-}
-
-func processEvent(cb Callbacks, e *C.AInputEvent) {
-	switch C.AInputEvent_getType(e) {
-	case C.AINPUT_EVENT_TYPE_KEY:
-		log.Printf("TODO input event: key")
-	case C.AINPUT_EVENT_TYPE_MOTION:
-		if cb.Touch == nil {
-			return
-		}
-
-		// At most one of the events in this batch is an up or down event; get its index and type.
-		upDownIndex := C.size_t(C.AMotionEvent_getAction(e)&C.AMOTION_EVENT_ACTION_POINTER_INDEX_MASK) >> C.AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT
-		upDownTyp := event.TouchMove
-		switch C.AMotionEvent_getAction(e) & C.AMOTION_EVENT_ACTION_MASK {
-		case C.AMOTION_EVENT_ACTION_DOWN, C.AMOTION_EVENT_ACTION_POINTER_DOWN:
-			upDownTyp = event.TouchStart
-		case C.AMOTION_EVENT_ACTION_UP, C.AMOTION_EVENT_ACTION_POINTER_UP:
-			upDownTyp = event.TouchEnd
-		}
-
-		for i, n := C.size_t(0), C.AMotionEvent_getPointerCount(e); i < n; i++ {
-			typ := event.TouchMove
-			if i == upDownIndex {
-				typ = upDownTyp
-			}
-			x := C.AMotionEvent_getX(e, i)
-			y := C.AMotionEvent_getY(e, i)
-			cb.Touch(event.Touch{
-				Type: typ,
-				Loc: geom.Point{
-					X: geom.Pt(float32(x) / geom.PixelsPerPt),
-					Y: geom.Pt(float32(y) / geom.PixelsPerPt),
-				},
-			})
-		}
-	default:
-		log.Printf("unknown input event, type=%d", C.AInputEvent_getType(e))
-	}
-}
diff --git a/go/src/golang.org/x/mobile/app/stdio_android.go b/go/src/golang.org/x/mobile/app/stdio_android.go
deleted file mode 100644
index 66284033..0000000
--- a/go/src/golang.org/x/mobile/app/stdio_android.go
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2014 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 app
-
-// Android redirects stdout and stderr to /dev/null.
-// As these are common debugging utilities in Go,
-// we redirect them to logcat.
-//
-// Unfortunately, logcat is line oriented, so we must buffer.
-
-/*
-#cgo LDFLAGS: -llog
-#include <android/log.h>
-#include <string.h>
-*/
-import "C"
-
-import (
-	"bufio"
-	"log"
-	"os"
-	"unsafe"
-)
-
-var (
-	ctag    = C.CString("GoStdio")
-	ctagLog = C.CString("GoLog")
-)
-
-type infoWriter struct{}
-
-func (infoWriter) Write(p []byte) (n int, err error) {
-	cstr := C.CString(string(p))
-	C.__android_log_write(C.ANDROID_LOG_INFO, ctagLog, cstr)
-	C.free(unsafe.Pointer(cstr))
-	return len(p), nil
-}
-
-func lineLog(f *os.File, priority C.int) {
-	const logSize = 1024 // matches android/log.h.
-	r := bufio.NewReaderSize(f, logSize)
-	for {
-		line, _, err := r.ReadLine()
-		str := string(line)
-		if err != nil {
-			str += " " + err.Error()
-		}
-		cstr := C.CString(str)
-		C.__android_log_write(priority, ctag, cstr)
-		C.free(unsafe.Pointer(cstr))
-		if err != nil {
-			break
-		}
-	}
-}
-
-func init() {
-	log.SetOutput(infoWriter{})
-	// android logcat includes all of log.LstdFlags
-	log.SetFlags(log.Flags() &^ log.LstdFlags)
-
-	r, w, err := os.Pipe()
-	if err != nil {
-		panic(err)
-	}
-	os.Stderr = w
-	go lineLog(r, C.ANDROID_LOG_ERROR)
-
-	r, w, err = os.Pipe()
-	if err != nil {
-		panic(err)
-	}
-	os.Stdout = w
-	go lineLog(r, C.ANDROID_LOG_INFO)
-}
diff --git a/go/src/golang.org/x/mobile/app/x11.c b/go/src/golang.org/x/mobile/app/x11.c
deleted file mode 100644
index fd9ea07..0000000
--- a/go/src/golang.org/x/mobile/app/x11.c
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright 2014 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.
-
-// +build linux,!android
-
-#include "_cgo_export.h"
-#include <EGL/egl.h>
-#include <GLES2/gl2.h>
-#include <X11/Xlib.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-static Window
-new_window(Display *x_dpy, EGLDisplay e_dpy, int w, int h, EGLContext *ctx, EGLSurface *surf) {
-	static const EGLint attribs[] = {
-		EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
-		EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
-		EGL_BLUE_SIZE, 8,
-		EGL_GREEN_SIZE, 8,
-		EGL_RED_SIZE, 8,
-		EGL_DEPTH_SIZE, 16,
-		EGL_CONFIG_CAVEAT, EGL_NONE,
-		EGL_NONE
-	};
-	EGLConfig config;
-	EGLint num_configs;
-	if (!eglChooseConfig(e_dpy, attribs, &config, 1, &num_configs)) {
-		fprintf(stderr, "eglChooseConfig failed\n");
-		exit(1);
-	}
-	EGLint vid;
-	if (!eglGetConfigAttrib(e_dpy, config, EGL_NATIVE_VISUAL_ID, &vid)) {
-		fprintf(stderr, "eglGetConfigAttrib failed\n");
-		exit(1);
-	}
-
-	XVisualInfo visTemplate;
-	visTemplate.visualid = vid;
-	int num_visuals;
-	XVisualInfo *visInfo = XGetVisualInfo(x_dpy, VisualIDMask, &visTemplate, &num_visuals);
-	if (!visInfo) {
-		fprintf(stderr, "XGetVisualInfo failed\n");
-		exit(1);
-	}
-
-	Window root = RootWindow(x_dpy, DefaultScreen(x_dpy));
-	XSetWindowAttributes attr;
-	attr.event_mask = StructureNotifyMask | ExposureMask |
-		ButtonPressMask | ButtonReleaseMask | ButtonMotionMask;
-	Window win = XCreateWindow(
-		x_dpy, root, 0, 0, w, h, 0, visInfo->depth, InputOutput,
-		visInfo->visual, CWEventMask, &attr);
-	XFree(visInfo);
-
-	XSizeHints sizehints;
-	sizehints.width  = w;
-	sizehints.height = h;
-	sizehints.flags = USSize;
-	XSetNormalHints(x_dpy, win, &sizehints);
-	XSetStandardProperties(x_dpy, win, "App", "App", None, (char **)NULL, 0, &sizehints);
-
-	static const EGLint ctx_attribs[] = {
-		EGL_CONTEXT_CLIENT_VERSION, 2,
-		EGL_NONE
-	};
-	*ctx = eglCreateContext(e_dpy, config, EGL_NO_CONTEXT, ctx_attribs);
-	if (!*ctx) {
-		fprintf(stderr, "eglCreateContext failed\n");
-		exit(1);
-	}
-	*surf = eglCreateWindowSurface(e_dpy, config, win, NULL);
-	if (!*surf) {
-		fprintf(stderr, "eglCreateWindowSurface failed\n");
-		exit(1);
-	}
-	return win;
-}
-
-void
-runApp(void) {
-	Display *x_dpy = XOpenDisplay(NULL);
-	if (!x_dpy) {
-		fprintf(stderr, "XOpenDisplay failed\n");
-		exit(1);
-	}
-	EGLDisplay e_dpy = eglGetDisplay(x_dpy);
-	if (!e_dpy) {
-		fprintf(stderr, "eglGetDisplay failed\n");
-		exit(1);
-	}
-	EGLint e_major, e_minor;
-	if (!eglInitialize(e_dpy, &e_major, &e_minor)) {
-		fprintf(stderr, "eglInitialize failed\n");
-		exit(1);
-	}
-	eglBindAPI(EGL_OPENGL_ES_API);
-	EGLContext e_ctx;
-	EGLSurface e_surf;
-	Window win = new_window(x_dpy, e_dpy, 400, 400, &e_ctx, &e_surf);
-	XMapWindow(x_dpy, win);
-	if (!eglMakeCurrent(e_dpy, e_surf, e_surf, e_ctx)) {
-		fprintf(stderr, "eglMakeCurrent failed\n");
-		exit(1);
-	}
-
-	while (1) {
-		XEvent ev;
-		XNextEvent(x_dpy, &ev);
-		switch (ev.type) {
-		case ButtonPress:
-			onTouchStart((float)ev.xbutton.x, (float)ev.xbutton.y);
-			break;
-		case ButtonRelease:
-			onTouchEnd((float)ev.xbutton.x, (float)ev.xbutton.y);
-			break;
-		case MotionNotify:
-			onTouchMove((float)ev.xmotion.x, (float)ev.xmotion.y);
-			break;
-		case Expose:
-			onDraw();
-			eglSwapBuffers(e_dpy, e_surf);
-
-			// TODO(nigeltao): subscribe to vblank events instead of forcing another
-			// expose event to keep the event loop ticking over.
-			// TODO(nigeltao): no longer #include <string.h> when we don't use memset.
-			XExposeEvent fakeEvent;
-			memset(&fakeEvent, 0, sizeof(XExposeEvent));
-			fakeEvent.type = Expose;
-			fakeEvent.window = win;
-			XSendEvent(x_dpy, win, 0, 0, (XEvent*)&fakeEvent);
-			XFlush(x_dpy);
-
-			break;
-		case ConfigureNotify:
-			onResize(ev.xconfigure.width, ev.xconfigure.height);
-			glViewport(0, 0, (GLint)ev.xconfigure.width, (GLint)ev.xconfigure.height);
-			break;
-		}
-	}
-}
diff --git a/go/src/golang.org/x/mobile/app/x11.go b/go/src/golang.org/x/mobile/app/x11.go
deleted file mode 100644
index 1934320..0000000
--- a/go/src/golang.org/x/mobile/app/x11.go
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2014 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.
-
-// +build linux,!android
-
-package app
-
-/*
-Simple on-screen app debugging for X11. Not an officially supported
-development target for apps, as screens with mice are very different
-than screens with touch panels.
-
-On Ubuntu 14.04 'Trusty', you may have to install these libraries:
-sudo apt-get install libegl1-mesa-dev libgles2-mesa-dev libx11-dev
-*/
-
-/*
-#cgo LDFLAGS: -lEGL -lGLESv2 -lX11
-
-void runApp(void);
-*/
-import "C"
-import (
-	"runtime"
-	"sync"
-
-	"golang.org/x/mobile/event"
-	"golang.org/x/mobile/geom"
-)
-
-var cb Callbacks
-
-func run(callbacks Callbacks) {
-	runtime.LockOSThread()
-	cb = callbacks
-	C.runApp()
-}
-
-//export onResize
-func onResize(w, h int) {
-	// TODO(nigeltao): don't assume 72 DPI. DisplayWidth / DisplayWidthMM
-	// is probably the best place to start looking.
-	geom.PixelsPerPt = 1
-	geom.Width = geom.Pt(w)
-	geom.Height = geom.Pt(h)
-}
-
-var events struct {
-	sync.Mutex
-	pending []event.Touch
-}
-
-func sendTouch(ty event.TouchType, x, y float32) {
-	events.Lock()
-	events.pending = append(events.pending, event.Touch{
-		Type: ty,
-		Loc: geom.Point{
-			X: geom.Pt(x),
-			Y: geom.Pt(y),
-		},
-	})
-	events.Unlock()
-}
-
-//export onTouchStart
-func onTouchStart(x, y float32) { sendTouch(event.TouchStart, x, y) }
-
-//export onTouchMove
-func onTouchMove(x, y float32) { sendTouch(event.TouchMove, x, y) }
-
-//export onTouchEnd
-func onTouchEnd(x, y float32) { sendTouch(event.TouchEnd, x, y) }
-
-//export onDraw
-func onDraw() {
-	events.Lock()
-	pending := events.pending
-	events.pending = nil
-	events.Unlock()
-
-	for _, e := range pending {
-		if cb.Touch != nil {
-			cb.Touch(e)
-		}
-	}
-	if cb.Draw != nil {
-		cb.Draw()
-	}
-}
diff --git a/go/src/golang.org/x/mobile/audio/al/al.go b/go/src/golang.org/x/mobile/audio/al/al.go
deleted file mode 100644
index 1eb5a74..0000000
--- a/go/src/golang.org/x/mobile/audio/al/al.go
+++ /dev/null
@@ -1,433 +0,0 @@
-// Copyright 2015 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.
-
-// +build darwin
-
-// Package al provides OpenAL Soft bindings for Go.
-//
-// More information about OpenAL Soft is available at
-// http://www.openal.org/documentation/openal-1.1-specification.pdf.
-package al
-
-/*
-// TODO(jbd,crawshaw): Add android, linux and windows support.
-
-#cgo darwin   CFLAGS: -DGOOS_darwin
-#cgo darwin  LDFLAGS: -framework OpenAL
-
-#ifdef GOOS_darwin
-#include <stdlib.h>
-#include <OpenAL/al.h>
-#endif
-
-*/
-import "C"
-import "unsafe"
-
-// Enable enables a capability.
-func Enable(capability int32) {
-	C.alEnable(C.ALenum(capability))
-}
-
-// Disable disables a capability.
-func Disable(capability int32) {
-	C.alDisable(C.ALenum(capability))
-}
-
-// Enabled returns true if the specified capability is enabled.
-func Enabled(capability int32) bool {
-	return C.alIsEnabled(C.ALenum(capability)) == 1
-}
-
-// Vector represents an vector in a Cartesian coordinate system.
-type Vector [3]float32
-
-// Orientation represents the angular position of an object in a
-// right-handed Cartesian coordinate system.
-// A cross product between the forward and up vector returns a vector
-// that points to the right.
-type Orientation struct {
-	// Forward vector is the direction that the object is looking at.
-	Forward Vector
-	// Up vector represents the rotation of the object.
-	Up Vector
-}
-
-func orientationFromSlice(v []float32) Orientation {
-	return Orientation{
-		Forward: Vector{v[0], v[1], v[2]},
-		Up:      Vector{v[3], v[4], v[5]},
-	}
-}
-
-func (v Orientation) slice() []float32 {
-	return []float32{v.Forward[0], v.Forward[1], v.Forward[2], v.Up[0], v.Up[1], v.Up[2]}
-}
-
-func geti(param int) int32 {
-	return int32(C.alGetInteger(C.ALenum(param)))
-}
-
-func getf(param int) float32 {
-	return float32(C.alGetFloat(C.ALenum(param)))
-}
-
-func getString(param int) string {
-	v := C.alGetString(C.ALenum(param))
-	return C.GoString((*C.char)(v))
-}
-
-// DistanceModel returns the distance model.
-func DistanceModel() int32 {
-	return geti(paramDistanceModel)
-}
-
-// SetDistanceModel sets the distance model.
-func SetDistanceModel(v int32) {
-	C.alDistanceModel(C.ALenum(v))
-}
-
-// DopplerFactor returns the doppler factor.
-func DopplerFactor() float32 {
-	return getf(paramDopplerFactor)
-}
-
-// SetDopplerFactor sets the doppler factor.
-func SetDopplerFactor(v float32) {
-	C.alDopplerFactor(C.ALfloat(v))
-}
-
-// DopplerVelocity returns the doppler velocity.
-func DopplerVelocity() float32 {
-	return getf(paramDopplerVelocity)
-}
-
-// SetDopplerVelocity sets the doppler velocity.
-func SetDopplerVelocity(v float32) {
-	C.alDopplerVelocity(C.ALfloat(v))
-}
-
-// SpeedOfSound is the speed of sound in meters per second (m/s).
-func SpeedOfSound() float32 {
-	return getf(paramSpeedOfSound)
-}
-
-// SetSpeedOfSound sets the speed of sound, its unit should be meters per second (m/s).
-func SetSpeedOfSound(v float32) {
-	C.alSpeedOfSound(C.ALfloat(v))
-}
-
-// Vendor returns the vendor.
-func Vendor() string {
-	return getString(paramVendor)
-}
-
-// Version returns the version string.
-func Version() string {
-	return getString(paramVersion)
-}
-
-// Renderer returns the renderer information.
-func Renderer() string {
-	return getString(paramRenderer)
-}
-
-// Extensions returns the enabled extensions.
-func Extensions() string {
-	return getString(paramExtensions)
-}
-
-// Error returns the most recently generated error.
-func Error() int32 {
-	return int32(C.alGetError())
-}
-
-// Source represents an individual sound source in 3D-space.
-// They take PCM data, apply modifications and then submit them to
-// be mixed according to their spatial location.
-type Source uint32
-
-// GenSources generates n new sources. These sources should be deleted
-// once they are not in use.
-func GenSources(n int) []Source {
-	s := make([]Source, n)
-	C.alGenSources(C.ALsizei(n), (*C.ALuint)(unsafe.Pointer(&s[0])))
-	return s
-}
-
-// PlaySources plays the sources.
-func PlaySources(source ...Source) {
-	C.alSourcePlayv(C.ALsizei(len(source)), (*C.ALuint)(unsafe.Pointer(&source[0])))
-}
-
-// PauseSources pauses the sources.
-func PauseSources(source ...Source) {
-	C.alSourcePausev(C.ALsizei(len(source)), (*C.ALuint)(unsafe.Pointer(&source[0])))
-}
-
-// StopSources stops the sources.
-func StopSources(source ...Source) {
-	C.alSourceStopv(C.ALsizei(len(source)), (*C.ALuint)(unsafe.Pointer(&source[0])))
-}
-
-// RewindSources rewinds the sources to their beginning positions.
-func RewindSources(source ...Source) {
-	C.alSourceRewindv(C.ALsizei(len(source)), (*C.ALuint)(unsafe.Pointer(&source[0])))
-}
-
-// DeleteSources deletes the sources.
-func DeleteSources(source ...Source) {
-	C.alDeleteSources(C.ALsizei(len(source)), (*C.ALuint)(unsafe.Pointer(&source[0])))
-}
-
-// Gain returns the source gain.
-func (s Source) Gain() float32 {
-	return getSourcef(s, paramGain)
-}
-
-// SetGain sets the source gain.
-func (s Source) SetGain(v float32) {
-	setSourcef(s, paramGain, v)
-}
-
-// MinGain returns the source's minimum gain setting.
-func (s Source) MinGain() float32 {
-	return getSourcef(s, paramMinGain)
-}
-
-// SetMinGain sets the source's minimum gain setting.
-func (s Source) SetMinGain(v float32) {
-	setSourcef(s, paramMinGain, v)
-}
-
-// MaxGain returns the source's maximum gain setting.
-func (s Source) MaxGain() float32 {
-	return getSourcef(s, paramMaxGain)
-}
-
-// SetMaxGain sets the source's maximum gain setting.
-func (s Source) SetMaxGain(v float32) {
-	setSourcef(s, paramMaxGain, v)
-}
-
-// Position returns the position of the source.
-func (s Source) Position() Vector {
-	v := Vector{}
-	getSourcefv(s, paramPosition, v[:])
-	return v
-}
-
-// SetPosition sets the position of the source.
-func (s Source) SetPosition(v Vector) {
-	setSourcefv(s, paramPosition, v[:])
-}
-
-// Velocity returns the source's velocity.
-func (s Source) Velocity() Vector {
-	v := Vector{}
-	getSourcefv(s, paramVelocity, v[:])
-	return v
-}
-
-// SetVelocity sets the source's velocity.
-func (s Source) SetVelocity(v Vector) {
-	setSourcefv(s, paramVelocity, v[:])
-}
-
-// Orientation returns the orientation of the source.
-func (s Source) Orientation() Orientation {
-	v := make([]float32, 6)
-	getSourcefv(s, paramOrientation, v)
-	return orientationFromSlice(v)
-}
-
-// SetOrientation sets the orientation of the source.
-func (s Source) SetOrientation(o Orientation) {
-	setSourcefv(s, paramOrientation, o.slice())
-}
-
-// State returns the playing state of the source.
-func (s Source) State() int32 {
-	return getSourcei(s, paramSourceState)
-}
-
-// BuffersQueued returns the number of the queued buffers.
-func (s Source) BuffersQueued() int32 {
-	return getSourcei(s, paramBuffersQueued)
-}
-
-// BuffersProcessed returns the number of the processed buffers.
-func (s Source) BuffersProcessed() int32 {
-	return getSourcei(s, paramBuffersProcessed)
-}
-
-// OffsetSeconds returns the current playback position of the source in seconds.
-func (s Source) OffsetSeconds() int32 {
-	return getSourcei(s, paramSecOffset)
-}
-
-// OffsetSample returns the sample offset of the current playback position.
-func (s Source) OffsetSample() int32 {
-	return getSourcei(s, paramSampleOffset)
-}
-
-// OffsetByte returns the byte offset of the current playback position.
-func (s Source) OffsetByte() int32 {
-	return getSourcei(s, paramByteOffset)
-}
-
-func getSourcei(s Source, param int) int32 {
-	var v C.ALint
-	C.alGetSourcei(C.ALuint(s), C.ALenum(param), &v)
-	return int32(v)
-}
-
-func getSourcef(s Source, param int) float32 {
-	var v C.ALfloat
-	C.alGetSourcef(C.ALuint(s), C.ALenum(param), &v)
-	return float32(v)
-}
-
-func getSourcefv(s Source, param int, v []float32) {
-	C.alGetSourcefv(C.ALuint(s), C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&v[0])))
-}
-
-func setSourcei(s Source, param int, v int32) {
-	C.alSourcei(C.ALuint(s), C.ALenum(param), C.ALint(v))
-}
-
-func setSourcef(s Source, param int, v float32) {
-	C.alSourcef(C.ALuint(s), C.ALenum(param), C.ALfloat(v))
-}
-
-func setSourcefv(s Source, param int, v []float32) {
-	C.alSourcefv(C.ALuint(s), C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&v[0])))
-}
-
-// QueueBuffers adds the buffers to the buffer queue.
-func (s Source) QueueBuffers(buffers []Buffer) {
-	C.alSourceQueueBuffers(C.ALuint(s), C.ALsizei(len(buffers)), (*C.ALuint)(unsafe.Pointer(&buffers[0])))
-}
-
-// UnqueueBuffers removes the specified buffers from the buffer queue.
-func (s Source) UnqueueBuffers(buffers []Buffer) {
-	C.alSourceUnqueueBuffers(C.ALuint(s), C.ALsizei(len(buffers)), (*C.ALuint)(unsafe.Pointer(&buffers[0])))
-}
-
-// ListenerGain returns the total gain applied to the final mix.
-func ListenerGain() float32 {
-	return getListenerf(paramGain)
-}
-
-// ListenerPosition returns the position of the listener.
-func ListenerPosition() Vector {
-	v := Vector{}
-	getListenerfv(paramPosition, v[:])
-	return v
-}
-
-// ListenerVelocity returns the velocity of the listener.
-func ListenerVelocity() Vector {
-	v := Vector{}
-	getListenerfv(paramVelocity, v[:])
-	return v
-}
-
-// ListenerOrientation returns the orientation of the listener.
-func ListenerOrientation() Orientation {
-	v := make([]float32, 6)
-	getListenerfv(paramOrientation, v)
-	return orientationFromSlice(v)
-}
-
-// SetListenerGain sets the total gain that will be applied to the final mix.
-func SetListenerGain(v float32) {
-	setListenerf(paramGain, v)
-}
-
-// SetListenerPosition sets the position of the listener.
-func SetListenerPosition(v Vector) {
-	setListenerfv(paramPosition, v[:])
-}
-
-// SetListenerVelocity sets the velocity of the listener.
-func SetListenerVelocity(v Vector) {
-	setListenerfv(paramVelocity, v[:])
-}
-
-// SetListenerOrientation sets the orientation of the listener.
-func SetListenerOrientation(v Orientation) {
-	setListenerfv(paramOrientation, v.slice())
-}
-
-func getListenerf(param int) float32 {
-	var v C.ALfloat
-	C.alGetListenerf(C.ALenum(param), &v)
-	return float32(v)
-}
-
-func getListenerfv(param int, v []float32) {
-	C.alGetListenerfv(C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&v[0])))
-}
-
-func setListenerf(param int, v float32) {
-	C.alListenerf(C.ALenum(param), C.ALfloat(v))
-}
-
-func setListenerfv(param int, v []float32) {
-	C.alListenerfv(C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&v[0])))
-}
-
-// A buffer represents a chunk of PCM audio data that could be buffered to an audio
-// source. A single buffer could be shared between multiple sources.
-type Buffer uint32
-
-// GenBuffers generates n new buffers. The generated buffers should be deleted
-// once they are no longer in use.
-func GenBuffers(n int) []Buffer {
-	s := make([]Buffer, n)
-	C.alGenBuffers(C.ALsizei(n), (*C.ALuint)(unsafe.Pointer(&s[0])))
-	return s
-}
-
-// DeleteBuffers deletes the buffers.
-func DeleteBuffers(buffers []Buffer) {
-	C.alDeleteBuffers(C.ALsizei(len(buffers)), (*C.ALuint)(unsafe.Pointer(&buffers[0])))
-}
-
-func getBufferi(b Buffer, param int) int32 {
-	var v C.ALint
-	C.alGetBufferi(C.ALuint(b), C.ALenum(param), &v)
-	return int32(v)
-}
-
-// Frequency returns the frequency of the buffer data in Hertz (Hz).
-func (b Buffer) Frequency() int32 {
-	return getBufferi(b, paramFreq)
-}
-
-// Bits return the number of bits used to represent a sample.
-func (b Buffer) Bits() int32 {
-	return getBufferi(b, paramBits)
-}
-
-// Channels return the number of the audio channels.
-func (b Buffer) Channels() int32 {
-	return getBufferi(b, paramChannels)
-}
-
-// Size returns the size of the data.
-func (b Buffer) Size() int32 {
-	return getBufferi(b, paramSize)
-}
-
-// BufferData buffers PCM data to the current buffer.
-func (b Buffer) BufferData(format uint32, data []byte, freq int32) {
-	C.alBufferData(C.ALuint(b), C.ALenum(format), unsafe.Pointer(&data[0]), C.ALsizei(len(data)), C.ALsizei(freq))
-}
-
-// Valid returns true if the buffer exists and is valid.
-func (b Buffer) Valid() bool {
-	return C.alIsBuffer(C.ALuint(b)) == 1
-}
diff --git a/go/src/golang.org/x/mobile/audio/al/const.go b/go/src/golang.org/x/mobile/audio/al/const.go
deleted file mode 100644
index 6de4691..0000000
--- a/go/src/golang.org/x/mobile/audio/al/const.go
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2015 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 al
-
-// Error returns one of these error codes.
-const (
-	InvalidName      = 0xA001
-	InvalidEnum      = 0xA002
-	InvalidValue     = 0xA003
-	InvalidOperation = 0xA004
-	OutOfMemory      = 0xA005
-)
-
-// Distance models.
-const (
-	InverseDistance         = 0xD001
-	InverseDistanceClamped  = 0xD002
-	LinearDistance          = 0xD003
-	LinearDistanceClamped   = 0xD004
-	ExponentDistance        = 0xD005
-	ExponentDistanceClamped = 0xD006
-)
-
-// Global parameters.
-const (
-	paramDistanceModel   = 0xD000
-	paramDopplerFactor   = 0xC000
-	paramDopplerVelocity = 0xC001
-	paramSpeedOfSound    = 0xC003
-	paramVendor          = 0xB001
-	paramVersion         = 0xB002
-	paramRenderer        = 0xB003
-	paramExtensions      = 0xB004
-)
-
-// Source and listener parameters.
-const (
-	paramGain             = 0x100A
-	paramPosition         = 0x1004
-	paramVelocity         = 0x1006
-	paramOrientation      = 0x100F
-	paramMinGain          = 0x100D
-	paramMaxGain          = 0x100E
-	paramSourceState      = 0x1010
-	paramBuffersQueued    = 0x1015
-	paramBuffersProcessed = 0x1016
-	paramSecOffset        = 0x1024
-	paramSampleOffset     = 0x1025
-	paramByteOffset       = 0x1026
-)
-
-// A source could be in the state of initial, playing, paused or stopped.
-const (
-	Initial = 0x1011
-	Playing = 0x1012
-	Paused  = 0x1013
-	Stopped = 0x1014
-)
-
-// Buffer parameters.
-const (
-	paramFreq     = 0x2001
-	paramBits     = 0x2002
-	paramChannels = 0x2003
-	paramSize     = 0x2004
-)
-
-// Audio formats. Buffer.BufferData accepts one of these formats as the data format.
-const (
-	FormatMono8    = 0x1100
-	FormatMono16   = 0x1101
-	FormatStereo8  = 0x1102
-	FormatStereo16 = 0x1103
-)
diff --git a/go/src/golang.org/x/mobile/audio/alc/alc.go b/go/src/golang.org/x/mobile/audio/alc/alc.go
deleted file mode 100644
index 65b3258..0000000
--- a/go/src/golang.org/x/mobile/audio/alc/alc.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2015 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.
-
-// +build darwin
-
-// Package alc provides OpenAL's ALC (Audio Library Context) bindings for Go.
-package alc
-
-/*
-#cgo darwin   CFLAGS:  -DGOOS_darwin
-#cgo darwin   LDFLAGS: -framework OpenAL
-
-#ifdef GOOS_darwin
-#include <stdlib.h>
-#include <OpenAL/alc.h>
-#endif
-*/
-import "C"
-import "unsafe"
-
-// Error returns one of these values.
-const (
-	InvalidDevice  = 0xA001
-	InvalidContext = 0xA002
-	InvalidEnum    = 0xA003
-	InvalidValue   = 0xA004
-	OutOfMemory    = 0xA005
-)
-
-// Device represents an audio device.
-type Device struct {
-	d *C.ALCdevice
-}
-
-// Error returns the last known error from the current device.
-func (d *Device) Error() int32 {
-	return int32(C.alcGetError(d.d))
-}
-
-// Context represents a context created in the OpenAL layer. A valid current
-// context is required to run OpenAL functions.
-// The returned context will be available process-wide if it's made the
-// current by calling MakeContextCurrent.
-type Context struct {
-	c *C.ALCcontext
-}
-
-// Open opens a new device in the OpenAL layer.
-func Open(name string) *Device {
-	n := C.CString(name)
-	defer C.free(unsafe.Pointer(n))
-	return &Device{d: C.alcOpenDevice((*C.ALCchar)(unsafe.Pointer(n)))}
-}
-
-// Close closes the device.
-func (d *Device) Close() bool {
-	return C.alcCloseDevice(d.d) == 1
-}
-
-// CreateContext creates a new context.
-func (d *Device) CreateContext(attrs []int32) *Context {
-	// TODO(jbd): Handle attributes.
-	c := C.alcCreateContext(d.d, nil)
-	return &Context{c: c}
-}
-
-// MakeContextCurrent makes a context current process-wide.
-func MakeContextCurrent(c *Context) bool {
-	return C.alcMakeContextCurrent(c.c) == 1
-}
diff --git a/go/src/golang.org/x/mobile/audio/audio.go b/go/src/golang.org/x/mobile/audio/audio.go
deleted file mode 100644
index 904968c..0000000
--- a/go/src/golang.org/x/mobile/audio/audio.go
+++ /dev/null
@@ -1,295 +0,0 @@
-// Copyright 2015 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.
-
-// +build darwin
-
-// Package audio provides a basic audio player.
-package audio
-
-import (
-	"fmt"
-	"io"
-	"sync"
-	"time"
-
-	"golang.org/x/mobile/audio/al"
-	"golang.org/x/mobile/audio/alc"
-)
-
-// Format represents an audio file format.
-type Format string
-
-const (
-	Mono8    = Format("mono8")
-	Mono16   = Format("mono16")
-	Stereo8  = Format("stereo8")
-	Stereo16 = Format("stereo16")
-)
-
-var formatToCode = map[Format]int32{
-	Mono8:    0x1100,
-	Mono16:   0x1101,
-	Stereo8:  0x1102,
-	Stereo16: 0x1103,
-}
-
-// State indicates the current playing state of the player.
-type State string
-
-const (
-	Unknown = State("unknown")
-	Initial = State("initial")
-	Playing = State("playing")
-	Paused  = State("paused")
-	Stopped = State("stopped")
-)
-
-var codeToState = map[int32]State{
-	0:      Unknown,
-	0x1011: Initial,
-	0x1012: Playing,
-	0x1013: Paused,
-	0x1014: Stopped,
-}
-
-var device struct {
-	sync.Mutex
-	d *alc.Device
-}
-
-type track struct {
-	format Format
-	rate   int64 // sample rate
-	src    io.ReadSeeker
-}
-
-// Player is a basic audio player that plays PCM data.
-// Operations on a nil *Player are no-op, a nil *Player can
-// be used for testing purposes.
-type Player struct {
-	t      *track
-	source al.Source
-
-	muPrep sync.Mutex // guards prep and bufs
-	prep   bool
-	bufs   []al.Buffer
-	size   int64 // size of the audio source
-}
-
-// NewPlayer returns a new Player.
-// It initializes the underlying audio devices and the related resources.
-func NewPlayer(src io.ReadSeeker, format Format, sampleRate int64) (*Player, error) {
-	device.Lock()
-	defer device.Unlock()
-
-	if device.d == nil {
-		device.d = alc.Open("")
-		c := device.d.CreateContext(nil)
-		if !alc.MakeContextCurrent(c) {
-			return nil, fmt.Errorf("player: cannot initiate a new player")
-		}
-	}
-	s := al.GenSources(1)
-	if code := al.Error(); code != 0 {
-		return nil, fmt.Errorf("player: cannot generate an audio source [err=%x]", code)
-	}
-	bufs := al.GenBuffers(2)
-	if err := lastErr(); err != nil {
-		return nil, err
-	}
-	return &Player{
-		t:      &track{format: format, src: src, rate: sampleRate},
-		source: s[0],
-		bufs:   bufs,
-	}, nil
-}
-
-func (p *Player) prepare(offset int64, force bool) error {
-	p.muPrep.Lock()
-	defer p.muPrep.Unlock()
-	if !force && p.prep {
-		return nil
-	}
-	if len(p.bufs) > 0 {
-		p.source.UnqueueBuffers(p.bufs)
-		al.DeleteBuffers(p.bufs)
-	}
-	if _, err := p.t.src.Seek(offset, 0); err != nil {
-		return err
-	}
-	p.bufs = []al.Buffer{}
-	// TODO(jbd): Limit the number of buffers in use, unqueue and reuse
-	// the existing buffers as buffers are processed.
-	buf := make([]byte, 128*1024)
-	size := offset
-	for {
-		n, err := p.t.src.Read(buf)
-		if n > 0 {
-			size += int64(n)
-			b := al.GenBuffers(1)
-			b[0].BufferData(uint32(formatToCode[p.t.format]), buf[:n], int32(p.t.rate))
-			p.bufs = append(p.bufs, b[0])
-		}
-		if err == io.EOF {
-			break
-		}
-		if err != nil {
-			return err
-		}
-	}
-	p.size = size
-	if len(p.bufs) > 0 {
-		p.source.QueueBuffers(p.bufs)
-	}
-	p.prep = true
-	return nil
-}
-
-// Play buffers the source audio to the audio device and starts
-// to play the source.
-// If the player paused or stopped, it reuses the previously buffered
-// resources to keep playing from the time it has paused or stopped.
-func (p *Player) Play() error {
-	if p == nil {
-		return nil
-	}
-	// Prepares if the track hasn't been buffered before.
-	if err := p.prepare(0, false); err != nil {
-		return err
-	}
-	al.PlaySources(p.source)
-	return lastErr()
-}
-
-// Pause pauses the player.
-func (p *Player) Pause() error {
-	if p == nil {
-		return nil
-	}
-	al.PauseSources(p.source)
-	return lastErr()
-}
-
-// Stop stops the player.
-func (p *Player) Stop() error {
-	if p == nil {
-		return nil
-	}
-	al.StopSources(p.source)
-	return lastErr()
-}
-
-// Seek moves the play head to the given offset relative to the start of the source.
-func (p *Player) Seek(offset time.Duration) error {
-	if p == nil {
-		return nil
-	}
-	if err := p.Stop(); err != nil {
-		return err
-	}
-	size := durToByteOffset(p.t, offset)
-	if err := p.prepare(size, true); err != nil {
-		return err
-	}
-	al.PlaySources(p.source)
-	return lastErr()
-}
-
-// Current returns the current playback position of the audio that is being played.
-func (p *Player) Current() time.Duration {
-	if p == nil {
-		return time.Duration(0)
-	}
-	// TODO(jbd): Current never returns the Total when the playing is finished.
-	// OpenAL may be returning the last buffer's start point as an OffsetByte.
-	return byteOffsetToDur(p.t, int64(p.source.OffsetByte()))
-}
-
-// Total returns the total duration of the audio source.
-func (p *Player) Total() time.Duration {
-	if p == nil {
-		return 0
-	}
-	// Prepare is required to determine the length of the source.
-	// We need to read the entire source to calculate the length.
-	p.prepare(0, false)
-	return byteOffsetToDur(p.t, p.size)
-}
-
-// Volume returns the current player volume. The range of the volume is [0, 1].
-func (p *Player) Volume() float64 {
-	if p == nil {
-		return 0
-	}
-	return float64(p.source.Gain())
-}
-
-// SetVolume sets the volume of the player. The range of the volume is [0, 1].
-func (p *Player) SetVolume(vol float64) {
-	if p == nil {
-		return
-	}
-	p.source.SetGain(float32(vol))
-}
-
-// State returns the player's current state.
-func (p *Player) State() State {
-	if p == nil {
-		return Unknown
-	}
-	return codeToState[p.source.State()]
-}
-
-// Destroy frees the underlying resources used by the player.
-// It should be called as soon as the player is not in-use anymore.
-func (p *Player) Destroy() {
-	if p == nil {
-		return
-	}
-	if p.source != 0 {
-		al.DeleteSources(p.source)
-	}
-	p.muPrep.Lock()
-	if len(p.bufs) > 0 {
-		al.DeleteBuffers(p.bufs)
-	}
-	p.muPrep.Unlock()
-}
-
-func byteOffsetToDur(t *track, offset int64) time.Duration {
-	size := float64(offset)
-	if t.format == Mono16 || t.format == Stereo16 {
-		size /= 2
-	}
-	if t.format == Stereo8 || t.format == Stereo16 {
-		size /= 2
-	}
-	size /= float64(t.rate)
-	// Casting size back to int64. Work in milliseconds,
-	// so that size doesn't get rounded excessively.
-	return time.Duration(size*1000) * time.Duration(time.Millisecond)
-}
-
-func durToByteOffset(t *track, dur time.Duration) int64 {
-	size := int64(dur/time.Second) * t.rate
-	// Each sample is represented by 16-bits. Move twice further.
-	if t.format == Mono16 || t.format == Stereo16 {
-		size *= 2
-	}
-	if t.format == Stereo8 || t.format == Stereo16 {
-		size *= 2
-	}
-	return size
-}
-
-// lastErr returns the last error or nil if the last operation
-// has been succesful.
-func lastErr() error {
-	if code := al.Error(); code != 0 {
-		return fmt.Errorf("audio: openal failed with %x", code)
-	}
-	return nil
-}
-
-// TODO(jbd): Destroy context, close the device.
diff --git a/go/src/golang.org/x/mobile/audio/audio_test.go b/go/src/golang.org/x/mobile/audio/audio_test.go
deleted file mode 100644
index a652b11..0000000
--- a/go/src/golang.org/x/mobile/audio/audio_test.go
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2015 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.
-
-// +build darwin
-
-package audio
-
-import (
-	"testing"
-	"time"
-)
-
-func TestNoOp(t *testing.T) {
-	var p *Player
-	if err := p.Play(); err != nil {
-		t.Errorf("no-op player failed to play: %v", err)
-	}
-	if err := p.Pause(); err != nil {
-		t.Errorf("no-op player failed to pause: %v", err)
-	}
-	if err := p.Stop(); err != nil {
-		t.Errorf("no-op player failed to stop: %v", err)
-	}
-	if c := p.Current(); c != time.Duration(0) {
-		t.Errorf("no-op player returns a non-zero playback position: %v", c)
-	}
-	if tot := p.Total(); tot != time.Duration(0) {
-		t.Errorf("no-op player returns a non-zero total: %v", tot)
-	}
-	if vol := p.Volume(); vol != 0 {
-		t.Errorf("no-op player returns a non-zero total: %v", vol)
-	}
-	if s := p.State(); s != Unknown {
-		t.Errorf("playing state: %v", s)
-	}
-	p.SetVolume(0.1)
-	p.Seek(time.Duration(100))
-	p.Destroy()
-}
diff --git a/go/src/golang.org/x/mobile/bind/bind.go b/go/src/golang.org/x/mobile/bind/bind.go
deleted file mode 100644
index 51bc34c..0000000
--- a/go/src/golang.org/x/mobile/bind/bind.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2014 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 bind implements a code generator for gobind.
-//
-// See the documentation on the gobind command for usage details.
-package bind // import "golang.org/x/mobile/bind"
-
-// TODO(crawshaw): slice support
-// TODO(crawshaw): channel support
-
-import (
-	"bytes"
-	"go/format"
-	"go/token"
-	"io"
-
-	"golang.org/x/tools/go/types"
-)
-
-// GenJava generates a Java API from a Go package.
-func GenJava(w io.Writer, fset *token.FileSet, pkg *types.Package) error {
-	buf := new(bytes.Buffer)
-	g := &javaGen{
-		printer: &printer{buf: buf, indentEach: []byte("    ")},
-		fset:    fset,
-		pkg:     pkg,
-	}
-	if err := g.gen(); err != nil {
-		return err
-	}
-	_, err := io.Copy(w, buf)
-	return err
-}
-
-// GenGo generates a Go stub to support foreign language APIs.
-func GenGo(w io.Writer, fset *token.FileSet, pkg *types.Package) error {
-	buf := new(bytes.Buffer)
-	g := &goGen{
-		printer: &printer{buf: buf, indentEach: []byte("\t")},
-		fset:    fset,
-		pkg:     pkg,
-	}
-	if err := g.gen(); err != nil {
-		return err
-	}
-	src := buf.Bytes()
-	srcf, err := format.Source(src)
-	if err != nil {
-		w.Write(src) // for debugging
-		return err
-	}
-	_, err = w.Write(srcf)
-	return err
-}
diff --git a/go/src/golang.org/x/mobile/bind/bind_test.go b/go/src/golang.org/x/mobile/bind/bind_test.go
deleted file mode 100644
index efd92af..0000000
--- a/go/src/golang.org/x/mobile/bind/bind_test.go
+++ /dev/null
@@ -1,129 +0,0 @@
-package bind
-
-import (
-	"bytes"
-	"flag"
-	"go/ast"
-	"go/parser"
-	"go/token"
-	"io/ioutil"
-	"os"
-	"os/exec"
-	"path/filepath"
-	"runtime"
-	"strings"
-	"testing"
-
-	_ "golang.org/x/tools/go/gcimporter"
-	"golang.org/x/tools/go/types"
-)
-
-var updateFlag = flag.Bool("update", false, "Update the golden files.")
-
-var tests = []string{
-	"testdata/basictypes.go",
-	"testdata/structs.go",
-	"testdata/interfaces.go",
-}
-
-var fset = token.NewFileSet()
-
-func typeCheck(t *testing.T, filename string) *types.Package {
-	f, err := parser.ParseFile(fset, filename, nil, parser.AllErrors)
-	if err != nil {
-		t.Fatalf("%s: %v", filename, err)
-	}
-
-	pkgName := filepath.Base(filename)
-	pkgName = strings.TrimSuffix(pkgName, ".go")
-
-	// typecheck and collect typechecker errors
-	var conf types.Config
-	conf.Error = func(err error) {
-		t.Error(err)
-	}
-	pkg, err := conf.Check(pkgName, fset, []*ast.File{f}, nil)
-	if err != nil {
-		t.Fatal(err)
-	}
-	return pkg
-}
-
-// diff runs the command "diff a b" and returns its output
-func diff(a, b string) string {
-	var buf bytes.Buffer
-	var cmd *exec.Cmd
-	switch runtime.GOOS {
-	case "plan9":
-		cmd = exec.Command("/bin/diff", "-c", a, b)
-	default:
-		cmd = exec.Command("/usr/bin/diff", "-u", a, b)
-	}
-	cmd.Stdout = &buf
-	cmd.Stderr = &buf
-	cmd.Run()
-	return buf.String()
-}
-
-func writeTempFile(t *testing.T, name string, contents []byte) string {
-	f, err := ioutil.TempFile("", name)
-	if err != nil {
-		t.Fatal(err)
-	}
-	if _, err := f.Write(contents); err != nil {
-		t.Fatal(err)
-	}
-	if err := f.Close(); err != nil {
-		t.Fatal(err)
-	}
-	return f.Name()
-}
-
-func TestGenJava(t *testing.T) {
-	for _, filename := range tests {
-		var buf bytes.Buffer
-		pkg := typeCheck(t, filename)
-		if err := GenJava(&buf, fset, pkg); err != nil {
-			t.Errorf("%s: %v", filename, err)
-			continue
-		}
-		out := writeTempFile(t, "java", buf.Bytes())
-		defer os.Remove(out)
-		golden := filename[:len(filename)-len(".go")] + ".java.golden"
-		if diffstr := diff(golden, out); diffstr != "" {
-			t.Errorf("%s: does not match Java golden:\n%s", filename, diffstr)
-
-			if *updateFlag {
-				t.Logf("Updating %s...", golden)
-				if err := exec.Command("/bin/cp", out, golden).Run(); err != nil {
-					t.Errorf("Update failed: %s", err)
-				}
-			}
-
-		}
-	}
-}
-
-func TestGenGo(t *testing.T) {
-	for _, filename := range tests {
-		var buf bytes.Buffer
-		pkg := typeCheck(t, filename)
-		if err := GenGo(&buf, fset, pkg); err != nil {
-			t.Errorf("%s: %v", filename, err)
-			continue
-		}
-		out := writeTempFile(t, "go", buf.Bytes())
-		defer os.Remove(out)
-		golden := filename + ".golden"
-		if diffstr := diff(golden, out); diffstr != "" {
-			t.Errorf("%s: does not match Java golden:\n%s", filename, diffstr)
-
-			if *updateFlag {
-				t.Logf("Updating %s...", golden)
-				if err := exec.Command("/bin/cp", out, golden).Run(); err != nil {
-					t.Errorf("Update failed: %s", err)
-				}
-			}
-		}
-	}
-}
diff --git a/go/src/golang.org/x/mobile/bind/gengo.go b/go/src/golang.org/x/mobile/bind/gengo.go
deleted file mode 100644
index 6e9a088..0000000
--- a/go/src/golang.org/x/mobile/bind/gengo.go
+++ /dev/null
@@ -1,437 +0,0 @@
-// Copyright 2014 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 bind
-
-import (
-	"fmt"
-	"go/token"
-	"log"
-	"strings"
-
-	"golang.org/x/tools/go/types"
-)
-
-type goGen struct {
-	*printer
-	fset *token.FileSet
-	pkg  *types.Package
-	err  ErrorList
-}
-
-func (g *goGen) errorf(format string, args ...interface{}) {
-	g.err = append(g.err, fmt.Errorf(format, args...))
-}
-
-const goPreamble = `// Package go_%s is an autogenerated binder stub for package %s.
-//   gobind -lang=go %s
-//
-// File is generated by gobind. Do not edit.
-package go_%s
-
-import (
-	"golang.org/x/mobile/bind/seq"
-	%q
-)
-
-`
-
-func (g *goGen) genPreamble() {
-	n := g.pkg.Name()
-	g.Printf(goPreamble, n, n, g.pkg.Path(), n, g.pkg.Path())
-}
-
-func (g *goGen) genFuncBody(o *types.Func, selectorLHS string) {
-	sig := o.Type().(*types.Signature)
-	params := sig.Params()
-	for i := 0; i < params.Len(); i++ {
-		p := params.At(i)
-		g.genRead("param_"+p.Name(), "in", p.Type())
-	}
-
-	res := sig.Results()
-	if res.Len() > 2 || res.Len() == 2 && !isErrorType(res.At(1).Type()) {
-		g.errorf("functions and methods must return either zero or one values, and optionally an error")
-		return
-	}
-	returnsValue := false
-	returnsError := false
-	if res.Len() == 1 {
-		if isErrorType(res.At(0).Type()) {
-			returnsError = true
-			g.Printf("err := ")
-		} else {
-			returnsValue = true
-			g.Printf("res := ")
-		}
-	} else if res.Len() == 2 {
-		returnsValue = true
-		returnsError = true
-		g.Printf("res, err := ")
-	}
-
-	g.Printf("%s.%s(", selectorLHS, o.Name())
-	for i := 0; i < params.Len(); i++ {
-		if i > 0 {
-			g.Printf(", ")
-		}
-		g.Printf("param_%s", params.At(i).Name())
-	}
-	g.Printf(")\n")
-
-	if returnsValue {
-		g.genWrite("res", "out", res.At(0).Type())
-	}
-	if returnsError {
-		g.genWrite("err", "out", res.At(res.Len()-1).Type())
-	}
-}
-
-func (g *goGen) genWrite(valName, seqName string, T types.Type) {
-	if isErrorType(T) {
-		g.Printf("if %s == nil {\n", valName)
-		g.Printf("    %s.WriteUTF16(\"\");\n", seqName)
-		g.Printf("} else {\n")
-		g.Printf("    %s.WriteUTF16(%s.Error());\n", seqName, valName)
-		g.Printf("}\n")
-		return
-	}
-	switch T := T.(type) {
-	case *types.Pointer:
-		// TODO(crawshaw): test *int
-		// TODO(crawshaw): test **Generator
-		switch T := T.Elem().(type) {
-		case *types.Named:
-			obj := T.Obj()
-			if obj.Pkg() != g.pkg {
-				g.errorf("type %s not defined in package %s", T, g.pkg)
-				return
-			}
-			g.Printf("%s.WriteGoRef(%s)\n", seqName, valName)
-		default:
-			g.errorf("unsupported type %s", T)
-		}
-	case *types.Named:
-		switch u := T.Underlying().(type) {
-		case *types.Interface, *types.Pointer:
-			g.Printf("%s.WriteGoRef(%s)\n", seqName, valName)
-		default:
-			g.errorf("unsupported, direct named type %s: %s", T, u)
-		}
-	default:
-		g.Printf("%s.Write%s(%s);\n", seqName, seqType(T), valName)
-	}
-}
-
-func (g *goGen) genFunc(o *types.Func) {
-	g.Printf("func proxy_%s(out, in *seq.Buffer) {\n", o.Name())
-	g.Indent()
-	g.genFuncBody(o, g.pkg.Name())
-	g.Outdent()
-	g.Printf("}\n\n")
-}
-
-func exportedMethodSet(T types.Type) []*types.Func {
-	var methods []*types.Func
-	methodset := types.NewMethodSet(T)
-	for i := 0; i < methodset.Len(); i++ {
-		obj := methodset.At(i).Obj()
-		if !obj.Exported() {
-			continue
-		}
-		switch obj := obj.(type) {
-		case *types.Func:
-			methods = append(methods, obj)
-		default:
-			log.Panicf("unexpected methodset obj: %s", obj)
-		}
-	}
-	return methods
-}
-
-func exportedFields(T *types.Struct) []*types.Var {
-	var fields []*types.Var
-	for i := 0; i < T.NumFields(); i++ {
-		f := T.Field(i)
-		if !f.Exported() {
-			continue
-		}
-		fields = append(fields, f)
-	}
-	return fields
-}
-
-func (g *goGen) genStruct(obj *types.TypeName, T *types.Struct) {
-	fields := exportedFields(T)
-	methods := exportedMethodSet(types.NewPointer(obj.Type()))
-
-	g.Printf("const (\n")
-	g.Indent()
-	g.Printf("proxy%sDescriptor = \"go.%s.%s\"\n", obj.Name(), g.pkg.Name(), obj.Name())
-	for i, f := range fields {
-		g.Printf("proxy%s%sGetCode = 0x%x0f\n", obj.Name(), f.Name(), i)
-		g.Printf("proxy%s%sSetCode = 0x%x1f\n", obj.Name(), f.Name(), i)
-	}
-	for i, m := range methods {
-		g.Printf("proxy%s%sCode = 0x%x0c\n", obj.Name(), m.Name(), i)
-	}
-	g.Outdent()
-	g.Printf(")\n\n")
-
-	g.Printf("type proxy%s seq.Ref\n\n", obj.Name())
-
-	for _, f := range fields {
-		g.Printf("func proxy%s%sSet(out, in *seq.Buffer) {\n", obj.Name(), f.Name())
-		g.Indent()
-		g.Printf("ref := in.ReadRef()\n")
-		g.Printf("v := in.Read%s()\n", seqType(f.Type()))
-		// TODO(crawshaw): other kinds of non-ptr types.
-		g.Printf("ref.Get().(*%s.%s).%s = v\n", g.pkg.Name(), obj.Name(), f.Name())
-		g.Outdent()
-		g.Printf("}\n\n")
-
-		g.Printf("func proxy%s%sGet(out, in *seq.Buffer) {\n", obj.Name(), f.Name())
-		g.Indent()
-		g.Printf("ref := in.ReadRef()\n")
-		g.Printf("v := ref.Get().(*%s.%s).%s\n", g.pkg.Name(), obj.Name(), f.Name())
-		g.Printf("out.Write%s(v)\n", seqType(f.Type()))
-		g.Outdent()
-		g.Printf("}\n\n")
-	}
-
-	for _, m := range methods {
-		g.Printf("func proxy%s%s(out, in *seq.Buffer) {\n", obj.Name(), m.Name())
-		g.Indent()
-		g.Printf("ref := in.ReadRef()\n")
-		g.Printf("v := ref.Get().(*%s.%s)\n", g.pkg.Name(), obj.Name())
-		g.genFuncBody(m, "v")
-		g.Outdent()
-		g.Printf("}\n\n")
-	}
-
-	g.Printf("func init() {\n")
-	g.Indent()
-	for _, f := range fields {
-		n := f.Name()
-		g.Printf("seq.Register(proxy%sDescriptor, proxy%s%sSetCode, proxy%s%sSet)\n", obj.Name(), obj.Name(), n, obj.Name(), n)
-		g.Printf("seq.Register(proxy%sDescriptor, proxy%s%sGetCode, proxy%s%sGet)\n", obj.Name(), obj.Name(), n, obj.Name(), n)
-	}
-	for _, m := range methods {
-		n := m.Name()
-		g.Printf("seq.Register(proxy%sDescriptor, proxy%s%sCode, proxy%s%s)\n", obj.Name(), obj.Name(), n, obj.Name(), n)
-	}
-	g.Outdent()
-	g.Printf("}\n\n")
-}
-
-func (g *goGen) genInterface(obj *types.TypeName) {
-	iface := obj.Type().(*types.Named).Underlying().(*types.Interface)
-
-	// Descriptor and code for interface methods.
-	g.Printf("const (\n")
-	g.Indent()
-	g.Printf("proxy%sDescriptor = \"go.%s.%s\"\n", obj.Name(), g.pkg.Name(), obj.Name())
-	for i := 0; i < iface.NumMethods(); i++ {
-		g.Printf("proxy%s%sCode = 0x%x0a\n", obj.Name(), iface.Method(i).Name(), i+1)
-	}
-	g.Outdent()
-	g.Printf(")\n\n")
-
-	// Define the entry points.
-	for i := 0; i < iface.NumMethods(); i++ {
-		m := iface.Method(i)
-		g.Printf("func proxy%s%s(out, in *seq.Buffer) {\n", obj.Name(), m.Name())
-		g.Indent()
-		g.Printf("ref := in.ReadRef()\n")
-		g.Printf("v := ref.Get().(%s.%s)\n", g.pkg.Name(), obj.Name())
-		g.genFuncBody(m, "v")
-		g.Outdent()
-		g.Printf("}\n\n")
-	}
-
-	// Register the method entry points.
-	g.Printf("func init() {\n")
-	g.Indent()
-	for i := 0; i < iface.NumMethods(); i++ {
-		g.Printf("seq.Register(proxy%sDescriptor, proxy%s%sCode, proxy%s%s)\n",
-			obj.Name(), obj.Name(), iface.Method(i).Name(), obj.Name(), iface.Method(i).Name())
-	}
-	g.Outdent()
-	g.Printf("}\n\n")
-
-	// Define a proxy interface.
-	g.Printf("type proxy%s seq.Ref\n\n", obj.Name())
-
-	for i := 0; i < iface.NumMethods(); i++ {
-		m := iface.Method(i)
-		sig := m.Type().(*types.Signature)
-		params := sig.Params()
-		res := sig.Results()
-
-		if res.Len() > 2 ||
-			(res.Len() == 2 && !isErrorType(res.At(1).Type())) {
-			g.errorf("functions and methods must return either zero or one value, and optionally an error: %s.%s", obj.Name(), m.Name())
-			continue
-		}
-
-		g.Printf("func (p *proxy%s) %s(", obj.Name(), m.Name())
-		for i := 0; i < params.Len(); i++ {
-			if i > 0 {
-				g.Printf(", ")
-			}
-			g.Printf("%s %s", paramName(params, i), g.typeString(params.At(i).Type()))
-		}
-		g.Printf(") ")
-
-		if res.Len() == 1 {
-			g.Printf(g.typeString(res.At(0).Type()))
-		} else if res.Len() == 2 {
-			g.Printf("(%s, error)", g.typeString(res.At(0).Type()))
-		}
-		g.Printf(" {\n")
-		g.Indent()
-
-		g.Printf("in := new(seq.Buffer)\n")
-		for i := 0; i < params.Len(); i++ {
-			g.genWrite(paramName(params, i), "in", params.At(i).Type())
-		}
-
-		if res.Len() == 0 {
-			g.Printf("seq.Transact((*seq.Ref)(p), proxy%s%sCode, in)\n", obj.Name(), m.Name())
-		} else {
-			g.Printf("out := seq.Transact((*seq.Ref)(p), proxy%s%sCode, in)\n", obj.Name(), m.Name())
-			var rvs []string
-			for i := 0; i < res.Len(); i++ {
-				rv := fmt.Sprintf("res_%d", i)
-				g.genRead(rv, "out", res.At(i).Type())
-				rvs = append(rvs, rv)
-			}
-			g.Printf("return %s\n", strings.Join(rvs, ","))
-		}
-
-		g.Outdent()
-		g.Printf("}\n\n")
-	}
-}
-
-func (g *goGen) genRead(valName, seqName string, typ types.Type) {
-	if isErrorType(typ) {
-		g.Printf("%s := %s.ReadError()\n", valName, seqName)
-		return
-	}
-	switch t := typ.(type) {
-	case *types.Pointer:
-		switch u := t.Elem().(type) {
-		case *types.Named:
-			o := u.Obj()
-			if o.Pkg() != g.pkg {
-				g.errorf("type %s not defined in package %s", u, g.pkg)
-				return
-			}
-			g.Printf("// Must be a Go object\n")
-			g.Printf("%s_ref := %s.ReadRef()\n", valName, seqName)
-			g.Printf("%s := %s_ref.Get().(*%s.%s)\n", valName, valName, g.pkg.Name(), o.Name())
-		default:
-			g.errorf("unsupported type %s", t)
-		}
-	case *types.Named:
-		switch t.Underlying().(type) {
-		case *types.Interface, *types.Pointer:
-			o := t.Obj()
-			if o.Pkg() != g.pkg {
-				g.errorf("type %s not defined in package %s", t, g.pkg)
-				return
-			}
-			g.Printf("var %s %s\n", valName, g.typeString(t))
-			g.Printf("%s_ref := %s.ReadRef()\n", valName, seqName)
-			g.Printf("if %s_ref.Num < 0 { // go object \n", valName)
-			g.Printf("   %s = %s_ref.Get().(%s.%s)\n", valName, valName, g.pkg.Name(), o.Name())
-			g.Printf("} else {  // foreign object \n")
-			g.Printf("   %s = (*proxy%s)(%s_ref)\n", valName, o.Name(), valName)
-			g.Printf("}\n")
-		}
-	default:
-		g.Printf("%s := %s.Read%s()\n", valName, seqName, seqType(t))
-	}
-}
-
-func (g *goGen) typeString(typ types.Type) string {
-	pkg := g.pkg
-
-	switch t := typ.(type) {
-	case *types.Named:
-		obj := t.Obj()
-		if obj.Pkg() == nil { // e.g. error type is *types.Named.
-			return types.TypeString(pkg, typ)
-		}
-		if obj.Pkg() != g.pkg {
-			g.errorf("type %s not defined in package %s", t, g.pkg)
-		}
-
-		switch t.Underlying().(type) {
-		case *types.Interface, *types.Struct:
-			return fmt.Sprintf("%s.%s", pkg.Name(), types.TypeString(pkg, typ))
-		default:
-			g.errorf("unsupported named type %s / %T", t, t)
-		}
-	case *types.Pointer:
-		switch t := t.Elem().(type) {
-		case *types.Named:
-			return fmt.Sprintf("*%s", g.typeString(t))
-		default:
-			g.errorf("not yet supported, pointer type %s / %T", t, t)
-		}
-	default:
-		return types.TypeString(pkg, typ)
-	}
-	return ""
-}
-
-func (g *goGen) gen() error {
-	g.genPreamble()
-
-	var funcs []string
-
-	scope := g.pkg.Scope()
-	names := scope.Names()
-	for _, name := range names {
-		obj := scope.Lookup(name)
-		if !obj.Exported() {
-			continue
-		}
-
-		switch obj := obj.(type) {
-		// TODO(crawshaw): case *types.Const:
-		// TODO(crawshaw): case *types.Var:
-		case *types.Func:
-			g.genFunc(obj)
-			funcs = append(funcs, obj.Name())
-		case *types.TypeName:
-			named := obj.Type().(*types.Named)
-			switch T := named.Underlying().(type) {
-			case *types.Struct:
-				g.genStruct(obj, T)
-			case *types.Interface:
-				g.genInterface(obj)
-			}
-
-		default:
-			g.errorf("not yet supported, name for %v / %T", obj, obj)
-			continue
-		}
-	}
-
-	g.Printf("func init() {\n")
-	g.Indent()
-	for i, name := range funcs {
-		g.Printf("seq.Register(%q, %d, proxy_%s)\n", g.pkg.Name(), i+1, name)
-	}
-	g.Outdent()
-	g.Printf("}\n")
-
-	if len(g.err) > 0 {
-		return g.err
-	}
-	return nil
-}
diff --git a/go/src/golang.org/x/mobile/bind/genjava.go b/go/src/golang.org/x/mobile/bind/genjava.go
deleted file mode 100644
index 61575d9..0000000
--- a/go/src/golang.org/x/mobile/bind/genjava.go
+++ /dev/null
@@ -1,598 +0,0 @@
-// Copyright 2014 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 bind
-
-import (
-	"bytes"
-	"fmt"
-	"go/token"
-	"io"
-	"regexp"
-	"unicode"
-	"unicode/utf8"
-
-	"golang.org/x/tools/go/types"
-)
-
-// TODO(crawshaw): disallow basic android java type names in exported symbols.
-// TODO(crawshaw): generate all relevant "implements" relationships for interfaces.
-// TODO(crawshaw): consider introducing Java functions for casting to and from interfaces at runtime.
-
-type ErrorList []error
-
-func (list ErrorList) Error() string {
-	buf := new(bytes.Buffer)
-	for i, err := range list {
-		if i > 0 {
-			buf.WriteRune('\n')
-		}
-		io.WriteString(buf, err.Error())
-	}
-	return buf.String()
-}
-
-type javaGen struct {
-	*printer
-	nextCode int
-	fset     *token.FileSet
-	pkg      *types.Package
-	err      ErrorList
-}
-
-func (g *javaGen) genStruct(obj *types.TypeName, T *types.Struct) {
-	fields := exportedFields(T)
-	methods := exportedMethodSet(types.NewPointer(obj.Type()))
-
-	g.Printf("public static final class %s implements go.Seq.Object {\n", obj.Name())
-	g.Indent()
-	g.Printf("private static final String DESCRIPTOR = \"go.%s.%s\";\n", g.pkg.Name(), obj.Name())
-	for i, f := range fields {
-		g.Printf("private static final int FIELD_%s_GET = 0x%x0f;\n", f.Name(), i)
-		g.Printf("private static final int FIELD_%s_SET = 0x%x1f;\n", f.Name(), i)
-	}
-	for i, m := range methods {
-		g.Printf("private static final int CALL_%s = 0x%x0c;\n", m.Name(), i)
-	}
-	g.Printf("\n")
-
-	g.Printf("private go.Seq.Ref ref;\n\n")
-
-	n := obj.Name()
-	g.Printf("private %s(go.Seq.Ref ref) { this.ref = ref; }\n\n", n)
-	g.Printf(`public go.Seq.Ref ref() { return ref; }
-
-public void call(int code, go.Seq in, go.Seq out) {
-    throw new RuntimeException("internal error: cycle: cannot call concrete proxy");
-}
-
-`)
-
-	for _, f := range fields {
-		g.Printf("public %s get%s() {\n", g.javaType(f.Type()), f.Name())
-		g.Indent()
-		g.Printf("Seq in = new Seq();\n")
-		g.Printf("Seq out = new Seq();\n")
-		g.Printf("in.writeRef(ref);\n")
-		g.Printf("Seq.send(DESCRIPTOR, FIELD_%s_GET, in, out);\n", f.Name())
-		g.Printf("return out.read%s;\n", seqRead(f.Type()))
-		g.Outdent()
-		g.Printf("}\n\n")
-
-		g.Printf("public void set%s(%s v) {\n", f.Name(), g.javaType(f.Type()))
-		g.Indent()
-		g.Printf("Seq in = new Seq();\n")
-		g.Printf("Seq out = new Seq();\n")
-		g.Printf("in.writeRef(ref);\n")
-		g.Printf("in.write%s;\n", seqWrite(f.Type(), "v"))
-		g.Printf("Seq.send(DESCRIPTOR, FIELD_%s_SET, in, out);\n", f.Name())
-		g.Outdent()
-		g.Printf("}\n")
-	}
-	g.Printf("\n")
-
-	for _, m := range methods {
-		g.genFunc(m, true)
-	}
-
-	g.Printf("@Override public boolean equals(Object o) {\n")
-	g.Indent()
-	g.Printf("if (o == null || !(o instanceof %s)) {\n    return false;\n}\n", n)
-	g.Printf("%s that = (%s)o;\n", n, n)
-	for _, f := range fields {
-		nf := f.Name()
-		g.Printf("%s this%s = get%s();\n", g.javaType(f.Type()), nf, nf)
-		g.Printf("%s that%s = that.get%s();\n", g.javaType(f.Type()), nf, nf)
-		if isJavaPrimitive(f.Type()) {
-			g.Printf("if (this%s != that%s) {\n    return false;\n}\n", nf, nf)
-		} else {
-			g.Printf("if (this%s == null) {\n", nf)
-			g.Indent()
-			g.Printf("if (that%s != null) {\n    return false;\n}\n", nf)
-			g.Outdent()
-			g.Printf("} else if (!this%s.equals(that%s)) {\n    return false;\n}\n", nf, nf)
-		}
-	}
-	g.Printf("return true;\n")
-	g.Outdent()
-	g.Printf("}\n\n")
-
-	g.Printf("@Override public int hashCode() {\n")
-	g.Printf("    return java.util.Arrays.hashCode(new Object[] {")
-	for i, f := range fields {
-		if i > 0 {
-			g.Printf(", ")
-		}
-		g.Printf("get%s()", f.Name())
-	}
-	g.Printf("});\n")
-	g.Printf("}\n\n")
-
-	// TODO(crawshaw): use String() string if it is defined.
-	g.Printf("@Override public String toString() {\n")
-	g.Indent()
-	g.Printf("StringBuilder b = new StringBuilder();\n")
-	g.Printf(`b.append("%s").append("{");`, obj.Name())
-	g.Printf("\n")
-	for _, f := range fields {
-		n := f.Name()
-		g.Printf(`b.append("%s:").append(get%s()).append(",");`, n, n)
-		g.Printf("\n")
-	}
-	g.Printf(`return b.append("}").toString();`)
-	g.Printf("\n")
-	g.Outdent()
-	g.Printf("}\n\n")
-
-	g.Outdent()
-	g.Printf("}\n\n")
-}
-
-func (g *javaGen) genInterfaceStub(o *types.TypeName, m *types.Interface) {
-	g.Printf("public static abstract class Stub implements %s {\n", o.Name())
-	g.Indent()
-
-	g.Printf("static final String DESCRIPTOR = \"go.%s.%s\";\n\n", g.pkg.Name(), o.Name())
-	g.Printf("private final go.Seq.Ref ref;\n")
-	g.Printf("public Stub() {\n    ref = go.Seq.createRef(this);\n}\n\n")
-	g.Printf("public go.Seq.Ref ref() { return ref; }\n\n")
-
-	g.Printf("public void call(int code, go.Seq in, go.Seq out) {\n")
-	g.Indent()
-	g.Printf("switch (code) {\n")
-
-	for i := 0; i < m.NumMethods(); i++ {
-		f := m.Method(i)
-		g.Printf("case Proxy.CALL_%s: {\n", f.Name())
-		g.Indent()
-
-		sig := f.Type().(*types.Signature)
-		for i := 0; i < sig.Params().Len(); i++ {
-			p := sig.Params().At(i)
-			jt := g.javaType(p.Type())
-			g.Printf("%s param_%s = in.read%s;\n", jt, p.Name(), seqRead(p.Type()))
-		}
-
-		res := sig.Results()
-		var returnsError bool
-		var numRes = res.Len()
-		if (res.Len() == 1 && isErrorType(res.At(0).Type())) ||
-			(res.Len() == 2 && isErrorType(res.At(1).Type())) {
-			numRes -= 1
-			returnsError = true
-		}
-
-		if returnsError {
-			g.Printf("try {\n")
-			g.Indent()
-		}
-
-		if numRes > 0 {
-			g.Printf("%s result = ", g.javaType(res.At(0).Type()))
-		}
-
-		g.Printf("this.%s(", f.Name())
-		for i := 0; i < sig.Params().Len(); i++ {
-			if i > 0 {
-				g.Printf(", ")
-			}
-			g.Printf("param_%s", sig.Params().At(i).Name())
-		}
-		g.Printf(");\n")
-
-		if numRes > 0 {
-			g.Printf("out.write%s;\n", seqWrite(res.At(0).Type(), "result"))
-		}
-		if returnsError {
-			g.Printf("out.writeUTF16(null);\n")
-			g.Outdent()
-			g.Printf("} catch (Exception e) {\n")
-			g.Indent()
-			if numRes > 0 {
-				resTyp := res.At(0).Type()
-				g.Printf("%s result = %s;\n", g.javaType(resTyp), g.javaTypeDefault(resTyp))
-				g.Printf("out.write%s;\n", seqWrite(resTyp, "result"))
-			}
-			g.Printf("out.writeUTF16(e.getMessage());\n")
-			g.Outdent()
-			g.Printf("}\n")
-		}
-		g.Printf("return;\n")
-		g.Outdent()
-		g.Printf("}\n")
-	}
-
-	g.Printf("default:\n    throw new RuntimeException(\"unknown code: \"+ code);\n")
-	g.Printf("}\n")
-	g.Outdent()
-	g.Printf("}\n")
-
-	g.Outdent()
-	g.Printf("}\n\n")
-}
-
-const javaProxyPreamble = `static final class Proxy implements %s {
-    static final String DESCRIPTOR = Stub.DESCRIPTOR;
-
-    private go.Seq.Ref ref;
-
-    Proxy(go.Seq.Ref ref) { this.ref = ref; }
-
-    public go.Seq.Ref ref() { return ref; }
-
-    public void call(int code, go.Seq in, go.Seq out) {
-        throw new RuntimeException("cycle: cannot call proxy");
-    }
-
-`
-
-func (g *javaGen) genInterface(o *types.TypeName) {
-	iface := o.Type().(*types.Named).Underlying().(*types.Interface)
-
-	g.Printf("public interface %s extends go.Seq.Object {\n", o.Name())
-	g.Indent()
-
-	methodSigErr := false
-	for i := 0; i < iface.NumMethods(); i++ {
-		if err := g.funcSignature(iface.Method(i), false); err != nil {
-			methodSigErr = true
-			g.errorf("%v", err)
-		}
-		g.Printf(";\n\n")
-	}
-	if methodSigErr {
-		return // skip stub generation, more of the same errors
-	}
-
-	g.genInterfaceStub(o, iface)
-
-	g.Printf(javaProxyPreamble, o.Name())
-	g.Indent()
-
-	for i := 0; i < iface.NumMethods(); i++ {
-		g.genFunc(iface.Method(i), true)
-	}
-	for i := 0; i < iface.NumMethods(); i++ {
-		g.Printf("static final int CALL_%s = 0x%x0a;\n", iface.Method(i).Name(), i+1)
-	}
-
-	g.Outdent()
-	g.Printf("}\n")
-
-	g.Outdent()
-	g.Printf("}\n\n")
-}
-
-func isErrorType(T types.Type) bool {
-	return T == types.Universe.Lookup("error").Type()
-}
-
-func isJavaPrimitive(T types.Type) bool {
-	b, ok := T.(*types.Basic)
-	if !ok {
-		return false
-	}
-	switch b.Kind() {
-	case types.Bool, types.Uint8, types.Float32, types.Float64,
-		types.Int, types.Int8, types.Int16, types.Int32, types.Int64:
-		return true
-	}
-	return false
-}
-
-// javaType returns a string that can be used as a Java type.
-func (g *javaGen) javaType(T types.Type) string {
-	switch T := T.(type) {
-	case *types.Basic:
-		switch T.Kind() {
-		case types.Bool:
-			return "boolean"
-		case types.Int:
-			return "long"
-		case types.Int8:
-			return "byte"
-		case types.Int16:
-			return "short"
-		case types.Int32:
-			return "int"
-		case types.Int64:
-			return "long"
-		case types.Uint8:
-			// TODO(crawshaw): Java bytes are signed, so this is
-			// questionable, but vital.
-			return "byte"
-		// TODO(crawshaw): case types.Uint, types.Uint16, types.Uint32, types.Uint64:
-		case types.Float32:
-			return "float"
-		case types.Float64:
-			return "double"
-		case types.String:
-			return "String"
-		default:
-			g.errorf("unsupported return type: %s", T)
-			return "TODO"
-		}
-	case *types.Slice:
-		elem := g.javaType(T.Elem())
-		return elem + "[]"
-
-	case *types.Pointer:
-		if _, ok := T.Elem().(*types.Named); ok {
-			return g.javaType(T.Elem())
-		}
-		panic(fmt.Sprintf("unsupporter pointer to type: %s", T))
-	case *types.Named:
-		n := T.Obj()
-		if n.Pkg() != g.pkg {
-			panic(fmt.Sprintf("type %s is in package %s, must be defined in package %s", n.Name(), n.Pkg().Name(), g.pkg.Name()))
-		}
-		// TODO(crawshaw): more checking here
-		return n.Name()
-	default:
-		g.errorf("unsupported javaType: %#+v, %s\n", T, T)
-		return "TODO"
-	}
-}
-
-// javaTypeDefault returns a string that represents the default value of the mapped java type.
-// TODO(hyangah): Combine javaType and javaTypeDefault?
-func (g *javaGen) javaTypeDefault(T types.Type) string {
-	switch T := T.(type) {
-	case *types.Basic:
-		switch T.Kind() {
-		case types.Bool:
-			return "false"
-		case types.Int, types.Int8, types.Int16, types.Int32,
-			types.Int64, types.Uint8, types.Float32, types.Float64:
-			return "0"
-		case types.String:
-			return "null"
-		default:
-			g.errorf("unsupported return type: %s", T)
-			return "TODO"
-		}
-	case *types.Slice, *types.Pointer, *types.Named:
-		return "null"
-
-	default:
-		g.errorf("unsupported javaType: %#+v, %s\n", T, T)
-		return "TODO"
-	}
-}
-
-var paramRE = regexp.MustCompile(`^p[0-9]+$`)
-
-// paramName replaces incompatible name with a p0-pN name.
-// Missing names, or existing names of the form p[0-9] are incompatible.
-// TODO(crawshaw): Replace invalid unicode names.
-func paramName(params *types.Tuple, pos int) string {
-	name := params.At(pos).Name()
-	if name == "" || paramRE.MatchString(name) {
-		name = fmt.Sprintf("p%d", pos)
-	}
-	return name
-}
-
-func (g *javaGen) funcSignature(o *types.Func, static bool) error {
-	sig := o.Type().(*types.Signature)
-	res := sig.Results()
-
-	var returnsError bool
-	var ret string
-	switch res.Len() {
-	case 2:
-		if !isErrorType(res.At(1).Type()) {
-			return fmt.Errorf("second result value must be of type error: %s", o)
-		}
-		returnsError = true
-		ret = g.javaType(res.At(0).Type())
-	case 1:
-		if isErrorType(res.At(0).Type()) {
-			returnsError = true
-			ret = "void"
-		} else {
-			ret = g.javaType(res.At(0).Type())
-		}
-	case 0:
-		ret = "void"
-	default:
-		return fmt.Errorf("too many result values: %s", o)
-	}
-
-	g.Printf("public ")
-	if static {
-		g.Printf("static ")
-	}
-	g.Printf("%s %s(", ret, o.Name())
-	params := sig.Params()
-	for i := 0; i < params.Len(); i++ {
-		if i > 0 {
-			g.Printf(", ")
-		}
-		v := sig.Params().At(i)
-		name := paramName(params, i)
-		jt := g.javaType(v.Type())
-		g.Printf("%s %s", jt, name)
-	}
-	g.Printf(")")
-	if returnsError {
-		g.Printf(" throws Exception")
-	}
-	return nil
-}
-
-func (g *javaGen) genFunc(o *types.Func, method bool) {
-	if err := g.funcSignature(o, !method); err != nil {
-		g.errorf("%v", err)
-		return
-	}
-	sig := o.Type().(*types.Signature)
-	res := sig.Results()
-
-	g.Printf(" {\n")
-	g.Indent()
-	g.Printf("go.Seq _in = new go.Seq();\n")
-	g.Printf("go.Seq _out = new go.Seq();\n")
-
-	returnsError := false
-	var resultType types.Type
-	if res.Len() > 0 {
-		if !isErrorType(res.At(0).Type()) {
-			resultType = res.At(0).Type()
-		}
-		if res.Len() > 1 || isErrorType(res.At(0).Type()) {
-			returnsError = true
-		}
-	}
-	if resultType != nil {
-		t := g.javaType(resultType)
-		g.Printf("%s _result;\n", t)
-	}
-
-	if method {
-		g.Printf("_in.writeRef(ref);\n")
-	}
-	params := sig.Params()
-	for i := 0; i < params.Len(); i++ {
-		p := params.At(i)
-		g.Printf("_in.write%s;\n", seqWrite(p.Type(), p.Name()))
-	}
-	g.Printf("Seq.send(DESCRIPTOR, CALL_%s, _in, _out);\n", o.Name())
-	if resultType != nil {
-		g.genRead("_result", "_out", resultType)
-	}
-	if returnsError {
-		g.Printf(`String _err = _out.readUTF16();
-if (_err != null) {
-    throw new Exception(_err);
-}
-`)
-	}
-	if resultType != nil {
-		g.Printf("return _result;\n")
-	}
-	g.Outdent()
-	g.Printf("}\n\n")
-}
-
-func (g *javaGen) genRead(resName, seqName string, T types.Type) {
-	switch T := T.(type) {
-	case *types.Pointer:
-		// TODO(crawshaw): test *int
-		// TODO(crawshaw): test **Generator
-		switch T := T.Elem().(type) {
-		case *types.Named:
-			o := T.Obj()
-			if o.Pkg() != g.pkg {
-				g.errorf("type %s not defined in package %s", T, g.pkg)
-				return
-			}
-			g.Printf("%s = new %s(%s.readRef());\n", resName, o.Name(), seqName)
-		default:
-			g.errorf("unsupported type %s", T)
-		}
-	case *types.Named:
-		switch T.Underlying().(type) {
-		case *types.Interface, *types.Pointer:
-			o := T.Obj()
-			if o.Pkg() != g.pkg {
-				g.errorf("type %s not defined in package %s", T, g.pkg)
-				return
-			}
-			g.Printf("%s = new %s.Proxy(%s.readRef());\n", resName, o.Name(), seqName)
-		default:
-			g.errorf("unsupported, direct named type %s", T)
-		}
-	default:
-		g.Printf("%s = %s.read%s();\n", resName, seqName, seqType(T))
-	}
-}
-
-func (g *javaGen) errorf(format string, args ...interface{}) {
-	g.err = append(g.err, fmt.Errorf(format, args...))
-}
-
-const javaPreamble = `// Java Package %s is a proxy for talking to a Go program.
-//   gobind -lang=java %s
-//
-// File is generated by gobind. Do not edit.
-package go.%s;
-
-import go.Seq;
-
-`
-
-func (g *javaGen) gen() error {
-	g.Printf(javaPreamble, g.pkg.Name(), g.pkg.Path(), g.pkg.Name())
-
-	firstRune, size := utf8.DecodeRuneInString(g.pkg.Name())
-	className := string(unicode.ToUpper(firstRune)) + g.pkg.Name()[size:]
-
-	g.Printf("public abstract class %s {\n", className)
-	g.Indent()
-	g.Printf("private %s() {} // uninstantiable\n\n", className)
-	scope := g.pkg.Scope()
-	names := scope.Names()
-	var funcs []string
-	for _, name := range names {
-		obj := scope.Lookup(name)
-		if !obj.Exported() {
-			continue
-		}
-
-		switch o := obj.(type) {
-		// TODO(crawshaw): case *types.Const:
-		// TODO(crawshaw): case *types.Var:
-		case *types.Func:
-			g.genFunc(o, false)
-			funcs = append(funcs, o.Name())
-		case *types.TypeName:
-			named := o.Type().(*types.Named)
-			switch t := named.Underlying().(type) {
-			case *types.Struct:
-				g.genStruct(o, t)
-			case *types.Interface:
-				g.genInterface(o)
-			default:
-				g.errorf("%s: cannot generate binding for %s: %T", g.fset.Position(o.Pos()), o.Name(), t)
-				continue
-			}
-		default:
-			g.errorf("unsupported exported type: ", obj)
-		}
-	}
-
-	for i, name := range funcs {
-		g.Printf("private static final int CALL_%s = %d;\n", name, i+1)
-	}
-
-	g.Printf("private static final String DESCRIPTOR = %q;\n", g.pkg.Name())
-	g.Outdent()
-	g.Printf("}\n")
-
-	if len(g.err) > 0 {
-		return g.err
-	}
-	return nil
-}
diff --git a/go/src/golang.org/x/mobile/bind/java/Seq.java b/go/src/golang.org/x/mobile/bind/java/Seq.java
deleted file mode 100644
index 516a875..0000000
--- a/go/src/golang.org/x/mobile/bind/java/Seq.java
+++ /dev/null
@@ -1,251 +0,0 @@
-package go;
-
-import android.util.Log;
-import android.util.SparseArray;
-import android.util.SparseIntArray;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-// Seq is a sequence of machine-dependent encoded values.
-// Used by automatically generated language bindings to talk to Go.
-public class Seq {
-	@SuppressWarnings("UnusedDeclaration")
-	private long memptr; // holds C-allocated pointer
-
-	public Seq() {
-		ensure(64);
-	}
-
-	// Ensure that at least size bytes can be written to the Seq.
-	// Any existing data in the buffer is preserved.
-	public native void ensure(int size);
-
-	// Moves the internal buffer offset back to zero.
-	// Length and contents are maintained. Data can be read after a reset.
-	public native void resetOffset();
-
-	public native void log(String label);
-
-	public native byte readInt8();
-	public native short readInt16();
-	public native int readInt32();
-	public native long readInt64();
-	public long readInt() { return readInt64(); }
-
-	public native float readFloat32();
-	public native double readFloat64();
-	public native String readUTF16();
-	public native byte[] readByteArray();
-
-	public native void writeInt8(byte v);
-	public native void writeInt16(short v);
-	public native void writeInt32(int v);
-	public native void writeInt64(long v);
-	public void writeInt(long v) { writeInt64(v); }
-
-	public native void writeFloat32(float v);
-	public native void writeFloat64(double v);
-	public native void writeUTF16(String v);
-	public native void writeByteArray(byte[] v);
-
-	public void writeRef(Ref ref) {
-		writeInt32(ref.refnum);
-	}
-
-	public Ref readRef() {
-		int refnum = readInt32();
-		return tracker.get(refnum);
-	}
-
-	// Informs the Go ref tracker that Java is done with this ref.
-	static native void destroyRef(int refnum);
-
-	// createRef creates a Ref to a Java object.
-	public static Ref createRef(Seq.Object o) {
-		return tracker.createRef(o);
-	}
-
-	// sends a function invocation request to Go.
-	//
-	// Blocks until the function completes.
-	// If the request is for a method, the first element in src is
-	// a Ref to the receiver.
-	public static native void send(String descriptor, int code, Seq src, Seq dst);
-
-	// recv returns the next request from Go for a Java call.
-	static native void recv(Seq in, Receive params);
-
-	// recvRes sends the result of a Java call back to Go.
-	static native void recvRes(int handle, Seq out);
-
-	static final class Receive {
-		int refnum;
-		int code;
-		int handle;
-	}
-
-	protected void finalize() throws Throwable {
-		super.finalize();
-		free();
-	}
-	private native void free();
-
-	private static final ExecutorService receivePool = Executors.newCachedThreadPool();
-
-	// receive listens for callback requests from Go, invokes them on a thread
-	// pool and sends the responses.
-	public static void receive() {
-		Seq.Receive params = new Seq.Receive();
-		while (true) {
-			final Seq in = new Seq();
-			Seq.recv(in, params);
-
-			final int code = params.code;
-			final int handle = params.handle;
-			final int refnum = params.refnum;
-
-			if (code == -1) {
-				// Special signal from seq.FinalizeRef.
-				tracker.dec(refnum);
-				Seq out = new Seq();
-				Seq.recvRes(handle, out);
-				continue;
-			}
-
-			receivePool.execute(new Runnable() {
-				public void run() {
-					Ref r = tracker.get(refnum);
-					Seq out = new Seq();
-					r.obj.call(code, in, out);
-					Seq.recvRes(handle, out);
-				}
-			});
-		}
-	}
-
-	// An Object is a Java object that matches a Go object.
-	// The implementation of the object may be in either Java or Go,
-	// with a proxy instance in the other language passing calls
-	// through to the other language.
-	//
-	// Don't implement an Object directly. Instead, look for the
-	// generated abstract Stub.
-	public interface Object {
-		public Ref ref();
-		public void call(int code, Seq in, Seq out);
-	}
-
-	// A Ref is an object tagged with an integer for passing back and
-	// forth across the language boundary.
-	//
-	// A Ref may represent either an instance of a Java Object subclass,
-	// or an instance of a Go object. The explicit allocation of a Ref
-	// is used to pin Go object instances when they are passed to Java.
-	// The Go Seq library maintains a reference to the instance in a map
-	// keyed by the Ref number. When the JVM calls finalize, we ask Go
-	// to clear the entry in the map.
-	public static final class Ref {
-		// ref < 0: Go object tracked by Java
-		// ref > 0: Java object tracked by Go
-		int refnum;
-		public Seq.Object obj;
-
-		private Ref(int refnum, Seq.Object o) {
-			this.refnum = refnum;
-			this.obj = o;
-			tracker.inc(refnum);
-		}
-
-		@Override
-		protected void finalize() throws Throwable {
-			tracker.dec(refnum);
-			super.finalize();
-		}
-	}
-
-	static final RefTracker tracker = new RefTracker();
-
-	static final class RefTracker {
-		// Next Java object reference number.
-		//
-		// Reference numbers are positive for Java objects,
-		// and start, arbitrarily at a different offset to Go
-		// to make debugging by reading Seq hex a little easier.
-		private int next = 42; // next Java object ref
-
-		// TODO(crawshaw): We could cut down allocations for frequently
-		// sent Go objects by maintaining a map to weak references. This
-		// however, would require allocating two objects per reference
-		// instead of one. It also introduces weak references, the bane
-		// of any Java debugging session.
-		//
-		// When we have real code, examine the tradeoffs.
-
-		// Number of active references to a Go object. refnum -> count
-		private SparseIntArray goObjs = new SparseIntArray();
-
-		// Java objects that have been passed to Go. refnum -> Ref
-		// The Ref obj field is non-null.
-		// This map pins Java objects so they don't get GCed while the
-		// only reference to them is held by Go code.
-		private SparseArray<Ref> javaObjs = new SparseArray<Ref>();
-
-		// inc increments the reference count to a Go object.
-		synchronized void inc(int refnum) {
-			if (refnum > 0) {
-				return; // we don't count java objects
-			}
-			int count = goObjs.get(refnum);
-			if (count == Integer.MAX_VALUE) {
-				throw new RuntimeException("refnum " + refnum + " overflow");
-			}
-			goObjs.put(refnum, count+1);
-		}
-
-		// dec decrements the reference count to a Go object.
-		// If the count reaches zero, the Go reference tracker is informed.
-		synchronized void dec(int refnum) {
-			if (refnum > 0) {
-				// Java objects are removed on request of Go.
-				javaObjs.remove(refnum);
-				return;
-			}
-			int count = goObjs.get(refnum);
-			if (count == 0) {
-				throw new RuntimeException("refnum " + refnum + " underflow");
-			}
-			count--;
-			if (count <= 0) {
-				goObjs.delete(refnum);
-				Seq.destroyRef(refnum);
-			} else {
-				goObjs.put(refnum, count);
-			}
-		}
-
-		synchronized Ref createRef(Seq.Object o) {
-			// TODO(crawshaw): use single Ref for null.
-			if (next == Integer.MAX_VALUE) {
-				throw new RuntimeException("createRef overflow for " + o);
-			}
-			int refnum = next++;
-			Ref ref = new Ref(refnum, o);
-			javaObjs.put(refnum, ref);
-			return ref;
-		}
-
-		// get returns an existing Ref to either a Java or Go object.
-		// It may be the first time we have seen the Go object.
-		synchronized Ref get(int refnum) {
-			if (refnum > 0) {
-				Ref ref = javaObjs.get(refnum);
-				if (ref == null) {
-					throw new RuntimeException("unknown java Ref: "+refnum);
-				}
-				return ref;
-			}
-			return new Ref(refnum, null);
-		}
-	}
-}
diff --git a/go/src/golang.org/x/mobile/bind/java/SeqTest.java b/go/src/golang.org/x/mobile/bind/java/SeqTest.java
deleted file mode 100644
index bbe0d5c..0000000
--- a/go/src/golang.org/x/mobile/bind/java/SeqTest.java
+++ /dev/null
@@ -1,231 +0,0 @@
-package go;
-
-import android.test.suitebuilder.annotation.Suppress;
-import android.test.AndroidTestCase;
-import android.test.MoreAsserts;
-import java.util.Arrays;
-import java.util.Random;
-
-import go.testpkg.Testpkg;
-
-public class SeqTest extends AndroidTestCase {
-  protected void setUp() throws Exception {
-    super.setUp();
-    Go.init(this.getContext());
-  }
-
-  public void testAdd() {
-    long res = Testpkg.Add(3, 4);
-    assertEquals("Unexpected arithmetic failure", 7, res);
-  }
-
-  public void testShortString() {
-    String want = "a short string";
-    String got = Testpkg.StrDup(want);
-    assertEquals("Strings should match", want, got);
-  }
-
-  public void testLongString() {
-    StringBuilder b = new StringBuilder();
-    for (int i = 0; i < 128*1024; i++) {
-      b.append("0123456789");
-    }
-    String want = b.toString();
-    String got = Testpkg.StrDup(want);
-    assertEquals("Strings should match", want, got);
-  }
-
-  public void testUnicode() {
-    String want = "Hello, 世界";
-    String got = Testpkg.StrDup(want);
-    assertEquals("Strings should match", want, got);
-  }
-
-  public void testNilErr() throws Exception {
-    Testpkg.Err(null); // returns nil, no exception
-  }
-
-  public void testErr() {
-    String msg = "Go errors are dropped into the confusing space of exceptions";
-    try {
-      Testpkg.Err(msg);
-      fail("expected non-nil error to be turned into an exception");
-    } catch (Exception e) {
-      assertEquals("messages should match", msg, e.getMessage());
-    }
-  }
-
-  public void testByteArray() {
-    for (int i = 0; i < 2048; i++) {
-      if (i == 0) {
-        byte[] got = Testpkg.BytesAppend(null, null);
-        assertEquals("Bytes(null+null) should match", (byte[])null, got);
-        got = Testpkg.BytesAppend(new byte[0], new byte[0]);
-        assertEquals("Bytes(empty+empty) should match", (byte[])null, got);
-        continue;
-      }
-
-      byte[] want = new byte[i];
-      new Random().nextBytes(want);
-
-      byte[] s1 = null;
-      byte[] s2 = null;
-      if (i > 0) {
-        s1 = Arrays.copyOfRange(want, 0, 1);
-      }
-      if (i > 1) {
-        s2 = Arrays.copyOfRange(want, 1, i);
-      }
-      byte[] got = Testpkg.BytesAppend(s1, s2);
-      MoreAsserts.assertEquals("Bytes(len="+i+") should match", want, got);
-    }
-  }
-
-  // Test for golang.org/issue/9486.
-  public void testByteArrayAfterString() {
-    byte[] bytes = new byte[1024];
-    for (int i=0; i < bytes.length; i++) {
-           bytes[i] = 8;
-    }
-
-    String stuff = "stuff";
-    byte[] got = Testpkg.AppendToString(stuff, bytes);
-
-    try {
-      byte[] s = stuff.getBytes("UTF-8");
-      byte[] want = new byte[s.length + bytes.length];
-      System.arraycopy(s, 0, want, 0, s.length);
-      System.arraycopy(bytes, 0, want, s.length, bytes.length);
-      MoreAsserts.assertEquals("Bytes should match", want, got);
-    } catch (Exception e) {
-      fail("Cannot perform the test: " + e.toString());
-    }
-  }
-
-  public void testGoRefGC() {
-    Testpkg.S s = Testpkg.New();
-    runGC();
-    long collected = Testpkg.NumSCollected();
-    assertEquals("Only S should be pinned", 0, collected);
-
-    s = null;
-    runGC();
-    collected = Testpkg.NumSCollected();
-    assertEquals("S should be collected", 1, collected);
-  }
-
-  boolean finalizedAnI;
-
-  private class AnI extends Testpkg.I.Stub {
-    public void E() throws Exception {
-      throw new Exception("my exception from E");
-    }
-
-    boolean calledF;
-    public void F() {
-      calledF = true;
-    }
-
-    public Testpkg.I I() {
-      return this;
-    }
-
-    public Testpkg.S S() {
-      return Testpkg.New();
-    }
-
-    public long V() {
-      return 1234;
-    }
-
-    public long VE() throws Exception {
-      throw new Exception("my exception from VE");
-    }
-
-    public String name;
-
-    public String String() {
-      return name;
-    }
-
-    @Override
-    public void finalize() throws Throwable {
-      finalizedAnI = true;
-      super.finalize();
-    }
-  }
-  // TODO(hyangah): add tests for methods that take parameters.
-
-  public void testInterfaceMethodReturnsError() {
-    final AnI obj = new AnI();
-    try {
-      Testpkg.CallE(obj);
-      fail("Expecting exception but none was thrown.");
-    } catch (Exception e) {
-      assertEquals("Error messages should match", "my exception from E", e.getMessage());
-    }
-  }
-
-  public void testInterfaceMethodVoid() {
-    final AnI obj = new AnI();
-    Testpkg.CallF(obj);
-    assertTrue("Want AnI.F to be called", obj.calledF);
-  }
-
-  public void testInterfaceMethodReturnsInterface() {
-    AnI obj = new AnI();
-    obj.name = "testing AnI.I";
-    Testpkg.I i = Testpkg.CallI(obj);
-    assertEquals("Want AnI.I to return itself", i.String(), obj.String());
-  }
-
-  public void testInterfaceMethodReturnsStructPointer() {
-    final AnI obj = new AnI();
-    Testpkg.S s = Testpkg.CallS(obj);
-  }
-
-  public void testInterfaceMethodReturnsInt() {
-    final AnI obj = new AnI();
-    assertEquals("Values must match", 1234, Testpkg.CallV(obj));
-  }
-
-  public void testInterfaceMethodReturnsIntOrError() {
-    final AnI obj = new AnI();
-    try {
-      long v = Testpkg.CallVE(obj);
-      fail("Expecting exception but none was thrown and got value " + v);
-    } catch (Exception e) {
-      assertEquals("Error messages should match", "my exception from VE", e.getMessage());
-    }
-  }
-
-  /* Suppress this test for now; it's flaky or broken. */
-  @Suppress
-  public void testJavaRefGC() {
-    finalizedAnI = false;
-    AnI obj = new AnI();
-    runGC();
-    Testpkg.CallF(obj);
-    assertTrue("want F to be called", obj.calledF);
-    obj = null;
-    runGC();
-    assertTrue("want obj to be collected", finalizedAnI);
-  }
-
-  public void testJavaRefKeep() {
-    finalizedAnI = false;
-    AnI obj = new AnI();
-    Testpkg.Keep(obj);
-    obj = null;
-    runGC();
-    assertFalse("want obj to be kept live by Go", finalizedAnI);
-  }
-
-  private void runGC() {
-    System.gc();
-    System.runFinalization();
-    Testpkg.GC();
-    System.gc();
-    System.runFinalization();
-  }
-}
diff --git a/go/src/golang.org/x/mobile/bind/java/doc.go b/go/src/golang.org/x/mobile/bind/java/doc.go
deleted file mode 100644
index 77c4c26..0000000
--- a/go/src/golang.org/x/mobile/bind/java/doc.go
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2015 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 java implements the Java language bindings.
-//
-// See the design document (http://golang.org/s/gobind).
-//
-// Currently, this works only for android.
-package java
-
-// Init initializes communication with Java.
-// Typically called from the Start callback in app.Run.
-func Init() {
-	initSeq()
-}
diff --git a/go/src/golang.org/x/mobile/bind/java/javatest.go b/go/src/golang.org/x/mobile/bind/java/javatest.go
deleted file mode 100644
index 08b0e04..0000000
--- a/go/src/golang.org/x/mobile/bind/java/javatest.go
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2014 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.
-
-//+build ignore
-
-package main
-
-import (
-	"golang.org/x/mobile/app"
-	"golang.org/x/mobile/bind/java"
-
-	_ "golang.org/x/mobile/bind/java/testpkg/go_testpkg"
-)
-
-func main() {
-	app.Run(app.Callbacks{Start: java.Init})
-}
diff --git a/go/src/golang.org/x/mobile/bind/java/seq_android.c b/go/src/golang.org/x/mobile/bind/java/seq_android.c
deleted file mode 100644
index 168f8f5..0000000
--- a/go/src/golang.org/x/mobile/bind/java/seq_android.c
+++ /dev/null
@@ -1,430 +0,0 @@
-// Copyright 2014 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 <android/log.h>
-#include <errno.h>
-#include <jni.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <unistd.h>
-#include "seq_android.h"
-#include "_cgo_export.h"
-
-#define LOG_INFO(...) __android_log_print(ANDROID_LOG_INFO, "go/Seq", __VA_ARGS__)
-#define LOG_FATAL(...) __android_log_print(ANDROID_LOG_FATAL, "go/Seq", __VA_ARGS__)
-
-static jfieldID memptr_id;
-static jfieldID receive_refnum_id;
-static jfieldID receive_code_id;
-static jfieldID receive_handle_id;
-
-static jclass jbytearray_clazz;
-
-// pinned represents a pinned array to be released at the end of Send call.
-typedef struct pinned {
-	jobject ref;
-	void* ptr;
-	struct pinned* next;
-} pinned;
-
-// mem is a simple C equivalent of seq.Buffer.
-//
-// Many of the allocations around mem could be avoided to improve
-// function call performance, but the goal is to start simple.
-typedef struct mem {
-	uint8_t *buf;
-	uint32_t off;
-	uint32_t len;
-	uint32_t cap;
-
-	// TODO(hyangah): have it as a separate field outside mem?
-	pinned* pinned;
-} mem;
-
-// mem_ensure ensures that m has at least size bytes free.
-// If m is NULL, it is created.
-static mem *mem_ensure(mem *m, uint32_t size) {
-	if (m == NULL) {
-		m = (mem*)malloc(sizeof(mem));
-		if (m == NULL) {
-			LOG_FATAL("mem_ensure malloc failed");
-		}
-		m->cap = 0;
-		m->off = 0;
-		m->len = 0;
-		m->buf = NULL;
-		m->pinned = NULL;
-	}
-	if (m->cap > m->off+size) {
-		return m;
-	}
-	m->buf = (uint8_t*)realloc((void*)m->buf, m->off+size);
-	if (m->buf == NULL) {
-		LOG_FATAL("mem_ensure realloc failed, off=%d, size=%d", m->off, size);
-	}
-	m->cap = m->off+size;
-	return m;
-}
-
-static mem *mem_get(JNIEnv *env, jobject obj) {
-	// Storage space for pointer is always 64-bits, even on 32-bit
-	// machines. Cast to uintptr_t to avoid -Wint-to-pointer-cast.
-	return (mem*)(uintptr_t)(*env)->GetLongField(env, obj, memptr_id);
-}
-
-static uint32_t align(uint32_t offset, uint32_t alignment) {
-	uint32_t pad = offset % alignment;
-	if (pad > 0) {
-		pad = alignment-pad;
-	}
-	return pad+offset;
-}
-
-static uint8_t *mem_read(JNIEnv *env, jobject obj, uint32_t size, uint32_t alignment) {
-	if (size == 0) {
-		return NULL;
-	}
-	mem *m = mem_get(env, obj);
-	if (m == NULL) {
-		LOG_FATAL("mem_read on NULL mem");
-	}
-	uint32_t offset = align(m->off, alignment);
-
-	if (m->len-offset < size) {
-		LOG_FATAL("short read");
-	}
-	uint8_t *res = m->buf+offset;
-	m->off = offset+size;
-	return res;
-}
-
-uint8_t *mem_write(JNIEnv *env, jobject obj, uint32_t size, uint32_t alignment) {
-	mem *m = mem_get(env, obj);
-	if (m == NULL) {
-		LOG_FATAL("mem_write on NULL mem");
-	}
-	if (m->off != m->len) {
-		LOG_FATAL("write can only append to seq, size: (off=%d, len=%d, size=%d", m->off, m->len, size);
-	}
-	uint32_t offset = align(m->off, alignment);
-	uint32_t cap = m->cap;
-	while (offset+size > cap) {
-		cap *= 2;
-	}
-	m = mem_ensure(m, cap);
-	uint8_t *res = m->buf+offset;
-	m->off = offset+size;
-	m->len = offset+size;
-	return res;
-}
-
-static void *pin_array(JNIEnv *env, jobject obj, jobject arr) {
-	mem *m = mem_get(env, obj);
-	if (m == NULL) {
-		m = mem_ensure(m, 64);
-	}
-	pinned *p = (pinned*) malloc(sizeof(pinned));
-	if (p == NULL) {
-		LOG_FATAL("pin_array malloc failed");
-	}
-	p->ref = (*env)->NewGlobalRef(env, arr);
-
-	if ((*env)->IsInstanceOf(env, p->ref, jbytearray_clazz)) {
-		p->ptr = (*env)->GetByteArrayElements(env, p->ref, NULL);
-	} else {
-		LOG_FATAL("unsupported array type");
-	}
-
-	p->next = m->pinned;
-	m->pinned = p;
-	return p->ptr;
-}
-
-static void unpin_arrays(JNIEnv *env, mem *m) {
-	pinned* p = m->pinned;
-	while (p != NULL) {
-		if ((*env)->IsInstanceOf(env, p->ref, jbytearray_clazz)) {
-			(*env)->ReleaseByteArrayElements(env, p->ref, (jbyte*)p->ptr, JNI_ABORT);
-		} else {
-			LOG_FATAL("invalid array type");
-		}
-
-		(*env)->DeleteGlobalRef(env, p->ref);
-
-		pinned* o = p;
-		p = p->next;
-		free(o);
-	}
-	m->pinned = NULL;
-}
-
-
-static jfieldID find_field(JNIEnv *env, const char *class_name, const char *field_name, const char *field_type) {
-	jclass clazz = (*env)->FindClass(env, class_name);
-	if (clazz == NULL) {
-		LOG_FATAL("cannot find %s", class_name);
-		return NULL;
-	}
-	jfieldID id = (*env)->GetFieldID(env, clazz, field_name , field_type);
-	if(id == NULL) {
-		LOG_FATAL("no %s/%s field", field_name, field_type);
-		return NULL;
-	}
-	return id;
-}
-
-static jclass find_class(JNIEnv *env, const char *class_name) {
-	jclass clazz = (*env)->FindClass(env, class_name);
-	if (clazz == NULL) {
-		LOG_FATAL("cannot find %s", class_name);
-		return NULL;
-	}
-	return (*env)->NewGlobalRef(env, clazz);
-}
-
-void init_seq(void *javavm) {
-	JavaVM *vm = (JavaVM*)javavm;
-	JNIEnv *env;
-	int res = (*vm)->GetEnv(vm, (void**)&env, JNI_VERSION_1_6);
-	if (res == JNI_EDETACHED) {
-		JavaVMAttachArgs args;
-		args.version = JNI_VERSION_1_6;
-		if ((*vm)->AttachCurrentThread(vm, &env, &args) != 0) {
-			LOG_FATAL("cannot attach to current_vm");
-		}
-	} else if (res != 0) {
-		LOG_FATAL("bad vm env: %d", res);
-	}
-
-	memptr_id = find_field(env, "go/Seq", "memptr", "J");
-	receive_refnum_id = find_field(env, "go/Seq$Receive", "refnum", "I");
-	receive_handle_id = find_field(env, "go/Seq$Receive", "handle", "I");
-	receive_code_id = find_field(env, "go/Seq$Receive", "code", "I");
-
-	jbytearray_clazz = find_class(env, "[B");
-
-	LOG_INFO("loaded go/Seq");
-
-	if (res == JNI_EDETACHED) {
-		(*vm)->DetachCurrentThread(vm);
-	}
-}
-
-JNIEXPORT void JNICALL
-Java_go_Seq_ensure(JNIEnv *env, jobject obj, jint size) {
-	mem *m = mem_get(env, obj);
-	if (m == NULL || m->off+size > m->cap) {
-		m = mem_ensure(m, size);
-		(*env)->SetLongField(env, obj, memptr_id, (jlong)(uintptr_t)m);
-	}
-}
-
-JNIEXPORT void JNICALL
-Java_go_Seq_free(JNIEnv *env, jobject obj) {
-	mem *m = mem_get(env, obj);
-	if (m != NULL) {
-		unpin_arrays(env, m);
-		free((void*)m->buf);
-		free((void*)m);
-	}
-}
-
-#define MEM_READ(obj, ty) ((ty*)mem_read(env, obj, sizeof(ty), sizeof(ty)))
-
-JNIEXPORT jbyte JNICALL
-Java_go_Seq_readInt8(JNIEnv *env, jobject obj) {
-	uint8_t *v = MEM_READ(obj, uint8_t);
-	if (v == NULL) {
-		return 0;
-	}
-	return *v;
-}
-
-JNIEXPORT jshort JNICALL
-Java_go_Seq_readInt16(JNIEnv *env, jobject obj) {
-	int16_t *v = MEM_READ(obj, int16_t);
-	return v == NULL ? 0 : *v;
-}
-
-JNIEXPORT jint JNICALL
-Java_go_Seq_readInt32(JNIEnv *env, jobject obj) {
-	int32_t *v = MEM_READ(obj, int32_t);
-	return v == NULL ? 0 : *v;
-}
-
-JNIEXPORT jlong JNICALL
-Java_go_Seq_readInt64(JNIEnv *env, jobject obj) {
-	int64_t *v = MEM_READ(obj, int64_t);
-	return v == NULL ? 0 : *v;
-}
-
-JNIEXPORT jfloat JNICALL
-Java_go_Seq_readFloat32(JNIEnv *env, jobject obj) {
-	float *v = MEM_READ(obj, float);
-	return v == NULL ? 0 : *v;
-}
-
-JNIEXPORT jdouble JNICALL
-Java_go_Seq_readFloat64(JNIEnv *env, jobject obj) {
-	double *v = MEM_READ(obj, double);
-	return v == NULL ? 0 : *v;
-}
-
-JNIEXPORT jstring JNICALL
-Java_go_Seq_readUTF16(JNIEnv *env, jobject obj) {
-	int32_t size = *MEM_READ(obj, int32_t);
-	if (size == 0) {
-		return NULL;
-	}
-	return (*env)->NewString(env, (jchar*)mem_read(env, obj, 2*size, 1), size);
-}
-
-JNIEXPORT jbyteArray JNICALL
-Java_go_Seq_readByteArray(JNIEnv *env, jobject obj) {
-	// Send the (array length, pointer) pair encoded as two int64.
-	// The pointer value is omitted if array length is 0.
-	jlong size = Java_go_Seq_readInt64(env, obj);
-	if (size == 0) {
-		return NULL;
-	}
-	jbyteArray res = (*env)->NewByteArray(env, size);
-	jlong ptr = Java_go_Seq_readInt64(env, obj);
-	(*env)->SetByteArrayRegion(env, res, 0, size, (jbyte*)(intptr_t)(ptr));
-	return res;
-}
-
-#define MEM_WRITE(ty) (*(ty*)mem_write(env, obj, sizeof(ty), sizeof(ty)))
-
-JNIEXPORT void JNICALL
-Java_go_Seq_writeInt8(JNIEnv *env, jobject obj, jbyte v) {
-	MEM_WRITE(int8_t) = v;
-}
-
-JNIEXPORT void JNICALL
-Java_go_Seq_writeInt16(JNIEnv *env, jobject obj, jshort v) {
-	MEM_WRITE(int16_t) = v;
-}
-
-JNIEXPORT void JNICALL
-Java_go_Seq_writeInt32(JNIEnv *env, jobject obj, jint v) {
-	MEM_WRITE(int32_t) = v;
-}
-
-JNIEXPORT void JNICALL
-Java_go_Seq_writeInt64(JNIEnv *env, jobject obj, jlong v) {
-	MEM_WRITE(int64_t) = v;
-}
-
-JNIEXPORT void JNICALL
-Java_go_Seq_writeFloat32(JNIEnv *env, jobject obj, jfloat v) {
-	MEM_WRITE(float) = v;
-}
-
-JNIEXPORT void JNICALL
-Java_go_Seq_writeFloat64(JNIEnv *env, jobject obj, jdouble v) {
-	MEM_WRITE(double) = v;
-}
-
-JNIEXPORT void JNICALL
-Java_go_Seq_writeUTF16(JNIEnv *env, jobject obj, jstring v) {
-	if (v == NULL) {
-		MEM_WRITE(int32_t) = 0;
-		return;
-	}
-	int32_t size = (*env)->GetStringLength(env, v);
-	MEM_WRITE(int32_t) = size;
-	(*env)->GetStringRegion(env, v, 0, size, (jchar*)mem_write(env, obj, 2*size, 1));
-}
-
-JNIEXPORT void JNICALL
-Java_go_Seq_writeByteArray(JNIEnv *env, jobject obj, jbyteArray v) {
-	// For Byte array, we pass only the (array length, pointer) pair
-	// encoded as two int64 values. If the array length is 0,
-	// the pointer value is omitted.
-	if (v == NULL) {
-		MEM_WRITE(int64_t) = 0;
-		return;
-	}
-
-	jsize len = (*env)->GetArrayLength(env, v);
-	MEM_WRITE(int64_t) = len;
-	if (len == 0) {
-		return;
-	}
-
-	jbyte* b = pin_array(env, obj, v);
-	MEM_WRITE(int64_t) = (jlong)(uintptr_t)b;
-}
-
-JNIEXPORT void JNICALL
-Java_go_Seq_resetOffset(JNIEnv *env, jobject obj) {
-	mem *m = mem_get(env, obj);
-	if (m == NULL) {
-		LOG_FATAL("resetOffset on NULL mem");
-	}
-	m->off = 0;
-}
-
-JNIEXPORT void JNICALL
-Java_go_Seq_log(JNIEnv *env, jobject obj, jstring v) {
-	mem *m = mem_get(env, obj);
-	const char *label = (*env)->GetStringUTFChars(env, v, NULL);
-	if (label == NULL) {
-		LOG_FATAL("log GetStringUTFChars failed");
-	}
-	if (m == NULL) {
-		LOG_INFO("%s: mem=NULL", label);
-	} else {
-		LOG_INFO("%s: mem{off=%d, len=%d, cap=%d}", label, m->off, m->len, m->cap);
-	}
-	(*env)->ReleaseStringUTFChars(env, v, label);
-}
-
-JNIEXPORT void JNICALL
-Java_go_Seq_destroyRef(JNIEnv *env, jclass clazz, jint refnum) {
-	DestroyRef(refnum);
-}
-
-JNIEXPORT void JNICALL
-Java_go_Seq_send(JNIEnv *env, jclass clazz, jstring descriptor, jint code, jobject src_obj, jobject dst_obj) {
-	mem *src = mem_get(env, src_obj);
-	if (src == NULL) {
-		LOG_FATAL("send src is NULL");
-	}
-	mem *dst = mem_get(env, dst_obj);
-	if (dst == NULL) {
-		LOG_FATAL("send dst is NULL");
-	}
-
-	GoString desc;
-	desc.p = (char*)(*env)->GetStringUTFChars(env, descriptor, NULL);
-	if (desc.p == NULL) {
-		LOG_FATAL("send GetStringUTFChars failed");
-	}
-	desc.n = (*env)->GetStringUTFLength(env, descriptor);
-	Send(desc, (GoInt)code, src->buf, src->len, &dst->buf, &dst->len);
-	(*env)->ReleaseStringUTFChars(env, descriptor, desc.p);
-	unpin_arrays(env, src);  // assume 'src' is no longer needed.
-}
-
-JNIEXPORT void JNICALL
-Java_go_Seq_recv(JNIEnv *env, jclass clazz, jobject in_obj, jobject receive) {
-	mem *in = mem_get(env, in_obj);
-	if (in == NULL) {
-		LOG_FATAL("recv in is NULL");
-	}
-	struct Recv_return ret = Recv(&in->buf, &in->len);
-	(*env)->SetIntField(env, receive, receive_refnum_id, ret.r0);
-	(*env)->SetIntField(env, receive, receive_code_id, ret.r1);
-	(*env)->SetIntField(env, receive, receive_handle_id, ret.r2);
-}
-
-JNIEXPORT void JNICALL
-Java_go_Seq_recvRes(JNIEnv *env, jclass clazz, jint handle, jobject out_obj) {
-	mem *out = mem_get(env, out_obj);
-	if (out == NULL) {
-		LOG_FATAL("recvRes out is NULL");
-	}
-	RecvRes((int32_t)handle, out->buf, out->len);
-}
diff --git a/go/src/golang.org/x/mobile/bind/java/seq_android.go b/go/src/golang.org/x/mobile/bind/java/seq_android.go
deleted file mode 100644
index 62f4f2d..0000000
--- a/go/src/golang.org/x/mobile/bind/java/seq_android.go
+++ /dev/null
@@ -1,178 +0,0 @@
-// Copyright 2014 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 java // import "golang.org/x/mobile/bind/java"
-
-//#cgo LDFLAGS: -llog
-//#include <android/log.h>
-//#include <stdint.h>
-//#include <string.h>
-//#include "seq_android.h"
-import "C"
-import (
-	"fmt"
-	"sync"
-	"unsafe"
-
-	"golang.org/x/mobile/app"
-	"golang.org/x/mobile/bind/seq"
-)
-
-const maxSliceLen = 1<<31 - 1
-
-const debug = false
-
-// Send is called by Java to send a request to run a Go function.
-//export Send
-func Send(descriptor string, code int, req *C.uint8_t, reqlen C.size_t, res **C.uint8_t, reslen *C.size_t) {
-	fn := seq.Registry[descriptor][code]
-	if fn == nil {
-		panic(fmt.Sprintf("invalid descriptor(%s) and code(0x%x)", descriptor, code))
-	}
-	in := new(seq.Buffer)
-	if reqlen > 0 {
-		in.Data = (*[maxSliceLen]byte)(unsafe.Pointer(req))[:reqlen]
-	}
-	out := new(seq.Buffer)
-	fn(out, in)
-	// BUG(hyangah): the function returning a go byte slice (so fn writes a pointer into 'out') is unsafe.
-	// After fn is complete here, Go runtime is free to collect or move the pointed byte slice
-	// contents. (Explicitly calling runtime.GC here will surface the problem?)
-	// Without pinning support from Go side, it will be hard to fix it without extra copying.
-
-	seqToBuf(res, reslen, out)
-}
-
-// DestroyRef is called by Java to inform Go it is done with a reference.
-//export DestroyRef
-func DestroyRef(refnum C.int32_t) {
-	seq.Delete(int32(refnum))
-}
-
-type request struct {
-	ref    *seq.Ref
-	handle int32
-	code   int
-	in     *seq.Buffer
-}
-
-var recv struct {
-	sync.Mutex
-	cond sync.Cond // signals req is not empty
-	req  []request
-	next int32 // next handle value
-}
-
-var res struct {
-	sync.Mutex
-	cond sync.Cond             // signals a response is filled in
-	out  map[int32]*seq.Buffer // handle -> output
-}
-
-func init() {
-	recv.cond.L = &recv.Mutex
-	recv.next = 411 // arbitrary starting point distinct from Go and Java obj ref nums
-
-	res.cond.L = &res.Mutex
-	res.out = make(map[int32]*seq.Buffer)
-}
-
-func initSeq() {
-	vm := app.State.(interface {
-		JavaVM() unsafe.Pointer
-	}).JavaVM()
-	C.init_seq(vm)
-}
-
-func seqToBuf(bufptr **C.uint8_t, lenptr *C.size_t, buf *seq.Buffer) {
-	if false {
-		fmt.Printf("seqToBuf tag 1, len(buf.Data)=%d, *lenptr=%d\n", len(buf.Data), *lenptr)
-	}
-	if len(buf.Data) == 0 {
-		*lenptr = 0
-		return
-	}
-	if len(buf.Data) > int(*lenptr) {
-		// TODO(crawshaw): realloc
-		C.free(unsafe.Pointer(*bufptr))
-		m := C.malloc(C.size_t(len(buf.Data)))
-		if uintptr(m) == 0 {
-			panic(fmt.Sprintf("malloc failed, size=%d", len(buf.Data)))
-		}
-		*bufptr = (*C.uint8_t)(m)
-		*lenptr = C.size_t(len(buf.Data))
-	}
-	C.memcpy(unsafe.Pointer(*bufptr), unsafe.Pointer(&buf.Data[0]), C.size_t(len(buf.Data)))
-}
-
-// Recv is called by Java in a loop and blocks until Go requests a callback
-// be executed by the JVM. Then a request object is returned, along with a
-// handle for the host to respond via RecvRes.
-//export Recv
-func Recv(in **C.uint8_t, inlen *C.size_t) (ref, code, handle C.int32_t) {
-	recv.Lock()
-	for len(recv.req) == 0 {
-		recv.cond.Wait()
-	}
-	req := recv.req[0]
-	recv.req = recv.req[1:]
-	seqToBuf(in, inlen, req.in)
-	recv.Unlock()
-
-	return C.int32_t(req.ref.Num), C.int32_t(req.code), C.int32_t(req.handle)
-}
-
-// RecvRes is called by JNI to return the result of a requested callback.
-//export RecvRes
-func RecvRes(handle C.int32_t, out *C.uint8_t, outlen C.size_t) {
-	outBuf := &seq.Buffer{
-		Data: make([]byte, outlen),
-	}
-	copy(outBuf.Data, (*[maxSliceLen]byte)(unsafe.Pointer(out))[:outlen])
-
-	res.Lock()
-	res.out[int32(handle)] = outBuf
-	res.Unlock()
-	res.cond.Broadcast()
-}
-
-// transact calls a method on a Java object instance.
-// It blocks until the call is complete.
-func transact(ref *seq.Ref, code int, in *seq.Buffer) *seq.Buffer {
-	recv.Lock()
-	if recv.next == 1<<31-1 {
-		panic("recv handle overflow")
-	}
-	handle := recv.next
-	recv.next++
-	recv.req = append(recv.req, request{
-		ref:    ref,
-		code:   code,
-		in:     in,
-		handle: handle,
-	})
-	recv.Unlock()
-	recv.cond.Signal()
-
-	res.Lock()
-	for res.out[handle] == nil {
-		res.cond.Wait()
-	}
-	out := res.out[handle]
-	delete(res.out, handle)
-	res.Unlock()
-
-	return out
-}
-
-func init() {
-	seq.FinalizeRef = func(ref *seq.Ref) {
-		if ref.Num < 0 {
-			panic(fmt.Sprintf("not a Java ref: %d", ref.Num))
-		}
-		transact(ref, -1, new(seq.Buffer))
-	}
-
-	seq.Transact = transact
-}
diff --git a/go/src/golang.org/x/mobile/bind/java/seq_android.h b/go/src/golang.org/x/mobile/bind/java/seq_android.h
deleted file mode 100644
index e56f50b..0000000
--- a/go/src/golang.org/x/mobile/bind/java/seq_android.h
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright 2014 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.
-
-void init_seq(void* vm);
diff --git a/go/src/golang.org/x/mobile/bind/java/test.bash b/go/src/golang.org/x/mobile/bind/java/test.bash
deleted file mode 100755
index 6c1944a..0000000
--- a/go/src/golang.org/x/mobile/bind/java/test.bash
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2014 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.
-
-set -e
-
-function die() {
-  echo "FAIL: $1"
-  exit 1
-}
-
-if [ ! -f test.bash ]; then
-  die 'test.bash must be run from $GOPATH/src/golang.org/x/mobile/bind/java'
-fi
-
-function cleanup() {
-  rm -rf "$ANDROID_APP"
-}
-
-if [ -z "$TMPDIR" ]; then
-	TMPDIR="/tmp"
-fi
-
-if [ -z "$ANDROID_APP" ]; then
-	ANDROID_APP=`mktemp -d ${TMPDIR}/android-java.XXXXX` || die 'failed to create a temporary directory'
-	echo "Temporary directory for test: $ANDROID_APP"
-	trap cleanup EXIT
-fi
-
-# Create an android project for test.
-# TODO(hyangah): use android update lib-project if the $ANDROID_APP directory
-# already exists.
-android create lib-project -n BindJavaTest \
-  -t "android-19"  -p $ANDROID_APP -k go.testpkg -g -v 0.12.+
-
-# Add the necessary Java source files (Seq.java and app/Go.java)) in to the
-# project directory. (go package)
-mkdir -p $ANDROID_APP/src/main/java/go
-ln -sf $PWD/Seq.java $ANDROID_APP/src/main/java/go
-ln -sf $PWD/../../app/*.java $ANDROID_APP/src/main/java/go
-
-# Add the testpkg java file (output of gobind -lang=java) necessary for SeqTest.java.
-mkdir -p $ANDROID_APP/src/main/java/go/testpkg
-ln -sf $PWD/testpkg/Testpkg.java $ANDROID_APP/src/main/java/go/testpkg
-
-# Add the compiled jni shared library under src/main/jniLibs/armeabi directory.
-mkdir -p $ANDROID_APP/src/main/jniLibs/armeabi
-CGO_ENABLED=1 GOOS=android GOARCH=arm GOARM=7 \
-  go build -ldflags="-shared" \
-  -o $ANDROID_APP/src/main/jniLibs/armeabi/libgojni.so \
-  javatest.go
-
-# Add the test file under androidTest directory.
-mkdir -p $ANDROID_APP/src/androidTest/java/go
-ln -sf $PWD/SeqTest.java $ANDROID_APP/src/androidTest/java/go
-
-# Build the test apk. ($ANDROID_APP/build/outputs/apk).
-cd $ANDROID_APP
-
-# If there is no connected device, this will fail after creating the test apk.
-# The apk is located in $ANDROID_APP/build/outputs/apk directory.
-./gradlew connectedAndroidTest && echo "PASS" && exit 0
-
-# TODO(hyangah): copy the gradle's test output directory in case of test failure?
-
-# TODO(hyangah): gradlew build
-# Currently build fails due to a lint error. Disable lint check or
-# specify the minSdkVersion in gradle.build to avoid the lint error.
diff --git a/go/src/golang.org/x/mobile/bind/java/testpkg/Testpkg.java b/go/src/golang.org/x/mobile/bind/java/testpkg/Testpkg.java
deleted file mode 100644
index d4fd2b9..0000000
--- a/go/src/golang.org/x/mobile/bind/java/testpkg/Testpkg.java
+++ /dev/null
@@ -1,401 +0,0 @@
-// Java Package testpkg is a proxy for talking to a Go program.
-//   gobind -lang=java golang.org/x/mobile/bind/java/testpkg
-//
-// File is generated by gobind. Do not edit.
-package go.testpkg;
-
-import go.Seq;
-
-public abstract class Testpkg {
-    private Testpkg() {} // uninstantiable
-    
-    public static long Add(long x, long y) {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        long _result;
-        _in.writeInt(x);
-        _in.writeInt(y);
-        Seq.send(DESCRIPTOR, CALL_Add, _in, _out);
-        _result = _out.readInt();
-        return _result;
-    }
-    
-    public static byte[] AppendToString(String str, byte[] someBytes) {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        byte[] _result;
-        _in.writeUTF16(str);
-        _in.writeByteArray(someBytes);
-        Seq.send(DESCRIPTOR, CALL_AppendToString, _in, _out);
-        _result = _out.readByteArray();
-        return _result;
-    }
-    
-    public static byte[] BytesAppend(byte[] a, byte[] b) {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        byte[] _result;
-        _in.writeByteArray(a);
-        _in.writeByteArray(b);
-        Seq.send(DESCRIPTOR, CALL_BytesAppend, _in, _out);
-        _result = _out.readByteArray();
-        return _result;
-    }
-    
-    public static void CallE(I i) throws Exception {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        _in.writeRef(i.ref());
-        Seq.send(DESCRIPTOR, CALL_CallE, _in, _out);
-        String _err = _out.readUTF16();
-        if (_err != null) {
-            throw new Exception(_err);
-        }
-    }
-    
-    public static void CallF(I i) {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        _in.writeRef(i.ref());
-        Seq.send(DESCRIPTOR, CALL_CallF, _in, _out);
-    }
-    
-    public static I CallI(I i) {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        I _result;
-        _in.writeRef(i.ref());
-        Seq.send(DESCRIPTOR, CALL_CallI, _in, _out);
-        _result = new I.Proxy(_out.readRef());
-        return _result;
-    }
-    
-    public static S CallS(I i) {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        S _result;
-        _in.writeRef(i.ref());
-        Seq.send(DESCRIPTOR, CALL_CallS, _in, _out);
-        _result = new S(_out.readRef());
-        return _result;
-    }
-    
-    public static long CallV(I i) {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        long _result;
-        _in.writeRef(i.ref());
-        Seq.send(DESCRIPTOR, CALL_CallV, _in, _out);
-        _result = _out.readInt();
-        return _result;
-    }
-    
-    public static long CallVE(I i) throws Exception {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        long _result;
-        _in.writeRef(i.ref());
-        Seq.send(DESCRIPTOR, CALL_CallVE, _in, _out);
-        _result = _out.readInt();
-        String _err = _out.readUTF16();
-        if (_err != null) {
-            throw new Exception(_err);
-        }
-        return _result;
-    }
-    
-    public static void Err(String s) throws Exception {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        _in.writeUTF16(s);
-        Seq.send(DESCRIPTOR, CALL_Err, _in, _out);
-        String _err = _out.readUTF16();
-        if (_err != null) {
-            throw new Exception(_err);
-        }
-    }
-    
-    public static void GC() {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        Seq.send(DESCRIPTOR, CALL_GC, _in, _out);
-    }
-    
-    public interface I extends go.Seq.Object {
-        public void E() throws Exception;
-        
-        public void F();
-        
-        public I I();
-        
-        public S S();
-        
-        public String String();
-        
-        public long V();
-        
-        public long VE() throws Exception;
-        
-        public static abstract class Stub implements I {
-            static final String DESCRIPTOR = "go.testpkg.I";
-            
-            private final go.Seq.Ref ref;
-            public Stub() {
-                ref = go.Seq.createRef(this);
-            }
-            
-            public go.Seq.Ref ref() { return ref; }
-            
-            public void call(int code, go.Seq in, go.Seq out) {
-                switch (code) {
-                case Proxy.CALL_E: {
-                    try {
-                        this.E();
-                        out.writeUTF16(null);
-                    } catch (Exception e) {
-                        out.writeUTF16(e.getMessage());
-                    }
-                    return;
-                }
-                case Proxy.CALL_F: {
-                    this.F();
-                    return;
-                }
-                case Proxy.CALL_I: {
-                    I result = this.I();
-                    out.writeRef(result.ref());
-                    return;
-                }
-                case Proxy.CALL_S: {
-                    S result = this.S();
-                    out.writeRef(result.ref());
-                    return;
-                }
-                case Proxy.CALL_String: {
-                    String result = this.String();
-                    out.writeUTF16(result);
-                    return;
-                }
-                case Proxy.CALL_V: {
-                    long result = this.V();
-                    out.writeInt(result);
-                    return;
-                }
-                case Proxy.CALL_VE: {
-                    try {
-                        long result = this.VE();
-                        out.writeInt(result);
-                        out.writeUTF16(null);
-                    } catch (Exception e) {
-                        long result = 0;
-                        out.writeInt(result);
-                        out.writeUTF16(e.getMessage());
-                    }
-                    return;
-                }
-                default:
-                    throw new RuntimeException("unknown code: "+ code);
-                }
-            }
-        }
-        
-        static final class Proxy implements I {
-            static final String DESCRIPTOR = Stub.DESCRIPTOR;
-        
-            private go.Seq.Ref ref;
-        
-            Proxy(go.Seq.Ref ref) { this.ref = ref; }
-        
-            public go.Seq.Ref ref() { return ref; }
-        
-            public void call(int code, go.Seq in, go.Seq out) {
-                throw new RuntimeException("cycle: cannot call proxy");
-            }
-        
-            public void E() throws Exception {
-                go.Seq _in = new go.Seq();
-                go.Seq _out = new go.Seq();
-                _in.writeRef(ref);
-                Seq.send(DESCRIPTOR, CALL_E, _in, _out);
-                String _err = _out.readUTF16();
-                if (_err != null) {
-                    throw new Exception(_err);
-                }
-            }
-            
-            public void F() {
-                go.Seq _in = new go.Seq();
-                go.Seq _out = new go.Seq();
-                _in.writeRef(ref);
-                Seq.send(DESCRIPTOR, CALL_F, _in, _out);
-            }
-            
-            public I I() {
-                go.Seq _in = new go.Seq();
-                go.Seq _out = new go.Seq();
-                I _result;
-                _in.writeRef(ref);
-                Seq.send(DESCRIPTOR, CALL_I, _in, _out);
-                _result = new I.Proxy(_out.readRef());
-                return _result;
-            }
-            
-            public S S() {
-                go.Seq _in = new go.Seq();
-                go.Seq _out = new go.Seq();
-                S _result;
-                _in.writeRef(ref);
-                Seq.send(DESCRIPTOR, CALL_S, _in, _out);
-                _result = new S(_out.readRef());
-                return _result;
-            }
-            
-            public String String() {
-                go.Seq _in = new go.Seq();
-                go.Seq _out = new go.Seq();
-                String _result;
-                _in.writeRef(ref);
-                Seq.send(DESCRIPTOR, CALL_String, _in, _out);
-                _result = _out.readUTF16();
-                return _result;
-            }
-            
-            public long V() {
-                go.Seq _in = new go.Seq();
-                go.Seq _out = new go.Seq();
-                long _result;
-                _in.writeRef(ref);
-                Seq.send(DESCRIPTOR, CALL_V, _in, _out);
-                _result = _out.readInt();
-                return _result;
-            }
-            
-            public long VE() throws Exception {
-                go.Seq _in = new go.Seq();
-                go.Seq _out = new go.Seq();
-                long _result;
-                _in.writeRef(ref);
-                Seq.send(DESCRIPTOR, CALL_VE, _in, _out);
-                _result = _out.readInt();
-                String _err = _out.readUTF16();
-                if (_err != null) {
-                    throw new Exception(_err);
-                }
-                return _result;
-            }
-            
-            static final int CALL_E = 0x10a;
-            static final int CALL_F = 0x20a;
-            static final int CALL_I = 0x30a;
-            static final int CALL_S = 0x40a;
-            static final int CALL_String = 0x50a;
-            static final int CALL_V = 0x60a;
-            static final int CALL_VE = 0x70a;
-        }
-    }
-    
-    public static void Keep(I i) {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        _in.writeRef(i.ref());
-        Seq.send(DESCRIPTOR, CALL_Keep, _in, _out);
-    }
-    
-    public static S New() {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        S _result;
-        Seq.send(DESCRIPTOR, CALL_New, _in, _out);
-        _result = new S(_out.readRef());
-        return _result;
-    }
-    
-    public static long NumSCollected() {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        long _result;
-        Seq.send(DESCRIPTOR, CALL_NumSCollected, _in, _out);
-        _result = _out.readInt();
-        return _result;
-    }
-    
-    public static final class S implements go.Seq.Object {
-        private static final String DESCRIPTOR = "go.testpkg.S";
-        private static final int CALL_F = 0x00c;
-        private static final int CALL_String = 0x10c;
-        
-        private go.Seq.Ref ref;
-        
-        private S(go.Seq.Ref ref) { this.ref = ref; }
-        
-        public go.Seq.Ref ref() { return ref; }
-        
-        public void call(int code, go.Seq in, go.Seq out) {
-            throw new RuntimeException("internal error: cycle: cannot call concrete proxy");
-        }
-        
-        
-        public void F() {
-            go.Seq _in = new go.Seq();
-            go.Seq _out = new go.Seq();
-            _in.writeRef(ref);
-            Seq.send(DESCRIPTOR, CALL_F, _in, _out);
-        }
-        
-        public String String() {
-            go.Seq _in = new go.Seq();
-            go.Seq _out = new go.Seq();
-            String _result;
-            _in.writeRef(ref);
-            Seq.send(DESCRIPTOR, CALL_String, _in, _out);
-            _result = _out.readUTF16();
-            return _result;
-        }
-        
-        @Override public boolean equals(Object o) {
-            if (o == null || !(o instanceof S)) {
-                return false;
-            }
-            S that = (S)o;
-            return true;
-        }
-        
-        @Override public int hashCode() {
-            return java.util.Arrays.hashCode(new Object[] {});
-        }
-        
-        @Override public String toString() {
-            StringBuilder b = new StringBuilder();
-            b.append("S").append("{");
-            return b.append("}").toString();
-        }
-        
-    }
-    
-    public static String StrDup(String s) {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        String _result;
-        _in.writeUTF16(s);
-        Seq.send(DESCRIPTOR, CALL_StrDup, _in, _out);
-        _result = _out.readUTF16();
-        return _result;
-    }
-    
-    private static final int CALL_Add = 1;
-    private static final int CALL_AppendToString = 2;
-    private static final int CALL_BytesAppend = 3;
-    private static final int CALL_CallE = 4;
-    private static final int CALL_CallF = 5;
-    private static final int CALL_CallI = 6;
-    private static final int CALL_CallS = 7;
-    private static final int CALL_CallV = 8;
-    private static final int CALL_CallVE = 9;
-    private static final int CALL_Err = 10;
-    private static final int CALL_GC = 11;
-    private static final int CALL_Keep = 12;
-    private static final int CALL_New = 13;
-    private static final int CALL_NumSCollected = 14;
-    private static final int CALL_StrDup = 15;
-    private static final String DESCRIPTOR = "testpkg";
-}
diff --git a/go/src/golang.org/x/mobile/bind/java/testpkg/go_testpkg/go_testpkg.go b/go/src/golang.org/x/mobile/bind/java/testpkg/go_testpkg/go_testpkg.go
deleted file mode 100644
index 9762a42..0000000
--- a/go/src/golang.org/x/mobile/bind/java/testpkg/go_testpkg/go_testpkg.go
+++ /dev/null
@@ -1,332 +0,0 @@
-// Package go_testpkg is an autogenerated binder stub for package testpkg.
-//   gobind -lang=go golang.org/x/mobile/bind/java/testpkg
-//
-// File is generated by gobind. Do not edit.
-package go_testpkg
-
-import (
-	"golang.org/x/mobile/bind/java/testpkg"
-	"golang.org/x/mobile/bind/seq"
-)
-
-func proxy_Add(out, in *seq.Buffer) {
-	param_x := in.ReadInt()
-	param_y := in.ReadInt()
-	res := testpkg.Add(param_x, param_y)
-	out.WriteInt(res)
-}
-
-func proxy_AppendToString(out, in *seq.Buffer) {
-	param_str := in.ReadUTF16()
-	param_someBytes := in.ReadByteArray()
-	res := testpkg.AppendToString(param_str, param_someBytes)
-	out.WriteByteArray(res)
-}
-
-func proxy_BytesAppend(out, in *seq.Buffer) {
-	param_a := in.ReadByteArray()
-	param_b := in.ReadByteArray()
-	res := testpkg.BytesAppend(param_a, param_b)
-	out.WriteByteArray(res)
-}
-
-func proxy_CallE(out, in *seq.Buffer) {
-	var param_i testpkg.I
-	param_i_ref := in.ReadRef()
-	if param_i_ref.Num < 0 { // go object
-		param_i = param_i_ref.Get().(testpkg.I)
-	} else { // foreign object
-		param_i = (*proxyI)(param_i_ref)
-	}
-	err := testpkg.CallE(param_i)
-	if err == nil {
-		out.WriteUTF16("")
-	} else {
-		out.WriteUTF16(err.Error())
-	}
-}
-
-func proxy_CallF(out, in *seq.Buffer) {
-	var param_i testpkg.I
-	param_i_ref := in.ReadRef()
-	if param_i_ref.Num < 0 { // go object
-		param_i = param_i_ref.Get().(testpkg.I)
-	} else { // foreign object
-		param_i = (*proxyI)(param_i_ref)
-	}
-	testpkg.CallF(param_i)
-}
-
-func proxy_CallI(out, in *seq.Buffer) {
-	var param_i testpkg.I
-	param_i_ref := in.ReadRef()
-	if param_i_ref.Num < 0 { // go object
-		param_i = param_i_ref.Get().(testpkg.I)
-	} else { // foreign object
-		param_i = (*proxyI)(param_i_ref)
-	}
-	res := testpkg.CallI(param_i)
-	out.WriteGoRef(res)
-}
-
-func proxy_CallS(out, in *seq.Buffer) {
-	var param_i testpkg.I
-	param_i_ref := in.ReadRef()
-	if param_i_ref.Num < 0 { // go object
-		param_i = param_i_ref.Get().(testpkg.I)
-	} else { // foreign object
-		param_i = (*proxyI)(param_i_ref)
-	}
-	res := testpkg.CallS(param_i)
-	out.WriteGoRef(res)
-}
-
-func proxy_CallV(out, in *seq.Buffer) {
-	var param_i testpkg.I
-	param_i_ref := in.ReadRef()
-	if param_i_ref.Num < 0 { // go object
-		param_i = param_i_ref.Get().(testpkg.I)
-	} else { // foreign object
-		param_i = (*proxyI)(param_i_ref)
-	}
-	res := testpkg.CallV(param_i)
-	out.WriteInt(res)
-}
-
-func proxy_CallVE(out, in *seq.Buffer) {
-	var param_i testpkg.I
-	param_i_ref := in.ReadRef()
-	if param_i_ref.Num < 0 { // go object
-		param_i = param_i_ref.Get().(testpkg.I)
-	} else { // foreign object
-		param_i = (*proxyI)(param_i_ref)
-	}
-	res, err := testpkg.CallVE(param_i)
-	out.WriteInt(res)
-	if err == nil {
-		out.WriteUTF16("")
-	} else {
-		out.WriteUTF16(err.Error())
-	}
-}
-
-func proxy_Err(out, in *seq.Buffer) {
-	param_s := in.ReadUTF16()
-	err := testpkg.Err(param_s)
-	if err == nil {
-		out.WriteUTF16("")
-	} else {
-		out.WriteUTF16(err.Error())
-	}
-}
-
-func proxy_GC(out, in *seq.Buffer) {
-	testpkg.GC()
-}
-
-const (
-	proxyIDescriptor = "go.testpkg.I"
-	proxyIECode      = 0x10a
-	proxyIFCode      = 0x20a
-	proxyIICode      = 0x30a
-	proxyISCode      = 0x40a
-	proxyIStringCode = 0x50a
-	proxyIVCode      = 0x60a
-	proxyIVECode     = 0x70a
-)
-
-func proxyIE(out, in *seq.Buffer) {
-	ref := in.ReadRef()
-	v := ref.Get().(testpkg.I)
-	err := v.E()
-	if err == nil {
-		out.WriteUTF16("")
-	} else {
-		out.WriteUTF16(err.Error())
-	}
-}
-
-func proxyIF(out, in *seq.Buffer) {
-	ref := in.ReadRef()
-	v := ref.Get().(testpkg.I)
-	v.F()
-}
-
-func proxyII(out, in *seq.Buffer) {
-	ref := in.ReadRef()
-	v := ref.Get().(testpkg.I)
-	res := v.I()
-	out.WriteGoRef(res)
-}
-
-func proxyIS(out, in *seq.Buffer) {
-	ref := in.ReadRef()
-	v := ref.Get().(testpkg.I)
-	res := v.S()
-	out.WriteGoRef(res)
-}
-
-func proxyIString(out, in *seq.Buffer) {
-	ref := in.ReadRef()
-	v := ref.Get().(testpkg.I)
-	res := v.String()
-	out.WriteUTF16(res)
-}
-
-func proxyIV(out, in *seq.Buffer) {
-	ref := in.ReadRef()
-	v := ref.Get().(testpkg.I)
-	res := v.V()
-	out.WriteInt(res)
-}
-
-func proxyIVE(out, in *seq.Buffer) {
-	ref := in.ReadRef()
-	v := ref.Get().(testpkg.I)
-	res, err := v.VE()
-	out.WriteInt(res)
-	if err == nil {
-		out.WriteUTF16("")
-	} else {
-		out.WriteUTF16(err.Error())
-	}
-}
-
-func init() {
-	seq.Register(proxyIDescriptor, proxyIECode, proxyIE)
-	seq.Register(proxyIDescriptor, proxyIFCode, proxyIF)
-	seq.Register(proxyIDescriptor, proxyIICode, proxyII)
-	seq.Register(proxyIDescriptor, proxyISCode, proxyIS)
-	seq.Register(proxyIDescriptor, proxyIStringCode, proxyIString)
-	seq.Register(proxyIDescriptor, proxyIVCode, proxyIV)
-	seq.Register(proxyIDescriptor, proxyIVECode, proxyIVE)
-}
-
-type proxyI seq.Ref
-
-func (p *proxyI) E() error {
-	in := new(seq.Buffer)
-	out := seq.Transact((*seq.Ref)(p), proxyIECode, in)
-	res_0 := out.ReadError()
-	return res_0
-}
-
-func (p *proxyI) F() {
-	in := new(seq.Buffer)
-	seq.Transact((*seq.Ref)(p), proxyIFCode, in)
-}
-
-func (p *proxyI) I() testpkg.I {
-	in := new(seq.Buffer)
-	out := seq.Transact((*seq.Ref)(p), proxyIICode, in)
-	var res_0 testpkg.I
-	res_0_ref := out.ReadRef()
-	if res_0_ref.Num < 0 { // go object
-		res_0 = res_0_ref.Get().(testpkg.I)
-	} else { // foreign object
-		res_0 = (*proxyI)(res_0_ref)
-	}
-	return res_0
-}
-
-func (p *proxyI) S() *testpkg.S {
-	in := new(seq.Buffer)
-	out := seq.Transact((*seq.Ref)(p), proxyISCode, in)
-	// Must be a Go object
-	res_0_ref := out.ReadRef()
-	res_0 := res_0_ref.Get().(*testpkg.S)
-	return res_0
-}
-
-func (p *proxyI) String() string {
-	in := new(seq.Buffer)
-	out := seq.Transact((*seq.Ref)(p), proxyIStringCode, in)
-	res_0 := out.ReadUTF16()
-	return res_0
-}
-
-func (p *proxyI) V() int {
-	in := new(seq.Buffer)
-	out := seq.Transact((*seq.Ref)(p), proxyIVCode, in)
-	res_0 := out.ReadInt()
-	return res_0
-}
-
-func (p *proxyI) VE() (int, error) {
-	in := new(seq.Buffer)
-	out := seq.Transact((*seq.Ref)(p), proxyIVECode, in)
-	res_0 := out.ReadInt()
-	res_1 := out.ReadError()
-	return res_0, res_1
-}
-
-func proxy_Keep(out, in *seq.Buffer) {
-	var param_i testpkg.I
-	param_i_ref := in.ReadRef()
-	if param_i_ref.Num < 0 { // go object
-		param_i = param_i_ref.Get().(testpkg.I)
-	} else { // foreign object
-		param_i = (*proxyI)(param_i_ref)
-	}
-	testpkg.Keep(param_i)
-}
-
-func proxy_New(out, in *seq.Buffer) {
-	res := testpkg.New()
-	out.WriteGoRef(res)
-}
-
-func proxy_NumSCollected(out, in *seq.Buffer) {
-	res := testpkg.NumSCollected()
-	out.WriteInt(res)
-}
-
-const (
-	proxySDescriptor = "go.testpkg.S"
-	proxySFCode      = 0x00c
-	proxySStringCode = 0x10c
-)
-
-type proxyS seq.Ref
-
-func proxySF(out, in *seq.Buffer) {
-	ref := in.ReadRef()
-	v := ref.Get().(*testpkg.S)
-	v.F()
-}
-
-func proxySString(out, in *seq.Buffer) {
-	ref := in.ReadRef()
-	v := ref.Get().(*testpkg.S)
-	res := v.String()
-	out.WriteUTF16(res)
-}
-
-func init() {
-	seq.Register(proxySDescriptor, proxySFCode, proxySF)
-	seq.Register(proxySDescriptor, proxySStringCode, proxySString)
-}
-
-func proxy_StrDup(out, in *seq.Buffer) {
-	param_s := in.ReadUTF16()
-	res := testpkg.StrDup(param_s)
-	out.WriteUTF16(res)
-}
-
-func init() {
-	seq.Register("testpkg", 1, proxy_Add)
-	seq.Register("testpkg", 2, proxy_AppendToString)
-	seq.Register("testpkg", 3, proxy_BytesAppend)
-	seq.Register("testpkg", 4, proxy_CallE)
-	seq.Register("testpkg", 5, proxy_CallF)
-	seq.Register("testpkg", 6, proxy_CallI)
-	seq.Register("testpkg", 7, proxy_CallS)
-	seq.Register("testpkg", 8, proxy_CallV)
-	seq.Register("testpkg", 9, proxy_CallVE)
-	seq.Register("testpkg", 10, proxy_Err)
-	seq.Register("testpkg", 11, proxy_GC)
-	seq.Register("testpkg", 12, proxy_Keep)
-	seq.Register("testpkg", 13, proxy_New)
-	seq.Register("testpkg", 14, proxy_NumSCollected)
-	seq.Register("testpkg", 15, proxy_StrDup)
-}
diff --git a/go/src/golang.org/x/mobile/bind/java/testpkg/testpkg.go b/go/src/golang.org/x/mobile/bind/java/testpkg/testpkg.go
deleted file mode 100644
index c4bde1b..0000000
--- a/go/src/golang.org/x/mobile/bind/java/testpkg/testpkg.go
+++ /dev/null
@@ -1,116 +0,0 @@
-// Package testpkg contains bound functions for testing the cgo-JNI interface.
-package testpkg
-
-//go:generate gobind -lang=go -output=go_testpkg/go_testpkg.go .
-//go:generate gobind -lang=java -output=Testpkg.java .
-import (
-	"errors"
-	"fmt"
-	"runtime"
-	"time"
-)
-
-type I interface {
-	F()
-
-	E() error
-	V() int
-	VE() (int, error)
-	I() I
-	S() *S
-
-	String() string
-}
-
-func CallF(i I) {
-	i.F()
-}
-
-func CallE(i I) error {
-	return i.E()
-}
-
-func CallV(i I) int {
-	return i.V()
-}
-
-func CallVE(i I) (int, error) {
-	return i.VE()
-}
-
-func CallI(i I) I {
-	return i
-}
-
-func CallS(i I) *S {
-	return &S{}
-}
-
-var keep []I
-
-func Keep(i I) {
-	keep = append(keep, i)
-}
-
-var numSCollected int
-
-type S struct {
-	// *S already has a finalizer, so we need another object
-	// to count successful collections.
-	innerObj *int
-
-	name string
-}
-
-func (s *S) F() {
-	fmt.Printf("called F on *S{%s}\n", s.name)
-}
-
-func (s *S) String() string {
-	return s.name
-}
-
-func finalizeInner(*int) {
-	numSCollected++
-}
-
-func New() *S {
-	s := &S{innerObj: new(int), name: "new"}
-	runtime.SetFinalizer(s.innerObj, finalizeInner)
-	return s
-}
-
-func GC() {
-	runtime.GC()
-	time.Sleep(10 * time.Millisecond)
-	runtime.GC()
-}
-
-func Add(x, y int) int {
-	return x + y
-}
-
-func NumSCollected() int {
-	return numSCollected
-}
-
-func StrDup(s string) string {
-	return s
-}
-
-func Err(s string) error {
-	if s != "" {
-		return errors.New(s)
-	}
-	return nil
-}
-
-func BytesAppend(a []byte, b []byte) []byte {
-	return append(a, b...)
-}
-
-func AppendToString(str string, someBytes []byte) []byte {
-	a := []byte(str)
-	fmt.Printf("str=%q (len=%d), someBytes=%v (len=%d)\n", str, len(str), someBytes, len(someBytes))
-	return append(a, someBytes...)
-}
diff --git a/go/src/golang.org/x/mobile/bind/printer.go b/go/src/golang.org/x/mobile/bind/printer.go
deleted file mode 100644
index 39cb809..0000000
--- a/go/src/golang.org/x/mobile/bind/printer.go
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2014 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 bind
-
-import (
-	"bytes"
-	"fmt"
-)
-
-type printer struct {
-	buf        *bytes.Buffer
-	indentEach []byte
-	indentText []byte
-	needIndent bool
-}
-
-func (p *printer) writeIndent() error {
-	if !p.needIndent {
-		return nil
-	}
-	p.needIndent = false
-	_, err := p.buf.Write(p.indentText)
-	return err
-}
-
-func (p *printer) Write(b []byte) (n int, err error) {
-	wrote := 0
-	for len(b) > 0 {
-		if err := p.writeIndent(); err != nil {
-			return wrote, err
-		}
-		i := bytes.IndexByte(b, '\n')
-		if i < 0 {
-			break
-		}
-		n, err = p.buf.Write(b[0 : i+1])
-		wrote += n
-		if err != nil {
-			return wrote, err
-		}
-		b = b[i+1:]
-		p.needIndent = true
-	}
-	if len(b) > 0 {
-		n, err = p.buf.Write(b)
-		wrote += n
-	}
-	return wrote, err
-}
-
-func (p *printer) Printf(format string, args ...interface{}) {
-	if _, err := fmt.Fprintf(p, format, args...); err != nil {
-		panic(fmt.Sprintf("printer: %v", err))
-	}
-}
-
-func (p *printer) Indent() {
-	p.indentText = append(p.indentText, p.indentEach...)
-}
-
-func (p *printer) Outdent() {
-	if len(p.indentText) > len(p.indentEach)-1 {
-		p.indentText = p.indentText[len(p.indentEach):]
-	}
-}
diff --git a/go/src/golang.org/x/mobile/bind/seq.go b/go/src/golang.org/x/mobile/bind/seq.go
deleted file mode 100644
index f1aa3ac..0000000
--- a/go/src/golang.org/x/mobile/bind/seq.go
+++ /dev/null
@@ -1,86 +0,0 @@
-package bind
-
-import (
-	"fmt"
-
-	"golang.org/x/tools/go/types"
-)
-
-// seqType returns a string that can be used for reading and writing a
-// type using the seq library.
-// TODO(hyangah): avoid panic; gobind needs to output the problematic code location.
-func seqType(t types.Type) string {
-	if isErrorType(t) {
-		return "UTF16"
-	}
-	switch t := t.(type) {
-	case *types.Basic:
-		switch t.Kind() {
-		case types.Int:
-			return "Int"
-		case types.Int8:
-			return "Int8"
-		case types.Int16:
-			return "Int16"
-		case types.Int32:
-			return "Int32"
-		case types.Int64:
-			return "Int64"
-		case types.Uint8: // Byte.
-			// TODO(crawshaw): questionable, but vital?
-			return "Byte"
-		// TODO(crawshaw): case types.Uint, types.Uint16, types.Uint32, types.Uint64:
-		case types.Float32:
-			return "Float32"
-		case types.Float64:
-			return "Float64"
-		case types.String:
-			return "UTF16"
-		default:
-			// Should be caught earlier in processing.
-			panic(fmt.Sprintf("unsupported basic seqType: %s", t))
-		}
-	case *types.Named:
-		switch u := t.Underlying().(type) {
-		case *types.Interface:
-			return "Ref"
-		default:
-			panic(fmt.Sprintf("unsupported named seqType: %s / %T", u, u))
-		}
-	case *types.Slice:
-		switch e := t.Elem().(type) {
-		case *types.Basic:
-			switch e.Kind() {
-			case types.Uint8: // Byte.
-				return "ByteArray"
-			default:
-				panic(fmt.Sprintf("unsupported seqType: %s(%s) / %T(%T)", t, e, t, e))
-			}
-		default:
-			panic(fmt.Sprintf("unsupported seqType: %s(%s) / %T(%T)", t, e, t, e))
-		}
-	// TODO: let the types.Array case handled like types.Slice?
-	case *types.Pointer:
-		if _, ok := t.Elem().(*types.Named); ok {
-			return "Ref"
-		}
-		panic(fmt.Sprintf("not supported yet, pointer type: %s / %T", t, t))
-
-	default:
-		panic(fmt.Sprintf("unsupported seqType: %s / %T", t, t))
-	}
-}
-
-func seqRead(o types.Type) string {
-	t := seqType(o)
-	return t + "()"
-}
-
-func seqWrite(o types.Type, name string) string {
-	t := seqType(o)
-	if t == "Ref" {
-		// TODO(crawshaw): do something cleaner, i.e. genWrite.
-		return t + "(" + name + ".ref())"
-	}
-	return t + "(" + name + ")"
-}
diff --git a/go/src/golang.org/x/mobile/bind/seq/buffer.go b/go/src/golang.org/x/mobile/bind/seq/buffer.go
deleted file mode 100644
index 462ed77..0000000
--- a/go/src/golang.org/x/mobile/bind/seq/buffer.go
+++ /dev/null
@@ -1,209 +0,0 @@
-// Copyright 2014 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 seq
-
-import (
-	"bytes"
-	"fmt"
-	"runtime"
-	"unsafe"
-)
-
-// Buffer is a set of arguments or return values from a function call
-// across the language boundary. Encoding is machine-dependent.
-type Buffer struct {
-	Data   []byte
-	Offset int // position of next read/write from Data
-}
-
-func (b *Buffer) String() string {
-	// Debugging.
-	var buf bytes.Buffer
-	fmt.Fprintf(&buf, "seq{Off=%d, Len=%d Data=", b.Offset, len(b.Data))
-	const hextable = "0123456789abcdef"
-	for i, v := range b.Data {
-		if i > 0 {
-			buf.WriteByte(':')
-		}
-		buf.WriteByte(hextable[v>>4])
-		buf.WriteByte(hextable[v&0x0f])
-	}
-	buf.WriteByte('}')
-	return buf.String()
-}
-
-func (b *Buffer) panic(need int) {
-	panic(fmt.Sprintf("need %d bytes: %s", need, b))
-}
-
-func (b *Buffer) grow(need int) {
-	size := len(b.Data)
-	if size == 0 {
-		size = 2
-	}
-	for size < need {
-		size *= 2
-	}
-	data := make([]byte, size+len(b.Data))
-	copy(data, b.Data[:b.Offset])
-	b.Data = data
-}
-
-// align returns the aligned offset.
-func align(offset, alignment int) int {
-	pad := offset % alignment
-	if pad > 0 {
-		pad = alignment - pad
-	}
-	return pad + offset
-}
-
-func (b *Buffer) ReadInt32() int32 {
-	offset := align(b.Offset, 4)
-	if len(b.Data)-offset < 4 {
-		b.panic(4)
-	}
-	v := *(*int32)(unsafe.Pointer(&b.Data[offset]))
-	b.Offset = offset + 4
-	return v
-}
-
-func (b *Buffer) ReadInt64() int64 {
-	offset := align(b.Offset, 8)
-	if len(b.Data)-offset < 8 {
-		b.panic(8)
-	}
-	v := *(*int64)(unsafe.Pointer(&b.Data[offset]))
-	b.Offset = offset + 8
-	return v
-}
-
-// TODO(hyangah): int8, int16?
-
-func (b *Buffer) ReadInt() int {
-	return int(b.ReadInt64())
-}
-
-func (b *Buffer) ReadFloat32() float32 {
-	offset := align(b.Offset, 4)
-	if len(b.Data)-offset < 4 {
-		b.panic(4)
-	}
-	v := *(*float32)(unsafe.Pointer(&b.Data[offset]))
-	b.Offset = offset + 4
-	return v
-}
-
-func (b *Buffer) ReadFloat64() float64 {
-	offset := align(b.Offset, 8)
-	if len(b.Data)-offset < 8 {
-		b.panic(8)
-	}
-	v := *(*float64)(unsafe.Pointer(&b.Data[offset]))
-	b.Offset = offset + 8
-	return v
-}
-
-func (b *Buffer) ReadByteArray() []byte {
-	sz := b.ReadInt64()
-	if sz == 0 {
-		return nil
-	}
-
-	ptr := b.ReadInt64()
-	org := (*[1 << 30]byte)(unsafe.Pointer(uintptr(ptr)))[:sz]
-
-	// Make a copy managed by Go, so the returned byte array can be
-	// used safely in Go.
-	slice := make([]byte, sz)
-	copy(slice, org)
-	return slice
-}
-
-func (b *Buffer) ReadRef() *Ref {
-	ref := &Ref{b.ReadInt32()}
-	if ref.Num > 0 {
-		// This is a foreign object reference.
-		// Track its lifetime with a finalizer.
-		runtime.SetFinalizer(ref, FinalizeRef)
-	}
-	return ref
-}
-
-func (b *Buffer) WriteInt32(v int32) {
-	offset := align(b.Offset, 4)
-	if len(b.Data)-offset < 4 {
-		b.grow(offset + 4 - len(b.Data))
-	}
-	*(*int32)(unsafe.Pointer(&b.Data[offset])) = v
-	b.Offset = offset + 4
-}
-
-func (b *Buffer) WriteInt64(v int64) {
-	offset := align(b.Offset, 8)
-	if len(b.Data)-offset < 8 {
-		b.grow(offset + 8 - len(b.Data))
-	}
-	*(*int64)(unsafe.Pointer(&b.Data[offset])) = v
-	b.Offset = offset + 8
-}
-
-func (b *Buffer) WriteInt(v int) {
-	b.WriteInt64(int64(v))
-}
-
-func (b *Buffer) WriteFloat32(v float32) {
-	offset := align(b.Offset, 4)
-	if len(b.Data)-offset < 4 {
-		b.grow(offset + 4 - len(b.Data))
-	}
-	*(*float32)(unsafe.Pointer(&b.Data[offset])) = v
-	b.Offset = offset + 4
-}
-
-func (b *Buffer) WriteFloat64(v float64) {
-	offset := align(b.Offset, 8)
-	if len(b.Data)-offset < 8 {
-		b.grow(offset + 8 - len(b.Data))
-	}
-	*(*float64)(unsafe.Pointer(&b.Data[offset])) = v
-	b.Offset = offset + 8
-}
-
-func (b *Buffer) WriteByteArray(byt []byte) {
-	sz := len(byt)
-	if sz == 0 {
-		b.WriteInt64(int64(sz))
-		return
-	}
-
-	ptr := uintptr(unsafe.Pointer(&byt[0]))
-	b.WriteInt64(int64(sz))
-	b.WriteInt64(int64(ptr))
-	return
-}
-
-func (b *Buffer) WriteGoRef(obj interface{}) {
-	refs.Lock()
-	num := refs.refs[obj]
-	if num == 0 {
-		num = refs.next
-		refs.next--
-		if refs.next > 0 {
-			panic("refs.next underflow")
-		}
-		refs.refs[obj] = num
-		refs.objs[num] = obj
-	}
-	refs.Unlock()
-
-	b.WriteInt32(int32(num))
-}
-
-/*  TODO: Will we need it?
-func (b *Buffer) WriteRef(ref *Ref) {
-	b.WriteInt32(ref.Num)
-}
-*/
diff --git a/go/src/golang.org/x/mobile/bind/seq/ref.go b/go/src/golang.org/x/mobile/bind/seq/ref.go
deleted file mode 100644
index 0ebd896..0000000
--- a/go/src/golang.org/x/mobile/bind/seq/ref.go
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2014 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 seq
-
-//#cgo LDFLAGS: -llog
-//#include <android/log.h>
-//#include <string.h>
-//import "C"
-
-import (
-	"fmt"
-	"sync"
-)
-
-// refs stores Go objects that have been passed to another language.
-var refs struct {
-	sync.Mutex
-	next int32 // next reference number to use for Go object, always negative
-	refs map[interface{}]int32
-	objs map[int32]interface{}
-}
-
-func init() {
-	refs.Lock()
-	refs.next = -24 // Go objects get negative reference numbers. Arbitrary starting point.
-	refs.refs = make(map[interface{}]int32)
-	refs.objs = make(map[int32]interface{})
-	refs.Unlock()
-}
-
-// A Ref represents a Java or Go object passed across the language
-// boundary.
-type Ref struct {
-	Num int32
-}
-
-// Get returns the underlying object.
-func (r *Ref) Get() interface{} {
-	refs.Lock()
-	obj, ok := refs.objs[r.Num]
-	refs.Unlock()
-	if !ok {
-		panic(fmt.Sprintf("unknown ref %d", r.Num))
-	}
-	return obj
-}
-
-// Delete remove the reference to the underlying object.
-func Delete(num int32) {
-	refs.Lock()
-	obj, ok := refs.objs[num]
-	if !ok {
-		panic(fmt.Sprintf("seq.Delete unknown refnum: %d", num))
-	}
-	delete(refs.objs, num)
-	delete(refs.refs, obj)
-	refs.Unlock()
-}
diff --git a/go/src/golang.org/x/mobile/bind/seq/seq.go b/go/src/golang.org/x/mobile/bind/seq/seq.go
deleted file mode 100644
index 2239bdf..0000000
--- a/go/src/golang.org/x/mobile/bind/seq/seq.go
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2014 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 seq implements the machine-dependent seq serialization format.
-//
-// Implementations of Transact and FinalizeRef are provided by a
-// specific foreign language binding package, e.g. go.mobile/bind/java.
-//
-// Designed only for use by the code generated by gobind. Don't try to
-// use this directly.
-package seq // import "golang.org/x/mobile/bind/seq"
-
-// TODO(crawshaw):
-// 	There is opportunity for optimizing these language
-//	bindings which requires deconstructing seq into something
-//	gnarly. So don't get too attached to the design.
-
-import "fmt"
-
-// Transact calls a method on a foreign object instance.
-// It blocks until the call is complete.
-var Transact func(ref *Ref, code int, in *Buffer) (out *Buffer)
-
-// FinalizeRef is the finalizer used on foreign objects.
-var FinalizeRef func(ref *Ref)
-
-// A Func can be registered and called by a foreign language.
-type Func func(out, in *Buffer)
-
-// Registry holds functions callable from gobind generated bindings.
-// Functions are keyed by descriptor and function code.
-var Registry = make(map[string]map[int]Func)
-
-// Register registers a function in the Registry.
-func Register(descriptor string, code int, fn Func) {
-	m := Registry[descriptor]
-	if m == nil {
-		m = make(map[int]Func)
-		Registry[descriptor] = m
-	}
-	if m[code] != nil {
-		panic(fmt.Sprintf("registry.Register: %q/%d already registered", descriptor, code))
-	}
-	m[code] = fn
-}
diff --git a/go/src/golang.org/x/mobile/bind/seq/seq_test.go b/go/src/golang.org/x/mobile/bind/seq/seq_test.go
deleted file mode 100644
index cc24292..0000000
--- a/go/src/golang.org/x/mobile/bind/seq/seq_test.go
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2014 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 seq
-
-import "testing"
-
-func TestBuffer(t *testing.T) {
-	buf := new(Buffer)
-	buf.WriteInt64(1 << 42)
-	buf.WriteInt32(1 << 13)
-	buf.WriteUTF16("Hello, world")
-	buf.WriteFloat64(4.02)
-	buf.WriteFloat32(1.2)
-	buf.WriteGoRef(new(int))
-	buf.WriteGoRef(new(int))
-
-	buf.Offset = 0
-
-	if got, want := buf.ReadInt64(), int64(1<<42); got != want {
-		t.Errorf("buf.ReadInt64()=%d, want %d", got, want)
-	}
-	if got, want := buf.ReadInt32(), int32(1<<13); got != want {
-		t.Errorf("buf.ReadInt32()=%d, want %d", got, want)
-	}
-	if got, want := buf.ReadUTF16(), "Hello, world"; got != want {
-		t.Errorf("buf.ReadUTF16()=%q, want %q", got, want)
-	}
-	if got, want := buf.ReadFloat64(), 4.02; got != want {
-		t.Errorf("buf.ReadFloat64()=%f, want %f", got, want)
-	}
-	if got, want := buf.ReadFloat32(), float32(1.2); got != want {
-		t.Errorf("buf.ReadFloat32()=%f, want %f", got, want)
-	}
-}
diff --git a/go/src/golang.org/x/mobile/bind/seq/utf16.go b/go/src/golang.org/x/mobile/bind/seq/utf16.go
deleted file mode 100644
index 8b0698d..0000000
--- a/go/src/golang.org/x/mobile/bind/seq/utf16.go
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2014 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 seq
-
-import (
-	"errors"
-	"fmt"
-	"unicode/utf16"
-	"unsafe"
-)
-
-// Based heavily on package unicode/utf16 from the Go standard library.
-
-const (
-	replacementChar = '\uFFFD'     // Unicode replacement character
-	maxRune         = '\U0010FFFF' // Maximum valid Unicode code point.
-)
-
-const (
-	// 0xd800-0xdc00 encodes the high 10 bits of a pair.
-	// 0xdc00-0xe000 encodes the low 10 bits of a pair.
-	// the value is those 20 bits plus 0x10000.
-	surr1 = 0xd800
-	surr2 = 0xdc00
-	surr3 = 0xe000
-
-	surrSelf = 0x10000
-)
-
-func writeUint16(b []byte, v rune) {
-	*(*uint16)(unsafe.Pointer(&b[0])) = uint16(v)
-}
-
-func (b *Buffer) WriteUTF16(s string) {
-	// The first 4 bytes is the length, as int32 (4-byte aligned).
-	// written last.
-	// The next n bytes is utf-16 string (1-byte aligned).
-	offset0 := align(b.Offset, 4)  // length.
-	offset1 := align(offset0+4, 1) // contents.
-
-	if len(b.Data)-offset1 < 4*len(s) {
-		// worst case estimate, everything is surrogate pair
-		b.grow(offset1 + 4*len(s) - len(b.Data))
-	}
-	data := b.Data[offset1:]
-	n := 0
-	for _, v := range s {
-		switch {
-		case v < 0, surr1 <= v && v < surr3, v > maxRune:
-			v = replacementChar
-			fallthrough
-		case v < surrSelf:
-			writeUint16(data[n:], v)
-			n += 2
-		default:
-			// surrogate pair, two uint16 values
-			r1, r2 := utf16.EncodeRune(v)
-			writeUint16(data[n:], r1)
-			writeUint16(data[n+2:], r2)
-			n += 4
-		}
-	}
-
-	// write length at b.Data[b.Offset:], before contents.
-	// length is number of uint16 values, not number of bytes.
-	b.WriteInt32(int32(n / 2))
-
-	b.Offset = offset1 + n
-}
-
-const maxSliceLen = (1<<31 - 1) / 2
-
-func (b *Buffer) ReadError() error {
-	if s := b.ReadUTF16(); s != "" {
-		return errors.New(s)
-	}
-	return nil
-}
-
-func (b *Buffer) ReadUTF16() string {
-	size := int(b.ReadInt32())
-	if size == 0 {
-		return ""
-	}
-	if size < 0 {
-		panic(fmt.Sprintf("string size negative: %d", size))
-	}
-	offset := align(b.Offset, 1)
-	u := (*[maxSliceLen]uint16)(unsafe.Pointer(&b.Data[offset]))[:size]
-	s := string(utf16.Decode(u)) // TODO: save the []rune alloc
-	b.Offset = offset + 2*size
-
-	return s
-}
diff --git a/go/src/golang.org/x/mobile/bind/seq/utf16_test.go b/go/src/golang.org/x/mobile/bind/seq/utf16_test.go
deleted file mode 100644
index e452737..0000000
--- a/go/src/golang.org/x/mobile/bind/seq/utf16_test.go
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2014 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 seq
-
-import "testing"
-
-var utf16Tests = []string{
-	"abcxyz09{}",
-	"Hello, 世界",
-	string([]rune{0xffff, 0x10000, 0x10001, 0x12345, 0x10ffff}),
-}
-
-func TestUTF16(t *testing.T) {
-	for _, test := range utf16Tests {
-		buf := new(Buffer)
-		buf.WriteUTF16(test)
-		buf.Offset = 0
-		got := buf.ReadUTF16()
-		if got != test {
-			t.Errorf("got %q, want %q", got, test)
-		}
-	}
-}
-
-func TestSequential(t *testing.T) {
-	buf := new(Buffer)
-	for _, test := range utf16Tests {
-		buf.WriteUTF16(test)
-	}
-	buf.Offset = 0
-	for i, test := range utf16Tests {
-		got := buf.ReadUTF16()
-		if got != test {
-			t.Errorf("%d: got %q, want %q", i, got, test)
-		}
-	}
-}
diff --git a/go/src/golang.org/x/mobile/bind/testdata/basictypes.go b/go/src/golang.org/x/mobile/bind/testdata/basictypes.go
deleted file mode 100644
index bc0bffb..0000000
--- a/go/src/golang.org/x/mobile/bind/testdata/basictypes.go
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2014 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 basictypes
-
-func Ints(x int8, y int16, z int32, t int64, u int) {}
-
-func Error() error { return nil }
-
-func ErrorPair() (int, error) { return 0, nil }
-
-func ByteArrays(x []byte) []byte { return nil }
diff --git a/go/src/golang.org/x/mobile/bind/testdata/basictypes.go.golden b/go/src/golang.org/x/mobile/bind/testdata/basictypes.go.golden
deleted file mode 100644
index ed35dda..0000000
--- a/go/src/golang.org/x/mobile/bind/testdata/basictypes.go.golden
+++ /dev/null
@@ -1,51 +0,0 @@
-// Package go_basictypes is an autogenerated binder stub for package basictypes.
-//   gobind -lang=go basictypes
-//
-// File is generated by gobind. Do not edit.
-package go_basictypes
-
-import (
-	"basictypes"
-	"golang.org/x/mobile/bind/seq"
-)
-
-func proxy_ByteArrays(out, in *seq.Buffer) {
-	param_x := in.ReadByteArray()
-	res := basictypes.ByteArrays(param_x)
-	out.WriteByteArray(res)
-}
-
-func proxy_Error(out, in *seq.Buffer) {
-	err := basictypes.Error()
-	if err == nil {
-		out.WriteUTF16("")
-	} else {
-		out.WriteUTF16(err.Error())
-	}
-}
-
-func proxy_ErrorPair(out, in *seq.Buffer) {
-	res, err := basictypes.ErrorPair()
-	out.WriteInt(res)
-	if err == nil {
-		out.WriteUTF16("")
-	} else {
-		out.WriteUTF16(err.Error())
-	}
-}
-
-func proxy_Ints(out, in *seq.Buffer) {
-	param_x := in.ReadInt8()
-	param_y := in.ReadInt16()
-	param_z := in.ReadInt32()
-	param_t := in.ReadInt64()
-	param_u := in.ReadInt()
-	basictypes.Ints(param_x, param_y, param_z, param_t, param_u)
-}
-
-func init() {
-	seq.Register("basictypes", 1, proxy_ByteArrays)
-	seq.Register("basictypes", 2, proxy_Error)
-	seq.Register("basictypes", 3, proxy_ErrorPair)
-	seq.Register("basictypes", 4, proxy_Ints)
-}
diff --git a/go/src/golang.org/x/mobile/bind/testdata/basictypes.java.golden b/go/src/golang.org/x/mobile/bind/testdata/basictypes.java.golden
deleted file mode 100644
index f44ad6e..0000000
--- a/go/src/golang.org/x/mobile/bind/testdata/basictypes.java.golden
+++ /dev/null
@@ -1,61 +0,0 @@
-// Java Package basictypes is a proxy for talking to a Go program.
-//   gobind -lang=java basictypes
-//
-// File is generated by gobind. Do not edit.
-package go.basictypes;
-
-import go.Seq;
-
-public abstract class Basictypes {
-    private Basictypes() {} // uninstantiable
-    
-    public static byte[] ByteArrays(byte[] x) {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        byte[] _result;
-        _in.writeByteArray(x);
-        Seq.send(DESCRIPTOR, CALL_ByteArrays, _in, _out);
-        _result = _out.readByteArray();
-        return _result;
-    }
-    
-    public static void Error() throws Exception {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        Seq.send(DESCRIPTOR, CALL_Error, _in, _out);
-        String _err = _out.readUTF16();
-        if (_err != null) {
-            throw new Exception(_err);
-        }
-    }
-    
-    public static long ErrorPair() throws Exception {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        long _result;
-        Seq.send(DESCRIPTOR, CALL_ErrorPair, _in, _out);
-        _result = _out.readInt();
-        String _err = _out.readUTF16();
-        if (_err != null) {
-            throw new Exception(_err);
-        }
-        return _result;
-    }
-    
-    public static void Ints(byte x, short y, int z, long t, long u) {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        _in.writeInt8(x);
-        _in.writeInt16(y);
-        _in.writeInt32(z);
-        _in.writeInt64(t);
-        _in.writeInt(u);
-        Seq.send(DESCRIPTOR, CALL_Ints, _in, _out);
-    }
-    
-    private static final int CALL_ByteArrays = 1;
-    private static final int CALL_Error = 2;
-    private static final int CALL_ErrorPair = 3;
-    private static final int CALL_Ints = 4;
-    private static final String DESCRIPTOR = "basictypes";
-}
diff --git a/go/src/golang.org/x/mobile/bind/testdata/interfaces.go b/go/src/golang.org/x/mobile/bind/testdata/interfaces.go
deleted file mode 100644
index 0e7ad7a..0000000
--- a/go/src/golang.org/x/mobile/bind/testdata/interfaces.go
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2014 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 interfaces
-
-type I interface {
-	Rand() int32
-}
-
-func Add3(r I) int32 {
-	return r.Rand() + r.Rand() + r.Rand()
-}
-
-// chosen by fair dice roll.
-// guaranteed to be random.
-type seven struct{}
-
-func (seven) Rand() int32 { return 7 }
-
-func Seven() I { return seven{} }
diff --git a/go/src/golang.org/x/mobile/bind/testdata/interfaces.go.golden b/go/src/golang.org/x/mobile/bind/testdata/interfaces.go.golden
deleted file mode 100644
index f2edf8c..0000000
--- a/go/src/golang.org/x/mobile/bind/testdata/interfaces.go.golden
+++ /dev/null
@@ -1,57 +0,0 @@
-// Package go_interfaces is an autogenerated binder stub for package interfaces.
-//   gobind -lang=go interfaces
-//
-// File is generated by gobind. Do not edit.
-package go_interfaces
-
-import (
-	"golang.org/x/mobile/bind/seq"
-	"interfaces"
-)
-
-func proxy_Add3(out, in *seq.Buffer) {
-	var param_r interfaces.I
-	param_r_ref := in.ReadRef()
-	if param_r_ref.Num < 0 { // go object
-		param_r = param_r_ref.Get().(interfaces.I)
-	} else { // foreign object
-		param_r = (*proxyI)(param_r_ref)
-	}
-	res := interfaces.Add3(param_r)
-	out.WriteInt32(res)
-}
-
-const (
-	proxyIDescriptor = "go.interfaces.I"
-	proxyIRandCode   = 0x10a
-)
-
-func proxyIRand(out, in *seq.Buffer) {
-	ref := in.ReadRef()
-	v := ref.Get().(interfaces.I)
-	res := v.Rand()
-	out.WriteInt32(res)
-}
-
-func init() {
-	seq.Register(proxyIDescriptor, proxyIRandCode, proxyIRand)
-}
-
-type proxyI seq.Ref
-
-func (p *proxyI) Rand() int32 {
-	in := new(seq.Buffer)
-	out := seq.Transact((*seq.Ref)(p), proxyIRandCode, in)
-	res_0 := out.ReadInt32()
-	return res_0
-}
-
-func proxy_Seven(out, in *seq.Buffer) {
-	res := interfaces.Seven()
-	out.WriteGoRef(res)
-}
-
-func init() {
-	seq.Register("interfaces", 1, proxy_Add3)
-	seq.Register("interfaces", 2, proxy_Seven)
-}
diff --git a/go/src/golang.org/x/mobile/bind/testdata/interfaces.java.golden b/go/src/golang.org/x/mobile/bind/testdata/interfaces.java.golden
deleted file mode 100644
index 50019f2..0000000
--- a/go/src/golang.org/x/mobile/bind/testdata/interfaces.java.golden
+++ /dev/null
@@ -1,87 +0,0 @@
-// Java Package interfaces is a proxy for talking to a Go program.
-//   gobind -lang=java interfaces
-//
-// File is generated by gobind. Do not edit.
-package go.interfaces;
-
-import go.Seq;
-
-public abstract class Interfaces {
-    private Interfaces() {} // uninstantiable
-    
-    public static int Add3(I r) {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        int _result;
-        _in.writeRef(r.ref());
-        Seq.send(DESCRIPTOR, CALL_Add3, _in, _out);
-        _result = _out.readInt32();
-        return _result;
-    }
-    
-    public interface I extends go.Seq.Object {
-        public int Rand();
-        
-        public static abstract class Stub implements I {
-            static final String DESCRIPTOR = "go.interfaces.I";
-            
-            private final go.Seq.Ref ref;
-            public Stub() {
-                ref = go.Seq.createRef(this);
-            }
-            
-            public go.Seq.Ref ref() { return ref; }
-            
-            public void call(int code, go.Seq in, go.Seq out) {
-                switch (code) {
-                case Proxy.CALL_Rand: {
-                    int result = this.Rand();
-                    out.writeInt32(result);
-                    return;
-                }
-                default:
-                    throw new RuntimeException("unknown code: "+ code);
-                }
-            }
-        }
-        
-        static final class Proxy implements I {
-            static final String DESCRIPTOR = Stub.DESCRIPTOR;
-        
-            private go.Seq.Ref ref;
-        
-            Proxy(go.Seq.Ref ref) { this.ref = ref; }
-        
-            public go.Seq.Ref ref() { return ref; }
-        
-            public void call(int code, go.Seq in, go.Seq out) {
-                throw new RuntimeException("cycle: cannot call proxy");
-            }
-        
-            public int Rand() {
-                go.Seq _in = new go.Seq();
-                go.Seq _out = new go.Seq();
-                int _result;
-                _in.writeRef(ref);
-                Seq.send(DESCRIPTOR, CALL_Rand, _in, _out);
-                _result = _out.readInt32();
-                return _result;
-            }
-            
-            static final int CALL_Rand = 0x10a;
-        }
-    }
-    
-    public static I Seven() {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        I _result;
-        Seq.send(DESCRIPTOR, CALL_Seven, _in, _out);
-        _result = new I.Proxy(_out.readRef());
-        return _result;
-    }
-    
-    private static final int CALL_Add3 = 1;
-    private static final int CALL_Seven = 2;
-    private static final String DESCRIPTOR = "interfaces";
-}
diff --git a/go/src/golang.org/x/mobile/bind/testdata/structs.go b/go/src/golang.org/x/mobile/bind/testdata/structs.go
deleted file mode 100644
index 8dcabb7..0000000
--- a/go/src/golang.org/x/mobile/bind/testdata/structs.go
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2014 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 structs
-
-type S struct {
-	X, Y       float64
-	unexported bool
-}
-
-func (s *S) Sum() float64 {
-	return s.X + s.Y
-}
diff --git a/go/src/golang.org/x/mobile/bind/testdata/structs.go.golden b/go/src/golang.org/x/mobile/bind/testdata/structs.go.golden
deleted file mode 100644
index b32ec0d..0000000
--- a/go/src/golang.org/x/mobile/bind/testdata/structs.go.golden
+++ /dev/null
@@ -1,63 +0,0 @@
-// Package go_structs is an autogenerated binder stub for package structs.
-//   gobind -lang=go structs
-//
-// File is generated by gobind. Do not edit.
-package go_structs
-
-import (
-	"golang.org/x/mobile/bind/seq"
-	"structs"
-)
-
-const (
-	proxySDescriptor = "go.structs.S"
-	proxySXGetCode   = 0x00f
-	proxySXSetCode   = 0x01f
-	proxySYGetCode   = 0x10f
-	proxySYSetCode   = 0x11f
-	proxySSumCode    = 0x00c
-)
-
-type proxyS seq.Ref
-
-func proxySXSet(out, in *seq.Buffer) {
-	ref := in.ReadRef()
-	v := in.ReadFloat64()
-	ref.Get().(*structs.S).X = v
-}
-
-func proxySXGet(out, in *seq.Buffer) {
-	ref := in.ReadRef()
-	v := ref.Get().(*structs.S).X
-	out.WriteFloat64(v)
-}
-
-func proxySYSet(out, in *seq.Buffer) {
-	ref := in.ReadRef()
-	v := in.ReadFloat64()
-	ref.Get().(*structs.S).Y = v
-}
-
-func proxySYGet(out, in *seq.Buffer) {
-	ref := in.ReadRef()
-	v := ref.Get().(*structs.S).Y
-	out.WriteFloat64(v)
-}
-
-func proxySSum(out, in *seq.Buffer) {
-	ref := in.ReadRef()
-	v := ref.Get().(*structs.S)
-	res := v.Sum()
-	out.WriteFloat64(res)
-}
-
-func init() {
-	seq.Register(proxySDescriptor, proxySXSetCode, proxySXSet)
-	seq.Register(proxySDescriptor, proxySXGetCode, proxySXGet)
-	seq.Register(proxySDescriptor, proxySYSetCode, proxySYSet)
-	seq.Register(proxySDescriptor, proxySYGetCode, proxySYGet)
-	seq.Register(proxySDescriptor, proxySSumCode, proxySSum)
-}
-
-func init() {
-}
diff --git a/go/src/golang.org/x/mobile/bind/testdata/structs.java.golden b/go/src/golang.org/x/mobile/bind/testdata/structs.java.golden
deleted file mode 100644
index ced08fe..0000000
--- a/go/src/golang.org/x/mobile/bind/testdata/structs.java.golden
+++ /dev/null
@@ -1,104 +0,0 @@
-// Java Package structs is a proxy for talking to a Go program.
-//   gobind -lang=java structs
-//
-// File is generated by gobind. Do not edit.
-package go.structs;
-
-import go.Seq;
-
-public abstract class Structs {
-    private Structs() {} // uninstantiable
-    
-    public static final class S implements go.Seq.Object {
-        private static final String DESCRIPTOR = "go.structs.S";
-        private static final int FIELD_X_GET = 0x00f;
-        private static final int FIELD_X_SET = 0x01f;
-        private static final int FIELD_Y_GET = 0x10f;
-        private static final int FIELD_Y_SET = 0x11f;
-        private static final int CALL_Sum = 0x00c;
-        
-        private go.Seq.Ref ref;
-        
-        private S(go.Seq.Ref ref) { this.ref = ref; }
-        
-        public go.Seq.Ref ref() { return ref; }
-        
-        public void call(int code, go.Seq in, go.Seq out) {
-            throw new RuntimeException("internal error: cycle: cannot call concrete proxy");
-        }
-        
-        public double getX() {
-            Seq in = new Seq();
-            Seq out = new Seq();
-            in.writeRef(ref);
-            Seq.send(DESCRIPTOR, FIELD_X_GET, in, out);
-            return out.readFloat64();
-        }
-        
-        public void setX(double v) {
-            Seq in = new Seq();
-            Seq out = new Seq();
-            in.writeRef(ref);
-            in.writeFloat64(v);
-            Seq.send(DESCRIPTOR, FIELD_X_SET, in, out);
-        }
-        public double getY() {
-            Seq in = new Seq();
-            Seq out = new Seq();
-            in.writeRef(ref);
-            Seq.send(DESCRIPTOR, FIELD_Y_GET, in, out);
-            return out.readFloat64();
-        }
-        
-        public void setY(double v) {
-            Seq in = new Seq();
-            Seq out = new Seq();
-            in.writeRef(ref);
-            in.writeFloat64(v);
-            Seq.send(DESCRIPTOR, FIELD_Y_SET, in, out);
-        }
-        
-        public double Sum() {
-            go.Seq _in = new go.Seq();
-            go.Seq _out = new go.Seq();
-            double _result;
-            _in.writeRef(ref);
-            Seq.send(DESCRIPTOR, CALL_Sum, _in, _out);
-            _result = _out.readFloat64();
-            return _result;
-        }
-        
-        @Override public boolean equals(Object o) {
-            if (o == null || !(o instanceof S)) {
-                return false;
-            }
-            S that = (S)o;
-            double thisX = getX();
-            double thatX = that.getX();
-            if (thisX != thatX) {
-                return false;
-            }
-            double thisY = getY();
-            double thatY = that.getY();
-            if (thisY != thatY) {
-                return false;
-            }
-            return true;
-        }
-        
-        @Override public int hashCode() {
-            return java.util.Arrays.hashCode(new Object[] {getX(), getY()});
-        }
-        
-        @Override public String toString() {
-            StringBuilder b = new StringBuilder();
-            b.append("S").append("{");
-            b.append("X:").append(getX()).append(",");
-            b.append("Y:").append(getY()).append(",");
-            return b.append("}").toString();
-        }
-        
-    }
-    
-    private static final String DESCRIPTOR = "structs";
-}
diff --git a/go/src/golang.org/x/mobile/build/androidtest.bash b/go/src/golang.org/x/mobile/build/androidtest.bash
deleted file mode 100755
index 5a80a21..0000000
--- a/go/src/golang.org/x/mobile/build/androidtest.bash
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env bash
-
-# Copyright 2014 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.
-
-# For testing Android. Run from a repository root.
-#   build/androidtest.bash
-# The compiler runs locally, pushes the copy of the repository
-# to a target device using adb, and runs tests in the device
-# using adb shell commands.
-
-set -e
-ulimit -c 0 # no core files
-
-function die() {
-  echo "FAIL: $1"
-  exit 1
-}
-
-if [ -z "${GOPATH}" ]; then
-  die 'GOPATH must be set.'
-fi
-
-readonly CURDIR=`pwd`
-if [ ! -f AUTHORS ]; then
-  die 'androidtest.bash must be run from the repository root.'
-fi
-
-function pkg() {
-  local paths=(${GOPATH//:/ })
-  for e in "${paths[@]}"; do
-    e="${e%/}"
-    local relpath="${CURDIR#"${e}/src/"}"
-    if [ "${relpath}" != "${CURDIR}" ]; then
-       echo "${relpath}"
-       break
-    fi
-  done
-}
-
-export PKG="$(pkg)"
-if [ -z "${PKG}" ]; then
-  die 'androidtest.bash failed to determine the repository package name.'
-fi
-
-export DEVICEDIR=/data/local/tmp/androidtest-$$
-export TMPDIR=`mktemp -d /tmp/androidtest.XXXXX`
-
-function cleanup() {
-  echo '# Cleaning up...'
-  rm -rf "$TMPDIR"
-  adb shell rm -rf "${DEVICEDIR}"
-}
-trap cleanup EXIT
-
-# 'adb sync' syncs data in ANDROID_PRODUCT_OUT directory.
-# We copy the entire golang.org/x/mobile/... (with -p option to preserve
-# file properties) to the directory assuming tests may depend only
-# on data in the same subrepository.
-echo '# Syncing test files to android device'
-export ANDROID_PRODUCT_OUT="${TMPDIR}/androidtest-$$"
-readonly LOCALDIR="${ANDROID_PRODUCT_OUT}/${DEVICEDIR}"
-
-mkdir -p "${LOCALDIR}/${PKG}"
-echo "cp -R --preserve=all ./* ${LOCALDIR}/${PKG}/"
-cp -R --preserve=all ./* "${LOCALDIR}/${PKG}/"
-
-time adb sync data &> /dev/null
-echo ''
-
-echo '# Run tests on android (arm7)'
-# Build go_android_${GOARCH}_exec that will be invoked for
-# GOOS=android GOARCH=$GOARCH go test/run.
-mkdir -p "${TMPDIR}/bin"
-export PATH=${TMPDIR}/bin:${PATH}
-GOOS="${GOHOSTOS}" GOARCH="${GOHOSTARCH}" go build \
-        -o "${TMPDIR}/bin/go_android_arm_exec" \
-        "${GOPATH}/src/golang.org/x/mobile/build/go_android_exec.go"
-CGO_ENABLED=1 GOOS=android GOARCH=arm GOARM=7 \
-	go test ./...
-
-# Special tests for mobile subrepository.
-if [ "$PKG" = "golang.org/x/mobile" ]; then
-	echo '# Run mobile=repository specific android tests.'
-
-	cd "${CURDIR}/bind/java"; ./test.bash
-fi
-
-exit  0
diff --git a/go/src/golang.org/x/mobile/build/go_android_exec.go b/go/src/golang.org/x/mobile/build/go_android_exec.go
deleted file mode 100644
index fbeaf7f..0000000
--- a/go/src/golang.org/x/mobile/build/go_android_exec.go
+++ /dev/null
@@ -1,136 +0,0 @@
-// Copyright 2014 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.
-
-// +build ignore
-
-// This program can be used as go_android_GOARCH_exec by the Go tool.
-// It executes binaries on an android device using adb.
-// This program is supposed to be called by
-// golang.org/x/mobile/build/androidtest.bash that arranges to copy
-// the tested repository source tree to the android device and invokes
-// go test. This program depends on PKG and DEVICEDIR environment variables
-// to identify the tested repository (e.g. golang.org/x/mobile) and
-// to find the source directory in the android device. The androidtest.bash
-// script is responsible for setting the environment variables.
-package main
-
-// This is adopted from golang.org/x/go/misc/android/go_android_exec.go.
-
-import (
-	"bytes"
-	"fmt"
-	"go/build"
-	"io"
-	"log"
-	"os"
-	"os/exec"
-	"path/filepath"
-	"strconv"
-	"strings"
-	"text/template"
-)
-
-func run(args ...string) string {
-	buf := new(bytes.Buffer)
-	cmd := exec.Command("adb", args...)
-	cmd.Stdout = io.MultiWriter(os.Stdout, buf)
-	cmd.Stderr = os.Stderr
-	log.Printf("adb %s", strings.Join(args, " "))
-	err := cmd.Run()
-	if err != nil {
-		log.Fatalf("adb %s: %v", strings.Join(args, " "), err)
-	}
-	return buf.String()
-}
-
-func rel(cwd, pkg string) (string, error) {
-	paths := build.Default.GOPATH
-	for _, p := range filepath.SplitList(paths) {
-		r, err := filepath.Rel(filepath.Join(p, "src", pkg), cwd)
-		if err == nil {
-			return r, nil
-		}
-	}
-	return "", fmt.Errorf("%q is not under GOPATH(%q)", cwd, paths)
-}
-
-func main() {
-	log.SetFlags(0)
-	log.SetPrefix("go_android_exec: ")
-
-	deviceRoot := "/data/local/tmp/"
-	if v := os.Getenv("DEVICEDIR"); v != "" {
-		deviceRoot = v
-	}
-
-	pkg := "golang.org/x/mobile"
-	if v := os.Getenv("PKG"); v != "" {
-		pkg = v
-	}
-
-	// Binary names can conflict.
-	// E.g. template.test from the {html,text}/template packages.
-	binName := filepath.Base(os.Args[1])
-	deviceBin := fmt.Sprintf("%s/%s-%d", deviceRoot, binName, os.Getpid())
-
-	// The push of the binary happens in parallel with other tests.
-	// Unfortunately, a simultaneous call to adb shell hold open
-	// file descriptors, so it is necessary to push then move to
-	// avoid a "text file busy" error on execution.
-	// https://code.google.com/p/android/issues/detail?id=65857
-	run("push", "-p", os.Args[1], deviceBin+"-tmp")
-	run("shell", "cp '"+deviceBin+"-tmp' '"+deviceBin+"'")
-	run("shell", "rm '"+deviceBin+"-tmp'")
-
-	cwd, err := os.Getwd()
-	if err != nil {
-		log.Fatal(err)
-	}
-
-	subdir, err := rel(cwd, pkg)
-	if err != nil {
-		log.Fatal(err)
-	}
-	subdir = filepath.Join(deviceRoot, pkg, subdir)
-
-	// The adb shell command will return an exit code of 0 regardless
-	// of the command run. E.g.
-	//	$ adb shell false
-	//	$ echo $?
-	//	0
-	// https://code.google.com/p/android/issues/detail?id=3254
-	// So we append the exitcode to the output and parse it from there.
-	t := template.Must(template.New("cmd").Parse(
-		`export TMPDIR={{.Root}}/tmp; \
-		 mkdir -p "$TMPDIR"; \
-		 cd "{{.SubDir}}"; \
-		 {{.Bin}} {{.Args}}; \
-		 echo -n {{.ExitStr}}$?`))
-
-	var cmd bytes.Buffer
-	const exitstr = "exitcode="
-	if err := t.Execute(&cmd, struct {
-		Root, SubDir, Bin, Args, ExitStr string
-	}{
-		Root:    deviceRoot,
-		SubDir:  subdir,
-		Bin:     deviceBin,
-		Args:    strings.Join(os.Args[2:], " "),
-		ExitStr: exitstr,
-	}); err != nil {
-		log.Panicf("template error: %v", err)
-	}
-
-	output := run("shell", cmd.String())
-	output = output[strings.LastIndex(output, "\n")+1:]
-
-	if !strings.HasPrefix(output, exitstr) {
-		log.Fatalf("no exit code: %q", output)
-	}
-	code, err := strconv.Atoi(output[len(exitstr):])
-	if err != nil {
-		log.Fatalf("bad exit code: %v", err)
-	}
-	os.Exit(code)
-}
diff --git a/go/src/golang.org/x/mobile/cmd/gobind/doc.go b/go/src/golang.org/x/mobile/cmd/gobind/doc.go
deleted file mode 100644
index 12a567c..0000000
--- a/go/src/golang.org/x/mobile/cmd/gobind/doc.go
+++ /dev/null
@@ -1,172 +0,0 @@
-// Copyright 2014 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.
-
-/*
-Gobind generates language bindings that make it possible to call Go code
-and pass objects from Java.
-
-Using gobind
-
-Gobind takes a Go package and generates bindings for all of the exported
-symbols. The exported symbols define the cross-language interface.
-
-The gobind tool generates both an API stub in Java, and binding code in
-Go. Start with a Go package:
-
-	package hi
-
-	import "fmt"
-
-	func Hello(name string) {
-		fmt.Println("Hello, %s!\n", name)
-	}
-
-Generate a Go binding package and Java stubs:
-
-	go install golang.org/x/mobile/cmd/gobind
-	gobind -lang=go github.com/crawshaw/hi > hi/go_hi/go_hi.go
-	gobind -lang=java github.com/crawshaw/hi > hi/Hi.java
-
-The generated Go package, go_hi, must be linked into your Go program:
-
-	import _ "github.com/crawshaw/hi/go_hi"
-
-Type restrictions
-
-At present, only a subset of Go types are supported.
-
-All exported symbols in the package must have types that are supported.
-Supported types include:
-
-	- Signed integer and floating point types.
-
-	- String and boolean types.
-
-	- Any function type all of whose parameters and results have
-	  supported types. Functions must return either no results,
-	  one result, or two results where the type of the second is
-	  the built-in 'error' type.
-
-	- Any interface type, all of whose exported methods have
-	  supported function types.
-
-	- Any struct type, all of whose exported methods have
-	  supported function types and all of whose exported fields
-	  have supported types.
-
-Unexported symbols have no effect on the cross-language interface, and
-as such are not restricted.
-
-The set of supported types will eventually be expanded to cover all Go
-types, but this is a work in progress.
-
-Exceptions and panics are not yet supported. If either pass a language
-boundary, the program will exit.
-
-Passing Go objects to foreign languages
-
-Consider a type for counting:
-
-	package mypkg
-
-	type Counter struct {
-		Value int
-	}
-
-	func (c *Counter) Inc() { c.Value++ }
-
-	func New() *Counter { return &Counter{ 5 } }
-
-The generated bindings enable Java programs to create and use a Counter.
-
-	public abstract class Mypkg {
-		private Mypkg() {}
-		public static final class Counter {
-			public void Inc() { ... }
-			public long GetValue() { ... }
-			public void SetValue(long value) { ... }
-		}
-		public static Counter New() { ... }
-	}
-
-The package-level function New can be called like so:
-
-	Counter c = Mypkg.New()
-
-returns a Java Counter, which is a proxy for a Go *Counter. Calling the Inc
-and Get methods will call the Go implementations of these methods.
-
-Passing foreign language objects to Go
-
-For a Go interface:
-
-	package myfmt
-
-	type Printer interface {
-		Print(s string)
-	}
-
-	func PrintHello(p Printer) {
-		p.Print("Hello, World!")
-	}
-
-gobind generates a Java stub that can be used to implement a Printer:
-
-	public abstract class Myfmt {
-		private Myfmt() {}
-		public interface Printer {
-			public void Print(String s);
-
-			public static abstract class Stub implements Printer {
-				...
-			}
-
-			...
-		}
-
-		public static void PrintHello(Printer p) { ... }
-	}
-
-You can extend Myfmt.Printer.Stub to implement the Printer interface, and
-pass it to Go using the PrintHello package function:
-
-	public class SysPrint extends Myfmt.Printer.Stub {
-		public void Print(String s) {
-			System.out.println(s);
-		}
-	}
-
-The Java implementation can be used like so:
-
-	Myfmt.Printer printer = new SysPrint();
-	Myfmt.PrintHello(printer);
-
-Avoid reference cycles
-
-The language bindings maintain a reference to each object that has been
-proxied. When a proxy object becomes unreachable, its finalizer reports
-this fact to the object's native side, so that the reference can be
-removed, potentially allowing the object to be reclaimed by its native
-garbage collector.  The mechanism is symmetric.
-
-However, it is possible to create a reference cycle between Go and
-Java objects, via proxies, meaning objects cannot be collected. This
-causes a memory leak.
-
-For example, if a Go object G holds a reference to the Go proxy of a
-Java object J, and J holds a reference to the Java proxy of G, then the
-language bindings on each side must keep G and J live even if they are
-otherwise unreachable.
-
-We recommend that implementations of foreign interfaces do not hold
-references to proxies of objects. That is: if you extend a Stub in
-Java, do not store an instance of Seq.Object inside it.
-
-Further reading
-
-Examples can be found in http://golang.org/x/mobile/example.
-
-Design doc: http://golang.org/s/gobind
-*/
-package main // import "golang.org/x/mobile/cmd/gobind"
diff --git a/go/src/golang.org/x/mobile/cmd/gobind/gen.go b/go/src/golang.org/x/mobile/cmd/gobind/gen.go
deleted file mode 100644
index d2563fa..0000000
--- a/go/src/golang.org/x/mobile/cmd/gobind/gen.go
+++ /dev/null
@@ -1,136 +0,0 @@
-// Copyright 2014 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 (
-	"fmt"
-	"io"
-	"os"
-	"path/filepath"
-	"unicode"
-	"unicode/utf8"
-
-	"go/ast"
-	"go/build"
-	"go/parser"
-	"go/scanner"
-	"go/token"
-
-	"golang.org/x/mobile/bind"
-	"golang.org/x/tools/go/loader"
-	"golang.org/x/tools/go/types"
-)
-
-func genPkg(pkg *build.Package) {
-	if len(pkg.CgoFiles) > 0 {
-		errorf("gobind: cannot use cgo-dependent package as service definition: %s", pkg.CgoFiles[0])
-		return
-	}
-
-	files := parseFiles(pkg.Dir, pkg.GoFiles)
-	if len(files) == 0 {
-		return // some error has been reported
-	}
-
-	conf := loader.Config{
-		Fset: fset,
-	}
-	conf.TypeChecker.Error = func(err error) {
-		errorf("%v", err)
-	}
-	conf.CreateFromFiles(pkg.ImportPath, files...)
-	program, err := conf.Load()
-	if err != nil {
-		errorf("%v", err)
-		return
-	}
-	p := program.Created[0].Pkg
-
-	w, closer, err := writer(*lang, p)
-	if err != nil {
-		errorf("%v", err)
-		return
-	}
-
-	switch *lang {
-	case "java":
-		err = bind.GenJava(w, fset, p)
-	case "go":
-		err = bind.GenGo(w, fset, p)
-	default:
-		errorf("unknown target language: %q", *lang)
-	}
-
-	if err != nil {
-		if list, _ := err.(bind.ErrorList); len(list) > 0 {
-			for _, err := range list {
-				errorf("%v", err)
-			}
-		} else {
-			errorf("%v", err)
-		}
-	}
-	if err := closer(); err != nil {
-		errorf("error in closing output: %v", err)
-	}
-}
-
-var fset = token.NewFileSet()
-
-func parseFiles(dir string, filenames []string) []*ast.File {
-	var files []*ast.File
-	hasErr := false
-	for _, filename := range filenames {
-		path := filepath.Join(dir, filename)
-		file, err := parser.ParseFile(fset, path, nil, parser.AllErrors)
-		if err != nil {
-			hasErr = true
-			if list, _ := err.(scanner.ErrorList); len(list) > 0 {
-				for _, err := range list {
-					errorf("%v", err)
-				}
-			} else {
-				errorf("%v", err)
-			}
-		}
-		files = append(files, file)
-	}
-	if hasErr {
-		return nil
-	}
-	return files
-}
-
-func writer(lang string, pkg *types.Package) (w io.Writer, closer func() error, err error) {
-	if *outdir == "" {
-		return os.Stdout, func() error { return nil }, nil
-	}
-
-	// TODO(hakim): support output of multiple files e.g. .h/.m files for objc.
-
-	if err := os.MkdirAll(*outdir, 0755); err != nil {
-		return nil, nil, fmt.Errorf("invalid output dir: %v\n", err)
-	}
-	fname := defaultFileName(lang, pkg)
-	f, err := os.Create(filepath.Join(*outdir, fname))
-	if err != nil {
-		return nil, nil, fmt.Errorf("invalid output dir: %v\n", err)
-	}
-	return f, f.Close, nil
-}
-
-func defaultFileName(lang string, pkg *types.Package) string {
-	switch lang {
-	case "java":
-		firstRune, size := utf8.DecodeRuneInString(pkg.Name())
-		className := string(unicode.ToUpper(firstRune)) + pkg.Name()[size:]
-		return className + ".java"
-	case "go":
-		return "go_" + pkg.Name() + ".go"
-	}
-	errorf("unknown target language: %q", lang)
-	os.Exit(exitStatus)
-	return ""
-}
diff --git a/go/src/golang.org/x/mobile/cmd/gobind/main.go b/go/src/golang.org/x/mobile/cmd/gobind/main.go
deleted file mode 100644
index 6ba74de..0000000
--- a/go/src/golang.org/x/mobile/cmd/gobind/main.go
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2014 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 (
-	"flag"
-	"fmt"
-	"go/build"
-	"log"
-	"os"
-)
-
-var (
-	lang   = flag.String("lang", "java", "target language for bindings, either java or go.")
-	outdir = flag.String("outdir", "", "result will be written to the directory instead of stdout.")
-)
-
-var usage = `The Gobind tool generates Java language bindings for Go.
-
-For usage details, see doc.go.`
-
-func main() {
-	flag.Parse()
-
-	cwd, err := os.Getwd()
-	if err != nil {
-		log.Fatal(err)
-	}
-	for _, arg := range flag.Args() {
-		pkg, err := build.Import(arg, cwd, 0)
-		if err != nil {
-			fmt.Fprintf(os.Stderr, "%s: %v\n", arg, err)
-			os.Exit(1)
-		}
-		genPkg(pkg)
-	}
-	os.Exit(exitStatus)
-}
-
-var exitStatus = 0
-
-func errorf(format string, args ...interface{}) {
-	fmt.Fprintf(os.Stderr, format, args...)
-	fmt.Fprintln(os.Stderr)
-	exitStatus = 1
-}
diff --git a/go/src/golang.org/x/mobile/cmd/gomobile/binary_xml.go b/go/src/golang.org/x/mobile/cmd/gomobile/binary_xml.go
deleted file mode 100644
index 7b11aaa..0000000
--- a/go/src/golang.org/x/mobile/cmd/gomobile/binary_xml.go
+++ /dev/null
@@ -1,694 +0,0 @@
-// Copyright 2015 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 (
-	"encoding/xml"
-	"fmt"
-	"io"
-	"sort"
-	"strconv"
-	"strings"
-	"unicode/utf16"
-)
-
-// binaryXML converts XML into Android's undocumented binary XML format.
-//
-// The best source of information on this format seems to be the source code
-// in AOSP frameworks-base. Android "resource" types seem to describe the
-// encoded bytes, in particular:
-//
-//	ResChunk_header
-//	ResStringPool_header
-//	ResXMLTree_node
-//
-// These are defined in:
-//
-//	https://android.googlesource.com/platform/frameworks/base/+/master/include/androidfw/ResourceTypes.h
-//
-// The rough format of the file is a resource chunk containing a sequence of
-// chunks. Each chunk is made up of a header and a body. The header begins with
-// the contents of the ResChunk_header struct, which includes the size of both
-// the header and the body.
-//
-// Both the header and body are 4-byte aligned.
-//
-// Values are encoded as little-endian.
-//
-// The android source code for encoding is done in the aapt tool. Its source
-// code lives in AOSP:
-//
-//	https://android.googlesource.com/platform/frameworks/base.git/+/master/tools/aapt
-//
-// A sample layout:
-//
-//	File Header (ResChunk_header, type XML)
-//	Chunk: String Pool (type STRING_POOL)
-//	Sequence of strings, each with the format:
-//		uint16 length
-//		uint16 extended_length -- only if top bit set on length
-//		UTF-16LE string
-//		two zero bytes
-//	Resource Map
-//		The [i]th 4-byte entry in the resource map corresponds with
-//		the [i]th string from the string pool. The 4-bytes are a
-//		Resource ID constant defined:
-//			http://developer.android.com/reference/android/R.attr.html
-//		This appears to be a way to map strings onto enum values.
-//	Chunk: Namespace Start (ResXMLTree_node; ResXMLTree_namespaceExt)
-//	Chunk: Element Start
-//		ResXMLTree_node
-//		ResXMLTree_attrExt
-//		ResXMLTree_attribute (repeated attributeCount times)
-//	Chunk: Element End
-//		(ResXMLTree_node; ResXMLTree_endElementExt)
-//	...
-//	Chunk: Namespace End
-func binaryXML(r io.Reader) ([]byte, error) {
-	lr := &lineReader{r: r}
-	d := xml.NewDecoder(lr)
-
-	pool := new(binStringPool)
-	depth := 0
-	elements := []chunk{}
-	namespaceEnds := make(map[int][]binEndNamespace)
-
-	for {
-		line := lr.line(d.InputOffset())
-		tok, err := d.Token()
-		if err != nil {
-			if err == io.EOF {
-				break
-			}
-			return nil, err
-		}
-		switch tok := tok.(type) {
-		case xml.StartElement:
-			// Intercept namespace definitions.
-			var attr []*binAttr
-			for _, a := range tok.Attr {
-				if a.Name.Space == "xmlns" {
-					elements = append(elements, binStartNamespace{
-						line:   line,
-						prefix: pool.get(a.Name.Local),
-						url:    pool.get(a.Value),
-					})
-					namespaceEnds[depth] = append([]binEndNamespace{{
-						line:   line,
-						prefix: pool.get(a.Name.Local),
-						url:    pool.get(a.Value),
-					}}, namespaceEnds[depth]...)
-					continue
-				}
-				ba, err := pool.getAttr(a)
-				if err != nil {
-					return nil, fmt.Errorf("%d: %s: %v", line, a.Name.Local, err)
-				}
-				attr = append(attr, ba)
-			}
-
-			depth++
-			elements = append(elements, &binStartElement{
-				line: line,
-				ns:   pool.getNS(tok.Name.Space),
-				name: pool.get(tok.Name.Local),
-				attr: attr,
-			})
-		case xml.EndElement:
-			elements = append(elements, &binEndElement{
-				line: line,
-				ns:   pool.getNS(tok.Name.Space),
-				name: pool.get(tok.Name.Local),
-			})
-			depth--
-			if nsEnds := namespaceEnds[depth]; len(nsEnds) > 0 {
-				delete(namespaceEnds, depth)
-				for _, nsEnd := range nsEnds {
-					elements = append(elements, nsEnd)
-				}
-			}
-		case xml.CharData:
-			// The aapt tool appears to "compact" leading and
-			// trailing whitepsace. See XMLNode::removeWhitespace in
-			// https://android.googlesource.com/platform/frameworks/base.git/+/master/tools/aapt/XMLNode.cpp
-			if len(tok) == 0 {
-				continue
-			}
-			start, end := 0, len(tok)
-			for start < len(tok) && isSpace(tok[start]) {
-				start++
-			}
-			for end > start && isSpace(tok[end-1]) {
-				end--
-			}
-			if start == end {
-				continue // all whitespace, skip it
-			}
-
-			// Preserve one character of whitespace.
-			if start > 0 {
-				start--
-			}
-			if end < len(tok) {
-				end++
-			}
-
-			elements = append(elements, &binCharData{
-				line: line,
-				data: pool.get(string(tok[start:end])),
-			})
-		case xml.Comment:
-			// Ignored by Anroid Binary XML format.
-		case xml.ProcInst:
-			// Ignored by Anroid Binary XML format?
-		case xml.Directive:
-			// Ignored by Anroid Binary XML format.
-		default:
-			return nil, fmt.Errorf("apk: unexpected token: %v (%T)", tok, tok)
-		}
-	}
-
-	sortPool(pool)
-	for _, e := range elements {
-		if e, ok := e.(*binStartElement); ok {
-			sortAttr(e, pool)
-		}
-	}
-
-	resMap := &binResMap{pool}
-
-	size := 8 + pool.size() + resMap.size()
-	for _, e := range elements {
-		size += e.size()
-	}
-
-	b := make([]byte, 0, size)
-	b = appendHeader(b, headerXML, size)
-	b = pool.append(b)
-	b = resMap.append(b)
-	for _, e := range elements {
-		b = e.append(b)
-	}
-
-	return b, nil
-}
-
-func isSpace(b byte) bool {
-	switch b {
-	case '\t', '\n', '\v', '\f', '\r', ' ', 0x85, 0xA0:
-		return true
-	}
-	return false
-}
-
-type headerType uint16
-
-const (
-	headerXML            headerType = 0x0003
-	headerStringPool                = 0x0001
-	headerResourceMap               = 0x0180
-	headerStartNamespace            = 0x0100
-	headerEndNamespace              = 0x0101
-	headerStartElement              = 0x0102
-	headerEndElement                = 0x0103
-	headerCharData                  = 0x0104
-)
-
-func appendU16(b []byte, v uint16) []byte {
-	return append(b, byte(v), byte(v>>8))
-}
-
-func appendU32(b []byte, v uint32) []byte {
-	return append(b, byte(v), byte(v>>8), byte(v>>16), byte(v>>24))
-}
-
-func appendHeader(b []byte, typ headerType, size int) []byte {
-	b = appendU16(b, uint16(typ))
-	b = appendU16(b, 8)
-	b = appendU16(b, uint16(size))
-	b = appendU16(b, 0)
-	return b
-}
-
-// Attributes of the form android:key are mapped to resource IDs, which are
-// embedded into the Binary XML format.
-//
-// http://developer.android.com/reference/android/R.attr.html
-var resourceCodes = map[string]uint32{
-	"versionCode":      0x0101021b,
-	"versionName":      0x0101021c,
-	"minSdkVersion":    0x0101020c,
-	"windowFullscreen": 0x0101020d,
-	"label":            0x01010001,
-	"hasCode":          0x0101000c,
-	"debuggable":       0x0101000f,
-	"name":             0x01010003,
-	"configChanges":    0x0101001f,
-	"value":            0x01010024,
-}
-
-// http://developer.android.com/reference/android/R.attr.html#configChanges
-var configChanges = map[string]uint32{
-	"mcc":                0x0001,
-	"mnc":                0x0002,
-	"locale":             0x0004,
-	"touchscreen":        0x0008,
-	"keyboard":           0x0010,
-	"keyboardHidden":     0x0020,
-	"navigation":         0x0040,
-	"orientation":        0x0080,
-	"screenLayout":       0x0100,
-	"uiMode":             0x0200,
-	"screenSize":         0x0400,
-	"smallestScreenSize": 0x0800,
-	"layoutDirection":    0x2000,
-	"fontScale":          0x40000000,
-}
-
-type lineReader struct {
-	off   int64
-	lines []int64
-	r     io.Reader
-}
-
-func (r *lineReader) Read(p []byte) (n int, err error) {
-	n, err = r.r.Read(p)
-	for i := 0; i < n; i++ {
-		if p[i] == '\n' {
-			r.lines = append(r.lines, r.off+int64(i))
-		}
-	}
-	r.off += int64(n)
-	return n, err
-}
-
-func (r *lineReader) line(pos int64) int {
-	return sort.Search(len(r.lines), func(i int) bool {
-		return pos < r.lines[i]
-	}) + 1
-}
-
-type bstring struct {
-	ind uint32
-	str string
-	enc []byte // 2-byte length, utf16le, 2-byte zero
-}
-
-type chunk interface {
-	size() int
-	append([]byte) []byte
-}
-
-type binResMap struct {
-	pool *binStringPool
-}
-
-func (p *binResMap) append(b []byte) []byte {
-	b = appendHeader(b, headerResourceMap, p.size())
-	for _, bstr := range p.pool.s {
-		c, ok := resourceCodes[bstr.str]
-		if !ok {
-			break
-		}
-		b = appendU32(b, c)
-	}
-	return b
-}
-
-func (p *binResMap) size() int {
-	count := 0
-	for _, bstr := range p.pool.s {
-		if _, ok := resourceCodes[bstr.str]; !ok {
-			break
-		}
-		count++
-	}
-	return 8 + 4*count
-}
-
-type binStringPool struct {
-	s []*bstring
-	m map[string]*bstring
-}
-
-func (p *binStringPool) get(str string) *bstring {
-	if p.m == nil {
-		p.m = make(map[string]*bstring)
-	}
-	res := p.m[str]
-	if res != nil {
-		return res
-	}
-	res = &bstring{
-		ind: uint32(len(p.s)),
-		str: str,
-	}
-	p.s = append(p.s, res)
-	p.m[str] = res
-
-	if len(str)>>16 > 0 {
-		panic(fmt.Sprintf("string lengths over 1<<15 not yet supported, got len %d for string that starts %q", len(str), str[:100]))
-	}
-	strUTF16 := utf16.Encode([]rune(str))
-	res.enc = appendU16(nil, uint16(len(strUTF16)))
-	for _, w := range strUTF16 {
-		res.enc = appendU16(res.enc, w)
-	}
-	res.enc = appendU16(res.enc, 0)
-	return res
-}
-
-func (p *binStringPool) getNS(ns string) *bstring {
-	if ns == "" {
-		// Register empty string for inclusion in output (like aapt),
-		// but do not reference it from namespace elements.
-		p.get("")
-		return nil
-	}
-	return p.get(ns)
-}
-
-func (p *binStringPool) getAttr(attr xml.Attr) (*binAttr, error) {
-	a := &binAttr{
-		ns:   p.getNS(attr.Name.Space),
-		name: p.get(attr.Name.Local),
-	}
-	if attr.Name.Space != "http://schemas.android.com/apk/res/android" {
-		a.data = p.get(attr.Value)
-		return a, nil
-	}
-
-	// Some android attributes have interesting values.
-	switch attr.Name.Local {
-	case "versionCode", "minSdkVersion":
-		v, err := strconv.Atoi(attr.Value)
-		if err != nil {
-			return nil, err
-		}
-		a.data = int(v)
-	case "hasCode", "debuggable":
-		v, err := strconv.ParseBool(attr.Value)
-		if err != nil {
-			return nil, err
-		}
-		a.data = v
-	case "configChanges":
-		v := uint32(0)
-		for _, c := range strings.Split(attr.Value, "|") {
-			v |= configChanges[c]
-		}
-		a.data = v
-	default:
-		a.data = p.get(attr.Value)
-	}
-	return a, nil
-}
-
-const stringPoolPreamble = 0 +
-	8 + // chunk header
-	4 + // string count
-	4 + // style count
-	4 + // flags
-	4 + // strings start
-	4 + // styles start
-	0
-
-func (p *binStringPool) unpaddedSize() int {
-	strLens := 0
-	for _, s := range p.s {
-		strLens += len(s.enc)
-	}
-	return stringPoolPreamble + 4*len(p.s) + strLens
-}
-
-func (p *binStringPool) size() int {
-	size := p.unpaddedSize()
-	size += size % 0x04
-	return size
-}
-
-// overloaded for testing.
-var (
-	sortPool = func(p *binStringPool) {
-		sort.Sort(p)
-
-		// Move resourceCodes to the front.
-		s := make([]*bstring, 0)
-		m := make(map[string]*bstring)
-		for str := range resourceCodes {
-			bstr := p.m[str]
-			if bstr == nil {
-				continue
-			}
-			bstr.ind = uint32(len(s))
-			s = append(s, bstr)
-			m[str] = bstr
-			delete(p.m, str)
-		}
-		for _, bstr := range p.m {
-			bstr.ind = uint32(len(s))
-			s = append(s, bstr)
-		}
-		p.s = s
-		p.m = m
-	}
-	sortAttr = func(e *binStartElement, p *binStringPool) {}
-)
-
-func (b *binStringPool) Len() int           { return len(b.s) }
-func (b *binStringPool) Less(i, j int) bool { return b.s[i].str < b.s[j].str }
-func (b *binStringPool) Swap(i, j int) {
-	b.s[i], b.s[j] = b.s[j], b.s[i]
-	b.s[i].ind, b.s[j].ind = b.s[j].ind, b.s[i].ind
-}
-
-func (p *binStringPool) append(b []byte) []byte {
-	stringsStart := uint32(stringPoolPreamble + 4*len(p.s))
-	b = appendU16(b, uint16(headerStringPool))
-	b = appendU16(b, 0x1c) // chunk header size
-	b = appendU16(b, uint16(p.size()))
-	b = appendU16(b, 0)
-	b = appendU32(b, uint32(len(p.s)))
-	b = appendU32(b, 0) // style count
-	b = appendU32(b, 0) // flags
-	b = appendU32(b, stringsStart)
-	b = appendU32(b, 0) // styles start
-
-	off := 0
-	for _, bstr := range p.s {
-		b = appendU32(b, uint32(off))
-		off += len(bstr.enc)
-	}
-	for _, bstr := range p.s {
-		b = append(b, bstr.enc...)
-	}
-
-	for i := p.unpaddedSize() % 0x04; i > 0; i-- {
-		b = append(b, 0)
-	}
-	return b
-}
-
-type binStartElement struct {
-	line int
-	ns   *bstring
-	name *bstring
-	attr []*binAttr
-}
-
-func (e *binStartElement) size() int {
-	return 8 + // chunk header
-		4 + // line number
-		4 + // comment
-		4 + // ns
-		4 + // name
-		2 + 2 + 2 + // attribute start, size, count
-		2 + 2 + 2 + // id/class/style index
-		len(e.attr)*(4+4+4+4+4)
-}
-
-func (e *binStartElement) append(b []byte) []byte {
-	b = appendU16(b, uint16(headerStartElement))
-	b = appendU16(b, 0x10) // chunk header size
-	b = appendU16(b, uint16(e.size()))
-	b = appendU16(b, 0)
-	b = appendU32(b, uint32(e.line))
-	b = appendU32(b, 0xffffffff) // comment
-	if e.ns == nil {
-		b = appendU32(b, 0xffffffff)
-	} else {
-		b = appendU32(b, e.ns.ind)
-	}
-	b = appendU32(b, e.name.ind)
-	b = appendU16(b, 0x14) // attribute start
-	b = appendU16(b, 0x14) // attribute size
-	b = appendU16(b, uint16(len(e.attr)))
-	b = appendU16(b, 0) // ID index (none)
-	b = appendU16(b, 0) // class index (none)
-	b = appendU16(b, 0) // style index (none)
-	for _, a := range e.attr {
-		b = a.append(b)
-	}
-	return b
-}
-
-type binAttr struct {
-	ns   *bstring
-	name *bstring
-	data interface{} // either int (INT_DEC) or *bstring (STRING)
-}
-
-func (a *binAttr) append(b []byte) []byte {
-	if a.ns != nil {
-		b = appendU32(b, a.ns.ind)
-	} else {
-		b = appendU32(b, 0xffffffff)
-	}
-	b = appendU32(b, a.name.ind)
-	switch v := a.data.(type) {
-	case int:
-		b = appendU32(b, 0xffffffff) // raw value
-		b = appendU16(b, 8)          // size
-		b = append(b, 0)             // unused padding
-		b = append(b, 0x10)          // INT_DEC
-		b = appendU32(b, uint32(v))
-	case bool:
-		b = appendU32(b, 0xffffffff) // raw value
-		b = appendU16(b, 8)          // size
-		b = append(b, 0)             // unused padding
-		b = append(b, 0x12)          // INT_BOOLEAN
-		if v {
-			b = appendU32(b, 0xffffffff)
-		} else {
-			b = appendU32(b, 0)
-		}
-	case uint32:
-		b = appendU32(b, 0xffffffff) // raw value
-		b = appendU16(b, 8)          // size
-		b = append(b, 0)             // unused padding
-		b = append(b, 0x11)          // INT_HEX
-		b = appendU32(b, uint32(v))
-	case *bstring:
-		b = appendU32(b, v.ind) // raw value
-		b = appendU16(b, 8)     // size
-		b = append(b, 0)        // unused padding
-		b = append(b, 0x03)     // STRING
-		b = appendU32(b, v.ind)
-	default:
-		panic(fmt.Sprintf("unexpected attr type: %T (%v)", v, v))
-	}
-	return b
-}
-
-type binEndElement struct {
-	line int
-	ns   *bstring
-	name *bstring
-	attr []*binAttr
-}
-
-func (*binEndElement) size() int {
-	return 8 + // chunk header
-		4 + // line number
-		4 + // comment
-		4 + // ns
-		4 // name
-}
-
-func (e *binEndElement) append(b []byte) []byte {
-	b = appendU16(b, uint16(headerEndElement))
-	b = appendU16(b, 0x10) // chunk header size
-	b = appendU16(b, uint16(e.size()))
-	b = appendU16(b, 0)
-	b = appendU32(b, uint32(e.line))
-	b = appendU32(b, 0xffffffff) // comment
-	if e.ns == nil {
-		b = appendU32(b, 0xffffffff)
-	} else {
-		b = appendU32(b, e.ns.ind)
-	}
-	b = appendU32(b, e.name.ind)
-	return b
-}
-
-type binStartNamespace struct {
-	line   int
-	prefix *bstring
-	url    *bstring
-}
-
-func (binStartNamespace) size() int {
-	return 8 + // chunk header
-		4 + // line number
-		4 + // comment
-		4 + // prefix
-		4 // url
-}
-
-func (e binStartNamespace) append(b []byte) []byte {
-	b = appendU16(b, uint16(headerStartNamespace))
-	b = appendU16(b, 0x10) // chunk header size
-	b = appendU16(b, uint16(e.size()))
-	b = appendU16(b, 0)
-	b = appendU32(b, uint32(e.line))
-	b = appendU32(b, 0xffffffff) // comment
-	b = appendU32(b, e.prefix.ind)
-	b = appendU32(b, e.url.ind)
-	return b
-}
-
-type binEndNamespace struct {
-	line   int
-	prefix *bstring
-	url    *bstring
-}
-
-func (binEndNamespace) size() int {
-	return 8 + // chunk header
-		4 + // line number
-		4 + // comment
-		4 + // prefix
-		4 // url
-}
-
-func (e binEndNamespace) append(b []byte) []byte {
-	b = appendU16(b, uint16(headerEndNamespace))
-	b = appendU16(b, 0x10) // chunk header size
-	b = appendU16(b, uint16(e.size()))
-	b = appendU16(b, 0)
-	b = appendU32(b, uint32(e.line))
-	b = appendU32(b, 0xffffffff) // comment
-	b = appendU32(b, e.prefix.ind)
-	b = appendU32(b, e.url.ind)
-	return b
-}
-
-type binCharData struct {
-	line int
-	data *bstring
-}
-
-func (*binCharData) size() int {
-	return 8 + // chunk header
-		4 + // line number
-		4 + // comment
-		4 + // data
-		8 // junk
-}
-
-func (e *binCharData) append(b []byte) []byte {
-	b = appendU16(b, uint16(headerCharData))
-	b = appendU16(b, 0x10) // chunk header size
-	b = appendU16(b, 0x1c) // size
-	b = appendU16(b, 0)
-	b = appendU32(b, uint32(e.line))
-	b = appendU32(b, 0xffffffff) // comment
-	b = appendU32(b, e.data.ind)
-	b = appendU16(b, 0x08)
-	b = appendU16(b, 0)
-	b = appendU16(b, 0)
-	b = appendU16(b, 0)
-	return b
-}
diff --git a/go/src/golang.org/x/mobile/cmd/gomobile/binary_xml_test.go b/go/src/golang.org/x/mobile/cmd/gomobile/binary_xml_test.go
deleted file mode 100644
index 5f4b227..0000000
--- a/go/src/golang.org/x/mobile/cmd/gomobile/binary_xml_test.go
+++ /dev/null
@@ -1,756 +0,0 @@
-// Copyright 2015 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"
-	"flag"
-	"io/ioutil"
-	"log"
-	"testing"
-)
-
-var dump = flag.Bool("dump", false, "dump junk.bin binary output")
-
-var (
-	origSortPool = sortPool
-	origSortAttr = sortAttr
-)
-
-func TestBinaryXML(t *testing.T) {
-	sortPool, sortAttr = sortToMatchTest, sortAttrToMatchTest
-	defer func() { sortPool, sortAttr = origSortPool, origSortAttr }()
-
-	got, err := binaryXML(bytes.NewBufferString(input))
-	if err != nil {
-		t.Fatal(err)
-	}
-	if *dump {
-		if err := ioutil.WriteFile("junk.bin", got, 0660); err != nil {
-			t.Fatal(err)
-		}
-	}
-
-	skipByte := map[int]bool{
-		0x04ec: true, // line number of fake </uses-sdk> off by one
-		0x0610: true, // line number of fake </meta-data> off by one
-		0x064c: true, // line number of CData off by one
-		0x06a0: true, // line number of fake </action> off by one
-		0x06f0: true, // line number of fake </category> off by one
-		0x0768: true, // line number of fake *end namespace* off by one
-	}
-
-	for i, o := range output {
-		if skipByte[i] {
-			continue
-		}
-		if i >= len(got) || o != got[i] {
-			t.Errorf("mismatch at %04x", i)
-			break
-		}
-	}
-}
-
-// The output of the Android encoder seems to be arbitrary. So for testing,
-// we sort the string pool order to match the output we have seen.
-func sortToMatchTest(p *binStringPool) {
-	var names = []string{
-		"versionCode",
-		"versionName",
-		"minSdkVersion",
-		"label",
-		"hasCode",
-		"debuggable",
-		"name",
-		"configChanges",
-		"value",
-		"android",
-		"http://schemas.android.com/apk/res/android",
-		"",
-		"package",
-		"manifest",
-		"com.zentus.balloon",
-		"1.0",
-		"uses-sdk",
-		"application",
-		"Balloon世界",
-		"activity",
-		"android.app.NativeActivity",
-		"Balloon",
-		"meta-data",
-		"android.app.lib_name",
-		"balloon",
-		"intent-filter",
-		"\there is some text\n",
-		"action",
-		"android.intent.action.MAIN",
-		"category",
-		"android.intent.category.LAUNCHER",
-	}
-
-	s := make([]*bstring, 0)
-	m := make(map[string]*bstring)
-
-	for _, str := range names {
-		bstr := p.m[str]
-		if bstr == nil {
-			log.Printf("missing %q", str)
-			continue
-		}
-		bstr.ind = uint32(len(s))
-		s = append(s, bstr)
-		m[str] = bstr
-		delete(p.m, str)
-	}
-	// add unexpected strings
-	for str, bstr := range p.m {
-		log.Printf("unexpected %q", str)
-		bstr.ind = uint32(len(s))
-		s = append(s, bstr)
-	}
-	p.s = s
-	p.m = m
-}
-
-func sortAttrToMatchTest(e *binStartElement, p *binStringPool) {
-	order := []string{
-		"versionCode",
-		"versionName",
-		"versionPackage",
-
-		"label",
-		"name",
-		"configChanges",
-	}
-	ordered := make([]*binAttr, len(order))
-
-outer:
-	for i, n := range order {
-		for j, a := range e.attr {
-			if a != nil && a.name.str == n {
-				ordered[i] = a
-				e.attr[j] = nil
-				continue outer
-			}
-		}
-	}
-	var attr []*binAttr
-	for _, a := range ordered {
-		if a != nil {
-			attr = append(attr, a)
-		}
-	}
-	for _, a := range e.attr {
-		if a != nil {
-			attr = append(attr, a)
-		}
-	}
-	e.attr = attr
-}
-
-// Hexdump of output generated by the Android SDK's ant build system.
-// Annotated after studying Android source code.
-var output = []byte{
-	/* 0000 */ 0x03, 0x00, 0x08, 0x00, //  chunk header XML
-	/* 0004 */ 0x78, 0x07, 0x00, 0x00, //  chunk size 1912
-
-	/* 0008 */ 0x01, 0x00, 0x1c, 0x00, //  chunk header STRING_POOL
-	/* 000c */ 0x00, 0x04, 0x00, 0x00, //  chunk size 1024
-	/* 0010 */ 0x1f, 0x00, 0x00, 0x00, //  string count 31
-	/* 0014 */ 0x00, 0x00, 0x00, 0x00, //  style count 0
-	/* 0018 */ 0x00, 0x00, 0x00, 0x00, //  flags (none set means UTF-16)
-	/* 001c */ 0x98, 0x00, 0x00, 0x00, //  strings_start 0x98+0x08 = 0xa0
-	/* 0020 */ 0x00, 0x00, 0x00, 0x00, //  styles_start (none)
-	/* 0024 */ 0x00, 0x00, 0x00, 0x00, //  string offset [0x00] (from strings_start)
-	/* 0028 */ 0x1a, 0x00, 0x00, 0x00, //  string offset [0x01]
-	/* 002c */ 0x34, 0x00, 0x00, 0x00, //  string offset [0x02]
-	/* 0030 */ 0x52, 0x00, 0x00, 0x00, //  string offset [0x03]
-	/* 0034 */ 0x60, 0x00, 0x00, 0x00, //  string offset [0x04]
-	/* 0038 */ 0x72, 0x00, 0x00, 0x00, //  string offset [0x05]
-	/* 003c */ 0x8a, 0x00, 0x00, 0x00, //  string offset [0x06]
-	/* 0040 */ 0x96, 0x00, 0x00, 0x00, //  string offset [0x07]
-	/* 0044 */ 0xb4, 0x00, 0x00, 0x00, //  string offset [0x08]
-	/* 0048 */ 0xc2, 0x00, 0x00, 0x00, //  string offset [0x09]
-	/* 004c */ 0xd4, 0x00, 0x00, 0x00, //  string offset [0x0a]
-	/* 0050 */ 0x2c, 0x01, 0x00, 0x00, //  string offset [0x0b]
-	/* 0054 */ 0x30, 0x01, 0x00, 0x00, //  string offset [0x0c]
-	/* 0058 */ 0x42, 0x01, 0x00, 0x00, //  string offset [0x0d]
-	/* 005c */ 0x56, 0x01, 0x00, 0x00, //  string offset [0x0e]
-	/* 0060 */ 0x7e, 0x01, 0x00, 0x00, //  string offset [0x0f]
-	/* 0064 */ 0x88, 0x01, 0x00, 0x00, //  string offset [0x10]
-	/* 0068 */ 0x9c, 0x01, 0x00, 0x00, //  string offset [0x11]
-	/* 006c */ 0xb6, 0x01, 0x00, 0x00, //  string offset [0x12]
-	/* 0070 */ 0xcc, 0x01, 0x00, 0x00, //  string offset [0x13]
-	/* 0074 */ 0xe0, 0x01, 0x00, 0x00, //  string offset [0x14]
-	/* 0078 */ 0x18, 0x02, 0x00, 0x00, //  string offset [0x15]
-	/* 007c */ 0x2a, 0x02, 0x00, 0x00, //  string offset [0x16]
-	/* 0080 */ 0x40, 0x02, 0x00, 0x00, //  string offset [0x17]
-	/* 0084 */ 0x6c, 0x02, 0x00, 0x00, //  string offset [0x18]
-	/* 0088 */ 0x7e, 0x02, 0x00, 0x00, //  string offset [0x19]
-	/* 008c */ 0x9c, 0x02, 0x00, 0x00, //  string offset [0x1a]
-	/* 0090 */ 0xc6, 0x02, 0x00, 0x00, //  string offset [0x1b]
-	/* 0094 */ 0xd6, 0x02, 0x00, 0x00, //  string offset [0x1c]
-	/* 0098 */ 0x0e, 0x03, 0x00, 0x00, //  string offset [0x1d]
-	/* 009c */ 0x22, 0x03, 0x00, 0x00, //  string offset [0x1e]
-	/* 00a0 */ 0x0b, 0x00, 0x76, 0x00, //  [0x00] len=11 value="versionCode"
-	/* 00a4 */ 0x65, 0x00, 0x72, 0x00,
-	/* 00a8 */ 0x73, 0x00, 0x69, 0x00,
-	/* 00ac */ 0x6f, 0x00, 0x6e, 0x00,
-	/* 00b0 */ 0x43, 0x00, 0x6f, 0x00,
-	/* 00b4 */ 0x64, 0x00, 0x65, 0x00,
-	/* 00b8 */ 0x00, 0x00,
-	/* 00ba */ 0x0b, 0x00, //  [0x01] len=11 value="versionName"
-	/* 00bc */ 0x76, 0x00, 0x65, 0x00,
-	/* 00c0 */ 0x72, 0x00, 0x73, 0x00,
-	/* 00c4 */ 0x69, 0x00, 0x6f, 0x00,
-	/* 00c8 */ 0x6e, 0x00, 0x4e, 0x00,
-	/* 00cc */ 0x61, 0x00, 0x6d, 0x00,
-	/* 00d0 */ 0x65, 0x00, 0x00, 0x00,
-	/* 00d4 */ 0x0d, 0x00, 0x6d, 0x00, //  [0x02] len=13 value="minSdkVersion"
-	/* 00d8 */ 0x69, 0x00, 0x6e, 0x00,
-	/* 00dc */ 0x53, 0x00, 0x64, 0x00,
-	/* 00e0 */ 0x6b, 0x00, 0x56, 0x00,
-	/* 00e4 */ 0x65, 0x00, 0x72, 0x00,
-	/* 00e8 */ 0x73, 0x00, 0x69, 0x00,
-	/* 00ec */ 0x6f, 0x00, 0x6e, 0x00,
-	/* 00f0 */ 0x00, 0x00,
-	/* 00f2 */ 0x05, 0x00, //  [0x03] len=5 value="label"
-	/* 00f4 */ 0x6c, 0x00, 0x61, 0x00,
-	/* 00f8 */ 0x62, 0x00, 0x65, 0x00,
-	/* 00fc */ 0x6c, 0x00, 0x00, 0x00,
-	/* 0100 */ 0x07, 0x00, 0x68, 0x00, //  [0x04] len=7 value="hasCode"
-	/* 0104 */ 0x61, 0x00, 0x73, 0x00,
-	/* 0108 */ 0x43, 0x00, 0x6f, 0x00,
-	/* 010c */ 0x64, 0x00, 0x65, 0x00,
-	/* 0110 */ 0x00, 0x00,
-	/* 0112 */ 0x0a, 0x00, //  [0x05] len=10 value="debuggable"
-	/* 0114 */ 0x64, 0x00, 0x65, 0x00,
-	/* 0118 */ 0x62, 0x00, 0x75, 0x00,
-	/* 011c */ 0x67, 0x00, 0x67, 0x00,
-	/* 0120 */ 0x61, 0x00, 0x62, 0x00,
-	/* 0124 */ 0x6c, 0x00, 0x65, 0x00,
-	/* 0128 */ 0x00, 0x00,
-	/* 012a */ 0x04, 0x00, //  [0x06] len=4 value="name"
-	/* 012c */ 0x6e, 0x00, 0x61, 0x00,
-	/* 0130 */ 0x6d, 0x00, 0x65, 0x00,
-	/* 0134 */ 0x00, 0x00,
-	/* 0136 */ 0x0d, 0x00, //  [0x07] len=13 value="configChanges"
-	/* 0138 */ 0x63, 0x00, 0x6f, 0x00,
-	/* 013c */ 0x6e, 0x00, 0x66, 0x00,
-	/* 0140 */ 0x69, 0x00, 0x67, 0x00,
-	/* 0144 */ 0x43, 0x00, 0x68, 0x00,
-	/* 0148 */ 0x61, 0x00, 0x6e, 0x00,
-	/* 014c */ 0x67, 0x00, 0x65, 0x00,
-	/* 0150 */ 0x73, 0x00, 0x00, 0x00,
-	/* 0154 */ 0x05, 0x00, 0x76, 0x00, //  [0x08] len=5 value="value"
-	/* 0158 */ 0x61, 0x00, 0x6c, 0x00,
-	/* 015c */ 0x75, 0x00, 0x65, 0x00,
-	/* 0160 */ 0x00, 0x00,
-	/* 0162 */ 0x07, 0x00, //  [0x09] len=7 value="android"
-	/* 0164 */ 0x61, 0x00, 0x6e, 0x00,
-	/* 0168 */ 0x64, 0x00, 0x72, 0x00,
-	/* 016c */ 0x6f, 0x00, 0x69, 0x00,
-	/* 0170 */ 0x64, 0x00, 0x00, 0x00,
-	/* 0174 */ 0x2a, 0x00, 0x68, 0x00, //  [0x0a] len=42 value="http://schemas.android.com/apk/res/android"
-	/* 0178 */ 0x74, 0x00, 0x74, 0x00,
-	/* 017c */ 0x70, 0x00, 0x3a, 0x00,
-	/* 0180 */ 0x2f, 0x00, 0x2f, 0x00,
-	/* 0184 */ 0x73, 0x00, 0x63, 0x00,
-	/* 0188 */ 0x68, 0x00, 0x65, 0x00,
-	/* 018c */ 0x6d, 0x00, 0x61, 0x00,
-	/* 0190 */ 0x73, 0x00, 0x2e, 0x00,
-	/* 0194 */ 0x61, 0x00, 0x6e, 0x00,
-	/* 0198 */ 0x64, 0x00, 0x72, 0x00,
-	/* 019c */ 0x6f, 0x00, 0x69, 0x00,
-	/* 01a0 */ 0x64, 0x00, 0x2e, 0x00,
-	/* 01a4 */ 0x63, 0x00, 0x6f, 0x00,
-	/* 01a8 */ 0x6d, 0x00, 0x2f, 0x00,
-	/* 01ac */ 0x61, 0x00, 0x70, 0x00,
-	/* 01b0 */ 0x6b, 0x00, 0x2f, 0x00,
-	/* 01b4 */ 0x72, 0x00, 0x65, 0x00,
-	/* 01b8 */ 0x73, 0x00, 0x2f, 0x00,
-	/* 01bc */ 0x61, 0x00, 0x6e, 0x00,
-	/* 01c0 */ 0x64, 0x00, 0x72, 0x00,
-	/* 01c4 */ 0x6f, 0x00, 0x69, 0x00,
-	/* 01c8 */ 0x64, 0x00, 0x00, 0x00,
-	/* 01cc */ 0x00, 0x00, 0x00, 0x00, //  [0x0b] len=0 (sigh)
-	/* 01d0 */ 0x07, 0x00, 0x70, 0x00, //  [0x0c] len=7 value="package"
-	/* 01d4 */ 0x61, 0x00, 0x63, 0x00,
-	/* 01d8 */ 0x6b, 0x00, 0x61, 0x00,
-	/* 01dc */ 0x67, 0x00, 0x65, 0x00,
-	/* 01e0 */ 0x00, 0x00,
-	/* 01e2 */ 0x08, 0x00, //  [0x0d] len=8 value="manifest"
-	/* 01e4 */ 0x6d, 0x00, 0x61, 0x00,
-	/* 01e8 */ 0x6e, 0x00, 0x69, 0x00,
-	/* 01ec */ 0x66, 0x00, 0x65, 0x00,
-	/* 01f0 */ 0x73, 0x00, 0x74, 0x00,
-	/* 01f4 */ 0x00, 0x00,
-	/* 01f6 */ 0x12, 0x00, //  [0x0e] len=12 value="com.zentus.balloon"
-	/* 01f8 */ 0x63, 0x00, 0x6f, 0x00,
-	/* 01fc */ 0x6d, 0x00, 0x2e, 0x00,
-	/* 0200 */ 0x7a, 0x00, 0x65, 0x00,
-	/* 0204 */ 0x6e, 0x00, 0x74, 0x00,
-	/* 0208 */ 0x75, 0x00, 0x73, 0x00,
-	/* 020c */ 0x2e, 0x00, 0x62, 0x00,
-	/* 0210 */ 0x61, 0x00, 0x6c, 0x00,
-	/* 0214 */ 0x6c, 0x00, 0x6f, 0x00,
-	/* 0218 */ 0x6f, 0x00, 0x6e, 0x00,
-	/* 021c */ 0x00, 0x00,
-	/* 021e */ 0x03, 0x00, //  [0x0f] len=3 value="1.0"
-	/* 0220 */ 0x31, 0x00, 0x2e, 0x00,
-	/* 0224 */ 0x30, 0x00, 0x00, 0x00,
-	/* 0228 */ 0x08, 0x00, 0x75, 0x00, //  [0x10] len=8 value="uses-sdk"
-	/* 022c */ 0x73, 0x00, 0x65, 0x00,
-	/* 0230 */ 0x73, 0x00, 0x2d, 0x00,
-	/* 0234 */ 0x73, 0x00, 0x64, 0x00,
-	/* 0238 */ 0x6b, 0x00, 0x00, 0x00,
-	/* 023c */ 0x0b, 0x00, 0x61, 0x00, //  [0x11] len=11 value="application"
-	/* 0240 */ 0x70, 0x00, 0x70, 0x00,
-	/* 0244 */ 0x6c, 0x00, 0x69, 0x00,
-	/* 0248 */ 0x63, 0x00, 0x61, 0x00,
-	/* 024c */ 0x74, 0x00, 0x69, 0x00,
-	/* 0250 */ 0x6f, 0x00, 0x6e, 0x00,
-	/* 0254 */ 0x00, 0x00,
-	/* 0256 */ 0x09, 0x00, //  [0x12] len=9 value="Balloon世界" (UTF16-LE, 0x4e16 is "16 4e", etc)
-	/* 0258 */ 0x42, 0x00, 0x61, 0x00,
-	/* 025c */ 0x6c, 0x00, 0x6c, 0x00,
-	/* 0260 */ 0x6f, 0x00, 0x6f, 0x00,
-	/* 0264 */ 0x6e, 0x00, 0x16, 0x4e,
-	/* 0268 */ 0x4c, 0x75, 0x00, 0x00,
-	/* 026c */ 0x08, 0x00, 0x61, 0x00, //  [0x13] len=8 value="activity"
-	/* 0270 */ 0x63, 0x00, 0x74, 0x00,
-	/* 0274 */ 0x69, 0x00, 0x76, 0x00,
-	/* 0278 */ 0x69, 0x00, 0x74, 0x00,
-	/* 027c */ 0x79, 0x00, 0x00, 0x00,
-	/* 0280 */ 0x1a, 0x00, 0x61, 0x00, //  [0x14] len=26 value="android.app.NativeActivity"
-	/* 0284 */ 0x6e, 0x00, 0x64, 0x00,
-	/* 0288 */ 0x72, 0x00, 0x6f, 0x00,
-	/* 028c */ 0x69, 0x00, 0x64, 0x00,
-	/* 0290 */ 0x2e, 0x00, 0x61, 0x00,
-	/* 0294 */ 0x70, 0x00, 0x70, 0x00,
-	/* 0298 */ 0x2e, 0x00, 0x4e, 0x00,
-	/* 029c */ 0x61, 0x00, 0x74, 0x00,
-	/* 02a0 */ 0x69, 0x00, 0x76, 0x00,
-	/* 02a4 */ 0x65, 0x00, 0x41, 0x00,
-	/* 02a8 */ 0x63, 0x00, 0x74, 0x00,
-	/* 02ac */ 0x69, 0x00, 0x76, 0x00,
-	/* 02b0 */ 0x69, 0x00, 0x74, 0x00,
-	/* 02b4 */ 0x79, 0x00, 0x00, 0x00,
-	/* 02b8 */ 0x07, 0x00, 0x42, 0x00, //  [0x15] len=7 value="Balloon"
-	/* 02bc */ 0x61, 0x00, 0x6c, 0x00,
-	/* 02c0 */ 0x6c, 0x00, 0x6f, 0x00,
-	/* 02c4 */ 0x6f, 0x00, 0x6e, 0x00,
-	/* 02c8 */ 0x00, 0x00,
-	/* 02ca */ 0x09, 0x00, //  [0x16] len=9 value="meta-data"
-	/* 02cc */ 0x6d, 0x00, 0x65, 0x00,
-	/* 02d0 */ 0x74, 0x00, 0x61, 0x00,
-	/* 02d4 */ 0x2d, 0x00, 0x64, 0x00,
-	/* 02d8 */ 0x61, 0x00, 0x74, 0x00,
-	/* 02dc */ 0x61, 0x00, 0x00, 0x00,
-	/* 02e0 */ 0x14, 0x00, 0x61, 0x00, //  [0x17] len=20 value="android.app.lib_name"
-	/* 02e4 */ 0x6e, 0x00, 0x64, 0x00,
-	/* 02e8 */ 0x72, 0x00, 0x6f, 0x00,
-	/* 02ec */ 0x69, 0x00, 0x64, 0x00,
-	/* 02f0 */ 0x2e, 0x00, 0x61, 0x00,
-	/* 02f4 */ 0x70, 0x00, 0x70, 0x00,
-	/* 02f8 */ 0x2e, 0x00, 0x6c, 0x00,
-	/* 02fc */ 0x69, 0x00, 0x62, 0x00,
-	/* 0300 */ 0x5f, 0x00, 0x6e, 0x00,
-	/* 0304 */ 0x61, 0x00, 0x6d, 0x00,
-	/* 0308 */ 0x65, 0x00, 0x00, 0x00,
-	/* 030c */ 0x07, 0x00, 0x62, 0x00, //  [0x18] len=7 value="balloon"
-	/* 0310 */ 0x61, 0x00, 0x6c, 0x00,
-	/* 0314 */ 0x6c, 0x00, 0x6f, 0x00,
-	/* 0318 */ 0x6f, 0x00, 0x6e, 0x00,
-	/* 031c */ 0x00, 0x00,
-	/* 031e */ 0x0d, 0x00, //  [0x19] len=13 value="intent-filter"
-	/* 0320 */ 0x69, 0x00, 0x6e, 0x00,
-	/* 0324 */ 0x74, 0x00, 0x65, 0x00,
-	/* 0328 */ 0x6e, 0x00, 0x74, 0x00,
-	/* 032c */ 0x2d, 0x00, 0x66, 0x00,
-	/* 0330 */ 0x69, 0x00, 0x6c, 0x00,
-	/* 0334 */ 0x74, 0x00, 0x65, 0x00,
-	/* 0338 */ 0x72, 0x00, 0x00, 0x00,
-	/* 033c */ 0x13, 0x00, 0x09, 0x00, //  [0x1a] len=19 value="\there is some text\n"
-	/* 0340 */ 0x68, 0x00, 0x65, 0x00,
-	/* 0344 */ 0x72, 0x00, 0x65, 0x00,
-	/* 0348 */ 0x20, 0x00, 0x69, 0x00,
-	/* 034c */ 0x73, 0x00, 0x20, 0x00,
-	/* 0350 */ 0x73, 0x00, 0x6f, 0x00,
-	/* 0354 */ 0x6d, 0x00, 0x65, 0x00,
-	/* 0358 */ 0x20, 0x00, 0x74, 0x00,
-	/* 035c */ 0x65, 0x00, 0x78, 0x00,
-	/* 0360 */ 0x74, 0x00, 0x0a, 0x00,
-	/* 0364 */ 0x00, 0x00,
-	/* 0366 */ 0x06, 0x00, //  [0x1b] len=6 value="action"
-	/* 0368 */ 0x61, 0x00, 0x63, 0x00,
-	/* 036c */ 0x74, 0x00, 0x69, 0x00,
-	/* 0370 */ 0x6f, 0x00, 0x6e, 0x00,
-	/* 0374 */ 0x00, 0x00,
-	/* 0376 */ 0x1a, 0x00, //  [0x1c] len=26 value="android.intent.action.MAIN"
-	/* 0378 */ 0x61, 0x00, 0x6e, 0x00,
-	/* 037c */ 0x64, 0x00, 0x72, 0x00,
-	/* 0380 */ 0x6f, 0x00, 0x69, 0x00,
-	/* 0384 */ 0x64, 0x00, 0x2e, 0x00,
-	/* 0388 */ 0x69, 0x00, 0x6e, 0x00,
-	/* 038c */ 0x74, 0x00, 0x65, 0x00,
-	/* 0390 */ 0x6e, 0x00, 0x74, 0x00,
-	/* 0394 */ 0x2e, 0x00, 0x61, 0x00,
-	/* 0398 */ 0x63, 0x00, 0x74, 0x00,
-	/* 039c */ 0x69, 0x00, 0x6f, 0x00,
-	/* 03a0 */ 0x6e, 0x00, 0x2e, 0x00,
-	/* 03a4 */ 0x4d, 0x00, 0x41, 0x00,
-	/* 03a8 */ 0x49, 0x00, 0x4e, 0x00,
-	/* 03ac */ 0x00, 0x00,
-	/* 03ae */ 0x08, 0x00, //  [0x1d] len=8 value="category"
-	/* 03b0 */ 0x63, 0x00, 0x61, 0x00,
-	/* 03b4 */ 0x74, 0x00, 0x65, 0x00,
-	/* 03b8 */ 0x67, 0x00, 0x6f, 0x00,
-	/* 03bc */ 0x72, 0x00, 0x79, 0x00,
-	/* 03c0 */ 0x00, 0x00,
-	/* 03c2 */ 0x20, 0x00, //  [0x1e] len=32 value="android.intent.category.LAUNCHER"
-	/* 03c4 */ 0x61, 0x00, 0x6e, 0x00,
-	/* 03c8 */ 0x64, 0x00, 0x72, 0x00,
-	/* 03cc */ 0x6f, 0x00, 0x69, 0x00,
-	/* 03d0 */ 0x64, 0x00, 0x2e, 0x00,
-	/* 03d4 */ 0x69, 0x00, 0x6e, 0x00,
-	/* 03d8 */ 0x74, 0x00, 0x65, 0x00,
-	/* 03dc */ 0x6e, 0x00, 0x74, 0x00,
-	/* 03e0 */ 0x2e, 0x00, 0x63, 0x00,
-	/* 03e4 */ 0x61, 0x00, 0x74, 0x00,
-	/* 03e8 */ 0x65, 0x00, 0x67, 0x00,
-	/* 03ec */ 0x6f, 0x00, 0x72, 0x00,
-	/* 03f0 */ 0x79, 0x00, 0x2e, 0x00,
-	/* 03f4 */ 0x4c, 0x00, 0x41, 0x00,
-	/* 03f8 */ 0x55, 0x00, 0x4e, 0x00,
-	/* 03fc */ 0x43, 0x00, 0x48, 0x00,
-	/* 0400 */ 0x45, 0x00, 0x52, 0x00,
-	/* 0404 */ 0x00, 0x00,
-	/* 0406 */ 0x00, 0x00,
-	// End of STRING_POOL.
-
-	/* 0408 */ 0x80, 0x01, 0x08, 0x00, // chunk header XML_RESOURCE_MAP
-	/* 040c */ 0x2c, 0x00, 0x00, 0x00, // chunk size 44
-	/* 0410 */ 0x1b, 0x02, 0x01, 0x01, // 0x0101021b = versionCode
-	/* 0414 */ 0x1c, 0x02, 0x01, 0x01, // 0x0101021c = versionName
-	/* 0418 */ 0x0c, 0x02, 0x01, 0x01, // 0x0101020c = minSdkVersion
-	/* 041c */ 0x01, 0x00, 0x01, 0x01, // 0x01010001 = label
-	/* 0420 */ 0x0c, 0x00, 0x01, 0x01, // 0x0101000c = hasCode
-	/* 0424 */ 0x0f, 0x00, 0x01, 0x01, // 0x0101000f = debuggable
-	/* 0428 */ 0x03, 0x00, 0x01, 0x01, // 0x01010003 = name
-	/* 042c */ 0x1f, 0x00, 0x01, 0x01, // 0x0101001f = configChanges
-	/* 0430 */ 0x24, 0x00, 0x01, 0x01, // 0x01010024 = value
-
-	/* 0434 */ 0x00, 0x01, 0x10, 0x00, // chunk header XML_START_NAMESPACE
-	/* 0438 */ 0x18, 0x00, 0x00, 0x00, // chunk size 24
-	/* 043c */ 0x07, 0x00, 0x00, 0x00, // line number
-	/* 0440 */ 0xff, 0xff, 0xff, 0xff, // comment string reference
-	/* 0444 */ 0x09, 0x00, 0x00, 0x00, // prefix [0x09]="android"
-	/* 0448 */ 0x0a, 0x00, 0x00, 0x00, // url [0x0a]="http://schemas..."
-
-	// Start XML_START_ELEMENT
-	/* 044c */ 0x02, 0x01, 0x10, 0x00, // chunk header XML_START_ELEMENT
-	/* 0450 */ 0x60, 0x00, 0x00, 0x00, // chunk size 96
-	/* 0454 */ 0x07, 0x00, 0x00, 0x00, // line number
-	/* 0458 */ 0xff, 0xff, 0xff, 0xff, // comment ref
-	/* 045c */ 0xff, 0xff, 0xff, 0xff, // ns (start ResXMLTree_attrExt)
-	/* 0460 */ 0x0d, 0x00, 0x00, 0x00, // name [0x0d]="manifest"
-	/* 0464 */ 0x14, 0x00, // attribute start
-	/* 0466 */ 0x14, 0x00, // attribute size
-	/* 0468 */ 0x03, 0x00, // attribute count
-	/* 046a */ 0x00, 0x00, // ID index    (1-based, 0 means none)
-	/* 046c */ 0x00, 0x00, // class index (1-based, 0 means none)
-	/* 046e */ 0x00, 0x00, // style index (1-based, 0 means none)
-	// ResXMLTree_attribute[0]
-	/* 0470 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..."
-	/* 0474 */ 0x00, 0x00, 0x00, 0x00, // name [0x00]=="versionCode"
-	/* 0478 */ 0xff, 0xff, 0xff, 0xff, // rawValue
-	/* 047c */ 0x08, 0x00, // Res_value size
-	/* 047e */ 0x00, // Res_value padding
-	/* 047f */ 0x10, // Res_value dataType (INT_DEC)
-	/* 0480 */ 0x01, 0x00, 0x00, 0x00, // Res_value data
-	// ResXMLTree_attribute[1]
-	/* 0484 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..."
-	/* 0488 */ 0x01, 0x00, 0x00, 0x00, // name [0x01]="versionName"
-	/* 048c */ 0x0f, 0x00, 0x00, 0x00, // rawValue
-	/* 0490 */ 0x08, 0x00, // Res_value size
-	/* 0492 */ 0x00, // Res_value padding
-	/* 0493 */ 0x03, // Res_value dataType (STRING)
-	/* 0494 */ 0x0f, 0x00, 0x00, 0x00, // Res_value data [0x0f]="1.0"
-	// ResXMLTree_attribute[2]
-	/* 0498 */ 0xff, 0xff, 0xff, 0xff, // ns none
-	/* 049c */ 0x0c, 0x00, 0x00, 0x00, // name [0x0c]="package"
-	/* 04a0 */ 0x0e, 0x00, 0x00, 0x00, // rawValue
-	/* 04a4 */ 0x08, 0x00, // Res_value size
-	/* 04a6 */ 0x00, // Res_value padding
-	/* 04a7 */ 0x03, // Res_value dataType (STRING)
-	/* 04a8 */ 0x0e, 0x00, 0x00, 0x00, // Res_value data [0x0e]="com.zentus..."
-	// End XML_START_ELEMENT
-
-	// Start XML_START_ELEMENT
-	/* 04ac */ 0x02, 0x01, 0x10, 0x00, // chunk header XML_START_ELEMENT
-	/* 04b0 */ 0x38, 0x00, 0x00, 0x00, // chunk size 56
-	/* 04b4 */ 0x0d, 0x00, 0x00, 0x00, // line number
-	/* 04b8 */ 0xff, 0xff, 0xff, 0xff, // comment
-	/* 04bc */ 0xff, 0xff, 0xff, 0xff, // ns
-	/* 04c0 */ 0x10, 0x00, 0x00, 0x00, // name [0x10]="uses-sdk"
-	/* 04c4 */ 0x14, 0x00, 0x14, 0x00, // attribute start + size
-	/* 04c8 */ 0x01, 0x00, // atrribute count
-	/* 04ca */ 0x00, 0x00, // ID index
-	/* 04cc */ 0x00, 0x00, 0x00, 0x00, // class index + style index
-	// ResXMLTree_attribute[0]
-	/* 04d0 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..."
-	/* 04d4 */ 0x02, 0x00, 0x00, 0x00, // name [0x02]="minSdkVersion"
-	/* 04d8 */ 0xff, 0xff, 0xff, 0xff, // rawValue
-	/* 04dc */ 0x08, 0x00, 0x00, 0x10, // size+padding+type (INT_DEC)
-	/* 04e0 */ 0x09, 0x00, 0x00, 0x00,
-	// End XML_START_ELEMENT
-
-	// Start XML_END_ELEMENT
-	/* 04e4 */ 0x03, 0x01, 0x10, 0x00, // chunk header XML_END_ELEMENT
-	/* 04e8 */ 0x18, 0x00, 0x00, 0x00, // chunk size 24
-	/* 04ec */ 0x0d, 0x00, 0x00, 0x00, // line number
-	/* 04f0 */ 0xff, 0xff, 0xff, 0xff, // comment
-	/* 04f4 */ 0xff, 0xff, 0xff, 0xff, // ns
-	/* 04f8 */ 0x10, 0x00, 0x00, 0x00, // name [0x10]="uses-sdk"
-	// End XML_END_ELEMENT
-
-	// Start XML_START_ELEMENT
-	/* 04fc */ 0x02, 0x01, 0x10, 0x00, // chunk header XML_START_ELEMENT
-	/* 0500 */ 0x60, 0x00, 0x00, 0x00, // chunk size 96
-	/* 0504 */ 0x0e, 0x00, 0x00, 0x00, // line number
-	/* 0508 */ 0xff, 0xff, 0xff, 0xff, // comment
-	/* 050c */ 0xff, 0xff, 0xff, 0xff, // ns
-	/* 0510 */ 0x11, 0x00, 0x00, 0x00, // name [0x11]="application"
-	/* 0514 */ 0x14, 0x00, 0x14, 0x00, // attribute start + size
-	/* 0518 */ 0x03, 0x00, 0x00, 0x00, // attribute count + ID index
-	/* 051c */ 0x00, 0x00, 0x00, 0x00, // class index + style index
-	// ResXMLTree_attribute[0]
-	/* 0520 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..."
-	/* 0524 */ 0x03, 0x00, 0x00, 0x00, // name [0x03]="label"
-	/* 0528 */ 0x12, 0x00, 0x00, 0x00, // rawValue
-	/* 052c */ 0x08, 0x00, 0x00, 0x03, // size+padding+type (STRING)
-	/* 0530 */ 0x12, 0x00, 0x00, 0x00, // [0x12]="Balloon世界"
-	// ResXMLTree_attribute[1]
-	/* 0534 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..."
-	/* 0538 */ 0x04, 0x00, 0x00, 0x00, // name [0x04]="hasCode"
-	/* 053c */ 0xff, 0xff, 0xff, 0xff, // rawValue
-	/* 0540 */ 0x08, 0x00, 0x00, 0x12, // size+padding+type (BOOLEAN)
-	/* 0544 */ 0x00, 0x00, 0x00, 0x00, // false
-	// ResXMLTree_attribute[2]
-	/* 0548 */ 0x0a, 0x00, 0x00, 0x00,
-	/* 054c */ 0x05, 0x00, 0x00, 0x00, // name=[0x05]="debuggable"
-	/* 0550 */ 0xff, 0xff, 0xff, 0xff, // rawValue
-	/* 0554 */ 0x08, 0x00, 0x00, 0x12, // size+padding+type (BOOLEAN)
-	/* 0558 */ 0xff, 0xff, 0xff, 0xff, // true
-	// End XML_START_ELEMENT
-
-	// Start XML_START_ELEMENT
-	/* 055c */ 0x02, 0x01, 0x10, 0x00, // chunk header XML_START_ELEMENT
-	/* 0560 */ 0x60, 0x00, 0x00, 0x00, // chunk size 96
-	/* 0564 */ 0x0f, 0x00, 0x00, 0x00, // line number
-	/* 0568 */ 0xff, 0xff, 0xff, 0xff, // comment ref
-	/* 056c */ 0xff, 0xff, 0xff, 0xff, // ns
-	/* 0570 */ 0x13, 0x00, 0x00, 0x00, // name [0x13]="activity"
-	/* 0574 */ 0x14, 0x00, 0x14, 0x00, // attribute start + size
-	/* 0578 */ 0x03, 0x00, 0x00, 0x00, // atrribute count + ID index
-	/* 057c */ 0x00, 0x00, 0x00, 0x00, // class index + style index
-	// ResXMLTree_attribute[0]
-	/* 0580 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..."
-	/* 0584 */ 0x03, 0x00, 0x00, 0x00, // name [0x03]="label"
-	/* 0588 */ 0x15, 0x00, 0x00, 0x00, // rawValue
-	/* 058c */ 0x08, 0x00, 0x00, 0x03, // size+padding+type (STRING)
-	/* 0590 */ 0x15, 0x00, 0x00, 0x00, // [0x15]="Balloon"
-	// ResXMLTree_attribute[1]
-	/* 0594 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..."
-	/* 0598 */ 0x06, 0x00, 0x00, 0x00, // name [0x06]="name"
-	/* 059c */ 0x14, 0x00, 0x00, 0x00, // rawValue
-	/* 05a0 */ 0x08, 0x00, 0x00, 0x03, // size+padding+type (STRING)
-	/* 05a4 */ 0x14, 0x00, 0x00, 0x00, // [0x14]="android.app.NativeActivity"
-	// ResXMLTree_attribute[2]
-	/* 05a8 */ 0x0a, 0x00, 0x00, 0x00,
-	/* 05ac */ 0x07, 0x00, 0x00, 0x00, // name [0x07]="configChanges"
-	/* 05b0 */ 0xff, 0xff, 0xff, 0xff, // rawValue
-	/* 05b4 */ 0x08, 0x00, 0x00, 0x11, // size+padding+type (INT_HEX)
-	/* 05b8 */ 0xa0, 0x00, 0x00, 0x00, // orientation|keyboardHidden (0x80|0x0020=0xa0)
-	// End XML_START_ELEMENT
-
-	// Start XML_START_ELEMENT
-	/* 05bc */ 0x02, 0x01, 0x10, 0x00, // chunk header XML_START_ELEMENT
-	/* 05c0 */ 0x4c, 0x00, 0x00, 0x00, // chunk size 76
-	/* 05c4 */ 0x12, 0x00, 0x00, 0x00, // line number
-	/* 05c8 */ 0xff, 0xff, 0xff, 0xff, // comment ref
-	/* 05cc */ 0xff, 0xff, 0xff, 0xff, // ns
-	/* 05d0 */ 0x16, 0x00, 0x00, 0x00, // name [0x16]="meta-data"
-	/* 05d4 */ 0x14, 0x00, 0x14, 0x00, // atrribute start + size
-	/* 05d8 */ 0x02, 0x00, 0x00, 0x00, // attribute count + ID index
-	/* 05dc */ 0x00, 0x00, 0x00, 0x00, // class+style index
-	// ResXMLTree_attribute[0]
-	/* 05e0 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..."
-	/* 05e4 */ 0x06, 0x00, 0x00, 0x00, // name [0x06]="name"
-	/* 05e8 */ 0x17, 0x00, 0x00, 0x00, // rawValue
-	/* 05ec */ 0x08, 0x00, 0x00, 0x03, // size + padding + type (STRING)
-	/* 05f0 */ 0x17, 0x00, 0x00, 0x00, // [0x17]="android.app.lib_name"
-	// ResXMLTree_attribute[1]
-	/* 05f4 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..."
-	/* 05f8 */ 0x08, 0x00, 0x00, 0x00,
-	/* 05fc */ 0x18, 0x00, 0x00, 0x00,
-	/* 0600 */ 0x08, 0x00, 0x00, 0x03, // size + padding + type (STRING)
-	/* 0604 */ 0x18, 0x00, 0x00, 0x00, // [0x18]="balloon"
-	// End XML_START_ELEMENT
-
-	// Start XML_END_ELEMENT
-	/* 0608 */ 0x03, 0x01, 0x10, 0x00, // chunk header XML_END_ELEMENT
-	/* 060c */ 0x18, 0x00, 0x00, 0x00, // chunk size 24
-	/* 0610 */ 0x12, 0x00, 0x00, 0x00, // line-number
-	/* 0614 */ 0xff, 0xff, 0xff, 0xff,
-	/* 0618 */ 0xff, 0xff, 0xff, 0xff,
-	/* 061c */ 0x16, 0x00, 0x00, 0x00, // name [0x16]="meta-data"
-	// End XML_END_ELEMENT
-
-	// Start XML_START_ELEMENT
-	/* 0620 */ 0x02, 0x01, 0x10, 0x00, // chunk header XML_START_ELEMENT
-	/* 0624 */ 0x24, 0x00, 0x00, 0x00, // chunk size 36
-	/* 0628 */ 0x13, 0x00, 0x00, 0x00, // line number
-	/* 062c */ 0xff, 0xff, 0xff, 0xff, // comment
-	/* 0630 */ 0xff, 0xff, 0xff, 0xff, // ns
-	/* 0634 */ 0x19, 0x00, 0x00, 0x00, // name [0x19]="intent-filter"
-	/* 0638 */ 0x14, 0x00, 0x14, 0x00, // attribute start + size
-	/* 063c */ 0x00, 0x00, 0x00, 0x00, // attribute count + ID index
-	/* 0640 */ 0x00, 0x00, 0x00, 0x00, // class index + style index
-	// End XML_START_ELEMENT
-
-	// Start XML_CDATA
-	/* 0644 */ 0x04, 0x01, 0x10, 0x00, // chunk header XML_CDATA
-	/* 0648 */ 0x1c, 0x00, 0x00, 0x00, // chunk size 28
-	/* 064c */ 0x13, 0x00, 0x00, 0x00, // line number
-	/* 0650 */ 0xff, 0xff, 0xff, 0xff, // comment
-	/* 0654 */ 0x1a, 0x00, 0x00, 0x00, // data [0x1a]="\there is some text\n"
-	/* 0658 */ 0x08, 0x00, 0x00, 0x00,
-	/* 065c */ 0x00, 0x00, 0x00, 0x00,
-	// End XML_CDATA
-
-	// Start XML_START_ELEMENT
-	/* 0660 */ 0x02, 0x01, 0x10, 0x00,
-	/* 0664 */ 0x38, 0x00, 0x00, 0x00,
-	/* 0668 */ 0x15, 0x00, 0x00, 0x00,
-	/* 066c */ 0xff, 0xff, 0xff, 0xff,
-	/* 0670 */ 0xff, 0xff, 0xff, 0xff,
-	/* 0674 */ 0x1b, 0x00, 0x00, 0x00,
-	/* 0678 */ 0x14, 0x00, 0x14, 0x00,
-	/* 067c */ 0x01, 0x00, 0x00, 0x00,
-	/* 0680 */ 0x00, 0x00, 0x00, 0x00,
-	/* 0684 */ 0x0a, 0x00, 0x00, 0x00,
-	/* 0688 */ 0x06, 0x00, 0x00, 0x00,
-	/* 068c */ 0x1c, 0x00, 0x00, 0x00,
-	/* 0690 */ 0x08, 0x00, 0x00, 0x03,
-	/* 0694 */ 0x1c, 0x00, 0x00, 0x00,
-	// End XML_START_ELEMENT
-
-	// Start XML_END_ELEMENT
-	/* 0698 */ 0x03, 0x01, 0x10, 0x00,
-	/* 069c */ 0x18, 0x00, 0x00, 0x00,
-	/* 06a0 */ 0x15, 0x00, 0x00, 0x00, // line number
-	/* 06a4 */ 0xff, 0xff, 0xff, 0xff,
-	/* 06a8 */ 0xff, 0xff, 0xff, 0xff,
-	/* 06ac */ 0x1b, 0x00, 0x00, 0x00, // [0x1b]="action"
-	// End XML_END_ELEMENT
-
-	// Start XML_START_ELEMENT
-	/* 06b0 */ 0x02, 0x01, 0x10, 0x00,
-	/* 06b4 */ 0x38, 0x00, 0x00, 0x00,
-	/* 06b8 */ 0x16, 0x00, 0x00, 0x00,
-	/* 06bc */ 0xff, 0xff, 0xff, 0xff,
-	/* 06c0 */ 0xff, 0xff, 0xff, 0xff,
-	/* 06c4 */ 0x1d, 0x00, 0x00, 0x00,
-	/* 06c8 */ 0x14, 0x00, 0x14, 0x00,
-	/* 06cc */ 0x01, 0x00, 0x00, 0x00,
-	/* 06d0 */ 0x00, 0x00, 0x00, 0x00,
-	/* 06d4 */ 0x0a, 0x00, 0x00, 0x00,
-	/* 06d8 */ 0x06, 0x00, 0x00, 0x00,
-	/* 06dc */ 0x1e, 0x00, 0x00, 0x00,
-	/* 06e0 */ 0x08, 0x00, 0x00, 0x03,
-	/* 06e4 */ 0x1e, 0x00, 0x00, 0x00,
-	// End XML_START_ELEMENT
-
-	// Start XML_END_ELEMENT
-	/* 06e8 */ 0x03, 0x01, 0x10, 0x00,
-	/* 06ec */ 0x18, 0x00, 0x00, 0x00,
-	/* 06f0 */ 0x16, 0x00, 0x00, 0x00, // line number
-	/* 06f4 */ 0xff, 0xff, 0xff, 0xff,
-	/* 06f8 */ 0xff, 0xff, 0xff, 0xff,
-	/* 06fc */ 0x1d, 0x00, 0x00, 0x00, // name [0x1d]="category"
-	// End XML_END_ELEMENT
-
-	// Start XML_END_ELEMENT
-	/* 0700 */ 0x03, 0x01, 0x10, 0x00, // chunk header XML_END_ELEMENT
-	/* 0704 */ 0x18, 0x00, 0x00, 0x00, // chunk size 24
-	/* 0708 */ 0x17, 0x00, 0x00, 0x00, // line number
-	/* 070c */ 0xff, 0xff, 0xff, 0xff, // comment
-	/* 0710 */ 0xff, 0xff, 0xff, 0xff, // ns
-	/* 0714 */ 0x19, 0x00, 0x00, 0x00, // name [0x19]="intent-filter"
-	// End XML_END_ELEMENT
-
-	// Start XML_END_ELEMENT
-	/* 0718 */ 0x03, 0x01, 0x10, 0x00,
-	/* 071c */ 0x18, 0x00, 0x00, 0x00,
-	/* 0720 */ 0x18, 0x00, 0x00, 0x00, // line number
-	/* 0724 */ 0xff, 0xff, 0xff, 0xff,
-	/* 0728 */ 0xff, 0xff, 0xff, 0xff,
-	/* 072c */ 0x13, 0x00, 0x00, 0x00, // name [0x13]="activity"
-	// End XML_END_ELEMENT
-
-	// Start XML_END_ELEMENT
-	/* 0730 */ 0x03, 0x01, 0x10, 0x00,
-	/* 0734 */ 0x18, 0x00, 0x00, 0x00,
-	/* 0738 */ 0x19, 0x00, 0x00, 0x00,
-	/* 073c */ 0xff, 0xff, 0xff, 0xff,
-	/* 0740 */ 0xff, 0xff, 0xff, 0xff,
-	/* 0744 */ 0x11, 0x00, 0x00, 0x00, // name [0x11]="application"
-	// End XML_END_ELEMENT
-
-	// Start XML_END_ELEMENT
-	/* 0748 */ 0x03, 0x01, 0x10, 0x00,
-	/* 074c */ 0x18, 0x00, 0x00, 0x00,
-	/* 0750 */ 0x1a, 0x00, 0x00, 0x00, // line number
-	/* 0754 */ 0xff, 0xff, 0xff, 0xff,
-	/* 0758 */ 0xff, 0xff, 0xff, 0xff,
-	/* 075c */ 0x0d, 0x00, 0x00, 0x00, // name [0x0d]="manifest"
-	// End XML_END_ELEMENT
-
-	/* 0760 */ 0x01, 0x01, 0x10, 0x00, // chunk header XML_END_NAMESPACE
-	/* 0764 */ 0x18, 0x00, 0x00, 0x00, // chunk size 24
-	/* 0768 */ 0x1a, 0x00, 0x00, 0x00, // line number
-	/* 076c */ 0xff, 0xff, 0xff, 0xff, // comment
-	/* 0770 */ 0x09, 0x00, 0x00, 0x00, // prefix [0x09]="android"
-	/* 0774 */ 0x0a, 0x00, 0x00, 0x00, // url
-}
-
-const input = `<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright 2014 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.
--->
-<manifest
-	xmlns:android="http://schemas.android.com/apk/res/android"
-	package="com.zentus.balloon"
-	android:versionCode="1"
-	android:versionName="1.0">
-
-	<uses-sdk android:minSdkVersion="9" />
-	<application android:label="Balloon世界" android:hasCode="false" android:debuggable="true">
-	<activity android:name="android.app.NativeActivity"
-		android:label="Balloon"
-		android:configChanges="orientation|keyboardHidden">
-		<meta-data android:name="android.app.lib_name" android:value="balloon" />
-		<intent-filter>
-			here is some text
-			<action android:name="android.intent.action.MAIN" />
-			<category android:name="android.intent.category.LAUNCHER" />
-		</intent-filter>
-	</activity>
-	</application>
-</manifest>`
diff --git a/go/src/golang.org/x/mobile/cmd/gomobile/bind.go b/go/src/golang.org/x/mobile/cmd/gomobile/bind.go
deleted file mode 100644
index 8fc664b..0000000
--- a/go/src/golang.org/x/mobile/cmd/gomobile/bind.go
+++ /dev/null
@@ -1,308 +0,0 @@
-// Copyright 2015 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"
-	"fmt"
-	"go/ast"
-	"go/build"
-	"go/parser"
-	"go/scanner"
-	"go/token"
-	"io"
-	"io/ioutil"
-	"os"
-	"path/filepath"
-	"text/template"
-	"unicode"
-	"unicode/utf8"
-
-	"golang.org/x/mobile/bind"
-	"golang.org/x/tools/go/loader"
-	"golang.org/x/tools/go/types"
-)
-
-// ctx, pkg, ndkccpath, tmpdir in build.go
-
-var cmdBind = &command{
-	run:   runBind,
-	Name:  "bind",
-	Usage: "[package]",
-	Short: "build a shared library for android APK and/or iOS app",
-	Long: `
-Bind generates language bindings like gobind (golang.org/x/mobile/cmd/gobind)
-for a package and builds a shared library for each platform from the go binding
-code.
-
-The -outdir flag specifies the output directory and is required.
-
-For Android, the bind command will place the generated Java API stubs and the
-compiled shared libraries in the android subdirectory of the following layout.
-
-<outdir>/android
-  libs/
-     armeabi-v7a/libgojni.so
-     ...
-  src/main/java/go/
-	Seq.java
-	Go.java
-        mypackage/Mypackage.java
-
-The -v flag provides verbose output, including the list of packages built.
-
-These build flags are shared by the build command.
-For documentation, see 'go help build':
-	-a
-	-i
-	-n
-	-x
-	-tags 'tag list'
-`,
-}
-
-// TODO: -mobile
-
-var bindOutdir *string // -outdir
-func init() {
-	bindOutdir = cmdBind.flag.String("outdir", "", "output directory. Default is the current directory.")
-}
-
-func runBind(cmd *command) error {
-	cwd, err := os.Getwd()
-	if err != nil {
-		panic(err)
-	}
-	args := cmd.flag.Args()
-
-	var bindPkg *build.Package
-	switch len(args) {
-	case 0:
-		bindPkg, err = ctx.ImportDir(cwd, build.ImportComment)
-	case 1:
-		bindPkg, err = ctx.Import(args[0], cwd, build.ImportComment)
-	default:
-		cmd.usage()
-		os.Exit(1)
-	}
-	if err != nil {
-		return err
-	}
-
-	if *bindOutdir == "" {
-		return fmt.Errorf("-outdir is required")
-	}
-
-	if !buildN {
-		sentinel := filepath.Join(*bindOutdir, "gomobile-bind-sentinel")
-		if err := ioutil.WriteFile(sentinel, []byte("write test"), 0644); err != nil {
-			return fmt.Errorf("output directory %q not writable", *bindOutdir)
-		}
-		os.Remove(sentinel)
-	}
-
-	if buildN {
-		tmpdir = "$WORK"
-	} else {
-		tmpdir, err = ioutil.TempDir("", "gomobile-bind-work-")
-		if err != nil {
-			return err
-		}
-	}
-	defer removeAll(tmpdir)
-	if buildX {
-		fmt.Fprintln(os.Stderr, "WORK="+tmpdir)
-	}
-
-	binder, err := newBinder(bindPkg)
-	if err != nil {
-		return err
-	}
-
-	if err := binder.GenGo(tmpdir); err != nil {
-		return err
-	}
-
-	pathJoin := func(a, b string) string {
-		return filepath.Join(a, filepath.FromSlash(b))
-	}
-
-	mainFile := pathJoin(tmpdir, "androidlib/main.go")
-	err = writeFile(mainFile, func(w io.Writer) error {
-		return androidMainTmpl.Execute(w, "../go_"+binder.pkg.Name())
-	})
-	if err != nil {
-		return fmt.Errorf("failed to create the main package for android: %v", err)
-	}
-
-	androidOutdir := pathJoin(*bindOutdir, "android")
-
-	err = gobuild(mainFile, pathJoin(androidOutdir, "libs/armeabi-v7a/libgojni.so"))
-	if err != nil {
-		return err
-	}
-	p, err := ctx.Import("golang.org/x/mobile/app", cwd, build.ImportComment)
-	if err != nil {
-		return fmt.Errorf(`"golang.org/x/mobile/app" is not found; run go get golang.org/x/mobile/app`)
-	}
-	repo := filepath.Clean(filepath.Join(p.Dir, "..")) // golang.org/x/mobile directory.
-
-	// TODO(crawshaw): use a better package path derived from the go package.
-	if err := binder.GenJava(pathJoin(androidOutdir, "src/main/java/go/"+binder.pkg.Name())); err != nil {
-		return err
-	}
-
-	src := pathJoin(repo, "app/Go.java")
-	dst := pathJoin(androidOutdir, "src/main/java/go/Go.java")
-	rm(dst)
-	if err := symlink(src, dst); err != nil {
-		return err
-	}
-
-	src = pathJoin(repo, "bind/java/Seq.java")
-	dst = pathJoin(androidOutdir, "src/main/java/go/Seq.java")
-	rm(dst)
-	if err := symlink(src, dst); err != nil {
-		return err
-	}
-
-	return nil
-}
-
-type binder struct {
-	files []*ast.File
-	fset  *token.FileSet
-	pkg   *types.Package
-}
-
-func (b *binder) GenJava(outdir string) error {
-	firstRune, size := utf8.DecodeRuneInString(b.pkg.Name())
-	className := string(unicode.ToUpper(firstRune)) + b.pkg.Name()[size:]
-	javaFile := filepath.Join(outdir, className+".java")
-
-	if buildX {
-		printcmd("gobind -lang=java %s > %s", b.pkg.Path(), javaFile)
-	}
-
-	generate := func(w io.Writer) error {
-		return bind.GenJava(w, b.fset, b.pkg)
-	}
-	if err := writeFile(javaFile, generate); err != nil {
-		return err
-	}
-	return nil
-}
-
-func (b *binder) GenGo(outdir string) error {
-	pkgName := "go_" + b.pkg.Name()
-	goFile := filepath.Join(outdir, pkgName, pkgName+".go")
-
-	if buildX {
-		printcmd("gobind -lang=go %s > %s", b.pkg.Path(), goFile)
-	}
-
-	generate := func(w io.Writer) error {
-		return bind.GenGo(w, b.fset, b.pkg)
-	}
-	if err := writeFile(goFile, generate); err != nil {
-		return err
-	}
-	return nil
-}
-
-func writeFile(filename string, generate func(io.Writer) error) error {
-	if buildV {
-		fmt.Fprintf(os.Stderr, "write %s\n", filename)
-	}
-
-	err := mkdir(filepath.Dir(filename))
-	if err != nil {
-		return err
-	}
-
-	if buildN {
-		return generate(ioutil.Discard)
-	}
-
-	f, err := os.Create(filename)
-	if err != nil {
-		return err
-	}
-	defer func() {
-		if cerr := f.Close(); err == nil {
-			err = cerr
-		}
-	}()
-
-	return generate(f)
-}
-
-func newBinder(bindPkg *build.Package) (*binder, error) {
-	if bindPkg.Name == "main" {
-		return nil, fmt.Errorf("package %q: can only bind a library package", bindPkg.Name)
-	}
-
-	if len(bindPkg.CgoFiles) > 0 {
-		return nil, fmt.Errorf("cannot use cgo-dependent package as service definition: %s", bindPkg.CgoFiles[0])
-	}
-
-	fset := token.NewFileSet()
-
-	hasErr := false
-	var files []*ast.File
-	for _, filename := range bindPkg.GoFiles {
-		p := filepath.Join(bindPkg.Dir, filename)
-		file, err := parser.ParseFile(fset, p, nil, parser.AllErrors)
-		if err != nil {
-			hasErr = true
-			if list, _ := err.(scanner.ErrorList); len(list) > 0 {
-				for _, err := range list {
-					fmt.Fprintln(os.Stderr, err)
-				}
-			} else {
-				fmt.Fprintln(os.Stderr, err)
-			}
-		}
-		files = append(files, file)
-	}
-
-	if hasErr {
-		return nil, errors.New("package parsing failed.")
-	}
-
-	conf := loader.Config{
-		Fset: fset,
-	}
-	conf.TypeChecker.Error = func(err error) {
-		fmt.Fprintln(os.Stderr, err)
-	}
-
-	conf.CreateFromFiles(bindPkg.ImportPath, files...)
-	program, err := conf.Load()
-	if err != nil {
-		return nil, err
-	}
-	b := &binder{
-		files: files,
-		fset:  fset,
-		pkg:   program.Created[0].Pkg,
-	}
-	return b, nil
-}
-
-var androidMainTmpl = template.Must(template.New("android.go").Parse(`
-package main
-
-import (
-	"golang.org/x/mobile/app"
-	"golang.org/x/mobile/bind/java"
-
-	_ "{{.}}"
-)
-
-func main() {
-	app.Run(app.Callbacks{Start: java.Init})
-}
-`))
diff --git a/go/src/golang.org/x/mobile/cmd/gomobile/build.go b/go/src/golang.org/x/mobile/cmd/gomobile/build.go
deleted file mode 100644
index 7a324ec..0000000
--- a/go/src/golang.org/x/mobile/cmd/gomobile/build.go
+++ /dev/null
@@ -1,413 +0,0 @@
-// Copyright 2015 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"
-	"crypto/x509"
-	"encoding/pem"
-	"errors"
-	"fmt"
-	"go/build"
-	"io"
-	"io/ioutil"
-	"os"
-	"os/exec"
-	"path"
-	"path/filepath"
-	"strconv"
-	"strings"
-)
-
-var ctx = build.Default
-var pkg *build.Package
-var ndkccpath string
-var tmpdir string
-
-var cmdBuild = &command{
-	run:   runBuild,
-	Name:  "build",
-	Usage: "[package]",
-	Short: "compile android APK and/or iOS app",
-	Long: `
-Build compiles and encodes the app named by the import path.
-
-The named package must define a main function.
-
-If an AndroidManifest.xml is defined in the package directory, it is
-added to the APK file. Otherwise, a default manifest is generated.
-
-If the package directory contains an assets subdirectory, its contents
-are copied into the APK file.
-
-The -o flag specifies the output file name. If not specified, the
-output file name depends on the package built. The output file must end
-in '.apk'.
-
-The -v flag provides verbose output, including the list of packages built.
-
-These build flags are shared by the build, install, and test commands.
-For documentation, see 'go help build':
-	-a
-	-i
-	-n
-	-x
-	-tags 'tag list'
-`,
-}
-
-// TODO: -mobile
-
-func runBuild(cmd *command) error {
-	cwd, err := os.Getwd()
-	if err != nil {
-		panic(err)
-	}
-	args := cmd.flag.Args()
-
-	switch len(args) {
-	case 0:
-		pkg, err = ctx.ImportDir(cwd, build.ImportComment)
-	case 1:
-		pkg, err = ctx.Import(args[0], cwd, build.ImportComment)
-	default:
-		cmd.usage()
-		os.Exit(1)
-	}
-	if err != nil {
-		return err
-	}
-
-	if pkg.Name != "main" {
-		// Not an app, don't build a final package.
-		return gobuild(pkg.ImportPath, "")
-	}
-
-	// Building a program, make sure it is appropriate for mobile.
-	importsApp := false
-	for _, path := range pkg.Imports {
-		if path == "golang.org/x/mobile/app" {
-			importsApp = true
-			break
-		}
-	}
-	if !importsApp {
-		return fmt.Errorf(`%s does not import "golang.org/x/mobile/app"`, pkg.ImportPath)
-	}
-
-	if buildN {
-		tmpdir = "$WORK"
-	} else {
-		tmpdir, err = ioutil.TempDir("", "gobuildapk-work-")
-		if err != nil {
-			return err
-		}
-	}
-	defer removeAll(tmpdir)
-	if buildX {
-		fmt.Fprintln(os.Stderr, "WORK="+tmpdir)
-	}
-
-	libName := path.Base(pkg.ImportPath)
-	manifestData, err := ioutil.ReadFile(filepath.Join(pkg.Dir, "AndroidManifest.xml"))
-	if err != nil {
-		if !os.IsNotExist(err) {
-			return err
-		}
-		buf := new(bytes.Buffer)
-		buf.WriteString(`<?xml version="1.0" encoding="utf-8"?>`)
-		err := manifestTmpl.Execute(buf, manifestTmplData{
-			// TODO(crawshaw): a better package path.
-			JavaPkgPath: "org.golang.todo." + pkg.Name,
-			Name:        strings.ToUpper(pkg.Name[:1]) + pkg.Name[1:],
-			LibName:     libName,
-		})
-		if err != nil {
-			return err
-		}
-		manifestData = buf.Bytes()
-		if buildV {
-			fmt.Fprintf(os.Stderr, "generated AndroidManifest.xml:\n%s\n", manifestData)
-		}
-	} else {
-		libName, err = manifestLibName(manifestData)
-		if err != nil {
-			return err
-		}
-	}
-	libPath := filepath.Join(tmpdir, "lib"+libName+".so")
-
-	if err := gobuild(pkg.ImportPath, libPath); err != nil {
-		return err
-	}
-	block, _ := pem.Decode([]byte(debugCert))
-	if block == nil {
-		return errors.New("no debug cert")
-	}
-	privKey, err := x509.ParsePKCS1PrivateKey(block.Bytes)
-	if err != nil {
-		return err
-	}
-
-	if *buildO == "" {
-		*buildO = filepath.Base(pkg.Dir) + ".apk"
-	}
-	if !strings.HasSuffix(*buildO, ".apk") {
-		return fmt.Errorf("output file name %q does not end in '.apk'", *buildO)
-	}
-	out, err := os.Create(*buildO)
-	if err != nil {
-		return err
-	}
-
-	var apkw *Writer
-	if !buildN {
-		apkw = NewWriter(out, privKey)
-	}
-	apkwcreate := func(name string) (io.Writer, error) {
-		if buildV {
-			fmt.Fprintf(os.Stderr, "apk: %s\n", name)
-		}
-		if buildN {
-			return ioutil.Discard, nil
-		}
-		return apkw.Create(name)
-	}
-
-	w, err := apkwcreate("AndroidManifest.xml")
-	if err != nil {
-		return err
-	}
-	if _, err := w.Write(manifestData); err != nil {
-		return err
-	}
-
-	w, err = apkwcreate("lib/armeabi/lib" + libName + ".so")
-	if err != nil {
-		return err
-	}
-	if !buildN {
-		r, err := os.Open(libPath)
-		if err != nil {
-			return err
-		}
-		if _, err := io.Copy(w, r); err != nil {
-			return err
-		}
-	}
-
-	// Add any assets.
-	assetsDir := filepath.Join(pkg.Dir, "assets")
-	assetsDirExists := true
-	fi, err := os.Stat(assetsDir)
-	if err != nil {
-		if os.IsNotExist(err) {
-			assetsDirExists = false
-		} else {
-			return err
-		}
-	} else {
-		assetsDirExists = fi.IsDir()
-	}
-	if assetsDirExists {
-		filepath.Walk(assetsDir, func(path string, info os.FileInfo, err error) error {
-			if err != nil {
-				return err
-			}
-			if info.IsDir() {
-				return nil
-			}
-			name := "assets/" + path[len(assetsDir)+1:]
-			w, err := apkwcreate(name)
-			if err != nil {
-				return err
-			}
-			f, err := os.Open(path)
-			if err != nil {
-				return err
-			}
-			defer f.Close()
-			_, err = io.Copy(w, f)
-			return err
-		})
-	}
-
-	// TODO: add gdbserver to apk?
-
-	if buildN {
-		return nil
-	}
-	return apkw.Close()
-}
-
-var xout io.Writer = os.Stderr
-
-func printcmd(format string, args ...interface{}) {
-	cmd := fmt.Sprintf(format+"\n", args...)
-	if tmpdir != "" {
-		cmd = strings.Replace(cmd, tmpdir, "$WORK", -1)
-	}
-	if ndkccpath != "" {
-		cmd = strings.Replace(cmd, ndkccpath, "$NDKCCPATH", -1)
-	}
-	if env := os.Getenv("HOME"); env != "" {
-		cmd = strings.Replace(cmd, env, "$HOME", -1)
-	}
-	fmt.Fprint(xout, cmd)
-}
-
-// "Build flags", used by multiple commands.
-var (
-	buildA bool    // -a
-	buildI bool    // -i
-	buildN bool    // -n
-	buildV bool    // -v
-	buildX bool    // -x
-	buildO *string // -o
-)
-
-func addBuildFlags(cmd *command) {
-	cmd.flag.BoolVar(&buildA, "a", false, "")
-	cmd.flag.BoolVar(&buildI, "i", false, "")
-	cmd.flag.Var((*stringsFlag)(&ctx.BuildTags), "tags", "")
-}
-
-func addBuildFlagsNVX(cmd *command) {
-	cmd.flag.BoolVar(&buildN, "n", false, "")
-	cmd.flag.BoolVar(&buildV, "v", false, "")
-	cmd.flag.BoolVar(&buildX, "x", false, "")
-}
-
-// gobuild builds a package.
-// If libPath is specified then it builds as a shared library.
-func gobuild(src, libPath string) error {
-	version, err := goVersion()
-	if err != nil {
-		return err
-	}
-
-	gopath := goEnv("GOPATH")
-	gomobilepath := ""
-	for _, p := range filepath.SplitList(gopath) {
-		gomobilepath = filepath.Join(p, "pkg", "gomobile")
-		if _, err = os.Stat(gomobilepath); err == nil {
-			break
-		}
-	}
-	if err != nil || gomobilepath == "" {
-		return errors.New("android toolchain not installed, run:\n\tgomobile init")
-	}
-	verpath := filepath.Join(gomobilepath, "version")
-	installedVersion, err := ioutil.ReadFile(verpath)
-	if err != nil {
-		return errors.New("android toolchain partially installed, run:\n\tgomobile init")
-	}
-	if !bytes.Equal(installedVersion, version) {
-		return errors.New("android toolchain out of date, run:\n\tgomobile init")
-	}
-
-	ndkccpath = filepath.Join(gomobilepath, "android-"+ndkVersion)
-	ndkccbin := filepath.Join(ndkccpath, "arm", "bin")
-	if buildX {
-		fmt.Fprintln(os.Stderr, "NDKCCPATH="+ndkccpath)
-	}
-
-	gocmd := exec.Command(
-		`go`,
-		`build`,
-		`-tags=`+strconv.Quote(strings.Join(ctx.BuildTags, ",")),
-		`-toolexec=`+filepath.Join(ndkccbin, "toolexec"))
-	if buildV {
-		gocmd.Args = append(gocmd.Args, "-v")
-	}
-	if buildI {
-		gocmd.Args = append(gocmd.Args, "-i")
-	}
-	if buildX {
-		gocmd.Args = append(gocmd.Args, "-x")
-	}
-	if libPath == "" {
-		if *buildO != "" {
-			gocmd.Args = append(gocmd.Args, `-o`, *buildO)
-		}
-	} else {
-		gocmd.Args = append(gocmd.Args,
-			`-ldflags="-shared"`,
-			`-o`, libPath,
-		)
-	}
-
-	gocmd.Args = append(gocmd.Args, src)
-
-	gocmd.Stdout = os.Stdout
-	gocmd.Stderr = os.Stderr
-	gocmd.Env = []string{
-		`GOOS=android`,
-		`GOARCH=arm`,
-		`GOARM=7`,
-		`CGO_ENABLED=1`,
-		`CC=` + filepath.Join(ndkccbin, "arm-linux-androideabi-gcc"),
-		`CXX=` + filepath.Join(ndkccbin, "arm-linux-androideabi-g++"),
-		`GOGCCFLAGS="-fPIC -marm -pthread -fmessage-length=0"`,
-		`GOROOT=` + goEnv("GOROOT"),
-		`GOPATH=` + gopath,
-		`GOMOBILEPATH=` + ndkccbin, // for toolexec
-	}
-	if buildX {
-		printcmd("%s", strings.Join(gocmd.Env, " ")+" "+strings.Join(gocmd.Args, " "))
-	}
-	if !buildN {
-		if err := gocmd.Run(); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func init() {
-	buildO = cmdBuild.flag.String("o", "", "output file")
-	addBuildFlags(cmdBuild)
-	addBuildFlagsNVX(cmdBuild)
-
-	addBuildFlags(cmdInstall)
-	addBuildFlagsNVX(cmdInstall)
-
-	addBuildFlagsNVX(cmdInit)
-
-	addBuildFlags(cmdBind)
-	addBuildFlagsNVX(cmdBind)
-}
-
-// A random uninteresting private key.
-// Must be consistent across builds so newer app versions can be installed.
-const debugCert = `
------BEGIN RSA PRIVATE KEY-----
-MIIEowIBAAKCAQEAy6ItnWZJ8DpX9R5FdWbS9Kr1U8Z7mKgqNByGU7No99JUnmyu
-NQ6Uy6Nj0Gz3o3c0BXESECblOC13WdzjsH1Pi7/L9QV8jXOXX8cvkG5SJAyj6hcO
-LOapjDiN89NXjXtyv206JWYvRtpexyVrmHJgRAw3fiFI+m4g4Qop1CxcIF/EgYh7
-rYrqh4wbCM1OGaCleQWaOCXxZGm+J5YNKQcWpjZRrDrb35IZmlT0bK46CXUKvCqK
-x7YXHgfhC8ZsXCtsScKJVHs7gEsNxz7A0XoibFw6DoxtjKzUCktnT0w3wxdY7OTj
-9AR8mobFlM9W3yirX8TtwekWhDNTYEu8dwwykwIDAQABAoIBAA2hjpIhvcNR9H9Z
-BmdEecydAQ0ZlT5zy1dvrWI++UDVmIp+Ve8BSd6T0mOqV61elmHi3sWsBN4M1Rdz
-3N38lW2SajG9q0fAvBpSOBHgAKmfGv3Ziz5gNmtHgeEXfZ3f7J95zVGhlHqWtY95
-JsmuplkHxFMyITN6WcMWrhQg4A3enKLhJLlaGLJf9PeBrvVxHR1/txrfENd2iJBH
-FmxVGILL09fIIktJvoScbzVOneeWXj5vJGzWVhB17DHBbANGvVPdD5f+k/s5aooh
-hWAy/yLKocr294C4J+gkO5h2zjjjSGcmVHfrhlXQoEPX+iW1TGoF8BMtl4Llc+jw
-lKWKfpECgYEA9C428Z6CvAn+KJ2yhbAtuRo41kkOVoiQPtlPeRYs91Pq4+NBlfKO
-2nWLkyavVrLx4YQeCeaEU2Xoieo9msfLZGTVxgRlztylOUR+zz2FzDBYGicuUD3s
-EqC0Wv7tiX6dumpWyOcVVLmR9aKlOUzA9xemzIsWUwL3PpyONhKSq7kCgYEA1X2F
-f2jKjoOVzglhtuX4/SP9GxS4gRf9rOQ1Q8DzZhyH2LZ6Dnb1uEQvGhiqJTU8CXxb
-7odI0fgyNXq425Nlxc1Tu0G38TtJhwrx7HWHuFcbI/QpRtDYLWil8Zr7Q3BT9rdh
-moo4m937hLMvqOG9pyIbyjOEPK2WBCtKW5yabqsCgYEAu9DkUBr1Qf+Jr+IEU9I8
-iRkDSMeusJ6gHMd32pJVCfRRQvIlG1oTyTMKpafmzBAd/rFpjYHynFdRcutqcShm
-aJUq3QG68U9EAvWNeIhA5tr0mUEz3WKTt4xGzYsyWES8u4tZr3QXMzD9dOuinJ1N
-+4EEumXtSPKKDG3M8Qh+KnkCgYBUEVSTYmF5EynXc2xOCGsuy5AsrNEmzJqxDUBI
-SN/P0uZPmTOhJIkIIZlmrlW5xye4GIde+1jajeC/nG7U0EsgRAV31J4pWQ5QJigz
-0+g419wxIUFryGuIHhBSfpP472+w1G+T2mAGSLh1fdYDq7jx6oWE7xpghn5vb9id
-EKLjdwKBgBtz9mzbzutIfAW0Y8F23T60nKvQ0gibE92rnUbjPnw8HjL3AZLU05N+
-cSL5bhq0N5XHK77sscxW9vXjG0LJMXmFZPp9F6aV6ejkMIXyJ/Yz/EqeaJFwilTq
-Mc6xR47qkdzu0dQ1aPm4XD7AWDtIvPo/GG2DKOucLBbQc2cOWtKS
------END RSA PRIVATE KEY-----
-`
diff --git a/go/src/golang.org/x/mobile/cmd/gomobile/cert.go b/go/src/golang.org/x/mobile/cmd/gomobile/cert.go
deleted file mode 100644
index 0aa00b3..0000000
--- a/go/src/golang.org/x/mobile/cmd/gomobile/cert.go
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2015 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 (
-	"crypto"
-	"crypto/rsa"
-	"crypto/sha1"
-	"crypto/x509"
-	"crypto/x509/pkix"
-	"encoding/asn1"
-	"io"
-	"math/big"
-	"time"
-)
-
-// signPKCS7 does the minimal amount of work necessary to embed an RSA
-// signature into a PKCS#7 certificate.
-//
-// We prepare the certificate using the x509 package, read it back in
-// to our custom data type and then write it back out with the signature.
-func signPKCS7(rand io.Reader, priv *rsa.PrivateKey, msg []byte) ([]byte, error) {
-	const serialNumber = 0x5462c4dd // arbitrary
-	name := pkix.Name{CommonName: "gomobile"}
-
-	template := &x509.Certificate{
-		SerialNumber:       big.NewInt(serialNumber),
-		SignatureAlgorithm: x509.SHA1WithRSA,
-		Subject:            name,
-	}
-
-	b, err := x509.CreateCertificate(rand, template, template, priv.Public(), priv)
-	if err != nil {
-		return nil, err
-	}
-
-	c := certificate{}
-	if _, err := asn1.Unmarshal(b, &c); err != nil {
-		return nil, err
-	}
-
-	h := sha1.New()
-	h.Write(msg)
-	hashed := h.Sum(nil)
-
-	signed, err := rsa.SignPKCS1v15(rand, priv, crypto.SHA1, hashed)
-	if err != nil {
-		return nil, err
-	}
-
-	content := pkcs7SignedData{
-		ContentType: oidSignedData,
-		Content: signedData{
-			Version: 1,
-			DigestAlgorithms: []pkix.AlgorithmIdentifier{{
-				Algorithm:  oidSHA1,
-				Parameters: asn1.RawValue{Tag: 5},
-			}},
-			ContentInfo:  contentInfo{Type: oidData},
-			Certificates: c,
-			SignerInfos: []signerInfo{{
-				Version: 1,
-				IssuerAndSerialNumber: issuerAndSerialNumber{
-					Issuer:       name.ToRDNSequence(),
-					SerialNumber: serialNumber,
-				},
-				DigestAlgorithm: pkix.AlgorithmIdentifier{
-					Algorithm:  oidSHA1,
-					Parameters: asn1.RawValue{Tag: 5},
-				},
-				DigestEncryptionAlgorithm: pkix.AlgorithmIdentifier{
-					Algorithm:  oidRSAEncryption,
-					Parameters: asn1.RawValue{Tag: 5},
-				},
-				EncryptedDigest: signed,
-			}},
-		},
-	}
-
-	return asn1.Marshal(content)
-}
-
-type pkcs7SignedData struct {
-	ContentType asn1.ObjectIdentifier
-	Content     signedData `asn1:"tag:0,explicit"`
-}
-
-// signedData is defined in rfc2315, section 9.1.
-type signedData struct {
-	Version          int
-	DigestAlgorithms []pkix.AlgorithmIdentifier `asn1:"set"`
-	ContentInfo      contentInfo
-	Certificates     certificate  `asn1:"tag0,explicit"`
-	SignerInfos      []signerInfo `asn1:"set"`
-}
-
-type contentInfo struct {
-	Type asn1.ObjectIdentifier
-	// Content is optional in PKCS#7 and not provided here.
-}
-
-// certificate is defined in rfc2459, section 4.1.
-type certificate struct {
-	TBSCertificate     tbsCertificate
-	SignatureAlgorithm pkix.AlgorithmIdentifier
-	SignatureValue     asn1.BitString
-}
-
-// tbsCertificate is defined in rfc2459, section 4.1.
-type tbsCertificate struct {
-	Version      int `asn1:"tag:0,default:2,explicit"`
-	SerialNumber int
-	Signature    pkix.AlgorithmIdentifier
-	Issuer       pkix.RDNSequence // pkix.Name
-	Validity     validity
-	Subject      pkix.RDNSequence // pkix.Name
-	SubjectPKI   subjectPublicKeyInfo
-}
-
-// validity is defined in rfc2459, section 4.1.
-type validity struct {
-	NotBefore time.Time
-	NotAfter  time.Time
-}
-
-// subjectPublicKeyInfo is defined in rfc2459, section 4.1.
-type subjectPublicKeyInfo struct {
-	Algorithm        pkix.AlgorithmIdentifier
-	SubjectPublicKey asn1.BitString
-}
-
-type signerInfo struct {
-	Version                   int
-	IssuerAndSerialNumber     issuerAndSerialNumber
-	DigestAlgorithm           pkix.AlgorithmIdentifier
-	DigestEncryptionAlgorithm pkix.AlgorithmIdentifier
-	EncryptedDigest           []byte
-}
-
-type issuerAndSerialNumber struct {
-	Issuer       pkix.RDNSequence // pkix.Name
-	SerialNumber int
-}
-
-// Various ASN.1 Object Identifies, mostly from rfc3852.
-var (
-	oidPKCS7         = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 7}
-	oidData          = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 7, 1}
-	oidSignedData    = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 7, 2}
-	oidSHA1          = asn1.ObjectIdentifier{1, 3, 14, 3, 2, 26}
-	oidRSAEncryption = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 1}
-)
diff --git a/go/src/golang.org/x/mobile/cmd/gomobile/cert_test.go b/go/src/golang.org/x/mobile/cmd/gomobile/cert_test.go
deleted file mode 100644
index d1ce73c..0000000
--- a/go/src/golang.org/x/mobile/cmd/gomobile/cert_test.go
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright 2015 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 (
-	"crypto/rand"
-	"crypto/x509"
-	"encoding/pem"
-	"io/ioutil"
-	"os"
-	"os/exec"
-	"testing"
-)
-
-func TestSignPKCS7(t *testing.T) {
-	// Setup RSA key.
-	block, _ := pem.Decode([]byte(testKey))
-	if block == nil {
-		t.Fatal("no cert")
-	}
-	privKey, err := x509.ParsePKCS1PrivateKey(block.Bytes)
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	content := "Hello world,\nThis is signed."
-	cert, err := signPKCS7(rand.Reader, privKey, []byte(content))
-	if err != nil {
-		t.Fatal(err)
-	}
-	sig, err := ioutil.TempFile("", "content.rsa")
-	if err != nil {
-		t.Fatal(err)
-	}
-	sigPath := sig.Name()
-	defer os.Remove(sigPath)
-	if _, err := sig.Write(cert); err != nil {
-		t.Fatal(err)
-	}
-	if err := sig.Close(); err != nil {
-		t.Fatal(err)
-	}
-
-	if exec.Command("which", "openssl").Run() != nil {
-		t.Log("command openssl not found, skipping")
-	} else {
-		cmd := exec.Command(
-			"openssl", "asn1parse",
-			"-inform", "DER",
-			"-i",
-			"-in", sigPath,
-		)
-		out, err := cmd.CombinedOutput()
-		t.Logf("%v:\n%s", cmd.Args, out)
-		if err != nil {
-			t.Errorf("bad asn.1: %v", err)
-		}
-	}
-
-	if exec.Command("which", "keytool").Run() != nil {
-		t.Log("command keytool not found, skipping")
-	} else {
-		cmd := exec.Command("keytool", "-v", "-printcert", "-file", sigPath)
-		out, err := cmd.CombinedOutput()
-		t.Logf("%v:\n%s", cmd.Args, out)
-		if err != nil {
-			t.Errorf("keytool cannot parse signature: %v", err)
-		}
-	}
-}
-
-const testKey = `
------BEGIN RSA PRIVATE KEY-----
-MIIEowIBAAKCAQEAy6ItnWZJ8DpX9R5FdWbS9Kr1U8Z7mKgqNByGU7No99JUnmyu
-NQ6Uy6Nj0Gz3o3c0BXESECblOC13WdzjsH1Pi7/L9QV8jXOXX8cvkG5SJAyj6hcO
-LOapjDiN89NXjXtyv206JWYvRtpexyVrmHJgRAw3fiFI+m4g4Qop1CxcIF/EgYh7
-rYrqh4wbCM1OGaCleQWaOCXxZGm+J5YNKQcWpjZRrDrb35IZmlT0bK46CXUKvCqK
-x7YXHgfhC8ZsXCtsScKJVHs7gEsNxz7A0XoibFw6DoxtjKzUCktnT0w3wxdY7OTj
-9AR8mobFlM9W3yirX8TtwekWhDNTYEu8dwwykwIDAQABAoIBAA2hjpIhvcNR9H9Z
-BmdEecydAQ0ZlT5zy1dvrWI++UDVmIp+Ve8BSd6T0mOqV61elmHi3sWsBN4M1Rdz
-3N38lW2SajG9q0fAvBpSOBHgAKmfGv3Ziz5gNmtHgeEXfZ3f7J95zVGhlHqWtY95
-JsmuplkHxFMyITN6WcMWrhQg4A3enKLhJLlaGLJf9PeBrvVxHR1/txrfENd2iJBH
-FmxVGILL09fIIktJvoScbzVOneeWXj5vJGzWVhB17DHBbANGvVPdD5f+k/s5aooh
-hWAy/yLKocr294C4J+gkO5h2zjjjSGcmVHfrhlXQoEPX+iW1TGoF8BMtl4Llc+jw
-lKWKfpECgYEA9C428Z6CvAn+KJ2yhbAtuRo41kkOVoiQPtlPeRYs91Pq4+NBlfKO
-2nWLkyavVrLx4YQeCeaEU2Xoieo9msfLZGTVxgRlztylOUR+zz2FzDBYGicuUD3s
-EqC0Wv7tiX6dumpWyOcVVLmR9aKlOUzA9xemzIsWUwL3PpyONhKSq7kCgYEA1X2F
-f2jKjoOVzglhtuX4/SP9GxS4gRf9rOQ1Q8DzZhyH2LZ6Dnb1uEQvGhiqJTU8CXxb
-7odI0fgyNXq425Nlxc1Tu0G38TtJhwrx7HWHuFcbI/QpRtDYLWil8Zr7Q3BT9rdh
-moo4m937hLMvqOG9pyIbyjOEPK2WBCtKW5yabqsCgYEAu9DkUBr1Qf+Jr+IEU9I8
-iRkDSMeusJ6gHMd32pJVCfRRQvIlG1oTyTMKpafmzBAd/rFpjYHynFdRcutqcShm
-aJUq3QG68U9EAvWNeIhA5tr0mUEz3WKTt4xGzYsyWES8u4tZr3QXMzD9dOuinJ1N
-+4EEumXtSPKKDG3M8Qh+KnkCgYBUEVSTYmF5EynXc2xOCGsuy5AsrNEmzJqxDUBI
-SN/P0uZPmTOhJIkIIZlmrlW5xye4GIde+1jajeC/nG7U0EsgRAV31J4pWQ5QJigz
-0+g419wxIUFryGuIHhBSfpP472+w1G+T2mAGSLh1fdYDq7jx6oWE7xpghn5vb9id
-EKLjdwKBgBtz9mzbzutIfAW0Y8F23T60nKvQ0gibE92rnUbjPnw8HjL3AZLU05N+
-cSL5bhq0N5XHK77sscxW9vXjG0LJMXmFZPp9F6aV6ejkMIXyJ/Yz/EqeaJFwilTq
-Mc6xR47qkdzu0dQ1aPm4XD7AWDtIvPo/GG2DKOucLBbQc2cOWtKS
------END RSA PRIVATE KEY-----
-`
diff --git a/go/src/golang.org/x/mobile/cmd/gomobile/init.go b/go/src/golang.org/x/mobile/cmd/gomobile/init.go
deleted file mode 100644
index b634cc5..0000000
--- a/go/src/golang.org/x/mobile/cmd/gomobile/init.go
+++ /dev/null
@@ -1,550 +0,0 @@
-// Copyright 2015 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
-
-// TODO(crawshaw): build darwin/arm cross compiler on darwin/{386,amd64}
-// TODO(crawshaw): android/{386,arm64}
-
-import (
-	"archive/tar"
-	"bytes"
-	"compress/gzip"
-	"fmt"
-	"io"
-	"io/ioutil"
-	"net/http"
-	"os"
-	"os/exec"
-	"path/filepath"
-	"runtime"
-	"strings"
-)
-
-// useStrippedNDK determines whether the init subcommand fetches the GCC
-// toolchain from the original Android NDK, or from the stripped-down NDK
-// hosted specifically for the gomobile tool.
-//
-// There is a significant size different (400MB compared to 30MB).
-var useStrippedNDK = goos == "linux" || goos == "darwin"
-
-const ndkVersion = "ndk-r10d"
-
-var (
-	goos    = runtime.GOOS
-	goarch  = runtime.GOARCH
-	ndkarch string
-)
-
-func init() {
-	if runtime.GOARCH == "amd64" {
-		ndkarch = "x86_64"
-	} else {
-		ndkarch = runtime.GOARCH
-	}
-}
-
-var cmdInit = &command{
-	run:   runInit,
-	Name:  "init",
-	Short: "install android compiler toolchain",
-	Long: `
-Init downloads and installs the Android C++ compiler toolchain.
-
-The toolchain is installed in $GOPATH/pkg/gomobile.
-If the Android C++ compiler toolchain already exists in the path,
-it skips download and uses the existing toolchain.
-
-The -u option forces download and installation of the new toolchain
-even when the toolchain exists.
-`,
-}
-
-var initU bool // -u
-
-func init() {
-	cmdInit.flag.BoolVar(&initU, "u", false, "force toolchain download")
-}
-
-func runInit(cmd *command) error {
-	version, err := goVersion()
-	if err != nil {
-		return err
-	}
-
-	gopaths := filepath.SplitList(goEnv("GOPATH"))
-	if len(gopaths) == 0 {
-		return fmt.Errorf("GOPATH is not set")
-	}
-	ndkccpath = filepath.Join(gopaths[0], "pkg", "gomobile", "android-"+ndkVersion)
-	ndkccdl := filepath.Join(ndkccpath, "downloaded")
-	verpath := filepath.Join(gopaths[0], "pkg", "gomobile", "version")
-	if buildX {
-		fmt.Fprintln(xout, "NDKCCPATH="+ndkccpath)
-	}
-
-	needNDK := initU
-	if !needNDK {
-		if _, err := os.Stat(ndkccdl); err != nil {
-			needNDK = true
-		}
-	}
-
-	if needNDK {
-		if err := removeAll(ndkccpath); err != nil && !os.IsExist(err) {
-			return err
-		}
-		if err := mkdir(ndkccpath); err != nil {
-			return err
-		}
-	}
-
-	if buildN {
-		tmpdir = filepath.Join(ndkccpath, "work")
-	} else {
-		var err error
-		tmpdir, err = ioutil.TempDir(ndkccpath, "gomobile-init-")
-		if err != nil {
-			return err
-		}
-	}
-	if buildX {
-		fmt.Fprintln(xout, "WORK="+tmpdir)
-	}
-	defer removeAll(tmpdir)
-
-	goroot := goEnv("GOROOT")
-	tmpGoroot := filepath.Join(tmpdir, "go")
-	if err := copyGoroot(tmpGoroot, goroot); err != nil {
-		return err
-	}
-
-	if needNDK {
-		if err := fetchNDK(); err != nil {
-			return err
-		}
-
-		if !buildN {
-			if err := ioutil.WriteFile(ndkccdl, []byte("done"), 0644); err != nil {
-				return err
-			}
-		}
-	}
-
-	dst := filepath.Join(ndkccpath, "arm")
-
-	// TODO(crawshaw): make.bat on windows
-	ndkccbin := filepath.Join(dst, "bin")
-	envpath := os.Getenv("PATH")
-	if buildN {
-		envpath = "$PATH"
-	}
-	make := exec.Command(filepath.Join(tmpGoroot, "src", "make.bash"), "--no-clean")
-	make.Dir = filepath.Join(tmpGoroot, "src")
-	make.Env = []string{
-		`PATH=` + envpath,
-		`TMPDIR=` + tmpdir,
-		`HOME=` + os.Getenv("HOME"), // for default the go1.4 bootstrap
-		`GOOS=android`,
-		`GOARCH=arm`,
-		`GOARM=7`,
-		`CGO_ENABLED=1`,
-		`CC_FOR_TARGET=` + filepath.Join(ndkccbin, "arm-linux-androideabi-gcc"),
-		`CXX_FOR_TARGET=` + filepath.Join(ndkccbin, "arm-linux-androideabi-g++"),
-	}
-	if v := goEnv("GOROOT_BOOTSTRAP"); v != "" {
-		make.Env = append(make.Env, `GOROOT_BOOTSTRAP=`+v)
-	}
-	if buildV {
-		fmt.Fprintf(os.Stderr, "building android/arm cross compiler\n")
-		make.Stdout = os.Stdout
-		make.Stderr = os.Stderr
-	}
-	if buildX {
-		printcmd("%s", strings.Join(make.Env, " ")+" "+strings.Join(make.Args, " "))
-	}
-	if !buildN {
-		if err := make.Run(); err != nil {
-			return err
-		}
-	}
-
-	// Move the Go cross compiler toolchain into GOPATH.
-	gotoolsrc := filepath.Join(tmpGoroot, "pkg", "tool", goos+"_"+goarch)
-	if err := move(ndkccbin, gotoolsrc, "5a", "5l", "5g", "cgo", "nm", "pack", "link"); err != nil {
-		return err
-	}
-
-	// Build toolexec command.
-	toolexecSrc := filepath.Join(tmpdir, "toolexec.go")
-	if !buildN {
-		if err := ioutil.WriteFile(toolexecSrc, []byte(toolexec), 0644); err != nil {
-			return err
-		}
-	}
-	make = exec.Command("go", "build", "-o", filepath.Join(ndkccbin, "toolexec"), toolexecSrc)
-	if buildV {
-		fmt.Fprintf(os.Stderr, "building gomobile toolexec\n")
-		make.Stdout = os.Stdout
-		make.Stderr = os.Stderr
-	}
-	if buildX {
-		printcmd("%s", strings.Join(make.Args, " "))
-	}
-	if !buildN {
-		if err := make.Run(); err != nil {
-			return err
-		}
-	}
-
-	// Move pre-compiled stdlib for android into GOROOT. This is
-	// the only time we modify the user's GOROOT.
-	cannotRemove := false
-	if err := removeAll(filepath.Join(goroot, "pkg", "android_arm")); err != nil {
-		cannotRemove = true
-	}
-	if err := move(filepath.Join(goroot, "pkg"), filepath.Join(tmpGoroot, "pkg"), "android_arm"); err != nil {
-		// Move android_arm into a temp directory that outlives
-		// this process and give the user installation instructions.
-		dir, err := ioutil.TempDir("", "gomobile-")
-		if err != nil {
-			return err
-		}
-		if err := move(dir, filepath.Join(tmpGoroot, "pkg"), "android_arm"); err != nil {
-			return err
-		}
-		// TODO: modify instructions for windows.
-		remove := ""
-		if cannotRemove {
-			remove = "\trm -r -f %s/pkg/android_arm\n"
-		}
-		return fmt.Errorf(
-			`Cannot install android/arm in GOROOT.
-Make GOROOT writable (possibly by becoming the super user, using sudo) and run:
-%s	mv %s %s`,
-			remove,
-			filepath.Join(dir, "android_arm"),
-			filepath.Join(goroot, "pkg"),
-		)
-	}
-
-	if buildX {
-		printcmd("go version > %s", verpath)
-	}
-	if !buildN {
-		if err := ioutil.WriteFile(verpath, version, 0644); err != nil {
-			return err
-		}
-	}
-
-	return nil
-}
-
-// toolexec is the source of a small program designed to be passed to
-// the -toolexec flag of go build.
-const toolexec = `package main
-
-import (
-	"fmt"
-	"os"
-	"os/exec"
-	"path/filepath"
-)
-
-func main() {
-	args := append([]string{}, os.Args[1:]...)
-	args[0] = filepath.Join(os.Getenv("GOMOBILEPATH"), filepath.Base(args[0]))
-	cmd := exec.Command(args[0], args[1:]...)
-	cmd.Stdout = os.Stdout
-	cmd.Stderr = os.Stderr
-	if err := cmd.Run(); err != nil {
-		fmt.Fprintf(os.Stderr, "%v\n", err)
-		os.Exit(1)
-	}
-}
-`
-
-func move(dst, src string, names ...string) error {
-	for _, name := range names {
-		srcf := filepath.Join(src, name)
-		dstf := filepath.Join(dst, name)
-		if buildX {
-			printcmd("mv %s %s", srcf, dstf)
-		}
-		if buildN {
-			continue
-		}
-		if err := os.Rename(srcf, dstf); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func mkdir(dir string) error {
-	if buildX {
-		printcmd("mkdir -p %s", dir)
-	}
-	if buildN {
-		return nil
-	}
-	return os.MkdirAll(dir, 0755)
-}
-
-func symlink(src, dst string) error {
-	if buildX {
-		printcmd("ln -s %s %s", src, dst)
-	}
-	if buildN {
-		return nil
-	}
-	return os.Symlink(src, dst)
-}
-
-func rm(name string) error {
-	if buildX {
-		printcmd("rm %s", name)
-	}
-	if buildN {
-		return nil
-	}
-	return os.Remove(name)
-}
-
-func goVersion() ([]byte, error) {
-	if err := exec.Command("which", "go").Run(); err != nil {
-		return nil, fmt.Errorf(`no Go tool on $PATH`)
-	}
-	buildHelp, err := exec.Command("go", "help", "build").Output()
-	if err != nil {
-		return nil, fmt.Errorf("bad Go tool: %v", err)
-	}
-	if !bytes.Contains(buildHelp, []byte("-toolexec")) {
-		return nil, fmt.Errorf("installed Go tool does not support -toolexec")
-	}
-	return exec.Command("go", "version").Output()
-}
-
-func fetchNDK() error {
-	if useStrippedNDK {
-		if err := fetchStrippedNDK(); err != nil {
-			return err
-		}
-	} else {
-		ndkName := "android-" + ndkVersion + "-" + goos + "-" + ndkarch + "."
-		if goos == "windows" {
-			ndkName += "exe"
-		} else {
-			ndkName += "bin"
-		}
-		url := "https://dl.google.com/android/ndk/" + ndkName
-		if err := fetch(filepath.Join(tmpdir, ndkName), url); err != nil {
-			return err
-		}
-
-		inflate := exec.Command(filepath.Join(tmpdir, ndkName))
-		inflate.Dir = tmpdir
-		if buildX {
-			printcmd("%s", inflate.Args[0])
-		}
-		if !buildN {
-			out, err := inflate.CombinedOutput()
-			if err != nil {
-				if buildV {
-					os.Stderr.Write(out)
-				}
-				return err
-			}
-		}
-	}
-
-	dst := filepath.Join(ndkccpath, "arm")
-	dstSysroot := filepath.Join(dst, "sysroot", "usr")
-	if err := mkdir(dstSysroot); err != nil {
-		return err
-	}
-
-	srcSysroot := filepath.Join(tmpdir, "android-ndk-r10d", "platforms", "android-15", "arch-arm", "usr")
-	if err := move(dstSysroot, srcSysroot, "include", "lib"); err != nil {
-		return err
-	}
-
-	ndkpath := filepath.Join(tmpdir, "android-ndk-r10d", "toolchains", "arm-linux-androideabi-4.8", "prebuilt", goos+"-"+ndkarch)
-	if err := move(dst, ndkpath, "bin", "lib", "libexec"); err != nil {
-		return err
-	}
-
-	linkpath := filepath.Join(dst, "arm-linux-androideabi", "bin")
-	if err := mkdir(linkpath); err != nil {
-		return err
-	}
-	for _, name := range []string{"ld", "as", "gcc", "g++"} {
-		if err := symlink(filepath.Join(dst, "bin", "arm-linux-androideabi-"+name), filepath.Join(linkpath, name)); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func fetchStrippedNDK() error {
-	name := "gomobile-ndk-r10d-" + goos + "-" + ndkarch + ".tar.gz"
-	url := "https://dl.google.com/go/mobile/" + name
-	if err := fetch(filepath.Join(tmpdir, name), url); err != nil {
-		return err
-	}
-	if buildX {
-		printcmd("tar xfz %s", name)
-	}
-	if buildN {
-		return nil
-	}
-
-	tf, err := os.Open(filepath.Join(tmpdir, name))
-	if err != nil {
-		return err
-	}
-	defer tf.Close()
-	zr, err := gzip.NewReader(tf)
-	if err != nil {
-		return err
-	}
-	tr := tar.NewReader(zr)
-	for {
-		hdr, err := tr.Next()
-		if err == io.EOF {
-			break
-		}
-		if err != nil {
-			return err
-		}
-		dst := filepath.Join(tmpdir, hdr.Name)
-		if hdr.Typeflag == tar.TypeSymlink {
-			if err := symlink(hdr.Linkname, dst); err != nil {
-				return err
-			}
-			continue
-		}
-		if err := os.MkdirAll(filepath.Dir(dst), 0755); err != nil {
-			return err
-		}
-		f, err := os.OpenFile(dst, os.O_CREATE|os.O_EXCL|os.O_WRONLY, os.FileMode(hdr.Mode)&0777)
-		if err != nil {
-			return err
-		}
-		if _, err := io.Copy(f, tr); err != nil {
-			return err
-		}
-		if err := f.Close(); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func fetch(dst, url string) error {
-	if buildV {
-		fmt.Fprintf(os.Stderr, "fetching %s\n", url)
-	}
-	if buildX {
-		printcmd("curl -o%s %s", dst, url)
-	}
-	if buildN {
-		return nil
-	}
-
-	f, err := os.OpenFile(dst, os.O_CREATE|os.O_EXCL|os.O_WRONLY, 0755)
-	if err != nil {
-		return err
-	}
-
-	resp, err := http.Get(url)
-	if err != nil {
-		return err
-	}
-	_, err = io.Copy(f, resp.Body)
-	err2 := resp.Body.Close()
-	err3 := f.Close()
-	if err != nil {
-		return err
-	}
-	if err2 != nil {
-		return err2
-	}
-	return err3
-}
-
-// copyGoroot copies GOROOT from src to dst.
-//
-// It skips the pkg directory, which is not necessary for make.bash,
-// and symlinks .git to avoid a 70MB copy.
-func copyGoroot(dst, src string) error {
-	if err := mkdir(filepath.Join(dst, "pkg")); err != nil {
-		return err
-	}
-	for _, dir := range []string{"include", "lib", "src"} {
-		if err := copyAll(filepath.Join(dst, dir), filepath.Join(src, dir)); err != nil {
-			return err
-		}
-	}
-	return symlink(filepath.Join(src, ".git"), filepath.Join(dst, ".git"))
-}
-
-func copyAll(dst, src string) error {
-	if buildX {
-		printcmd("cp -a %s %s", src, dst)
-	}
-	if buildN {
-		return nil
-	}
-	return filepath.Walk(src, func(path string, info os.FileInfo, errin error) (err error) {
-		if errin != nil {
-			return errin
-		}
-		prefixLen := len(src)
-		if len(path) > prefixLen {
-			prefixLen++ // file separator
-		}
-		outpath := filepath.Join(dst, path[prefixLen:])
-		if info.IsDir() {
-			return os.Mkdir(outpath, 0755)
-		}
-		in, err := os.Open(path)
-		if err != nil {
-			return err
-		}
-		defer in.Close()
-		out, err := os.OpenFile(outpath, os.O_CREATE|os.O_EXCL|os.O_WRONLY, info.Mode())
-		if err != nil {
-			return err
-		}
-		defer func() {
-			if errc := out.Close(); err == nil {
-				err = errc
-			}
-		}()
-		_, err = io.Copy(out, in)
-		return err
-	})
-}
-
-func removeAll(path string) error {
-	if buildX {
-		printcmd("rm -r -f %q", path)
-	}
-	if buildN {
-		return nil
-	}
-	return os.RemoveAll(path)
-}
-
-func goEnv(name string) string {
-	if val := os.Getenv(name); val != "" {
-		return val
-	}
-	val, err := exec.Command("go", "env", name).Output()
-	if err != nil {
-		panic(err) // the Go tool was tested to work earlier
-	}
-	return strings.TrimSpace(string(val))
-}
diff --git a/go/src/golang.org/x/mobile/cmd/gomobile/init_test.go b/go/src/golang.org/x/mobile/cmd/gomobile/init_test.go
deleted file mode 100644
index 26039d2..0000000
--- a/go/src/golang.org/x/mobile/cmd/gomobile/init_test.go
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2015 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"
-	"os"
-	"testing"
-	"text/template"
-)
-
-func TestInit(t *testing.T) {
-	buf := new(bytes.Buffer)
-	gopath := os.Getenv("GOPATH")
-	defer func() {
-		xout = os.Stderr
-		buildN = false
-		buildX = false
-		os.Setenv("GOPATH", gopath)
-	}()
-	xout = buf
-	buildN = true
-	buildX = true
-	// Test that first GOPATH element is chosen correctly.
-	os.Setenv("GOPATH", "GOPATH1:/path2:/path3")
-
-	err := runInit(cmdInit)
-	if err != nil {
-		t.Log(buf.String())
-		t.Fatal(err)
-	}
-
-	diff, err := diffOutput(buf.String(), initTmpl)
-	if err != nil {
-		t.Fatalf("computing diff failed: %v", err)
-	}
-	if diff != "" {
-		t.Errorf("unexpected output:\n%s", diff)
-	}
-}
-
-func diffOutput(got string, wantTmpl *template.Template) (string, error) {
-	wantBuf := new(bytes.Buffer)
-	data := outputData{ndkVersion, goos, goarch, ndkarch}
-	if err := wantTmpl.Execute(wantBuf, data); err != nil {
-		return "", err
-	}
-	want := wantBuf.String()
-	if got != want {
-		return diff(got, want)
-	}
-	return "", nil
-}
-
-type outputData struct {
-	NDK     string
-	GOOS    string
-	GOARCH  string
-	NDKARCH string
-}
-
-var initTmpl = template.Must(template.New("output").Parse(`NDKCCPATH=GOPATH1/pkg/gomobile/android-{{.NDK}}
-rm -r -f "$NDKCCPATH"
-mkdir -p $NDKCCPATH
-WORK=GOPATH1/pkg/gomobile/android-{{.NDK}}/work
-mkdir -p $WORK/go/pkg
-cp -a $HOME/go/include $WORK/go/include
-cp -a $HOME/go/lib $WORK/go/lib
-cp -a $HOME/go/src $WORK/go/src
-ln -s $HOME/go/.git $WORK/go/.git
-curl -o$WORK/gomobile-{{.NDK}}-{{.GOOS}}-{{.NDKARCH}}.tar.gz https://dl.google.com/go/mobile/gomobile-{{.NDK}}-{{.GOOS}}-{{.NDKARCH}}.tar.gz
-tar xfz gomobile-{{.NDK}}-{{.GOOS}}-{{.NDKARCH}}.tar.gz
-mkdir -p $NDKCCPATH/arm/sysroot/usr
-mv $WORK/android-{{.NDK}}/platforms/android-15/arch-arm/usr/include $NDKCCPATH/arm/sysroot/usr/include
-mv $WORK/android-{{.NDK}}/platforms/android-15/arch-arm/usr/lib $NDKCCPATH/arm/sysroot/usr/lib
-mv $WORK/android-{{.NDK}}/toolchains/arm-linux-androideabi-4.8/prebuilt/{{.GOOS}}-{{.NDKARCH}}/bin $NDKCCPATH/arm/bin
-mv $WORK/android-{{.NDK}}/toolchains/arm-linux-androideabi-4.8/prebuilt/{{.GOOS}}-{{.NDKARCH}}/lib $NDKCCPATH/arm/lib
-mv $WORK/android-{{.NDK}}/toolchains/arm-linux-androideabi-4.8/prebuilt/{{.GOOS}}-{{.NDKARCH}}/libexec $NDKCCPATH/arm/libexec
-mkdir -p $NDKCCPATH/arm/arm-linux-androideabi/bin
-ln -s $NDKCCPATH/arm/bin/arm-linux-androideabi-ld $NDKCCPATH/arm/arm-linux-androideabi/bin/ld
-ln -s $NDKCCPATH/arm/bin/arm-linux-androideabi-as $NDKCCPATH/arm/arm-linux-androideabi/bin/as
-ln -s $NDKCCPATH/arm/bin/arm-linux-androideabi-gcc $NDKCCPATH/arm/arm-linux-androideabi/bin/gcc
-ln -s $NDKCCPATH/arm/bin/arm-linux-androideabi-g++ $NDKCCPATH/arm/arm-linux-androideabi/bin/g++
-PATH=$PATH TMPDIR=$WORK HOME=$HOME GOOS=android GOARCH=arm GOARM=7 CGO_ENABLED=1 CC_FOR_TARGET=$NDKCCPATH/arm/bin/arm-linux-androideabi-gcc CXX_FOR_TARGET=$NDKCCPATH/arm/bin/arm-linux-androideabi-g++ $WORK/go/src/make.bash --no-clean
-mv $WORK/go/pkg/tool/{{.GOOS}}_{{.GOARCH}}/5a $NDKCCPATH/arm/bin/5a
-mv $WORK/go/pkg/tool/{{.GOOS}}_{{.GOARCH}}/5l $NDKCCPATH/arm/bin/5l
-mv $WORK/go/pkg/tool/{{.GOOS}}_{{.GOARCH}}/5g $NDKCCPATH/arm/bin/5g
-mv $WORK/go/pkg/tool/{{.GOOS}}_{{.GOARCH}}/cgo $NDKCCPATH/arm/bin/cgo
-mv $WORK/go/pkg/tool/{{.GOOS}}_{{.GOARCH}}/nm $NDKCCPATH/arm/bin/nm
-mv $WORK/go/pkg/tool/{{.GOOS}}_{{.GOARCH}}/pack $NDKCCPATH/arm/bin/pack
-mv $WORK/go/pkg/tool/{{.GOOS}}_{{.GOARCH}}/link $NDKCCPATH/arm/bin/link
-go build -o $NDKCCPATH/arm/bin/toolexec $WORK/toolexec.go
-rm -r -f "$HOME/go/pkg/android_arm"
-mv $WORK/go/pkg/android_arm $HOME/go/pkg/android_arm
-go version > GOPATH1/pkg/gomobile/version
-rm -r -f "$WORK"
-`))
diff --git a/go/src/golang.org/x/mobile/cmd/gomobile/install.go b/go/src/golang.org/x/mobile/cmd/gomobile/install.go
deleted file mode 100644
index 615a07a..0000000
--- a/go/src/golang.org/x/mobile/cmd/gomobile/install.go
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2015 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 (
-	"os"
-	"os/exec"
-	"path/filepath"
-)
-
-var cmdInstall = &command{
-	run:   runInstall,
-	Name:  "install",
-	Usage: "[package]",
-	Short: "compile android APK and/or iOS app and install on device",
-	Long: `
-Install compiles and installs the app named by the import path on the
-attached mobile device.
-
-This command requires the 'adb' tool on the PATH.
-
-See the build command help for common flags and common behavior.
-`,
-}
-
-func runInstall(cmd *command) error {
-	if err := runBuild(cmd); err != nil {
-		return err
-	}
-	install := exec.Command(
-		`adb`,
-		`install`,
-		`-r`,
-		filepath.Base(pkg.Dir)+`.apk`,
-	)
-	if buildV {
-		install.Stdout = os.Stdout
-		install.Stderr = os.Stderr
-	}
-	return install.Run()
-}
diff --git a/go/src/golang.org/x/mobile/cmd/gomobile/main.go b/go/src/golang.org/x/mobile/cmd/gomobile/main.go
deleted file mode 100644
index b091c90..0000000
--- a/go/src/golang.org/x/mobile/cmd/gomobile/main.go
+++ /dev/null
@@ -1,127 +0,0 @@
-// Copyright 2015 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.
-
-/*
-Gomobile is a tool for building and running mobile apps written in Go.
-
-The tool is under development and not ready for use.
-*/
-package main
-
-import (
-	"bufio"
-	"flag"
-	"fmt"
-	"html/template"
-	"io"
-	"log"
-	"os"
-)
-
-func printUsage(w io.Writer) {
-	bufw := bufio.NewWriter(w)
-	if err := usageTmpl.Execute(bufw, commands); err != nil {
-		panic(err)
-	}
-	bufw.Flush()
-}
-
-var gomobileName = "gomobile"
-
-func main() {
-	gomobileName = os.Args[0]
-	flag.Usage = func() {
-		printUsage(os.Stderr)
-		os.Exit(2)
-	}
-	flag.Parse()
-	log.SetFlags(0)
-
-	args := flag.Args()
-	if len(args) < 1 {
-		flag.Usage()
-	}
-
-	if args[0] == "help" {
-		help(args[1:])
-		return
-	}
-
-	for _, cmd := range commands {
-		if cmd.Name == args[0] {
-			cmd.flag.Usage = func() {
-				cmd.usage()
-				os.Exit(1)
-			}
-			cmd.flag.Parse(args[1:])
-			if err := cmd.run(cmd); err != nil {
-				msg := err.Error()
-				if msg != "" {
-					fmt.Fprintf(os.Stderr, "%s: %v\n", os.Args[0], err)
-				}
-				os.Exit(1)
-			}
-			return
-		}
-	}
-	fmt.Fprintf(os.Stderr, "%s: unknown subcommand %q\nRun 'gomobile help' for usage.\n", os.Args[0], args[0])
-	os.Exit(2)
-}
-
-func help(args []string) {
-	if len(args) == 0 {
-		printUsage(os.Stdout)
-		return // succeeded at helping
-	}
-	if len(args) != 1 {
-		fmt.Fprintf(os.Stderr, "usage: %s help command\n\nToo many arguments given.\n", gomobileName)
-		os.Exit(2) // failed to help
-	}
-
-	arg := args[0]
-	for _, cmd := range commands {
-		if cmd.Name == arg {
-			cmd.usage()
-			return // succeeded at helping
-		}
-	}
-
-	fmt.Fprintf(os.Stderr, "Unknown help topic %#q.  Run '%s help'.\n", arg, gomobileName)
-	os.Exit(2)
-}
-
-var commands = []*command{
-	// TODO(crawshaw): cmdRun
-	cmdBind,
-	cmdBuild,
-	cmdInit,
-	cmdInstall,
-}
-
-type command struct {
-	run   func(*command) error
-	flag  flag.FlagSet
-	Name  string
-	Usage string
-	Short string
-	Long  string
-}
-
-func (cmd *command) usage() {
-	fmt.Fprintf(os.Stdout, "usage: %s %s %s\n%s", gomobileName, cmd.Name, cmd.Usage, cmd.Long)
-}
-
-var usageTmpl = template.Must(template.New("usage").Parse(
-	`Gomobile is a tool for building Android and iOS Go apps.
-
-Usage:
-
-	gomobile command [arguments]
-
-Commands:
-{{range .}}
-	{{.Name | printf "%-11s"}} {{.Short}}{{end}}
-
-Use 'gomobile help [command]' for more information about that command.
-`))
diff --git a/go/src/golang.org/x/mobile/cmd/gomobile/manifest.go b/go/src/golang.org/x/mobile/cmd/gomobile/manifest.go
deleted file mode 100644
index 04384e2..0000000
--- a/go/src/golang.org/x/mobile/cmd/gomobile/manifest.go
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2015 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 (
-	"encoding/xml"
-	"errors"
-	"fmt"
-	"html/template"
-)
-
-type manifestXML struct {
-	Activity activityXML `xml:"application>activity"`
-}
-
-type activityXML struct {
-	Name     string        `xml:"name,attr"`
-	MetaData []metaDataXML `xml:"meta-data"`
-}
-
-type metaDataXML struct {
-	Name  string `xml:"name,attr"`
-	Value string `xml:"value,attr"`
-}
-
-// manifestLibName parses the AndroidManifest.xml and finds the library
-// name of the NativeActivity.
-func manifestLibName(data []byte) (string, error) {
-	manifest := new(manifestXML)
-	if err := xml.Unmarshal(data, manifest); err != nil {
-		return "", err
-	}
-	if manifest.Activity.Name != "android.app.NativeActivity" {
-		return "", fmt.Errorf("can only build an .apk for NativeActivity, not %q", manifest.Activity.Name)
-	}
-	libName := ""
-	for _, md := range manifest.Activity.MetaData {
-		if md.Name == "android.app.lib_name" {
-			libName = md.Value
-			break
-		}
-	}
-	if libName == "" {
-		return "", errors.New("AndroidManifest.xml missing meta-data android.app.lib_name")
-	}
-	return libName, nil
-}
-
-type manifestTmplData struct {
-	JavaPkgPath string
-	Name        string
-	LibName     string
-}
-
-var manifestTmpl = template.Must(template.New("manifest").Parse(`
-<manifest
-	xmlns:android="http://schemas.android.com/apk/res/android"
-	package="{{.JavaPkgPath}}"
-	android:versionCode="1"
-	android:versionName="1.0">
-
-	<uses-sdk android:minSdkVersion="9" />
-	<application android:label="{{.Name}}" android:hasCode="false" android:debuggable="true">
-	<activity android:name="android.app.NativeActivity"
-		android:label="{{.Name}}"
-		android:configChanges="orientation|keyboardHidden">
-		<meta-data android:name="android.app.lib_name" android:value="{{.LibName}}" />
-		<intent-filter>
-			<action android:name="android.intent.action.MAIN" />
-			<category android:name="android.intent.category.LAUNCHER" />
-		</intent-filter>
-	</activity>
-	</application>
-</manifest>`))
diff --git a/go/src/golang.org/x/mobile/cmd/gomobile/release.go b/go/src/golang.org/x/mobile/cmd/gomobile/release.go
deleted file mode 100644
index 7e9d672..0000000
--- a/go/src/golang.org/x/mobile/cmd/gomobile/release.go
+++ /dev/null
@@ -1,244 +0,0 @@
-// Copyright 2015 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.
-
-//+build ignore
-
-// Release is a tool for building the NDK tarballs hosted on dl.google.com.
-//
-// The Go toolchain only needs the gcc compiler and headers, which are ~10MB.
-// The entire NDK is ~400MB. Building smaller toolchain binaries reduces the
-// run time of gomobile init significantly.
-package main
-
-import (
-	"archive/tar"
-	"bufio"
-	"compress/gzip"
-	"fmt"
-	"io"
-	"io/ioutil"
-	"log"
-	"net/http"
-	"os"
-	"os/exec"
-	"path/filepath"
-	"runtime"
-)
-
-const ndkVersion = "ndk-r10d"
-
-type version struct {
-	os   string
-	arch string
-}
-
-var hosts = []version{
-	// TODO: windows
-	{"darwin", "x86"},
-	{"darwin", "x86_64"},
-	{"linux", "x86"},
-	{"linux", "x86_64"},
-}
-
-var tmpdir string
-
-func main() {
-	var err error
-	tmpdir, err = ioutil.TempDir("", "gomobile-release-")
-	if err != nil {
-		log.Fatal(err)
-	}
-	defer os.RemoveAll(tmpdir)
-
-	for _, host := range hosts {
-		if err := mkpkg(host); err != nil {
-			log.Fatal(err)
-		}
-	}
-}
-
-func mkpkg(host version) (err error) {
-	ndkName := "android-" + ndkVersion + "-" + host.os + "-" + host.arch + "."
-	if host.os == "windows" {
-		ndkName += "exe"
-	} else {
-		ndkName += "bin"
-	}
-	url := "http://dl.google.com/android/ndk/" + ndkName
-	log.Printf("%s\n", url)
-	binPath := tmpdir + "/" + ndkName
-	if err := fetch(binPath, url); err != nil {
-		log.Fatal(err)
-	}
-
-	src := tmpdir + "/" + host.os + "-" + host.arch + "-src"
-	dst := tmpdir + "/" + host.os + "-" + host.arch + "-dst"
-	if err := os.Mkdir(src, 0755); err != nil {
-		return err
-	}
-	if err := inflate(src, binPath); err != nil {
-		return err
-	}
-
-	// The NDK is unpacked into tmpdir/linux-x86_64-src/android-ndk-r10d.
-	// Move the files we want into tmpdir/linux-x86_64-dst/android-ndk-r10d.
-	// We preserve the same file layout to make the full NDK interchangable
-	// with the cut down file.
-	usr := "android-" + ndkVersion + "/platforms/android-15/arch-arm/usr"
-	gcc := "android-" + ndkVersion + "/toolchains/arm-linux-androideabi-4.8/prebuilt/" + host.os + "-" + host.arch
-	if err := os.MkdirAll(dst+"/"+usr, 0755); err != nil {
-		return err
-	}
-	if err := os.MkdirAll(dst+"/"+gcc, 0755); err != nil {
-		return err
-	}
-	if err := move(dst+"/"+usr, src+"/"+usr, "include", "lib"); err != nil {
-		return err
-	}
-	if err := move(dst+"/"+gcc, src+"/"+gcc, "bin", "lib", "libexec", "COPYING", "COPYING.LIB"); err != nil {
-		return err
-	}
-
-	// Build the tarball.
-	f, err := os.Create("gomobile-ndk-r10d-" + host.os + "-" + host.arch + ".tar.gz")
-	if err != nil {
-		return err
-	}
-	bw := bufio.NewWriter(f)
-	zw, err := gzip.NewWriterLevel(bw, gzip.BestCompression)
-	if err != nil {
-		return err
-	}
-	tw := tar.NewWriter(zw)
-	defer func() {
-		err2 := f.Close()
-		if err == nil {
-			err = err2
-		}
-	}()
-	defer func() {
-		err2 := bw.Flush()
-		if err == nil {
-			err = err2
-		}
-	}()
-	defer func() {
-		err2 := zw.Close()
-		if err == nil {
-			err = err2
-		}
-	}()
-	defer func() {
-		err2 := tw.Close()
-		if err == nil {
-			err = err2
-		}
-	}()
-
-	readme := "Stripped down copy of:\n\n\t" + url + "\n\nGenerated by golang.org/x/mobile/cmd/gomobile/release.go."
-	err = tw.WriteHeader(&tar.Header{
-		Name: "README",
-		Mode: 0644,
-		Size: int64(len(readme)),
-	})
-	if err != nil {
-		return err
-	}
-	_, err = tw.Write([]byte(readme))
-	if err != nil {
-		return err
-	}
-
-	return filepath.Walk(dst, func(path string, fi os.FileInfo, err error) error {
-		defer func() {
-			if err != nil {
-				err = fmt.Errorf("%s: %v", path, err)
-			}
-		}()
-		if err != nil {
-			return err
-		}
-		if path == dst {
-			return nil
-		}
-		name := path[len(dst)+1:]
-		if fi.IsDir() {
-			return nil
-		}
-		if fi.Mode()&os.ModeSymlink != 0 {
-			dst, err := os.Readlink(path)
-			if err != nil {
-				log.Printf("bad symlink: %s", name)
-				return nil
-			}
-			//log.Printf("linking %s to %s", name, dst)
-			return tw.WriteHeader(&tar.Header{
-				Name:     name,
-				Linkname: dst,
-				Typeflag: tar.TypeSymlink,
-			})
-		}
-		//log.Printf("writing %s (%d)", name, fi.Size())
-		err = tw.WriteHeader(&tar.Header{
-			Name: name,
-			Mode: int64(fi.Mode()),
-			Size: fi.Size(),
-		})
-		if err != nil {
-			return err
-		}
-		f, err := os.Open(path)
-		if err != nil {
-			return err
-		}
-		_, err = io.Copy(tw, f)
-		f.Close()
-		return err
-	})
-}
-
-func fetch(dst, url string) error {
-	f, err := os.OpenFile(dst, os.O_CREATE|os.O_EXCL|os.O_WRONLY, 0755)
-	if err != nil {
-		return err
-	}
-	resp, err := http.Get(url)
-	if err != nil {
-		return err
-	}
-	_, err = io.Copy(f, resp.Body)
-	err2 := resp.Body.Close()
-	err3 := f.Close()
-	if err != nil {
-		return err
-	}
-	if err2 != nil {
-		return err2
-	}
-	return err3
-}
-
-func inflate(dst, path string) error {
-	p7zip := "7z"
-	if runtime.GOOS == "darwin" {
-		p7zip = "/Applications/Keka.app/Contents/Resources/keka7z"
-	}
-	cmd := exec.Command(p7zip, "x", path)
-	cmd.Dir = dst
-	out, err := cmd.CombinedOutput()
-	if err != nil {
-		os.Stderr.Write(out)
-		return err
-	}
-	return nil
-}
-
-func move(dst, src string, names ...string) error {
-	for _, name := range names {
-		if err := os.Rename(src+"/"+name, dst+"/"+name); err != nil {
-			return err
-		}
-	}
-	return nil
-}
diff --git a/go/src/golang.org/x/mobile/cmd/gomobile/strings_flag.go b/go/src/golang.org/x/mobile/cmd/gomobile/strings_flag.go
deleted file mode 100644
index 330833e..0000000
--- a/go/src/golang.org/x/mobile/cmd/gomobile/strings_flag.go
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2015 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 "fmt"
-
-type stringsFlag []string
-
-func (v *stringsFlag) Set(s string) error {
-	var err error
-	*v, err = splitQuotedFields(s)
-	if *v == nil {
-		*v = []string{}
-	}
-	return err
-}
-
-func isSpaceByte(c byte) bool {
-	return c == ' ' || c == '\t' || c == '\n' || c == '\r'
-}
-
-func splitQuotedFields(s string) ([]string, error) {
-	// Split fields allowing '' or "" around elements.
-	// Quotes further inside the string do not count.
-	var f []string
-	for len(s) > 0 {
-		for len(s) > 0 && isSpaceByte(s[0]) {
-			s = s[1:]
-		}
-		if len(s) == 0 {
-			break
-		}
-		// Accepted quoted string. No unescaping inside.
-		if s[0] == '"' || s[0] == '\'' {
-			quote := s[0]
-			s = s[1:]
-			i := 0
-			for i < len(s) && s[i] != quote {
-				i++
-			}
-			if i >= len(s) {
-				return nil, fmt.Errorf("unterminated %c string", quote)
-			}
-			f = append(f, s[:i])
-			s = s[i+1:]
-			continue
-		}
-		i := 0
-		for i < len(s) && !isSpaceByte(s[i]) {
-			i++
-		}
-		f = append(f, s[:i])
-		s = s[i:]
-	}
-	return f, nil
-}
-
-func (v *stringsFlag) String() string {
-	return "<stringsFlag>"
-}
diff --git a/go/src/golang.org/x/mobile/cmd/gomobile/writer.go b/go/src/golang.org/x/mobile/cmd/gomobile/writer.go
deleted file mode 100644
index 3da75c8..0000000
--- a/go/src/golang.org/x/mobile/cmd/gomobile/writer.go
+++ /dev/null
@@ -1,273 +0,0 @@
-// Copyright 2015 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
-
-// APK is the archival format used for Android apps. It is a ZIP archive with
-// three extra files:
-//
-//	META-INF/MANIFEST.MF
-//	META-INF/CERT.SF
-//	META-INF/CERT.RSA
-//
-// The MANIFEST.MF comes from the Java JAR archive format. It is a list of
-// files included in the archive along with a SHA1 hash, for example:
-//
-//	Name: lib/armeabi/libbasic.so
-//	SHA1-Digest: ntLSc1eLCS2Tq1oB4Vw6jvkranw=
-//
-// For debugging, the equivalent SHA1-Digest can be generated with OpenSSL:
-//
-//	cat lib/armeabi/libbasic.so | openssl sha1 -binary | openssl base64
-//
-// CERT.SF is a similar manifest. It begins with a SHA1 digest of the entire
-// manifest file:
-//
-//	Signature-Version: 1.0
-//	Created-By: 1.0 (Android)
-//	SHA1-Digest-Manifest: aJw+u+10C3Enbg8XRCN6jepluYA=
-//
-// Then for each entry in the manifest it has a SHA1 digest of the manfiest's
-// hash combined with the file name:
-//
-//	Name: lib/armeabi/libbasic.so
-//	SHA1-Digest: Q7NAS6uzrJr6WjePXSGT+vvmdiw=
-//
-// This can also be generated with openssl:
-//
-//	echo -en "Name: lib/armeabi/libbasic.so\r\nSHA1-Digest: ntLSc1eLCS2Tq1oB4Vw6jvkranw=\r\n\r\n" | openssl sha1 -binary | openssl base64
-//
-// Note the \r\n line breaks.
-//
-// CERT.RSA is an RSA signature block made of CERT.SF. Verify it with:
-//
-//	openssl smime -verify -in CERT.RSA -inform DER -content CERT.SF cert.pem
-//
-// The APK format imposes two extra restrictions on the ZIP format. First,
-// it is uncompressed. Second, each contained file is 4-byte aligned. This
-// allows the Android OS to mmap contents without unpacking the archive.
-
-// Note: to make life a little harder, Android Studio stores the RSA key used
-// for signing in an Oracle Java proprietary keystore format, JKS. For example,
-// the generated debug key is in ~/.android/debug.keystore, and can be
-// extracted using the JDK's keytool utility:
-//
-//	keytool -importkeystore -srckeystore ~/.android/debug.keystore -destkeystore ~/.android/debug.p12 -deststoretype PKCS12
-//
-// Once in standard PKCS12, the key can be converted to PEM for use in the
-// Go crypto packages:
-//
-//	openssl pkcs12 -in ~/.android/debug.p12 -nocerts -nodes -out ~/.android/debug.pem
-//
-// Fortunately for debug builds, all that matters is that the APK is signed.
-// The choice of key is unimportant, so we can generate one for normal builds.
-// For production builds, we can ask users to provide a PEM file.
-
-import (
-	"archive/zip"
-	"bytes"
-	"crypto/rand"
-	"crypto/rsa"
-	"crypto/sha1"
-	"encoding/base64"
-	"fmt"
-	"hash"
-	"io"
-)
-
-// NewWriter returns a new Writer writing an APK file to w.
-// The APK will be signed with key.
-func NewWriter(w io.Writer, priv *rsa.PrivateKey) *Writer {
-	apkw := &Writer{priv: priv}
-	apkw.w = zip.NewWriter(&countWriter{apkw: apkw, w: w})
-	return apkw
-}
-
-// Writer implements an APK file writer.
-type Writer struct {
-	offset   int
-	w        *zip.Writer
-	priv     *rsa.PrivateKey
-	manifest []manifestEntry
-	cur      *fileWriter
-}
-
-// Create adds a file to the APK archive using the provided name.
-//
-// The name must be a relative path. The file's contents must be written to
-// the returned io.Writer before the next call to Create or Close.
-func (w *Writer) Create(name string) (io.Writer, error) {
-	if err := w.clearCur(); err != nil {
-		return nil, fmt.Errorf("apk: Create(%s): %v", name, err)
-	}
-	if name == "AndroidManifest.xml" {
-		w.cur = &fileWriter{
-			name: name,
-			w:    new(bytes.Buffer),
-			sha1: sha1.New(),
-		}
-		return w.cur, nil
-	}
-	res, err := w.create(name)
-	if err != nil {
-		return nil, fmt.Errorf("apk: Create(%s): %v", name, err)
-	}
-	return res, nil
-}
-
-func (w *Writer) create(name string) (io.Writer, error) {
-	// Align start of file contents by using Extra as padding.
-	if err := w.w.Flush(); err != nil { // for exact offset
-		return nil, err
-	}
-	const fileHeaderLen = 30 // + filename + extra
-	start := w.offset + fileHeaderLen + len(name)
-	extra := start % 4
-
-	zipfw, err := w.w.CreateHeader(&zip.FileHeader{
-		Name:  name,
-		Extra: make([]byte, extra),
-	})
-	if err != nil {
-		return nil, err
-	}
-	w.cur = &fileWriter{
-		name: name,
-		w:    zipfw,
-		sha1: sha1.New(),
-	}
-	return w.cur, nil
-}
-
-// Close finishes writing the APK. This includes writing the manifest and
-// signing the archive, and writing the ZIP central directory.
-//
-// It does not close the underlying writer.
-func (w *Writer) Close() error {
-	if err := w.clearCur(); err != nil {
-		return fmt.Errorf("apk: %v", err)
-	}
-
-	manifest := new(bytes.Buffer)
-	fmt.Fprint(manifest, manifestHeader)
-	certBody := new(bytes.Buffer)
-
-	for _, entry := range w.manifest {
-		n := entry.name
-		h := base64.StdEncoding.EncodeToString(entry.sha1.Sum(nil))
-		fmt.Fprintf(manifest, "Name: %s\nSHA1-Digest: %s\n\n", n, h)
-		cHash := sha1.New()
-		fmt.Fprintf(cHash, "Name: %s\r\nSHA1-Digest: %s\r\n\r\n", n, h)
-		ch := base64.StdEncoding.EncodeToString(cHash.Sum(nil))
-		fmt.Fprintf(certBody, "Name: %s\nSHA1-Digest: %s\n\n", n, ch)
-	}
-
-	mHash := sha1.New()
-	mHash.Write(manifest.Bytes())
-	cert := new(bytes.Buffer)
-	fmt.Fprint(cert, certHeader)
-	fmt.Fprintf(cert, "SHA1-Digest-Manifest: %s\n\n", base64.StdEncoding.EncodeToString(mHash.Sum(nil)))
-	cert.Write(certBody.Bytes())
-
-	mw, err := w.Create("META-INF/MANIFEST.MF")
-	if err != nil {
-		return err
-	}
-	if _, err := mw.Write(manifest.Bytes()); err != nil {
-		return err
-	}
-
-	cw, err := w.Create("META-INF/CERT.SF")
-	if err != nil {
-		return err
-	}
-	if _, err := cw.Write(cert.Bytes()); err != nil {
-		return err
-	}
-
-	rsa, err := signPKCS7(rand.Reader, w.priv, cert.Bytes())
-	if err != nil {
-		return fmt.Errorf("apk: %v", err)
-	}
-	rw, err := w.Create("META-INF/CERT.RSA")
-	if err != nil {
-		return err
-	}
-	if _, err := rw.Write(rsa); err != nil {
-		return err
-	}
-
-	return w.w.Close()
-}
-
-const manifestHeader = `Manifest-Version: 1.0
-Created-By: 1.0 (Go)
-
-`
-
-const certHeader = `Signature-Version: 1.0
-Created-By: 1.0 (Go)
-`
-
-func (w *Writer) clearCur() error {
-	if w.cur == nil {
-		return nil
-	}
-	if w.cur.name == "AndroidManifest.xml" {
-		buf := w.cur.w.(*bytes.Buffer)
-		b, err := binaryXML(buf)
-		if err != nil {
-			return err
-		}
-		f, err := w.create("AndroidManifest.xml")
-		if err != nil {
-			return err
-		}
-		if _, err := f.Write(b); err != nil {
-			return err
-		}
-	}
-	w.manifest = append(w.manifest, manifestEntry{
-		name: w.cur.name,
-		sha1: w.cur.sha1,
-	})
-	w.cur.closed = true
-	w.cur = nil
-	return nil
-}
-
-type manifestEntry struct {
-	name string
-	sha1 hash.Hash
-}
-
-type countWriter struct {
-	apkw *Writer
-	w    io.Writer
-}
-
-func (c *countWriter) Write(p []byte) (n int, err error) {
-	n, err = c.w.Write(p)
-	c.apkw.offset += n
-	return n, err
-}
-
-type fileWriter struct {
-	name   string
-	w      io.Writer
-	sha1   hash.Hash
-	closed bool
-}
-
-func (w *fileWriter) Write(p []byte) (n int, err error) {
-	if w.closed {
-		return 0, fmt.Errorf("apk: write to closed file %q", w.name)
-	}
-	w.sha1.Write(p)
-	n, err = w.w.Write(p)
-	if err != nil {
-		err = fmt.Errorf("apk: %v", err)
-	}
-	return n, err
-}
diff --git a/go/src/golang.org/x/mobile/cmd/gomobile/writer_test.go b/go/src/golang.org/x/mobile/cmd/gomobile/writer_test.go
deleted file mode 100644
index 5fa399a..0000000
--- a/go/src/golang.org/x/mobile/cmd/gomobile/writer_test.go
+++ /dev/null
@@ -1,172 +0,0 @@
-// Copyright 2015 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 (
-	"crypto/x509"
-	"encoding/pem"
-	"io"
-	"io/ioutil"
-	"os"
-	"os/exec"
-	"testing"
-)
-
-func TestWriter(t *testing.T) {
-	block, _ := pem.Decode([]byte(debugCert))
-	if block == nil {
-		t.Fatal("no cert")
-	}
-	privKey, err := x509.ParsePKCS1PrivateKey(block.Bytes)
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	f, err := ioutil.TempFile("", "testapk-")
-	if err != nil {
-		t.Fatal(err)
-	}
-	f.Close()
-	defer os.Remove(f.Name())
-	apkPath := f.Name() + ".apk"
-
-	f, err = os.Create(apkPath)
-	if err != nil {
-		t.Fatal(err)
-	}
-	defer os.Remove(apkPath)
-
-	apkw := NewWriter(f, privKey)
-
-	w, err := apkw.Create("AndroidManifest.xml")
-	if err != nil {
-		t.Fatalf("could not create AndroidManifest.xml: %v", err)
-	}
-	if _, err := w.Write([]byte(androidManifest)); err != nil {
-		t.Errorf("could not write AndroidManifest.xml: %v", err)
-	}
-
-	w, err = apkw.Create("assets/hello_world.txt")
-	if err != nil {
-		t.Fatalf("could not create assets/hello_world.txt: %v", err)
-	}
-	if _, err := w.Write([]byte("Hello, 世界")); err != nil {
-		t.Errorf("could not write assets/hello_world.txt: %v", err)
-	}
-
-	if err := apkw.Close(); err != nil {
-		t.Fatal(err)
-	}
-
-	if exec.Command("which", "aapt").Run() != nil {
-		t.Skip("command aapt not found, skipping")
-	}
-
-	out, err := exec.Command("aapt", "list", "-a", apkPath).CombinedOutput()
-	aaptGot := string(out)
-	if err != nil {
-		t.Logf("aapt:\n%s", aaptGot)
-		t.Fatalf("aapt failed: %v", err)
-	}
-
-	if aaptGot != aaptWant {
-		t.Errorf("unexpected output from aapt")
-		d, err := diff(aaptWant, aaptGot)
-		if err != nil {
-			t.Errorf("diff failed: %v", err)
-		} else {
-			t.Logf("%s", d)
-		}
-	}
-}
-
-const aaptWant = `AndroidManifest.xml
-assets/hello_world.txt
-META-INF/MANIFEST.MF
-META-INF/CERT.SF
-META-INF/CERT.RSA
-
-Resource table:
-Package Groups (0)
-
-Android manifest:
-N: android=http://schemas.android.com/apk/res/android
-  E: manifest (line=2)
-    A: package="org.golang.fakeapp" (Raw: "org.golang.fakeapp")
-    A: android:versionCode(0x0101021b)=(type 0x10)0x1
-    A: android:versionName(0x0101021c)="1.0" (Raw: "1.0")
-    E: uses-sdk (line=8)
-      A: android:minSdkVersion(0x0101020c)=(type 0x10)0x9
-    E: application (line=9)
-      A: android:label(0x01010001)="FakeApp" (Raw: "FakeApp")
-      A: android:hasCode(0x0101000c)=(type 0x12)0x0
-      A: android:debuggable(0x0101000f)=(type 0x12)0xffffffff
-      E: activity (line=10)
-        A: android:name(0x01010003)="android.app.NativeActivity" (Raw: "android.app.NativeActivity")
-        A: android:label(0x01010001)="FakeApp" (Raw: "FakeApp")
-        A: android:configChanges(0x0101001f)=(type 0x11)0xa0
-        E: intent-filter (line=14)
-          E: action (line=15)
-            A: android:name(0x01010003)="android.intent.action.MAIN" (Raw: "android.intent.action.MAIN")
-          E: category (line=16)
-            A: android:name(0x01010003)="android.intent.category.LAUNCHER" (Raw: "android.intent.category.LAUNCHER")
-`
-
-const androidManifest = `
-<manifest
-	xmlns:android="http://schemas.android.com/apk/res/android"
-	package="org.golang.fakeapp"
-	android:versionCode="1"
-	android:versionName="1.0">
-
-	<uses-sdk android:minSdkVersion="9" />
-	<application android:label="FakeApp" android:hasCode="false" android:debuggable="true">
-		<activity android:name="android.app.NativeActivity"
-			android:label="FakeApp"
-			android:configChanges="orientation|keyboardHidden">
-
-			<intent-filter>
-				<action android:name="android.intent.action.MAIN" />
-				<category android:name="android.intent.category.LAUNCHER" />
-			</intent-filter>
-		</activity>
-	</application>
-</manifest>
-`
-
-func writeTempFile(data string) (string, error) {
-	f, err := ioutil.TempFile("", "gofmt")
-	if err != nil {
-		return "", err
-	}
-	_, err = io.WriteString(f, data)
-	errc := f.Close()
-	if err == nil {
-		return f.Name(), errc
-	}
-	return f.Name(), err
-}
-
-func diff(got, want string) (string, error) {
-	wantPath, err := writeTempFile(want)
-	if err != nil {
-		return "", err
-	}
-	defer os.Remove(wantPath)
-
-	gotPath, err := writeTempFile(got)
-	if err != nil {
-		return "", err
-	}
-	defer os.Remove(gotPath)
-
-	data, err := exec.Command("diff", "-u", wantPath, gotPath).CombinedOutput()
-	if len(data) > 0 {
-		// diff exits with a non-zero status when the files don't match.
-		// Ignore that failure as long as we get output.
-		err = nil
-	}
-	return string(data), err
-}
diff --git a/go/src/golang.org/x/mobile/event/touch.go b/go/src/golang.org/x/mobile/event/touch.go
deleted file mode 100644
index f18a7c8..0000000
--- a/go/src/golang.org/x/mobile/event/touch.go
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2014 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 event defines user input events.
-package event // import "golang.org/x/mobile/event"
-
-/*
-The best source on android input events is the NDK: include/android/input.h
-
-iOS event handling guide:
-https://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS
-*/
-
-import (
-	"fmt"
-
-	"golang.org/x/mobile/geom"
-)
-
-// Touch is a user touch event.
-//
-// On Android, this is an AInputEvent with AINPUT_EVENT_TYPE_MOTION.
-// On iOS, it is the UIEvent delivered to a UIView.
-type Touch struct {
-	Type TouchType
-	Loc  geom.Point
-}
-
-func (t Touch) String() string {
-	var ty string
-	switch t.Type {
-	case TouchStart:
-		ty = "start"
-	case TouchMove:
-		ty = "move "
-	case TouchEnd:
-		ty = "end  "
-	}
-	return fmt.Sprintf("Touch{ %s, %s }", ty, t.Loc)
-}
-
-// TouchType describes the type of a touch event.
-type TouchType byte
-
-const (
-	// TouchStart is a user first touching the device.
-	//
-	// On Android, this is a AMOTION_EVENT_ACTION_DOWN.
-	// On iOS, this is a call to touchesBegan.
-	TouchStart TouchType = iota
-
-	// TouchMove is a user dragging across the device.
-	//
-	// A TouchMove is delivered between a TouchStart and TouchEnd.
-	//
-	// On Android, this is a AMOTION_EVENT_ACTION_MOVE.
-	// On iOS, this is a call to touchesMoved.
-	TouchMove
-
-	// TouchEnd is a user no longer touching the device.
-	//
-	// On Android, this is a AMOTION_EVENT_ACTION_UP.
-	// On iOS, this is a call to touchesEnded.
-	TouchEnd
-)
diff --git a/go/src/golang.org/x/mobile/example/basic/AndroidManifest.xml b/go/src/golang.org/x/mobile/example/basic/AndroidManifest.xml
deleted file mode 100644
index f7755b0..0000000
--- a/go/src/golang.org/x/mobile/example/basic/AndroidManifest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright 2014 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.
--->
-<manifest
-	xmlns:android="http://schemas.android.com/apk/res/android"
-	package="com.example.basic"
-	android:versionCode="1"
-	android:versionName="1.0">
-
-	<uses-sdk android:minSdkVersion="9" />
-	<application android:label="Basic" android:hasCode="false">
-	<activity android:name="android.app.NativeActivity"
-		android:label="Basic"
-		android:configChanges="orientation|keyboardHidden">
-		<meta-data android:name="android.app.lib_name" android:value="basic" />
-		<intent-filter>
-			<action android:name="android.intent.action.MAIN" />
-			<category android:name="android.intent.category.LAUNCHER" />
-		</intent-filter>
-	</activity>
-	</application>
-</manifest> 
diff --git a/go/src/golang.org/x/mobile/example/basic/all.bash b/go/src/golang.org/x/mobile/example/basic/all.bash
deleted file mode 100755
index 53095b7..0000000
--- a/go/src/golang.org/x/mobile/example/basic/all.bash
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2014 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.
-
-# Script to build and launch the app on an android device.
-
-set -e
-
-./make.bash
-
-adb install -r bin/nativeactivity-debug.apk
-
-adb shell am start -a android.intent.action.MAIN \
-	-n com.example.basic/android.app.NativeActivity
diff --git a/go/src/golang.org/x/mobile/example/basic/all.bat b/go/src/golang.org/x/mobile/example/basic/all.bat
deleted file mode 100644
index 66963d6..0000000
--- a/go/src/golang.org/x/mobile/example/basic/all.bat
+++ /dev/null
@@ -1,16 +0,0 @@
-:: Copyright 2014 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.
-
-@echo off
-
-setlocal
-
-echo # building basic
-call make.bat
-
-echo # installing bin/nativeactivity-debug.apk
-adb install -r bin/nativeactivity-debug.apk >nul
-
-echo # starting android.app.NativeActivity
-adb shell am start -a android.intent.action.MAIN -n com.example.basic/android.app.NativeActivity >nul
\ No newline at end of file
diff --git a/go/src/golang.org/x/mobile/example/basic/build.xml b/go/src/golang.org/x/mobile/example/basic/build.xml
deleted file mode 100644
index 6bfc783..0000000
--- a/go/src/golang.org/x/mobile/example/basic/build.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright 2014 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.
--->
-<project name="nativeactivity" default="help">
-	<property name="target" value="android-19" />
-	<property environment="env" />
-	<condition property="sdk.dir" value="${env.ANDROID_HOME}">
-		<isset property="env.ANDROID_HOME" />
-	</condition>
-	<fail message="missing ANDROID_HOME env variable" unless="sdk.dir" />
-	<import file="${sdk.dir}/tools/ant/build.xml" />
-</project>
diff --git a/go/src/golang.org/x/mobile/example/basic/jni/Android.mk b/go/src/golang.org/x/mobile/example/basic/jni/Android.mk
deleted file mode 100644
index e3344e9..0000000
--- a/go/src/golang.org/x/mobile/example/basic/jni/Android.mk
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright 2014 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.
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE    := basic
-LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libbasic.so
-
-include $(PREBUILT_SHARED_LIBRARY)
diff --git a/go/src/golang.org/x/mobile/example/basic/main.go b/go/src/golang.org/x/mobile/example/basic/main.go
deleted file mode 100644
index e945d36..0000000
--- a/go/src/golang.org/x/mobile/example/basic/main.go
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright 2014 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.
-
-// An app that draws a green triangle on a red background.
-package main
-
-import (
-	"encoding/binary"
-	"log"
-
-	"golang.org/x/mobile/app"
-	"golang.org/x/mobile/app/debug"
-	"golang.org/x/mobile/event"
-	"golang.org/x/mobile/f32"
-	"golang.org/x/mobile/geom"
-	"golang.org/x/mobile/gl"
-	"golang.org/x/mobile/gl/glutil"
-)
-
-var (
-	program  gl.Program
-	position gl.Attrib
-	offset   gl.Uniform
-	color    gl.Uniform
-	buf      gl.Buffer
-
-	green    float32
-	touchLoc geom.Point
-)
-
-func main() {
-	app.Run(app.Callbacks{
-		Start: start,
-		Stop:  stop,
-		Draw:  draw,
-		Touch: touch,
-	})
-}
-
-func start() {
-	var err error
-	program, err = glutil.CreateProgram(vertexShader, fragmentShader)
-	if err != nil {
-		log.Printf("error creating GL program: %v", err)
-		return
-	}
-
-	buf = gl.GenBuffer()
-	gl.BindBuffer(gl.ARRAY_BUFFER, buf)
-	gl.BufferData(gl.ARRAY_BUFFER, gl.STATIC_DRAW, triangleData)
-
-	position = gl.GetAttribLocation(program, "position")
-	color = gl.GetUniformLocation(program, "color")
-	offset = gl.GetUniformLocation(program, "offset")
-	touchLoc = geom.Point{geom.Width / 2, geom.Height / 2}
-
-	// TODO(crawshaw): the debug package needs to put GL state init here
-}
-
-func stop() {
-	gl.DeleteProgram(program)
-	gl.DeleteBuffer(buf)
-}
-
-func touch(t event.Touch) {
-	touchLoc = t.Loc
-}
-
-func draw() {
-	gl.ClearColor(1, 0, 0, 1)
-	gl.Clear(gl.COLOR_BUFFER_BIT)
-
-	gl.UseProgram(program)
-
-	green += 0.01
-	if green > 1 {
-		green = 0
-	}
-	gl.Uniform4f(color, 0, green, 0, 1)
-
-	gl.Uniform2f(offset, float32(touchLoc.X/geom.Width), float32(touchLoc.Y/geom.Height))
-
-	gl.BindBuffer(gl.ARRAY_BUFFER, buf)
-	gl.EnableVertexAttribArray(position)
-	gl.VertexAttribPointer(position, coordsPerVertex, gl.FLOAT, false, 0, 0)
-	gl.DrawArrays(gl.TRIANGLES, 0, vertexCount)
-	gl.DisableVertexAttribArray(position)
-
-	debug.DrawFPS()
-}
-
-var triangleData = f32.Bytes(binary.LittleEndian,
-	0.0, 0.4, 0.0, // top left
-	0.0, 0.0, 0.0, // bottom left
-	0.4, 0.0, 0.0, // bottom right
-)
-
-const (
-	coordsPerVertex = 3
-	vertexCount     = 3
-)
-
-const vertexShader = `#version 100
-uniform vec2 offset;
-
-attribute vec4 position;
-void main() {
-	// offset comes in with x/y values between 0 and 1.
-	// position bounds are -1 to 1.
-	vec4 offset4 = vec4(2.0*offset.x-1.0, 1.0-2.0*offset.y, 0, 0);
-	gl_Position = position + offset4;
-}`
-
-const fragmentShader = `#version 100
-precision mediump float;
-uniform vec4 color;
-void main() {
-	gl_FragColor = color;
-}`
diff --git a/go/src/golang.org/x/mobile/example/basic/make.bash b/go/src/golang.org/x/mobile/example/basic/make.bash
deleted file mode 100755
index 8684856..0000000
--- a/go/src/golang.org/x/mobile/example/basic/make.bash
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2014 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.
-
-set -e
-
-if [ ! -f make.bash ]; then
-	echo 'make.bash must be run from $GOPATH/src/golang.org/x/mobile/example/basic'
-	exit 1
-fi
-
-mkdir -p jni/armeabi
-CGO_ENABLED=1 GOOS=android GOARCH=arm GOARM=7 \
-	go build -ldflags="-shared" -o jni/armeabi/libbasic.so .
-ndk-build NDK_DEBUG=1
-ant debug
diff --git a/go/src/golang.org/x/mobile/example/basic/make.bat b/go/src/golang.org/x/mobile/example/basic/make.bat
deleted file mode 100644
index 6262267..0000000
--- a/go/src/golang.org/x/mobile/example/basic/make.bat
+++ /dev/null
@@ -1,45 +0,0 @@
-:: Copyright 2014 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.
-
-@echo off
-
-setlocal
-
-if not exist make.bat goto error-invalid-path
-
-if not exist jni\armeabi mkdir jni\armeabi
-
-set CGO_ENABLED=1
-set GOOS=android
-set GOARCH=arm
-set GOARM=7
-
-go build -ldflags="-shared" -o jni/armeabi/libbasic.so .
-if errorlevel 1 goto error-go-build
-
-if defined NDK_ROOT goto ndk-build
-echo NDK_ROOT path not defined
-goto end
-
-:ndk-build
-call %NDK_ROOT%\ndk-build.cmd NDK_DEBUG=1 >nul
-
-if defined ANT_HOME goto ant-build
-echo ANT_HOME path not defined
-goto end
-
-:ant-build
-call %ANT_HOME%\bin\ant.bat debug >nul
-goto end
-
-:error-invalid-path
-echo make.bat must be run from example\basic
-goto end
-
-:error-go-build
-echo Error building go lib
-goto end
-
-
-:end
\ No newline at end of file
diff --git a/go/src/golang.org/x/mobile/example/libhello/AndroidManifest.xml b/go/src/golang.org/x/mobile/example/libhello/AndroidManifest.xml
deleted file mode 100644
index dddb380..0000000
--- a/go/src/golang.org/x/mobile/example/libhello/AndroidManifest.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright 2014 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.
--->
-<manifest
-	xmlns:android="http://schemas.android.com/apk/res/android"
-	package="com.example.hello"
-	android:versionCode="1"
-	android:versionName="1.0">
-
-	<application android:label="Hello">
-		<activity android:name="com.example.hello.MainActivity"
-			android:label="Hello"
-			android:exported="true">
-			<intent-filter>
-				<action android:name="android.intent.action.MAIN" />
-				<category android:name="android.intent.category.LAUNCHER" />
-			</intent-filter>
-		</activity>
-	</application>
-</manifest> 
diff --git a/go/src/golang.org/x/mobile/example/libhello/README b/go/src/golang.org/x/mobile/example/libhello/README
deleted file mode 100644
index ce7f17b..0000000
--- a/go/src/golang.org/x/mobile/example/libhello/README
+++ /dev/null
@@ -1,42 +0,0 @@
-The libhello app demonstrates calling Go code from a primarily Java app.
-
-Starting in Java lets you program against Android's extensive UI
-libraries in their native language and call into Go for library code
-(business logic, code shared with a Go server, portable code).
-
-The Java entry point to the program is the file
-src/com/example/hello/MainActivity.java, where the statement
-
-	Hi.Hello("world");
-
-is a call into Go code.
-
-The Go code is in a package called hi, the file is hi/hi.go, and it
-contains the function Hello:
-
-	func Hello(name string) {
-		fmt.Printf("Hello, %s!\n", name)
-	}
-
-Java language bindings are generated for this package using the gobind
-tool. There is a user guide for gobind at 
-
-	http://golang.org/x/mobile/cmd/gobind
-
-The generated source has been included in the distribution. If you
-modify the exported interface of package hi, you have to run gobind
-manually before calling all.bash.
-
-Along with the gobind generated source, the app includes a main.go file
-to define the app entry point.
-
-make.bash builds the app, all.bash deploys it.
-
-The first step in building the app is to build the native shared
-library out of the Go code, and place it in
-libs/armeabi-v7a/libgojni.so.
-
-The second step is building the app with the standard Android build
-system by calling ant debug (also done in make.bash). Two extra Java
-files are included in the build by make.bash to support the language
-bindings. This produces an apk ready for running on a device.
diff --git a/go/src/golang.org/x/mobile/example/libhello/all.bash b/go/src/golang.org/x/mobile/example/libhello/all.bash
deleted file mode 100755
index be7052f..0000000
--- a/go/src/golang.org/x/mobile/example/libhello/all.bash
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2014 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.
-
-# Script to build and launch the app on an android device.
-
-set -e
-
-./make.bash
-
-adb install -r bin/Hello-debug.apk
-
-adb shell am start -a android.intent.action.MAIN \
-	-n com.example.hello/com.example.hello.MainActivity
diff --git a/go/src/golang.org/x/mobile/example/libhello/all.bat b/go/src/golang.org/x/mobile/example/libhello/all.bat
deleted file mode 100644
index 5ecebe4..0000000
--- a/go/src/golang.org/x/mobile/example/libhello/all.bat
+++ /dev/null
@@ -1,16 +0,0 @@
-:: Copyright 2014 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.
-
-@echo off
-
-setlocal
-
-echo # building libhello
-call make.bat
-
-echo # installing bin/Hello-debug.apk
-adb install -r bin/Hello-debug.apk >nul
-
-echo # starting com.example.hello.MainActivity
-adb shell am start -a android.intent.action.MAIN -n com.example.hello/com.example.hello.MainActivity >nul
\ No newline at end of file
diff --git a/go/src/golang.org/x/mobile/example/libhello/build.xml b/go/src/golang.org/x/mobile/example/libhello/build.xml
deleted file mode 100644
index 066f914..0000000
--- a/go/src/golang.org/x/mobile/example/libhello/build.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright 2014 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.
--->
-<project name="Hello" default="help">
-	<property name="target" value="android-19" />
-	<property environment="env" />
-	<condition property="sdk.dir" value="${env.ANDROID_HOME}">
-		<isset property="env.ANDROID_HOME" />
-	</condition>
-	<fail message="missing ANDROID_HOME env variable" unless="sdk.dir" />
-	<import file="${sdk.dir}/tools/ant/build.xml" />
-</project>
diff --git a/go/src/golang.org/x/mobile/example/libhello/hi/go_hi/go_hi.go b/go/src/golang.org/x/mobile/example/libhello/hi/go_hi/go_hi.go
deleted file mode 100644
index 89b9d2d..0000000
--- a/go/src/golang.org/x/mobile/example/libhello/hi/go_hi/go_hi.go
+++ /dev/null
@@ -1,19 +0,0 @@
-// Package go_hi is an autogenerated binder stub for package hi.
-//   gobind -lang=go golang.org/x/mobile/example/libhello/hi
-//
-// File is generated by gobind. Do not edit.
-package go_hi
-
-import (
-	"golang.org/x/mobile/bind/seq"
-	"golang.org/x/mobile/example/libhello/hi"
-)
-
-func proxy_Hello(out, in *seq.Buffer) {
-	param_name := in.ReadUTF16()
-	hi.Hello(param_name)
-}
-
-func init() {
-	seq.Register("hi", 1, proxy_Hello)
-}
diff --git a/go/src/golang.org/x/mobile/example/libhello/hi/hi.go b/go/src/golang.org/x/mobile/example/libhello/hi/hi.go
deleted file mode 100644
index a1e868b..0000000
--- a/go/src/golang.org/x/mobile/example/libhello/hi/hi.go
+++ /dev/null
@@ -1,8 +0,0 @@
-// Package hi provides a function for saying hello.
-package hi
-
-import "fmt"
-
-func Hello(name string) {
-	fmt.Printf("Hello, %s!\n", name)
-}
diff --git a/go/src/golang.org/x/mobile/example/libhello/main.go b/go/src/golang.org/x/mobile/example/libhello/main.go
deleted file mode 100644
index 320529a..0000000
--- a/go/src/golang.org/x/mobile/example/libhello/main.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2014 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.
-
-// This is the Go entry point for the libhello app.
-// It is invoked from Java.
-//
-// See README for details.
-package main
-
-import (
-	"golang.org/x/mobile/app"
-
-	"golang.org/x/mobile/bind/java"
-	_ "golang.org/x/mobile/example/libhello/hi/go_hi"
-)
-
-func main() {
-	app.Run(app.Callbacks{Start: java.Init})
-}
diff --git a/go/src/golang.org/x/mobile/example/libhello/make.bash b/go/src/golang.org/x/mobile/example/libhello/make.bash
deleted file mode 100755
index 97bd45d..0000000
--- a/go/src/golang.org/x/mobile/example/libhello/make.bash
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2014 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.
-
-set -e
-
-if [ ! -f make.bash ]; then
-	echo 'make.bash must be run from $GOPATH/src/golang.org/x/mobile/example/libhello'
-	exit 1
-fi
-
-mkdir -p libs/armeabi-v7a src/go/hi
-ANDROID_APP=$PWD
-(cd ../.. && ln -sf $PWD/app/*.java $ANDROID_APP/src/go)
-(cd ../.. && ln -sf $PWD/bind/java/Seq.java $ANDROID_APP/src/go)
-CGO_ENABLED=1 GOOS=android GOARCH=arm GOARM=7 \
-	go build -ldflags="-shared" .
-mv -f libhello libs/armeabi-v7a/libgojni.so
-ant debug
diff --git a/go/src/golang.org/x/mobile/example/libhello/make.bat b/go/src/golang.org/x/mobile/example/libhello/make.bat
deleted file mode 100644
index 1955ade..0000000
--- a/go/src/golang.org/x/mobile/example/libhello/make.bat
+++ /dev/null
@@ -1,46 +0,0 @@
-:: Copyright 2014 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.
-
-@echo off
-
-setlocal
-
-if not exist make.bat goto error-invalid-path
-
-:go-build
-if not exist libs\armeabi-v7a mkdir libs\armeabi-v7a 
-if not exist src\go\hi mkdir src\go\hi 
-if not exist jni\armeabi mkdir jni\armeabi
-
-set CGO_ENABLED=1
-set GOOS=android
-set GOARCH=arm
-set GOARM=7
-set ANDROID_APP=%CD%
-
-xcopy /y ..\..\app\*.java %ANDROID_APP%\src\go >nul
-copy /y ..\..\bind\java\Seq.java %ANDROID_APP%\src\go\Seq.java >nul
-
-go build -ldflags="-shared" .
-if errorlevel 1 goto error-go-build
-
-move /y libhello libs\armeabi-v7a\libgojni.so >nul
-
-if defined ANT_HOME goto ant-build
-echo ANT_HOME path not defined
-goto end
-
-:ant-build
-call %ANT_HOME%\bin\ant.bat debug >nul
-goto end
-
-:error-invalid-path
-echo make.bat must be run from example\libhello
-goto end
-
-:error-go-build
-echo Error building go lib
-goto end
-
-:end
\ No newline at end of file
diff --git a/go/src/golang.org/x/mobile/example/libhello/src/com/example/hello/MainActivity.java b/go/src/golang.org/x/mobile/example/libhello/src/com/example/hello/MainActivity.java
deleted file mode 100644
index 61fc8b6..0000000
--- a/go/src/golang.org/x/mobile/example/libhello/src/com/example/hello/MainActivity.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2014 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 com.example.hello;
-
-import go.Go;
-import go.hi.Hi;
-import android.app.Activity;
-import android.os.Bundle;
-
-/*
- * MainActivity is the entry point for the libhello app.
- *
- * From here, the Go runtime is initialized and a Go function is
- * invoked via gobind language bindings.
- *
- * See example/libhello/README for details.
- */
-public class MainActivity extends Activity {
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        Go.init(getApplicationContext());
-        Hi.Hello("world");
-    }
-}
diff --git a/go/src/golang.org/x/mobile/example/libhello/src/go/hi/Hi.java b/go/src/golang.org/x/mobile/example/libhello/src/go/hi/Hi.java
deleted file mode 100644
index 6514f5a..0000000
--- a/go/src/golang.org/x/mobile/example/libhello/src/go/hi/Hi.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Java Package hi is a proxy for talking to a Go program.
-//
-// File is generated by gobind. Do not edit.
-package go.hi;
-
-import go.Seq;
-
-public abstract class Hi {
-    private Hi() {} // uninstantiable
-    
-    public static void Hello(String name) {
-        go.Seq _in = new go.Seq();
-        go.Seq _out = new go.Seq();
-        _in.writeUTF16(name);
-        Seq.send(DESCRIPTOR, CALL_Hello, _in, _out);
-    }
-    
-    private static final int CALL_Hello = 1;
-    private static final String DESCRIPTOR = "hi";
-}
diff --git a/go/src/golang.org/x/mobile/example/libhellojni/Demo.java b/go/src/golang.org/x/mobile/example/libhellojni/Demo.java
deleted file mode 100644
index bfbceb5..0000000
--- a/go/src/golang.org/x/mobile/example/libhellojni/Demo.java
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright 2014 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 demo;
-
-public class Demo {
-	public static native void hello(String name);
-}
diff --git a/go/src/golang.org/x/mobile/example/libhellojni/hello.c b/go/src/golang.org/x/mobile/example/libhellojni/hello.c
deleted file mode 100644
index d96b405..0000000
--- a/go/src/golang.org/x/mobile/example/libhellojni/hello.c
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2014 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.
-
-// +build android
-
-// See main.go for commentary.
-
-#include <android/log.h>
-#include <jni.h>
-#include <limits.h>
-#include "_cgo_export.h"
-
-JNIEXPORT void JNICALL
-Java_demo_Demo_hello(JNIEnv* env, jclass clazz, jstring jname) {
-	// Turn Java's UTF16 string into (almost) UTF8.
-	const char *name = (*env)->GetStringUTFChars(env, jname, 0);
-
-	GoString go_name;
-	go_name.p = (char*)name;
-	go_name.n = (*env)->GetStringUTFLength(env, jname);
-
-	// Call into Go.
-	LogHello(go_name);
-
-	(*env)->ReleaseStringUTFChars(env, jname, name);
-}
diff --git a/go/src/golang.org/x/mobile/example/libhellojni/hello.go b/go/src/golang.org/x/mobile/example/libhellojni/hello.go
deleted file mode 100644
index 666666d..0000000
--- a/go/src/golang.org/x/mobile/example/libhellojni/hello.go
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2014 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.
-
-// +build android
-
-package main
-
-// #cgo LDFLAGS: -llog
-// #include <android/log.h>
-// #include <string.h>
-import "C"
-import (
-	"fmt"
-	"unsafe"
-)
-
-//export LogHello
-func LogHello(name string) {
-	fmt.Printf("Hello, %s!\n", name)
-
-	ctag := C.CString("Go")
-	cstr := C.CString(fmt.Sprintf("Printing hello message for %q", name))
-	C.__android_log_write(C.ANDROID_LOG_INFO, ctag, cstr)
-	C.free(unsafe.Pointer(ctag))
-	C.free(unsafe.Pointer(cstr))
-}
diff --git a/go/src/golang.org/x/mobile/example/libhellojni/main.go b/go/src/golang.org/x/mobile/example/libhellojni/main.go
deleted file mode 100644
index 79a16b4..0000000
--- a/go/src/golang.org/x/mobile/example/libhellojni/main.go
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2014 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.
-
-/*
-This example program compiles to a gojni.so shared library, that can
-be loaded from an android application. Build it by configuring a cross
-compiler (see go.mobile/README) and then running:
-
-ANDROID_APP=/path/to/Myapp/app ./make.bash
-
-This program expects app/Go.java to be included in the Android
-project, along with a Java class named Demo defining
-
-	public static native void hello();
-
-calling hello prints "Hello, world!" to logcat.
-
-This is a very early example program that does not represent the
-intended development model for Go on Android. A language binding
-generator will follow, as will gradle build system integration.
-The result will be no make.bash, and no need to write C.
-*/
-package main
-
-import "golang.org/x/mobile/app"
-
-func main() {
-	app.Run(app.Callbacks{})
-}
diff --git a/go/src/golang.org/x/mobile/example/libhellojni/make.bash b/go/src/golang.org/x/mobile/example/libhellojni/make.bash
deleted file mode 100755
index 1938151..0000000
--- a/go/src/golang.org/x/mobile/example/libhellojni/make.bash
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2014 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.
-
-# See main.go for commentary.
-
-set -e
-
-if [ ! -f make.bash ]; then
-	echo 'make.bash must be run from $GOPATH/src/golang.org/x/mobile/example/libhellojni'
-	exit 1
-fi
-if [ -z "$ANDROID_APP" ]; then
-	echo 'ERROR: Environment variable ANDROID_APP is unset.'
-	exit 1
-fi
-
-mkdir -p $ANDROID_APP/src/main/jniLibs/armeabi \
-	$ANDROID_APP/src/main/java/go \
-	$ANDROID_APP/src/main/java/demo
-(cd ../.. && ln -sf $PWD/app/*.java $ANDROID_APP/src/main/java/go)
-(cd ../.. && ln -sf $PWD/bind/java/*.java $ANDROID_APP/src/main/java/go)
-ln -sf $PWD/*.java $ANDROID_APP/src/main/java/demo
-CGO_ENABLED=1 GOOS=android GOARCH=arm GOARM=7 \
-	go build -ldflags="-shared" .
-mv libhellojni $ANDROID_APP/src/main/jniLibs/armeabi/libgojni.so
diff --git a/go/src/golang.org/x/mobile/example/libhellojni/make.bat b/go/src/golang.org/x/mobile/example/libhellojni/make.bat
deleted file mode 100644
index 111e19b..0000000
--- a/go/src/golang.org/x/mobile/example/libhellojni/make.bat
+++ /dev/null
@@ -1,39 +0,0 @@
-:: Copyright 2014 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.
-
-@echo off
-
-setlocal
-
-if not exist make.bat goto error-invalid-path
-
-set CGO_ENABLED=1
-set GOOS=android
-set GOARCH=arm
-set GOARM=7
-set ANDROID_APP=%CD%
-
-if not exist src\main\jniLibs\armeabi mkdir src\main\jniLibs\armeabi
-if not exist src\main\java\go mkdir src\main\java\go
-if not exist src\main\java\demo mkdir src\main\java\demo
-
-xcopy /y ..\..\app\*.java %ANDROID_APP%\src\main\java\go >nul
-xcopy /y ..\..\bind\java\*.java %ANDROID_APP%\src\main\java\go >nul
-xcopy /y %CD%\*.java %ANDROID_APP%\src\main\java\demo >nul
-
-go build -ldflags="-shared" .
-if errorlevel 1 goto error-go-build
-
-move /y libhellojni %ANDROID_APP%\src\main\jniLibs\armeabi\libgojni.so >nul
-goto end
-
-:error-invalid-path
-echo make.bat must be run from example\libhellojni
-goto end
-
-:error-go-build
-echo Error building go lib
-goto end
-
-:end
\ No newline at end of file
diff --git a/go/src/golang.org/x/mobile/example/sprite/AndroidManifest.xml b/go/src/golang.org/x/mobile/example/sprite/AndroidManifest.xml
deleted file mode 100644
index ac1c005..0000000
--- a/go/src/golang.org/x/mobile/example/sprite/AndroidManifest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright 2014 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.
--->
-<manifest
-	xmlns:android="http://schemas.android.com/apk/res/android"
-	package="com.example.sprite"
-	android:versionCode="1"
-	android:versionName="1.0">
-
-	<uses-sdk android:minSdkVersion="9" />
-	<application android:label="Sprite" android:hasCode="false">
-	<activity android:name="android.app.NativeActivity"
-		android:label="Sprite"
-		android:configChanges="orientation|keyboardHidden">
-		<meta-data android:name="android.app.lib_name" android:value="sprite" />
-		<intent-filter>
-			<action android:name="android.intent.action.MAIN" />
-			<category android:name="android.intent.category.LAUNCHER" />
-		</intent-filter>
-	</activity>
-	</application>
-</manifest> 
diff --git a/go/src/golang.org/x/mobile/example/sprite/all.bash b/go/src/golang.org/x/mobile/example/sprite/all.bash
deleted file mode 100644
index 9ee4a54..0000000
--- a/go/src/golang.org/x/mobile/example/sprite/all.bash
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2014 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.
-
-# Script to build and launch the app on an android device.
-
-set -e
-
-./make.bash
-
-adb install -r bin/nativeactivity-debug.apk
-
-adb shell am start -a android.intent.action.MAIN \
-	-n com.example.sprite/android.app.NativeActivity
diff --git a/go/src/golang.org/x/mobile/example/sprite/all.bat b/go/src/golang.org/x/mobile/example/sprite/all.bat
deleted file mode 100644
index 18d9974..0000000
--- a/go/src/golang.org/x/mobile/example/sprite/all.bat
+++ /dev/null
@@ -1,16 +0,0 @@
-:: Copyright 2014 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.
-
-@echo off
-
-setlocal
-
-echo # building sprite
-call make.bat
-
-echo # installing bin/nativeactivity-debug.apk
-adb install -r bin/nativeactivity-debug.apk >nul
-
-echo # starting android.app.NativeActivity
-adb shell am start -a android.intent.action.MAIN -n com.example.sprite/android.app.NativeActivity >nul
\ No newline at end of file
diff --git a/go/src/golang.org/x/mobile/example/sprite/assets/waza-gophers.jpeg b/go/src/golang.org/x/mobile/example/sprite/assets/waza-gophers.jpeg
deleted file mode 100644
index 17db10f..0000000
--- a/go/src/golang.org/x/mobile/example/sprite/assets/waza-gophers.jpeg
+++ /dev/null
Binary files differ
diff --git a/go/src/golang.org/x/mobile/example/sprite/build.xml b/go/src/golang.org/x/mobile/example/sprite/build.xml
deleted file mode 100644
index 6bfc783..0000000
--- a/go/src/golang.org/x/mobile/example/sprite/build.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright 2014 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.
--->
-<project name="nativeactivity" default="help">
-	<property name="target" value="android-19" />
-	<property environment="env" />
-	<condition property="sdk.dir" value="${env.ANDROID_HOME}">
-		<isset property="env.ANDROID_HOME" />
-	</condition>
-	<fail message="missing ANDROID_HOME env variable" unless="sdk.dir" />
-	<import file="${sdk.dir}/tools/ant/build.xml" />
-</project>
diff --git a/go/src/golang.org/x/mobile/example/sprite/jni/Android.mk b/go/src/golang.org/x/mobile/example/sprite/jni/Android.mk
deleted file mode 100644
index b0bf948..0000000
--- a/go/src/golang.org/x/mobile/example/sprite/jni/Android.mk
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright 2014 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.
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE    := sprite
-LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libsprite.so
-
-include $(PREBUILT_SHARED_LIBRARY)
diff --git a/go/src/golang.org/x/mobile/example/sprite/main.go b/go/src/golang.org/x/mobile/example/sprite/main.go
deleted file mode 100644
index 8cd2857..0000000
--- a/go/src/golang.org/x/mobile/example/sprite/main.go
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright 2014 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 (
-	"image"
-	"log"
-	"math"
-	"time"
-
-	_ "image/jpeg"
-
-	"golang.org/x/mobile/app"
-	"golang.org/x/mobile/app/debug"
-	"golang.org/x/mobile/event"
-	"golang.org/x/mobile/f32"
-	"golang.org/x/mobile/gl"
-	"golang.org/x/mobile/sprite"
-	"golang.org/x/mobile/sprite/clock"
-	"golang.org/x/mobile/sprite/glsprite"
-)
-
-var (
-	start     = time.Now()
-	lastClock = clock.Time(-1)
-
-	eng   = glsprite.Engine()
-	scene *sprite.Node
-)
-
-func main() {
-	app.Run(app.Callbacks{
-		Draw:  draw,
-		Touch: touch,
-	})
-}
-
-func draw() {
-	if scene == nil {
-		loadScene()
-	}
-
-	now := clock.Time(time.Since(start) * 60 / time.Second)
-	if now == lastClock {
-		// TODO: figure out how to limit draw callbacks to 60Hz instead of
-		// burning the CPU as fast as possible.
-		// TODO: (relatedly??) sync to vblank?
-		return
-	}
-	lastClock = now
-
-	gl.ClearColor(1, 1, 1, 1)
-	gl.Clear(gl.COLOR_BUFFER_BIT)
-	eng.Render(scene, now)
-	debug.DrawFPS()
-}
-
-func touch(t event.Touch) {
-}
-
-func newNode() *sprite.Node {
-	n := &sprite.Node{}
-	eng.Register(n)
-	scene.AppendChild(n)
-	return n
-}
-
-func loadScene() {
-	texs := loadTextures()
-	scene = &sprite.Node{}
-	eng.Register(scene)
-	eng.SetTransform(scene, f32.Affine{
-		{1, 0, 0},
-		{0, 1, 0},
-	})
-
-	var n *sprite.Node
-
-	n = newNode()
-	eng.SetSubTex(n, texs[texBooks])
-	eng.SetTransform(n, f32.Affine{
-		{36, 0, 0},
-		{0, 36, 0},
-	})
-
-	n = newNode()
-	eng.SetSubTex(n, texs[texFire])
-	eng.SetTransform(n, f32.Affine{
-		{72, 0, 144},
-		{0, 72, 144},
-	})
-
-	n = newNode()
-	n.Arranger = arrangerFunc(func(eng sprite.Engine, n *sprite.Node, t clock.Time) {
-		// TODO: use a tweening library instead of manually arranging.
-		t0 := uint32(t) % 120
-		if t0 < 60 {
-			eng.SetSubTex(n, texs[texGopherR])
-		} else {
-			eng.SetSubTex(n, texs[texGopherL])
-		}
-
-		u := float32(t0) / 120
-		u = (1 - f32.Cos(u*2*math.Pi)) / 2
-
-		tx := 18 + u*48
-		ty := 36 + u*108
-		sx := 36 + u*36
-		sy := 36 + u*36
-		eng.SetTransform(n, f32.Affine{
-			{sx, 0, tx},
-			{0, sy, ty},
-		})
-	})
-}
-
-const (
-	texBooks = iota
-	texFire
-	texGopherR
-	texGopherL
-)
-
-func loadTextures() []sprite.SubTex {
-	a, err := app.Open("waza-gophers.jpeg")
-	if err != nil {
-		log.Fatal(err)
-	}
-	defer a.Close()
-
-	img, _, err := image.Decode(a)
-	if err != nil {
-		log.Fatal(err)
-	}
-	t, err := eng.LoadTexture(img)
-	if err != nil {
-		log.Fatal(err)
-	}
-
-	return []sprite.SubTex{
-		texBooks:   sprite.SubTex{t, image.Rect(4, 71, 132, 182)},
-		texFire:    sprite.SubTex{t, image.Rect(330, 56, 440, 155)},
-		texGopherR: sprite.SubTex{t, image.Rect(152, 10, 152+140, 10+90)},
-		texGopherL: sprite.SubTex{t, image.Rect(162, 120, 162+140, 120+90)},
-	}
-}
-
-type arrangerFunc func(e sprite.Engine, n *sprite.Node, t clock.Time)
-
-func (a arrangerFunc) Arrange(e sprite.Engine, n *sprite.Node, t clock.Time) { a(e, n, t) }
diff --git a/go/src/golang.org/x/mobile/example/sprite/make.bash b/go/src/golang.org/x/mobile/example/sprite/make.bash
deleted file mode 100644
index f45ae8d..0000000
--- a/go/src/golang.org/x/mobile/example/sprite/make.bash
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2014 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.
-
-set -e
-
-if [ ! -f make.bash ]; then
-	echo 'make.bash must be run from $GOPATH/src/golang.org/x/mobile/example/sprite'
-	exit 1
-fi
-
-mkdir -p jni/armeabi
-CGO_ENABLED=1 GOOS=android GOARCH=arm GOARM=7 \
-	go build -ldflags="-shared" -o jni/armeabi/libsprite.so .
-ndk-build NDK_DEBUG=1
-ant debug
diff --git a/go/src/golang.org/x/mobile/example/sprite/make.bat b/go/src/golang.org/x/mobile/example/sprite/make.bat
deleted file mode 100644
index 5dab3f9..0000000
--- a/go/src/golang.org/x/mobile/example/sprite/make.bat
+++ /dev/null
@@ -1,44 +0,0 @@
-:: Copyright 2014 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.
-
-@echo off
-
-setlocal
-
-if not exist make.bat goto error-invalid-path
-
-if not exist jni\armeabi mkdir jni\armeabi
-
-set CGO_ENABLED=1
-set GOOS=android
-set GOARCH=arm
-set GOARM=7
-
-go build -ldflags="-shared" -o jni/armeabi/libsprite.so .
-if errorlevel 1 goto error-go-build
-
-if defined NDK_ROOT goto ndk-build
-echo NDK_ROOT path not defined
-goto end
-
-:ndk-build
-call %NDK_ROOT%\ndk-build.cmd NDK_DEBUG=1 >nul
-
-if defined ANT_HOME goto ant-build
-echo ANT_HOME path not defined
-goto end
-
-:ant-build
-call %ANT_HOME%\bin\ant.bat debug >nul
-goto end
-
-:error-invalid-path
-echo make.bat must be run from %%GOPATH%%\src\golang.org\x\mobile\example\sprite
-goto end
-
-:error-go-build
-echo Error building go lib
-goto end
-
-:end
\ No newline at end of file
diff --git a/go/src/golang.org/x/mobile/f32/affine.go b/go/src/golang.org/x/mobile/f32/affine.go
deleted file mode 100644
index 708a309..0000000
--- a/go/src/golang.org/x/mobile/f32/affine.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2014 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 f32
-
-import "fmt"
-
-// An Affine is a 3x3 matrix of float32 values for which the bottom row is
-// implicitly always equal to [0 0 1].
-// Elements are indexed first by row then column, i.e. m[row][column].
-type Affine [2]Vec3
-
-func (m Affine) String() string {
-	return fmt.Sprintf(`Affine[% 0.3f, % 0.3f, % 0.3f,
-     % 0.3f, % 0.3f, % 0.3f]`,
-		m[0][0], m[0][1], m[0][2],
-		m[1][0], m[1][1], m[1][2])
-}
-
-// Identity sets m to be the identity transform.
-func (m *Affine) Identity() {
-	*m = Affine{
-		{1, 0, 0},
-		{0, 1, 0},
-	}
-}
-
-// Eq reports whether each component of m is within epsilon of the same
-// component in n.
-func (m *Affine) Eq(n *Affine, epsilon float32) bool {
-	for i := range m {
-		for j := range m[i] {
-			diff := m[i][j] - n[i][j]
-			if diff < -epsilon || +epsilon < diff {
-				return false
-			}
-		}
-	}
-	return true
-}
-
-// Mul sets m to be p × q.
-func (m *Affine) Mul(p, q *Affine) {
-	// Store the result in local variables, in case m == a || m == b.
-	m00 := p[0][0]*q[0][0] + p[0][1]*q[1][0]
-	m01 := p[0][0]*q[0][1] + p[0][1]*q[1][1]
-	m02 := p[0][0]*q[0][2] + p[0][1]*q[1][2] + p[0][2]
-	m10 := p[1][0]*q[0][0] + p[1][1]*q[1][0]
-	m11 := p[1][0]*q[0][1] + p[1][1]*q[1][1]
-	m12 := p[1][0]*q[0][2] + p[1][1]*q[1][2] + p[1][2]
-	m[0][0] = m00
-	m[0][1] = m01
-	m[0][2] = m02
-	m[1][0] = m10
-	m[1][1] = m11
-	m[1][2] = m12
-}
-
-// Inverse sets m to be the inverse of p.
-func (m *Affine) Inverse(p *Affine) {
-	m00 := p[1][1]
-	m01 := -p[0][1]
-	m02 := p[1][2]*p[0][1] - p[1][1]*p[0][2]
-	m10 := -p[1][0]
-	m11 := p[0][0]
-	m12 := p[1][0]*p[0][2] - p[1][2]*p[0][0]
-
-	det := m00*m11 - m10*m01
-
-	m[0][0] = m00 / det
-	m[0][1] = m01 / det
-	m[0][2] = m02 / det
-	m[1][0] = m10 / det
-	m[1][1] = m11 / det
-	m[1][2] = m12 / det
-}
-
-// Scale sets m to be a scale followed by p.
-// It is equivalent to m.Mul(p, &Affine{{x,0,0}, {0,y,0}}).
-func (m *Affine) Scale(p *Affine, x, y float32) {
-	m[0][0] = p[0][0] * x
-	m[0][1] = p[0][1] * y
-	m[0][2] = p[0][2]
-	m[1][0] = p[1][0] * x
-	m[1][1] = p[1][1] * y
-	m[1][2] = p[1][2]
-}
-
-// Translate sets m to be a translation followed by p.
-// It is equivalent to m.Mul(p, &Affine{{1,0,x}, {0,1,y}}).
-func (m *Affine) Translate(p *Affine, x, y float32) {
-	m[0][0] = p[0][0]
-	m[0][1] = p[0][1]
-	m[0][2] = p[0][0]*x + p[0][1]*y + p[0][2]
-	m[1][0] = p[1][0]
-	m[1][1] = p[1][1]
-	m[1][2] = p[1][0]*x + p[1][1]*y + p[1][2]
-}
-
-// Rotate sets m to a rotation in radians followed by p.
-// It is equivalent to m.Mul(p, affineRotation).
-func (m *Affine) Rotate(p *Affine, radians float32) {
-	s, c := Sin(radians), Cos(radians)
-	m.Mul(p, &Affine{
-		{+c, +s, 0},
-		{-s, +c, 0},
-	})
-}
diff --git a/go/src/golang.org/x/mobile/f32/affine_test.go b/go/src/golang.org/x/mobile/f32/affine_test.go
deleted file mode 100644
index f1d84cd..0000000
--- a/go/src/golang.org/x/mobile/f32/affine_test.go
+++ /dev/null
@@ -1,136 +0,0 @@
-package f32
-
-import (
-	"math"
-	"testing"
-)
-
-var xyTests = []struct {
-	x, y float32
-}{
-	{0, 0},
-	{1, 1},
-	{2, 3},
-	{6.5, 4.3},
-}
-
-var a = Affine{
-	{3, 4, 5},
-	{6, 7, 8},
-}
-
-func TestInverse(t *testing.T) {
-	wantInv := Affine{
-		{-2.33333, 1.33333, 1},
-		{2, -1, -2},
-	}
-	var gotInv Affine
-	gotInv.Inverse(&a)
-	if !gotInv.Eq(&wantInv, 0.01) {
-		t.Errorf("Inverse: got %s want %s", gotInv, wantInv)
-	}
-
-	var wantId, gotId Affine
-	wantId.Identity()
-	gotId.Mul(&a, &wantInv)
-	if !gotId.Eq(&wantId, 0.01) {
-		t.Errorf("Identity #0: got %s want %s", gotId, wantId)
-	}
-	gotId.Mul(&wantInv, &a)
-	if !gotId.Eq(&wantId, 0.01) {
-		t.Errorf("Identity #1: got %s want %s", gotId, wantId)
-	}
-}
-
-func TestAffineScale(t *testing.T) {
-	for _, test := range xyTests {
-		want := a
-		want.Mul(&want, &Affine{{test.x, 0, 0}, {0, test.y, 0}})
-		got := a
-		got.Scale(&got, test.x, test.y)
-
-		if !got.Eq(&want, 0.01) {
-			t.Errorf("(%.2f, %.2f): got %s want %s", test.x, test.y, got, want)
-		}
-	}
-}
-
-func TestAffineTranslate(t *testing.T) {
-	for _, test := range xyTests {
-		want := a
-		want.Mul(&want, &Affine{{1, 0, test.x}, {0, 1, test.y}})
-		got := a
-		got.Translate(&got, test.x, test.y)
-
-		if !got.Eq(&want, 0.01) {
-			t.Errorf("(%.2f, %.2f): got %s want %s", test.x, test.y, got, want)
-		}
-	}
-
-}
-
-func TestAffineRotate(t *testing.T) {
-	want := Affine{
-		{-4.000, 3.000, 5.000},
-		{-7.000, 6.000, 8.000},
-	}
-	got := a
-	got.Rotate(&got, math.Pi/2)
-	if !got.Eq(&want, 0.01) {
-		t.Errorf("rotate π: got %s want %s", got, want)
-	}
-
-	want = a
-	got = a
-	got.Rotate(&got, 2*math.Pi)
-	if !got.Eq(&want, 0.01) {
-		t.Errorf("rotate 2π: got %s want %s", got, want)
-	}
-
-	got = a
-	got.Rotate(&got, math.Pi)
-	got.Rotate(&got, math.Pi)
-	if !got.Eq(&want, 0.01) {
-		t.Errorf("rotate π then π: got %s want %s", got, want)
-	}
-
-	got = a
-	got.Rotate(&got, math.Pi/3)
-	got.Rotate(&got, -math.Pi/3)
-	if !got.Eq(&want, 0.01) {
-		t.Errorf("rotate π/3 then -π/3: got %s want %s", got, want)
-	}
-}
-
-func TestAffineScaleTranslate(t *testing.T) {
-	mulVec := func(m *Affine, v [2]float32) (mv [2]float32) {
-		mv[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]
-		mv[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]
-		return mv
-	}
-	v := [2]float32{1, 10}
-
-	var sThenT Affine
-	sThenT.Identity()
-	sThenT.Scale(&sThenT, 13, 17)
-	sThenT.Translate(&sThenT, 101, 151)
-	wantSTT := [2]float32{
-		13 * (101 + 1),
-		17 * (151 + 10),
-	}
-	if got := mulVec(&sThenT, v); got != wantSTT {
-		t.Errorf("S then T: got %v, want %v", got, wantSTT)
-	}
-
-	var tThenS Affine
-	tThenS.Identity()
-	tThenS.Translate(&tThenS, 101, 151)
-	tThenS.Scale(&tThenS, 13, 17)
-	wantTTS := [2]float32{
-		101 + (13 * 1),
-		151 + (17 * 10),
-	}
-	if got := mulVec(&tThenS, v); got != wantTTS {
-		t.Errorf("T then S: got %v, want %v", got, wantTTS)
-	}
-}
diff --git a/go/src/golang.org/x/mobile/f32/f32.go b/go/src/golang.org/x/mobile/f32/f32.go
deleted file mode 100644
index b794b9a..0000000
--- a/go/src/golang.org/x/mobile/f32/f32.go
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2014 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.
-
-//go:generate go run gen.go -output table.go
-
-// Package f32 implements some linear algebra and GL helpers for float32s.
-//
-// Types defined in this package have methods implementing common
-// mathematical operations. The common form for these functions is
-//
-//	func (dst *T) Op(lhs, rhs *T)
-//
-// which reads in traditional mathematical notation as
-//
-//	dst = lhs op rhs.
-//
-// It is safe to use the destination address as the left-hand side,
-// that is, dst *= rhs is dst.Mul(dst, rhs).
-//
-// WARNING
-//
-// The interface to this package is not stable. It will change considerably.
-// Only use functions that provide package documentation. Semantics are
-// non-obvious. Be prepared for the package name to change.
-package f32 // import "golang.org/x/mobile/f32"
-
-import (
-	"encoding/binary"
-	"fmt"
-	"math"
-)
-
-type Radian float32
-
-func Cos(x float32) float32 {
-	const n = sinTableLen
-	i := uint32(int32(x * (n / math.Pi)))
-	i += n / 2
-	i &= 2*n - 1
-	if i >= n {
-		return -sinTable[i&(n-1)]
-	}
-	return sinTable[i&(n-1)]
-}
-
-func Sin(x float32) float32 {
-	const n = sinTableLen
-	i := uint32(int32(x * (n / math.Pi)))
-	i &= 2*n - 1
-	if i >= n {
-		return -sinTable[i&(n-1)]
-	}
-	return sinTable[i&(n-1)]
-}
-
-func Sqrt(x float32) float32 {
-	return float32(math.Sqrt(float64(x))) // TODO(crawshaw): implement
-}
-
-func Tan(x float32) float32 {
-	return float32(math.Tan(float64(x))) // TODO(crawshaw): fast version
-}
-
-// Bytes returns the byte representation of float32 values in the given byte
-// order. byteOrder must be either binary.BigEndian or binary.LittleEndian.
-func Bytes(byteOrder binary.ByteOrder, values ...float32) []byte {
-	le := false
-	switch byteOrder {
-	case binary.BigEndian:
-	case binary.LittleEndian:
-		le = true
-	default:
-		panic(fmt.Sprintf("invalid byte order %v", byteOrder))
-	}
-
-	b := make([]byte, 4*len(values))
-	for i, v := range values {
-		u := math.Float32bits(v)
-		if le {
-			b[4*i+0] = byte(u >> 0)
-			b[4*i+1] = byte(u >> 8)
-			b[4*i+2] = byte(u >> 16)
-			b[4*i+3] = byte(u >> 24)
-		} else {
-			b[4*i+0] = byte(u >> 24)
-			b[4*i+1] = byte(u >> 16)
-			b[4*i+2] = byte(u >> 8)
-			b[4*i+3] = byte(u >> 0)
-		}
-	}
-	return b
-}
diff --git a/go/src/golang.org/x/mobile/f32/f32_test.go b/go/src/golang.org/x/mobile/f32/f32_test.go
deleted file mode 100644
index d662fe6..0000000
--- a/go/src/golang.org/x/mobile/f32/f32_test.go
+++ /dev/null
@@ -1,361 +0,0 @@
-// Copyright 2014 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 f32
-
-import (
-	"bytes"
-	"encoding/binary"
-	"math"
-	"testing"
-)
-
-func TestAffineTranslationsCommute(t *testing.T) {
-	a := &Affine{
-		{1, 0, 3},
-		{0, 1, 4},
-	}
-	b := &Affine{
-		{1, 0, 20},
-		{0, 1, 30},
-	}
-
-	var m0, m1 Affine
-	m0.Mul(a, b)
-	m1.Mul(b, a)
-	if !m0.Eq(&m1, 0) {
-		t.Errorf("m0, m1 differ.\nm0: %v\nm1: %v", m0, m1)
-	}
-}
-
-func TestAffineMat3Equivalence(t *testing.T) {
-	a0 := Affine{
-		{13, 19, 37},
-		{101, 149, 311},
-	}
-	m0 := Mat3{
-		a0[0],
-		a0[1],
-		{0, 0, 1},
-	}
-
-	a1 := Affine{
-		{1009, 1051, 1087},
-		{563, 569, 571},
-	}
-	m1 := Mat3{
-		a1[0],
-		a1[1],
-		{0, 0, 1},
-	}
-
-	a2 := Affine{}
-	a2.Mul(&a0, &a1)
-	m2 := Mat3{
-		a2[0],
-		a2[1],
-		{0, 0, 1},
-	}
-
-	mm := Mat3{}
-	mm.Mul(&m0, &m1)
-
-	if !m2.Eq(&mm, 0) {
-		t.Errorf("m2, mm differ.\nm2: %v\nmm: %v", m2, mm)
-	}
-}
-
-var x3 = Mat3{
-	{0, 1, 2},
-	{3, 4, 5},
-	{6, 7, 8},
-}
-
-var x3sq = Mat3{
-	{15, 18, 21},
-	{42, 54, 66},
-	{69, 90, 111},
-}
-
-var id3 = Mat3{
-	{1, 0, 0},
-	{0, 1, 0},
-	{0, 0, 1},
-}
-
-func TestMat3Mul(t *testing.T) {
-	tests := []struct{ m0, m1, want Mat3 }{
-		{x3, id3, x3},
-		{id3, x3, x3},
-		{x3, x3, x3sq},
-		{
-			Mat3{
-				{+1.811, +0.000, +0.000},
-				{+0.000, +2.414, +0.000},
-				{+0.000, +0.000, -1.010},
-			},
-			Mat3{
-				{+0.992, -0.015, +0.123},
-				{+0.000, +0.992, +0.123},
-				{-0.124, -0.122, +0.985},
-			},
-			Mat3{
-				{+1.797, -0.027, +0.223},
-				{+0.000, +2.395, +0.297},
-				{+0.125, +0.123, -0.995},
-			},
-		},
-	}
-
-	for i, test := range tests {
-		got := Mat3{}
-		got.Mul(&test.m0, &test.m1)
-		if !got.Eq(&test.want, 0.01) {
-			t.Errorf("test #%d:\n%s *\n%s =\n%s, want\n%s", i, test.m0, test.m1, got, test.want)
-		}
-	}
-}
-
-func TestMat3SelfMul(t *testing.T) {
-	m := x3
-	m.Mul(&m, &m)
-	if !m.Eq(&x3sq, 0) {
-		t.Errorf("m, x3sq differ.\nm:    %v\nx3sq: %v", m, x3sq)
-	}
-}
-
-var x4 = Mat4{
-	{0, 1, 2, 3},
-	{4, 5, 6, 7},
-	{8, 9, 10, 11},
-	{12, 13, 14, 15},
-}
-
-var x4sq = Mat4{
-	{56, 62, 68, 74},
-	{152, 174, 196, 218},
-	{248, 286, 324, 362},
-	{344, 398, 452, 506},
-}
-
-var id4 = Mat4{
-	{1, 0, 0, 0},
-	{0, 1, 0, 0},
-	{0, 0, 1, 0},
-	{0, 0, 0, 1},
-}
-
-func TestMat4Eq(t *testing.T) {
-	tests := []struct {
-		m0, m1 Mat4
-		eq     bool
-	}{
-		{x4, x4, true},
-		{id4, id4, true},
-		{x4, id4, false},
-	}
-
-	for _, test := range tests {
-		got := test.m0.Eq(&test.m1, 0.01)
-		if got != test.eq {
-			t.Errorf("Eq=%v, want %v for\n%s\n%s", got, test.eq, test.m0, test.m1)
-		}
-	}
-}
-
-func TestMat4Mul(t *testing.T) {
-	tests := []struct{ m0, m1, want Mat4 }{
-		{x4, id4, x4},
-		{id4, x4, x4},
-		{x4, x4, x4sq},
-		{
-			Mat4{
-				{+1.811, +0.000, +0.000, +0.000},
-				{+0.000, +2.414, +0.000, +0.000},
-				{+0.000, +0.000, -1.010, -1.000},
-				{+0.000, +0.000, -2.010, +0.000},
-			},
-			Mat4{
-				{+0.992, -0.015, +0.123, +0.000},
-				{+0.000, +0.992, +0.123, +0.000},
-				{-0.124, -0.122, +0.985, +0.000},
-				{-0.000, -0.000, -8.124, +1.000},
-			},
-			Mat4{
-				{+1.797, -0.027, +0.223, +0.000},
-				{+0.000, +2.395, +0.297, +0.000},
-				{+0.125, +0.123, +7.129, -1.000},
-				{+0.249, +0.245, -1.980, +0.000},
-			},
-		},
-	}
-
-	for i, test := range tests {
-		got := Mat4{}
-		got.Mul(&test.m0, &test.m1)
-		if !got.Eq(&test.want, 0.01) {
-			t.Errorf("test #%d:\n%s *\n%s =\n%s, want\n%s", i, test.m0, test.m1, got, test.want)
-		}
-	}
-}
-
-func TestMat4LookAt(t *testing.T) {
-	tests := []struct {
-		eye, center, up Vec3
-		want            Mat4
-	}{
-		{
-			Vec3{1, 1, 8}, Vec3{0, 0, 0}, Vec3{0, 1, 0},
-			Mat4{
-				{0.992, -0.015, 0.123, 0.000},
-				{0.000, 0.992, 0.123, 0.000},
-				{-0.124, -0.122, 0.985, 0.000},
-				{-0.000, -0.000, -8.124, 1.000},
-			},
-		},
-		{
-			Vec3{4, 5, 7}, Vec3{0.1, 0.2, 0.3}, Vec3{0, -1, 0},
-			Mat4{
-				{-0.864, 0.265, 0.428, 0.000},
-				{0.000, -0.850, 0.526, 0.000},
-				{0.503, 0.455, 0.735, 0.000},
-				{-0.064, 0.007, -9.487, 1.000},
-			},
-		},
-	}
-
-	for _, test := range tests {
-		got := Mat4{}
-		got.LookAt(&test.eye, &test.center, &test.up)
-		if !got.Eq(&test.want, 0.01) {
-			t.Errorf("LookAt(%s,%s%s) =\n%s\nwant\n%s", test.eye, test.center, test.up, got, test.want)
-		}
-	}
-
-}
-
-func TestMat4Perspective(t *testing.T) {
-	want := Mat4{
-		{1.811, 0.000, 0.000, 0.000},
-		{0.000, 2.414, 0.000, 0.000},
-		{0.000, 0.000, -1.010, -1.000},
-		{0.000, 0.000, -2.010, 0.000},
-	}
-	got := Mat4{}
-
-	got.Perspective(Radian(math.Pi/4), 4.0/3, 1, 200)
-
-	if !got.Eq(&want, 0.01) {
-		t.Errorf("got\n%s\nwant\n%s", got, want)
-	}
-
-}
-
-func TestMat4Rotate(t *testing.T) {
-	want := &Mat4{
-		{2.000, 1.000, -0.000, 3.000},
-		{6.000, 5.000, -4.000, 7.000},
-		{10.000, 9.000, -8.000, 11.000},
-		{14.000, 13.000, -12.000, 15.000},
-	}
-
-	got := new(Mat4)
-	got.Rotate(&x4, Radian(math.Pi/2), &Vec3{0, 1, 0})
-
-	if !got.Eq(want, 0.01) {
-		t.Errorf("got\n%s\nwant\n%s", got, want)
-	}
-}
-
-func TestMat4Scale(t *testing.T) {
-	want := &Mat4{
-		{0 * 2, 1 * 3, 2 * 4, 3 * 1},
-		{4 * 2, 5 * 3, 6 * 4, 7 * 1},
-		{8 * 2, 9 * 3, 10 * 4, 11 * 1},
-		{12 * 2, 13 * 3, 14 * 4, 15 * 1},
-	}
-
-	got := new(Mat4)
-	got.Scale(&x4, 2, 3, 4)
-
-	if !got.Eq(want, 0.01) {
-		t.Errorf("got\n%s\nwant\n%s", got, want)
-	}
-}
-
-func TestMat4Translate(t *testing.T) {
-	want := &Mat4{
-		{0, 1, 2, 0*0.1 + 1*0.2 + 2*0.3 + 3*1},
-		{4, 5, 6, 4*0.1 + 5*0.2 + 6*0.3 + 7*1},
-		{8, 9, 10, 8*0.1 + 9*0.2 + 10*0.3 + 11*1},
-		{12, 13, 14, 12*0.1 + 13*0.2 + 14*0.3 + 15*1},
-	}
-
-	got := new(Mat4)
-	got.Translate(&x4, 0.1, 0.2, 0.3)
-
-	if !got.Eq(want, 0.01) {
-		t.Errorf("got\n%s\nwant\n%s", got, want)
-	}
-}
-
-func testTrig(t *testing.T, gotFunc func(float32) float32, wantFunc func(float64) float64) {
-	nBad := 0
-	for a := float32(-9); a < +9; a += .01 {
-		got := gotFunc(a)
-		want := float32(wantFunc(float64(a)))
-		diff := got - want
-		if diff < 0 {
-			diff = -diff
-		}
-		if diff > 0.001 {
-			if nBad++; nBad == 10 {
-				t.Errorf("too many failures")
-				break
-			}
-			t.Errorf("a=%+.2f: got %+.4f, want %+.4f, diff=%.4f", a, got, want, diff)
-		}
-	}
-}
-
-func TestCos(t *testing.T) { testTrig(t, Cos, math.Cos) }
-func TestSin(t *testing.T) { testTrig(t, Sin, math.Sin) }
-func TestTan(t *testing.T) { testTrig(t, Tan, math.Tan) }
-
-func BenchmarkSin(b *testing.B) {
-	for i := 0; i < b.N; i++ {
-		for a := 0; a < 3141; a++ {
-			Sin(float32(a) / 1000)
-		}
-	}
-}
-
-func TestBytes(t *testing.T) {
-	testCases := []struct {
-		byteOrder binary.ByteOrder
-		want      []byte
-	}{{
-		binary.BigEndian,
-		[]byte{
-			// The IEEE 754 binary32 format is 1 sign bit, 8 exponent bits and 23 fraction bits.
-			0x00, 0x00, 0x00, 0x00, // float32(+0.00) is 0 0000000_0 0000000_00000000_00000000
-			0x3f, 0xa0, 0x00, 0x00, // float32(+1.25) is 0 0111111_1 0100000_00000000_00000000
-			0xc0, 0x00, 0x00, 0x00, // float32(-2.00) is 1 1000000_0 0000000_00000000_00000000
-		},
-	}, {
-		binary.LittleEndian,
-		[]byte{
-			0x00, 0x00, 0x00, 0x00,
-			0x00, 0x00, 0xa0, 0x3f,
-			0x00, 0x00, 0x00, 0xc0,
-		},
-	}}
-
-	for _, tc := range testCases {
-		got := Bytes(tc.byteOrder, +0.00, +1.25, -2.00)
-		if !bytes.Equal(got, tc.want) {
-			t.Errorf("%v:\ngot  % x\nwant % x", tc.byteOrder, got, tc.want)
-		}
-	}
-}
diff --git a/go/src/golang.org/x/mobile/f32/gen.go b/go/src/golang.org/x/mobile/f32/gen.go
deleted file mode 100644
index 8f8b187..0000000
--- a/go/src/golang.org/x/mobile/f32/gen.go
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2014 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.
-
-// +build ignore
-
-package main
-
-/*
-This program generates table.go. Invoke it as:
-go run gen.go -output table.go
-*/
-
-import (
-	"bytes"
-	"flag"
-	"fmt"
-	"go/format"
-	"io/ioutil"
-	"log"
-	"math"
-)
-
-// N is the number of entries in the sin look-up table. It must be a power of 2.
-const N = 4096
-
-var filename = flag.String("output", "table.go", "output file name")
-
-func main() {
-	b := new(bytes.Buffer)
-	fmt.Fprintf(b, "// generated by go run gen.go; DO NOT EDIT\n\npackage f32\n\n")
-	fmt.Fprintf(b, "const sinTableLen = %d\n\n", N)
-	fmt.Fprintf(b, "// sinTable[i] equals sin(i * π / sinTableLen).\n")
-	fmt.Fprintf(b, "var sinTable = [sinTableLen]float32{\n")
-	for i := 0; i < N; i++ {
-		radians := float64(i) * (math.Pi / N)
-		fmt.Fprintf(b, "%v,\n", float32(math.Sin(radians)))
-	}
-	fmt.Fprintf(b, "}\n")
-
-	data, err := format.Source(b.Bytes())
-	if err != nil {
-		log.Fatal(err)
-	}
-	if err := ioutil.WriteFile(*filename, data, 0644); err != nil {
-		log.Fatal(err)
-	}
-}
diff --git a/go/src/golang.org/x/mobile/f32/mat3.go b/go/src/golang.org/x/mobile/f32/mat3.go
deleted file mode 100644
index 2577dbf..0000000
--- a/go/src/golang.org/x/mobile/f32/mat3.go
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2014 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 f32
-
-import "fmt"
-
-// A Mat3 is a 3x3 matrix of float32 values.
-// Elements are indexed first by row then column, i.e. m[row][column].
-type Mat3 [3]Vec3
-
-func (m Mat3) String() string {
-	return fmt.Sprintf(`Mat3[% 0.3f, % 0.3f, % 0.3f,
-     % 0.3f, % 0.3f, % 0.3f,
-     % 0.3f, % 0.3f, % 0.3f]`,
-		m[0][0], m[0][1], m[0][2],
-		m[1][0], m[1][1], m[1][2],
-		m[2][0], m[2][1], m[2][2])
-}
-
-func (m *Mat3) Identity() {
-	*m = Mat3{
-		{1, 0, 0},
-		{0, 1, 0},
-		{0, 0, 1},
-	}
-}
-
-func (m *Mat3) Eq(n *Mat3, epsilon float32) bool {
-	for i := range m {
-		for j := range m[i] {
-			diff := m[i][j] - n[i][j]
-			if diff < -epsilon || +epsilon < diff {
-				return false
-			}
-		}
-	}
-	return true
-}
-
-// Mul stores a × b in m.
-func (m *Mat3) Mul(a, b *Mat3) {
-	// Store the result in local variables, in case m == a || m == b.
-	m00 := a[0][0]*b[0][0] + a[0][1]*b[1][0] + a[0][2]*b[2][0]
-	m01 := a[0][0]*b[0][1] + a[0][1]*b[1][1] + a[0][2]*b[2][1]
-	m02 := a[0][0]*b[0][2] + a[0][1]*b[1][2] + a[0][2]*b[2][2]
-	m10 := a[1][0]*b[0][0] + a[1][1]*b[1][0] + a[1][2]*b[2][0]
-	m11 := a[1][0]*b[0][1] + a[1][1]*b[1][1] + a[1][2]*b[2][1]
-	m12 := a[1][0]*b[0][2] + a[1][1]*b[1][2] + a[1][2]*b[2][2]
-	m20 := a[2][0]*b[0][0] + a[2][1]*b[1][0] + a[2][2]*b[2][0]
-	m21 := a[2][0]*b[0][1] + a[2][1]*b[1][1] + a[2][2]*b[2][1]
-	m22 := a[2][0]*b[0][2] + a[2][1]*b[1][2] + a[2][2]*b[2][2]
-	m[0][0] = m00
-	m[0][1] = m01
-	m[0][2] = m02
-	m[1][0] = m10
-	m[1][1] = m11
-	m[1][2] = m12
-	m[2][0] = m20
-	m[2][1] = m21
-	m[2][2] = m22
-}
diff --git a/go/src/golang.org/x/mobile/f32/mat4.go b/go/src/golang.org/x/mobile/f32/mat4.go
deleted file mode 100644
index 75d3a59..0000000
--- a/go/src/golang.org/x/mobile/f32/mat4.go
+++ /dev/null
@@ -1,193 +0,0 @@
-// Copyright 2014 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 f32
-
-import "fmt"
-
-// A Mat4 is a 4x4 matrix of float32 values.
-// Elements are indexed first by row then column, i.e. m[row][column].
-type Mat4 [4]Vec4
-
-func (m Mat4) String() string {
-	return fmt.Sprintf(`Mat4[% 0.3f, % 0.3f, % 0.3f, % 0.3f,
-     % 0.3f, % 0.3f, % 0.3f, % 0.3f,
-     % 0.3f, % 0.3f, % 0.3f, % 0.3f,
-     % 0.3f, % 0.3f, % 0.3f, % 0.3f]`,
-		m[0][0], m[0][1], m[0][2], m[0][3],
-		m[1][0], m[1][1], m[1][2], m[1][3],
-		m[2][0], m[2][1], m[2][2], m[2][3],
-		m[3][0], m[3][1], m[3][2], m[3][3])
-}
-
-func (m *Mat4) Identity() {
-	*m = Mat4{
-		{1, 0, 0, 0},
-		{0, 1, 0, 0},
-		{0, 0, 1, 0},
-		{0, 0, 0, 1},
-	}
-}
-
-func (m *Mat4) Eq(n *Mat4, epsilon float32) bool {
-	for i := range m {
-		for j := range m[i] {
-			diff := m[i][j] - n[i][j]
-			if diff < -epsilon || +epsilon < diff {
-				return false
-			}
-		}
-	}
-	return true
-}
-
-// Mul stores a × b in m.
-func (m *Mat4) Mul(a, b *Mat4) {
-	// Store the result in local variables, in case m == a || m == b.
-	m00 := a[0][0]*b[0][0] + a[0][1]*b[1][0] + a[0][2]*b[2][0] + a[0][3]*b[3][0]
-	m01 := a[0][0]*b[0][1] + a[0][1]*b[1][1] + a[0][2]*b[2][1] + a[0][3]*b[3][1]
-	m02 := a[0][0]*b[0][2] + a[0][1]*b[1][2] + a[0][2]*b[2][2] + a[0][3]*b[3][2]
-	m03 := a[0][0]*b[0][3] + a[0][1]*b[1][3] + a[0][2]*b[2][3] + a[0][3]*b[3][3]
-	m10 := a[1][0]*b[0][0] + a[1][1]*b[1][0] + a[1][2]*b[2][0] + a[1][3]*b[3][0]
-	m11 := a[1][0]*b[0][1] + a[1][1]*b[1][1] + a[1][2]*b[2][1] + a[1][3]*b[3][1]
-	m12 := a[1][0]*b[0][2] + a[1][1]*b[1][2] + a[1][2]*b[2][2] + a[1][3]*b[3][2]
-	m13 := a[1][0]*b[0][3] + a[1][1]*b[1][3] + a[1][2]*b[2][3] + a[1][3]*b[3][3]
-	m20 := a[2][0]*b[0][0] + a[2][1]*b[1][0] + a[2][2]*b[2][0] + a[2][3]*b[3][0]
-	m21 := a[2][0]*b[0][1] + a[2][1]*b[1][1] + a[2][2]*b[2][1] + a[2][3]*b[3][1]
-	m22 := a[2][0]*b[0][2] + a[2][1]*b[1][2] + a[2][2]*b[2][2] + a[2][3]*b[3][2]
-	m23 := a[2][0]*b[0][3] + a[2][1]*b[1][3] + a[2][2]*b[2][3] + a[2][3]*b[3][3]
-	m30 := a[3][0]*b[0][0] + a[3][1]*b[1][0] + a[3][2]*b[2][0] + a[3][3]*b[3][0]
-	m31 := a[3][0]*b[0][1] + a[3][1]*b[1][1] + a[3][2]*b[2][1] + a[3][3]*b[3][1]
-	m32 := a[3][0]*b[0][2] + a[3][1]*b[1][2] + a[3][2]*b[2][2] + a[3][3]*b[3][2]
-	m33 := a[3][0]*b[0][3] + a[3][1]*b[1][3] + a[3][2]*b[2][3] + a[3][3]*b[3][3]
-	m[0][0] = m00
-	m[0][1] = m01
-	m[0][2] = m02
-	m[0][3] = m03
-	m[1][0] = m10
-	m[1][1] = m11
-	m[1][2] = m12
-	m[1][3] = m13
-	m[2][0] = m20
-	m[2][1] = m21
-	m[2][2] = m22
-	m[2][3] = m23
-	m[3][0] = m30
-	m[3][1] = m31
-	m[3][2] = m32
-	m[3][3] = m33
-}
-
-// Perspective sets m to be the GL perspective matrix.
-func (m *Mat4) Perspective(fov Radian, aspect, near, far float32) {
-	t := Tan(float32(fov) / 2)
-
-	m[0][0] = 1 / (aspect * t)
-	m[1][1] = 1 / t
-	m[2][2] = -(far + near) / (far - near)
-	m[2][3] = -1
-	m[3][2] = -2 * far * near / (far - near)
-}
-
-// Scale sets m to be a scale followed by p.
-// It is equivalent to
-//	m.Mul(p, &Mat4{
-//		{x, 0, 0, 0},
-//		{0, y, 0, 0},
-//		{0, 0, z, 0},
-//		{0, 0, 0, 1},
-//	}).
-func (m *Mat4) Scale(p *Mat4, x, y, z float32) {
-	m[0][0] = p[0][0] * x
-	m[0][1] = p[0][1] * y
-	m[0][2] = p[0][2] * z
-	m[0][3] = p[0][3]
-	m[1][0] = p[1][0] * x
-	m[1][1] = p[1][1] * y
-	m[1][2] = p[1][2] * z
-	m[1][3] = p[1][3]
-	m[2][0] = p[2][0] * x
-	m[2][1] = p[2][1] * y
-	m[2][2] = p[2][2] * z
-	m[2][3] = p[2][3]
-	m[3][0] = p[3][0] * x
-	m[3][1] = p[3][1] * y
-	m[3][2] = p[3][2] * z
-	m[3][3] = p[3][3]
-}
-
-// Translate sets m to be a translation followed by p.
-// It is equivalent to
-//	m.Mul(p, &Mat4{
-//		{1, 0, 0, x},
-//		{0, 1, 0, y},
-//		{0, 0, 1, z},
-//		{0, 0, 0, 1},
-//	}).
-func (m *Mat4) Translate(p *Mat4, x, y, z float32) {
-	m[0][0] = p[0][0]
-	m[0][1] = p[0][1]
-	m[0][2] = p[0][2]
-	m[0][3] = p[0][0]*x + p[0][1]*y + p[0][2]*z + p[0][3]
-	m[1][0] = p[1][0]
-	m[1][1] = p[1][1]
-	m[1][2] = p[1][2]
-	m[1][3] = p[1][0]*x + p[1][1]*y + p[1][2]*z + p[1][3]
-	m[2][0] = p[2][0]
-	m[2][1] = p[2][1]
-	m[2][2] = p[2][2]
-	m[2][3] = p[2][0]*x + p[2][1]*y + p[2][2]*z + p[2][3]
-	m[3][0] = p[3][0]
-	m[3][1] = p[3][1]
-	m[3][2] = p[3][2]
-	m[3][3] = p[3][0]*x + p[3][1]*y + p[3][2]*z + p[3][3]
-}
-
-// Rotate sets m to a rotation in radians around a specified axis, followed by p.
-// It is equivalent to m.Mul(p, affineRotation).
-func (m *Mat4) Rotate(p *Mat4, angle Radian, axis *Vec3) {
-	a := *axis
-	a.Normalize()
-
-	c, s := Cos(float32(angle)), Sin(float32(angle))
-	d := 1 - c
-
-	m.Mul(p, &Mat4{{
-		c + d*a[0]*a[1],
-		0 + d*a[0]*a[1] + s*a[2],
-		0 + d*a[0]*a[1] - s*a[1],
-		0,
-	}, {
-		0 + d*a[1]*a[0] - s*a[2],
-		c + d*a[1]*a[1],
-		0 + d*a[1]*a[2] + s*a[0],
-		0,
-	}, {
-		0 + d*a[2]*a[0] + s*a[1],
-		0 + d*a[2]*a[1] - s*a[0],
-		c + d*a[2]*a[2],
-		0,
-	}, {
-		0, 0, 0, 1,
-	}})
-}
-
-func (m *Mat4) LookAt(eye, center, up *Vec3) {
-	f, s, u := new(Vec3), new(Vec3), new(Vec3)
-
-	*f = *center
-	f.Sub(f, eye)
-	f.Normalize()
-
-	s.Cross(f, up)
-	s.Normalize()
-	u.Cross(s, f)
-
-	*m = Mat4{
-		{s[0], u[0], -f[0], 0},
-		{s[1], u[1], -f[1], 0},
-		{s[2], u[2], -f[2], 0},
-		{-s.Dot(eye), -u.Dot(eye), +f.Dot(eye), 1},
-	}
-}
diff --git a/go/src/golang.org/x/mobile/f32/table.go b/go/src/golang.org/x/mobile/f32/table.go
deleted file mode 100644
index e0b5e33..0000000
--- a/go/src/golang.org/x/mobile/f32/table.go
+++ /dev/null
@@ -1,4105 +0,0 @@
-// generated by go run gen.go; DO NOT EDIT
-
-package f32
-
-const sinTableLen = 4096
-
-// sinTable[i] equals sin(i * π / sinTableLen).
-var sinTable = [sinTableLen]float32{
-	0,
-	0.0007669903,
-	0.0015339801,
-	0.002300969,
-	0.0030679568,
-	0.0038349426,
-	0.004601926,
-	0.005368907,
-	0.0061358847,
-	0.0069028586,
-	0.007669829,
-	0.008436794,
-	0.009203754,
-	0.00997071,
-	0.010737659,
-	0.011504602,
-	0.012271538,
-	0.013038468,
-	0.0138053885,
-	0.014572302,
-	0.015339206,
-	0.016106103,
-	0.016872987,
-	0.017639864,
-	0.01840673,
-	0.019173585,
-	0.019940428,
-	0.02070726,
-	0.02147408,
-	0.022240888,
-	0.023007682,
-	0.023774462,
-	0.024541229,
-	0.025307981,
-	0.026074719,
-	0.02684144,
-	0.027608145,
-	0.028374836,
-	0.029141508,
-	0.029908165,
-	0.030674804,
-	0.031441424,
-	0.032208025,
-	0.03297461,
-	0.033741172,
-	0.034507714,
-	0.035274237,
-	0.036040742,
-	0.036807224,
-	0.037573684,
-	0.03834012,
-	0.039106537,
-	0.039872926,
-	0.040639296,
-	0.04140564,
-	0.042171963,
-	0.04293826,
-	0.04370453,
-	0.044470772,
-	0.04523699,
-	0.04600318,
-	0.046769347,
-	0.047535483,
-	0.048301592,
-	0.049067676,
-	0.049833726,
-	0.05059975,
-	0.05136574,
-	0.052131705,
-	0.052897636,
-	0.053663537,
-	0.05442941,
-	0.055195246,
-	0.05596105,
-	0.05672682,
-	0.057492558,
-	0.058258265,
-	0.059023935,
-	0.059789572,
-	0.06055517,
-	0.061320737,
-	0.062086266,
-	0.06285176,
-	0.063617215,
-	0.06438263,
-	0.06514801,
-	0.06591335,
-	0.06667866,
-	0.06744392,
-	0.06820914,
-	0.06897433,
-	0.06973947,
-	0.070504576,
-	0.07126963,
-	0.07203465,
-	0.07279963,
-	0.07356457,
-	0.07432945,
-	0.0750943,
-	0.07585911,
-	0.076623864,
-	0.07738858,
-	0.078153245,
-	0.07891786,
-	0.07968244,
-	0.080446966,
-	0.08121145,
-	0.08197588,
-	0.08274026,
-	0.0835046,
-	0.08426889,
-	0.085033126,
-	0.08579731,
-	0.08656145,
-	0.087325536,
-	0.08808957,
-	0.08885355,
-	0.08961748,
-	0.09038136,
-	0.09114519,
-	0.091908954,
-	0.092672676,
-	0.09343634,
-	0.09419994,
-	0.0949635,
-	0.09572699,
-	0.09649043,
-	0.097253814,
-	0.09801714,
-	0.09878041,
-	0.099543616,
-	0.10030677,
-	0.10106986,
-	0.1018329,
-	0.102595866,
-	0.10335878,
-	0.10412163,
-	0.10488442,
-	0.105647154,
-	0.10640982,
-	0.10717242,
-	0.10793497,
-	0.108697444,
-	0.109459855,
-	0.110222206,
-	0.11098449,
-	0.11174671,
-	0.11250886,
-	0.11327095,
-	0.11403298,
-	0.114794925,
-	0.115556814,
-	0.11631863,
-	0.11708038,
-	0.11784206,
-	0.11860368,
-	0.119365215,
-	0.12012669,
-	0.120888084,
-	0.121649414,
-	0.12241068,
-	0.12317186,
-	0.12393297,
-	0.12469402,
-	0.12545498,
-	0.12621588,
-	0.1269767,
-	0.12773745,
-	0.1284981,
-	0.1292587,
-	0.13001922,
-	0.13077967,
-	0.13154003,
-	0.13230032,
-	0.13306053,
-	0.13382065,
-	0.1345807,
-	0.13534068,
-	0.13610058,
-	0.13686039,
-	0.13762012,
-	0.13837977,
-	0.13913934,
-	0.13989884,
-	0.14065824,
-	0.14141756,
-	0.1421768,
-	0.14293596,
-	0.14369503,
-	0.14445402,
-	0.14521292,
-	0.14597175,
-	0.14673047,
-	0.14748912,
-	0.14824767,
-	0.14900614,
-	0.14976454,
-	0.15052283,
-	0.15128104,
-	0.15203916,
-	0.15279719,
-	0.15355512,
-	0.15431297,
-	0.15507074,
-	0.1558284,
-	0.15658598,
-	0.15734346,
-	0.15810084,
-	0.15885815,
-	0.15961535,
-	0.16037245,
-	0.16112947,
-	0.1618864,
-	0.16264322,
-	0.16339995,
-	0.16415659,
-	0.16491312,
-	0.16566956,
-	0.1664259,
-	0.16718215,
-	0.16793829,
-	0.16869435,
-	0.1694503,
-	0.17020614,
-	0.17096189,
-	0.17171754,
-	0.17247309,
-	0.17322853,
-	0.17398387,
-	0.17473911,
-	0.17549425,
-	0.1762493,
-	0.17700422,
-	0.17775905,
-	0.17851377,
-	0.17926839,
-	0.1800229,
-	0.18077731,
-	0.18153161,
-	0.1822858,
-	0.18303989,
-	0.18379387,
-	0.18454774,
-	0.1853015,
-	0.18605515,
-	0.18680869,
-	0.18756212,
-	0.18831545,
-	0.18906866,
-	0.18982176,
-	0.19057475,
-	0.19132763,
-	0.1920804,
-	0.19283305,
-	0.19358559,
-	0.19433801,
-	0.19509032,
-	0.19584252,
-	0.1965946,
-	0.19734657,
-	0.1980984,
-	0.19885014,
-	0.19960175,
-	0.20035325,
-	0.20110464,
-	0.2018559,
-	0.20260704,
-	0.20335807,
-	0.20410897,
-	0.20485975,
-	0.20561041,
-	0.20636095,
-	0.20711137,
-	0.20786168,
-	0.20861185,
-	0.20936191,
-	0.21011184,
-	0.21086164,
-	0.21161133,
-	0.21236089,
-	0.21311031,
-	0.21385963,
-	0.21460882,
-	0.21535787,
-	0.2161068,
-	0.2168556,
-	0.21760428,
-	0.21835282,
-	0.21910124,
-	0.21984953,
-	0.22059768,
-	0.22134572,
-	0.22209363,
-	0.2228414,
-	0.22358903,
-	0.22433653,
-	0.22508392,
-	0.22583115,
-	0.22657827,
-	0.22732525,
-	0.22807208,
-	0.22881879,
-	0.22956537,
-	0.23031181,
-	0.2310581,
-	0.23180428,
-	0.23255031,
-	0.2332962,
-	0.23404196,
-	0.23478758,
-	0.23553306,
-	0.2362784,
-	0.2370236,
-	0.23776866,
-	0.23851359,
-	0.23925838,
-	0.24000302,
-	0.24074753,
-	0.24149188,
-	0.24223611,
-	0.24298018,
-	0.24372411,
-	0.2444679,
-	0.24521154,
-	0.24595505,
-	0.24669841,
-	0.24744162,
-	0.24818468,
-	0.24892761,
-	0.24967039,
-	0.250413,
-	0.2511555,
-	0.2518978,
-	0.25264,
-	0.25338203,
-	0.25412393,
-	0.25486565,
-	0.25560725,
-	0.25634867,
-	0.25708997,
-	0.2578311,
-	0.25857207,
-	0.25931293,
-	0.2600536,
-	0.2607941,
-	0.26153448,
-	0.2622747,
-	0.26301476,
-	0.26375467,
-	0.26449442,
-	0.26523402,
-	0.26597348,
-	0.26671275,
-	0.26745188,
-	0.26819086,
-	0.26892966,
-	0.2696683,
-	0.2704068,
-	0.27114516,
-	0.27188334,
-	0.27262136,
-	0.2733592,
-	0.2740969,
-	0.27483445,
-	0.27557182,
-	0.27630904,
-	0.27704608,
-	0.27778298,
-	0.2785197,
-	0.27925625,
-	0.27999264,
-	0.28072888,
-	0.28146493,
-	0.28220084,
-	0.28293657,
-	0.28367212,
-	0.28440753,
-	0.28514278,
-	0.28587782,
-	0.28661272,
-	0.28734747,
-	0.28808203,
-	0.28881642,
-	0.28955063,
-	0.29028466,
-	0.29101855,
-	0.29175225,
-	0.2924858,
-	0.29321915,
-	0.29395235,
-	0.29468536,
-	0.2954182,
-	0.2961509,
-	0.29688337,
-	0.2976157,
-	0.29834786,
-	0.29907984,
-	0.29981163,
-	0.30054325,
-	0.3012747,
-	0.30200595,
-	0.30273703,
-	0.30346796,
-	0.30419868,
-	0.30492923,
-	0.3056596,
-	0.3063898,
-	0.30711982,
-	0.30784965,
-	0.3085793,
-	0.30930877,
-	0.31003806,
-	0.31076714,
-	0.31149608,
-	0.3122248,
-	0.31295338,
-	0.31368175,
-	0.31440994,
-	0.31513792,
-	0.31586576,
-	0.31659338,
-	0.31732082,
-	0.3180481,
-	0.31877515,
-	0.31950203,
-	0.32022873,
-	0.32095525,
-	0.32168156,
-	0.3224077,
-	0.32313362,
-	0.32385936,
-	0.32458493,
-	0.3253103,
-	0.32603547,
-	0.32676044,
-	0.32748523,
-	0.32820985,
-	0.32893425,
-	0.32965845,
-	0.3303825,
-	0.3311063,
-	0.33182994,
-	0.33255336,
-	0.3332766,
-	0.33399966,
-	0.3347225,
-	0.33544514,
-	0.3361676,
-	0.33688986,
-	0.3376119,
-	0.33833376,
-	0.33905542,
-	0.33977687,
-	0.34049815,
-	0.34121922,
-	0.34194008,
-	0.34266073,
-	0.34338117,
-	0.34410143,
-	0.34482148,
-	0.34554133,
-	0.34626096,
-	0.34698042,
-	0.34769964,
-	0.34841868,
-	0.3491375,
-	0.34985614,
-	0.35057455,
-	0.35129276,
-	0.35201076,
-	0.35272855,
-	0.35344616,
-	0.35416353,
-	0.3548807,
-	0.35559767,
-	0.35631442,
-	0.35703096,
-	0.3577473,
-	0.3584634,
-	0.35917935,
-	0.35989505,
-	0.3606105,
-	0.3613258,
-	0.36204088,
-	0.36275572,
-	0.36347038,
-	0.3641848,
-	0.364899,
-	0.36561298,
-	0.36632678,
-	0.36704034,
-	0.36775368,
-	0.36846682,
-	0.36917976,
-	0.36989245,
-	0.37060493,
-	0.3713172,
-	0.37202924,
-	0.37274107,
-	0.37345266,
-	0.37416407,
-	0.37487522,
-	0.37558618,
-	0.3762969,
-	0.37700742,
-	0.3777177,
-	0.37842774,
-	0.3791376,
-	0.3798472,
-	0.3805566,
-	0.38126576,
-	0.38197473,
-	0.38268343,
-	0.38339192,
-	0.3841002,
-	0.38480824,
-	0.38551605,
-	0.38622364,
-	0.386931,
-	0.38763815,
-	0.38834503,
-	0.38905174,
-	0.38975817,
-	0.3904644,
-	0.39117038,
-	0.39187613,
-	0.39258167,
-	0.39328697,
-	0.39399204,
-	0.39469686,
-	0.39540148,
-	0.39610586,
-	0.39681,
-	0.3975139,
-	0.39821756,
-	0.398921,
-	0.3996242,
-	0.40032718,
-	0.40102988,
-	0.4017324,
-	0.40243465,
-	0.40313667,
-	0.40383846,
-	0.40454,
-	0.4052413,
-	0.40594238,
-	0.4066432,
-	0.4073438,
-	0.40804416,
-	0.40874428,
-	0.40944415,
-	0.4101438,
-	0.41084316,
-	0.41154233,
-	0.41224122,
-	0.41293988,
-	0.41363832,
-	0.4143365,
-	0.4150344,
-	0.41573212,
-	0.41642955,
-	0.41712677,
-	0.4178237,
-	0.41852042,
-	0.4192169,
-	0.4199131,
-	0.4206091,
-	0.4213048,
-	0.42200026,
-	0.4226955,
-	0.42339048,
-	0.4240852,
-	0.42477968,
-	0.4254739,
-	0.42616788,
-	0.4268616,
-	0.42755508,
-	0.42824832,
-	0.42894128,
-	0.429634,
-	0.4303265,
-	0.4310187,
-	0.43171066,
-	0.43240237,
-	0.43309382,
-	0.43378502,
-	0.43447596,
-	0.43516666,
-	0.4358571,
-	0.43654725,
-	0.43723717,
-	0.43792683,
-	0.43861625,
-	0.4393054,
-	0.43999428,
-	0.4406829,
-	0.44137126,
-	0.44205937,
-	0.44274724,
-	0.4434348,
-	0.44412214,
-	0.4448092,
-	0.44549602,
-	0.44618255,
-	0.44686884,
-	0.44755486,
-	0.4482406,
-	0.4489261,
-	0.44961134,
-	0.45029628,
-	0.450981,
-	0.45166543,
-	0.45234957,
-	0.45303348,
-	0.4537171,
-	0.45440048,
-	0.45508358,
-	0.4557664,
-	0.45644897,
-	0.45713127,
-	0.4578133,
-	0.45849505,
-	0.45917654,
-	0.45985776,
-	0.46053872,
-	0.4612194,
-	0.4618998,
-	0.46257994,
-	0.4632598,
-	0.46393937,
-	0.46461868,
-	0.46529773,
-	0.4659765,
-	0.466655,
-	0.4673332,
-	0.46801114,
-	0.46868882,
-	0.46936622,
-	0.47004333,
-	0.47072017,
-	0.47139674,
-	0.47207302,
-	0.47274902,
-	0.47342476,
-	0.4741002,
-	0.47477537,
-	0.47545028,
-	0.47612488,
-	0.47679922,
-	0.4774733,
-	0.47814706,
-	0.47882056,
-	0.47949377,
-	0.48016667,
-	0.48083934,
-	0.48151168,
-	0.48218378,
-	0.48285556,
-	0.48352706,
-	0.4841983,
-	0.48486924,
-	0.4855399,
-	0.4862103,
-	0.48688036,
-	0.48755017,
-	0.48821968,
-	0.4888889,
-	0.48955783,
-	0.49022648,
-	0.49089485,
-	0.4915629,
-	0.4922307,
-	0.4928982,
-	0.4935654,
-	0.4942323,
-	0.49489895,
-	0.49556527,
-	0.4962313,
-	0.49689704,
-	0.4975625,
-	0.49822766,
-	0.49889255,
-	0.4995571,
-	0.5002214,
-	0.50088537,
-	0.50154907,
-	0.50221246,
-	0.50287557,
-	0.50353837,
-	0.5042009,
-	0.5048631,
-	0.50552505,
-	0.50618666,
-	0.506848,
-	0.507509,
-	0.5081697,
-	0.50883013,
-	0.50949025,
-	0.5101501,
-	0.5108096,
-	0.5114688,
-	0.51212776,
-	0.5127864,
-	0.5134447,
-	0.51410276,
-	0.51476043,
-	0.5154179,
-	0.516075,
-	0.5167318,
-	0.5173883,
-	0.51804453,
-	0.5187004,
-	0.519356,
-	0.52001125,
-	0.52066624,
-	0.52132094,
-	0.5219753,
-	0.5226294,
-	0.5232831,
-	0.52393657,
-	0.52458966,
-	0.5252425,
-	0.525895,
-	0.52654725,
-	0.52719915,
-	0.52785075,
-	0.528502,
-	0.529153,
-	0.52980363,
-	0.530454,
-	0.531104,
-	0.5317537,
-	0.5324031,
-	0.5330522,
-	0.533701,
-	0.53434944,
-	0.53499764,
-	0.5356455,
-	0.53629297,
-	0.53694016,
-	0.53758705,
-	0.53823364,
-	0.53887993,
-	0.53952587,
-	0.54017144,
-	0.5408168,
-	0.54146177,
-	0.54210645,
-	0.5427508,
-	0.5433948,
-	0.54403853,
-	0.5446819,
-	0.545325,
-	0.54596776,
-	0.5466102,
-	0.5472523,
-	0.54789406,
-	0.5485355,
-	0.54917663,
-	0.5498175,
-	0.55045795,
-	0.55109817,
-	0.55173796,
-	0.5523775,
-	0.5530167,
-	0.55365556,
-	0.5542941,
-	0.55493236,
-	0.55557024,
-	0.5562078,
-	0.556845,
-	0.55748194,
-	0.5581185,
-	0.5587548,
-	0.5593907,
-	0.5600263,
-	0.56066155,
-	0.5612965,
-	0.56193113,
-	0.5625654,
-	0.56319934,
-	0.56383294,
-	0.56446624,
-	0.5650992,
-	0.5657318,
-	0.5663641,
-	0.56699604,
-	0.56762767,
-	0.56825894,
-	0.5688899,
-	0.56952053,
-	0.5701508,
-	0.57078075,
-	0.57141036,
-	0.5720396,
-	0.57266855,
-	0.57329714,
-	0.57392544,
-	0.5745534,
-	0.57518095,
-	0.57580817,
-	0.5764351,
-	0.57706165,
-	0.5776879,
-	0.57831377,
-	0.5789393,
-	0.5795646,
-	0.5801894,
-	0.58081394,
-	0.5814381,
-	0.582062,
-	0.5826855,
-	0.58330864,
-	0.58393145,
-	0.58455396,
-	0.58517605,
-	0.58579785,
-	0.5864193,
-	0.58704036,
-	0.58766115,
-	0.5882816,
-	0.5889016,
-	0.5895213,
-	0.5901407,
-	0.5907597,
-	0.5913784,
-	0.59199667,
-	0.59261465,
-	0.5932323,
-	0.5938496,
-	0.5944665,
-	0.59508306,
-	0.5956993,
-	0.5963152,
-	0.5969307,
-	0.59754586,
-	0.5981607,
-	0.5987752,
-	0.5993893,
-	0.60000306,
-	0.60061646,
-	0.60122955,
-	0.6018422,
-	0.6024546,
-	0.6030666,
-	0.6036782,
-	0.60428953,
-	0.6049005,
-	0.60551107,
-	0.60612124,
-	0.6067311,
-	0.60734063,
-	0.6079498,
-	0.6085586,
-	0.60916704,
-	0.60977507,
-	0.6103828,
-	0.61099017,
-	0.6115972,
-	0.6122038,
-	0.6128101,
-	0.613416,
-	0.61402154,
-	0.61462677,
-	0.6152316,
-	0.6158361,
-	0.6164402,
-	0.6170439,
-	0.6176473,
-	0.6182503,
-	0.618853,
-	0.6194553,
-	0.6200572,
-	0.62065876,
-	0.62126,
-	0.6218608,
-	0.62246126,
-	0.62306136,
-	0.6236611,
-	0.6242605,
-	0.6248595,
-	0.6254581,
-	0.6260564,
-	0.62665427,
-	0.6272518,
-	0.627849,
-	0.62844574,
-	0.6290422,
-	0.62963825,
-	0.63023394,
-	0.6308292,
-	0.6314242,
-	0.63201874,
-	0.63261294,
-	0.6332068,
-	0.6338002,
-	0.6343933,
-	0.634986,
-	0.63557833,
-	0.63617027,
-	0.63676184,
-	0.63735306,
-	0.6379439,
-	0.63853437,
-	0.63912445,
-	0.6397142,
-	0.6403035,
-	0.64089245,
-	0.64148104,
-	0.6420692,
-	0.64265704,
-	0.6432445,
-	0.64383155,
-	0.64441824,
-	0.6450045,
-	0.6455905,
-	0.64617604,
-	0.6467612,
-	0.64734596,
-	0.6479304,
-	0.6485144,
-	0.64909804,
-	0.6496813,
-	0.6502642,
-	0.65084666,
-	0.6514288,
-	0.65201056,
-	0.6525919,
-	0.65317285,
-	0.6537534,
-	0.6543336,
-	0.6549134,
-	0.65549284,
-	0.6560719,
-	0.65665054,
-	0.6572288,
-	0.6578067,
-	0.6583842,
-	0.6589613,
-	0.65953803,
-	0.66011435,
-	0.6606903,
-	0.66126585,
-	0.661841,
-	0.6624158,
-	0.66299015,
-	0.66356415,
-	0.6641378,
-	0.664711,
-	0.6652838,
-	0.66585624,
-	0.66642827,
-	0.66699994,
-	0.6675712,
-	0.668142,
-	0.6687125,
-	0.6692826,
-	0.66985226,
-	0.67042154,
-	0.67099047,
-	0.671559,
-	0.67212707,
-	0.67269474,
-	0.67326206,
-	0.673829,
-	0.6743955,
-	0.6749616,
-	0.6755274,
-	0.6760927,
-	0.6766576,
-	0.6772222,
-	0.6777863,
-	0.67835003,
-	0.67891335,
-	0.6794763,
-	0.68003887,
-	0.680601,
-	0.6811627,
-	0.6817241,
-	0.682285,
-	0.68284553,
-	0.6834057,
-	0.6839654,
-	0.6845247,
-	0.6850837,
-	0.6856422,
-	0.6862003,
-	0.68675804,
-	0.68731534,
-	0.68787223,
-	0.68842876,
-	0.6889849,
-	0.68954057,
-	0.69009584,
-	0.6906507,
-	0.6912052,
-	0.6917592,
-	0.6923129,
-	0.69286615,
-	0.69341904,
-	0.69397146,
-	0.6945235,
-	0.6950751,
-	0.6956263,
-	0.6961771,
-	0.6967275,
-	0.6972775,
-	0.6978271,
-	0.69837624,
-	0.698925,
-	0.6994733,
-	0.70002127,
-	0.7005688,
-	0.7011159,
-	0.7016626,
-	0.7022089,
-	0.70275474,
-	0.7033002,
-	0.70384526,
-	0.70438987,
-	0.70493406,
-	0.7054779,
-	0.70602125,
-	0.70656425,
-	0.70710677,
-	0.70764893,
-	0.7081906,
-	0.70873195,
-	0.7092728,
-	0.7098133,
-	0.7103534,
-	0.710893,
-	0.7114322,
-	0.711971,
-	0.7125094,
-	0.7130473,
-	0.71358484,
-	0.714122,
-	0.7146587,
-	0.71519494,
-	0.71573085,
-	0.7162663,
-	0.7168013,
-	0.7173359,
-	0.71787006,
-	0.7184038,
-	0.7189371,
-	0.71947,
-	0.72000253,
-	0.72053456,
-	0.7210662,
-	0.72159743,
-	0.7221282,
-	0.7226586,
-	0.72318846,
-	0.723718,
-	0.7242471,
-	0.72477573,
-	0.72530395,
-	0.7258318,
-	0.7263591,
-	0.7268861,
-	0.72741264,
-	0.7279387,
-	0.72846437,
-	0.7289896,
-	0.7295144,
-	0.7300388,
-	0.73056275,
-	0.7310863,
-	0.7316094,
-	0.732132,
-	0.7326543,
-	0.73317605,
-	0.7336974,
-	0.73421836,
-	0.7347389,
-	0.73525894,
-	0.73577857,
-	0.7362978,
-	0.7368166,
-	0.7373349,
-	0.7378528,
-	0.7383703,
-	0.7388873,
-	0.7394039,
-	0.7399201,
-	0.74043584,
-	0.7409511,
-	0.741466,
-	0.74198043,
-	0.7424944,
-	0.74300796,
-	0.7435211,
-	0.74403375,
-	0.744546,
-	0.74505776,
-	0.74556917,
-	0.7460801,
-	0.74659055,
-	0.7471006,
-	0.7476102,
-	0.74811935,
-	0.7486281,
-	0.7491364,
-	0.7496442,
-	0.75015163,
-	0.75065863,
-	0.75116515,
-	0.7516712,
-	0.7521768,
-	0.75268203,
-	0.7531868,
-	0.75369114,
-	0.754195,
-	0.7546984,
-	0.7552014,
-	0.7557039,
-	0.756206,
-	0.75670767,
-	0.7572088,
-	0.7577096,
-	0.7582099,
-	0.7587098,
-	0.7592092,
-	0.75970817,
-	0.7602067,
-	0.76070476,
-	0.7612024,
-	0.76169956,
-	0.7621963,
-	0.7626926,
-	0.7631884,
-	0.7636838,
-	0.76417875,
-	0.76467323,
-	0.76516724,
-	0.7656609,
-	0.766154,
-	0.7666467,
-	0.7671389,
-	0.7676307,
-	0.768122,
-	0.7686129,
-	0.76910335,
-	0.7695933,
-	0.77008283,
-	0.7705719,
-	0.7710605,
-	0.7715487,
-	0.7720364,
-	0.77252364,
-	0.77301043,
-	0.7734968,
-	0.7739827,
-	0.7744681,
-	0.7749531,
-	0.77543765,
-	0.7759217,
-	0.77640533,
-	0.7768885,
-	0.77737117,
-	0.7778534,
-	0.7783352,
-	0.7788165,
-	0.77929735,
-	0.77977777,
-	0.78025776,
-	0.7807372,
-	0.78121626,
-	0.7816948,
-	0.7821729,
-	0.7826506,
-	0.7831278,
-	0.7836045,
-	0.7840808,
-	0.78455657,
-	0.7850319,
-	0.78550684,
-	0.78598124,
-	0.7864552,
-	0.7869287,
-	0.78740174,
-	0.78787434,
-	0.7883464,
-	0.78881806,
-	0.78928924,
-	0.78976,
-	0.7902302,
-	0.7907,
-	0.79116935,
-	0.7916382,
-	0.79210657,
-	0.7925745,
-	0.79304194,
-	0.79350895,
-	0.7939755,
-	0.7944415,
-	0.79490715,
-	0.79537225,
-	0.7958369,
-	0.79630107,
-	0.7967648,
-	0.79722804,
-	0.79769087,
-	0.79815316,
-	0.798615,
-	0.7990764,
-	0.79953724,
-	0.7999977,
-	0.80045766,
-	0.80091715,
-	0.80137616,
-	0.8018347,
-	0.8022928,
-	0.8027504,
-	0.8032075,
-	0.8036642,
-	0.80412036,
-	0.8045761,
-	0.80503136,
-	0.8054861,
-	0.8059404,
-	0.8063942,
-	0.8068476,
-	0.80730045,
-	0.80775285,
-	0.8082047,
-	0.80865616,
-	0.8091071,
-	0.8095576,
-	0.81000763,
-	0.81045717,
-	0.81090623,
-	0.8113549,
-	0.811803,
-	0.8122506,
-	0.81269777,
-	0.8131444,
-	0.8135906,
-	0.8140363,
-	0.81448156,
-	0.8149263,
-	0.8153706,
-	0.81581444,
-	0.8162577,
-	0.8167006,
-	0.8171429,
-	0.8175848,
-	0.8180262,
-	0.81846714,
-	0.81890756,
-	0.8193475,
-	0.81978697,
-	0.82022595,
-	0.82066447,
-	0.8211025,
-	0.82154006,
-	0.82197714,
-	0.8224137,
-	0.8228498,
-	0.8232854,
-	0.8237205,
-	0.82415515,
-	0.8245893,
-	0.825023,
-	0.82545614,
-	0.8258889,
-	0.82632107,
-	0.8267528,
-	0.827184,
-	0.8276148,
-	0.82804507,
-	0.8284748,
-	0.8289041,
-	0.82933295,
-	0.8297612,
-	0.83018905,
-	0.8306164,
-	0.83104324,
-	0.8314696,
-	0.8318955,
-	0.83232087,
-	0.8327458,
-	0.8331702,
-	0.8335941,
-	0.8340175,
-	0.8344404,
-	0.8348629,
-	0.8352848,
-	0.8357063,
-	0.8361273,
-	0.83654773,
-	0.8369677,
-	0.8373872,
-	0.8378062,
-	0.8382247,
-	0.8386427,
-	0.83906025,
-	0.83947724,
-	0.8398938,
-	0.84030986,
-	0.84072536,
-	0.84114045,
-	0.841555,
-	0.841969,
-	0.8423826,
-	0.84279567,
-	0.84320825,
-	0.8436203,
-	0.8440319,
-	0.84444296,
-	0.8448536,
-	0.84526366,
-	0.84567326,
-	0.8460823,
-	0.8464909,
-	0.84689903,
-	0.8473066,
-	0.84771377,
-	0.84812033,
-	0.8485265,
-	0.848932,
-	0.84933716,
-	0.84974176,
-	0.8501459,
-	0.85054946,
-	0.85095257,
-	0.8513552,
-	0.8517573,
-	0.8521589,
-	0.85256,
-	0.8529606,
-	0.8533607,
-	0.8537603,
-	0.8541594,
-	0.854558,
-	0.8549561,
-	0.85535365,
-	0.85575074,
-	0.85614735,
-	0.8565434,
-	0.85693896,
-	0.857334,
-	0.8577286,
-	0.85812265,
-	0.8585162,
-	0.85890925,
-	0.8593018,
-	0.8596939,
-	0.86008537,
-	0.86047643,
-	0.86086696,
-	0.86125696,
-	0.8616465,
-	0.86203545,
-	0.86242396,
-	0.8628119,
-	0.8631994,
-	0.86358637,
-	0.86397284,
-	0.8643588,
-	0.86474425,
-	0.8651292,
-	0.8655136,
-	0.86589754,
-	0.866281,
-	0.8666639,
-	0.86704624,
-	0.8674281,
-	0.8678095,
-	0.86819035,
-	0.8685707,
-	0.86895055,
-	0.86932987,
-	0.86970866,
-	0.87008697,
-	0.8704648,
-	0.87084204,
-	0.87121886,
-	0.8715951,
-	0.87197083,
-	0.87234604,
-	0.8727208,
-	0.873095,
-	0.8734687,
-	0.8738418,
-	0.87421453,
-	0.87458664,
-	0.8749583,
-	0.8753294,
-	0.8757,
-	0.8760701,
-	0.8764397,
-	0.8768087,
-	0.87717724,
-	0.8775453,
-	0.8779128,
-	0.8782798,
-	0.87864625,
-	0.8790122,
-	0.87937766,
-	0.8797426,
-	0.880107,
-	0.8804709,
-	0.8808343,
-	0.8811971,
-	0.88155943,
-	0.8819213,
-	0.88228256,
-	0.88264334,
-	0.8830036,
-	0.88336337,
-	0.88372254,
-	0.88408124,
-	0.88443947,
-	0.8847971,
-	0.88515425,
-	0.88551086,
-	0.88586694,
-	0.88622254,
-	0.8865776,
-	0.88693213,
-	0.8872861,
-	0.88763964,
-	0.88799256,
-	0.88834506,
-	0.88869697,
-	0.88904834,
-	0.88939923,
-	0.8897496,
-	0.8900994,
-	0.89044875,
-	0.8907975,
-	0.89114577,
-	0.8914935,
-	0.8918407,
-	0.8921874,
-	0.89253354,
-	0.8928792,
-	0.8932243,
-	0.8935689,
-	0.893913,
-	0.8942565,
-	0.8945995,
-	0.894942,
-	0.89528394,
-	0.89562535,
-	0.89596623,
-	0.89630663,
-	0.8966465,
-	0.89698577,
-	0.89732456,
-	0.8976628,
-	0.8980006,
-	0.8983378,
-	0.8986745,
-	0.8990106,
-	0.89934623,
-	0.8996813,
-	0.9000159,
-	0.9003499,
-	0.9006834,
-	0.9010164,
-	0.9013488,
-	0.90168077,
-	0.90201217,
-	0.902343,
-	0.9026733,
-	0.9030031,
-	0.90333235,
-	0.9036611,
-	0.9039893,
-	0.90431696,
-	0.9046441,
-	0.9049707,
-	0.90529674,
-	0.9056223,
-	0.90594727,
-	0.90627176,
-	0.9065957,
-	0.9069191,
-	0.907242,
-	0.90756434,
-	0.9078861,
-	0.90820736,
-	0.9085281,
-	0.90884835,
-	0.909168,
-	0.9094871,
-	0.9098057,
-	0.91012377,
-	0.9104413,
-	0.91075826,
-	0.91107476,
-	0.91139066,
-	0.91170603,
-	0.91202086,
-	0.91233516,
-	0.912649,
-	0.9129622,
-	0.9132749,
-	0.91358703,
-	0.91389865,
-	0.9142098,
-	0.9145203,
-	0.9148303,
-	0.9151398,
-	0.9154487,
-	0.9157571,
-	0.916065,
-	0.9163723,
-	0.9166791,
-	0.9169853,
-	0.917291,
-	0.91759616,
-	0.9179008,
-	0.91820484,
-	0.9185084,
-	0.9188114,
-	0.9191139,
-	0.9194158,
-	0.91971713,
-	0.92001796,
-	0.9203183,
-	0.92061806,
-	0.9209172,
-	0.9212159,
-	0.92151403,
-	0.92181164,
-	0.92210865,
-	0.9224052,
-	0.9227011,
-	0.9229965,
-	0.92329144,
-	0.9235858,
-	0.9238795,
-	0.92417276,
-	0.9244655,
-	0.9247576,
-	0.92504925,
-	0.9253403,
-	0.9256308,
-	0.9259208,
-	0.9262102,
-	0.9264991,
-	0.9267875,
-	0.92707527,
-	0.9273625,
-	0.92764926,
-	0.9279354,
-	0.928221,
-	0.9285061,
-	0.9287906,
-	0.9290746,
-	0.929358,
-	0.9296409,
-	0.92992324,
-	0.93020505,
-	0.93048626,
-	0.93076694,
-	0.9310471,
-	0.9313267,
-	0.93160576,
-	0.9318843,
-	0.9321622,
-	0.9324396,
-	0.9327165,
-	0.9329928,
-	0.93326855,
-	0.9335438,
-	0.93381846,
-	0.9340925,
-	0.9343661,
-	0.93463916,
-	0.9349116,
-	0.9351835,
-	0.93545485,
-	0.9357257,
-	0.93599594,
-	0.93626565,
-	0.9365348,
-	0.93680346,
-	0.9370715,
-	0.937339,
-	0.937606,
-	0.93787235,
-	0.93813825,
-	0.93840355,
-	0.9386683,
-	0.9389325,
-	0.9391961,
-	0.9394592,
-	0.93972176,
-	0.9399837,
-	0.9402452,
-	0.94050604,
-	0.9407664,
-	0.94102615,
-	0.9412854,
-	0.94154406,
-	0.9418022,
-	0.94205976,
-	0.9423168,
-	0.9425732,
-	0.9428291,
-	0.9430844,
-	0.9433392,
-	0.94359344,
-	0.9438471,
-	0.94410026,
-	0.9443528,
-	0.9446048,
-	0.9448563,
-	0.9451072,
-	0.94535756,
-	0.9456073,
-	0.9458566,
-	0.94610524,
-	0.9463534,
-	0.9466009,
-	0.9468479,
-	0.9470944,
-	0.94734025,
-	0.9475856,
-	0.9478304,
-	0.9480746,
-	0.94831824,
-	0.9485614,
-	0.9488039,
-	0.9490459,
-	0.9492873,
-	0.94952816,
-	0.9497685,
-	0.9500083,
-	0.95024747,
-	0.95048606,
-	0.9507241,
-	0.95096165,
-	0.95119864,
-	0.951435,
-	0.9516709,
-	0.95190614,
-	0.95214087,
-	0.952375,
-	0.9526086,
-	0.95284164,
-	0.9530741,
-	0.953306,
-	0.9535374,
-	0.9537682,
-	0.95399845,
-	0.9542281,
-	0.9544572,
-	0.95468575,
-	0.95491374,
-	0.9551412,
-	0.95536804,
-	0.95559436,
-	0.9558201,
-	0.95604527,
-	0.95626986,
-	0.9564939,
-	0.95671743,
-	0.95694035,
-	0.9571627,
-	0.9573845,
-	0.9576057,
-	0.95782644,
-	0.9580465,
-	0.9582661,
-	0.95848507,
-	0.95870346,
-	0.9589213,
-	0.95913863,
-	0.95935535,
-	0.95957154,
-	0.95978713,
-	0.9600021,
-	0.96021664,
-	0.9604305,
-	0.9606439,
-	0.9608566,
-	0.96106887,
-	0.96128047,
-	0.9614916,
-	0.96170205,
-	0.96191204,
-	0.9621214,
-	0.9623302,
-	0.9625385,
-	0.96274614,
-	0.96295327,
-	0.9631598,
-	0.9633658,
-	0.9635712,
-	0.96377605,
-	0.9639804,
-	0.96418405,
-	0.96438724,
-	0.9645898,
-	0.96479183,
-	0.96499324,
-	0.9651941,
-	0.96539444,
-	0.9655942,
-	0.9657934,
-	0.965992,
-	0.96619,
-	0.96638745,
-	0.9665844,
-	0.9667807,
-	0.96697646,
-	0.96717167,
-	0.9673663,
-	0.96756035,
-	0.9677538,
-	0.96794677,
-	0.9681391,
-	0.96833086,
-	0.9685221,
-	0.96871275,
-	0.9689028,
-	0.9690923,
-	0.96928126,
-	0.9694696,
-	0.96965736,
-	0.9698446,
-	0.97003126,
-	0.97021735,
-	0.97040284,
-	0.9705878,
-	0.97077215,
-	0.9709559,
-	0.97113913,
-	0.9713218,
-	0.9715039,
-	0.9716854,
-	0.9718663,
-	0.97204673,
-	0.9722265,
-	0.97240573,
-	0.97258437,
-	0.97276247,
-	0.97293997,
-	0.9731169,
-	0.97329324,
-	0.973469,
-	0.97364426,
-	0.9738189,
-	0.97399294,
-	0.97416645,
-	0.97433937,
-	0.97451174,
-	0.9746835,
-	0.9748547,
-	0.97502536,
-	0.9751954,
-	0.97536486,
-	0.9755338,
-	0.9757021,
-	0.9758699,
-	0.9760371,
-	0.9762037,
-	0.97636974,
-	0.9765352,
-	0.97670007,
-	0.9768644,
-	0.97702813,
-	0.9771913,
-	0.9773539,
-	0.97751594,
-	0.97767735,
-	0.9778382,
-	0.9779985,
-	0.97815824,
-	0.9783174,
-	0.9784759,
-	0.97863394,
-	0.97879136,
-	0.9789482,
-	0.97910446,
-	0.97926015,
-	0.97941524,
-	0.9795698,
-	0.97972375,
-	0.9798771,
-	0.9800299,
-	0.9801821,
-	0.9803338,
-	0.98048484,
-	0.98063534,
-	0.98078525,
-	0.9809346,
-	0.9810834,
-	0.9812316,
-	0.9813792,
-	0.98152626,
-	0.9816727,
-	0.98181856,
-	0.9819639,
-	0.9821086,
-	0.9822527,
-	0.9823963,
-	0.9825393,
-	0.9826817,
-	0.98282355,
-	0.9829648,
-	0.9831055,
-	0.9832456,
-	0.9833851,
-	0.983524,
-	0.9836624,
-	0.98380023,
-	0.98393744,
-	0.98407406,
-	0.9842101,
-	0.98434556,
-	0.98448044,
-	0.9846148,
-	0.9847485,
-	0.98488164,
-	0.98501426,
-	0.9851462,
-	0.98527765,
-	0.9854085,
-	0.9855387,
-	0.9856684,
-	0.9857975,
-	0.98592603,
-	0.98605394,
-	0.9861813,
-	0.9863081,
-	0.9864343,
-	0.9865599,
-	0.9866849,
-	0.9868094,
-	0.9869333,
-	0.98705655,
-	0.9871793,
-	0.9873014,
-	0.98742294,
-	0.98754394,
-	0.98766434,
-	0.98778415,
-	0.98790336,
-	0.988022,
-	0.9881401,
-	0.9882576,
-	0.9883745,
-	0.9884908,
-	0.9886065,
-	0.98872167,
-	0.9888363,
-	0.98895025,
-	0.9890637,
-	0.9891765,
-	0.98928875,
-	0.98940045,
-	0.9895115,
-	0.989622,
-	0.98973197,
-	0.9898413,
-	0.98995006,
-	0.9900582,
-	0.9901658,
-	0.9902728,
-	0.9903792,
-	0.9904851,
-	0.99059033,
-	0.990695,
-	0.9907991,
-	0.99090266,
-	0.99100554,
-	0.99110794,
-	0.9912097,
-	0.99131083,
-	0.99141145,
-	0.99151146,
-	0.9916109,
-	0.99170977,
-	0.991808,
-	0.9919057,
-	0.9920028,
-	0.9920993,
-	0.99219525,
-	0.9922906,
-	0.9923853,
-	0.99247956,
-	0.99257314,
-	0.9926661,
-	0.9927586,
-	0.9928504,
-	0.9929417,
-	0.99303234,
-	0.99312246,
-	0.9932119,
-	0.99330086,
-	0.9933892,
-	0.993477,
-	0.9935641,
-	0.99365073,
-	0.99373674,
-	0.99382216,
-	0.993907,
-	0.9939912,
-	0.9940749,
-	0.99415797,
-	0.99424046,
-	0.99432236,
-	0.99440366,
-	0.9944844,
-	0.9945646,
-	0.99464417,
-	0.99472314,
-	0.9948015,
-	0.9948793,
-	0.99495655,
-	0.9950332,
-	0.99510926,
-	0.9951847,
-	0.9952596,
-	0.9953339,
-	0.99540764,
-	0.9954808,
-	0.9955533,
-	0.99562526,
-	0.9956966,
-	0.9957674,
-	0.9958376,
-	0.99590725,
-	0.99597627,
-	0.9960447,
-	0.9961126,
-	0.9961798,
-	0.9962465,
-	0.9963126,
-	0.9963781,
-	0.99644303,
-	0.9965074,
-	0.9965711,
-	0.9966343,
-	0.9966969,
-	0.9967589,
-	0.9968203,
-	0.9968811,
-	0.9969413,
-	0.997001,
-	0.99706006,
-	0.99711853,
-	0.9971764,
-	0.99723375,
-	0.99729043,
-	0.9973466,
-	0.99740213,
-	0.9974571,
-	0.99751145,
-	0.9975652,
-	0.99761844,
-	0.99767107,
-	0.99772304,
-	0.9977745,
-	0.9978253,
-	0.99787563,
-	0.9979253,
-	0.9979744,
-	0.99802285,
-	0.9980708,
-	0.9981181,
-	0.99816483,
-	0.998211,
-	0.99825656,
-	0.99830157,
-	0.9983459,
-	0.9983897,
-	0.99843293,
-	0.99847555,
-	0.99851763,
-	0.99855906,
-	0.99859995,
-	0.99864024,
-	0.99867994,
-	0.99871904,
-	0.99875754,
-	0.99879545,
-	0.9988328,
-	0.99886954,
-	0.9989057,
-	0.9989413,
-	0.9989763,
-	0.9990107,
-	0.9990445,
-	0.99907774,
-	0.99911034,
-	0.9991424,
-	0.9991739,
-	0.99920475,
-	0.99923503,
-	0.9992648,
-	0.99929386,
-	0.99932235,
-	0.9993503,
-	0.99937767,
-	0.99940443,
-	0.9994306,
-	0.99945617,
-	0.9994812,
-	0.9995056,
-	0.9995294,
-	0.99955267,
-	0.9995753,
-	0.9995974,
-	0.9996188,
-	0.9996397,
-	0.99966,
-	0.9996797,
-	0.9996988,
-	0.99971735,
-	0.9997353,
-	0.99975264,
-	0.9997694,
-	0.9997856,
-	0.99980116,
-	0.9998162,
-	0.9998306,
-	0.99984443,
-	0.99985766,
-	0.9998703,
-	0.99988234,
-	0.99989384,
-	0.9999047,
-	0.999915,
-	0.9999247,
-	0.99993384,
-	0.99994236,
-	0.9999503,
-	0.9999576,
-	0.9999644,
-	0.9999706,
-	0.99997616,
-	0.99998116,
-	0.9999856,
-	0.9999894,
-	0.99999267,
-	0.9999953,
-	0.9999974,
-	0.9999988,
-	0.9999997,
-	1,
-	0.9999997,
-	0.9999988,
-	0.9999974,
-	0.9999953,
-	0.99999267,
-	0.9999894,
-	0.9999856,
-	0.99998116,
-	0.99997616,
-	0.9999706,
-	0.9999644,
-	0.9999576,
-	0.9999503,
-	0.99994236,
-	0.99993384,
-	0.9999247,
-	0.999915,
-	0.9999047,
-	0.99989384,
-	0.99988234,
-	0.9998703,
-	0.99985766,
-	0.99984443,
-	0.9998306,
-	0.9998162,
-	0.99980116,
-	0.9997856,
-	0.9997694,
-	0.99975264,
-	0.9997353,
-	0.99971735,
-	0.9996988,
-	0.9996797,
-	0.99966,
-	0.9996397,
-	0.9996188,
-	0.9995974,
-	0.9995753,
-	0.99955267,
-	0.9995294,
-	0.9995056,
-	0.9994812,
-	0.99945617,
-	0.9994306,
-	0.99940443,
-	0.99937767,
-	0.9993503,
-	0.99932235,
-	0.99929386,
-	0.9992648,
-	0.99923503,
-	0.99920475,
-	0.9991739,
-	0.9991424,
-	0.99911034,
-	0.99907774,
-	0.9990445,
-	0.9990107,
-	0.9989763,
-	0.9989413,
-	0.9989057,
-	0.99886954,
-	0.9988328,
-	0.99879545,
-	0.99875754,
-	0.99871904,
-	0.99867994,
-	0.99864024,
-	0.99859995,
-	0.99855906,
-	0.99851763,
-	0.99847555,
-	0.99843293,
-	0.9983897,
-	0.9983459,
-	0.99830157,
-	0.99825656,
-	0.998211,
-	0.99816483,
-	0.9981181,
-	0.9980708,
-	0.99802285,
-	0.9979744,
-	0.9979253,
-	0.99787563,
-	0.9978253,
-	0.9977745,
-	0.99772304,
-	0.99767107,
-	0.99761844,
-	0.9975652,
-	0.99751145,
-	0.9974571,
-	0.99740213,
-	0.9973466,
-	0.99729043,
-	0.99723375,
-	0.9971764,
-	0.99711853,
-	0.99706006,
-	0.997001,
-	0.9969413,
-	0.9968811,
-	0.9968203,
-	0.9967589,
-	0.9966969,
-	0.9966343,
-	0.9965711,
-	0.9965074,
-	0.99644303,
-	0.9963781,
-	0.9963126,
-	0.9962465,
-	0.9961798,
-	0.9961126,
-	0.9960447,
-	0.99597627,
-	0.99590725,
-	0.9958376,
-	0.9957674,
-	0.9956966,
-	0.99562526,
-	0.9955533,
-	0.9954808,
-	0.99540764,
-	0.9953339,
-	0.9952596,
-	0.9951847,
-	0.99510926,
-	0.9950332,
-	0.99495655,
-	0.9948793,
-	0.9948015,
-	0.99472314,
-	0.99464417,
-	0.9945646,
-	0.9944844,
-	0.99440366,
-	0.99432236,
-	0.99424046,
-	0.99415797,
-	0.9940749,
-	0.9939912,
-	0.993907,
-	0.99382216,
-	0.99373674,
-	0.99365073,
-	0.9935641,
-	0.993477,
-	0.9933892,
-	0.99330086,
-	0.9932119,
-	0.99312246,
-	0.99303234,
-	0.9929417,
-	0.9928504,
-	0.9927586,
-	0.9926661,
-	0.99257314,
-	0.99247956,
-	0.9923853,
-	0.9922906,
-	0.99219525,
-	0.9920993,
-	0.9920028,
-	0.9919057,
-	0.991808,
-	0.99170977,
-	0.9916109,
-	0.99151146,
-	0.99141145,
-	0.99131083,
-	0.9912097,
-	0.99110794,
-	0.99100554,
-	0.99090266,
-	0.9907991,
-	0.990695,
-	0.99059033,
-	0.9904851,
-	0.9903792,
-	0.9902728,
-	0.9901658,
-	0.9900582,
-	0.98995006,
-	0.9898413,
-	0.98973197,
-	0.989622,
-	0.9895115,
-	0.98940045,
-	0.98928875,
-	0.9891765,
-	0.9890637,
-	0.98895025,
-	0.9888363,
-	0.98872167,
-	0.9886065,
-	0.9884908,
-	0.9883745,
-	0.9882576,
-	0.9881401,
-	0.988022,
-	0.98790336,
-	0.98778415,
-	0.98766434,
-	0.98754394,
-	0.98742294,
-	0.9873014,
-	0.9871793,
-	0.98705655,
-	0.9869333,
-	0.9868094,
-	0.9866849,
-	0.9865599,
-	0.9864343,
-	0.9863081,
-	0.9861813,
-	0.98605394,
-	0.98592603,
-	0.9857975,
-	0.9856684,
-	0.9855387,
-	0.9854085,
-	0.98527765,
-	0.9851462,
-	0.98501426,
-	0.98488164,
-	0.9847485,
-	0.9846148,
-	0.98448044,
-	0.98434556,
-	0.9842101,
-	0.98407406,
-	0.98393744,
-	0.98380023,
-	0.9836624,
-	0.983524,
-	0.9833851,
-	0.9832456,
-	0.9831055,
-	0.9829648,
-	0.98282355,
-	0.9826817,
-	0.9825393,
-	0.9823963,
-	0.9822527,
-	0.9821086,
-	0.9819639,
-	0.98181856,
-	0.9816727,
-	0.98152626,
-	0.9813792,
-	0.9812316,
-	0.9810834,
-	0.9809346,
-	0.98078525,
-	0.98063534,
-	0.98048484,
-	0.9803338,
-	0.9801821,
-	0.9800299,
-	0.9798771,
-	0.97972375,
-	0.9795698,
-	0.97941524,
-	0.97926015,
-	0.97910446,
-	0.9789482,
-	0.97879136,
-	0.97863394,
-	0.9784759,
-	0.9783174,
-	0.97815824,
-	0.9779985,
-	0.9778382,
-	0.97767735,
-	0.97751594,
-	0.9773539,
-	0.9771913,
-	0.97702813,
-	0.9768644,
-	0.97670007,
-	0.9765352,
-	0.97636974,
-	0.9762037,
-	0.9760371,
-	0.9758699,
-	0.9757021,
-	0.9755338,
-	0.97536486,
-	0.9751954,
-	0.97502536,
-	0.9748547,
-	0.9746835,
-	0.97451174,
-	0.97433937,
-	0.97416645,
-	0.97399294,
-	0.9738189,
-	0.97364426,
-	0.973469,
-	0.97329324,
-	0.9731169,
-	0.97293997,
-	0.97276247,
-	0.97258437,
-	0.97240573,
-	0.9722265,
-	0.97204673,
-	0.9718663,
-	0.9716854,
-	0.9715039,
-	0.9713218,
-	0.97113913,
-	0.9709559,
-	0.97077215,
-	0.9705878,
-	0.97040284,
-	0.97021735,
-	0.97003126,
-	0.9698446,
-	0.96965736,
-	0.9694696,
-	0.96928126,
-	0.9690923,
-	0.9689028,
-	0.96871275,
-	0.9685221,
-	0.96833086,
-	0.9681391,
-	0.96794677,
-	0.9677538,
-	0.96756035,
-	0.9673663,
-	0.96717167,
-	0.96697646,
-	0.9667807,
-	0.9665844,
-	0.96638745,
-	0.96619,
-	0.965992,
-	0.9657934,
-	0.9655942,
-	0.96539444,
-	0.9651941,
-	0.96499324,
-	0.96479183,
-	0.9645898,
-	0.96438724,
-	0.96418405,
-	0.9639804,
-	0.96377605,
-	0.9635712,
-	0.9633658,
-	0.9631598,
-	0.96295327,
-	0.96274614,
-	0.9625385,
-	0.9623302,
-	0.9621214,
-	0.96191204,
-	0.96170205,
-	0.9614916,
-	0.96128047,
-	0.96106887,
-	0.9608566,
-	0.9606439,
-	0.9604305,
-	0.96021664,
-	0.9600021,
-	0.95978713,
-	0.95957154,
-	0.95935535,
-	0.95913863,
-	0.9589213,
-	0.95870346,
-	0.95848507,
-	0.9582661,
-	0.9580465,
-	0.95782644,
-	0.9576057,
-	0.9573845,
-	0.9571627,
-	0.95694035,
-	0.95671743,
-	0.9564939,
-	0.95626986,
-	0.95604527,
-	0.9558201,
-	0.95559436,
-	0.95536804,
-	0.9551412,
-	0.95491374,
-	0.95468575,
-	0.9544572,
-	0.9542281,
-	0.95399845,
-	0.9537682,
-	0.9535374,
-	0.953306,
-	0.9530741,
-	0.95284164,
-	0.9526086,
-	0.952375,
-	0.95214087,
-	0.95190614,
-	0.9516709,
-	0.951435,
-	0.95119864,
-	0.95096165,
-	0.9507241,
-	0.95048606,
-	0.95024747,
-	0.9500083,
-	0.9497685,
-	0.94952816,
-	0.9492873,
-	0.9490459,
-	0.9488039,
-	0.9485614,
-	0.94831824,
-	0.9480746,
-	0.9478304,
-	0.9475856,
-	0.94734025,
-	0.9470944,
-	0.9468479,
-	0.9466009,
-	0.9463534,
-	0.94610524,
-	0.9458566,
-	0.9456073,
-	0.94535756,
-	0.9451072,
-	0.9448563,
-	0.9446048,
-	0.9443528,
-	0.94410026,
-	0.9438471,
-	0.94359344,
-	0.9433392,
-	0.9430844,
-	0.9428291,
-	0.9425732,
-	0.9423168,
-	0.94205976,
-	0.9418022,
-	0.94154406,
-	0.9412854,
-	0.94102615,
-	0.9407664,
-	0.94050604,
-	0.9402452,
-	0.9399837,
-	0.93972176,
-	0.9394592,
-	0.9391961,
-	0.9389325,
-	0.9386683,
-	0.93840355,
-	0.93813825,
-	0.93787235,
-	0.937606,
-	0.937339,
-	0.9370715,
-	0.93680346,
-	0.9365348,
-	0.93626565,
-	0.93599594,
-	0.9357257,
-	0.93545485,
-	0.9351835,
-	0.9349116,
-	0.93463916,
-	0.9343661,
-	0.9340925,
-	0.93381846,
-	0.9335438,
-	0.93326855,
-	0.9329928,
-	0.9327165,
-	0.9324396,
-	0.9321622,
-	0.9318843,
-	0.93160576,
-	0.9313267,
-	0.9310471,
-	0.93076694,
-	0.93048626,
-	0.93020505,
-	0.92992324,
-	0.9296409,
-	0.929358,
-	0.9290746,
-	0.9287906,
-	0.9285061,
-	0.928221,
-	0.9279354,
-	0.92764926,
-	0.9273625,
-	0.92707527,
-	0.9267875,
-	0.9264991,
-	0.9262102,
-	0.9259208,
-	0.9256308,
-	0.9253403,
-	0.92504925,
-	0.9247576,
-	0.9244655,
-	0.92417276,
-	0.9238795,
-	0.9235858,
-	0.92329144,
-	0.9229965,
-	0.9227011,
-	0.9224052,
-	0.92210865,
-	0.92181164,
-	0.92151403,
-	0.9212159,
-	0.9209172,
-	0.92061806,
-	0.9203183,
-	0.92001796,
-	0.91971713,
-	0.9194158,
-	0.9191139,
-	0.9188114,
-	0.9185084,
-	0.91820484,
-	0.9179008,
-	0.91759616,
-	0.917291,
-	0.9169853,
-	0.9166791,
-	0.9163723,
-	0.916065,
-	0.9157571,
-	0.9154487,
-	0.9151398,
-	0.9148303,
-	0.9145203,
-	0.9142098,
-	0.91389865,
-	0.91358703,
-	0.9132749,
-	0.9129622,
-	0.912649,
-	0.91233516,
-	0.91202086,
-	0.91170603,
-	0.91139066,
-	0.91107476,
-	0.91075826,
-	0.9104413,
-	0.91012377,
-	0.9098057,
-	0.9094871,
-	0.909168,
-	0.90884835,
-	0.9085281,
-	0.90820736,
-	0.9078861,
-	0.90756434,
-	0.907242,
-	0.9069191,
-	0.9065957,
-	0.90627176,
-	0.90594727,
-	0.9056223,
-	0.90529674,
-	0.9049707,
-	0.9046441,
-	0.90431696,
-	0.9039893,
-	0.9036611,
-	0.90333235,
-	0.9030031,
-	0.9026733,
-	0.902343,
-	0.90201217,
-	0.90168077,
-	0.9013488,
-	0.9010164,
-	0.9006834,
-	0.9003499,
-	0.9000159,
-	0.8996813,
-	0.89934623,
-	0.8990106,
-	0.8986745,
-	0.8983378,
-	0.8980006,
-	0.8976628,
-	0.89732456,
-	0.89698577,
-	0.8966465,
-	0.89630663,
-	0.89596623,
-	0.89562535,
-	0.89528394,
-	0.894942,
-	0.8945995,
-	0.8942565,
-	0.893913,
-	0.8935689,
-	0.8932243,
-	0.8928792,
-	0.89253354,
-	0.8921874,
-	0.8918407,
-	0.8914935,
-	0.89114577,
-	0.8907975,
-	0.89044875,
-	0.8900994,
-	0.8897496,
-	0.88939923,
-	0.88904834,
-	0.88869697,
-	0.88834506,
-	0.88799256,
-	0.88763964,
-	0.8872861,
-	0.88693213,
-	0.8865776,
-	0.88622254,
-	0.88586694,
-	0.88551086,
-	0.88515425,
-	0.8847971,
-	0.88443947,
-	0.88408124,
-	0.88372254,
-	0.88336337,
-	0.8830036,
-	0.88264334,
-	0.88228256,
-	0.8819213,
-	0.88155943,
-	0.8811971,
-	0.8808343,
-	0.8804709,
-	0.880107,
-	0.8797426,
-	0.87937766,
-	0.8790122,
-	0.87864625,
-	0.8782798,
-	0.8779128,
-	0.8775453,
-	0.87717724,
-	0.8768087,
-	0.8764397,
-	0.8760701,
-	0.8757,
-	0.8753294,
-	0.8749583,
-	0.87458664,
-	0.87421453,
-	0.8738418,
-	0.8734687,
-	0.873095,
-	0.8727208,
-	0.87234604,
-	0.87197083,
-	0.8715951,
-	0.87121886,
-	0.87084204,
-	0.8704648,
-	0.87008697,
-	0.86970866,
-	0.86932987,
-	0.86895055,
-	0.8685707,
-	0.86819035,
-	0.8678095,
-	0.8674281,
-	0.86704624,
-	0.8666639,
-	0.866281,
-	0.86589754,
-	0.8655136,
-	0.8651292,
-	0.86474425,
-	0.8643588,
-	0.86397284,
-	0.86358637,
-	0.8631994,
-	0.8628119,
-	0.86242396,
-	0.86203545,
-	0.8616465,
-	0.86125696,
-	0.86086696,
-	0.86047643,
-	0.86008537,
-	0.8596939,
-	0.8593018,
-	0.85890925,
-	0.8585162,
-	0.85812265,
-	0.8577286,
-	0.857334,
-	0.85693896,
-	0.8565434,
-	0.85614735,
-	0.85575074,
-	0.85535365,
-	0.8549561,
-	0.854558,
-	0.8541594,
-	0.8537603,
-	0.8533607,
-	0.8529606,
-	0.85256,
-	0.8521589,
-	0.8517573,
-	0.8513552,
-	0.85095257,
-	0.85054946,
-	0.8501459,
-	0.84974176,
-	0.84933716,
-	0.848932,
-	0.8485265,
-	0.84812033,
-	0.84771377,
-	0.8473066,
-	0.84689903,
-	0.8464909,
-	0.8460823,
-	0.84567326,
-	0.84526366,
-	0.8448536,
-	0.84444296,
-	0.8440319,
-	0.8436203,
-	0.84320825,
-	0.84279567,
-	0.8423826,
-	0.841969,
-	0.841555,
-	0.84114045,
-	0.84072536,
-	0.84030986,
-	0.8398938,
-	0.83947724,
-	0.83906025,
-	0.8386427,
-	0.8382247,
-	0.8378062,
-	0.8373872,
-	0.8369677,
-	0.83654773,
-	0.8361273,
-	0.8357063,
-	0.8352848,
-	0.8348629,
-	0.8344404,
-	0.8340175,
-	0.8335941,
-	0.8331702,
-	0.8327458,
-	0.83232087,
-	0.8318955,
-	0.8314696,
-	0.83104324,
-	0.8306164,
-	0.83018905,
-	0.8297612,
-	0.82933295,
-	0.8289041,
-	0.8284748,
-	0.82804507,
-	0.8276148,
-	0.827184,
-	0.8267528,
-	0.82632107,
-	0.8258889,
-	0.82545614,
-	0.825023,
-	0.8245893,
-	0.82415515,
-	0.8237205,
-	0.8232854,
-	0.8228498,
-	0.8224137,
-	0.82197714,
-	0.82154006,
-	0.8211025,
-	0.82066447,
-	0.82022595,
-	0.81978697,
-	0.8193475,
-	0.81890756,
-	0.81846714,
-	0.8180262,
-	0.8175848,
-	0.8171429,
-	0.8167006,
-	0.8162577,
-	0.81581444,
-	0.8153706,
-	0.8149263,
-	0.81448156,
-	0.8140363,
-	0.8135906,
-	0.8131444,
-	0.81269777,
-	0.8122506,
-	0.811803,
-	0.8113549,
-	0.81090623,
-	0.81045717,
-	0.81000763,
-	0.8095576,
-	0.8091071,
-	0.80865616,
-	0.8082047,
-	0.80775285,
-	0.80730045,
-	0.8068476,
-	0.8063942,
-	0.8059404,
-	0.8054861,
-	0.80503136,
-	0.8045761,
-	0.80412036,
-	0.8036642,
-	0.8032075,
-	0.8027504,
-	0.8022928,
-	0.8018347,
-	0.80137616,
-	0.80091715,
-	0.80045766,
-	0.7999977,
-	0.79953724,
-	0.7990764,
-	0.798615,
-	0.79815316,
-	0.79769087,
-	0.79722804,
-	0.7967648,
-	0.79630107,
-	0.7958369,
-	0.79537225,
-	0.79490715,
-	0.7944415,
-	0.7939755,
-	0.79350895,
-	0.79304194,
-	0.7925745,
-	0.79210657,
-	0.7916382,
-	0.79116935,
-	0.7907,
-	0.7902302,
-	0.78976,
-	0.78928924,
-	0.78881806,
-	0.7883464,
-	0.78787434,
-	0.78740174,
-	0.7869287,
-	0.7864552,
-	0.78598124,
-	0.78550684,
-	0.7850319,
-	0.78455657,
-	0.7840808,
-	0.7836045,
-	0.7831278,
-	0.7826506,
-	0.7821729,
-	0.7816948,
-	0.78121626,
-	0.7807372,
-	0.78025776,
-	0.77977777,
-	0.77929735,
-	0.7788165,
-	0.7783352,
-	0.7778534,
-	0.77737117,
-	0.7768885,
-	0.77640533,
-	0.7759217,
-	0.77543765,
-	0.7749531,
-	0.7744681,
-	0.7739827,
-	0.7734968,
-	0.77301043,
-	0.77252364,
-	0.7720364,
-	0.7715487,
-	0.7710605,
-	0.7705719,
-	0.77008283,
-	0.7695933,
-	0.76910335,
-	0.7686129,
-	0.768122,
-	0.7676307,
-	0.7671389,
-	0.7666467,
-	0.766154,
-	0.7656609,
-	0.76516724,
-	0.76467323,
-	0.76417875,
-	0.7636838,
-	0.7631884,
-	0.7626926,
-	0.7621963,
-	0.76169956,
-	0.7612024,
-	0.76070476,
-	0.7602067,
-	0.75970817,
-	0.7592092,
-	0.7587098,
-	0.7582099,
-	0.7577096,
-	0.7572088,
-	0.75670767,
-	0.756206,
-	0.7557039,
-	0.7552014,
-	0.7546984,
-	0.754195,
-	0.75369114,
-	0.7531868,
-	0.75268203,
-	0.7521768,
-	0.7516712,
-	0.75116515,
-	0.75065863,
-	0.75015163,
-	0.7496442,
-	0.7491364,
-	0.7486281,
-	0.74811935,
-	0.7476102,
-	0.7471006,
-	0.74659055,
-	0.7460801,
-	0.74556917,
-	0.74505776,
-	0.744546,
-	0.74403375,
-	0.7435211,
-	0.74300796,
-	0.7424944,
-	0.74198043,
-	0.741466,
-	0.7409511,
-	0.74043584,
-	0.7399201,
-	0.7394039,
-	0.7388873,
-	0.7383703,
-	0.7378528,
-	0.7373349,
-	0.7368166,
-	0.7362978,
-	0.73577857,
-	0.73525894,
-	0.7347389,
-	0.73421836,
-	0.7336974,
-	0.73317605,
-	0.7326543,
-	0.732132,
-	0.7316094,
-	0.7310863,
-	0.73056275,
-	0.7300388,
-	0.7295144,
-	0.7289896,
-	0.72846437,
-	0.7279387,
-	0.72741264,
-	0.7268861,
-	0.7263591,
-	0.7258318,
-	0.72530395,
-	0.72477573,
-	0.7242471,
-	0.723718,
-	0.72318846,
-	0.7226586,
-	0.7221282,
-	0.72159743,
-	0.7210662,
-	0.72053456,
-	0.72000253,
-	0.71947,
-	0.7189371,
-	0.7184038,
-	0.71787006,
-	0.7173359,
-	0.7168013,
-	0.7162663,
-	0.71573085,
-	0.71519494,
-	0.7146587,
-	0.714122,
-	0.71358484,
-	0.7130473,
-	0.7125094,
-	0.711971,
-	0.7114322,
-	0.710893,
-	0.7103534,
-	0.7098133,
-	0.7092728,
-	0.70873195,
-	0.7081906,
-	0.70764893,
-	0.70710677,
-	0.70656425,
-	0.70602125,
-	0.7054779,
-	0.70493406,
-	0.70438987,
-	0.70384526,
-	0.7033002,
-	0.70275474,
-	0.7022089,
-	0.7016626,
-	0.7011159,
-	0.7005688,
-	0.70002127,
-	0.6994733,
-	0.698925,
-	0.69837624,
-	0.6978271,
-	0.6972775,
-	0.6967275,
-	0.6961771,
-	0.6956263,
-	0.6950751,
-	0.6945235,
-	0.69397146,
-	0.69341904,
-	0.69286615,
-	0.6923129,
-	0.6917592,
-	0.6912052,
-	0.6906507,
-	0.69009584,
-	0.68954057,
-	0.6889849,
-	0.68842876,
-	0.68787223,
-	0.68731534,
-	0.68675804,
-	0.6862003,
-	0.6856422,
-	0.6850837,
-	0.6845247,
-	0.6839654,
-	0.6834057,
-	0.68284553,
-	0.682285,
-	0.6817241,
-	0.6811627,
-	0.680601,
-	0.68003887,
-	0.6794763,
-	0.67891335,
-	0.67835003,
-	0.6777863,
-	0.6772222,
-	0.6766576,
-	0.6760927,
-	0.6755274,
-	0.6749616,
-	0.6743955,
-	0.673829,
-	0.67326206,
-	0.67269474,
-	0.67212707,
-	0.671559,
-	0.67099047,
-	0.67042154,
-	0.66985226,
-	0.6692826,
-	0.6687125,
-	0.668142,
-	0.6675712,
-	0.66699994,
-	0.66642827,
-	0.66585624,
-	0.6652838,
-	0.664711,
-	0.6641378,
-	0.66356415,
-	0.66299015,
-	0.6624158,
-	0.661841,
-	0.66126585,
-	0.6606903,
-	0.66011435,
-	0.65953803,
-	0.6589613,
-	0.6583842,
-	0.6578067,
-	0.6572288,
-	0.65665054,
-	0.6560719,
-	0.65549284,
-	0.6549134,
-	0.6543336,
-	0.6537534,
-	0.65317285,
-	0.6525919,
-	0.65201056,
-	0.6514288,
-	0.65084666,
-	0.6502642,
-	0.6496813,
-	0.64909804,
-	0.6485144,
-	0.6479304,
-	0.64734596,
-	0.6467612,
-	0.64617604,
-	0.6455905,
-	0.6450045,
-	0.64441824,
-	0.64383155,
-	0.6432445,
-	0.64265704,
-	0.6420692,
-	0.64148104,
-	0.64089245,
-	0.6403035,
-	0.6397142,
-	0.63912445,
-	0.63853437,
-	0.6379439,
-	0.63735306,
-	0.63676184,
-	0.63617027,
-	0.63557833,
-	0.634986,
-	0.6343933,
-	0.6338002,
-	0.6332068,
-	0.63261294,
-	0.63201874,
-	0.6314242,
-	0.6308292,
-	0.63023394,
-	0.62963825,
-	0.6290422,
-	0.62844574,
-	0.627849,
-	0.6272518,
-	0.62665427,
-	0.6260564,
-	0.6254581,
-	0.6248595,
-	0.6242605,
-	0.6236611,
-	0.62306136,
-	0.62246126,
-	0.6218608,
-	0.62126,
-	0.62065876,
-	0.6200572,
-	0.6194553,
-	0.618853,
-	0.6182503,
-	0.6176473,
-	0.6170439,
-	0.6164402,
-	0.6158361,
-	0.6152316,
-	0.61462677,
-	0.61402154,
-	0.613416,
-	0.6128101,
-	0.6122038,
-	0.6115972,
-	0.61099017,
-	0.6103828,
-	0.60977507,
-	0.60916704,
-	0.6085586,
-	0.6079498,
-	0.60734063,
-	0.6067311,
-	0.60612124,
-	0.60551107,
-	0.6049005,
-	0.60428953,
-	0.6036782,
-	0.6030666,
-	0.6024546,
-	0.6018422,
-	0.60122955,
-	0.60061646,
-	0.60000306,
-	0.5993893,
-	0.5987752,
-	0.5981607,
-	0.59754586,
-	0.5969307,
-	0.5963152,
-	0.5956993,
-	0.59508306,
-	0.5944665,
-	0.5938496,
-	0.5932323,
-	0.59261465,
-	0.59199667,
-	0.5913784,
-	0.5907597,
-	0.5901407,
-	0.5895213,
-	0.5889016,
-	0.5882816,
-	0.58766115,
-	0.58704036,
-	0.5864193,
-	0.58579785,
-	0.58517605,
-	0.58455396,
-	0.58393145,
-	0.58330864,
-	0.5826855,
-	0.582062,
-	0.5814381,
-	0.58081394,
-	0.5801894,
-	0.5795646,
-	0.5789393,
-	0.57831377,
-	0.5776879,
-	0.57706165,
-	0.5764351,
-	0.57580817,
-	0.57518095,
-	0.5745534,
-	0.57392544,
-	0.57329714,
-	0.57266855,
-	0.5720396,
-	0.57141036,
-	0.57078075,
-	0.5701508,
-	0.56952053,
-	0.5688899,
-	0.56825894,
-	0.56762767,
-	0.56699604,
-	0.5663641,
-	0.5657318,
-	0.5650992,
-	0.56446624,
-	0.56383294,
-	0.56319934,
-	0.5625654,
-	0.56193113,
-	0.5612965,
-	0.56066155,
-	0.5600263,
-	0.5593907,
-	0.5587548,
-	0.5581185,
-	0.55748194,
-	0.556845,
-	0.5562078,
-	0.55557024,
-	0.55493236,
-	0.5542941,
-	0.55365556,
-	0.5530167,
-	0.5523775,
-	0.55173796,
-	0.55109817,
-	0.55045795,
-	0.5498175,
-	0.54917663,
-	0.5485355,
-	0.54789406,
-	0.5472523,
-	0.5466102,
-	0.54596776,
-	0.545325,
-	0.5446819,
-	0.54403853,
-	0.5433948,
-	0.5427508,
-	0.54210645,
-	0.54146177,
-	0.5408168,
-	0.54017144,
-	0.53952587,
-	0.53887993,
-	0.53823364,
-	0.53758705,
-	0.53694016,
-	0.53629297,
-	0.5356455,
-	0.53499764,
-	0.53434944,
-	0.533701,
-	0.5330522,
-	0.5324031,
-	0.5317537,
-	0.531104,
-	0.530454,
-	0.52980363,
-	0.529153,
-	0.528502,
-	0.52785075,
-	0.52719915,
-	0.52654725,
-	0.525895,
-	0.5252425,
-	0.52458966,
-	0.52393657,
-	0.5232831,
-	0.5226294,
-	0.5219753,
-	0.52132094,
-	0.52066624,
-	0.52001125,
-	0.519356,
-	0.5187004,
-	0.51804453,
-	0.5173883,
-	0.5167318,
-	0.516075,
-	0.5154179,
-	0.51476043,
-	0.51410276,
-	0.5134447,
-	0.5127864,
-	0.51212776,
-	0.5114688,
-	0.5108096,
-	0.5101501,
-	0.50949025,
-	0.50883013,
-	0.5081697,
-	0.507509,
-	0.506848,
-	0.50618666,
-	0.50552505,
-	0.5048631,
-	0.5042009,
-	0.50353837,
-	0.50287557,
-	0.50221246,
-	0.50154907,
-	0.50088537,
-	0.5002214,
-	0.4995571,
-	0.49889255,
-	0.49822766,
-	0.4975625,
-	0.49689704,
-	0.4962313,
-	0.49556527,
-	0.49489895,
-	0.4942323,
-	0.4935654,
-	0.4928982,
-	0.4922307,
-	0.4915629,
-	0.49089485,
-	0.49022648,
-	0.48955783,
-	0.4888889,
-	0.48821968,
-	0.48755017,
-	0.48688036,
-	0.4862103,
-	0.4855399,
-	0.48486924,
-	0.4841983,
-	0.48352706,
-	0.48285556,
-	0.48218378,
-	0.48151168,
-	0.48083934,
-	0.48016667,
-	0.47949377,
-	0.47882056,
-	0.47814706,
-	0.4774733,
-	0.47679922,
-	0.47612488,
-	0.47545028,
-	0.47477537,
-	0.4741002,
-	0.47342476,
-	0.47274902,
-	0.47207302,
-	0.47139674,
-	0.47072017,
-	0.47004333,
-	0.46936622,
-	0.46868882,
-	0.46801114,
-	0.4673332,
-	0.466655,
-	0.4659765,
-	0.46529773,
-	0.46461868,
-	0.46393937,
-	0.4632598,
-	0.46257994,
-	0.4618998,
-	0.4612194,
-	0.46053872,
-	0.45985776,
-	0.45917654,
-	0.45849505,
-	0.4578133,
-	0.45713127,
-	0.45644897,
-	0.4557664,
-	0.45508358,
-	0.45440048,
-	0.4537171,
-	0.45303348,
-	0.45234957,
-	0.45166543,
-	0.450981,
-	0.45029628,
-	0.44961134,
-	0.4489261,
-	0.4482406,
-	0.44755486,
-	0.44686884,
-	0.44618255,
-	0.44549602,
-	0.4448092,
-	0.44412214,
-	0.4434348,
-	0.44274724,
-	0.44205937,
-	0.44137126,
-	0.4406829,
-	0.43999428,
-	0.4393054,
-	0.43861625,
-	0.43792683,
-	0.43723717,
-	0.43654725,
-	0.4358571,
-	0.43516666,
-	0.43447596,
-	0.43378502,
-	0.43309382,
-	0.43240237,
-	0.43171066,
-	0.4310187,
-	0.4303265,
-	0.429634,
-	0.42894128,
-	0.42824832,
-	0.42755508,
-	0.4268616,
-	0.42616788,
-	0.4254739,
-	0.42477968,
-	0.4240852,
-	0.42339048,
-	0.4226955,
-	0.42200026,
-	0.4213048,
-	0.4206091,
-	0.4199131,
-	0.4192169,
-	0.41852042,
-	0.4178237,
-	0.41712677,
-	0.41642955,
-	0.41573212,
-	0.4150344,
-	0.4143365,
-	0.41363832,
-	0.41293988,
-	0.41224122,
-	0.41154233,
-	0.41084316,
-	0.4101438,
-	0.40944415,
-	0.40874428,
-	0.40804416,
-	0.4073438,
-	0.4066432,
-	0.40594238,
-	0.4052413,
-	0.40454,
-	0.40383846,
-	0.40313667,
-	0.40243465,
-	0.4017324,
-	0.40102988,
-	0.40032718,
-	0.3996242,
-	0.398921,
-	0.39821756,
-	0.3975139,
-	0.39681,
-	0.39610586,
-	0.39540148,
-	0.39469686,
-	0.39399204,
-	0.39328697,
-	0.39258167,
-	0.39187613,
-	0.39117038,
-	0.3904644,
-	0.38975817,
-	0.38905174,
-	0.38834503,
-	0.38763815,
-	0.386931,
-	0.38622364,
-	0.38551605,
-	0.38480824,
-	0.3841002,
-	0.38339192,
-	0.38268343,
-	0.38197473,
-	0.38126576,
-	0.3805566,
-	0.3798472,
-	0.3791376,
-	0.37842774,
-	0.3777177,
-	0.37700742,
-	0.3762969,
-	0.37558618,
-	0.37487522,
-	0.37416407,
-	0.37345266,
-	0.37274107,
-	0.37202924,
-	0.3713172,
-	0.37060493,
-	0.36989245,
-	0.36917976,
-	0.36846682,
-	0.36775368,
-	0.36704034,
-	0.36632678,
-	0.36561298,
-	0.364899,
-	0.3641848,
-	0.36347038,
-	0.36275572,
-	0.36204088,
-	0.3613258,
-	0.3606105,
-	0.35989505,
-	0.35917935,
-	0.3584634,
-	0.3577473,
-	0.35703096,
-	0.35631442,
-	0.35559767,
-	0.3548807,
-	0.35416353,
-	0.35344616,
-	0.35272855,
-	0.35201076,
-	0.35129276,
-	0.35057455,
-	0.34985614,
-	0.3491375,
-	0.34841868,
-	0.34769964,
-	0.34698042,
-	0.34626096,
-	0.34554133,
-	0.34482148,
-	0.34410143,
-	0.34338117,
-	0.34266073,
-	0.34194008,
-	0.34121922,
-	0.34049815,
-	0.33977687,
-	0.33905542,
-	0.33833376,
-	0.3376119,
-	0.33688986,
-	0.3361676,
-	0.33544514,
-	0.3347225,
-	0.33399966,
-	0.3332766,
-	0.33255336,
-	0.33182994,
-	0.3311063,
-	0.3303825,
-	0.32965845,
-	0.32893425,
-	0.32820985,
-	0.32748523,
-	0.32676044,
-	0.32603547,
-	0.3253103,
-	0.32458493,
-	0.32385936,
-	0.32313362,
-	0.3224077,
-	0.32168156,
-	0.32095525,
-	0.32022873,
-	0.31950203,
-	0.31877515,
-	0.3180481,
-	0.31732082,
-	0.31659338,
-	0.31586576,
-	0.31513792,
-	0.31440994,
-	0.31368175,
-	0.31295338,
-	0.3122248,
-	0.31149608,
-	0.31076714,
-	0.31003806,
-	0.30930877,
-	0.3085793,
-	0.30784965,
-	0.30711982,
-	0.3063898,
-	0.3056596,
-	0.30492923,
-	0.30419868,
-	0.30346796,
-	0.30273703,
-	0.30200595,
-	0.3012747,
-	0.30054325,
-	0.29981163,
-	0.29907984,
-	0.29834786,
-	0.2976157,
-	0.29688337,
-	0.2961509,
-	0.2954182,
-	0.29468536,
-	0.29395235,
-	0.29321915,
-	0.2924858,
-	0.29175225,
-	0.29101855,
-	0.29028466,
-	0.28955063,
-	0.28881642,
-	0.28808203,
-	0.28734747,
-	0.28661272,
-	0.28587782,
-	0.28514278,
-	0.28440753,
-	0.28367212,
-	0.28293657,
-	0.28220084,
-	0.28146493,
-	0.28072888,
-	0.27999264,
-	0.27925625,
-	0.2785197,
-	0.27778298,
-	0.27704608,
-	0.27630904,
-	0.27557182,
-	0.27483445,
-	0.2740969,
-	0.2733592,
-	0.27262136,
-	0.27188334,
-	0.27114516,
-	0.2704068,
-	0.2696683,
-	0.26892966,
-	0.26819086,
-	0.26745188,
-	0.26671275,
-	0.26597348,
-	0.26523402,
-	0.26449442,
-	0.26375467,
-	0.26301476,
-	0.2622747,
-	0.26153448,
-	0.2607941,
-	0.2600536,
-	0.25931293,
-	0.25857207,
-	0.2578311,
-	0.25708997,
-	0.25634867,
-	0.25560725,
-	0.25486565,
-	0.25412393,
-	0.25338203,
-	0.25264,
-	0.2518978,
-	0.2511555,
-	0.250413,
-	0.24967039,
-	0.24892761,
-	0.24818468,
-	0.24744162,
-	0.24669841,
-	0.24595505,
-	0.24521154,
-	0.2444679,
-	0.24372411,
-	0.24298018,
-	0.24223611,
-	0.24149188,
-	0.24074753,
-	0.24000302,
-	0.23925838,
-	0.23851359,
-	0.23776866,
-	0.2370236,
-	0.2362784,
-	0.23553306,
-	0.23478758,
-	0.23404196,
-	0.2332962,
-	0.23255031,
-	0.23180428,
-	0.2310581,
-	0.23031181,
-	0.22956537,
-	0.22881879,
-	0.22807208,
-	0.22732525,
-	0.22657827,
-	0.22583115,
-	0.22508392,
-	0.22433653,
-	0.22358903,
-	0.2228414,
-	0.22209363,
-	0.22134572,
-	0.22059768,
-	0.21984953,
-	0.21910124,
-	0.21835282,
-	0.21760428,
-	0.2168556,
-	0.2161068,
-	0.21535787,
-	0.21460882,
-	0.21385963,
-	0.21311031,
-	0.21236089,
-	0.21161133,
-	0.21086164,
-	0.21011184,
-	0.20936191,
-	0.20861185,
-	0.20786168,
-	0.20711137,
-	0.20636095,
-	0.20561041,
-	0.20485975,
-	0.20410897,
-	0.20335807,
-	0.20260704,
-	0.2018559,
-	0.20110464,
-	0.20035325,
-	0.19960175,
-	0.19885014,
-	0.1980984,
-	0.19734657,
-	0.1965946,
-	0.19584252,
-	0.19509032,
-	0.19433801,
-	0.19358559,
-	0.19283305,
-	0.1920804,
-	0.19132763,
-	0.19057475,
-	0.18982176,
-	0.18906866,
-	0.18831545,
-	0.18756212,
-	0.18680869,
-	0.18605515,
-	0.1853015,
-	0.18454774,
-	0.18379387,
-	0.18303989,
-	0.1822858,
-	0.18153161,
-	0.18077731,
-	0.1800229,
-	0.17926839,
-	0.17851377,
-	0.17775905,
-	0.17700422,
-	0.1762493,
-	0.17549425,
-	0.17473911,
-	0.17398387,
-	0.17322853,
-	0.17247309,
-	0.17171754,
-	0.17096189,
-	0.17020614,
-	0.1694503,
-	0.16869435,
-	0.16793829,
-	0.16718215,
-	0.1664259,
-	0.16566956,
-	0.16491312,
-	0.16415659,
-	0.16339995,
-	0.16264322,
-	0.1618864,
-	0.16112947,
-	0.16037245,
-	0.15961535,
-	0.15885815,
-	0.15810084,
-	0.15734346,
-	0.15658598,
-	0.1558284,
-	0.15507074,
-	0.15431297,
-	0.15355512,
-	0.15279719,
-	0.15203916,
-	0.15128104,
-	0.15052283,
-	0.14976454,
-	0.14900614,
-	0.14824767,
-	0.14748912,
-	0.14673047,
-	0.14597175,
-	0.14521292,
-	0.14445402,
-	0.14369503,
-	0.14293596,
-	0.1421768,
-	0.14141756,
-	0.14065824,
-	0.13989884,
-	0.13913934,
-	0.13837977,
-	0.13762012,
-	0.13686039,
-	0.13610058,
-	0.13534068,
-	0.1345807,
-	0.13382065,
-	0.13306053,
-	0.13230032,
-	0.13154003,
-	0.13077967,
-	0.13001922,
-	0.1292587,
-	0.1284981,
-	0.12773745,
-	0.1269767,
-	0.12621588,
-	0.12545498,
-	0.12469402,
-	0.12393297,
-	0.12317186,
-	0.12241068,
-	0.121649414,
-	0.120888084,
-	0.12012669,
-	0.119365215,
-	0.11860368,
-	0.11784206,
-	0.11708038,
-	0.11631863,
-	0.115556814,
-	0.114794925,
-	0.11403298,
-	0.11327095,
-	0.11250886,
-	0.11174671,
-	0.11098449,
-	0.110222206,
-	0.109459855,
-	0.108697444,
-	0.10793497,
-	0.10717242,
-	0.10640982,
-	0.105647154,
-	0.10488442,
-	0.10412163,
-	0.10335878,
-	0.102595866,
-	0.1018329,
-	0.10106986,
-	0.10030677,
-	0.099543616,
-	0.09878041,
-	0.09801714,
-	0.097253814,
-	0.09649043,
-	0.09572699,
-	0.0949635,
-	0.09419994,
-	0.09343634,
-	0.092672676,
-	0.091908954,
-	0.09114519,
-	0.09038136,
-	0.08961748,
-	0.08885355,
-	0.08808957,
-	0.087325536,
-	0.08656145,
-	0.08579731,
-	0.085033126,
-	0.08426889,
-	0.0835046,
-	0.08274026,
-	0.08197588,
-	0.08121145,
-	0.080446966,
-	0.07968244,
-	0.07891786,
-	0.078153245,
-	0.07738858,
-	0.076623864,
-	0.07585911,
-	0.0750943,
-	0.07432945,
-	0.07356457,
-	0.07279963,
-	0.07203465,
-	0.07126963,
-	0.070504576,
-	0.06973947,
-	0.06897433,
-	0.06820914,
-	0.06744392,
-	0.06667866,
-	0.06591335,
-	0.06514801,
-	0.06438263,
-	0.063617215,
-	0.06285176,
-	0.062086266,
-	0.061320737,
-	0.06055517,
-	0.059789572,
-	0.059023935,
-	0.058258265,
-	0.057492558,
-	0.05672682,
-	0.05596105,
-	0.055195246,
-	0.05442941,
-	0.053663537,
-	0.052897636,
-	0.052131705,
-	0.05136574,
-	0.05059975,
-	0.049833726,
-	0.049067676,
-	0.048301592,
-	0.047535483,
-	0.046769347,
-	0.04600318,
-	0.04523699,
-	0.044470772,
-	0.04370453,
-	0.04293826,
-	0.042171963,
-	0.04140564,
-	0.040639296,
-	0.039872926,
-	0.039106537,
-	0.03834012,
-	0.037573684,
-	0.036807224,
-	0.036040742,
-	0.035274237,
-	0.034507714,
-	0.033741172,
-	0.03297461,
-	0.032208025,
-	0.031441424,
-	0.030674804,
-	0.029908165,
-	0.029141508,
-	0.028374836,
-	0.027608145,
-	0.02684144,
-	0.026074719,
-	0.025307981,
-	0.024541229,
-	0.023774462,
-	0.023007682,
-	0.022240888,
-	0.02147408,
-	0.02070726,
-	0.019940428,
-	0.019173585,
-	0.01840673,
-	0.017639864,
-	0.016872987,
-	0.016106103,
-	0.015339206,
-	0.014572302,
-	0.0138053885,
-	0.013038468,
-	0.012271538,
-	0.011504602,
-	0.010737659,
-	0.00997071,
-	0.009203754,
-	0.008436794,
-	0.007669829,
-	0.0069028586,
-	0.0061358847,
-	0.005368907,
-	0.004601926,
-	0.0038349426,
-	0.0030679568,
-	0.002300969,
-	0.0015339801,
-	0.0007669903,
-}
diff --git a/go/src/golang.org/x/mobile/f32/vec3.go b/go/src/golang.org/x/mobile/f32/vec3.go
deleted file mode 100644
index f966ce6..0000000
--- a/go/src/golang.org/x/mobile/f32/vec3.go
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2014 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 f32
-
-import "fmt"
-
-type Vec3 [3]float32
-
-func (v Vec3) String() string {
-	return fmt.Sprintf("Vec3[% 0.3f, % 0.3f, % 0.3f]", v[0], v[1], v[2])
-}
-
-func (v *Vec3) Normalize() {
-	sq := v.Dot(v)
-	inv := 1 / Sqrt(sq)
-	v[0] *= inv
-	v[1] *= inv
-	v[2] *= inv
-}
-
-func (v *Vec3) Sub(v0, v1 *Vec3) {
-	v[0] = v0[0] - v1[0]
-	v[1] = v0[1] - v1[1]
-	v[2] = v0[2] - v1[2]
-}
-
-func (v *Vec3) Add(v0, v1 *Vec3) {
-	v[0] = v0[0] + v1[0]
-	v[1] = v0[1] + v1[1]
-	v[2] = v0[2] + v1[2]
-}
-
-func (v *Vec3) Mul(v0, v1 *Vec3) {
-	v[0] = v0[0] * v1[0]
-	v[1] = v0[1] * v1[1]
-	v[2] = v0[2] * v1[2]
-}
-
-func (v *Vec3) Cross(v0, v1 *Vec3) {
-	v[0] = v0[1]*v1[2] - v0[2]*v1[1]
-	v[1] = v0[2]*v1[0] - v0[0]*v1[2]
-	v[2] = v0[0]*v1[1] - v0[1]*v1[0]
-}
-
-func (v *Vec3) Dot(v1 *Vec3) float32 {
-	return v[0]*v1[0] + v[1]*v1[1] + v[2]*v1[2]
-}
diff --git a/go/src/golang.org/x/mobile/f32/vec4.go b/go/src/golang.org/x/mobile/f32/vec4.go
deleted file mode 100644
index ac7f7e0..0000000
--- a/go/src/golang.org/x/mobile/f32/vec4.go
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2014 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 f32
-
-import "fmt"
-
-type Vec4 [4]float32
-
-func (v Vec4) String() string {
-	return fmt.Sprintf("Vec4[% 0.3f, % 0.3f, % 0.3f, % 0.3f]", v[0], v[1], v[2], v[3])
-}
-
-func (v *Vec4) Normalize() {
-	sq := v.Dot(v)
-	inv := 1 / Sqrt(sq)
-	v[0] *= inv
-	v[1] *= inv
-	v[2] *= inv
-	v[3] *= inv
-}
-
-func (v *Vec4) Sub(v0, v1 *Vec4) {
-	v[0] = v0[0] - v1[0]
-	v[1] = v0[1] - v1[1]
-	v[2] = v0[2] - v1[2]
-	v[3] = v0[3] - v1[3]
-}
-
-func (v *Vec4) Add(v0, v1 *Vec4) {
-	v[0] = v0[0] + v1[0]
-	v[1] = v0[1] + v1[1]
-	v[2] = v0[2] + v1[2]
-	v[3] = v0[3] + v1[3]
-}
-
-func (v *Vec4) Mul(v0, v1 *Vec4) {
-	v[0] = v0[0] * v1[0]
-	v[1] = v0[1] * v1[1]
-	v[2] = v0[2] * v1[2]
-	v[3] = v0[3] * v1[3]
-}
-
-func (v *Vec4) Dot(v1 *Vec4) float32 {
-	return v[0]*v1[0] + v[1]*v1[1] + v[2]*v1[2] + v[3]*v1[3]
-}
diff --git a/go/src/golang.org/x/mobile/font/doc.go b/go/src/golang.org/x/mobile/font/doc.go
deleted file mode 100644
index 349feb4..0000000
--- a/go/src/golang.org/x/mobile/font/doc.go
+++ /dev/null
@@ -1,6 +0,0 @@
-// Copyright 2014 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 font provides platform independent access to system fonts.
-package font
diff --git a/go/src/golang.org/x/mobile/font/font.go b/go/src/golang.org/x/mobile/font/font.go
deleted file mode 100644
index 38f6ba6..0000000
--- a/go/src/golang.org/x/mobile/font/font.go
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2014 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.
-
-// +build linux darwin
-
-package font
-
-// Default returns the default system font.
-// The font is encoded as a TTF.
-func Default() []byte {
-	b, err := buildDefault()
-	if err != nil {
-		panic(err)
-	}
-	return b
-}
-
-// Monospace returns the default system fixed-pitch font.
-// The font is encoded as a TTF.
-func Monospace() []byte {
-	b, err := buildMonospace()
-	if err != nil {
-		panic(err)
-	}
-	return b
-}
diff --git a/go/src/golang.org/x/mobile/font/font_android.go b/go/src/golang.org/x/mobile/font/font_android.go
deleted file mode 100644
index 3503ec9..0000000
--- a/go/src/golang.org/x/mobile/font/font_android.go
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2014 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 font
-
-import "io/ioutil"
-
-func buildDefault() ([]byte, error) {
-	return ioutil.ReadFile("/system/fonts/DroidSans.ttf")
-}
-
-func buildMonospace() ([]byte, error) {
-	return ioutil.ReadFile("/system/fonts/DroidSansMono.ttf")
-}
diff --git a/go/src/golang.org/x/mobile/font/font_darwin.go b/go/src/golang.org/x/mobile/font/font_darwin.go
deleted file mode 100644
index e82713c..0000000
--- a/go/src/golang.org/x/mobile/font/font_darwin.go
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2014 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 font
-
-/*
-#cgo darwin LDFLAGS: -framework CoreFoundation -framework CoreText
-#include <CoreFoundation/CFArray.h>
-#include <CoreFoundation/CFBase.h>
-#include <CoreFoundation/CFData.h>
-#include <CoreText/CTFont.h>
-*/
-import "C"
-import "unsafe"
-
-func buildFont(f C.CTFontRef) []byte {
-	ctags := C.CTFontCopyAvailableTables(f, C.kCTFontTableOptionExcludeSynthetic)
-	tagsCount := C.CFArrayGetCount(ctags)
-
-	var tags []uint32
-	var dataRefs []C.CFDataRef
-	var dataLens []uint32
-
-	for i := C.CFIndex(0); i < tagsCount; i++ {
-		tag := (C.CTFontTableTag)((uintptr)(C.CFArrayGetValueAtIndex(ctags, i)))
-		dataRef := C.CTFontCopyTable(f, tag, 0) // retained
-		tags = append(tags, uint32(tag))
-		dataRefs = append(dataRefs, dataRef)
-		dataLens = append(dataLens, uint32(C.CFDataGetLength(dataRef)))
-	}
-
-	totalLen := 0
-	for _, l := range dataLens {
-		totalLen += int(l)
-	}
-
-	// Big-endian output.
-	buf := make([]byte, 0, 12+16*len(tags)+totalLen)
-	write16 := func(x uint16) { buf = append(buf, byte(x>>8), byte(x)) }
-	write32 := func(x uint32) { buf = append(buf, byte(x>>24), byte(x>>16), byte(x>>8), byte(x)) }
-
-	// File format description: http://www.microsoft.com/typography/otspec/otff.htm
-	write32(0x00010000)        // version 1.0
-	write16(uint16(len(tags))) // numTables
-	write16(0)                 // searchRange
-	write16(0)                 // entrySelector
-	write16(0)                 // rangeShift
-
-	// Table tags, includes offsets into following data segments.
-	offset := uint32(12 + 16*len(tags)) // offset starts after table tags
-	for i, tag := range tags {
-		write32(tag)
-		write32(0)
-		write32(offset)
-		write32(dataLens[i])
-		offset += dataLens[i]
-	}
-
-	// Data segments.
-	for i, dataRef := range dataRefs {
-		data := (*[1<<31 - 2]byte)((unsafe.Pointer)(C.CFDataGetBytePtr(dataRef)))[:dataLens[i]]
-		buf = append(buf, data...)
-		C.CFRelease(C.CFTypeRef(dataRef))
-	}
-
-	return buf
-}
-
-func buildDefault() ([]byte, error) {
-	return buildFont(C.CTFontCreateUIFontForLanguage(C.kCTFontSystemFontType, 0, nil)), nil
-}
-
-func buildMonospace() ([]byte, error) {
-	return buildFont(C.CTFontCreateUIFontForLanguage(C.kCTFontUserFixedPitchFontType, 0, nil)), nil
-}
diff --git a/go/src/golang.org/x/mobile/font/font_linux.go b/go/src/golang.org/x/mobile/font/font_linux.go
deleted file mode 100644
index ac3ea91..0000000
--- a/go/src/golang.org/x/mobile/font/font_linux.go
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright 2014 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.
-
-// +build !android
-
-package font
-
-import "io/ioutil"
-
-func buildDefault() ([]byte, error) {
-	return ioutil.ReadFile("/usr/share/fonts/truetype/droid/DroidSans.ttf")
-}
-
-func buildMonospace() ([]byte, error) {
-	return ioutil.ReadFile("/usr/share/fonts/truetype/droid/DroidSansMono.ttf")
-}
diff --git a/go/src/golang.org/x/mobile/font/font_test.go b/go/src/golang.org/x/mobile/font/font_test.go
deleted file mode 100644
index b7c3f71..0000000
--- a/go/src/golang.org/x/mobile/font/font_test.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2014 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.
-
-// +build linux darwin
-
-package font
-
-import (
-	"testing"
-
-	"code.google.com/p/freetype-go/freetype"
-)
-
-func TestLoadFonts(t *testing.T) {
-	if _, err := freetype.ParseFont(Default()); err != nil {
-		t.Fatalf("default font: %v", err)
-	}
-	if _, err := freetype.ParseFont(Monospace()); err != nil {
-		t.Fatalf("monospace font: %v", err)
-	}
-}
diff --git a/go/src/golang.org/x/mobile/geom/geom.go b/go/src/golang.org/x/mobile/geom/geom.go
deleted file mode 100644
index ee2f449..0000000
--- a/go/src/golang.org/x/mobile/geom/geom.go
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2014 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 geom defines a two-dimensional coordinate system.
-
-The coordinate system is based on an left-handed Cartesian plane.
-That is, X increases to the right and Y increases down. For (x,y),
-
-	(0,0) → (1,0)
-	  ↓   ↘
-	(0,1)   (1,1)
-
-The display window places the origin (0, 0) in the upper-left corner of
-the screen. Positions on the plane are measured in typographic points,
-1/72 of an inch, which is represented by the Pt type.
-
-Any interface that draws to the screen using types from the geom package
-scales the number of pixels to maintain a Pt as 1/72 of an inch.
-*/
-package geom // import "golang.org/x/mobile/geom"
-
-/*
-Notes on the various underlying coordinate systems.
-
-Both Android and iOS (UIKit) use upper-left-origin coordinate systems
-with for events, however they have different units.
-
-UIKit measures distance in points. A point is a single-pixel on a
-pre-Retina display. UIKit maintains a scale factor that to turn points
-into pixels. On current retina devices, the scale factor is 2.0.
-
-A UIKit point does not correspond to a fixed physical distance, as the
-iPhone has a 163 DPI/PPI (326 PPI retina) display, and the iPad has a
-132 PPI (264 retina) display. Points are 32-bit floats.
-
-Even though point is the official UIKit term, they are commonly called
-pixels. Indeed, the units were equivalent until the retina display was
-introduced.
-
-N.b. as a UIKit point is unrelated to a typographic point, it is not
-related to this packages's Pt and Point types.
-
-More details about iOS drawing:
-
-https://developer.apple.com/library/ios/documentation/2ddrawing/conceptual/drawingprintingios/GraphicsDrawingOverview/GraphicsDrawingOverview.html
-
-Android uses pixels. Sub-pixel precision is possible, so pixels are
-represented as 32-bit floats. The ACONFIGURATION_DENSITY enum provides
-the screen DPI/PPI, which varies frequently between devices.
-
-It would be tempting to adopt the pixel, given the clear pixel/DPI split
-in the core android events API. However, the plot thickens:
-
-http://developer.android.com/training/multiscreen/screendensities.html
-
-Android promotes the notion of a density-independent pixel in many of
-their interfaces, often prefixed by "dp". 1dp is a real physical length,
-as "independent" means it is assumed to be 1/160th of an inch and is
-adjusted for the current screen.
-
-In addition, android has a scale-indepdendent pixel used for expressing
-a user's preferred text size. The user text size preference is a useful
-notion not yet expressed in the geom package.
-
-For the sake of clarity when working across platforms, the geom package
-tries to put distance between it and the word pixel.
-*/
-
-import "fmt"
-
-// Pt is a length.
-//
-// The unit Pt is a typographical point, 1/72 of an inch (0.3527 mm).
-//
-// It can be be converted to a length in current device pixels by
-// multiplying with PixelsPerPt after app initialization is complete.
-type Pt float32
-
-// Px converts the length to current device pixels.
-func (p Pt) Px() float32 { return float32(p) * PixelsPerPt }
-
-// String returns a string representation of p like "3.2pt".
-func (p Pt) String() string { return fmt.Sprintf("%.2fpt", p) }
-
-// Point is a point in a two-dimensional plane.
-type Point struct {
-	X, Y Pt
-}
-
-// String returns a string representation of p like "(1.2,3.4)".
-func (p Point) String() string { return fmt.Sprintf("(%.2f,%.2f)", p.X, p.Y) }
-
-// A Rectangle is region of points.
-// The top-left point is Min, and the bottom-right point is Max.
-type Rectangle struct {
-	Min, Max Point
-}
-
-// String returns a string representation of r like "(3,4)-(6,5)".
-func (r Rectangle) String() string { return r.Min.String() + "-" + r.Max.String() }
-
-// PixelsPerPt is the number of pixels in a single Pt on the current device.
-//
-// There are a wide variety of pixel densities in existing phones and
-// tablets, so apps should be written to expect various non-integer
-// PixelsPerPt values. In general, work in Pt.
-//
-// Not valid until app initialization has completed.
-var PixelsPerPt float32
-
-// Width is the width of the device screen.
-// Not valid until app initialization has completed.
-var Width Pt
-
-// Height is the height of the device screen.
-// Not valid until app initialization has completed.
-var Height Pt
diff --git a/go/src/golang.org/x/mobile/gl/consts.go b/go/src/golang.org/x/mobile/gl/consts.go
deleted file mode 100644
index 10d56f3..0000000
--- a/go/src/golang.org/x/mobile/gl/consts.go
+++ /dev/null
@@ -1,348 +0,0 @@
-// Copyright 2014 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 gl
-
-/*
-Partially generated from the Khronos OpenGL API specification in XML
-format, which is covered by the license:
-
-	Copyright (c) 2013-2014 The Khronos Group Inc.
-
-	Permission is hereby granted, free of charge, to any person obtaining a
-	copy of this software and/or associated documentation files (the
-	"Materials"), to deal in the Materials without restriction, including
-	without limitation the rights to use, copy, modify, merge, publish,
-	distribute, sublicense, and/or sell copies of the Materials, and to
-	permit persons to whom the Materials are 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 Materials.
-
-	THE MATERIALS ARE 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
-	MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-
-*/
-
-const (
-	POINTS                                       = 0x0000
-	LINES                                        = 0x0001
-	LINE_LOOP                                    = 0x0002
-	LINE_STRIP                                   = 0x0003
-	TRIANGLES                                    = 0x0004
-	TRIANGLE_STRIP                               = 0x0005
-	TRIANGLE_FAN                                 = 0x0006
-	SRC_COLOR                                    = 0x0300
-	ONE_MINUS_SRC_COLOR                          = 0x0301
-	SRC_ALPHA                                    = 0x0302
-	ONE_MINUS_SRC_ALPHA                          = 0x0303
-	DST_ALPHA                                    = 0x0304
-	ONE_MINUS_DST_ALPHA                          = 0x0305
-	DST_COLOR                                    = 0x0306
-	ONE_MINUS_DST_COLOR                          = 0x0307
-	SRC_ALPHA_SATURATE                           = 0x0308
-	FUNC_ADD                                     = 0x8006
-	BLEND_EQUATION                               = 0x8009
-	BLEND_EQUATION_RGB                           = 0x8009
-	BLEND_EQUATION_ALPHA                         = 0x883D
-	FUNC_SUBTRACT                                = 0x800A
-	FUNC_REVERSE_SUBTRACT                        = 0x800B
-	BLEND_DST_RGB                                = 0x80C8
-	BLEND_SRC_RGB                                = 0x80C9
-	BLEND_DST_ALPHA                              = 0x80CA
-	BLEND_SRC_ALPHA                              = 0x80CB
-	CONSTANT_COLOR                               = 0x8001
-	ONE_MINUS_CONSTANT_COLOR                     = 0x8002
-	CONSTANT_ALPHA                               = 0x8003
-	ONE_MINUS_CONSTANT_ALPHA                     = 0x8004
-	BLEND_COLOR                                  = 0x8005
-	ARRAY_BUFFER                                 = 0x8892
-	ELEMENT_ARRAY_BUFFER                         = 0x8893
-	ARRAY_BUFFER_BINDING                         = 0x8894
-	ELEMENT_ARRAY_BUFFER_BINDING                 = 0x8895
-	STREAM_DRAW                                  = 0x88E0
-	STATIC_DRAW                                  = 0x88E4
-	DYNAMIC_DRAW                                 = 0x88E8
-	BUFFER_SIZE                                  = 0x8764
-	BUFFER_USAGE                                 = 0x8765
-	CURRENT_VERTEX_ATTRIB                        = 0x8626
-	FRONT                                        = 0x0404
-	BACK                                         = 0x0405
-	FRONT_AND_BACK                               = 0x0408
-	TEXTURE_2D                                   = 0x0DE1
-	CULL_FACE                                    = 0x0B44
-	BLEND                                        = 0x0BE2
-	DITHER                                       = 0x0BD0
-	STENCIL_TEST                                 = 0x0B90
-	DEPTH_TEST                                   = 0x0B71
-	SCISSOR_TEST                                 = 0x0C11
-	POLYGON_OFFSET_FILL                          = 0x8037
-	SAMPLE_ALPHA_TO_COVERAGE                     = 0x809E
-	SAMPLE_COVERAGE                              = 0x80A0
-	INVALID_ENUM                                 = 0x0500
-	INVALID_VALUE                                = 0x0501
-	INVALID_OPERATION                            = 0x0502
-	OUT_OF_MEMORY                                = 0x0505
-	CW                                           = 0x0900
-	CCW                                          = 0x0901
-	LINE_WIDTH                                   = 0x0B21
-	ALIASED_POINT_SIZE_RANGE                     = 0x846D
-	ALIASED_LINE_WIDTH_RANGE                     = 0x846E
-	CULL_FACE_MODE                               = 0x0B45
-	FRONT_FACE                                   = 0x0B46
-	DEPTH_RANGE                                  = 0x0B70
-	DEPTH_WRITEMASK                              = 0x0B72
-	DEPTH_CLEAR_VALUE                            = 0x0B73
-	DEPTH_FUNC                                   = 0x0B74
-	STENCIL_CLEAR_VALUE                          = 0x0B91
-	STENCIL_FUNC                                 = 0x0B92
-	STENCIL_FAIL                                 = 0x0B94
-	STENCIL_PASS_DEPTH_FAIL                      = 0x0B95
-	STENCIL_PASS_DEPTH_PASS                      = 0x0B96
-	STENCIL_REF                                  = 0x0B97
-	STENCIL_VALUE_MASK                           = 0x0B93
-	STENCIL_WRITEMASK                            = 0x0B98
-	STENCIL_BACK_FUNC                            = 0x8800
-	STENCIL_BACK_FAIL                            = 0x8801
-	STENCIL_BACK_PASS_DEPTH_FAIL                 = 0x8802
-	STENCIL_BACK_PASS_DEPTH_PASS                 = 0x8803
-	STENCIL_BACK_REF                             = 0x8CA3
-	STENCIL_BACK_VALUE_MASK                      = 0x8CA4
-	STENCIL_BACK_WRITEMASK                       = 0x8CA5
-	VIEWPORT                                     = 0x0BA2
-	SCISSOR_BOX                                  = 0x0C10
-	COLOR_CLEAR_VALUE                            = 0x0C22
-	COLOR_WRITEMASK                              = 0x0C23
-	UNPACK_ALIGNMENT                             = 0x0CF5
-	PACK_ALIGNMENT                               = 0x0D05
-	MAX_TEXTURE_SIZE                             = 0x0D33
-	MAX_VIEWPORT_DIMS                            = 0x0D3A
-	SUBPIXEL_BITS                                = 0x0D50
-	RED_BITS                                     = 0x0D52
-	GREEN_BITS                                   = 0x0D53
-	BLUE_BITS                                    = 0x0D54
-	ALPHA_BITS                                   = 0x0D55
-	DEPTH_BITS                                   = 0x0D56
-	STENCIL_BITS                                 = 0x0D57
-	POLYGON_OFFSET_UNITS                         = 0x2A00
-	POLYGON_OFFSET_FACTOR                        = 0x8038
-	TEXTURE_BINDING_2D                           = 0x8069
-	SAMPLE_BUFFERS                               = 0x80A8
-	SAMPLES                                      = 0x80A9
-	SAMPLE_COVERAGE_VALUE                        = 0x80AA
-	SAMPLE_COVERAGE_INVERT                       = 0x80AB
-	NUM_COMPRESSED_TEXTURE_FORMATS               = 0x86A2
-	COMPRESSED_TEXTURE_FORMATS                   = 0x86A3
-	DONT_CARE                                    = 0x1100
-	FASTEST                                      = 0x1101
-	NICEST                                       = 0x1102
-	GENERATE_MIPMAP_HINT                         = 0x8192
-	BYTE                                         = 0x1400
-	UNSIGNED_BYTE                                = 0x1401
-	SHORT                                        = 0x1402
-	UNSIGNED_SHORT                               = 0x1403
-	INT                                          = 0x1404
-	UNSIGNED_INT                                 = 0x1405
-	FLOAT                                        = 0x1406
-	FIXED                                        = 0x140C
-	DEPTH_COMPONENT                              = 0x1902
-	ALPHA                                        = 0x1906
-	RGB                                          = 0x1907
-	RGBA                                         = 0x1908
-	LUMINANCE                                    = 0x1909
-	LUMINANCE_ALPHA                              = 0x190A
-	UNSIGNED_SHORT_4_4_4_4                       = 0x8033
-	UNSIGNED_SHORT_5_5_5_1                       = 0x8034
-	UNSIGNED_SHORT_5_6_5                         = 0x8363
-	MAX_VERTEX_ATTRIBS                           = 0x8869
-	MAX_VERTEX_UNIFORM_VECTORS                   = 0x8DFB
-	MAX_VARYING_VECTORS                          = 0x8DFC
-	MAX_COMBINED_TEXTURE_IMAGE_UNITS             = 0x8B4D
-	MAX_VERTEX_TEXTURE_IMAGE_UNITS               = 0x8B4C
-	MAX_TEXTURE_IMAGE_UNITS                      = 0x8872
-	MAX_FRAGMENT_UNIFORM_VECTORS                 = 0x8DFD
-	SHADER_TYPE                                  = 0x8B4F
-	DELETE_STATUS                                = 0x8B80
-	LINK_STATUS                                  = 0x8B82
-	VALIDATE_STATUS                              = 0x8B83
-	ATTACHED_SHADERS                             = 0x8B85
-	ACTIVE_UNIFORMS                              = 0x8B86
-	ACTIVE_UNIFORM_MAX_LENGTH                    = 0x8B87
-	ACTIVE_ATTRIBUTES                            = 0x8B89
-	ACTIVE_ATTRIBUTE_MAX_LENGTH                  = 0x8B8A
-	SHADING_LANGUAGE_VERSION                     = 0x8B8C
-	CURRENT_PROGRAM                              = 0x8B8D
-	NEVER                                        = 0x0200
-	LESS                                         = 0x0201
-	EQUAL                                        = 0x0202
-	LEQUAL                                       = 0x0203
-	GREATER                                      = 0x0204
-	NOTEQUAL                                     = 0x0205
-	GEQUAL                                       = 0x0206
-	ALWAYS                                       = 0x0207
-	KEEP                                         = 0x1E00
-	REPLACE                                      = 0x1E01
-	INCR                                         = 0x1E02
-	DECR                                         = 0x1E03
-	INVERT                                       = 0x150A
-	INCR_WRAP                                    = 0x8507
-	DECR_WRAP                                    = 0x8508
-	VENDOR                                       = 0x1F00
-	RENDERER                                     = 0x1F01
-	VERSION                                      = 0x1F02
-	EXTENSIONS                                   = 0x1F03
-	NEAREST                                      = 0x2600
-	LINEAR                                       = 0x2601
-	NEAREST_MIPMAP_NEAREST                       = 0x2700
-	LINEAR_MIPMAP_NEAREST                        = 0x2701
-	NEAREST_MIPMAP_LINEAR                        = 0x2702
-	LINEAR_MIPMAP_LINEAR                         = 0x2703
-	TEXTURE_MAG_FILTER                           = 0x2800
-	TEXTURE_MIN_FILTER                           = 0x2801
-	TEXTURE_WRAP_S                               = 0x2802
-	TEXTURE_WRAP_T                               = 0x2803
-	TEXTURE                                      = 0x1702
-	TEXTURE_CUBE_MAP                             = 0x8513
-	TEXTURE_BINDING_CUBE_MAP                     = 0x8514
-	TEXTURE_CUBE_MAP_POSITIVE_X                  = 0x8515
-	TEXTURE_CUBE_MAP_NEGATIVE_X                  = 0x8516
-	TEXTURE_CUBE_MAP_POSITIVE_Y                  = 0x8517
-	TEXTURE_CUBE_MAP_NEGATIVE_Y                  = 0x8518
-	TEXTURE_CUBE_MAP_POSITIVE_Z                  = 0x8519
-	TEXTURE_CUBE_MAP_NEGATIVE_Z                  = 0x851A
-	MAX_CUBE_MAP_TEXTURE_SIZE                    = 0x851C
-	TEXTURE0                                     = 0x84C0
-	TEXTURE1                                     = 0x84C1
-	TEXTURE2                                     = 0x84C2
-	TEXTURE3                                     = 0x84C3
-	TEXTURE4                                     = 0x84C4
-	TEXTURE5                                     = 0x84C5
-	TEXTURE6                                     = 0x84C6
-	TEXTURE7                                     = 0x84C7
-	TEXTURE8                                     = 0x84C8
-	TEXTURE9                                     = 0x84C9
-	TEXTURE10                                    = 0x84CA
-	TEXTURE11                                    = 0x84CB
-	TEXTURE12                                    = 0x84CC
-	TEXTURE13                                    = 0x84CD
-	TEXTURE14                                    = 0x84CE
-	TEXTURE15                                    = 0x84CF
-	TEXTURE16                                    = 0x84D0
-	TEXTURE17                                    = 0x84D1
-	TEXTURE18                                    = 0x84D2
-	TEXTURE19                                    = 0x84D3
-	TEXTURE20                                    = 0x84D4
-	TEXTURE21                                    = 0x84D5
-	TEXTURE22                                    = 0x84D6
-	TEXTURE23                                    = 0x84D7
-	TEXTURE24                                    = 0x84D8
-	TEXTURE25                                    = 0x84D9
-	TEXTURE26                                    = 0x84DA
-	TEXTURE27                                    = 0x84DB
-	TEXTURE28                                    = 0x84DC
-	TEXTURE29                                    = 0x84DD
-	TEXTURE30                                    = 0x84DE
-	TEXTURE31                                    = 0x84DF
-	ACTIVE_TEXTURE                               = 0x84E0
-	REPEAT                                       = 0x2901
-	CLAMP_TO_EDGE                                = 0x812F
-	MIRRORED_REPEAT                              = 0x8370
-	VERTEX_ATTRIB_ARRAY_ENABLED                  = 0x8622
-	VERTEX_ATTRIB_ARRAY_SIZE                     = 0x8623
-	VERTEX_ATTRIB_ARRAY_STRIDE                   = 0x8624
-	VERTEX_ATTRIB_ARRAY_TYPE                     = 0x8625
-	VERTEX_ATTRIB_ARRAY_NORMALIZED               = 0x886A
-	VERTEX_ATTRIB_ARRAY_POINTER                  = 0x8645
-	VERTEX_ATTRIB_ARRAY_BUFFER_BINDING           = 0x889F
-	IMPLEMENTATION_COLOR_READ_TYPE               = 0x8B9A
-	IMPLEMENTATION_COLOR_READ_FORMAT             = 0x8B9B
-	COMPILE_STATUS                               = 0x8B81
-	INFO_LOG_LENGTH                              = 0x8B84
-	SHADER_SOURCE_LENGTH                         = 0x8B88
-	SHADER_COMPILER                              = 0x8DFA
-	SHADER_BINARY_FORMATS                        = 0x8DF8
-	NUM_SHADER_BINARY_FORMATS                    = 0x8DF9
-	LOW_FLOAT                                    = 0x8DF0
-	MEDIUM_FLOAT                                 = 0x8DF1
-	HIGH_FLOAT                                   = 0x8DF2
-	LOW_INT                                      = 0x8DF3
-	MEDIUM_INT                                   = 0x8DF4
-	HIGH_INT                                     = 0x8DF5
-	FRAMEBUFFER                                  = 0x8D40
-	RENDERBUFFER                                 = 0x8D41
-	RGBA4                                        = 0x8056
-	RGB5_A1                                      = 0x8057
-	RGB565                                       = 0x8D62
-	DEPTH_COMPONENT16                            = 0x81A5
-	STENCIL_INDEX8                               = 0x8D48
-	RENDERBUFFER_WIDTH                           = 0x8D42
-	RENDERBUFFER_HEIGHT                          = 0x8D43
-	RENDERBUFFER_INTERNAL_FORMAT                 = 0x8D44
-	RENDERBUFFER_RED_SIZE                        = 0x8D50
-	RENDERBUFFER_GREEN_SIZE                      = 0x8D51
-	RENDERBUFFER_BLUE_SIZE                       = 0x8D52
-	RENDERBUFFER_ALPHA_SIZE                      = 0x8D53
-	RENDERBUFFER_DEPTH_SIZE                      = 0x8D54
-	RENDERBUFFER_STENCIL_SIZE                    = 0x8D55
-	FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE           = 0x8CD0
-	FRAMEBUFFER_ATTACHMENT_OBJECT_NAME           = 0x8CD1
-	FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL         = 0x8CD2
-	FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3
-	COLOR_ATTACHMENT0                            = 0x8CE0
-	DEPTH_ATTACHMENT                             = 0x8D00
-	STENCIL_ATTACHMENT                           = 0x8D20
-	FRAMEBUFFER_COMPLETE                         = 0x8CD5
-	FRAMEBUFFER_INCOMPLETE_ATTACHMENT            = 0x8CD6
-	FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT    = 0x8CD7
-	FRAMEBUFFER_INCOMPLETE_DIMENSIONS            = 0x8CD9
-	FRAMEBUFFER_UNSUPPORTED                      = 0x8CDD
-	FRAMEBUFFER_BINDING                          = 0x8CA6
-	RENDERBUFFER_BINDING                         = 0x8CA7
-	MAX_RENDERBUFFER_SIZE                        = 0x84E8
-	INVALID_FRAMEBUFFER_OPERATION                = 0x0506
-)
-
-const (
-	DEPTH_BUFFER_BIT   = 0x00000100
-	STENCIL_BUFFER_BIT = 0x00000400
-	COLOR_BUFFER_BIT   = 0x00004000
-)
-
-const (
-	FLOAT_VEC2   = 0x8B50
-	FLOAT_VEC3   = 0x8B51
-	FLOAT_VEC4   = 0x8B52
-	INT_VEC2     = 0x8B53
-	INT_VEC3     = 0x8B54
-	INT_VEC4     = 0x8B55
-	BOOL         = 0x8B56
-	BOOL_VEC2    = 0x8B57
-	BOOL_VEC3    = 0x8B58
-	BOOL_VEC4    = 0x8B59
-	FLOAT_MAT2   = 0x8B5A
-	FLOAT_MAT3   = 0x8B5B
-	FLOAT_MAT4   = 0x8B5C
-	SAMPLER_2D   = 0x8B5E
-	SAMPLER_CUBE = 0x8B60
-)
-
-const (
-	FRAGMENT_SHADER = 0x8B30
-	VERTEX_SHADER   = 0x8B31
-)
-
-const (
-	FALSE    = 0
-	TRUE     = 1
-	ZERO     = 0
-	ONE      = 1
-	NO_ERROR = 0
-	NONE     = 0
-)
diff --git a/go/src/golang.org/x/mobile/gl/doc.go b/go/src/golang.org/x/mobile/gl/doc.go
deleted file mode 100644
index eb1bb1e..0000000
--- a/go/src/golang.org/x/mobile/gl/doc.go
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2014 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 gl implements Go bindings for OpenGL ES 2.
-
-The bindings are deliberately minimal, staying as close the C API as
-possible. The semantics of each function maps onto functions
-described in the Khronos documentation:
-
-https://www.khronos.org/opengles/sdk/docs/man/
-
-One notable departure from the C API is the introduction of types
-to represent common uses of GLint: Texture, Surface, Buffer, etc.
-
-A tracing version of the OpenGL bindings is behind the `gldebug` build
-tag. It acts as a simplified version of apitrace. Build your Go binary
-with
-
-	-tags gldebug
-
-and each call to a GL function will log its input, output, and any
-error messages. For example,
-
-	I/GoLog   (27668): gl.GenBuffers(1) [Buffer(70001)]
-	I/GoLog   (27668): gl.BindBuffer(ARRAY_BUFFER, Buffer(70001))
-	I/GoLog   (27668): gl.BufferData(ARRAY_BUFFER, 36, len(36), STATIC_DRAW)
-	I/GoLog   (27668): gl.BindBuffer(ARRAY_BUFFER, Buffer(70001))
-	I/GoLog   (27668): gl.VertexAttribPointer(Attrib(0), 6, FLOAT, false, 0, 0)  error: [INVALID_VALUE]
-
-The gldebug tracing has very high overhead, so make sure to remove
-the build tag before deploying any binaries.
-*/
-package gl // import "golang.org/x/mobile/gl"
-
-//go:generate go run gendebug.go -o gldebug.go
diff --git a/go/src/golang.org/x/mobile/gl/gendebug.go b/go/src/golang.org/x/mobile/gl/gendebug.go
deleted file mode 100644
index 9c68b78..0000000
--- a/go/src/golang.org/x/mobile/gl/gendebug.go
+++ /dev/null
@@ -1,320 +0,0 @@
-// Copyright 2014 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.
-
-// +build ignore
-
-// The gendebug program takes gl.go and generates a version of it
-// where each function includes tracing code that writes its arguments
-// to the standard log.
-package main
-
-import (
-	"bytes"
-	"flag"
-	"fmt"
-	"go/ast"
-	"go/format"
-	"go/parser"
-	"go/printer"
-	"go/token"
-	"io/ioutil"
-	"log"
-	"os"
-	"strconv"
-)
-
-var outfile = flag.String("o", "", "result will be written to the file instead of stdout.")
-
-var fset = new(token.FileSet)
-
-func typeString(t ast.Expr) string {
-	buf := new(bytes.Buffer)
-	printer.Fprint(buf, fset, t)
-	return buf.String()
-}
-
-func typePrinter(t string) string {
-	switch t {
-	case "[]float32", "[]byte":
-		return "len(%d)"
-	}
-	return "%v"
-}
-
-func typePrinterArg(t, name string) string {
-	switch t {
-	case "[]float32", "[]byte":
-		return "len(" + name + ")"
-	}
-	return name
-}
-
-func die(err error) {
-	fmt.Fprintf(os.Stderr, err.Error())
-	os.Exit(1)
-}
-
-func main() {
-	flag.Parse()
-
-	f, err := parser.ParseFile(fset, "consts.go", nil, parser.ParseComments)
-	if err != nil {
-		die(err)
-	}
-	entries := enum(f)
-
-	f, err = parser.ParseFile(fset, "gl.go", nil, parser.ParseComments)
-	if err != nil {
-		die(err)
-	}
-
-	buf := new(bytes.Buffer)
-
-	fmt.Fprint(buf, preamble)
-
-	fmt.Fprintf(buf, "func (v Enum) String() string {\n")
-	fmt.Fprintf(buf, "\tswitch v {\n")
-	for _, e := range dedup(entries) {
-		fmt.Fprintf(buf, "\tcase 0x%x: return %q\n", e.value, e.name)
-	}
-	fmt.Fprintf(buf, "\t%s\n", `default: return fmt.Sprintf("gl.Enum(0x%x)", uint32(v))`)
-	fmt.Fprintf(buf, "\t}\n")
-	fmt.Fprintf(buf, "}\n\n")
-
-	for _, d := range f.Decls {
-		// Before:
-		// func StencilMask(mask uint32) {
-		//	C.glStencilMask(C.GLuint(mask))
-		// }
-		//
-		// After:
-		// func StencilMask(mask uint32) {
-		// 	defer func() {
-		// 		errstr := errDrain()
-		// 		log.Printf("gl.StencilMask(%v) %v", mask, errstr)
-		//	}()
-		//	C.glStencilMask(C.GLuint(mask))
-		// }
-		fn, ok := d.(*ast.FuncDecl)
-		if !ok {
-			continue
-		}
-		if fn.Recv != nil {
-			continue
-		}
-
-		var (
-			params      []string
-			paramTypes  []string
-			results     []string
-			resultTypes []string
-		)
-
-		// Print function signature.
-		fmt.Fprintf(buf, "func %s(", fn.Name.Name)
-		for i, p := range fn.Type.Params.List {
-			if i > 0 {
-				fmt.Fprint(buf, ", ")
-			}
-			ty := typeString(p.Type)
-			for i, n := range p.Names {
-				if i > 0 {
-					fmt.Fprint(buf, ", ")
-				}
-				fmt.Fprintf(buf, "%s ", n.Name)
-				params = append(params, n.Name)
-				paramTypes = append(paramTypes, ty)
-			}
-			fmt.Fprint(buf, ty)
-		}
-		fmt.Fprintf(buf, ") (")
-		if fn.Type.Results != nil {
-			for i, r := range fn.Type.Results.List {
-				if i > 0 {
-					fmt.Fprint(buf, ", ")
-				}
-				ty := typeString(r.Type)
-				if len(r.Names) == 0 {
-					name := fmt.Sprintf("r%d", i)
-					fmt.Fprintf(buf, "%s ", name)
-					results = append(results, name)
-					resultTypes = append(resultTypes, ty)
-				}
-				for i, n := range r.Names {
-					if i > 0 {
-						fmt.Fprint(buf, ", ")
-					}
-					fmt.Fprintf(buf, "%s ", n.Name)
-					results = append(results, n.Name)
-					resultTypes = append(resultTypes, ty)
-				}
-				fmt.Fprint(buf, ty)
-			}
-		}
-		fmt.Fprintf(buf, ") {\n")
-
-		// Insert a defer block for tracing.
-		fmt.Fprintf(buf, "defer func() {\n")
-		fmt.Fprintf(buf, "\terrstr := errDrain()\n")
-		switch fn.Name.Name {
-		case "GetUniformLocation", "GetAttribLocation":
-			fmt.Fprintf(buf, "\tr0.name = name\n")
-		}
-		fmt.Fprintf(buf, "\tlog.Printf(\"gl.%s(", fn.Name.Name)
-		for i, p := range paramTypes {
-			if i > 0 {
-				fmt.Fprint(buf, ", ")
-			}
-			fmt.Fprint(buf, typePrinter(p))
-		}
-		fmt.Fprintf(buf, ") ")
-		if len(resultTypes) > 1 {
-			fmt.Fprint(buf, "(")
-		}
-		for i, r := range resultTypes {
-			if i > 0 {
-				fmt.Fprint(buf, ", ")
-			}
-			fmt.Fprint(buf, typePrinter(r))
-		}
-		if len(resultTypes) > 1 {
-			fmt.Fprint(buf, ") ")
-		}
-		fmt.Fprintf(buf, "%%v\"")
-		for i, p := range paramTypes {
-			fmt.Fprintf(buf, ", %s", typePrinterArg(p, params[i]))
-		}
-		for i, r := range resultTypes {
-			fmt.Fprintf(buf, ", %s", typePrinterArg(r, results[i]))
-		}
-		fmt.Fprintf(buf, ", errstr)\n")
-		fmt.Fprintf(buf, "}()\n")
-
-		// Print original body of function.
-		for _, s := range fn.Body.List {
-			printer.Fprint(buf, fset, s)
-			fmt.Fprintf(buf, "\n")
-		}
-		fmt.Fprintf(buf, "}\n\n")
-	}
-
-	b, err := format.Source(buf.Bytes())
-	if err != nil {
-		os.Stdout.Write(buf.Bytes())
-		die(err)
-	}
-
-	if *outfile == "" {
-		os.Stdout.Write(b)
-		return
-	}
-	if err := ioutil.WriteFile(*outfile, b, 0666); err != nil {
-		die(err)
-	}
-}
-
-const preamble = `// Copyright 2014 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.
-
-// Generated from gl.go using go generate. DO NOT EDIT.
-// See doc.go for details.
-
-// +build linux darwin
-// +build gldebug
-
-package gl
-
-/*
-#include <stdlib.h>
-
-#ifdef os_linux
-#include <GLES2/gl2.h>
-#endif
-#ifdef os_darwin_arm
-#include <OpenGLES/ES2/gl.h>
-#endif
-#ifdef os_darwin_amd64
-#include <OpenGL/gl3.h>
-#endif
-*/
-import "C"
-
-import (
-	"fmt"
-	"log"
-	"unsafe"
-)
-
-func errDrain() string {
-	var errs []Enum
-	for {
-		e := Enum(C.glGetError())
-		if e == 0 {
-			break
-		}
-		errs = append(errs, e)
-	}
-	if len(errs) > 0 {
-		return fmt.Sprintf(" error: %v", errs)
-	}
-	return ""
-}
-
-`
-
-type entry struct {
-	name  string
-	value int
-}
-
-// enum builds a list of all GL constants that make up the gl.Enum type.
-func enum(f *ast.File) []entry {
-	var entries []entry
-	for _, d := range f.Decls {
-		gendecl, ok := d.(*ast.GenDecl)
-		if !ok {
-			continue
-		}
-		if gendecl.Tok != token.CONST {
-			continue
-		}
-		for _, s := range gendecl.Specs {
-			v, ok := s.(*ast.ValueSpec)
-			if !ok {
-				continue
-			}
-			if len(v.Names) != 1 || len(v.Values) != 1 {
-				continue
-			}
-			val, err := strconv.ParseInt(v.Values[0].(*ast.BasicLit).Value, 0, 32)
-			if err != nil {
-				log.Fatalf("enum %s: %v", v.Names[0].Name, err)
-			}
-			entries = append(entries, entry{v.Names[0].Name, int(val)})
-		}
-	}
-	return entries
-}
-
-func dedup(entries []entry) []entry {
-	// Find all duplicates. Use "%d" as the name of any value with duplicates.
-	seen := make(map[int]int)
-	for _, e := range entries {
-		seen[e.value]++
-	}
-	var dedup []entry
-	for _, e := range entries {
-		switch seen[e.value] {
-		case 0: // skip, already here
-		case 1:
-			dedup = append(dedup, e)
-		default:
-			// value is duplicated
-			dedup = append(dedup, entry{fmt.Sprintf("%d", e.value), e.value})
-			seen[e.value] = 0
-		}
-	}
-	return dedup
-}
diff --git a/go/src/golang.org/x/mobile/gl/gl.go b/go/src/golang.org/x/mobile/gl/gl.go
deleted file mode 100644
index bc764f3..0000000
--- a/go/src/golang.org/x/mobile/gl/gl.go
+++ /dev/null
@@ -1,1209 +0,0 @@
-// Copyright 2014 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.
-
-// +build linux darwin
-// +build !gldebug
-
-package gl
-
-// TODO(crawshaw): build on more host platforms (makes it easier to gobind).
-// TODO(crawshaw): expand to cover OpenGL ES 3.
-// TODO(crawshaw): should functions on specific types become methods? E.g.
-//                 	func (t Texture) Bind(target Enum)
-//                 this seems natural in Go, but moves us slightly
-//                 further away from the underlying OpenGL spec.
-
-/*
-#include <stdlib.h>
-
-#ifdef os_linux
-#include <GLES2/gl2.h>
-#endif
-#ifdef os_darwin_arm
-#include <OpenGLES/ES2/glext.h>
-#endif
-#ifdef os_darwin_amd64
-#include <OpenGL/gl3.h>
-#endif
-*/
-import "C"
-
-import "unsafe"
-
-// ActiveTexture sets the active texture unit.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glActiveTexture.xhtml
-func ActiveTexture(texture Enum) {
-	C.glActiveTexture(texture.c())
-}
-
-// AttachShader attaches a shader to a program.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glAttachShader.xhtml
-func AttachShader(p Program, s Shader) {
-	C.glAttachShader(p.c(), s.c())
-}
-
-// BindAttribLocation binds a vertex attribute index with a named
-// variable.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glBindAttribLocation.xhtml
-func BindAttribLocation(p Program, a Attrib, name string) {
-	str := unsafe.Pointer(C.CString(name))
-	defer C.free(str)
-	C.glBindAttribLocation(p.c(), a.c(), (*C.GLchar)(str))
-}
-
-// BindBuffer binds a buffer.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glBindBuffer.xhtml
-func BindBuffer(target Enum, b Buffer) {
-	C.glBindBuffer(target.c(), b.c())
-}
-
-// BindFramebuffer binds a framebuffer.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glBindFramebuffer.xhtml
-func BindFramebuffer(target Enum, fb Framebuffer) {
-	C.glBindFramebuffer(target.c(), fb.c())
-}
-
-// BindRenderbuffer binds a render buffer.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glBindRenderbuffer.xhtml
-func BindRenderbuffer(target Enum, rb Renderbuffer) {
-	C.glBindRenderbuffer(target.c(), rb.c())
-}
-
-// BindTexture binds a texture.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glBindTexture.xhtml
-func BindTexture(target Enum, t Texture) {
-	C.glBindTexture(target.c(), t.c())
-}
-
-// BlendColor sets the blend color.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glBlendColor.xhtml
-func BlendColor(red, green, blue, alpha float32) {
-	blendColor(red, green, blue, alpha)
-}
-
-// BlendEquation sets both RGB and alpha blend equations.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glBlendEquation.xhtml
-func BlendEquation(mode Enum) {
-	C.glBlendEquation(mode.c())
-}
-
-// BlendEquationSeparate sets RGB and alpha blend equations separately.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glBlendEquationSeparate.xhtml
-func BlendEquationSeparate(modeRGB, modeAlpha Enum) {
-	C.glBlendEquationSeparate(modeRGB.c(), modeAlpha.c())
-}
-
-// BlendFunc sets the pixel blending factors.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glBlendFunc.xhtml
-func BlendFunc(sfactor, dfactor Enum) {
-	C.glBlendFunc(sfactor.c(), dfactor.c())
-}
-
-// BlendFunc sets the pixel RGB and alpha blending factors separately.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glBlendFuncSeparate.xhtml
-func BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha Enum) {
-	C.glBlendFuncSeparate(sfactorRGB.c(), dfactorRGB.c(), sfactorAlpha.c(), dfactorAlpha.c())
-}
-
-// BufferData creates a new data store for the bound buffer object.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glBufferData.xhtml
-func BufferData(target Enum, usage Enum, src []byte) {
-	C.glBufferData(target.c(), C.GLsizeiptr(len(src)), unsafe.Pointer(&src[0]), usage.c())
-}
-
-// BufferInit creates a new unitialized data store for the bound buffer object.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glBufferData.xhtml
-func BufferInit(target Enum, size int, usage Enum) {
-	C.glBufferData(target.c(), C.GLsizeiptr(size), nil, usage.c())
-}
-
-// BufferSubData sets some of data in the bound buffer object.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glBufferSubData.xhtml
-func BufferSubData(target Enum, offset int, data []byte) {
-	C.glBufferSubData(target.c(), C.GLintptr(offset), C.GLsizeiptr(len(data)), unsafe.Pointer(&data[0]))
-}
-
-// CheckFramebufferStatus reports the completeness status of the
-// active framebuffer.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glCheckFramebufferStatus.xhtml
-func CheckFramebufferStatus(target Enum) Enum {
-	return Enum(C.glCheckFramebufferStatus(target.c()))
-}
-
-// Clear clears the window.
-//
-// The behavior of Clear is influenced by the pixel ownership test,
-// the scissor test, dithering, and the buffer writemasks.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glClear.xhtml
-func Clear(mask Enum) {
-	C.glClear(C.GLbitfield(mask))
-}
-
-// ClearColor specifies the RGBA values used to clear color buffers.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glClearColor.xhtml
-func ClearColor(red, green, blue, alpha float32) {
-	clearColor(red, green, blue, alpha)
-}
-
-// ClearDepthf sets the depth value used to clear the depth buffer.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glClearDepthf.xhtml
-func ClearDepthf(d float32) {
-	clearDepthf(d)
-}
-
-// ClearStencil sets the index used to clear the stencil buffer.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glClearStencil.xhtml
-func ClearStencil(s int) {
-	C.glClearStencil(C.GLint(s))
-}
-
-// ColorMask specifies whether color components in the framebuffer
-// can be written.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glColorMask.xhtml
-func ColorMask(red, green, blue, alpha bool) {
-	C.glColorMask(glBoolean(red), glBoolean(green), glBoolean(blue), glBoolean(alpha))
-}
-
-// CompileShader compiles the source code of s.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glCompileShader.xhtml
-func CompileShader(s Shader) {
-	C.glCompileShader(s.c())
-}
-
-// CompressedTexImage2D writes a compressed 2D texture.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glCompressedTexImage2D.xhtml
-func CompressedTexImage2D(target Enum, level int, internalformat Enum, width, height, border int, data []byte) {
-	C.glCompressedTexImage2D(target.c(), C.GLint(level), internalformat.c(), C.GLsizei(width), C.GLsizei(height), C.GLint(border), C.GLsizei(len(data)), unsafe.Pointer(&data[0]))
-}
-
-// CompressedTexSubImage2D writes a subregion of a compressed 2D texture.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glCompressedTexSubImage2D.xhtml
-func CompressedTexSubImage2D(target Enum, level, xoffset, yoffset, width, height int, format Enum, data []byte) {
-	C.glCompressedTexSubImage2D(target.c(), C.GLint(level), C.GLint(xoffset), C.GLint(yoffset), C.GLsizei(width), C.GLsizei(height), format.c(), C.GLsizei(len(data)), unsafe.Pointer(&data[0]))
-}
-
-// CopyTexImage2D writes a 2D texture from the current framebuffer.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glCopyTexImage2D.xhtml
-func CopyTexImage2D(target Enum, level int, internalformat Enum, x, y, width, height, border int) {
-	C.glCopyTexImage2D(target.c(), C.GLint(level), internalformat.c(), C.GLint(x), C.GLint(y), C.GLsizei(width), C.GLsizei(height), C.GLint(border))
-}
-
-// CopyTexSubImage2D writes a 2D texture subregion from the
-// current framebuffer.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glCopyTexSubImage2D.xhtml
-func CopyTexSubImage2D(target Enum, level, xoffset, yoffset, x, y, width, height int) {
-	C.glCopyTexSubImage2D(target.c(), C.GLint(level), C.GLint(xoffset), C.GLint(yoffset), C.GLint(x), C.GLint(y), C.GLsizei(width), C.GLsizei(height))
-}
-
-// CreateProgram creates a new empty program object.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glCreateProgram.xhtml
-func CreateProgram() Program {
-	return Program{Value: uint32(C.glCreateProgram())}
-}
-
-// CreateShader creates a new empty shader object.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glCreateShader.xhtml
-func CreateShader(ty Enum) Shader {
-	return Shader{Value: uint32(C.glCreateShader(ty.c()))}
-}
-
-// CullFace specifies which polygons are candidates for culling.
-//
-// Valid modes: FRONT, BACK, FRONT_AND_BACK.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glCullFace.xhtml
-func CullFace(mode Enum) {
-	C.glCullFace(mode.c())
-}
-
-// DeleteBuffer deletes the given buffer object.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glDeleteBuffers.xhtml
-func DeleteBuffer(v Buffer) {
-	C.glDeleteBuffers(1, (*C.GLuint)(&v.Value))
-}
-
-// DeleteFramebuffer deletes the given framebuffer object.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glDeleteFramebuffers.xhtml
-func DeleteFramebuffer(v Framebuffer) {
-	C.glDeleteFramebuffers(1, (*C.GLuint)(&v.Value))
-}
-
-// DeleteProgram deletes the given program object.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glDeleteProgram.xhtml
-func DeleteProgram(p Program) {
-	C.glDeleteProgram(p.c())
-}
-
-// DeleteRenderbuffer deletes the given render buffer object.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glDeleteRenderbuffers.xhtml
-func DeleteRenderbuffer(v Renderbuffer) {
-	C.glDeleteRenderbuffers(1, (*C.GLuint)(&v.Value))
-}
-
-// DeleteShader deletes shader s.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glDeleteShader.xhtml
-func DeleteShader(s Shader) {
-	C.glDeleteShader(s.c())
-}
-
-// DeleteTexture deletes the given texture object.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glDeleteTextures.xhtml
-func DeleteTexture(v Texture) {
-	C.glDeleteTextures(1, (*C.GLuint)(&v.Value))
-}
-
-// DepthFunc sets the function used for depth buffer comparisons.
-//
-// Valid fn values:
-//	NEVER
-//	LESS
-//	EQUAL
-//	LEQUAL
-//	GREATER
-//	NOTEQUAL
-//	GEQUAL
-//	ALWAYS
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glDepthFunc.xhtml
-func DepthFunc(fn Enum) {
-	C.glDepthFunc(fn.c())
-}
-
-// DepthMask sets the depth buffer enabled for writing.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glDepthMask.xhtml
-func DepthMask(flag bool) {
-	C.glDepthMask(glBoolean(flag))
-}
-
-// DepthRangef sets the mapping from normalized device coordinates to
-// window coordinates.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glDepthRangef.xhtml
-func DepthRangef(n, f float32) {
-	depthRangef(n, f)
-}
-
-// DetachShader detaches the shader s from the program p.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glDetachShader.xhtml
-func DetachShader(p Program, s Shader) {
-	C.glDetachShader(p.c(), s.c())
-}
-
-// Disable disables various GL capabilities.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glDisable.xhtml
-func Disable(cap Enum) {
-	C.glDisable(cap.c())
-}
-
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glDisableVertexAttribArray.xhtml
-func DisableVertexAttribArray(index Attrib) {
-	C.glDisableVertexAttribArray(index.c())
-}
-
-// DrawArrays renders geometric primitives from the bound data.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glDrawArrays.xhtml
-func DrawArrays(mode Enum, first, count int) {
-	C.glDrawArrays(mode.c(), C.GLint(first), C.GLsizei(count))
-}
-
-// DrawElements renders primitives from a bound buffer.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glDrawElements.xhtml
-func DrawElements(mode, ty Enum, offset, count int) {
-	C.glDrawElements(mode.c(), C.GLsizei(count), ty.c(), unsafe.Pointer(uintptr(offset)))
-}
-
-// TODO(crawshaw): consider DrawElements8 / DrawElements16 / DrawElements32
-
-// Enable enables various GL capabilities.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glEnable.xhtml
-func Enable(cap Enum) {
-	C.glEnable(cap.c())
-}
-
-// EnableVertexAttribArray enables a vertex attribute array.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glEnableVertexAttribArray.xhtml
-func EnableVertexAttribArray(index Attrib) {
-	C.glEnableVertexAttribArray(index.c())
-}
-
-// Finish blocks until the effects of all previously called GL
-// commands are complete.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glFinish.xhtml
-func Finish() {
-	C.glFinish()
-}
-
-// Flush empties all buffers. It does not block.
-//
-// An OpenGL implementation may buffer network communication,
-// the command stream, or data inside the graphics accelerator.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glFlush.xhtml
-func Flush() {
-	C.glFlush()
-}
-
-// FramebufferRenderbuffer attaches rb to the current frame buffer.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glFramebufferRenderbuffer.xhtml
-func FramebufferRenderbuffer(target, attachment, rbTarget Enum, rb Renderbuffer) {
-	C.glFramebufferRenderbuffer(target.c(), attachment.c(), rbTarget.c(), rb.c())
-}
-
-// FramebufferTexture2D attaches the t to the current frame buffer.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glFramebufferTexture2D.xhtml
-func FramebufferTexture2D(target, attachment, texTarget Enum, t Texture, level int) {
-	C.glFramebufferTexture2D(target.c(), attachment.c(), texTarget.c(), t.c(), C.GLint(level))
-}
-
-// FrontFace defines which polygons are front-facing.
-//
-// Valid modes: CW, CCW.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glFrontFace.xhtml
-func FrontFace(mode Enum) {
-	C.glFrontFace(mode.c())
-}
-
-// GenBuffer creates a buffer object.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGenBuffers.xhtml
-func GenBuffer() Buffer {
-	var b Buffer
-	C.glGenBuffers(1, (*C.GLuint)(&b.Value))
-	return b
-}
-
-// GenerateMipmap generates mipmaps for the current texture.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGenerateMipmap.xhtml
-func GenerateMipmap(target Enum) {
-	C.glGenerateMipmap(target.c())
-}
-
-// GenFramebuffer creates a framebuffer object.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGenFramebuffers.xhtml
-func GenFramebuffer() Framebuffer {
-	var b Framebuffer
-	C.glGenFramebuffers(1, (*C.GLuint)(&b.Value))
-	return b
-}
-
-// GenRenderbuffer create a renderbuffer object.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGenRenderbuffers.xhtml
-func GenRenderbuffer() Renderbuffer {
-	var b Renderbuffer
-	C.glGenRenderbuffers(1, (*C.GLuint)(&b.Value))
-	return b
-}
-
-// GenTexture creates a texture object.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGenTextures.xhtml
-func GenTexture() Texture {
-	var t Texture
-	C.glGenTextures(1, (*C.GLuint)(&t.Value))
-	return t
-}
-
-// GetActiveAttrib returns details about an attribute variable.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetActiveAttrib.xhtml
-func GetActiveAttrib(p Program, a Attrib) (name string, size int, ty Enum) {
-	bufSize := GetProgrami(p, ACTIVE_ATTRIBUTE_MAX_LENGTH)
-	buf := C.malloc(C.size_t(bufSize))
-	defer C.free(buf)
-
-	var cSize C.GLint
-	var cType C.GLenum
-	C.glGetActiveAttrib(p.c(), a.c(), C.GLsizei(bufSize), nil, &cSize, &cType, (*C.GLchar)(buf))
-	return C.GoString((*C.char)(buf)), int(cSize), Enum(cType)
-}
-
-// GetActiveUniform returns details about an active uniform variable.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetActiveUniform.xhtml
-func GetActiveUniform(p Program, u Uniform) (name string, size int, ty Enum) {
-	bufSize := GetProgrami(p, ACTIVE_UNIFORM_MAX_LENGTH)
-	buf := C.malloc(C.size_t(bufSize))
-	defer C.free(buf)
-
-	var cSize C.GLint
-	var cType C.GLenum
-
-	C.glGetActiveUniform(p.c(), C.GLuint(u.Value), C.GLsizei(bufSize), nil, &cSize, &cType, (*C.GLchar)(buf))
-	return C.GoString((*C.char)(buf)), int(cSize), Enum(cType)
-}
-
-// GetAttachedShaders returns the shader objects attached to program p.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetAttachedShaders.xhtml
-func GetAttachedShaders(p Program) []Shader {
-	shadersLen := GetProgrami(p, ATTACHED_SHADERS)
-	var n C.GLsizei
-	buf := make([]C.GLuint, shadersLen)
-	C.glGetAttachedShaders(p.c(), C.GLsizei(shadersLen), &n, &buf[0])
-	buf = buf[:int(n)]
-	shaders := make([]Shader, len(buf))
-	for i, s := range buf {
-		shaders[i] = Shader{Value: uint32(s)}
-	}
-	return shaders
-}
-
-// GetAttribLocation finds a program attribute variable by name.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetAttribLocation.xhtml
-func GetAttribLocation(p Program, name string) Attrib {
-	str := unsafe.Pointer(C.CString(name))
-	defer C.free(str)
-	return Attrib{Value: uint(C.glGetAttribLocation(p.c(), (*C.GLchar)(str)))}
-}
-
-// GetBooleanv returns the boolean values of parameter pname.
-//
-// Many boolean parameters can be queried more easily using IsEnabled.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGet.xhtml
-func GetBooleanv(dst []bool, pname Enum) {
-	buf := make([]C.GLboolean, len(dst))
-	C.glGetBooleanv(pname.c(), &buf[0])
-	for i, v := range buf {
-		dst[i] = v != 0
-	}
-}
-
-// GetFloatv returns the float values of parameter pname.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGet.xhtml
-func GetFloatv(dst []float32, pname Enum) {
-	C.glGetFloatv(pname.c(), (*C.GLfloat)(&dst[0]))
-}
-
-// GetIntegerv returns the int values of parameter pname.
-//
-// Single values may be queried more easily using GetInteger.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGet.xhtml
-func GetIntegerv(pname Enum, data []int32) {
-	buf := make([]C.GLint, len(data))
-	C.glGetIntegerv(pname.c(), &buf[0])
-	for i, v := range buf {
-		data[i] = int32(v)
-	}
-}
-
-// GetInteger returns the int value of parameter pname.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGet.xhtml
-func GetInteger(pname Enum) int {
-	var v C.GLint
-	C.glGetIntegerv(pname.c(), &v)
-	return int(v)
-}
-
-// GetBufferParameteri returns a parameter for the active buffer.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetBufferParameteriv.xhtml
-func GetBufferParameteri(target, pname Enum) int {
-	var params C.GLint
-	C.glGetBufferParameteriv(target.c(), pname.c(), &params)
-	return int(params)
-}
-
-// GetError returns the next error.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetError.xhtml
-func GetError() Enum {
-	return Enum(C.glGetError())
-}
-
-// GetFramebufferAttachmentParameteri returns attachment parameters
-// for the active framebuffer object.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetFramebufferAttachmentParameteriv.xhtml
-func GetFramebufferAttachmentParameteri(target, attachment, pname Enum) int {
-	var params C.GLint
-	C.glGetFramebufferAttachmentParameteriv(target.c(), attachment.c(), pname.c(), &params)
-	return int(params)
-}
-
-// GetProgrami returns a parameter value for a program.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetProgramiv.xhtml
-func GetProgrami(p Program, pname Enum) int {
-	var params C.GLint
-	C.glGetProgramiv(p.c(), pname.c(), &params)
-	return int(params)
-}
-
-// GetProgramInfoLog returns the information log for a program.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetProgramInfoLog.xhtml
-func GetProgramInfoLog(p Program) string {
-	infoLen := GetProgrami(p, INFO_LOG_LENGTH)
-	buf := C.malloc(C.size_t(infoLen))
-	C.free(buf)
-	C.glGetProgramInfoLog(p.c(), C.GLsizei(infoLen), nil, (*C.GLchar)(buf))
-	return C.GoString((*C.char)(buf))
-}
-
-// GetRenderbufferParameteri returns a parameter value for a render buffer.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetRenderbufferParameteriv.xhtml
-func GetRenderbufferParameteri(target, pname Enum) int {
-	var params C.GLint
-	C.glGetRenderbufferParameteriv(target.c(), pname.c(), &params)
-	return int(params)
-}
-
-// GetRenderbufferParameteri returns a parameter value for a shader.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetShaderiv.xhtml
-func GetShaderi(s Shader, pname Enum) int {
-	var params C.GLint
-	C.glGetShaderiv(s.c(), pname.c(), &params)
-	return int(params)
-}
-
-// GetShaderInfoLog returns the information log for a shader.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetShaderInfoLog.xhtml
-func GetShaderInfoLog(s Shader) string {
-	infoLen := GetShaderi(s, INFO_LOG_LENGTH)
-	buf := C.malloc(C.size_t(infoLen))
-	defer C.free(buf)
-	C.glGetShaderInfoLog(s.c(), C.GLsizei(infoLen), nil, (*C.GLchar)(buf))
-	return C.GoString((*C.char)(buf))
-}
-
-// GetShaderPrecisionFormat returns range and precision limits for
-// shader types.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetShaderPrecisionFormat.xhtml
-func GetShaderPrecisionFormat(shadertype, precisiontype Enum) (rangeLow, rangeHigh, precision int) {
-	const glintSize = 4
-	var cRange [2]C.GLint
-	var cPrecision C.GLint
-
-	C.glGetShaderPrecisionFormat(shadertype.c(), precisiontype.c(), &cRange[0], &cPrecision)
-	return int(cRange[0]), int(cRange[1]), int(cPrecision)
-}
-
-// GetShaderSource returns source code of shader s.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetShaderSource.xhtml
-func GetShaderSource(s Shader) string {
-	sourceLen := GetShaderi(s, SHADER_SOURCE_LENGTH)
-	if sourceLen == 0 {
-		return ""
-	}
-	buf := C.malloc(C.size_t(sourceLen))
-	defer C.free(buf)
-	C.glGetShaderSource(s.c(), C.GLsizei(sourceLen), nil, (*C.GLchar)(buf))
-	return C.GoString((*C.char)(buf))
-}
-
-// GetString reports current GL state.
-//
-// Valid name values:
-//	EXTENSIONS
-//	RENDERER
-//	SHADING_LANGUAGE_VERSION
-//	VENDOR
-//	VERSION
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetString.xhtml
-func GetString(name Enum) string {
-	// Bounce through unsafe.Pointer, because on some platforms
-	// GetString returns an *unsigned char which doesn't convert.
-	return C.GoString((*C.char)((unsafe.Pointer)(C.glGetString(name.c()))))
-}
-
-// GetTexParameterfv returns the float values of a texture parameter.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetTexParameter.xhtml
-func GetTexParameterfv(dst []float32, target, pname Enum) {
-	C.glGetTexParameterfv(target.c(), pname.c(), (*C.GLfloat)(&dst[0]))
-}
-
-// GetTexParameteriv returns the int values of a texture parameter.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetTexParameter.xhtml
-func GetTexParameteriv(dst []int32, target, pname Enum) {
-	C.glGetTexParameteriv(target.c(), pname.c(), (*C.GLint)(&dst[0]))
-}
-
-// GetUniformfv returns the float values of a uniform variable.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetUniform.xhtml
-func GetUniformfv(dst []float32, src Uniform, p Program) {
-	C.glGetUniformfv(p.c(), src.c(), (*C.GLfloat)(&dst[0]))
-}
-
-// GetUniformiv returns the float values of a uniform variable.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetUniform.xhtml
-func GetUniformiv(dst []int32, src Uniform, p Program) {
-	C.glGetUniformiv(p.c(), src.c(), (*C.GLint)(&dst[0]))
-}
-
-// GetUniformLocation returns the location of uniform variable.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetUniformLocation.xhtml
-func GetUniformLocation(p Program, name string) Uniform {
-	str := C.CString(name)
-	defer C.free((unsafe.Pointer)(str))
-	return Uniform{Value: int32(C.glGetUniformLocation(p.c(), (*C.GLchar)(str)))}
-}
-
-// GetVertexAttribf reads the float value of a vertex attribute.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetVertexAttrib.xhtml
-func GetVertexAttribf(src Attrib, pname Enum) float32 {
-	var params C.GLfloat
-	C.glGetVertexAttribfv(src.c(), pname.c(), &params)
-	return float32(params)
-}
-
-// GetVertexAttribfv reads float values of a vertex attribute.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetVertexAttrib.xhtml
-func GetVertexAttribfv(dst []float32, src Attrib, pname Enum) {
-	C.glGetVertexAttribfv(src.c(), pname.c(), (*C.GLfloat)(&dst[0]))
-}
-
-// GetVertexAttribi reads the int value of a vertex attribute.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetVertexAttrib.xhtml
-func GetVertexAttribi(src Attrib, pname Enum) int32 {
-	var params C.GLint
-	C.glGetVertexAttribiv(src.c(), pname.c(), &params)
-	return int32(params)
-}
-
-// GetVertexAttribiv reads int values of a vertex attribute.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glGetVertexAttrib.xhtml
-func GetVertexAttribiv(dst []int32, src Attrib, pname Enum) {
-	C.glGetVertexAttribiv(src.c(), pname.c(), (*C.GLint)(&dst[0]))
-}
-
-// TODO(crawshaw): glGetVertexAttribPointerv
-
-// Hint sets implementation-specific modes.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glHint.xhtml
-func Hint(target, mode Enum) {
-	C.glHint(target.c(), mode.c())
-}
-
-// IsBuffer reports if b is a valid buffer.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glIsBuffer.xhtml
-func IsBuffer(b Buffer) bool {
-	return C.glIsBuffer(b.c()) != 0
-}
-
-// IsEnabled reports if cap is an enabled capability.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glIsEnabled.xhtml
-func IsEnabled(cap Enum) bool {
-	return C.glIsEnabled(cap.c()) != 0
-}
-
-// IsFramebuffer reports if fb is a valid frame buffer.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glIsFramebuffer.xhtml
-func IsFramebuffer(fb Framebuffer) bool {
-	return C.glIsFramebuffer(fb.c()) != 0
-}
-
-// IsProgram reports if p is a valid program object.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glIsProgram.xhtml
-func IsProgram(p Program) bool {
-	return C.glIsProgram(p.c()) != 0
-}
-
-// IsRenderbuffer reports if rb is a valid render buffer.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glIsRenderbuffer.xhtml
-func IsRenderbuffer(rb Renderbuffer) bool {
-	return C.glIsRenderbuffer(rb.c()) != 0
-}
-
-// IsShader reports if s is valid shader.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glIsShader.xhtml
-func IsShader(s Shader) bool {
-	return C.glIsShader(s.c()) != 0
-}
-
-// IsTexture reports if t is a valid texture.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glIsTexture.xhtml
-func IsTexture(t Texture) bool {
-	return C.glIsTexture(t.c()) != 0
-}
-
-// LineWidth specifies the width of lines.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glLineWidth.xhtml
-func LineWidth(width float32) {
-	C.glLineWidth(C.GLfloat(width))
-}
-
-// LinkProgram links the specified program.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glLinkProgram.xhtml
-func LinkProgram(p Program) {
-	C.glLinkProgram(p.c())
-}
-
-// PixelStorei sets pixel storage parameters.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glPixelStorei.xhtml
-func PixelStorei(pname Enum, param int32) {
-	C.glPixelStorei(pname.c(), C.GLint(param))
-}
-
-// PolygonOffset sets the scaling factors for depth offsets.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glPolygonOffset.xhtml
-func PolygonOffset(factor, units float32) {
-	C.glPolygonOffset(C.GLfloat(factor), C.GLfloat(units))
-}
-
-// ReadPixels returns pixel data from a buffer.
-//
-// In GLES 3, the source buffer is controlled with ReadBuffer.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glReadPixels.xhtml
-func ReadPixels(dst []byte, x, y, width, height int, format, ty Enum) {
-	// TODO(crawshaw): support PIXEL_PACK_BUFFER in GLES3, uses offset.
-	C.glReadPixels(C.GLint(x), C.GLint(y), C.GLsizei(width), C.GLsizei(height), format.c(), ty.c(), unsafe.Pointer(&dst[0]))
-}
-
-// ReleaseShaderCompiler frees resources allocated by the shader compiler.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glReleaseShaderCompiler.xhtml
-func ReleaseShaderCompiler() {
-	C.glReleaseShaderCompiler()
-}
-
-// RenderbufferStorage establishes the data storage, format, and
-// dimensions of a renderbuffer object's image.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glRenderbufferStorage.xhtml
-func RenderbufferStorage(target, internalFormat Enum, width, height int) {
-	C.glRenderbufferStorage(target.c(), internalFormat.c(), C.GLsizei(width), C.GLsizei(height))
-}
-
-// SampleCoverage sets multisample coverage parameters.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glSampleCoverage.xhtml
-func SampleCoverage(value float32, invert bool) {
-	sampleCoverage(value, invert)
-}
-
-// Scissor defines the scissor box rectangle, in window coordinates.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glScissor.xhtml
-func Scissor(x, y, width, height int32) {
-	C.glScissor(C.GLint(x), C.GLint(y), C.GLsizei(width), C.GLsizei(height))
-}
-
-// TODO(crawshaw): ShaderBinary
-
-// ShaderSource sets the source code of s to the given source code.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glShaderSource.xhtml
-func ShaderSource(s Shader, src string) {
-	str := (*C.GLchar)(C.CString(src))
-	defer C.free(unsafe.Pointer(str))
-	C.glShaderSource(s.c(), 1, &str, nil)
-}
-
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glStencilFunc.xhtml
-func StencilFunc(fn Enum, ref int, mask uint32) {
-	C.glStencilFunc(fn.c(), C.GLint(ref), C.GLuint(mask))
-}
-
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glStencilFuncSeparate.xhtml
-func StencilFuncSeparate(face, fn Enum, ref int, mask uint32) {
-	C.glStencilFuncSeparate(face.c(), fn.c(), C.GLint(ref), C.GLuint(mask))
-}
-
-// StencilMask controls the writing of bits in the stencil planes.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glStencilMask.xhtml
-func StencilMask(mask uint32) {
-	C.glStencilMask(C.GLuint(mask))
-}
-
-// StencilMaskSeparate controls the writing of bits in the stencil planes.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glStencilMaskSeparate.xhtml
-func StencilMaskSeparate(face Enum, mask uint32) {
-	C.glStencilMaskSeparate(face.c(), C.GLuint(mask))
-}
-
-// StencilOp sets front and back stencil test actions.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glStencilOp.xhtml
-func StencilOp(fail, zfail, zpass Enum) {
-	C.glStencilOp(fail.c(), zfail.c(), zpass.c())
-}
-
-// StencilOpSeparate sets front or back stencil tests.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glStencilOpSeparate.xhtml
-func StencilOpSeparate(face, sfail, dpfail, dppass Enum) {
-	C.glStencilOpSeparate(face.c(), sfail.c(), dpfail.c(), dppass.c())
-}
-
-// TexImage2D writes a 2D texture image.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glTexImage2D.xhtml
-func TexImage2D(target Enum, level int, width, height int, format Enum, ty Enum, data []byte) {
-	// TODO(crawshaw): GLES3 offset for PIXEL_UNPACK_BUFFER and PIXEL_PACK_BUFFER.
-	p := unsafe.Pointer(nil)
-	if len(data) > 0 {
-		p = unsafe.Pointer(&data[0])
-	}
-	C.glTexImage2D(target.c(), C.GLint(level), C.GLint(format), C.GLsizei(width), C.GLsizei(height), 0, format.c(), ty.c(), p)
-}
-
-// TexSubImage2D writes a subregion of a 2D texture image.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glTexSubImage2D.xhtml
-func TexSubImage2D(target Enum, level int, x, y, width, height int, format, ty Enum, data []byte) {
-	// TODO(crawshaw): GLES3 offset for PIXEL_UNPACK_BUFFER and PIXEL_PACK_BUFFER.
-	C.glTexSubImage2D(target.c(), C.GLint(level), C.GLint(x), C.GLint(y), C.GLsizei(width), C.GLsizei(height), format.c(), ty.c(), unsafe.Pointer(&data[0]))
-}
-
-// TexParameterf sets a float texture parameter.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glTexParameter.xhtml
-func TexParameterf(target, pname Enum, param float32) {
-	C.glTexParameterf(target.c(), pname.c(), C.GLfloat(param))
-}
-
-// TexParameterfv sets a float texture parameter array.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glTexParameter.xhtml
-func TexParameterfv(target, pname Enum, params []float32) {
-	C.glTexParameterfv(target.c(), pname.c(), (*C.GLfloat)(&params[0]))
-}
-
-// TexParameteri sets an integer texture parameter.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glTexParameter.xhtml
-func TexParameteri(target, pname Enum, param int) {
-	C.glTexParameteri(target.c(), pname.c(), C.GLint(param))
-}
-
-// TexParameteriv sets an integer texture parameter array.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glTexParameter.xhtml
-func TexParameteriv(target, pname Enum, params []int32) {
-	C.glTexParameteriv(target.c(), pname.c(), (*C.GLint)(&params[0]))
-}
-
-// Uniform1f writes a float uniform variable.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func Uniform1f(dst Uniform, v float32) {
-	C.glUniform1f(dst.c(), C.GLfloat(v))
-}
-
-// Uniform1fv writes a [len(src)]float uniform array.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func Uniform1fv(dst Uniform, src []float32) {
-	C.glUniform1fv(dst.c(), C.GLsizei(len(src)), (*C.GLfloat)(&src[0]))
-}
-
-// Uniform1i writes an int uniform variable.
-//
-// Uniform1i and Uniform1iv are the only two functions that may be used
-// to load uniform variables defined as sampler types. Loading samplers
-// with any other function will result in a INVALID_OPERATION error.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func Uniform1i(dst Uniform, v int) {
-	C.glUniform1i(dst.c(), C.GLint(v))
-}
-
-// Uniform1iv writes a int uniform array of len(src) elements.
-//
-// Uniform1i and Uniform1iv are the only two functions that may be used
-// to load uniform variables defined as sampler types. Loading samplers
-// with any other function will result in a INVALID_OPERATION error.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func Uniform1iv(dst Uniform, src []int32) {
-	C.glUniform1iv(dst.c(), C.GLsizei(len(src)), (*C.GLint)(&src[0]))
-}
-
-// Uniform2f writes a vec2 uniform variable.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func Uniform2f(dst Uniform, v0, v1 float32) {
-	C.glUniform2f(dst.c(), C.GLfloat(v0), C.GLfloat(v1))
-}
-
-// Uniform2fv writes a vec2 uniform array of len(src)/2 elements.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func Uniform2fv(dst Uniform, src []float32) {
-	C.glUniform2fv(dst.c(), C.GLsizei(len(src)/2), (*C.GLfloat)(&src[0]))
-}
-
-// Uniform2i writes an ivec2 uniform variable.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func Uniform2i(dst Uniform, v0, v1 int) {
-	C.glUniform2i(dst.c(), C.GLint(v0), C.GLint(v1))
-}
-
-// Uniform2iv writes an ivec2 uniform array of len(src)/2 elements.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func Uniform2iv(dst Uniform, src []int32) {
-	C.glUniform2iv(dst.c(), C.GLsizei(len(src)/2), (*C.GLint)(&src[0]))
-}
-
-// Uniform3f writes a vec3 uniform variable.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func Uniform3f(dst Uniform, v0, v1, v2 float32) {
-	C.glUniform3f(dst.c(), C.GLfloat(v0), C.GLfloat(v1), C.GLfloat(v2))
-}
-
-// Uniform3fv writes a vec3 uniform array of len(src)/3 elements.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func Uniform3fv(dst Uniform, src []float32) {
-	C.glUniform3fv(dst.c(), C.GLsizei(len(src)/3), (*C.GLfloat)(&src[0]))
-}
-
-// Uniform3i writes an ivec3 uniform variable.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func Uniform3i(dst Uniform, v0, v1, v2 int32) {
-	C.glUniform3i(dst.c(), C.GLint(v0), C.GLint(v1), C.GLint(v2))
-}
-
-// Uniform3iv writes an ivec3 uniform array of len(src)/3 elements.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func Uniform3iv(dst Uniform, src []int32) {
-	C.glUniform3iv(dst.c(), C.GLsizei(len(src)/3), (*C.GLint)(&src[0]))
-}
-
-// Uniform4f writes a vec4 uniform variable.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func Uniform4f(dst Uniform, v0, v1, v2, v3 float32) {
-	C.glUniform4f(dst.c(), C.GLfloat(v0), C.GLfloat(v1), C.GLfloat(v2), C.GLfloat(v3))
-}
-
-// Uniform4fv writes a vec4 uniform array of len(src)/4 elements.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func Uniform4fv(dst Uniform, src []float32) {
-	C.glUniform4fv(dst.c(), C.GLsizei(len(src)/4), (*C.GLfloat)(&src[0]))
-}
-
-// Uniform4i writes an ivec4 uniform variable.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func Uniform4i(dst Uniform, v0, v1, v2, v3 int32) {
-	C.glUniform4i(dst.c(), C.GLint(v0), C.GLint(v1), C.GLint(v2), C.GLint(v3))
-}
-
-// Uniform4i writes an ivec4 uniform array of len(src)/4 elements.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func Uniform4iv(dst Uniform, src []int32) {
-	C.glUniform4iv(dst.c(), C.GLsizei(len(src)/4), (*C.GLint)(&src[0]))
-}
-
-// UniformMatrix2fv writes 2x2 matrices. Each matrix uses four
-// float32 values, so the number of matrices written is len(src)/4.
-//
-// Each matrix must be supplied in column major order.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func UniformMatrix2fv(dst Uniform, src []float32) {
-	/// OpenGL ES 2 does not support transpose.
-	C.glUniformMatrix2fv(dst.c(), C.GLsizei(len(src)/4), 0, (*C.GLfloat)(&src[0]))
-}
-
-// UniformMatrix3fv writes 3x3 matrices. Each matrix uses nine
-// float32 values, so the number of matrices written is len(src)/9.
-//
-// Each matrix must be supplied in column major order.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func UniformMatrix3fv(dst Uniform, src []float32) {
-	C.glUniformMatrix3fv(dst.c(), C.GLsizei(len(src)/9), 0, (*C.GLfloat)(&src[0]))
-}
-
-// UniformMatrix4fv writes 4x4 matrices. Each matrix uses 16
-// float32 values, so the number of matrices written is len(src)/16.
-//
-// Each matrix must be supplied in column major order.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml
-func UniformMatrix4fv(dst Uniform, src []float32) {
-	C.glUniformMatrix4fv(dst.c(), C.GLsizei(len(src)/16), 0, (*C.GLfloat)(&src[0]))
-}
-
-// UseProgram sets the active program.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glUseProgram.xhtml
-func UseProgram(p Program) {
-	C.glUseProgram(p.c())
-}
-
-// ValidateProgram checks to see whether the executables contained in
-// program can execute given the current OpenGL state.
-//
-// Typically only used for debugging.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glValidateProgram.xhtml
-func ValidateProgram(p Program) {
-	C.glValidateProgram(p.c())
-}
-
-// VertexAttrib1f writes a float vertex attribute.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml
-func VertexAttrib1f(dst Attrib, x float32) {
-	C.glVertexAttrib1f(dst.c(), C.GLfloat(x))
-}
-
-// VertexAttrib1fv writes a float vertex attribute.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml
-func VertexAttrib1fv(dst Attrib, src []float32) {
-	C.glVertexAttrib1fv(dst.c(), (*C.GLfloat)(&src[0]))
-}
-
-// VertexAttrib2f writes a vec2 vertex attribute.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml
-func VertexAttrib2f(dst Attrib, x, y float32) {
-	C.glVertexAttrib2f(dst.c(), C.GLfloat(x), C.GLfloat(y))
-}
-
-// VertexAttrib2fv writes a vec2 vertex attribute.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml
-func VertexAttrib2fv(dst Attrib, src []float32) {
-	C.glVertexAttrib2fv(dst.c(), (*C.GLfloat)(&src[0]))
-}
-
-// VertexAttrib3f writes a vec3 vertex attribute.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml
-func VertexAttrib3f(dst Attrib, x, y, z float32) {
-	C.glVertexAttrib3f(dst.c(), C.GLfloat(x), C.GLfloat(y), C.GLfloat(z))
-}
-
-// VertexAttrib3fv writes a vec3 vertex attribute.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml
-func VertexAttrib3fv(dst Attrib, src []float32) {
-	C.glVertexAttrib3fv(dst.c(), (*C.GLfloat)(&src[0]))
-}
-
-// VertexAttrib4f writes a vec4 vertex attribute.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml
-func VertexAttrib4f(dst Attrib, x, y, z, w float32) {
-	C.glVertexAttrib4f(dst.c(), C.GLfloat(x), C.GLfloat(y), C.GLfloat(z), C.GLfloat(w))
-}
-
-// VertexAttrib4fv writes a vec4 vertex attribute.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml
-func VertexAttrib4fv(dst Attrib, src []float32) {
-	C.glVertexAttrib4fv(dst.c(), (*C.GLfloat)(&src[0]))
-}
-
-// VertexAttribPointer uses a bound buffer to define vertex attribute data.
-//
-// Direct use of VertexAttribPointer to load data into OpenGL is not
-// supported via the Go bindings. Instead, use BindBuffer with an
-// ARRAY_BUFFER and then fill it using BufferData.
-//
-// The size argument specifies the number of components per attribute,
-// between 1-4. The stride argument specifies the byte offset between
-// consecutive vertex attributes.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttribPointer.xhtml
-func VertexAttribPointer(dst Attrib, size int, ty Enum, normalized bool, stride, offset int) {
-	n := glBoolean(normalized)
-	s := C.GLsizei(stride)
-	C.glVertexAttribPointer(dst.c(), C.GLint(size), ty.c(), n, s, unsafe.Pointer(uintptr(offset)))
-}
-
-// Viewport sets the viewport, an affine transformation that
-// normalizes device coordinates to window coordinates.
-//
-// http://www.khronos.org/opengles/sdk/docs/man3/html/glViewport.xhtml
-func Viewport(x, y, width, height int) {
-	C.glViewport(C.GLint(x), C.GLint(y), C.GLsizei(width), C.GLsizei(height))
-}
diff --git a/go/src/golang.org/x/mobile/gl/gldebug.go b/go/src/golang.org/x/mobile/gl/gldebug.go
deleted file mode 100644
index 66b2edc..0000000
--- a/go/src/golang.org/x/mobile/gl/gldebug.go
+++ /dev/null
@@ -1,1882 +0,0 @@
-// Copyright 2014 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.
-
-// Generated from gl.go using go generate. DO NOT EDIT.
-// See doc.go for details.
-
-// +build linux darwin
-// +build gldebug
-
-package gl
-
-/*
-#include <stdlib.h>
-
-#ifdef os_linux
-#include <GLES2/gl2.h>
-#endif
-#ifdef os_darwin_arm
-#include <OpenGLES/ES2/gl.h>
-#endif
-#ifdef os_darwin_amd64
-#include <OpenGL/gl3.h>
-#endif
-*/
-import "C"
-
-import (
-	"fmt"
-	"log"
-	"unsafe"
-)
-
-func errDrain() string {
-	var errs []Enum
-	for {
-		e := Enum(C.glGetError())
-		if e == 0 {
-			break
-		}
-		errs = append(errs, e)
-	}
-	if len(errs) > 0 {
-		return fmt.Sprintf(" error: %v", errs)
-	}
-	return ""
-}
-
-func (v Enum) String() string {
-	switch v {
-	case 0x0:
-		return "0"
-	case 0x1:
-		return "1"
-	case 0x2:
-		return "LINE_LOOP"
-	case 0x3:
-		return "LINE_STRIP"
-	case 0x4:
-		return "TRIANGLES"
-	case 0x5:
-		return "TRIANGLE_STRIP"
-	case 0x6:
-		return "TRIANGLE_FAN"
-	case 0x300:
-		return "SRC_COLOR"
-	case 0x301:
-		return "ONE_MINUS_SRC_COLOR"
-	case 0x302:
-		return "SRC_ALPHA"
-	case 0x303:
-		return "ONE_MINUS_SRC_ALPHA"
-	case 0x304:
-		return "DST_ALPHA"
-	case 0x305:
-		return "ONE_MINUS_DST_ALPHA"
-	case 0x306:
-		return "DST_COLOR"
-	case 0x307:
-		return "ONE_MINUS_DST_COLOR"
-	case 0x308:
-		return "SRC_ALPHA_SATURATE"
-	case 0x8006:
-		return "FUNC_ADD"
-	case 0x8009:
-		return "32777"
-	case 0x883d:
-		return "BLEND_EQUATION_ALPHA"
-	case 0x800a:
-		return "FUNC_SUBTRACT"
-	case 0x800b:
-		return "FUNC_REVERSE_SUBTRACT"
-	case 0x80c8:
-		return "BLEND_DST_RGB"
-	case 0x80c9:
-		return "BLEND_SRC_RGB"
-	case 0x80ca:
-		return "BLEND_DST_ALPHA"
-	case 0x80cb:
-		return "BLEND_SRC_ALPHA"
-	case 0x8001:
-		return "CONSTANT_COLOR"
-	case 0x8002:
-		return "ONE_MINUS_CONSTANT_COLOR"
-	case 0x8003:
-		return "CONSTANT_ALPHA"
-	case 0x8004:
-		return "ONE_MINUS_CONSTANT_ALPHA"
-	case 0x8005:
-		return "BLEND_COLOR"
-	case 0x8892:
-		return "ARRAY_BUFFER"
-	case 0x8893:
-		return "ELEMENT_ARRAY_BUFFER"
-	case 0x8894:
-		return "ARRAY_BUFFER_BINDING"
-	case 0x8895:
-		return "ELEMENT_ARRAY_BUFFER_BINDING"
-	case 0x88e0:
-		return "STREAM_DRAW"
-	case 0x88e4:
-		return "STATIC_DRAW"
-	case 0x88e8:
-		return "DYNAMIC_DRAW"
-	case 0x8764:
-		return "BUFFER_SIZE"
-	case 0x8765:
-		return "BUFFER_USAGE"
-	case 0x8626:
-		return "CURRENT_VERTEX_ATTRIB"
-	case 0x404:
-		return "FRONT"
-	case 0x405:
-		return "BACK"
-	case 0x408:
-		return "FRONT_AND_BACK"
-	case 0xde1:
-		return "TEXTURE_2D"
-	case 0xb44:
-		return "CULL_FACE"
-	case 0xbe2:
-		return "BLEND"
-	case 0xbd0:
-		return "DITHER"
-	case 0xb90:
-		return "STENCIL_TEST"
-	case 0xb71:
-		return "DEPTH_TEST"
-	case 0xc11:
-		return "SCISSOR_TEST"
-	case 0x8037:
-		return "POLYGON_OFFSET_FILL"
-	case 0x809e:
-		return "SAMPLE_ALPHA_TO_COVERAGE"
-	case 0x80a0:
-		return "SAMPLE_COVERAGE"
-	case 0x500:
-		return "INVALID_ENUM"
-	case 0x501:
-		return "INVALID_VALUE"
-	case 0x502:
-		return "INVALID_OPERATION"
-	case 0x505:
-		return "OUT_OF_MEMORY"
-	case 0x900:
-		return "CW"
-	case 0x901:
-		return "CCW"
-	case 0xb21:
-		return "LINE_WIDTH"
-	case 0x846d:
-		return "ALIASED_POINT_SIZE_RANGE"
-	case 0x846e:
-		return "ALIASED_LINE_WIDTH_RANGE"
-	case 0xb45:
-		return "CULL_FACE_MODE"
-	case 0xb46:
-		return "FRONT_FACE"
-	case 0xb70:
-		return "DEPTH_RANGE"
-	case 0xb72:
-		return "DEPTH_WRITEMASK"
-	case 0xb73:
-		return "DEPTH_CLEAR_VALUE"
-	case 0xb74:
-		return "DEPTH_FUNC"
-	case 0xb91:
-		return "STENCIL_CLEAR_VALUE"
-	case 0xb92:
-		return "STENCIL_FUNC"
-	case 0xb94:
-		return "STENCIL_FAIL"
-	case 0xb95:
-		return "STENCIL_PASS_DEPTH_FAIL"
-	case 0xb96:
-		return "STENCIL_PASS_DEPTH_PASS"
-	case 0xb97:
-		return "STENCIL_REF"
-	case 0xb93:
-		return "STENCIL_VALUE_MASK"
-	case 0xb98:
-		return "STENCIL_WRITEMASK"
-	case 0x8800:
-		return "STENCIL_BACK_FUNC"
-	case 0x8801:
-		return "STENCIL_BACK_FAIL"
-	case 0x8802:
-		return "STENCIL_BACK_PASS_DEPTH_FAIL"
-	case 0x8803:
-		return "STENCIL_BACK_PASS_DEPTH_PASS"
-	case 0x8ca3:
-		return "STENCIL_BACK_REF"
-	case 0x8ca4:
-		return "STENCIL_BACK_VALUE_MASK"
-	case 0x8ca5:
-		return "STENCIL_BACK_WRITEMASK"
-	case 0xba2:
-		return "VIEWPORT"
-	case 0xc10:
-		return "SCISSOR_BOX"
-	case 0xc22:
-		return "COLOR_CLEAR_VALUE"
-	case 0xc23:
-		return "COLOR_WRITEMASK"
-	case 0xcf5:
-		return "UNPACK_ALIGNMENT"
-	case 0xd05:
-		return "PACK_ALIGNMENT"
-	case 0xd33:
-		return "MAX_TEXTURE_SIZE"
-	case 0xd3a:
-		return "MAX_VIEWPORT_DIMS"
-	case 0xd50:
-		return "SUBPIXEL_BITS"
-	case 0xd52:
-		return "RED_BITS"
-	case 0xd53:
-		return "GREEN_BITS"
-	case 0xd54:
-		return "BLUE_BITS"
-	case 0xd55:
-		return "ALPHA_BITS"
-	case 0xd56:
-		return "DEPTH_BITS"
-	case 0xd57:
-		return "STENCIL_BITS"
-	case 0x2a00:
-		return "POLYGON_OFFSET_UNITS"
-	case 0x8038:
-		return "POLYGON_OFFSET_FACTOR"
-	case 0x8069:
-		return "TEXTURE_BINDING_2D"
-	case 0x80a8:
-		return "SAMPLE_BUFFERS"
-	case 0x80a9:
-		return "SAMPLES"
-	case 0x80aa:
-		return "SAMPLE_COVERAGE_VALUE"
-	case 0x80ab:
-		return "SAMPLE_COVERAGE_INVERT"
-	case 0x86a2:
-		return "NUM_COMPRESSED_TEXTURE_FORMATS"
-	case 0x86a3:
-		return "COMPRESSED_TEXTURE_FORMATS"
-	case 0x1100:
-		return "DONT_CARE"
-	case 0x1101:
-		return "FASTEST"
-	case 0x1102:
-		return "NICEST"
-	case 0x8192:
-		return "GENERATE_MIPMAP_HINT"
-	case 0x1400:
-		return "BYTE"
-	case 0x1401:
-		return "UNSIGNED_BYTE"
-	case 0x1402:
-		return "SHORT"
-	case 0x1403:
-		return "UNSIGNED_SHORT"
-	case 0x1404:
-		return "INT"
-	case 0x1405:
-		return "UNSIGNED_INT"
-	case 0x1406:
-		return "FLOAT"
-	case 0x140c:
-		return "FIXED"
-	case 0x1902:
-		return "DEPTH_COMPONENT"
-	case 0x1906:
-		return "ALPHA"
-	case 0x1907:
-		return "RGB"
-	case 0x1908:
-		return "RGBA"
-	case 0x1909:
-		return "LUMINANCE"
-	case 0x190a:
-		return "LUMINANCE_ALPHA"
-	case 0x8033:
-		return "UNSIGNED_SHORT_4_4_4_4"
-	case 0x8034:
-		return "UNSIGNED_SHORT_5_5_5_1"
-	case 0x8363:
-		return "UNSIGNED_SHORT_5_6_5"
-	case 0x8869:
-		return "MAX_VERTEX_ATTRIBS"
-	case 0x8dfb:
-		return "MAX_VERTEX_UNIFORM_VECTORS"
-	case 0x8dfc:
-		return "MAX_VARYING_VECTORS"
-	case 0x8b4d:
-		return "MAX_COMBINED_TEXTURE_IMAGE_UNITS"
-	case 0x8b4c:
-		return "MAX_VERTEX_TEXTURE_IMAGE_UNITS"
-	case 0x8872:
-		return "MAX_TEXTURE_IMAGE_UNITS"
-	case 0x8dfd:
-		return "MAX_FRAGMENT_UNIFORM_VECTORS"
-	case 0x8b4f:
-		return "SHADER_TYPE"
-	case 0x8b80:
-		return "DELETE_STATUS"
-	case 0x8b82:
-		return "LINK_STATUS"
-	case 0x8b83:
-		return "VALIDATE_STATUS"
-	case 0x8b85:
-		return "ATTACHED_SHADERS"
-	case 0x8b86:
-		return "ACTIVE_UNIFORMS"
-	case 0x8b87:
-		return "ACTIVE_UNIFORM_MAX_LENGTH"
-	case 0x8b89:
-		return "ACTIVE_ATTRIBUTES"
-	case 0x8b8a:
-		return "ACTIVE_ATTRIBUTE_MAX_LENGTH"
-	case 0x8b8c:
-		return "SHADING_LANGUAGE_VERSION"
-	case 0x8b8d:
-		return "CURRENT_PROGRAM"
-	case 0x200:
-		return "NEVER"
-	case 0x201:
-		return "LESS"
-	case 0x202:
-		return "EQUAL"
-	case 0x203:
-		return "LEQUAL"
-	case 0x204:
-		return "GREATER"
-	case 0x205:
-		return "NOTEQUAL"
-	case 0x206:
-		return "GEQUAL"
-	case 0x207:
-		return "ALWAYS"
-	case 0x1e00:
-		return "KEEP"
-	case 0x1e01:
-		return "REPLACE"
-	case 0x1e02:
-		return "INCR"
-	case 0x1e03:
-		return "DECR"
-	case 0x150a:
-		return "INVERT"
-	case 0x8507:
-		return "INCR_WRAP"
-	case 0x8508:
-		return "DECR_WRAP"
-	case 0x1f00:
-		return "VENDOR"
-	case 0x1f01:
-		return "RENDERER"
-	case 0x1f02:
-		return "VERSION"
-	case 0x1f03:
-		return "EXTENSIONS"
-	case 0x2600:
-		return "NEAREST"
-	case 0x2601:
-		return "LINEAR"
-	case 0x2700:
-		return "NEAREST_MIPMAP_NEAREST"
-	case 0x2701:
-		return "LINEAR_MIPMAP_NEAREST"
-	case 0x2702:
-		return "NEAREST_MIPMAP_LINEAR"
-	case 0x2703:
-		return "LINEAR_MIPMAP_LINEAR"
-	case 0x2800:
-		return "TEXTURE_MAG_FILTER"
-	case 0x2801:
-		return "TEXTURE_MIN_FILTER"
-	case 0x2802:
-		return "TEXTURE_WRAP_S"
-	case 0x2803:
-		return "TEXTURE_WRAP_T"
-	case 0x1702:
-		return "TEXTURE"
-	case 0x8513:
-		return "TEXTURE_CUBE_MAP"
-	case 0x8514:
-		return "TEXTURE_BINDING_CUBE_MAP"
-	case 0x8515:
-		return "TEXTURE_CUBE_MAP_POSITIVE_X"
-	case 0x8516:
-		return "TEXTURE_CUBE_MAP_NEGATIVE_X"
-	case 0x8517:
-		return "TEXTURE_CUBE_MAP_POSITIVE_Y"
-	case 0x8518:
-		return "TEXTURE_CUBE_MAP_NEGATIVE_Y"
-	case 0x8519:
-		return "TEXTURE_CUBE_MAP_POSITIVE_Z"
-	case 0x851a:
-		return "TEXTURE_CUBE_MAP_NEGATIVE_Z"
-	case 0x851c:
-		return "MAX_CUBE_MAP_TEXTURE_SIZE"
-	case 0x84c0:
-		return "TEXTURE0"
-	case 0x84c1:
-		return "TEXTURE1"
-	case 0x84c2:
-		return "TEXTURE2"
-	case 0x84c3:
-		return "TEXTURE3"
-	case 0x84c4:
-		return "TEXTURE4"
-	case 0x84c5:
-		return "TEXTURE5"
-	case 0x84c6:
-		return "TEXTURE6"
-	case 0x84c7:
-		return "TEXTURE7"
-	case 0x84c8:
-		return "TEXTURE8"
-	case 0x84c9:
-		return "TEXTURE9"
-	case 0x84ca:
-		return "TEXTURE10"
-	case 0x84cb:
-		return "TEXTURE11"
-	case 0x84cc:
-		return "TEXTURE12"
-	case 0x84cd:
-		return "TEXTURE13"
-	case 0x84ce:
-		return "TEXTURE14"
-	case 0x84cf:
-		return "TEXTURE15"
-	case 0x84d0:
-		return "TEXTURE16"
-	case 0x84d1:
-		return "TEXTURE17"
-	case 0x84d2:
-		return "TEXTURE18"
-	case 0x84d3:
-		return "TEXTURE19"
-	case 0x84d4:
-		return "TEXTURE20"
-	case 0x84d5:
-		return "TEXTURE21"
-	case 0x84d6:
-		return "TEXTURE22"
-	case 0x84d7:
-		return "TEXTURE23"
-	case 0x84d8:
-		return "TEXTURE24"
-	case 0x84d9:
-		return "TEXTURE25"
-	case 0x84da:
-		return "TEXTURE26"
-	case 0x84db:
-		return "TEXTURE27"
-	case 0x84dc:
-		return "TEXTURE28"
-	case 0x84dd:
-		return "TEXTURE29"
-	case 0x84de:
-		return "TEXTURE30"
-	case 0x84df:
-		return "TEXTURE31"
-	case 0x84e0:
-		return "ACTIVE_TEXTURE"
-	case 0x2901:
-		return "REPEAT"
-	case 0x812f:
-		return "CLAMP_TO_EDGE"
-	case 0x8370:
-		return "MIRRORED_REPEAT"
-	case 0x8622:
-		return "VERTEX_ATTRIB_ARRAY_ENABLED"
-	case 0x8623:
-		return "VERTEX_ATTRIB_ARRAY_SIZE"
-	case 0x8624:
-		return "VERTEX_ATTRIB_ARRAY_STRIDE"
-	case 0x8625:
-		return "VERTEX_ATTRIB_ARRAY_TYPE"
-	case 0x886a:
-		return "VERTEX_ATTRIB_ARRAY_NORMALIZED"
-	case 0x8645:
-		return "VERTEX_ATTRIB_ARRAY_POINTER"
-	case 0x889f:
-		return "VERTEX_ATTRIB_ARRAY_BUFFER_BINDING"
-	case 0x8b9a:
-		return "IMPLEMENTATION_COLOR_READ_TYPE"
-	case 0x8b9b:
-		return "IMPLEMENTATION_COLOR_READ_FORMAT"
-	case 0x8b81:
-		return "COMPILE_STATUS"
-	case 0x8b84:
-		return "INFO_LOG_LENGTH"
-	case 0x8b88:
-		return "SHADER_SOURCE_LENGTH"
-	case 0x8dfa:
-		return "SHADER_COMPILER"
-	case 0x8df8:
-		return "SHADER_BINARY_FORMATS"
-	case 0x8df9:
-		return "NUM_SHADER_BINARY_FORMATS"
-	case 0x8df0:
-		return "LOW_FLOAT"
-	case 0x8df1:
-		return "MEDIUM_FLOAT"
-	case 0x8df2:
-		return "HIGH_FLOAT"
-	case 0x8df3:
-		return "LOW_INT"
-	case 0x8df4:
-		return "MEDIUM_INT"
-	case 0x8df5:
-		return "HIGH_INT"
-	case 0x8d40:
-		return "FRAMEBUFFER"
-	case 0x8d41:
-		return "RENDERBUFFER"
-	case 0x8056:
-		return "RGBA4"
-	case 0x8057:
-		return "RGB5_A1"
-	case 0x8d62:
-		return "RGB565"
-	case 0x81a5:
-		return "DEPTH_COMPONENT16"
-	case 0x8d48:
-		return "STENCIL_INDEX8"
-	case 0x8d42:
-		return "RENDERBUFFER_WIDTH"
-	case 0x8d43:
-		return "RENDERBUFFER_HEIGHT"
-	case 0x8d44:
-		return "RENDERBUFFER_INTERNAL_FORMAT"
-	case 0x8d50:
-		return "RENDERBUFFER_RED_SIZE"
-	case 0x8d51:
-		return "RENDERBUFFER_GREEN_SIZE"
-	case 0x8d52:
-		return "RENDERBUFFER_BLUE_SIZE"
-	case 0x8d53:
-		return "RENDERBUFFER_ALPHA_SIZE"
-	case 0x8d54:
-		return "RENDERBUFFER_DEPTH_SIZE"
-	case 0x8d55:
-		return "RENDERBUFFER_STENCIL_SIZE"
-	case 0x8cd0:
-		return "FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE"
-	case 0x8cd1:
-		return "FRAMEBUFFER_ATTACHMENT_OBJECT_NAME"
-	case 0x8cd2:
-		return "FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL"
-	case 0x8cd3:
-		return "FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE"
-	case 0x8ce0:
-		return "COLOR_ATTACHMENT0"
-	case 0x8d00:
-		return "DEPTH_ATTACHMENT"
-	case 0x8d20:
-		return "STENCIL_ATTACHMENT"
-	case 0x8cd5:
-		return "FRAMEBUFFER_COMPLETE"
-	case 0x8cd6:
-		return "FRAMEBUFFER_INCOMPLETE_ATTACHMENT"
-	case 0x8cd7:
-		return "FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"
-	case 0x8cd9:
-		return "FRAMEBUFFER_INCOMPLETE_DIMENSIONS"
-	case 0x8cdd:
-		return "FRAMEBUFFER_UNSUPPORTED"
-	case 0x8ca6:
-		return "FRAMEBUFFER_BINDING"
-	case 0x8ca7:
-		return "RENDERBUFFER_BINDING"
-	case 0x84e8:
-		return "MAX_RENDERBUFFER_SIZE"
-	case 0x506:
-		return "INVALID_FRAMEBUFFER_OPERATION"
-	case 0x100:
-		return "DEPTH_BUFFER_BIT"
-	case 0x400:
-		return "STENCIL_BUFFER_BIT"
-	case 0x4000:
-		return "COLOR_BUFFER_BIT"
-	case 0x8b50:
-		return "FLOAT_VEC2"
-	case 0x8b51:
-		return "FLOAT_VEC3"
-	case 0x8b52:
-		return "FLOAT_VEC4"
-	case 0x8b53:
-		return "INT_VEC2"
-	case 0x8b54:
-		return "INT_VEC3"
-	case 0x8b55:
-		return "INT_VEC4"
-	case 0x8b56:
-		return "BOOL"
-	case 0x8b57:
-		return "BOOL_VEC2"
-	case 0x8b58:
-		return "BOOL_VEC3"
-	case 0x8b59:
-		return "BOOL_VEC4"
-	case 0x8b5a:
-		return "FLOAT_MAT2"
-	case 0x8b5b:
-		return "FLOAT_MAT3"
-	case 0x8b5c:
-		return "FLOAT_MAT4"
-	case 0x8b5e:
-		return "SAMPLER_2D"
-	case 0x8b60:
-		return "SAMPLER_CUBE"
-	case 0x8b30:
-		return "FRAGMENT_SHADER"
-	case 0x8b31:
-		return "VERTEX_SHADER"
-	default:
-		return fmt.Sprintf("gl.Enum(0x%x)", uint32(v))
-	}
-}
-
-func ActiveTexture(texture Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.ActiveTexture(%v) %v", texture, errstr)
-	}()
-	C.glActiveTexture(texture.c())
-}
-
-func AttachShader(p Program, s Shader) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.AttachShader(%v, %v) %v", p, s, errstr)
-	}()
-	C.glAttachShader(p.c(), s.c())
-}
-
-func BindAttribLocation(p Program, a Attrib, name string) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.BindAttribLocation(%v, %v, %v) %v", p, a, name, errstr)
-	}()
-	str := unsafe.Pointer(C.CString(name))
-	defer C.free(str)
-	C.glBindAttribLocation(p.c(), a.c(), (*C.GLchar)(str))
-}
-
-func BindBuffer(target Enum, b Buffer) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.BindBuffer(%v, %v) %v", target, b, errstr)
-	}()
-	C.glBindBuffer(target.c(), b.c())
-}
-
-func BindFramebuffer(target Enum, fb Framebuffer) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.BindFramebuffer(%v, %v) %v", target, fb, errstr)
-	}()
-	C.glBindFramebuffer(target.c(), fb.c())
-}
-
-func BindRenderbuffer(target Enum, rb Renderbuffer) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.BindRenderbuffer(%v, %v) %v", target, rb, errstr)
-	}()
-	C.glBindRenderbuffer(target.c(), rb.c())
-}
-
-func BindTexture(target Enum, t Texture) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.BindTexture(%v, %v) %v", target, t, errstr)
-	}()
-	C.glBindTexture(target.c(), t.c())
-}
-
-func BlendColor(red, green, blue, alpha float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.BlendColor(%v, %v, %v, %v) %v", red, green, blue, alpha, errstr)
-	}()
-	blendColor(red, green, blue, alpha)
-}
-
-func BlendEquation(mode Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.BlendEquation(%v) %v", mode, errstr)
-	}()
-	C.glBlendEquation(mode.c())
-}
-
-func BlendEquationSeparate(modeRGB, modeAlpha Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.BlendEquationSeparate(%v, %v) %v", modeRGB, modeAlpha, errstr)
-	}()
-	C.glBlendEquationSeparate(modeRGB.c(), modeAlpha.c())
-}
-
-func BlendFunc(sfactor, dfactor Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.BlendFunc(%v, %v) %v", sfactor, dfactor, errstr)
-	}()
-	C.glBlendFunc(sfactor.c(), dfactor.c())
-}
-
-func BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.BlendFuncSeparate(%v, %v, %v, %v) %v", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha, errstr)
-	}()
-	C.glBlendFuncSeparate(sfactorRGB.c(), dfactorRGB.c(), sfactorAlpha.c(), dfactorAlpha.c())
-}
-
-func BufferData(target Enum, usage Enum, src []byte) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.BufferData(%v, %v, len(%d)) %v", target, usage, len(src), errstr)
-	}()
-	C.glBufferData(target.c(), C.GLsizeiptr(len(src)), unsafe.Pointer(&src[0]), usage.c())
-}
-
-func BufferInit(target Enum, size int, usage Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.BufferInit(%v, %v, %v) %v", target, size, usage, errstr)
-	}()
-	C.glBufferData(target.c(), C.GLsizeiptr(size), nil, usage.c())
-}
-
-func BufferSubData(target Enum, offset int, data []byte) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.BufferSubData(%v, %v, len(%d)) %v", target, offset, len(data), errstr)
-	}()
-	C.glBufferSubData(target.c(), C.GLintptr(offset), C.GLsizeiptr(len(data)), unsafe.Pointer(&data[0]))
-}
-
-func CheckFramebufferStatus(target Enum) (r0 Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.CheckFramebufferStatus(%v) %v%v", target, r0, errstr)
-	}()
-	return Enum(C.glCheckFramebufferStatus(target.c()))
-}
-
-func Clear(mask Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Clear(%v) %v", mask, errstr)
-	}()
-	C.glClear(C.GLbitfield(mask))
-}
-
-func ClearColor(red, green, blue, alpha float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.ClearColor(%v, %v, %v, %v) %v", red, green, blue, alpha, errstr)
-	}()
-	clearColor(red, green, blue, alpha)
-}
-
-func ClearDepthf(d float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.ClearDepthf(%v) %v", d, errstr)
-	}()
-	clearDepthf(d)
-}
-
-func ClearStencil(s int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.ClearStencil(%v) %v", s, errstr)
-	}()
-	C.glClearStencil(C.GLint(s))
-}
-
-func ColorMask(red, green, blue, alpha bool) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.ColorMask(%v, %v, %v, %v) %v", red, green, blue, alpha, errstr)
-	}()
-	C.glColorMask(glBoolean(red), glBoolean(green), glBoolean(blue), glBoolean(alpha))
-}
-
-func CompileShader(s Shader) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.CompileShader(%v) %v", s, errstr)
-	}()
-	C.glCompileShader(s.c())
-}
-
-func CompressedTexImage2D(target Enum, level int, internalformat Enum, width, height, border int, data []byte) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.CompressedTexImage2D(%v, %v, %v, %v, %v, %v, len(%d)) %v", target, level, internalformat, width, height, border, len(data), errstr)
-	}()
-	C.glCompressedTexImage2D(target.c(), C.GLint(level), internalformat.c(), C.GLsizei(width), C.GLsizei(height), C.GLint(border), C.GLsizei(len(data)), unsafe.Pointer(&data[0]))
-}
-
-func CompressedTexSubImage2D(target Enum, level, xoffset, yoffset, width, height int, format Enum, data []byte) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.CompressedTexSubImage2D(%v, %v, %v, %v, %v, %v, %v, len(%d)) %v", target, level, xoffset, yoffset, width, height, format, len(data), errstr)
-	}()
-	C.glCompressedTexSubImage2D(target.c(), C.GLint(level), C.GLint(xoffset), C.GLint(yoffset), C.GLsizei(width), C.GLsizei(height), format.c(), C.GLsizei(len(data)), unsafe.Pointer(&data[0]))
-}
-
-func CopyTexImage2D(target Enum, level int, internalformat Enum, x, y, width, height, border int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.CopyTexImage2D(%v, %v, %v, %v, %v, %v, %v, %v) %v", target, level, internalformat, x, y, width, height, border, errstr)
-	}()
-	C.glCopyTexImage2D(target.c(), C.GLint(level), internalformat.c(), C.GLint(x), C.GLint(y), C.GLsizei(width), C.GLsizei(height), C.GLint(border))
-}
-
-func CopyTexSubImage2D(target Enum, level, xoffset, yoffset, x, y, width, height int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.CopyTexSubImage2D(%v, %v, %v, %v, %v, %v, %v, %v) %v", target, level, xoffset, yoffset, x, y, width, height, errstr)
-	}()
-	C.glCopyTexSubImage2D(target.c(), C.GLint(level), C.GLint(xoffset), C.GLint(yoffset), C.GLint(x), C.GLint(y), C.GLsizei(width), C.GLsizei(height))
-}
-
-func CreateProgram() (r0 Program) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.CreateProgram() %v%v", r0, errstr)
-	}()
-	return Program{Value: uint32(C.glCreateProgram())}
-}
-
-func CreateShader(ty Enum) (r0 Shader) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.CreateShader(%v) %v%v", ty, r0, errstr)
-	}()
-	return Shader{Value: uint32(C.glCreateShader(ty.c()))}
-}
-
-func CullFace(mode Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.CullFace(%v) %v", mode, errstr)
-	}()
-	C.glCullFace(mode.c())
-}
-
-func DeleteBuffer(v Buffer) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.DeleteBuffer(%v) %v", v, errstr)
-	}()
-	C.glDeleteBuffers(1, (*C.GLuint)(&v.Value))
-}
-
-func DeleteFramebuffer(v Framebuffer) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.DeleteFramebuffer(%v) %v", v, errstr)
-	}()
-	C.glDeleteFramebuffers(1, (*C.GLuint)(&v.Value))
-}
-
-func DeleteProgram(p Program) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.DeleteProgram(%v) %v", p, errstr)
-	}()
-	C.glDeleteProgram(p.c())
-}
-
-func DeleteRenderbuffer(v Renderbuffer) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.DeleteRenderbuffer(%v) %v", v, errstr)
-	}()
-	C.glDeleteRenderbuffers(1, (*C.GLuint)(&v.Value))
-}
-
-func DeleteShader(s Shader) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.DeleteShader(%v) %v", s, errstr)
-	}()
-	C.glDeleteShader(s.c())
-}
-
-func DeleteTexture(v Texture) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.DeleteTexture(%v) %v", v, errstr)
-	}()
-	C.glDeleteTextures(1, (*C.GLuint)(&v.Value))
-}
-
-func DepthFunc(fn Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.DepthFunc(%v) %v", fn, errstr)
-	}()
-	C.glDepthFunc(fn.c())
-}
-
-func DepthMask(flag bool) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.DepthMask(%v) %v", flag, errstr)
-	}()
-	C.glDepthMask(glBoolean(flag))
-}
-
-func DepthRangef(n, f float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.DepthRangef(%v, %v) %v", n, f, errstr)
-	}()
-	depthRangef(n, f)
-}
-
-func DetachShader(p Program, s Shader) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.DetachShader(%v, %v) %v", p, s, errstr)
-	}()
-	C.glDetachShader(p.c(), s.c())
-}
-
-func Disable(cap Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Disable(%v) %v", cap, errstr)
-	}()
-	C.glDisable(cap.c())
-}
-
-func DisableVertexAttribArray(index Attrib) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.DisableVertexAttribArray(%v) %v", index, errstr)
-	}()
-	C.glDisableVertexAttribArray(index.c())
-}
-
-func DrawArrays(mode Enum, first, count int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.DrawArrays(%v, %v, %v) %v", mode, first, count, errstr)
-	}()
-	C.glDrawArrays(mode.c(), C.GLint(first), C.GLsizei(count))
-}
-
-func DrawElements(mode, ty Enum, offset, count int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.DrawElements(%v, %v, %v, %v) %v", mode, ty, offset, count, errstr)
-	}()
-	C.glDrawElements(mode.c(), C.GLsizei(count), ty.c(), unsafe.Pointer(uintptr(offset)))
-}
-
-func Enable(cap Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Enable(%v) %v", cap, errstr)
-	}()
-	C.glEnable(cap.c())
-}
-
-func EnableVertexAttribArray(index Attrib) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.EnableVertexAttribArray(%v) %v", index, errstr)
-	}()
-	C.glEnableVertexAttribArray(index.c())
-}
-
-func Finish() {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Finish() %v", errstr)
-	}()
-	C.glFinish()
-}
-
-func Flush() {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Flush() %v", errstr)
-	}()
-	C.glFlush()
-}
-
-func FramebufferRenderbuffer(target, attachment, rbTarget Enum, rb Renderbuffer) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.FramebufferRenderbuffer(%v, %v, %v, %v) %v", target, attachment, rbTarget, rb, errstr)
-	}()
-	C.glFramebufferRenderbuffer(target.c(), attachment.c(), rbTarget.c(), rb.c())
-}
-
-func FramebufferTexture2D(target, attachment, texTarget Enum, t Texture, level int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.FramebufferTexture2D(%v, %v, %v, %v, %v) %v", target, attachment, texTarget, t, level, errstr)
-	}()
-	C.glFramebufferTexture2D(target.c(), attachment.c(), texTarget.c(), t.c(), C.GLint(level))
-}
-
-func FrontFace(mode Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.FrontFace(%v) %v", mode, errstr)
-	}()
-	C.glFrontFace(mode.c())
-}
-
-func GenBuffer() (r0 Buffer) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GenBuffer() %v%v", r0, errstr)
-	}()
-	var b Buffer
-	C.glGenBuffers(1, (*C.GLuint)(&b.Value))
-	return b
-}
-
-func GenerateMipmap(target Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GenerateMipmap(%v) %v", target, errstr)
-	}()
-	C.glGenerateMipmap(target.c())
-}
-
-func GenFramebuffer() (r0 Framebuffer) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GenFramebuffer() %v%v", r0, errstr)
-	}()
-	var b Framebuffer
-	C.glGenFramebuffers(1, (*C.GLuint)(&b.Value))
-	return b
-}
-
-func GenRenderbuffer() (r0 Renderbuffer) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GenRenderbuffer() %v%v", r0, errstr)
-	}()
-	var b Renderbuffer
-	C.glGenRenderbuffers(1, (*C.GLuint)(&b.Value))
-	return b
-}
-
-func GenTexture() (r0 Texture) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GenTexture() %v%v", r0, errstr)
-	}()
-	var t Texture
-	C.glGenTextures(1, (*C.GLuint)(&t.Value))
-	return t
-}
-
-func GetActiveAttrib(p Program, a Attrib) (name string, size int, ty Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetActiveAttrib(%v, %v) (%v, %v, %v) %v", p, a, name, size, ty, errstr)
-	}()
-	bufSize := GetProgrami(p, ACTIVE_ATTRIBUTE_MAX_LENGTH)
-	buf := C.malloc(C.size_t(bufSize))
-	defer C.free(buf)
-	var cSize C.GLint
-	var cType C.GLenum
-	C.glGetActiveAttrib(p.c(), a.c(), C.GLsizei(bufSize), nil, &cSize, &cType, (*C.GLchar)(buf))
-	return C.GoString((*C.char)(buf)), int(cSize), Enum(cType)
-}
-
-func GetActiveUniform(p Program, u Uniform) (name string, size int, ty Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetActiveUniform(%v, %v) (%v, %v, %v) %v", p, u, name, size, ty, errstr)
-	}()
-	bufSize := GetProgrami(p, ACTIVE_UNIFORM_MAX_LENGTH)
-	buf := C.malloc(C.size_t(bufSize))
-	defer C.free(buf)
-	var cSize C.GLint
-	var cType C.GLenum
-	C.glGetActiveUniform(p.c(), C.GLuint(u.Value), C.GLsizei(bufSize), nil, &cSize, &cType, (*C.GLchar)(buf))
-	return C.GoString((*C.char)(buf)), int(cSize), Enum(cType)
-}
-
-func GetAttachedShaders(p Program) (r0 []Shader) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetAttachedShaders(%v) %v%v", p, r0, errstr)
-	}()
-	shadersLen := GetProgrami(p, ATTACHED_SHADERS)
-	var n C.GLsizei
-	buf := make([]C.GLuint, shadersLen)
-	C.glGetAttachedShaders(p.c(), C.GLsizei(shadersLen), &n, &buf[0])
-	buf = buf[:int(n)]
-	shaders := make([]Shader, len(buf))
-	for i, s := range buf {
-		shaders[i] = Shader{Value: uint32(s)}
-	}
-	return shaders
-}
-
-func GetAttribLocation(p Program, name string) (r0 Attrib) {
-	defer func() {
-		errstr := errDrain()
-		r0.name = name
-		log.Printf("gl.GetAttribLocation(%v, %v) %v%v", p, name, r0, errstr)
-	}()
-	str := unsafe.Pointer(C.CString(name))
-	defer C.free(str)
-	return Attrib{Value: uint(C.glGetAttribLocation(p.c(), (*C.GLchar)(str)))}
-}
-
-func GetBooleanv(dst []bool, pname Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetBooleanv(%v, %v) %v", dst, pname, errstr)
-	}()
-	buf := make([]C.GLboolean, len(dst))
-	C.glGetBooleanv(pname.c(), &buf[0])
-	for i, v := range buf {
-		dst[i] = v != 0
-	}
-}
-
-func GetFloatv(dst []float32, pname Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetFloatv(len(%d), %v) %v", len(dst), pname, errstr)
-	}()
-	C.glGetFloatv(pname.c(), (*C.GLfloat)(&dst[0]))
-}
-
-func GetIntegerv(pname Enum, data []int32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetIntegerv(%v, %v) %v", pname, data, errstr)
-	}()
-	buf := make([]C.GLint, len(data))
-	C.glGetIntegerv(pname.c(), &buf[0])
-	for i, v := range buf {
-		data[i] = int32(v)
-	}
-}
-
-func GetInteger(pname Enum) (r0 int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetInteger(%v) %v%v", pname, r0, errstr)
-	}()
-	var v C.GLint
-	C.glGetIntegerv(pname.c(), &v)
-	return int(v)
-}
-
-func GetBufferParameteri(target, pname Enum) (r0 int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetBufferParameteri(%v, %v) %v%v", target, pname, r0, errstr)
-	}()
-	var params C.GLint
-	C.glGetBufferParameteriv(target.c(), pname.c(), &params)
-	return int(params)
-}
-
-func GetError() (r0 Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetError() %v%v", r0, errstr)
-	}()
-	return Enum(C.glGetError())
-}
-
-func GetFramebufferAttachmentParameteri(target, attachment, pname Enum) (r0 int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetFramebufferAttachmentParameteri(%v, %v, %v) %v%v", target, attachment, pname, r0, errstr)
-	}()
-	var params C.GLint
-	C.glGetFramebufferAttachmentParameteriv(target.c(), attachment.c(), pname.c(), &params)
-	return int(params)
-}
-
-func GetProgrami(p Program, pname Enum) (r0 int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetProgrami(%v, %v) %v%v", p, pname, r0, errstr)
-	}()
-	var params C.GLint
-	C.glGetProgramiv(p.c(), pname.c(), &params)
-	return int(params)
-}
-
-func GetProgramInfoLog(p Program) (r0 string) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetProgramInfoLog(%v) %v%v", p, r0, errstr)
-	}()
-	infoLen := GetProgrami(p, INFO_LOG_LENGTH)
-	buf := C.malloc(C.size_t(infoLen))
-	C.free(buf)
-	C.glGetProgramInfoLog(p.c(), C.GLsizei(infoLen), nil, (*C.GLchar)(buf))
-	return C.GoString((*C.char)(buf))
-}
-
-func GetRenderbufferParameteri(target, pname Enum) (r0 int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetRenderbufferParameteri(%v, %v) %v%v", target, pname, r0, errstr)
-	}()
-	var params C.GLint
-	C.glGetRenderbufferParameteriv(target.c(), pname.c(), &params)
-	return int(params)
-}
-
-func GetShaderi(s Shader, pname Enum) (r0 int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetShaderi(%v, %v) %v%v", s, pname, r0, errstr)
-	}()
-	var params C.GLint
-	C.glGetShaderiv(s.c(), pname.c(), &params)
-	return int(params)
-}
-
-func GetShaderInfoLog(s Shader) (r0 string) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetShaderInfoLog(%v) %v%v", s, r0, errstr)
-	}()
-	infoLen := GetShaderi(s, INFO_LOG_LENGTH)
-	buf := C.malloc(C.size_t(infoLen))
-	defer C.free(buf)
-	C.glGetShaderInfoLog(s.c(), C.GLsizei(infoLen), nil, (*C.GLchar)(buf))
-	return C.GoString((*C.char)(buf))
-}
-
-func GetShaderPrecisionFormat(shadertype, precisiontype Enum) (rangeLow, rangeHigh, precision int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetShaderPrecisionFormat(%v, %v) (%v, %v, %v) %v", shadertype, precisiontype, rangeLow, rangeHigh, precision, errstr)
-	}()
-	const glintSize = 4
-	var cRange [2]C.GLint
-	var cPrecision C.GLint
-	C.glGetShaderPrecisionFormat(shadertype.c(), precisiontype.c(), &cRange[0], &cPrecision)
-	return int(cRange[0]), int(cRange[1]), int(cPrecision)
-}
-
-func GetShaderSource(s Shader) (r0 string) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetShaderSource(%v) %v%v", s, r0, errstr)
-	}()
-	sourceLen := GetShaderi(s, SHADER_SOURCE_LENGTH)
-	if sourceLen == 0 {
-		return ""
-	}
-	buf := C.malloc(C.size_t(sourceLen))
-	defer C.free(buf)
-	C.glGetShaderSource(s.c(), C.GLsizei(sourceLen), nil, (*C.GLchar)(buf))
-	return C.GoString((*C.char)(buf))
-}
-
-func GetString(name Enum) (r0 string) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetString(%v) %v%v", name, r0, errstr)
-	}()
-	return C.GoString((*C.char)((unsafe.Pointer)(C.glGetString(name.c()))))
-}
-
-func GetTexParameterfv(dst []float32, target, pname Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetTexParameterfv(len(%d), %v, %v) %v", len(dst), target, pname, errstr)
-	}()
-	C.glGetTexParameterfv(target.c(), pname.c(), (*C.GLfloat)(&dst[0]))
-}
-
-func GetTexParameteriv(dst []int32, target, pname Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetTexParameteriv(%v, %v, %v) %v", dst, target, pname, errstr)
-	}()
-	C.glGetTexParameteriv(target.c(), pname.c(), (*C.GLint)(&dst[0]))
-}
-
-func GetUniformfv(dst []float32, src Uniform, p Program) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetUniformfv(len(%d), %v, %v) %v", len(dst), src, p, errstr)
-	}()
-	C.glGetUniformfv(p.c(), src.c(), (*C.GLfloat)(&dst[0]))
-}
-
-func GetUniformiv(dst []int32, src Uniform, p Program) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetUniformiv(%v, %v, %v) %v", dst, src, p, errstr)
-	}()
-	C.glGetUniformiv(p.c(), src.c(), (*C.GLint)(&dst[0]))
-}
-
-func GetUniformLocation(p Program, name string) (r0 Uniform) {
-	defer func() {
-		errstr := errDrain()
-		r0.name = name
-		log.Printf("gl.GetUniformLocation(%v, %v) %v%v", p, name, r0, errstr)
-	}()
-	str := C.CString(name)
-	defer C.free((unsafe.Pointer)(str))
-	return Uniform{Value: int32(C.glGetUniformLocation(p.c(), (*C.GLchar)(str)))}
-}
-
-func GetVertexAttribf(src Attrib, pname Enum) (r0 float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetVertexAttribf(%v, %v) %v%v", src, pname, r0, errstr)
-	}()
-	var params C.GLfloat
-	C.glGetVertexAttribfv(src.c(), pname.c(), &params)
-	return float32(params)
-}
-
-func GetVertexAttribfv(dst []float32, src Attrib, pname Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetVertexAttribfv(len(%d), %v, %v) %v", len(dst), src, pname, errstr)
-	}()
-	C.glGetVertexAttribfv(src.c(), pname.c(), (*C.GLfloat)(&dst[0]))
-}
-
-func GetVertexAttribi(src Attrib, pname Enum) (r0 int32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetVertexAttribi(%v, %v) %v%v", src, pname, r0, errstr)
-	}()
-	var params C.GLint
-	C.glGetVertexAttribiv(src.c(), pname.c(), &params)
-	return int32(params)
-}
-
-func GetVertexAttribiv(dst []int32, src Attrib, pname Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.GetVertexAttribiv(%v, %v, %v) %v", dst, src, pname, errstr)
-	}()
-	C.glGetVertexAttribiv(src.c(), pname.c(), (*C.GLint)(&dst[0]))
-}
-
-func Hint(target, mode Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Hint(%v, %v) %v", target, mode, errstr)
-	}()
-	C.glHint(target.c(), mode.c())
-}
-
-func IsBuffer(b Buffer) (r0 bool) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.IsBuffer(%v) %v%v", b, r0, errstr)
-	}()
-	return C.glIsBuffer(b.c()) != 0
-}
-
-func IsEnabled(cap Enum) (r0 bool) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.IsEnabled(%v) %v%v", cap, r0, errstr)
-	}()
-	return C.glIsEnabled(cap.c()) != 0
-}
-
-func IsFramebuffer(fb Framebuffer) (r0 bool) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.IsFramebuffer(%v) %v%v", fb, r0, errstr)
-	}()
-	return C.glIsFramebuffer(fb.c()) != 0
-}
-
-func IsProgram(p Program) (r0 bool) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.IsProgram(%v) %v%v", p, r0, errstr)
-	}()
-	return C.glIsProgram(p.c()) != 0
-}
-
-func IsRenderbuffer(rb Renderbuffer) (r0 bool) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.IsRenderbuffer(%v) %v%v", rb, r0, errstr)
-	}()
-	return C.glIsRenderbuffer(rb.c()) != 0
-}
-
-func IsShader(s Shader) (r0 bool) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.IsShader(%v) %v%v", s, r0, errstr)
-	}()
-	return C.glIsShader(s.c()) != 0
-}
-
-func IsTexture(t Texture) (r0 bool) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.IsTexture(%v) %v%v", t, r0, errstr)
-	}()
-	return C.glIsTexture(t.c()) != 0
-}
-
-func LineWidth(width float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.LineWidth(%v) %v", width, errstr)
-	}()
-	C.glLineWidth(C.GLfloat(width))
-}
-
-func LinkProgram(p Program) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.LinkProgram(%v) %v", p, errstr)
-	}()
-	C.glLinkProgram(p.c())
-}
-
-func PixelStorei(pname Enum, param int32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.PixelStorei(%v, %v) %v", pname, param, errstr)
-	}()
-	C.glPixelStorei(pname.c(), C.GLint(param))
-}
-
-func PolygonOffset(factor, units float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.PolygonOffset(%v, %v) %v", factor, units, errstr)
-	}()
-	C.glPolygonOffset(C.GLfloat(factor), C.GLfloat(units))
-}
-
-func ReadPixels(dst []byte, x, y, width, height int, format, ty Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.ReadPixels(len(%d), %v, %v, %v, %v, %v, %v) %v", len(dst), x, y, width, height, format, ty, errstr)
-	}()
-	C.glReadPixels(C.GLint(x), C.GLint(y), C.GLsizei(width), C.GLsizei(height), format.c(), ty.c(), unsafe.Pointer(&dst[0]))
-}
-
-func ReleaseShaderCompiler() {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.ReleaseShaderCompiler() %v", errstr)
-	}()
-	C.glReleaseShaderCompiler()
-}
-
-func RenderbufferStorage(target, internalFormat Enum, width, height int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.RenderbufferStorage(%v, %v, %v, %v) %v", target, internalFormat, width, height, errstr)
-	}()
-	C.glRenderbufferStorage(target.c(), internalFormat.c(), C.GLsizei(width), C.GLsizei(height))
-}
-
-func SampleCoverage(value float32, invert bool) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.SampleCoverage(%v, %v) %v", value, invert, errstr)
-	}()
-	sampleCoverage(value, invert)
-}
-
-func Scissor(x, y, width, height int32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Scissor(%v, %v, %v, %v) %v", x, y, width, height, errstr)
-	}()
-	C.glScissor(C.GLint(x), C.GLint(y), C.GLsizei(width), C.GLsizei(height))
-}
-
-func ShaderSource(s Shader, src string) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.ShaderSource(%v, %v) %v", s, src, errstr)
-	}()
-	str := (*C.GLchar)(C.CString(src))
-	defer C.free(unsafe.Pointer(str))
-	C.glShaderSource(s.c(), 1, &str, nil)
-}
-
-func StencilFunc(fn Enum, ref int, mask uint32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.StencilFunc(%v, %v, %v) %v", fn, ref, mask, errstr)
-	}()
-	C.glStencilFunc(fn.c(), C.GLint(ref), C.GLuint(mask))
-}
-
-func StencilFuncSeparate(face, fn Enum, ref int, mask uint32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.StencilFuncSeparate(%v, %v, %v, %v) %v", face, fn, ref, mask, errstr)
-	}()
-	C.glStencilFuncSeparate(face.c(), fn.c(), C.GLint(ref), C.GLuint(mask))
-}
-
-func StencilMask(mask uint32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.StencilMask(%v) %v", mask, errstr)
-	}()
-	C.glStencilMask(C.GLuint(mask))
-}
-
-func StencilMaskSeparate(face Enum, mask uint32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.StencilMaskSeparate(%v, %v) %v", face, mask, errstr)
-	}()
-	C.glStencilMaskSeparate(face.c(), C.GLuint(mask))
-}
-
-func StencilOp(fail, zfail, zpass Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.StencilOp(%v, %v, %v) %v", fail, zfail, zpass, errstr)
-	}()
-	C.glStencilOp(fail.c(), zfail.c(), zpass.c())
-}
-
-func StencilOpSeparate(face, sfail, dpfail, dppass Enum) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.StencilOpSeparate(%v, %v, %v, %v) %v", face, sfail, dpfail, dppass, errstr)
-	}()
-	C.glStencilOpSeparate(face.c(), sfail.c(), dpfail.c(), dppass.c())
-}
-
-func TexImage2D(target Enum, level int, width, height int, format Enum, ty Enum, data []byte) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.TexImage2D(%v, %v, %v, %v, %v, %v, len(%d)) %v", target, level, width, height, format, ty, len(data), errstr)
-	}()
-	p := unsafe.Pointer(nil)
-	if len(data) > 0 {
-		p = unsafe.Pointer(&data[0])
-	}
-	C.glTexImage2D(target.c(), C.GLint(level), C.GLint(format), C.GLsizei(width), C.GLsizei(height), 0, format.c(), ty.c(), p)
-}
-
-func TexSubImage2D(target Enum, level int, x, y, width, height int, format, ty Enum, data []byte) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.TexSubImage2D(%v, %v, %v, %v, %v, %v, %v, %v, len(%d)) %v", target, level, x, y, width, height, format, ty, len(data), errstr)
-	}()
-	C.glTexSubImage2D(target.c(), C.GLint(level), C.GLint(x), C.GLint(y), C.GLsizei(width), C.GLsizei(height), format.c(), ty.c(), unsafe.Pointer(&data[0]))
-}
-
-func TexParameterf(target, pname Enum, param float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.TexParameterf(%v, %v, %v) %v", target, pname, param, errstr)
-	}()
-	C.glTexParameterf(target.c(), pname.c(), C.GLfloat(param))
-}
-
-func TexParameterfv(target, pname Enum, params []float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.TexParameterfv(%v, %v, len(%d)) %v", target, pname, len(params), errstr)
-	}()
-	C.glTexParameterfv(target.c(), pname.c(), (*C.GLfloat)(&params[0]))
-}
-
-func TexParameteri(target, pname Enum, param int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.TexParameteri(%v, %v, %v) %v", target, pname, param, errstr)
-	}()
-	C.glTexParameteri(target.c(), pname.c(), C.GLint(param))
-}
-
-func TexParameteriv(target, pname Enum, params []int32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.TexParameteriv(%v, %v, %v) %v", target, pname, params, errstr)
-	}()
-	C.glTexParameteriv(target.c(), pname.c(), (*C.GLint)(&params[0]))
-}
-
-func Uniform1f(dst Uniform, v float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Uniform1f(%v, %v) %v", dst, v, errstr)
-	}()
-	C.glUniform1f(dst.c(), C.GLfloat(v))
-}
-
-func Uniform1fv(dst Uniform, src []float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Uniform1fv(%v, len(%d)) %v", dst, len(src), errstr)
-	}()
-	C.glUniform1fv(dst.c(), C.GLsizei(len(src)), (*C.GLfloat)(&src[0]))
-}
-
-func Uniform1i(dst Uniform, v int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Uniform1i(%v, %v) %v", dst, v, errstr)
-	}()
-	C.glUniform1i(dst.c(), C.GLint(v))
-}
-
-func Uniform1iv(dst Uniform, src []int32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Uniform1iv(%v, %v) %v", dst, src, errstr)
-	}()
-	C.glUniform1iv(dst.c(), C.GLsizei(len(src)), (*C.GLint)(&src[0]))
-}
-
-func Uniform2f(dst Uniform, v0, v1 float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Uniform2f(%v, %v, %v) %v", dst, v0, v1, errstr)
-	}()
-	C.glUniform2f(dst.c(), C.GLfloat(v0), C.GLfloat(v1))
-}
-
-func Uniform2fv(dst Uniform, src []float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Uniform2fv(%v, len(%d)) %v", dst, len(src), errstr)
-	}()
-	C.glUniform2fv(dst.c(), C.GLsizei(len(src)/2), (*C.GLfloat)(&src[0]))
-}
-
-func Uniform2i(dst Uniform, v0, v1 int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Uniform2i(%v, %v, %v) %v", dst, v0, v1, errstr)
-	}()
-	C.glUniform2i(dst.c(), C.GLint(v0), C.GLint(v1))
-}
-
-func Uniform2iv(dst Uniform, src []int32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Uniform2iv(%v, %v) %v", dst, src, errstr)
-	}()
-	C.glUniform2iv(dst.c(), C.GLsizei(len(src)/2), (*C.GLint)(&src[0]))
-}
-
-func Uniform3f(dst Uniform, v0, v1, v2 float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Uniform3f(%v, %v, %v, %v) %v", dst, v0, v1, v2, errstr)
-	}()
-	C.glUniform3f(dst.c(), C.GLfloat(v0), C.GLfloat(v1), C.GLfloat(v2))
-}
-
-func Uniform3fv(dst Uniform, src []float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Uniform3fv(%v, len(%d)) %v", dst, len(src), errstr)
-	}()
-	C.glUniform3fv(dst.c(), C.GLsizei(len(src)/3), (*C.GLfloat)(&src[0]))
-}
-
-func Uniform3i(dst Uniform, v0, v1, v2 int32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Uniform3i(%v, %v, %v, %v) %v", dst, v0, v1, v2, errstr)
-	}()
-	C.glUniform3i(dst.c(), C.GLint(v0), C.GLint(v1), C.GLint(v2))
-}
-
-func Uniform3iv(dst Uniform, src []int32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Uniform3iv(%v, %v) %v", dst, src, errstr)
-	}()
-	C.glUniform3iv(dst.c(), C.GLsizei(len(src)/3), (*C.GLint)(&src[0]))
-}
-
-func Uniform4f(dst Uniform, v0, v1, v2, v3 float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Uniform4f(%v, %v, %v, %v, %v) %v", dst, v0, v1, v2, v3, errstr)
-	}()
-	C.glUniform4f(dst.c(), C.GLfloat(v0), C.GLfloat(v1), C.GLfloat(v2), C.GLfloat(v3))
-}
-
-func Uniform4fv(dst Uniform, src []float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Uniform4fv(%v, len(%d)) %v", dst, len(src), errstr)
-	}()
-	C.glUniform4fv(dst.c(), C.GLsizei(len(src)/4), (*C.GLfloat)(&src[0]))
-}
-
-func Uniform4i(dst Uniform, v0, v1, v2, v3 int32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Uniform4i(%v, %v, %v, %v, %v) %v", dst, v0, v1, v2, v3, errstr)
-	}()
-	C.glUniform4i(dst.c(), C.GLint(v0), C.GLint(v1), C.GLint(v2), C.GLint(v3))
-}
-
-func Uniform4iv(dst Uniform, src []int32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Uniform4iv(%v, %v) %v", dst, src, errstr)
-	}()
-	C.glUniform4iv(dst.c(), C.GLsizei(len(src)/4), (*C.GLint)(&src[0]))
-}
-
-func UniformMatrix2fv(dst Uniform, src []float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.UniformMatrix2fv(%v, len(%d)) %v", dst, len(src), errstr)
-	}()
-	C.glUniformMatrix2fv(dst.c(), C.GLsizei(len(src)/4), 0, (*C.GLfloat)(&src[0]))
-}
-
-func UniformMatrix3fv(dst Uniform, src []float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.UniformMatrix3fv(%v, len(%d)) %v", dst, len(src), errstr)
-	}()
-	C.glUniformMatrix3fv(dst.c(), C.GLsizei(len(src)/9), 0, (*C.GLfloat)(&src[0]))
-}
-
-func UniformMatrix4fv(dst Uniform, src []float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.UniformMatrix4fv(%v, len(%d)) %v", dst, len(src), errstr)
-	}()
-	C.glUniformMatrix4fv(dst.c(), C.GLsizei(len(src)/16), 0, (*C.GLfloat)(&src[0]))
-}
-
-func UseProgram(p Program) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.UseProgram(%v) %v", p, errstr)
-	}()
-	C.glUseProgram(p.c())
-}
-
-func ValidateProgram(p Program) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.ValidateProgram(%v) %v", p, errstr)
-	}()
-	C.glValidateProgram(p.c())
-}
-
-func VertexAttrib1f(dst Attrib, x float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.VertexAttrib1f(%v, %v) %v", dst, x, errstr)
-	}()
-	C.glVertexAttrib1f(dst.c(), C.GLfloat(x))
-}
-
-func VertexAttrib1fv(dst Attrib, src []float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.VertexAttrib1fv(%v, len(%d)) %v", dst, len(src), errstr)
-	}()
-	C.glVertexAttrib1fv(dst.c(), (*C.GLfloat)(&src[0]))
-}
-
-func VertexAttrib2f(dst Attrib, x, y float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.VertexAttrib2f(%v, %v, %v) %v", dst, x, y, errstr)
-	}()
-	C.glVertexAttrib2f(dst.c(), C.GLfloat(x), C.GLfloat(y))
-}
-
-func VertexAttrib2fv(dst Attrib, src []float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.VertexAttrib2fv(%v, len(%d)) %v", dst, len(src), errstr)
-	}()
-	C.glVertexAttrib2fv(dst.c(), (*C.GLfloat)(&src[0]))
-}
-
-func VertexAttrib3f(dst Attrib, x, y, z float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.VertexAttrib3f(%v, %v, %v, %v) %v", dst, x, y, z, errstr)
-	}()
-	C.glVertexAttrib3f(dst.c(), C.GLfloat(x), C.GLfloat(y), C.GLfloat(z))
-}
-
-func VertexAttrib3fv(dst Attrib, src []float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.VertexAttrib3fv(%v, len(%d)) %v", dst, len(src), errstr)
-	}()
-	C.glVertexAttrib3fv(dst.c(), (*C.GLfloat)(&src[0]))
-}
-
-func VertexAttrib4f(dst Attrib, x, y, z, w float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.VertexAttrib4f(%v, %v, %v, %v, %v) %v", dst, x, y, z, w, errstr)
-	}()
-	C.glVertexAttrib4f(dst.c(), C.GLfloat(x), C.GLfloat(y), C.GLfloat(z), C.GLfloat(w))
-}
-
-func VertexAttrib4fv(dst Attrib, src []float32) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.VertexAttrib4fv(%v, len(%d)) %v", dst, len(src), errstr)
-	}()
-	C.glVertexAttrib4fv(dst.c(), (*C.GLfloat)(&src[0]))
-}
-
-func VertexAttribPointer(dst Attrib, size int, ty Enum, normalized bool, stride, offset int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.VertexAttribPointer(%v, %v, %v, %v, %v, %v) %v", dst, size, ty, normalized, stride, offset, errstr)
-	}()
-	n := glBoolean(normalized)
-	s := C.GLsizei(stride)
-	C.glVertexAttribPointer(dst.c(), C.GLint(size), ty.c(), n, s, unsafe.Pointer(uintptr(offset)))
-}
-
-func Viewport(x, y, width, height int) {
-	defer func() {
-		errstr := errDrain()
-		log.Printf("gl.Viewport(%v, %v, %v, %v) %v", x, y, width, height, errstr)
-	}()
-	C.glViewport(C.GLint(x), C.GLint(y), C.GLsizei(width), C.GLsizei(height))
-}
diff --git a/go/src/golang.org/x/mobile/gl/glutil/context_darwin_amd64.go b/go/src/golang.org/x/mobile/gl/glutil/context_darwin_amd64.go
deleted file mode 100644
index 63cbc10..0000000
--- a/go/src/golang.org/x/mobile/gl/glutil/context_darwin_amd64.go
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2014 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.
-
-// +build darwin
-
-package glutil
-
-// TODO(crawshaw): Only used in glutil tests for now (cgo is not support in _test.go files).
-// TODO(crawshaw): Export some kind of Context. Work out what we can offer, where. Maybe just for tests.
-// TODO(crawshaw): Support android and windows.
-
-/*
-#cgo LDFLAGS: -framework OpenGL
-#import <OpenGL/OpenGL.h>
-#import <OpenGL/gl3.h>
-
-void CGCreate(CGLContextObj* ctx) {
-	CGLPixelFormatAttribute attributes[] = {
-		kCGLPFAOpenGLProfile, (CGLPixelFormatAttribute)kCGLOGLPVersion_3_2_Core,
-		kCGLPFAColorSize, (CGLPixelFormatAttribute)24,
-		kCGLPFAAlphaSize, (CGLPixelFormatAttribute)8,
-		kCGLPFADepthSize, (CGLPixelFormatAttribute)16,
-		kCGLPFAAccelerated,
-		kCGLPFADoubleBuffer,
-		(CGLPixelFormatAttribute) 0
-	};
-	CGLPixelFormatObj pix;
-	GLint num;
-	CGLChoosePixelFormat(attributes, &pix, &num);
-	CGLCreateContext(pix, 0, ctx);
-	CGLDestroyPixelFormat(pix);
-	CGLSetCurrentContext(*ctx);
-	CGLLockContext(*ctx);
-}
-*/
-import "C"
-
-import "runtime"
-
-// contextGL holds a copy of the OpenGL Context from thread-local storage.
-//
-// Do not move a contextGL between goroutines or OS threads.
-type contextGL struct {
-	ctx C.CGLContextObj
-}
-
-// createContext creates an OpenGL context, binds it as the current context
-// stored in thread-local storage, and locks the current goroutine to an os
-// thread.
-func createContext() *contextGL {
-	// The OpenGL active context is stored in TLS.
-	runtime.LockOSThread()
-
-	c := new(contextGL)
-	C.CGCreate(&c.ctx)
-
-	// Using attribute arrays in OpenGL 3.3 requires the use of a VBA.
-	// But VBAs don't exist in ES 2. So we bind a default one.
-	var id C.GLuint
-	C.glGenVertexArrays(1, &id)
-	C.glBindVertexArray(id)
-
-	return c
-}
-
-// destroy destroys an OpenGL context and unlocks the current goroutine from
-// its os thread.
-func (c *contextGL) destroy() {
-	C.CGLUnlockContext(c.ctx)
-	C.CGLSetCurrentContext(nil)
-	C.CGLDestroyContext(c.ctx)
-	c.ctx = nil
-	runtime.UnlockOSThread()
-}
diff --git a/go/src/golang.org/x/mobile/gl/glutil/context_x11.go b/go/src/golang.org/x/mobile/gl/glutil/context_x11.go
deleted file mode 100644
index 01c44f5..0000000
--- a/go/src/golang.org/x/mobile/gl/glutil/context_x11.go
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright 2014 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.
-
-// +build linux,!android
-
-package glutil
-
-/*
-#cgo LDFLAGS: -lEGL
-#include <EGL/egl.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-void createContext(EGLDisplay *out_dpy, EGLContext *out_ctx, EGLSurface *out_surf) {
-	EGLDisplay e_dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
-	if (!e_dpy) {
-		fprintf(stderr, "eglGetDisplay failed\n");
-		exit(1);
-	}
-	EGLint e_major, e_minor;
-	if (!eglInitialize(e_dpy, &e_major, &e_minor)) {
-		fprintf(stderr, "eglInitialize failed\n");
-		exit(1);
-	}
-	eglBindAPI(EGL_OPENGL_ES_API);
-	static const EGLint config_attribs[] = {
-		EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
-		EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
-		EGL_BLUE_SIZE, 8,
-		EGL_GREEN_SIZE, 8,
-		EGL_RED_SIZE, 8,
-		EGL_CONFIG_CAVEAT, EGL_NONE,
-		EGL_NONE
-	};
-	EGLConfig config;
-	EGLint num_configs;
-	if (!eglChooseConfig(e_dpy, config_attribs, &config, 1, &num_configs)) {
-		fprintf(stderr, "eglChooseConfig failed\n");
-		exit(1);
-	}
-	static const EGLint ctx_attribs[] = {
-		EGL_CONTEXT_CLIENT_VERSION, 2,
-		EGL_NONE
-	};
-	EGLContext e_ctx = eglCreateContext(e_dpy, config, EGL_NO_CONTEXT, ctx_attribs);
-	if (e_ctx == EGL_NO_CONTEXT) {
-		fprintf(stderr, "eglCreateContext failed\n");
-		exit(1);
-	}
-	static const EGLint pbuf_attribs[] = {
-		EGL_NONE
-	};
-	EGLSurface e_surf = eglCreatePbufferSurface(e_dpy, config, pbuf_attribs);
-	if (e_surf == EGL_NO_SURFACE) {
-		fprintf(stderr, "eglCreatePbufferSurface failed\n");
-		exit(1);
-	}
-	if (!eglMakeCurrent(e_dpy, e_surf, e_surf, e_ctx)) {
-		fprintf(stderr, "eglMakeCurrent failed\n");
-		exit(1);
-	}
-	*out_surf = e_surf;
-	*out_ctx = e_ctx;
-	*out_dpy = e_dpy;
-}
-
-void destroyContext(EGLDisplay e_dpy, EGLContext e_ctx, EGLSurface e_surf) {
-	if (!eglMakeCurrent(e_dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT)) {
-		fprintf(stderr, "eglMakeCurrent failed\n");
-		exit(1);
-	}
-	if (!eglDestroySurface(e_dpy, e_surf)) {
-		fprintf(stderr, "eglDestroySurface failed\n");
-		exit(1);
-	}
-	if (!eglDestroyContext(e_dpy, e_ctx)) {
-		fprintf(stderr, "eglDestroyContext failed\n");
-		exit(1);
-	}
-}
-*/
-import "C"
-
-import (
-	"runtime"
-)
-
-type contextGL struct {
-	dpy  C.EGLDisplay
-	ctx  C.EGLContext
-	surf C.EGLSurface
-}
-
-func createContext() *contextGL {
-	runtime.LockOSThread()
-	c := &contextGL{}
-	C.createContext(&c.dpy, &c.ctx, &c.surf)
-	return c
-}
-
-func (c *contextGL) destroy() {
-	C.destroyContext(c.dpy, c.ctx, c.surf)
-	runtime.UnlockOSThread()
-}
diff --git a/go/src/golang.org/x/mobile/gl/glutil/glimage.go b/go/src/golang.org/x/mobile/gl/glutil/glimage.go
deleted file mode 100644
index 64c13f2..0000000
--- a/go/src/golang.org/x/mobile/gl/glutil/glimage.go
+++ /dev/null
@@ -1,274 +0,0 @@
-// Copyright 2014 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.
-
-// +build linux darwin
-
-package glutil
-
-import (
-	"encoding/binary"
-	"image"
-	"sync"
-
-	"golang.org/x/mobile/f32"
-	"golang.org/x/mobile/geom"
-	"golang.org/x/mobile/gl"
-)
-
-var glimage struct {
-	sync.Once
-	quadXY        gl.Buffer
-	quadUV        gl.Buffer
-	program       gl.Program
-	pos           gl.Attrib
-	mvp           gl.Uniform
-	uvp           gl.Uniform
-	inUV          gl.Attrib
-	textureSample gl.Uniform
-}
-
-func glInit() {
-	var err error
-	glimage.program, err = CreateProgram(vertexShader, fragmentShader)
-	if err != nil {
-		panic(err)
-	}
-
-	glimage.quadXY = gl.GenBuffer()
-	glimage.quadUV = gl.GenBuffer()
-
-	gl.BindBuffer(gl.ARRAY_BUFFER, glimage.quadXY)
-	gl.BufferData(gl.ARRAY_BUFFER, gl.STATIC_DRAW, quadXYCoords)
-	gl.BindBuffer(gl.ARRAY_BUFFER, glimage.quadUV)
-	gl.BufferData(gl.ARRAY_BUFFER, gl.STATIC_DRAW, quadUVCoords)
-
-	glimage.pos = gl.GetAttribLocation(glimage.program, "pos")
-	glimage.mvp = gl.GetUniformLocation(glimage.program, "mvp")
-	glimage.uvp = gl.GetUniformLocation(glimage.program, "uvp")
-	glimage.inUV = gl.GetAttribLocation(glimage.program, "inUV")
-	glimage.textureSample = gl.GetUniformLocation(glimage.program, "textureSample")
-}
-
-// Image bridges between an *image.RGBA and an OpenGL texture.
-//
-// The contents of the embedded *image.RGBA can be uploaded as a
-// texture and drawn as a 2D quad.
-//
-// The number of active Images must fit in the system's OpenGL texture
-// limit. The typical use of an Image is as a texture atlas.
-type Image struct {
-	*image.RGBA
-
-	Texture   gl.Texture
-	texWidth  int
-	texHeight int
-}
-
-// NewImage creates an Image of the given size.
-//
-// Both a host-memory *image.RGBA and a GL texture are created.
-func NewImage(w, h int) *Image {
-	dx := roundToPower2(w)
-	dy := roundToPower2(h)
-
-	// TODO(crawshaw): Using VertexAttribPointer we can pass texture
-	// data with a stride, which would let us use the exact number of
-	// pixels on the host instead of the rounded up power 2 size.
-	m := image.NewRGBA(image.Rect(0, 0, dx, dy))
-
-	glimage.Do(glInit)
-
-	img := &Image{
-		RGBA:      m.SubImage(image.Rect(0, 0, w, h)).(*image.RGBA),
-		Texture:   gl.GenTexture(),
-		texWidth:  dx,
-		texHeight: dy,
-	}
-	// TODO(crawshaw): We don't have the context on a finalizer. Find a way.
-	// runtime.SetFinalizer(img, func(img *Image) { gl.DeleteTexture(img.Texture) })
-	gl.BindTexture(gl.TEXTURE_2D, img.Texture)
-	gl.TexImage2D(gl.TEXTURE_2D, 0, dx, dy, gl.RGBA, gl.UNSIGNED_BYTE, nil)
-	gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
-	gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
-	gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)
-	gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)
-
-	return img
-}
-
-func roundToPower2(x int) int {
-	x2 := 1
-	for x2 < x {
-		x2 *= 2
-	}
-	return x2
-}
-
-// Upload copies the host image data to the GL device.
-func (img *Image) Upload() {
-	gl.BindTexture(gl.TEXTURE_2D, img.Texture)
-	gl.TexSubImage2D(gl.TEXTURE_2D, 0, 0, 0, img.texWidth, img.texHeight, gl.RGBA, gl.UNSIGNED_BYTE, img.Pix)
-}
-
-// Draw draws the srcBounds part of the image onto a parallelogram, defined by
-// three of its corners, in the current GL framebuffer.
-func (img *Image) Draw(topLeft, topRight, bottomLeft geom.Point, srcBounds image.Rectangle) {
-	// TODO(crawshaw): Adjust viewport for the top bar on android?
-	gl.UseProgram(glimage.program)
-
-	{
-		// We are drawing a parallelogram PQRS, defined by three of its
-		// corners, onto the entire GL framebuffer ABCD. The two quads may
-		// actually be equal, but in the general case, PQRS can be smaller,
-		// and PQRS is not necessarily axis-aligned.
-		//
-		//	A +---------------+ B
-		//	  |  P +-----+ Q  |
-		//	  |    |     |    |
-		//	  |  S +-----+ R  |
-		//	D +---------------+ C
-		//
-		// There are two co-ordinate spaces: geom space and framebuffer space.
-		// In geom space, the ABCD rectangle is:
-		//
-		//	(0, 0)           (geom.Width, 0)
-		//	(0, geom.Height) (geom.Width, geom.Height)
-		//
-		// and the PQRS quad is:
-		//
-		//	(topLeft.X,    topLeft.Y)    (topRight.X, topRight.Y)
-		//	(bottomLeft.X, bottomLeft.Y) (implicit,   implicit)
-		//
-		// In framebuffer space, the ABCD rectangle is:
-		//
-		//	(-1, +1) (+1, +1)
-		//	(-1, -1) (+1, -1)
-		//
-		// First of all, convert from geom space to framebuffer space. For
-		// later convenience, we divide everything by 2 here: px2 is half of
-		// the P.X co-ordinate (in framebuffer space).
-		px2 := -0.5 + float32(topLeft.X/geom.Width)
-		py2 := +0.5 - float32(topLeft.Y/geom.Height)
-		qx2 := -0.5 + float32(topRight.X/geom.Width)
-		qy2 := +0.5 - float32(topRight.Y/geom.Height)
-		sx2 := -0.5 + float32(bottomLeft.X/geom.Width)
-		sy2 := +0.5 - float32(bottomLeft.Y/geom.Height)
-		// Next, solve for the affine transformation matrix
-		//	    [ a00 a01 a02 ]
-		//	a = [ a10 a11 a12 ]
-		//	    [   0   0   1 ]
-		// that maps A to P:
-		//	a × [ -1 +1 1 ]' = [ 2*px2 2*py2 1 ]'
-		// and likewise maps B to Q and D to S. Solving those three constraints
-		// implies that C maps to R, since affine transformations keep parallel
-		// lines parallel. This gives 6 equations in 6 unknowns:
-		//	-a00 + a01 + a02 = 2*px2
-		//	-a10 + a11 + a12 = 2*py2
-		//	+a00 + a01 + a02 = 2*qx2
-		//	+a10 + a11 + a12 = 2*qy2
-		//	-a00 - a01 + a02 = 2*sx2
-		//	-a10 - a11 + a12 = 2*sy2
-		// which gives:
-		//	a00 = (2*qx2 - 2*px2) / 2 = qx2 - px2
-		// and similarly for the other elements of a.
-		glimage.mvp.WriteAffine(&f32.Affine{{
-			qx2 - px2,
-			px2 - sx2,
-			qx2 + sx2,
-		}, {
-			qy2 - py2,
-			py2 - sy2,
-			qy2 + sy2,
-		}})
-	}
-
-	{
-		// Mapping texture co-ordinates is similar, except that in texture
-		// space, the ABCD rectangle is:
-		//
-		//	(0,0) (1,0)
-		//	(0,1) (1,1)
-		//
-		// and the PQRS quad is always axis-aligned. First of all, convert
-		// from pixel space to texture space.
-		w := float32(img.texWidth)
-		h := float32(img.texHeight)
-		px := float32(srcBounds.Min.X-img.Rect.Min.X) / w
-		py := float32(srcBounds.Min.Y-img.Rect.Min.Y) / h
-		qx := float32(srcBounds.Max.X-img.Rect.Min.X) / w
-		sy := float32(srcBounds.Max.Y-img.Rect.Min.Y) / h
-		// Due to axis alignment, qy = py and sx = px.
-		//
-		// The simultaneous equations are:
-		//	  0 +   0 + a02 = px
-		//	  0 +   0 + a12 = py
-		//	a00 +   0 + a02 = qx
-		//	a10 +   0 + a12 = qy = py
-		//	  0 + a01 + a02 = sx = px
-		//	  0 + a11 + a12 = sy
-		glimage.uvp.WriteAffine(&f32.Affine{{
-			qx - px,
-			0,
-			px,
-		}, {
-			0,
-			sy - py,
-			py,
-		}})
-	}
-
-	gl.ActiveTexture(gl.TEXTURE0)
-	gl.BindTexture(gl.TEXTURE_2D, img.Texture)
-	gl.Uniform1i(glimage.textureSample, 0)
-
-	gl.BindBuffer(gl.ARRAY_BUFFER, glimage.quadXY)
-	gl.EnableVertexAttribArray(glimage.pos)
-	gl.VertexAttribPointer(glimage.pos, 2, gl.FLOAT, false, 0, 0)
-
-	gl.BindBuffer(gl.ARRAY_BUFFER, glimage.quadUV)
-	gl.EnableVertexAttribArray(glimage.inUV)
-	gl.VertexAttribPointer(glimage.inUV, 2, gl.FLOAT, false, 0, 0)
-
-	gl.DrawArrays(gl.TRIANGLE_STRIP, 0, 4)
-
-	gl.DisableVertexAttribArray(glimage.pos)
-	gl.DisableVertexAttribArray(glimage.inUV)
-}
-
-var quadXYCoords = f32.Bytes(binary.LittleEndian,
-	-1, +1, // top left
-	+1, +1, // top right
-	-1, -1, // bottom left
-	+1, -1, // bottom right
-)
-
-var quadUVCoords = f32.Bytes(binary.LittleEndian,
-	0, 0, // top left
-	1, 0, // top right
-	0, 1, // bottom left
-	1, 1, // bottom right
-)
-
-const vertexShader = `#version 100
-uniform mat3 mvp;
-uniform mat3 uvp;
-attribute vec3 pos;
-attribute vec2 inUV;
-varying vec2 UV;
-void main() {
-	vec3 p = pos;
-	p.z = 1.0;
-	gl_Position = vec4(mvp * p, 1);
-	UV = (uvp * vec3(inUV, 1)).xy;
-}
-`
-
-const fragmentShader = `#version 100
-precision mediump float;
-varying vec2 UV;
-uniform sampler2D textureSample;
-void main(){
-	gl_FragColor = texture2D(textureSample, UV);
-}
-`
diff --git a/go/src/golang.org/x/mobile/gl/glutil/glimage_test.go b/go/src/golang.org/x/mobile/gl/glutil/glimage_test.go
deleted file mode 100644
index fbfd4a0..0000000
--- a/go/src/golang.org/x/mobile/gl/glutil/glimage_test.go
+++ /dev/null
@@ -1,190 +0,0 @@
-// Copyright 2014 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.
-
-// +build darwin linux,!android
-
-// TODO(crawshaw): Run tests on other OSs when more contexts are supported.
-
-package glutil
-
-import (
-	"image"
-	"image/color"
-	"image/draw"
-	"image/png"
-	"io/ioutil"
-	"os"
-	"testing"
-
-	"golang.org/x/mobile/geom"
-	"golang.org/x/mobile/gl"
-)
-
-func TestImage(t *testing.T) {
-	// GL testing strategy:
-	// 	1. Create an offscreen framebuffer object.
-	// 	2. Configure framebuffer to render to a GL texture.
-	//	3. Run test code: use glimage to draw testdata.
-	//	4. Copy GL texture back into system memory.
-	//	5. Compare to a pre-computed image.
-
-	f, err := os.Open("../../testdata/testpattern.png")
-	if err != nil {
-		t.Fatal(err)
-	}
-	defer f.Close()
-	src, _, err := image.Decode(f)
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	ctxGL := createContext()
-	defer ctxGL.destroy()
-
-	const (
-		pixW = 100
-		pixH = 100
-		ptW  = geom.Pt(50)
-		ptH  = geom.Pt(50)
-	)
-	geom.PixelsPerPt = float32(pixW) / float32(ptW)
-	geom.Width = ptW
-	geom.Height = ptH
-
-	fBuf := gl.GenFramebuffer()
-	gl.BindFramebuffer(gl.FRAMEBUFFER, fBuf)
-	colorBuf := gl.GenRenderbuffer()
-	gl.BindRenderbuffer(gl.RENDERBUFFER, colorBuf)
-	// https://www.khronos.org/opengles/sdk/docs/man/xhtml/glRenderbufferStorage.xml
-	// says that the internalFormat "must be one of the following symbolic constants:
-	// GL_RGBA4, GL_RGB565, GL_RGB5_A1, GL_DEPTH_COMPONENT16, or GL_STENCIL_INDEX8".
-	gl.RenderbufferStorage(gl.RENDERBUFFER, gl.RGB565, pixW, pixH)
-	gl.FramebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, colorBuf)
-
-	if status := gl.CheckFramebufferStatus(gl.FRAMEBUFFER); status != gl.FRAMEBUFFER_COMPLETE {
-		t.Fatalf("framebuffer create failed: %v", status)
-	}
-
-	gl.ClearColor(0, 0, 1, 1) // blue
-	gl.Clear(gl.COLOR_BUFFER_BIT)
-	gl.Viewport(0, 0, pixW, pixH)
-
-	m := NewImage(src.Bounds().Dx(), src.Bounds().Dy())
-	b := m.RGBA.Bounds()
-	draw.Draw(m.RGBA, b, src, src.Bounds().Min, draw.Src)
-	m.Upload()
-	b.Min.X += 10
-	b.Max.Y /= 2
-
-	// All-integer right-angled triangles offsetting the
-	// box: 24-32-40, 12-16-20.
-	ptTopLeft := geom.Point{0, 24}
-	ptTopRight := geom.Point{32, 0}
-	ptBottomLeft := geom.Point{12, 24 + 16}
-	ptBottomRight := geom.Point{12 + 32, 16}
-	m.Draw(ptTopLeft, ptTopRight, ptBottomLeft, b)
-
-	// For unknown reasons, a windowless OpenGL context renders upside-
-	// down. That is, a quad covering the initial viewport spans:
-	//
-	//	(-1, -1) ( 1, -1)
-	//	(-1,  1) ( 1,  1)
-	//
-	// To avoid modifying live code for tests, we flip the rows
-	// recovered from the renderbuffer. We are not the first:
-	//
-	// http://lists.apple.com/archives/mac-opengl/2010/Jun/msg00080.html
-	got := image.NewRGBA(image.Rect(0, 0, pixW, pixH))
-	upsideDownPix := make([]byte, len(got.Pix))
-	gl.ReadPixels(upsideDownPix, 0, 0, pixW, pixH, gl.RGBA, gl.UNSIGNED_BYTE)
-	for y := 0; y < pixH; y++ {
-		i0 := (pixH - 1 - y) * got.Stride
-		i1 := i0 + pixW*4
-		copy(got.Pix[y*got.Stride:], upsideDownPix[i0:i1])
-	}
-
-	drawCross(got, 0, 0)
-	drawCross(got, int(ptTopLeft.X.Px()), int(ptTopLeft.Y.Px()))
-	drawCross(got, int(ptBottomRight.X.Px()), int(ptBottomRight.Y.Px()))
-	drawCross(got, pixW-1, pixH-1)
-
-	const wantPath = "../../testdata/testpattern-window.png"
-	f, err = os.Open(wantPath)
-	if err != nil {
-		t.Fatal(err)
-	}
-	defer f.Close()
-	wantSrc, _, err := image.Decode(f)
-	if err != nil {
-		t.Fatal(err)
-	}
-	want, ok := wantSrc.(*image.RGBA)
-	if !ok {
-		b := wantSrc.Bounds()
-		want = image.NewRGBA(b)
-		draw.Draw(want, b, wantSrc, b.Min, draw.Src)
-	}
-
-	if !imageEq(got, want) {
-		// Write out the image we got.
-		f, err = ioutil.TempFile("", "testpattern-window-got")
-		if err != nil {
-			t.Fatal(err)
-		}
-		f.Close()
-		gotPath := f.Name() + ".png"
-		f, err = os.Create(gotPath)
-		if err != nil {
-			t.Fatal(err)
-		}
-		if err := png.Encode(f, got); err != nil {
-			t.Fatal(err)
-		}
-		if err := f.Close(); err != nil {
-			t.Fatal(err)
-		}
-		t.Errorf("got\n%s\nwant\n%s", gotPath, wantPath)
-	}
-}
-
-func drawCross(m *image.RGBA, x, y int) {
-	c := color.RGBA{0xff, 0, 0, 0xff} // red
-	m.SetRGBA(x+0, y-2, c)
-	m.SetRGBA(x+0, y-1, c)
-	m.SetRGBA(x-2, y+0, c)
-	m.SetRGBA(x-1, y+0, c)
-	m.SetRGBA(x+0, y+0, c)
-	m.SetRGBA(x+1, y+0, c)
-	m.SetRGBA(x+2, y+0, c)
-	m.SetRGBA(x+0, y+1, c)
-	m.SetRGBA(x+0, y+2, c)
-}
-
-func eqEpsilon(x, y uint8) bool {
-	const epsilon = 9
-	return x-y < epsilon || y-x < epsilon
-}
-
-func colorEq(c0, c1 color.RGBA) bool {
-	return eqEpsilon(c0.R, c1.R) && eqEpsilon(c0.G, c1.G) && eqEpsilon(c0.B, c1.B) && eqEpsilon(c0.A, c1.A)
-}
-
-func imageEq(m0, m1 *image.RGBA) bool {
-	b0 := m0.Bounds()
-	b1 := m1.Bounds()
-	if b0 != b1 {
-		return false
-	}
-	badPx := 0
-	for y := b0.Min.Y; y < b0.Max.Y; y++ {
-		for x := b0.Min.X; x < b0.Max.X; x++ {
-			c0, c1 := m0.At(x, y).(color.RGBA), m1.At(x, y).(color.RGBA)
-			if !colorEq(c0, c1) {
-				badPx++
-			}
-		}
-	}
-	badFrac := float64(badPx) / float64(b0.Dx()*b0.Dy())
-	return badFrac < 0.01
-}
diff --git a/go/src/golang.org/x/mobile/gl/glutil/glutil.go b/go/src/golang.org/x/mobile/gl/glutil/glutil.go
deleted file mode 100644
index fc8842c..0000000
--- a/go/src/golang.org/x/mobile/gl/glutil/glutil.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2014 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 glutil implements OpenGL utility functions.
-package glutil // import "golang.org/x/mobile/gl/glutil"
-
-import (
-	"fmt"
-
-	"golang.org/x/mobile/gl"
-)
-
-// CreateProgram creates, compiles, and links a gl.Program.
-func CreateProgram(vertexSrc, fragmentSrc string) (gl.Program, error) {
-	program := gl.CreateProgram()
-	if program.Value == 0 {
-		return gl.Program{}, fmt.Errorf("glutil: no programs available")
-	}
-
-	vertexShader, err := loadShader(gl.VERTEX_SHADER, vertexSrc)
-	if err != nil {
-		return gl.Program{}, err
-	}
-	fragmentShader, err := loadShader(gl.FRAGMENT_SHADER, fragmentSrc)
-	if err != nil {
-		gl.DeleteShader(vertexShader)
-		return gl.Program{}, err
-	}
-
-	gl.AttachShader(program, vertexShader)
-	gl.AttachShader(program, fragmentShader)
-	gl.LinkProgram(program)
-
-	// Flag shaders for deletion when program is unlinked.
-	gl.DeleteShader(vertexShader)
-	gl.DeleteShader(fragmentShader)
-
-	if gl.GetProgrami(program, gl.LINK_STATUS) == 0 {
-		defer gl.DeleteProgram(program)
-		return gl.Program{}, fmt.Errorf("glutil: %s", gl.GetProgramInfoLog(program))
-	}
-	return program, nil
-}
-
-func loadShader(shaderType gl.Enum, src string) (gl.Shader, error) {
-	shader := gl.CreateShader(shaderType)
-	if shader.Value == 0 {
-		return gl.Shader{}, fmt.Errorf("glutil: could not create shader (type %v)", shaderType)
-	}
-	gl.ShaderSource(shader, src)
-	gl.CompileShader(shader)
-	if gl.GetShaderi(shader, gl.COMPILE_STATUS) == 0 {
-		defer gl.DeleteShader(shader)
-		return gl.Shader{}, fmt.Errorf("shader compile: %s", gl.GetShaderInfoLog(shader))
-	}
-	return shader, nil
-}
diff --git a/go/src/golang.org/x/mobile/gl/types_common.go b/go/src/golang.org/x/mobile/gl/types_common.go
deleted file mode 100644
index 1222c3e..0000000
--- a/go/src/golang.org/x/mobile/gl/types_common.go
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2014 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.
-
-// +build linux darwin
-
-package gl
-
-// This file contains GL Types and their methods that are independent of the
-// "gldebug" build tag.
-
-/*
-#cgo darwin,amd64  LDFLAGS: -framework OpenGL
-#cgo darwin,arm    LDFLAGS: -framework OpenGLES
-#cgo linux         LDFLAGS: -lGLESv2
-
-#cgo darwin,amd64  CFLAGS: -Dos_darwin_amd64
-#cgo darwin,arm    CFLAGS: -Dos_darwin_arm
-#cgo linux         CFLAGS: -Dos_linux
-
-#ifdef os_linux
-#include <GLES2/gl2.h>
-#endif
-#ifdef os_darwin_arm
-#include <OpenGLES/ES2/gl.h>
-#endif
-#ifdef os_darwin_amd64
-#include <OpenGL/gl3.h>
-#endif
-
-void blendColor(GLfloat r, GLfloat g, GLfloat b, GLfloat a) { glBlendColor(r, g, b, a); }
-void clearColor(GLfloat r, GLfloat g, GLfloat b, GLfloat a) { glClearColor(r, g, b, a); }
-void clearDepthf(GLfloat d)                                 { glClearDepthf(d); }
-void depthRangef(GLfloat n, GLfloat f)                      { glDepthRangef(n, f); }
-void sampleCoverage(GLfloat v, GLboolean invert)            { glSampleCoverage(v, invert); }
-*/
-import "C"
-import "golang.org/x/mobile/f32"
-
-// WriteAffine writes the contents of an Affine to a 3x3 matrix GL uniform.
-func (u Uniform) WriteAffine(a *f32.Affine) {
-	var m [9]float32
-	m[0*3+0] = a[0][0]
-	m[0*3+1] = a[1][0]
-	m[0*3+2] = 0
-	m[1*3+0] = a[0][1]
-	m[1*3+1] = a[1][1]
-	m[1*3+2] = 0
-	m[2*3+0] = a[0][2]
-	m[2*3+1] = a[1][2]
-	m[2*3+2] = 1
-	UniformMatrix3fv(u, m[:])
-}
-
-// WriteMat4 writes the contents of a 4x4 matrix to a GL uniform.
-func (u Uniform) WriteMat4(p *f32.Mat4) {
-	var m [16]float32
-	m[0*4+0] = p[0][0]
-	m[0*4+1] = p[1][0]
-	m[0*4+2] = p[2][0]
-	m[0*4+3] = p[3][0]
-	m[1*4+0] = p[0][1]
-	m[1*4+1] = p[1][1]
-	m[1*4+2] = p[2][1]
-	m[1*4+3] = p[3][1]
-	m[2*4+0] = p[0][2]
-	m[2*4+1] = p[1][2]
-	m[2*4+2] = p[2][2]
-	m[2*4+3] = p[3][2]
-	m[3*4+0] = p[0][3]
-	m[3*4+1] = p[1][3]
-	m[3*4+2] = p[2][3]
-	m[3*4+3] = p[3][3]
-	UniformMatrix4fv(u, m[:])
-}
-
-// WriteVec4 writes the contents of a 4-element vector to a GL uniform.
-func (u Uniform) WriteVec4(v *f32.Vec4) {
-	Uniform4f(u, v[0], v[1], v[2], v[3])
-}
-
-func glBoolean(b bool) C.GLboolean {
-	if b {
-		return 0
-	}
-	return 1
-}
-
-// Desktop OpenGL and the ES 2/3 APIs have a very slight difference
-// that is imperceptible to C programmers: some function parameters
-// use the type Glclampf and some use GLfloat. These two types are
-// equivalent in size and bit layout (both are single-precision
-// floats), but it plays havoc with cgo. We adjust the types by using
-// C wrappers for the problematic functions.
-
-func blendColor(r, g, b, a float32) {
-	C.blendColor(C.GLfloat(r), C.GLfloat(g), C.GLfloat(b), C.GLfloat(a))
-}
-func clearColor(r, g, b, a float32) {
-	C.clearColor(C.GLfloat(r), C.GLfloat(g), C.GLfloat(b), C.GLfloat(a))
-}
-func clearDepthf(d float32)            { C.clearDepthf(C.GLfloat(d)) }
-func depthRangef(n, f float32)         { C.depthRangef(C.GLfloat(n), C.GLfloat(f)) }
-func sampleCoverage(v float32, i bool) { C.sampleCoverage(C.GLfloat(v), glBoolean(i)) }
diff --git a/go/src/golang.org/x/mobile/gl/types_debug.go b/go/src/golang.org/x/mobile/gl/types_debug.go
deleted file mode 100644
index f9c5183..0000000
--- a/go/src/golang.org/x/mobile/gl/types_debug.go
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2014 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.
-
-// +build linux darwin
-// +build gldebug
-
-package gl
-
-// Alternate versions of the types defined in types.go with extra
-// debugging information attached. For documentation, see types.go.
-
-/*
-#cgo darwin  LDFLAGS: -framework OpenGL
-#cgo linux   LDFLAGS: -lGLESv2
-#cgo darwin  CFLAGS: -DGOOS_darwin
-#cgo linux   CFLAGS: -DGOOS_linux
-
-#ifdef GOOS_linux
-#include <GLES2/gl2.h>
-#endif
-
-#ifdef GOOS_darwin
-#include <OpenGL/gl3.h>
-#endif
-*/
-import "C"
-import "fmt"
-
-type Enum uint32
-
-type Attrib struct {
-	Value uint
-	name  string
-}
-
-type Program struct {
-	Value uint32
-}
-
-type Shader struct {
-	Value uint32
-}
-
-type Buffer struct {
-	Value uint32
-}
-
-type Framebuffer struct {
-	Value uint32
-}
-
-type Renderbuffer struct {
-	Value uint32
-}
-
-type Texture struct {
-	Value uint32
-}
-
-type Uniform struct {
-	Value int32
-	name  string
-}
-
-func (v Attrib) c() C.GLuint       { return C.GLuint(v.Value) }
-func (v Enum) c() C.GLenum         { return C.GLenum(v) }
-func (v Program) c() C.GLuint      { return C.GLuint(v.Value) }
-func (v Shader) c() C.GLuint       { return C.GLuint(v.Value) }
-func (v Buffer) c() C.GLuint       { return C.GLuint(v.Value) }
-func (v Framebuffer) c() C.GLuint  { return C.GLuint(v.Value) }
-func (v Renderbuffer) c() C.GLuint { return C.GLuint(v.Value) }
-func (v Texture) c() C.GLuint      { return C.GLuint(v.Value) }
-func (v Uniform) c() C.GLint       { return C.GLint(v.Value) }
-
-func (v Attrib) String() string       { return fmt.Sprintf("Attrib(%d:%s)", v.Value, v.name) }
-func (v Program) String() string      { return fmt.Sprintf("Program(%d)", v.Value) }
-func (v Shader) String() string       { return fmt.Sprintf("Shader(%d)", v.Value) }
-func (v Buffer) String() string       { return fmt.Sprintf("Buffer(%d)", v.Value) }
-func (v Framebuffer) String() string  { return fmt.Sprintf("Framebuffer(%d)", v.Value) }
-func (v Renderbuffer) String() string { return fmt.Sprintf("Renderbuffer(%d)", v.Value) }
-func (v Texture) String() string      { return fmt.Sprintf("Texture(%d)", v.Value) }
-func (v Uniform) String() string      { return fmt.Sprintf("Uniform(%d:%s)", v.Value, v.name) }
diff --git a/go/src/golang.org/x/mobile/gl/types_prod.go b/go/src/golang.org/x/mobile/gl/types_prod.go
deleted file mode 100644
index 5bed42d..0000000
--- a/go/src/golang.org/x/mobile/gl/types_prod.go
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright 2014 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.
-
-// +build linux darwin
-// +build !gldebug
-
-package gl
-
-/*
-#ifdef os_linux
-#include <GLES2/gl2.h>
-#endif
-#ifdef os_darwin_arm
-#include <OpenGLES/ES2/gl.h>
-#endif
-#ifdef os_darwin_amd64
-#include <OpenGL/gl3.h>
-#endif
-*/
-import "C"
-import "fmt"
-
-// Enum is equivalent to GLenum, and is normally used with one of the
-// constants defined in this package.
-type Enum uint32
-
-// Types are defined a structs so that in debug mode they can carry
-// extra information, such as a string name. See typesdebug.go.
-
-// Attrib is an attribute index.
-type Attrib struct {
-	Value uint
-}
-
-// Program identifies a compiled shader program.
-type Program struct {
-	Value uint32
-}
-
-// Shader identifies a GLSL shader.
-type Shader struct {
-	Value uint32
-}
-
-// Buffer identifies a GL buffer object.
-type Buffer struct {
-	Value uint32
-}
-
-// Framebuffer identifies a GL framebuffer.
-type Framebuffer struct {
-	Value uint32
-}
-
-// A Renderbuffer is a GL object that holds an image in an internal format.
-type Renderbuffer struct {
-	Value uint32
-}
-
-// A Texture identifies a GL texture unit.
-type Texture struct {
-	Value uint32
-}
-
-// A Uniform identifies a GL uniform attribute value.
-type Uniform struct {
-	Value int32
-}
-
-func (v Attrib) c() C.GLuint       { return C.GLuint(v.Value) }
-func (v Enum) c() C.GLenum         { return C.GLenum(v) }
-func (v Program) c() C.GLuint      { return C.GLuint(v.Value) }
-func (v Shader) c() C.GLuint       { return C.GLuint(v.Value) }
-func (v Buffer) c() C.GLuint       { return C.GLuint(v.Value) }
-func (v Framebuffer) c() C.GLuint  { return C.GLuint(v.Value) }
-func (v Renderbuffer) c() C.GLuint { return C.GLuint(v.Value) }
-func (v Texture) c() C.GLuint      { return C.GLuint(v.Value) }
-func (v Uniform) c() C.GLint       { return C.GLint(v.Value) }
-
-func (v Attrib) String() string       { return fmt.Sprintf("Attrib(%d)", v) }
-func (v Program) String() string      { return fmt.Sprintf("Program(%d)", v.Value) }
-func (v Shader) String() string       { return fmt.Sprintf("Shader(%d)", v.Value) }
-func (v Buffer) String() string       { return fmt.Sprintf("Buffer(%d)", v.Value) }
-func (v Framebuffer) String() string  { return fmt.Sprintf("Framebuffer(%d)", v.Value) }
-func (v Renderbuffer) String() string { return fmt.Sprintf("Renderbuffer(%d)", v.Value) }
-func (v Texture) String() string      { return fmt.Sprintf("Texture(%d)", v.Value) }
-func (v Uniform) String() string      { return fmt.Sprintf("Uniform(%d)", v.Value) }
diff --git a/go/src/golang.org/x/mobile/sprite/clock/clock.go b/go/src/golang.org/x/mobile/sprite/clock/clock.go
deleted file mode 100644
index dc5245a..0000000
--- a/go/src/golang.org/x/mobile/sprite/clock/clock.go
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2014 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 clock provides a clock and time functions for a sprite engine.
-package clock // import "golang.org/x/mobile/sprite/clock"
-
-// A Time represents an instant in sprite time.
-//
-// The application using the sprite engine is responsible for
-// determining sprite time.
-//
-// Typically time 0 is when the app is initialized and time is
-// quantized at the intended frame rate. For example, an app may
-// record wall time when it is initialized
-//
-//	var start = time.Now()
-//
-// and then compute the current instant in time for 60 FPS:
-//
-//	now := clock.Time(time.Since(start) * 60 / time.Second)
-//
-// An application can pause or reset sprite time, but it must be aware
-// of any stateful sprite.Arranger instances that expect time to
-// continue.
-type Time int32
diff --git a/go/src/golang.org/x/mobile/sprite/clock/tween.go b/go/src/golang.org/x/mobile/sprite/clock/tween.go
deleted file mode 100644
index f5f2a03..0000000
--- a/go/src/golang.org/x/mobile/sprite/clock/tween.go
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2014 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 clock
-
-// Standard tween functions.
-//
-// Easing means a slowing near the timing boundary, as defined by
-// a cubic bezier curve. Exact parameters match the CSS properties.
-var (
-	EaseIn    = CubicBezier(0.42, 0, 1, 1)
-	EaseOut   = CubicBezier(0, 0, 0.58, 1)
-	EaseInOut = CubicBezier(0.42, 0, 0.58, 1)
-)
-
-// Linear computes the fraction [0,1] that t lies between [t0,t1].
-func Linear(t0, t1, t Time) float32 {
-	if t >= t1 {
-		return 1
-	}
-	if t <= t0 {
-		return 0
-	}
-	return float32(t-t0) / float32(t1-t0)
-}
-
-// CubicBezier generates a tween function determined by a Cubic Bézier curve.
-//
-// The parameters are cubic control parameters. The curve starts at (0,0)
-// going toward (x0,y0), and arrives at (1,1) coming from (x1,y1).
-func CubicBezier(x0, y0, x1, y1 float32) func(t0, t1, t Time) float32 {
-	return func(start, end, now Time) float32 {
-		// A Cubic-Bezier curve restricted to starting at (0,0) and
-		// ending at (1,1) is defined as
-		//
-		// 	B(t) = 3*(1-t)^2*t*P0 + 3*(1-t)*t^2*P1 + t^3
-		//
-		// with derivative
-		//
-		//	B'(t) = 3*(1-t)^2*P0 + 6*(1-t)*t*(P1-P0) + 3*t^2*(1-P1)
-		//
-		// Given a value x ∈ [0,1], we solve for t using Newton's
-		// method and solve for y using t.
-
-		x := Linear(start, end, now)
-
-		// Solve for t using x.
-		t := x
-		for i := 0; i < 5; i++ {
-			t2 := t * t
-			t3 := t2 * t
-			d := 1 - t
-			d2 := d * d
-
-			nx := 3*d2*t*x0 + 3*d*t2*x1 + t3
-			dxdt := 3*d2*x0 + 6*d*t*(x1-x0) + 3*t2*(1-x1)
-			if dxdt == 0 {
-				break
-			}
-
-			t -= (nx - x) / dxdt
-			if t <= 0 || t >= 1 {
-				break
-			}
-		}
-		if t < 0 {
-			t = 0
-		}
-		if t > 1 {
-			t = 1
-		}
-
-		// Solve for y using t.
-		t2 := t * t
-		t3 := t2 * t
-		d := 1 - t
-		d2 := d * d
-		y := 3*d2*t*y0 + 3*d*t2*y1 + t3
-
-		return y
-	}
-}
diff --git a/go/src/golang.org/x/mobile/sprite/clock/tween_test.go b/go/src/golang.org/x/mobile/sprite/clock/tween_test.go
deleted file mode 100644
index 2bcf101..0000000
--- a/go/src/golang.org/x/mobile/sprite/clock/tween_test.go
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2014 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 clock
-
-import "testing"
-
-func TestLinear(t *testing.T) {
-	t0 := Time(0)
-	t1 := Time(6 * 60)
-	now := Time(3 * 60)
-
-	if c := Linear(t0, t1, now); c != 0.5 {
-		t.Errorf("c=%.2f, want 0.5", c)
-	}
-}
-
-func TestCubicBezier(t *testing.T) {
-	t0 := Time(0)
-	t1 := Time(1e6)
-
-	tests := []struct {
-		x0, y0, x1, y1 float32
-		x, y           float32
-	}{
-		{0.00, 0.1, 0.4, 1.00, 0.0, 0.00},
-		{0.00, 0.1, 0.4, 1.00, 0.1, 0.26},
-		{0.00, 0.1, 0.4, 1.00, 0.5, 0.79},
-		{0.00, 0.1, 0.4, 1.00, 0.9, 0.99},
-		{0.00, 0.1, 0.4, 1.00, 1.0, 1.00},
-		{0.36, 0.2, 0.3, 0.85, 0.0, 0.0},
-		{0.36, 0.2, 0.3, 0.85, 0.3059, 0.3952},
-		{0.36, 0.2, 0.3, 0.85, 0.4493, 0.6408},
-		{0.36, 0.2, 0.3, 0.85, 0.8116, 0.9410},
-		{0.00, 0.0, 1.0, 1.00, 0.1, 0.1},
-		{0.00, 0.0, 1.0, 1.00, 0.5, 0.5},
-		{0.00, 0.0, 1.0, 1.00, 0.9, 0.9},
-		{0.42, 0.0, 1.0, 1.00, 0.0, 0.0},
-	}
-
-	for _, test := range tests {
-		cb := CubicBezier(test.x0, test.y0, test.x1, test.y1)
-		now := t0 + Time(float32(t1-t0)*test.x)
-		y := cb(t0, t1, now)
-
-		const epsilon = 0.01
-		diff := y - test.y
-		if diff < -epsilon || +epsilon < diff {
-			t.Errorf("CubicBezier(%.2f,%.2f,%.2f,%.2f): for x=%.2f got y=%.2f, want %.2f", test.x0, test.y0, test.x1, test.y1, test.x, y, test.y)
-		}
-	}
-}
diff --git a/go/src/golang.org/x/mobile/sprite/glsprite/glsprite.go b/go/src/golang.org/x/mobile/sprite/glsprite/glsprite.go
deleted file mode 100644
index 2cf7f37..0000000
--- a/go/src/golang.org/x/mobile/sprite/glsprite/glsprite.go
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright 2014 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 glsprite implements a sprite Engine using OpenGL ES 2.
-//
-// Each sprite.Texture is loaded as a GL texture object and drawn
-// to the screen via an affine transform done in a simple shader.
-package glsprite // import "golang.org/x/mobile/sprite/glsprite"
-
-import (
-	"image"
-	"image/draw"
-
-	"golang.org/x/mobile/f32"
-	"golang.org/x/mobile/geom"
-	"golang.org/x/mobile/gl/glutil"
-	"golang.org/x/mobile/sprite"
-	"golang.org/x/mobile/sprite/clock"
-)
-
-type node struct {
-	// TODO: move this into package sprite as Node.EngineFields.RelTransform??
-	relTransform f32.Affine
-}
-
-type texture struct {
-	glImage *glutil.Image
-	b       image.Rectangle
-}
-
-func (t *texture) Bounds() (w, h int) { return t.b.Dx(), t.b.Dy() }
-
-func (t *texture) Download(r image.Rectangle, dst draw.Image) {
-	panic("TODO")
-}
-
-func (t *texture) Upload(r image.Rectangle, src image.Image) {
-	draw.Draw(t.glImage.RGBA, r, src, src.Bounds().Min, draw.Src)
-	t.glImage.Upload()
-}
-
-func (t *texture) Unload() {
-	panic("TODO")
-}
-
-func Engine() sprite.Engine {
-	return &engine{
-		nodes: []*node{nil},
-	}
-}
-
-type engine struct {
-	glImages map[sprite.Texture]*glutil.Image
-	nodes    []*node
-
-	absTransforms []f32.Affine
-}
-
-func (e *engine) Register(n *sprite.Node) {
-	if n.EngineFields.Index != 0 {
-		panic("glsprite: sprite.Node already registered")
-	}
-	o := &node{}
-	o.relTransform.Identity()
-
-	e.nodes = append(e.nodes, o)
-	n.EngineFields.Index = int32(len(e.nodes) - 1)
-}
-
-func (e *engine) Unregister(n *sprite.Node) {
-	panic("todo")
-}
-
-func (e *engine) LoadTexture(src image.Image) (sprite.Texture, error) {
-	b := src.Bounds()
-	t := &texture{glutil.NewImage(b.Dx(), b.Dy()), b}
-	t.Upload(b, src)
-	// TODO: set "glImage.Pix = nil"?? We don't need the CPU-side image any more.
-	return t, nil
-}
-
-func (e *engine) SetSubTex(n *sprite.Node, x sprite.SubTex) {
-	n.EngineFields.Dirty = true // TODO: do we need to propagate dirtiness up/down the tree?
-	n.EngineFields.SubTex = x
-}
-
-func (e *engine) SetTransform(n *sprite.Node, m f32.Affine) {
-	n.EngineFields.Dirty = true // TODO: do we need to propagate dirtiness up/down the tree?
-	e.nodes[n.EngineFields.Index].relTransform = m
-}
-
-func (e *engine) Render(scene *sprite.Node, t clock.Time) {
-	e.absTransforms = append(e.absTransforms[:0], f32.Affine{
-		{1, 0, 0},
-		{0, 1, 0},
-	})
-	e.render(scene, t)
-}
-
-func (e *engine) render(n *sprite.Node, t clock.Time) {
-	if n.EngineFields.Index == 0 {
-		panic("glsprite: sprite.Node not registered")
-	}
-	if n.Arranger != nil {
-		n.Arranger.Arrange(e, n, t)
-	}
-
-	// Push absTransforms.
-	// TODO: cache absolute transforms and use EngineFields.Dirty?
-	rel := &e.nodes[n.EngineFields.Index].relTransform
-	m := f32.Affine{}
-	m.Mul(&e.absTransforms[len(e.absTransforms)-1], rel)
-	e.absTransforms = append(e.absTransforms, m)
-
-	if x := n.EngineFields.SubTex; x.T != nil {
-		x.T.(*texture).glImage.Draw(
-			geom.Point{
-				geom.Pt(m[0][2]),
-				geom.Pt(m[1][2]),
-			},
-			geom.Point{
-				geom.Pt(m[0][2] + m[0][0]),
-				geom.Pt(m[1][2] + m[1][0]),
-			},
-			geom.Point{
-				geom.Pt(m[0][2] + m[0][1]),
-				geom.Pt(m[1][2] + m[1][1]),
-			},
-			x.R,
-		)
-	}
-
-	for c := n.FirstChild; c != nil; c = c.NextSibling {
-		e.render(c, t)
-	}
-
-	// Pop absTransforms.
-	e.absTransforms = e.absTransforms[:len(e.absTransforms)-1]
-}
diff --git a/go/src/golang.org/x/mobile/sprite/portable/affine.go b/go/src/golang.org/x/mobile/sprite/portable/affine.go
deleted file mode 100644
index 28016d8..0000000
--- a/go/src/golang.org/x/mobile/sprite/portable/affine.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2014 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 portable
-
-import (
-	"image"
-	"image/draw"
-
-	"golang.org/x/mobile/f32"
-)
-
-// affine draws each pixel of dst using bilinear interpolation of the
-// affine-transformed position in src. This is equivalent to:
-//
-//	for each (x,y) in dst:
-//		dst(x,y) = bilinear interpolation of src(a*(x,y))
-//
-// While this is the simpler implementation, it can be counter-
-// intuitive as an affine transformation is usually described in terms
-// of the source, not the destination. For example, a scale transform
-//
-//	Affine{{2, 0, 0}, {0, 2, 0}}
-//
-// will produce a dst that is half the size of src. To perform a
-// traditional affine transform, use the inverse of the affine matrix.
-func affine(dst *image.RGBA, src image.Image, srcb image.Rectangle, mask image.Image, a *f32.Affine, op draw.Op) {
-	b := dst.Bounds()
-	var maskb image.Rectangle
-	if mask != nil {
-		maskb = mask.Bounds().Add(srcb.Min)
-	}
-
-	for y := b.Min.Y; y < b.Max.Y; y++ {
-		for x := b.Min.X; x < b.Max.X; x++ {
-			// Interpolate from the bounds of the src sub-image
-			// to the bounds of the dst sub-image.
-			ix, iy := pt(a, x-b.Min.X, y-b.Min.Y)
-			sx := ix + float32(srcb.Min.X)
-			sy := iy + float32(srcb.Min.Y)
-			if !inBounds(srcb, sx, sy) {
-				continue
-			}
-
-			// m is the maximum color value returned by image.Color.RGBA.
-			const m = 1<<16 - 1
-
-			ma := uint32(m)
-			if mask != nil {
-				mx := ix + float32(maskb.Min.X)
-				my := iy + float32(maskb.Min.Y)
-				if !inBounds(maskb, mx, my) {
-					continue
-				}
-				_, _, _, ma = bilinear(mask, mx, my).RGBA()
-			}
-
-			sr, sg, sb, sa := bilinear(src, sx, sy).RGBA()
-			off := (y-dst.Rect.Min.Y)*dst.Stride + (x-dst.Rect.Min.X)*4
-
-			if op == draw.Over {
-				dr := uint32(dst.Pix[off+0])
-				dg := uint32(dst.Pix[off+1])
-				db := uint32(dst.Pix[off+2])
-				da := uint32(dst.Pix[off+3])
-
-				// dr, dg, db, and da are all 8-bit color at the moment, ranging
-				// in [0,255]. We work in 16-bit color, and so would normally do:
-				//	dr |= dr << 8
-				// and similarly for the other values, but instead we multiply by 0x101
-				// to shift these to 16-bit colors, ranging in [0,65535].
-				// This yields the same result, but is fewer arithmetic operations.
-				//
-				// This logic comes from drawCopyOver in the image/draw package.
-				a := m - (sa * ma / m)
-				a *= 0x101
-
-				dst.Pix[off+0] = uint8((dr*a + sr*ma) / m >> 8)
-				dst.Pix[off+1] = uint8((dg*a + sg*ma) / m >> 8)
-				dst.Pix[off+2] = uint8((db*a + sb*ma) / m >> 8)
-				dst.Pix[off+3] = uint8((da*a + sa*ma) / m >> 8)
-			} else {
-				dst.Pix[off+0] = uint8(sr * ma / m >> 8)
-				dst.Pix[off+1] = uint8(sg * ma / m >> 8)
-				dst.Pix[off+2] = uint8(sb * ma / m >> 8)
-				dst.Pix[off+3] = uint8(sa * ma / m >> 8)
-			}
-		}
-	}
-}
-
-func inBounds(b image.Rectangle, x, y float32) bool {
-	if x < float32(b.Min.X) || x >= float32(b.Max.X) {
-		return false
-	}
-	if y < float32(b.Min.Y) || y >= float32(b.Max.Y) {
-		return false
-	}
-	return true
-}
-
-func pt(a *f32.Affine, x0, y0 int) (x1, y1 float32) {
-	fx := float32(x0) + 0.5
-	fy := float32(y0) + 0.5
-	x1 = fx*a[0][0] + fy*a[0][1] + a[0][2]
-	y1 = fx*a[1][0] + fy*a[1][1] + a[1][2]
-	return x1, y1
-}
diff --git a/go/src/golang.org/x/mobile/sprite/portable/affine_test.go b/go/src/golang.org/x/mobile/sprite/portable/affine_test.go
deleted file mode 100644
index d475edb..0000000
--- a/go/src/golang.org/x/mobile/sprite/portable/affine_test.go
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright 2014 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 portable
-
-import (
-	"image"
-	"image/color"
-	"image/draw"
-	"image/png"
-	"io/ioutil"
-	"math"
-	"os"
-	"testing"
-
-	"golang.org/x/mobile/f32"
-	"golang.org/x/mobile/geom"
-)
-
-func TestAffine(t *testing.T) {
-	f, err := os.Open("../../testdata/testpattern.png")
-	if err != nil {
-		t.Fatal(err)
-	}
-	defer f.Close()
-	srcOrig, _, err := image.Decode(f)
-	if err != nil {
-		t.Fatal(err)
-	}
-	src := image.NewRGBA(srcOrig.Bounds())
-	draw.Draw(src, src.Rect, srcOrig, srcOrig.Bounds().Min, draw.Src)
-
-	const (
-		pixW = 100
-		pixH = 100
-		ptW  = geom.Pt(50)
-		ptH  = geom.Pt(50)
-	)
-	geom.PixelsPerPt = float32(pixW) / float32(ptW)
-	geom.Width = ptW
-	geom.Height = ptH
-
-	got := image.NewRGBA(image.Rect(0, 0, pixW, pixH))
-	blue := image.NewUniform(color.RGBA{B: 0xff, A: 0xff})
-	draw.Draw(got, got.Bounds(), blue, image.Point{}, draw.Src)
-
-	b := src.Bounds()
-	b.Min.X += 10
-	b.Max.Y /= 2
-
-	var a f32.Affine
-	a.Identity()
-	a.Scale(&a, geom.PixelsPerPt, geom.PixelsPerPt)
-	a.Translate(&a, 0, 24)
-	a.Rotate(&a, float32(math.Asin(12./20)))
-	// See commentary in the render method defined in portable.go.
-	a.Scale(&a, 40/float32(b.Dx()), 20/float32(b.Dy()))
-	a.Inverse(&a)
-
-	affine(got, src, b, nil, &a, draw.Over)
-
-	ptTopLeft := geom.Point{0, 24}
-	ptBottomRight := geom.Point{12 + 32, 16}
-
-	drawCross(got, 0, 0)
-	drawCross(got, int(ptTopLeft.X.Px()), int(ptTopLeft.Y.Px()))
-	drawCross(got, int(ptBottomRight.X.Px()), int(ptBottomRight.Y.Px()))
-	drawCross(got, pixW-1, pixH-1)
-
-	const wantPath = "../../testdata/testpattern-window.png"
-	f, err = os.Open(wantPath)
-	if err != nil {
-		t.Fatal(err)
-	}
-	defer f.Close()
-	wantSrc, _, err := image.Decode(f)
-	if err != nil {
-		t.Fatal(err)
-	}
-	want, ok := wantSrc.(*image.RGBA)
-	if !ok {
-		b := wantSrc.Bounds()
-		want = image.NewRGBA(b)
-		draw.Draw(want, b, wantSrc, b.Min, draw.Src)
-	}
-
-	if !imageEq(got, want) {
-		gotPath, err := writeTempPNG("testpattern-window-got", got)
-		if err != nil {
-			t.Fatal(err)
-		}
-		t.Errorf("got\n%s\nwant\n%s", gotPath, wantPath)
-	}
-}
-
-func TestAffineMask(t *testing.T) {
-	f, err := os.Open("../../testdata/testpattern.png")
-	if err != nil {
-		t.Fatal(err)
-	}
-	defer f.Close()
-	srcOrig, _, err := image.Decode(f)
-	if err != nil {
-		t.Fatal(err)
-	}
-	b := srcOrig.Bounds()
-	src := image.NewRGBA(b)
-	draw.Draw(src, src.Rect, srcOrig, b.Min, draw.Src)
-	mask := image.NewAlpha(b)
-	for y := b.Min.Y; y < b.Max.Y; y++ {
-		for x := b.Min.X; x < b.Max.X; x++ {
-			mask.Set(x, y, color.Alpha{A: uint8(x - b.Min.X)})
-		}
-	}
-	want := image.NewRGBA(b)
-	draw.DrawMask(want, want.Rect, src, b.Min, mask, b.Min, draw.Src)
-
-	a := new(f32.Affine)
-	a.Identity()
-	got := image.NewRGBA(b)
-	affine(got, src, b, mask, a, draw.Src)
-
-	if !imageEq(got, want) {
-		gotPath, err := writeTempPNG("testpattern-mask-got", got)
-		if err != nil {
-			t.Fatal(err)
-		}
-		wantPath, err := writeTempPNG("testpattern-mask-want", want)
-		if err != nil {
-			t.Fatal(err)
-		}
-		t.Errorf("got\n%s\nwant\n%s", gotPath, wantPath)
-	}
-}
-
-func writeTempPNG(prefix string, m image.Image) (string, error) {
-	f, err := ioutil.TempFile("", prefix+"-")
-	if err != nil {
-		return "", err
-	}
-	f.Close()
-	path := f.Name() + ".png"
-	f, err = os.Create(path)
-	if err != nil {
-		return "", err
-	}
-	if err := png.Encode(f, m); err != nil {
-		f.Close()
-		return "", err
-	}
-	return path, f.Close()
-}
-
-func drawCross(m *image.RGBA, x, y int) {
-	c := color.RGBA{0xff, 0, 0, 0xff} // red
-	m.SetRGBA(x+0, y-2, c)
-	m.SetRGBA(x+0, y-1, c)
-	m.SetRGBA(x-2, y+0, c)
-	m.SetRGBA(x-1, y+0, c)
-	m.SetRGBA(x+0, y+0, c)
-	m.SetRGBA(x+1, y+0, c)
-	m.SetRGBA(x+2, y+0, c)
-	m.SetRGBA(x+0, y+1, c)
-	m.SetRGBA(x+0, y+2, c)
-}
-
-func eqEpsilon(x, y uint8) bool {
-	const epsilon = 9
-	return x-y < epsilon || y-x < epsilon
-}
-
-func colorEq(c0, c1 color.RGBA) bool {
-	return eqEpsilon(c0.R, c1.R) && eqEpsilon(c0.G, c1.G) && eqEpsilon(c0.B, c1.B) && eqEpsilon(c0.A, c1.A)
-}
-
-func imageEq(m0, m1 *image.RGBA) bool {
-	b0 := m0.Bounds()
-	b1 := m1.Bounds()
-	if b0 != b1 {
-		return false
-	}
-	badPx := 0
-	for y := b0.Min.Y; y < b0.Max.Y; y++ {
-		for x := b0.Min.X; x < b0.Max.X; x++ {
-			c0, c1 := m0.At(x, y).(color.RGBA), m1.At(x, y).(color.RGBA)
-			if !colorEq(c0, c1) {
-				badPx++
-			}
-		}
-	}
-	badFrac := float64(badPx) / float64(b0.Dx()*b0.Dy())
-	return badFrac < 0.01
-}
diff --git a/go/src/golang.org/x/mobile/sprite/portable/bilinear.go b/go/src/golang.org/x/mobile/sprite/portable/bilinear.go
deleted file mode 100644
index 37bc59a..0000000
--- a/go/src/golang.org/x/mobile/sprite/portable/bilinear.go
+++ /dev/null
@@ -1,196 +0,0 @@
-// Copyright 2014 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 portable
-
-import (
-	"image"
-	"image/color"
-	"math"
-)
-
-func bilinear(src image.Image, x, y float32) color.Color {
-	switch src := src.(type) {
-	case *image.RGBA:
-		return bilinearRGBA(src, x, y)
-	case *image.Alpha:
-		return bilinearAlpha(src, x, y)
-	case *image.Uniform:
-		return src.C
-	default:
-		return bilinearGeneral(src, x, y)
-	}
-}
-
-func bilinearGeneral(src image.Image, x, y float32) color.RGBA64 {
-	p := findLinearSrc(src.Bounds(), x, y)
-
-	r00, g00, b00, a00 := src.At(p.low.X, p.low.Y).RGBA()
-	r01, g01, b01, a01 := src.At(p.high.X, p.low.Y).RGBA()
-	r10, g10, b10, a10 := src.At(p.low.X, p.high.Y).RGBA()
-	r11, g11, b11, a11 := src.At(p.high.X, p.high.Y).RGBA()
-
-	fr := float32(r00) * p.frac00
-	fg := float32(g00) * p.frac00
-	fb := float32(b00) * p.frac00
-	fa := float32(a00) * p.frac00
-
-	fr += float32(r01) * p.frac01
-	fg += float32(g01) * p.frac01
-	fb += float32(b01) * p.frac01
-	fa += float32(a01) * p.frac01
-
-	fr += float32(r10) * p.frac10
-	fg += float32(g10) * p.frac10
-	fb += float32(b10) * p.frac10
-	fa += float32(a10) * p.frac10
-
-	fr += float32(r11) * p.frac11
-	fg += float32(g11) * p.frac11
-	fb += float32(b11) * p.frac11
-	fa += float32(a11) * p.frac11
-
-	return color.RGBA64{
-		R: uint16(fr + 0.5),
-		G: uint16(fg + 0.5),
-		B: uint16(fb + 0.5),
-		A: uint16(fa + 0.5),
-	}
-}
-
-func bilinearRGBA(src *image.RGBA, x, y float32) color.RGBA {
-	p := findLinearSrc(src.Bounds(), x, y)
-
-	// Slice offsets for the surrounding pixels.
-	off00 := src.PixOffset(p.low.X, p.low.Y)
-	off01 := src.PixOffset(p.high.X, p.low.Y)
-	off10 := src.PixOffset(p.low.X, p.high.Y)
-	off11 := src.PixOffset(p.high.X, p.high.Y)
-
-	fr := float32(src.Pix[off00+0]) * p.frac00
-	fg := float32(src.Pix[off00+1]) * p.frac00
-	fb := float32(src.Pix[off00+2]) * p.frac00
-	fa := float32(src.Pix[off00+3]) * p.frac00
-
-	fr += float32(src.Pix[off01+0]) * p.frac01
-	fg += float32(src.Pix[off01+1]) * p.frac01
-	fb += float32(src.Pix[off01+2]) * p.frac01
-	fa += float32(src.Pix[off01+3]) * p.frac01
-
-	fr += float32(src.Pix[off10+0]) * p.frac10
-	fg += float32(src.Pix[off10+1]) * p.frac10
-	fb += float32(src.Pix[off10+2]) * p.frac10
-	fa += float32(src.Pix[off10+3]) * p.frac10
-
-	fr += float32(src.Pix[off11+0]) * p.frac11
-	fg += float32(src.Pix[off11+1]) * p.frac11
-	fb += float32(src.Pix[off11+2]) * p.frac11
-	fa += float32(src.Pix[off11+3]) * p.frac11
-
-	return color.RGBA{
-		R: uint8(fr + 0.5),
-		G: uint8(fg + 0.5),
-		B: uint8(fb + 0.5),
-		A: uint8(fa + 0.5),
-	}
-}
-
-func bilinearAlpha(src *image.Alpha, x, y float32) color.Alpha {
-	p := findLinearSrc(src.Bounds(), x, y)
-
-	// Slice offsets for the surrounding pixels.
-	off00 := src.PixOffset(p.low.X, p.low.Y)
-	off01 := src.PixOffset(p.high.X, p.low.Y)
-	off10 := src.PixOffset(p.low.X, p.high.Y)
-	off11 := src.PixOffset(p.high.X, p.high.Y)
-
-	fa := float32(src.Pix[off00]) * p.frac00
-	fa += float32(src.Pix[off01]) * p.frac01
-	fa += float32(src.Pix[off10]) * p.frac10
-	fa += float32(src.Pix[off11]) * p.frac11
-
-	return color.Alpha{A: uint8(fa + 0.5)}
-}
-
-type bilinearSrc struct {
-	// Top-left and bottom-right interpolation sources
-	low, high image.Point
-	// Fraction of each pixel to take. The 0 suffix indicates
-	// top/left, and the 1 suffix indicates bottom/right.
-	frac00, frac01, frac10, frac11 float32
-}
-
-func floor(x float32) float32 { return float32(math.Floor(float64(x))) }
-func ceil(x float32) float32  { return float32(math.Ceil(float64(x))) }
-
-func findLinearSrc(b image.Rectangle, sx, sy float32) bilinearSrc {
-	maxX := float32(b.Max.X)
-	maxY := float32(b.Max.Y)
-	minX := float32(b.Min.X)
-	minY := float32(b.Min.Y)
-	lowX := floor(sx - 0.5)
-	lowY := floor(sy - 0.5)
-	if lowX < minX {
-		lowX = minX
-	}
-	if lowY < minY {
-		lowY = minY
-	}
-
-	highX := ceil(sx - 0.5)
-	highY := ceil(sy - 0.5)
-	if highX >= maxX {
-		highX = maxX - 1
-	}
-	if highY >= maxY {
-		highY = maxY - 1
-	}
-
-	// In the variables below, the 0 suffix indicates top/left, and the
-	// 1 suffix indicates bottom/right.
-
-	// Center of each surrounding pixel.
-	x00 := lowX + 0.5
-	y00 := lowY + 0.5
-	x01 := highX + 0.5
-	y01 := lowY + 0.5
-	x10 := lowX + 0.5
-	y10 := highY + 0.5
-	x11 := highX + 0.5
-	y11 := highY + 0.5
-
-	p := bilinearSrc{
-		low:  image.Pt(int(lowX), int(lowY)),
-		high: image.Pt(int(highX), int(highY)),
-	}
-
-	// Literally, edge cases. If we are close enough to the edge of
-	// the image, curtail the interpolation sources.
-	if lowX == highX && lowY == highY {
-		p.frac00 = 1.0
-	} else if sy-minY <= 0.5 && sx-minX <= 0.5 {
-		p.frac00 = 1.0
-	} else if maxY-sy <= 0.5 && maxX-sx <= 0.5 {
-		p.frac11 = 1.0
-	} else if sy-minY <= 0.5 || lowY == highY {
-		p.frac00 = x01 - sx
-		p.frac01 = sx - x00
-	} else if sx-minX <= 0.5 || lowX == highX {
-		p.frac00 = y10 - sy
-		p.frac10 = sy - y00
-	} else if maxY-sy <= 0.5 {
-		p.frac10 = x11 - sx
-		p.frac11 = sx - x10
-	} else if maxX-sx <= 0.5 {
-		p.frac01 = y11 - sy
-		p.frac11 = sy - y01
-	} else {
-		p.frac00 = (x01 - sx) * (y10 - sy)
-		p.frac01 = (sx - x00) * (y11 - sy)
-		p.frac10 = (x11 - sx) * (sy - y00)
-		p.frac11 = (sx - x10) * (sy - y01)
-	}
-
-	return p
-}
diff --git a/go/src/golang.org/x/mobile/sprite/portable/bilinear_test.go b/go/src/golang.org/x/mobile/sprite/portable/bilinear_test.go
deleted file mode 100644
index 004dfa7..0000000
--- a/go/src/golang.org/x/mobile/sprite/portable/bilinear_test.go
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2014 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 portable
-
-import (
-	"image"
-	"image/color"
-	"testing"
-)
-
-type interpTest struct {
-	desc     string
-	src      []uint8
-	srcWidth int
-	x, y     float32
-	expect   uint8
-}
-
-func (p *interpTest) newSrc() *image.RGBA {
-	b := image.Rect(0, 0, p.srcWidth, len(p.src)/p.srcWidth)
-	src := image.NewRGBA(b)
-	i := 0
-	for y := b.Min.Y; y < b.Max.Y; y++ {
-		for x := b.Min.X; x < b.Max.X; x++ {
-			src.SetRGBA(x, y, color.RGBA{
-				R: p.src[i],
-				G: p.src[i],
-				B: p.src[i],
-				A: 0xff,
-			})
-			i++
-		}
-	}
-	return src
-}
-
-var interpTests = []interpTest{
-	{
-		desc:     "center of a single white pixel should match that pixel",
-		src:      []uint8{0x00},
-		srcWidth: 1,
-		x:        0.5,
-		y:        0.5,
-		expect:   0x00,
-	},
-	{
-		desc: "middle of a square is equally weighted",
-		src: []uint8{
-			0x00, 0xff,
-			0xff, 0x00,
-		},
-		srcWidth: 2,
-		x:        1.0,
-		y:        1.0,
-		expect:   0x80,
-	},
-	{
-		desc: "center of a pixel is just that pixel",
-		src: []uint8{
-			0x00, 0xff,
-			0xff, 0x00,
-		},
-		srcWidth: 2,
-		x:        1.5,
-		y:        0.5,
-		expect:   0xff,
-	},
-	{
-		desc: "asymmetry abounds",
-		src: []uint8{
-			0xaa, 0x11, 0x55,
-			0xff, 0x95, 0xdd,
-		},
-		srcWidth: 3,
-		x:        2.0,
-		y:        1.0,
-		expect:   0x76, // (0x11 + 0x55 + 0x95 + 0xdd) / 4
-	},
-}
-
-func TestBilinear(t *testing.T) {
-	for _, p := range interpTests {
-		src := p.newSrc()
-
-		c0 := bilinearGeneral(src, p.x, p.y)
-		c0R, c0G, c0B, c0A := c0.RGBA()
-		r := uint8(c0R >> 8)
-		g := uint8(c0G >> 8)
-		b := uint8(c0B >> 8)
-		a := uint8(c0A >> 8)
-
-		if r != g || r != b || a != 0xff {
-			t.Errorf("expect channels to match, got %v", c0)
-			continue
-		}
-		if r != p.expect {
-			t.Errorf("%s: got 0x%02x want 0x%02x", p.desc, r, p.expect)
-			continue
-		}
-
-		// fast path for *image.RGBA
-		c1 := bilinearRGBA(src, p.x, p.y)
-		if r != c1.R || g != c1.G || b != c1.B || a != c1.A {
-			t.Errorf("%s: RGBA fast path mismatch got %v want %v", p.desc, c1, c0)
-			continue
-		}
-
-		// fast path for *image.Alpha
-		alpha := image.NewAlpha(src.Bounds())
-		for y := src.Bounds().Min.Y; y < src.Bounds().Max.Y; y++ {
-			for x := src.Bounds().Min.X; x < src.Bounds().Max.X; x++ {
-				r, _, _, _ := src.At(x, y).RGBA()
-				alpha.Set(x, y, color.Alpha{A: uint8(r >> 8)})
-			}
-		}
-		c2 := bilinearAlpha(alpha, p.x, p.y)
-		if c2.A != r {
-			t.Errorf("%s: Alpha fast path mismatch got %v want %v", p.desc, c2, c0)
-			continue
-		}
-	}
-}
-
-func TestBilinearSubImage(t *testing.T) {
-	b0 := image.Rect(0, 0, 4, 4)
-	src0 := image.NewRGBA(b0)
-	b1 := image.Rect(1, 1, 3, 3)
-	src1 := src0.SubImage(b1).(*image.RGBA)
-	src1.Set(1, 1, color.RGBA{0x11, 0, 0, 0xff})
-	src1.Set(2, 1, color.RGBA{0x22, 0, 0, 0xff})
-	src1.Set(1, 2, color.RGBA{0x33, 0, 0, 0xff})
-	src1.Set(2, 2, color.RGBA{0x44, 0, 0, 0xff})
-
-	tests := []struct {
-		x, y float32
-		want uint32
-	}{
-		{1, 1, 0x11},
-		{3, 1, 0x22},
-		{1, 3, 0x33},
-		{3, 3, 0x44},
-		{2, 2, 0x2b},
-	}
-
-	for _, p := range tests {
-		r, _, _, _ := bilinear(src1, p.x, p.y).RGBA()
-		r >>= 8
-		if r != p.want {
-			t.Errorf("(%.0f, %.0f): got 0x%02x want 0x%02x", p.x, p.y, r, p.want)
-		}
-	}
-}
diff --git a/go/src/golang.org/x/mobile/sprite/portable/portable.go b/go/src/golang.org/x/mobile/sprite/portable/portable.go
deleted file mode 100644
index 25a57bb..0000000
--- a/go/src/golang.org/x/mobile/sprite/portable/portable.go
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright 2014 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 portable implements a sprite Engine using the image package.
-//
-// It is intended to serve as a reference implementation for testing
-// other sprite Engines written against OpenGL, or other more exotic
-// modern hardware interfaces.
-package portable // import "golang.org/x/mobile/sprite/portable"
-
-import (
-	"image"
-	"image/draw"
-
-	"golang.org/x/mobile/f32"
-	"golang.org/x/mobile/geom"
-	"golang.org/x/mobile/sprite"
-	"golang.org/x/mobile/sprite/clock"
-)
-
-// Engine builds a sprite Engine that renders onto dst.
-func Engine(dst *image.RGBA) sprite.Engine {
-	return &engine{
-		dst:   dst,
-		nodes: []*node{nil},
-	}
-}
-
-type node struct {
-	// TODO: move this into package sprite as Node.EngineFields.RelTransform??
-	relTransform f32.Affine
-}
-
-type texture struct {
-	m *image.RGBA
-}
-
-func (t *texture) Bounds() (w, h int) {
-	b := t.m.Bounds()
-	return b.Dx(), b.Dy()
-}
-
-func (t *texture) Download(r image.Rectangle, dst draw.Image) {
-	draw.Draw(dst, r, t.m, t.m.Bounds().Min, draw.Src)
-}
-
-func (t *texture) Upload(r image.Rectangle, src image.Image) {
-	draw.Draw(t.m, r, src, src.Bounds().Min, draw.Src)
-}
-
-func (t *texture) Unload() { panic("TODO") }
-
-type engine struct {
-	dst           *image.RGBA
-	nodes         []*node
-	absTransforms []f32.Affine
-}
-
-func (e *engine) Register(n *sprite.Node) {
-	if n.EngineFields.Index != 0 {
-		panic("portable: sprite.Node already registered")
-	}
-
-	o := &node{}
-	o.relTransform.Identity()
-
-	e.nodes = append(e.nodes, o)
-	n.EngineFields.Index = int32(len(e.nodes) - 1)
-}
-
-func (e *engine) Unregister(n *sprite.Node) {
-	panic("todo")
-}
-
-func (e *engine) LoadTexture(m image.Image) (sprite.Texture, error) {
-	b := m.Bounds()
-	w, h := b.Dx(), b.Dy()
-
-	t := &texture{m: image.NewRGBA(image.Rect(0, 0, w, h))}
-	t.Upload(b, m)
-	return t, nil
-}
-
-func (e *engine) SetSubTex(n *sprite.Node, x sprite.SubTex) {
-	n.EngineFields.Dirty = true // TODO: do we need to propagate dirtiness up/down the tree?
-	n.EngineFields.SubTex = x
-}
-
-func (e *engine) SetTransform(n *sprite.Node, m f32.Affine) {
-	n.EngineFields.Dirty = true // TODO: do we need to propagate dirtiness up/down the tree?
-	e.nodes[n.EngineFields.Index].relTransform = m
-}
-
-func (e *engine) Render(scene *sprite.Node, t clock.Time) {
-	// Affine transforms are done in geom.Pt. When finally drawing
-	// the geom.Pt onto an image.Image we need to convert to system
-	// pixels. We scale by geom.PixelsPerPt to do this.
-	e.absTransforms = append(e.absTransforms[:0], f32.Affine{
-		{geom.PixelsPerPt, 0, 0},
-		{0, geom.PixelsPerPt, 0},
-	})
-	e.render(scene, t)
-}
-
-func (e *engine) render(n *sprite.Node, t clock.Time) {
-	if n.EngineFields.Index == 0 {
-		panic("portable: sprite.Node not registered")
-	}
-	if n.Arranger != nil {
-		n.Arranger.Arrange(e, n, t)
-	}
-
-	// Push absTransforms.
-	// TODO: cache absolute transforms and use EngineFields.Dirty?
-	rel := &e.nodes[n.EngineFields.Index].relTransform
-	m := f32.Affine{}
-	m.Mul(&e.absTransforms[len(e.absTransforms)-1], rel)
-	e.absTransforms = append(e.absTransforms, m)
-
-	if x := n.EngineFields.SubTex; x.T != nil {
-		// Affine transforms work in geom.Pt, which is entirely
-		// independent of the number of pixels in a texture. A texture
-		// of any image.Rectangle bounds rendered with
-		//
-		//	Affine{{1, 0, 0}, {0, 1, 0}}
-		//
-		// should have the dimensions (1pt, 1pt). To do this we divide
-		// by the pixel width and height, reducing the texture to
-		// (1px, 1px) of the destination image. Multiplying by
-		// geom.PixelsPerPt, done in Render above, makes it (1pt, 1pt).
-		dx, dy := x.R.Dx(), x.R.Dy()
-		if dx > 0 && dy > 0 {
-			m.Scale(&m, 1/float32(dx), 1/float32(dy))
-			m.Inverse(&m) // See the documentation on the affine function.
-			affine(e.dst, x.T.(*texture).m, x.R, nil, &m, draw.Over)
-		}
-	}
-
-	for c := n.FirstChild; c != nil; c = c.NextSibling {
-		e.render(c, t)
-	}
-
-	// Pop absTransforms.
-	e.absTransforms = e.absTransforms[:len(e.absTransforms)-1]
-}
diff --git a/go/src/golang.org/x/mobile/sprite/sprite.go b/go/src/golang.org/x/mobile/sprite/sprite.go
deleted file mode 100644
index 745b914..0000000
--- a/go/src/golang.org/x/mobile/sprite/sprite.go
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2014 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 sprite provides a 2D scene graph for rendering and animation.
-//
-// A tree of nodes is drawn by a rendering Engine, provided by another
-// package. The OS-independent Go version based on the image package is:
-//
-//	golang.org/x/mobile/sprite/portable
-//
-// An Engine draws a screen starting at a root Node. The tree is walked
-// depth-first, with affine transformations applied at each level.
-//
-// Nodes are rendered relative to their parent.
-//
-// Typical main loop:
-//
-//	for each frame {
-//		quantize time.Now() to a clock.Time
-//		process UI events
-//		modify the scene's nodes and animations (Arranger values)
-//		e.Render(scene, t)
-//	}
-package sprite // import "golang.org/x/mobile/sprite"
-
-import (
-	"image"
-	"image/draw"
-
-	"golang.org/x/mobile/f32"
-	"golang.org/x/mobile/sprite/clock"
-)
-
-type Arranger interface {
-	Arrange(e Engine, n *Node, t clock.Time)
-}
-
-type Texture interface {
-	Bounds() (w, h int)
-	Download(r image.Rectangle, dst draw.Image)
-	Upload(r image.Rectangle, src image.Image)
-	Unload()
-}
-
-type SubTex struct {
-	T Texture
-	R image.Rectangle
-}
-
-type Engine interface {
-	Register(n *Node)
-	Unregister(n *Node)
-
-	LoadTexture(a image.Image) (Texture, error)
-
-	SetSubTex(n *Node, x SubTex)
-	SetTransform(n *Node, m f32.Affine) // sets transform relative to parent.
-
-	Render(scene *Node, t clock.Time)
-}
-
-// A Node is a renderable element and forms a tree of Nodes.
-type Node struct {
-	Parent, FirstChild, LastChild, PrevSibling, NextSibling *Node
-
-	Arranger Arranger
-
-	// EngineFields contains fields that should only be accessed by Engine
-	// implementations. It is exported because such implementations can be
-	// in other packages.
-	EngineFields struct {
-		// TODO: separate TexDirty and TransformDirty bits?
-		Dirty  bool
-		Index  int32
-		SubTex SubTex
-	}
-}
-
-// AppendChild adds a node c as a child of n.
-//
-// It will panic if c already has a parent or siblings.
-func (n *Node) AppendChild(c *Node) {
-	if c.Parent != nil || c.PrevSibling != nil || c.NextSibling != nil {
-		panic("sprite: AppendChild called for an attached child Node")
-	}
-	last := n.LastChild
-	if last != nil {
-		last.NextSibling = c
-	} else {
-		n.FirstChild = c
-	}
-	n.LastChild = c
-	c.Parent = n
-	c.PrevSibling = last
-}
-
-// RemoveChild removes a node c that is a child of n. Afterwards, c will have
-// no parent and no siblings.
-//
-// It will panic if c's parent is not n.
-func (n *Node) RemoveChild(c *Node) {
-	if c.Parent != n {
-		panic("sprite: RemoveChild called for a non-child Node")
-	}
-	if n.FirstChild == c {
-		n.FirstChild = c.NextSibling
-	}
-	if c.NextSibling != nil {
-		c.NextSibling.PrevSibling = c.PrevSibling
-	}
-	if n.LastChild == c {
-		n.LastChild = c.PrevSibling
-	}
-	if c.PrevSibling != nil {
-		c.PrevSibling.NextSibling = c.NextSibling
-	}
-	c.Parent = nil
-	c.PrevSibling = nil
-	c.NextSibling = nil
-}
diff --git a/go/src/golang.org/x/mobile/testdata/gophercolor.png b/go/src/golang.org/x/mobile/testdata/gophercolor.png
deleted file mode 100644
index a1a2161..0000000
--- a/go/src/golang.org/x/mobile/testdata/gophercolor.png
+++ /dev/null
Binary files differ
diff --git a/go/src/golang.org/x/mobile/testdata/gopherswim.png b/go/src/golang.org/x/mobile/testdata/gopherswim.png
deleted file mode 100644
index 5ed0eaf..0000000
--- a/go/src/golang.org/x/mobile/testdata/gopherswim.png
+++ /dev/null
Binary files differ
diff --git a/go/src/golang.org/x/mobile/testdata/testpattern-window.png b/go/src/golang.org/x/mobile/testdata/testpattern-window.png
deleted file mode 100644
index 3262253..0000000
--- a/go/src/golang.org/x/mobile/testdata/testpattern-window.png
+++ /dev/null
Binary files differ
diff --git a/go/src/golang.org/x/mobile/testdata/testpattern.png b/go/src/golang.org/x/mobile/testdata/testpattern.png
deleted file mode 100644
index ec87bb5..0000000
--- a/go/src/golang.org/x/mobile/testdata/testpattern.png
+++ /dev/null
Binary files differ
diff --git a/go/src/golang.org/x/oauth2/README.google b/go/src/golang.org/x/oauth2/README.google
index cc53720..ff08bcf 100644
--- a/go/src/golang.org/x/oauth2/README.google
+++ b/go/src/golang.org/x/oauth2/README.google
@@ -1,5 +1,5 @@
-URL: https://github.com/golang/oauth2/archive/ce5ea7da934b76b1066c527632359e2b8f65db97.tar.gz
-Version: ce5ea7da934b76b1066c527632359e2b8f65db97
+URL: https://github.com/golang/oauth2/archive/8914e5017ca260f2a3a1575b1e6868874050d95e.tar.gz
+Version: 8914e5017ca260f2a3a1575b1e6868874050d95e
 License: New BSD
 License File: LICENSE
 
diff --git a/go/src/golang.org/x/oauth2/README.md b/go/src/golang.org/x/oauth2/README.md
index a5afeca..0d51417 100644
--- a/go/src/golang.org/x/oauth2/README.md
+++ b/go/src/golang.org/x/oauth2/README.md
@@ -43,7 +43,7 @@
 		"golang.org/x/oauth2"
 		"golang.org/x/oauth2/google"
 		newappengine "google.golang.org/appengine"
-		newurlftech "google.golang.org/urlfetch"
+		newurlfetch "google.golang.org/appengine/urlfetch"
 
 		"appengine"
 	)
diff --git a/go/src/golang.org/x/oauth2/client_appengine.go b/go/src/golang.org/x/oauth2/client_appengine.go
index 10aaf91..4a554cb 100644
--- a/go/src/golang.org/x/oauth2/client_appengine.go
+++ b/go/src/golang.org/x/oauth2/client_appengine.go
@@ -12,11 +12,12 @@
 	"net/http"
 
 	"golang.org/x/net/context"
+	"golang.org/x/oauth2/internal"
 	"google.golang.org/appengine/urlfetch"
 )
 
 func init() {
-	registerContextClientFunc(contextClientAppEngine)
+	internal.RegisterContextClientFunc(contextClientAppEngine)
 }
 
 func contextClientAppEngine(ctx context.Context) (*http.Client, error) {
diff --git a/go/src/golang.org/x/oauth2/clientcredentials/clientcredentials.go b/go/src/golang.org/x/oauth2/clientcredentials/clientcredentials.go
new file mode 100644
index 0000000..baebced
--- /dev/null
+++ b/go/src/golang.org/x/oauth2/clientcredentials/clientcredentials.go
@@ -0,0 +1,112 @@
+// Copyright 2014 The oauth2 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 clientcredentials implements the OAuth2.0 "client credentials" token flow,
+// also known as the "two-legged OAuth 2.0".
+//
+// This should be used when the client is acting on its own behalf or when the client
+// is the resource owner. It may also be used when requesting access to protected
+// resources based on an authorization previously arranged with the authorization
+// server.
+//
+// See http://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-4.4
+package clientcredentials // import "golang.org/x/oauth2/clientcredentials"
+
+import (
+	"net/http"
+	"net/url"
+	"strings"
+
+	"golang.org/x/net/context"
+	"golang.org/x/oauth2"
+	"golang.org/x/oauth2/internal"
+)
+
+// tokenFromInternal maps an *internal.Token struct into
+// an *oauth2.Token struct.
+func tokenFromInternal(t *internal.Token) *oauth2.Token {
+	if t == nil {
+		return nil
+	}
+	tk := &oauth2.Token{
+		AccessToken:  t.AccessToken,
+		TokenType:    t.TokenType,
+		RefreshToken: t.RefreshToken,
+		Expiry:       t.Expiry,
+	}
+	return tk.WithExtra(t.Raw)
+}
+
+// retrieveToken takes a *Config and uses that to retrieve an *internal.Token.
+// This token is then mapped from *internal.Token into an *oauth2.Token which is
+// returned along with an error.
+func retrieveToken(ctx context.Context, c *Config, v url.Values) (*oauth2.Token, error) {
+	tk, err := internal.RetrieveToken(ctx, c.ClientID, c.ClientSecret, c.TokenURL, v)
+	if err != nil {
+		return nil, err
+	}
+	return tokenFromInternal(tk), nil
+}
+
+// Client Credentials Config describes a 2-legged OAuth2 flow, with both the
+// client application information and the server's endpoint URLs.
+type Config struct {
+	// ClientID is the application's ID.
+	ClientID string
+
+	// ClientSecret is the application's secret.
+	ClientSecret string
+
+	// TokenURL is the resource server's token endpoint
+	// URL. This is a constant specific to each server.
+	TokenURL string
+
+	// Scope specifies optional requested permissions.
+	Scopes []string
+}
+
+// Token uses client credentials to retreive a token.
+// The HTTP client to use is derived from the context.
+// If nil, http.DefaultClient is used.
+func (c *Config) Token(ctx context.Context) (*oauth2.Token, error) {
+	return retrieveToken(ctx, c, url.Values{
+		"grant_type": {"client_credentials"},
+		"scope":      internal.CondVal(strings.Join(c.Scopes, " ")),
+	})
+}
+
+// Client returns an HTTP client using the provided token.
+// The token will auto-refresh as necessary. The underlying
+// HTTP transport will be obtained using the provided context.
+// The returned client and its Transport should not be modified.
+func (c *Config) Client(ctx context.Context) *http.Client {
+	return oauth2.NewClient(ctx, c.TokenSource(ctx))
+}
+
+// TokenSource returns a TokenSource that returns t until t expires,
+// automatically refreshing it as necessary using the provided context and the
+// client ID and client secret.
+//
+// Most users will use Config.Client instead.
+func (c *Config) TokenSource(ctx context.Context) oauth2.TokenSource {
+	source := &tokenSource{
+		ctx:  ctx,
+		conf: c,
+	}
+	return oauth2.ReuseTokenSource(nil, source)
+}
+
+type tokenSource struct {
+	ctx  context.Context
+	conf *Config
+}
+
+// Token refreshes the token by using a new client credentials request.
+// tokens received this way do not include a refresh token
+func (c *tokenSource) Token() (*oauth2.Token, error) {
+	return retrieveToken(c.ctx, c.conf, url.Values{
+		"grant_type": {"client_credentials"},
+		"scope":      internal.CondVal(strings.Join(c.conf.Scopes, " ")),
+	})
+}
diff --git a/go/src/golang.org/x/oauth2/clientcredentials/clientcredentials_test.go b/go/src/golang.org/x/oauth2/clientcredentials/clientcredentials_test.go
new file mode 100644
index 0000000..ab319e0
--- /dev/null
+++ b/go/src/golang.org/x/oauth2/clientcredentials/clientcredentials_test.go
@@ -0,0 +1,96 @@
+// Copyright 2014 The oauth2 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 clientcredentials
+
+import (
+	"io/ioutil"
+	"net/http"
+	"net/http/httptest"
+	"testing"
+
+	"golang.org/x/oauth2"
+)
+
+func newConf(url string) *Config {
+	return &Config{
+		ClientID:     "CLIENT_ID",
+		ClientSecret: "CLIENT_SECRET",
+		Scopes:       []string{"scope1", "scope2"},
+		TokenURL:     url + "/token",
+	}
+}
+
+type mockTransport struct {
+	rt func(req *http.Request) (resp *http.Response, err error)
+}
+
+func (t *mockTransport) RoundTrip(req *http.Request) (resp *http.Response, err error) {
+	return t.rt(req)
+}
+
+func TestTokenRequest(t *testing.T) {
+	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+		if r.URL.String() != "/token" {
+			t.Errorf("authenticate client request URL = %q; want %q", r.URL, "/token")
+		}
+		headerAuth := r.Header.Get("Authorization")
+		if headerAuth != "Basic Q0xJRU5UX0lEOkNMSUVOVF9TRUNSRVQ=" {
+			t.Errorf("Unexpected authorization header, %v is found.", headerAuth)
+		}
+		if got, want := r.Header.Get("Content-Type"), "application/x-www-form-urlencoded"; got != want {
+			t.Errorf("Content-Type header = %q; want %q", got, want)
+		}
+		body, err := ioutil.ReadAll(r.Body)
+		if err != nil {
+			r.Body.Close()
+		}
+		if err != nil {
+			t.Errorf("failed reading request body: %s.", err)
+		}
+		if string(body) != "client_id=CLIENT_ID&grant_type=client_credentials&scope=scope1+scope2" {
+			t.Errorf("payload = %q; want %q", string(body), "client_id=CLIENT_ID&grant_type=client_credentials&scope=scope1+scope2")
+		}
+		w.Header().Set("Content-Type", "application/x-www-form-urlencoded")
+		w.Write([]byte("access_token=90d64460d14870c08c81352a05dedd3465940a7c&token_type=bearer"))
+	}))
+	defer ts.Close()
+	conf := newConf(ts.URL)
+	tok, err := conf.Token(oauth2.NoContext)
+	if err != nil {
+		t.Error(err)
+	}
+	if !tok.Valid() {
+		t.Fatalf("token invalid. got: %#v", tok)
+	}
+	if tok.AccessToken != "90d64460d14870c08c81352a05dedd3465940a7c" {
+		t.Errorf("Access token = %q; want %q", tok.AccessToken, "90d64460d14870c08c81352a05dedd3465940a7c")
+	}
+	if tok.TokenType != "bearer" {
+		t.Errorf("token type = %q; want %q", tok.TokenType, "bearer")
+	}
+}
+
+func TestTokenRefreshRequest(t *testing.T) {
+	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+		if r.URL.String() == "/somethingelse" {
+			return
+		}
+		if r.URL.String() != "/token" {
+			t.Errorf("Unexpected token refresh request URL, %v is found.", r.URL)
+		}
+		headerContentType := r.Header.Get("Content-Type")
+		if headerContentType != "application/x-www-form-urlencoded" {
+			t.Errorf("Unexpected Content-Type header, %v is found.", headerContentType)
+		}
+		body, _ := ioutil.ReadAll(r.Body)
+		if string(body) != "client_id=CLIENT_ID&grant_type=client_credentials&scope=scope1+scope2" {
+			t.Errorf("Unexpected refresh token payload, %v is found.", string(body))
+		}
+	}))
+	defer ts.Close()
+	conf := newConf(ts.URL)
+	c := conf.Client(oauth2.NoContext)
+	c.Get(ts.URL + "/somethingelse")
+}
diff --git a/go/src/golang.org/x/oauth2/internal/oauth2.go b/go/src/golang.org/x/oauth2/internal/oauth2.go
index 37571a1..dc8ebfc 100644
--- a/go/src/golang.org/x/oauth2/internal/oauth2.go
+++ b/go/src/golang.org/x/oauth2/internal/oauth2.go
@@ -67,3 +67,10 @@
 	}
 	return result, nil
 }
+
+func CondVal(v string) []string {
+	if v == "" {
+		return nil
+	}
+	return []string{v}
+}
diff --git a/go/src/golang.org/x/oauth2/internal/token.go b/go/src/golang.org/x/oauth2/internal/token.go
new file mode 100644
index 0000000..a17d79d
--- /dev/null
+++ b/go/src/golang.org/x/oauth2/internal/token.go
@@ -0,0 +1,214 @@
+// Copyright 2014 The oauth2 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 internal contains support packages for oauth2 package.
+package internal
+
+import (
+	"encoding/json"
+	"fmt"
+	"io"
+	"io/ioutil"
+	"mime"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+	"time"
+
+	"golang.org/x/net/context"
+)
+
+// Token represents the crendentials used to authorize
+// the requests to access protected resources on the OAuth 2.0
+// provider's backend.
+//
+// This type is a mirror of oauth2.Token and exists to break
+// an otherwise-circular dependency. Other internal packages
+// should convert this Token into an oauth2.Token before use.
+type Token struct {
+	// AccessToken is the token that authorizes and authenticates
+	// the requests.
+	AccessToken string
+
+	// TokenType is the type of token.
+	// The Type method returns either this or "Bearer", the default.
+	TokenType string
+
+	// RefreshToken is a token that's used by the application
+	// (as opposed to the user) to refresh the access token
+	// if it expires.
+	RefreshToken string
+
+	// Expiry is the optional expiration time of the access token.
+	//
+	// If zero, TokenSource implementations will reuse the same
+	// token forever and RefreshToken or equivalent
+	// mechanisms for that TokenSource will not be used.
+	Expiry time.Time
+
+	// Raw optionally contains extra metadata from the server
+	// when updating a token.
+	Raw interface{}
+}
+
+// tokenJSON is the struct representing the HTTP response from OAuth2
+// providers returning a token in JSON form.
+type tokenJSON struct {
+	AccessToken  string         `json:"access_token"`
+	TokenType    string         `json:"token_type"`
+	RefreshToken string         `json:"refresh_token"`
+	ExpiresIn    expirationTime `json:"expires_in"` // at least PayPal returns string, while most return number
+	Expires      expirationTime `json:"expires"`    // broken Facebook spelling of expires_in
+}
+
+func (e *tokenJSON) expiry() (t time.Time) {
+	if v := e.ExpiresIn; v != 0 {
+		return time.Now().Add(time.Duration(v) * time.Second)
+	}
+	if v := e.Expires; v != 0 {
+		return time.Now().Add(time.Duration(v) * time.Second)
+	}
+	return
+}
+
+type expirationTime int32
+
+func (e *expirationTime) UnmarshalJSON(b []byte) error {
+	var n json.Number
+	err := json.Unmarshal(b, &n)
+	if err != nil {
+		return err
+	}
+	i, err := n.Int64()
+	if err != nil {
+		return err
+	}
+	*e = expirationTime(i)
+	return nil
+}
+
+var brokenAuthHeaderProviders = []string{
+	"https://accounts.google.com/",
+	"https://www.googleapis.com/",
+	"https://github.com/",
+	"https://api.instagram.com/",
+	"https://www.douban.com/",
+	"https://api.dropbox.com/",
+	"https://api.soundcloud.com/",
+	"https://www.linkedin.com/",
+	"https://api.twitch.tv/",
+	"https://oauth.vk.com/",
+	"https://api.odnoklassniki.ru/",
+	"https://connect.stripe.com/",
+	"https://api.pushbullet.com/",
+	"https://oauth.sandbox.trainingpeaks.com/",
+	"https://oauth.trainingpeaks.com/",
+	"https://www.strava.com/oauth/",
+	"https://app.box.com/",
+	"https://test-sandbox.auth.corp.google.com",
+	"https://user.gini.net/",
+	"https://api.netatmo.net/",
+}
+
+// providerAuthHeaderWorks reports whether the OAuth2 server identified by the tokenURL
+// implements the OAuth2 spec correctly
+// See https://code.google.com/p/goauth2/issues/detail?id=31 for background.
+// In summary:
+// - Reddit only accepts client secret in the Authorization header
+// - Dropbox accepts either it in URL param or Auth header, but not both.
+// - Google only accepts URL param (not spec compliant?), not Auth header
+// - Stripe only accepts client secret in Auth header with Bearer method, not Basic
+func providerAuthHeaderWorks(tokenURL string) bool {
+	for _, s := range brokenAuthHeaderProviders {
+		if strings.HasPrefix(tokenURL, s) {
+			// Some sites fail to implement the OAuth2 spec fully.
+			return false
+		}
+	}
+
+	// Assume the provider implements the spec properly
+	// otherwise. We can add more exceptions as they're
+	// discovered. We will _not_ be adding configurable hooks
+	// to this package to let users select server bugs.
+	return true
+}
+
+func RetrieveToken(ctx context.Context, ClientID, ClientSecret, TokenURL string, v url.Values) (*Token, error) {
+	hc, err := ContextClient(ctx)
+	if err != nil {
+		return nil, err
+	}
+	v.Set("client_id", ClientID)
+	bustedAuth := !providerAuthHeaderWorks(TokenURL)
+	if bustedAuth && ClientSecret != "" {
+		v.Set("client_secret", ClientSecret)
+	}
+	req, err := http.NewRequest("POST", TokenURL, strings.NewReader(v.Encode()))
+	if err != nil {
+		return nil, err
+	}
+	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
+	if !bustedAuth {
+		req.SetBasicAuth(ClientID, ClientSecret)
+	}
+	r, err := hc.Do(req)
+	if err != nil {
+		return nil, err
+	}
+	defer r.Body.Close()
+	body, err := ioutil.ReadAll(io.LimitReader(r.Body, 1<<20))
+	if err != nil {
+		return nil, fmt.Errorf("oauth2: cannot fetch token: %v", err)
+	}
+	if code := r.StatusCode; code < 200 || code > 299 {
+		return nil, fmt.Errorf("oauth2: cannot fetch token: %v\nResponse: %s", r.Status, body)
+	}
+
+	var token *Token
+	content, _, _ := mime.ParseMediaType(r.Header.Get("Content-Type"))
+	switch content {
+	case "application/x-www-form-urlencoded", "text/plain":
+		vals, err := url.ParseQuery(string(body))
+		if err != nil {
+			return nil, err
+		}
+		token = &Token{
+			AccessToken:  vals.Get("access_token"),
+			TokenType:    vals.Get("token_type"),
+			RefreshToken: vals.Get("refresh_token"),
+			Raw:          vals,
+		}
+		e := vals.Get("expires_in")
+		if e == "" {
+			// TODO(jbd): Facebook's OAuth2 implementation is broken and
+			// returns expires_in field in expires. Remove the fallback to expires,
+			// when Facebook fixes their implementation.
+			e = vals.Get("expires")
+		}
+		expires, _ := strconv.Atoi(e)
+		if expires != 0 {
+			token.Expiry = time.Now().Add(time.Duration(expires) * time.Second)
+		}
+	default:
+		var tj tokenJSON
+		if err = json.Unmarshal(body, &tj); err != nil {
+			return nil, err
+		}
+		token = &Token{
+			AccessToken:  tj.AccessToken,
+			TokenType:    tj.TokenType,
+			RefreshToken: tj.RefreshToken,
+			Expiry:       tj.expiry(),
+			Raw:          make(map[string]interface{}),
+		}
+		json.Unmarshal(body, &token.Raw) // no error checks for optional fields
+	}
+	// Don't overwrite `RefreshToken` with an empty value
+	// if this was a token refreshing request.
+	if token.RefreshToken == "" {
+		token.RefreshToken = v.Get("refresh_token")
+	}
+	return token, nil
+}
diff --git a/go/src/golang.org/x/oauth2/internal/token_test.go b/go/src/golang.org/x/oauth2/internal/token_test.go
new file mode 100644
index 0000000..864f6fa
--- /dev/null
+++ b/go/src/golang.org/x/oauth2/internal/token_test.go
@@ -0,0 +1,28 @@
+// Copyright 2014 The oauth2 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 internal contains support packages for oauth2 package.
+package internal
+
+import (
+	"fmt"
+	"testing"
+)
+
+func Test_providerAuthHeaderWorks(t *testing.T) {
+	for _, p := range brokenAuthHeaderProviders {
+		if providerAuthHeaderWorks(p) {
+			t.Errorf("URL: %s not found in list", p)
+		}
+		p := fmt.Sprintf("%ssomesuffix", p)
+		if providerAuthHeaderWorks(p) {
+			t.Errorf("URL: %s not found in list", p)
+		}
+	}
+	p := "https://api.not-in-the-list-example.com/"
+	if !providerAuthHeaderWorks(p) {
+		t.Errorf("URL: %s found in list", p)
+	}
+
+}
diff --git a/go/src/golang.org/x/oauth2/internal/transport.go b/go/src/golang.org/x/oauth2/internal/transport.go
new file mode 100644
index 0000000..521e7b4
--- /dev/null
+++ b/go/src/golang.org/x/oauth2/internal/transport.go
@@ -0,0 +1,67 @@
+// Copyright 2014 The oauth2 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 internal contains support packages for oauth2 package.
+package internal
+
+import (
+	"net/http"
+
+	"golang.org/x/net/context"
+)
+
+// HTTPClient is the context key to use with golang.org/x/net/context's
+// WithValue function to associate an *http.Client value with a context.
+var HTTPClient ContextKey
+
+// ContextKey is just an empty struct. It exists so HTTPClient can be
+// an immutable public variable with a unique type. It's immutable
+// because nobody else can create a ContextKey, being unexported.
+type ContextKey struct{}
+
+// ContextClientFunc is a func which tries to return an *http.Client
+// given a Context value. If it returns an error, the search stops
+// with that error.  If it returns (nil, nil), the search continues
+// down the list of registered funcs.
+type ContextClientFunc func(context.Context) (*http.Client, error)
+
+var contextClientFuncs []ContextClientFunc
+
+func RegisterContextClientFunc(fn ContextClientFunc) {
+	contextClientFuncs = append(contextClientFuncs, fn)
+}
+
+func ContextClient(ctx context.Context) (*http.Client, error) {
+	for _, fn := range contextClientFuncs {
+		c, err := fn(ctx)
+		if err != nil {
+			return nil, err
+		}
+		if c != nil {
+			return c, nil
+		}
+	}
+	if hc, ok := ctx.Value(HTTPClient).(*http.Client); ok {
+		return hc, nil
+	}
+	return http.DefaultClient, nil
+}
+
+func ContextTransport(ctx context.Context) http.RoundTripper {
+	hc, err := ContextClient(ctx)
+	// This is a rare error case (somebody using nil on App Engine).
+	if err != nil {
+		return ErrorTransport{err}
+	}
+	return hc.Transport
+}
+
+// ErrorTransport returns the specified error on RoundTrip.
+// This RoundTripper should be used in rare error cases where
+// error handling can be postponed to response handling time.
+type ErrorTransport struct{ Err error }
+
+func (t ErrorTransport) RoundTrip(*http.Request) (*http.Response, error) {
+	return nil, t.Err
+}
diff --git a/go/src/golang.org/x/oauth2/oauth2.go b/go/src/golang.org/x/oauth2/oauth2.go
index 98b3c2c..cca8b18 100644
--- a/go/src/golang.org/x/oauth2/oauth2.go
+++ b/go/src/golang.org/x/oauth2/oauth2.go
@@ -9,20 +9,14 @@
 
 import (
 	"bytes"
-	"encoding/json"
 	"errors"
-	"fmt"
-	"io"
-	"io/ioutil"
-	"mime"
 	"net/http"
 	"net/url"
-	"strconv"
 	"strings"
 	"sync"
-	"time"
 
 	"golang.org/x/net/context"
+	"golang.org/x/oauth2/internal"
 )
 
 // NoContext is the default context you should supply if not using
@@ -119,9 +113,9 @@
 	v := url.Values{
 		"response_type": {"code"},
 		"client_id":     {c.ClientID},
-		"redirect_uri":  condVal(c.RedirectURL),
-		"scope":         condVal(strings.Join(c.Scopes, " ")),
-		"state":         condVal(state),
+		"redirect_uri":  internal.CondVal(c.RedirectURL),
+		"scope":         internal.CondVal(strings.Join(c.Scopes, " ")),
+		"state":         internal.CondVal(state),
 	}
 	for _, opt := range opts {
 		opt.setValue(v)
@@ -151,7 +145,7 @@
 		"grant_type": {"password"},
 		"username":   {username},
 		"password":   {password},
-		"scope":      condVal(strings.Join(c.Scopes, " ")),
+		"scope":      internal.CondVal(strings.Join(c.Scopes, " ")),
 	})
 }
 
@@ -169,51 +163,11 @@
 	return retrieveToken(ctx, c, url.Values{
 		"grant_type":   {"authorization_code"},
 		"code":         {code},
-		"redirect_uri": condVal(c.RedirectURL),
-		"scope":        condVal(strings.Join(c.Scopes, " ")),
+		"redirect_uri": internal.CondVal(c.RedirectURL),
+		"scope":        internal.CondVal(strings.Join(c.Scopes, " ")),
 	})
 }
 
-// contextClientFunc is a func which tries to return an *http.Client
-// given a Context value. If it returns an error, the search stops
-// with that error.  If it returns (nil, nil), the search continues
-// down the list of registered funcs.
-type contextClientFunc func(context.Context) (*http.Client, error)
-
-var contextClientFuncs []contextClientFunc
-
-func registerContextClientFunc(fn contextClientFunc) {
-	contextClientFuncs = append(contextClientFuncs, fn)
-}
-
-func contextClient(ctx context.Context) (*http.Client, error) {
-	for _, fn := range contextClientFuncs {
-		c, err := fn(ctx)
-		if err != nil {
-			return nil, err
-		}
-		if c != nil {
-			return c, nil
-		}
-	}
-	if hc, ok := ctx.Value(HTTPClient).(*http.Client); ok {
-		return hc, nil
-	}
-	return http.DefaultClient, nil
-}
-
-func contextTransport(ctx context.Context) http.RoundTripper {
-	hc, err := contextClient(ctx)
-	if err != nil {
-		// This is a rare error case (somebody using nil on App Engine),
-		// so I'd rather not everybody do an error check on this Client
-		// method. They can get the error that they're doing it wrong
-		// later, at client.Get/PostForm time.
-		return errorTransport{err}
-	}
-	return hc.Transport
-}
-
 // Client returns an HTTP client using the provided token.
 // The token will auto-refresh as necessary. The underlying
 // HTTP transport will be obtained using the provided context.
@@ -299,177 +253,25 @@
 	return t, nil
 }
 
-func retrieveToken(ctx context.Context, c *Config, v url.Values) (*Token, error) {
-	hc, err := contextClient(ctx)
-	if err != nil {
-		return nil, err
-	}
-	v.Set("client_id", c.ClientID)
-	bustedAuth := !providerAuthHeaderWorks(c.Endpoint.TokenURL)
-	if bustedAuth && c.ClientSecret != "" {
-		v.Set("client_secret", c.ClientSecret)
-	}
-	req, err := http.NewRequest("POST", c.Endpoint.TokenURL, strings.NewReader(v.Encode()))
-	if err != nil {
-		return nil, err
-	}
-	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
-	if !bustedAuth {
-		req.SetBasicAuth(c.ClientID, c.ClientSecret)
-	}
-	r, err := hc.Do(req)
-	if err != nil {
-		return nil, err
-	}
-	defer r.Body.Close()
-	body, err := ioutil.ReadAll(io.LimitReader(r.Body, 1<<20))
-	if err != nil {
-		return nil, fmt.Errorf("oauth2: cannot fetch token: %v", err)
-	}
-	if code := r.StatusCode; code < 200 || code > 299 {
-		return nil, fmt.Errorf("oauth2: cannot fetch token: %v\nResponse: %s", r.Status, body)
-	}
-
-	var token *Token
-	content, _, _ := mime.ParseMediaType(r.Header.Get("Content-Type"))
-	switch content {
-	case "application/x-www-form-urlencoded", "text/plain":
-		vals, err := url.ParseQuery(string(body))
-		if err != nil {
-			return nil, err
-		}
-		token = &Token{
-			AccessToken:  vals.Get("access_token"),
-			TokenType:    vals.Get("token_type"),
-			RefreshToken: vals.Get("refresh_token"),
-			raw:          vals,
-		}
-		e := vals.Get("expires_in")
-		if e == "" {
-			// TODO(jbd): Facebook's OAuth2 implementation is broken and
-			// returns expires_in field in expires. Remove the fallback to expires,
-			// when Facebook fixes their implementation.
-			e = vals.Get("expires")
-		}
-		expires, _ := strconv.Atoi(e)
-		if expires != 0 {
-			token.Expiry = time.Now().Add(time.Duration(expires) * time.Second)
-		}
-	default:
-		var tj tokenJSON
-		if err = json.Unmarshal(body, &tj); err != nil {
-			return nil, err
-		}
-		token = &Token{
-			AccessToken:  tj.AccessToken,
-			TokenType:    tj.TokenType,
-			RefreshToken: tj.RefreshToken,
-			Expiry:       tj.expiry(),
-			raw:          make(map[string]interface{}),
-		}
-		json.Unmarshal(body, &token.raw) // no error checks for optional fields
-	}
-	// Don't overwrite `RefreshToken` with an empty value
-	// if this was a token refreshing request.
-	if token.RefreshToken == "" {
-		token.RefreshToken = v.Get("refresh_token")
-	}
-	return token, nil
+// StaticTokenSource returns a TokenSource that always returns the same token.
+// Because the provided token t is never refreshed, StaticTokenSource is only
+// useful for tokens that never expire.
+func StaticTokenSource(t *Token) TokenSource {
+	return staticTokenSource{t}
 }
 
-// tokenJSON is the struct representing the HTTP response from OAuth2
-// providers returning a token in JSON form.
-type tokenJSON struct {
-	AccessToken  string         `json:"access_token"`
-	TokenType    string         `json:"token_type"`
-	RefreshToken string         `json:"refresh_token"`
-	ExpiresIn    expirationTime `json:"expires_in"` // at least PayPal returns string, while most return number
-	Expires      expirationTime `json:"expires"`    // broken Facebook spelling of expires_in
+// staticTokenSource is a TokenSource that always returns the same Token.
+type staticTokenSource struct {
+	t *Token
 }
 
-func (e *tokenJSON) expiry() (t time.Time) {
-	if v := e.ExpiresIn; v != 0 {
-		return time.Now().Add(time.Duration(v) * time.Second)
-	}
-	if v := e.Expires; v != 0 {
-		return time.Now().Add(time.Duration(v) * time.Second)
-	}
-	return
-}
-
-type expirationTime int32
-
-func (e *expirationTime) UnmarshalJSON(b []byte) error {
-	var n json.Number
-	err := json.Unmarshal(b, &n)
-	if err != nil {
-		return err
-	}
-	i, err := n.Int64()
-	if err != nil {
-		return err
-	}
-	*e = expirationTime(i)
-	return nil
-}
-
-func condVal(v string) []string {
-	if v == "" {
-		return nil
-	}
-	return []string{v}
-}
-
-var brokenAuthHeaderProviders = []string{
-	"https://accounts.google.com/",
-	"https://www.googleapis.com/",
-	"https://github.com/",
-	"https://api.instagram.com/",
-	"https://www.douban.com/",
-	"https://api.dropbox.com/",
-	"https://api.soundcloud.com/",
-	"https://www.linkedin.com/",
-	"https://api.twitch.tv/",
-	"https://oauth.vk.com/",
-	"https://api.odnoklassniki.ru/",
-	"https://connect.stripe.com/",
-	"https://api.pushbullet.com/",
-	"https://oauth.sandbox.trainingpeaks.com/",
-	"https://oauth.trainingpeaks.com/",
-	"https://www.strava.com/oauth/",
-}
-
-// providerAuthHeaderWorks reports whether the OAuth2 server identified by the tokenURL
-// implements the OAuth2 spec correctly
-// See https://code.google.com/p/goauth2/issues/detail?id=31 for background.
-// In summary:
-// - Reddit only accepts client secret in the Authorization header
-// - Dropbox accepts either it in URL param or Auth header, but not both.
-// - Google only accepts URL param (not spec compliant?), not Auth header
-// - Stripe only accepts client secret in Auth header with Bearer method, not Basic
-func providerAuthHeaderWorks(tokenURL string) bool {
-	for _, s := range brokenAuthHeaderProviders {
-		if strings.HasPrefix(tokenURL, s) {
-			// Some sites fail to implement the OAuth2 spec fully.
-			return false
-		}
-	}
-
-	// Assume the provider implements the spec properly
-	// otherwise. We can add more exceptions as they're
-	// discovered. We will _not_ be adding configurable hooks
-	// to this package to let users select server bugs.
-	return true
+func (s staticTokenSource) Token() (*Token, error) {
+	return s.t, nil
 }
 
 // HTTPClient is the context key to use with golang.org/x/net/context's
 // WithValue function to associate an *http.Client value with a context.
-var HTTPClient contextKey
-
-// contextKey is just an empty struct. It exists so HTTPClient can be
-// an immutable public variable with a unique type. It's immutable
-// because nobody else can create a contextKey, being unexported.
-type contextKey struct{}
+var HTTPClient internal.ContextKey
 
 // NewClient creates an *http.Client from a Context and TokenSource.
 // The returned client is not valid beyond the lifetime of the context.
@@ -479,15 +281,15 @@
 // packages.
 func NewClient(ctx context.Context, src TokenSource) *http.Client {
 	if src == nil {
-		c, err := contextClient(ctx)
+		c, err := internal.ContextClient(ctx)
 		if err != nil {
-			return &http.Client{Transport: errorTransport{err}}
+			return &http.Client{Transport: internal.ErrorTransport{err}}
 		}
 		return c
 	}
 	return &http.Client{
 		Transport: &Transport{
-			Base:   contextTransport(ctx),
+			Base:   internal.ContextTransport(ctx),
 			Source: ReuseTokenSource(nil, src),
 		},
 	}
diff --git a/go/src/golang.org/x/oauth2/oauth2_test.go b/go/src/golang.org/x/oauth2/oauth2_test.go
index 7b7e3c1..2f7d731 100644
--- a/go/src/golang.org/x/oauth2/oauth2_test.go
+++ b/go/src/golang.org/x/oauth2/oauth2_test.go
@@ -420,20 +420,3 @@
 		t.Error(err)
 	}
 }
-
-func Test_providerAuthHeaderWorks(t *testing.T) {
-	for _, p := range brokenAuthHeaderProviders {
-		if providerAuthHeaderWorks(p) {
-			t.Errorf("URL: %s not found in list", p)
-		}
-		p := fmt.Sprintf("%ssomesuffix", p)
-		if providerAuthHeaderWorks(p) {
-			t.Errorf("URL: %s not found in list", p)
-		}
-	}
-	p := "https://api.not-in-the-list-example.com/"
-	if !providerAuthHeaderWorks(p) {
-		t.Errorf("URL: %s found in list", p)
-	}
-
-}
diff --git a/go/src/golang.org/x/oauth2/token.go b/go/src/golang.org/x/oauth2/token.go
index 9852ceb..ebbdddb 100644
--- a/go/src/golang.org/x/oauth2/token.go
+++ b/go/src/golang.org/x/oauth2/token.go
@@ -7,7 +7,11 @@
 import (
 	"net/http"
 	"net/url"
+	"strings"
 	"time"
+
+	"golang.org/x/net/context"
+	"golang.org/x/oauth2/internal"
 )
 
 // expiryDelta determines how earlier a token should be considered
@@ -50,6 +54,15 @@
 
 // Type returns t.TokenType if non-empty, else "Bearer".
 func (t *Token) Type() string {
+	if strings.EqualFold(t.TokenType, "bearer") {
+		return "Bearer"
+	}
+	if strings.EqualFold(t.TokenType, "mac") {
+		return "MAC"
+	}
+	if strings.EqualFold(t.TokenType, "basic") {
+		return "Basic"
+	}
 	if t.TokenType != "" {
 		return t.TokenType
 	}
@@ -102,3 +115,29 @@
 func (t *Token) Valid() bool {
 	return t != nil && t.AccessToken != "" && !t.expired()
 }
+
+// tokenFromInternal maps an *internal.Token struct into
+// a *Token struct.
+func tokenFromInternal(t *internal.Token) *Token {
+	if t == nil {
+		return nil
+	}
+	return &Token{
+		AccessToken:  t.AccessToken,
+		TokenType:    t.TokenType,
+		RefreshToken: t.RefreshToken,
+		Expiry:       t.Expiry,
+		raw:          t.Raw,
+	}
+}
+
+// retrieveToken takes a *Config and uses that to retrieve an *internal.Token.
+// This token is then mapped from *internal.Token into an *oauth2.Token which is returned along
+// with an error..
+func retrieveToken(ctx context.Context, c *Config, v url.Values) (*Token, error) {
+	tk, err := internal.RetrieveToken(ctx, c.ClientID, c.ClientSecret, c.Endpoint.TokenURL, v)
+	if err != nil {
+		return nil, err
+	}
+	return tokenFromInternal(tk), nil
+}
diff --git a/go/src/golang.org/x/oauth2/transport.go b/go/src/golang.org/x/oauth2/transport.go
index 10339a0..90db088 100644
--- a/go/src/golang.org/x/oauth2/transport.go
+++ b/go/src/golang.org/x/oauth2/transport.go
@@ -130,9 +130,3 @@
 		r.fn = nil
 	}
 }
-
-type errorTransport struct{ err error }
-
-func (t errorTransport) RoundTrip(*http.Request) (*http.Response, error) {
-	return nil, t.err
-}
diff --git a/go/src/golang.org/x/oauth2/transport_test.go b/go/src/golang.org/x/oauth2/transport_test.go
index efb8232..35cb25e 100644
--- a/go/src/golang.org/x/oauth2/transport_test.go
+++ b/go/src/golang.org/x/oauth2/transport_test.go
@@ -32,6 +32,39 @@
 	client.Get(server.URL)
 }
 
+// Test for case-sensitive token types, per https://github.com/golang/oauth2/issues/113
+func TestTransportTokenSourceTypes(t *testing.T) {
+	const val = "abc"
+	tests := []struct {
+		key  string
+		val  string
+		want string
+	}{
+		{key: "bearer", val: val, want: "Bearer abc"},
+		{key: "mac", val: val, want: "MAC abc"},
+		{key: "basic", val: val, want: "Basic abc"},
+	}
+	for _, tc := range tests {
+		ts := &tokenSource{
+			token: &Token{
+				AccessToken: tc.val,
+				TokenType:   tc.key,
+			},
+		}
+		tr := &Transport{
+			Source: ts,
+		}
+		server := newMockServer(func(w http.ResponseWriter, r *http.Request) {
+			if got, want := r.Header.Get("Authorization"), tc.want; got != want {
+				t.Errorf("Authorization header (%q) = %q; want %q", val, got, want)
+			}
+		})
+		defer server.Close()
+		client := http.Client{Transport: tr}
+		client.Get(server.URL)
+	}
+}
+
 func TestTokenValidNoAccessToken(t *testing.T) {
 	token := &Token{}
 	if token.Valid() {
diff --git a/go/src/golang.org/x/mobile/.gitattributes b/go/src/golang.org/x/text/.gitattributes
similarity index 100%
rename from go/src/golang.org/x/mobile/.gitattributes
rename to go/src/golang.org/x/text/.gitattributes
diff --git a/go/src/golang.org/x/mobile/CONTRIBUTING.md b/go/src/golang.org/x/text/CONTRIBUTING.md
similarity index 100%
rename from go/src/golang.org/x/mobile/CONTRIBUTING.md
rename to go/src/golang.org/x/text/CONTRIBUTING.md
diff --git a/go/src/golang.org/x/text/README.google b/go/src/golang.org/x/text/README.google
index 33cfce9..63f3387 100644
--- a/go/src/golang.org/x/text/README.google
+++ b/go/src/golang.org/x/text/README.google
@@ -1,5 +1,5 @@
-URL: https://go.googlesource.com/text/+archive/ef0bf1da95d2b971524f971801f2a4c2d0b4841f.tar.gz
-Version: ef0bf1da95d2b971524f971801f2a4c2d0b4841f
+URL: https://go.googlesource.com/text/+archive/3eb7007b740b66a77f3c85f2660a0240b284115a.tar.gz
+Version: 3eb7007b740b66a77f3c85f2660a0240b284115a
 License: New BSD
 License File: LICENSE
 
@@ -7,4 +7,4 @@
 Supplementary Go text processing libraries.
 
 Local Modifications:
-No modifications.
+Ran go generate ./... to make tests pass.
diff --git a/go/src/golang.org/x/text/cases/cases.go b/go/src/golang.org/x/text/cases/cases.go
index 448a2ea..918a97a 100644
--- a/go/src/golang.org/x/text/cases/cases.go
+++ b/go/src/golang.org/x/text/cases/cases.go
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+//go:generate go run gen.go gen_trieval.go
+
 // Package cases provides general and language-specific case mappers.
 package cases // import "golang.org/x/text/cases"
 
@@ -76,6 +78,15 @@
 	return Caser{makeTitle(t, getOpts(opts...))}
 }
 
+// Fold returns a Caser that implements Unicode case folding.
+//
+// Folding is like mapping to lowercase without context-dependent mappings. Its
+// primary use is for caseless matching. Note that case folding does not
+// normalize the input and may not preserve a normal form.
+func Fold(t language.Tag, opts ...Option) Caser {
+	panic("TODO: implement")
+}
+
 // An Option is used to modify the behavior of a Caser.
 type Option func(o *options)
 
@@ -83,10 +94,17 @@
 	// NoLower disables the lowercasing of non-leading letters for a title
 	// caser.
 	NoLower Option = noLower
+
+	// Compact omits mappings in case folding for characters that would grow the
+	// input.
+	Compact Option = compact
 )
 
+// TODO: option to preserve a normal form, if applicable?
+
 type options struct {
 	noLower bool
+	simple  bool
 
 	// TODO: segmenter, max ignorable, alternative versions, etc.
 
@@ -103,3 +121,7 @@
 func noLower(o *options) {
 	o.noLower = true
 }
+
+func compact(o *options) {
+	o.simple = true
+}
diff --git a/go/src/golang.org/x/text/cases/context.go b/go/src/golang.org/x/text/cases/context.go
index e8c30cc..1c8f317 100644
--- a/go/src/golang.org/x/text/cases/context.go
+++ b/go/src/golang.org/x/text/cases/context.go
@@ -132,15 +132,21 @@
 	if !c.copy() {
 		return false
 	}
-	if xor := c.info >> xorShift; xor < 1<<6 {
+	if c.info&xorIndexBit == 0 {
 		// Fast path for 6-bit XOR pattern, which covers most cases.
-		// Note that this if statement also implicitly verifies the length of
-		// the string. A 2-byte xor pattern can only occur if the current rune
-		// is at least 2 bytes long.
-		c.dst[c.pDst-1] ^= byte(xor)
+		c.dst[c.pDst-1] ^= byte(c.info >> xorShift)
 	} else {
-		c.dst[c.pDst-1] ^= byte(xor & 0x3F)
-		c.dst[c.pDst-2] ^= byte(xor >> xorBitsPerByte)
+		// Interpret XOR bits as an index.
+		// TODO: test performance for unrolling this loop. Verify that we have
+		// at least two bytes and at most three.
+		idx := c.info >> xorShift
+		for p := c.pDst - 1; ; p-- {
+			c.dst[p] ^= xorData[idx]
+			idx--
+			if xorData[idx] == 0 {
+				break
+			}
+		}
 	}
 	return true
 }
diff --git a/go/src/golang.org/x/text/cases/context_test.go b/go/src/golang.org/x/text/cases/context_test.go
index 4c4e9b6..d6c012f 100644
--- a/go/src/golang.org/x/text/cases/context_test.go
+++ b/go/src/golang.org/x/text/cases/context_test.go
@@ -12,6 +12,7 @@
 	"golang.org/x/text/language"
 	"golang.org/x/text/transform"
 	"golang.org/x/text/unicode/norm"
+	"golang.org/x/text/unicode/rangetable"
 )
 
 // The following definitions are taken directly from Chapter 3 of The Unicode
@@ -62,7 +63,11 @@
 }
 
 func TestCaseProperties(t *testing.T) {
+	assigned := rangetable.Assigned(UnicodeVersion)
 	for r := rune(0); r <= lastRuneForTesting; r++ {
+		if !unicode.In(r, assigned) || !unicode.In(unicode.SimpleFold(r), assigned) {
+			continue
+		}
 		c := contextFromRune(r)
 		if got, want := c.info.isCaseIgnorable(), propIgnore(r); got != want {
 			t.Errorf("caseIgnorable(%U): got %v; want %v (%x)", r, got, want, c.info)
@@ -84,6 +89,7 @@
 }
 
 func TestMapping(t *testing.T) {
+	assigned := rangetable.Assigned(UnicodeVersion)
 	apply := func(r rune, f func(c *context) bool) string {
 		c := contextFromRune(r)
 		f(c)
@@ -103,6 +109,9 @@
 	}
 
 	for r := rune(0); r <= lastRuneForTesting; r++ {
+		if !unicode.In(r, assigned) || !unicode.In(unicode.SimpleFold(r), assigned) {
+			continue
+		}
 		if _, ok := special[r]; ok {
 			continue
 		}
diff --git a/go/src/golang.org/x/text/cases/gen.go b/go/src/golang.org/x/text/cases/gen.go
index 844be63..be00c0c 100644
--- a/go/src/golang.org/x/text/cases/gen.go
+++ b/go/src/golang.org/x/text/cases/gen.go
@@ -13,38 +13,23 @@
 
 import (
 	"bytes"
-	"flag"
 	"fmt"
 	"io"
 	"io/ioutil"
 	"log"
-	"net/http"
-	"os"
-	"os/exec"
-	"path/filepath"
 	"reflect"
 	"strconv"
 	"strings"
 	"unicode"
 
+	"golang.org/x/text/internal/gen"
 	"golang.org/x/text/internal/triegen"
 	"golang.org/x/text/internal/ucd"
 	"golang.org/x/text/unicode/norm"
 )
 
-var (
-	url = flag.String("url",
-		"http://www.unicode.org/Public/"+unicode.Version+"/ucd",
-		"URL of Unicode database directory")
-	localPath = flag.String("local",
-		"",
-		"path in which to find local data files; for debugging only")
-)
-
-var logger = log.New(os.Stderr, "", log.Lshortfile)
-
 func main() {
-	flag.Parse()
+	gen.Init()
 	genTables()
 	genTablesTest()
 	genTrieval()
@@ -112,30 +97,14 @@
 
 // parse calls f for each entry in the given UCD file.
 func (opts ucdParser) parse(filename string, f func(p *ucd.Parser)) {
-	var r io.ReadCloser
-	if *localPath != "" {
-		f, err := os.Open(filepath.Join(*localPath, filename))
-		if err != nil {
-			logger.Fatal(err)
-		}
-		r = f
-	} else {
-		resp, err := http.Get(*url + "/" + filename)
-		if err != nil {
-			logger.Fatal(err)
-		}
-		if resp.StatusCode != 200 {
-			logger.Fatalf("bad GET status for %s: %v", *url, resp.Status)
-		}
-		r = resp.Body
-	}
+	r := gen.OpenUCDFile(filename)
 	defer r.Close()
 	p := ucd.New(r, opts...)
 	for p.Next() {
 		f(p)
 	}
 	if err := p.Err(); err != nil {
-		logger.Fatal(err)
+		log.Fatal(err)
 	}
 }
 
@@ -234,14 +203,6 @@
 	return chars
 }
 
-const header = `// This file was generated by
-//     go run gen*.go -url=%s
-// DO NOT EDIT
-
-package cases
-
-`
-
 func genTables() {
 	chars := parseUCD()
 	verifyProperties(chars)
@@ -253,28 +214,28 @@
 		t.Insert(rune(i), uint64(c.entry))
 	}
 
-	const file = "tables.go"
-	w, err := os.Create(file + ".tmp")
-	if err != nil {
-		logger.Fatal(err)
-	}
+	w := &bytes.Buffer{}
 
-	fmt.Fprintf(w, header, *url)
 	sz, err := t.Gen(w, triegen.Compact(&sparseCompacter{}))
 	if err != nil {
-		logger.Fatal(err)
+		log.Fatal(err)
 	}
 
+	gen.WriteUnicodeVersion(w)
+	// TODO: write CLDR version after adding a mechanism to detect that the
+	// tables on which the manually created locale-sensitive casing code is
+	// based hasn't changed.
+
+	fmt.Fprintf(w, "// xorData: %d bytes\n", len(xorData))
+	fmt.Fprintf(w, "var xorData = %+q\n\n", string(xorData))
+
 	fmt.Fprintf(w, "// exceptions: %d bytes\n", len(exceptionData))
 	fmt.Fprintf(w, "var exceptions = %q\n\n", string(exceptionData))
 
 	sz += len(exceptionData)
 	fmt.Fprintf(w, "// Total table size %d bytes (%dKiB)\n", sz, sz/1024)
 
-	if err := os.Rename(file+".tmp", file); err != nil {
-		logger.Fatalf("Rename to file %v failed.", file)
-	}
-	exec.Command("gofmt", "-w", file).Run()
+	gen.WriteGoFile("tables.go", "cases", w.Bytes())
 }
 
 func makeEntry(ri *runeInfo) {
@@ -330,34 +291,40 @@
 
 	n := len(orig)
 
-	// XOR pattern is only possible for the 10 least-significant bits.
-	if n > 2 && orig[:n-2] != mapped[:n-2] {
-		makeException(ri)
+	// Create per-byte XOR mask.
+	var b []byte
+	for i := 0; i < n; i++ {
+		b = append(b, orig[i]^mapped[i])
+	}
+
+	// Remove leading 0 bytes, but keep at least one byte.
+	for ; len(b) > 1 && b[0] == 0; b = b[1:] {
+	}
+
+	if len(b) == 1 && b[0]&0xc0 == 0 {
+		ri.entry |= info(b[0]) << xorShift
 		return
 	}
 
-	v1 := int(orig[n-1])
-	v2 := int(mapped[n-1])
-	if n > 1 {
-		v1 += int(orig[n-2]) << 8
-		v2 += int(mapped[n-2]) << 8
-	}
+	key := string(b)
+	x, ok := xorCache[key]
+	if !ok {
+		xorData = append(xorData, 0) // for detecting start of sequence
+		xorData = append(xorData, b...)
 
-	// Ensure that the two most-significant bits of the last byte are always the
-	// same. It is possible that they are not for ASCII, except that we know
-	// it doesn't occur.
-	if v1&0xc0 != v2&0xc0 {
-		logger.Fatalf("%U: 2 msb of least-significant bytes differ (%x and %x)", ri.Rune, v1, v2)
+		x = len(xorData) - 1
+		xorCache[key] = x
 	}
-
-	x := v2 ^ v1
-	if x >= 1<<(numXORBits+2) {
-		makeException(ri)
-		return
-	}
-	ri.entry |= info((x&0xFF00)<<(xorShift-2) + (x&0x3F)<<xorShift)
+	ri.entry |= info(x<<xorShift) | xorIndexBit
 }
 
+var xorCache = map[string]int{}
+
+// xorData contains byte-wise XOR data for the least significant bytes of a
+// UTF-8 encoded rune. An index points to the last byte. The sequence starts
+// with a zero terminator.
+var xorData = []byte{}
+
 // See the comments in gen_trieval.go re "the exceptions slice".
 var exceptionData = []byte{0}
 
@@ -367,11 +334,11 @@
 	ri.entry |= exceptionBit
 
 	if ccc := ri.entry & cccMask; ccc != cccZero {
-		logger.Fatalf("%U:CCC type was %d; want %d", ri.Rune, ccc, cccZero)
+		log.Fatalf("%U:CCC type was %d; want %d", ri.Rune, ccc, cccZero)
 	}
 
 	if len(exceptionData) >= 1<<numExceptionBits {
-		logger.Fatalf("%U:exceptionData too large %x > %d bits", ri.Rune, len(exceptionData), numExceptionBits)
+		log.Fatalf("%U:exceptionData too large %x > %d bits", ri.Rune, len(exceptionData), numExceptionBits)
 	}
 
 	// Set the offset in the exceptionData array.
@@ -387,13 +354,13 @@
 		if len(s) == 0 {
 			// Zero-length mappings exist, but only for conditional casing,
 			// which we are representing outside of this table.
-			logger.Fatalf("%U: has zero-length mapping.", ri.Rune)
+			log.Fatalf("%U: has zero-length mapping.", ri.Rune)
 		}
 		*b <<= 3
 		if s != orig {
 			n := len(s)
 			if n > 7 {
-				logger.Fatalf("%U: mapping larger than 7 (%d)", ri.Rune, n)
+				log.Fatalf("%U: mapping larger than 7 (%d)", ri.Rune, n)
 			}
 			*b |= byte(n)
 			exceptionData = append(exceptionData, s...)
@@ -563,7 +530,7 @@
 
 		// A.1: modifier never changes on lowercase. [ltLower]
 		if c.CCC > 0 && unicode.ToLower(r) != r {
-			logger.Fatalf("%U: non-starter changes when lowercased", r)
+			log.Fatalf("%U: non-starter changes when lowercased", r)
 		}
 
 		// A.2: properties of decompositions starting with I or J. [ltLower]
@@ -572,7 +539,7 @@
 			if d[0] == 'I' || d[0] == 'J' {
 				// A.2.1: we expect at least an ASCII character and a modifier.
 				if len(d) < 3 {
-					logger.Fatalf("%U: length of decomposition was %d; want >= 3", r, len(d))
+					log.Fatalf("%U: length of decomposition was %d; want >= 3", r, len(d))
 				}
 
 				// All subsequent runes are modifiers and all have the same CCC.
@@ -584,17 +551,17 @@
 
 					// A.2.2: all modifiers have a CCC of Above or less.
 					if ccc == 0 || ccc > above {
-						logger.Fatalf("%U: CCC of successive rune (%U) was %d; want (0,230]", r, mr, ccc)
+						log.Fatalf("%U: CCC of successive rune (%U) was %d; want (0,230]", r, mr, ccc)
 					}
 
 					// A.2.3: a sequence of modifiers all have the same CCC.
 					if mc.CCC != ccc {
-						logger.Fatalf("%U: CCC of follow-up modifier (%U) was %d; want %d", r, mr, mc.CCC, ccc)
+						log.Fatalf("%U: CCC of follow-up modifier (%U) was %d; want %d", r, mr, mc.CCC, ccc)
 					}
 
 					// A.2.4: for each trailing r, r in [0x300, 0x311] <=> CCC == Above.
 					if (ccc == above) != (0x300 <= mr && mr <= 0x311) {
-						logger.Fatalf("%U: modifier %U in [U+0300, U+0311] != ccc(%U) == 230", r, mr, mr)
+						log.Fatalf("%U: modifier %U in [U+0300, U+0311] != ccc(%U) == 230", r, mr, mr)
 					}
 
 					if i += len(string(mr)); i >= len(d) {
@@ -606,17 +573,17 @@
 
 		// A.3: no U+0307 in decomposition of Soft-Dotted rune. [ltUpper]
 		if unicode.Is(unicode.Soft_Dotted, r) && strings.Contains(string(d), "\u0307") {
-			logger.Fatalf("%U: decomposition of soft-dotted rune may not contain U+0307", r)
+			log.Fatalf("%U: decomposition of soft-dotted rune may not contain U+0307", r)
 		}
 
 		// A.4: only rune U+0345 may be of CCC Iota_Subscript. [elUpper]
 		if c.CCC == iotaSubscript && r != 0x0345 {
-			logger.Fatalf("%U: only rune U+0345 may have CCC Iota_Subscript", r)
+			log.Fatalf("%U: only rune U+0345 may have CCC Iota_Subscript", r)
 		}
 
 		// A.5: soft-dotted runes do not have exceptions.
 		if c.SoftDotted && c.entry&exceptionBit != 0 {
-			logger.Fatalf("%U: soft-dotted has exception", r)
+			log.Fatalf("%U: soft-dotted has exception", r)
 		}
 
 		// A.6: Greek decomposition. [elUpper]
@@ -627,7 +594,7 @@
 				// decomposition is greater than U+00FF, the rune is always
 				// great and not a modifier.
 				if f := runes[0]; unicode.IsMark(f) || f > 0xFF && !unicode.Is(unicode.Greek, f) {
-					logger.Fatalf("%U: expeced first rune of Greek decomposition to be letter, found %U", r, f)
+					log.Fatalf("%U: expeced first rune of Greek decomposition to be letter, found %U", r, f)
 				}
 				// A.6.2: Any follow-up rune in a Greek decomposition is a
 				// modifier of which the first should be gobbled in
@@ -636,7 +603,7 @@
 					switch m {
 					case 0x0313, 0x0314, 0x0301, 0x0300, 0x0306, 0x0342, 0x0308, 0x0304, 0x345:
 					default:
-						logger.Fatalf("%U: modifier %U is outside of expeced Greek modifier set", r, m)
+						log.Fatalf("%U: modifier %U is outside of expeced Greek modifier set", r, m)
 					}
 				}
 			}
@@ -646,31 +613,25 @@
 
 		// B.1: all runes with CCC > 0 are of break type Extend.
 		if c.CCC > 0 && c.BreakType != "Extend" {
-			logger.Fatalf("%U: CCC == %d, but got break type %s; want Extend", r, c.CCC, c.BreakType)
+			log.Fatalf("%U: CCC == %d, but got break type %s; want Extend", r, c.CCC, c.BreakType)
 		}
 
 		// B.2: all cased runes with c.CCC == 0 are of break type ALetter.
 		if c.CCC == 0 && c.Cased && c.BreakType != "ALetter" {
-			logger.Fatalf("%U: cased, but got break type %s; want ALetter", r, c.BreakType)
+			log.Fatalf("%U: cased, but got break type %s; want ALetter", r, c.BreakType)
 		}
 
 		// B.3: letter category.
 		if c.CCC == 0 && c.BreakCat != breakBreak && !c.CaseIgnorable {
 			if c.BreakCat != breakLetter {
-				logger.Fatalf("%U: check for letter break type gave %d; want %d", r, c.BreakCat, breakLetter)
+				log.Fatalf("%U: check for letter break type gave %d; want %d", r, c.BreakCat, breakLetter)
 			}
 		}
 	}
 }
 
 func genTablesTest() {
-	const file = "tables_test.go"
-	w, err := os.Create(file + ".tmp")
-	if err != nil {
-		logger.Fatal(err)
-	}
-
-	fmt.Fprintf(w, header, *url)
+	w := &bytes.Buffer{}
 
 	fmt.Fprintln(w, "var (")
 	printProperties(w, "DerivedCoreProperties.txt", "Case_Ignorable", verifyIgnore)
@@ -681,7 +642,7 @@
 	n += printProperties(ioutil.Discard, "DerivedCoreProperties.txt", "Lowercase", verifyLower)
 	n += printProperties(ioutil.Discard, "DerivedCoreProperties.txt", "Uppercase", verifyUpper)
 	if n > 0 {
-		logger.Fatalf("One of the discarded properties does not have a perfect filter.")
+		log.Fatalf("One of the discarded properties does not have a perfect filter.")
 	}
 
 	// <code>; <lower> ; <title> ; <upper> ; (<condition_list> ;)?
@@ -747,10 +708,10 @@
 			i, err := strconv.ParseUint(c[1], 16, 32)
 			r := rune(i)
 			if err != nil {
-				logger.Fatalf("Invalid rune %q.", c[1])
+				log.Fatalf("Invalid rune %q.", c[1])
 			}
 			if r == sep {
-				logger.Fatalf("Separator %q not allowed in test data. Pick another one.", sep)
+				log.Fatalf("Separator %q not allowed in test data. Pick another one.", sep)
 			}
 			if cased[r] {
 				numCased++
@@ -765,10 +726,7 @@
 
 	fmt.Fprintln(w, ")")
 
-	if err := os.Rename(file+".tmp", file); err != nil {
-		logger.Fatalf("Rename to file %v failed.", file)
-	}
-	exec.Command("gofmt", "-w", file).Run()
+	gen.WriteGoFile("tables_test.go", "cases", w.Bytes())
 }
 
 // These functions are just used for verification that their definition have not
@@ -828,7 +786,7 @@
 	// Verify that f is correct, that is, it represents a subset of the property.
 	for r := rune(0); r <= lastRuneForTesting; r++ {
 		if !verify[r] && f(r) {
-			logger.Fatalf("Incorrect filter func for property %q.", property)
+			log.Fatalf("Incorrect filter func for property %q.", property)
 		}
 	}
 	return n
@@ -837,19 +795,16 @@
 func genTrieval() {
 	src, err := ioutil.ReadFile("gen_trieval.go")
 	if err != nil {
-		logger.Fatalf("reading gen_trieval.go: %v", err)
+		log.Fatalf("reading gen_trieval.go: %v", err)
 	}
 	const toDelete = "// +build ignore\n\npackage main\n\n"
 	i := bytes.Index(src, []byte(toDelete))
 	if i < 0 {
-		logger.Fatalf("could not find %q in gen_trieval.go", toDelete)
+		log.Fatalf("could not find %q in gen_trieval.go", toDelete)
 	}
-	dst := new(bytes.Buffer)
-	fmt.Fprintf(dst, header, *url)
-	dst.Write(src[i+len(toDelete):])
-	if err := ioutil.WriteFile("trieval.go", dst.Bytes(), 0644); err != nil {
-		logger.Fatalf("writing trieval.go: %v", err)
-	}
+	w := &bytes.Buffer{}
+	w.Write(src[i+len(toDelete):])
+	gen.WriteGoFile("trieval.go", "cases", w.Bytes())
 }
 
 // The newCaseTrie, sparseValues and sparseOffsets definitions below are
diff --git a/go/src/golang.org/x/text/cases/gen_trieval.go b/go/src/golang.org/x/text/cases/gen_trieval.go
index 8ea90ea..361e476 100644
--- a/go/src/golang.org/x/text/cases/gen_trieval.go
+++ b/go/src/golang.org/x/text/cases/gen_trieval.go
@@ -20,8 +20,10 @@
 //
 //   if (exception) {
 //     15..5  unsigned exception index
+//         4  unused
 //   } else {
-//     15..6  XOR pattern for case mapping
+//     15..7  XOR pattern or index to XOR pattern for case mapping
+//         6  index: interpret the XOR pattern as an index
 //      5..4  CCC: zero (normal or break), above or other
 //   }
 //      3  exception: interpret this value as an exception index
@@ -46,9 +48,8 @@
 	exceptionShift   = 5
 	numExceptionBits = 11
 
-	xorShift       = 6
-	xorBitsPerByte = 6
-	numXORBits     = 10
+	xorIndexBit = 1 << 6
+	xorShift    = 7
 
 	// There is no mapping if all xor bits and the exception bit are zero.
 	hasMappingMask = 0xffc0 | exceptionBit
diff --git a/go/src/golang.org/x/text/cases/tables.go b/go/src/golang.org/x/text/cases/tables.go
index 327d490..94f6e25 100644
--- a/go/src/golang.org/x/text/cases/tables.go
+++ b/go/src/golang.org/x/text/cases/tables.go
@@ -1,6 +1,4 @@
-// This file was generated by
-//     go run gen*.go -url=http://www.unicode.org/Public/7.0.0/ucd
-// DO NOT EDIT
+// This file was generated by go generate; DO NOT EDIT
 
 package cases
 
@@ -174,7 +172,7 @@
 	return 0
 }
 
-// caseTrie. Total size: 11144 bytes (10.88 KiB). Checksum: 68467a58f7a5d7d3.
+// caseTrie. Total size: 10924 bytes (10.67 KiB). Checksum: 8c5948b9b54330b2.
 type caseTrie struct{}
 
 func newCaseTrie(i int) *caseTrie {
@@ -184,75 +182,75 @@
 // lookupValue determines the type of block n and looks up the value for b.
 func (t *caseTrie) lookupValue(n uint32, b byte) uint16 {
 	switch {
-	case n < 18:
+	case n < 16:
 		return uint16(caseValues[n<<6+uint32(b)])
 	default:
-		n -= 18
+		n -= 16
 		return uint16(sparse.lookup(n, b))
 	}
 }
 
-// caseValues: 20 blocks, 1280 entries, 2560 bytes
+// caseValues: 18 blocks, 1152 entries, 2304 bytes
 // The third block is the zero block.
-var caseValues = [1280]uint16{
+var caseValues = [1152]uint16{
 	// Block 0x0, offset 0x0
 	0x27: 0x0014,
 	0x2e: 0x0014,
 	0x30: 0x0010, 0x31: 0x0010, 0x32: 0x0010, 0x33: 0x0010, 0x34: 0x0010, 0x35: 0x0010,
 	0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0014,
 	// Block 0x1, offset 0x40
-	0x41: 0x0813, 0x42: 0x0813, 0x43: 0x0813, 0x44: 0x0813, 0x45: 0x0813,
-	0x46: 0x0813, 0x47: 0x0813, 0x48: 0x0813, 0x49: 0x0813, 0x4a: 0x0813, 0x4b: 0x0813,
-	0x4c: 0x0813, 0x4d: 0x0813, 0x4e: 0x0813, 0x4f: 0x0813, 0x50: 0x0813, 0x51: 0x0813,
-	0x52: 0x0813, 0x53: 0x0813, 0x54: 0x0813, 0x55: 0x0813, 0x56: 0x0813, 0x57: 0x0813,
-	0x58: 0x0813, 0x59: 0x0813, 0x5a: 0x0813,
-	0x5e: 0x0004, 0x5f: 0x0010, 0x60: 0x0004, 0x61: 0x0812, 0x62: 0x0812, 0x63: 0x0812,
-	0x64: 0x0812, 0x65: 0x0812, 0x66: 0x0812, 0x67: 0x0812, 0x68: 0x0812, 0x69: 0x0812,
-	0x6a: 0x0812, 0x6b: 0x0812, 0x6c: 0x0812, 0x6d: 0x0812, 0x6e: 0x0812, 0x6f: 0x0812,
-	0x70: 0x0812, 0x71: 0x0812, 0x72: 0x0812, 0x73: 0x0812, 0x74: 0x0812, 0x75: 0x0812,
-	0x76: 0x0812, 0x77: 0x0812, 0x78: 0x0812, 0x79: 0x0812, 0x7a: 0x0812,
+	0x41: 0x1013, 0x42: 0x1013, 0x43: 0x1013, 0x44: 0x1013, 0x45: 0x1013,
+	0x46: 0x1013, 0x47: 0x1013, 0x48: 0x1013, 0x49: 0x1013, 0x4a: 0x1013, 0x4b: 0x1013,
+	0x4c: 0x1013, 0x4d: 0x1013, 0x4e: 0x1013, 0x4f: 0x1013, 0x50: 0x1013, 0x51: 0x1013,
+	0x52: 0x1013, 0x53: 0x1013, 0x54: 0x1013, 0x55: 0x1013, 0x56: 0x1013, 0x57: 0x1013,
+	0x58: 0x1013, 0x59: 0x1013, 0x5a: 0x1013,
+	0x5e: 0x0004, 0x5f: 0x0010, 0x60: 0x0004, 0x61: 0x1012, 0x62: 0x1012, 0x63: 0x1012,
+	0x64: 0x1012, 0x65: 0x1012, 0x66: 0x1012, 0x67: 0x1012, 0x68: 0x1012, 0x69: 0x1012,
+	0x6a: 0x1012, 0x6b: 0x1012, 0x6c: 0x1012, 0x6d: 0x1012, 0x6e: 0x1012, 0x6f: 0x1012,
+	0x70: 0x1012, 0x71: 0x1012, 0x72: 0x1012, 0x73: 0x1012, 0x74: 0x1012, 0x75: 0x1012,
+	0x76: 0x1012, 0x77: 0x1012, 0x78: 0x1012, 0x79: 0x1012, 0x7a: 0x1012,
 	// Block 0x2, offset 0x80
 	// Block 0x3, offset 0xc0
-	0xc0: 0xf0d2, 0xc1: 0xf493, 0xc2: 0x0053, 0xc3: 0x0052, 0xc4: 0x0053, 0xc5: 0x0052,
-	0xc6: 0xf493, 0xc7: 0x03d3, 0xc8: 0x03d2, 0xc9: 0xf7d3, 0xca: 0xf753, 0xcb: 0x01d3,
-	0xcc: 0x01d2, 0xcd: 0x0012, 0xce: 0x14d3, 0xcf: 0xf593, 0xd0: 0xf2d3, 0xd1: 0x00d3,
-	0xd2: 0x00d2, 0xd3: 0xfcd3, 0xd4: 0xfdd3, 0xd5: 0x18d2, 0xd6: 0xffd3, 0xd7: 0xffd3,
-	0xd8: 0x0053, 0xd9: 0x0052, 0xda: 0xe9d2, 0xdb: 0x0012, 0xdc: 0xfcd3, 0xdd: 0xfbd3,
-	0xde: 0xef92, 0xdf: 0xfa93, 0xe0: 0x0053, 0xe1: 0x0052, 0xe2: 0x0053, 0xe3: 0x0052,
-	0xe4: 0x0053, 0xe5: 0x0052, 0xe6: 0xc993, 0xe7: 0x03d3, 0xe8: 0x03d2, 0xe9: 0xca93,
-	0xea: 0x0012, 0xeb: 0x0012, 0xec: 0x0053, 0xed: 0x0052, 0xee: 0xc993, 0xef: 0x07d3,
-	0xf0: 0x07d2, 0xf1: 0xced3, 0xf2: 0xce53, 0xf3: 0x01d3, 0xf4: 0x01d2, 0xf5: 0x00d3,
-	0xf6: 0x00d2, 0xf7: 0xc953, 0xf8: 0x0053, 0xf9: 0x0052, 0xfa: 0x0012, 0xfb: 0x0010,
-	0xfc: 0x0053, 0xfd: 0x0052, 0xfe: 0x0012, 0xff: 0x1212,
+	0xc0: 0x05d2, 0xc1: 0x0753, 0xc2: 0x0093, 0xc3: 0x0092, 0xc4: 0x0093, 0xc5: 0x0092,
+	0xc6: 0x0753, 0xc7: 0x0793, 0xc8: 0x0792, 0xc9: 0x08d3, 0xca: 0x0a53, 0xcb: 0x0393,
+	0xcc: 0x0392, 0xcd: 0x0012, 0xce: 0x0bd3, 0xcf: 0x0d53, 0xd0: 0x0ed3, 0xd1: 0x0193,
+	0xd2: 0x0192, 0xd3: 0x1053, 0xd4: 0x11d3, 0xd5: 0x1352, 0xd6: 0x14d3, 0xd7: 0x14d3,
+	0xd8: 0x0093, 0xd9: 0x0092, 0xda: 0x1652, 0xdb: 0x0012, 0xdc: 0x1053, 0xdd: 0x17d3,
+	0xde: 0x1952, 0xdf: 0x1ad3, 0xe0: 0x0093, 0xe1: 0x0092, 0xe2: 0x0093, 0xe3: 0x0092,
+	0xe4: 0x0093, 0xe5: 0x0092, 0xe6: 0x1c53, 0xe7: 0x0793, 0xe8: 0x0792, 0xe9: 0x1dd3,
+	0xea: 0x0012, 0xeb: 0x0012, 0xec: 0x0093, 0xed: 0x0092, 0xee: 0x1c53, 0xef: 0x0f93,
+	0xf0: 0x0f92, 0xf1: 0x1f53, 0xf2: 0x20d3, 0xf3: 0x0393, 0xf4: 0x0392, 0xf5: 0x0193,
+	0xf6: 0x0192, 0xf7: 0x2253, 0xf8: 0x0093, 0xf9: 0x0092, 0xfa: 0x0012, 0xfb: 0x0010,
+	0xfc: 0x0093, 0xfd: 0x0092, 0xfe: 0x0012, 0xff: 0x23d2,
 	// Block 0x4, offset 0x100
 	0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x02fb, 0x105: 0x03b9,
 	0x106: 0x047a, 0x107: 0x053b, 0x108: 0x05f9, 0x109: 0x06ba, 0x10a: 0x077b, 0x10b: 0x0839,
-	0x10c: 0x08fa, 0x10d: 0x00d3, 0x10e: 0x00d2, 0x10f: 0x07d3, 0x110: 0x07d2, 0x111: 0x00d3,
-	0x112: 0x00d2, 0x113: 0x01d3, 0x114: 0x01d2, 0x115: 0x00d3, 0x116: 0x00d2, 0x117: 0x03d3,
-	0x118: 0x03d2, 0x119: 0x00d3, 0x11a: 0x00d2, 0x11b: 0x01d3, 0x11c: 0x01d2, 0x11d: 0x14d2,
-	0x11e: 0x0053, 0x11f: 0x0052, 0x120: 0x0053, 0x121: 0x0052, 0x122: 0x0053, 0x123: 0x0052,
-	0x124: 0x0053, 0x125: 0x0052, 0x126: 0x0053, 0x127: 0x0052, 0x128: 0x0053, 0x129: 0x0052,
-	0x12a: 0x0053, 0x12b: 0x0052, 0x12c: 0x0053, 0x12d: 0x0052, 0x12e: 0x0053, 0x12f: 0x0052,
-	0x130: 0x09ba, 0x131: 0x0a5b, 0x132: 0x0b19, 0x133: 0x0bda, 0x134: 0x0053, 0x135: 0x0052,
-	0x136: 0x18d3, 0x137: 0x1213, 0x138: 0x0053, 0x139: 0x0052, 0x13a: 0x0053, 0x13b: 0x0052,
-	0x13c: 0x0053, 0x13d: 0x0052, 0x13e: 0x0053, 0x13f: 0x0052,
+	0x10c: 0x08fa, 0x10d: 0x0193, 0x10e: 0x0192, 0x10f: 0x0f93, 0x110: 0x0f92, 0x111: 0x0193,
+	0x112: 0x0192, 0x113: 0x0393, 0x114: 0x0392, 0x115: 0x0193, 0x116: 0x0192, 0x117: 0x0793,
+	0x118: 0x0792, 0x119: 0x0193, 0x11a: 0x0192, 0x11b: 0x0393, 0x11c: 0x0392, 0x11d: 0x0bd2,
+	0x11e: 0x0093, 0x11f: 0x0092, 0x120: 0x0093, 0x121: 0x0092, 0x122: 0x0093, 0x123: 0x0092,
+	0x124: 0x0093, 0x125: 0x0092, 0x126: 0x0093, 0x127: 0x0092, 0x128: 0x0093, 0x129: 0x0092,
+	0x12a: 0x0093, 0x12b: 0x0092, 0x12c: 0x0093, 0x12d: 0x0092, 0x12e: 0x0093, 0x12f: 0x0092,
+	0x130: 0x09ba, 0x131: 0x0a5b, 0x132: 0x0b19, 0x133: 0x0bda, 0x134: 0x0093, 0x135: 0x0092,
+	0x136: 0x1353, 0x137: 0x23d3, 0x138: 0x0093, 0x139: 0x0092, 0x13a: 0x0093, 0x13b: 0x0092,
+	0x13c: 0x0093, 0x13d: 0x0092, 0x13e: 0x0093, 0x13f: 0x0092,
 	// Block 0x5, offset 0x140
-	0x140: 0x0e7a, 0x141: 0x00d3, 0x142: 0x00d2, 0x143: 0xf0d3, 0x144: 0x3353, 0x145: 0x3253,
-	0x146: 0x0053, 0x147: 0x0052, 0x148: 0x0053, 0x149: 0x0052, 0x14a: 0x0053, 0x14b: 0x0052,
-	0x14c: 0x0053, 0x14d: 0x0052, 0x14e: 0x0053, 0x14f: 0x0052, 0x150: 0x0f1a, 0x151: 0x0fba,
-	0x152: 0x105a, 0x153: 0xf492, 0x154: 0xf492, 0x155: 0x0012, 0x156: 0xf7d2, 0x157: 0xf752,
-	0x158: 0x0012, 0x159: 0xf592, 0x15a: 0x0012, 0x15b: 0xf2d2, 0x15c: 0x10fa, 0x15d: 0x0012,
-	0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0xfcd2, 0x161: 0x119a, 0x162: 0x0012, 0x163: 0xfdd2,
-	0x164: 0x0012, 0x165: 0x123a, 0x166: 0x12da, 0x167: 0x0012, 0x168: 0xffd2, 0x169: 0xffd2,
-	0x16a: 0x0012, 0x16b: 0x137a, 0x16c: 0x141a, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0xfcd2,
-	0x170: 0x0012, 0x171: 0x14ba, 0x172: 0xfbd2, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0xfa92,
+	0x140: 0x0e7a, 0x141: 0x0193, 0x142: 0x0192, 0x143: 0x05d3, 0x144: 0x2553, 0x145: 0x26d3,
+	0x146: 0x0093, 0x147: 0x0092, 0x148: 0x0093, 0x149: 0x0092, 0x14a: 0x0093, 0x14b: 0x0092,
+	0x14c: 0x0093, 0x14d: 0x0092, 0x14e: 0x0093, 0x14f: 0x0092, 0x150: 0x0f1a, 0x151: 0x0fba,
+	0x152: 0x105a, 0x153: 0x0752, 0x154: 0x0752, 0x155: 0x0012, 0x156: 0x08d2, 0x157: 0x0a52,
+	0x158: 0x0012, 0x159: 0x0d52, 0x15a: 0x0012, 0x15b: 0x0ed2, 0x15c: 0x10fa, 0x15d: 0x0012,
+	0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1052, 0x161: 0x119a, 0x162: 0x0012, 0x163: 0x11d2,
+	0x164: 0x0012, 0x165: 0x123a, 0x166: 0x12da, 0x167: 0x0012, 0x168: 0x14d2, 0x169: 0x14d2,
+	0x16a: 0x0012, 0x16b: 0x137a, 0x16c: 0x141a, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1052,
+	0x170: 0x0012, 0x171: 0x14ba, 0x172: 0x17d2, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x1ad2,
 	0x176: 0x0012, 0x177: 0x0012, 0x178: 0x0012, 0x179: 0x0012, 0x17a: 0x0012, 0x17b: 0x0012,
 	0x17c: 0x0012, 0x17d: 0x155a, 0x17e: 0x0012, 0x17f: 0x0012,
 	// Block 0x6, offset 0x180
-	0x180: 0xc992, 0x181: 0x0012, 0x182: 0x0012, 0x183: 0xca92, 0x184: 0x0012, 0x185: 0x0012,
-	0x186: 0x0012, 0x187: 0x15fa, 0x188: 0xc992, 0x189: 0x3352, 0x18a: 0xced2, 0x18b: 0xce52,
-	0x18c: 0x3252, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012,
-	0x192: 0xc952, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012,
+	0x180: 0x1c52, 0x181: 0x0012, 0x182: 0x0012, 0x183: 0x1dd2, 0x184: 0x0012, 0x185: 0x0012,
+	0x186: 0x0012, 0x187: 0x15fa, 0x188: 0x1c52, 0x189: 0x2552, 0x18a: 0x1f52, 0x18b: 0x20d2,
+	0x18c: 0x26d2, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012,
+	0x192: 0x2252, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012,
 	0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x0012,
 	0x19e: 0x169a, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012,
 	0x1a4: 0x0012, 0x1a5: 0x0012, 0x1a6: 0x0012, 0x1a7: 0x0012, 0x1a8: 0x0012, 0x1a9: 0x0012,
@@ -261,7 +259,7 @@
 	0x1b6: 0x0015, 0x1b7: 0x0015, 0x1b8: 0x0015, 0x1b9: 0x0014, 0x1ba: 0x0014, 0x1bb: 0x0014,
 	0x1bc: 0x0014, 0x1bd: 0x0014, 0x1be: 0x0014, 0x1bf: 0x0014,
 	// Block 0x7, offset 0x1c0
-	0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x3735,
+	0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x2875,
 	0x1c6: 0x0024, 0x1c7: 0x0034, 0x1c8: 0x0034, 0x1c9: 0x0034, 0x1ca: 0x0024, 0x1cb: 0x0024,
 	0x1cc: 0x0024, 0x1cd: 0x0034, 0x1ce: 0x0034, 0x1cf: 0x0014, 0x1d0: 0x0024, 0x1d1: 0x0024,
 	0x1d2: 0x0024, 0x1d3: 0x0034, 0x1d4: 0x0034, 0x1d5: 0x0034, 0x1d6: 0x0034, 0x1d7: 0x0024,
@@ -269,147 +267,123 @@
 	0x1de: 0x0034, 0x1df: 0x0034, 0x1e0: 0x0034, 0x1e1: 0x0034, 0x1e2: 0x0034, 0x1e3: 0x0024,
 	0x1e4: 0x0024, 0x1e5: 0x0024, 0x1e6: 0x0024, 0x1e7: 0x0024, 0x1e8: 0x0024, 0x1e9: 0x0024,
 	0x1ea: 0x0024, 0x1eb: 0x0024, 0x1ec: 0x0024, 0x1ed: 0x0024, 0x1ee: 0x0024, 0x1ef: 0x0024,
-	0x1f0: 0x0053, 0x1f1: 0x0052, 0x1f2: 0x0053, 0x1f3: 0x0052, 0x1f4: 0x0014, 0x1f5: 0x0004,
-	0x1f6: 0x0053, 0x1f7: 0x0052, 0x1fa: 0x0015, 0x1fb: 0x2192,
-	0x1fc: 0x2092, 0x1fd: 0x2092, 0x1ff: 0x2313,
+	0x1f0: 0x0093, 0x1f1: 0x0092, 0x1f2: 0x0093, 0x1f3: 0x0092, 0x1f4: 0x0014, 0x1f5: 0x0004,
+	0x1f6: 0x0093, 0x1f7: 0x0092, 0x1fa: 0x0015, 0x1fb: 0x29d2,
+	0x1fc: 0x2b52, 0x1fd: 0x2b52, 0x1ff: 0x2cd3,
 	// Block 0x8, offset 0x200
 	0x204: 0x0004, 0x205: 0x0004,
-	0x206: 0x0a93, 0x207: 0x0014, 0x208: 0x0953, 0x209: 0x09d3, 0x20a: 0x0953,
-	0x20c: 0x1013, 0x20e: 0x10d3, 0x20f: 0x1053, 0x210: 0x173a, 0x211: 0x0813,
-	0x212: 0x0813, 0x213: 0x0813, 0x214: 0x0813, 0x215: 0x0813, 0x216: 0x0813, 0x217: 0x0813,
-	0x218: 0x0813, 0x219: 0x0813, 0x21a: 0x0813, 0x21b: 0x0813, 0x21c: 0x0813, 0x21d: 0x0813,
-	0x21e: 0x0813, 0x21f: 0x0813, 0x220: 0x1813, 0x221: 0x1813, 0x223: 0x1813,
-	0x224: 0x1813, 0x225: 0x1813, 0x226: 0x1813, 0x227: 0x1813, 0x228: 0x1813, 0x229: 0x1813,
-	0x22a: 0x1813, 0x22b: 0x1813, 0x22c: 0x0a92, 0x22d: 0x0952, 0x22e: 0x09d2, 0x22f: 0x0952,
-	0x230: 0x183a, 0x231: 0x0812, 0x232: 0x0812, 0x233: 0x0812, 0x234: 0x0812, 0x235: 0x0812,
-	0x236: 0x0812, 0x237: 0x0812, 0x238: 0x0812, 0x239: 0x0812, 0x23a: 0x0812, 0x23b: 0x0812,
-	0x23c: 0x0812, 0x23d: 0x0812, 0x23e: 0x0812, 0x23f: 0x0812,
+	0x206: 0x1513, 0x207: 0x0014, 0x208: 0x1293, 0x209: 0x1393, 0x20a: 0x1293,
+	0x20c: 0x2e53, 0x20e: 0x2fd3, 0x20f: 0x3153, 0x210: 0x173a, 0x211: 0x1013,
+	0x212: 0x1013, 0x213: 0x1013, 0x214: 0x1013, 0x215: 0x1013, 0x216: 0x1013, 0x217: 0x1013,
+	0x218: 0x1013, 0x219: 0x1013, 0x21a: 0x1013, 0x21b: 0x1013, 0x21c: 0x1013, 0x21d: 0x1013,
+	0x21e: 0x1013, 0x21f: 0x1013, 0x220: 0x32d3, 0x221: 0x32d3, 0x223: 0x32d3,
+	0x224: 0x32d3, 0x225: 0x32d3, 0x226: 0x32d3, 0x227: 0x32d3, 0x228: 0x32d3, 0x229: 0x32d3,
+	0x22a: 0x32d3, 0x22b: 0x32d3, 0x22c: 0x1512, 0x22d: 0x1292, 0x22e: 0x1392, 0x22f: 0x1292,
+	0x230: 0x183a, 0x231: 0x1012, 0x232: 0x1012, 0x233: 0x1012, 0x234: 0x1012, 0x235: 0x1012,
+	0x236: 0x1012, 0x237: 0x1012, 0x238: 0x1012, 0x239: 0x1012, 0x23a: 0x1012, 0x23b: 0x1012,
+	0x23c: 0x1012, 0x23d: 0x1012, 0x23e: 0x1012, 0x23f: 0x1012,
 	// Block 0x9, offset 0x240
-	0x240: 0x1812, 0x241: 0x1812, 0x242: 0x1852, 0x243: 0x1812, 0x244: 0x1812, 0x245: 0x1812,
-	0x246: 0x1812, 0x247: 0x1812, 0x248: 0x1812, 0x249: 0x1812, 0x24a: 0x1812, 0x24b: 0x1812,
-	0x24c: 0x1012, 0x24d: 0x10d2, 0x24e: 0x1052, 0x24f: 0x0613, 0x250: 0x1092, 0x251: 0x1252,
-	0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x1cd2, 0x256: 0x1d92, 0x257: 0x0612,
-	0x258: 0x0053, 0x259: 0x0052, 0x25a: 0x0053, 0x25b: 0x0052, 0x25c: 0x0053, 0x25d: 0x0052,
-	0x25e: 0x0053, 0x25f: 0x0052, 0x260: 0x0053, 0x261: 0x0052, 0x262: 0x0053, 0x263: 0x0052,
-	0x264: 0x0053, 0x265: 0x0052, 0x266: 0x0053, 0x267: 0x0052, 0x268: 0x0053, 0x269: 0x0052,
-	0x26a: 0x0053, 0x26b: 0x0052, 0x26c: 0x0053, 0x26d: 0x0052, 0x26e: 0x0053, 0x26f: 0x0052,
-	0x270: 0x1a92, 0x271: 0x1412, 0x272: 0x02d2, 0x273: 0x2312, 0x274: 0x1313, 0x275: 0x1812,
-	0x277: 0x03d3, 0x278: 0x03d2, 0x279: 0x02d3, 0x27a: 0x0053, 0x27b: 0x0052,
-	0x27c: 0x0012, 0x27d: 0x2193, 0x27e: 0x2093, 0x27f: 0x2093,
+	0x240: 0x32d2, 0x241: 0x32d2, 0x242: 0x3452, 0x243: 0x32d2, 0x244: 0x32d2, 0x245: 0x32d2,
+	0x246: 0x32d2, 0x247: 0x32d2, 0x248: 0x32d2, 0x249: 0x32d2, 0x24a: 0x32d2, 0x24b: 0x32d2,
+	0x24c: 0x2e52, 0x24d: 0x2fd2, 0x24e: 0x3152, 0x24f: 0x0c13, 0x250: 0x35d2, 0x251: 0x3752,
+	0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x38d2, 0x256: 0x3a52, 0x257: 0x0c12,
+	0x258: 0x0093, 0x259: 0x0092, 0x25a: 0x0093, 0x25b: 0x0092, 0x25c: 0x0093, 0x25d: 0x0092,
+	0x25e: 0x0093, 0x25f: 0x0092, 0x260: 0x0093, 0x261: 0x0092, 0x262: 0x0093, 0x263: 0x0092,
+	0x264: 0x0093, 0x265: 0x0092, 0x266: 0x0093, 0x267: 0x0092, 0x268: 0x0093, 0x269: 0x0092,
+	0x26a: 0x0093, 0x26b: 0x0092, 0x26c: 0x0093, 0x26d: 0x0092, 0x26e: 0x0093, 0x26f: 0x0092,
+	0x270: 0x3bd2, 0x271: 0x3d52, 0x272: 0x0592, 0x273: 0x2cd2, 0x274: 0x3ed3, 0x275: 0x32d2,
+	0x277: 0x0793, 0x278: 0x0792, 0x279: 0x0593, 0x27a: 0x0093, 0x27b: 0x0092,
+	0x27c: 0x0012, 0x27d: 0x29d3, 0x27e: 0x2b53, 0x27f: 0x2b53,
 	// Block 0xa, offset 0x280
-	0x282: 0x0014, 0x283: 0x0010, 0x284: 0x0010, 0x285: 0x0014,
-	0x286: 0x0014, 0x287: 0x0010, 0x288: 0x0010, 0x289: 0x0010, 0x28a: 0x0010, 0x28b: 0x0010,
-	0x28c: 0x0010, 0x28d: 0x0034, 0x28f: 0x0010, 0x290: 0x0010, 0x291: 0x0010,
-	0x292: 0x0010, 0x293: 0x0010, 0x294: 0x0010, 0x295: 0x0010, 0x296: 0x0010, 0x297: 0x0010,
-	0x298: 0x0010, 0x299: 0x0010, 0x29a: 0x0010, 0x29b: 0x0010, 0x29c: 0x0010, 0x29d: 0x0014,
-	0x2a0: 0x1a7b, 0x2a1: 0x1b1b, 0x2a2: 0x1bbb, 0x2a3: 0x1c5b,
-	0x2a4: 0x1cfb, 0x2a5: 0x1d9b, 0x2a6: 0x1e3b, 0x2a7: 0x1edb, 0x2a8: 0x1f7b, 0x2a9: 0x201b,
-	0x2aa: 0x20bb, 0x2ab: 0x215b, 0x2ac: 0x21fb, 0x2ad: 0x229b, 0x2ae: 0x233b, 0x2af: 0x23db,
-	0x2b0: 0x247b, 0x2b1: 0x251b, 0x2b2: 0x25bb, 0x2b3: 0x265b, 0x2b4: 0x26fb, 0x2b5: 0x279b,
-	0x2b6: 0x283b, 0x2b7: 0x28db, 0x2b8: 0x297b, 0x2b9: 0x2a1b, 0x2ba: 0x2abb, 0x2bb: 0x2b5b,
-	0x2bc: 0x2bfb, 0x2bd: 0x2c9b, 0x2be: 0x2d3b, 0x2bf: 0x2ddb,
+	0x280: 0x0412, 0x281: 0x0412, 0x282: 0x0412, 0x283: 0x0412, 0x284: 0x0412, 0x285: 0x0412,
+	0x288: 0x0413, 0x289: 0x0413, 0x28a: 0x0413, 0x28b: 0x0413,
+	0x28c: 0x0413, 0x28d: 0x0413, 0x290: 0x1e1a, 0x291: 0x0412,
+	0x292: 0x1eda, 0x293: 0x0412, 0x294: 0x1fda, 0x295: 0x0412, 0x296: 0x20da, 0x297: 0x0412,
+	0x299: 0x0413, 0x29b: 0x0413, 0x29d: 0x0413,
+	0x29f: 0x0413, 0x2a0: 0x0412, 0x2a1: 0x0412, 0x2a2: 0x0412, 0x2a3: 0x0412,
+	0x2a4: 0x0412, 0x2a5: 0x0412, 0x2a6: 0x0412, 0x2a7: 0x0412, 0x2a8: 0x0413, 0x2a9: 0x0413,
+	0x2aa: 0x0413, 0x2ab: 0x0413, 0x2ac: 0x0413, 0x2ad: 0x0413, 0x2ae: 0x0413, 0x2af: 0x0413,
+	0x2b0: 0x4b52, 0x2b1: 0x4b52, 0x2b2: 0x4cd2, 0x2b3: 0x4cd2, 0x2b4: 0x4e52, 0x2b5: 0x4e52,
+	0x2b6: 0x4fd2, 0x2b7: 0x4fd2, 0x2b8: 0x5152, 0x2b9: 0x5152, 0x2ba: 0x52d2, 0x2bb: 0x52d2,
+	0x2bc: 0x29d2, 0x2bd: 0x29d2,
 	// Block 0xb, offset 0x2c0
-	0x2c0: 0x0212, 0x2c1: 0x0212, 0x2c2: 0x0212, 0x2c3: 0x0212, 0x2c4: 0x0212, 0x2c5: 0x0212,
-	0x2c8: 0x0213, 0x2c9: 0x0213, 0x2ca: 0x0213, 0x2cb: 0x0213,
-	0x2cc: 0x0213, 0x2cd: 0x0213, 0x2d0: 0x385a, 0x2d1: 0x0212,
-	0x2d2: 0x391a, 0x2d3: 0x0212, 0x2d4: 0x3a1a, 0x2d5: 0x0212, 0x2d6: 0x3b1a, 0x2d7: 0x0212,
-	0x2d9: 0x0213, 0x2db: 0x0213, 0x2dd: 0x0213,
-	0x2df: 0x0213, 0x2e0: 0x0212, 0x2e1: 0x0212, 0x2e2: 0x0212, 0x2e3: 0x0212,
-	0x2e4: 0x0212, 0x2e5: 0x0212, 0x2e6: 0x0212, 0x2e7: 0x0212, 0x2e8: 0x0213, 0x2e9: 0x0213,
-	0x2ea: 0x0213, 0x2eb: 0x0213, 0x2ec: 0x0213, 0x2ed: 0x0213, 0x2ee: 0x0213, 0x2ef: 0x0213,
-	0x2f0: 0x3292, 0x2f1: 0x3292, 0x2f2: 0x2e92, 0x2f3: 0x2e92, 0x2f4: 0x2f92, 0x2f5: 0x2f92,
-	0x2f6: 0x2b12, 0x2f7: 0x2b12, 0x2f8: 0x2012, 0x2f9: 0x2012, 0x2fa: 0x2412, 0x2fb: 0x2412,
-	0x2fc: 0x2192, 0x2fd: 0x2192,
+	0x2c0: 0x21da, 0x2c1: 0x231a, 0x2c2: 0x245a, 0x2c3: 0x259a, 0x2c4: 0x26da, 0x2c5: 0x281a,
+	0x2c6: 0x295a, 0x2c7: 0x2a9a, 0x2c8: 0x2bd9, 0x2c9: 0x2d19, 0x2ca: 0x2e59, 0x2cb: 0x2f99,
+	0x2cc: 0x30d9, 0x2cd: 0x3219, 0x2ce: 0x3359, 0x2cf: 0x3499, 0x2d0: 0x35da, 0x2d1: 0x371a,
+	0x2d2: 0x385a, 0x2d3: 0x399a, 0x2d4: 0x3ada, 0x2d5: 0x3c1a, 0x2d6: 0x3d5a, 0x2d7: 0x3e9a,
+	0x2d8: 0x3fd9, 0x2d9: 0x4119, 0x2da: 0x4259, 0x2db: 0x4399, 0x2dc: 0x44d9, 0x2dd: 0x4619,
+	0x2de: 0x4759, 0x2df: 0x4899, 0x2e0: 0x49da, 0x2e1: 0x4b1a, 0x2e2: 0x4c5a, 0x2e3: 0x4d9a,
+	0x2e4: 0x4eda, 0x2e5: 0x501a, 0x2e6: 0x515a, 0x2e7: 0x529a, 0x2e8: 0x53d9, 0x2e9: 0x5519,
+	0x2ea: 0x5659, 0x2eb: 0x5799, 0x2ec: 0x58d9, 0x2ed: 0x5a19, 0x2ee: 0x5b59, 0x2ef: 0x5c99,
+	0x2f0: 0x0412, 0x2f1: 0x0412, 0x2f2: 0x5dda, 0x2f3: 0x5f5a, 0x2f4: 0x607a,
+	0x2f6: 0x61ba, 0x2f7: 0x627a, 0x2f8: 0x0413, 0x2f9: 0x0413, 0x2fa: 0x4b53, 0x2fb: 0x4b53,
+	0x2fc: 0x6439, 0x2fd: 0x0004, 0x2fe: 0x655a, 0x2ff: 0x0004,
 	// Block 0xc, offset 0x300
-	0x300: 0x3c1a, 0x301: 0x3d5a, 0x302: 0x3e9a, 0x303: 0x3fda, 0x304: 0x411a, 0x305: 0x425a,
-	0x306: 0x439a, 0x307: 0x44da, 0x308: 0x4619, 0x309: 0x4759, 0x30a: 0x4899, 0x30b: 0x49d9,
-	0x30c: 0x4b19, 0x30d: 0x4c59, 0x30e: 0x4d99, 0x30f: 0x4ed9, 0x310: 0x501a, 0x311: 0x515a,
-	0x312: 0x529a, 0x313: 0x53da, 0x314: 0x551a, 0x315: 0x565a, 0x316: 0x579a, 0x317: 0x58da,
-	0x318: 0x5a19, 0x319: 0x5b59, 0x31a: 0x5c99, 0x31b: 0x5dd9, 0x31c: 0x5f19, 0x31d: 0x6059,
-	0x31e: 0x6199, 0x31f: 0x62d9, 0x320: 0x641a, 0x321: 0x655a, 0x322: 0x669a, 0x323: 0x67da,
-	0x324: 0x691a, 0x325: 0x6a5a, 0x326: 0x6b9a, 0x327: 0x6cda, 0x328: 0x6e19, 0x329: 0x6f59,
-	0x32a: 0x7099, 0x32b: 0x71d9, 0x32c: 0x7319, 0x32d: 0x7459, 0x32e: 0x7599, 0x32f: 0x76d9,
-	0x330: 0x0212, 0x331: 0x0212, 0x332: 0x781a, 0x333: 0x799a, 0x334: 0x7aba,
-	0x336: 0x7bfa, 0x337: 0x7cba, 0x338: 0x0213, 0x339: 0x0213, 0x33a: 0x3293, 0x33b: 0x3293,
-	0x33c: 0x7e79, 0x33d: 0x0004, 0x33e: 0x7f9a, 0x33f: 0x0004,
+	0x300: 0x0004, 0x301: 0x0004, 0x302: 0x65da, 0x303: 0x675a, 0x304: 0x687a,
+	0x306: 0x69ba, 0x307: 0x6a7a, 0x308: 0x4cd3, 0x309: 0x4cd3, 0x30a: 0x4e53, 0x30b: 0x4e53,
+	0x30c: 0x6c39, 0x30d: 0x0004, 0x30e: 0x0004, 0x30f: 0x0004, 0x310: 0x0412, 0x311: 0x0412,
+	0x312: 0x6d5a, 0x313: 0x6e5a, 0x316: 0x6f5a, 0x317: 0x701a,
+	0x318: 0x0413, 0x319: 0x0413, 0x31a: 0x4fd3, 0x31b: 0x4fd3, 0x31d: 0x0004,
+	0x31e: 0x0004, 0x31f: 0x0004, 0x320: 0x0412, 0x321: 0x0412, 0x322: 0x711a, 0x323: 0x721a,
+	0x324: 0x731a, 0x325: 0x0492, 0x326: 0x73da, 0x327: 0x749a, 0x328: 0x0413, 0x329: 0x0413,
+	0x32a: 0x52d3, 0x32b: 0x52d3, 0x32c: 0x0493, 0x32d: 0x0004, 0x32e: 0x0004, 0x32f: 0x0004,
+	0x332: 0x759a, 0x333: 0x771a, 0x334: 0x783a,
+	0x336: 0x797a, 0x337: 0x7a3a, 0x338: 0x5153, 0x339: 0x5153, 0x33a: 0x29d3, 0x33b: 0x29d3,
+	0x33c: 0x7bf9, 0x33d: 0x0004, 0x33e: 0x0004,
 	// Block 0xd, offset 0x340
-	0x340: 0x0004, 0x341: 0x0004, 0x342: 0x801a, 0x343: 0x819a, 0x344: 0x82ba,
-	0x346: 0x83fa, 0x347: 0x84ba, 0x348: 0x2e93, 0x349: 0x2e93, 0x34a: 0x2f93, 0x34b: 0x2f93,
-	0x34c: 0x8679, 0x34d: 0x0004, 0x34e: 0x0004, 0x34f: 0x0004, 0x350: 0x0212, 0x351: 0x0212,
-	0x352: 0x879a, 0x353: 0x889a, 0x356: 0x899a, 0x357: 0x8a5a,
-	0x358: 0x0213, 0x359: 0x0213, 0x35a: 0x2b13, 0x35b: 0x2b13, 0x35d: 0x0004,
-	0x35e: 0x0004, 0x35f: 0x0004, 0x360: 0x0212, 0x361: 0x0212, 0x362: 0x8b5a, 0x363: 0x8c5a,
-	0x364: 0x8d5a, 0x365: 0x0252, 0x366: 0x8e1a, 0x367: 0x8eda, 0x368: 0x0213, 0x369: 0x0213,
-	0x36a: 0x2413, 0x36b: 0x2413, 0x36c: 0x0253, 0x36d: 0x0004, 0x36e: 0x0004, 0x36f: 0x0004,
-	0x372: 0x8fda, 0x373: 0x915a, 0x374: 0x927a,
-	0x376: 0x93ba, 0x377: 0x947a, 0x378: 0x2013, 0x379: 0x2013, 0x37a: 0x2193, 0x37b: 0x2193,
-	0x37c: 0x9639, 0x37d: 0x0004, 0x37e: 0x0004,
+	0x342: 0x0013,
+	0x347: 0x0013, 0x34a: 0x0012, 0x34b: 0x0013,
+	0x34c: 0x0013, 0x34d: 0x0013, 0x34e: 0x0012, 0x34f: 0x0012, 0x350: 0x0013, 0x351: 0x0013,
+	0x352: 0x0013, 0x353: 0x0012, 0x355: 0x0013,
+	0x359: 0x0013, 0x35a: 0x0013, 0x35b: 0x0013, 0x35c: 0x0013, 0x35d: 0x0013,
+	0x364: 0x0013, 0x366: 0x7d1b, 0x368: 0x0013,
+	0x36a: 0x7d9b, 0x36b: 0x7dfb, 0x36c: 0x0013, 0x36d: 0x0013, 0x36f: 0x0012,
+	0x370: 0x0013, 0x371: 0x0013, 0x372: 0x5453, 0x373: 0x0013, 0x374: 0x0012, 0x375: 0x0010,
+	0x376: 0x0010, 0x377: 0x0010, 0x378: 0x0010, 0x379: 0x0012,
+	0x37c: 0x0012, 0x37d: 0x0012, 0x37e: 0x0013, 0x37f: 0x0013,
 	// Block 0xe, offset 0x380
-	0x382: 0x0013,
-	0x387: 0x0013, 0x38a: 0x0012, 0x38b: 0x0013,
-	0x38c: 0x0013, 0x38d: 0x0013, 0x38e: 0x0012, 0x38f: 0x0012, 0x390: 0x0013, 0x391: 0x0013,
-	0x392: 0x0013, 0x393: 0x0012, 0x395: 0x0013,
-	0x399: 0x0013, 0x39a: 0x0013, 0x39b: 0x0013, 0x39c: 0x0013, 0x39d: 0x0013,
-	0x3a4: 0x0013, 0x3a6: 0x975b, 0x3a8: 0x0013,
-	0x3aa: 0x97db, 0x3ab: 0x983b, 0x3ac: 0x0013, 0x3ad: 0x0013, 0x3af: 0x0012,
-	0x3b0: 0x0013, 0x3b1: 0x0013, 0x3b2: 0x1f13, 0x3b3: 0x0013, 0x3b4: 0x0012, 0x3b5: 0x0010,
-	0x3b6: 0x0010, 0x3b7: 0x0010, 0x3b8: 0x0010, 0x3b9: 0x0012,
-	0x3bc: 0x0012, 0x3bd: 0x0012, 0x3be: 0x0013, 0x3bf: 0x0013,
+	0x380: 0x0d13, 0x381: 0x0d13, 0x382: 0x0f13, 0x383: 0x0f13, 0x384: 0x0d13, 0x385: 0x0d13,
+	0x386: 0x1313, 0x387: 0x1313, 0x388: 0x1513, 0x389: 0x1513, 0x38a: 0x1713, 0x38b: 0x1713,
+	0x38c: 0x1513, 0x38d: 0x1513, 0x38e: 0x1313, 0x38f: 0x1313, 0x390: 0x55d2, 0x391: 0x55d2,
+	0x392: 0x3bd2, 0x393: 0x3bd2, 0x394: 0x5752, 0x395: 0x5752, 0x396: 0x3bd2, 0x397: 0x3bd2,
+	0x398: 0x55d2, 0x399: 0x55d2, 0x39a: 0x0d12, 0x39b: 0x0d12, 0x39c: 0x0f12, 0x39d: 0x0f12,
+	0x39e: 0x0d12, 0x39f: 0x0d12, 0x3a0: 0x1312, 0x3a1: 0x1312, 0x3a2: 0x1512, 0x3a3: 0x1512,
+	0x3a4: 0x1712, 0x3a5: 0x1712, 0x3a6: 0x1512, 0x3a7: 0x1512, 0x3a8: 0x1312, 0x3a9: 0x1312,
 	// Block 0xf, offset 0x3c0
-	0x3c0: 0x0693, 0x3c1: 0x0693, 0x3c2: 0x0793, 0x3c3: 0x0793, 0x3c4: 0x0693, 0x3c5: 0x0693,
-	0x3c6: 0x0993, 0x3c7: 0x0993, 0x3c8: 0x0a93, 0x3c9: 0x0a93, 0x3ca: 0x0b93, 0x3cb: 0x0b93,
-	0x3cc: 0x0a93, 0x3cd: 0x0a93, 0x3ce: 0x0993, 0x3cf: 0x0993, 0x3d0: 0x1992, 0x3d1: 0x1992,
-	0x3d2: 0x1a92, 0x3d3: 0x1a92, 0x3d4: 0x1b92, 0x3d5: 0x1b92, 0x3d6: 0x1a92, 0x3d7: 0x1a92,
-	0x3d8: 0x1992, 0x3d9: 0x1992, 0x3da: 0x0692, 0x3db: 0x0692, 0x3dc: 0x0792, 0x3dd: 0x0792,
-	0x3de: 0x0692, 0x3df: 0x0692, 0x3e0: 0x0992, 0x3e1: 0x0992, 0x3e2: 0x0a92, 0x3e3: 0x0a92,
-	0x3e4: 0x0b92, 0x3e5: 0x0b92, 0x3e6: 0x0a92, 0x3e7: 0x0a92, 0x3e8: 0x0992, 0x3e9: 0x0992,
+	0x3c0: 0x3d52, 0x3c1: 0x3d52, 0x3c2: 0x3d52, 0x3c3: 0x3d52, 0x3c4: 0x3d52, 0x3c5: 0x3d52,
+	0x3c6: 0x3d52, 0x3c7: 0x3d52, 0x3c8: 0x3d52, 0x3c9: 0x3d52, 0x3ca: 0x3d52, 0x3cb: 0x3d52,
+	0x3cc: 0x3d52, 0x3cd: 0x3d52, 0x3ce: 0x3d52, 0x3cf: 0x3d52, 0x3d0: 0x58d2, 0x3d1: 0x58d2,
+	0x3d2: 0x58d2, 0x3d3: 0x58d2, 0x3d4: 0x58d2, 0x3d5: 0x58d2, 0x3d6: 0x58d2, 0x3d7: 0x58d2,
+	0x3d8: 0x58d2, 0x3d9: 0x58d2, 0x3da: 0x58d2, 0x3db: 0x58d2, 0x3dc: 0x58d2, 0x3dd: 0x58d2,
+	0x3de: 0x58d2, 0x3e0: 0x0093, 0x3e1: 0x0092, 0x3e2: 0x7e7b, 0x3e3: 0x4853,
+	0x3e4: 0x7efb, 0x3e5: 0x7f7a, 0x3e6: 0x7ffa, 0x3e7: 0x0793, 0x3e8: 0x0792, 0x3e9: 0x0193,
+	0x3ea: 0x0192, 0x3eb: 0x0393, 0x3ec: 0x0392, 0x3ed: 0x807b, 0x3ee: 0x80fb, 0x3ef: 0x817b,
+	0x3f0: 0x81fb, 0x3f1: 0x0012, 0x3f2: 0x0093, 0x3f3: 0x0092, 0x3f4: 0x0012, 0x3f5: 0x0193,
+	0x3f6: 0x0192, 0x3f7: 0x0012, 0x3f8: 0x0012, 0x3f9: 0x0012, 0x3fa: 0x0012, 0x3fb: 0x0012,
+	0x3fc: 0x0015, 0x3fd: 0x0015, 0x3fe: 0x827b, 0x3ff: 0x82fb,
 	// Block 0x10, offset 0x400
-	0x400: 0x1412, 0x401: 0x1412, 0x402: 0x1412, 0x403: 0x1412, 0x404: 0x1412, 0x405: 0x1412,
-	0x406: 0x1412, 0x407: 0x1412, 0x408: 0x1412, 0x409: 0x1412, 0x40a: 0x1412, 0x40b: 0x1412,
-	0x40c: 0x1412, 0x40d: 0x1412, 0x40e: 0x1412, 0x40f: 0x1412, 0x410: 0x1c12, 0x411: 0x1c12,
-	0x412: 0x1c12, 0x413: 0x1c12, 0x414: 0x1c12, 0x415: 0x1c12, 0x416: 0x1c12, 0x417: 0x1c12,
-	0x418: 0x1c12, 0x419: 0x1c12, 0x41a: 0x1c12, 0x41b: 0x1c12, 0x41c: 0x1c12, 0x41d: 0x1c12,
-	0x41e: 0x1c12, 0x420: 0x0053, 0x421: 0x0052, 0x422: 0x98bb, 0x423: 0x993b,
-	0x424: 0x99db, 0x425: 0x9a5a, 0x426: 0x9ada, 0x427: 0x03d3, 0x428: 0x03d2, 0x429: 0x00d3,
-	0x42a: 0x00d2, 0x42b: 0x01d3, 0x42c: 0x01d2, 0x42d: 0x9b5b, 0x42e: 0x9bdb, 0x42f: 0x9c5b,
-	0x430: 0x9cdb, 0x431: 0x0012, 0x432: 0x0053, 0x433: 0x0052, 0x434: 0x0012, 0x435: 0x00d3,
-	0x436: 0x00d2, 0x437: 0x0012, 0x438: 0x0012, 0x439: 0x0012, 0x43a: 0x0012, 0x43b: 0x0012,
-	0x43c: 0x0015, 0x43d: 0x0015, 0x43e: 0x9d5b, 0x43f: 0x9ddb,
+	0x400: 0x86fa, 0x401: 0x87ba, 0x402: 0x887a, 0x403: 0x893a, 0x404: 0x8a3a, 0x405: 0x8b3a,
+	0x406: 0x8bfa,
+	0x413: 0x8cba, 0x414: 0x8dfa, 0x415: 0x8f3a, 0x416: 0x907a, 0x417: 0x91ba,
+	0x41d: 0x0010,
+	0x41e: 0x0034, 0x41f: 0x0010, 0x420: 0x0010, 0x421: 0x0010, 0x422: 0x0010, 0x423: 0x0010,
+	0x424: 0x0010, 0x425: 0x0010, 0x426: 0x0010, 0x427: 0x0010, 0x428: 0x0010,
+	0x42a: 0x0010, 0x42b: 0x0010, 0x42c: 0x0010, 0x42d: 0x0010, 0x42e: 0x0010, 0x42f: 0x0010,
+	0x430: 0x0010, 0x431: 0x0010, 0x432: 0x0010, 0x433: 0x0010, 0x434: 0x0010, 0x435: 0x0010,
+	0x436: 0x0010, 0x438: 0x0010, 0x439: 0x0010, 0x43a: 0x0010, 0x43b: 0x0010,
+	0x43c: 0x0010, 0x43e: 0x0010,
 	// Block 0x11, offset 0x440
-	0x440: 0x9e5a, 0x441: 0x9efa, 0x442: 0x9f9a, 0x443: 0xa03a, 0x444: 0xa0da, 0x445: 0xa17a,
-	0x446: 0xa21a, 0x447: 0xa2ba, 0x448: 0xa35a, 0x449: 0xa3fa, 0x44a: 0xa49a, 0x44b: 0xa53a,
-	0x44c: 0xa5da, 0x44d: 0xa67a, 0x44e: 0xa71a, 0x44f: 0xa7ba, 0x450: 0xa85a, 0x451: 0xa8fa,
-	0x452: 0xa99a, 0x453: 0xaa3a, 0x454: 0xaada, 0x455: 0xab7a, 0x456: 0xac1a, 0x457: 0xacba,
-	0x458: 0xad5a, 0x459: 0xadfa, 0x45a: 0xae9a, 0x45b: 0xaf3a, 0x45c: 0xafda, 0x45d: 0xb07a,
-	0x45e: 0xb11a, 0x45f: 0xb1ba, 0x460: 0xb25a, 0x461: 0xb2fa, 0x462: 0xb39a, 0x463: 0xb43a,
-	0x464: 0xb4da, 0x465: 0xb57a, 0x467: 0xb61a,
-	0x46d: 0xb6ba,
-	0x470: 0x0010, 0x471: 0x0010, 0x472: 0x0010, 0x473: 0x0010, 0x474: 0x0010, 0x475: 0x0010,
-	0x476: 0x0010, 0x477: 0x0010, 0x478: 0x0010, 0x479: 0x0010, 0x47a: 0x0010, 0x47b: 0x0010,
-	0x47c: 0x0010, 0x47d: 0x0010, 0x47e: 0x0010, 0x47f: 0x0010,
-	// Block 0x12, offset 0x480
-	0x480: 0xbb7a, 0x481: 0xbc3a, 0x482: 0xbcfa, 0x483: 0xbdba, 0x484: 0xbeba, 0x485: 0xbfba,
-	0x486: 0xc07a,
-	0x493: 0xc13a, 0x494: 0xc27a, 0x495: 0xc3ba, 0x496: 0xc4fa, 0x497: 0xc63a,
-	0x49d: 0x0010,
-	0x49e: 0x0034, 0x49f: 0x0010, 0x4a0: 0x0010, 0x4a1: 0x0010, 0x4a2: 0x0010, 0x4a3: 0x0010,
-	0x4a4: 0x0010, 0x4a5: 0x0010, 0x4a6: 0x0010, 0x4a7: 0x0010, 0x4a8: 0x0010,
-	0x4aa: 0x0010, 0x4ab: 0x0010, 0x4ac: 0x0010, 0x4ad: 0x0010, 0x4ae: 0x0010, 0x4af: 0x0010,
-	0x4b0: 0x0010, 0x4b1: 0x0010, 0x4b2: 0x0010, 0x4b3: 0x0010, 0x4b4: 0x0010, 0x4b5: 0x0010,
-	0x4b6: 0x0010, 0x4b8: 0x0010, 0x4b9: 0x0010, 0x4ba: 0x0010, 0x4bb: 0x0010,
-	0x4bc: 0x0010, 0x4be: 0x0010,
-	// Block 0x13, offset 0x4c0
-	0x4c2: 0x0010,
-	0x4c7: 0x0010, 0x4c9: 0x0010, 0x4cb: 0x0010,
-	0x4cd: 0x0010, 0x4ce: 0x0010, 0x4cf: 0x0010, 0x4d1: 0x0010,
-	0x4d2: 0x0010, 0x4d4: 0x0010, 0x4d7: 0x0010,
-	0x4d9: 0x0010, 0x4db: 0x0010, 0x4dd: 0x0010,
-	0x4df: 0x0010, 0x4e1: 0x0010, 0x4e2: 0x0010,
-	0x4e4: 0x0010, 0x4e7: 0x0010, 0x4e8: 0x0010, 0x4e9: 0x0010,
-	0x4ea: 0x0010, 0x4ec: 0x0010, 0x4ed: 0x0010, 0x4ee: 0x0010, 0x4ef: 0x0010,
-	0x4f0: 0x0010, 0x4f1: 0x0010, 0x4f2: 0x0010, 0x4f4: 0x0010, 0x4f5: 0x0010,
-	0x4f6: 0x0010, 0x4f7: 0x0010, 0x4f9: 0x0010, 0x4fa: 0x0010, 0x4fb: 0x0010,
-	0x4fc: 0x0010, 0x4fe: 0x0010,
+	0x442: 0x0010,
+	0x447: 0x0010, 0x449: 0x0010, 0x44b: 0x0010,
+	0x44d: 0x0010, 0x44e: 0x0010, 0x44f: 0x0010, 0x451: 0x0010,
+	0x452: 0x0010, 0x454: 0x0010, 0x457: 0x0010,
+	0x459: 0x0010, 0x45b: 0x0010, 0x45d: 0x0010,
+	0x45f: 0x0010, 0x461: 0x0010, 0x462: 0x0010,
+	0x464: 0x0010, 0x467: 0x0010, 0x468: 0x0010, 0x469: 0x0010,
+	0x46a: 0x0010, 0x46c: 0x0010, 0x46d: 0x0010, 0x46e: 0x0010, 0x46f: 0x0010,
+	0x470: 0x0010, 0x471: 0x0010, 0x472: 0x0010, 0x474: 0x0010, 0x475: 0x0010,
+	0x476: 0x0010, 0x477: 0x0010, 0x479: 0x0010, 0x47a: 0x0010, 0x47b: 0x0010,
+	0x47c: 0x0010, 0x47e: 0x0010,
 }
 
 // caseIndex: 24 blocks, 1536 entries, 3072 bytes
@@ -419,98 +393,98 @@
 	// Block 0x1, offset 0x40
 	// Block 0x2, offset 0x80
 	// Block 0x3, offset 0xc0
-	0xc2: 0x12, 0xc3: 0x13, 0xc4: 0x14, 0xc5: 0x15, 0xc6: 0x01, 0xc7: 0x02,
-	0xc8: 0x16, 0xc9: 0x03, 0xca: 0x04, 0xcb: 0x17, 0xcc: 0x18, 0xcd: 0x05, 0xce: 0x06, 0xcf: 0x07,
-	0xd0: 0x19, 0xd1: 0x1a, 0xd2: 0x1b, 0xd3: 0x1c, 0xd4: 0x1d, 0xd5: 0x1e, 0xd6: 0x1f, 0xd7: 0x20,
-	0xd8: 0x21, 0xd9: 0x22, 0xda: 0x23, 0xdb: 0x24, 0xdc: 0x25, 0xdd: 0x26, 0xde: 0x27, 0xdf: 0x28,
+	0xc2: 0x10, 0xc3: 0x11, 0xc4: 0x12, 0xc5: 0x13, 0xc6: 0x01, 0xc7: 0x02,
+	0xc8: 0x14, 0xc9: 0x03, 0xca: 0x04, 0xcb: 0x15, 0xcc: 0x16, 0xcd: 0x05, 0xce: 0x06, 0xcf: 0x07,
+	0xd0: 0x17, 0xd1: 0x18, 0xd2: 0x19, 0xd3: 0x1a, 0xd4: 0x1b, 0xd5: 0x1c, 0xd6: 0x1d, 0xd7: 0x1e,
+	0xd8: 0x1f, 0xd9: 0x20, 0xda: 0x21, 0xdb: 0x22, 0xdc: 0x23, 0xdd: 0x24, 0xde: 0x25, 0xdf: 0x26,
 	0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,
 	0xea: 0x06, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x08, 0xef: 0x09,
 	0xf0: 0x13, 0xf3: 0x15,
 	// Block 0x4, offset 0x100
-	0x120: 0x29, 0x121: 0x2a, 0x122: 0x2b, 0x123: 0x2c, 0x124: 0x2d, 0x125: 0x2e, 0x126: 0x2f, 0x127: 0x30,
-	0x128: 0x31, 0x129: 0x32, 0x12a: 0x33, 0x12b: 0x34, 0x12c: 0x35, 0x12d: 0x36, 0x12e: 0x37, 0x12f: 0x38,
-	0x130: 0x39, 0x131: 0x3a, 0x132: 0x3b, 0x133: 0x3c, 0x134: 0x3d, 0x135: 0x3e, 0x136: 0x3f, 0x137: 0x40,
-	0x138: 0x41, 0x139: 0x42, 0x13a: 0x43, 0x13b: 0x44, 0x13c: 0x45, 0x13d: 0x46, 0x13e: 0x47, 0x13f: 0x48,
+	0x120: 0x27, 0x121: 0x28, 0x122: 0x29, 0x123: 0x2a, 0x124: 0x2b, 0x125: 0x2c, 0x126: 0x2d, 0x127: 0x2e,
+	0x128: 0x2f, 0x129: 0x30, 0x12a: 0x31, 0x12b: 0x32, 0x12c: 0x33, 0x12d: 0x34, 0x12e: 0x35, 0x12f: 0x36,
+	0x130: 0x37, 0x131: 0x38, 0x132: 0x39, 0x133: 0x3a, 0x134: 0x3b, 0x135: 0x3c, 0x136: 0x3d, 0x137: 0x3e,
+	0x138: 0x3f, 0x139: 0x40, 0x13a: 0x41, 0x13b: 0x42, 0x13c: 0x43, 0x13d: 0x44, 0x13e: 0x45, 0x13f: 0x46,
 	// Block 0x5, offset 0x140
-	0x140: 0x49, 0x141: 0x4a, 0x142: 0x08, 0x143: 0x4b, 0x144: 0x23, 0x145: 0x23, 0x146: 0x23, 0x147: 0x23,
-	0x148: 0x23, 0x149: 0x4c, 0x14a: 0x4d, 0x14b: 0x4e, 0x14c: 0x4f, 0x14d: 0x50, 0x14e: 0x51, 0x14f: 0x52,
-	0x150: 0x53, 0x151: 0x23, 0x152: 0x23, 0x153: 0x23, 0x154: 0x23, 0x155: 0x23, 0x156: 0x23, 0x157: 0x23,
-	0x158: 0x23, 0x159: 0x54, 0x15a: 0x55, 0x15b: 0x56, 0x15c: 0x57, 0x15d: 0x58, 0x15e: 0x59, 0x15f: 0x5a,
-	0x160: 0x5b, 0x161: 0x5c, 0x162: 0x5d, 0x163: 0x5e, 0x164: 0x5f, 0x165: 0x60, 0x166: 0x61, 0x167: 0x62,
-	0x168: 0x63, 0x169: 0x64, 0x16a: 0x65, 0x16c: 0x66, 0x16d: 0x67, 0x16e: 0x68, 0x16f: 0x69,
-	0x170: 0x6a, 0x171: 0x6b, 0x173: 0x6c, 0x174: 0x6d, 0x175: 0x6e, 0x176: 0x6f, 0x177: 0x70,
-	0x178: 0x71, 0x179: 0x71, 0x17a: 0x72, 0x17b: 0x71, 0x17c: 0x73, 0x17d: 0x09, 0x17e: 0x0a, 0x17f: 0x0b,
+	0x140: 0x47, 0x141: 0x48, 0x142: 0x49, 0x143: 0x4a, 0x144: 0x21, 0x145: 0x21, 0x146: 0x21, 0x147: 0x21,
+	0x148: 0x21, 0x149: 0x4b, 0x14a: 0x4c, 0x14b: 0x4d, 0x14c: 0x4e, 0x14d: 0x4f, 0x14e: 0x50, 0x14f: 0x51,
+	0x150: 0x52, 0x151: 0x21, 0x152: 0x21, 0x153: 0x21, 0x154: 0x21, 0x155: 0x21, 0x156: 0x21, 0x157: 0x21,
+	0x158: 0x21, 0x159: 0x53, 0x15a: 0x54, 0x15b: 0x55, 0x15c: 0x56, 0x15d: 0x57, 0x15e: 0x58, 0x15f: 0x59,
+	0x160: 0x5a, 0x161: 0x5b, 0x162: 0x5c, 0x163: 0x5d, 0x164: 0x5e, 0x165: 0x5f, 0x166: 0x60, 0x167: 0x61,
+	0x168: 0x62, 0x169: 0x63, 0x16a: 0x64, 0x16c: 0x65, 0x16d: 0x66, 0x16e: 0x67, 0x16f: 0x68,
+	0x170: 0x69, 0x171: 0x6a, 0x173: 0x6b, 0x174: 0x6c, 0x175: 0x6d, 0x176: 0x6e, 0x177: 0x6f,
+	0x178: 0x70, 0x179: 0x70, 0x17a: 0x71, 0x17b: 0x70, 0x17c: 0x72, 0x17d: 0x08, 0x17e: 0x09, 0x17f: 0x0a,
 	// Block 0x6, offset 0x180
-	0x180: 0x74, 0x181: 0x75, 0x182: 0x76, 0x183: 0x77, 0x184: 0x0c, 0x185: 0x78, 0x186: 0x79,
-	0x192: 0x7a, 0x193: 0x0d,
-	0x1b0: 0x7b, 0x1b1: 0x0e, 0x1b2: 0x71, 0x1b3: 0x7c, 0x1b4: 0x0f, 0x1b5: 0x7d, 0x1b6: 0x7e, 0x1b7: 0x7f,
+	0x180: 0x73, 0x181: 0x74, 0x182: 0x75, 0x183: 0x76, 0x184: 0x0b, 0x185: 0x77, 0x186: 0x78,
+	0x192: 0x79, 0x193: 0x0c,
+	0x1b0: 0x7a, 0x1b1: 0x0d, 0x1b2: 0x70, 0x1b3: 0x7b, 0x1b4: 0x7c, 0x1b5: 0x7d, 0x1b6: 0x7e, 0x1b7: 0x7f,
 	0x1b8: 0x80,
 	// Block 0x7, offset 0x1c0
-	0x1c0: 0x81, 0x1c2: 0x82, 0x1c3: 0x83, 0x1c4: 0x84, 0x1c5: 0x23, 0x1c6: 0x85,
+	0x1c0: 0x81, 0x1c2: 0x82, 0x1c3: 0x83, 0x1c4: 0x84, 0x1c5: 0x21, 0x1c6: 0x85,
 	// Block 0x8, offset 0x200
-	0x200: 0x86, 0x201: 0x23, 0x202: 0x23, 0x203: 0x23, 0x204: 0x23, 0x205: 0x23, 0x206: 0x23, 0x207: 0x23,
-	0x208: 0x23, 0x209: 0x23, 0x20a: 0x23, 0x20b: 0x23, 0x20c: 0x23, 0x20d: 0x23, 0x20e: 0x23, 0x20f: 0x23,
-	0x210: 0x23, 0x211: 0x23, 0x212: 0x87, 0x213: 0x88, 0x214: 0x23, 0x215: 0x23, 0x216: 0x23, 0x217: 0x23,
+	0x200: 0x86, 0x201: 0x21, 0x202: 0x21, 0x203: 0x21, 0x204: 0x21, 0x205: 0x21, 0x206: 0x21, 0x207: 0x21,
+	0x208: 0x21, 0x209: 0x21, 0x20a: 0x21, 0x20b: 0x21, 0x20c: 0x21, 0x20d: 0x21, 0x20e: 0x21, 0x20f: 0x21,
+	0x210: 0x21, 0x211: 0x21, 0x212: 0x87, 0x213: 0x88, 0x214: 0x21, 0x215: 0x21, 0x216: 0x21, 0x217: 0x21,
 	0x218: 0x89, 0x219: 0x8a, 0x21a: 0x8b, 0x21b: 0x8c, 0x21c: 0x8d, 0x21d: 0x8e, 0x21e: 0x8f, 0x21f: 0x90,
-	0x220: 0x91, 0x221: 0x92, 0x222: 0x23, 0x223: 0x93, 0x224: 0x94, 0x225: 0x95, 0x226: 0x96, 0x227: 0x97,
+	0x220: 0x91, 0x221: 0x92, 0x222: 0x21, 0x223: 0x93, 0x224: 0x94, 0x225: 0x95, 0x226: 0x96, 0x227: 0x97,
 	0x228: 0x98, 0x229: 0x99, 0x22a: 0x9a, 0x22b: 0x9b, 0x22c: 0x9c, 0x22d: 0x9d, 0x22f: 0x9e,
-	0x230: 0x23, 0x231: 0x23, 0x232: 0x23, 0x233: 0x23, 0x234: 0x23, 0x235: 0x23, 0x236: 0x23, 0x237: 0x23,
-	0x238: 0x23, 0x239: 0x23, 0x23a: 0x23, 0x23b: 0x23, 0x23c: 0x23, 0x23d: 0x23, 0x23e: 0x23, 0x23f: 0x23,
+	0x230: 0x21, 0x231: 0x21, 0x232: 0x21, 0x233: 0x21, 0x234: 0x21, 0x235: 0x21, 0x236: 0x21, 0x237: 0x21,
+	0x238: 0x21, 0x239: 0x21, 0x23a: 0x21, 0x23b: 0x21, 0x23c: 0x21, 0x23d: 0x21, 0x23e: 0x21, 0x23f: 0x21,
 	// Block 0x9, offset 0x240
-	0x240: 0x23, 0x241: 0x23, 0x242: 0x23, 0x243: 0x23, 0x244: 0x23, 0x245: 0x23, 0x246: 0x23, 0x247: 0x23,
-	0x248: 0x23, 0x249: 0x23, 0x24a: 0x23, 0x24b: 0x23, 0x24c: 0x23, 0x24d: 0x23, 0x24e: 0x23, 0x24f: 0x23,
-	0x250: 0x23, 0x251: 0x23, 0x252: 0x23, 0x253: 0x23, 0x254: 0x23, 0x255: 0x23, 0x256: 0x23, 0x257: 0x23,
-	0x258: 0x23, 0x259: 0x23, 0x25a: 0x23, 0x25b: 0x23, 0x25c: 0x23, 0x25d: 0x23, 0x25e: 0x23, 0x25f: 0x23,
-	0x260: 0x23, 0x261: 0x23, 0x262: 0x23, 0x263: 0x23, 0x264: 0x23, 0x265: 0x23, 0x266: 0x23, 0x267: 0x23,
-	0x268: 0x23, 0x269: 0x23, 0x26a: 0x23, 0x26b: 0x23, 0x26c: 0x23, 0x26d: 0x23, 0x26e: 0x23, 0x26f: 0x23,
-	0x270: 0x23, 0x271: 0x23, 0x272: 0x23, 0x273: 0x23, 0x274: 0x23, 0x275: 0x23, 0x276: 0x23, 0x277: 0x23,
-	0x278: 0x23, 0x279: 0x23, 0x27a: 0x23, 0x27b: 0x23, 0x27c: 0x23, 0x27d: 0x23, 0x27e: 0x23, 0x27f: 0x23,
+	0x240: 0x21, 0x241: 0x21, 0x242: 0x21, 0x243: 0x21, 0x244: 0x21, 0x245: 0x21, 0x246: 0x21, 0x247: 0x21,
+	0x248: 0x21, 0x249: 0x21, 0x24a: 0x21, 0x24b: 0x21, 0x24c: 0x21, 0x24d: 0x21, 0x24e: 0x21, 0x24f: 0x21,
+	0x250: 0x21, 0x251: 0x21, 0x252: 0x21, 0x253: 0x21, 0x254: 0x21, 0x255: 0x21, 0x256: 0x21, 0x257: 0x21,
+	0x258: 0x21, 0x259: 0x21, 0x25a: 0x21, 0x25b: 0x21, 0x25c: 0x21, 0x25d: 0x21, 0x25e: 0x21, 0x25f: 0x21,
+	0x260: 0x21, 0x261: 0x21, 0x262: 0x21, 0x263: 0x21, 0x264: 0x21, 0x265: 0x21, 0x266: 0x21, 0x267: 0x21,
+	0x268: 0x21, 0x269: 0x21, 0x26a: 0x21, 0x26b: 0x21, 0x26c: 0x21, 0x26d: 0x21, 0x26e: 0x21, 0x26f: 0x21,
+	0x270: 0x21, 0x271: 0x21, 0x272: 0x21, 0x273: 0x21, 0x274: 0x21, 0x275: 0x21, 0x276: 0x21, 0x277: 0x21,
+	0x278: 0x21, 0x279: 0x21, 0x27a: 0x21, 0x27b: 0x21, 0x27c: 0x21, 0x27d: 0x21, 0x27e: 0x21, 0x27f: 0x21,
 	// Block 0xa, offset 0x280
-	0x280: 0x23, 0x281: 0x23, 0x282: 0x23, 0x283: 0x23, 0x284: 0x23, 0x285: 0x23, 0x286: 0x23, 0x287: 0x23,
-	0x288: 0x23, 0x289: 0x23, 0x28a: 0x23, 0x28b: 0x23, 0x28c: 0x23, 0x28d: 0x23, 0x28e: 0x23, 0x28f: 0x23,
-	0x290: 0x23, 0x291: 0x23, 0x292: 0x23, 0x293: 0x23, 0x294: 0x23, 0x295: 0x23, 0x296: 0x23, 0x297: 0x23,
-	0x298: 0x23, 0x299: 0x23, 0x29a: 0x23, 0x29b: 0x23, 0x29c: 0x23, 0x29d: 0x23, 0x29e: 0x9f, 0x29f: 0xa0,
+	0x280: 0x21, 0x281: 0x21, 0x282: 0x21, 0x283: 0x21, 0x284: 0x21, 0x285: 0x21, 0x286: 0x21, 0x287: 0x21,
+	0x288: 0x21, 0x289: 0x21, 0x28a: 0x21, 0x28b: 0x21, 0x28c: 0x21, 0x28d: 0x21, 0x28e: 0x21, 0x28f: 0x21,
+	0x290: 0x21, 0x291: 0x21, 0x292: 0x21, 0x293: 0x21, 0x294: 0x21, 0x295: 0x21, 0x296: 0x21, 0x297: 0x21,
+	0x298: 0x21, 0x299: 0x21, 0x29a: 0x21, 0x29b: 0x21, 0x29c: 0x21, 0x29d: 0x21, 0x29e: 0x9f, 0x29f: 0xa0,
 	// Block 0xb, offset 0x2c0
-	0x2ec: 0x10, 0x2ed: 0xa1, 0x2ee: 0xa2, 0x2ef: 0xa3,
-	0x2f0: 0x23, 0x2f1: 0x23, 0x2f2: 0x23, 0x2f3: 0x23, 0x2f4: 0xa4, 0x2f5: 0xa5, 0x2f6: 0xa6, 0x2f7: 0xa7,
-	0x2f8: 0xa8, 0x2f9: 0xa9, 0x2fa: 0x23, 0x2fb: 0xaa, 0x2fc: 0xab, 0x2fd: 0xac, 0x2fe: 0xad, 0x2ff: 0xae,
+	0x2ec: 0x0e, 0x2ed: 0xa1, 0x2ee: 0xa2, 0x2ef: 0xa3,
+	0x2f0: 0x21, 0x2f1: 0x21, 0x2f2: 0x21, 0x2f3: 0x21, 0x2f4: 0xa4, 0x2f5: 0xa5, 0x2f6: 0xa6, 0x2f7: 0xa7,
+	0x2f8: 0xa8, 0x2f9: 0xa9, 0x2fa: 0x21, 0x2fb: 0xaa, 0x2fc: 0xab, 0x2fd: 0xac, 0x2fe: 0xad, 0x2ff: 0xae,
 	// Block 0xc, offset 0x300
-	0x300: 0xaf, 0x301: 0xb0, 0x302: 0x23, 0x303: 0xb1, 0x305: 0x52, 0x307: 0xb2,
+	0x300: 0xaf, 0x301: 0xb0, 0x302: 0x21, 0x303: 0xb1, 0x305: 0x51, 0x307: 0xb2,
 	0x30a: 0xb3, 0x30b: 0xb4, 0x30c: 0xb5, 0x30d: 0xb6, 0x30e: 0xb7, 0x30f: 0xb8,
 	0x310: 0xb9, 0x311: 0xba, 0x312: 0xbb, 0x314: 0xbc, 0x315: 0xbd,
-	0x318: 0x23, 0x319: 0x23, 0x31a: 0x23, 0x31b: 0x23, 0x31c: 0xbe, 0x31d: 0xbf,
+	0x318: 0x21, 0x319: 0x21, 0x31a: 0x21, 0x31b: 0x21, 0x31c: 0xbe, 0x31d: 0xbf,
 	0x320: 0xc0, 0x321: 0xc1, 0x322: 0xc2, 0x324: 0xc3, 0x326: 0xc4,
-	0x328: 0xc5, 0x329: 0xc6, 0x32a: 0xc7, 0x32b: 0xc8, 0x32c: 0x5e, 0x32d: 0xc9, 0x32e: 0xca,
-	0x330: 0x23, 0x331: 0xcb,
+	0x328: 0xc5, 0x329: 0xc6, 0x32a: 0xc7, 0x32b: 0xc8, 0x32c: 0x5d, 0x32d: 0xc9, 0x32e: 0xca,
+	0x330: 0x21, 0x331: 0xcb,
 	// Block 0xd, offset 0x340
 	0x340: 0xcc, 0x341: 0xcd, 0x342: 0xce, 0x343: 0xcf, 0x344: 0xd0, 0x345: 0xd1, 0x346: 0xd2, 0x347: 0xd3,
-	0x348: 0xd4, 0x34a: 0x61, 0x34b: 0xd5, 0x34c: 0xd6, 0x34d: 0xd7,
+	0x348: 0xd4, 0x34a: 0x60, 0x34b: 0xd5, 0x34c: 0xd6, 0x34d: 0xd7,
 	0x352: 0xd8, 0x353: 0xd9, 0x356: 0xda, 0x357: 0xdb,
 	0x358: 0xdc, 0x359: 0xdd, 0x35a: 0xde, 0x35b: 0xdf,
 	0x362: 0xe0, 0x363: 0xe1,
 	0x36b: 0xe2,
 	// Block 0xe, offset 0x380
-	0x380: 0x23, 0x381: 0x23, 0x382: 0x23, 0x383: 0x23, 0x384: 0x23, 0x385: 0x23, 0x386: 0x23, 0x387: 0x23,
-	0x388: 0x23, 0x389: 0x23, 0x38a: 0x23, 0x38b: 0x23, 0x38c: 0x23, 0x38d: 0x23, 0x38e: 0xe3,
-	0x390: 0x23, 0x391: 0xe4,
+	0x380: 0x21, 0x381: 0x21, 0x382: 0x21, 0x383: 0x21, 0x384: 0x21, 0x385: 0x21, 0x386: 0x21, 0x387: 0x21,
+	0x388: 0x21, 0x389: 0x21, 0x38a: 0x21, 0x38b: 0x21, 0x38c: 0x21, 0x38d: 0x21, 0x38e: 0xe3,
+	0x390: 0x21, 0x391: 0xe4,
 	// Block 0xf, offset 0x3c0
-	0x3c0: 0x23, 0x3c1: 0x23, 0x3c2: 0x23, 0x3c3: 0x23, 0x3c4: 0x23, 0x3c5: 0x23, 0x3c6: 0x23, 0x3c7: 0x23,
-	0x3c8: 0x23, 0x3c9: 0x23, 0x3ca: 0x23, 0x3cb: 0x23, 0x3cc: 0x23, 0x3cd: 0x23, 0x3ce: 0x23, 0x3cf: 0x23,
+	0x3c0: 0x21, 0x3c1: 0x21, 0x3c2: 0x21, 0x3c3: 0x21, 0x3c4: 0x21, 0x3c5: 0x21, 0x3c6: 0x21, 0x3c7: 0x21,
+	0x3c8: 0x21, 0x3c9: 0x21, 0x3ca: 0x21, 0x3cb: 0x21, 0x3cc: 0x21, 0x3cd: 0x21, 0x3ce: 0x21, 0x3cf: 0x21,
 	0x3d0: 0xe4,
 	// Block 0x10, offset 0x400
-	0x420: 0x23, 0x421: 0x23, 0x422: 0x23, 0x423: 0x23, 0x424: 0x23, 0x425: 0x23, 0x426: 0x23, 0x427: 0x23,
+	0x420: 0x21, 0x421: 0x21, 0x422: 0x21, 0x423: 0x21, 0x424: 0x21, 0x425: 0x21, 0x426: 0x21, 0x427: 0x21,
 	0x428: 0xe2, 0x429: 0xe5, 0x42b: 0xe6, 0x42c: 0xe7, 0x42d: 0xe8, 0x42e: 0xe9,
-	0x43c: 0x23, 0x43d: 0xea, 0x43e: 0xeb,
+	0x43c: 0x21, 0x43d: 0xea, 0x43e: 0xeb,
 	// Block 0x11, offset 0x440
-	0x470: 0x23, 0x471: 0xec, 0x472: 0xed,
+	0x470: 0x21, 0x471: 0xec, 0x472: 0xed,
 	// Block 0x12, offset 0x480
 	0x485: 0xee, 0x486: 0xef,
 	0x489: 0xf0,
 	0x490: 0xf1, 0x491: 0xf2, 0x492: 0xf3, 0x493: 0xf4, 0x494: 0xf5, 0x495: 0xf6, 0x496: 0xf7, 0x497: 0xf8,
 	0x498: 0xf9, 0x499: 0xfa, 0x49a: 0xfb, 0x49b: 0xfc, 0x49c: 0xfd, 0x49d: 0xfe, 0x49e: 0xff, 0x49f: 0x100,
 	// Block 0x13, offset 0x4c0
-	0x4e0: 0x23, 0x4e1: 0x23, 0x4e2: 0x23, 0x4e3: 0x101,
-	0x4f8: 0x102, 0x4f9: 0x11, 0x4fa: 0x103,
+	0x4e0: 0x21, 0x4e1: 0x21, 0x4e2: 0x21, 0x4e3: 0x101,
+	0x4f8: 0x102, 0x4f9: 0x0f, 0x4fa: 0x103,
 	// Block 0x14, offset 0x500
 	0x504: 0x104, 0x505: 0x105, 0x506: 0x106,
 	// Block 0x15, offset 0x540
@@ -522,60 +496,60 @@
 	0x5e0: 0x14,
 }
 
-// sparseOffsets: 249 entries, 498 bytes
-var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x3a, 0x3d, 0x41, 0x44, 0x48, 0x52, 0x54, 0x59, 0x69, 0x70, 0x75, 0x83, 0x84, 0x92, 0xa1, 0xab, 0xae, 0xb4, 0xbc, 0xbe, 0xbf, 0xca, 0xd0, 0xde, 0xe9, 0xf4, 0xff, 0x10b, 0x115, 0x11f, 0x12a, 0x136, 0x142, 0x14a, 0x152, 0x15c, 0x166, 0x172, 0x178, 0x183, 0x188, 0x190, 0x193, 0x198, 0x19c, 0x1a0, 0x1a7, 0x1b0, 0x1b8, 0x1b9, 0x1c2, 0x1c9, 0x1d4, 0x1da, 0x1df, 0x1e3, 0x1e6, 0x1e8, 0x1ea, 0x1eb, 0x1ec, 0x1ee, 0x1f0, 0x1f2, 0x1f9, 0x1fe, 0x202, 0x20b, 0x20e, 0x211, 0x215, 0x216, 0x221, 0x222, 0x223, 0x226, 0x22b, 0x238, 0x240, 0x248, 0x251, 0x25a, 0x263, 0x268, 0x26b, 0x278, 0x27a, 0x281, 0x283, 0x28d, 0x28e, 0x299, 0x2a1, 0x2a8, 0x2ae, 0x2af, 0x2bd, 0x2c2, 0x2c5, 0x2ca, 0x2ce, 0x2d4, 0x2d7, 0x2dc, 0x2e1, 0x2e2, 0x2e8, 0x2ea, 0x2eb, 0x2ed, 0x2ef, 0x2f2, 0x2f3, 0x2f5, 0x2f8, 0x2fe, 0x302, 0x304, 0x30a, 0x311, 0x320, 0x324, 0x32d, 0x32e, 0x334, 0x338, 0x33d, 0x345, 0x34b, 0x351, 0x35b, 0x360, 0x369, 0x36f, 0x373, 0x37b, 0x37d, 0x37f, 0x382, 0x384, 0x386, 0x387, 0x388, 0x38a, 0x38c, 0x391, 0x396, 0x398, 0x39e, 0x3a1, 0x3a3, 0x3a9, 0x3ae, 0x3b0, 0x3b1, 0x3b2, 0x3b4, 0x3b6, 0x3b8, 0x3bb, 0x3bd, 0x3c0, 0x3c8, 0x3cb, 0x3cd, 0x3cf, 0x3d0, 0x3d1, 0x3d3, 0x3d9, 0x3db, 0x3dc, 0x3de, 0x3e0, 0x3ed, 0x3ee, 0x3ef, 0x3f3, 0x3f5, 0x3f6, 0x3f7, 0x3fb, 0x3ff, 0x405, 0x407, 0x40e, 0x411, 0x415, 0x418, 0x420, 0x426, 0x430, 0x439, 0x43f, 0x445, 0x44b, 0x44c, 0x452, 0x455, 0x45d, 0x45e, 0x45f, 0x462, 0x463, 0x464, 0x465, 0x467, 0x469, 0x46b, 0x46f, 0x470, 0x472, 0x473, 0x475, 0x47a, 0x47f, 0x483, 0x484, 0x487, 0x48b, 0x496, 0x49a, 0x4a2, 0x4a7, 0x4ab, 0x4ae, 0x4b2, 0x4b5, 0x4b8, 0x4bd, 0x4c1, 0x4c5, 0x4c9, 0x4cd, 0x4cf, 0x4d8, 0x4dd, 0x4de, 0x4e1, 0x4e2, 0x4e4, 0x4e5, 0x4e6}
+// sparseOffsets: 251 entries, 502 bytes
+var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x3a, 0x3d, 0x41, 0x44, 0x48, 0x52, 0x54, 0x59, 0x69, 0x70, 0x75, 0x83, 0x84, 0x92, 0xa1, 0xab, 0xae, 0xb4, 0xbc, 0xbe, 0xbf, 0xca, 0xd0, 0xde, 0xe9, 0xf4, 0xff, 0x10b, 0x115, 0x11f, 0x12a, 0x136, 0x142, 0x14a, 0x152, 0x15c, 0x166, 0x172, 0x178, 0x183, 0x188, 0x190, 0x193, 0x198, 0x19c, 0x1a0, 0x1a7, 0x1b0, 0x1b8, 0x1b9, 0x1c2, 0x1c9, 0x1d1, 0x1d7, 0x1dd, 0x1e2, 0x1e6, 0x1e9, 0x1eb, 0x1ed, 0x1ee, 0x1ef, 0x1f1, 0x1f3, 0x1f5, 0x1fc, 0x201, 0x205, 0x20e, 0x211, 0x214, 0x218, 0x219, 0x224, 0x225, 0x226, 0x229, 0x22e, 0x23b, 0x243, 0x24b, 0x254, 0x25d, 0x266, 0x26b, 0x26e, 0x27b, 0x27d, 0x284, 0x286, 0x290, 0x291, 0x29c, 0x2a4, 0x2ab, 0x2b1, 0x2b2, 0x2c0, 0x2c5, 0x2c8, 0x2cd, 0x2d1, 0x2d7, 0x2dc, 0x2df, 0x2e4, 0x2e9, 0x2ea, 0x2f0, 0x2f2, 0x2f3, 0x2f5, 0x2f7, 0x2fa, 0x2fb, 0x2fd, 0x300, 0x306, 0x30a, 0x30c, 0x312, 0x319, 0x328, 0x32c, 0x335, 0x336, 0x33c, 0x340, 0x345, 0x34d, 0x353, 0x359, 0x363, 0x368, 0x371, 0x377, 0x37b, 0x383, 0x385, 0x387, 0x38a, 0x38c, 0x38e, 0x38f, 0x390, 0x392, 0x394, 0x399, 0x39e, 0x3a0, 0x3a6, 0x3a9, 0x3ab, 0x3b1, 0x3b6, 0x3b8, 0x3b9, 0x3ba, 0x3bc, 0x3be, 0x3c0, 0x3c3, 0x3c5, 0x3c8, 0x3d0, 0x3d3, 0x3d5, 0x3d7, 0x3d8, 0x3d9, 0x3db, 0x3e1, 0x3e3, 0x3e4, 0x3e6, 0x3e8, 0x3f5, 0x3f6, 0x3f7, 0x3fb, 0x3fd, 0x3fe, 0x3ff, 0x403, 0x407, 0x40d, 0x40f, 0x416, 0x419, 0x41d, 0x420, 0x428, 0x42e, 0x438, 0x441, 0x447, 0x44d, 0x453, 0x454, 0x45a, 0x45d, 0x465, 0x466, 0x467, 0x46a, 0x46b, 0x46c, 0x46d, 0x46f, 0x471, 0x473, 0x477, 0x478, 0x47a, 0x47b, 0x47d, 0x482, 0x487, 0x48b, 0x48c, 0x48f, 0x493, 0x49e, 0x4a2, 0x4aa, 0x4af, 0x4b3, 0x4b6, 0x4ba, 0x4bd, 0x4c0, 0x4c5, 0x4c9, 0x4cd, 0x4d1, 0x4d5, 0x4d7, 0x4e0, 0x4e5, 0x4e6, 0x4e9, 0x4ea, 0x4ec, 0x4ed, 0x4ee}
 
-// sparseValues: 1254 entries, 5016 bytes
-var sparseValues = [1254]valueRange{
+// sparseValues: 1262 entries, 5048 bytes
+var sparseValues = [1262]valueRange{
 	// Block 0x0, offset 0x0
 	{value: 0x0004, lo: 0xa8, hi: 0xa8},
 	{value: 0x0012, lo: 0xaa, hi: 0xaa},
 	{value: 0x0014, lo: 0xad, hi: 0xad},
 	{value: 0x0004, lo: 0xaf, hi: 0xaf},
 	{value: 0x0004, lo: 0xb4, hi: 0xb4},
-	{value: 0xca52, lo: 0xb5, hi: 0xb5},
+	{value: 0x0152, lo: 0xb5, hi: 0xb5},
 	{value: 0x0014, lo: 0xb7, hi: 0xb7},
 	{value: 0x0004, lo: 0xb8, hi: 0xb8},
 	{value: 0x0012, lo: 0xba, hi: 0xba},
 	// Block 0x1, offset 0x9
-	{value: 0x0813, lo: 0x80, hi: 0x96},
-	{value: 0x0813, lo: 0x98, hi: 0x9e},
+	{value: 0x1013, lo: 0x80, hi: 0x96},
+	{value: 0x1013, lo: 0x98, hi: 0x9e},
 	{value: 0x003a, lo: 0x9f, hi: 0x9f},
-	{value: 0x0812, lo: 0xa0, hi: 0xb6},
-	{value: 0x0812, lo: 0xb8, hi: 0xbe},
-	{value: 0x61d2, lo: 0xbf, hi: 0xbf},
+	{value: 0x1012, lo: 0xa0, hi: 0xb6},
+	{value: 0x1012, lo: 0xb8, hi: 0xbe},
+	{value: 0x02d2, lo: 0xbf, hi: 0xbf},
 	// Block 0x2, offset 0xf
-	{value: 0x0057, lo: 0x80, hi: 0xaf},
+	{value: 0x0097, lo: 0x80, hi: 0xaf},
 	{value: 0x00fb, lo: 0xb0, hi: 0xb0},
 	{value: 0x019a, lo: 0xb1, hi: 0xb1},
-	{value: 0x0057, lo: 0xb2, hi: 0xb7},
+	{value: 0x0097, lo: 0xb2, hi: 0xb7},
 	{value: 0x0012, lo: 0xb8, hi: 0xb8},
-	{value: 0x00d6, lo: 0xb9, hi: 0xba},
-	{value: 0x01d6, lo: 0xbb, hi: 0xbc},
-	{value: 0x00d6, lo: 0xbd, hi: 0xbe},
-	{value: 0x1fd3, lo: 0xbf, hi: 0xbf},
+	{value: 0x0196, lo: 0xb9, hi: 0xba},
+	{value: 0x0396, lo: 0xbb, hi: 0xbc},
+	{value: 0x0196, lo: 0xbd, hi: 0xbe},
+	{value: 0x0453, lo: 0xbf, hi: 0xbf},
 	// Block 0x3, offset 0x18
-	{value: 0x1fd2, lo: 0x80, hi: 0x80},
-	{value: 0x00d6, lo: 0x81, hi: 0x82},
-	{value: 0x01d6, lo: 0x83, hi: 0x84},
-	{value: 0x00d6, lo: 0x85, hi: 0x86},
-	{value: 0x03d6, lo: 0x87, hi: 0x88},
+	{value: 0x0452, lo: 0x80, hi: 0x80},
+	{value: 0x0196, lo: 0x81, hi: 0x82},
+	{value: 0x0396, lo: 0x83, hi: 0x84},
+	{value: 0x0196, lo: 0x85, hi: 0x86},
+	{value: 0x0796, lo: 0x87, hi: 0x88},
 	{value: 0x01fa, lo: 0x89, hi: 0x89},
-	{value: 0x0057, lo: 0x8a, hi: 0xb7},
-	{value: 0x61d3, lo: 0xb8, hi: 0xb8},
-	{value: 0x00d6, lo: 0xb9, hi: 0xba},
-	{value: 0x01d6, lo: 0xbb, hi: 0xbc},
-	{value: 0x00d6, lo: 0xbd, hi: 0xbe},
+	{value: 0x0097, lo: 0x8a, hi: 0xb7},
+	{value: 0x02d3, lo: 0xb8, hi: 0xb8},
+	{value: 0x0196, lo: 0xb9, hi: 0xba},
+	{value: 0x0396, lo: 0xbb, hi: 0xbc},
+	{value: 0x0196, lo: 0xbd, hi: 0xbe},
 	{value: 0x029a, lo: 0xbf, hi: 0xbf},
 	// Block 0x4, offset 0x24
-	{value: 0x0057, lo: 0x80, hi: 0x9f},
-	{value: 0xef93, lo: 0xa0, hi: 0xa0},
+	{value: 0x0097, lo: 0x80, hi: 0x9f},
+	{value: 0x1953, lo: 0xa0, hi: 0xa0},
 	{value: 0x0012, lo: 0xa1, hi: 0xa1},
-	{value: 0x0057, lo: 0xa2, hi: 0xb3},
+	{value: 0x0097, lo: 0xa2, hi: 0xb3},
 	{value: 0x0012, lo: 0xb4, hi: 0xb9},
 	{value: 0x0c9b, lo: 0xba, hi: 0xba},
-	{value: 0x01d6, lo: 0xbb, hi: 0xbc},
-	{value: 0xe9d3, lo: 0xbd, hi: 0xbd},
+	{value: 0x0396, lo: 0xbb, hi: 0xbc},
+	{value: 0x1653, lo: 0xbd, hi: 0xbd},
 	{value: 0x0d3b, lo: 0xbe, hi: 0xbe},
 	{value: 0x0dda, lo: 0xbf, hi: 0xbf},
 	// Block 0x5, offset 0x2e
@@ -596,41 +570,41 @@
 	{value: 0x0034, lo: 0x95, hi: 0xbc},
 	{value: 0x0024, lo: 0xbd, hi: 0xbf},
 	// Block 0x7, offset 0x3d
-	{value: 0x1413, lo: 0x80, hi: 0x8f},
-	{value: 0x0813, lo: 0x90, hi: 0x9f},
-	{value: 0x1813, lo: 0xa0, hi: 0xaf},
-	{value: 0x0812, lo: 0xb0, hi: 0xbf},
+	{value: 0x3d53, lo: 0x80, hi: 0x8f},
+	{value: 0x1013, lo: 0x90, hi: 0x9f},
+	{value: 0x32d3, lo: 0xa0, hi: 0xaf},
+	{value: 0x1012, lo: 0xb0, hi: 0xbf},
 	// Block 0x8, offset 0x41
-	{value: 0x1812, lo: 0x80, hi: 0x8f},
-	{value: 0x1412, lo: 0x90, hi: 0x9f},
-	{value: 0x0057, lo: 0xa0, hi: 0xbf},
+	{value: 0x32d2, lo: 0x80, hi: 0x8f},
+	{value: 0x3d52, lo: 0x90, hi: 0x9f},
+	{value: 0x0097, lo: 0xa0, hi: 0xbf},
 	// Block 0x9, offset 0x44
-	{value: 0x0057, lo: 0x80, hi: 0x81},
+	{value: 0x0097, lo: 0x80, hi: 0x81},
 	{value: 0x0024, lo: 0x83, hi: 0x87},
 	{value: 0x0014, lo: 0x88, hi: 0x89},
-	{value: 0x0057, lo: 0x8a, hi: 0xbf},
+	{value: 0x0097, lo: 0x8a, hi: 0xbf},
 	// Block 0xa, offset 0x48
-	{value: 0x03d3, lo: 0x80, hi: 0x80},
-	{value: 0x00d6, lo: 0x81, hi: 0x82},
-	{value: 0x01d6, lo: 0x83, hi: 0x84},
-	{value: 0x00d6, lo: 0x85, hi: 0x86},
-	{value: 0x03d6, lo: 0x87, hi: 0x88},
-	{value: 0x00d6, lo: 0x89, hi: 0x8a},
-	{value: 0x01d6, lo: 0x8b, hi: 0x8c},
-	{value: 0x00d6, lo: 0x8d, hi: 0x8e},
-	{value: 0x03d2, lo: 0x8f, hi: 0x8f},
-	{value: 0x0057, lo: 0x90, hi: 0xbf},
+	{value: 0x0793, lo: 0x80, hi: 0x80},
+	{value: 0x0196, lo: 0x81, hi: 0x82},
+	{value: 0x0396, lo: 0x83, hi: 0x84},
+	{value: 0x0196, lo: 0x85, hi: 0x86},
+	{value: 0x0796, lo: 0x87, hi: 0x88},
+	{value: 0x0196, lo: 0x89, hi: 0x8a},
+	{value: 0x0396, lo: 0x8b, hi: 0x8c},
+	{value: 0x0196, lo: 0x8d, hi: 0x8e},
+	{value: 0x0792, lo: 0x8f, hi: 0x8f},
+	{value: 0x0097, lo: 0x90, hi: 0xbf},
 	// Block 0xb, offset 0x52
-	{value: 0x0057, lo: 0x80, hi: 0xaf},
-	{value: 0x1413, lo: 0xb1, hi: 0xbf},
+	{value: 0x0097, lo: 0x80, hi: 0xaf},
+	{value: 0x3d53, lo: 0xb1, hi: 0xbf},
 	// Block 0xc, offset 0x54
-	{value: 0x0c13, lo: 0x80, hi: 0x8f},
-	{value: 0x3413, lo: 0x90, hi: 0x96},
+	{value: 0x1813, lo: 0x80, hi: 0x8f},
+	{value: 0x4053, lo: 0x90, hi: 0x96},
 	{value: 0x0014, lo: 0x99, hi: 0x99},
-	{value: 0x1412, lo: 0xa1, hi: 0xaf},
-	{value: 0x0c12, lo: 0xb0, hi: 0xbf},
+	{value: 0x3d52, lo: 0xa1, hi: 0xaf},
+	{value: 0x1812, lo: 0xb0, hi: 0xbf},
 	// Block 0xd, offset 0x59
-	{value: 0x3412, lo: 0x80, hi: 0x86},
+	{value: 0x4052, lo: 0x80, hi: 0x86},
 	{value: 0x193a, lo: 0x87, hi: 0x87},
 	{value: 0x0034, lo: 0x91, hi: 0x91},
 	{value: 0x0024, lo: 0x92, hi: 0x95},
@@ -1042,59 +1016,63 @@
 	{value: 0x0010, lo: 0xa7, hi: 0xad},
 	{value: 0x0014, lo: 0xb1, hi: 0xb4},
 	// Block 0x39, offset 0x1c9
-	{value: 0x2e7b, lo: 0x80, hi: 0x80},
-	{value: 0x2f1b, lo: 0x81, hi: 0x81},
-	{value: 0x2fbb, lo: 0x82, hi: 0x82},
-	{value: 0x305b, lo: 0x83, hi: 0x83},
-	{value: 0x30fb, lo: 0x84, hi: 0x84},
-	{value: 0x319b, lo: 0x85, hi: 0x85},
-	{value: 0x323b, lo: 0x87, hi: 0x87},
-	{value: 0x32db, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x4253, lo: 0xa0, hi: 0xbf},
+	// Block 0x3a, offset 0x1d1
+	{value: 0x4453, lo: 0x80, hi: 0x85},
+	{value: 0x4453, lo: 0x87, hi: 0x87},
+	{value: 0x4453, lo: 0x8d, hi: 0x8d},
 	{value: 0x0010, lo: 0x90, hi: 0xba},
 	{value: 0x0014, lo: 0xbc, hi: 0xbc},
 	{value: 0x0010, lo: 0xbd, hi: 0xbf},
-	// Block 0x3a, offset 0x1d4
+	// Block 0x3b, offset 0x1d7
 	{value: 0x0010, lo: 0x80, hi: 0x88},
 	{value: 0x0010, lo: 0x8a, hi: 0x8d},
 	{value: 0x0010, lo: 0x90, hi: 0x96},
 	{value: 0x0010, lo: 0x98, hi: 0x98},
 	{value: 0x0010, lo: 0x9a, hi: 0x9d},
 	{value: 0x0010, lo: 0xa0, hi: 0xbf},
-	// Block 0x3b, offset 0x1da
+	// Block 0x3c, offset 0x1dd
 	{value: 0x0010, lo: 0x80, hi: 0x88},
 	{value: 0x0010, lo: 0x8a, hi: 0x8d},
 	{value: 0x0010, lo: 0x90, hi: 0xb0},
 	{value: 0x0010, lo: 0xb2, hi: 0xb5},
 	{value: 0x0010, lo: 0xb8, hi: 0xbe},
-	// Block 0x3c, offset 0x1df
+	// Block 0x3d, offset 0x1e2
 	{value: 0x0010, lo: 0x80, hi: 0x80},
 	{value: 0x0010, lo: 0x82, hi: 0x85},
 	{value: 0x0010, lo: 0x88, hi: 0x96},
 	{value: 0x0010, lo: 0x98, hi: 0xbf},
-	// Block 0x3d, offset 0x1e3
+	// Block 0x3e, offset 0x1e6
 	{value: 0x0010, lo: 0x80, hi: 0x90},
 	{value: 0x0010, lo: 0x92, hi: 0x95},
 	{value: 0x0010, lo: 0x98, hi: 0xbf},
-	// Block 0x3e, offset 0x1e6
+	// Block 0x3f, offset 0x1e9
 	{value: 0x0010, lo: 0x80, hi: 0x9a},
 	{value: 0x0024, lo: 0x9d, hi: 0x9f},
-	// Block 0x3f, offset 0x1e8
+	// Block 0x40, offset 0x1eb
 	{value: 0x0010, lo: 0x80, hi: 0x8f},
 	{value: 0x0010, lo: 0xa0, hi: 0xbf},
-	// Block 0x40, offset 0x1ea
+	// Block 0x41, offset 0x1ed
 	{value: 0x0010, lo: 0x80, hi: 0xb4},
-	// Block 0x41, offset 0x1eb
+	// Block 0x42, offset 0x1ee
 	{value: 0x0010, lo: 0x81, hi: 0xbf},
-	// Block 0x42, offset 0x1ec
+	// Block 0x43, offset 0x1ef
 	{value: 0x0010, lo: 0x80, hi: 0xac},
 	{value: 0x0010, lo: 0xaf, hi: 0xbf},
-	// Block 0x43, offset 0x1ee
+	// Block 0x44, offset 0x1f1
 	{value: 0x0010, lo: 0x81, hi: 0x9a},
 	{value: 0x0010, lo: 0xa0, hi: 0xbf},
-	// Block 0x44, offset 0x1f0
+	// Block 0x45, offset 0x1f3
 	{value: 0x0010, lo: 0x80, hi: 0xaa},
 	{value: 0x0010, lo: 0xae, hi: 0xb8},
-	// Block 0x45, offset 0x1f2
+	// Block 0x46, offset 0x1f5
 	{value: 0x0010, lo: 0x80, hi: 0x8c},
 	{value: 0x0010, lo: 0x8e, hi: 0x91},
 	{value: 0x0014, lo: 0x92, hi: 0x93},
@@ -1102,18 +1080,18 @@
 	{value: 0x0010, lo: 0xa0, hi: 0xb1},
 	{value: 0x0014, lo: 0xb2, hi: 0xb3},
 	{value: 0x0034, lo: 0xb4, hi: 0xb4},
-	// Block 0x46, offset 0x1f9
+	// Block 0x47, offset 0x1fc
 	{value: 0x0010, lo: 0x80, hi: 0x91},
 	{value: 0x0014, lo: 0x92, hi: 0x93},
 	{value: 0x0010, lo: 0xa0, hi: 0xac},
 	{value: 0x0010, lo: 0xae, hi: 0xb0},
 	{value: 0x0014, lo: 0xb2, hi: 0xb3},
-	// Block 0x47, offset 0x1fe
+	// Block 0x48, offset 0x201
 	{value: 0x0014, lo: 0xb4, hi: 0xb5},
 	{value: 0x0010, lo: 0xb6, hi: 0xb6},
 	{value: 0x0014, lo: 0xb7, hi: 0xbd},
 	{value: 0x0010, lo: 0xbe, hi: 0xbf},
-	// Block 0x48, offset 0x202
+	// Block 0x49, offset 0x205
 	{value: 0x0010, lo: 0x80, hi: 0x85},
 	{value: 0x0014, lo: 0x86, hi: 0x86},
 	{value: 0x0010, lo: 0x87, hi: 0x88},
@@ -1123,22 +1101,22 @@
 	{value: 0x0004, lo: 0x97, hi: 0x97},
 	{value: 0x0024, lo: 0x9d, hi: 0x9d},
 	{value: 0x0010, lo: 0xa0, hi: 0xa9},
-	// Block 0x49, offset 0x20b
+	// Block 0x4a, offset 0x20e
 	{value: 0x0014, lo: 0x8b, hi: 0x8e},
 	{value: 0x0010, lo: 0x90, hi: 0x99},
 	{value: 0x0010, lo: 0xa0, hi: 0xbf},
-	// Block 0x4a, offset 0x20e
+	// Block 0x4b, offset 0x211
 	{value: 0x0010, lo: 0x80, hi: 0x82},
 	{value: 0x0014, lo: 0x83, hi: 0x83},
 	{value: 0x0010, lo: 0x84, hi: 0xb7},
-	// Block 0x4b, offset 0x211
+	// Block 0x4c, offset 0x214
 	{value: 0x0010, lo: 0x80, hi: 0xa8},
 	{value: 0x0034, lo: 0xa9, hi: 0xa9},
 	{value: 0x0010, lo: 0xaa, hi: 0xaa},
 	{value: 0x0010, lo: 0xb0, hi: 0xbf},
-	// Block 0x4c, offset 0x215
+	// Block 0x4d, offset 0x218
 	{value: 0x0010, lo: 0x80, hi: 0xb5},
-	// Block 0x4d, offset 0x216
+	// Block 0x4e, offset 0x219
 	{value: 0x0010, lo: 0x80, hi: 0x9e},
 	{value: 0x0014, lo: 0xa0, hi: 0xa2},
 	{value: 0x0010, lo: 0xa3, hi: 0xa6},
@@ -1150,21 +1128,21 @@
 	{value: 0x0034, lo: 0xb9, hi: 0xb9},
 	{value: 0x0024, lo: 0xba, hi: 0xba},
 	{value: 0x0034, lo: 0xbb, hi: 0xbb},
-	// Block 0x4e, offset 0x221
+	// Block 0x4f, offset 0x224
 	{value: 0x0010, lo: 0x86, hi: 0x8f},
-	// Block 0x4f, offset 0x222
+	// Block 0x50, offset 0x225
 	{value: 0x0010, lo: 0xb0, hi: 0xbf},
-	// Block 0x50, offset 0x223
+	// Block 0x51, offset 0x226
 	{value: 0x0010, lo: 0x80, hi: 0x80},
 	{value: 0x0010, lo: 0x88, hi: 0x89},
 	{value: 0x0010, lo: 0x90, hi: 0x99},
-	// Block 0x51, offset 0x226
+	// Block 0x52, offset 0x229
 	{value: 0x0010, lo: 0x80, hi: 0x96},
 	{value: 0x0024, lo: 0x97, hi: 0x97},
 	{value: 0x0034, lo: 0x98, hi: 0x98},
 	{value: 0x0010, lo: 0x99, hi: 0x9a},
 	{value: 0x0014, lo: 0x9b, hi: 0x9b},
-	// Block 0x52, offset 0x22b
+	// Block 0x53, offset 0x22e
 	{value: 0x0010, lo: 0x95, hi: 0x95},
 	{value: 0x0014, lo: 0x96, hi: 0x96},
 	{value: 0x0010, lo: 0x97, hi: 0x97},
@@ -1178,7 +1156,7 @@
 	{value: 0x0014, lo: 0xb3, hi: 0xb4},
 	{value: 0x0024, lo: 0xb5, hi: 0xbc},
 	{value: 0x0034, lo: 0xbf, hi: 0xbf},
-	// Block 0x53, offset 0x238
+	// Block 0x54, offset 0x23b
 	{value: 0x0010, lo: 0x80, hi: 0x89},
 	{value: 0x0010, lo: 0x90, hi: 0x99},
 	{value: 0x0004, lo: 0xa7, hi: 0xa7},
@@ -1187,7 +1165,7 @@
 	{value: 0x0024, lo: 0xbb, hi: 0xbc},
 	{value: 0x0034, lo: 0xbd, hi: 0xbd},
 	{value: 0x0014, lo: 0xbe, hi: 0xbe},
-	// Block 0x54, offset 0x240
+	// Block 0x55, offset 0x243
 	{value: 0x0014, lo: 0x80, hi: 0x83},
 	{value: 0x0010, lo: 0x84, hi: 0xb3},
 	{value: 0x0034, lo: 0xb4, hi: 0xb4},
@@ -1196,7 +1174,7 @@
 	{value: 0x0010, lo: 0xbb, hi: 0xbb},
 	{value: 0x0014, lo: 0xbc, hi: 0xbc},
 	{value: 0x0010, lo: 0xbd, hi: 0xbf},
-	// Block 0x55, offset 0x248
+	// Block 0x56, offset 0x24b
 	{value: 0x0010, lo: 0x80, hi: 0x81},
 	{value: 0x0014, lo: 0x82, hi: 0x82},
 	{value: 0x0010, lo: 0x83, hi: 0x83},
@@ -1206,7 +1184,7 @@
 	{value: 0x0024, lo: 0xab, hi: 0xab},
 	{value: 0x0034, lo: 0xac, hi: 0xac},
 	{value: 0x0024, lo: 0xad, hi: 0xb3},
-	// Block 0x56, offset 0x251
+	// Block 0x57, offset 0x254
 	{value: 0x0014, lo: 0x80, hi: 0x81},
 	{value: 0x0010, lo: 0x82, hi: 0xa1},
 	{value: 0x0014, lo: 0xa2, hi: 0xa5},
@@ -1216,7 +1194,7 @@
 	{value: 0x0034, lo: 0xab, hi: 0xab},
 	{value: 0x0014, lo: 0xac, hi: 0xad},
 	{value: 0x0010, lo: 0xae, hi: 0xbf},
-	// Block 0x57, offset 0x25a
+	// Block 0x58, offset 0x25d
 	{value: 0x0010, lo: 0x80, hi: 0xa5},
 	{value: 0x0034, lo: 0xa6, hi: 0xa6},
 	{value: 0x0010, lo: 0xa7, hi: 0xa7},
@@ -1226,17 +1204,17 @@
 	{value: 0x0010, lo: 0xae, hi: 0xae},
 	{value: 0x0014, lo: 0xaf, hi: 0xb1},
 	{value: 0x0030, lo: 0xb2, hi: 0xb3},
-	// Block 0x58, offset 0x263
+	// Block 0x59, offset 0x266
 	{value: 0x0010, lo: 0x80, hi: 0xab},
 	{value: 0x0014, lo: 0xac, hi: 0xb3},
 	{value: 0x0010, lo: 0xb4, hi: 0xb5},
 	{value: 0x0014, lo: 0xb6, hi: 0xb6},
 	{value: 0x0034, lo: 0xb7, hi: 0xb7},
-	// Block 0x59, offset 0x268
+	// Block 0x5a, offset 0x26b
 	{value: 0x0010, lo: 0x80, hi: 0x89},
 	{value: 0x0010, lo: 0x8d, hi: 0xb7},
 	{value: 0x0014, lo: 0xb8, hi: 0xbd},
-	// Block 0x5a, offset 0x26b
+	// Block 0x5b, offset 0x26e
 	{value: 0x0024, lo: 0x90, hi: 0x92},
 	{value: 0x0034, lo: 0x94, hi: 0x99},
 	{value: 0x0024, lo: 0x9a, hi: 0x9b},
@@ -1250,21 +1228,21 @@
 	{value: 0x0024, lo: 0xb4, hi: 0xb4},
 	{value: 0x0010, lo: 0xb5, hi: 0xb6},
 	{value: 0x0024, lo: 0xb8, hi: 0xb9},
-	// Block 0x5b, offset 0x278
+	// Block 0x5c, offset 0x27b
 	{value: 0x0012, lo: 0x80, hi: 0xab},
 	{value: 0x0015, lo: 0xac, hi: 0xbf},
-	// Block 0x5c, offset 0x27a
+	// Block 0x5d, offset 0x27d
 	{value: 0x0015, lo: 0x80, hi: 0xaa},
 	{value: 0x0012, lo: 0xab, hi: 0xb7},
 	{value: 0x0015, lo: 0xb8, hi: 0xb8},
-	{value: 0x337a, lo: 0xb9, hi: 0xb9},
+	{value: 0x4652, lo: 0xb9, hi: 0xb9},
 	{value: 0x0012, lo: 0xba, hi: 0xbc},
-	{value: 0x341a, lo: 0xbd, hi: 0xbd},
+	{value: 0x4852, lo: 0xbd, hi: 0xbd},
 	{value: 0x0012, lo: 0xbe, hi: 0xbf},
-	// Block 0x5d, offset 0x281
+	// Block 0x5e, offset 0x284
 	{value: 0x0012, lo: 0x80, hi: 0x9a},
 	{value: 0x0015, lo: 0x9b, hi: 0xbf},
-	// Block 0x5e, offset 0x283
+	// Block 0x5f, offset 0x286
 	{value: 0x0024, lo: 0x80, hi: 0x81},
 	{value: 0x0034, lo: 0x82, hi: 0x82},
 	{value: 0x0024, lo: 0x83, hi: 0x89},
@@ -1275,30 +1253,30 @@
 	{value: 0x0034, lo: 0xbc, hi: 0xbd},
 	{value: 0x0024, lo: 0xbe, hi: 0xbe},
 	{value: 0x0034, lo: 0xbf, hi: 0xbf},
-	// Block 0x5f, offset 0x28d
-	{value: 0x0057, lo: 0x80, hi: 0xbf},
-	// Block 0x60, offset 0x28e
-	{value: 0x0057, lo: 0x80, hi: 0x95},
-	{value: 0x34ba, lo: 0x96, hi: 0x96},
-	{value: 0x355a, lo: 0x97, hi: 0x97},
-	{value: 0x35fa, lo: 0x98, hi: 0x98},
-	{value: 0x369a, lo: 0x99, hi: 0x99},
-	{value: 0x373a, lo: 0x9a, hi: 0x9a},
-	{value: 0x3ed2, lo: 0x9b, hi: 0x9b},
+	// Block 0x60, offset 0x290
+	{value: 0x0097, lo: 0x80, hi: 0xbf},
+	// Block 0x61, offset 0x291
+	{value: 0x0097, lo: 0x80, hi: 0x95},
+	{value: 0x1a7a, lo: 0x96, hi: 0x96},
+	{value: 0x1b1a, lo: 0x97, hi: 0x97},
+	{value: 0x1bba, lo: 0x98, hi: 0x98},
+	{value: 0x1c5a, lo: 0x99, hi: 0x99},
+	{value: 0x1cfa, lo: 0x9a, hi: 0x9a},
+	{value: 0x49d2, lo: 0x9b, hi: 0x9b},
 	{value: 0x0012, lo: 0x9c, hi: 0x9d},
-	{value: 0x37db, lo: 0x9e, hi: 0x9e},
+	{value: 0x1d9b, lo: 0x9e, hi: 0x9e},
 	{value: 0x0012, lo: 0x9f, hi: 0x9f},
-	{value: 0x0057, lo: 0xa0, hi: 0xbf},
-	// Block 0x61, offset 0x299
-	{value: 0x0212, lo: 0x80, hi: 0x87},
-	{value: 0x0213, lo: 0x88, hi: 0x8f},
-	{value: 0x0212, lo: 0x90, hi: 0x95},
-	{value: 0x0213, lo: 0x98, hi: 0x9d},
-	{value: 0x0212, lo: 0xa0, hi: 0xa7},
-	{value: 0x0213, lo: 0xa8, hi: 0xaf},
-	{value: 0x0212, lo: 0xb0, hi: 0xb7},
-	{value: 0x0213, lo: 0xb8, hi: 0xbf},
-	// Block 0x62, offset 0x2a1
+	{value: 0x0097, lo: 0xa0, hi: 0xbf},
+	// Block 0x62, offset 0x29c
+	{value: 0x0412, lo: 0x80, hi: 0x87},
+	{value: 0x0413, lo: 0x88, hi: 0x8f},
+	{value: 0x0412, lo: 0x90, hi: 0x95},
+	{value: 0x0413, lo: 0x98, hi: 0x9d},
+	{value: 0x0412, lo: 0xa0, hi: 0xa7},
+	{value: 0x0413, lo: 0xa8, hi: 0xaf},
+	{value: 0x0412, lo: 0xb0, hi: 0xb7},
+	{value: 0x0413, lo: 0xb8, hi: 0xbf},
+	// Block 0x63, offset 0x2a4
 	{value: 0x0004, lo: 0x8b, hi: 0x8b},
 	{value: 0x0014, lo: 0x8c, hi: 0x8f},
 	{value: 0x0014, lo: 0x98, hi: 0x99},
@@ -1306,16 +1284,16 @@
 	{value: 0x0014, lo: 0xa7, hi: 0xa7},
 	{value: 0x0014, lo: 0xaa, hi: 0xae},
 	{value: 0x0010, lo: 0xbf, hi: 0xbf},
-	// Block 0x63, offset 0x2a8
+	// Block 0x64, offset 0x2ab
 	{value: 0x0010, lo: 0x80, hi: 0x80},
 	{value: 0x0010, lo: 0x94, hi: 0x94},
 	{value: 0x0014, lo: 0xa0, hi: 0xa4},
 	{value: 0x0014, lo: 0xa6, hi: 0xaf},
 	{value: 0x0015, lo: 0xb1, hi: 0xb1},
 	{value: 0x0015, lo: 0xbf, hi: 0xbf},
-	// Block 0x64, offset 0x2ae
+	// Block 0x65, offset 0x2b1
 	{value: 0x0015, lo: 0x90, hi: 0x9c},
-	// Block 0x65, offset 0x2af
+	// Block 0x66, offset 0x2b2
 	{value: 0x0024, lo: 0x90, hi: 0x91},
 	{value: 0x0034, lo: 0x92, hi: 0x93},
 	{value: 0x0024, lo: 0x94, hi: 0x97},
@@ -1330,135 +1308,141 @@
 	{value: 0x0024, lo: 0xa9, hi: 0xa9},
 	{value: 0x0034, lo: 0xaa, hi: 0xaf},
 	{value: 0x0024, lo: 0xb0, hi: 0xb0},
-	// Block 0x66, offset 0x2bd
+	// Block 0x67, offset 0x2c0
 	{value: 0x0016, lo: 0x85, hi: 0x86},
 	{value: 0x0012, lo: 0x87, hi: 0x89},
-	{value: 0x1f12, lo: 0x8e, hi: 0x8e},
-	{value: 0x0413, lo: 0xa0, hi: 0xaf},
-	{value: 0x0412, lo: 0xb0, hi: 0xbf},
-	// Block 0x67, offset 0x2c2
-	{value: 0x0010, lo: 0x80, hi: 0x82},
-	{value: 0x01d6, lo: 0x83, hi: 0x84},
-	{value: 0x0010, lo: 0x85, hi: 0x88},
+	{value: 0x5452, lo: 0x8e, hi: 0x8e},
+	{value: 0x0813, lo: 0xa0, hi: 0xaf},
+	{value: 0x0812, lo: 0xb0, hi: 0xbf},
 	// Block 0x68, offset 0x2c5
-	{value: 0x1993, lo: 0xb6, hi: 0xb7},
-	{value: 0x1a93, lo: 0xb8, hi: 0xb9},
-	{value: 0x1b93, lo: 0xba, hi: 0xbb},
-	{value: 0x1a93, lo: 0xbc, hi: 0xbd},
-	{value: 0x1993, lo: 0xbe, hi: 0xbf},
-	// Block 0x69, offset 0x2ca
-	{value: 0x0c13, lo: 0x80, hi: 0x8f},
-	{value: 0x1413, lo: 0x90, hi: 0x9f},
-	{value: 0x1c13, lo: 0xa0, hi: 0xae},
-	{value: 0x0c12, lo: 0xb0, hi: 0xbf},
-	// Block 0x6a, offset 0x2ce
-	{value: 0x0057, lo: 0x80, hi: 0xa3},
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0396, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x88},
+	// Block 0x69, offset 0x2c8
+	{value: 0x55d3, lo: 0xb6, hi: 0xb7},
+	{value: 0x3bd3, lo: 0xb8, hi: 0xb9},
+	{value: 0x5753, lo: 0xba, hi: 0xbb},
+	{value: 0x3bd3, lo: 0xbc, hi: 0xbd},
+	{value: 0x55d3, lo: 0xbe, hi: 0xbf},
+	// Block 0x6a, offset 0x2cd
+	{value: 0x1813, lo: 0x80, hi: 0x8f},
+	{value: 0x3d53, lo: 0x90, hi: 0x9f},
+	{value: 0x58d3, lo: 0xa0, hi: 0xae},
+	{value: 0x1812, lo: 0xb0, hi: 0xbf},
+	// Block 0x6b, offset 0x2d1
+	{value: 0x0097, lo: 0x80, hi: 0xa3},
 	{value: 0x0012, lo: 0xa4, hi: 0xa4},
-	{value: 0x01d6, lo: 0xab, hi: 0xac},
-	{value: 0x00d6, lo: 0xad, hi: 0xae},
+	{value: 0x0396, lo: 0xab, hi: 0xac},
+	{value: 0x0196, lo: 0xad, hi: 0xae},
 	{value: 0x0024, lo: 0xaf, hi: 0xb1},
-	{value: 0x0057, lo: 0xb2, hi: 0xb3},
-	// Block 0x6b, offset 0x2d4
+	{value: 0x0097, lo: 0xb2, hi: 0xb3},
+	// Block 0x6c, offset 0x2d7
+	{value: 0x4252, lo: 0x80, hi: 0x9f},
+	{value: 0x4452, lo: 0xa0, hi: 0xa5},
+	{value: 0x4452, lo: 0xa7, hi: 0xa7},
+	{value: 0x4452, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x6d, offset 0x2dc
 	{value: 0x0010, lo: 0x80, hi: 0xa7},
 	{value: 0x0014, lo: 0xaf, hi: 0xaf},
 	{value: 0x0034, lo: 0xbf, hi: 0xbf},
-	// Block 0x6c, offset 0x2d7
+	// Block 0x6e, offset 0x2df
 	{value: 0x0010, lo: 0x80, hi: 0x96},
 	{value: 0x0010, lo: 0xa0, hi: 0xa6},
 	{value: 0x0010, lo: 0xa8, hi: 0xae},
 	{value: 0x0010, lo: 0xb0, hi: 0xb6},
 	{value: 0x0010, lo: 0xb8, hi: 0xbe},
-	// Block 0x6d, offset 0x2dc
+	// Block 0x6f, offset 0x2e4
 	{value: 0x0010, lo: 0x80, hi: 0x86},
 	{value: 0x0010, lo: 0x88, hi: 0x8e},
 	{value: 0x0010, lo: 0x90, hi: 0x96},
 	{value: 0x0010, lo: 0x98, hi: 0x9e},
 	{value: 0x0024, lo: 0xa0, hi: 0xbf},
-	// Block 0x6e, offset 0x2e1
+	// Block 0x70, offset 0x2e9
 	{value: 0x0014, lo: 0xaf, hi: 0xaf},
-	// Block 0x6f, offset 0x2e2
+	// Block 0x71, offset 0x2ea
 	{value: 0x0014, lo: 0x85, hi: 0x85},
 	{value: 0x0034, lo: 0xaa, hi: 0xad},
 	{value: 0x0030, lo: 0xae, hi: 0xaf},
 	{value: 0x0004, lo: 0xb1, hi: 0xb5},
 	{value: 0x0014, lo: 0xbb, hi: 0xbb},
 	{value: 0x0010, lo: 0xbc, hi: 0xbc},
-	// Block 0x70, offset 0x2e8
+	// Block 0x72, offset 0x2f0
 	{value: 0x0034, lo: 0x99, hi: 0x9a},
 	{value: 0x0004, lo: 0x9b, hi: 0x9e},
-	// Block 0x71, offset 0x2ea
+	// Block 0x73, offset 0x2f2
 	{value: 0x0004, lo: 0xbc, hi: 0xbe},
-	// Block 0x72, offset 0x2eb
+	// Block 0x74, offset 0x2f3
 	{value: 0x0010, lo: 0x85, hi: 0xad},
 	{value: 0x0010, lo: 0xb1, hi: 0xbf},
-	// Block 0x73, offset 0x2ed
+	// Block 0x75, offset 0x2f5
 	{value: 0x0010, lo: 0x80, hi: 0x8e},
 	{value: 0x0010, lo: 0xa0, hi: 0xba},
-	// Block 0x74, offset 0x2ef
+	// Block 0x76, offset 0x2f7
 	{value: 0x0010, lo: 0x80, hi: 0x94},
 	{value: 0x0014, lo: 0x95, hi: 0x95},
 	{value: 0x0010, lo: 0x96, hi: 0xbf},
-	// Block 0x75, offset 0x2f2
+	// Block 0x77, offset 0x2fa
 	{value: 0x0010, lo: 0x80, hi: 0x8c},
-	// Block 0x76, offset 0x2f3
+	// Block 0x78, offset 0x2fb
 	{value: 0x0010, lo: 0x90, hi: 0xb7},
 	{value: 0x0014, lo: 0xb8, hi: 0xbd},
-	// Block 0x77, offset 0x2f5
+	// Block 0x79, offset 0x2fd
 	{value: 0x0010, lo: 0x80, hi: 0x8b},
 	{value: 0x0014, lo: 0x8c, hi: 0x8c},
 	{value: 0x0010, lo: 0x90, hi: 0xab},
-	// Block 0x78, offset 0x2f8
-	{value: 0x0057, lo: 0x80, hi: 0xad},
+	// Block 0x7a, offset 0x300
+	{value: 0x0097, lo: 0x80, hi: 0xad},
 	{value: 0x0010, lo: 0xae, hi: 0xae},
 	{value: 0x0024, lo: 0xaf, hi: 0xaf},
 	{value: 0x0014, lo: 0xb0, hi: 0xb2},
 	{value: 0x0024, lo: 0xb4, hi: 0xbd},
 	{value: 0x0014, lo: 0xbf, hi: 0xbf},
-	// Block 0x79, offset 0x2fe
-	{value: 0x0057, lo: 0x80, hi: 0x9b},
+	// Block 0x7b, offset 0x306
+	{value: 0x0097, lo: 0x80, hi: 0x9b},
 	{value: 0x0015, lo: 0x9c, hi: 0x9d},
 	{value: 0x0024, lo: 0x9f, hi: 0x9f},
 	{value: 0x0010, lo: 0xa0, hi: 0xbf},
-	// Block 0x7a, offset 0x302
+	// Block 0x7c, offset 0x30a
 	{value: 0x0010, lo: 0x80, hi: 0xaf},
 	{value: 0x0024, lo: 0xb0, hi: 0xb1},
-	// Block 0x7b, offset 0x304
+	// Block 0x7d, offset 0x30c
 	{value: 0x0004, lo: 0x80, hi: 0x96},
 	{value: 0x0014, lo: 0x97, hi: 0x9f},
 	{value: 0x0004, lo: 0xa0, hi: 0xa1},
-	{value: 0x0057, lo: 0xa2, hi: 0xaf},
+	{value: 0x0097, lo: 0xa2, hi: 0xaf},
 	{value: 0x0012, lo: 0xb0, hi: 0xb1},
-	{value: 0x0057, lo: 0xb2, hi: 0xbf},
-	// Block 0x7c, offset 0x30a
-	{value: 0x0057, lo: 0x80, hi: 0xaf},
+	{value: 0x0097, lo: 0xb2, hi: 0xbf},
+	// Block 0x7e, offset 0x312
+	{value: 0x0097, lo: 0x80, hi: 0xaf},
 	{value: 0x0015, lo: 0xb0, hi: 0xb0},
 	{value: 0x0012, lo: 0xb1, hi: 0xb8},
-	{value: 0x00d6, lo: 0xb9, hi: 0xba},
-	{value: 0x01d6, lo: 0xbb, hi: 0xbc},
-	{value: 0xb75b, lo: 0xbd, hi: 0xbd},
-	{value: 0x0057, lo: 0xbe, hi: 0xbf},
-	// Block 0x7d, offset 0x311
-	{value: 0x0057, lo: 0x80, hi: 0x87},
+	{value: 0x0196, lo: 0xb9, hi: 0xba},
+	{value: 0x0396, lo: 0xbb, hi: 0xbc},
+	{value: 0x4653, lo: 0xbd, hi: 0xbd},
+	{value: 0x0097, lo: 0xbe, hi: 0xbf},
+	// Block 0x7f, offset 0x319
+	{value: 0x0097, lo: 0x80, hi: 0x87},
 	{value: 0x0014, lo: 0x88, hi: 0x88},
 	{value: 0x0004, lo: 0x89, hi: 0x8a},
-	{value: 0x01d6, lo: 0x8b, hi: 0x8c},
-	{value: 0xb7fb, lo: 0x8d, hi: 0x8d},
+	{value: 0x0396, lo: 0x8b, hi: 0x8c},
+	{value: 0x837b, lo: 0x8d, hi: 0x8d},
 	{value: 0x0012, lo: 0x8e, hi: 0x8e},
-	{value: 0x0057, lo: 0x90, hi: 0x93},
+	{value: 0x0097, lo: 0x90, hi: 0x93},
 	{value: 0x0012, lo: 0x94, hi: 0x95},
-	{value: 0x0057, lo: 0x96, hi: 0xa9},
-	{value: 0xb87b, lo: 0xaa, hi: 0xaa},
-	{value: 0xb8fb, lo: 0xab, hi: 0xab},
-	{value: 0xb97b, lo: 0xac, hi: 0xac},
-	{value: 0xb9fb, lo: 0xad, hi: 0xad},
-	{value: 0xba7b, lo: 0xb0, hi: 0xb0},
-	{value: 0xbafb, lo: 0xb1, hi: 0xb1},
-	// Block 0x7e, offset 0x320
+	{value: 0x0097, lo: 0x96, hi: 0xa9},
+	{value: 0x83fb, lo: 0xaa, hi: 0xaa},
+	{value: 0x847b, lo: 0xab, hi: 0xab},
+	{value: 0x84fb, lo: 0xac, hi: 0xac},
+	{value: 0x857b, lo: 0xad, hi: 0xad},
+	{value: 0x85fb, lo: 0xb0, hi: 0xb0},
+	{value: 0x867b, lo: 0xb1, hi: 0xb1},
+	// Block 0x80, offset 0x328
 	{value: 0x0010, lo: 0xb7, hi: 0xb7},
 	{value: 0x0015, lo: 0xb8, hi: 0xb9},
 	{value: 0x0012, lo: 0xba, hi: 0xba},
 	{value: 0x0010, lo: 0xbb, hi: 0xbf},
-	// Block 0x7f, offset 0x324
+	// Block 0x81, offset 0x32c
 	{value: 0x0010, lo: 0x80, hi: 0x81},
 	{value: 0x0014, lo: 0x82, hi: 0x82},
 	{value: 0x0010, lo: 0x83, hi: 0x85},
@@ -1468,27 +1452,27 @@
 	{value: 0x0010, lo: 0x8c, hi: 0xa4},
 	{value: 0x0014, lo: 0xa5, hi: 0xa6},
 	{value: 0x0010, lo: 0xa7, hi: 0xa7},
-	// Block 0x80, offset 0x32d
+	// Block 0x82, offset 0x335
 	{value: 0x0010, lo: 0x80, hi: 0xb3},
-	// Block 0x81, offset 0x32e
+	// Block 0x83, offset 0x336
 	{value: 0x0010, lo: 0x80, hi: 0x83},
 	{value: 0x0034, lo: 0x84, hi: 0x84},
 	{value: 0x0010, lo: 0x90, hi: 0x99},
 	{value: 0x0024, lo: 0xa0, hi: 0xb1},
 	{value: 0x0010, lo: 0xb2, hi: 0xb7},
 	{value: 0x0010, lo: 0xbb, hi: 0xbb},
-	// Block 0x82, offset 0x334
+	// Block 0x84, offset 0x33c
 	{value: 0x0010, lo: 0x80, hi: 0xa5},
 	{value: 0x0014, lo: 0xa6, hi: 0xaa},
 	{value: 0x0034, lo: 0xab, hi: 0xad},
 	{value: 0x0010, lo: 0xb0, hi: 0xbf},
-	// Block 0x83, offset 0x338
+	// Block 0x85, offset 0x340
 	{value: 0x0010, lo: 0x80, hi: 0x86},
 	{value: 0x0014, lo: 0x87, hi: 0x91},
 	{value: 0x0010, lo: 0x92, hi: 0x92},
 	{value: 0x0030, lo: 0x93, hi: 0x93},
 	{value: 0x0010, lo: 0xa0, hi: 0xbc},
-	// Block 0x84, offset 0x33d
+	// Block 0x86, offset 0x345
 	{value: 0x0014, lo: 0x80, hi: 0x82},
 	{value: 0x0010, lo: 0x83, hi: 0xb2},
 	{value: 0x0034, lo: 0xb3, hi: 0xb3},
@@ -1497,21 +1481,21 @@
 	{value: 0x0010, lo: 0xba, hi: 0xbb},
 	{value: 0x0014, lo: 0xbc, hi: 0xbc},
 	{value: 0x0010, lo: 0xbd, hi: 0xbf},
-	// Block 0x85, offset 0x345
+	// Block 0x87, offset 0x34d
 	{value: 0x0030, lo: 0x80, hi: 0x80},
 	{value: 0x0014, lo: 0x8f, hi: 0x8f},
 	{value: 0x0010, lo: 0x90, hi: 0x99},
 	{value: 0x0014, lo: 0xa5, hi: 0xa5},
 	{value: 0x0004, lo: 0xa6, hi: 0xa6},
 	{value: 0x0010, lo: 0xb0, hi: 0xb9},
-	// Block 0x86, offset 0x34b
+	// Block 0x88, offset 0x353
 	{value: 0x0010, lo: 0x80, hi: 0xa8},
 	{value: 0x0014, lo: 0xa9, hi: 0xae},
 	{value: 0x0010, lo: 0xaf, hi: 0xb0},
 	{value: 0x0014, lo: 0xb1, hi: 0xb2},
 	{value: 0x0010, lo: 0xb3, hi: 0xb4},
 	{value: 0x0014, lo: 0xb5, hi: 0xb6},
-	// Block 0x87, offset 0x351
+	// Block 0x89, offset 0x359
 	{value: 0x0010, lo: 0x80, hi: 0x82},
 	{value: 0x0014, lo: 0x83, hi: 0x83},
 	{value: 0x0010, lo: 0x84, hi: 0x8b},
@@ -1522,13 +1506,13 @@
 	{value: 0x0010, lo: 0xbb, hi: 0xbb},
 	{value: 0x0014, lo: 0xbc, hi: 0xbc},
 	{value: 0x0010, lo: 0xbd, hi: 0xbd},
-	// Block 0x88, offset 0x35b
+	// Block 0x8a, offset 0x363
 	{value: 0x0024, lo: 0xb0, hi: 0xb0},
 	{value: 0x0024, lo: 0xb2, hi: 0xb3},
 	{value: 0x0034, lo: 0xb4, hi: 0xb4},
 	{value: 0x0024, lo: 0xb7, hi: 0xb8},
 	{value: 0x0024, lo: 0xbe, hi: 0xbf},
-	// Block 0x89, offset 0x360
+	// Block 0x8b, offset 0x368
 	{value: 0x0024, lo: 0x81, hi: 0x81},
 	{value: 0x0004, lo: 0x9d, hi: 0x9d},
 	{value: 0x0010, lo: 0xa0, hi: 0xab},
@@ -1538,19 +1522,19 @@
 	{value: 0x0014, lo: 0xb3, hi: 0xb4},
 	{value: 0x0010, lo: 0xb5, hi: 0xb5},
 	{value: 0x0034, lo: 0xb6, hi: 0xb6},
-	// Block 0x8a, offset 0x369
+	// Block 0x8c, offset 0x371
 	{value: 0x0010, lo: 0x81, hi: 0x86},
 	{value: 0x0010, lo: 0x89, hi: 0x8e},
 	{value: 0x0010, lo: 0x91, hi: 0x96},
 	{value: 0x0010, lo: 0xa0, hi: 0xa6},
 	{value: 0x0010, lo: 0xa8, hi: 0xae},
 	{value: 0x0012, lo: 0xb0, hi: 0xbf},
-	// Block 0x8b, offset 0x36f
+	// Block 0x8d, offset 0x377
 	{value: 0x0012, lo: 0x80, hi: 0x9a},
 	{value: 0x0004, lo: 0x9b, hi: 0x9b},
 	{value: 0x0015, lo: 0x9c, hi: 0x9f},
 	{value: 0x0012, lo: 0xa4, hi: 0xa5},
-	// Block 0x8c, offset 0x373
+	// Block 0x8e, offset 0x37b
 	{value: 0x0010, lo: 0x80, hi: 0xa4},
 	{value: 0x0014, lo: 0xa5, hi: 0xa5},
 	{value: 0x0010, lo: 0xa6, hi: 0xa7},
@@ -1559,146 +1543,146 @@
 	{value: 0x0010, lo: 0xac, hi: 0xac},
 	{value: 0x0034, lo: 0xad, hi: 0xad},
 	{value: 0x0010, lo: 0xb0, hi: 0xb9},
-	// Block 0x8d, offset 0x37b
+	// Block 0x8f, offset 0x383
 	{value: 0x0010, lo: 0x80, hi: 0xa3},
 	{value: 0x0010, lo: 0xb0, hi: 0xbf},
-	// Block 0x8e, offset 0x37d
+	// Block 0x90, offset 0x385
 	{value: 0x0010, lo: 0x80, hi: 0x86},
 	{value: 0x0010, lo: 0x8b, hi: 0xbb},
-	// Block 0x8f, offset 0x37f
+	// Block 0x91, offset 0x387
 	{value: 0x0010, lo: 0x80, hi: 0x81},
 	{value: 0x0010, lo: 0x83, hi: 0x84},
 	{value: 0x0010, lo: 0x86, hi: 0xbf},
-	// Block 0x90, offset 0x382
+	// Block 0x92, offset 0x38a
 	{value: 0x0010, lo: 0x80, hi: 0xb1},
 	{value: 0x0004, lo: 0xb2, hi: 0xbf},
-	// Block 0x91, offset 0x384
+	// Block 0x93, offset 0x38c
 	{value: 0x0004, lo: 0x80, hi: 0x81},
 	{value: 0x0010, lo: 0x93, hi: 0xbf},
-	// Block 0x92, offset 0x386
+	// Block 0x94, offset 0x38e
 	{value: 0x0010, lo: 0x80, hi: 0xbd},
-	// Block 0x93, offset 0x387
+	// Block 0x95, offset 0x38f
 	{value: 0x0010, lo: 0x90, hi: 0xbf},
-	// Block 0x94, offset 0x388
+	// Block 0x96, offset 0x390
 	{value: 0x0010, lo: 0x80, hi: 0x8f},
 	{value: 0x0010, lo: 0x92, hi: 0xbf},
-	// Block 0x95, offset 0x38a
+	// Block 0x97, offset 0x392
 	{value: 0x0010, lo: 0x80, hi: 0x87},
 	{value: 0x0010, lo: 0xb0, hi: 0xbb},
-	// Block 0x96, offset 0x38c
+	// Block 0x98, offset 0x394
 	{value: 0x0014, lo: 0x80, hi: 0x8f},
 	{value: 0x0014, lo: 0x93, hi: 0x93},
 	{value: 0x0024, lo: 0xa0, hi: 0xa6},
 	{value: 0x0034, lo: 0xa7, hi: 0xad},
 	{value: 0x0010, lo: 0xb3, hi: 0xb4},
-	// Block 0x97, offset 0x391
+	// Block 0x99, offset 0x399
 	{value: 0x0010, lo: 0x8d, hi: 0x8f},
 	{value: 0x0014, lo: 0x92, hi: 0x92},
 	{value: 0x0014, lo: 0x95, hi: 0x95},
 	{value: 0x0010, lo: 0xb0, hi: 0xb4},
 	{value: 0x0010, lo: 0xb6, hi: 0xbf},
-	// Block 0x98, offset 0x396
+	// Block 0x9a, offset 0x39e
 	{value: 0x0010, lo: 0x80, hi: 0xbc},
 	{value: 0x0014, lo: 0xbf, hi: 0xbf},
-	// Block 0x99, offset 0x398
+	// Block 0x9b, offset 0x3a0
 	{value: 0x0014, lo: 0x87, hi: 0x87},
 	{value: 0x0014, lo: 0x8e, hi: 0x8e},
 	{value: 0x0014, lo: 0x9a, hi: 0x9a},
-	{value: 0x1813, lo: 0xa1, hi: 0xba},
+	{value: 0x32d3, lo: 0xa1, hi: 0xba},
 	{value: 0x0004, lo: 0xbe, hi: 0xbe},
 	{value: 0x0010, lo: 0xbf, hi: 0xbf},
-	// Block 0x9a, offset 0x39e
+	// Block 0x9c, offset 0x3a6
 	{value: 0x0004, lo: 0x80, hi: 0x80},
-	{value: 0x1812, lo: 0x81, hi: 0x9a},
+	{value: 0x32d2, lo: 0x81, hi: 0x9a},
 	{value: 0x0004, lo: 0xb0, hi: 0xb0},
-	// Block 0x9b, offset 0x3a1
+	// Block 0x9d, offset 0x3a9
 	{value: 0x0014, lo: 0x9e, hi: 0x9f},
 	{value: 0x0010, lo: 0xa0, hi: 0xbe},
-	// Block 0x9c, offset 0x3a3
+	// Block 0x9e, offset 0x3ab
 	{value: 0x0010, lo: 0x82, hi: 0x87},
 	{value: 0x0010, lo: 0x8a, hi: 0x8f},
 	{value: 0x0010, lo: 0x92, hi: 0x97},
 	{value: 0x0010, lo: 0x9a, hi: 0x9c},
 	{value: 0x0004, lo: 0xa3, hi: 0xa3},
 	{value: 0x0014, lo: 0xb9, hi: 0xbb},
-	// Block 0x9d, offset 0x3a9
+	// Block 0x9f, offset 0x3b1
 	{value: 0x0010, lo: 0x80, hi: 0x8b},
 	{value: 0x0010, lo: 0x8d, hi: 0xa6},
 	{value: 0x0010, lo: 0xa8, hi: 0xba},
 	{value: 0x0010, lo: 0xbc, hi: 0xbd},
 	{value: 0x0010, lo: 0xbf, hi: 0xbf},
-	// Block 0x9e, offset 0x3ae
+	// Block 0xa0, offset 0x3b6
 	{value: 0x0010, lo: 0x80, hi: 0x8d},
 	{value: 0x0010, lo: 0x90, hi: 0x9d},
-	// Block 0x9f, offset 0x3b0
+	// Block 0xa1, offset 0x3b8
 	{value: 0x0010, lo: 0x80, hi: 0xba},
-	// Block 0xa0, offset 0x3b1
+	// Block 0xa2, offset 0x3b9
 	{value: 0x0034, lo: 0xbd, hi: 0xbd},
-	// Block 0xa1, offset 0x3b2
+	// Block 0xa3, offset 0x3ba
 	{value: 0x0010, lo: 0x80, hi: 0x9c},
 	{value: 0x0010, lo: 0xa0, hi: 0xbf},
-	// Block 0xa2, offset 0x3b4
+	// Block 0xa4, offset 0x3bc
 	{value: 0x0010, lo: 0x80, hi: 0x90},
 	{value: 0x0034, lo: 0xa0, hi: 0xa0},
-	// Block 0xa3, offset 0x3b6
+	// Block 0xa5, offset 0x3be
 	{value: 0x0010, lo: 0x80, hi: 0x9f},
 	{value: 0x0010, lo: 0xb0, hi: 0xbf},
-	// Block 0xa4, offset 0x3b8
+	// Block 0xa6, offset 0x3c0
 	{value: 0x0010, lo: 0x80, hi: 0x8a},
 	{value: 0x0010, lo: 0x90, hi: 0xb5},
 	{value: 0x0024, lo: 0xb6, hi: 0xba},
-	// Block 0xa5, offset 0x3bb
+	// Block 0xa7, offset 0x3c3
 	{value: 0x0010, lo: 0x80, hi: 0x9d},
 	{value: 0x0010, lo: 0xa0, hi: 0xbf},
-	// Block 0xa6, offset 0x3bd
+	// Block 0xa8, offset 0x3c5
 	{value: 0x0010, lo: 0x80, hi: 0x83},
 	{value: 0x0010, lo: 0x88, hi: 0x8f},
 	{value: 0x0010, lo: 0x91, hi: 0x95},
-	// Block 0xa7, offset 0x3c0
-	{value: 0x0a13, lo: 0x80, hi: 0x87},
-	{value: 0x0e13, lo: 0x88, hi: 0x8f},
-	{value: 0x0a13, lo: 0x90, hi: 0x97},
-	{value: 0x1613, lo: 0x98, hi: 0x9f},
-	{value: 0x1a13, lo: 0xa0, hi: 0xa7},
-	{value: 0x0a12, lo: 0xa8, hi: 0xaf},
-	{value: 0x0e12, lo: 0xb0, hi: 0xb7},
-	{value: 0x0a12, lo: 0xb8, hi: 0xbf},
-	// Block 0xa8, offset 0x3c8
-	{value: 0x1612, lo: 0x80, hi: 0x87},
-	{value: 0x1a12, lo: 0x88, hi: 0x8f},
+	// Block 0xa9, offset 0x3c8
+	{value: 0x1413, lo: 0x80, hi: 0x87},
+	{value: 0x1c13, lo: 0x88, hi: 0x8f},
+	{value: 0x1413, lo: 0x90, hi: 0x97},
+	{value: 0x5a53, lo: 0x98, hi: 0x9f},
+	{value: 0x5bd3, lo: 0xa0, hi: 0xa7},
+	{value: 0x1412, lo: 0xa8, hi: 0xaf},
+	{value: 0x1c12, lo: 0xb0, hi: 0xb7},
+	{value: 0x1412, lo: 0xb8, hi: 0xbf},
+	// Block 0xaa, offset 0x3d0
+	{value: 0x5a52, lo: 0x80, hi: 0x87},
+	{value: 0x5bd2, lo: 0x88, hi: 0x8f},
 	{value: 0x0010, lo: 0x90, hi: 0xbf},
-	// Block 0xa9, offset 0x3cb
+	// Block 0xab, offset 0x3d3
 	{value: 0x0010, lo: 0x80, hi: 0x9d},
 	{value: 0x0010, lo: 0xa0, hi: 0xa9},
-	// Block 0xaa, offset 0x3cd
+	// Block 0xac, offset 0x3d5
 	{value: 0x0010, lo: 0x80, hi: 0xa7},
 	{value: 0x0010, lo: 0xb0, hi: 0xbf},
-	// Block 0xab, offset 0x3cf
+	// Block 0xad, offset 0x3d7
 	{value: 0x0010, lo: 0x80, hi: 0xa3},
-	// Block 0xac, offset 0x3d0
+	// Block 0xae, offset 0x3d8
 	{value: 0x0010, lo: 0x80, hi: 0xb6},
-	// Block 0xad, offset 0x3d1
+	// Block 0xaf, offset 0x3d9
 	{value: 0x0010, lo: 0x80, hi: 0x95},
 	{value: 0x0010, lo: 0xa0, hi: 0xa7},
-	// Block 0xae, offset 0x3d3
+	// Block 0xb0, offset 0x3db
 	{value: 0x0010, lo: 0x80, hi: 0x85},
 	{value: 0x0010, lo: 0x88, hi: 0x88},
 	{value: 0x0010, lo: 0x8a, hi: 0xb5},
 	{value: 0x0010, lo: 0xb7, hi: 0xb8},
 	{value: 0x0010, lo: 0xbc, hi: 0xbc},
 	{value: 0x0010, lo: 0xbf, hi: 0xbf},
-	// Block 0xaf, offset 0x3d9
+	// Block 0xb1, offset 0x3e1
 	{value: 0x0010, lo: 0x80, hi: 0x95},
 	{value: 0x0010, lo: 0xa0, hi: 0xb6},
-	// Block 0xb0, offset 0x3db
+	// Block 0xb2, offset 0x3e3
 	{value: 0x0010, lo: 0x80, hi: 0x9e},
-	// Block 0xb1, offset 0x3dc
+	// Block 0xb3, offset 0x3e4
 	{value: 0x0010, lo: 0x80, hi: 0x95},
 	{value: 0x0010, lo: 0xa0, hi: 0xb9},
-	// Block 0xb2, offset 0x3de
+	// Block 0xb4, offset 0x3e6
 	{value: 0x0010, lo: 0x80, hi: 0xb7},
 	{value: 0x0010, lo: 0xbe, hi: 0xbf},
-	// Block 0xb3, offset 0x3e0
+	// Block 0xb5, offset 0x3e8
 	{value: 0x0010, lo: 0x80, hi: 0x80},
 	{value: 0x0014, lo: 0x81, hi: 0x83},
 	{value: 0x0014, lo: 0x85, hi: 0x86},
@@ -1712,43 +1696,43 @@
 	{value: 0x0024, lo: 0xb8, hi: 0xb8},
 	{value: 0x0034, lo: 0xb9, hi: 0xba},
 	{value: 0x0034, lo: 0xbf, hi: 0xbf},
-	// Block 0xb4, offset 0x3ed
+	// Block 0xb6, offset 0x3f5
 	{value: 0x0010, lo: 0xa0, hi: 0xbc},
-	// Block 0xb5, offset 0x3ee
+	// Block 0xb7, offset 0x3f6
 	{value: 0x0010, lo: 0x80, hi: 0x9c},
-	// Block 0xb6, offset 0x3ef
+	// Block 0xb8, offset 0x3f7
 	{value: 0x0010, lo: 0x80, hi: 0x87},
 	{value: 0x0010, lo: 0x89, hi: 0xa4},
 	{value: 0x0024, lo: 0xa5, hi: 0xa5},
 	{value: 0x0034, lo: 0xa6, hi: 0xa6},
-	// Block 0xb7, offset 0x3f3
+	// Block 0xb9, offset 0x3fb
 	{value: 0x0010, lo: 0x80, hi: 0x95},
 	{value: 0x0010, lo: 0xa0, hi: 0xb2},
-	// Block 0xb8, offset 0x3f5
+	// Block 0xba, offset 0x3fd
 	{value: 0x0010, lo: 0x80, hi: 0x91},
-	// Block 0xb9, offset 0x3f6
+	// Block 0xbb, offset 0x3fe
 	{value: 0x0010, lo: 0x80, hi: 0x88},
-	// Block 0xba, offset 0x3f7
+	// Block 0xbc, offset 0x3ff
 	{value: 0x0010, lo: 0x80, hi: 0x80},
 	{value: 0x0014, lo: 0x81, hi: 0x81},
 	{value: 0x0010, lo: 0x82, hi: 0xb7},
 	{value: 0x0014, lo: 0xb8, hi: 0xbf},
-	// Block 0xbb, offset 0x3fb
+	// Block 0xbd, offset 0x403
 	{value: 0x0014, lo: 0x80, hi: 0x85},
 	{value: 0x0034, lo: 0x86, hi: 0x86},
 	{value: 0x0010, lo: 0xa6, hi: 0xaf},
 	{value: 0x0034, lo: 0xbf, hi: 0xbf},
-	// Block 0xbc, offset 0x3ff
+	// Block 0xbe, offset 0x407
 	{value: 0x0014, lo: 0x80, hi: 0x81},
 	{value: 0x0010, lo: 0x82, hi: 0xb2},
 	{value: 0x0014, lo: 0xb3, hi: 0xb6},
 	{value: 0x0010, lo: 0xb7, hi: 0xb8},
 	{value: 0x0034, lo: 0xb9, hi: 0xba},
 	{value: 0x0014, lo: 0xbd, hi: 0xbd},
-	// Block 0xbd, offset 0x405
+	// Block 0xbf, offset 0x40d
 	{value: 0x0010, lo: 0x90, hi: 0xa8},
 	{value: 0x0010, lo: 0xb0, hi: 0xb9},
-	// Block 0xbe, offset 0x407
+	// Block 0xc0, offset 0x40f
 	{value: 0x0024, lo: 0x80, hi: 0x82},
 	{value: 0x0010, lo: 0x83, hi: 0xa6},
 	{value: 0x0014, lo: 0xa7, hi: 0xab},
@@ -1756,20 +1740,20 @@
 	{value: 0x0014, lo: 0xad, hi: 0xb2},
 	{value: 0x0034, lo: 0xb3, hi: 0xb4},
 	{value: 0x0010, lo: 0xb6, hi: 0xbf},
-	// Block 0xbf, offset 0x40e
+	// Block 0xc1, offset 0x416
 	{value: 0x0010, lo: 0x90, hi: 0xb2},
 	{value: 0x0034, lo: 0xb3, hi: 0xb3},
 	{value: 0x0010, lo: 0xb6, hi: 0xb6},
-	// Block 0xc0, offset 0x411
+	// Block 0xc2, offset 0x419
 	{value: 0x0014, lo: 0x80, hi: 0x81},
 	{value: 0x0010, lo: 0x82, hi: 0xb5},
 	{value: 0x0014, lo: 0xb6, hi: 0xbe},
 	{value: 0x0010, lo: 0xbf, hi: 0xbf},
-	// Block 0xc1, offset 0x415
+	// Block 0xc3, offset 0x41d
 	{value: 0x0030, lo: 0x80, hi: 0x80},
 	{value: 0x0010, lo: 0x81, hi: 0x84},
 	{value: 0x0010, lo: 0x90, hi: 0x9a},
-	// Block 0xc2, offset 0x418
+	// Block 0xc4, offset 0x420
 	{value: 0x0010, lo: 0x80, hi: 0x91},
 	{value: 0x0010, lo: 0x93, hi: 0xae},
 	{value: 0x0014, lo: 0xaf, hi: 0xb1},
@@ -1778,14 +1762,14 @@
 	{value: 0x0030, lo: 0xb5, hi: 0xb5},
 	{value: 0x0034, lo: 0xb6, hi: 0xb6},
 	{value: 0x0014, lo: 0xb7, hi: 0xb7},
-	// Block 0xc3, offset 0x420
+	// Block 0xc5, offset 0x428
 	{value: 0x0010, lo: 0x80, hi: 0x9e},
 	{value: 0x0014, lo: 0x9f, hi: 0x9f},
 	{value: 0x0010, lo: 0xa0, hi: 0xa2},
 	{value: 0x0014, lo: 0xa3, hi: 0xa8},
 	{value: 0x0034, lo: 0xa9, hi: 0xaa},
 	{value: 0x0010, lo: 0xb0, hi: 0xb9},
-	// Block 0xc4, offset 0x426
+	// Block 0xc6, offset 0x42e
 	{value: 0x0014, lo: 0x81, hi: 0x81},
 	{value: 0x0010, lo: 0x82, hi: 0x83},
 	{value: 0x0010, lo: 0x85, hi: 0x8c},
@@ -1796,7 +1780,7 @@
 	{value: 0x0010, lo: 0xb5, hi: 0xb9},
 	{value: 0x0034, lo: 0xbc, hi: 0xbc},
 	{value: 0x0010, lo: 0xbd, hi: 0xbf},
-	// Block 0xc5, offset 0x430
+	// Block 0xc7, offset 0x438
 	{value: 0x0014, lo: 0x80, hi: 0x80},
 	{value: 0x0010, lo: 0x81, hi: 0x84},
 	{value: 0x0010, lo: 0x87, hi: 0x88},
@@ -1806,41 +1790,41 @@
 	{value: 0x0010, lo: 0x9d, hi: 0xa3},
 	{value: 0x0024, lo: 0xa6, hi: 0xac},
 	{value: 0x0024, lo: 0xb0, hi: 0xb4},
-	// Block 0xc6, offset 0x439
+	// Block 0xc8, offset 0x441
 	{value: 0x0010, lo: 0x80, hi: 0xb2},
 	{value: 0x0014, lo: 0xb3, hi: 0xb8},
 	{value: 0x0010, lo: 0xb9, hi: 0xb9},
 	{value: 0x0014, lo: 0xba, hi: 0xba},
 	{value: 0x0010, lo: 0xbb, hi: 0xbe},
 	{value: 0x0014, lo: 0xbf, hi: 0xbf},
-	// Block 0xc7, offset 0x43f
+	// Block 0xc9, offset 0x447
 	{value: 0x0014, lo: 0x80, hi: 0x80},
 	{value: 0x0010, lo: 0x81, hi: 0x81},
 	{value: 0x0034, lo: 0x82, hi: 0x83},
 	{value: 0x0010, lo: 0x84, hi: 0x85},
 	{value: 0x0010, lo: 0x87, hi: 0x87},
 	{value: 0x0010, lo: 0x90, hi: 0x99},
-	// Block 0xc8, offset 0x445
+	// Block 0xca, offset 0x44d
 	{value: 0x0010, lo: 0x80, hi: 0xb1},
 	{value: 0x0014, lo: 0xb2, hi: 0xb5},
 	{value: 0x0010, lo: 0xb8, hi: 0xbb},
 	{value: 0x0014, lo: 0xbc, hi: 0xbd},
 	{value: 0x0010, lo: 0xbe, hi: 0xbe},
 	{value: 0x0034, lo: 0xbf, hi: 0xbf},
-	// Block 0xc9, offset 0x44b
+	// Block 0xcb, offset 0x453
 	{value: 0x0034, lo: 0x80, hi: 0x80},
-	// Block 0xca, offset 0x44c
+	// Block 0xcc, offset 0x454
 	{value: 0x0010, lo: 0x80, hi: 0xb2},
 	{value: 0x0014, lo: 0xb3, hi: 0xba},
 	{value: 0x0010, lo: 0xbb, hi: 0xbc},
 	{value: 0x0014, lo: 0xbd, hi: 0xbd},
 	{value: 0x0010, lo: 0xbe, hi: 0xbe},
 	{value: 0x0034, lo: 0xbf, hi: 0xbf},
-	// Block 0xcb, offset 0x452
+	// Block 0xcd, offset 0x45a
 	{value: 0x0014, lo: 0x80, hi: 0x80},
 	{value: 0x0010, lo: 0x84, hi: 0x84},
 	{value: 0x0010, lo: 0x90, hi: 0x99},
-	// Block 0xcc, offset 0x455
+	// Block 0xce, offset 0x45d
 	{value: 0x0010, lo: 0x80, hi: 0xaa},
 	{value: 0x0014, lo: 0xab, hi: 0xab},
 	{value: 0x0010, lo: 0xac, hi: 0xac},
@@ -1849,73 +1833,73 @@
 	{value: 0x0014, lo: 0xb0, hi: 0xb5},
 	{value: 0x0030, lo: 0xb6, hi: 0xb6},
 	{value: 0x0034, lo: 0xb7, hi: 0xb7},
-	// Block 0xcd, offset 0x45d
+	// Block 0xcf, offset 0x465
 	{value: 0x0010, lo: 0x80, hi: 0x89},
-	// Block 0xce, offset 0x45e
-	{value: 0x1813, lo: 0xa0, hi: 0xbf},
-	// Block 0xcf, offset 0x45f
-	{value: 0x1812, lo: 0x80, hi: 0x9f},
+	// Block 0xd0, offset 0x466
+	{value: 0x32d3, lo: 0xa0, hi: 0xbf},
+	// Block 0xd1, offset 0x467
+	{value: 0x32d2, lo: 0x80, hi: 0x9f},
 	{value: 0x0010, lo: 0xa0, hi: 0xa9},
 	{value: 0x0010, lo: 0xbf, hi: 0xbf},
-	// Block 0xd0, offset 0x462
+	// Block 0xd2, offset 0x46a
 	{value: 0x0010, lo: 0x80, hi: 0xb8},
-	// Block 0xd1, offset 0x463
+	// Block 0xd3, offset 0x46b
 	{value: 0x0010, lo: 0x80, hi: 0x98},
-	// Block 0xd2, offset 0x464
+	// Block 0xd4, offset 0x46c
 	{value: 0x0010, lo: 0x80, hi: 0xae},
-	// Block 0xd3, offset 0x465
+	// Block 0xd5, offset 0x46d
 	{value: 0x0010, lo: 0x80, hi: 0x9e},
 	{value: 0x0010, lo: 0xa0, hi: 0xa9},
-	// Block 0xd4, offset 0x467
+	// Block 0xd6, offset 0x46f
 	{value: 0x0010, lo: 0x90, hi: 0xad},
 	{value: 0x0034, lo: 0xb0, hi: 0xb4},
-	// Block 0xd5, offset 0x469
+	// Block 0xd7, offset 0x471
 	{value: 0x0010, lo: 0x80, hi: 0xaf},
 	{value: 0x0024, lo: 0xb0, hi: 0xb6},
-	// Block 0xd6, offset 0x46b
+	// Block 0xd8, offset 0x473
 	{value: 0x0014, lo: 0x80, hi: 0x83},
 	{value: 0x0010, lo: 0x90, hi: 0x99},
 	{value: 0x0010, lo: 0xa3, hi: 0xb7},
 	{value: 0x0010, lo: 0xbd, hi: 0xbf},
-	// Block 0xd7, offset 0x46f
+	// Block 0xd9, offset 0x477
 	{value: 0x0010, lo: 0x80, hi: 0x8f},
-	// Block 0xd8, offset 0x470
+	// Block 0xda, offset 0x478
 	{value: 0x0010, lo: 0x80, hi: 0x84},
 	{value: 0x0010, lo: 0x90, hi: 0xbe},
-	// Block 0xd9, offset 0x472
+	// Block 0xdb, offset 0x47a
 	{value: 0x0014, lo: 0x8f, hi: 0x9f},
-	// Block 0xda, offset 0x473
+	// Block 0xdc, offset 0x47b
 	{value: 0x0010, lo: 0x80, hi: 0xaa},
 	{value: 0x0010, lo: 0xb0, hi: 0xbc},
-	// Block 0xdb, offset 0x475
+	// Block 0xdd, offset 0x47d
 	{value: 0x0010, lo: 0x80, hi: 0x88},
 	{value: 0x0010, lo: 0x90, hi: 0x99},
 	{value: 0x0014, lo: 0x9d, hi: 0x9d},
 	{value: 0x0034, lo: 0x9e, hi: 0x9e},
 	{value: 0x0014, lo: 0xa0, hi: 0xa3},
-	// Block 0xdc, offset 0x47a
+	// Block 0xde, offset 0x482
 	{value: 0x0030, lo: 0xa5, hi: 0xa6},
 	{value: 0x0034, lo: 0xa7, hi: 0xa9},
 	{value: 0x0030, lo: 0xad, hi: 0xb2},
 	{value: 0x0014, lo: 0xb3, hi: 0xba},
 	{value: 0x0034, lo: 0xbb, hi: 0xbf},
-	// Block 0xdd, offset 0x47f
+	// Block 0xdf, offset 0x487
 	{value: 0x0034, lo: 0x80, hi: 0x82},
 	{value: 0x0024, lo: 0x85, hi: 0x89},
 	{value: 0x0034, lo: 0x8a, hi: 0x8b},
 	{value: 0x0024, lo: 0xaa, hi: 0xad},
-	// Block 0xde, offset 0x483
+	// Block 0xe0, offset 0x48b
 	{value: 0x0024, lo: 0x82, hi: 0x84},
-	// Block 0xdf, offset 0x484
+	// Block 0xe1, offset 0x48c
 	{value: 0x0013, lo: 0x80, hi: 0x99},
 	{value: 0x0012, lo: 0x9a, hi: 0xb3},
 	{value: 0x0013, lo: 0xb4, hi: 0xbf},
-	// Block 0xe0, offset 0x487
+	// Block 0xe2, offset 0x48f
 	{value: 0x0013, lo: 0x80, hi: 0x8d},
 	{value: 0x0012, lo: 0x8e, hi: 0x94},
 	{value: 0x0012, lo: 0x96, hi: 0xa7},
 	{value: 0x0013, lo: 0xa8, hi: 0xbf},
-	// Block 0xe1, offset 0x48b
+	// Block 0xe3, offset 0x493
 	{value: 0x0013, lo: 0x80, hi: 0x81},
 	{value: 0x0012, lo: 0x82, hi: 0x9b},
 	{value: 0x0013, lo: 0x9c, hi: 0x9c},
@@ -1927,12 +1911,12 @@
 	{value: 0x0012, lo: 0xb6, hi: 0xb9},
 	{value: 0x0012, lo: 0xbb, hi: 0xbb},
 	{value: 0x0012, lo: 0xbd, hi: 0xbf},
-	// Block 0xe2, offset 0x496
+	// Block 0xe4, offset 0x49e
 	{value: 0x0012, lo: 0x80, hi: 0x83},
 	{value: 0x0012, lo: 0x85, hi: 0x8f},
 	{value: 0x0013, lo: 0x90, hi: 0xa9},
 	{value: 0x0012, lo: 0xaa, hi: 0xbf},
-	// Block 0xe3, offset 0x49a
+	// Block 0xe5, offset 0x4a2
 	{value: 0x0012, lo: 0x80, hi: 0x83},
 	{value: 0x0013, lo: 0x84, hi: 0x85},
 	{value: 0x0013, lo: 0x87, hi: 0x8a},
@@ -1941,64 +1925,64 @@
 	{value: 0x0012, lo: 0x9e, hi: 0xb7},
 	{value: 0x0013, lo: 0xb8, hi: 0xb9},
 	{value: 0x0013, lo: 0xbb, hi: 0xbe},
-	// Block 0xe4, offset 0x4a2
+	// Block 0xe6, offset 0x4aa
 	{value: 0x0013, lo: 0x80, hi: 0x84},
 	{value: 0x0013, lo: 0x86, hi: 0x86},
 	{value: 0x0013, lo: 0x8a, hi: 0x90},
 	{value: 0x0012, lo: 0x92, hi: 0xab},
 	{value: 0x0013, lo: 0xac, hi: 0xbf},
-	// Block 0xe5, offset 0x4a7
+	// Block 0xe7, offset 0x4af
 	{value: 0x0013, lo: 0x80, hi: 0x85},
 	{value: 0x0012, lo: 0x86, hi: 0x9f},
 	{value: 0x0013, lo: 0xa0, hi: 0xb9},
 	{value: 0x0012, lo: 0xba, hi: 0xbf},
-	// Block 0xe6, offset 0x4ab
+	// Block 0xe8, offset 0x4b3
 	{value: 0x0012, lo: 0x80, hi: 0x93},
 	{value: 0x0013, lo: 0x94, hi: 0xad},
 	{value: 0x0012, lo: 0xae, hi: 0xbf},
-	// Block 0xe7, offset 0x4ae
+	// Block 0xe9, offset 0x4b6
 	{value: 0x0012, lo: 0x80, hi: 0x87},
 	{value: 0x0013, lo: 0x88, hi: 0xa1},
 	{value: 0x0012, lo: 0xa2, hi: 0xbb},
 	{value: 0x0013, lo: 0xbc, hi: 0xbf},
-	// Block 0xe8, offset 0x4b2
+	// Block 0xea, offset 0x4ba
 	{value: 0x0013, lo: 0x80, hi: 0x95},
 	{value: 0x0012, lo: 0x96, hi: 0xaf},
 	{value: 0x0013, lo: 0xb0, hi: 0xbf},
-	// Block 0xe9, offset 0x4b5
+	// Block 0xeb, offset 0x4bd
 	{value: 0x0013, lo: 0x80, hi: 0x89},
 	{value: 0x0012, lo: 0x8a, hi: 0xa5},
 	{value: 0x0013, lo: 0xa8, hi: 0xbf},
-	// Block 0xea, offset 0x4b8
+	// Block 0xec, offset 0x4c0
 	{value: 0x0013, lo: 0x80, hi: 0x80},
 	{value: 0x0012, lo: 0x82, hi: 0x9a},
 	{value: 0x0012, lo: 0x9c, hi: 0xa1},
 	{value: 0x0013, lo: 0xa2, hi: 0xba},
 	{value: 0x0012, lo: 0xbc, hi: 0xbf},
-	// Block 0xeb, offset 0x4bd
+	// Block 0xed, offset 0x4c5
 	{value: 0x0012, lo: 0x80, hi: 0x94},
 	{value: 0x0012, lo: 0x96, hi: 0x9b},
 	{value: 0x0013, lo: 0x9c, hi: 0xb4},
 	{value: 0x0012, lo: 0xb6, hi: 0xbf},
-	// Block 0xec, offset 0x4c1
+	// Block 0xee, offset 0x4c9
 	{value: 0x0012, lo: 0x80, hi: 0x8e},
 	{value: 0x0012, lo: 0x90, hi: 0x95},
 	{value: 0x0013, lo: 0x96, hi: 0xae},
 	{value: 0x0012, lo: 0xb0, hi: 0xbf},
-	// Block 0xed, offset 0x4c5
+	// Block 0xef, offset 0x4cd
 	{value: 0x0012, lo: 0x80, hi: 0x88},
 	{value: 0x0012, lo: 0x8a, hi: 0x8f},
 	{value: 0x0013, lo: 0x90, hi: 0xa8},
 	{value: 0x0012, lo: 0xaa, hi: 0xbf},
-	// Block 0xee, offset 0x4c9
+	// Block 0xf0, offset 0x4d1
 	{value: 0x0012, lo: 0x80, hi: 0x82},
 	{value: 0x0012, lo: 0x84, hi: 0x89},
 	{value: 0x0017, lo: 0x8a, hi: 0x8b},
 	{value: 0x0010, lo: 0x8e, hi: 0xbf},
-	// Block 0xef, offset 0x4cd
+	// Block 0xf1, offset 0x4d5
 	{value: 0x0010, lo: 0x80, hi: 0x84},
 	{value: 0x0034, lo: 0x90, hi: 0x96},
-	// Block 0xf0, offset 0x4cf
+	// Block 0xf2, offset 0x4d7
 	{value: 0x0010, lo: 0x80, hi: 0x83},
 	{value: 0x0010, lo: 0x85, hi: 0x9f},
 	{value: 0x0010, lo: 0xa1, hi: 0xa2},
@@ -2008,30 +1992,36 @@
 	{value: 0x0010, lo: 0xb4, hi: 0xb7},
 	{value: 0x0010, lo: 0xb9, hi: 0xb9},
 	{value: 0x0010, lo: 0xbb, hi: 0xbb},
-	// Block 0xf1, offset 0x4d8
+	// Block 0xf3, offset 0x4e0
 	{value: 0x0010, lo: 0x80, hi: 0x89},
 	{value: 0x0010, lo: 0x8b, hi: 0x9b},
 	{value: 0x0010, lo: 0xa1, hi: 0xa3},
 	{value: 0x0010, lo: 0xa5, hi: 0xa9},
 	{value: 0x0010, lo: 0xab, hi: 0xbb},
-	// Block 0xf2, offset 0x4dd
+	// Block 0xf4, offset 0x4e5
 	{value: 0x0013, lo: 0xb0, hi: 0xbf},
-	// Block 0xf3, offset 0x4de
+	// Block 0xf5, offset 0x4e6
 	{value: 0x0013, lo: 0x80, hi: 0x89},
 	{value: 0x0013, lo: 0x90, hi: 0xa9},
 	{value: 0x0013, lo: 0xb0, hi: 0xbf},
-	// Block 0xf4, offset 0x4e1
+	// Block 0xf6, offset 0x4e9
 	{value: 0x0013, lo: 0x80, hi: 0x89},
-	// Block 0xf5, offset 0x4e2
+	// Block 0xf7, offset 0x4ea
 	{value: 0x0014, lo: 0x81, hi: 0x81},
 	{value: 0x0014, lo: 0xa0, hi: 0xbf},
-	// Block 0xf6, offset 0x4e4
+	// Block 0xf8, offset 0x4ec
 	{value: 0x0014, lo: 0x80, hi: 0xbf},
-	// Block 0xf7, offset 0x4e5
+	// Block 0xf9, offset 0x4ed
 	{value: 0x0014, lo: 0x80, hi: 0xaf},
 }
 
-// exceptions: 1595 bytes
-var exceptions = "\x00\x00\x12SSSs\x00\x18i̇\x00\bI\x00\x18ʼN\x00\bS\x00\x12džDž\x00\x12džDŽ\x00\x12DŽDž\x00\x12ljLj\x00\x12ljLJ\x00\x12LJLj\x00\x12njNj\x00\x12njNJ\x00\x12NJNj\x00\x18J̌\x00\x12dzDz\x00\x12dzDZ\x00\x12DZDz\x00\x18ⱥ\x00\x18ⱦ\x00\x18Ȿ\x00\x18Ɀ\x00\x18Ɐ\x00\x18Ɑ\x00\x18Ɒ\x00\x18Ɜ\x00\x18Ɡ\x00\x18Ɥ\x00\x18Ɦ\x00\x18Ɫ\x00\x18Ɬ\x00\x18Ɱ\x00\x18Ɽ\x00\x18Ʇ\x00\x18Ʞ\x000Ϊ́\x000Ϋ́\x00$ԵՒԵւ\x00\x18ⴀ\x00\x18ⴁ\x00\x18ⴂ\x00\x18ⴃ\x00\x18ⴄ\x00\x18ⴅ\x00\x18ⴆ\x00\x18ⴇ\x00\x18ⴈ\x00\x18ⴉ\x00\x18ⴊ\x00\x18ⴋ\x00\x18ⴌ\x00\x18ⴍ\x00\x18ⴎ\x00\x18ⴏ\x00\x18ⴐ\x00\x18ⴑ\x00\x18ⴒ\x00\x18ⴓ\x00\x18ⴔ\x00\x18ⴕ\x00\x18ⴖ\x00\x18ⴗ\x00\x18ⴘ\x00\x18ⴙ\x00\x18ⴚ\x00\x18ⴛ\x00\x18ⴜ\x00\x18ⴝ\x00\x18ⴞ\x00\x18ⴟ\x00\x18ⴠ\x00\x18ⴡ\x00\x18ⴢ\x00\x18ⴣ\x00\x18ⴤ\x00\x18ⴥ\x00\x18ⴧ\x00\x18ⴭ\x00\x18Ᵹ\x00\x18Ᵽ\x00\x18H̱\x00\x18T̈\x00\x18W̊\x00\x18Y̊\x00\x18Aʾ\x00\x10ß\x00 Υ̓\x000Υ̓̀\x000Υ̓́\x000Υ̓͂\x00+ἈΙᾈ\x00+ἉΙᾉ\x00+ἊΙᾊ\x00+ἋΙᾋ\x00+ἌΙᾌ\x00+ἍΙᾍ\x00+ἎΙᾎ\x00+ἏΙᾏ\x00\x1dᾀἈΙ\x00\x1dᾁἉΙ\x00\x1dᾂἊΙ\x00\x1dᾃἋΙ\x00\x1dᾄἌΙ\x00\x1dᾅἍΙ\x00\x1dᾆἎΙ\x00\x1dᾇἏΙ\x00+ἨΙᾘ\x00+ἩΙᾙ\x00+ἪΙᾚ\x00+ἫΙᾛ\x00+ἬΙᾜ\x00+ἭΙᾝ\x00+ἮΙᾞ\x00+ἯΙᾟ\x00\x1dᾐἨΙ\x00\x1dᾑἩΙ\x00\x1dᾒἪΙ\x00\x1dᾓἫΙ\x00\x1dᾔἬΙ\x00\x1dᾕἭΙ\x00\x1dᾖἮΙ\x00\x1dᾗἯΙ\x00+ὨΙᾨ\x00+ὩΙᾩ\x00+ὪΙᾪ\x00+ὫΙᾫ\x00+ὬΙᾬ\x00+ὭΙᾭ\x00+ὮΙᾮ\x00+ὯΙᾯ\x00\x1dᾠὨΙ\x00\x1dᾡὩΙ\x00\x1dᾢὪΙ\x00\x1dᾣὫΙ\x00\x1dᾤὬΙ\x00\x1dᾥὭΙ\x00\x1dᾦὮΙ\x00\x1dᾧὯΙ\x00-ᾺΙᾺͅ\x00#ΑΙᾼ\x00$ΆΙΆͅ\x00 Α͂\x006Α͂Ιᾼ͂\x00\x1cᾳΑΙ\x00\x10Ι\x00-ῊΙῊͅ\x00#ΗΙῌ\x00$ΉΙΉͅ\x00 Η͂\x006Η͂Ιῌ͂\x00\x1cῃΗΙ\x000Ϊ̀\x000Ϊ́\x00 Ι͂\x000Ϊ͂\x000Ϋ̀\x000Ϋ́\x00 Ρ̓\x00 Υ͂\x000Ϋ͂\x00-ῺΙῺͅ\x00#ΩΙῼ\x00$ΏΙΏͅ\x00 Ω͂\x006Ω͂Ιῼ͂\x00\x1cῳΩΙ\x00\x10ω\x00\bk\x00\x10å\x00\x10ɫ\x00\x18ᵽ\x00\x10ɽ\x00\x10Ⱥ\x00\x10Ⱦ\x00\x10ɑ\x00\x10ɱ\x00\x10ɐ\x00\x10ɒ\x00\x10ȿ\x00\x10ɀ\x00\x18Ⴀ\x00\x18Ⴁ\x00\x18Ⴂ\x00\x18Ⴃ\x00\x18Ⴄ\x00\x18Ⴅ\x00\x18Ⴆ\x00\x18Ⴇ\x00\x18Ⴈ\x00\x18Ⴉ\x00\x18Ⴊ\x00\x18Ⴋ\x00\x18Ⴌ\x00\x18Ⴍ\x00\x18Ⴎ\x00\x18Ⴏ\x00\x18Ⴐ\x00\x18Ⴑ\x00\x18Ⴒ\x00\x18Ⴓ\x00\x18Ⴔ\x00\x18Ⴕ\x00\x18Ⴖ\x00\x18Ⴗ\x00\x18Ⴘ\x00\x18Ⴙ\x00\x18Ⴚ\x00\x18Ⴛ\x00\x18Ⴜ\x00\x18Ⴝ\x00\x18Ⴞ\x00\x18Ⴟ\x00\x18Ⴠ\x00\x18Ⴡ\x00\x18Ⴢ\x00\x18Ⴣ\x00\x18Ⴤ\x00\x18Ⴥ\x00\x18Ⴧ\x00\x18Ⴭ\x00\x18ᵹ\x00\x10ɥ\x00\x10ɦ\x00\x10ɜ\x00\x10ɡ\x00\x10ɬ\x00\x10ʞ\x00\x10ʇ\x00\x12FFFf\x00\x12FIFi\x00\x12FLFl\x00\x1bFFIFfi\x00\x1bFFLFfl\x00\x12STSt\x00\x12STSt\x00$ՄՆՄն\x00$ՄԵՄե\x00$ՄԻՄի\x00$ՎՆՎն\x00$ՄԽՄխ"
+// UnicodeVersion is the Unicode version from which the tables in this package are derived.
+const UnicodeVersion = "7.0.0"
 
-// Total table size 12739 bytes (12KiB)
+// xorData: 184 bytes
+var xorData = "\x00\f)\x00\x06\a\x00\x01?\x00\x0f\x03\x00\x0f\x12\x00\x0f\x1f\x00\x0f\x1d\x00\x01\x13\x00\x0f\x16\x00\x0f\v\x00\x0f3\x00\x0f7\x00\x01#\x00\x0f?\x00\x0e'\x00\x0f/\x00\x0e>\x00\x0f*\x00\f&\x00\f*\x00\f;\x00\f9\x00\f%\x00\x01\b\x00\x03\r\x00\x03\t\x00\x03\x1c\x00\x02\x06\x00\x02\x02\x00\x02\f\x00\x01\x00\x00\x01\x03\x00\x01\x01\x00\x01 \x00\x01!\x00\x01\x02\x00\x01\t\x00\x013\x00\x016\x00\x01*\x00\x01\x10\x00\x01\f\x00\x03\x10\x00\x036 \x00\x037 \x00\v(\x04\x00\x03\x04\x1e\x00\x03;\x00\x03\n\x00\x02:\x00\x02>\x00\x02,\x00\x02\x00\x00\x02\x10\x00\x01<\x00\x01&\x00\x01.\x00\x010\x00\x01\x18\x00\x01("
+
+// exceptions: 1175 bytes
+var exceptions = "\x00\x00\x12SSSs\x00\x18i̇\x00\bI\x00\x18ʼN\x00\bS\x00\x12džDž\x00\x12džDŽ\x00\x12DŽDž\x00\x12ljLj\x00\x12ljLJ\x00\x12LJLj\x00\x12njNj\x00\x12njNJ\x00\x12NJNj\x00\x18J̌\x00\x12dzDz\x00\x12dzDZ\x00\x12DZDz\x00\x18ⱥ\x00\x18ⱦ\x00\x18Ȿ\x00\x18Ɀ\x00\x18Ɐ\x00\x18Ɑ\x00\x18Ɒ\x00\x18Ɜ\x00\x18Ɡ\x00\x18Ɥ\x00\x18Ɦ\x00\x18Ɫ\x00\x18Ɬ\x00\x18Ɱ\x00\x18Ɽ\x00\x18Ʇ\x00\x18Ʞ\x000Ϊ́\x000Ϋ́\x00$ԵՒԵւ\x00\x18H̱\x00\x18T̈\x00\x18W̊\x00\x18Y̊\x00\x18Aʾ\x00\x10ß\x00 Υ̓\x000Υ̓̀\x000Υ̓́\x000Υ̓͂\x00+ἈΙᾈ\x00+ἉΙᾉ\x00+ἊΙᾊ\x00+ἋΙᾋ\x00+ἌΙᾌ\x00+ἍΙᾍ\x00+ἎΙᾎ\x00+ἏΙᾏ\x00\x1dᾀἈΙ\x00\x1dᾁἉΙ\x00\x1dᾂἊΙ\x00\x1dᾃἋΙ\x00\x1dᾄἌΙ\x00\x1dᾅἍΙ\x00\x1dᾆἎΙ\x00\x1dᾇἏΙ\x00+ἨΙᾘ\x00+ἩΙᾙ\x00+ἪΙᾚ\x00+ἫΙᾛ\x00+ἬΙᾜ\x00+ἭΙᾝ\x00+ἮΙᾞ\x00+ἯΙᾟ\x00\x1dᾐἨΙ\x00\x1dᾑἩΙ\x00\x1dᾒἪΙ\x00\x1dᾓἫΙ\x00\x1dᾔἬΙ\x00\x1dᾕἭΙ\x00\x1dᾖἮΙ\x00\x1dᾗἯΙ\x00+ὨΙᾨ\x00+ὩΙᾩ\x00+ὪΙᾪ\x00+ὫΙᾫ\x00+ὬΙᾬ\x00+ὭΙᾭ\x00+ὮΙᾮ\x00+ὯΙᾯ\x00\x1dᾠὨΙ\x00\x1dᾡὩΙ\x00\x1dᾢὪΙ\x00\x1dᾣὫΙ\x00\x1dᾤὬΙ\x00\x1dᾥὭΙ\x00\x1dᾦὮΙ\x00\x1dᾧὯΙ\x00-ᾺΙᾺͅ\x00#ΑΙᾼ\x00$ΆΙΆͅ\x00 Α͂\x006Α͂Ιᾼ͂\x00\x1cᾳΑΙ\x00\x10Ι\x00-ῊΙῊͅ\x00#ΗΙῌ\x00$ΉΙΉͅ\x00 Η͂\x006Η͂Ιῌ͂\x00\x1cῃΗΙ\x000Ϊ̀\x000Ϊ́\x00 Ι͂\x000Ϊ͂\x000Ϋ̀\x000Ϋ́\x00 Ρ̓\x00 Υ͂\x000Ϋ͂\x00-ῺΙῺͅ\x00#ΩΙῼ\x00$ΏΙΏͅ\x00 Ω͂\x006Ω͂Ιῼ͂\x00\x1cῳΩΙ\x00\x10ω\x00\bk\x00\x10å\x00\x10ɫ\x00\x10ɽ\x00\x10Ⱥ\x00\x10Ⱦ\x00\x10ɑ\x00\x10ɱ\x00\x10ɐ\x00\x10ɒ\x00\x10ȿ\x00\x10ɀ\x00\x10ɥ\x00\x10ɦ\x00\x10ɜ\x00\x10ɡ\x00\x10ɬ\x00\x10ʞ\x00\x10ʇ\x00\x12FFFf\x00\x12FIFi\x00\x12FLFl\x00\x1bFFIFfi\x00\x1bFFLFfl\x00\x12STSt\x00\x12STSt\x00$ՄՆՄն\x00$ՄԵՄե\x00$ՄԻՄի\x00$ՎՆՎն\x00$ՄԽՄխ"
+
+// Total table size 12099 bytes (11KiB)
diff --git a/go/src/golang.org/x/text/cases/tables_test.go b/go/src/golang.org/x/text/cases/tables_test.go
index c6ec03a..d1f0d64 100644
--- a/go/src/golang.org/x/text/cases/tables_test.go
+++ b/go/src/golang.org/x/text/cases/tables_test.go
@@ -1,6 +1,4 @@
-// This file was generated by
-//     go run gen*.go -url=http://www.unicode.org/Public/7.0.0/ucd
-// DO NOT EDIT
+// This file was generated by go generate; DO NOT EDIT
 
 package cases
 
diff --git a/go/src/golang.org/x/text/cases/trieval.go b/go/src/golang.org/x/text/cases/trieval.go
index 65c44b1..988fcb9 100644
--- a/go/src/golang.org/x/text/cases/trieval.go
+++ b/go/src/golang.org/x/text/cases/trieval.go
@@ -1,6 +1,4 @@
-// This file was generated by
-//     go run gen*.go -url=http://www.unicode.org/Public/7.0.0/ucd
-// DO NOT EDIT
+// This file was generated by go generate; DO NOT EDIT
 
 package cases
 
@@ -18,8 +16,10 @@
 //
 //   if (exception) {
 //     15..5  unsigned exception index
+//         4  unused
 //   } else {
-//     15..6  XOR pattern for case mapping
+//     15..7  XOR pattern or index to XOR pattern for case mapping
+//         6  index: interpret the XOR pattern as an index
 //      5..4  CCC: zero (normal or break), above or other
 //   }
 //      3  exception: interpret this value as an exception index
@@ -44,9 +44,8 @@
 	exceptionShift   = 5
 	numExceptionBits = 11
 
-	xorShift       = 6
-	xorBitsPerByte = 6
-	numXORBits     = 10
+	xorIndexBit = 1 << 6
+	xorShift    = 7
 
 	// There is no mapping if all xor bits and the exception bit are zero.
 	hasMappingMask = 0xffc0 | exceptionBit
diff --git a/go/src/golang.org/x/text/cldr/cldr.go b/go/src/golang.org/x/text/cldr/cldr.go
index da70515..2a3c1d0 100644
--- a/go/src/golang.org/x/text/cldr/cldr.go
+++ b/go/src/golang.org/x/text/cldr/cldr.go
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+//go:generate go run makexml.go -output xml.go
+
 // Package cldr provides a parser for LDML and related XML formats.
 // This package is inteded to be used by the table generation tools
 // for the various internationalization-related packages.
@@ -14,8 +16,6 @@
 // Older versions may not work.
 package cldr // import "golang.org/x/text/cldr"
 
-//go:generate go run makexml.go -output xml.go
-
 import (
 	"fmt"
 	"sort"
diff --git a/go/src/golang.org/x/text/cldr/makexml.go b/go/src/golang.org/x/text/cldr/makexml.go
index a59fff1..6114d01 100644
--- a/go/src/golang.org/x/text/cldr/makexml.go
+++ b/go/src/golang.org/x/text/cldr/makexml.go
@@ -13,39 +13,35 @@
 	"encoding/xml"
 	"flag"
 	"fmt"
-	"go/format"
 	"io"
 	"io/ioutil"
 	"log"
-	"net/http"
 	"os"
-	"path"
-	"path/filepath"
 	"regexp"
-	"strconv"
 	"strings"
+
+	"golang.org/x/text/internal/gen"
 )
 
-var (
-	url = flag.String("url",
-		"http://www.unicode.org/Public/cldr/26/core.zip",
-		"Path to CLDR directory or zip archive.")
-	localDir = flag.String("local",
-		"",
-		"directory containing local data files; for debugging only.")
-	outputFile = flag.String("output", "xml.go", "output file name")
-)
+var outputFile = flag.String("output", "xml.go", "output file name")
 
 func main() {
 	flag.Parse()
 
-	z := openArchive(url)
+	r := gen.OpenCLDRCoreZip()
+	buffer, err := ioutil.ReadAll(r)
+	if err != nil {
+		log.Fatal("Could not read zip file")
+	}
+	r.Close()
+	z, err := zip.NewReader(bytes.NewReader(buffer), int64(len(buffer)))
+	if err != nil {
+		log.Fatalf("Could not read zip archive: %v", err)
+	}
 
 	var buf bytes.Buffer
 
-	fmt.Fprintf(&buf, header, *url)
-
-	var version uint64
+	version := gen.CLDRVersion()
 
 	for _, dtd := range files {
 		for _, f := range z.File {
@@ -57,30 +53,20 @@
 				b.parseDTD(r)
 				b.resolve(b.index[dtd.top[0]])
 				b.write()
-				if version == 0 {
-					version = b.version
-				} else if b.version != 0 && version != b.version {
-					log.Fatalf("main: inconsistent versions: found %d; want %d", b.version, version)
+				if b.version != "" && version != b.version {
+					println(f.Name)
+					log.Fatalf("main: inconsistent versions: found %s; want %s", b.version, version)
 				}
 				break
 			}
 		}
 	}
-	fmt.Fprintf(&buf, "\nconst Version = \"%d\"\n", version)
+	fmt.Fprintln(&buf, "// Version is the version of CLDR from which the XML definitions are generated.")
+	fmt.Fprintf(&buf, "const Version = %q\n", version)
 
-	data, err := format.Source(buf.Bytes())
-	failOnError(err)
-	failOnError(ioutil.WriteFile(*outputFile, data, 0644))
+	gen.WriteGoFile(*outputFile, "cldr", buf.Bytes())
 }
 
-const header = `// Generated by running
-//       makexml --url=%s
-// automatically with go generate.
-// DO NOT EDIT
-
-package cldr
-`
-
 func failOnError(err error) {
 	if err != nil {
 		log.New(os.Stderr, "", log.Lshortfile).Output(2, err.Error())
@@ -199,7 +185,7 @@
 
 var (
 	reHead  = regexp.MustCompile(` *(\w+) +([\w\-]+)`)
-	reAttr  = regexp.MustCompile(` *(\w+) *(?:(\w+)|\(([\w\- \|]+)\)) *(?:#([A-Z]*) *(?:\"(\d+)[\.\d]*\")?)? *("[\w\-:]*")?`)
+	reAttr  = regexp.MustCompile(` *(\w+) *(?:(\w+)|\(([\w\- \|]+)\)) *(?:#([A-Z]*) *(?:\"([\.\d+])\")?)? *("[\w\-:]*")?`)
 	reElem  = regexp.MustCompile(`^ *(EMPTY|ANY|\(.*\)[\*\+\?]?) *$`)
 	reToken = regexp.MustCompile(`\w\-`)
 )
@@ -211,7 +197,7 @@
 	index   map[string]*element
 	elem    []*element
 	info    dtd
-	version uint64
+	version string
 }
 
 func makeBuilder(w io.Writer, d dtd) builder {
@@ -267,8 +253,7 @@
 				log.Fatal(fmt.Errorf("parseDTD: invalid attribute %q", string(dir)))
 			}
 			if m[4] == "FIXED" {
-				b.version, err = strconv.ParseUint(m[5], 10, 16)
-				failOnError(err)
+				b.version = m[5]
 			} else {
 				switch m[1] {
 				case "draft", "references", "alt", "validSubLocales", "standard" /* in Common */ :
@@ -413,29 +398,3 @@
 		}
 	}
 }
-
-// openArchive gets the file for the given url and opens it as a Zip archive.
-func openArchive(url *string) *zip.Reader {
-	var r io.ReadCloser
-	if *localDir != "" {
-		dir, err := filepath.Abs(*localDir)
-		failOnError(err)
-		r, err = os.Open(filepath.Join(dir, path.Base(*url)))
-		failOnError(err)
-	} else {
-		resp, err := http.Get(*url)
-		if err != nil {
-			log.Fatalf("HTTP GET: %v", err)
-		}
-		if resp.StatusCode != 200 {
-			log.Fatalf(`bad GET status for "%s": %s`, *url, resp.Status)
-		}
-		r = resp.Body
-	}
-	buffer, err := ioutil.ReadAll(r)
-	r.Close()
-	failOnError(err)
-	archive, err := zip.NewReader(bytes.NewReader(buffer), int64(len(buffer)))
-	failOnError(err)
-	return archive
-}
diff --git a/go/src/golang.org/x/text/cldr/xml.go b/go/src/golang.org/x/text/cldr/xml.go
index fef4a32..e5edaa7 100644
--- a/go/src/golang.org/x/text/cldr/xml.go
+++ b/go/src/golang.org/x/text/cldr/xml.go
@@ -1,7 +1,4 @@
-// Generated by running
-//       makexml --url=http://www.unicode.org/Public/cldr/26/core.zip
-// automatically with go generate.
-// DO NOT EDIT
+// This file was generated by go generate; DO NOT EDIT
 
 package cldr
 
@@ -193,6 +190,7 @@
 		Common
 		MeasurementSystem []*struct {
 			Common
+			Category    string `xml:"category,attr"`
 			Territories string `xml:"territories,attr"`
 		} `xml:"measurementSystem"`
 		PaperSize []*struct {
@@ -493,7 +491,7 @@
 			} `xml:"languageMatch"`
 		} `xml:"languageMatches"`
 	} `xml:"languageMatching"`
-	DayPeriodRuleSet *struct {
+	DayPeriodRuleSet []*struct {
 		Common
 		DayPeriodRules []*struct {
 			Common
@@ -799,6 +797,14 @@
 			} `xml:"ruleset"`
 		} `xml:"rulesetGrouping"`
 	} `xml:"rbnf"`
+	Annotations *struct {
+		Common
+		Annotation []*struct {
+			Common
+			Cp  string `xml:"cp,attr"`
+			Tts string `xml:"tts,attr"`
+		} `xml:"annotation"`
+	} `xml:"annotations"`
 	Metadata *struct {
 		Common
 		CasingData *struct {
@@ -1377,4 +1383,4 @@
 }
 
 // Version is the version of CLDR from which the XML definitions are generated.
-const Version = "26"
+const Version = "27.0.1"
diff --git a/go/src/golang.org/x/text/codereview.cfg b/go/src/golang.org/x/text/codereview.cfg
new file mode 100644
index 0000000..3f8b14b
--- /dev/null
+++ b/go/src/golang.org/x/text/codereview.cfg
@@ -0,0 +1 @@
+issuerepo: golang/go
diff --git a/go/src/golang.org/x/text/collate/Makefile b/go/src/golang.org/x/text/collate/Makefile
deleted file mode 100644
index 1691ecb..0000000
--- a/go/src/golang.org/x/text/collate/Makefile
+++ /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.
-
-CLEANFILES+=maketables
-
-maketables: maketables.go
-	go build $^
-
-tables:	maketables
-	./maketables > tables.go
-	gofmt -w -s tables.go
-
-# Build (but do not run) maketables during testing,
-# just to make sure it still compiles.
-testshort: maketables
diff --git a/go/src/golang.org/x/text/collate/build/builder.go b/go/src/golang.org/x/text/collate/build/builder.go
index f4a8324..54f65f3 100644
--- a/go/src/golang.org/x/text/collate/build/builder.go
+++ b/go/src/golang.org/x/text/collate/build/builder.go
@@ -464,8 +464,8 @@
 }
 
 // Build builds the root Collator.
-// TODO: return Weigher instead
-func (b *Builder) Build() (colltab.Weigher, error) {
+// TODO: return Weighter instead
+func (b *Builder) Build() (colltab.Weighter, error) {
 	t, err := b.build()
 	if err != nil {
 		return nil, err
@@ -478,7 +478,7 @@
 }
 
 // Build builds a Collator for Tailoring t.
-func (t *Tailoring) Build() (colltab.Weigher, error) {
+func (t *Tailoring) Build() (colltab.Weighter, error) {
 	// TODO: implement.
 	return nil, nil
 }
diff --git a/go/src/golang.org/x/text/collate/collate.go b/go/src/golang.org/x/text/collate/collate.go
index 09d29aa..a0f04ff 100644
--- a/go/src/golang.org/x/text/collate/collate.go
+++ b/go/src/golang.org/x/text/collate/collate.go
@@ -2,18 +2,21 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// TODO: remove hard-coded versions when we have implemented fractional weights.
+// The current implementation is incompatible with later CLDR versions.
+//go:generate go run maketables.go -cldr=23 -unicode=6.2.0
+
 // Package collate contains types for comparing and sorting Unicode strings
 // according to a given collation order.  Package locale provides a high-level
 // interface to collation. Users should typically use that package instead.
 package collate // import "golang.org/x/text/collate"
 
-//go:generate go run maketables.go -output tables.go
-
 import (
 	"bytes"
 	"strings"
 
 	"golang.org/x/text/collate/colltab"
+	newcolltab "golang.org/x/text/internal/colltab"
 	"golang.org/x/text/language"
 )
 
@@ -34,40 +37,54 @@
 
 // Supported returns the list of languages for which collating differs from its parent.
 func Supported() []language.Tag {
-	ids := strings.Split(availableLocales, ",")
-	tags := make([]language.Tag, len(ids))
-	for i, s := range ids {
-		tags[i] = language.Make(s)
-	}
-	return tags
+	// TODO: use language.Coverage instead.
+
+	t := make([]language.Tag, len(tags))
+	copy(t, tags)
+	return t
 }
 
-var matcher = language.NewMatcher(Supported())
+func init() {
+	ids := strings.Split(availableLocales, ",")
+	tags = make([]language.Tag, len(ids))
+	for i, s := range ids {
+		tags[i] = language.Raw.MustParse(s)
+	}
+}
+
+var tags []language.Tag
 
 // New returns a new Collator initialized for the given locale.
 func New(t language.Tag, o ...Option) *Collator {
-	tt, index, _ := matcher.Match(t)
+	index := newcolltab.MatchLang(t, tags)
 	c := newCollator(colltab.Init(locales[index]))
 
-	// Set the default options for the retrieved locale.
-	c.setFromTag(tt)
-
 	// Set options from the user-supplied tag.
 	c.setFromTag(t)
 
 	// Set the user-supplied options.
 	c.setOptions(o)
 
+	c.init()
 	return c
 }
 
-// NewFromTable returns a new Collator for the given Weigher.
-func NewFromTable(w colltab.Weigher, o ...Option) *Collator {
+// NewFromTable returns a new Collator for the given Weighter.
+func NewFromTable(w colltab.Weighter, o ...Option) *Collator {
 	c := newCollator(w)
 	c.setOptions(o)
+	c.init()
 	return c
 }
 
+func (c *Collator) init() {
+	if c.numeric {
+		c.t = colltab.NewNumericWeighter(c.t)
+	}
+	c._iter[0].init(c)
+	c._iter[1].init(c)
+}
+
 // Buffer holds keys generated by Key and KeyString.
 type Buffer struct {
 	buf [4096]byte
@@ -90,8 +107,8 @@
 func (c *Collator) Compare(a, b []byte) int {
 	// TODO: skip identical prefixes once we have a fast way to detect if a rune is
 	// part of a contraction. This would lead to roughly a 10% speedup for the colcmp regtest.
-	c.iter(0).setInput(a)
-	c.iter(1).setInput(b)
+	c.iter(0).SetInput(a)
+	c.iter(1).SetInput(b)
 	if res := c.compare(); res != 0 {
 		return res
 	}
@@ -106,8 +123,8 @@
 func (c *Collator) CompareString(a, b string) int {
 	// TODO: skip identical prefixes once we have a fast way to detect if a rune is
 	// part of a contraction. This would lead to roughly a 10% speedup for the colcmp regtest.
-	c.iter(0).setInputString(a)
-	c.iter(1).setInputString(b)
+	c.iter(0).SetInputString(a)
+	c.iter(1).SetInputString(b)
 	if res := c.compare(); res != 0 {
 		return res
 	}
@@ -202,166 +219,41 @@
 
 func (c *Collator) getColElems(str []byte) []colltab.Elem {
 	i := c.iter(0)
-	i.setInput(str)
-	for i.next() {
+	i.SetInput(str)
+	for i.Next() {
 	}
-	return i.ce
+	return i.Elems
 }
 
 func (c *Collator) getColElemsString(str string) []colltab.Elem {
 	i := c.iter(0)
-	i.setInputString(str)
-	for i.next() {
+	i.SetInputString(str)
+	for i.Next() {
 	}
-	return i.ce
+	return i.Elems
 }
 
 type iter struct {
-	bytes []byte
-	str   string
+	wa [512]colltab.Elem
 
-	wa  [512]colltab.Elem
-	ce  []colltab.Elem
+	newcolltab.Iter
 	pce int
-	nce int // nce <= len(nce)
-
-	prevCCC  uint8
-	pStarter int
-
-	t colltab.Weigher
 }
 
 func (i *iter) init(c *Collator) {
-	i.t = c.t
-	i.ce = i.wa[:0]
-}
-
-func (i *iter) reset() {
-	i.ce = i.ce[:0]
-	i.nce = 0
-	i.prevCCC = 0
-	i.pStarter = 0
-}
-
-func (i *iter) setInput(s []byte) *iter {
-	i.bytes = s
-	i.str = ""
-	i.reset()
-	return i
-}
-
-func (i *iter) setInputString(s string) *iter {
-	i.str = s
-	i.bytes = nil
-	i.reset()
-	return i
-}
-
-func (i *iter) done() bool {
-	return len(i.str) == 0 && len(i.bytes) == 0
-}
-
-func (i *iter) tail(n int) {
-	if i.bytes == nil {
-		i.str = i.str[n:]
-	} else {
-		i.bytes = i.bytes[n:]
-	}
-}
-
-func (i *iter) appendNext() int {
-	var sz int
-	if i.bytes == nil {
-		i.ce, sz = i.t.AppendNextString(i.ce, i.str)
-	} else {
-		i.ce, sz = i.t.AppendNext(i.ce, i.bytes)
-	}
-	return sz
-}
-
-// next appends Elems to the internal array until it adds an element with CCC=0.
-// In the majority of cases, a Elem with a primary value > 0 will have
-// a CCC of 0. The CCC values of colation elements are also used to detect if the
-// input string was not normalized and to adjust the result accordingly.
-func (i *iter) next() bool {
-	for !i.done() {
-		p0 := len(i.ce)
-		sz := i.appendNext()
-		i.tail(sz)
-		last := len(i.ce) - 1
-		if ccc := i.ce[last].CCC(); ccc == 0 {
-			i.nce = len(i.ce)
-			i.pStarter = last
-			i.prevCCC = 0
-			return true
-		} else if p0 < last && i.ce[p0].CCC() == 0 {
-			// set i.nce to only cover part of i.ce for which ccc == 0 and
-			// use rest the next call to next.
-			for p0++; p0 < last && i.ce[p0].CCC() == 0; p0++ {
-			}
-			i.nce = p0
-			i.pStarter = p0 - 1
-			i.prevCCC = ccc
-			return true
-		} else if ccc < i.prevCCC {
-			i.doNorm(p0, ccc) // should be rare for most common cases
-		} else {
-			i.prevCCC = ccc
-		}
-	}
-	if len(i.ce) != i.nce {
-		i.nce = len(i.ce)
-		return true
-	}
-	return false
-}
-
-// nextPlain is the same as next, but does not "normalize" the collation
-// elements.
-// TODO: remove this function. Using this instead of next does not seem
-// to improve performance in any significant way. We retain this until
-// later for evaluation purposes.
-func (i *iter) nextPlain() bool {
-	if i.done() {
-		return false
-	}
-	sz := i.appendNext()
-	i.tail(sz)
-	i.nce = len(i.ce)
-	return true
-}
-
-const maxCombiningCharacters = 30
-
-// doNorm reorders the collation elements in i.ce.
-// It assumes that blocks of collation elements added with appendNext
-// either start and end with the same CCC or start with CCC == 0.
-// This allows for a single insertion point for the entire block.
-// The correctness of this assumption is verified in builder.go.
-func (i *iter) doNorm(p int, ccc uint8) {
-	if p-i.pStarter > maxCombiningCharacters {
-		i.prevCCC = i.ce[len(i.ce)-1].CCC()
-		i.pStarter = len(i.ce) - 1
-		return
-	}
-	n := len(i.ce)
-	k := p
-	for p--; p > i.pStarter && ccc < i.ce[p-1].CCC(); p-- {
-	}
-	i.ce = append(i.ce, i.ce[p:k]...)
-	copy(i.ce[p:], i.ce[k:])
-	i.ce = i.ce[:n]
+	i.Weighter = c.t
+	i.Elems = i.wa[:0]
 }
 
 func (i *iter) nextPrimary() int {
 	for {
-		for ; i.pce < i.nce; i.pce++ {
-			if v := i.ce[i.pce].Primary(); v != 0 {
+		for ; i.pce < i.N; i.pce++ {
+			if v := i.Elems[i.pce].Primary(); v != 0 {
 				i.pce++
 				return v
 			}
 		}
-		if !i.next() {
+		if !i.Next() {
 			return 0
 		}
 	}
@@ -369,8 +261,8 @@
 }
 
 func (i *iter) nextSecondary() int {
-	for ; i.pce < len(i.ce); i.pce++ {
-		if v := i.ce[i.pce].Secondary(); v != 0 {
+	for ; i.pce < len(i.Elems); i.pce++ {
+		if v := i.Elems[i.pce].Secondary(); v != 0 {
 			i.pce++
 			return v
 		}
@@ -379,8 +271,8 @@
 }
 
 func (i *iter) prevSecondary() int {
-	for ; i.pce < len(i.ce); i.pce++ {
-		if v := i.ce[len(i.ce)-i.pce-1].Secondary(); v != 0 {
+	for ; i.pce < len(i.Elems); i.pce++ {
+		if v := i.Elems[len(i.Elems)-i.pce-1].Secondary(); v != 0 {
 			i.pce++
 			return v
 		}
@@ -389,8 +281,8 @@
 }
 
 func (i *iter) nextTertiary() int {
-	for ; i.pce < len(i.ce); i.pce++ {
-		if v := i.ce[i.pce].Tertiary(); v != 0 {
+	for ; i.pce < len(i.Elems); i.pce++ {
+		if v := i.Elems[i.pce].Tertiary(); v != 0 {
 			i.pce++
 			return int(v)
 		}
@@ -399,8 +291,8 @@
 }
 
 func (i *iter) nextQuaternary() int {
-	for ; i.pce < len(i.ce); i.pce++ {
-		if v := i.ce[i.pce].Quaternary(); v != 0 {
+	for ; i.pce < len(i.Elems); i.pce++ {
+		if v := i.Elems[i.pce].Quaternary(); v != 0 {
 			i.pce++
 			return v
 		}
diff --git a/go/src/golang.org/x/text/collate/collate_test.go b/go/src/golang.org/x/text/collate/collate_test.go
index fc2105e..a79ef4b 100644
--- a/go/src/golang.org/x/text/collate/collate_test.go
+++ b/go/src/golang.org/x/text/collate/collate_test.go
@@ -9,6 +9,7 @@
 	"testing"
 
 	"golang.org/x/text/collate/colltab"
+	"golang.org/x/text/language"
 )
 
 type weightsTest struct {
@@ -448,76 +449,31 @@
 	}
 }
 
-func TestDoNorm(t *testing.T) {
-	const div = -1 // The insertion point of the next block.
-	tests := []struct {
-		in, out []int
+func TestNumeric(t *testing.T) {
+	c := New(language.English, Loose, Numeric)
+
+	for i, tt := range []struct {
+		a, b string
+		want int
 	}{
-		{in: []int{4, div, 3},
-			out: []int{3, 4},
+		{"1", "2", -1},
+		{"2", "12", -1},
+		{"2", "12", -1}, // Fullwidth is sorted as usual.
+		{"₂", "₁₂", 1},  // Subscript is not sorted as numbers.
+		{"②", "①②", 1},  // Circled is not sorted as numbers.
+		{ // Imperial Aramaic, is not sorted as number.
+			"\U00010859",
+			"\U00010858\U00010859",
+			1,
 		},
-		{in: []int{4, div, 3, 3, 3},
-			out: []int{3, 3, 3, 4},
-		},
-		{in: []int{0, 4, div, 3},
-			out: []int{0, 3, 4},
-		},
-		{in: []int{0, 0, 4, 5, div, 3, 3},
-			out: []int{0, 0, 3, 3, 4, 5},
-		},
-		{in: []int{0, 0, 1, 4, 5, div, 3, 3},
-			out: []int{0, 0, 1, 3, 3, 4, 5},
-		},
-		{in: []int{0, 0, 1, 4, 5, div, 4, 4},
-			out: []int{0, 0, 1, 4, 4, 4, 5},
-		},
-	}
-	for j, tt := range tests {
-		i := iter{}
-		var w, p, s int
-		for k, cc := range tt.in {
-			if cc == 0 {
-				s = 0
-			}
-			if cc == div {
-				w = 100
-				p = k
-				i.pStarter = s
-				continue
-			}
-			i.ce = append(i.ce, makeCE([]int{w, defaultSecondary, 2, cc}))
-		}
-		i.prevCCC = i.ce[p-1].CCC()
-		i.doNorm(p, i.ce[p].CCC())
-		if len(i.ce) != len(tt.out) {
-			t.Errorf("%d: length was %d; want %d", j, len(i.ce), len(tt.out))
-		}
-		prevCCC := uint8(0)
-		for k, ce := range i.ce {
-			if int(ce.CCC()) != tt.out[k] {
-				t.Errorf("%d:%d: unexpected CCC. Was %d; want %d", j, k, ce.CCC(), tt.out[k])
-			}
-			if k > 0 && ce.CCC() == prevCCC && i.ce[k-1].Primary() > ce.Primary() {
-				t.Errorf("%d:%d: normalization crossed across CCC boundary.", j, k)
-			}
-		}
-	}
-	// test cutoff of large sequence of combining characters.
-	result := []uint8{8, 8, 8, 5, 5}
-	for o := -2; o <= 2; o++ {
-		i := iter{pStarter: 2, prevCCC: 8}
-		n := maxCombiningCharacters + 1 + o
-		for j := 1; j < n+i.pStarter; j++ {
-			i.ce = append(i.ce, makeCE([]int{100, defaultSecondary, 2, 8}))
-		}
-		p := len(i.ce)
-		i.ce = append(i.ce, makeCE([]int{0, defaultSecondary, 2, 5}))
-		i.doNorm(p, 5)
-		if i.prevCCC != result[o+2] {
-			t.Errorf("%d: i.prevCCC was %d; want %d", n, i.prevCCC, result[o+2])
-		}
-		if result[o+2] == 5 && i.pStarter != p {
-			t.Errorf("%d: i.pStarter was %d; want %d", n, i.pStarter, p)
+		{"12", "2", 1},
+		{"A-1", "A-2", -1},
+		{"A-2", "A-12", -1},
+		{"A-12", "A-2", 1},
+		{"A-0001", "A-1", 0},
+	} {
+		if got := c.CompareString(tt.a, tt.b); got != tt.want {
+			t.Errorf("%d: CompareString(%s, %s) = %d; want %d", i, tt.a, tt.b, got, tt.want)
 		}
 	}
 }
diff --git a/go/src/golang.org/x/text/collate/colltab/collate_test.go b/go/src/golang.org/x/text/collate/colltab/collate_test.go
new file mode 100644
index 0000000..580c85c
--- /dev/null
+++ b/go/src/golang.org/x/text/collate/colltab/collate_test.go
@@ -0,0 +1,121 @@
+// Copyright 2014 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 colltab_test
+
+// This file contains tests which need to import package collate, which causes
+// an import cycle when done within package colltab itself.
+
+import (
+	"bytes"
+	"testing"
+	"unicode"
+
+	"golang.org/x/text/collate"
+	"golang.org/x/text/language"
+	"golang.org/x/text/unicode/rangetable"
+)
+
+// assigned is used to only test runes that are inside the scope of the Unicode
+// version used to generation the collation table.
+var assigned = rangetable.Assigned(collate.UnicodeVersion)
+
+func TestNonDigits(t *testing.T) {
+	c := collate.New(language.English, collate.Loose, collate.Numeric)
+
+	// Verify that all non-digit numbers sort outside of the number range.
+	for r, hi := rune(unicode.N.R16[0].Lo), rune(unicode.N.R32[0].Hi); r <= hi; r++ {
+		if unicode.In(r, unicode.Nd) || !unicode.In(r, assigned) {
+			continue
+		}
+		if a := string(r); c.CompareString(a, "0") != -1 && c.CompareString(a, "999999") != 1 {
+			t.Errorf("%+q non-digit number is collated as digit", a)
+		}
+	}
+}
+
+func TestNumericCompare(t *testing.T) {
+	c := collate.New(language.English, collate.Loose, collate.Numeric)
+
+	// Iterate over all digits.
+	for _, r16 := range unicode.Nd.R16 {
+		testDigitCompare(t, c, rune(r16.Lo), rune(r16.Hi))
+	}
+	for _, r32 := range unicode.Nd.R32 {
+		testDigitCompare(t, c, rune(r32.Lo), rune(r32.Hi))
+	}
+}
+
+func testDigitCompare(t *testing.T, c *collate.Collator, zero, nine rune) {
+	if !unicode.In(zero, assigned) {
+		return
+	}
+	n := int(nine - zero + 1)
+	if n%10 != 0 {
+		t.Fatalf("len([%+q, %+q]) = %d; want a multiple of 10", zero, nine, n)
+	}
+	for _, tt := range []struct {
+		prefix string
+		b      [11]string
+	}{
+		{
+			prefix: "",
+			b: [11]string{
+				"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
+			},
+		},
+		{
+			prefix: "1",
+			b: [11]string{
+				"10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
+			},
+		},
+		{
+			prefix: "0",
+			b: [11]string{
+				"00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10",
+			},
+		},
+		{
+			prefix: "00",
+			b: [11]string{
+				"000", "001", "002", "003", "004", "005", "006", "007", "008", "009", "010",
+			},
+		},
+		{
+			prefix: "9",
+			b: [11]string{
+				"90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100",
+			},
+		},
+	} {
+		for k := 0; k <= n; k++ {
+			i := k % 10
+			a := tt.prefix + string(zero+rune(i))
+			for j, b := range tt.b {
+				want := 0
+				switch {
+				case i < j:
+					want = -1
+				case i > j:
+					want = 1
+				}
+				got := c.CompareString(a, b)
+				if got != want {
+					t.Errorf("Compare(%+q, %+q) = %d; want %d", a, b, got, want)
+					return
+				}
+			}
+		}
+	}
+}
+
+func BenchmarkNumericWeighter(b *testing.B) {
+	c := collate.New(language.English, collate.Numeric)
+	input := bytes.Repeat([]byte("Testing, testing 123..."), 100)
+	b.SetBytes(int64(2 * len(input)))
+	for i := 0; i < b.N; i++ {
+		c.Compare(input, input)
+	}
+}
diff --git a/go/src/golang.org/x/text/collate/colltab/colelem.go b/go/src/golang.org/x/text/collate/colltab/collelem.go
similarity index 99%
rename from go/src/golang.org/x/text/collate/colltab/colelem.go
rename to go/src/golang.org/x/text/collate/colltab/collelem.go
index 48ab2f8..880952c 100644
--- a/go/src/golang.org/x/text/collate/colltab/colelem.go
+++ b/go/src/golang.org/x/text/collate/colltab/collelem.go
@@ -190,7 +190,7 @@
 	return 0
 }
 
-// CCC returns the canoncial combining class associated with the underlying character,
+// CCC returns the canonical combining class associated with the underlying character,
 // if applicable, or 0 otherwise.
 func (ce Elem) CCC() uint8 {
 	if ce&ceType3or4 != 0 {
diff --git a/go/src/golang.org/x/text/collate/colltab/colelem_test.go b/go/src/golang.org/x/text/collate/colltab/collelem_test.go
similarity index 90%
rename from go/src/golang.org/x/text/collate/colltab/colelem_test.go
rename to go/src/golang.org/x/text/collate/colltab/collelem_test.go
index 7ef0cea..f131ecc 100644
--- a/go/src/golang.org/x/text/collate/colltab/colelem_test.go
+++ b/go/src/golang.org/x/text/collate/colltab/collelem_test.go
@@ -5,10 +5,25 @@
 package colltab
 
 import (
+	"fmt"
 	"testing"
 	"unicode"
 )
 
+func (e Elem) String() string {
+	q := ""
+	if v := e.Quaternary(); v == MaxQuaternary {
+		q = "max"
+	} else {
+		q = fmt.Sprint(v)
+	}
+	return fmt.Sprintf("[%d, %d, %d, %s]",
+		e.Primary(),
+		e.Secondary(),
+		e.Tertiary(),
+		q)
+}
+
 type ceTest struct {
 	f   func(inout []int) (Elem, ceType)
 	arg []int
@@ -19,6 +34,12 @@
 	return ce
 }
 
+var defaultValues = []int{0, defaultSecondary, defaultTertiary, 0}
+
+func e(w ...int) Elem {
+	return makeCE(append(w, defaultValues[len(w):]...))
+}
+
 func makeContractIndex(index, n, offset int) Elem {
 	const (
 		contractID            = 0xC0000000
diff --git a/go/src/golang.org/x/text/collate/colltab/colltab.go b/go/src/golang.org/x/text/collate/colltab/colltab.go
index 8c9f498..867d2d0 100644
--- a/go/src/golang.org/x/text/collate/colltab/colltab.go
+++ b/go/src/golang.org/x/text/collate/colltab/colltab.go
@@ -4,8 +4,8 @@
 
 package colltab // import "golang.org/x/text/collate/colltab"
 
-// A Weigher can be used as a source for Collator and Searcher.
-type Weigher interface {
+// A Weighter can be used as a source for Collator and Searcher.
+type Weighter interface {
 	// Start finds the start of the segment that includes position p.
 	Start(p int, b []byte) int
 
diff --git a/go/src/golang.org/x/text/collate/colltab/colltab_test.go b/go/src/golang.org/x/text/collate/colltab/colltab_test.go
new file mode 100644
index 0000000..b5f8487
--- /dev/null
+++ b/go/src/golang.org/x/text/collate/colltab/colltab_test.go
@@ -0,0 +1,42 @@
+// Copyright 2014 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 colltab
+
+// testWeighter is a simple Weighter that returns weights from a user-defined map.
+type testWeighter map[string][]Elem
+
+func (t testWeighter) Start(int, []byte) int       { return 0 }
+func (t testWeighter) StartString(int, string) int { return 0 }
+func (t testWeighter) Domain() []string            { return nil }
+func (t testWeighter) Top() uint32                 { return 0 }
+
+// maxContractBytes is the maximum length of any key in the map.
+const maxContractBytes = 10
+
+func (t testWeighter) AppendNext(buf []Elem, s []byte) ([]Elem, int) {
+	n := len(s)
+	if n > maxContractBytes {
+		n = maxContractBytes
+	}
+	for i := n; i > 0; i-- {
+		if e, ok := t[string(s[:i])]; ok {
+			return append(buf, e...), i
+		}
+	}
+	panic("incomplete testWeighter: could not find " + string(s))
+}
+
+func (t testWeighter) AppendNextString(buf []Elem, s string) ([]Elem, int) {
+	n := len(s)
+	if n > maxContractBytes {
+		n = maxContractBytes
+	}
+	for i := n; i > 0; i-- {
+		if e, ok := t[s[:i]]; ok {
+			return append(buf, e...), i
+		}
+	}
+	panic("incomplete testWeighter: could not find " + s)
+}
diff --git a/go/src/golang.org/x/text/collate/colltab/export.go b/go/src/golang.org/x/text/collate/colltab/export.go
index 83cfb63..257ea2a 100644
--- a/go/src/golang.org/x/text/collate/colltab/export.go
+++ b/go/src/golang.org/x/text/collate/colltab/export.go
@@ -5,7 +5,7 @@
 package colltab
 
 // Init is for internal use only.
-func Init(data interface{}) Weigher {
+func Init(data interface{}) Weighter {
 	init, ok := data.(tableInitializer)
 	if !ok {
 		return nil
diff --git a/go/src/golang.org/x/text/collate/colltab/numeric.go b/go/src/golang.org/x/text/collate/colltab/numeric.go
new file mode 100644
index 0000000..38c255c
--- /dev/null
+++ b/go/src/golang.org/x/text/collate/colltab/numeric.go
@@ -0,0 +1,236 @@
+// Copyright 2014 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 colltab
+
+import (
+	"unicode"
+	"unicode/utf8"
+)
+
+// NewNumericWeighter wraps w to replace individual digits to sort based on their
+// numeric value.
+//
+// Weighter w must have a free primary weight after the primary weight for 9.
+// If this is not the case, numeric value will sort at the same primary level
+// as the first primary sorting after 9.
+func NewNumericWeighter(w Weighter) Weighter {
+	getElem := func(s string) Elem {
+		elems, _ := w.AppendNextString(nil, s)
+		return elems[0]
+	}
+	nine := getElem("9")
+
+	// Numbers should order before zero, but the DUCET has no room for this.
+	// TODO: move before zero once we use fractional collation elements.
+	ns, _ := MakeElem(nine.Primary()+1, nine.Secondary(), int(nine.Tertiary()), 0)
+
+	return &numericWeighter{
+		Weighter: w,
+
+		// We assume that w sorts digits of different kinds in order of numeric
+		// value and that the tertiary weight order is preserved.
+		//
+		// TODO: evaluate whether it is worth basing the ranges on the Elem
+		// encoding itself once the move to fractional weights is complete.
+		zero:          getElem("0"),
+		zeroSpecialLo: getElem("0"), // U+FF10 FULLWIDTH DIGIT ZERO
+		zeroSpecialHi: getElem("₀"), // U+2080 SUBSCRIPT ZERO
+		nine:          nine,
+		nineSpecialHi: getElem("₉"), // U+2089 SUBSCRIPT NINE
+		numberStart:   ns,
+	}
+}
+
+// A numericWeighter translates a stream of digits into a stream of weights
+// representing the numeric value.
+type numericWeighter struct {
+	Weighter
+
+	// The Elems below all demarcate boundaries of specific ranges. With the
+	// current element encoding digits are in two ranges: normal (default
+	// tertiary value) and special. For most languages, digits have collation
+	// elements in the normal range.
+	//
+	// Note: the range tests are very specific for the element encoding used by
+	// this implementation. The tests in collate_test.go are designed to fail
+	// if this code is not updated when an encoding has changed.
+
+	zero          Elem // normal digit zero
+	zeroSpecialLo Elem // special digit zero, low tertiary value
+	zeroSpecialHi Elem // special digit zero, high tertiary value
+	nine          Elem // normal digit nine
+	nineSpecialHi Elem // special digit nine
+	numberStart   Elem
+}
+
+// AppendNext calls the namesake of the underlying weigher, but replaces single
+// digits with weights representing their value.
+func (nw *numericWeighter) AppendNext(buf []Elem, s []byte) (ce []Elem, n int) {
+	ce, n = nw.Weighter.AppendNext(buf, s)
+	nc := numberConverter{
+		elems: buf,
+		w:     nw,
+		b:     s,
+	}
+	isZero, ok := nc.checkNextDigit(ce)
+	if !ok {
+		return ce, n
+	}
+	// ce might have been grown already, so take it instead of buf.
+	nc.init(ce, len(buf), isZero)
+	for n < len(s) {
+		ce, sz := nw.Weighter.AppendNext(nc.elems, s[n:])
+		nc.b = s
+		n += sz
+		if !nc.update(ce) {
+			break
+		}
+	}
+	return nc.result(), n
+}
+
+// AppendNextString calls the namesake of the underlying weigher, but replaces
+// single digits with weights representing their value.
+func (nw *numericWeighter) AppendNextString(buf []Elem, s string) (ce []Elem, n int) {
+	ce, n = nw.Weighter.AppendNextString(buf, s)
+	nc := numberConverter{
+		elems: buf,
+		w:     nw,
+		s:     s,
+	}
+	isZero, ok := nc.checkNextDigit(ce)
+	if !ok {
+		return ce, n
+	}
+	nc.init(ce, len(buf), isZero)
+	for n < len(s) {
+		ce, sz := nw.Weighter.AppendNextString(nc.elems, s[n:])
+		nc.s = s
+		n += sz
+		if !nc.update(ce) {
+			break
+		}
+	}
+	return nc.result(), n
+}
+
+type numberConverter struct {
+	w *numericWeighter
+
+	elems    []Elem
+	nDigits  int
+	lenIndex int
+
+	s string // set if the input was of type string
+	b []byte // set if the input was of type []byte
+}
+
+// init completes initialization of a numberConverter and prepares it for adding
+// more digits. elems is assumed to have a digit starting at oldLen.
+func (nc *numberConverter) init(elems []Elem, oldLen int, isZero bool) {
+	// Insert a marker indicating the start of a number and and a placeholder
+	// for the number of digits.
+	if isZero {
+		elems = append(elems[:oldLen], nc.w.numberStart, 0)
+	} else {
+		elems = append(elems, 0, 0)
+		copy(elems[oldLen+2:], elems[oldLen:])
+		elems[oldLen] = nc.w.numberStart
+		elems[oldLen+1] = 0
+
+		nc.nDigits = 1
+	}
+	nc.elems = elems
+	nc.lenIndex = oldLen + 1
+}
+
+// checkNextDigit reports whether bufNew adds a single digit relative to the old
+// buffer. If it does, it also reports whether this digit is zero.
+func (nc *numberConverter) checkNextDigit(bufNew []Elem) (isZero, ok bool) {
+	if len(nc.elems) >= len(bufNew) {
+		return false, false
+	}
+	e := bufNew[len(nc.elems)]
+	if e < nc.w.zeroSpecialLo || nc.w.nine < e {
+		// Not a number.
+		return false, false
+	}
+	if e < nc.w.zero {
+		if e > nc.w.nineSpecialHi {
+			// Not a number.
+			return false, false
+		}
+		if !nc.isDigit() {
+			return false, false
+		}
+		isZero = e <= nc.w.zeroSpecialHi
+	} else {
+		// This is the common case if we encounter a digit.
+		isZero = e == nc.w.zero
+	}
+	// Test the remaining added collation elements have a zero primary value.
+	if n := len(bufNew) - len(nc.elems); n > 1 {
+		for i := len(nc.elems) + 1; i < len(bufNew); i++ {
+			if bufNew[i].Primary() != 0 {
+				return false, false
+			}
+		}
+		// In some rare cases, collation elements will encode runes in
+		// unicode.No as a digit. For example Ethiopic digits (U+1369 - U+1371)
+		// are not in Nd. Also some digits that clearly belong in unicode.No,
+		// like U+0C78 TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR, have
+		// collation elements indistinguishable from normal digits.
+		// Unfortunately, this means we need to make this check for nearly all
+		// non-Latin digits.
+		//
+		// TODO: check the performance impact and find something better if it is
+		// an issue.
+		if !nc.isDigit() {
+			return false, false
+		}
+	}
+	return isZero, true
+}
+
+func (nc *numberConverter) isDigit() bool {
+	if nc.b != nil {
+		r, _ := utf8.DecodeRune(nc.b)
+		return unicode.In(r, unicode.Nd)
+	}
+	r, _ := utf8.DecodeRuneInString(nc.s)
+	return unicode.In(r, unicode.Nd)
+}
+
+// We currently support a maximum of about 2M digits (the number of primary
+// values). Such numbers will compare correctly against small numbers, but their
+// comparison against other large numbers is undefined.
+//
+// TODO: define a proper fallback, such as comparing large numbers textually or
+// actually allowing numbers of unlimited length.
+//
+// TODO: cap this to a lower number (like 100) and maybe allow a larger number
+// in an option?
+const maxDigits = 1<<maxPrimaryBits - 1
+
+func (nc *numberConverter) update(elems []Elem) bool {
+	isZero, ok := nc.checkNextDigit(elems)
+	if nc.nDigits == 0 && isZero {
+		return true
+	}
+	nc.elems = elems
+	if !ok {
+		return false
+	}
+	nc.nDigits++
+	return nc.nDigits < maxDigits
+}
+
+// result fills in the length element for the digit sequence and returns the
+// completed collation elements.
+func (nc *numberConverter) result() []Elem {
+	e, _ := MakeElem(nc.nDigits, defaultSecondary, defaultTertiary, 0)
+	nc.elems[nc.lenIndex] = e
+	return nc.elems
+}
diff --git a/go/src/golang.org/x/text/collate/colltab/numeric_test.go b/go/src/golang.org/x/text/collate/colltab/numeric_test.go
new file mode 100644
index 0000000..f55a228
--- /dev/null
+++ b/go/src/golang.org/x/text/collate/colltab/numeric_test.go
@@ -0,0 +1,157 @@
+// Copyright 2014 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 colltab
+
+import (
+	"reflect"
+	"strings"
+	"testing"
+)
+
+const (
+	digSec  = defaultSecondary
+	digTert = defaultTertiary
+)
+
+var tPlus3 = e(0, 50, digTert+3)
+
+// numWeighter is a testWeighter used for testing numericWeighter.
+var numWeighter = testWeighter{
+	"0": p(100),
+	"0": []Elem{e(100, digSec, digTert+1)}, // U+FF10 FULLWIDTH DIGIT ZERO
+	"₀": []Elem{e(100, digSec, digTert+5)}, // U+2080 SUBSCRIPT ZERO
+
+	"1": p(101),
+	// Allow non-primary collation elements to be inserted.
+	"١": append(p(101), tPlus3), // U+0661 ARABIC-INDIC DIGIT ONE
+	// Allow varying tertiary weight if the number is Nd.
+	"1": []Elem{e(101, digSec, digTert+1)}, // U+FF11 FULLWIDTH DIGIT ONE
+	"2": p(102),
+	// Allow non-primary collation elements to be inserted.
+	"٢": append(p(102), tPlus3), // U+0662 ARABIC-INDIC DIGIT TWO
+	// Varying tertiary weights should be ignored.
+	"2": []Elem{e(102, digSec, digTert+3)}, // U+FF12 FULLWIDTH DIGIT TWO
+	"3": p(103),
+	"4": p(104),
+	"5": p(105),
+	"6": p(106),
+	"7": p(107),
+	// Weights must be strictly monotonically increasing, but do not need to be
+	// consecutive.
+	"8": p(118),
+	"9": p(119),
+	// Allow non-primary collation elements to be inserted.
+	"٩": append(p(119), tPlus3), // U+0669 ARABIC-INDIC DIGIT NINE
+	// Varying tertiary weights should be ignored.
+	"9": []Elem{e(119, digSec, digTert+1)}, // U+FF19 FULLWIDTH DIGIT NINE
+	"₉": []Elem{e(119, digSec, digTert+5)}, // U+2089 SUBSCRIPT NINE
+
+	"a": p(5),
+	"b": p(6),
+	"c": p(8, 2),
+
+	"klm": p(99),
+
+	"nop": p(121),
+
+	"x": p(200),
+	"y": p(201),
+}
+
+func p(w ...int) (elems []Elem) {
+	for _, x := range w {
+		e, _ := MakeElem(x, digSec, digTert, 0)
+		elems = append(elems, e)
+	}
+	return elems
+}
+
+func TestNumericAppendNext(t *testing.T) {
+	for _, tt := range []struct {
+		in string
+		w  []Elem
+	}{
+		{"a", p(5)},
+		{"klm", p(99)},
+		{"aa", p(5, 5)},
+		{"1", p(120, 1, 101)},
+		{"0", p(120, 0)},
+		{"01", p(120, 1, 101)},
+		{"0001", p(120, 1, 101)},
+		{"10", p(120, 2, 101, 100)},
+		{"99", p(120, 2, 119, 119)},
+		{"9999", p(120, 4, 119, 119, 119, 119)},
+		{"1a", p(120, 1, 101, 5)},
+		{"0b", p(120, 0, 6)},
+		{"01c", p(120, 1, 101, 8, 2)},
+		{"10x", p(120, 2, 101, 100, 200)},
+		{"99y", p(120, 2, 119, 119, 201)},
+		{"9999nop", p(120, 4, 119, 119, 119, 119, 121)},
+
+		// Allow follow-up collation elements if they have a zero non-primary.
+		{"١٢٩", []Elem{e(120), e(3), e(101), tPlus3, e(102), tPlus3, e(119), tPlus3}},
+		{
+			"129",
+			[]Elem{
+				e(120), e(3),
+				e(101, digSec, digTert+1),
+				e(102, digSec, digTert+3),
+				e(119, digSec, digTert+1),
+			},
+		},
+
+		// Ensure AppendNext* adds to the given buffer.
+		{"a10", p(5, 120, 2, 101, 100)},
+	} {
+		nw := NewNumericWeighter(numWeighter)
+
+		b := []byte(tt.in)
+		got := []Elem(nil)
+		for n, sz := 0, 0; n < len(b); {
+			got, sz = nw.AppendNext(got, b[n:])
+			n += sz
+		}
+		if !reflect.DeepEqual(got, tt.w) {
+			t.Errorf("AppendNext(%q) =\n%v; want\n%v", tt.in, got, tt.w)
+		}
+
+		got = nil
+		for n, sz := 0, 0; n < len(tt.in); {
+			got, sz = nw.AppendNextString(got, tt.in[n:])
+			n += sz
+		}
+		if !reflect.DeepEqual(got, tt.w) {
+			t.Errorf("AppendNextString(%q) =\n%v; want\n%v", tt.in, got, tt.w)
+		}
+	}
+}
+
+func TestNumericOverflow(t *testing.T) {
+	manyDigits := strings.Repeat("9", maxDigits+1) + "a"
+
+	nw := NewNumericWeighter(numWeighter)
+
+	got, n := nw.AppendNextString(nil, manyDigits)
+
+	if n != maxDigits {
+		t.Errorf("n: got %d; want %d", n, maxDigits)
+	}
+
+	if got[1].Primary() != maxDigits {
+		t.Errorf("primary(e[1]): got %d; want %d", n, maxDigits)
+	}
+}
+
+func TestNumericWeighterAlloc(t *testing.T) {
+	buf := make([]Elem, 100)
+	w := NewNumericWeighter(numWeighter)
+	s := "1234567890a"
+
+	nNormal := testing.AllocsPerRun(3, func() { numWeighter.AppendNextString(buf, s) })
+	nNumeric := testing.AllocsPerRun(3, func() { w.AppendNextString(buf, s) })
+	if n := nNumeric - nNormal; n > 0 {
+		t.Errorf("got %f; want 0", n)
+	}
+}
diff --git a/go/src/golang.org/x/text/collate/maketables.go b/go/src/golang.org/x/text/collate/maketables.go
index 0139118..9cf546a 100644
--- a/go/src/golang.org/x/text/collate/maketables.go
+++ b/go/src/golang.org/x/text/collate/maketables.go
@@ -15,37 +15,27 @@
 	"bytes"
 	"flag"
 	"fmt"
-	"golang.org/x/text/cldr"
-	"golang.org/x/text/collate"
-	"golang.org/x/text/collate/build"
-	"golang.org/x/text/collate/colltab"
-	"golang.org/x/text/language"
 	"io"
 	"io/ioutil"
 	"log"
-	"net/http"
 	"os"
-	"path"
 	"regexp"
 	"sort"
 	"strconv"
 	"strings"
-	"unicode"
 	"unicode/utf8"
+
+	"golang.org/x/text/cldr"
+	"golang.org/x/text/collate"
+	"golang.org/x/text/collate/build"
+	"golang.org/x/text/collate/colltab"
+	"golang.org/x/text/internal/gen"
+	"golang.org/x/text/language"
 )
 
 var (
-	root = flag.String("root",
-		"http://unicode.org/Public/UCA/"+unicode.Version+"/CollationAuxiliary.zip",
-		`URL of the Default Unicode Collation Element Table (DUCET). This can be a zip
-file containing the file allkeys_CLDR.txt or an allkeys.txt file.`)
-	cldrzip = flag.String("cldr",
-		"http://www.unicode.org/Public/cldr/"+cldr.Version+"/core.zip",
-		"URL of CLDR archive.")
 	test = flag.Bool("test", false,
 		"test existing tables; can be used to compare web data with package data.")
-	localFiles = flag.Bool("local", false,
-		"data files have been copied to the current directory; for debugging only.")
 	short = flag.Bool("short", false, `Use "short" alternatives, when available.`)
 	draft = flag.Bool("draft", false, `Use draft versions, when available.`)
 	tags  = flag.String("tags", "", "build tags to be included after +build directive")
@@ -59,7 +49,7 @@
 	include = flagStringSet("include", "", "",
 		"comma-separated list of languages to include. Include trumps exclude.")
 	types = flagStringSetAllowAll("types", "", "",
-		"comma-separated list of types that should be included in addition to the standard type.")
+		"comma-separated list of types that should be included.")
 )
 
 // stringSet implements an ordered set based on a list.  It implements flag.Value
@@ -192,29 +182,8 @@
 	}
 }
 
-// openReader opens the URL or file given by url and returns it as an io.ReadCloser
-// or nil on error.
-func openReader(url *string) (io.ReadCloser, error) {
-	if *localFiles {
-		pwd, _ := os.Getwd()
-		*url = "file://" + path.Join(pwd, path.Base(*url))
-	}
-	t := &http.Transport{}
-	t.RegisterProtocol("file", http.NewFileTransport(http.Dir("/")))
-	c := &http.Client{Transport: t}
-	resp, err := c.Get(*url)
-	if err != nil {
-		return nil, err
-	}
-	if resp.StatusCode != 200 {
-		return nil, fmt.Errorf(`bad GET status for "%s": %s`, *url, resp.Status)
-	}
-	return resp.Body, nil
-}
-
-func openArchive(url *string) *zip.Reader {
-	f, err := openReader(url)
-	failOnError(err)
+func openArchive() *zip.Reader {
+	f := gen.OpenCLDRCoreZip()
 	buffer, err := ioutil.ReadAll(f)
 	f.Close()
 	failOnError(err)
@@ -229,17 +198,13 @@
 func parseUCA(builder *build.Builder) {
 	var r io.ReadCloser
 	var err error
-	if strings.HasSuffix(*root, ".zip") {
-		for _, f := range openArchive(root).File {
-			if strings.HasSuffix(f.Name, "allkeys_CLDR.txt") {
-				r, err = f.Open()
-			}
+	for _, f := range openArchive().File {
+		if strings.HasSuffix(f.Name, "allkeys_CLDR.txt") {
+			r, err = f.Open()
 		}
-		if r == nil {
-			err = fmt.Errorf("file allkeys_CLDR.txt not found in archive %q", *root)
-		}
-	} else {
-		r, err = openReader(root)
+	}
+	if r == nil {
+		log.Fatal("File allkeys_CLDR.txt not found in archive.")
 	}
 	failOnError(err)
 	defer r.Close()
@@ -255,8 +220,8 @@
 			switch {
 			case strings.HasPrefix(line[1:], "version "):
 				a := strings.Split(line[1:], " ")
-				if a[1] != unicode.Version {
-					log.Fatalf("incompatible version %s; want %s", a[1], unicode.Version)
+				if a[1] != gen.UnicodeVersion() {
+					log.Fatalf("incompatible version %s; want %s", a[1], gen.UnicodeVersion())
 				}
 			case strings.HasPrefix(line[1:], "backwards "):
 				log.Fatalf("%d: unsupported option backwards", i)
@@ -358,8 +323,7 @@
 }
 
 func decodeCLDR(d *cldr.Decoder) *cldr.CLDR {
-	r, err := openReader(cldrzip)
-	failOnError(err)
+	r := gen.OpenCLDRCoreZip()
 	data, err := d.DecodeZip(r)
 	failOnError(err)
 	return data
@@ -460,19 +424,35 @@
 		}
 		cs := x.Collations.Collation
 		sl := cldr.MakeSlice(&cs)
-		if !types.all {
-			sl.SelectAnyOf("type", append(types.s, x.Collations.Default())...)
+		if len(types.s) == 0 {
+			sl.SelectAnyOf("type", x.Collations.Default())
+		} else if !types.all {
+			sl.SelectAnyOf("type", types.s...)
 		}
 		sl.SelectOnePerGroup("alt", altInclude())
 
 		for _, c := range cs {
-			m := make(map[language.Part]string)
-			m[language.TagPart] = loc
-			if c.Type != x.Collations.Default() {
-				m[language.Extension('u')] = "co-" + c.Type
+			id, err := language.Parse(loc)
+			if err != nil {
+				if loc == "en-US-posix" {
+					fmt.Fprintf(os.Stderr, "invalid locale: %q", err.Error())
+					continue
+				}
+				id = language.Make("en-US-u-va-posix")
 			}
-			id, err := language.Compose(m)
-			failOnError(err)
+			// Support both old- and new-style defaults.
+			d := c.Type
+			if x.Collations.DefaultCollation == nil {
+				d = x.Collations.Default()
+			} else {
+				d = x.Collations.DefaultCollation.Data()
+			}
+			// We assume tables are being built either for search or collation,
+			// but not both. For search the default is always "search".
+			if d != c.Type && c.Type != "search" {
+				id, err = id.SetTypeForKey("co", c.Type)
+				failOnError(err)
+			}
 			t := b.Tailoring(id)
 			c.Process(processor{t})
 		}
@@ -533,17 +513,13 @@
 }
 
 func main() {
-	flag.Parse()
+	gen.Init()
 	b := build.NewBuilder()
-	if *root != "" {
-		parseUCA(b)
+	parseUCA(b)
+	if tables.contains("chars") {
+		parseMain()
 	}
-	if *cldrzip != "" {
-		if tables.contains("chars") {
-			parseMain()
-		}
-		parseCollation(b)
-	}
+	parseCollation(b)
 
 	c, err := b.Build()
 	failOnError(err)
@@ -551,22 +527,18 @@
 	if *test {
 		testCollator(collate.NewFromTable(c))
 	} else {
-		fmt.Println("// Generated by running")
-		fmt.Printf("//  maketables -root=%s -cldr=%s\n", *root, *cldrzip)
-		fmt.Println("// DO NOT EDIT")
-		fmt.Println("// TODO: implement more compact representation for sparse blocks.")
-		if *tags != "" {
-			fmt.Printf("// +build %s\n", *tags)
-		}
-		fmt.Println("")
-		fmt.Printf("package %s\n", *pkg)
+		w := &bytes.Buffer{}
+
+		gen.WriteUnicodeVersion(w)
+		gen.WriteCLDRVersion(w)
+
 		if tables.contains("collate") {
-			fmt.Println("")
-			_, err = b.Print(os.Stdout)
+			_, err = b.Print(w)
 			failOnError(err)
 		}
 		if tables.contains("chars") {
-			printExemplarCharacters(os.Stdout)
+			printExemplarCharacters(w)
 		}
+		gen.WriteGoFile("tables.go", *pkg, w.Bytes())
 	}
 }
diff --git a/go/src/golang.org/x/text/collate/option.go b/go/src/golang.org/x/text/collate/option.go
index 731f760..9d9a846 100644
--- a/go/src/golang.org/x/text/collate/option.go
+++ b/go/src/golang.org/x/text/collate/option.go
@@ -13,7 +13,7 @@
 )
 
 // newCollator creates a new collator with default options configured.
-func newCollator(t colltab.Weigher) *Collator {
+func newCollator(t colltab.Weighter) *Collator {
 	// Initialize a collator with default options.
 	c := &Collator{
 		options: options{
@@ -25,8 +25,6 @@
 			t: t,
 		},
 	}
-	c._iter[0].init(c)
-	c._iter[1].init(c)
 
 	// TODO: store vt in tags or remove.
 	c.variableTop = t.Top()
@@ -70,6 +68,7 @@
 	// numeric specifies whether any sequence of decimal digits (category is Nd)
 	// is sorted at a primary level with its numeric value.
 	// For example, "A-21" < "A-123".
+	// This option is set by wrapping the main Weighter with NewNumericWeighter.
 	numeric bool
 
 	// alternate specifies an alternative handling of variables.
@@ -79,7 +78,7 @@
 	// variable.
 	variableTop uint32
 
-	t colltab.Weigher
+	t colltab.Weighter
 
 	f norm.Form
 }
diff --git a/go/src/golang.org/x/text/collate/regtest.go b/go/src/golang.org/x/text/collate/reg_test.go
similarity index 69%
rename from go/src/golang.org/x/text/collate/regtest.go
rename to go/src/golang.org/x/text/collate/reg_test.go
index 8a510ea..e57fa7c 100644
--- a/go/src/golang.org/x/text/collate/regtest.go
+++ b/go/src/golang.org/x/text/collate/reg_test.go
@@ -2,35 +2,33 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
-package main
+package collate
 
 import (
 	"archive/zip"
 	"bufio"
 	"bytes"
 	"flag"
-	"fmt"
 	"io"
 	"io/ioutil"
 	"log"
-	"net/http"
-	"os"
 	"path"
 	"regexp"
 	"strconv"
 	"strings"
-	"unicode"
+	"testing"
 	"unicode/utf8"
 
-	"golang.org/x/text/collate"
 	"golang.org/x/text/collate/build"
+	"golang.org/x/text/internal/gen"
 	"golang.org/x/text/language"
 )
 
+var long = flag.Bool("long", false,
+	"run time-consuming tests, such as tests that fetch data online")
+
 // This regression test runs tests for the test files in CollationTest.zip
-// (taken from http://www.unicode.org/Public/UCA/<unicode.Version>/).
+// (taken from http://www.unicode.org/Public/UCA/<gen.UnicodeVersion()>/).
 //
 // The test files have the following form:
 // # header
@@ -44,16 +42,6 @@
 // represented by rune sequence are in the file in sorted order, as
 // defined by the DUCET.
 
-var testdata = flag.String("testdata",
-	"http://www.unicode.org/Public/UCA/"+unicode.Version+"/CollationTest.zip",
-	"URL of Unicode collation tests zip file")
-var ducet = flag.String("ducet",
-	"http://unicode.org/Public/UCA/"+unicode.Version+"/allkeys.txt",
-	"URL of the Default Unicode Collation Element Table (DUCET).")
-var localFiles = flag.Bool("local",
-	false,
-	"data files have been copied to the current directory; for debugging only")
-
 type Test struct {
 	name    string
 	str     [][]byte
@@ -63,35 +51,26 @@
 var versionRe = regexp.MustCompile(`# UCA Version: (.*)\n?$`)
 var testRe = regexp.MustCompile(`^([\dA-F ]+);.*# (.*)\n?$`)
 
+func TestCollation(t *testing.T) {
+	if !gen.IsLocal() && !*long {
+		t.Skip("skipping test to prevent downloading; to run use -long or use -local to specify a local source")
+	}
+	for _, test := range loadTestData() {
+		doTest(t, test)
+	}
+}
+
 func Error(e error) {
 	if e != nil {
 		log.Fatal(e)
 	}
 }
 
-// openReader opens the url or file given by url and returns it as an io.ReadCloser
-// or nil on error.
-func openReader(url string) io.ReadCloser {
-	if *localFiles {
-		pwd, _ := os.Getwd()
-		url = "file://" + path.Join(pwd, path.Base(url))
-	}
-	t := &http.Transport{}
-	t.RegisterProtocol("file", http.NewFileTransport(http.Dir("/")))
-	c := &http.Client{Transport: t}
-	resp, err := c.Get(url)
-	Error(err)
-	if resp.StatusCode != 200 {
-		Error(fmt.Errorf(`bad GET status for "%s": %s`, url, resp.Status))
-	}
-	return resp.Body
-}
-
 // parseUCA parses a Default Unicode Collation Element Table of the format
 // specified in http://www.unicode.org/reports/tr10/#File_Format.
 // It returns the variable top.
 func parseUCA(builder *build.Builder) {
-	r := openReader(*ducet)
+	r := gen.OpenUnicodeFile("UCA", "", "allkeys.txt")
 	defer r.Close()
 	input := bufio.NewReader(r)
 	colelem := regexp.MustCompile(`\[([.*])([0-9A-F.]+)\]`)
@@ -110,8 +89,8 @@
 		}
 		if line[0] == '@' {
 			if strings.HasPrefix(line[1:], "version ") {
-				if v := strings.Split(line[1:], " ")[1]; v != unicode.Version {
-					log.Fatalf("incompatible version %s; want %s", v, unicode.Version)
+				if v := strings.Split(line[1:], " ")[1]; v != gen.UnicodeVersion() {
+					log.Fatalf("incompatible version %s; want %s", v, gen.UnicodeVersion())
 				}
 			}
 		} else {
@@ -152,7 +131,7 @@
 }
 
 func loadTestData() []Test {
-	f := openReader(*testdata)
+	f := gen.OpenUnicodeFile("UCA", "", "CollationTest.zip")
 	buffer, err := ioutil.ReadAll(f)
 	f.Close()
 	Error(err)
@@ -173,8 +152,8 @@
 			line := scanner.Text()
 			if len(line) <= 1 || line[0] == '#' {
 				if m := versionRe.FindStringSubmatch(line); m != nil {
-					if m[1] != unicode.Version {
-						log.Printf("warning:%s: version is %s; want %s", f.Name, m[1], unicode.Version)
+					if m[1] != gen.UnicodeVersion() {
+						log.Printf("warning:%s: version is %s; want %s", f.Name, m[1], gen.UnicodeVersion())
 					}
 				}
 				continue
@@ -211,59 +190,40 @@
 
 var errorCount int
 
-func fail(t Test, pattern string, args ...interface{}) {
-	format := fmt.Sprintf("error:%s:%s", t.name, pattern)
-	log.Printf(format, args...)
-	errorCount++
-	if errorCount > 30 {
-		log.Fatal("too many errors")
-	}
-}
-
 func runes(b []byte) []rune {
 	return []rune(string(b))
 }
 
 var shifted = language.MustParse("und-u-ka-shifted-ks-level4")
 
-func doTest(t Test) {
+func doTest(t *testing.T, tc Test) {
 	bld := build.NewBuilder()
 	parseUCA(bld)
 	w, err := bld.Build()
 	Error(err)
 	var tag language.Tag
-	if !strings.Contains(t.name, "NON_IGNOR") {
+	if !strings.Contains(tc.name, "NON_IGNOR") {
 		tag = shifted
 	}
-	c := collate.NewFromTable(w, collate.OptionsFromTag(tag))
-	b := &collate.Buffer{}
-	prev := t.str[0]
-	for i := 1; i < len(t.str); i++ {
+	c := NewFromTable(w, OptionsFromTag(tag))
+	b := &Buffer{}
+	prev := tc.str[0]
+	for i := 1; i < len(tc.str); i++ {
 		b.Reset()
-		s := t.str[i]
+		s := tc.str[i]
 		ka := c.Key(b, prev)
 		kb := c.Key(b, s)
 		if r := bytes.Compare(ka, kb); r == 1 {
-			fail(t, "%d: Key(%.4X) < Key(%.4X) (%X < %X) == %d; want -1 or 0", i, []rune(string(prev)), []rune(string(s)), ka, kb, r)
+			t.Errorf("%s:%d: Key(%.4X) < Key(%.4X) (%X < %X) == %d; want -1 or 0", tc.name, i, []rune(string(prev)), []rune(string(s)), ka, kb, r)
 			prev = s
 			continue
 		}
 		if r := c.Compare(prev, s); r == 1 {
-			fail(t, "%d: Compare(%.4X, %.4X) == %d; want -1 or 0", i, runes(prev), runes(s), r)
+			t.Errorf("%s:%d: Compare(%.4X, %.4X) == %d; want -1 or 0", tc.name, i, runes(prev), runes(s), r)
 		}
 		if r := c.Compare(s, prev); r == -1 {
-			fail(t, "%d: Compare(%.4X, %.4X) == %d; want 1 or 0", i, runes(s), runes(prev), r)
+			t.Errorf("%s:%d: Compare(%.4X, %.4X) == %d; want 1 or 0", tc.name, i, runes(s), runes(prev), r)
 		}
 		prev = s
 	}
 }
-
-func main() {
-	flag.Parse()
-	for _, test := range loadTestData() {
-		doTest(test)
-	}
-	if errorCount == 0 {
-		fmt.Println("PASS")
-	}
-}
diff --git a/go/src/golang.org/x/text/collate/tables.go b/go/src/golang.org/x/text/collate/tables.go
index 76bdb2e..f6d31f1 100644
--- a/go/src/golang.org/x/text/collate/tables.go
+++ b/go/src/golang.org/x/text/collate/tables.go
@@ -1,11 +1,14 @@
-// Generated by running
-//  maketables -root=http://unicode.org/Public/UCA/6.2.0/CollationAuxiliary.zip -cldr=http://www.unicode.org/Public/cldr/23/core.zip
-// DO NOT EDIT
-// TODO: implement more compact representation for sparse blocks.
+// This file was generated by go generate; DO NOT EDIT
 
 package collate
 
-var availableLocales = "und,aa,af,ar,as,az,be,bg,bn,bs,bs-Cyrl,ca,cs,cy,da,de,dz,ee,el,en,en-US,en-US-posix,eo,es,et,fa,fa-AF,fi,fil,fo,fr,fr-CA,gu,ha,haw,he,hi,hr,hu,hy,ig,is,ja,kk,kl,km,kn,ko,kok,ln,lt,lv,mk,ml,mr,mt,my,nb,nn,nso,om,or,pa,pl,ps,ro,ru,se,si,sk,sl,sq,sr,sr-Latn,ssy,sv,ta,te,th,tn,to,tr,uk,ur,vi,wae,yo,zh,zh-Hant"
+// UnicodeVersion is the Unicode version from which the tables in this package are derived.
+const UnicodeVersion = "6.2.0"
+
+// CLDRVersion is the CLDR version from which the tables in this package are derived.
+const CLDRVersion = "23"
+
+var availableLocales = "und,aa,af,ar,as,az,be,bg,bn,bs,bs-Cyrl,ca,cs,cy,da,de,dz,ee,el,en,en-US,en-US-u-va-posix,eo,es,et,fa,fa-AF,fi,fil,fo,fr,fr-CA,gu,ha,haw,he,hi,hr,hu,hy,ig,is,ja,kk,kl,km,kn,ko,kok,ln,lt,lv,mk,ml,mr,mt,my,nb,nn,nso,om,or,pa,pl,ps,ro,ru,se,si,sk,sl,sq,sr,sr-Latn,ssy,sv,ta,te,th,tn,to,tr,uk,ur,vi,wae,yo,zh,zh-Hant"
 
 const varTop = 0x30e
 
@@ -94,7 +97,7 @@
 		lookupOffset: 0x15,
 		valuesOffset: 0x0,
 	},
-	{ // en-US-posix
+	{ // en-US-u-va-posix
 		lookupOffset: 0x3f,
 		valuesOffset: 0x213,
 	},
diff --git a/go/src/golang.org/x/text/collate/tools/colcmp/darwin.go b/go/src/golang.org/x/text/collate/tools/colcmp/darwin.go
index ce2ab46..c2c31d5 100644
--- a/go/src/golang.org/x/text/collate/tools/colcmp/darwin.go
+++ b/go/src/golang.org/x/text/collate/tools/colcmp/darwin.go
@@ -77,13 +77,13 @@
 		nil,
 		osxCharP(a.UTF16),
 		C.CFIndex(len(a.UTF16)),
-		C.kCFAllocatorNull,
+		nil,
 	)
 	sb := C.CFStringCreateWithCharactersNoCopy(
 		nil,
 		osxCharP(b.UTF16),
 		C.CFIndex(len(b.UTF16)),
-		C.kCFAllocatorNull,
+		nil,
 	)
 	_range := C.CFRangeMake(0, C.CFStringGetLength(sa))
 	return int(C.CFStringCompareWithOptionsAndLocale(sa, sb, _range, c.opt, c.loc))
@@ -96,7 +96,7 @@
 		C.CFIndex(len(a.UTF8)),
 		C.kCFStringEncodingUTF8,
 		C.Boolean(0),
-		C.kCFAllocatorNull,
+		nil,
 	)
 	sb := C.CFStringCreateWithBytesNoCopy(
 		nil,
@@ -104,7 +104,7 @@
 		C.CFIndex(len(b.UTF8)),
 		C.kCFStringEncodingUTF8,
 		C.Boolean(0),
-		C.kCFAllocatorNull,
+		nil,
 	)
 	_range := C.CFRangeMake(0, C.CFStringGetLength(sa))
 	return int(C.CFStringCompareWithOptionsAndLocale(sa, sb, _range, c.opt, c.loc))
diff --git a/go/src/golang.org/x/text/display/dict.go b/go/src/golang.org/x/text/display/dict.go
index 704b36d..52c11a9 100644
--- a/go/src/golang.org/x/text/display/dict.go
+++ b/go/src/golang.org/x/text/display/dict.go
@@ -25,10 +25,10 @@
 	Greek                *Dictionary = &el        // el
 	English              *Dictionary = &en        // en
 	AmericanEnglish      *Dictionary = English    // en-US
-	BritishEnglish       *Dictionary = &enGB      // en-GB
+	BritishEnglish       *Dictionary = English    // en-GB
 	Spanish              *Dictionary = &es        // es
 	EuropeanSpanish      *Dictionary = Spanish    // es-ES
-	LatinAmericanSpanish *Dictionary = &es419     // es-419
+	LatinAmericanSpanish *Dictionary = Spanish    // es-419
 	Estonian             *Dictionary = &et        // et
 	Persian              *Dictionary = &fa        // fa
 	Finnish              *Dictionary = &fi        // fi
@@ -74,6 +74,7 @@
 	Slovenian            *Dictionary = &sl        // sl
 	Albanian             *Dictionary = &sq        // sq
 	Serbian              *Dictionary = &sr        // sr
+	SerbianLatin         *Dictionary = &srLatn    // sr
 	Swedish              *Dictionary = &sv        // sv
 	Swahili              *Dictionary = &sw        // sw
 	Tamil                *Dictionary = &ta        // ta
diff --git a/go/src/golang.org/x/text/display/dict_test.go b/go/src/golang.org/x/text/display/dict_test.go
new file mode 100644
index 0000000..a46c2df
--- /dev/null
+++ b/go/src/golang.org/x/text/display/dict_test.go
@@ -0,0 +1,39 @@
+// Copyright 2015 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 display
+
+import (
+	"fmt"
+	"testing"
+
+	"golang.org/x/text/internal/testtext"
+)
+
+func TestLinking(t *testing.T) {
+	base := getSize(t, `display.Tags(language.English).Name(language.English)`)
+	compact := getSize(t, `display.English.Languages().Name(language.English)`)
+
+	if d := base - compact; d < 1.5*1024*1024 {
+		t.Errorf("size(base)-size(compact) was %d; want > 1.5MB", base, compact)
+	}
+}
+
+func getSize(t *testing.T, main string) int {
+	size, err := testtext.CodeSize(fmt.Sprintf(body, main))
+	if err != nil {
+		t.Skipf("skipping link size test; binary size could not be determined: %v", err)
+	}
+	return size
+}
+
+const body = `package main
+import (
+	"golang.org/x/text/display"
+	"golang.org/x/text/language"
+)
+func main() {
+	%s
+}
+`
diff --git a/go/src/golang.org/x/text/display/display.go b/go/src/golang.org/x/text/display/display.go
index e9f38c8..eaab77a 100644
--- a/go/src/golang.org/x/text/display/display.go
+++ b/go/src/golang.org/x/text/display/display.go
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+//go:generate go run maketables.go -output tables.go
+
 // Package display provides display names for languages, scripts and regions in
 // a requested language.
 //
@@ -12,8 +14,6 @@
 // Dictionary defined for a selected set of common languages for this purpose.
 package display // import "golang.org/x/text/display"
 
-//go:generate go run maketables.go -output tables.go
-
 import (
 	"strings"
 
diff --git a/go/src/golang.org/x/text/display/display_test.go b/go/src/golang.org/x/text/display/display_test.go
index b13f178..5237c8d 100644
--- a/go/src/golang.org/x/text/display/display_test.go
+++ b/go/src/golang.org/x/text/display/display_test.go
@@ -289,7 +289,7 @@
 		{"en", "Arab", "Arabic"},
 		{"en", "Zzzz", "Unknown Script"},
 		{"zh-Hant", "Hang", "韓文字"},
-		{"zh-Hant-HK", "Hang", "韓文字母"},
+		{"zh-Hant-HK", "Hang", "韓文字"},
 		{"zh", "Arab", "阿拉伯文"},
 		{"zh-Hans-HK", "Arab", "阿拉伯文"}, // same as zh
 		{"zh-Hant", "Arab", "阿拉伯文"},
diff --git a/go/src/golang.org/x/text/display/maketables.go b/go/src/golang.org/x/text/display/maketables.go
index 8d74b0a..ae7e5a8 100644
--- a/go/src/golang.org/x/text/display/maketables.go
+++ b/go/src/golang.org/x/text/display/maketables.go
@@ -12,34 +12,20 @@
 	"bytes"
 	"flag"
 	"fmt"
-	"go/format"
 	"io"
-	"io/ioutil"
 	"log"
-	"net/http"
-	"os"
-	"path"
-	"path/filepath"
 	"reflect"
 	"sort"
 	"strings"
 
 	"golang.org/x/text/cldr"
+	"golang.org/x/text/internal/gen"
 	"golang.org/x/text/language"
 )
 
 var (
-	url = flag.String("cldr",
-		"http://www.unicode.org/Public/cldr/"+cldr.Version+"/core.zip",
-		"URL of CLDR archive.")
-	iana = flag.String("iana",
-		"http://www.iana.org/assignments/language-subtag-registry",
-		"URL of IANA language subtag registry.")
 	test = flag.Bool("test", false,
 		"test existing tables; can be used to compare web data with package data.")
-	localDir = flag.String("local",
-		"",
-		"directory containing local data files; for debugging only.")
 	outputFile = flag.String("output", "tables.go", "output file")
 
 	stats = flag.Bool("stats", false, "prints statistics to stderr")
@@ -66,8 +52,8 @@
 	const str = "af am ar ar-001 az bg bn ca cs da de el en en-US en-GB " +
 		"es es-ES es-419 et fa fi fil fr fr-CA gu he hi hr hu hy id is it ja " +
 		"ka kk km kn ko ky lo lt lv mk ml mn mr ms my ne nl no pa pl pt pt-BR " +
-		"pt-PT ro ru si sk sl sq sr sv sw ta te th tr uk ur uz vi zh zh-Hans " +
-		"zh-Hant zu"
+		"pt-PT ro ru si sk sl sq sr sr-Latn sv sw ta te th tr uk ur uz vi " +
+		"zh zh-Hans zh-Hant zu"
 
 	for _, s := range strings.Split(str, " ") {
 		tag = append(tag, language.MustParse(s))
@@ -76,28 +62,10 @@
 }
 
 func main() {
-	flag.Parse()
+	gen.Init()
 
 	// Read the CLDR zip file.
-	var r io.ReadCloser
-	if *localDir != "" {
-		dir, err := filepath.Abs(*localDir)
-		if err != nil {
-			log.Fatalf("Could not locate file: %v", err)
-		}
-		if r, err = os.Open(filepath.Join(dir, path.Base(*url))); err != nil {
-			log.Fatalf("Could not open file: %v", err)
-		}
-	} else {
-		resp, err := http.Get(*url)
-		if err != nil {
-			log.Fatalf("HTTP GET: %v", err)
-		}
-		if resp.StatusCode != 200 {
-			log.Fatalf("Bad GET status for %q: %q", *url, resp.Status)
-		}
-		r = resp.Body
-	}
+	r := gen.OpenCLDRCoreZip()
 	defer r.Close()
 
 	d := &cldr.Decoder{}
@@ -108,21 +76,16 @@
 		log.Fatalf("DecodeZip: %v", err)
 	}
 
-	var buf bytes.Buffer
+	w := &bytes.Buffer{}
+	gen.WriteCLDRVersion(w)
+
 	b := builder{
-		w:     &buf,
+		w:     w,
 		data:  data,
 		group: make(map[string]*group),
 	}
 	b.generate()
-
-	out, err := format.Source(buf.Bytes())
-	if err != nil {
-		log.Fatalf("Could not format output: %v", err)
-	}
-	if err := ioutil.WriteFile(*outputFile, out, 0644); err != nil {
-		log.Fatalf("Could not write output: %v", err)
-	}
+	gen.WriteGoFile(*outputFile, "display", w.Bytes())
 }
 
 const tagForm = language.All
@@ -227,14 +190,7 @@
 	index []uint16
 }
 
-var head = `// Generated by running
-//		maketables -url=%s
-// automatically with go generate.
-// DO NOT EDIT
-
-package %s
-
-// Version is the version of CLDR used to generate the data in this package.
+var versionInfo = `// Version is the version of CLDR used to generate the data in this package.
 const Version = %#v
 
 `
@@ -243,7 +199,7 @@
 
 // generate builds and writes all tables.
 func (b *builder) generate() {
-	fmt.Fprintf(b.w, head, *url, *pkg, cldr.Version)
+	fmt.Fprintf(b.w, versionInfo, cldr.Version)
 
 	b.filter()
 	b.setData("lang", func(g *group, loc language.Tag, ldn *cldr.LocaleDisplayNames) {
diff --git a/go/src/golang.org/x/text/display/tables.go b/go/src/golang.org/x/text/display/tables.go
index 020aee3..f9a9d35 100644
--- a/go/src/golang.org/x/text/display/tables.go
+++ b/go/src/golang.org/x/text/display/tables.go
@@ -1,46 +1,45 @@
-// Generated by running
-//		maketables -url=http://www.unicode.org/Public/cldr/26/core.zip
-// automatically with go generate.
-// DO NOT EDIT
+// This file was generated by go generate; DO NOT EDIT
 
 package display
 
+// CLDRVersion is the CLDR version from which the tables in this package are derived.
+const CLDRVersion = "27.0.1"
+
 // Version is the version of CLDR used to generate the data in this package.
-const Version = "26"
+const Version = "27.0.1"
 
-// parent relationship: 220 entries
-var parents = [220]int16{
-	-1, -1, -1, -1, -1, 4, 4, -1, -1, -1, -1, -1,
-	-1, -1, -1, -1, -1, -1, -1, 18, -1, 20, -1, -1,
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, -1,
-	-1, -1, -1, -1, -1, -1, -1, -1, 45, 43, -1, -1,
-	47, 48, 48, -1, -1, -1, -1, 54, -1, -1, -1, -1,
-	-1, 60, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+// parent relationship: 210 entries
+var parents = [210]int16{
+	-1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1,
+	-1, -1, -1, -1, -1, -1, -1, 18, -1, -1, -1, -1,
+	-1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1,
+	-1, -1, -1, -1, -1, -1, 41, -1, -1, 44, 44, -1,
+	-1, -1, -1, 50, -1, -1, -1, -1, -1, 56, -1, -1,
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-	-1, -1, -1, -1, 135, -1, 137, -1, -1, -1, -1, -1,
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1,
-	-1, -1, -1, -1, 159, -1, -1, -1, -1, -1, -1, 166,
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-	-1, -1, -1, 182, -1, -1, -1, -1, -1, -1, -1, -1,
-	-1, -1, -1, -1, -1, -1, 197, -1, -1, -1, -1, -1,
-	-1, -1, -1, -1, -1, -1, -1, 210, -1, -1, 213, 213,
-	213, -1, 217, -1}
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+	-1, -1, -1, 146, -1, -1, -1, -1, -1, -1, -1, -1,
+	-1, -1, -1, -1, 159, -1, -1, -1, -1, -1, -1, -1,
+	-1, -1, -1, -1, -1, -1, -1, -1, 175, -1, 177, -1,
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 190,
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+	203, -1, -1, -1, 207, -1}
 
-// Number of keys: 603
+// Number of keys: 604
 var (
 	langIndex = tagIndex{
 		"aaabaeafakamanarasavayazbabebgbibmbnbobrbscacechcocrcscucvcydadedvdzeeeleneoeseteufafffifjfofrfygagdglgngugvhahehihohrhthuhyhziaidieigiiikioisitiujajvkakgkikjkkklkmknkokrkskukvkwkylalblglilnloltlulvmgmhmimkmlmnmrmsmtmynandnengnlnnnonrnvnyocojomorospapiplpsptqurmrnrorurwsascsdsesgsiskslsmsnsosqsrssstsusvswtatetgthtitktntotrtstttyugukuruzvevivowawoxhyiyozazhzu",
-		"aceachadaadyaebafhagqainakkakzalealnaltanganparcarnaroarparqarwaryarzasaaseastavkawaazbbalbanbarbasbaxbbcbbjbejbembewbezbfdbfqbhobikbinbjnbkmblabpybqibrabrhbrxbssbuabugbumbynbyvcadcarcaycchcebcggchbchgchkchmchnchochpchrchyckbcopcpscrhcsbdakdardavdeldendgrdindjedoidsbdtpduadumdyodyudzgebuefieglegyekaelxenmesuewoextfanfilfitfonfrcfrmfrofrpfrrfrsfurgaagaggangaygbagbzgezgilglkgmhgohgomgongorgotgrbgrcgswgucgurguzgwihaihakhawhifhilhithmnhsbhsnhupibaibbiloinhizhjamjbojgojmcjprjrbjutkaakabkackajkamkawkbdkblkcgkdekeakenkfokgpkhakhokhqkhwkiukkjklnkmbkoikokkoskpekrckrikrjkrlkruksbksfkshkumkutladlaglahlamlezlfnlijlivlktlmolollozltglualuilunluolusluylzhlzzmadmafmagmaimakmanmasmdemdfmdrmenmermfemgamghmgomicminmncmnimohmosmrjmuamulmusmwlmwrmwvmyemyvmznnannapnaqndsnewnianiunjonmgnnhnognonnovnqonsonusnwcnymnynnyonziosaotapagpalpampappaupcdpdcpdtpeopflphnpmspntponprgproqucqugrajraprarrgnrifrofromrtmruerugruprwksadsahsamsaqsassatsazsbasbpscnscosdcseesehseiselsessgasgsshishnshusidslislysmasmjsmnsmssnksogsrnsrrssystqsuksussuxswbswcsycsyrszltcytemteotertettigtivtkltkrtlhtlitlytmhtogtpitrutrvtsdtsittttumtvltwqtyvtzmudmugaumbundvaivecvepvlsvmfvotvrovunwaewalwarwaswuuxalxmfxogyaoyapyavybbyrlyuezapzblzeazenzghzunzxxzza",
+		"aceachadaadyaebafhagqainakkakzalealnaltanganparcarnaroarparqarwaryarzasaaseastavkawaazbbalbanbarbasbaxbbcbbjbejbembewbezbfdbfqbhobikbinbjnbkmblabpybqibrabrhbrxbssbuabugbumbynbyvcadcarcaycchcebcggchbchgchkchmchnchochpchrchyckbcopcpscrhcsbdakdardavdeldendgrdindjedoidsbdtpduadumdyodyudzgebuefieglegyekaelxenmesuewoextfanfilfitfonfrcfrmfrofrpfrrfrsfurgaagaggangaygbagbzgezgilglkgmhgohgomgongorgotgrbgrcgswgucgurguzgwihaihakhawhifhilhithmnhsbhsnhupibaibbiloinhizhjamjbojgojmcjprjrbjutkaakabkackajkamkawkbdkblkcgkdekeakenkfokgpkhakhokhqkhwkiukkjklnkmbkoikokkoskpekrckrikrjkrlkruksbksfkshkumkutladlaglahlamlezlfnlijlivlktlmolollozltglualuilunluolusluylzhlzzmadmafmagmaimakmanmasmdemdfmdrmenmermfemgamghmgomicminmncmnimohmosmrjmuamulmusmwlmwrmwvmyemyvmznnannapnaqndsnewnianiunjonmgnnhnognonnovnqonsonusnwcnymnynnyonziosaotapagpalpampappaupcdpdcpdtpeopflphnpmspntponprgproqucqugrajraprarrgnrifrofromrtmruerugruprwksadsahsamsaqsassatsazsbasbpscnscosdcseesehseiselsessgasgsshishnshusidslislysmasmjsmnsmssnksogsrnsrrssystqsuksussuxswbswcsycsyrszltcytemteotertettigtivtkltkrtlhtlitlytmhtogtpitrutrvtsdtsittttumtvltwqtyvtzmudmugaumbundvaivecvepvlsvmfvotvrovunwaewalwarwaswbpwuuxalxmfxogyaoyapyavybbyrlyuezapzblzeazenzghzunzxxzza",
 		"",
 	}
 	langTagsLong = []string{"ar-001", "de-AT", "de-CH", "en-AU", "en-CA", "en-GB", "en-US", "es-419", "es-ES", "es-MX", "fr-CA", "fr-CH", "nl-BE", "pt-BR", "pt-PT", "ro-MD", "sr-Latn", "zh-Hans", "zh-Hant"}
 )
 
-var langHeaders = [220]header{
+var langHeaders = [210]header{
 	{ // af
 		afLangStr,
 		afLangIdx,
@@ -103,119 +102,12 @@
 		arLangStr,
 		arLangIdx,
 	},
-	{ // ar-AE
-		"تكلحيت",
-		[]uint16{ // 503 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
-		},
-	},
 	{ // ar-EG
-		"الأفستانيةالأرغونيةالأساميزيةالآفاريةالبيلاروسيةالتشوفاشيالولشيةالدنماركيةالكانا" +
-			"ديةالكيرغزستانيةالماراثيةالتيغرينيةالأويغوريةالأوزبكيةلغة الفولابوكالأديغةالأغيم" +
-			"يةالألطية الجنوبيةالمابوتشيةالآسواللغة البالينيةلغة الغومالالغة البافوتالبهوجبور" +
-			"يةلغة الكومالأكوسيةلغة البولولغة الميدومباالكادويةالكايوجيةالأتساميةالسيبيونيةال" +
-			"شيروكيةالسورانية الكرديةالتركية الكريمانيةالدوجريةالجباياالجعزيةالإيبيبيويةالمات" +
-			"شاميةالفارسية العبريةالعربية العبريةالتايابيةالماكونديةالكابوفيرديانيويةالكورية " +
-			"التشينيةالكاكويةالكالينجينيةالكاريليةالكيوركالشمبالايةلغة البافيالغة الكولونيانا" +
-			"لكوميكاللادينواللانغيةالليزجيةالميزولغة اللوياالمغهيةالمايثليةالميرولغة ماكوا مي" +
-			"توالمانيبوريةالمارواريةلغة الناماالنواريةلغة الكواسيولغة النجيمبونالرومبوالغجرية" +
-			"الرواالآرامية السامريةالسامبوروالسانغوالسينيكاالسينالغة الكوري ابروسينيالتاشلحيت" +
-			"لغة الساهولغة جزر القمرلغة الكونغو السواحليةالتيزوالتيغريةلغة التاروكولغة التاسا" +
-			"واكالتوفيةالتمازيغية الأوسط أطلسيةالأدمرتيةالفونجوالوالسرالولاياتاالسوغااليانغبي" +
-			"نيمباالإسبانية أمريكا اللاتينيةالإسبانية المكسيكيةالفلمنكيةصربية-كرواتية",
-		[]uint16{ // 602 entries
-			0x0, 0x0, 0x0, 0x14, 0x14, 0x14, 0x14, 0x26, 0x26, 0x3a, 0x4a, 0x4a,
-			0x4a, 0x4a, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
-			0x60, 0x60, 0x60, 0x60, 0x60, 0x72, 0x80, 0x94, 0x94, 0x94, 0x94, 0x94,
-			0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
-			0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
-			0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
-			0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0xa6,
-			0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
-			0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd2, 0xd2,
-			0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2,
-			0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2,
-			0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2,
-			0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2,
-			0xd2, 0xd2, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xfa, 0xfa,
-			0xfa, 0x10c, 0x10c, 0x10c, 0x125, 0x125, 0x125, 0x125, 0x125, 0x125, 0x125, 0x125,
-			0x125, 0x125, 0x125, 0x125, 0x133, 0x133, 0x133, 0x143, 0x143, 0x143, 0x143, 0x143,
-			0x143, 0x162, 0x162, 0x162, 0x162, 0x176, 0x176, 0x176, 0x176, 0x176, 0x176, 0x176,
-			0x180, 0x180, 0x180, 0x180, 0x180, 0x180, 0x180, 0x19d, 0x19d, 0x19d, 0x19d, 0x19d,
-			0x1b4, 0x1b4, 0x1b4, 0x1b4, 0x1b4, 0x1c9, 0x1c9, 0x1df, 0x1df, 0x1df, 0x1df, 0x1f0,
-			0x1f0, 0x1f0, 0x1f0, 0x1f0, 0x1f0, 0x1f0, 0x200, 0x200, 0x200, 0x213, 0x213, 0x22c,
-			0x23c, 0x23c, 0x24e, 0x260, 0x274, 0x274, 0x274, 0x274, 0x274, 0x274, 0x274, 0x274,
-			0x274, 0x286, 0x286, 0x2a7, 0x2a7, 0x2a7, 0x2ca, 0x2ca, 0x2ca, 0x2ca, 0x2ca, 0x2ca,
-			0x2ca, 0x2ca, 0x2ca, 0x2ca, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da,
-			0x2da, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da,
-			0x2da, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da, 0x2da,
-			0x2da, 0x2e8, 0x2e8, 0x2f6, 0x2f6, 0x2f6, 0x2f6, 0x2f6, 0x2f6, 0x2f6, 0x2f6, 0x2f6,
-			0x2f6, 0x2f6, 0x2f6, 0x2f6, 0x2f6, 0x2f6, 0x2f6, 0x2f6, 0x2f6, 0x2f6, 0x2f6, 0x2f6,
-			0x2f6, 0x2f6, 0x2f6, 0x2f6, 0x2f6, 0x2f6, 0x30c, 0x30c, 0x30c, 0x30c, 0x30c, 0x30c,
-			0x30c, 0x320, 0x33f, 0x35c, 0x35c, 0x35c, 0x35c, 0x35c, 0x35c, 0x35c, 0x35c, 0x35c,
-			0x35c, 0x36e, 0x382, 0x3a4, 0x3a4, 0x3a4, 0x3a4, 0x3a4, 0x3a4, 0x3c3, 0x3c3, 0x3c3,
-			0x3d3, 0x3eb, 0x3eb, 0x3eb, 0x3eb, 0x3eb, 0x3eb, 0x3eb, 0x3eb, 0x3eb, 0x3fd, 0x40b,
-			0x41f, 0x434, 0x44f, 0x45d, 0x45d, 0x46d, 0x47d, 0x47d, 0x47d, 0x48d, 0x48d, 0x48d,
-			0x48d, 0x48d, 0x48d, 0x48d, 0x48d, 0x48d, 0x48d, 0x48d, 0x48d, 0x48d, 0x499, 0x4ac,
-			0x4ac, 0x4ac, 0x4ac, 0x4ac, 0x4ba, 0x4cc, 0x4cc, 0x4cc, 0x4cc, 0x4cc, 0x4cc, 0x4cc,
-			0x4cc, 0x4d8, 0x4d8, 0x4d8, 0x4f2, 0x4f2, 0x4f2, 0x4f2, 0x4f2, 0x508, 0x508, 0x508,
-			0x508, 0x508, 0x508, 0x508, 0x508, 0x51c, 0x51c, 0x51c, 0x51c, 0x51c, 0x51c, 0x51c,
-			0x52f, 0x52f, 0x53f, 0x53f, 0x53f, 0x53f, 0x556, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f,
-			0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f,
-			0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f,
-			0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x56f, 0x57d, 0x58b, 0x58b, 0x58b,
-			0x58b, 0x58b, 0x595, 0x595, 0x595, 0x5b6, 0x5c8, 0x5c8, 0x5c8, 0x5c8, 0x5c8, 0x5d6,
-			0x5d6, 0x5d6, 0x5d6, 0x5e6, 0x5f2, 0x5f2, 0x5f2, 0x616, 0x616, 0x616, 0x628, 0x628,
-			0x628, 0x628, 0x628, 0x628, 0x628, 0x628, 0x628, 0x628, 0x628, 0x628, 0x628, 0x628,
-			0x63b, 0x63b, 0x63b, 0x63b, 0x63b, 0x653, 0x67b, 0x67b, 0x67b, 0x67b, 0x67b, 0x67b,
-			0x687, 0x687, 0x687, 0x697, 0x697, 0x697, 0x697, 0x697, 0x697, 0x697, 0x697, 0x697,
-			0x697, 0x697, 0x6ae, 0x6ae, 0x6ae, 0x6ae, 0x6ae, 0x6ae, 0x6c7, 0x6d5, 0x703, 0x715,
-			0x715, 0x715, 0x715, 0x715, 0x715, 0x715, 0x715, 0x715, 0x715, 0x715, 0x723, 0x731,
-			0x743, 0x743, 0x743, 0x743, 0x743, 0x743, 0x74f, 0x74f, 0x74f, 0x761, 0x769, 0x769,
-			0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769,
-			0x769, 0x769, 0x769, 0x769, 0x79b, 0x79b, 0x7c0, 0x7c0, 0x7c0, 0x7d2, 0x7d2, 0x7d2,
-			0x7d2, 0x7eb,
+		"الدنماركية",
+		[]uint16{ // 32 entries
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14,
 		},
 	},
 	{ // as
@@ -309,7 +201,7 @@
 			"dáinglés de Gran Bretañainglés americanuespañol de Méxicofrancés de Canadáfrancé" +
 			"s de Suizaflamencuportugués del Brasilmoldavuserbo-croatachinu simplificáuchinu " +
 			"tradicional",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x4, 0xe, 0x18, 0x21, 0x23, 0x2b, 0x34, 0x3a, 0x41, 0x49, 0x4f,
 			0x5a, 0x61, 0x6b, 0x73, 0x7a, 0x81, 0x8a, 0x92, 0x99, 0x9f, 0xa7, 0xaf,
 			0xb7, 0xbc, 0xc0, 0xc5, 0xdc, 0xe3, 0xe9, 0xef, 0xf6, 0xfc, 0x104, 0x107,
@@ -357,10 +249,10 @@
 			0x1007, 0x1007, 0x100c, 0x1011, 0x1014, 0x101b, 0x101b, 0x1022, 0x1022, 0x1022, 0x102a, 0x102a,
 			0x1033, 0x1033, 0x1039, 0x1039, 0x1039, 0x1039, 0x1040, 0x1046, 0x104d, 0x1056, 0x1071, 0x1077,
 			0x1081, 0x1088, 0x108c, 0x108f, 0x1098, 0x1098, 0x10ab, 0x10ab, 0x10ab, 0x10ab, 0x10b0, 0x10b0,
-			0x10b8, 0x10bd, 0x10bd, 0x10c5, 0x10c5, 0x10c5, 0x10c9, 0x10cc, 0x10d2, 0x10d9, 0x10de, 0x10de,
-			0x10e7, 0x10ef, 0x10ef, 0x10f9, 0x10f9, 0x1119, 0x1119, 0x1137, 0x1137, 0x114f, 0x114f, 0x1163,
-			0x1163, 0x1175, 0x118d, 0x119e, 0x119e, 0x119e, 0x11b1, 0x11c4, 0x11d5, 0x11dd, 0x11f2, 0x11f2,
-			0x11f9, 0x1205, 0x1217, 0x1228,
+			0x10b8, 0x10bd, 0x10bd, 0x10bd, 0x10c5, 0x10c5, 0x10c5, 0x10c9, 0x10cc, 0x10d2, 0x10d9, 0x10de,
+			0x10de, 0x10e7, 0x10ef, 0x10ef, 0x10f9, 0x10f9, 0x1119, 0x1119, 0x1137, 0x1137, 0x114f, 0x114f,
+			0x1163, 0x1163, 0x1175, 0x118d, 0x119e, 0x119e, 0x119e, 0x11b1, 0x11c4, 0x11d5, 0x11dd, 0x11f2,
+			0x11f2, 0x11f9, 0x1205, 0x1217, 0x1228,
 		},
 	},
 	{ // az
@@ -434,7 +326,7 @@
 			"ецкая (швейц.)англійская (аўстрал.)англійская (канад.)англійская (ЗША)іспанская " +
 			"(лацінаамер.)французская (канад.)французская (швейц.)фламандскаяпартугальская (б" +
 			"разіл.)малдаўскаясербска-харвацкаяспрошчаная кітайскаятрадыцыйная кітайская",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x0, 0x12, 0x12, 0x24, 0x24, 0x36, 0x4a, 0x5a, 0x6a, 0x7a, 0x86,
 			0xa4, 0xb8, 0xcc, 0xe0, 0xe0, 0xe0, 0xf6, 0xf6, 0x10a, 0x11e, 0x134, 0x146,
 			0x146, 0x146, 0x146, 0x154, 0x154, 0x166, 0x178, 0x184, 0x194, 0x194, 0x194, 0x194,
@@ -483,9 +375,9 @@
 			0x878, 0x878, 0x878, 0x878, 0x878, 0x878, 0x878, 0x878, 0x878, 0x878, 0x878, 0x878,
 			0x878, 0x878, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893,
 			0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893,
-			0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x8b1, 0x8cf,
-			0x8f5, 0x917, 0x917, 0x934, 0x95e, 0x95e, 0x95e, 0x982, 0x9a6, 0x9bc, 0x9e6, 0x9e6,
-			0x9fa, 0xa1b, 0xa42, 0xa6b,
+			0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x893, 0x8b1,
+			0x8cf, 0x8f5, 0x917, 0x917, 0x934, 0x95e, 0x95e, 0x95e, 0x982, 0x9a6, 0x9bc, 0x9e6,
+			0x9e6, 0x9fa, 0xa1b, 0xa42, 0xa6b,
 		},
 	},
 	{ // bem
@@ -580,62 +472,6 @@
 		bnLangStr,
 		bnLangIdx,
 	},
-	{ // bn-IN
-		"আবখাজিয়ানচামোরোচার্চ স্লাভিকউড়িয়াঅ্যাচাইনিজআকোলিআঙ্গিকাচিনুক জার্গনচকটোওচিপেও" +
-			"য়াইয়ানচেয়েনিডোগরিআরমেনিয়ানব্লিসসিম্বলসঅস্ট্রিয়ান জারমানক্যানাডিয়ান ফরাসী",
-		[]uint16{ // 596 entries
-			0x0, 0x0, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
-			0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
-			0x30, 0x30, 0x30, 0x30, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-			0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-			0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-			0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-			0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-			0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-			0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-			0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-			0x55, 0x55, 0x55, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a,
-			0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a,
-			0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a,
-			0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a,
-			0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a,
-			0x6a, 0x88, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
-			0x97, 0x97, 0x97, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
-			0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
-			0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
-			0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
-			0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xce, 0xdd,
-			0x104, 0x104, 0x119, 0x119, 0x119, 0x119, 0x119, 0x119, 0x119, 0x119, 0x119, 0x119,
-			0x119, 0x119, 0x119, 0x119, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
-			0x128, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146,
-			0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146,
-			0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146,
-			0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146,
-			0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146,
-			0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146,
-			0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146,
-			0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146,
-			0x146, 0x146, 0x16a, 0x16a, 0x16a, 0x16a, 0x16a, 0x16a, 0x16a, 0x16a, 0x19e, 0x19e,
-			0x19e, 0x19e, 0x19e, 0x19e, 0x19e, 0x19e, 0x19e, 0x1d2,
-		},
-	},
 	{ // bo
 		"བོད་སྐད་རྫོང་ཁཧིན་དིརི་པིན་སྐད་ནེ་པ་ལིཨུ་རུ་སུ་སྐད་རྒྱ་སྐད་",
 		[]uint16{ // 180 entries
@@ -704,7 +540,7 @@
 			" Amerikaspagnoleg Amerika latinspagnoleg Europaspagnoleg Mecʼhikogalleg Kanadaga" +
 			"lleg Suisflandrezegportugaleg Brazilportugaleg Europamoldovegserb-kroategsinaeg " +
 			"eeunaetsinaeg hengounel",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x4, 0xc, 0x13, 0x1c, 0x20, 0x27, 0x2f, 0x35, 0x3b, 0x3f, 0x45,
 			0x4a, 0x51, 0x5a, 0x62, 0x69, 0x70, 0x77, 0x80, 0x89, 0x8f, 0x98, 0xa3,
 			0xab, 0xb1, 0xb4, 0xbb, 0xc8, 0xd2, 0xda, 0xdf, 0xe7, 0xed, 0xf5, 0xf8,
@@ -752,10 +588,10 @@
 			0xc00, 0xc06, 0xc0b, 0xc14, 0xc17, 0xc1e, 0xc1e, 0xc25, 0xc2c, 0xc2c, 0xc34, 0xc3f,
 			0xc48, 0xc48, 0xc48, 0xc48, 0xc51, 0xc51, 0xc58, 0xc5e, 0xc5e, 0xc63, 0xc63, 0xc6d,
 			0xc76, 0xc7d, 0xc88, 0xc8b, 0xc8b, 0xc8b, 0xca4, 0xca4, 0xcac, 0xcac, 0xcac, 0xcb2,
-			0xcb8, 0xcbd, 0xcc2, 0xccb, 0xcd2, 0xcd2, 0xcd2, 0xcd5, 0xcda, 0xcda, 0xcda, 0xcda,
-			0xce2, 0xce9, 0xcee, 0xcf6, 0xcfc, 0xd14, 0xd18, 0xd1e, 0xd1e, 0xd2b, 0xd3b, 0xd4d,
-			0xd5e, 0xd6c, 0xd7f, 0xd8e, 0xda5, 0xdb5, 0xdc8, 0xdd5, 0xde0, 0xdea, 0xdfb, 0xe0c,
-			0xe14, 0xe20, 0xe2e, 0xe3e,
+			0xcb8, 0xcbd, 0xcc2, 0xcc2, 0xccb, 0xcd2, 0xcd2, 0xcd2, 0xcd5, 0xcda, 0xcda, 0xcda,
+			0xcda, 0xce2, 0xce9, 0xcee, 0xcf6, 0xcfc, 0xd14, 0xd18, 0xd1e, 0xd1e, 0xd2b, 0xd3b,
+			0xd4d, 0xd5e, 0xd6c, 0xd7f, 0xd8e, 0xda5, 0xdb5, 0xdc8, 0xdd5, 0xde0, 0xdea, 0xdfb,
+			0xe0c, 0xe14, 0xe20, 0xe2e, 0xe3e,
 		},
 	},
 	{ // brx
@@ -800,7 +636,7 @@
 			"उच्च स्तरिय स्वीस जर्मनअंग्रेज़ी (ऑस्ट्रेलिया का)अंग्रेज़ी (कनाडाई)अंग्रेजी (ब्र" +
 			"िटिश)अंग्रेज़ी (अमरिकी)लैटिन अमरिकी स्पैनिशईवेरियाई स्पैनिशफ्रांसीसी (कनाडाई)फ्र" +
 			"ांसीसी (स्वीस)फ्लेमीमोल्डेवियन्सर्बो-क्रोएशन्चीनी (सरलीकृत)चीनी (पारम्परिक)",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x0, 0x21, 0x36, 0x4b, 0x54, 0x6f, 0x84, 0x90, 0x9f, 0xb4, 0xc6,
 			0xe4, 0xf9, 0x11a, 0x138, 0x150, 0x165, 0x174, 0x189, 0x19b, 0x1b6, 0x1ce, 0x1e0,
 			0x1f2, 0x20d, 0x219, 0x225, 0x24a, 0x25c, 0x26e, 0x280, 0x292, 0x2a4, 0x2b6, 0x2bf,
@@ -848,10 +684,10 @@
 			0x209e, 0x20b0, 0x20bf, 0x20d1, 0x20dd, 0x20ef, 0x20ef, 0x2107, 0x211f, 0x211f, 0x2131, 0x2153,
 			0x216c, 0x216c, 0x216c, 0x216c, 0x218a, 0x218a, 0x219f, 0x21b1, 0x21b1, 0x21bd, 0x21bd, 0x21d5,
 			0x21ea, 0x21ff, 0x2208, 0x2211, 0x2211, 0x2211, 0x2211, 0x2211, 0x2220, 0x2220, 0x2220, 0x2220,
-			0x2232, 0x223e, 0x224a, 0x224a, 0x225c, 0x225c, 0x225c, 0x2265, 0x2277, 0x2277, 0x2277, 0x2277,
-			0x2277, 0x228f, 0x22ae, 0x22ae, 0x22c3, 0x22c3, 0x22d2, 0x22e1, 0x22f3, 0x22f3, 0x2320, 0x235f,
-			0x23a5, 0x23d5, 0x2405, 0x2435, 0x246d, 0x249b, 0x249b, 0x24cb, 0x24f8, 0x250a, 0x250a, 0x250a,
-			0x252b, 0x2553, 0x2577, 0x25a1,
+			0x2232, 0x223e, 0x224a, 0x224a, 0x224a, 0x225c, 0x225c, 0x225c, 0x2265, 0x2277, 0x2277, 0x2277,
+			0x2277, 0x2277, 0x228f, 0x22ae, 0x22ae, 0x22c3, 0x22c3, 0x22d2, 0x22e1, 0x22f3, 0x22f3, 0x2320,
+			0x235f, 0x23a5, 0x23d5, 0x2405, 0x2435, 0x246d, 0x249b, 0x249b, 0x24cb, 0x24f8, 0x250a, 0x250a,
+			0x250a, 0x252b, 0x2553, 0x2577, 0x25a1,
 		},
 	},
 	{ // bs
@@ -905,7 +741,7 @@
 			"dski engleskibritanski engleskiamerički engleskilatinoamerički španskievropski š" +
 			"panskimeksički španskikanadski francuskišvajcarski francuskiflamanskimoldavskisr" +
 			"pskohrvatskikineski (pojednostavljeni)kineski (tradicionalni)",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x7, 0x11, 0x1b, 0x27, 0x2b, 0x33, 0x41, 0x48, 0x51, 0x58, 0x5e,
 			0x6d, 0x77, 0x81, 0x89, 0x90, 0x97, 0xa0, 0xaa, 0xb3, 0xbb, 0xc5, 0xcf,
 			0xd6, 0xe1, 0xe4, 0xeb, 0xf9, 0x102, 0x104, 0x10a, 0x113, 0x11d, 0x124, 0x127,
@@ -953,10 +789,10 @@
 			0xd92, 0xd98, 0xd9d, 0xda2, 0xda5, 0xdac, 0xdac, 0xdb6, 0xdbd, 0xdbd, 0xdc5, 0xdd0,
 			0xdd9, 0xdd9, 0xdd9, 0xdd9, 0xde2, 0xde2, 0xde9, 0xdef, 0xdf6, 0xe00, 0xe13, 0xe19,
 			0xe22, 0xe29, 0xe2c, 0xe2f, 0xe2f, 0xe2f, 0xe2f, 0xe2f, 0xe35, 0xe35, 0xe3a, 0xe3a,
-			0xe40, 0xe45, 0xe4a, 0xe4a, 0xe50, 0xe50, 0xe54, 0xe57, 0xe5f, 0xe5f, 0xe5f, 0xe5f,
-			0xe5f, 0xe69, 0xe73, 0xe73, 0xe79, 0xe97, 0xe9b, 0xeb7, 0xebb, 0xed5, 0xee9, 0xf05,
-			0xf18, 0xf29, 0xf3b, 0xf4d, 0xf65, 0xf76, 0xf88, 0xf9a, 0xfaf, 0xfb8, 0xfb8, 0xfb8,
-			0xfc1, 0xfcf, 0xfe9, 0x1000,
+			0xe40, 0xe45, 0xe4a, 0xe4a, 0xe4a, 0xe50, 0xe50, 0xe54, 0xe57, 0xe5f, 0xe5f, 0xe5f,
+			0xe5f, 0xe5f, 0xe69, 0xe73, 0xe73, 0xe79, 0xe97, 0xe9b, 0xeb7, 0xebb, 0xed5, 0xee9,
+			0xf05, 0xf18, 0xf29, 0xf3b, 0xf4d, 0xf65, 0xf76, 0xf88, 0xf9a, 0xfaf, 0xfb8, 0xfb8,
+			0xfb8, 0xfc1, 0xfcf, 0xfe9, 0x1000,
 		},
 	},
 	{ // bs-Cyrl
@@ -1005,7 +841,7 @@
 			"тански енглескиСАД енглескиЛатино-амерички шпанскиИберијски шпанскиКанадски фран" +
 			"цускиШвајцарски францускифламанскиБразилски португалскиИберијски португалскимолд" +
 			"авскисрпскохрватскикинески (поједностављен)кинески (традиционални)",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0xe, 0x22, 0x36, 0x4e, 0x56, 0x66, 0x80, 0x8e, 0xa0, 0xae, 0xba,
 			0xd4, 0xe0, 0xf2, 0x102, 0x110, 0x11e, 0x130, 0x144, 0x156, 0x166, 0x17a, 0x18a,
 			0x196, 0x1ac, 0x1b2, 0x1bc, 0x1d8, 0x1e6, 0x1f2, 0x1fe, 0x20c, 0x220, 0x22a, 0x230,
@@ -1053,10 +889,10 @@
 			0x179f, 0x17ab, 0x17b5, 0x17bf, 0x17c5, 0x17d3, 0x17d3, 0x17e7, 0x17f5, 0x17f5, 0x1803, 0x1816,
 			0x1827, 0x1827, 0x1827, 0x1827, 0x1837, 0x1837, 0x1845, 0x1851, 0x1851, 0x1865, 0x1865, 0x1871,
 			0x1883, 0x1891, 0x1897, 0x189d, 0x189d, 0x189d, 0x189d, 0x189d, 0x18a9, 0x18a9, 0x18a9, 0x18a9,
-			0x18b5, 0x18bf, 0x18c7, 0x18c7, 0x18d3, 0x18d3, 0x18d3, 0x18d9, 0x18e7, 0x18e7, 0x18e7, 0x18e7,
-			0x18f9, 0x190b, 0x191f, 0x191f, 0x192b, 0x192b, 0x1933, 0x1965, 0x196d, 0x196d, 0x1990, 0x19c0,
-			0x19e9, 0x1a0a, 0x1a2d, 0x1a44, 0x1a70, 0x1a91, 0x1a91, 0x1ab4, 0x1adb, 0x1aed, 0x1b16, 0x1b3f,
-			0x1b51, 0x1b6d, 0x1b9a, 0x1bc5,
+			0x18b5, 0x18bf, 0x18c7, 0x18c7, 0x18c7, 0x18d3, 0x18d3, 0x18d3, 0x18d9, 0x18e7, 0x18e7, 0x18e7,
+			0x18e7, 0x18f9, 0x190b, 0x191f, 0x191f, 0x192b, 0x192b, 0x1933, 0x1965, 0x196d, 0x196d, 0x1990,
+			0x19c0, 0x19e9, 0x1a0a, 0x1a2d, 0x1a44, 0x1a70, 0x1a91, 0x1a91, 0x1ab4, 0x1adb, 0x1aed, 0x1b16,
+			0x1b3f, 0x1b51, 0x1b6d, 0x1b9a, 0x1bc5,
 		},
 	},
 	{ // ca
@@ -1196,7 +1032,7 @@
 			"nSbaeneg EwropSbaeneg MecsicoFfrangeg CanadaFfrangeg y SwistirFflemegPortiwgeeg " +
 			"BrasilPortiwgeeg EwropMoldofegSerbo-CroategTsieineeg SymledigTsieineeg Traddodia" +
 			"dol",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x7, 0xf, 0x18, 0x23, 0x29, 0x30, 0x38, 0x3e, 0x44, 0x4a, 0x4a,
 			0x56, 0x60, 0x69, 0x71, 0x78, 0x80, 0x88, 0x8f, 0x97, 0x9e, 0xa7, 0xb2,
 			0xbb, 0xc1, 0xc4, 0xcb, 0xd7, 0xd7, 0xde, 0xe3, 0xeb, 0xf1, 0xf1, 0xf4,
@@ -1244,10 +1080,10 @@
 			0xbdc, 0xbdc, 0xbe3, 0xbe3, 0xbe3, 0xbe3, 0xbe3, 0xbea, 0xbea, 0xbea, 0xbf4, 0xbf4,
 			0xbf4, 0xbf4, 0xbf4, 0xbf4, 0xbf4, 0xbf4, 0xbf4, 0xbfc, 0xbfc, 0xbfc, 0xbfc, 0xc04,
 			0xc0c, 0xc13, 0xc1c, 0xc21, 0xc28, 0xc28, 0xc3b, 0xc3b, 0xc3b, 0xc3b, 0xc3b, 0xc3b,
-			0xc41, 0xc41, 0xc41, 0xc41, 0xc49, 0xc49, 0xc49, 0xc49, 0xc49, 0xc49, 0xc50, 0xc50,
-			0xc59, 0xc62, 0xc6e, 0xc77, 0xc77, 0xc8f, 0xc93, 0xca9, 0xcb0, 0xcc5, 0xcd5, 0xcef,
-			0xd00, 0xd0e, 0xd1d, 0xd2c, 0xd41, 0xd4e, 0xd5d, 0xd6c, 0xd7e, 0xd85, 0xd96, 0xda6,
-			0xdae, 0xdbb, 0xdcd, 0xde3,
+			0xc41, 0xc41, 0xc41, 0xc41, 0xc41, 0xc49, 0xc49, 0xc49, 0xc49, 0xc49, 0xc49, 0xc50,
+			0xc50, 0xc59, 0xc62, 0xc6e, 0xc77, 0xc77, 0xc8f, 0xc93, 0xca9, 0xcb0, 0xcc5, 0xcd5,
+			0xcef, 0xd00, 0xd0e, 0xd1d, 0xd2c, 0xd41, 0xd4e, 0xd5d, 0xd6c, 0xd7e, 0xd85, 0xd96,
+			0xda6, 0xdae, 0xdbb, 0xdcd, 0xde3,
 		},
 	},
 	{ // da
@@ -1397,12 +1233,13 @@
 			"lianišćinasenakoyra sennitašelhitpódpołdnjowa samišćinalule-samišćinainari-samiš" +
 			"ćinaskolt-samišćinasaterfrizišćinakongojska swahilišćinatesotasawaqcentralnoatla" +
 			"ski tamazightnjeznata rěcvaivunjosogastandardny marokkański tamazightžedno rěcne" +
-			" wopśimjeśemoderna wusokoarabšćinaawstralska engelšćinakanadiska engelšćinabriti" +
-			"ska engelšćinaameriska engelšćinałatyńskoamerikańska špańšćinaeuropejska špańšći" +
-			"namexikańska špańšćinakanadiska francojšćinašwicarska francojšćinaflamšćinabrazi" +
-			"lska portugalšćinaeuropejska portugalšćinamoldawišćinaserbochorwatšćinachinšćina" +
-			" (zjadnorjona)chinšćina (tradicionalna)",
-		[]uint16{ // 604 entries
+			" wopśimjeśemoderna wusokoarabšćinaawstriska nimšćinašwicarska wusokonimšćinaawst" +
+			"ralska engelšćinakanadiska engelšćinabritiska engelšćinaameriska engelšćinałatyń" +
+			"skoamerikańska špańšćinaeuropejska špańšćinamexikańska špańšćinakanadiska franco" +
+			"jšćinašwicarska francojšćinaflamšćinabrazilska portugalšćinaeuropejska portugalš" +
+			"ćinamoldawišćinaserbochorwatšćinachinšćina (zjadnorjona)chinšćina (tradicionalna" +
+			")",
+		[]uint16{ // 605 entries
 			0x0, 0xb, 0x18, 0x18, 0x20, 0x2b, 0x37, 0x44, 0x4f, 0x5a, 0x65, 0x71,
 			0x84, 0x92, 0xa1, 0xae, 0xbb, 0xc2, 0xcf, 0xdb, 0xe8, 0xf4, 0x103, 0x103,
 			0x110, 0x11c, 0x11f, 0x129, 0x129, 0x129, 0x136, 0x140, 0x14a, 0x150, 0x158, 0x15b,
@@ -1450,10 +1287,10 @@
 			0xa0e, 0xa0e, 0xa0e, 0xa0e, 0xa0e, 0xa0e, 0xa0e, 0xa0e, 0xa0e, 0xa0e, 0xa0e, 0xa0e,
 			0xa0e, 0xa0e, 0xa0e, 0xa0e, 0xa0e, 0xa0e, 0xa0e, 0xa0e, 0xa15, 0xa15, 0xa2f, 0xa2f,
 			0xa2f, 0xa2f, 0xa3c, 0xa3f, 0xa3f, 0xa3f, 0xa3f, 0xa3f, 0xa3f, 0xa3f, 0xa44, 0xa44,
-			0xa44, 0xa44, 0xa44, 0xa44, 0xa44, 0xa44, 0xa48, 0xa48, 0xa48, 0xa48, 0xa48, 0xa48,
-			0xa48, 0xa48, 0xa48, 0xa48, 0xa48, 0xa69, 0xa69, 0xa83, 0xa83, 0xa9c, 0xa9c, 0xa9c,
-			0xab3, 0xac9, 0xade, 0xaf3, 0xb17, 0xb2f, 0xb48, 0xb60, 0xb79, 0xb84, 0xb9d, 0xbb7,
-			0xbc5, 0xbd8, 0xbf1, 0xc0c,
+			0xa44, 0xa44, 0xa44, 0xa44, 0xa44, 0xa44, 0xa44, 0xa48, 0xa48, 0xa48, 0xa48, 0xa48,
+			0xa48, 0xa48, 0xa48, 0xa48, 0xa48, 0xa48, 0xa69, 0xa69, 0xa83, 0xa83, 0xa9c, 0xab0,
+			0xacb, 0xae2, 0xaf8, 0xb0d, 0xb22, 0xb46, 0xb5e, 0xb77, 0xb8f, 0xba8, 0xbb3, 0xbcc,
+			0xbe6, 0xbf4, 0xc07, 0xc20, 0xc3b,
 		},
 	},
 	{ // dua
@@ -1536,7 +1373,7 @@
 			"ཡུ་ཨེས་ཨིང་ལིཤ་ཁལེ་ཊིན་ཨ་མེ་རི་ཀཱན་གི་ཨིས་པེ་ནིཤ་ཁཡུ་རོབ་ཀྱི་ཨིས་པེ་ནིཤ་ཁཀེ་ན་ཌི" +
 			"་ཡཱན་ཕྲནཅ་ཁསུ་ཡིས་ཕྲནཅ་ཁཕྷེལེ་མིཤ་ཁབྲ་ཛི་ལི་ཡཱན་པོར་ཅུ་གིས་ཁཨི་བེ་རི་ཡཱན་པོར་ཅུ་" +
 			"གིས་ཁརྒྱ་མི་ཁ་འཇམ་སངམསྔ་དུས་ཀྱི་རྒྱ་མི་ཁ",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x12, 0x36, 0x36, 0x5a, 0x5a, 0x78, 0x78, 0x96, 0xb1, 0xb1, 0xb1,
 			0xde, 0xde, 0xff, 0x12c, 0x12c, 0x12c, 0x141, 0x150, 0x150, 0x177, 0x195, 0x195,
 			0x195, 0x195, 0x195, 0x1a4, 0x1a4, 0x1a4, 0x1b6, 0x1ce, 0x1e9, 0x207, 0x219, 0x219,
@@ -1585,9 +1422,9 @@
 			0xe46, 0xe46, 0xe46, 0xe46, 0xe46, 0xe46, 0xe46, 0xe46, 0xe46, 0xe46, 0xe46, 0xe46,
 			0xe46, 0xe46, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67,
 			0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67,
-			0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xea0, 0xea0, 0xea0, 0xee2, 0xf33,
-			0xf7e, 0xfbd, 0xff0, 0x1020, 0x1086, 0x10cb, 0x10cb, 0x1101, 0x1128, 0x1149, 0x1194, 0x11df,
-			0x11df, 0x11df, 0x120f, 0x1248,
+			0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xe67, 0xea0, 0xea0, 0xea0, 0xee2,
+			0xf33, 0xf7e, 0xfbd, 0xff0, 0x1020, 0x1086, 0x10cb, 0x10cb, 0x1101, 0x1128, 0x1149, 0x1194,
+			0x11df, 0x11df, 0x11df, 0x120f, 0x1248,
 		},
 	},
 	{ // ebu
@@ -1647,7 +1484,7 @@
 			"ukɔmetɔwo ƒe yevugbelatin amerikatɔwo ƒe spaniagbeiberiatɔwo ƒe spaniagbekanadat" +
 			"ɔwo ƒe fransegbeswizerlanɖtɔwo ƒe fransegbeflemiagbebraziltɔwo ƒe portugalgbeibe" +
 			"riatɔwo ƒe portugalgbeserbo-croatiagbetsainagbeblema tsainagbe",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x0, 0xb, 0xb, 0x16, 0x1c, 0x26, 0x26, 0x2f, 0x38, 0x38, 0x40,
 			0x4d, 0x4d, 0x59, 0x64, 0x64, 0x6e, 0x77, 0x80, 0x89, 0x92, 0x9b, 0x9b,
 			0x9b, 0x9b, 0x9b, 0xa3, 0xa3, 0xa3, 0xab, 0xb5, 0xc0, 0xc8, 0xd3, 0xda,
@@ -1696,9 +1533,9 @@
 			0x5a5, 0x5a5, 0x5a5, 0x5a5, 0x5a5, 0x5a5, 0x5a5, 0x5a5, 0x5a5, 0x5a5, 0x5a5, 0x5a5,
 			0x5a5, 0x5a5, 0x5b7, 0x5b7, 0x5b7, 0x5b7, 0x5b7, 0x5b7, 0x5b7, 0x5b7, 0x5b7, 0x5bf,
 			0x5bf, 0x5bf, 0x5bf, 0x5bf, 0x5bf, 0x5bf, 0x5bf, 0x5bf, 0x5bf, 0x5bf, 0x5bf, 0x5bf,
-			0x5c8, 0x5c8, 0x5c8, 0x5c8, 0x5c8, 0x5c8, 0x5c8, 0x5dd, 0x5dd, 0x5dd, 0x5f9, 0x61a,
-			0x634, 0x64b, 0x663, 0x67f, 0x69f, 0x6b8, 0x6b8, 0x6d1, 0x6ef, 0x6f8, 0x713, 0x72e,
-			0x72e, 0x73e, 0x747, 0x756,
+			0x5bf, 0x5c8, 0x5c8, 0x5c8, 0x5c8, 0x5c8, 0x5c8, 0x5c8, 0x5dd, 0x5dd, 0x5dd, 0x5f9,
+			0x61a, 0x634, 0x64b, 0x663, 0x67f, 0x69f, 0x6b8, 0x6b8, 0x6d1, 0x6ef, 0x6f8, 0x713,
+			0x72e, 0x72e, 0x73e, 0x747, 0x756,
 		},
 	},
 	{ // el
@@ -1711,7 +1548,7 @@
 	},
 	{ // en-AU
 		"BamumUnited States English",
-		[]uint16{ // 592 entries
+		[]uint16{ // 593 entries
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
@@ -1761,13 +1598,9 @@
 			0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
 			0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
 			0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
-			0x5, 0x5, 0x5, 0x1a,
+			0x5, 0x5, 0x5, 0x5, 0x1a,
 		},
 	},
-	{ // en-GB
-		enGBLangStr,
-		enGBLangIdx,
-	},
 	{ // eo
 		"afaraabĥazaafrikansatwamharaarabaasamaajmaraazerbajĝanabaŝkirabelorusabulgarabis" +
 			"lamobengalatibetabretonabosniakatalunakorsikaĉeĥakimradanagermanamahladzonkogrek" +
@@ -1782,7 +1615,7 @@
 			"ngatataraujguraukrainaurduouzbekavjetnamavolapukovolofaksosajidajorubaĝuangaĉina" +
 			"zuluaibibioefikafilipinahavajaklingonanekonata lingvonelingvaĵobrazilportugalaeŭ" +
 			"ropportugalaserbo-Kroataĉina simpligitaĉina tradicia",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x5, 0xc, 0xc, 0x15, 0x17, 0x1d, 0x1d, 0x22, 0x27, 0x27, 0x2d,
 			0x39, 0x41, 0x49, 0x50, 0x57, 0x57, 0x5e, 0x64, 0x6b, 0x71, 0x79, 0x79,
 			0x79, 0x80, 0x80, 0x86, 0x86, 0x86, 0x8b, 0x8f, 0x96, 0x9b, 0xa1, 0xa1,
@@ -1831,75 +1664,21 @@
 			0x3aa, 0x3aa, 0x3aa, 0x3aa, 0x3aa, 0x3aa, 0x3aa, 0x3aa, 0x3aa, 0x3aa, 0x3aa, 0x3aa,
 			0x3aa, 0x3aa, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9,
 			0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9,
-			0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3c4, 0x3c4, 0x3c4, 0x3c4, 0x3c4,
-			0x3c4, 0x3c4, 0x3c4, 0x3c4, 0x3c4, 0x3c4, 0x3c4, 0x3c4, 0x3c4, 0x3c4, 0x3d3, 0x3e2,
-			0x3e2, 0x3ee, 0x3fe, 0x40c,
+			0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3b9, 0x3c4, 0x3c4, 0x3c4, 0x3c4,
+			0x3c4, 0x3c4, 0x3c4, 0x3c4, 0x3c4, 0x3c4, 0x3c4, 0x3c4, 0x3c4, 0x3c4, 0x3c4, 0x3d3,
+			0x3e2, 0x3e2, 0x3ee, 0x3fe, 0x40c,
 		},
 	},
 	{ // es
 		esLangStr,
 		esLangIdx,
 	},
-	{ // es-419
-		es419LangStr,
-		es419LangIdx,
-	},
 	{}, // es-CL
 	{ // es-MX
-		"bashkirmanéssindebelepanyabíromancherundisondanésaraucanocherokisoranibajo sorbi" +
-			"oalemán suizoalto sorbiocabiliohalenjinluoN’Kosami de Lulesami de Inarivaivunjot" +
-			"amazight estándar marroquíalto alemán suizoespañol latinoamericano",
-		[]uint16{ // 593 entries
+		"bashkir",
+		[]uint16{ // 14 entries
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7,
-			0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7,
-			0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7,
-			0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd,
-			0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd,
-			0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd,
-			0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd,
-			0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd,
-			0xd, 0xd, 0xd, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-			0x16, 0x16, 0x16, 0x16, 0x16, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x26,
-			0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
-			0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x34, 0x34, 0x34, 0x34, 0x34,
-			0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
-			0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
-			0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
-			0x34, 0x34, 0x34, 0x34, 0x34, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x43, 0x43, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
-			0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
-			0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
-			0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
-			0x54, 0x54, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61,
-			0x61, 0x61, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c,
-			0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73,
-			0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73,
-			0x73, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
-			0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
-			0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7e, 0x7e, 0x7e,
-			0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e,
-			0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e,
-			0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e,
-			0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x84,
-			0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
-			0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
-			0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
-			0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
-			0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
-			0x84, 0x84, 0x84, 0x84, 0x84, 0x90, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d,
-			0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d,
-			0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d,
-			0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d,
-			0x9d, 0x9d, 0x9d, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa5, 0xa5,
-			0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
-			0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xd4,
-			0xd4, 0xd4, 0xd4, 0xd4, 0xec,
+			0x0, 0x7,
 		},
 	},
 	{ // et
@@ -1937,7 +1716,7 @@
 			"ndarraez dago eduki linguistikorikarabiera moderno estandarraaleman garaia (Suit" +
 			"za)ingelesa (AEB)espainiera (Europa)flandrieraportugesa (Europa)serbokroazieratx" +
 			"inera soilduatxinera tradizionala",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x0, 0x9, 0x9, 0x13, 0x1a, 0x22, 0x22, 0x2a, 0x32, 0x32, 0x38,
 			0x45, 0x50, 0x5d, 0x67, 0x67, 0x70, 0x79, 0x81, 0x8a, 0x92, 0x9a, 0x9a,
 			0x9a, 0xa3, 0xa3, 0xab, 0xab, 0xab, 0xb3, 0xba, 0xc1, 0xca, 0xd2, 0xd8,
@@ -1985,10 +1764,10 @@
 			0x7fd, 0x7fd, 0x803, 0x803, 0x803, 0x803, 0x803, 0x80d, 0x80d, 0x80d, 0x80d, 0x80d,
 			0x817, 0x817, 0x817, 0x817, 0x817, 0x817, 0x820, 0x820, 0x828, 0x828, 0x844, 0x844,
 			0x844, 0x844, 0x857, 0x85d, 0x85d, 0x85d, 0x85d, 0x85d, 0x85d, 0x85d, 0x863, 0x863,
-			0x863, 0x863, 0x863, 0x863, 0x863, 0x863, 0x869, 0x869, 0x869, 0x869, 0x869, 0x869,
-			0x869, 0x869, 0x869, 0x869, 0x869, 0x87d, 0x87d, 0x899, 0x899, 0x8b4, 0x8b4, 0x8ca,
-			0x8ca, 0x8ca, 0x8ca, 0x8d8, 0x8d8, 0x8eb, 0x8eb, 0x8eb, 0x8eb, 0x8f5, 0x8f5, 0x907,
-			0x907, 0x915, 0x924, 0x938,
+			0x863, 0x863, 0x863, 0x863, 0x863, 0x863, 0x863, 0x869, 0x869, 0x869, 0x869, 0x869,
+			0x869, 0x869, 0x869, 0x869, 0x869, 0x869, 0x87d, 0x87d, 0x899, 0x899, 0x8b4, 0x8b4,
+			0x8ca, 0x8ca, 0x8ca, 0x8ca, 0x8d8, 0x8d8, 0x8eb, 0x8eb, 0x8eb, 0x8eb, 0x8f5, 0x8f5,
+			0x907, 0x907, 0x915, 0x924, 0x938,
 		},
 	},
 	{ // ewo
@@ -2032,23 +1811,23 @@
 		faLangIdx,
 	},
 	{ // fa-AF
-		"هسپانویدریفنلندیآیرلندیکروشیاییاندونیزیاییآیسلندیایتالویجاپانیکوریاییقرغزیمغلینی" +
-			"پالیهالندینارویژیپولندیپرتگالیسویدنیتاجکی",
+		"هسپانویفنلندیآیرلندیکروشیاییاندونیزیاییآیسلندیایتالویجاپانیکوریاییقرغزیمغلینیپال" +
+			"یهالندینارویژیپولندیپرتگالیسویدنیتاجکی",
 		[]uint16{ // 157 entries
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0xe, 0xe, 0xe, 0x14, 0x14, 0x20, 0x20, 0x20, 0x20,
-			0x20, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x3e,
-			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x62,
-			0x70, 0x70, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
-			0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
-			0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x9c, 0x9c, 0x9c,
-			0x9c, 0x9c, 0x9c, 0x9c, 0xa8, 0xa8, 0xb4, 0xb4, 0xc2, 0xc2, 0xc2, 0xc2,
-			0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xce, 0xce, 0xdc, 0xdc, 0xdc,
-			0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
-			0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xe8, 0xe8, 0xe8, 0xe8,
-			0xf2,
+			0x0, 0x0, 0x0, 0xe, 0xe, 0xe, 0xe, 0xe, 0x1a, 0x1a, 0x1a, 0x1a,
+			0x1a, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x38,
+			0x38, 0x38, 0x38, 0x38, 0x38, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x5c,
+			0x6a, 0x6a, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76,
+			0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
+			0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x96, 0x96, 0x96,
+			0x96, 0x96, 0x96, 0x96, 0xa2, 0xa2, 0xae, 0xae, 0xbc, 0xbc, 0xbc, 0xbc,
+			0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xc8, 0xc8, 0xd6, 0xd6, 0xd6,
+			0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
+			0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xe2, 0xe2, 0xe2, 0xe2,
+			0xec,
 		},
 	},
 	{ // ff
@@ -2102,7 +1881,7 @@
 			"asu (Tanzania)bembabena (Tanzania)bakossikiembuefikfilipiniskthawaiiansktkapverd" +
 			"isktlahndaolulujiashimaorétetumklingonskttok pisinukjent málkantonesísktserbokro" +
 			"atiskt",
-		[]uint16{ // 602 entries
+		[]uint16{ // 603 entries
 			0x0, 0x0, 0xa, 0xa, 0x12, 0x15, 0x1e, 0x1e, 0x26, 0x31, 0x31, 0x37,
 			0x45, 0x45, 0x52, 0x5b, 0x5b, 0x62, 0x6c, 0x76, 0x7f, 0x87, 0x91, 0x91,
 			0x91, 0x91, 0x91, 0x99, 0x99, 0x99, 0xa2, 0xa8, 0xae, 0xb4, 0xbc, 0xbc,
@@ -2151,9 +1930,9 @@
 			0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec,
 			0x4ec, 0x4ec, 0x4f7, 0x4f7, 0x4f7, 0x4f7, 0x4f7, 0x4f7, 0x4f7, 0x4f7, 0x4f7, 0x4f7,
 			0x4f7, 0x4f7, 0x4f7, 0x4f7, 0x4f7, 0x4f7, 0x4f7, 0x4f7, 0x4f7, 0x4f7, 0x4f7, 0x4f7,
+			0x4f7, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504,
 			0x504, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504,
-			0x504, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504, 0x504,
-			0x504, 0x512,
+			0x504, 0x504, 0x512,
 		},
 	},
 	{ // fr
@@ -2184,7 +1963,7 @@
 			"lianinglês canadêsinglês britanicingles merecanspagnûl de Americhe Latinespagnûl" +
 			" ibericfrancês dal Canadefrancês de Svuizareflamantportughês brasilianportughês " +
 			"ibericmoldâfcinês semplificâtcinês tradizionâl",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x4, 0xc, 0x13, 0x1c, 0x1c, 0x22, 0x2b, 0x2f, 0x37, 0x3b, 0x42,
 			0x4d, 0x4d, 0x56, 0x5c, 0x5c, 0x5c, 0x65, 0x6c, 0x72, 0x79, 0x80, 0x85,
 			0x8d, 0x91, 0x95, 0x98, 0xa8, 0xa8, 0xae, 0xb4, 0xba, 0xba, 0xba, 0xba,
@@ -2233,9 +2012,9 @@
 			0x4f2, 0x4f2, 0x4f2, 0x4f2, 0x4f2, 0x4f2, 0x4f2, 0x4f2, 0x4f2, 0x4f2, 0x4f2, 0x4f2,
 			0x4f2, 0x4f2, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff,
 			0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff,
-			0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x510, 0x526,
-			0x538, 0x548, 0x558, 0x566, 0x581, 0x590, 0x590, 0x5a3, 0x5b7, 0x5be, 0x5d2, 0x5e3,
-			0x5ea, 0x5ea, 0x5fd, 0x610,
+			0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x4ff, 0x510,
+			0x526, 0x538, 0x548, 0x558, 0x566, 0x581, 0x590, 0x590, 0x5a3, 0x5b7, 0x5be, 0x5d2,
+			0x5e3, 0x5ea, 0x5ea, 0x5fd, 0x610,
 		},
 	},
 	{ // fy
@@ -2290,7 +2069,7 @@
 			"ansk SpaanskEuropeesk SpaanskMeksikaansk SpaanskKanadeesk FrânskSwitserse Frânsk" +
 			"VlaamsBrazyljaansk PortugeesEuropees PortugeesMoldavyskServokroatyskFerienfâldic" +
 			"h SineeskTradisjoneel Sineesk",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x4, 0xd, 0x15, 0x1f, 0x23, 0x2b, 0x35, 0x3c, 0x45, 0x4c, 0x52,
 			0x61, 0x6b, 0x76, 0x7f, 0x86, 0x8d, 0x96, 0xa0, 0xa8, 0xaf, 0xb9, 0xc5,
 			0xcd, 0xd8, 0xdc, 0xe5, 0xf0, 0xfc, 0x101, 0x107, 0x10d, 0x113, 0x11b, 0x11e,
@@ -2338,10 +2117,10 @@
 			0xd42, 0xd48, 0xd4d, 0xd52, 0xd55, 0xd5d, 0xd5d, 0xd64, 0xd6b, 0xd6b, 0xd73, 0xd7e,
 			0xd87, 0xd87, 0xd8d, 0xd8d, 0xd96, 0xd96, 0xd9f, 0xdaa, 0xdb1, 0xdb9, 0xdd5, 0xdde,
 			0xde8, 0xdef, 0xdf3, 0xdf6, 0xdf6, 0xdf6, 0xdf6, 0xdf6, 0xdfc, 0xdfc, 0xe01, 0xe07,
-			0xe0d, 0xe12, 0xe17, 0xe17, 0xe1d, 0xe1d, 0xe21, 0xe24, 0xe2a, 0xe31, 0xe36, 0xe36,
-			0xe40, 0xe47, 0xe53, 0xe53, 0xe59, 0xe78, 0xe7c, 0xe96, 0xe9a, 0xeb1, 0xec2, 0xed7,
-			0xee9, 0xefa, 0xf08, 0xf1b, 0xf36, 0xf47, 0xf5a, 0xf6b, 0xf7c, 0xf82, 0xf98, 0xfaa,
-			0xfb3, 0xfc0, 0xfd6, 0xfea,
+			0xe0d, 0xe12, 0xe17, 0xe17, 0xe17, 0xe1d, 0xe1d, 0xe21, 0xe24, 0xe2a, 0xe31, 0xe36,
+			0xe36, 0xe40, 0xe47, 0xe53, 0xe53, 0xe59, 0xe78, 0xe7c, 0xe96, 0xe9a, 0xeb1, 0xec2,
+			0xed7, 0xee9, 0xefa, 0xf08, 0xf1b, 0xf36, 0xf47, 0xf5a, 0xf6b, 0xf7c, 0xf82, 0xf98,
+			0xfaa, 0xfb3, 0xfc0, 0xfd6, 0xfea,
 		},
 	},
 	{ // ga
@@ -2382,7 +2161,7 @@
 			"MheicsiceachFraincis CheanadachFraincis EilvéiseachPléimeannaisPortaingéilis na " +
 			"BrasaílePortaingéilis IbéarachMoldáivisSeirbea-ChróitisSínis ShimplitheSínis Thr" +
 			"aidisiúnta",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x8, 0x11, 0x1b, 0x26, 0x2e, 0x36, 0x40, 0x47, 0x4e, 0x56, 0x5f,
 			0x6e, 0x78, 0x84, 0x8e, 0x98, 0x98, 0xa3, 0xac, 0xb7, 0xbe, 0xc9, 0xd0,
 			0xda, 0xe3, 0xe9, 0xef, 0x103, 0x10b, 0x114, 0x11f, 0x12a, 0x133, 0x13c, 0x13c,
@@ -2430,10 +2209,10 @@
 			0xa26, 0xa26, 0xa26, 0xa26, 0xa26, 0xa26, 0xa26, 0xa2d, 0xa2d, 0xa2d, 0xa2d, 0xa2d,
 			0xa2d, 0xa2d, 0xa2d, 0xa2d, 0xa2d, 0xa2d, 0xa2d, 0xa2d, 0xa2d, 0xa2d, 0xa2d, 0xa36,
 			0xa36, 0xa36, 0xa46, 0xa46, 0xa50, 0xa50, 0xa68, 0xa68, 0xa68, 0xa68, 0xa68, 0xa68,
-			0xa68, 0xa68, 0xa68, 0xa68, 0xa72, 0xa72, 0xa72, 0xa72, 0xa72, 0xa72, 0xa72, 0xa72,
-			0xa7b, 0xa7b, 0xa7b, 0xa86, 0xa86, 0xa86, 0xa8d, 0xaa6, 0xaa6, 0xabc, 0xad0, 0xaed,
-			0xaff, 0xb10, 0xb22, 0xb37, 0xb55, 0xb66, 0xb7c, 0xb8f, 0xba4, 0xbb1, 0xbcc, 0xbe4,
-			0xbee, 0xbff, 0xc10, 0xc25,
+			0xa68, 0xa68, 0xa68, 0xa68, 0xa68, 0xa72, 0xa72, 0xa72, 0xa72, 0xa72, 0xa72, 0xa72,
+			0xa72, 0xa7b, 0xa7b, 0xa7b, 0xa86, 0xa86, 0xa86, 0xa8d, 0xaa6, 0xaa6, 0xabc, 0xad0,
+			0xaed, 0xaff, 0xb10, 0xb22, 0xb37, 0xb55, 0xb66, 0xb7c, 0xb8f, 0xba4, 0xbb1, 0xbcc,
+			0xbe4, 0xbee, 0xbff, 0xc10, 0xc25,
 		},
 	},
 	{ // gd
@@ -2478,7 +2257,7 @@
 			"eachSpàinntis EòrpachSpàinntis MheagsagachFraingis ChanadaFraingis EilbheiseachF" +
 			"lannraisPortagailis BhraisileachPortagailis EòrpachMoldobhaisSìnis ShimplichteSì" +
 			"nis Thradaiseanta",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x4, 0xd, 0x17, 0x21, 0x25, 0x2e, 0x37, 0x3e, 0x45, 0x4c, 0x4c,
 			0x5b, 0x62, 0x6d, 0x76, 0x7d, 0x84, 0x8e, 0x96, 0x9f, 0xa6, 0xb0, 0xba,
 			0xc2, 0xc9, 0xc9, 0xd0, 0xe7, 0xe7, 0xee, 0xf9, 0x104, 0x10a, 0x112, 0x115,
@@ -2526,10 +2305,10 @@
 			0xac7, 0xac7, 0xacc, 0xacc, 0xacc, 0xad3, 0xad3, 0xad3, 0xad3, 0xad3, 0xad3, 0xade,
 			0xae7, 0xae7, 0xae7, 0xae7, 0xae7, 0xae7, 0xae7, 0xae7, 0xaee, 0xaee, 0xb0a, 0xb0a,
 			0xb0a, 0xb0a, 0xb1f, 0xb22, 0xb22, 0xb22, 0xb33, 0xb33, 0xb33, 0xb33, 0xb38, 0xb38,
-			0xb38, 0xb38, 0xb38, 0xb38, 0xb38, 0xb38, 0xb3c, 0xb3c, 0xb3c, 0xb3c, 0xb3c, 0xb3c,
-			0xb45, 0xb45, 0xb45, 0xb45, 0xb45, 0xb61, 0xb61, 0xb80, 0xb80, 0xb99, 0xbb1, 0xbd1,
-			0xbe2, 0xbf0, 0xc01, 0xc17, 0xc3d, 0xc50, 0xc66, 0xc76, 0xc8b, 0xc94, 0xcac, 0xcc0,
-			0xcca, 0xcca, 0xcdc, 0xcf0,
+			0xb38, 0xb38, 0xb38, 0xb38, 0xb38, 0xb38, 0xb38, 0xb3c, 0xb3c, 0xb3c, 0xb3c, 0xb3c,
+			0xb3c, 0xb45, 0xb45, 0xb45, 0xb45, 0xb45, 0xb61, 0xb61, 0xb80, 0xb80, 0xb99, 0xbb1,
+			0xbd1, 0xbe2, 0xbf0, 0xc01, 0xc17, 0xc3d, 0xc50, 0xc66, 0xc76, 0xc8b, 0xc94, 0xcac,
+			0xcc0, 0xcca, 0xcca, 0xcdc, 0xcf0,
 		},
 	},
 	{ // gl
@@ -2560,7 +2339,7 @@
 			"os Unidosespañol latinoamericanocastelánespañol de Méxicofrancés canadianofrancé" +
 			"s suízoflamencoportugués brasileiroportugués europeoserbocroatachinés simplifica" +
 			"dochinés tradicional",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x0, 0x7, 0x7, 0x10, 0x15, 0x1d, 0x26, 0x2c, 0x34, 0x34, 0x3b,
 			0x46, 0x4c, 0x56, 0x5e, 0x5e, 0x65, 0x6d, 0x75, 0x7c, 0x82, 0x8a, 0x8a,
 			0x8a, 0x8f, 0x8f, 0x94, 0xa8, 0xa8, 0xae, 0xba, 0xc1, 0xc7, 0xcf, 0xd3,
@@ -2608,10 +2387,10 @@
 			0x6ad, 0x6ad, 0x6b3, 0x6b3, 0x6b3, 0x6b3, 0x6b3, 0x6ba, 0x6ba, 0x6ba, 0x6ba, 0x6ba,
 			0x6c3, 0x6c3, 0x6c3, 0x6c3, 0x6c3, 0x6c3, 0x6ca, 0x6ca, 0x6d1, 0x6d1, 0x6ec, 0x6ec,
 			0x6ec, 0x6ec, 0x70e, 0x711, 0x711, 0x711, 0x711, 0x711, 0x711, 0x711, 0x716, 0x716,
-			0x716, 0x716, 0x716, 0x716, 0x716, 0x716, 0x71a, 0x71a, 0x71a, 0x71a, 0x71a, 0x71a,
-			0x71a, 0x71a, 0x71a, 0x71a, 0x71a, 0x739, 0x739, 0x752, 0x752, 0x76a, 0x77c, 0x78f,
-			0x7a2, 0x7b3, 0x7c5, 0x7df, 0x7f7, 0x800, 0x813, 0x825, 0x834, 0x83c, 0x851, 0x863,
-			0x863, 0x86e, 0x882, 0x895,
+			0x716, 0x716, 0x716, 0x716, 0x716, 0x716, 0x716, 0x71a, 0x71a, 0x71a, 0x71a, 0x71a,
+			0x71a, 0x71a, 0x71a, 0x71a, 0x71a, 0x71a, 0x739, 0x739, 0x752, 0x752, 0x76a, 0x77c,
+			0x78f, 0x7a2, 0x7b3, 0x7c5, 0x7df, 0x7f7, 0x800, 0x813, 0x825, 0x834, 0x83c, 0x851,
+			0x863, 0x863, 0x86e, 0x882, 0x895,
 		},
 	},
 	{ // gsw
@@ -2673,7 +2452,7 @@
 			"chs ÄnglischLatiinamerikanischs SchpanischIbeerischs SchpanischKanadischs Franzö" +
 			"sischSchwiizer FranzösischFläämischBrasilianischs PortugiisischIberischs Portugi" +
 			"isischMoldawischSerbo-KroatischVeräifachts ChineesischTradizionells Chineesisch",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x4, 0xe, 0x17, 0x20, 0x24, 0x2d, 0x39, 0x41, 0x4c, 0x54, 0x5a,
 			0x6b, 0x77, 0x84, 0x8f, 0x96, 0x9d, 0xa7, 0xb1, 0xbd, 0xc5, 0xd1, 0xe1,
 			0xe9, 0xf1, 0xf5, 0x100, 0x10d, 0x11b, 0x124, 0x12c, 0x135, 0x141, 0x14b, 0x14e,
@@ -2721,10 +2500,10 @@
 			0xf77, 0xf87, 0xf96, 0xf9b, 0xfa8, 0xfb5, 0xfb5, 0xfc0, 0xfd1, 0xfd1, 0xfd8, 0xfe8,
 			0xff6, 0xff6, 0xff6, 0xff6, 0x1009, 0x1009, 0x101a, 0x1026, 0x1026, 0x102f, 0x102f, 0x1039,
 			0x1043, 0x1053, 0x1057, 0x1064, 0x1064, 0x1064, 0x1064, 0x1064, 0x106b, 0x106b, 0x106b, 0x106b,
-			0x107b, 0x1080, 0x108f, 0x108f, 0x109b, 0x109b, 0x109b, 0x10a8, 0x10b1, 0x10b1, 0x10b1, 0x10b1,
-			0x10b1, 0x10bc, 0x10c9, 0x10c9, 0x10cf, 0x10cf, 0x10dd, 0x10f7, 0x10fb, 0x10fb, 0x1115, 0x112c,
-			0x1144, 0x1158, 0x116b, 0x1182, 0x11a0, 0x11b5, 0x11b5, 0x11cc, 0x11e2, 0x11ed, 0x1209, 0x1220,
-			0x122a, 0x1239, 0x1251, 0x126a,
+			0x107b, 0x1080, 0x108f, 0x108f, 0x108f, 0x109b, 0x109b, 0x109b, 0x10a8, 0x10b1, 0x10b1, 0x10b1,
+			0x10b1, 0x10b1, 0x10bc, 0x10c9, 0x10c9, 0x10cf, 0x10cf, 0x10dd, 0x10f7, 0x10fb, 0x10fb, 0x1115,
+			0x112c, 0x1144, 0x1158, 0x116b, 0x1182, 0x11a0, 0x11b5, 0x11b5, 0x11cc, 0x11e2, 0x11ed, 0x1209,
+			0x1220, 0x122a, 0x1239, 0x1251, 0x126a,
 		},
 	},
 	{ // gu
@@ -2809,7 +2588,7 @@
 			"kilani KelemāniaʻŌlelo HawaiʻiʻIke ʻole ‘ia a kūpono ʻole paha ka ʻōleloPelekāne" +
 			" Nū HōlaniPelekāne KanakāPelekānia PekekānePelekānia ʻAmelikaPalani KanakāKuikil" +
 			"aniPukikī PalakilaPākē Hoʻomaʻalahi ʻiaPākē Kuʻuna",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x8, 0x8, 0x8,
 			0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8,
 			0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0xc, 0x14, 0x1e, 0x1e, 0x1e, 0x1e,
@@ -2859,8 +2638,8 @@
 			0xd5, 0xd5, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107,
 			0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107,
 			0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107,
-			0x11c, 0x12d, 0x141, 0x155, 0x155, 0x155, 0x155, 0x163, 0x16c, 0x16c, 0x17c, 0x17c,
-			0x17c, 0x17c, 0x196, 0x1a4,
+			0x107, 0x11c, 0x12d, 0x141, 0x155, 0x155, 0x155, 0x155, 0x163, 0x16c, 0x16c, 0x17c,
+			0x17c, 0x17c, 0x17c, 0x196, 0x1a4,
 		},
 	},
 	{ // he
@@ -2905,12 +2684,12 @@
 			"eʼromborwasamburusangusicilšćinasenakoyra sennitašelhitjužnosamišćinalule-samišć" +
 			"inainari-samišćinaskolt-samišćinasaterfrizišćinakongoska suahelšćinatesotasawaqt" +
 			"amazight (srjedźny Marokko)njeznata rěčvaivunjosogatamazightžadyn rěčny wobsahmo" +
-			"derna wysokoarabšćinaawstriska němčinaawstralska jendźelšćinakanadiska jendźelšć" +
-			"inabritiska jendźelšćinaameriska jendźelšćinałaćonskoameriska španišćinaeuropska" +
-			" španišćinamexiska španišćinakanadiska francošćinašwicarska francošćinaflamšćina" +
-			"brazilska portugalšćinaeuropska portugalšćinamoldawšćinaserbochorwatšćinachinšći" +
-			"na (zjednorjena)chinšćina (tradicionalna)",
-		[]uint16{ // 604 entries
+			"derna wysokoarabšćinaawstriska němčinašwicarska wysokoněmčinaawstralska jendźelš" +
+			"ćinakanadiska jendźelšćinabritiska jendźelšćinaameriska jendźelšćinałaćonskoamer" +
+			"iska španišćinaeuropska španišćinamexiska španišćinakanadiska francošćinašwicars" +
+			"ka francošćinaflamšćinabrazilska portugalšćinaeuropska portugalšćinamoldawšćinas" +
+			"erbochorwatšćinachinšćina (zjednorjena)chinšćina (tradicionalna)",
+		[]uint16{ // 605 entries
 			0x0, 0xb, 0x19, 0x19, 0x28, 0x33, 0x3f, 0x4c, 0x57, 0x62, 0x6d, 0x79,
 			0x8c, 0x9a, 0xa9, 0xb7, 0xc4, 0xcb, 0xd8, 0xe4, 0xf1, 0xfd, 0x10b, 0x10b,
 			0x118, 0x124, 0x127, 0x132, 0x132, 0x132, 0x13f, 0x149, 0x152, 0x158, 0x160, 0x163,
@@ -2926,42 +2705,42 @@
 			0x5cd, 0x5d9, 0x5e6, 0x5f2, 0x5fe, 0x605, 0x61f, 0x62f, 0x63b, 0x648, 0x654, 0x65a,
 			0x668, 0x677, 0x684, 0x692, 0x698, 0x6a4, 0x6b1, 0x6b7, 0x6c3, 0x6d0, 0x6dc, 0x6e9,
 			0x6f4, 0x700, 0x700, 0x70e, 0x716, 0x722, 0x727, 0x72c, 0x737, 0x744, 0x74a, 0x755,
-			0x761, 0x761, 0x761, 0x761, 0x761, 0x761, 0x761, 0x76d, 0x76d, 0x76d, 0x76d, 0x76d,
-			0x76d, 0x76d, 0x77c, 0x77c, 0x77c, 0x78a, 0x78a, 0x78a, 0x78a, 0x78a, 0x78a, 0x78a,
-			0x78e, 0x78e, 0x79a, 0x79a, 0x79a, 0x79a, 0x79a, 0x79a, 0x79a, 0x79a, 0x79a, 0x79a,
-			0x79a, 0x79a, 0x79f, 0x79f, 0x7a3, 0x7a3, 0x7a3, 0x7a3, 0x7a3, 0x7a3, 0x7a3, 0x7a3,
-			0x7a3, 0x7a3, 0x7a3, 0x7a3, 0x7a3, 0x7a7, 0x7a7, 0x7a7, 0x7b6, 0x7b6, 0x7b6, 0x7b6,
-			0x7b6, 0x7b6, 0x7b6, 0x7b6, 0x7b6, 0x7bb, 0x7bb, 0x7bb, 0x7bb, 0x7bb, 0x7bb, 0x7c9,
-			0x7c9, 0x7d1, 0x7d1, 0x7d7, 0x7d7, 0x7d7, 0x7d7, 0x7d7, 0x7d7, 0x7d7, 0x7dc, 0x7dc,
-			0x7dc, 0x7dc, 0x7dc, 0x7e1, 0x7e1, 0x7f2, 0x7f2, 0x7f7, 0x7f7, 0x801, 0x801, 0x801,
-			0x805, 0x805, 0x805, 0x805, 0x805, 0x805, 0x805, 0x805, 0x805, 0x805, 0x805, 0x813,
-			0x813, 0x813, 0x813, 0x813, 0x813, 0x813, 0x813, 0x813, 0x813, 0x813, 0x821, 0x821,
-			0x821, 0x821, 0x821, 0x821, 0x821, 0x821, 0x821, 0x821, 0x821, 0x821, 0x821, 0x82b,
-			0x82b, 0x82b, 0x83f, 0x83f, 0x83f, 0x844, 0x844, 0x844, 0x844, 0x851, 0x851, 0x851,
-			0x851, 0x851, 0x862, 0x862, 0x862, 0x862, 0x862, 0x862, 0x862, 0x862, 0x862, 0x862,
-			0x868, 0x86f, 0x86f, 0x86f, 0x86f, 0x86f, 0x87b, 0x87b, 0x87b, 0x880, 0x880, 0x880,
-			0x880, 0x880, 0x887, 0x895, 0x895, 0x895, 0x895, 0x895, 0x895, 0x8a1, 0x8a1, 0x8a1,
-			0x8a1, 0x8a9, 0x8a9, 0x8bc, 0x8c3, 0x8c3, 0x8c3, 0x8c3, 0x8c3, 0x8c3, 0x8c3, 0x8c3,
-			0x8cb, 0x8d0, 0x8d0, 0x8d0, 0x8d0, 0x8d0, 0x8d5, 0x8d5, 0x8d5, 0x8d5, 0x8d5, 0x8d5,
-			0x8d5, 0x8db, 0x8db, 0x8db, 0x8db, 0x8db, 0x8db, 0x8db, 0x8db, 0x8de, 0x8de, 0x8e3,
-			0x8e3, 0x8e3, 0x8e3, 0x8e3, 0x8e3, 0x8e3, 0x8e3, 0x8e3, 0x8ef, 0x8ef, 0x8ef, 0x8ef,
-			0x8ef, 0x8f3, 0x90a, 0x90a, 0x918, 0x91f, 0x91f, 0x91f, 0x91f, 0x91f, 0x92c, 0x92c,
-			0x92c, 0x933, 0x933, 0x937, 0x937, 0x937, 0x937, 0x937, 0x937, 0x937, 0x937, 0x937,
-			0x93b, 0x94a, 0x94a, 0x94a, 0x94a, 0x94a, 0x950, 0x950, 0x950, 0x950, 0x950, 0x956,
-			0x956, 0x95a, 0x95a, 0x95a, 0x962, 0x962, 0x962, 0x962, 0x962, 0x962, 0x962, 0x962,
-			0x962, 0x962, 0x962, 0x962, 0x962, 0x962, 0x962, 0x962, 0x962, 0x962, 0x962, 0x96c,
-			0x96c, 0x975, 0x975, 0x975, 0x975, 0x975, 0x975, 0x975, 0x97a, 0x97a, 0x97a, 0x97a,
-			0x97a, 0x97a, 0x97d, 0x97d, 0x97d, 0x97d, 0x984, 0x984, 0x984, 0x984, 0x984, 0x989,
-			0x995, 0x995, 0x995, 0x995, 0x999, 0x999, 0x999, 0x9a4, 0x9a4, 0x9a4, 0x9ad, 0x9ad,
-			0x9ad, 0x9ad, 0x9ad, 0x9ad, 0x9be, 0x9ce, 0x9df, 0x9f0, 0x9f0, 0x9f0, 0x9f0, 0x9f0,
-			0x9f0, 0xa01, 0xa01, 0xa01, 0xa01, 0xa01, 0xa17, 0xa17, 0xa17, 0xa17, 0xa17, 0xa17,
-			0xa1b, 0xa1b, 0xa1b, 0xa1b, 0xa1b, 0xa1b, 0xa1b, 0xa1b, 0xa1b, 0xa1b, 0xa1b, 0xa1b,
-			0xa1b, 0xa1b, 0xa1b, 0xa1b, 0xa1b, 0xa1b, 0xa1b, 0xa1b, 0xa22, 0xa22, 0xa3f, 0xa3f,
-			0xa3f, 0xa3f, 0xa4d, 0xa50, 0xa50, 0xa50, 0xa50, 0xa50, 0xa50, 0xa50, 0xa55, 0xa55,
-			0xa55, 0xa55, 0xa55, 0xa55, 0xa55, 0xa55, 0xa59, 0xa59, 0xa59, 0xa59, 0xa59, 0xa59,
-			0xa59, 0xa59, 0xa59, 0xa59, 0xa59, 0xa62, 0xa62, 0xa77, 0xa77, 0xa90, 0xaa3, 0xaa3,
-			0xabd, 0xad6, 0xaee, 0xb06, 0xb26, 0xb3c, 0xb51, 0xb68, 0xb80, 0xb8b, 0xba4, 0xbbc,
-			0xbc9, 0xbdc, 0xbf5, 0xc10,
+			0x760, 0x760, 0x760, 0x760, 0x760, 0x760, 0x760, 0x76c, 0x76c, 0x76c, 0x76c, 0x76c,
+			0x76c, 0x76c, 0x77b, 0x77b, 0x77b, 0x789, 0x789, 0x789, 0x789, 0x789, 0x789, 0x789,
+			0x78d, 0x78d, 0x799, 0x799, 0x799, 0x799, 0x799, 0x799, 0x799, 0x799, 0x799, 0x799,
+			0x799, 0x799, 0x79e, 0x79e, 0x7a2, 0x7a2, 0x7a2, 0x7a2, 0x7a2, 0x7a2, 0x7a2, 0x7a2,
+			0x7a2, 0x7a2, 0x7a2, 0x7a2, 0x7a2, 0x7a6, 0x7a6, 0x7a6, 0x7b5, 0x7b5, 0x7b5, 0x7b5,
+			0x7b5, 0x7b5, 0x7b5, 0x7b5, 0x7b5, 0x7ba, 0x7ba, 0x7ba, 0x7ba, 0x7ba, 0x7ba, 0x7c8,
+			0x7c8, 0x7d0, 0x7d0, 0x7d6, 0x7d6, 0x7d6, 0x7d6, 0x7d6, 0x7d6, 0x7d6, 0x7db, 0x7db,
+			0x7db, 0x7db, 0x7db, 0x7e0, 0x7e0, 0x7f1, 0x7f1, 0x7f6, 0x7f6, 0x800, 0x800, 0x800,
+			0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x812,
+			0x812, 0x812, 0x812, 0x812, 0x812, 0x812, 0x812, 0x812, 0x812, 0x812, 0x820, 0x820,
+			0x820, 0x820, 0x820, 0x820, 0x820, 0x820, 0x820, 0x820, 0x820, 0x820, 0x820, 0x82a,
+			0x82a, 0x82a, 0x83e, 0x83e, 0x83e, 0x843, 0x843, 0x843, 0x843, 0x850, 0x850, 0x850,
+			0x850, 0x850, 0x861, 0x861, 0x861, 0x861, 0x861, 0x861, 0x861, 0x861, 0x861, 0x861,
+			0x867, 0x86e, 0x86e, 0x86e, 0x86e, 0x86e, 0x87a, 0x87a, 0x87a, 0x87f, 0x87f, 0x87f,
+			0x87f, 0x87f, 0x886, 0x894, 0x894, 0x894, 0x894, 0x894, 0x894, 0x8a0, 0x8a0, 0x8a0,
+			0x8a0, 0x8a8, 0x8a8, 0x8bb, 0x8c2, 0x8c2, 0x8c2, 0x8c2, 0x8c2, 0x8c2, 0x8c2, 0x8c2,
+			0x8ca, 0x8cf, 0x8cf, 0x8cf, 0x8cf, 0x8cf, 0x8d4, 0x8d4, 0x8d4, 0x8d4, 0x8d4, 0x8d4,
+			0x8d4, 0x8da, 0x8da, 0x8da, 0x8da, 0x8da, 0x8da, 0x8da, 0x8da, 0x8dd, 0x8dd, 0x8e2,
+			0x8e2, 0x8e2, 0x8e2, 0x8e2, 0x8e2, 0x8e2, 0x8e2, 0x8e2, 0x8ee, 0x8ee, 0x8ee, 0x8ee,
+			0x8ee, 0x8f2, 0x909, 0x909, 0x917, 0x91e, 0x91e, 0x91e, 0x91e, 0x91e, 0x92b, 0x92b,
+			0x92b, 0x932, 0x932, 0x936, 0x936, 0x936, 0x936, 0x936, 0x936, 0x936, 0x936, 0x936,
+			0x93a, 0x949, 0x949, 0x949, 0x949, 0x949, 0x94f, 0x94f, 0x94f, 0x94f, 0x94f, 0x955,
+			0x955, 0x959, 0x959, 0x959, 0x961, 0x961, 0x961, 0x961, 0x961, 0x961, 0x961, 0x961,
+			0x961, 0x961, 0x961, 0x961, 0x961, 0x961, 0x961, 0x961, 0x961, 0x961, 0x961, 0x96b,
+			0x96b, 0x974, 0x974, 0x974, 0x974, 0x974, 0x974, 0x974, 0x979, 0x979, 0x979, 0x979,
+			0x979, 0x979, 0x97c, 0x97c, 0x97c, 0x97c, 0x983, 0x983, 0x983, 0x983, 0x983, 0x988,
+			0x994, 0x994, 0x994, 0x994, 0x998, 0x998, 0x998, 0x9a3, 0x9a3, 0x9a3, 0x9ac, 0x9ac,
+			0x9ac, 0x9ac, 0x9ac, 0x9ac, 0x9bd, 0x9cd, 0x9de, 0x9ef, 0x9ef, 0x9ef, 0x9ef, 0x9ef,
+			0x9ef, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa16, 0xa16, 0xa16, 0xa16, 0xa16, 0xa16,
+			0xa1a, 0xa1a, 0xa1a, 0xa1a, 0xa1a, 0xa1a, 0xa1a, 0xa1a, 0xa1a, 0xa1a, 0xa1a, 0xa1a,
+			0xa1a, 0xa1a, 0xa1a, 0xa1a, 0xa1a, 0xa1a, 0xa1a, 0xa1a, 0xa21, 0xa21, 0xa3e, 0xa3e,
+			0xa3e, 0xa3e, 0xa4c, 0xa4f, 0xa4f, 0xa4f, 0xa4f, 0xa4f, 0xa4f, 0xa4f, 0xa54, 0xa54,
+			0xa54, 0xa54, 0xa54, 0xa54, 0xa54, 0xa54, 0xa54, 0xa58, 0xa58, 0xa58, 0xa58, 0xa58,
+			0xa58, 0xa58, 0xa58, 0xa58, 0xa58, 0xa58, 0xa61, 0xa61, 0xa76, 0xa76, 0xa8f, 0xaa2,
+			0xabc, 0xad6, 0xaef, 0xb07, 0xb1f, 0xb3f, 0xb55, 0xb6a, 0xb81, 0xb99, 0xba4, 0xbbd,
+			0xbd5, 0xbe2, 0xbf5, 0xc0e, 0xc29,
 		},
 	},
 	{ // hu
@@ -3002,7 +2781,7 @@
 	},
 	{ // ii
 		"ꄓꇩꉙꑱꇩꉙꑭꀠꑸꉙꃔꇩꉙꆈꌠꉙꑴꄊꆺꉙꏝꀪꉙꁍꄨꑸꉙꊉꇩꉙꍏꇩꉙꅉꀋꌠꅇꂷꀠꑟꁍꄨꑸꉙꈝꐯꍏꇩꉙꀎꋏꍏꇩꉙ",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x9, 0x9, 0x9,
@@ -3052,8 +2831,8 @@
 			0x63, 0x63, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
 			0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
 			0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
-			0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x84, 0x84,
-			0x84, 0x84, 0x93, 0xa2,
+			0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x84,
+			0x84, 0x84, 0x84, 0x93, 0xa2,
 		},
 	},
 	{ // is
@@ -3298,7 +3077,7 @@
 			"nuingles britanukuingles merkanuspanhol latinu-merkanuspanhol europeuspanhol mex" +
 			"ikanufranses kanadianufranses suisuflamengupurtuges brazilerupurtuges europeuxin" +
 			"es simplifikaduxines tradisional",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x0, 0x7, 0x7, 0x10, 0x14, 0x1b, 0x1b, 0x20, 0x26, 0x26, 0x2c,
 			0x37, 0x3d, 0x46, 0x4d, 0x4d, 0x54, 0x5b, 0x63, 0x6a, 0x70, 0x78, 0x78,
 			0x78, 0x80, 0x80, 0x85, 0x85, 0x85, 0x8a, 0x94, 0x9b, 0x9b, 0xa1, 0xa4,
@@ -3347,9 +3126,9 @@
 			0x3f7, 0x3f7, 0x3f7, 0x3f7, 0x3f7, 0x3f7, 0x3f7, 0x3f7, 0x3f7, 0x3f7, 0x3f7, 0x3f7,
 			0x3f7, 0x3f7, 0x408, 0x408, 0x408, 0x408, 0x408, 0x408, 0x408, 0x408, 0x408, 0x408,
 			0x408, 0x408, 0x408, 0x408, 0x408, 0x408, 0x408, 0x408, 0x408, 0x408, 0x408, 0x408,
-			0x408, 0x408, 0x408, 0x408, 0x408, 0x408, 0x408, 0x420, 0x420, 0x42d, 0x43e, 0x450,
-			0x462, 0x472, 0x482, 0x490, 0x4a6, 0x4b5, 0x4c5, 0x4d6, 0x4e3, 0x4eb, 0x4fd, 0x50d,
-			0x50d, 0x50d, 0x51f, 0x530,
+			0x408, 0x408, 0x408, 0x408, 0x408, 0x408, 0x408, 0x408, 0x420, 0x420, 0x42d, 0x43e,
+			0x450, 0x462, 0x472, 0x482, 0x490, 0x4a6, 0x4b5, 0x4c5, 0x4d6, 0x4e3, 0x4eb, 0x4fd,
+			0x50d, 0x50d, 0x50d, 0x51f, 0x530,
 		},
 	},
 	{ // khq
@@ -3541,7 +3320,7 @@
 			"्बियन्सिस्वातीसेसोथोसुंदनीसस्वीदीषस्वाहिलीतमिळतेलुगूतजिकथाईतिग्रिन्यातुर्कमनसेत्" +
 			"स्वानातोंगातुर्किषत्सोगातटारउधूरयुक्रेनियन्उर्दूउज़बेकवियत्नामीज़ओलापुकउलोफ़झ़ौस" +
 			"ाइद्दिष्यूरुबाझ्हुन्गचीनीस्जुलूतगालोगकोंकणीमोल्डावियन्सेर्बो-क्रोयेषियन्",
-		[]uint16{ // 602 entries
+		[]uint16{ // 603 entries
 			0x0, 0xc, 0x27, 0x27, 0x45, 0x51, 0x69, 0x69, 0x7e, 0x8d, 0x8d, 0x99,
 			0xb7, 0xc9, 0xea, 0x105, 0x117, 0x117, 0x129, 0x141, 0x153, 0x153, 0x162, 0x162,
 			0x162, 0x17a, 0x17a, 0x189, 0x189, 0x189, 0x19b, 0x1aa, 0x1b9, 0x1b9, 0x1cb, 0x1cb,
@@ -3592,7 +3371,7 @@
 			0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab,
 			0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab,
 			0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab, 0xbab,
-			0xbcc, 0xc00,
+			0xbab, 0xbcc, 0xc00,
 		},
 	},
 	{ // ks
@@ -3639,7 +3418,7 @@
 			"یٖزۍیوٗ ایٚس اَنٛگریٖزۍلیٹٕن امریٖکی سپینِشلِبیریَن سپینِشکَنیڈیَن فریٚنچسٕوٕس ف" +
 			"ریٚنچفلیٚمِشبرازیٖلی پُتَگیٖزلِبیریَن پُرتَگیٖزمولداوِیَنسیٚربو کروشِیَنسیٚود چی" +
 			"ٖنیرِوٲجی چیٖنی",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0xa, 0x1e, 0x2e, 0x44, 0x4e, 0x5c, 0x6c, 0x74, 0x7e, 0x8c, 0x98,
 			0xae, 0xbc, 0xd2, 0xda, 0xe8, 0xf6, 0x106, 0x110, 0x11c, 0x12c, 0x138, 0x142,
 			0x14e, 0x15e, 0x164, 0x16c, 0x181, 0x18b, 0x195, 0x19f, 0x1ab, 0x1b7, 0x1c7, 0x1cf,
@@ -3687,10 +3466,10 @@
 			0x1657, 0x1667, 0x1671, 0x167f, 0x1687, 0x1697, 0x1697, 0x16a7, 0x16b7, 0x16b7, 0x16c5, 0x16dc,
 			0x16ed, 0x16ed, 0x16ed, 0x16ed, 0x16ff, 0x16ff, 0x170d, 0x171b, 0x171b, 0x172d, 0x172d, 0x173b,
 			0x174b, 0x175d, 0x1765, 0x176b, 0x176b, 0x176b, 0x176b, 0x176b, 0x1775, 0x1775, 0x1775, 0x1775,
-			0x1781, 0x178b, 0x1793, 0x1793, 0x179f, 0x179f, 0x179f, 0x17a5, 0x17b1, 0x17b1, 0x17b1, 0x17b1,
-			0x17b1, 0x17c1, 0x17c1, 0x17c1, 0x17cd, 0x17cd, 0x17d7, 0x180d, 0x1815, 0x1815, 0x1832, 0x184f,
-			0x1876, 0x189f, 0x18c4, 0x18e8, 0x190e, 0x192b, 0x192b, 0x1948, 0x195f, 0x196d, 0x198e, 0x19b1,
-			0x19c5, 0x19e2, 0x19f7, 0x1a0e,
+			0x1781, 0x178b, 0x1793, 0x1793, 0x1793, 0x179f, 0x179f, 0x179f, 0x17a5, 0x17b1, 0x17b1, 0x17b1,
+			0x17b1, 0x17b1, 0x17c1, 0x17c1, 0x17c1, 0x17cd, 0x17cd, 0x17d7, 0x180d, 0x1815, 0x1815, 0x1832,
+			0x184f, 0x1876, 0x189f, 0x18c4, 0x18e8, 0x190e, 0x192b, 0x192b, 0x1948, 0x195f, 0x196d, 0x198e,
+			0x19b1, 0x19c5, 0x19e2, 0x19f7, 0x1a0e,
 		},
 	},
 	{ // ksb
@@ -3810,7 +3589,7 @@
 			"KanadaFranzüüsesch uß de SchweijzFlämeschBrasilljaanesch PochtojeseschPochtojese" +
 			"sch uß PochtojallSärbokowateschSchineesesch en de eijfacher SchreffSchineesesch " +
 			"en de tradizjonälle Schreff",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x9, 0x14, 0x21, 0x2a, 0x33, 0x3d, 0x4b, 0x54, 0x60, 0x69, 0x73,
 			0x86, 0x93, 0xa0, 0xac, 0xac, 0xb3, 0xc0, 0xca, 0xd5, 0xde, 0xeb, 0xeb,
 			0xeb, 0xf3, 0xf3, 0x100, 0x111, 0x11f, 0x12a, 0x133, 0x13a, 0x144, 0x14e, 0x151,
@@ -3859,9 +3638,9 @@
 			0x8ba, 0x8ba, 0x8ba, 0x8ba, 0x8ba, 0x8ba, 0x8ba, 0x8ba, 0x8ba, 0x8ba, 0x8ba, 0x8ba,
 			0x8ba, 0x8ba, 0x8d0, 0x8d0, 0x8d0, 0x8d0, 0x8d0, 0x8d0, 0x8d0, 0x8d0, 0x8d0, 0x8dd,
 			0x8dd, 0x8dd, 0x8dd, 0x8dd, 0x8dd, 0x8dd, 0x8dd, 0x8dd, 0x8dd, 0x8dd, 0x8dd, 0x8dd,
-			0x8f0, 0x8f0, 0x8f0, 0x8f0, 0x8f0, 0x8f0, 0x8f0, 0x8fe, 0x8fe, 0x912, 0x928, 0x93f,
-			0x959, 0x96d, 0x98c, 0x9a5, 0x9c7, 0x9e0, 0x9f7, 0xa10, 0xa2e, 0xa37, 0xa54, 0xa70,
-			0xa70, 0xa7f, 0xaa3, 0xacc,
+			0x8dd, 0x8f0, 0x8f0, 0x8f0, 0x8f0, 0x8f0, 0x8f0, 0x8f0, 0x8fe, 0x8fe, 0x912, 0x928,
+			0x93f, 0x959, 0x96d, 0x98c, 0x9a5, 0x9c7, 0x9e0, 0x9f7, 0xa10, 0xa2e, 0xa37, 0xa54,
+			0xa70, 0xa70, 0xa7f, 0xaa3, 0xacc,
 		},
 	},
 	{ // kw
@@ -4003,7 +3782,7 @@
 			"ht SpueneschEuropäescht SpueneschMexikanescht SpueneschKanadescht FranséischSchw" +
 			"äizer FranséischFlämeschBrasilianescht PortugiseschEuropäescht PortugiseschMolda" +
 			"weschSerbo-KroateschChinesesch (vereinfacht)Chinesesch (traditionell)",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x4, 0xe, 0x17, 0x20, 0x24, 0x2d, 0x39, 0x41, 0x4c, 0x54, 0x5a,
 			0x6b, 0x77, 0x85, 0x8f, 0x96, 0xa5, 0xaf, 0xb8, 0xc2, 0xca, 0xd5, 0xe4,
 			0xf4, 0xfc, 0x100, 0x10b, 0x11a, 0x128, 0x131, 0x139, 0x141, 0x14b, 0x155, 0x160,
@@ -4051,10 +3830,10 @@
 			0x14f9, 0x1507, 0x1514, 0x1519, 0x1524, 0x1531, 0x153c, 0x1547, 0x1556, 0x155d, 0x1564, 0x1572,
 			0x1580, 0x1586, 0x158c, 0x1596, 0x15a7, 0x15ae, 0x15bd, 0x15c9, 0x15d0, 0x15d9, 0x15f2, 0x15fc,
 			0x1606, 0x1614, 0x1618, 0x1623, 0x162c, 0x1634, 0x1641, 0x164f, 0x1656, 0x165a, 0x165f, 0x166f,
-			0x167d, 0x1682, 0x168f, 0x169c, 0x16a8, 0x16bb, 0x16bf, 0x16ca, 0x16d3, 0x16da, 0x16df, 0x16e8,
-			0x16f4, 0x16ff, 0x170d, 0x1719, 0x171f, 0x173f, 0x174b, 0x175f, 0x1763, 0x1779, 0x1792, 0x17ab,
-			0x17c0, 0x17d3, 0x17e5, 0x17fb, 0x1819, 0x182f, 0x1845, 0x185b, 0x1871, 0x187a, 0x1895, 0x18ae,
-			0x18b8, 0x18c7, 0x18df, 0x18f8,
+			0x167d, 0x1682, 0x168f, 0x168f, 0x169c, 0x16a8, 0x16bb, 0x16bf, 0x16ca, 0x16d3, 0x16da, 0x16df,
+			0x16e8, 0x16f4, 0x16ff, 0x170d, 0x1719, 0x171f, 0x173f, 0x174b, 0x175f, 0x1763, 0x1779, 0x1792,
+			0x17ab, 0x17c0, 0x17d3, 0x17e5, 0x17fb, 0x1819, 0x182f, 0x1845, 0x185b, 0x1871, 0x187a, 0x1895,
+			0x18ae, 0x18b8, 0x18c7, 0x18df, 0x18f8,
 		},
 	},
 	{ // lg
@@ -4108,7 +3887,7 @@
 			"apiMizo IyápiNamipuri IyápiComonian IyápiTukté iyápi tȟaŋíŋ šniZaza IyápiŠagláša" +
 			" WašíčuiyapiMílahaŋska WašíčuiyapiWiyóȟpeyata Spayóla IyápiSpayólaȟča IyápiFlemi" +
 			"sh IyápiPȟečhókaŋ Háŋska Iyápi IkčékaPȟečhókaŋ Háŋska Iyápi Ȟče",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x0, 0xd, 0x1b, 0x2b, 0x2b, 0x39, 0x39, 0x44, 0x53, 0x60, 0x60,
 			0x72, 0x80, 0x8e, 0x9b, 0x9b, 0x9b, 0xa9, 0xb7, 0xb7, 0xc4, 0xd2, 0xe0,
 			0xe0, 0xe0, 0xfa, 0x106, 0x106, 0x114, 0x120, 0x12b, 0x13c, 0x13c, 0x13c, 0x13c,
@@ -4157,9 +3936,9 @@
 			0x7c1, 0x7c1, 0x7c1, 0x7c1, 0x7c1, 0x7c1, 0x7c1, 0x7c1, 0x7c1, 0x7c1, 0x7c1, 0x7c1,
 			0x7c1, 0x7c1, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de,
 			0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de,
-			0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7e9, 0x7e9, 0x7e9, 0x7e9,
-			0x7e9, 0x7e9, 0x802, 0x81d, 0x83a, 0x84e, 0x84e, 0x84e, 0x84e, 0x85c, 0x85c, 0x85c,
-			0x85c, 0x85c, 0x882, 0x8a5,
+			0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7de, 0x7e9, 0x7e9, 0x7e9,
+			0x7e9, 0x7e9, 0x7e9, 0x802, 0x81d, 0x83a, 0x84e, 0x84e, 0x84e, 0x84e, 0x85c, 0x85c,
+			0x85c, 0x85c, 0x85c, 0x882, 0x8a5,
 		},
 	},
 	{ // ln
@@ -4625,7 +4404,7 @@
 			"TuvaluTuvinjanUdmurtUgaritikuUmbunduGħerqVaiVotikWalamoWarajWaxoKalmykJaoJapeseŻ" +
 			"apotekŻenagaŻuniGħarbi Standard ModernIngliż AwstraljanIngliż BrittanikuIngliż A" +
 			"merikanFranċiż KanadiżFranċiż ŻvizzeruMoldavjanSerbo-KroatĊiniż Simplifikat",
-		[]uint16{ // 603 entries
+		[]uint16{ // 604 entries
 			0x0, 0x4, 0xd, 0x14, 0x1c, 0x20, 0x29, 0x32, 0x39, 0x41, 0x47, 0x4d,
 			0x5a, 0x60, 0x69, 0x70, 0x77, 0x7e, 0x85, 0x8d, 0x94, 0x9c, 0xa3, 0xaa,
 			0xb2, 0xb9, 0xbd, 0xc1, 0xd3, 0xd9, 0xdd, 0xe3, 0xed, 0xf4, 0xfc, 0xff,
@@ -4673,10 +4452,10 @@
 			0xb86, 0xb8c, 0xb91, 0xb96, 0xb99, 0xba0, 0xba0, 0xba7, 0xbae, 0xbae, 0xbb5, 0xbc2,
 			0xbcb, 0xbcb, 0xbcb, 0xbcb, 0xbd2, 0xbd2, 0xbd9, 0xbdf, 0xbdf, 0xbe7, 0xbe7, 0xbed,
 			0xbf6, 0xbfd, 0xc03, 0xc06, 0xc06, 0xc06, 0xc06, 0xc06, 0xc0b, 0xc0b, 0xc0b, 0xc0b,
-			0xc11, 0xc16, 0xc1a, 0xc1a, 0xc20, 0xc20, 0xc20, 0xc23, 0xc29, 0xc29, 0xc29, 0xc29,
-			0xc29, 0xc31, 0xc31, 0xc31, 0xc38, 0xc38, 0xc3d, 0xc3d, 0xc3d, 0xc54, 0xc54, 0xc54,
-			0xc66, 0xc66, 0xc78, 0xc88, 0xc88, 0xc88, 0xc88, 0xc9a, 0xcad, 0xcad, 0xcad, 0xcad,
-			0xcb6, 0xcc1, 0xcd4,
+			0xc11, 0xc16, 0xc1a, 0xc1a, 0xc1a, 0xc20, 0xc20, 0xc20, 0xc23, 0xc29, 0xc29, 0xc29,
+			0xc29, 0xc29, 0xc31, 0xc31, 0xc31, 0xc38, 0xc38, 0xc3d, 0xc3d, 0xc3d, 0xc54, 0xc54,
+			0xc54, 0xc66, 0xc66, 0xc78, 0xc88, 0xc88, 0xc88, 0xc88, 0xc9a, 0xcad, 0xcad, 0xcad,
+			0xcad, 0xcb6, 0xcc1, 0xcd4,
 		},
 	},
 	{ // mua
@@ -4807,120 +4586,10 @@
 		neLangStr,
 		neLangIdx,
 	},
-	{ // ne-IN
-		"अधुनिक प्रमाणिक अरबी",
-		[]uint16{ // 586 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38,
-		},
-	},
 	{ // nl
 		nlLangStr,
 		nlLangIdx,
 	},
-	{ // nl-BE
-		"Occitaans; ProvençaalsServo-Kroatisch",
-		[]uint16{ // 602 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x26,
-		},
-	},
 	{ // nmg
 		"Kiɛl akanKiɛl amariaKiɛl b’árabeKiɛl belarussieKiɛl bulgariaKiɛl bengaliaKiɛl bó" +
 			" tchɛkJámanKiɛl bó grɛkNgɛ̄lɛ̄nPaŋáKiɛl pɛrsiaFalaKiɛl máwúsáKiɛl b’indienKiɛl b" +
@@ -4994,7 +4663,7 @@
 			"k engelskbritisk engelskengelsk (amerikansk)latinamerikansk spanskiberisk spansk" +
 			"kanadisk fransksveitsisk franskflamskbrasiliansk portugisiskeuropeisk portugisis" +
 			"kmoldaviskserbokroatiskforenkla kinesisktradisjonell kinesisk",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x4, 0xd, 0x15, 0x1e, 0x22, 0x2a, 0x32, 0x39, 0x41, 0x48, 0x4e,
 			0x5c, 0x65, 0x71, 0x79, 0x80, 0x87, 0x8e, 0x97, 0x9f, 0xa6, 0xaf, 0xba,
 			0xc2, 0xcc, 0xd0, 0xd9, 0xe6, 0xef, 0xf7, 0xfc, 0x100, 0x106, 0x10e, 0x111,
@@ -5042,10 +4711,10 @@
 			0xc07, 0xc0d, 0xc12, 0xc18, 0xc1c, 0xc23, 0xc23, 0xc2a, 0xc31, 0xc31, 0xc39, 0xc46,
 			0xc4f, 0xc4f, 0xc4f, 0xc4f, 0xc58, 0xc58, 0xc5f, 0xc65, 0xc6c, 0xc74, 0xc74, 0xc7a,
 			0xc83, 0xc8a, 0xc8d, 0xc90, 0xc90, 0xc90, 0xc90, 0xc90, 0xc96, 0xc96, 0xc96, 0xc96,
-			0xc9c, 0xca1, 0xca6, 0xca6, 0xcac, 0xcac, 0xcac, 0xcaf, 0xcb7, 0xcbe, 0xcbe, 0xcbe,
-			0xcc9, 0xcd0, 0xcda, 0xcda, 0xce0, 0xce0, 0xce4, 0xcfa, 0xcfe, 0xcfe, 0xd0e, 0xd20,
-			0xd32, 0xd42, 0xd51, 0xd65, 0xd7b, 0xd89, 0xd89, 0xd98, 0xda8, 0xdae, 0xdc5, 0xdda,
-			0xde3, 0xdf0, 0xe01, 0xe16,
+			0xc9c, 0xca1, 0xca6, 0xca6, 0xca6, 0xcac, 0xcac, 0xcac, 0xcaf, 0xcb7, 0xcbe, 0xcbe,
+			0xcbe, 0xcc9, 0xcd0, 0xcda, 0xcda, 0xce0, 0xce0, 0xce4, 0xcfa, 0xcfe, 0xcfe, 0xd0e,
+			0xd20, 0xd32, 0xd42, 0xd51, 0xd65, 0xd7b, 0xd89, 0xd89, 0xd98, 0xda8, 0xdae, 0xdc5,
+			0xdda, 0xde3, 0xdf0, 0xe01, 0xe16,
 		},
 	},
 	{ // nnh
@@ -5053,7 +4722,7 @@
 			"ekàʼaShwóŋò pafutShwóŋò pʉ̀a njinikomShwóŋò pakɔsiShwóŋò mbuluShwóŋò ngáŋtʉɔʼShw" +
 			"óŋò pʉa YɔɔnmendiShwóŋò pʉa shÿó BɛgtùaShwóŋò ngiembɔɔnShwóŋò pʉa shÿó MbafìaShw" +
 			"óŋò Tsaŋ",
-		[]uint16{ // 575 entries
+		[]uint16{ // 576 entries
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0xc, 0xc, 0xc,
@@ -5101,7 +4770,7 @@
 			0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b,
 			0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b,
 			0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b,
-			0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x138, 0x147,
+			0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x138, 0x147,
 		},
 	},
 	{ // no
@@ -5222,7 +4891,7 @@
 			"n TayiiAfaan TigireeLammii TurkiiAfaan TurkiiAfaan UkreeniiAfaan UrduAfaan Uzbek" +
 			"Afaan VeetinamAfaan XhosaChineseAfaan ZuuluAfaan FilippiniiAfaan KilingonAfaan P" +
 			"ortugali (Braazil)Afaan Protuguese",
-		[]uint16{ // 600 entries
+		[]uint16{ // 601 entries
 			0x0, 0x0, 0x0, 0x0, 0x9, 0x9, 0x17, 0x17, 0x20, 0x20, 0x20, 0x20,
 			0x31, 0x31, 0x40, 0x4f, 0x4f, 0x4f, 0x61, 0x61, 0x61, 0x6f, 0x7c, 0x7c,
 			0x7c, 0x7c, 0x7c, 0x87, 0x87, 0x87, 0x92, 0xa1, 0xaf, 0xaf, 0xaf, 0xaf,
@@ -5272,7 +4941,8 @@
 			0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459,
 			0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459,
 			0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459,
-			0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x472, 0x482,
+			0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x472,
+			0x482,
 		},
 	},
 	{ // or
@@ -5321,7 +4991,7 @@
 			"ନ୍ ଆମେରିକାନ୍ ସ୍ପାନିଶ୍ଲେବେରିଆନ୍ ସ୍ପାନିଶ୍କାନାଡିଆନ୍ ଫ୍ରେଞ୍ଚସ୍ବିସ୍ ଫ୍ରେଞ୍ଚ୍ଫ୍ଲେମିଶ୍ବ" +
 			"୍ରାଜିଲିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍ଲେବେରିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍ମୋଲଡୋଭିଆନ୍ସର୍ବୋ-କ୍ରୋଆଟିଆନ୍ସରଳିକରଣ ଚାଇ" +
 			"ନୀଜ୍ପାରମ୍ପରିକ ଚାଇନୀଜ୍",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0xf, 0x2d, 0x42, 0x60, 0x6c, 0x81, 0x96, 0xa8, 0xb7, 0xcc, 0xde,
 			0xff, 0x111, 0x132, 0x150, 0x165, 0x17d, 0x192, 0x1aa, 0x1bf, 0x1d4, 0x1ec, 0x1fb,
 			0x20d, 0x22b, 0x237, 0x243, 0x26e, 0x280, 0x28f, 0x2a7, 0x2bc, 0x2ce, 0x2e0, 0x2e9,
@@ -5369,10 +5039,10 @@
 			0x22d7, 0x22e9, 0x22fb, 0x2310, 0x231c, 0x2331, 0x2331, 0x234c, 0x236a, 0x236a, 0x2382, 0x23a7,
 			0x23c6, 0x23c6, 0x23c6, 0x23c6, 0x23e7, 0x23e7, 0x23ff, 0x2411, 0x2411, 0x242c, 0x242c, 0x2447,
 			0x2462, 0x247d, 0x2486, 0x248f, 0x248f, 0x248f, 0x248f, 0x248f, 0x24a1, 0x24a1, 0x24a1, 0x24a1,
-			0x24b0, 0x24bc, 0x24c8, 0x24c8, 0x24e0, 0x24e0, 0x24e0, 0x24e9, 0x24fb, 0x24fb, 0x24fb, 0x24fb,
-			0x24fb, 0x2513, 0x2537, 0x2537, 0x2549, 0x2549, 0x2555, 0x25a9, 0x25b5, 0x25b5, 0x25e6, 0x2618,
-			0x264f, 0x267d, 0x26a8, 0x26cc, 0x2713, 0x2747, 0x2747, 0x2778, 0x27a3, 0x27bb, 0x27fe, 0x283b,
-			0x2859, 0x2887, 0x28b2, 0x28e3,
+			0x24b0, 0x24bc, 0x24c8, 0x24c8, 0x24c8, 0x24e0, 0x24e0, 0x24e0, 0x24e9, 0x24fb, 0x24fb, 0x24fb,
+			0x24fb, 0x24fb, 0x2513, 0x2537, 0x2537, 0x2549, 0x2549, 0x2555, 0x25a9, 0x25b5, 0x25b5, 0x25e6,
+			0x2618, 0x264f, 0x267d, 0x26a8, 0x26cc, 0x2713, 0x2747, 0x2747, 0x2778, 0x27a3, 0x27bb, 0x27fe,
+			0x283b, 0x2859, 0x2887, 0x28b2, 0x28e3,
 		},
 	},
 	{ // os
@@ -5385,7 +5055,7 @@
 			"иаг немыцагавстралиаг англисагканадӕйаг англисагбритайнаг англисагамерикаг англи" +
 			"саглатинаг америкаг англисагевропӕйаг англисагканадӕйаг францагшвейцариаг франца" +
 			"гбразилиаг португалиагевропӕйаг полтугалиагӕнцонгонд китайагтрадицион китайаг",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x0, 0xe, 0x1a, 0x2c, 0x2c, 0x2c, 0x2c, 0x3a, 0x3a, 0x48, 0x48,
 			0x58, 0x68, 0x68, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x88, 0x9c, 0xac,
 			0xac, 0xac, 0xac, 0xb6, 0xb6, 0xc4, 0xc4, 0xd0, 0xde, 0xde, 0xde, 0xde,
@@ -5434,9 +5104,9 @@
 			0x370, 0x370, 0x370, 0x370, 0x370, 0x370, 0x370, 0x370, 0x370, 0x370, 0x370, 0x370,
 			0x370, 0x370, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389,
 			0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389,
-			0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x3ac, 0x3cf,
-			0x3f4, 0x417, 0x43a, 0x45b, 0x48b, 0x4ae, 0x4ae, 0x4cf, 0x4f2, 0x4f2, 0x51b, 0x544,
-			0x544, 0x544, 0x565, 0x586,
+			0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x389, 0x3ac,
+			0x3cf, 0x3f4, 0x417, 0x43a, 0x45b, 0x48b, 0x4ae, 0x4ae, 0x4cf, 0x4f2, 0x4f2, 0x51b,
+			0x544, 0x544, 0x544, 0x565, 0x586,
 		},
 	},
 	{ // pa
@@ -5607,7 +5277,7 @@
 			"anadaisenglais britannicenglais americanspagnol latinamericanspagnol ibericfranz" +
 			"os canadaisfranzos svizzerflamportugais brasilianportugais iberianmoldavserbo-cr" +
 			"oatchinais simplifitgàchinais tradiziunal",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x4, 0xd, 0x14, 0x1d, 0x21, 0x27, 0x30, 0x34, 0x3a, 0x40, 0x46,
 			0x55, 0x5d, 0x66, 0x6c, 0x73, 0x7a, 0x80, 0x87, 0x8d, 0x94, 0x9b, 0xa6,
 			0xae, 0xb2, 0xb6, 0xbc, 0xcc, 0xd6, 0xdc, 0xe2, 0xe9, 0xf2, 0xfa, 0xfd,
@@ -5655,10 +5325,10 @@
 			0xb13, 0xb19, 0xb1e, 0xb23, 0xb26, 0xb2d, 0xb2d, 0xb36, 0xb3d, 0xb3d, 0xb45, 0xb52,
 			0xb5b, 0xb5b, 0xb5b, 0xb5b, 0xb64, 0xb64, 0xb6b, 0xb71, 0xb71, 0xb79, 0xb79, 0xb7f,
 			0xb87, 0xb8d, 0xba6, 0xba9, 0xba9, 0xba9, 0xba9, 0xba9, 0xbae, 0xbae, 0xbae, 0xbae,
-			0xbb4, 0xbb9, 0xbbe, 0xbbe, 0xbc4, 0xbc4, 0xbc4, 0xbc7, 0xbcd, 0xbcd, 0xbcd, 0xbcd,
-			0xbcd, 0xbd4, 0xbe4, 0xbe4, 0xbea, 0xbea, 0xbee, 0xc09, 0xc0d, 0xc0d, 0xc1d, 0xc1d,
-			0xc2f, 0xc3f, 0xc50, 0xc60, 0xc75, 0xc83, 0xc83, 0xc93, 0xca2, 0xca6, 0xcb9, 0xcca,
-			0xcd0, 0xcdb, 0xcef, 0xd02,
+			0xbb4, 0xbb9, 0xbbe, 0xbbe, 0xbbe, 0xbc4, 0xbc4, 0xbc4, 0xbc7, 0xbcd, 0xbcd, 0xbcd,
+			0xbcd, 0xbcd, 0xbd4, 0xbe4, 0xbe4, 0xbea, 0xbea, 0xbee, 0xc09, 0xc0d, 0xc0d, 0xc1d,
+			0xc1d, 0xc2f, 0xc3f, 0xc50, 0xc60, 0xc75, 0xc83, 0xc83, 0xc93, 0xca2, 0xca6, 0xcb9,
+			0xcca, 0xcd0, 0xcdb, 0xcef, 0xd02,
 		},
 	},
 	{ // rn
@@ -5745,56 +5415,6 @@
 		ruLangStr,
 		ruLangIdx,
 	},
-	{ // ru-UA
-		"маршальскийслэйвиклингон",
-		[]uint16{ // 536 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-			0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-			0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-			0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-			0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-			0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-			0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-			0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-			0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-			0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-			0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-			0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-			0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-			0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x30,
-		},
-	},
 	{ // rw
 		"IkinyafurikaneriInyetuwiInyamuharikiIcyarabuIcyasamiziInyazeribayijaniIkibelarus" +
 			"iyaUrunyabuligariyaIkibengaliInyebiritoniInyebosiniyaIgikatalaniIgicekeIkigaluwa" +
@@ -5812,7 +5432,7 @@
 			"iIgiturukiyaIkiwiguriIkinyayukereniInyeyuruduInyeyuzubekiIkinyaviyetinamuInyehaw" +
 			"usaInyeyidishiInyezuluIkinyafilipineInyekilingoniInyeporutigali (Brezili)Inyepor" +
 			"utigali (Igiporutigali)Inyeseribiya na Korowasiya",
-		[]uint16{ // 602 entries
+		[]uint16{ // 603 entries
 			0x0, 0x0, 0x0, 0x0, 0x10, 0x18, 0x24, 0x24, 0x2c, 0x36, 0x36, 0x36,
 			0x46, 0x46, 0x53, 0x63, 0x63, 0x63, 0x6d, 0x6d, 0x79, 0x85, 0x90, 0x90,
 			0x90, 0x90, 0x90, 0x97, 0x97, 0x97, 0xa0, 0xaa, 0xb1, 0xb1, 0xb1, 0xb1,
@@ -5862,8 +5482,8 @@
 			0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493,
 			0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493,
 			0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493,
-			0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x4ab, 0x4c9,
-			0x4c9, 0x4e3,
+			0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x493, 0x4ab,
+			0x4c9, 0x4c9, 0x4e3,
 		},
 	},
 	{ // rwk
@@ -6089,7 +5709,7 @@
 			"lkupagiellalullisámegiellajulevsámegiellaanárašgiellanuortalašgiellashimaorigiel" +
 			"laudmurtagielladovdameahttun giellakantongiellaserbokroatiagiellaálki kiinágiell" +
 			"aárbevirolaš kiinnágiella",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x0, 0x0, 0x0, 0x10, 0x10, 0x10, 0x1e, 0x2a, 0x2a, 0x2a, 0x2a,
 			0x2a, 0x2a, 0x3f, 0x4e, 0x4e, 0x4e, 0x5a, 0x66, 0x73, 0x7f, 0x8e, 0x8e,
 			0x8e, 0x9b, 0x9b, 0xa8, 0xa8, 0xa8, 0xb3, 0xc1, 0xce, 0xda, 0xe8, 0xe8,
@@ -6138,9 +5758,9 @@
 			0x52d, 0x52d, 0x52d, 0x52d, 0x52d, 0x52d, 0x52d, 0x52d, 0x52d, 0x52d, 0x52d, 0x53a,
 			0x53a, 0x53a, 0x54e, 0x54e, 0x54e, 0x54e, 0x54e, 0x54e, 0x54e, 0x54e, 0x54e, 0x54e,
 			0x54e, 0x54e, 0x54e, 0x54e, 0x54e, 0x54e, 0x54e, 0x54e, 0x54e, 0x54e, 0x54e, 0x54e,
+			0x54e, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a,
 			0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a,
-			0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a, 0x55a,
-			0x55a, 0x56c, 0x57e, 0x599,
+			0x55a, 0x55a, 0x56c, 0x57e, 0x599,
 		},
 	},
 	{ // se-FI
@@ -6152,7 +5772,7 @@
 			"iellakanádalaš fránskkagiellašveicalaš fránskkagiellabelgialaš hollánddagiellabr" +
 			"asilialaš portugálagiellaportugálalaš portugálagiellamoldávialaš romániagiellaál" +
 			"kes kiinnágiella",
-		[]uint16{ // 603 entries
+		[]uint16{ // 604 entries
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 			0x0, 0x0, 0x14, 0x14, 0x14, 0x14, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
 			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
@@ -6201,9 +5821,9 @@
 			0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a,
 			0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a,
 			0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a,
-			0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0xb1, 0xcf, 0xe8,
-			0x105, 0x11f, 0x139, 0x155, 0x17a, 0x196, 0x1b1, 0x1cc, 0x1e7, 0x202, 0x21f, 0x23e,
-			0x25a, 0x25a, 0x26e,
+			0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0xb1, 0xcf,
+			0xe8, 0x105, 0x11f, 0x139, 0x155, 0x17a, 0x196, 0x1b1, 0x1cc, 0x1e7, 0x202, 0x21f,
+			0x23e, 0x25a, 0x25a, 0x26e,
 		},
 	},
 	{ // seh
@@ -6460,7 +6080,7 @@
 			"râškielânuorttâlâškielâudmurtkielâvepsäkielâkantonkiinakielâNuorttâriijkâ saksak" +
 			"ielâAustralia engâlâskielâKanada engâlâskielâoovtâkiärdánis kiinakielâärbivuávál" +
 			"âš kiinakielâ",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0xc, 0xc, 0xc,
 			0xc, 0xc, 0x20, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e,
 			0x2e, 0x2e, 0x2e, 0x3b, 0x47, 0x47, 0x47, 0x53, 0x5e, 0x5e, 0x5e, 0x5e,
@@ -6509,9 +6129,9 @@
 			0x2ed, 0x2ed, 0x2ed, 0x2ed, 0x2ed, 0x2ed, 0x2ed, 0x2ed, 0x2ed, 0x2ed, 0x2ed, 0x2f9,
 			0x2f9, 0x2f9, 0x2f9, 0x2f9, 0x2f9, 0x305, 0x305, 0x305, 0x305, 0x305, 0x305, 0x305,
 			0x305, 0x305, 0x305, 0x305, 0x305, 0x305, 0x305, 0x305, 0x305, 0x305, 0x305, 0x305,
-			0x316, 0x316, 0x316, 0x316, 0x316, 0x316, 0x316, 0x316, 0x316, 0x316, 0x331, 0x331,
-			0x34a, 0x360, 0x360, 0x360, 0x360, 0x360, 0x360, 0x360, 0x360, 0x360, 0x360, 0x360,
-			0x360, 0x360, 0x37d, 0x39a,
+			0x305, 0x316, 0x316, 0x316, 0x316, 0x316, 0x316, 0x316, 0x316, 0x316, 0x316, 0x331,
+			0x331, 0x34a, 0x360, 0x360, 0x360, 0x360, 0x360, 0x360, 0x360, 0x360, 0x360, 0x360,
+			0x360, 0x360, 0x360, 0x37d, 0x39a,
 		},
 	},
 	{ // sn
@@ -6574,220 +6194,77 @@
 		srLangIdx,
 	},
 	{ // sr-Latn
-		"AfarskiabhaskiAvestanskiafrikansakanamharskiAragonežanskiarapskiasamskiAvarskiAj" +
-			"maraazerbejdžanskibaškirskibeloruskibugarskiBislamabambarabengalskitibetanskibre" +
-			"tonskibosanskikatalonskiČečenskiČamorokorzikanskiKričeškiStaroslovenskiČuvaškive" +
-			"lškidanskinemačkiDivehijskidžongaevegrčkiengleskiesperantošpanskiestonskibaskijs" +
-			"kipersijskiFulahfinskifidžijskifarskifrancuskizapadni frizijskiirskiŠkotski Gals" +
-			"kigalicijskigvaranigudžaratiMankshausahebrejskihindiHiri MotuhrvatskiHaitskimađa" +
-			"rskijermenskiHereroInterlingvaindonežanskiMeđujezičkiigbosečuan jiUnupiakIdoisla" +
-			"ndskiitalijanskiinuktitutjapanskijavanskigruzijskiKongokikujuKuanjamakazaškikala" +
-			"lisutkmerskikanadakorejskiKanurikašmirskikurdskiKomikornvolskikirgiskilatinskilu" +
-			"ksemburškigandaLimburgišlingalalaoškilitvanskiluba-katangaletonskimalgaškiMaršal" +
-			"skimaorskimakedonskimalajalammongolskimaratimalajskimalteškiburmanskiNaurusevern" +
-			"i ndebelenepalskiNdongaholandskinorveški ninorsknorveški bokmalJužni ndebeleNava" +
-			"hoNjanjaProvansalskiOjibvaoromoorijaOsetskipandžabiPalipoljskipaštunskiportugals" +
-			"kikečuareto-romanskirundirumunskiruskikinjaruandasanskritSardinjaskisindiseverni" +
-			" samisangosinhalskislovačkislovenačkiSamoanskišonasomalskialbanskisrpskiSvatiSes" +
-			"otosudanskišvedskisvahilitamilskiteluguTađiktajlandskitigrinjaturkmenskiTsvanato" +
-			"ngaturskiTsongatatarskiTahićanskiujgurskiukrajinskiurduuzbečkiVendavijetnamskiVo" +
-			"lapukValunvolofkosaJidišjorubaŽuangkineskizuluAčineskiAkoliAdangmejskiAdigejskiA" +
-			"frihiliagemAinuAkadijskiAljutJužni altaiStaroengleskiAngikaArmajskimapučeArapaho" +
-			"AravakasuAsturijskiAvadhiBalučiBalinezijskiBasaBejabembabenaBojpuriBikolBiniSisi" +
-			"kaBrajbodoBuriatBuginežanskiBlinKadoKaripskiAtsamskiCebuanočigaČibčaČagataiČukes" +
-			"kiMariČinukskiČoktavskiČipvijanskičerokiČejenskisorani kurdskiKoptskiKrimeanski " +
-			"turskiKašubijanskiDakotaDargvataitaDelaverSlavskiDogribDinkazarmaDogridonji luži" +
-			"čkosrpskidualaSrednji holandskidžola fonjiĐulaembuEfikskiStaroegipatskiEkajukEla" +
-			"mitskiSrednji engleskiEvondoFangfilipinskiFonSrednji francuskiStarofrancuskiSeve" +
-			"rno-frizijskiIstočni frizijskiFriulijskiGagagauzGajoGbajaDžizGilbertškiSrednji v" +
-			"isoki nemačkiStaronemačkiGondiGorontaloGotskiGreboStarogrčkiŠvajcarski nemačkigu" +
-			"siGvič’inHaidahavajskiHiligajnonHititeHmonggornji lužičkosrpskiHupaIbanIlokoIngv" +
-			"iškiLojbanngombamačameJudeo-persijskiJudeo-arapskiKara-kalpaškikabileKačinĐukamb" +
-			"aKaviKabardijskiTjapmakondezelenortski kreolskiKoroKasiKotaneškikojra čiinikalen" +
-			"džinKimbundukomi-permskikonkaniKosreanskiKpeleKaračaj-balkarKarelijskiKurukhšamb" +
-			"alabafijaKumikKutenaiLadinolangiLandaLambaLezgianlakotaMongoLoziLuba-luluaLuisen" +
-			"oLundaluoLušailujiaMadureškiMagahiMaitiliMakasarMandingomasaiMokšaMandarMendemer" +
-			"umorisjenSrednji irskimakuva-meetometaMikmakMinangkabauMančuManipurimohokMosimun" +
-			"dangViše jezikaKriškiMirandeškiMarvariErzijaNeapolitanskinamaNiski nemačkiNevari" +
-			"NiasNiueankvasioNogaiStari norskiN’koSeverni sotonuerKlasični nevariNjamvezinjan" +
-			"koleNjoroNzimaOsageOtomanski turskiPangasinskiPahlaviPampangaPapiamentoPalauansk" +
-			"iStaropersijskiFeničanskiPonpejskiStaroprovansalskik’ičeRađastaniRapanuiRarotong" +
-			"anromboRomaniAromanijskiruaSandaveJakutSamaritanski aramejskisamburuSasakSantali" +
-			"sanguSicilijanskiŠkotskisenaSelkapkojraboro seniStaroirskitašelhitŠanSidamojužni" +
-			" samilule samiinari samiskolt samiSoninkeSodžijenskiSrananski tongoSererSukumaSu" +
-			"suSumerskiKomorskikongo svahiliKlasični sirijskiSirijskiTimnetesoTerenoTetumTigr" +
-			"eTivTokelauKlingonskiTlingitTamašekNjasa tongaTok PisinTsimšianTumbukaTuvalutasa" +
-			"vakTuvinijskicentralnoatlaski tamazigtUdmurtUgaritskiUmbunduRutvaiVotskivundžoVa" +
-			"lamoVarajVašoKalmiksogaJaoJapeškiKantonskiZapotečkiBlisimboliZenagastandardni ma" +
-			"rokanski tamazigtZunibez lingvističkog sadržajaZazamoderan standardni arapskišva" +
-			"jcarski visoki nemačkiflamanskiBrazilski portugalskiIberijski portugalskimoldavs" +
-			"kiSrpskohrvatski",
-		[]uint16{ // 602 entries
-			0x0, 0x7, 0xe, 0x18, 0x20, 0x24, 0x2c, 0x3a, 0x41, 0x48, 0x4f, 0x55,
-			0x64, 0x6e, 0x77, 0x7f, 0x86, 0x8d, 0x96, 0xa0, 0xa9, 0xb1, 0xbb, 0xc5,
-			0xcc, 0xd7, 0xda, 0xe1, 0xef, 0xf8, 0xff, 0x105, 0x10d, 0x117, 0x11e, 0x121,
-			0x127, 0x12f, 0x138, 0x140, 0x148, 0x151, 0x15a, 0x15f, 0x165, 0x16f, 0x175, 0x17e,
-			0x18f, 0x194, 0x1a3, 0x1ad, 0x1b4, 0x1be, 0x1c3, 0x1c8, 0x1d1, 0x1d6, 0x1df, 0x1e7,
-			0x1ee, 0x1f7, 0x200, 0x206, 0x211, 0x21e, 0x22b, 0x22f, 0x239, 0x240, 0x243, 0x24c,
-			0x257, 0x260, 0x268, 0x270, 0x279, 0x27e, 0x284, 0x28c, 0x294, 0x29d, 0x2a4, 0x2aa,
-			0x2b2, 0x2b8, 0x2c2, 0x2c9, 0x2cd, 0x2d7, 0x2df, 0x2e7, 0x2f4, 0x2f9, 0x303, 0x30a,
-			0x311, 0x31a, 0x326, 0x32e, 0x337, 0x341, 0x348, 0x352, 0x35b, 0x364, 0x36a, 0x372,
-			0x37b, 0x384, 0x389, 0x398, 0x3a0, 0x3a6, 0x3af, 0x3c0, 0x3d0, 0x3de, 0x3e4, 0x3ea,
-			0x3f6, 0x3fc, 0x401, 0x406, 0x40d, 0x416, 0x41a, 0x421, 0x42b, 0x436, 0x43c, 0x449,
-			0x44e, 0x456, 0x45b, 0x466, 0x46e, 0x479, 0x47e, 0x48a, 0x48f, 0x498, 0x4a1, 0x4ac,
-			0x4b5, 0x4ba, 0x4c2, 0x4ca, 0x4d0, 0x4d5, 0x4db, 0x4e3, 0x4eb, 0x4f2, 0x4fa, 0x500,
-			0x506, 0x510, 0x518, 0x522, 0x528, 0x52d, 0x533, 0x539, 0x541, 0x54c, 0x554, 0x55e,
-			0x562, 0x56a, 0x56f, 0x57a, 0x581, 0x586, 0x58b, 0x58f, 0x595, 0x59b, 0x5a1, 0x5a8,
-			0x5ac, 0x5b5, 0x5ba, 0x5c5, 0x5ce, 0x5ce, 0x5d6, 0x5da, 0x5de, 0x5e7, 0x5e7, 0x5ec,
-			0x5ec, 0x5f8, 0x605, 0x60b, 0x613, 0x61a, 0x61a, 0x621, 0x621, 0x627, 0x627, 0x627,
-			0x62a, 0x62a, 0x634, 0x634, 0x63a, 0x63a, 0x641, 0x64d, 0x64d, 0x651, 0x651, 0x651,
-			0x651, 0x655, 0x65a, 0x65a, 0x65e, 0x65e, 0x65e, 0x665, 0x66a, 0x66e, 0x66e, 0x66e,
-			0x674, 0x674, 0x674, 0x678, 0x678, 0x67c, 0x67c, 0x682, 0x68f, 0x68f, 0x693, 0x693,
-			0x697, 0x69f, 0x69f, 0x6a7, 0x6ae, 0x6b3, 0x6ba, 0x6c2, 0x6ca, 0x6ce, 0x6d7, 0x6e1,
-			0x6ed, 0x6f4, 0x6fd, 0x70b, 0x712, 0x712, 0x723, 0x730, 0x736, 0x73c, 0x741, 0x748,
-			0x74f, 0x755, 0x75a, 0x75f, 0x764, 0x779, 0x779, 0x77e, 0x78f, 0x79b, 0x7a0, 0x7a0,
-			0x7a4, 0x7ab, 0x7ab, 0x7b9, 0x7bf, 0x7c8, 0x7d8, 0x7d8, 0x7de, 0x7de, 0x7e2, 0x7ec,
-			0x7ec, 0x7ef, 0x7ef, 0x800, 0x80e, 0x80e, 0x81f, 0x831, 0x83b, 0x83d, 0x843, 0x843,
-			0x847, 0x84c, 0x84c, 0x851, 0x85c, 0x85c, 0x873, 0x880, 0x880, 0x885, 0x88e, 0x894,
-			0x899, 0x8a4, 0x8b8, 0x8b8, 0x8b8, 0x8bc, 0x8c6, 0x8cb, 0x8cb, 0x8d3, 0x8d3, 0x8dd,
-			0x8e3, 0x8e8, 0x8fe, 0x8fe, 0x902, 0x906, 0x906, 0x90b, 0x914, 0x914, 0x914, 0x91a,
-			0x920, 0x927, 0x936, 0x943, 0x943, 0x951, 0x957, 0x95d, 0x960, 0x965, 0x969, 0x974,
-			0x974, 0x978, 0x97f, 0x993, 0x993, 0x997, 0x997, 0x99b, 0x9a5, 0x9b1, 0x9b1, 0x9b1,
-			0x9b1, 0x9bb, 0x9c3, 0x9cf, 0x9d6, 0x9e0, 0x9e5, 0x9f4, 0x9f4, 0x9f4, 0x9fe, 0xa04,
-			0xa0c, 0xa12, 0xa12, 0xa17, 0xa1e, 0xa24, 0xa29, 0xa2e, 0xa33, 0xa3a, 0xa3a, 0xa3a,
-			0xa3a, 0xa40, 0xa40, 0xa45, 0xa49, 0xa49, 0xa53, 0xa5a, 0xa5f, 0xa62, 0xa68, 0xa6d,
-			0xa6d, 0xa6d, 0xa77, 0xa77, 0xa7d, 0xa84, 0xa8b, 0xa93, 0xa98, 0xa98, 0xa9e, 0xaa4,
-			0xaa9, 0xaad, 0xab5, 0xac2, 0xace, 0xad2, 0xad8, 0xae3, 0xae9, 0xaf1, 0xaf6, 0xafa,
-			0xafa, 0xb01, 0xb0d, 0xb14, 0xb1f, 0xb26, 0xb26, 0xb26, 0xb2c, 0xb2c, 0xb2c, 0xb39,
-			0xb3d, 0xb4b, 0xb51, 0xb55, 0xb5b, 0xb5b, 0xb61, 0xb61, 0xb66, 0xb72, 0xb72, 0xb78,
-			0xb84, 0xb88, 0xb98, 0xba0, 0xba8, 0xbad, 0xbb2, 0xbb7, 0xbc7, 0xbd2, 0xbd9, 0xbe1,
-			0xbeb, 0xbf5, 0xbf5, 0xbf5, 0xbf5, 0xc03, 0xc03, 0xc0e, 0xc0e, 0xc0e, 0xc17, 0xc17,
-			0xc28, 0xc30, 0xc30, 0xc3a, 0xc41, 0xc4b, 0xc4b, 0xc4b, 0xc50, 0xc56, 0xc56, 0xc56,
-			0xc56, 0xc61, 0xc64, 0xc6b, 0xc70, 0xc86, 0xc8d, 0xc92, 0xc99, 0xc99, 0xc99, 0xc9e,
-			0xcaa, 0xcb2, 0xcb2, 0xcb2, 0xcb6, 0xcb6, 0xcbc, 0xcca, 0xcd4, 0xcd4, 0xcdd, 0xce1,
-			0xce1, 0xce7, 0xce7, 0xce7, 0xcf2, 0xcfb, 0xd05, 0xd0f, 0xd16, 0xd22, 0xd31, 0xd36,
-			0xd36, 0xd36, 0xd3c, 0xd40, 0xd48, 0xd50, 0xd5d, 0xd6f, 0xd77, 0xd77, 0xd77, 0xd7c,
-			0xd80, 0xd86, 0xd8b, 0xd90, 0xd93, 0xd9a, 0xd9a, 0xda4, 0xdab, 0xdab, 0xdb3, 0xdbe,
-			0xdc7, 0xdc7, 0xdc7, 0xdc7, 0xdd0, 0xdd0, 0xdd7, 0xddd, 0xde4, 0xdee, 0xe07, 0xe0d,
-			0xe16, 0xe1d, 0xe20, 0xe23, 0xe23, 0xe23, 0xe23, 0xe23, 0xe29, 0xe29, 0xe30, 0xe30,
-			0xe36, 0xe3b, 0xe40, 0xe40, 0xe46, 0xe46, 0xe4a, 0xe4d, 0xe55, 0xe55, 0xe55, 0xe55,
-			0xe5e, 0xe68, 0xe72, 0xe72, 0xe78, 0xe96, 0xe9a, 0xeb6, 0xeba, 0xed4, 0xed4, 0xeef,
-			0xeef, 0xeef, 0xeef, 0xeef, 0xeef, 0xeef, 0xeef, 0xeef, 0xeef, 0xef8, 0xf0d, 0xf22,
-			0xf2b, 0xf39,
-		},
+		srLatnLangStr,
+		srLatnLangIdx,
 	},
 	{ // sv
 		svLangStr,
 		svLangIdx,
 	},
 	{ // sv-FI
-		"fijikhmerkashmirikirgiziskalaobokmålpanjabipashtoteluguthaitigrinskamariokänt sp" +
-			"råk",
-		[]uint16{ // 555 entries
+		"kirgiziska",
+		[]uint16{ // 91 entries
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x4,
-			0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
-			0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
-			0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x9, 0x9,
-			0x9, 0x9, 0x11, 0x11, 0x11, 0x11, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b,
-			0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
-			0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x25, 0x25, 0x25, 0x25,
-			0x25, 0x25, 0x25, 0x25, 0x25, 0x2c, 0x2c, 0x2c, 0x32, 0x32, 0x32, 0x32,
-			0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
-			0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x38,
-			0x38, 0x3c, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-			0x49, 0x49, 0x56,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa,
 		},
 	},
 	{ // sw
 		swLangStr,
 		swLangIdx,
 	},
-	{ // swc
-		"KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigirikiKinge" +
-			"rezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindonesiaKiigboKiitaliano" +
-			"KijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaKinepaliKiholanziKipunjabiKipolan" +
-			"diKirenoKiromaniaKirusiKinyarwandaKisomaliKiswidiKiswahiliKitamilKitailandiKitur" +
-			"ukiKiukraniaKiurduKivietinamuKiyorubaKichinaKizuluKiswahili ya Kongo",
+	{ // sw-CD
+		"KiakanKibanglaKicheckiKingerezaKiswahili ya Kongo",
 		[]uint16{ // 523 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xe, 0xe, 0x15, 0x15, 0x15, 0x15,
-			0x15, 0x15, 0x1f, 0x29, 0x29, 0x29, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
-			0x31, 0x31, 0x31, 0x39, 0x39, 0x39, 0x39, 0x39, 0x43, 0x43, 0x43, 0x43,
-			0x4b, 0x54, 0x54, 0x5e, 0x5e, 0x5e, 0x65, 0x65, 0x65, 0x65, 0x65, 0x6e,
-			0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x75, 0x75, 0x7c, 0x7c, 0x7c,
-			0x7c, 0x85, 0x85, 0x85, 0x85, 0x90, 0x90, 0x96, 0x96, 0x96, 0x96, 0x96,
-			0xa0, 0xa0, 0xa8, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xb8, 0xb8,
-			0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
-			0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc8,
-			0xc8, 0xcf, 0xcf, 0xcf, 0xd7, 0xd7, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
-			0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe9, 0xe9, 0xf2, 0xf2, 0xf8, 0xf8, 0xf8,
-			0xf8, 0x101, 0x107, 0x112, 0x112, 0x112, 0x112, 0x112, 0x112, 0x112, 0x112, 0x112,
-			0x112, 0x112, 0x11a, 0x11a, 0x11a, 0x11a, 0x11a, 0x11a, 0x121, 0x12a, 0x131, 0x131,
-			0x131, 0x13b, 0x13b, 0x13b, 0x13b, 0x13b, 0x143, 0x143, 0x143, 0x143, 0x143, 0x14c,
-			0x152, 0x152, 0x152, 0x15d, 0x15d, 0x15d, 0x15d, 0x15d, 0x15d, 0x165, 0x165, 0x16c,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x172,
-			0x172, 0x172, 0x172, 0x172, 0x172, 0x172, 0x184,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
+			0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe,
+			0xe, 0xe, 0xe, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
+			0x16, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x31,
 		},
 	},
 	{ // ta
@@ -6864,7 +6341,7 @@
 			"ስንሃልኛስሎቨክኛስቁቪኛአልቤኒኛሰርቢኛሰሴቶሱዳንኛስዊድንኛሰዋሂሊኛታሚልኛተሉጉኛታይኛትግርኛናይ ቱርኪ ሰብዓይ (ቱርካዊ)ቱርከኛዩክረ" +
 			"ኒኛኡርዱኛኡዝበክኛቪትናምኛዞሳኛዪዲሽዙሉኛታጋሎገኛክሊንግኦንኛፖርቱጋልኛ (ናይ ብራዚል)ፖርቱጋልኛ (ናይ ፖርቱጋል)ሰርቦ- ክሮዊታን" +
 			"",
-		[]uint16{ // 602 entries
+		[]uint16{ // 603 entries
 			0x0, 0x0, 0x0, 0x0, 0x15, 0x1b, 0x2a, 0x2a, 0x36, 0x36, 0x36, 0x36,
 			0x4e, 0x4e, 0x5d, 0x6c, 0x6c, 0x6c, 0x7b, 0x7b, 0x87, 0x96, 0xa2, 0xa2,
 			0xa2, 0xa2, 0xa2, 0xab, 0xab, 0xab, 0xb4, 0xbd, 0xc9, 0xc9, 0xc9, 0xc9,
@@ -6914,8 +6391,8 @@
 			0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509,
 			0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509,
 			0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509,
-			0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x531, 0x55c,
-			0x55c, 0x576,
+			0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x509, 0x531,
+			0x55c, 0x55c, 0x576,
 		},
 	},
 	{ // to
@@ -7042,7 +6519,7 @@
 			"asipēnisi-mekisikoulea fakafalanisē-kānatalea fakafalanisē-suisilanilea fakahōla" +
 			"ni-pelesiumelea fakapotukali-palāsililea fakapotukali-ʻiulopelea fakamolitāviale" +
 			"a fakakuloisia-sēpialea fakasiaina-fakafaingofualea fakasiaina-tukufakaholo",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x10, 0x22, 0x35, 0x48, 0x57, 0x68, 0x79, 0x89, 0x99, 0xaa, 0xba,
 			0xce, 0xde, 0xee, 0xff, 0x10f, 0x11f, 0x130, 0x13e, 0x14e, 0x15d, 0x16d, 0x179,
 			0x187, 0x196, 0x1a3, 0x1af, 0x1c8, 0x1d6, 0x1e5, 0x1f8, 0x207, 0x215, 0x223, 0x230,
@@ -7090,10 +6567,10 @@
 			0x222e, 0x223c, 0x224a, 0x225c, 0x2268, 0x2277, 0x2286, 0x2297, 0x22ab, 0x22b9, 0x22ca, 0x22dd,
 			0x22f0, 0x22fe, 0x230c, 0x231c, 0x2330, 0x2345, 0x2355, 0x2364, 0x2374, 0x2384, 0x23a6, 0x23b9,
 			0x23cb, 0x23df, 0x23f6, 0x2401, 0x2411, 0x241f, 0x2437, 0x2450, 0x245e, 0x246b, 0x247a, 0x248c,
-			0x249d, 0x24ac, 0x24bc, 0x24ce, 0x24de, 0x24f0, 0x24fc, 0x2509, 0x2517, 0x252a, 0x253b, 0x254f,
-			0x2562, 0x2572, 0x2589, 0x2598, 0x25a6, 0x25be, 0x25ca, 0x25d7, 0x25e5, 0x25ff, 0x261a, 0x2638,
-			0x2657, 0x266f, 0x2681, 0x269b, 0x26be, 0x26d9, 0x26f4, 0x270d, 0x2728, 0x2741, 0x275b, 0x2774,
-			0x2786, 0x279d, 0x27b9, 0x27d4,
+			0x249d, 0x24ac, 0x24bc, 0x24bc, 0x24ce, 0x24de, 0x24f0, 0x24fc, 0x2509, 0x2517, 0x252a, 0x253b,
+			0x254f, 0x2562, 0x2572, 0x2589, 0x2598, 0x25a6, 0x25be, 0x25ca, 0x25d7, 0x25e5, 0x25ff, 0x261a,
+			0x2638, 0x2657, 0x266f, 0x2681, 0x269b, 0x26be, 0x26d9, 0x26f4, 0x270d, 0x2728, 0x2741, 0x275b,
+			0x2774, 0x2786, 0x279d, 0x27b9, 0x27d4,
 		},
 	},
 	{ // tr
@@ -7273,7 +6750,7 @@
 			"ىيە ئىنگلىزچەكانادا ئىنگلىزچەئەنگلىيە ئىنگلىزچەئامېرىكا ئىنگلىزچەلاتىن ئامېرىكا " +
 			"ئىسپانچەياۋروپا ئىسپانچەمېكسىكا ئىسپانچەكانادا فىرانسۇزچەشىۋىتسارىيە فىرانسۇزچەب" +
 			"ىرازىلىيە پورتۇگالچەياۋروپا پورتۇگالچەسېرب-كرودىيەچەئاددىي خەنچەمۇرەككەپ خەنچە",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0xe, 0x1e, 0x30, 0x44, 0x52, 0x64, 0x76, 0x84, 0x94, 0xa2, 0xb4,
 			0xc4, 0xd6, 0xe8, 0xf8, 0x10a, 0x11c, 0x12c, 0x13a, 0x14c, 0x15e, 0x170, 0x17e,
 			0x190, 0x19e, 0x1a8, 0x1b2, 0x1d3, 0x1e1, 0x1ed, 0x1fb, 0x20b, 0x21b, 0x229, 0x235,
@@ -7321,10 +6798,10 @@
 			0x1e6a, 0x1e7a, 0x1e88, 0x1e96, 0x1ea0, 0x1eb2, 0x1eb2, 0x1ec6, 0x1eda, 0x1eda, 0x1eec, 0x1f05,
 			0x1f1a, 0x1f1a, 0x1f2a, 0x1f2a, 0x1f3c, 0x1f3c, 0x1f4e, 0x1f5e, 0x1f7d, 0x1f89, 0x1fb7, 0x1fc9,
 			0x1fdf, 0x1ff3, 0x2000, 0x200a, 0x200a, 0x200a, 0x200a, 0x200a, 0x2016, 0x2016, 0x2024, 0x2034,
-			0x2046, 0x2054, 0x2060, 0x2060, 0x2070, 0x2070, 0x207c, 0x2086, 0x2090, 0x20a0, 0x20ae, 0x20ae,
-			0x20c0, 0x20d2, 0x20ef, 0x20ef, 0x20ff, 0x2133, 0x213f, 0x215b, 0x2167, 0x21a2, 0x21c7, 0x21ff,
-			0x2228, 0x2247, 0x226a, 0x228d, 0x22b9, 0x22d8, 0x22f7, 0x2318, 0x2343, 0x2343, 0x236c, 0x238f,
-			0x238f, 0x23aa, 0x23c1, 0x23dc,
+			0x2046, 0x2054, 0x2060, 0x2060, 0x2060, 0x2070, 0x2070, 0x207c, 0x2086, 0x2090, 0x20a0, 0x20ae,
+			0x20ae, 0x20c0, 0x20d2, 0x20ef, 0x20ef, 0x20ff, 0x2133, 0x213f, 0x215b, 0x2167, 0x21a2, 0x21c7,
+			0x21ff, 0x2228, 0x2247, 0x226a, 0x228d, 0x22b9, 0x22d8, 0x22f7, 0x2318, 0x2343, 0x2343, 0x236c,
+			0x238f, 0x238f, 0x23aa, 0x23c1, 0x23dc,
 		},
 	},
 	{ // uk
@@ -7336,62 +6813,59 @@
 		urLangIdx,
 	},
 	{ // ur-IN
-		"افریقیبامبراکتالانکارسیکائیاسٹونیفارويزمغربی فریسیائیمانویسشوان یاينكتيتتکیکویوک" +
-			"نڑکردکورنوالیلکسمبرگیلٹويایرومانویسانجوسوڈانیآئغورمابوتشیشیغاتیتازرمہلوئر صوربید" +
-			"يولابالائی صوربینگومباکومی-پرمیاکموہوکمڈدانگنکورواسکولٹ سامیوسطی اٹلس تمازغتونجو" +
-			"اسٹینڈرڈ مراقشی تمازیقیجدید معیاری عربیفیلنڈریآسان چینی",
-		[]uint16{ // 603 entries
+		"افریقیکارسیکائیکنڑکردلٹويایزرمہمعیاری مراقشی تمازیقیجدید معیاری عربیآسان چینی",
+		[]uint16{ // 604 entries
 			0x0, 0x0, 0x0, 0x0, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0x18, 0x18, 0x18, 0x18, 0x18, 0x24, 0x24,
-			0x24, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-			0x36, 0x36, 0x36, 0x36, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x4e, 0x4e,
-			0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73,
-			0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x80, 0x80, 0x80, 0x80,
-			0x80, 0x90, 0x90, 0x90, 0x90, 0x90, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0xa2,
-			0xa2, 0xa2, 0xa2, 0xa8, 0xa8, 0xb8, 0xb8, 0xb8, 0xc8, 0xc8, 0xc8, 0xc8,
-			0xc8, 0xc8, 0xc8, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
-			0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
-			0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
-			0xd4, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xec, 0xec, 0xec, 0xec,
-			0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
-			0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0x102, 0x102,
-			0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102,
-			0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102,
-			0x102, 0x102, 0x102, 0x102, 0x102, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110,
-			0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110,
-			0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110,
-			0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110,
-			0x110, 0x110, 0x110, 0x110, 0x110, 0x118, 0x118, 0x118, 0x118, 0x118, 0x118, 0x118,
-			0x118, 0x118, 0x118, 0x118, 0x118, 0x118, 0x118, 0x118, 0x118, 0x118, 0x120, 0x120,
-			0x120, 0x120, 0x120, 0x128, 0x128, 0x13b, 0x13b, 0x145, 0x145, 0x145, 0x145, 0x145,
-			0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145,
-			0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145,
-			0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145,
-			0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145,
-			0x145, 0x145, 0x15c, 0x15c, 0x15c, 0x15c, 0x15c, 0x15c, 0x15c, 0x15c, 0x15c, 0x15c,
-			0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168,
-			0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168,
-			0x168, 0x168, 0x168, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d,
-			0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d,
-			0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d,
-			0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d,
-			0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x187, 0x187,
-			0x187, 0x193, 0x193, 0x193, 0x193, 0x193, 0x193, 0x193, 0x193, 0x193, 0x193, 0x193,
-			0x193, 0x193, 0x193, 0x193, 0x193, 0x193, 0x193, 0x193, 0x193, 0x193, 0x193, 0x199,
-			0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199,
-			0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199,
-			0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199, 0x199,
-			0x199, 0x199, 0x19f, 0x19f, 0x19f, 0x19f, 0x19f, 0x19f, 0x19f, 0x19f, 0x19f, 0x19f,
-			0x19f, 0x19f, 0x19f, 0x19f, 0x19f, 0x19f, 0x19f, 0x19f, 0x19f, 0x19f, 0x19f, 0x19f,
-			0x19f, 0x19f, 0x19f, 0x19f, 0x19f, 0x19f, 0x19f, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2,
-			0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2,
-			0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2,
-			0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1b2, 0x1d0, 0x1d0,
-			0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1d8, 0x1d8,
-			0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8,
-			0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x204, 0x204, 0x204, 0x204, 0x222, 0x222, 0x222,
-			0x222, 0x222, 0x222, 0x222, 0x222, 0x222, 0x222, 0x222, 0x222, 0x230, 0x230, 0x230,
-			0x230, 0x230, 0x241,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
+			0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
+			0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
+			0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
+			0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x24,
+			0x24, 0x24, 0x24, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
+			0x2a, 0x2a, 0x2a, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
+			0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
+			0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
+			0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
+			0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
+			0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
+			0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
+			0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
+			0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
+			0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
+			0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
+			0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
+			0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
+			0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
+			0x36, 0x36, 0x36, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
+			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x84, 0x84,
+			0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
+			0x84, 0x84, 0x84, 0x95,
 		},
 	},
 	{ // uz
@@ -7431,7 +6905,7 @@
 			"аТонгочаТуркчаТатарчаУйғурчаУкраинчаУрдуЎзбекВьетнамчаВолофчаХосаЙорубаХитойчаЗу" +
 			"луФилипиноШвейцария немисчасиГавайчаНомаълум тилСтандарт Марокаш ТамазитТил тарк" +
 			"иби йўқЛотин Америка испанчасиФламандча",
-		[]uint16{ // 598 entries
+		[]uint16{ // 599 entries
 			0x0, 0x0, 0xe, 0xe, 0x20, 0x20, 0x2e, 0x2e, 0x3a, 0x48, 0x48, 0x48,
 			0x60, 0x60, 0x72, 0x82, 0x82, 0x82, 0x92, 0xa0, 0xa0, 0xb0, 0xc2, 0xc2,
 			0xc2, 0xc2, 0xc2, 0xcc, 0xcc, 0xcc, 0xd8, 0xe6, 0xf4, 0xf4, 0xf4, 0xf4,
@@ -7480,8 +6954,8 @@
 			0x684, 0x684, 0x684, 0x684, 0x684, 0x684, 0x684, 0x684, 0x684, 0x684, 0x684, 0x684,
 			0x684, 0x684, 0x69b, 0x69b, 0x69b, 0x69b, 0x69b, 0x69b, 0x69b, 0x69b, 0x69b, 0x69b,
 			0x69b, 0x69b, 0x69b, 0x69b, 0x69b, 0x69b, 0x69b, 0x69b, 0x69b, 0x69b, 0x69b, 0x69b,
-			0x69b, 0x69b, 0x69b, 0x69b, 0x69b, 0x6c9, 0x6c9, 0x6e5, 0x6e5, 0x6e5, 0x6e5, 0x6e5,
-			0x6e5, 0x6e5, 0x6e5, 0x6e5, 0x711, 0x711, 0x711, 0x711, 0x711, 0x723,
+			0x69b, 0x69b, 0x69b, 0x69b, 0x69b, 0x69b, 0x6c9, 0x6c9, 0x6e5, 0x6e5, 0x6e5, 0x6e5,
+			0x6e5, 0x6e5, 0x6e5, 0x6e5, 0x6e5, 0x711, 0x711, 0x711, 0x711, 0x711, 0x723,
 		},
 	},
 	{ // vai
@@ -7670,7 +7144,7 @@
 			"glišBritišes EnglišAmerikanišes EnglišLatiamerikanišes SchpanišIberišes Schpaniš" +
 			"Kanadišes WälšSchwizer WälšFlämišBrasilianišes PortugisišIberišes PortugisišVere" +
 			"ifačts ChinesišTraditionells Chinesiš",
-		[]uint16{ // 604 entries
+		[]uint16{ // 605 entries
 			0x0, 0x0, 0x9, 0x9, 0x12, 0x12, 0x1a, 0x1a, 0x21, 0x2b, 0x2b, 0x31,
 			0x3f, 0x3f, 0x4a, 0x53, 0x53, 0x53, 0x5c, 0x64, 0x64, 0x6b, 0x75, 0x75,
 			0x75, 0x75, 0x75, 0x7e, 0x7e, 0x7e, 0x86, 0x8d, 0x92, 0x9c, 0xa4, 0xa4,
@@ -7719,9 +7193,9 @@
 			0x435, 0x435, 0x435, 0x435, 0x435, 0x435, 0x435, 0x435, 0x435, 0x435, 0x435, 0x435,
 			0x435, 0x435, 0x448, 0x448, 0x448, 0x448, 0x448, 0x448, 0x448, 0x448, 0x448, 0x44e,
 			0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e,
-			0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x462, 0x474,
-			0x489, 0x49b, 0x4ac, 0x4c1, 0x4dc, 0x4ef, 0x4ef, 0x500, 0x50f, 0x517, 0x531, 0x546,
-			0x546, 0x546, 0x55b, 0x572,
+			0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x44e, 0x462,
+			0x474, 0x489, 0x49b, 0x4ac, 0x4c1, 0x4dc, 0x4ef, 0x4ef, 0x500, 0x50f, 0x517, 0x531,
+			0x546, 0x546, 0x546, 0x55b, 0x572,
 		},
 	},
 	{ // xog
@@ -7731,7 +7205,7 @@
 			"epaliOluholandiOlupunjabiOlupolandiOlupotugiiziOlulomaniyaOlulasaOlunarwandaOlus" +
 			"omaliyaOluswideniOlutamiiruOluttaayiOlutakeOluyukurayineOlu-uruduOluvyetinaamuOl" +
 			"uyorubaOlucayinaOluzzuluOlusoga",
-		[]uint16{ // 571 entries
+		[]uint16{ // 572 entries
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x14, 0x14, 0x1d, 0x1d, 0x1d, 0x1d,
 			0x1d, 0x1d, 0x28, 0x35, 0x35, 0x35, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
 			0x3f, 0x3f, 0x3f, 0x47, 0x47, 0x47, 0x47, 0x47, 0x4f, 0x4f, 0x4f, 0x4f,
@@ -7779,7 +7253,7 @@
 			0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8,
 			0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8,
 			0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8,
-			0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1af,
+			0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1af,
 		},
 	},
 	{ // yav
@@ -7788,7 +7262,7 @@
 			"manɛnunipálɛnilándɛnupunsapíɛ́nupolonɛ́ɛnupɔlitukɛ́ɛnulumɛ́ŋɛnulúsenuluándɛ́ɛnus" +
 			"omalíɛnusuetuanutámulenutáyɛnutúlukenukeleniɛ́ŋɛnulutúnufiɛtnamíɛŋnuyolúpasinúɛn" +
 			"usulúnuasue",
-		[]uint16{ // 574 entries
+		[]uint16{ // 575 entries
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf, 0xf, 0x16, 0x16, 0x16, 0x16,
 			0x16, 0x16, 0x1e, 0x27, 0x27, 0x27, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
 			0x34, 0x34, 0x34, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4a, 0x4a, 0x4a, 0x4a,
@@ -7836,7 +7310,7 @@
 			0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7,
 			0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7,
 			0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7,
-			0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1ad,
+			0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1a7, 0x1ad,
 		},
 	},
 	{ // yi
@@ -7857,7 +7331,7 @@
 			"יווישמיזאנאַפּאליטַנישנידערדײַטשאַלט פּערסישפּרייסישרוסינישסיציליאַנישסקאטסאַלט־" +
 			"אירישאונטער שלעזישslyסומערישקאמארישקאנגא־סוואַהיליששלעזישטיגרעאומבאַוואוסטע שפּר" +
 			"אַךמערב פֿלעמיששפּאַניש (ES)פֿלעמישסערבא־קראאַטיש",
-		[]uint16{ // 602 entries
+		[]uint16{ // 603 entries
 			0x0, 0xe, 0xe, 0xe, 0x24, 0x24, 0x36, 0x4a, 0x5a, 0x6a, 0x6a, 0x6a,
 			0x8a, 0x8a, 0x9e, 0xb0, 0xb0, 0xb0, 0xc2, 0xd0, 0xe0, 0xec, 0x102, 0x102,
 			0x102, 0x102, 0x102, 0x10e, 0x130, 0x130, 0x13e, 0x148, 0x152, 0x152, 0x152, 0x152,
@@ -7907,8 +7381,8 @@
 			0x9d0, 0x9d0, 0x9f9, 0x9f9, 0x9f9, 0x9f9, 0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa10,
 			0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa10,
 			0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa10,
-			0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa25, 0xa25, 0xa25, 0xa25, 0xa33, 0xa33, 0xa33,
-			0xa33, 0xa4f,
+			0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa10, 0xa25, 0xa25, 0xa25, 0xa25, 0xa33, 0xa33,
+			0xa33, 0xa33, 0xa4f,
 		},
 	},
 	{ // yo
@@ -7926,7 +7400,7 @@
 			"è SuwidiisiÈdè SwahiliÈdè TamiliÈdè TeluguÈdè TaiÈdè TigrinyaÈdè TurkmenÈdè Tọọk" +
 			"isiÈdè UkaniaÈdè UduÈdè UzbekÈdè JetinamuÈdè XhosaÈdè YiddishiÈdè YorùbáÈdè Mand" +
 			"ariÈdè ṢuluÈdè TagalogiÈdè KlingoniÈdè Serbo-Croatiani",
-		[]uint16{ // 602 entries
+		[]uint16{ // 603 entries
 			0x0, 0x0, 0x0, 0x0, 0xe, 0x19, 0x26, 0x26, 0x33, 0x3b, 0x3b, 0x3b,
 			0x4c, 0x4c, 0x5a, 0x67, 0x67, 0x67, 0x74, 0x74, 0x81, 0x8d, 0x99, 0x99,
 			0x99, 0x99, 0x99, 0xa4, 0xa4, 0xa4, 0xb0, 0xc5, 0xd9, 0xd9, 0xd9, 0xd9,
@@ -7977,29 +7451,76 @@
 			0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513,
 			0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513,
 			0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513, 0x513,
-			0x513, 0x528,
+			0x513, 0x513, 0x528,
 		},
 	},
 	{ // yo-BJ
-		"Èdè Ilɛ̀ DenmarkÈdè Ilɛ̀ GemaniÈdè Gɛ̀ɛ́sìÈdè Ilɛ̀ PolandiÈdè PɔtugiÈdè ̣RɔɔsiaÈ" +
-			"dè TɔɔkisiÈdè Shulu",
-		[]uint16{ // 181 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x27, 0x27, 0x27, 0x27,
-			0x27, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
-			0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
-			0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
-			0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
-			0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
-			0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
-			0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
-			0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x4d, 0x4d, 0x5a, 0x5a, 0x5a,
-			0x5a, 0x5a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a,
-			0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a,
-			0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79,
-			0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79,
-			0x84,
+		"Èdè AfrikaniÈdè AkaniÈdè AmarikiÈdè ArabikiTi AssamÈdè AzerbaijaniÈdè BelarusiÈd" +
+			"è BugariaÈdè BengaliÈdè BretoniÈdè BosniaÈdè CatalaÈdè seekiÈdè WelshiÈdè Ilɛ̀ D" +
+			"enmarkÈdè Ilɛ̀ GemaniÈdè GirikiÈdè Gɛ̀ɛ́sìÈdè EsperantoÈdè SipanisiÈdè EstoniaÈd" +
+			"è BaskiÈdè PasiaÈdè FinisiÈdè FaroesiÈdè FaranséÈdè FrisiaÈdè IrelandÈdè Gaelik " +
+			"ti Ilu ScotlandÈdè GaliciaÈdè GuaraniÈdè GujaratiÈdè HausaÈdè HeberuÈdè HindiÈdè" +
+			" KroatiaÈdè HungariaÈdè Ile ArmeniaÈdè pipoÈdè IndonasiaIru ÈdèÈdè IboÈdè Icelan" +
+			"dicÈdè ItalianiÈdè JapanisiÈdè JavanasiÈdè GeorgiaÈdè kameriÈdè KannadaÈdè Koria" +
+			"Èdè LatiniÈdè LithuaniaÈdè LatvianuÈdè MacedoniaÈdè marathiÈdè MalayaÈdè MaltaÈd" +
+			"è BumiisiÈdè NepaliÈdè DukiÈdè NorwayÈdè OccitaniÈdè PunjabiÈdè Ilɛ̀ PolandiÈdè " +
+			"PɔtugiÈdè RomaniaÈdè ̣RɔɔsiaÈdè RuwandaÈdè awon ara IndoÈdè SindhiÈdè SinhaleseÈ" +
+			"dè SlovakiÈdè SloveniaÈdè ara SomaliaÈdè AlbaniaÈdè SerbiaÈdè SesotoÈdè SudaniÈd" +
+			"è SuwidiisiÈdè SwahiliÈdè TamiliÈdè TeluguÈdè TaiÈdè TigrinyaÈdè TurkmenÈdè Tɔɔk" +
+			"isiÈdè UkaniaÈdè UduÈdè UzbekÈdè JetinamuÈdè XhosaÈdè YiddishiÈdè YorùbáÈdè Mand" +
+			"ariÈdè ShuluÈdè TagalogiÈdè KlingoniÈdè Serbo-Croatiani",
+		[]uint16{ // 603 entries
+			0x0, 0x0, 0x0, 0x0, 0xe, 0x19, 0x26, 0x26, 0x33, 0x3b, 0x3b, 0x3b,
+			0x4c, 0x4c, 0x5a, 0x67, 0x67, 0x67, 0x74, 0x74, 0x81, 0x8d, 0x99, 0x99,
+			0x99, 0x99, 0x99, 0xa4, 0xa4, 0xa4, 0xb0, 0xc4, 0xd7, 0xd7, 0xd7, 0xd7,
+			0xe3, 0xf5, 0x104, 0x112, 0x11f, 0x12a, 0x135, 0x135, 0x141, 0x141, 0x14e, 0x15c,
+			0x168, 0x175, 0x191, 0x19e, 0x1ab, 0x1b9, 0x1b9, 0x1c4, 0x1d0, 0x1db, 0x1db, 0x1e8,
+			0x1e8, 0x1f6, 0x207, 0x207, 0x211, 0x220, 0x229, 0x232, 0x232, 0x232, 0x232, 0x241,
+			0x24f, 0x24f, 0x25d, 0x26b, 0x278, 0x278, 0x278, 0x278, 0x278, 0x278, 0x284, 0x291,
+			0x29c, 0x29c, 0x29c, 0x29c, 0x29c, 0x29c, 0x29c, 0x2a8, 0x2a8, 0x2a8, 0x2a8, 0x2a8,
+			0x2a8, 0x2b7, 0x2b7, 0x2c5, 0x2c5, 0x2c5, 0x2c5, 0x2d4, 0x2d4, 0x2d4, 0x2e1, 0x2ed,
+			0x2f8, 0x305, 0x305, 0x305, 0x311, 0x311, 0x31b, 0x31b, 0x327, 0x327, 0x327, 0x327,
+			0x335, 0x335, 0x335, 0x335, 0x335, 0x342, 0x342, 0x356, 0x356, 0x363, 0x363, 0x363,
+			0x363, 0x370, 0x380, 0x38d, 0x3a0, 0x3a0, 0x3ac, 0x3ac, 0x3ac, 0x3bb, 0x3c8, 0x3d6,
+			0x3d6, 0x3d6, 0x3e7, 0x3f4, 0x400, 0x400, 0x40c, 0x418, 0x427, 0x434, 0x440, 0x44c,
+			0x44c, 0x455, 0x463, 0x470, 0x470, 0x470, 0x47f, 0x47f, 0x47f, 0x47f, 0x47f, 0x48b,
+			0x494, 0x49f, 0x49f, 0x4ad, 0x4ad, 0x4ad, 0x4ad, 0x4b8, 0x4c6, 0x4d4, 0x4d4, 0x4e1,
+			0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec,
+			0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec,
+			0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec,
+			0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec,
+			0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec,
+			0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec,
+			0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec,
+			0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec,
+			0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4ec, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa,
+			0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x4fa, 0x508, 0x508, 0x508, 0x508, 0x508,
+			0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508,
+			0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508,
+			0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508,
+			0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508,
+			0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508, 0x508,
+			0x508, 0x508, 0x51d,
 		},
 	},
 	{ // zgh
@@ -8008,7 +7529,7 @@
 			"ⴰⵊⴰⴱⴱⵓⵏⵉⵜⵜⴰⵊⴰⴱⴰⵏⵉⵜⵜⴰⵅⵎⵉⵔⵜⵜⴰⴽⵓⵔⵉⵜⵜⴰⵎⴰⵍⴰⵡⵉⵜⵜⴰⴱⵉⵔⵎⴰⵏⵉⵜⵜⴰⵏⵉⴱⴰⵍⵉⵜⵜⴰⵀⵓⵍⴰⵏⴷⵉⵜⵜⴰⴱⵏⵊⴰⴱⵉⵜⵜ" +
 			"ⴰⴱⵓⵍⵓⵏⵉⵜⵜⴰⴱⵕⵟⵇⵉⵣⵜⵜⴰⵔⵓⵎⴰⵏⵉⵜⵜⴰⵔⵓⵙⵉⵜⵜⴰⵔⵓⵡⴰⵏⴷⵉⵜⵜⴰⵙⵓⵎⴰⵍⵉⵜⵜⴰⵙⵡⵉⴷⵉⵜⵜⴰⵜⴰⵎⵉⵍⵜⵜⴰⵜⴰⵢⵍⴰⵏⴷⵉⵜⵜ" +
 			"ⴰⵜⵓⵔⴽⵉⵜⵜⵓⴽⵔⴰⵏⵉⵜⵜⵓⵔⴷⵓⵜⵜⴰⴱⵉⵜⵏⴰⵎⵉⵜⵜⴰⵢⵔⵓⴱⴰⵜⵜⴰⵛⵉⵏⵡⵉⵜⵜⴰⵣⵓⵍⵓⵜⵜⴰⵎⴰⵣⵉⵖⵜ",
-		[]uint16{ // 582 entries
+		[]uint16{ // 583 entries
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x2a, 0x2a, 0x3f, 0x3f, 0x3f, 0x3f,
 			0x3f, 0x3f, 0x5d, 0x78, 0x78, 0x78, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
 			0x93, 0x93, 0x93, 0xab, 0xab, 0xab, 0xab, 0xab, 0xc3, 0xc3, 0xc3, 0xc3,
@@ -8057,235 +7578,70 @@
 			0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462,
 			0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462,
 			0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x462,
-			0x462, 0x462, 0x462, 0x462, 0x462, 0x47a,
+			0x462, 0x462, 0x462, 0x462, 0x462, 0x462, 0x47a,
 		},
 	},
 	{ // zh
 		zhLangStr,
 		zhLangIdx,
 	},
-	{ // zh-Hans-HK
-		"奥罗莫文阿斯图里亚思文伊比利亚西班牙文伊比利亚葡萄牙文",
-		[]uint16{ // 600 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x51,
-		},
-	},
-	{ // zh-Hans-MO
-		"奥罗莫文阿斯图里亚思文曼达尔伊比利亚西班牙文伊比利亚葡萄牙文",
-		[]uint16{ // 600 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-			0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2a,
-			0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-			0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-			0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-			0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-			0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-			0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-			0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-			0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-			0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-			0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-			0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-			0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-			0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-			0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-			0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-			0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x5a,
-		},
-	},
-	{ // zh-Hans-SG
-		"奥罗莫文英国英文美国英文伊比利亚西班牙文伊比利亚葡萄牙文",
-		[]uint16{ // 600 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
-			0xc, 0xc, 0x18, 0x24, 0x24, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x54,
-		},
-	},
 	{ // zh-Hant
 		zhHantLangStr,
 		zhHantLangIdx,
 	},
 	{ // zh-Hant-HK
-		"布里多尼文世界語加里西亞文意大利文信德語蒙古語摩洛哥標準塔馬齊格特文瑞士德語巴西葡萄牙語",
-		[]uint16{ // 599 entries
+		"意大利文瑞士德語巴西葡萄牙語",
+		[]uint16{ // 600 entries
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
-			0x18, 0x18, 0x18, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
-			0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
-			0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
-			0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
-			0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
-			0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
-			0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
-			0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
-			0x3c, 0x3c, 0x3c, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x72,
-			0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x84,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x2a,
 		},
 	},
 	{ // zu
@@ -8320,7 +7676,7 @@
 	"geldige taalVaiVunjoSogaStandaard Marokkaanse TamazightGeen linguistiese inhoudM" +
 	"oderne Standaard ArabiesSwitserse hoog-DuitsVlaamsMoldawies"
 
-var afLangIdx = []uint16{ // 601 entries
+var afLangIdx = []uint16{ // 602 entries
 	0x0, 0x0, 0x8, 0x8, 0x11, 0x15, 0x1d, 0x1d, 0x24, 0x2c, 0x2c, 0x32,
 	0x3e, 0x44, 0x4f, 0x57, 0x57, 0x5e, 0x66, 0x70, 0x77, 0x7e, 0x87, 0x87,
 	0x87, 0x91, 0x91, 0x9a, 0x9a, 0x9a, 0xa1, 0xa6, 0xab, 0xb1, 0xb9, 0xbc,
@@ -8368,10 +7724,10 @@
 	0x6a1, 0x6a1, 0x6a6, 0x6a6, 0x6a6, 0x6a6, 0x6a6, 0x6ad, 0x6ad, 0x6ad, 0x6ad, 0x6ad,
 	0x6b6, 0x6b6, 0x6b6, 0x6b6, 0x6b6, 0x6b6, 0x6bf, 0x6bf, 0x6c6, 0x6c6, 0x6de, 0x6de,
 	0x6de, 0x6de, 0x6f9, 0x6fc, 0x6fc, 0x6fc, 0x6fc, 0x6fc, 0x6fc, 0x6fc, 0x701, 0x701,
-	0x701, 0x701, 0x701, 0x701, 0x701, 0x701, 0x705, 0x705, 0x705, 0x705, 0x705, 0x705,
-	0x705, 0x705, 0x705, 0x705, 0x705, 0x724, 0x724, 0x73c, 0x73c, 0x755, 0x755, 0x769,
-	0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x76f, 0x76f, 0x76f,
-	0x778,
+	0x701, 0x701, 0x701, 0x701, 0x701, 0x701, 0x701, 0x705, 0x705, 0x705, 0x705, 0x705,
+	0x705, 0x705, 0x705, 0x705, 0x705, 0x705, 0x724, 0x724, 0x73c, 0x73c, 0x755, 0x755,
+	0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x76f, 0x76f,
+	0x76f, 0x778,
 }
 
 const amLangStr = "" +
@@ -8393,7 +7749,7 @@
 	" እንግሊዝኛየካናዳ እንግሊዝኛየብሪቲሽ እንግሊዝኛየአሜሪካ እንግሊዝኛየላቲን አሜሪካ ስፓኒሽየአውሮፓ እስፓንኛየካናዳ ፈረንሳይኛየስ" +
 	"ዊዝ ፈረንሳይኛፍሌሚሽየብራዚል ፖርቹጋልኛየአውሮፓ ፖርቹጋልኛሞልዳቫዊናቀለል ያለ ቻይንኛባህላዊ ቻይንኛ"
 
-var amLangIdx = []uint16{ // 604 entries
+var amLangIdx = []uint16{ // 605 entries
 	0x0, 0xc, 0x1b, 0x1b, 0x2d, 0x39, 0x45, 0x45, 0x51, 0x60, 0x60, 0x6f,
 	0x84, 0x93, 0xa2, 0xb1, 0xc0, 0xcf, 0xde, 0xed, 0xfc, 0x10e, 0x11d, 0x11d,
 	0x11d, 0x12c, 0x12c, 0x135, 0x135, 0x135, 0x13e, 0x147, 0x153, 0x15c, 0x16e, 0x174,
@@ -8441,17 +7797,17 @@
 	0xc4b, 0xc4b, 0xc54, 0xc5d, 0xc5d, 0xc5d, 0xc5d, 0xc6f, 0xc6f, 0xc6f, 0xc6f, 0xc6f,
 	0xc7f, 0xc7f, 0xc7f, 0xc7f, 0xc7f, 0xc7f, 0xc8b, 0xc8b, 0xc97, 0xc97, 0xcc3, 0xcc3,
 	0xcc3, 0xcc3, 0xcdc, 0xce2, 0xce2, 0xce2, 0xce2, 0xce2, 0xce2, 0xce2, 0xceb, 0xceb,
-	0xceb, 0xceb, 0xceb, 0xceb, 0xceb, 0xceb, 0xcf1, 0xcf1, 0xcf1, 0xcf1, 0xcf1, 0xcf1,
-	0xcf1, 0xcf1, 0xcf1, 0xcf1, 0xcf1, 0xd1a, 0xd1a, 0xd40, 0xd40, 0xd66, 0xd85, 0xdae,
-	0xdd9, 0xdf8, 0xe1a, 0xe3c, 0xe62, 0xe81, 0xe81, 0xea0, 0xebf, 0xecb, 0xeed, 0xf0f,
-	0xf21, 0xf21, 0xf3e, 0xf57,
+	0xceb, 0xceb, 0xceb, 0xceb, 0xceb, 0xceb, 0xceb, 0xcf1, 0xcf1, 0xcf1, 0xcf1, 0xcf1,
+	0xcf1, 0xcf1, 0xcf1, 0xcf1, 0xcf1, 0xcf1, 0xd1a, 0xd1a, 0xd40, 0xd40, 0xd66, 0xd85,
+	0xdae, 0xdd9, 0xdf8, 0xe1a, 0xe3c, 0xe62, 0xe81, 0xe81, 0xea0, 0xebf, 0xecb, 0xeed,
+	0xf0f, 0xf21, 0xf21, 0xf3e, 0xf57,
 }
 
 const arLangStr = "" +
-	"الأفاريةالأبخازيةالأفستيةالأفريقانيةالأكانيةالأمهريةالأراجونيةالعربيةالأساميةالأ" +
-	"فاريكيةالأيماراالأذربيجانيةالباشكيريةالبيلوروسيةالبلغاريةالبيسلاميةالبامباراالبن" +
-	"غاليةالتبتيةالبريتونيةالبوسنيةالكتالانيةالشيشانيةالتشاموروالكورسيكيةالكرىالتشيكي" +
-	"ةسلافية كنسيةالتشفاشالولزيةالدانماركيةالألمانيةالمالديفيةالزونخايةالإيوياليوناني" +
+	"الأفاريةالأبخازيةالأفستيةالأفريقانيةالأكانيةالأمهريةالأراغونيةالعربيةالأساميةالأ" +
+	"واريةالأيماراالأذربيجانيةالباشكيريةالبيلاروسيةالبلغاريةالبيسلاميةالبامباراالبنغا" +
+	"ليةالتبتيةالبريتونيةالبوسنيةالكتالانيةالشيشانيةالتشاموروالكورسيكيةالكرىالتشيكيةس" +
+	"لافية كنسيةالتشوفاشيالولزيةالدانماركيةالألمانيةالمالديفيةالزونخايةالإيوياليوناني" +
 	"ةالإنجليزيةالإسبرانتوالإسبانيةالإستونيةلغة الباسكالفارسيةالفلةالفنلنديةالفيجيةال" +
 	"فارويزالفرنسيةالفريزيانالأيرلنديةالغيلية الأسكتلنديةالجاليكيةالجوارانيالغوجاراتي" +
 	"ةالمنكيةالهوساالعبريةالهنديةالهيري موتوالكرواتيةالهايتيةالهنغاريةالأرمينيةالهيري" +
@@ -8466,51 +7822,54 @@
 	"ومانشيةالرنديالرومانيةالروسيةالكينياروانداالسنسكريتيةالسردينيةالسنديةالسامي الشم" +
 	"اليالسانجوالسنهاليةالسلوفاكيةالسلوفانيةالساموائيةالشوناالصوماليةالألبانيةالصربية" +
 	"السواتيالسوتو الجنوبيةالسوندانيةالسويديةالسواحليةالتاميليةالتيلجوالطاجيكيةالتايل" +
-	"انديةالتيجرينياالتركمانيةالتسوانيةالتونغيةالتركيةالسونجاالتتاريةالتاهيتيةالأغوري" +
-	"ةالأوكرانيةالأرديةالأوزباكيةالفينداالفيتناميةالولونيةالولوفالخوسااليديشيةاليوروب" +
-	"يةالزهيونجالصينيةالزولوالأتشينيزيةالأكوليةالأدانجميةالأديجهالأفريهيليةالأغمالآين" +
-	"ويةالأكاديةالأليوتيةالألطائية الجنوبيةالإنجليزية القديمةالأنجيكاالآراميةالأروكان" +
-	"يةالأراباهوالأراواكيةآسوالأستريةالأواديةالبلوشيةاللغة الباليةالباسابامنالبيجاالب" +
-	"يمبابيناالبهوجبريةالبيكوليةالبينيةالسيكسيكيةالبراجيةالبودوأكوسالبرياتيةالبجينيزي" +
-	"ةالبلينيةالكادوالكاريبيةالأتسامالسيبيونوتشيغاالتشيبشاالتشاجاتايالتشكيزيةالماريال" +
-	"شينوك جارجونالشوكتوالشيباوايانالشيروكيالشايانالسريانية الكرديةالقبطيةالتركية الك" +
-	"ريمينيةالكاشبايانالداكوتاالدارجواتيتاالديلويرالسلافيةالدوجريبالدنكاالزارميةالدوج" +
-	"ريالصربية السفلىالديولاالهولندية الوسطىجولا فونياالدايلاالقرعانيةإمبوالإفيكالمصر" +
-	"ية القديمةالإكاجكالإمايتالإنجليزية الوسطىالإيوندوالفانجالفلبينيةالفونالفرنسية ال" +
-	"وسطىالفرنسية القديمةالفريزينية الشماليةالفريزينية الشرقيةالفريلايانالجاالغاغوزال" +
-	"جايوالجبياالجيزلغة أهل جبل طارقالألمانية العليا الوسطىالألمانية العليا القديمةال" +
-	"جنديالجورونتالوالقوطيةالجريبواليونانية القديمةالألمانية السويسريةالغيزيةغوتشناله" +
-	"يدالغة أهل الهاوايالهيليجينونالحثيةالهمونجيةالصربية العلياالهباالإيبانالإيلوكوال" +
-	"إنجوشيةاللوجباننغومباماتشيمالجيدو - الفارسيالجيدو - العربيالكارا-كالباكالقبيليةا" +
-	"لكاتشينالجوالكامباالكويالكاباردايانكانمبوماكوندهكابوفيرديانوالكوروالكازيةالخوتان" +
-	"يزكويرا تشينيكالينجينالكيمبندوكومي-بيرماياكالكونكانيةالكوسراينالكبيلالكاراتشاي-ب" +
-	"الكارالكريليةكرخانةشامبالابافياالكميكالكتينايالإسباعبريةلانجياللاهندااللامبااللي" +
-	"زجهايانيةلاكوتامنغولىاللوزياللبا-لؤلؤاللوسينواللوندااللواللشايلوياالمادريزالماجا" +
-	"المايثيليالماكاسارالماندينغالماسايماباالموكشاالماندارالميندميروالمورسيانيةالأيرل" +
-	"ندية الوسطىماخاوا-ميتوميتاالميكماكيونيةالمينانجكاباوالمانشوالمانيبريالموهوكالموس" +
-	"يمندنجلغات متعددةالكريكالميرانديزالمارواريالأرزيةاللغة النابوليةناماالألمانية ال" +
-	"سفلىالنيواريالنياسالنيويكواسيوالنوجايالنورس القديمأنكوالسوتو الشماليةالنويرالنوا" +
-	"رية التقليديةالنيامويزيالنيانكولالنيوروالنزيماالأوساجالتركية العثمانيةالبانجاسين" +
-	"انالبهلويةالبامبانجاالبابيامينتوالبالوانالفارسية القديمةالفينيقيةالبوهنبيايانالب" +
-	"روفانسية القديمةكيشيالراجاسثانيةالرابانيالراروتونجانيرومبوغجريالأرومانيانرواالسا" +
-	"نداويالساخيةالآرامية السوماريةسامبوروالساساكالسانتالينامبيسانغوالصقليةالأسكتلندي" +
-	"ةسيناالسيلكبكويرابورو سينيالأيرلندية القديمةتشلحيتالشانيةالعربية التشاديةالسيدام" +
-	"والسامي الجنوبياللول ساميالإيناري ساميالسكولت ساميالسونينكالسوجدينالسرانان تونجو" +
-	"السررالسوكوماالسوسوالسوماريةالقمريةالكونغو السواحليةسريانية تقليديةالسريانيةالتي" +
-	"منتيسوالتيرينوالتيتمالتيجرالتيفالتوكيلاوالكلينجونالتلينغيتيةالتاماشيكتونجا - نيا" +
-	"ساالتوك بيسينالتسيمشيانالتامبوكاالتوفالوتاساواقالتُركالأمازيغية وسط الأطلسالأدمر" +
-	"تاليجاريتيكالأمبندوالجذرالفايالفوتيكفونجوالوالاموالوارايالواشوالكالميكسوجاالياوا" +
-	"ليابيزيانجبنالكَنْتُونيةالزابوتيكرموز المعايير الأساسيةالزيناجاالتمازيغية المغرب" +
-	"ية القياسيةالزونيةبدون محتوى لغويزازاالعربية الرسمية الحديثةالألمانية النمساويةا" +
-	"لألمانية العليا السويسريةالإنجليزية الأستراليةالإنجليزية الكنديةالإنجليزية البري" +
-	"طانيةالإنجليزية الولايات المتحدةإسبانية أمريكا اللاتينيةالإسبانية الأوروبيةالفرن" +
-	"سية الكنديةالفرنسية السويسريةالفلمنكالبرتغالية البرازيليةالبرتغالية الأوروبيةالم" +
-	"ولدوفيةالصينية المبسطةالصينية التقليدية"
+	"انديةالتغرينيةالتركمانيةالتسوانيةالتونغيةالتركيةالسونجاالتتاريةالتاهيتيةالأغورية" +
+	"الأوكرانيةالأرديةالأوزبكيةالفينداالفيتناميةلغة الفولابوكالولونيةالولوفالخوسااليد" +
+	"يشيةاليوروبيةالزهيونجالصينيةالزولوالأتشينيزيةالأكوليةالأدانجميةالأديغةالأفريهيلي" +
+	"ةالأغمالآينويةالأكاديةالأليوتيةالألطائية الجنوبيةالإنجليزية القديمةالأنجيكاالآرا" +
+	"ميةالأروكانيةالأراباهوالأراواكيةالآسوالأستريةالأواديةالبلوشيةاللغة الباليةالباسا" +
+	"بامنلغة الغومالاالبيجاالبيمبابينالغة البافوتالبهوجبوريةالبيكوليةالبينيةلغة الكوم" +
+	"السيكسيكيةالبراجيةالبودوأكوسالبرياتيةالبجينيزيةلغة البولوالبلينيةلغة الميدومباال" +
+	"كادوالكاريبيةالكايوجيةالأتسامالسيبونيةتشيغاالتشيبشاالتشاجاتايالتشكيزيةالماريالشي" +
+	"نوك جارجونالشوكتوالشيباوايانالشيروكيالشايانالسورانية الكرديةالقبطيةلغة تتار القر" +
+	"مالكاشبايانالداكوتاالدارجواتيتاالديلويرالسلافيةالدوجريبالدنكاالزارميةالدوجريةالص" +
+	"ربية السفلىالديولاالهولندية الوسطىجولا فونياالدايلاالقرعانيةإمبوالإفيكالمصرية ال" +
+	"قديمةالإكاجكالإمايتالإنجليزية الوسطىالإيوندوالفانجالفلبينيةالفونالفرنسية الوسطىا" +
+	"لفرنسية القديمةالفريزينية الشماليةالفريزينية الشرقيةالفريلايانالجاالغاغوزالجايوا" +
+	"لجبياالجعزيةلغة أهل جبل طارقالألمانية العليا الوسطىالألمانية العليا القديمةالجند" +
+	"يالجورونتالوالقوطيةالجريبواليونانية القديمةالألمانية السويسريةالغيزيةغوتشنالهيدا" +
+	"لغة أهل الهاوايالهيليجينونالحثيةالهمونجيةالصربية العلياالهباالإيبانالإيبيبيويةال" +
+	"إيلوكوالإنجوشيةاللوجباننغومباالماتشاميةالفارسية اليهوديةالعربية اليهوديةالكارا-ك" +
+	"الباكالقبيليةالكاتشينالجوالكامباالكويالكاباردايانكانمبوالتايابيةماكوندهكابوفيردي" +
+	"انوالكوروالكازيةالخوتانيزكويرا تشينيكالينجينالكيمبندوكومي-بيرماياكالكونكانيةالكو" +
+	"سراينالكبيلالكاراتشاي-بالكارالكاريليةالكوروخشامبالالغة البافيالغة الكولونيانالقم" +
+	"وقيةالكتيناياللادينولانجياللاهندااللامباالليزجيةلاكوتامنغولىاللوزياللبا-لؤلؤاللو" +
+	"سينواللوندااللوالميزولغة اللوياالمادريزالماجاالمايثيليالماكاسارالماندينغالماسايم" +
+	"اباالموكشاالماندارالميندالميروالمورسيانيةالأيرلندية الوسطىماخاوا-ميتوميتاالميكما" +
+	"كيونيةالمينانجكاباوالمانشوالمانيبوريةالموهوكالموسيمندنجلغات متعددةالكريكالميراند" +
+	"يزالمارواريةالأرزيةاللغة النابوليةلغة الناماالألمانية السفلىالنواريةالنياسالنيوي" +
+	"كواسيولغة النجيمبونالنوجايالنورس القديمأنكوالسوتو الشماليةالنويرالنوارية التقليد" +
+	"يةالنيامويزيالنيانكولالنيوروالنزيماالأوساجالتركية العثمانيةالبانجاسينانالبهلويةا" +
+	"لبامبانجاالبابيامينتوالبالوانالفارسية القديمةالفينيقيةالبوهنبيايانالبروفانسية ال" +
+	"قديمةكيشيالراجاسثانيةالرابانيالراروتونجانيالرومبوغجريالأرومانيانالرواالسانداويال" +
+	"ساخيةالآرامية السامريةسامبوروالساساكالسانتالينامبيسانغوالصقليةالأسكتلنديةالسنيكا" +
+	"سيناالسيلكبكويرابورو سينيالأيرلندية القديمةتشلحيتالشانيةالعربية التشاديةالسيدامو" +
+	"السامي الجنوبياللول ساميالإيناري ساميالسكولت ساميالسونينكالسوجدينالسرانان تونجوا" +
+	"لسررلغة الساهوالسوكوماالسوسوالسوماريةالقمريةلغة الكونغو السواحليةسريانية تقليدية" +
+	"السريانيةالتيمنتيسوالتيرينوالتيتمالتغريةالتيفالتوكيلاوالكلينجونالتلينغيتيةالتاما" +
+	"شيكتونجا - نياساالتوك بيسينلغة التاروكوالتسيمشيانالتامبوكاالتوفالوتاساواقالتوفية" +
+	"الأمازيغية وسط الأطلسالأدمرتاليجاريتيكالأمبندوالجذرالفايالفوتيكالفونجوالوالسرالو" +
+	"لاياتاالوارايالواشوالكالميكالسوغاالياواليابيزيانجبنيمباالكَنْتُونيةالزابوتيكرموز" +
+	" المعايير الأساسيةالزيناجاالتمازيغية المغربية القياسيةالزونيةبدون محتوى لغويزازا" +
+	"العربية الرسمية الحديثةالألمانية النمساويةالألمانية العليا السويسريةالإنجليزية ا" +
+	"لأستراليةالإنجليزية الكنديةالإنجليزية البريطانيةالإنجليزية الولايات المتحدةالإسب" +
+	"انية أمريكا اللاتينيةالإسبانية الأوروبيةالإسبانية المكسيكيةالفرنسية الكنديةالفرن" +
+	"سية السويسريةالفلمنكيةالبرتغالية البرازيليةالبرتغالية الأوروبيةالمولدوفيةصربية-ك" +
+	"رواتيةالصينية المبسطةالصينية التقليدية"
 
-var arLangIdx = []uint16{ // 604 entries
-	0x0, 0x10, 0x22, 0x32, 0x48, 0x58, 0x68, 0x7c, 0x8a, 0x9a, 0xae, 0xbe,
-	0xd6, 0xea, 0x100, 0x112, 0x126, 0x138, 0x14a, 0x158, 0x16c, 0x17c, 0x190, 0x1a2,
-	0x1b4, 0x1c8, 0x1d2, 0x1e2, 0x1f9, 0x207, 0x215, 0x22b, 0x23d, 0x251, 0x263, 0x26f,
+var arLangIdx = []uint16{ // 605 entries
+	0x0, 0x10, 0x22, 0x32, 0x48, 0x58, 0x68, 0x7c, 0x8a, 0x9a, 0xaa, 0xba,
+	0xd2, 0xe6, 0xfc, 0x10e, 0x122, 0x134, 0x146, 0x154, 0x168, 0x178, 0x18c, 0x19e,
+	0x1b0, 0x1c4, 0x1ce, 0x1de, 0x1f5, 0x207, 0x215, 0x22b, 0x23d, 0x251, 0x263, 0x26f,
 	0x281, 0x295, 0x2a9, 0x2bb, 0x2cd, 0x2e0, 0x2f0, 0x2fa, 0x30c, 0x31a, 0x32a, 0x33a,
 	0x34c, 0x360, 0x385, 0x397, 0x3a9, 0x3bf, 0x3cd, 0x3d9, 0x3e7, 0x3f5, 0x40a, 0x41c,
 	0x42c, 0x43e, 0x450, 0x460, 0x47b, 0x491, 0x4a5, 0x4b3, 0x4ca, 0x4dc, 0x4e8, 0x4fe,
@@ -8521,44 +7880,44 @@
 	0x8a0, 0x8b2, 0x8c2, 0x8d2, 0x8e4, 0x8f6, 0x904, 0x916, 0x928, 0x93c, 0x94e, 0x962,
 	0x96e, 0x980, 0x98e, 0x9a8, 0x9be, 0x9d0, 0x9de, 0x9f9, 0xa07, 0xa19, 0xa2d, 0xa41,
 	0xa55, 0xa61, 0xa73, 0xa85, 0xa93, 0xaa1, 0xabe, 0xad2, 0xae2, 0xaf4, 0xb06, 0xb14,
-	0xb26, 0xb3c, 0xb50, 0xb64, 0xb76, 0xb86, 0xb94, 0xba2, 0xbb2, 0xbc4, 0xbd4, 0xbe8,
-	0xbf6, 0xc0a, 0xc18, 0xc2c, 0xc2c, 0xc3c, 0xc48, 0xc54, 0xc64, 0xc76, 0xc86, 0xc94,
-	0xca0, 0xcb6, 0xcc6, 0xcda, 0xce8, 0xce8, 0xcfe, 0xd08, 0xd18, 0xd28, 0xd28, 0xd3a,
-	0xd3a, 0xd5d, 0xd80, 0xd90, 0xda0, 0xdb4, 0xdb4, 0xdc6, 0xdc6, 0xdda, 0xdda, 0xdda,
-	0xde0, 0xde0, 0xdf0, 0xdf0, 0xe00, 0xe00, 0xe10, 0xe29, 0xe29, 0xe35, 0xe3d, 0xe3d,
-	0xe3d, 0xe49, 0xe57, 0xe57, 0xe5f, 0xe5f, 0xe5f, 0xe73, 0xe85, 0xe93, 0xe93, 0xe93,
-	0xea7, 0xea7, 0xea7, 0xeb7, 0xeb7, 0xec3, 0xecb, 0xedd, 0xef1, 0xef1, 0xf01, 0xf01,
-	0xf0d, 0xf1f, 0xf1f, 0xf2d, 0xf3f, 0xf49, 0xf59, 0xf6d, 0xf7f, 0xf8b, 0xfa6, 0xfb4,
-	0xfca, 0xfda, 0xfe8, 0x1009, 0x1017, 0x1017, 0x103a, 0x104e, 0x105e, 0x106e, 0x1076, 0x1086,
-	0x1096, 0x10a6, 0x10b2, 0x10c2, 0x10d0, 0x10eb, 0x10eb, 0x10f9, 0x1118, 0x112b, 0x1139, 0x114b,
-	0x1153, 0x115f, 0x115f, 0x117c, 0x118a, 0x1198, 0x11b9, 0x11b9, 0x11c9, 0x11c9, 0x11d5, 0x11e7,
-	0x11e7, 0x11f1, 0x11f1, 0x120e, 0x122d, 0x122d, 0x1252, 0x1275, 0x1289, 0x1291, 0x129f, 0x129f,
-	0x12ab, 0x12b7, 0x12b7, 0x12c1, 0x12de, 0x12de, 0x130a, 0x1338, 0x1338, 0x1344, 0x135a, 0x1368,
-	0x1376, 0x1397, 0x13bc, 0x13bc, 0x13bc, 0x13ca, 0x13d4, 0x13e0, 0x13e0, 0x13fc, 0x13fc, 0x1412,
-	0x141e, 0x1430, 0x144b, 0x144b, 0x1455, 0x1463, 0x1463, 0x1473, 0x1485, 0x1485, 0x1485, 0x1495,
-	0x14a1, 0x14ad, 0x14ca, 0x14e5, 0x14e5, 0x14fe, 0x150e, 0x151e, 0x1526, 0x1534, 0x153e, 0x1556,
-	0x1562, 0x1562, 0x1570, 0x1588, 0x1588, 0x1594, 0x1594, 0x15a2, 0x15b4, 0x15c9, 0x15c9, 0x15c9,
-	0x15c9, 0x15d9, 0x15eb, 0x1604, 0x1618, 0x162a, 0x1636, 0x1657, 0x1657, 0x1657, 0x1667, 0x1673,
-	0x1681, 0x168b, 0x168b, 0x1697, 0x16a7, 0x16bd, 0x16c7, 0x16d7, 0x16e5, 0x16ff, 0x16ff, 0x16ff,
-	0x16ff, 0x170b, 0x170b, 0x1717, 0x1723, 0x1723, 0x1736, 0x1746, 0x1754, 0x175c, 0x1768, 0x1770,
-	0x1770, 0x1770, 0x1780, 0x1780, 0x178c, 0x179e, 0x17b0, 0x17c2, 0x17d0, 0x17d8, 0x17e6, 0x17f6,
-	0x1802, 0x180a, 0x1820, 0x1841, 0x1856, 0x185e, 0x1878, 0x1892, 0x18a0, 0x18b2, 0x18c0, 0x18cc,
-	0x18cc, 0x18d6, 0x18eb, 0x18f7, 0x190b, 0x191d, 0x191d, 0x191d, 0x192b, 0x192b, 0x192b, 0x1948,
-	0x1950, 0x196f, 0x197f, 0x198b, 0x1997, 0x1997, 0x19a3, 0x19a3, 0x19b1, 0x19ca, 0x19ca, 0x19d2,
-	0x19ef, 0x19fb, 0x1a1e, 0x1a32, 0x1a44, 0x1a52, 0x1a60, 0x1a6e, 0x1a8f, 0x1aa7, 0x1ab7, 0x1acb,
-	0x1ae3, 0x1af3, 0x1af3, 0x1af3, 0x1af3, 0x1b12, 0x1b12, 0x1b24, 0x1b24, 0x1b24, 0x1b3c, 0x1b3c,
-	0x1b61, 0x1b69, 0x1b69, 0x1b81, 0x1b91, 0x1bab, 0x1bab, 0x1bab, 0x1bb5, 0x1bbd, 0x1bbd, 0x1bbd,
-	0x1bbd, 0x1bd3, 0x1bd9, 0x1beb, 0x1bf9, 0x1c1c, 0x1c2a, 0x1c38, 0x1c4a, 0x1c4a, 0x1c54, 0x1c5e,
-	0x1c6c, 0x1c82, 0x1c82, 0x1c82, 0x1c8a, 0x1c8a, 0x1c98, 0x1cb3, 0x1cd6, 0x1cd6, 0x1ce2, 0x1cf0,
-	0x1d0f, 0x1d1f, 0x1d1f, 0x1d1f, 0x1d3a, 0x1d4d, 0x1d66, 0x1d7d, 0x1d8d, 0x1d9d, 0x1db8, 0x1dc2,
-	0x1dc2, 0x1dc2, 0x1dd2, 0x1dde, 0x1df0, 0x1dfe, 0x1e1f, 0x1e3c, 0x1e4e, 0x1e4e, 0x1e4e, 0x1e5a,
-	0x1e62, 0x1e72, 0x1e7e, 0x1e8a, 0x1e94, 0x1ea6, 0x1ea6, 0x1eb8, 0x1ece, 0x1ece, 0x1ee0, 0x1ef7,
-	0x1f0c, 0x1f0c, 0x1f0c, 0x1f0c, 0x1f20, 0x1f20, 0x1f32, 0x1f42, 0x1f50, 0x1f5c, 0x1f84, 0x1f92,
-	0x1fa6, 0x1fb6, 0x1fc0, 0x1fca, 0x1fca, 0x1fca, 0x1fca, 0x1fca, 0x1fd8, 0x1fd8, 0x1fe2, 0x1fe2,
-	0x1ff2, 0x2000, 0x200c, 0x200c, 0x201c, 0x201c, 0x2024, 0x202e, 0x203c, 0x2048, 0x2048, 0x2048,
-	0x2060, 0x2072, 0x209c, 0x209c, 0x20ac, 0x20e2, 0x20f0, 0x210c, 0x2114, 0x2140, 0x2165, 0x2197,
-	0x21c0, 0x21e3, 0x220c, 0x2240, 0x226e, 0x2293, 0x2293, 0x22b2, 0x22d5, 0x22e3, 0x230c, 0x2333,
-	0x2347, 0x2347, 0x2364, 0x2385,
+	0xb26, 0xb3c, 0xb4e, 0xb62, 0xb74, 0xb84, 0xb92, 0xba0, 0xbb0, 0xbc2, 0xbd2, 0xbe6,
+	0xbf4, 0xc06, 0xc14, 0xc28, 0xc41, 0xc51, 0xc5d, 0xc69, 0xc79, 0xc8b, 0xc9b, 0xca9,
+	0xcb5, 0xccb, 0xcdb, 0xcef, 0xcfd, 0xcfd, 0xd13, 0xd1d, 0xd2d, 0xd3d, 0xd3d, 0xd4f,
+	0xd4f, 0xd72, 0xd95, 0xda5, 0xdb5, 0xdc9, 0xdc9, 0xddb, 0xddb, 0xdef, 0xdef, 0xdef,
+	0xdf9, 0xdf9, 0xe09, 0xe09, 0xe19, 0xe19, 0xe29, 0xe42, 0xe42, 0xe4e, 0xe56, 0xe56,
+	0xe6d, 0xe79, 0xe87, 0xe87, 0xe8f, 0xea4, 0xea4, 0xeba, 0xecc, 0xeda, 0xeda, 0xeeb,
+	0xeff, 0xeff, 0xeff, 0xf0f, 0xf0f, 0xf1b, 0xf23, 0xf35, 0xf49, 0xf5c, 0xf6c, 0xf85,
+	0xf91, 0xfa3, 0xfb5, 0xfc3, 0xfd5, 0xfdf, 0xfef, 0x1003, 0x1015, 0x1021, 0x103c, 0x104a,
+	0x1060, 0x1070, 0x107e, 0x109f, 0x10ad, 0x10ad, 0x10c7, 0x10db, 0x10eb, 0x10fb, 0x1103, 0x1113,
+	0x1123, 0x1133, 0x113f, 0x114f, 0x115f, 0x117a, 0x117a, 0x1188, 0x11a7, 0x11ba, 0x11c8, 0x11da,
+	0x11e2, 0x11ee, 0x11ee, 0x120b, 0x1219, 0x1227, 0x1248, 0x1248, 0x1258, 0x1258, 0x1264, 0x1276,
+	0x1276, 0x1280, 0x1280, 0x129d, 0x12bc, 0x12bc, 0x12e1, 0x1304, 0x1318, 0x1320, 0x132e, 0x132e,
+	0x133a, 0x1346, 0x1346, 0x1354, 0x1371, 0x1371, 0x139d, 0x13cb, 0x13cb, 0x13d7, 0x13ed, 0x13fb,
+	0x1409, 0x142a, 0x144f, 0x144f, 0x144f, 0x145d, 0x1467, 0x1473, 0x1473, 0x148f, 0x148f, 0x14a5,
+	0x14b1, 0x14c3, 0x14de, 0x14de, 0x14e8, 0x14f6, 0x150c, 0x151c, 0x152e, 0x152e, 0x152e, 0x153e,
+	0x154a, 0x155e, 0x157f, 0x159e, 0x159e, 0x15b7, 0x15c7, 0x15d7, 0x15df, 0x15ed, 0x15f7, 0x160f,
+	0x161b, 0x162d, 0x163b, 0x1653, 0x1653, 0x165f, 0x165f, 0x166d, 0x167f, 0x1694, 0x1694, 0x1694,
+	0x1694, 0x16a4, 0x16b6, 0x16cf, 0x16e3, 0x16f5, 0x1701, 0x1722, 0x1722, 0x1722, 0x1734, 0x1742,
+	0x1750, 0x1765, 0x1780, 0x1790, 0x17a0, 0x17b0, 0x17ba, 0x17ca, 0x17d8, 0x17e8, 0x17e8, 0x17e8,
+	0x17e8, 0x17f4, 0x17f4, 0x1800, 0x180c, 0x180c, 0x181f, 0x182f, 0x183d, 0x1845, 0x1851, 0x1864,
+	0x1864, 0x1864, 0x1874, 0x1874, 0x1880, 0x1892, 0x18a4, 0x18b6, 0x18c4, 0x18cc, 0x18da, 0x18ea,
+	0x18f6, 0x1902, 0x1918, 0x1939, 0x194e, 0x1956, 0x1970, 0x198a, 0x1998, 0x19ae, 0x19bc, 0x19c8,
+	0x19c8, 0x19d2, 0x19e7, 0x19f3, 0x1a07, 0x1a1b, 0x1a1b, 0x1a1b, 0x1a29, 0x1a29, 0x1a29, 0x1a46,
+	0x1a59, 0x1a78, 0x1a88, 0x1a94, 0x1aa0, 0x1aa0, 0x1aac, 0x1ac5, 0x1ad3, 0x1aec, 0x1aec, 0x1af4,
+	0x1b11, 0x1b1d, 0x1b40, 0x1b54, 0x1b66, 0x1b74, 0x1b82, 0x1b90, 0x1bb1, 0x1bc9, 0x1bd9, 0x1bed,
+	0x1c05, 0x1c15, 0x1c15, 0x1c15, 0x1c15, 0x1c34, 0x1c34, 0x1c46, 0x1c46, 0x1c46, 0x1c5e, 0x1c5e,
+	0x1c83, 0x1c8b, 0x1c8b, 0x1ca3, 0x1cb3, 0x1ccd, 0x1ccd, 0x1ccd, 0x1cdb, 0x1ce3, 0x1ce3, 0x1ce3,
+	0x1ce3, 0x1cf9, 0x1d03, 0x1d15, 0x1d23, 0x1d44, 0x1d52, 0x1d60, 0x1d72, 0x1d72, 0x1d7c, 0x1d86,
+	0x1d94, 0x1daa, 0x1daa, 0x1db8, 0x1dc0, 0x1dc0, 0x1dce, 0x1de9, 0x1e0c, 0x1e0c, 0x1e18, 0x1e26,
+	0x1e45, 0x1e55, 0x1e55, 0x1e55, 0x1e70, 0x1e83, 0x1e9c, 0x1eb3, 0x1ec3, 0x1ed3, 0x1eee, 0x1ef8,
+	0x1f0b, 0x1f0b, 0x1f1b, 0x1f27, 0x1f39, 0x1f47, 0x1f6f, 0x1f8c, 0x1f9e, 0x1f9e, 0x1f9e, 0x1faa,
+	0x1fb2, 0x1fc2, 0x1fce, 0x1fdc, 0x1fe6, 0x1ff8, 0x1ff8, 0x200a, 0x2020, 0x2020, 0x2032, 0x2049,
+	0x205e, 0x205e, 0x2075, 0x2075, 0x2089, 0x2089, 0x209b, 0x20ab, 0x20b9, 0x20c7, 0x20ef, 0x20fd,
+	0x2111, 0x2121, 0x212b, 0x2135, 0x2135, 0x2135, 0x2135, 0x2135, 0x2143, 0x2143, 0x2151, 0x215f,
+	0x2171, 0x217f, 0x218b, 0x218b, 0x218b, 0x219b, 0x219b, 0x21a7, 0x21b1, 0x21bf, 0x21cb, 0x21d3,
+	0x21d3, 0x21eb, 0x21fd, 0x2227, 0x2227, 0x2237, 0x226d, 0x227b, 0x2297, 0x229f, 0x22cb, 0x22f0,
+	0x2322, 0x234b, 0x236e, 0x2397, 0x23cb, 0x23fd, 0x2422, 0x2447, 0x2466, 0x2489, 0x249b, 0x24c4,
+	0x24eb, 0x24ff, 0x2518, 0x2535, 0x2556,
 }
 
 const azLangStr = "" +
@@ -8620,7 +7979,7 @@
 	"ndBraziliya portuqalcasıPortuqaliya portuqalcasımoldavserb-xorvatcasadələşmiş çi" +
 	"nənənəvi çin"
 
-var azLangIdx = []uint16{ // 604 entries
+var azLangIdx = []uint16{ // 605 entries
 	0x0, 0x6, 0xb, 0x14, 0x1d, 0x23, 0x28, 0x30, 0x36, 0x3b, 0x44, 0x4b,
 	0x56, 0x5f, 0x66, 0x6c, 0x78, 0x7f, 0x85, 0x8a, 0x92, 0x99, 0xa0, 0xac,
 	0xb8, 0xbf, 0xc7, 0xcb, 0xdb, 0xe7, 0xeb, 0xf4, 0xf9, 0x103, 0x109, 0x10c,
@@ -8668,10 +8027,10 @@
 	0xf36, 0xf41, 0xf4b, 0xf55, 0xf5d, 0xf69, 0xf69, 0xf70, 0xf7c, 0xf7c, 0xf89, 0xf9a,
 	0xfa8, 0xfa8, 0xfa8, 0xfa8, 0xfb5, 0xfb5, 0xfc1, 0xfcc, 0xfd3, 0xfe0, 0xffb, 0x1006,
 	0x1013, 0x101f, 0x1027, 0x102a, 0x102a, 0x102a, 0x102a, 0x102a, 0x1034, 0x1034, 0x1039, 0x1039,
-	0x1044, 0x104e, 0x1058, 0x1058, 0x1061, 0x1061, 0x1065, 0x106d, 0x1077, 0x1077, 0x1077, 0x1077,
-	0x1077, 0x1083, 0x1092, 0x1092, 0x109d, 0x10a3, 0x10ac, 0x10bf, 0x10c8, 0x10e1, 0x10f4, 0x1112,
-	0x1129, 0x113c, 0x1152, 0x1166, 0x1182, 0x1196, 0x11a8, 0x11bc, 0x11d4, 0x11db, 0x11f2, 0x120b,
-	0x1211, 0x121e, 0x1231, 0x1240,
+	0x1044, 0x104e, 0x1058, 0x1058, 0x1058, 0x1061, 0x1061, 0x1065, 0x106d, 0x1077, 0x1077, 0x1077,
+	0x1077, 0x1077, 0x1083, 0x1092, 0x1092, 0x109d, 0x10a3, 0x10ac, 0x10bf, 0x10c8, 0x10e1, 0x10f4,
+	0x1112, 0x1129, 0x113c, 0x1152, 0x1166, 0x1182, 0x1196, 0x11a8, 0x11bc, 0x11d4, 0x11db, 0x11f2,
+	0x120b, 0x1211, 0x121e, 0x1231, 0x1240,
 }
 
 const bgLangStr = "" +
@@ -8726,7 +8085,7 @@
 	"ийскимексикански испанскиканадски френскишвейцарски френскифламандскимолдовскисъ" +
 	"рбохърватскиопростен китайскитрадиционен китайски"
 
-var bgLangIdx = []uint16{ // 604 entries
+var bgLangIdx = []uint16{ // 605 entries
 	0x0, 0x8, 0x16, 0x26, 0x36, 0x3e, 0x4e, 0x60, 0x6e, 0x7c, 0x8a, 0x96,
 	0xb2, 0xc4, 0xd6, 0xe8, 0xf6, 0x104, 0x116, 0x126, 0x138, 0x14a, 0x15e, 0x16e,
 	0x17a, 0x190, 0x198, 0x1a2, 0x1c5, 0x1d3, 0x1df, 0x1eb, 0x1f7, 0x203, 0x20f, 0x215,
@@ -8774,116 +8133,116 @@
 	0x1a41, 0x1a4d, 0x1a57, 0x1a61, 0x1a67, 0x1a7b, 0x1a7b, 0x1a89, 0x1a97, 0x1a97, 0x1aa5, 0x1abc,
 	0x1acd, 0x1acd, 0x1acd, 0x1acd, 0x1ae1, 0x1ae1, 0x1aef, 0x1b05, 0x1b13, 0x1b23, 0x1b54, 0x1b66,
 	0x1b78, 0x1b86, 0x1b8e, 0x1b94, 0x1b94, 0x1b94, 0x1b94, 0x1b94, 0x1b9e, 0x1b9e, 0x1baa, 0x1baa,
-	0x1bb6, 0x1bc0, 0x1bc8, 0x1bc8, 0x1bd4, 0x1bd4, 0x1bdc, 0x1be0, 0x1bea, 0x1bea, 0x1bea, 0x1bea,
-	0x1bfc, 0x1c0a, 0x1c21, 0x1c21, 0x1c2d, 0x1c67, 0x1c6f, 0x1ca3, 0x1cab, 0x1ce3, 0x1d04, 0x1d35,
-	0x1d60, 0x1d83, 0x1da8, 0x1dd1, 0x1dd1, 0x1dd1, 0x1df8, 0x1e17, 0x1e3a, 0x1e4e, 0x1e4e, 0x1e4e,
-	0x1e60, 0x1e7c, 0x1e9d, 0x1ec4,
+	0x1bb6, 0x1bc0, 0x1bc8, 0x1bc8, 0x1bc8, 0x1bd4, 0x1bd4, 0x1bdc, 0x1be0, 0x1bea, 0x1bea, 0x1bea,
+	0x1bea, 0x1bfc, 0x1c0a, 0x1c21, 0x1c21, 0x1c2d, 0x1c67, 0x1c6f, 0x1ca3, 0x1cab, 0x1ce3, 0x1d04,
+	0x1d35, 0x1d60, 0x1d83, 0x1da8, 0x1dd1, 0x1dd1, 0x1dd1, 0x1df8, 0x1e17, 0x1e3a, 0x1e4e, 0x1e4e,
+	0x1e4e, 0x1e60, 0x1e7c, 0x1e9d, 0x1ec4,
 }
 
 const bnLangStr = "" +
-	"আফারআব্খাজিয়আবেস্তীয়আফ্রিকান্সআকানআমহারিকআর্গোনিজআরবীআসামিআভেরিকআয়মারাআজারবাই" +
-	"জানীবাশকিরবেলারুশিয়বুলগেরিয়বিসলামাবামবারাবাংলাতিব্বতিব্রেটনবসনীয়ানকাতালানচেচে" +
-	"নচামেরোকর্সিকানক্রিচেকচার্চ স্লাভিওচুবাসওয়েলশডেনিশজার্মানদিবেহিজোঙ্গাএয়েগ্রিকই" +
-	"ংরেজিএস্পেরান্তোস্প্যানিশএস্তোনীয়বাস্কফার্সিফুলাহ্ফিনিশফিজিওফেরাউনিফরাসিপশ্চিম " +
-	"ফ্রিসিয়আইরিশস্কটস-গ্যেলিকগ্যালিশিয়গুয়ারানিগুজরাটিম্যাঙ্কসহাউসাহিব্রুহিন্দিহির" +
-	"ি মোতুক্রোয়েশীয়হাইতিয়ানহাঙ্গেরীয়আর্মেনিয়হেরেরোইন্টারলিঙ্গুয়াইন্দোনেশীয়ইন্" +
-	"টারলিঙ্গইগ্‌বোসিচুয়ান য়িইনুপিয়াকইডোআইসল্যান্ডীয়ইতালীয়ইনুক্টিটুটজাপানিজাভানি" +
-	"জর্জিয়ানকঙ্গোকিকু্ইয়ুকোয়ানিয়ামাকাজাখক্যালাল্লিসুটখমেরকান্নাড়ীকোরিয়ানকানুরি" +
-	"কাশ্মীরীকুর্দিকোমিকর্ণিশকির্গিজলাটিনলুক্সেমবার্গীয়গান্ডালিম্বুর্গিশলিঙ্গালালাওল" +
-	"িথুয়েনীয়লুবা-কাটাঙ্গালাত্‌ভীয়মালাগাসিমার্শালিজমাওরিম্যাসিডোনীয়মালায়ালামমঙ্গ" +
-	"োলিয়মারাঠিমালয়মল্টিয়বর্মিনাউরুউত্তর এন্দেবিলিনেপালীএন্দোঙ্গাডাচনরওয়েজীয়ান ন" +
-	"িনর্স্কনরওয়েজিয়ান বোকমালদক্ষিণ এনডেবেলেনাভাজোনায়াঞ্জাঅক্সিটানওজিবওয়াঅরোমোওড়" +
-	"িয়াওসেটিকপাঞ্জাবীপালিপোলিশপাশ্তুপর্তুগীজকেচুয়ারোমান্সরুন্দিরোমানীয়রুশকিনয়ারো" +
-	"য়ান্ডাসংষ্কৃতসার্ডিনিয়ানসিন্ধিউত্তরাঞ্চলীয় সামিসাঙ্গোসিংহলীস্লোভাকস্লোভেনীয়স" +
-	"ামোয়ানশোনাসোমালীআলবেনীয়সার্বীয়সোয়াতিদক্ষিন সোথোসুদানীসুইডিশসোয়াহিলিতামিলতেল" +
-	"েগুতাজিকথাইতিগরিনিয়াতুর্কমেনীসোয়ানাটোঙ্গানতুর্কীসঙ্গাতাতারতাহিতিয়ানউইঘুরইউক্র" +
-	"েনীয়উর্দুউজবেকীয়ভেন্ডাভিয়েতনামীভোলাপুকওয়ালুনউওলোফজোসায়িদ্দিশইওরুবাঝু্য়াঙচী" +
-	"নাজুলুআচিনিয়আকোলীঅদাগ্মেআদেগেআফ্রিহিলিএঘেমআইনুআক্কাদিয়ানআলেউতদক্ষিন আলতাইপ্রাচ" +
-	"ীন ইংরেজীআঙ্গীকাআরামাইকমাপুচিআরাপাহোআরাওয়াকআসুআস্তুরিয়আওয়াধিবেলুচীবালিনীয়বাস" +
-	"াবেজাবেম্বাবেনাভোজপুরিবিকোলবিনিসিকসিকাব্রাজবড়োবুরিয়াতবুগিনিব্লিনক্যাডোক্যারিবআ" +
-	"ত্সামচেবুয়ানোচিগাচিবচাচাগাতাইচুকিমারিচিনুক পরিভাষাচক্টোচিপেওয়ানচেরোকীশাইয়েনসো" +
-	"রানি কুর্দিশকপটিকক্রিমিয়ান তুর্কিকাশুবিয়ানডাকোটাদার্গওয়াতাইতাডেলাওয়েরস্ল্যাভ" +
-	"দোগ্রীবডিংকাজার্মাদোগরিনিম্নতর সোর্বিয়ানদুয়ালামধ্য ডাচজলা-ফনীডিউলাএম্বুএফিকপ্র" +
-	"াচীন মিশরীয়ইকাজুকএলামাইটমধ্য ইংরেজিইওন্ডোফ্যাঙ্গফিলিপিনোফনমধ্য ফরাসিপ্রাচীন ফরা" +
-	"সিউত্তরাঞ্চলীয় ফ্রিসিয়ানপূর্ব ফ্রিসিয়ফ্রিউলিয়ানগাগাগাউজগায়োবায়াগীজগিলবার্ট" +
-	"িজমধ্য-উচ্চ জার্মানিপ্রাচীন উচ্চ জার্মানিগোন্ডিগোরোন্তালোগথিকগ্রেবোপ্রাচীন গ্রীক" +
-	"সুইস জার্মানগুসীগওইচ্’ইনহাইডাহাওয়াইয়ানহিলিগ্যায়নোনহিট্টিটহ্‌মোঙউচ্চ সোর্বিয়া" +
-	"নহুপাইবানইলোকোইঙ্গুশলোজবানগোম্বামাকামেজুদেও ফার্সিজুদেও আরবিকারা-কাল্পাককাবাইলেক" +
-	"াচিনঅজ্জুকাম্বাকাউইকাবার্ডিয়ানটাইয়াপমাকোন্দেকাবুভারদিয়ানুকোরোখাশিখোটানিজকোয়র" +
-	"া চীনিকালেনজিনকিম্বুন্দুকমি-পারমিআককোঙ্কানিকোস্রাইনক্‌পেল্লেকারচে-বাল্কারকারেলিয" +
-	"়ানকুরুখশাম্বালাবাফিয়াকুমিককুটেনাইলাডিনোলাঙ্গিলান্ডালাম্বালেজঘিয়ানলাকোটামোঙ্গো" +
-	"লোজিলুবা-লুলুয়ালুইসেনোলুন্ডালুয়োলুশাইলুইয়ামাদুরেসেমাগাহিমৈথিলিম্যাকাসারম্যান্" +
-	"ডিঙ্গোমাসাইমোকশাম্যাণ্ডারমেন্ডেমেরুমরিসিয়ানমধ্য আইরিশমাখুয়া-মেত্তোমেটামিকম্যাক" +
-	"মিনাঙ্গ্‌কাবাউমাঞ্চুমণিপুরীমোহাওকমসিমুদাঙ্গবহুগুণিতক ভাষাসমূহক্রিকমিরান্ডিজমারোয" +
-	"়ারিএরজিয়ানেয়াপোলিটাননামানিম্ন জার্মানিনেওয়ারিনিয়াসনিউয়ানকোয়াসিওনোগাইপ্রাচ" +
-	"ীন নর্সএন’কোউত্তরাঞ্চলীয় সোথোনুয়ারপ্রাচীন নেওয়ারীন্যায়ামওয়েজিন্যায়াঙ্কোলেন" +
-	"্যোরোএন্.জিমাওসেজঅটোমান তুর্কিপাঙ্গাসিনানপাহ্লাভিপাম্পাঙ্গাপাপিয়ামেন্টোপালায়ুয" +
-	"়ানপ্রাচীন ফার্সিফোনিশীয়ানপোহ্নপেইয়ানপ্রাচীন প্রোভেনসালকি‘চেরাজস্থানীরাপানুইরা" +
-	"রোটোংগানরম্বোরোমানিআরোমানিয়রাওয়াস্যান্ডাওয়েইয়াকুটসামারিটান আরামিকসামবুরুসাসা" +
-	"কসাঁওতালিসাঙ্গুসিসিলিয়ানস্কটসসেনাসেল্কুপকোয়রাবেনো সেন্নীপ্রাচীন আইরিশতাচেলহিতশ" +
-	"ানসিডামোদক্ষিণাঞ্চলীয় সামিলুলে সামিইনারি সামিস্কোল্ট সামিসোনিঙ্কেসোগডিয়ানস্রান" +
-	"ান টোঙ্গোসেরেরসুকুমাসুসুসুমেরীয়কঙ্গো সোয়াহিলিপ্রাচীন সিরিওসিরিয়াকটাইম্নেতেসোত" +
-	"েরেনোতেতুমটাইগ্রেটিভটোকেলাউক্লিঙ্গনত্লিঙ্গিটতামাশেকনায়াসা টোঙ্গাটোক পিসিনসিমশিয" +
-	"়ানতুম্বুকাটুভালুতাসাওয়াকটুভিনিয়ানসেন্ট্রাল আটলাস তামাজিগাতউডমুর্টউগারিটিকউম্ব" +
-	"ুন্দুমূলভাইভোটিকভুঞ্জোওয়ালামোওয়ারেওয়াশোকাল্মইকসোগাইয়াওইয়াপেসেজাপোটেকচিত্র ভ" +
-	"াষাজেনাগাআদর্শ মরক্কোন তামাজিগাতজুনিভাষাভিত্তিক বিষয়বস্তু নেইজাজাআধুনিক আদর্শ আ" +
-	"রবীঅস্ট্রিয়ান জার্মানিসুইস উচ্চ জার্মানিঅস্ট্রেলীয় ইংরেজিকানাডীয় ইংরেজিব্রিটি" +
-	"শ ইংরেজিআমেরিকার ইংরেজিল্যাটিন আমেরিকান স্প্যানিশইউরোপীয় স্প্যানিশম্যাক্সিকান স" +
-	"্প্যানিশকানাডীয় ফরাসিসুইস ফরাসিফ্লেমিশব্রাজিলের পর্তুগীজইউরোপের পর্তুগীজমলদাভিয" +
-	"়সার্বো-ক্রোয়েশিয়সরলীকৃত চীনাঐতিহ্যবাহি চীনা"
+	"আফারআবখাজিয়ানআবেস্তীয়আফ্রিকান্সআকানআমহারিকআর্গোনিজআরবীআসামিআভেরিকআয়মারাআজারবা" +
+	"ইজানীবাশকিরবেলারুশিয়বুলগেরিয়বিসলামাবামবারাবাংলাতিব্বতিব্রেটনবসনীয়ানকাতালানচেচ" +
+	"েনচামোরোকর্সিকানক্রিচেকচার্চ স্লাভিকচুবাসওয়েলশডেনিশজার্মানদিবেহিজোঙ্গাএয়েগ্রিক" +
+	"ইংরেজিএস্পেরান্তোস্প্যানিশএস্তোনীয়বাস্কফার্সিফুলাহ্ফিনিশফিজিওফেরাউনিফরাসিপশ্চিম" +
+	" ফ্রিসিয়আইরিশস্কটস-গ্যেলিকগ্যালিশিয়গুয়ারানিগুজরাটিম্যাঙ্কসহাউসাহিব্রুহিন্দিহি" +
+	"রি মোতুক্রোয়েশীয়হাইতিয়ানহাঙ্গেরীয়আর্মেনিয়হেরেরোইন্টারলিঙ্গুয়াইন্দোনেশীয়ইন" +
+	"্টারলিঙ্গইগ্‌বোসিচুয়ান য়িইনুপিয়াকইডোআইসল্যান্ডীয়ইতালীয়ইনুক্টিটুটজাপানিজাভান" +
+	"িজর্জিয়ানকঙ্গোকিকু্ইয়ুকোয়ানিয়ামাকাজাখক্যালাল্লিসুটখমেরকান্নাড়ীকোরিয়ানকানুর" +
+	"িকাশ্মীরীকুর্দিকোমিকর্ণিশকির্গিজলাটিনলুক্সেমবার্গীয়গান্ডালিম্বুর্গিশলিঙ্গালালাও" +
+	"লিথুয়েনীয়লুবা-কাটাঙ্গালাত্‌ভীয়মালাগাসিমার্শালিজমাওরিম্যাসিডোনীয়মালায়ালামমঙ্" +
+	"গোলিয়মারাঠিমালয়মল্টিয়বর্মিনাউরুউত্তর এন্দেবিলিনেপালীএন্দোঙ্গাডাচনরওয়েজীয়ান " +
+	"নিনর্স্কনরওয়েজিয়ান বোকমালদক্ষিণ এনডেবেলেনাভাজোনায়াঞ্জাঅক্সিটানওজিবওয়াঅরোমোওড" +
+	"়িয়াওসেটিকপাঞ্জাবীপালিপোলিশপাশ্তুপর্তুগীজকেচুয়ারোমান্সরুন্দিরোমানীয়রুশকিনয়ার" +
+	"োয়ান্ডাসংষ্কৃতসার্ডিনিয়ানসিন্ধিউত্তরাঞ্চলীয় সামিসাঙ্গোসিংহলীস্লোভাকস্লোভেনীয়" +
+	"সামোয়ানশোনাসোমালীআলবেনীয়সার্বীয়সোয়াতিদক্ষিন সোথোসুদানীসুইডিশসোয়াহিলিতামিলতে" +
+	"লেগুতাজিকথাইতিগরিনিয়াতুর্কমেনীসোয়ানাটোঙ্গানতুর্কীসঙ্গাতাতারতাহিতিয়ানউইঘুরইউক্" +
+	"রেনীয়উর্দুউজবেকীয়ভেন্ডাভিয়েতনামীভোলাপুকওয়ালুনউওলোফজোসায়িদ্দিশইওরুবাঝু্য়াঙচ" +
+	"ীনাজুলুঅ্যাচাইনিজআকোলিঅদাগ্মেআদেগেআফ্রিহিলিএঘেমআইনুআক্কাদিয়ানআলেউতদক্ষিন আলতাইপ" +
+	"্রাচীন ইংরেজীআঙ্গিকাআরামাইকমাপুচিআরাপাহোআরাওয়াকআসুআস্তুরিয়আওয়াধিবেলুচীবালিনীয" +
+	"়বাসাবেজাবেম্বাবেনাভোজপুরিবিকোলবিনিসিকসিকাব্রাজবড়োবুরিয়াতবুগিনিব্লিনক্যাডোক্যা" +
+	"রিবআত্সামচেবুয়ানোচিগাচিবচাচাগাতাইচুকিমারিচিনুক জার্গনচকটোওচিপেওয়ানচেরোকীশাইয়ে" +
+	"নসোরানি কুর্দিশকপটিকক্রিমিয়ান তুর্কিকাশুবিয়ানডাকোটাদার্গওয়াতাইতাডেলাওয়েরস্ল্" +
+	"যাভদোগ্রীবডিংকাজার্মাডোগরিনিম্নতর সোর্বিয়ানদুয়ালামধ্য ডাচজলা-ফনীডিউলাএম্বুএফিক" +
+	"প্রাচীন মিশরীয়ইকাজুকএলামাইটমধ্য ইংরেজিইওন্ডোফ্যাঙ্গফিলিপিনোফনমধ্য ফরাসিপ্রাচীন " +
+	"ফরাসিউত্তরাঞ্চলীয় ফ্রিসিয়ানপূর্ব ফ্রিসিয়ফ্রিউলিয়ানগাগাগাউজগায়োবায়াগীজগিলবা" +
+	"র্টিজমধ্য-উচ্চ জার্মানিপ্রাচীন উচ্চ জার্মানিগোন্ডিগোরোন্তালোগথিকগ্রেবোপ্রাচীন গ্" +
+	"রীকসুইস জার্মানগুসীগওইচ্’ইনহাইডাহাওয়াইয়ানহিলিগ্যায়নোনহিট্টিটহ্‌মোঙউচ্চ সোর্বি" +
+	"য়ানহুপাইবানইলোকোইঙ্গুশলোজবানগোম্বামাকামেজুদেও ফার্সিজুদেও আরবিকারা-কাল্পাককাবাই" +
+	"লেকাচিনঅজ্জুকাম্বাকাউইকাবার্ডিয়ানটাইয়াপমাকোন্দেকাবুভারদিয়ানুকোরোখাশিখোটানিজকো" +
+	"য়রা চীনিকালেনজিনকিম্বুন্দুকমি-পারমিআককোঙ্কানিকোস্রাইনক্‌পেল্লেকারচে-বাল্কারকারে" +
+	"লিয়ানকুরুখশাম্বালাবাফিয়াকুমিককুটেনাইলাডিনোলাঙ্গিলান্ডালাম্বালেজঘিয়ানলাকোটামোঙ" +
+	"্গোলোজিলুবা-লুলুয়ালুইসেনোলুন্ডালুয়োলুশাইলুইয়ামাদুরেসেমাগাহিমৈথিলিম্যাকাসারম্য" +
+	"ান্ডিঙ্গোমাসাইমোকশাম্যাণ্ডারমেন্ডেমেরুমরিসিয়ানমধ্য আইরিশমাখুয়া-মেত্তোমেটামিকম্" +
+	"যাকমিনাঙ্গ্‌কাবাউমাঞ্চুমণিপুরীমোহাওকমসিমুদাঙ্গবহুগুণিতক ভাষাসমূহক্রিকমিরান্ডিজমা" +
+	"রোয়ারিএরজিয়ানেয়াপোলিটাননামানিম্ন জার্মানিনেওয়ারিনিয়াসনিউয়ানকোয়াসিওনোগাইপ্" +
+	"রাচীন নর্সএন’কোউত্তরাঞ্চলীয় সোথোনুয়ারপ্রাচীন নেওয়ারীন্যায়ামওয়েজিন্যায়াঙ্কো" +
+	"লেন্যোরোএন্.জিমাওসেজঅটোমান তুর্কিপাঙ্গাসিনানপাহ্লাভিপাম্পাঙ্গাপাপিয়ামেন্টোপালায" +
+	"়ুয়ানপ্রাচীন ফার্সিফোনিশীয়ানপোহ্নপেইয়ানপ্রাচীন প্রোভেনসালকি‘চেরাজস্থানীরাপানু" +
+	"ইরারোটোংগানরম্বোরোমানিআরমেনিয়ানরাওয়াস্যান্ডাওয়েইয়াকুটসামারিটান আরামিকসামবুরু" +
+	"সাসাকসাঁওতালিসাঙ্গুসিসিলিয়ানস্কটসসেনাসেল্কুপকোয়রাবেনো সেন্নীপ্রাচীন আইরিশতাচেল" +
+	"হিতশানসিডামোদক্ষিণাঞ্চলীয় সামিলুলে সামিইনারি সামিস্কোল্ট সামিসোনিঙ্কেসোগডিয়ানস" +
+	"্রানান টোঙ্গোসেরেরসুকুমাসুসুসুমেরীয়কঙ্গো সোয়াহিলিপ্রাচীন সিরিওসিরিয়াকটাইম্নেত" +
+	"েসোতেরেনোতেতুমটাইগ্রেটিভটোকেলাউক্লিঙ্গনত্লিঙ্গিটতামাশেকনায়াসা টোঙ্গাটোক পিসিনসি" +
+	"মশিয়ানতুম্বুকাটুভালুতাসাওয়াকটুভিনিয়ানসেন্ট্রাল আটলাস তামাজিগাতউডমুর্টউগারিটিক" +
+	"উম্বুন্দুমূলভাইভোটিকভুঞ্জোওয়ালামোওয়ারেওয়াশোকাল্মইকসোগাইয়াওইয়াপেসেজাপোটেকচিত" +
+	"্র ভাষাজেনাগাআদর্শ মরক্কোন তামাজিগাতজুনিভাষাভিত্তিক বিষয়বস্তু নেইজাজাআধুনিক আদর" +
+	"্শ আরবীঅস্ট্রিয়ান জারমানসুইস উচ্চ জার্মানিঅস্ট্রেলীয় ইংরেজিকানাডীয় ইংরেজিব্রি" +
+	"টিশ ইংরেজিআমেরিকার ইংরেজিল্যাটিন আমেরিকান স্প্যানিশইউরোপীয় স্প্যানিশম্যাক্সিকান" +
+	" স্প্যানিশক্যানাডিয়ান ফরাসীসুইস ফরাসিফ্লেমিশব্রাজিলের পর্তুগীজইউরোপের পর্তুগীজম" +
+	"লদাভিয়সার্বো-ক্রোয়েশিয়সরলীকৃত চীনাঐতিহ্যবাহি চীনা"
 
-var bnLangIdx = []uint16{ // 604 entries
-	0x0, 0xc, 0x27, 0x42, 0x60, 0x6c, 0x81, 0x99, 0xa5, 0xb4, 0xc6, 0xdb,
-	0xfc, 0x10e, 0x12c, 0x147, 0x15c, 0x171, 0x180, 0x195, 0x1a7, 0x1bf, 0x1d4, 0x1e3,
-	0x1f5, 0x20d, 0x219, 0x222, 0x247, 0x256, 0x268, 0x277, 0x28c, 0x29e, 0x2b0, 0x2bc,
-	0x2cb, 0x2dd, 0x2fe, 0x319, 0x334, 0x343, 0x355, 0x367, 0x376, 0x385, 0x39a, 0x3a9,
-	0x3d4, 0x3e3, 0x408, 0x426, 0x441, 0x456, 0x46e, 0x47d, 0x48f, 0x4a1, 0x4ba, 0x4db,
-	0x4f6, 0x514, 0x52f, 0x541, 0x56e, 0x58f, 0x5b0, 0x5c2, 0x5e4, 0x5ff, 0x608, 0x62f,
-	0x644, 0x662, 0x674, 0x686, 0x6a1, 0x6b0, 0x6cb, 0x6ef, 0x6fe, 0x725, 0x731, 0x74c,
-	0x764, 0x776, 0x78e, 0x7a0, 0x7ac, 0x7be, 0x7d3, 0x7e2, 0x80f, 0x821, 0x842, 0x85a,
-	0x863, 0x884, 0x8a9, 0x8c4, 0x8dc, 0x8f7, 0x906, 0x92a, 0x948, 0x963, 0x975, 0x984,
-	0x999, 0x9a8, 0x9b7, 0x9e2, 0x9f4, 0xa0f, 0xa18, 0xa55, 0xa8c, 0xab7, 0xac9, 0xae4,
-	0xafc, 0xb14, 0xb23, 0xb38, 0xb4a, 0xb62, 0xb6e, 0xb7d, 0xb8f, 0xba7, 0xbbc, 0xbd1,
-	0xbe3, 0xbfb, 0xc04, 0xc31, 0xc46, 0xc6a, 0xc7c, 0xcb0, 0xcc2, 0xcd4, 0xce9, 0xd07,
-	0xd1f, 0xd2b, 0xd3d, 0xd55, 0xd6d, 0xd82, 0xda1, 0xdb3, 0xdc5, 0xde0, 0xdef, 0xe01,
-	0xe10, 0xe19, 0xe37, 0xe52, 0xe67, 0xe7c, 0xe8e, 0xe9d, 0xeac, 0xeca, 0xed9, 0xef7,
-	0xf06, 0xf1e, 0xf30, 0xf4e, 0xf63, 0xf78, 0xf87, 0xf93, 0xfab, 0xfbd, 0xfd2, 0xfde,
-	0xfea, 0xfff, 0x100e, 0x1023, 0x1032, 0x1032, 0x104d, 0x1059, 0x1065, 0x1086, 0x1086, 0x1095,
-	0x1095, 0x10b7, 0x10df, 0x10f4, 0x1109, 0x111b, 0x111b, 0x1130, 0x1130, 0x1148, 0x1148, 0x1148,
-	0x1151, 0x1151, 0x116c, 0x116c, 0x1181, 0x1181, 0x1193, 0x11ab, 0x11ab, 0x11b7, 0x11b7, 0x11b7,
-	0x11b7, 0x11c3, 0x11d5, 0x11d5, 0x11e1, 0x11e1, 0x11e1, 0x11f6, 0x1205, 0x1211, 0x1211, 0x1211,
-	0x1226, 0x1226, 0x1226, 0x1235, 0x1235, 0x1241, 0x1241, 0x1259, 0x126b, 0x126b, 0x127a, 0x127a,
-	0x128c, 0x12a1, 0x12a1, 0x12b3, 0x12ce, 0x12da, 0x12e9, 0x12fe, 0x130a, 0x1316, 0x133b, 0x134a,
-	0x1365, 0x1377, 0x138c, 0x13b4, 0x13c3, 0x13c3, 0x13f4, 0x1412, 0x1424, 0x143f, 0x144e, 0x1469,
-	0x147e, 0x1493, 0x14a2, 0x14b4, 0x14c3, 0x14f7, 0x14f7, 0x150c, 0x1522, 0x1535, 0x1544, 0x1544,
-	0x1553, 0x155f, 0x155f, 0x158a, 0x159c, 0x15b1, 0x15d0, 0x15d0, 0x15e2, 0x15e2, 0x15f7, 0x160f,
-	0x160f, 0x1615, 0x1615, 0x1631, 0x1656, 0x1656, 0x169c, 0x16c4, 0x16e5, 0x16eb, 0x16fd, 0x16fd,
-	0x170c, 0x171b, 0x171b, 0x1724, 0x1742, 0x1742, 0x1774, 0x17af, 0x17af, 0x17c1, 0x17df, 0x17eb,
-	0x17fd, 0x1822, 0x1844, 0x1844, 0x1844, 0x1850, 0x1868, 0x1877, 0x1877, 0x1898, 0x1898, 0x18bf,
-	0x18d4, 0x18e6, 0x1911, 0x1911, 0x191d, 0x1929, 0x1929, 0x1938, 0x194a, 0x194a, 0x194a, 0x195c,
-	0x196e, 0x1980, 0x19a2, 0x19be, 0x19be, 0x19e0, 0x19f5, 0x1a04, 0x1a13, 0x1a25, 0x1a31, 0x1a55,
-	0x1a55, 0x1a6a, 0x1a82, 0x1aac, 0x1aac, 0x1ab8, 0x1ab8, 0x1ac4, 0x1ad9, 0x1af8, 0x1af8, 0x1af8,
-	0x1af8, 0x1b10, 0x1b2e, 0x1b4d, 0x1b65, 0x1b7d, 0x1b98, 0x1bbd, 0x1bbd, 0x1bbd, 0x1bdb, 0x1bea,
-	0x1c02, 0x1c17, 0x1c17, 0x1c26, 0x1c3b, 0x1c4d, 0x1c5f, 0x1c71, 0x1c83, 0x1c9e, 0x1c9e, 0x1c9e,
-	0x1c9e, 0x1cb0, 0x1cb0, 0x1cc2, 0x1cce, 0x1cce, 0x1cf0, 0x1d05, 0x1d17, 0x1d26, 0x1d35, 0x1d47,
-	0x1d47, 0x1d47, 0x1d5f, 0x1d5f, 0x1d71, 0x1d83, 0x1d9e, 0x1dc2, 0x1dd1, 0x1dd1, 0x1de0, 0x1dfb,
-	0x1e0d, 0x1e19, 0x1e34, 0x1e50, 0x1e78, 0x1e84, 0x1e9c, 0x1ec6, 0x1ed8, 0x1eed, 0x1eff, 0x1f08,
-	0x1f08, 0x1f1d, 0x1f51, 0x1f60, 0x1f7b, 0x1f96, 0x1f96, 0x1f96, 0x1fab, 0x1fab, 0x1fab, 0x1fcf,
-	0x1fdb, 0x2003, 0x201b, 0x202d, 0x2042, 0x2042, 0x205a, 0x205a, 0x2069, 0x208b, 0x208b, 0x209a,
-	0x20ce, 0x20e0, 0x210e, 0x2138, 0x215f, 0x2171, 0x2187, 0x2193, 0x21b8, 0x21d9, 0x21f1, 0x220f,
-	0x2236, 0x2257, 0x2257, 0x2257, 0x2257, 0x227f, 0x227f, 0x229d, 0x229d, 0x229d, 0x22c1, 0x22c1,
-	0x22f5, 0x2304, 0x2304, 0x231f, 0x2334, 0x2352, 0x2352, 0x2352, 0x2361, 0x2373, 0x2373, 0x2373,
-	0x2373, 0x238e, 0x23a0, 0x23c4, 0x23d9, 0x2407, 0x241c, 0x242b, 0x2443, 0x2443, 0x2443, 0x2455,
-	0x2473, 0x2482, 0x2482, 0x2482, 0x248e, 0x248e, 0x24a3, 0x24d4, 0x24f9, 0x24f9, 0x2511, 0x251a,
-	0x251a, 0x252c, 0x252c, 0x252c, 0x2563, 0x257c, 0x2598, 0x25ba, 0x25d2, 0x25ed, 0x2615, 0x2624,
-	0x2624, 0x2624, 0x2636, 0x2642, 0x265a, 0x265a, 0x2685, 0x26aa, 0x26c2, 0x26c2, 0x26c2, 0x26d7,
-	0x26e3, 0x26f5, 0x2704, 0x2719, 0x2722, 0x2737, 0x2737, 0x274f, 0x276a, 0x276a, 0x277f, 0x27a7,
-	0x27c0, 0x27c0, 0x27c0, 0x27c0, 0x27db, 0x27db, 0x27f3, 0x2805, 0x2820, 0x283e, 0x2885, 0x289a,
-	0x28b2, 0x28cd, 0x28d6, 0x28df, 0x28df, 0x28df, 0x28df, 0x28df, 0x28ee, 0x28ee, 0x2900, 0x2900,
-	0x2918, 0x292a, 0x293c, 0x293c, 0x2951, 0x2951, 0x295d, 0x296c, 0x2984, 0x2984, 0x2984, 0x2984,
-	0x2984, 0x2999, 0x29b5, 0x29b5, 0x29c7, 0x2a08, 0x2a14, 0x2a5e, 0x2a6a, 0x2a99, 0x2ad3, 0x2b05,
-	0x2b39, 0x2b64, 0x2b8c, 0x2bb7, 0x2c01, 0x2c35, 0x2c72, 0x2c9a, 0x2cb6, 0x2ccb, 0x2cff, 0x2d2d,
-	0x2d45, 0x2d79, 0x2d9b, 0x2dc6,
+var bnLangIdx = []uint16{ // 605 entries
+	0x0, 0xc, 0x2a, 0x45, 0x63, 0x6f, 0x84, 0x9c, 0xa8, 0xb7, 0xc9, 0xde,
+	0xff, 0x111, 0x12f, 0x14a, 0x15f, 0x174, 0x183, 0x198, 0x1aa, 0x1c2, 0x1d7, 0x1e6,
+	0x1f8, 0x210, 0x21c, 0x225, 0x24a, 0x259, 0x26b, 0x27a, 0x28f, 0x2a1, 0x2b3, 0x2bf,
+	0x2ce, 0x2e0, 0x301, 0x31c, 0x337, 0x346, 0x358, 0x36a, 0x379, 0x388, 0x39d, 0x3ac,
+	0x3d7, 0x3e6, 0x40b, 0x429, 0x444, 0x459, 0x471, 0x480, 0x492, 0x4a4, 0x4bd, 0x4de,
+	0x4f9, 0x517, 0x532, 0x544, 0x571, 0x592, 0x5b3, 0x5c5, 0x5e7, 0x602, 0x60b, 0x632,
+	0x647, 0x665, 0x677, 0x689, 0x6a4, 0x6b3, 0x6ce, 0x6f2, 0x701, 0x728, 0x734, 0x74f,
+	0x767, 0x779, 0x791, 0x7a3, 0x7af, 0x7c1, 0x7d6, 0x7e5, 0x812, 0x824, 0x845, 0x85d,
+	0x866, 0x887, 0x8ac, 0x8c7, 0x8df, 0x8fa, 0x909, 0x92d, 0x94b, 0x966, 0x978, 0x987,
+	0x99c, 0x9ab, 0x9ba, 0x9e5, 0x9f7, 0xa12, 0xa1b, 0xa58, 0xa8f, 0xaba, 0xacc, 0xae7,
+	0xaff, 0xb17, 0xb26, 0xb3b, 0xb4d, 0xb65, 0xb71, 0xb80, 0xb92, 0xbaa, 0xbbf, 0xbd4,
+	0xbe6, 0xbfe, 0xc07, 0xc34, 0xc49, 0xc6d, 0xc7f, 0xcb3, 0xcc5, 0xcd7, 0xcec, 0xd0a,
+	0xd22, 0xd2e, 0xd40, 0xd58, 0xd70, 0xd85, 0xda4, 0xdb6, 0xdc8, 0xde3, 0xdf2, 0xe04,
+	0xe13, 0xe1c, 0xe3a, 0xe55, 0xe6a, 0xe7f, 0xe91, 0xea0, 0xeaf, 0xecd, 0xedc, 0xefa,
+	0xf09, 0xf21, 0xf33, 0xf51, 0xf66, 0xf7b, 0xf8a, 0xf96, 0xfae, 0xfc0, 0xfd5, 0xfe1,
+	0xfed, 0x100b, 0x101a, 0x102f, 0x103e, 0x103e, 0x1059, 0x1065, 0x1071, 0x1092, 0x1092, 0x10a1,
+	0x10a1, 0x10c3, 0x10eb, 0x1100, 0x1115, 0x1127, 0x1127, 0x113c, 0x113c, 0x1154, 0x1154, 0x1154,
+	0x115d, 0x115d, 0x1178, 0x1178, 0x118d, 0x118d, 0x119f, 0x11b7, 0x11b7, 0x11c3, 0x11c3, 0x11c3,
+	0x11c3, 0x11cf, 0x11e1, 0x11e1, 0x11ed, 0x11ed, 0x11ed, 0x1202, 0x1211, 0x121d, 0x121d, 0x121d,
+	0x1232, 0x1232, 0x1232, 0x1241, 0x1241, 0x124d, 0x124d, 0x1265, 0x1277, 0x1277, 0x1286, 0x1286,
+	0x1298, 0x12ad, 0x12ad, 0x12bf, 0x12da, 0x12e6, 0x12f5, 0x130a, 0x1316, 0x1322, 0x1344, 0x1353,
+	0x136e, 0x1380, 0x1395, 0x13bd, 0x13cc, 0x13cc, 0x13fd, 0x141b, 0x142d, 0x1448, 0x1457, 0x1472,
+	0x1487, 0x149c, 0x14ab, 0x14bd, 0x14cc, 0x1500, 0x1500, 0x1515, 0x152b, 0x153e, 0x154d, 0x154d,
+	0x155c, 0x1568, 0x1568, 0x1593, 0x15a5, 0x15ba, 0x15d9, 0x15d9, 0x15eb, 0x15eb, 0x1600, 0x1618,
+	0x1618, 0x161e, 0x161e, 0x163a, 0x165f, 0x165f, 0x16a5, 0x16cd, 0x16ee, 0x16f4, 0x1706, 0x1706,
+	0x1715, 0x1724, 0x1724, 0x172d, 0x174b, 0x174b, 0x177d, 0x17b8, 0x17b8, 0x17ca, 0x17e8, 0x17f4,
+	0x1806, 0x182b, 0x184d, 0x184d, 0x184d, 0x1859, 0x1871, 0x1880, 0x1880, 0x18a1, 0x18a1, 0x18c8,
+	0x18dd, 0x18ef, 0x191a, 0x191a, 0x1926, 0x1932, 0x1932, 0x1941, 0x1953, 0x1953, 0x1953, 0x1965,
+	0x1977, 0x1989, 0x19ab, 0x19c7, 0x19c7, 0x19e9, 0x19fe, 0x1a0d, 0x1a1c, 0x1a2e, 0x1a3a, 0x1a5e,
+	0x1a5e, 0x1a73, 0x1a8b, 0x1ab5, 0x1ab5, 0x1ac1, 0x1ac1, 0x1acd, 0x1ae2, 0x1b01, 0x1b01, 0x1b01,
+	0x1b01, 0x1b19, 0x1b37, 0x1b56, 0x1b6e, 0x1b86, 0x1ba1, 0x1bc6, 0x1bc6, 0x1bc6, 0x1be4, 0x1bf3,
+	0x1c0b, 0x1c20, 0x1c20, 0x1c2f, 0x1c44, 0x1c56, 0x1c68, 0x1c7a, 0x1c8c, 0x1ca7, 0x1ca7, 0x1ca7,
+	0x1ca7, 0x1cb9, 0x1cb9, 0x1ccb, 0x1cd7, 0x1cd7, 0x1cf9, 0x1d0e, 0x1d20, 0x1d2f, 0x1d3e, 0x1d50,
+	0x1d50, 0x1d50, 0x1d68, 0x1d68, 0x1d7a, 0x1d8c, 0x1da7, 0x1dcb, 0x1dda, 0x1dda, 0x1de9, 0x1e04,
+	0x1e16, 0x1e22, 0x1e3d, 0x1e59, 0x1e81, 0x1e8d, 0x1ea5, 0x1ecf, 0x1ee1, 0x1ef6, 0x1f08, 0x1f11,
+	0x1f11, 0x1f26, 0x1f5a, 0x1f69, 0x1f84, 0x1f9f, 0x1f9f, 0x1f9f, 0x1fb4, 0x1fb4, 0x1fb4, 0x1fd8,
+	0x1fe4, 0x200c, 0x2024, 0x2036, 0x204b, 0x204b, 0x2063, 0x2063, 0x2072, 0x2094, 0x2094, 0x20a3,
+	0x20d7, 0x20e9, 0x2117, 0x2141, 0x2168, 0x217a, 0x2190, 0x219c, 0x21c1, 0x21e2, 0x21fa, 0x2218,
+	0x223f, 0x2260, 0x2260, 0x2260, 0x2260, 0x2288, 0x2288, 0x22a6, 0x22a6, 0x22a6, 0x22ca, 0x22ca,
+	0x22fe, 0x230d, 0x230d, 0x2328, 0x233d, 0x235b, 0x235b, 0x235b, 0x236a, 0x237c, 0x237c, 0x237c,
+	0x237c, 0x239a, 0x23ac, 0x23d0, 0x23e5, 0x2413, 0x2428, 0x2437, 0x244f, 0x244f, 0x244f, 0x2461,
+	0x247f, 0x248e, 0x248e, 0x248e, 0x249a, 0x249a, 0x24af, 0x24e0, 0x2505, 0x2505, 0x251d, 0x2526,
+	0x2526, 0x2538, 0x2538, 0x2538, 0x256f, 0x2588, 0x25a4, 0x25c6, 0x25de, 0x25f9, 0x2621, 0x2630,
+	0x2630, 0x2630, 0x2642, 0x264e, 0x2666, 0x2666, 0x2691, 0x26b6, 0x26ce, 0x26ce, 0x26ce, 0x26e3,
+	0x26ef, 0x2701, 0x2710, 0x2725, 0x272e, 0x2743, 0x2743, 0x275b, 0x2776, 0x2776, 0x278b, 0x27b3,
+	0x27cc, 0x27cc, 0x27cc, 0x27cc, 0x27e7, 0x27e7, 0x27ff, 0x2811, 0x282c, 0x284a, 0x2891, 0x28a6,
+	0x28be, 0x28d9, 0x28e2, 0x28eb, 0x28eb, 0x28eb, 0x28eb, 0x28eb, 0x28fa, 0x28fa, 0x290c, 0x290c,
+	0x2924, 0x2936, 0x2948, 0x2948, 0x2948, 0x295d, 0x295d, 0x2969, 0x2978, 0x2990, 0x2990, 0x2990,
+	0x2990, 0x2990, 0x29a5, 0x29c1, 0x29c1, 0x29d3, 0x2a14, 0x2a20, 0x2a6a, 0x2a76, 0x2aa5, 0x2ad9,
+	0x2b0b, 0x2b3f, 0x2b6a, 0x2b92, 0x2bbd, 0x2c07, 0x2c3b, 0x2c78, 0x2cac, 0x2cc8, 0x2cdd, 0x2d11,
+	0x2d3f, 0x2d57, 0x2d8b, 0x2dad, 0x2dd8,
 }
 
 const caLangStr = "" +
@@ -8936,7 +8295,7 @@
 	"s canadencfrancès suísflamencportuguès del Brasilportuguès de Portugalmoldauserb" +
 	"ocroatxinès simplificatxinès tradicional"
 
-var caLangIdx = []uint16{ // 604 entries
+var caLangIdx = []uint16{ // 605 entries
 	0x0, 0x5, 0xb, 0x13, 0x1c, 0x21, 0x29, 0x32, 0x37, 0x3f, 0x44, 0x4a,
 	0x58, 0x5f, 0x68, 0x6f, 0x76, 0x7d, 0x85, 0x8c, 0x92, 0x99, 0xa0, 0xa7,
 	0xaf, 0xb3, 0xb7, 0xbb, 0xcd, 0xd4, 0xdd, 0xe3, 0xea, 0xf0, 0xf7, 0xfa,
@@ -8984,10 +8343,10 @@
 	0xd13, 0xd19, 0xd1e, 0xd23, 0xd26, 0xd30, 0xd30, 0xd3a, 0xd41, 0xd41, 0xd4a, 0xd4f,
 	0xd58, 0xd58, 0xd5e, 0xd5e, 0xd67, 0xd67, 0xd6e, 0xd76, 0xd7d, 0xd85, 0xd9e, 0xda4,
 	0xdad, 0xdb4, 0xdb9, 0xdbc, 0xdbc, 0xdbc, 0xdbc, 0xdbc, 0xdc2, 0xdc2, 0xdc7, 0xdcd,
-	0xdd2, 0xddd, 0xde2, 0xde2, 0xde8, 0xde8, 0xdec, 0xdef, 0xdf5, 0xdfc, 0xe01, 0xe01,
-	0xe0a, 0xe12, 0xe20, 0xe20, 0xe26, 0xe41, 0xe45, 0xe61, 0xe65, 0xe7c, 0xe8d, 0xe9e,
-	0xeb0, 0xec0, 0xed1, 0xee1, 0xef9, 0xf09, 0xf1b, 0xf2c, 0xf3a, 0xf41, 0xf56, 0xf6c,
-	0xf72, 0xf7c, 0xf8e, 0xfa0,
+	0xdd2, 0xddd, 0xde2, 0xde2, 0xde2, 0xde8, 0xde8, 0xdec, 0xdef, 0xdf5, 0xdfc, 0xe01,
+	0xe01, 0xe0a, 0xe12, 0xe20, 0xe20, 0xe26, 0xe41, 0xe45, 0xe61, 0xe65, 0xe7c, 0xe8d,
+	0xe9e, 0xeb0, 0xec0, 0xed1, 0xee1, 0xef9, 0xf09, 0xf1b, 0xf2c, 0xf3a, 0xf41, 0xf56,
+	0xf6c, 0xf72, 0xf7c, 0xf8e, 0xfa0,
 }
 
 const csLangStr = "" +
@@ -9074,7 +8433,7 @@
 	"tina (Evropa)vlámštinaportugalština (Evropa)moldavštinasrbochorvatštinačínština " +
 	"(zjednodušená)"
 
-var csLangIdx = []uint16{ // 603 entries
+var csLangIdx = []uint16{ // 604 entries
 	0x0, 0xa, 0x17, 0x25, 0x33, 0x3d, 0x48, 0x54, 0x5e, 0x6a, 0x74, 0x7f,
 	0x94, 0xa1, 0xae, 0xba, 0xc6, 0xd2, 0xdf, 0xea, 0xf6, 0x101, 0x10f, 0x11c,
 	0x123, 0x12e, 0x139, 0x142, 0x154, 0x15f, 0x168, 0x172, 0x17b, 0x188, 0x190, 0x199,
@@ -9122,10 +8481,10 @@
 	0x18e2, 0x18e8, 0x18f3, 0x18ff, 0x1908, 0x1915, 0x1921, 0x192e, 0x1935, 0x193f, 0x1947, 0x195a,
 	0x1963, 0x196e, 0x1974, 0x1980, 0x1993, 0x199c, 0x19a8, 0x19b3, 0x19ba, 0x19c5, 0x19e1, 0x19ed,
 	0x19f9, 0x1a00, 0x1a0f, 0x1a12, 0x1a1e, 0x1a27, 0x1a3e, 0x1a64, 0x1a6d, 0x1a78, 0x1a7d, 0x1a8f,
-	0x1a9b, 0x1aa6, 0x1aae, 0x1ac7, 0x1ad2, 0x1adf, 0x1ae8, 0x1af1, 0x1afa, 0x1b07, 0x1b0c, 0x1b15,
-	0x1b21, 0x1b2e, 0x1b3b, 0x1b48, 0x1b4e, 0x1b6e, 0x1b79, 0x1b91, 0x1b95, 0x1bb6, 0x1bb6, 0x1bd9,
-	0x1bd9, 0x1bd9, 0x1bd9, 0x1bea, 0x1bea, 0x1c01, 0x1c01, 0x1c01, 0x1c01, 0x1c0c, 0x1c0c, 0x1c23,
-	0x1c2f, 0x1c40, 0x1c5c,
+	0x1a9b, 0x1aa6, 0x1aae, 0x1aae, 0x1ac7, 0x1ad2, 0x1adf, 0x1ae8, 0x1af1, 0x1afa, 0x1b07, 0x1b0c,
+	0x1b15, 0x1b21, 0x1b2e, 0x1b3b, 0x1b48, 0x1b4e, 0x1b6e, 0x1b79, 0x1b91, 0x1b95, 0x1bb6, 0x1bb6,
+	0x1bd9, 0x1bd9, 0x1bd9, 0x1bd9, 0x1bea, 0x1bea, 0x1c01, 0x1c01, 0x1c01, 0x1c01, 0x1c0c, 0x1c0c,
+	0x1c23, 0x1c2f, 0x1c40, 0x1c5c,
 }
 
 const daLangStr = "" +
@@ -9180,7 +8539,7 @@
 	"siliansk portugisiskeuropæisk portugisiskmoldoviskserbokroatiskforenklet kinesis" +
 	"ktraditionelt kinesisk"
 
-var daLangIdx = []uint16{ // 604 entries
+var daLangIdx = []uint16{ // 605 entries
 	0x0, 0x4, 0xd, 0x14, 0x1d, 0x21, 0x29, 0x34, 0x3b, 0x45, 0x4c, 0x52,
 	0x60, 0x67, 0x73, 0x7b, 0x82, 0x89, 0x90, 0x99, 0xa1, 0xa8, 0xb1, 0xba,
 	0xc2, 0xcc, 0xd0, 0xd8, 0xe4, 0xeb, 0xf3, 0xf8, 0xfc, 0x102, 0x10a, 0x10d,
@@ -9228,10 +8587,10 @@
 	0xd04, 0xd0a, 0xd0f, 0xd14, 0xd18, 0xd1f, 0xd1f, 0xd26, 0xd2d, 0xd2d, 0xd35, 0xd43,
 	0xd4c, 0xd4c, 0xd52, 0xd52, 0xd5b, 0xd5b, 0xd62, 0xd68, 0xd6f, 0xd77, 0xd92, 0xd98,
 	0xda2, 0xda9, 0xdac, 0xdaf, 0xdaf, 0xdaf, 0xdaf, 0xdaf, 0xdb5, 0xdb5, 0xdba, 0xdc4,
-	0xdca, 0xdcf, 0xdd4, 0xdd4, 0xdda, 0xdda, 0xdde, 0xde1, 0xde7, 0xdee, 0xdf3, 0xdf3,
-	0xdfe, 0xe05, 0xe11, 0xe11, 0xe17, 0xe20, 0xe24, 0xe3b, 0xe3f, 0xe56, 0xe64, 0xe75,
-	0xe86, 0xe96, 0xea5, 0xeb7, 0xecd, 0xede, 0xeee, 0xefd, 0xf0e, 0xf14, 0xf2b, 0xf41,
-	0xf4a, 0xf57, 0xf69, 0xf7e,
+	0xdca, 0xdcf, 0xdd4, 0xdd4, 0xdd4, 0xdda, 0xdda, 0xdde, 0xde1, 0xde7, 0xdee, 0xdf3,
+	0xdf3, 0xdfe, 0xe05, 0xe11, 0xe11, 0xe17, 0xe20, 0xe24, 0xe3b, 0xe3f, 0xe56, 0xe64,
+	0xe75, 0xe86, 0xe96, 0xea5, 0xeb7, 0xecd, 0xede, 0xeee, 0xefd, 0xf0e, 0xf14, 0xf2b,
+	0xf41, 0xf4a, 0xf57, 0xf69, 0xf7e,
 }
 
 const deLangStr = "" +
@@ -9313,7 +8672,7 @@
 	"ämischBrasilianisches PortugiesischEuropäisches PortugiesischMoldauischSerbo-Kro" +
 	"atischChinesisch (vereinfacht)Chinesisch (traditionell)"
 
-var deLangIdx = []uint16{ // 604 entries
+var deLangIdx = []uint16{ // 605 entries
 	0x0, 0x4, 0xe, 0x17, 0x20, 0x24, 0x2d, 0x39, 0x41, 0x4c, 0x54, 0x5a,
 	0x6b, 0x77, 0x84, 0x8e, 0x95, 0xa4, 0xae, 0xb7, 0xc1, 0xc9, 0xd4, 0xe3,
 	0xf3, 0xfb, 0xff, 0x10a, 0x119, 0x127, 0x130, 0x138, 0x13f, 0x14a, 0x154, 0x157,
@@ -9361,10 +8720,10 @@
 	0x1465, 0x1473, 0x1480, 0x1485, 0x1490, 0x149d, 0x14a8, 0x14b3, 0x14c2, 0x14c9, 0x14d0, 0x14de,
 	0x14ec, 0x14f2, 0x14f8, 0x1502, 0x1513, 0x151a, 0x1529, 0x1535, 0x153c, 0x1545, 0x155b, 0x1565,
 	0x156f, 0x157d, 0x1581, 0x1584, 0x158d, 0x1595, 0x15a2, 0x15b0, 0x15b7, 0x15bc, 0x15c1, 0x15d0,
-	0x15de, 0x15e3, 0x15f0, 0x15f2, 0x15fe, 0x1609, 0x160d, 0x1618, 0x1621, 0x1628, 0x162d, 0x1636,
-	0x1642, 0x164d, 0x165a, 0x1666, 0x166c, 0x1675, 0x1681, 0x1694, 0x1698, 0x16ad, 0x16c6, 0x16db,
-	0x16f1, 0x1705, 0x1718, 0x172f, 0x174c, 0x1762, 0x1778, 0x1790, 0x17a6, 0x17af, 0x17cc, 0x17e7,
-	0x17f1, 0x1800, 0x1818, 0x1831,
+	0x15de, 0x15e3, 0x15f0, 0x15f0, 0x15f2, 0x15fe, 0x1609, 0x160d, 0x1618, 0x1621, 0x1628, 0x162d,
+	0x1636, 0x1642, 0x164d, 0x165a, 0x1666, 0x166c, 0x1675, 0x1681, 0x1694, 0x1698, 0x16ad, 0x16c6,
+	0x16db, 0x16f1, 0x1705, 0x1718, 0x172f, 0x174c, 0x1762, 0x1778, 0x1790, 0x17a6, 0x17af, 0x17cc,
+	0x17e7, 0x17f1, 0x1800, 0x1818, 0x1831,
 }
 
 const elLangStr = "" +
@@ -9425,7 +8784,7 @@
 	"λαμανδικάΠορτογαλικά ΒραζιλίαςΠορτογαλικά ΕυρώπηςΜολδαβικάΣερβοκροατικάΑπλοποιημ" +
 	"ένα ΚινεζικάΠαραδοσιακά Κινεζικά"
 
-var elLangIdx = []uint16{ // 604 entries
+var elLangIdx = []uint16{ // 605 entries
 	0x0, 0x8, 0x1a, 0x28, 0x3a, 0x42, 0x50, 0x64, 0x72, 0x84, 0x90, 0x9c,
 	0xba, 0xc8, 0xde, 0xf2, 0x102, 0x112, 0x124, 0x136, 0x148, 0x158, 0x16c, 0x17e,
 	0x18c, 0x1a2, 0x1a8, 0x1b6, 0x1df, 0x1eb, 0x1f9, 0x205, 0x217, 0x225, 0x237, 0x23b,
@@ -9473,10 +8832,10 @@
 	0x1cf6, 0x1d02, 0x1d0e, 0x1d1a, 0x1d20, 0x1d30, 0x1d30, 0x1d40, 0x1d50, 0x1d50, 0x1d5e, 0x1d75,
 	0x1d86, 0x1d86, 0x1d92, 0x1d92, 0x1da2, 0x1da2, 0x1db4, 0x1dc4, 0x1dd2, 0x1de4, 0x1e12, 0x1e24,
 	0x1e38, 0x1e4c, 0x1e54, 0x1e5a, 0x1e5a, 0x1e5a, 0x1e5a, 0x1e5a, 0x1e64, 0x1e64, 0x1e72, 0x1e7e,
-	0x1e8e, 0x1e9c, 0x1ea8, 0x1ea8, 0x1eb4, 0x1eb4, 0x1ebe, 0x1ec6, 0x1ed2, 0x1ee6, 0x1ef2, 0x1ef2,
-	0x1f08, 0x1f16, 0x1f2a, 0x1f2a, 0x1f38, 0x1f66, 0x1f70, 0x1faa, 0x1fb2, 0x1fde, 0x2001, 0x2024,
-	0x2047, 0x2062, 0x2094, 0x20b3, 0x20e7, 0x2106, 0x2125, 0x2140, 0x215f, 0x2173, 0x219c, 0x21c1,
-	0x21d3, 0x21ed, 0x2216, 0x223d,
+	0x1e8e, 0x1e9c, 0x1ea8, 0x1ea8, 0x1ea8, 0x1eb4, 0x1eb4, 0x1ebe, 0x1ec6, 0x1ed2, 0x1ee6, 0x1ef2,
+	0x1ef2, 0x1f08, 0x1f16, 0x1f2a, 0x1f2a, 0x1f38, 0x1f66, 0x1f70, 0x1faa, 0x1fb2, 0x1fde, 0x2001,
+	0x2024, 0x2047, 0x2062, 0x2094, 0x20b3, 0x20e7, 0x2106, 0x2125, 0x2140, 0x215f, 0x2173, 0x219c,
+	0x21c1, 0x21d3, 0x21ed, 0x2216, 0x223d,
 }
 
 const enLangStr = "" +
@@ -9503,46 +8862,46 @@
 	"ak TobaGhomalaBejaBembaBetawiBenaBafutBadagaBhojpuriBikolBiniBanjarKomSiksikaBis" +
 	"hnupriyaBakhtiariBrajBrahuiBodoAkooseBuriatBugineseBuluBlinMedumbaCaddoCaribCayu" +
 	"gaAtsamCebuanoChigaChibchaChagataiChuukeseMariChinook JargonChoctawChipewyanCher" +
-	"okeeCheyenneSorani KurdishCopticCapiznonCrimean TurkishKashubianDakotaDargwaTait" +
-	"aDelawareSlaveDogribDinkaZarmaDogriLower SorbianCentral DusunDualaMiddle DutchJo" +
-	"la-FonyiDyulaDazagaEmbuEfikEmilianAncient EgyptianEkajukElamiteMiddle EnglishCen" +
-	"tral YupikEwondoExtremaduranFangFilipinoTornedalen FinnishFonCajun FrenchMiddle " +
-	"FrenchOld FrenchArpitanNorthern FrisianEastern FrisianFriulianGaGagauzGan Chines" +
-	"eGayoGbayaZoroastrian DariGeezGilberteseGilakiMiddle High GermanOld High GermanG" +
-	"oan KonkaniGondiGorontaloGothicGreboAncient GreekSwiss GermanWayuuFrafraGusiiGwi" +
-	"chʼinHaidaHakka ChineseHawaiianFiji HindiHiligaynonHittiteHmongUpper SorbianXian" +
-	"g ChineseHupaIbanIbibioIlokoIngushIngrianJamaican Creole EnglishLojbanNgombaMach" +
-	"ameJudeo-PersianJudeo-ArabicJutishKara-KalpakKabyleKachinJjuKambaKawiKabardianKa" +
-	"nembuTyapMakondeKabuverdianuKenyangKoroKaingangKhasiKhotaneseKoyra ChiiniKhowarK" +
-	"irmanjkiKakoKalenjinKimbunduKomi-PermyakKonkaniKosraeanKpelleKarachay-BalkarKrio" +
-	"Kinaray-aKarelianKurukhShambalaBafiaColognianKumykKutenaiLadinoLangiLahndaLambaL" +
-	"ezghianLingua Franca NovaLigurianLivonianLakotaLombardMongoLoziLatgalianLuba-Lul" +
-	"uaLuisenoLundaLuoMizoLuyiaLiterary ChineseLazMadureseMafaMagahiMaithiliMakasarMa" +
-	"ndingoMasaiMabaMokshaMandarMendeMeruMorisyenMiddle IrishMakhuwa-MeettoMetaʼMicma" +
-	"cMinangkabauManchuManipuriMohawkMossiWestern MariMundangMultiple LanguagesCreekM" +
-	"irandeseMarwariMentawaiMyeneErzyaMazanderaniMin Nan ChineseNeapolitanNamaLow Ger" +
-	"manNewariNiasNiueanAo NagaKwasioNgiemboonNogaiOld NorseNovialNʼKoNorthern SothoN" +
-	"uerClassical NewariNyamweziNyankoleNyoroNzimaOsageOttoman TurkishPangasinanPahla" +
-	"viPampangaPapiamentoPalauanPicardPennsylvania GermanPlautdietschOld PersianPalat" +
-	"ine GermanPhoenicianPiedmontesePonticPohnpeianPrussianOld ProvençalKʼicheʼChimbo" +
-	"razo Highland QuichuaRajasthaniRapanuiRarotonganRomagnolRiffianRomboRomanyRotuma" +
-	"nRusynRovianaAromanianRwaSandaweSakhaSamaritan AramaicSamburuSasakSantaliSaurash" +
-	"traNgambaySanguSicilianScotsSassarese SardinianSenecaSenaSeriSelkupKoyraboro Sen" +
-	"niOld IrishSamogitianTachelhitShanChadian ArabicSidamoLower SilesianSelayarSouth" +
-	"ern SamiLule SamiInari SamiSkolt SamiSoninkeSogdienSranan TongoSererSahoSaterlan" +
-	"d FrisianSukumaSusuSumerianComorianCongo SwahiliClassical SyriacSyriacSilesianTu" +
-	"luTimneTesoTerenoTetumTigreTivTokelauTsakhurKlingonTlingitTalyshTamashekNyasa To" +
-	"ngaTok PisinTuroyoTarokoTsakonianTsimshianMuslim TatTumbukaTuvaluTasawaqTuvinian" +
-	"Central Atlas TamazightUdmurtUgariticUmbunduRootVaiVenetianVepsWest FlemishMain-" +
-	"FranconianVoticVõroVunjoWalserWolayttaWarayWashoWu ChineseKalmykMingrelianSogaYa" +
-	"oYapeseYangbenYembaNheengatuCantoneseZapotecBlissymbolsZeelandicZenagaStandard M" +
-	"oroccan TamazightZuniNo linguistic contentZazaModern Standard ArabicAustrian Ger" +
-	"manSwiss High GermanAustralian EnglishCanadian EnglishBritish EnglishAmerican En" +
-	"glishLatin American SpanishEuropean SpanishMexican SpanishCanadian FrenchSwiss F" +
-	"renchFlemishBrazilian PortugueseEuropean PortugueseMoldavianSerbo-CroatianSimpli" +
-	"fied ChineseTraditional Chinese"
+	"okeeCheyenneCentral KurdishCopticCapiznonCrimean TurkishKashubianDakotaDargwaTai" +
+	"taDelawareSlaveDogribDinkaZarmaDogriLower SorbianCentral DusunDualaMiddle DutchJ" +
+	"ola-FonyiDyulaDazagaEmbuEfikEmilianAncient EgyptianEkajukElamiteMiddle EnglishCe" +
+	"ntral YupikEwondoExtremaduranFangFilipinoTornedalen FinnishFonCajun FrenchMiddle" +
+	" FrenchOld FrenchArpitanNorthern FrisianEastern FrisianFriulianGaGagauzGan Chine" +
+	"seGayoGbayaZoroastrian DariGeezGilberteseGilakiMiddle High GermanOld High German" +
+	"Goan KonkaniGondiGorontaloGothicGreboAncient GreekSwiss GermanWayuuFrafraGusiiGw" +
+	"ichʼinHaidaHakka ChineseHawaiianFiji HindiHiligaynonHittiteHmongUpper SorbianXia" +
+	"ng ChineseHupaIbanIbibioIlokoIngushIngrianJamaican Creole EnglishLojbanNgombaMac" +
+	"hameJudeo-PersianJudeo-ArabicJutishKara-KalpakKabyleKachinJjuKambaKawiKabardianK" +
+	"anembuTyapMakondeKabuverdianuKenyangKoroKaingangKhasiKhotaneseKoyra ChiiniKhowar" +
+	"KirmanjkiKakoKalenjinKimbunduKomi-PermyakKonkaniKosraeanKpelleKarachay-BalkarKri" +
+	"oKinaray-aKarelianKurukhShambalaBafiaColognianKumykKutenaiLadinoLangiLahndaLamba" +
+	"LezghianLingua Franca NovaLigurianLivonianLakotaLombardMongoLoziLatgalianLuba-Lu" +
+	"luaLuisenoLundaLuoMizoLuyiaLiterary ChineseLazMadureseMafaMagahiMaithiliMakasarM" +
+	"andingoMasaiMabaMokshaMandarMendeMeruMorisyenMiddle IrishMakhuwa-MeettoMetaʼMicm" +
+	"acMinangkabauManchuManipuriMohawkMossiWestern MariMundangMultiple LanguagesCreek" +
+	"MirandeseMarwariMentawaiMyeneErzyaMazanderaniMin Nan ChineseNeapolitanNamaLow Ge" +
+	"rmanNewariNiasNiueanAo NagaKwasioNgiemboonNogaiOld NorseNovialNʼKoNorthern Sotho" +
+	"NuerClassical NewariNyamweziNyankoleNyoroNzimaOsageOttoman TurkishPangasinanPahl" +
+	"aviPampangaPapiamentoPalauanPicardPennsylvania GermanPlautdietschOld PersianPala" +
+	"tine GermanPhoenicianPiedmontesePonticPohnpeianPrussianOld ProvençalKʼicheʼChimb" +
+	"orazo Highland QuichuaRajasthaniRapanuiRarotonganRomagnolRiffianRomboRomanyRotum" +
+	"anRusynRovianaAromanianRwaSandaweSakhaSamaritan AramaicSamburuSasakSantaliSauras" +
+	"htraNgambaySanguSicilianScotsSassarese SardinianSenecaSenaSeriSelkupKoyraboro Se" +
+	"nniOld IrishSamogitianTachelhitShanChadian ArabicSidamoLower SilesianSelayarSout" +
+	"hern SamiLule SamiInari SamiSkolt SamiSoninkeSogdienSranan TongoSererSahoSaterla" +
+	"nd FrisianSukumaSusuSumerianComorianCongo SwahiliClassical SyriacSyriacSilesianT" +
+	"uluTimneTesoTerenoTetumTigreTivTokelauTsakhurKlingonTlingitTalyshTamashekNyasa T" +
+	"ongaTok PisinTuroyoTarokoTsakonianTsimshianMuslim TatTumbukaTuvaluTasawaqTuvinia" +
+	"nCentral Atlas TamazightUdmurtUgariticUmbunduRootVaiVenetianVepsWest FlemishMain" +
+	"-FranconianVoticVõroVunjoWalserWolayttaWarayWashoWarlpiriWu ChineseKalmykMingrel" +
+	"ianSogaYaoYapeseYangbenYembaNheengatuCantoneseZapotecBlissymbolsZeelandicZenagaS" +
+	"tandard Moroccan TamazightZuniNo linguistic contentZazaModern Standard ArabicAus" +
+	"trian GermanSwiss High GermanAustralian EnglishCanadian EnglishBritish EnglishAm" +
+	"erican EnglishLatin American SpanishEuropean SpanishMexican SpanishCanadian Fren" +
+	"chSwiss FrenchFlemishBrazilian PortugueseEuropean PortugueseMoldavianSerbo-Croat" +
+	"ianSimplified ChineseTraditional Chinese"
 
-var enLangIdx = []uint16{ // 604 entries
+var enLangIdx = []uint16{ // 605 entries
 	0x0, 0x4, 0xd, 0x14, 0x1d, 0x21, 0x28, 0x31, 0x37, 0x3f, 0x45, 0x4b,
 	0x56, 0x5d, 0x67, 0x70, 0x77, 0x7e, 0x85, 0x8c, 0x92, 0x99, 0xa0, 0xa7,
 	0xaf, 0xb7, 0xbb, 0xc0, 0xcd, 0xd4, 0xd9, 0xdf, 0xe5, 0xeb, 0xf3, 0xf6,
@@ -9564,250 +8923,143 @@
 	0x650, 0x654, 0x659, 0x65f, 0x663, 0x668, 0x66e, 0x676, 0x67b, 0x67f, 0x685, 0x688,
 	0x68f, 0x69a, 0x6a3, 0x6a7, 0x6ad, 0x6b1, 0x6b7, 0x6bd, 0x6c5, 0x6c9, 0x6cd, 0x6d4,
 	0x6d9, 0x6de, 0x6e4, 0x6e9, 0x6f0, 0x6f5, 0x6fc, 0x704, 0x70c, 0x710, 0x71e, 0x725,
-	0x72e, 0x736, 0x73e, 0x74c, 0x752, 0x75a, 0x769, 0x772, 0x778, 0x77e, 0x783, 0x78b,
-	0x790, 0x796, 0x79b, 0x7a0, 0x7a5, 0x7b2, 0x7bf, 0x7c4, 0x7d0, 0x7da, 0x7df, 0x7e5,
-	0x7e9, 0x7ed, 0x7f4, 0x804, 0x80a, 0x811, 0x81f, 0x82c, 0x832, 0x83e, 0x842, 0x84a,
-	0x85c, 0x85f, 0x86b, 0x878, 0x882, 0x889, 0x899, 0x8a8, 0x8b0, 0x8b2, 0x8b8, 0x8c3,
-	0x8c7, 0x8cc, 0x8dc, 0x8e0, 0x8ea, 0x8f0, 0x902, 0x911, 0x91d, 0x922, 0x92b, 0x931,
-	0x936, 0x943, 0x94f, 0x954, 0x95a, 0x95f, 0x968, 0x96d, 0x97a, 0x982, 0x98c, 0x996,
-	0x99d, 0x9a2, 0x9af, 0x9bc, 0x9c0, 0x9c4, 0x9ca, 0x9cf, 0x9d5, 0x9dc, 0x9f3, 0x9f9,
-	0x9ff, 0xa06, 0xa13, 0xa1f, 0xa25, 0xa30, 0xa36, 0xa3c, 0xa3f, 0xa44, 0xa48, 0xa51,
-	0xa58, 0xa5c, 0xa63, 0xa6f, 0xa76, 0xa7a, 0xa82, 0xa87, 0xa90, 0xa9c, 0xaa2, 0xaab,
-	0xaaf, 0xab7, 0xabf, 0xacb, 0xad2, 0xada, 0xae0, 0xaef, 0xaf3, 0xafc, 0xb04, 0xb0a,
-	0xb12, 0xb17, 0xb20, 0xb25, 0xb2c, 0xb32, 0xb37, 0xb3d, 0xb42, 0xb4a, 0xb5c, 0xb64,
-	0xb6c, 0xb72, 0xb79, 0xb7e, 0xb82, 0xb8b, 0xb95, 0xb9c, 0xba1, 0xba4, 0xba8, 0xbad,
-	0xbbd, 0xbc0, 0xbc8, 0xbcc, 0xbd2, 0xbda, 0xbe1, 0xbe9, 0xbee, 0xbf2, 0xbf8, 0xbfe,
-	0xc03, 0xc07, 0xc0f, 0xc1b, 0xc29, 0xc2f, 0xc35, 0xc40, 0xc46, 0xc4e, 0xc54, 0xc59,
-	0xc65, 0xc6c, 0xc7e, 0xc83, 0xc8c, 0xc93, 0xc9b, 0xca0, 0xca5, 0xcb0, 0xcbf, 0xcc9,
-	0xccd, 0xcd7, 0xcdd, 0xce1, 0xce7, 0xcee, 0xcf4, 0xcfd, 0xd02, 0xd0b, 0xd11, 0xd16,
-	0xd24, 0xd28, 0xd38, 0xd40, 0xd48, 0xd4d, 0xd52, 0xd57, 0xd66, 0xd70, 0xd77, 0xd7f,
-	0xd89, 0xd90, 0xd96, 0xda9, 0xdb5, 0xdc0, 0xdcf, 0xdd9, 0xde4, 0xdea, 0xdf3, 0xdfb,
-	0xe09, 0xe12, 0xe2d, 0xe37, 0xe3e, 0xe48, 0xe50, 0xe57, 0xe5c, 0xe62, 0xe69, 0xe6e,
-	0xe75, 0xe7e, 0xe81, 0xe88, 0xe8d, 0xe9e, 0xea5, 0xeaa, 0xeb1, 0xebb, 0xec2, 0xec7,
-	0xecf, 0xed4, 0xee7, 0xeed, 0xef1, 0xef5, 0xefb, 0xf0a, 0xf13, 0xf1d, 0xf26, 0xf2a,
-	0xf38, 0xf3e, 0xf4c, 0xf53, 0xf60, 0xf69, 0xf73, 0xf7d, 0xf84, 0xf8b, 0xf97, 0xf9c,
-	0xfa0, 0xfb1, 0xfb7, 0xfbb, 0xfc3, 0xfcb, 0xfd8, 0xfe8, 0xfee, 0xff6, 0xffa, 0xfff,
-	0x1003, 0x1009, 0x100e, 0x1013, 0x1016, 0x101d, 0x1024, 0x102b, 0x1032, 0x1038, 0x1040, 0x104b,
-	0x1054, 0x105a, 0x1060, 0x1069, 0x1072, 0x107c, 0x1083, 0x1089, 0x1090, 0x1098, 0x10af, 0x10b5,
-	0x10bd, 0x10c4, 0x10c8, 0x10cb, 0x10d3, 0x10d7, 0x10e3, 0x10f2, 0x10f7, 0x10fc, 0x1101, 0x1107,
-	0x110f, 0x1114, 0x1119, 0x1123, 0x1129, 0x1133, 0x1137, 0x113a, 0x1140, 0x1147, 0x114c, 0x1155,
-	0x115e, 0x1165, 0x1170, 0x1179, 0x117f, 0x119a, 0x119e, 0x11b3, 0x11b7, 0x11cd, 0x11dc, 0x11ed,
-	0x11ff, 0x120f, 0x121e, 0x122e, 0x1244, 0x1254, 0x1263, 0x1272, 0x127e, 0x1285, 0x1299, 0x12ac,
-	0x12b5, 0x12c3, 0x12d5, 0x12e8,
-}
-
-const enGBLangStr = "" +
-	"Walamo"
-
-var enGBLangIdx = []uint16{ // 565 entries
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x6,
+	0x72e, 0x736, 0x73e, 0x74d, 0x753, 0x75b, 0x76a, 0x773, 0x779, 0x77f, 0x784, 0x78c,
+	0x791, 0x797, 0x79c, 0x7a1, 0x7a6, 0x7b3, 0x7c0, 0x7c5, 0x7d1, 0x7db, 0x7e0, 0x7e6,
+	0x7ea, 0x7ee, 0x7f5, 0x805, 0x80b, 0x812, 0x820, 0x82d, 0x833, 0x83f, 0x843, 0x84b,
+	0x85d, 0x860, 0x86c, 0x879, 0x883, 0x88a, 0x89a, 0x8a9, 0x8b1, 0x8b3, 0x8b9, 0x8c4,
+	0x8c8, 0x8cd, 0x8dd, 0x8e1, 0x8eb, 0x8f1, 0x903, 0x912, 0x91e, 0x923, 0x92c, 0x932,
+	0x937, 0x944, 0x950, 0x955, 0x95b, 0x960, 0x969, 0x96e, 0x97b, 0x983, 0x98d, 0x997,
+	0x99e, 0x9a3, 0x9b0, 0x9bd, 0x9c1, 0x9c5, 0x9cb, 0x9d0, 0x9d6, 0x9dd, 0x9f4, 0x9fa,
+	0xa00, 0xa07, 0xa14, 0xa20, 0xa26, 0xa31, 0xa37, 0xa3d, 0xa40, 0xa45, 0xa49, 0xa52,
+	0xa59, 0xa5d, 0xa64, 0xa70, 0xa77, 0xa7b, 0xa83, 0xa88, 0xa91, 0xa9d, 0xaa3, 0xaac,
+	0xab0, 0xab8, 0xac0, 0xacc, 0xad3, 0xadb, 0xae1, 0xaf0, 0xaf4, 0xafd, 0xb05, 0xb0b,
+	0xb13, 0xb18, 0xb21, 0xb26, 0xb2d, 0xb33, 0xb38, 0xb3e, 0xb43, 0xb4b, 0xb5d, 0xb65,
+	0xb6d, 0xb73, 0xb7a, 0xb7f, 0xb83, 0xb8c, 0xb96, 0xb9d, 0xba2, 0xba5, 0xba9, 0xbae,
+	0xbbe, 0xbc1, 0xbc9, 0xbcd, 0xbd3, 0xbdb, 0xbe2, 0xbea, 0xbef, 0xbf3, 0xbf9, 0xbff,
+	0xc04, 0xc08, 0xc10, 0xc1c, 0xc2a, 0xc30, 0xc36, 0xc41, 0xc47, 0xc4f, 0xc55, 0xc5a,
+	0xc66, 0xc6d, 0xc7f, 0xc84, 0xc8d, 0xc94, 0xc9c, 0xca1, 0xca6, 0xcb1, 0xcc0, 0xcca,
+	0xcce, 0xcd8, 0xcde, 0xce2, 0xce8, 0xcef, 0xcf5, 0xcfe, 0xd03, 0xd0c, 0xd12, 0xd17,
+	0xd25, 0xd29, 0xd39, 0xd41, 0xd49, 0xd4e, 0xd53, 0xd58, 0xd67, 0xd71, 0xd78, 0xd80,
+	0xd8a, 0xd91, 0xd97, 0xdaa, 0xdb6, 0xdc1, 0xdd0, 0xdda, 0xde5, 0xdeb, 0xdf4, 0xdfc,
+	0xe0a, 0xe13, 0xe2e, 0xe38, 0xe3f, 0xe49, 0xe51, 0xe58, 0xe5d, 0xe63, 0xe6a, 0xe6f,
+	0xe76, 0xe7f, 0xe82, 0xe89, 0xe8e, 0xe9f, 0xea6, 0xeab, 0xeb2, 0xebc, 0xec3, 0xec8,
+	0xed0, 0xed5, 0xee8, 0xeee, 0xef2, 0xef6, 0xefc, 0xf0b, 0xf14, 0xf1e, 0xf27, 0xf2b,
+	0xf39, 0xf3f, 0xf4d, 0xf54, 0xf61, 0xf6a, 0xf74, 0xf7e, 0xf85, 0xf8c, 0xf98, 0xf9d,
+	0xfa1, 0xfb2, 0xfb8, 0xfbc, 0xfc4, 0xfcc, 0xfd9, 0xfe9, 0xfef, 0xff7, 0xffb, 0x1000,
+	0x1004, 0x100a, 0x100f, 0x1014, 0x1017, 0x101e, 0x1025, 0x102c, 0x1033, 0x1039, 0x1041, 0x104c,
+	0x1055, 0x105b, 0x1061, 0x106a, 0x1073, 0x107d, 0x1084, 0x108a, 0x1091, 0x1099, 0x10b0, 0x10b6,
+	0x10be, 0x10c5, 0x10c9, 0x10cc, 0x10d4, 0x10d8, 0x10e4, 0x10f3, 0x10f8, 0x10fd, 0x1102, 0x1108,
+	0x1110, 0x1115, 0x111a, 0x1122, 0x112c, 0x1132, 0x113c, 0x1140, 0x1143, 0x1149, 0x1150, 0x1155,
+	0x115e, 0x1167, 0x116e, 0x1179, 0x1182, 0x1188, 0x11a3, 0x11a7, 0x11bc, 0x11c0, 0x11d6, 0x11e5,
+	0x11f6, 0x1208, 0x1218, 0x1227, 0x1237, 0x124d, 0x125d, 0x126c, 0x127b, 0x1287, 0x128e, 0x12a2,
+	0x12b5, 0x12be, 0x12cc, 0x12de, 0x12f1,
 }
 
 const esLangStr = "" +
-	"afarabjasioavésticoafrikáansakanamáricoaragonésárabeasamésavaraimaraazeríbashkir" +
-	"bielorrusobúlgarobislamabambarabengalítibetanobretónbosniocatalánchechenochamorr" +
-	"ocorsocreechecoeslavo eclesiásticochuvashgalésdanésalemándivehidzongkhaewégriego" +
-	"inglésesperantoespañolestonioeuskerapersafulafinésfiyianoferoésfrancésfrisón occ" +
-	"identalirlandésgaélico escocésgallegoguaranígujaratigaélico manéshausahebreohind" +
-	"ihiri motucroatahaitianohúngaroarmeniohererointerlinguaindonesiointerlingueigboy" +
-	"i de Sichuáninupiaqidoislandésitalianoinuktitutjaponésjavanésgeorgianokongokikuy" +
-	"ukuanyamakazajogroenlandésjemercanaréscoreanokanuricachemirokurdokomicórnicokirg" +
-	"uíslatínluxemburguésgandalimburguéslingalalaosianolituanoluba-katangaletónmalgac" +
-	"hemarshalésmaorímacedoniomalayalammongolmarathimalayomaltésbirmanonauruanondebel" +
-	"e septentrionalnepalíndonganeerlandésnynorsk noruegobokmal noruegondebele meridi" +
-	"onalnavajonyanjaoccitanoojibwaoromooriyaoséticopunjabípalipolacopastúnportuguésq" +
-	"uechuaretorrománicokiroundirumanorusokinyarwandasánscritosardosindhisami septent" +
-	"rionalsangocingaléseslovacoeslovenosamoanoshonasomalíalbanésserbiosiswatisesotho" +
-	" meridionalsundanéssuecoswahilitamiltelugutayikotailandéstigriñaturcomanosetchwa" +
-	"natonganoturcotsongatártarotahitianouigurucranianourduuzbekovendavietnamitavolap" +
-	"ükvalónwólofxhosayídishyorubazhuangchinozulúacehnésacoliadangmeadigeoafrihiliagh" +
-	"emainuacadioaleutianoaltái meridionalinglés antiguoangikaarameoaraucanoarapahoar" +
-	"ahuacoasuasturianoavadhibaluchibalinésbasabamunghomalabejabembabenabafutbhojpuri" +
-	"bicolbinikomsiksikabrajbodoakooseburiatbuginésbulublinmedumbacaddocaribecayugaat" +
-	"samcebuanochigachibchachagatáitrukésmaríjerga chinukchoctawchipewyancheroquichey" +
-	"enekurdo soranicoptotártaro de Crimeacasubiodakotadargvataitadelawareslavedogrib" +
-	"dinkazarmadogrisorbio inferiordualaneerlandés medievaljola-fonyidiuladazagaembue" +
-	"fikegipcio antiguoekajukelamitainglés medievalewondofangfilipinofonfrancés medie" +
-	"valfrancés antiguofrisón septentrionalfrisón orientalfriulanogagagauzogayogbayag" +
-	"eezgilbertésalemán de la alta edad mediaalemán de la alta edad antiguagondigoron" +
-	"talogóticogrebogriego antiguoalemán suizogusiikutchinhaidahawaianohiligaynonhiti" +
-	"tahmongsorbio superiorhupaibanibibioilocanoingushlojbanngombamachamejudeo-persaj" +
-	"udeo-árabekarakalpakocabilakachinjjukambakawikabardianokanembutyapmakondecriollo" +
-	" caboverdianokorokhasikotanéskoyra chiinikakokalenjinkimbundukomi permiokonkaník" +
-	"osraeanokpellekarachay-balkarcareliokurukhshambalabafiakölschkumykkutenailadinol" +
-	"angilahndalambalezgianolakotamongoloziluba-lulualuiseñolundaluolushailuyiamaduré" +
-	"smafamagahimaithilimacasarmandingomasáimabamokshamandarmendemerucriollo mauricia" +
-	"noirlandés medievalmakhuwa-meettometa’micmacminangkabaumanchúmanipurimohawkmossi" +
-	"mundanglenguas múltiplescreekmirandésmarwarimyeneerzyanapolitanonamabajo alemánn" +
-	"ewariniasniueanokwasiongiemboonnogainórdico antiguon’kosotho septentrionalnuerne" +
-	"wari clásiconyamwezinyankolenyoronzimaosageturco otomanopangasinánpahlavipampang" +
-	"apapiamentopalauanopersa antiguofeniciopohnpeianoprovenzal antiguoquichérajastha" +
-	"nirapanuirarotonganoromboromaníarrumanorwasandawesakhaarameo samaritanosamburusa" +
-	"saksantalingambaysangusicilianoescocéssenecasenaselkupkoyraboro senniirlandés an" +
-	"tiguotashelhitshanárabe chadianosidamosami meridionalsami lulesami inarisami sko" +
-	"ltsoninkésogdianosranan tongoserersahosukumasususumeriocomorenseswahili del Cong" +
-	"osiríaco clásicosiriacotemnetesoterenotetúntigrétivtokelauanoklingontlingittamas" +
-	"hektonga del Nyasatok pisintarokotsimshianotumbukatuvaluanotasawaqtuvinianotamaz" +
-	"ight del Marruecos Centraludmurtugaríticoumbunduraízvaivóticokivunjowalserwalamo" +
-	"waraywashokalmyksogayaoyapésyangbenyembacantonészapotecosímbolos Blisszenagatama" +
-	"zightzunisin contenido lingüísticozazakiárabe estándar modernoalemán austríacoal" +
-	"to alemán de Suizainglés australianoinglés canadienseinglés británicoinglés esta" +
-	"dounidenseespañol de Américaespañol de Españaespañol de Méxicofrancés canadiense" +
-	"francés suizoflamencoportugués de Brasilportugués de Portugalmoldavoserbocroatac" +
-	"hino simplificadochino tradicional"
+	"afarabjasioavésticoafrikáansakanamáricoaragonésárabeasamésavaraimaraazerbaiyanob" +
+	"askirbielorrusobúlgarobislamabambarabengalítibetanobretónbosniocatalánchechenoch" +
+	"amorrocorsocreechecoeslavo eclesiásticochuvashgalésdanésalemándivehidzongkhaewég" +
+	"riegoinglésesperantoespañolestonioeuskerapersafulafinésfiyianoferoésfrancésfrisó" +
+	"n occidentalirlandésgaélico escocésgallegoguaranígujaratimanéshausahebreohindihi" +
+	"ri motucroatahaitianohúngaroarmeniohererointerlinguaindonesiointerlingueigboyi d" +
+	"e Sichuáninupiaqidoislandésitalianoinuktitutjaponésjavanésgeorgianokongokikuyuku" +
+	"anyamakazajogroenlandésjemercanaréscoreanokanuricachemirokurdokomicórnicokirguís" +
+	"latínluxemburguésgandalimburguéslingalalaosianolituanoluba-katangaletónmalgachem" +
+	"arshalésmaorímacedoniomalayalammongolmaratímalayomaltésbirmanonauruanondebele se" +
+	"ptentrionalnepalíndonganeerlandésnynorsk noruegobokmal noruegondebele meridional" +
+	"navajonyanjaoccitanoojibwaoromooriyaoséticopanyabípalipolacopastúnportuguésquech" +
+	"uaretorrománicokiroundirumanorusokinyarwandasánscritosardosindhisami septentrion" +
+	"alsangocingaléseslovacoeslovenosamoanoshonasomalíalbanésserbiosiswatisesotho mer" +
+	"idionalsundanéssuecoswahilitamiltelugutayikotailandéstigriñaturcomanosetchwanato" +
+	"nganoturcotsongatártarotahitianouigurucranianourduuzbekovendavietnamitavolapükva" +
+	"lónwólofxhosayídishyorubazhuangchinozulúacehnésacoliadangmeadigeoafrihiliaghemai" +
+	"nuacadioaleutianoaltái meridionalinglés antiguoangikaarameomapuchearapahoarahuac" +
+	"oasuasturianoavadhibaluchibalinésbasabamunghomalabejabembabenabafutbhojpuribicol" +
+	"binikomsiksikabrajbodoakooseburiatbuginésbulublinmedumbacaddocaribecayugaatsamce" +
+	"buanochigachibchachagatáitrukésmaríjerga chinukchoctawchipewyancheroquicheyeneku" +
+	"rdo soranicoptotártaro de Crimeacasubiodakotadargvataitadelawareslavedogribdinka" +
+	"zarmadogribajo sorbiodualaneerlandés medievaljola-fonyidiuladazagaembuefikegipci" +
+	"o antiguoekajukelamitainglés medievalewondofangfilipinofonfrancés medievalfrancé" +
+	"s antiguofrisón septentrionalfrisón orientalfriulanogagagauzogayogbayageezgilber" +
+	"tésalemán de la alta edad mediaalemán de la alta edad antiguagondigorontalogótic" +
+	"ogrebogriego antiguoalemán suizogusiikutchinhaidahawaianohiligaynonhititahmongal" +
+	"to sorbiohupaibanibibioilocanoingushlojbanngombamachamejudeo-persajudeo-árabekar" +
+	"akalpakocabilakachinjjukambakawikabardianokanembutyapmakondecriollo caboverdiano" +
+	"korokhasikotanéskoyra chiinikakokalenjinkimbundukomi permiokonkaníkosraeanokpell" +
+	"ekarachay-balkarcareliokurukhshambalabafiakölschkumykkutenailadinolangilahndalam" +
+	"balezgianolakotamongoloziluba-lulualuiseñolundaluolushailuyiamadurésmafamagahima" +
+	"ithilimacasarmandingomasáimabamokshamandarmendemerucriollo mauricianoirlandés me" +
+	"dievalmakhuwa-meettometa’micmacminangkabaumanchúmanipurimohawkmossimundanglengua" +
+	"s múltiplescreekmirandésmarwarimyeneerzyanapolitanonamabajo alemánnewariniasniue" +
+	"anokwasiongiemboonnogainórdico antiguon’kosotho septentrionalnuernewari clásicon" +
+	"yamwezinyankolenyoronzimaosageturco otomanopangasinánpahlavipampangapapiamentopa" +
+	"lauanopersa antiguofeniciopohnpeianoprovenzal antiguoquichérajasthanirapanuiraro" +
+	"tonganoromboromaníarrumanorwasandawesakhaarameo samaritanosamburusasaksantalinga" +
+	"mbaysangusicilianoescocéssenecasenaselkupkoyraboro senniirlandés antiguotashelhi" +
+	"tshanárabe chadianosidamosami meridionalsami lulesami inarisami skoltsoninkésogd" +
+	"ianosranan tongoserersahosukumasususumeriocomorenseswahili del Congosiríaco clás" +
+	"icosiriacotemnetesoterenotetúntigrétivtokelauanoklingontlingittamashektonga del " +
+	"Nyasatok pisintarokotsimshianotumbukatuvaluanotasawaqtuvinianotamazight del Marr" +
+	"uecos Centraludmurtugaríticoumbunduraízvaivóticovunjowalserwalamowaraywashokalmy" +
+	"ksogayaoyapésyangbenyembacantonészapotecosímbolos Blisszenagatamazight estándar " +
+	"marroquízunisin contenido lingüísticozazakiárabe estándar modernoalemán austríac" +
+	"oalto alemán suizoinglés australianoinglés canadienseinglés británicoinglés esta" +
+	"dounidenseespañol latinoamericanoespañol de Españaespañol de Méxicofrancés canad" +
+	"iensefrancés suizoflamencoportugués de Brasilportugués de Portugalmoldavoserbocr" +
+	"oatachino simplificadochino tradicional"
 
-var esLangIdx = []uint16{ // 604 entries
+var esLangIdx = []uint16{ // 605 entries
 	0x0, 0x4, 0xb, 0x14, 0x1e, 0x22, 0x2a, 0x33, 0x39, 0x40, 0x44, 0x4a,
-	0x50, 0x57, 0x61, 0x69, 0x70, 0x77, 0x7f, 0x87, 0x8e, 0x94, 0x9c, 0xa4,
-	0xac, 0xb1, 0xb5, 0xba, 0xce, 0xd5, 0xdb, 0xe1, 0xe8, 0xee, 0xf6, 0xfa,
-	0x100, 0x107, 0x110, 0x118, 0x11f, 0x126, 0x12b, 0x12f, 0x135, 0x13c, 0x143, 0x14b,
-	0x15d, 0x166, 0x177, 0x17e, 0x186, 0x18e, 0x19d, 0x1a2, 0x1a8, 0x1ad, 0x1b6, 0x1bc,
-	0x1c4, 0x1cc, 0x1d3, 0x1d9, 0x1e4, 0x1ed, 0x1f8, 0x1fc, 0x20a, 0x211, 0x214, 0x21d,
-	0x225, 0x22e, 0x236, 0x23e, 0x247, 0x24c, 0x252, 0x25a, 0x260, 0x26c, 0x271, 0x279,
-	0x280, 0x286, 0x28f, 0x294, 0x298, 0x2a0, 0x2a8, 0x2ae, 0x2bb, 0x2c0, 0x2cb, 0x2d2,
-	0x2da, 0x2e1, 0x2ed, 0x2f3, 0x2fb, 0x305, 0x30b, 0x314, 0x31d, 0x323, 0x32a, 0x330,
-	0x337, 0x33e, 0x346, 0x35b, 0x362, 0x368, 0x373, 0x382, 0x390, 0x3a2, 0x3a8, 0x3ae,
-	0x3b6, 0x3bc, 0x3c1, 0x3c6, 0x3ce, 0x3d6, 0x3da, 0x3e0, 0x3e7, 0x3f1, 0x3f8, 0x406,
-	0x40e, 0x414, 0x418, 0x423, 0x42d, 0x432, 0x438, 0x44a, 0x44f, 0x458, 0x460, 0x468,
-	0x46f, 0x474, 0x47b, 0x483, 0x489, 0x490, 0x4a2, 0x4ab, 0x4b0, 0x4b7, 0x4bc, 0x4c2,
-	0x4c8, 0x4d2, 0x4da, 0x4e3, 0x4ec, 0x4f3, 0x4f8, 0x4fe, 0x506, 0x50f, 0x514, 0x51d,
-	0x521, 0x527, 0x52c, 0x536, 0x53e, 0x544, 0x54a, 0x54f, 0x556, 0x55c, 0x562, 0x567,
-	0x56c, 0x574, 0x579, 0x580, 0x586, 0x586, 0x58e, 0x593, 0x597, 0x59d, 0x59d, 0x5a6,
-	0x5a6, 0x5b7, 0x5c6, 0x5cc, 0x5d2, 0x5da, 0x5da, 0x5e1, 0x5e1, 0x5e9, 0x5e9, 0x5e9,
-	0x5ec, 0x5ec, 0x5f5, 0x5f5, 0x5fb, 0x5fb, 0x602, 0x60a, 0x60a, 0x60e, 0x613, 0x613,
-	0x61a, 0x61e, 0x623, 0x623, 0x627, 0x62c, 0x62c, 0x634, 0x639, 0x63d, 0x63d, 0x640,
-	0x647, 0x647, 0x647, 0x64b, 0x64b, 0x64f, 0x655, 0x65b, 0x663, 0x667, 0x66b, 0x672,
-	0x677, 0x67d, 0x683, 0x688, 0x68f, 0x694, 0x69b, 0x6a4, 0x6ab, 0x6b0, 0x6bc, 0x6c3,
-	0x6cc, 0x6d4, 0x6db, 0x6e7, 0x6ec, 0x6ec, 0x6fe, 0x705, 0x70b, 0x711, 0x716, 0x71e,
-	0x723, 0x729, 0x72e, 0x733, 0x738, 0x747, 0x747, 0x74c, 0x760, 0x76a, 0x76f, 0x775,
-	0x779, 0x77d, 0x77d, 0x78c, 0x792, 0x799, 0x7a9, 0x7a9, 0x7af, 0x7af, 0x7b3, 0x7bb,
-	0x7bb, 0x7be, 0x7be, 0x7cf, 0x7df, 0x7df, 0x7f4, 0x804, 0x80c, 0x80e, 0x815, 0x815,
-	0x819, 0x81e, 0x81e, 0x822, 0x82c, 0x82c, 0x849, 0x868, 0x868, 0x86d, 0x876, 0x87d,
-	0x882, 0x890, 0x89d, 0x89d, 0x89d, 0x8a2, 0x8a9, 0x8ae, 0x8ae, 0x8b6, 0x8b6, 0x8c0,
-	0x8c6, 0x8cb, 0x8da, 0x8da, 0x8de, 0x8e2, 0x8e8, 0x8ef, 0x8f5, 0x8f5, 0x8f5, 0x8fb,
-	0x901, 0x908, 0x913, 0x91f, 0x91f, 0x92a, 0x930, 0x936, 0x939, 0x93e, 0x942, 0x94c,
-	0x953, 0x957, 0x95e, 0x972, 0x972, 0x976, 0x976, 0x97b, 0x983, 0x98f, 0x98f, 0x98f,
-	0x993, 0x99b, 0x9a3, 0x9ae, 0x9b6, 0x9bf, 0x9c5, 0x9d4, 0x9d4, 0x9d4, 0x9db, 0x9e1,
-	0x9e9, 0x9ee, 0x9f5, 0x9fa, 0xa01, 0xa07, 0xa0c, 0xa12, 0xa17, 0xa1f, 0xa1f, 0xa1f,
-	0xa1f, 0xa25, 0xa25, 0xa2a, 0xa2e, 0xa2e, 0xa38, 0xa40, 0xa45, 0xa48, 0xa4e, 0xa53,
-	0xa53, 0xa53, 0xa5b, 0xa5f, 0xa65, 0xa6d, 0xa74, 0xa7c, 0xa82, 0xa86, 0xa8c, 0xa92,
-	0xa97, 0xa9b, 0xaad, 0xabf, 0xacd, 0xad4, 0xada, 0xae5, 0xaec, 0xaf4, 0xafa, 0xaff,
-	0xaff, 0xb06, 0xb18, 0xb1d, 0xb26, 0xb2d, 0xb2d, 0xb32, 0xb37, 0xb37, 0xb37, 0xb41,
-	0xb45, 0xb51, 0xb57, 0xb5b, 0xb62, 0xb62, 0xb68, 0xb71, 0xb76, 0xb86, 0xb86, 0xb8c,
-	0xb9f, 0xba3, 0xbb2, 0xbba, 0xbc2, 0xbc7, 0xbcc, 0xbd1, 0xbde, 0xbe9, 0xbf0, 0xbf8,
-	0xc02, 0xc0a, 0xc0a, 0xc0a, 0xc0a, 0xc17, 0xc17, 0xc1e, 0xc1e, 0xc1e, 0xc28, 0xc28,
-	0xc39, 0xc40, 0xc40, 0xc4a, 0xc51, 0xc5c, 0xc5c, 0xc5c, 0xc61, 0xc68, 0xc68, 0xc68,
-	0xc68, 0xc70, 0xc73, 0xc7a, 0xc7f, 0xc90, 0xc97, 0xc9c, 0xca3, 0xca3, 0xcaa, 0xcaf,
-	0xcb8, 0xcc0, 0xcc0, 0xcc6, 0xcca, 0xcca, 0xcd0, 0xcdf, 0xcf0, 0xcf0, 0xcf9, 0xcfd,
-	0xd0c, 0xd12, 0xd12, 0xd12, 0xd21, 0xd2a, 0xd34, 0xd3e, 0xd46, 0xd4e, 0xd5a, 0xd5f,
-	0xd63, 0xd63, 0xd69, 0xd6d, 0xd74, 0xd7d, 0xd8e, 0xd9f, 0xda6, 0xda6, 0xda6, 0xdab,
-	0xdaf, 0xdb5, 0xdbb, 0xdc1, 0xdc4, 0xdce, 0xdce, 0xdd5, 0xddc, 0xddc, 0xde4, 0xdf3,
-	0xdfc, 0xdfc, 0xe02, 0xe02, 0xe0c, 0xe0c, 0xe13, 0xe1c, 0xe23, 0xe2c, 0xe4b, 0xe51,
-	0xe5b, 0xe62, 0xe67, 0xe6a, 0xe6a, 0xe6a, 0xe6a, 0xe6a, 0xe71, 0xe71, 0xe78, 0xe7e,
-	0xe84, 0xe89, 0xe8e, 0xe8e, 0xe94, 0xe94, 0xe98, 0xe9b, 0xea1, 0xea8, 0xead, 0xead,
-	0xeb6, 0xebe, 0xecd, 0xecd, 0xed3, 0xedc, 0xee0, 0xefb, 0xf01, 0xf19, 0xf2b, 0xf40,
-	0xf53, 0xf65, 0xf77, 0xf8d, 0xfa1, 0xfb4, 0xfc7, 0xfda, 0xfe8, 0xff0, 0x1004, 0x101a,
-	0x1021, 0x102c, 0x103e, 0x104f,
-}
-
-const es419LangStr = "" +
-	"azerbaiyanobaskirvascomaratímapuchealemán (Suiza)luovai"
-
-var es419LangIdx = []uint16{ // 556 entries
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0xb, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
-	0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
-	0x11, 0x11, 0x11, 0x11, 0x11, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-	0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-	0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-	0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-	0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
-	0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x1d, 0x1d,
-	0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d,
-	0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d,
-	0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d,
-	0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d,
-	0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d,
-	0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d,
-	0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d,
-	0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
-	0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
-	0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
-	0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
-	0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
-	0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
-	0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
-	0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
-	0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
-	0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
-	0x24, 0x24, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
-	0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
-	0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
-	0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
-	0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
-	0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
-	0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x36, 0x36, 0x36,
-	0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-	0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-	0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-	0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-	0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-	0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-	0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-	0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-	0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-	0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-	0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-	0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-	0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-	0x36, 0x36, 0x36, 0x39,
+	0x55, 0x5b, 0x65, 0x6d, 0x74, 0x7b, 0x83, 0x8b, 0x92, 0x98, 0xa0, 0xa8,
+	0xb0, 0xb5, 0xb9, 0xbe, 0xd2, 0xd9, 0xdf, 0xe5, 0xec, 0xf2, 0xfa, 0xfe,
+	0x104, 0x10b, 0x114, 0x11c, 0x123, 0x12a, 0x12f, 0x133, 0x139, 0x140, 0x147, 0x14f,
+	0x161, 0x16a, 0x17b, 0x182, 0x18a, 0x192, 0x198, 0x19d, 0x1a3, 0x1a8, 0x1b1, 0x1b7,
+	0x1bf, 0x1c7, 0x1ce, 0x1d4, 0x1df, 0x1e8, 0x1f3, 0x1f7, 0x205, 0x20c, 0x20f, 0x218,
+	0x220, 0x229, 0x231, 0x239, 0x242, 0x247, 0x24d, 0x255, 0x25b, 0x267, 0x26c, 0x274,
+	0x27b, 0x281, 0x28a, 0x28f, 0x293, 0x29b, 0x2a3, 0x2a9, 0x2b6, 0x2bb, 0x2c6, 0x2cd,
+	0x2d5, 0x2dc, 0x2e8, 0x2ee, 0x2f6, 0x300, 0x306, 0x30f, 0x318, 0x31e, 0x325, 0x32b,
+	0x332, 0x339, 0x341, 0x356, 0x35d, 0x363, 0x36e, 0x37d, 0x38b, 0x39d, 0x3a3, 0x3a9,
+	0x3b1, 0x3b7, 0x3bc, 0x3c1, 0x3c9, 0x3d1, 0x3d5, 0x3db, 0x3e2, 0x3ec, 0x3f3, 0x401,
+	0x409, 0x40f, 0x413, 0x41e, 0x428, 0x42d, 0x433, 0x445, 0x44a, 0x453, 0x45b, 0x463,
+	0x46a, 0x46f, 0x476, 0x47e, 0x484, 0x48b, 0x49d, 0x4a6, 0x4ab, 0x4b2, 0x4b7, 0x4bd,
+	0x4c3, 0x4cd, 0x4d5, 0x4de, 0x4e7, 0x4ee, 0x4f3, 0x4f9, 0x501, 0x50a, 0x50f, 0x518,
+	0x51c, 0x522, 0x527, 0x531, 0x539, 0x53f, 0x545, 0x54a, 0x551, 0x557, 0x55d, 0x562,
+	0x567, 0x56f, 0x574, 0x57b, 0x581, 0x581, 0x589, 0x58e, 0x592, 0x598, 0x598, 0x5a1,
+	0x5a1, 0x5b2, 0x5c1, 0x5c7, 0x5cd, 0x5d4, 0x5d4, 0x5db, 0x5db, 0x5e3, 0x5e3, 0x5e3,
+	0x5e6, 0x5e6, 0x5ef, 0x5ef, 0x5f5, 0x5f5, 0x5fc, 0x604, 0x604, 0x608, 0x60d, 0x60d,
+	0x614, 0x618, 0x61d, 0x61d, 0x621, 0x626, 0x626, 0x62e, 0x633, 0x637, 0x637, 0x63a,
+	0x641, 0x641, 0x641, 0x645, 0x645, 0x649, 0x64f, 0x655, 0x65d, 0x661, 0x665, 0x66c,
+	0x671, 0x677, 0x67d, 0x682, 0x689, 0x68e, 0x695, 0x69e, 0x6a5, 0x6aa, 0x6b6, 0x6bd,
+	0x6c6, 0x6ce, 0x6d5, 0x6e1, 0x6e6, 0x6e6, 0x6f8, 0x6ff, 0x705, 0x70b, 0x710, 0x718,
+	0x71d, 0x723, 0x728, 0x72d, 0x732, 0x73d, 0x73d, 0x742, 0x756, 0x760, 0x765, 0x76b,
+	0x76f, 0x773, 0x773, 0x782, 0x788, 0x78f, 0x79f, 0x79f, 0x7a5, 0x7a5, 0x7a9, 0x7b1,
+	0x7b1, 0x7b4, 0x7b4, 0x7c5, 0x7d5, 0x7d5, 0x7ea, 0x7fa, 0x802, 0x804, 0x80b, 0x80b,
+	0x80f, 0x814, 0x814, 0x818, 0x822, 0x822, 0x83f, 0x85e, 0x85e, 0x863, 0x86c, 0x873,
+	0x878, 0x886, 0x893, 0x893, 0x893, 0x898, 0x89f, 0x8a4, 0x8a4, 0x8ac, 0x8ac, 0x8b6,
+	0x8bc, 0x8c1, 0x8cc, 0x8cc, 0x8d0, 0x8d4, 0x8da, 0x8e1, 0x8e7, 0x8e7, 0x8e7, 0x8ed,
+	0x8f3, 0x8fa, 0x905, 0x911, 0x911, 0x91c, 0x922, 0x928, 0x92b, 0x930, 0x934, 0x93e,
+	0x945, 0x949, 0x950, 0x964, 0x964, 0x968, 0x968, 0x96d, 0x975, 0x981, 0x981, 0x981,
+	0x985, 0x98d, 0x995, 0x9a0, 0x9a8, 0x9b1, 0x9b7, 0x9c6, 0x9c6, 0x9c6, 0x9cd, 0x9d3,
+	0x9db, 0x9e0, 0x9e7, 0x9ec, 0x9f3, 0x9f9, 0x9fe, 0xa04, 0xa09, 0xa11, 0xa11, 0xa11,
+	0xa11, 0xa17, 0xa17, 0xa1c, 0xa20, 0xa20, 0xa2a, 0xa32, 0xa37, 0xa3a, 0xa40, 0xa45,
+	0xa45, 0xa45, 0xa4d, 0xa51, 0xa57, 0xa5f, 0xa66, 0xa6e, 0xa74, 0xa78, 0xa7e, 0xa84,
+	0xa89, 0xa8d, 0xa9f, 0xab1, 0xabf, 0xac6, 0xacc, 0xad7, 0xade, 0xae6, 0xaec, 0xaf1,
+	0xaf1, 0xaf8, 0xb0a, 0xb0f, 0xb18, 0xb1f, 0xb1f, 0xb24, 0xb29, 0xb29, 0xb29, 0xb33,
+	0xb37, 0xb43, 0xb49, 0xb4d, 0xb54, 0xb54, 0xb5a, 0xb63, 0xb68, 0xb78, 0xb78, 0xb7e,
+	0xb91, 0xb95, 0xba4, 0xbac, 0xbb4, 0xbb9, 0xbbe, 0xbc3, 0xbd0, 0xbdb, 0xbe2, 0xbea,
+	0xbf4, 0xbfc, 0xbfc, 0xbfc, 0xbfc, 0xc09, 0xc09, 0xc10, 0xc10, 0xc10, 0xc1a, 0xc1a,
+	0xc2b, 0xc32, 0xc32, 0xc3c, 0xc43, 0xc4e, 0xc4e, 0xc4e, 0xc53, 0xc5a, 0xc5a, 0xc5a,
+	0xc5a, 0xc62, 0xc65, 0xc6c, 0xc71, 0xc82, 0xc89, 0xc8e, 0xc95, 0xc95, 0xc9c, 0xca1,
+	0xcaa, 0xcb2, 0xcb2, 0xcb8, 0xcbc, 0xcbc, 0xcc2, 0xcd1, 0xce2, 0xce2, 0xceb, 0xcef,
+	0xcfe, 0xd04, 0xd04, 0xd04, 0xd13, 0xd1c, 0xd26, 0xd30, 0xd38, 0xd40, 0xd4c, 0xd51,
+	0xd55, 0xd55, 0xd5b, 0xd5f, 0xd66, 0xd6f, 0xd80, 0xd91, 0xd98, 0xd98, 0xd98, 0xd9d,
+	0xda1, 0xda7, 0xdad, 0xdb3, 0xdb6, 0xdc0, 0xdc0, 0xdc7, 0xdce, 0xdce, 0xdd6, 0xde5,
+	0xdee, 0xdee, 0xdf4, 0xdf4, 0xdfe, 0xdfe, 0xe05, 0xe0e, 0xe15, 0xe1e, 0xe3d, 0xe43,
+	0xe4d, 0xe54, 0xe59, 0xe5c, 0xe5c, 0xe5c, 0xe5c, 0xe5c, 0xe63, 0xe63, 0xe68, 0xe6e,
+	0xe74, 0xe79, 0xe7e, 0xe7e, 0xe7e, 0xe84, 0xe84, 0xe88, 0xe8b, 0xe91, 0xe98, 0xe9d,
+	0xe9d, 0xea6, 0xeae, 0xebd, 0xebd, 0xec3, 0xee0, 0xee4, 0xeff, 0xf05, 0xf1d, 0xf2f,
+	0xf41, 0xf54, 0xf66, 0xf78, 0xf8e, 0xfa6, 0xfb9, 0xfcc, 0xfdf, 0xfed, 0xff5, 0x1009,
+	0x101f, 0x1026, 0x1031, 0x1043, 0x1054,
 }
 
 const etLangStr = "" +
@@ -9858,7 +9110,7 @@
 	"gali (Euroopa)moldovaserbia-horvaadihiina (lihtsustatud)hiina (traditsiooniline)" +
 	""
 
-var etLangIdx = []uint16{ // 604 entries
+var etLangIdx = []uint16{ // 605 entries
 	0x0, 0x5, 0xc, 0x12, 0x1b, 0x20, 0x26, 0x2d, 0x34, 0x3a, 0x40, 0x46,
 	0x54, 0x5d, 0x66, 0x6f, 0x76, 0x7d, 0x84, 0x8b, 0x93, 0x99, 0xa2, 0xad,
 	0xb6, 0xbd, 0xc1, 0xc8, 0xd4, 0xdd, 0xe3, 0xe8, 0xed, 0xf5, 0xfd, 0x100,
@@ -9906,10 +9158,10 @@
 	0xc93, 0xc99, 0xc9f, 0xca5, 0xca9, 0xcb0, 0xcb0, 0xcb8, 0xcc0, 0xcc0, 0xcc9, 0xcd2,
 	0xcdf, 0xcdf, 0xce5, 0xce5, 0xced, 0xced, 0xcf4, 0xcfa, 0xd01, 0xd06, 0xd1c, 0xd23,
 	0xd2a, 0xd31, 0xd35, 0xd38, 0xd38, 0xd38, 0xd38, 0xd38, 0xd3d, 0xd3d, 0xd42, 0xd49,
-	0xd4f, 0xd54, 0xd59, 0xd59, 0xd61, 0xd61, 0xd65, 0xd68, 0xd6c, 0xd74, 0xd79, 0xd79,
-	0xd80, 0xd89, 0xd96, 0xd96, 0xd9c, 0xdae, 0xdb3, 0xdc1, 0xdc5, 0xddc, 0xddc, 0xdee,
-	0xdee, 0xdee, 0xdfd, 0xe0a, 0xe0a, 0xe1d, 0xe1d, 0xe1d, 0xe1d, 0xe23, 0xe23, 0xe36,
-	0xe3d, 0xe4c, 0xe60, 0xe78,
+	0xd4f, 0xd54, 0xd59, 0xd59, 0xd59, 0xd61, 0xd61, 0xd65, 0xd68, 0xd6c, 0xd74, 0xd79,
+	0xd79, 0xd80, 0xd89, 0xd96, 0xd96, 0xd9c, 0xdae, 0xdb3, 0xdc1, 0xdc5, 0xddc, 0xddc,
+	0xdee, 0xdee, 0xdee, 0xdfd, 0xe0a, 0xe0a, 0xe1d, 0xe1d, 0xe1d, 0xe1d, 0xe23, 0xe23,
+	0xe36, 0xe3d, 0xe4c, 0xe60, 0xe78,
 }
 
 const faLangStr = "" +
@@ -9962,7 +9214,7 @@
 	"کفرانسوی کانادافرانسوی سوئیسفلمنگیپرتغالی برزیلپرتغالی اروپامولداویاییصرب و کروا" +
 	"تیچینی ساده‌شدهچینی سنتی"
 
-var faLangIdx = []uint16{ // 604 entries
+var faLangIdx = []uint16{ // 605 entries
 	0x0, 0xa, 0x16, 0x24, 0x34, 0x3c, 0x46, 0x54, 0x5c, 0x66, 0x70, 0x80,
 	0x9d, 0xab, 0xb9, 0xc5, 0xd3, 0xe5, 0xf1, 0xf9, 0x10b, 0x11b, 0x129, 0x131,
 	0x141, 0x14b, 0x157, 0x15d, 0x178, 0x184, 0x18e, 0x19e, 0x1aa, 0x1b8, 0x1c6, 0x1d3,
@@ -10010,10 +9262,10 @@
 	0x194f, 0x1957, 0x1961, 0x1972, 0x197a, 0x197a, 0x197a, 0x1988, 0x199b, 0x199b, 0x19a9, 0x19c2,
 	0x19d7, 0x19d7, 0x19d7, 0x19d7, 0x19ec, 0x19ec, 0x19fe, 0x1a0e, 0x1a1a, 0x1a26, 0x1a48, 0x1a58,
 	0x1a68, 0x1a7a, 0x1a82, 0x1a8c, 0x1a8c, 0x1a8c, 0x1a8c, 0x1a8c, 0x1a92, 0x1a92, 0x1a9a, 0x1a9a,
-	0x1aa6, 0x1ab2, 0x1abe, 0x1abe, 0x1aca, 0x1aca, 0x1ad6, 0x1ae2, 0x1aea, 0x1aea, 0x1aea, 0x1aea,
-	0x1af8, 0x1b06, 0x1b06, 0x1b06, 0x1b10, 0x1b34, 0x1b42, 0x1b62, 0x1b6e, 0x1b7f, 0x1b96, 0x1bb8,
-	0x1bd7, 0x1bf2, 0x1c11, 0x1c2c, 0x1c58, 0x1c75, 0x1c92, 0x1cad, 0x1cc6, 0x1cd2, 0x1ceb, 0x1d04,
-	0x1d18, 0x1d2e, 0x1d48, 0x1d59,
+	0x1aa6, 0x1ab2, 0x1abe, 0x1abe, 0x1abe, 0x1aca, 0x1aca, 0x1ad6, 0x1ae2, 0x1aea, 0x1aea, 0x1aea,
+	0x1aea, 0x1af8, 0x1b06, 0x1b06, 0x1b06, 0x1b10, 0x1b34, 0x1b42, 0x1b62, 0x1b6e, 0x1b7f, 0x1b96,
+	0x1bb8, 0x1bd7, 0x1bf2, 0x1c11, 0x1c2c, 0x1c58, 0x1c75, 0x1c92, 0x1cad, 0x1cc6, 0x1cd2, 0x1ceb,
+	0x1d04, 0x1d18, 0x1d2e, 0x1d48, 0x1d59,
 }
 
 const fiLangStr = "" +
@@ -10076,7 +9328,7 @@
 	"rtugaliportugalinportugalimoldovaserbokroaattiyksinkertaistettu kiinaperinteinen" +
 	" kiina"
 
-var fiLangIdx = []uint16{ // 604 entries
+var fiLangIdx = []uint16{ // 605 entries
 	0x0, 0x4, 0xb, 0x11, 0x1a, 0x1e, 0x24, 0x2c, 0x32, 0x38, 0x3e, 0x44,
 	0x49, 0x52, 0x5f, 0x67, 0x6e, 0x75, 0x7c, 0x82, 0x89, 0x8f, 0x98, 0xa3,
 	0xac, 0xb3, 0xb7, 0xbe, 0xca, 0xd3, 0xd8, 0xde, 0xe3, 0xe9, 0xf1, 0xf4,
@@ -10124,10 +9376,10 @@
 	0xf68, 0xf6e, 0xf73, 0xf78, 0xf7b, 0xf82, 0xf89, 0xf90, 0xf97, 0xf9e, 0xfa6, 0xfb2,
 	0xfbb, 0xfc1, 0xfc7, 0xfcf, 0xfd6, 0xfda, 0xfe1, 0xfe7, 0xfee, 0xff2, 0x1008, 0x1010,
 	0x1016, 0x101c, 0x1021, 0x1024, 0x102c, 0x1032, 0x103e, 0x104b, 0x1050, 0x1055, 0x105a, 0x1060,
-	0x1068, 0x106d, 0x1072, 0x107a, 0x1082, 0x108a, 0x108e, 0x1091, 0x1095, 0x109c, 0x10a1, 0x10ab,
-	0x10b8, 0x10c2, 0x10cc, 0x10d4, 0x10da, 0x10ec, 0x10f0, 0x110b, 0x110f, 0x111a, 0x1129, 0x113a,
-	0x114c, 0x115b, 0x116d, 0x117d, 0x118c, 0x119b, 0x11aa, 0x11b7, 0x11c5, 0x11cb, 0x11dd, 0x11f0,
-	0x11f7, 0x1204, 0x121b, 0x122c,
+	0x1068, 0x106d, 0x1072, 0x1072, 0x107a, 0x1082, 0x108a, 0x108e, 0x1091, 0x1095, 0x109c, 0x10a1,
+	0x10ab, 0x10b8, 0x10c2, 0x10cc, 0x10d4, 0x10da, 0x10ec, 0x10f0, 0x110b, 0x110f, 0x111a, 0x1129,
+	0x113a, 0x114c, 0x115b, 0x116d, 0x117d, 0x118c, 0x119b, 0x11aa, 0x11b7, 0x11c5, 0x11cb, 0x11dd,
+	0x11f0, 0x11f7, 0x1204, 0x121b, 0x122c,
 }
 
 const filLangStr = "" +
@@ -10157,7 +9409,7 @@
 	"can SpanishEuropean SpanishMexican SpanishCanadian FrenchSwiss FrenchFlemishBraz" +
 	"ilian PortugueseEuropean PortugueseMoldavianSerbo-CroatianSimplified Chinese"
 
-var filLangIdx = []uint16{ // 603 entries
+var filLangIdx = []uint16{ // 604 entries
 	0x0, 0x0, 0x9, 0x9, 0x12, 0x16, 0x1d, 0x1d, 0x22, 0x2a, 0x2a, 0x30,
 	0x3b, 0x42, 0x4c, 0x55, 0x55, 0x5c, 0x63, 0x6a, 0x70, 0x77, 0x7e, 0x7e,
 	0x7e, 0x86, 0x86, 0x8b, 0x8b, 0x8b, 0x90, 0x96, 0x9c, 0xa2, 0xaa, 0xad,
@@ -10205,10 +9457,10 @@
 	0x638, 0x638, 0x63d, 0x63d, 0x63d, 0x63d, 0x63d, 0x644, 0x644, 0x644, 0x644, 0x644,
 	0x64d, 0x64d, 0x64d, 0x64d, 0x64d, 0x64d, 0x654, 0x654, 0x65b, 0x65b, 0x675, 0x675,
 	0x675, 0x675, 0x688, 0x68b, 0x68b, 0x68b, 0x68b, 0x68b, 0x68b, 0x68b, 0x690, 0x690,
-	0x690, 0x690, 0x690, 0x690, 0x690, 0x690, 0x694, 0x694, 0x694, 0x694, 0x694, 0x694,
-	0x69d, 0x69d, 0x69d, 0x69d, 0x69d, 0x6b8, 0x6b8, 0x6d8, 0x6d8, 0x6f2, 0x6f2, 0x6f2,
-	0x705, 0x715, 0x720, 0x72b, 0x741, 0x751, 0x760, 0x76f, 0x77b, 0x782, 0x796, 0x7a9,
-	0x7b2, 0x7c0, 0x7d2,
+	0x690, 0x690, 0x690, 0x690, 0x690, 0x690, 0x690, 0x694, 0x694, 0x694, 0x694, 0x694,
+	0x694, 0x69d, 0x69d, 0x69d, 0x69d, 0x69d, 0x6b8, 0x6b8, 0x6d8, 0x6d8, 0x6f2, 0x6f2,
+	0x6f2, 0x705, 0x715, 0x720, 0x72b, 0x741, 0x751, 0x760, 0x76f, 0x77b, 0x782, 0x796,
+	0x7a9, 0x7b2, 0x7c0, 0x7d2,
 }
 
 const frLangStr = "" +
@@ -10238,33 +9490,33 @@
 	"uefikégyptien ancienekajukélamitemoyen anglaiséwondofangfilipinofonmoyen françai" +
 	"sancien françaisfranco-provençalfrison du Nordfrison orientalfrioulangagagaouzeg" +
 	"ayogbayaguèzegilbertaismoyen haut-allemandancien haut allemandgondigorontalogoti" +
-	"quegrebogrec ancienalémaniquegusiigwichʼinhaidahawaïenhiligaynonhittitehmonghaut" +
-	"-sorabehupaibanibibioilokanoingouchelojbanngombamachamejudéo-persanjudéo-arabeka" +
-	"rakalpakkabylekachinjjukambakawikabardinkanemboutyapmakondecapverdienkorokhasikh" +
-	"otanaiskoyra chiinikakokalenjinkiMboundoukomi-permiakkonkanikusaienkpellékaratch" +
-	"aï balkarcarélienkurukhchambalabafiafrancique ripuairekoumykkutenailadinolangila" +
-	"hndalambalezghienlakotamongoloziluba-lulualuisenolundaluolushaioluluyiamaduraism" +
-	"afamagahimaithilimakassarmandinguemasaimabamoksamandarmendémeroucréole mauricien" +
-	"moyen irlandaismakhuwa-meettométa’micmacminangkabaumandchoumanipurimohawkmorémun" +
-	"dangmultilinguecreekmirandaismarwarîmyènèerzyanapolitainnamabas-allemandnewarini" +
-	"asniuékwasiongiemboonnogaïvieux norroisn’kosotho du Nordnuernewarî classiquenyam" +
-	"wezinyankolényoronzemaosageturc ottomanpangasinanpahlavipampanganpapiamentopalau" +
-	"persan ancienphénicienpohnpeiprovençal ancienk’iche’rajasthanirapanuirarotongien" +
-	"rombotziganevalaquerwasandaweiakoutearaméen samaritainsamburusasaksantalngambays" +
-	"angusicilienécossaissenecasenaselkoupekoyraboro senniancien irlandaischleuhshana" +
-	"rabe tchadiensidamosami du Sudsami de Lulesami d’Inarisami skoltsoninkésogdiensr" +
-	"anan tongosérèresahosukumasoussousumériencomorienswahili du Congosyriaque classi" +
-	"quesyriaquetemnetesoterenotetumtigrétivtokelauklingontlingittamacheqtonga nyasat" +
-	"ok pisintarokotsimshiantumbukatuvalutasawaqtouvatamazightoudmourteougaritiqueumb" +
-	"unduracinevaïvotevunjowalserwalamowaraywashokalmouksogayaoyapoisyangbenyembacant" +
-	"onaiszapotèquesymboles Blisszenagaamazighe standard marocainzunisans contenu lin" +
-	"guistiquezazakiarabe standard moderneallemand autrichienallemand suisseanglais a" +
-	"ustralienanglais canadienanglais britanniqueanglais américainespagnol latino-amé" +
-	"ricainespagnol d’Europeespagnol mexicainfrançais canadienfrançais suisseflamandp" +
-	"ortugais brésilienportugais d’Europemoldaveserbo-croatechinois simplifiéchinois " +
-	"traditionnel"
+	"quegrebogrec anciensuisse allemandgusiigwichʼinhaidahawaïenhiligaynonhittitehmon" +
+	"ghaut-sorabehupaibanibibioilokanoingouchelojbanngombamachamejudéo-persanjudéo-ar" +
+	"abekarakalpakkabylekachinjjukambakawikabardinkanemboutyapmakondecapverdienkorokh" +
+	"asikhotanaiskoyra chiinikakokalenjinkiMboundoukomi-permiakkonkanikusaienkpelléka" +
+	"ratchaï balkarcarélienkurukhchambalabafiafrancique ripuairekoumykkutenailadinola" +
+	"ngilahndalambalezghienlakotamongoloziluba-lulualuisenolundaluolushaioluluyiamadu" +
+	"raismafamagahimaithilimakassarmandinguemasaimabamoksamandarmendémeroucréole maur" +
+	"icienmoyen irlandaismakhuwa-meettométa’micmacminangkabaumandchoumanipurimohawkmo" +
+	"rémundangmultilinguecreekmirandaismarwarîmyènèerzyanapolitainnamabas-allemandnew" +
+	"ariniasniuékwasiongiemboonnogaïvieux norroisn’kosotho du Nordnuernewarî classiqu" +
+	"enyamwezinyankolényoronzemaosageturc ottomanpangasinanpahlavipampanganpapiamento" +
+	"palaupersan ancienphénicienpohnpeiprovençal ancienk’iche’rajasthanirapanuiraroto" +
+	"ngienrombotziganevalaquerwasandaweiakoutearaméen samaritainsamburusasaksantalnga" +
+	"mbaysangusicilienécossaissenecasenaselkoupekoyraboro senniancien irlandaischleuh" +
+	"shanarabe tchadiensidamosami du Sudsami de Lulesami d’Inarisami skoltsoninkésogd" +
+	"iensranan tongosérèresahosukumasoussousumériencomorienswahili du Congosyriaque c" +
+	"lassiquesyriaquetemnetesoterenotetumtigrétivtokelauklingontlingittamacheqtonga n" +
+	"yasatok pisintarokotsimshiantumbukatuvalutasawaqtouvatamazightoudmourteougaritiq" +
+	"ueumbunduracinevaïvotevunjowalserwalamowaraywashokalmouksogayaoyapoisyangbenyemb" +
+	"acantonaiszapotèquesymboles Blisszenagaamazighe standard marocainzunisans conten" +
+	"u linguistiquezazakiarabe standard moderneallemand autrichienallemand suisseangl" +
+	"ais australienanglais canadienanglais britanniqueanglais américainespagnol latin" +
+	"o-américainespagnol européenespagnol mexicainfrançais canadienfrançais suissefla" +
+	"mandportugais brésilienportugais européenmoldaveserbo-croatechinois simplifiéchi" +
+	"nois traditionnel"
 
-var frLangIdx = []uint16{ // 604 entries
+var frLangIdx = []uint16{ // 605 entries
 	0x0, 0x4, 0xb, 0x14, 0x1d, 0x21, 0x2a, 0x33, 0x38, 0x40, 0x44, 0x4a,
 	0x50, 0x57, 0x62, 0x69, 0x73, 0x7a, 0x81, 0x8a, 0x90, 0x99, 0xa0, 0xac,
 	0xb4, 0xb9, 0xbd, 0xc5, 0xd7, 0xe1, 0xe8, 0xee, 0xf6, 0xff, 0x107, 0x10c,
@@ -10291,88 +9543,70 @@
 	0x766, 0x76a, 0x76a, 0x77a, 0x780, 0x788, 0x795, 0x795, 0x79c, 0x79c, 0x7a0, 0x7a8,
 	0x7a8, 0x7ab, 0x7ab, 0x7ba, 0x7ca, 0x7db, 0x7e9, 0x7f8, 0x800, 0x802, 0x80a, 0x80a,
 	0x80e, 0x813, 0x813, 0x819, 0x823, 0x823, 0x836, 0x84a, 0x84a, 0x84f, 0x858, 0x85f,
-	0x864, 0x86f, 0x87a, 0x87a, 0x87a, 0x87f, 0x888, 0x88d, 0x88d, 0x895, 0x895, 0x89f,
-	0x8a6, 0x8ab, 0x8b6, 0x8b6, 0x8ba, 0x8be, 0x8c4, 0x8cb, 0x8d3, 0x8d3, 0x8d3, 0x8d9,
-	0x8df, 0x8e6, 0x8f3, 0x8ff, 0x8ff, 0x909, 0x90f, 0x915, 0x918, 0x91d, 0x921, 0x929,
-	0x931, 0x935, 0x93c, 0x946, 0x946, 0x94a, 0x94a, 0x94f, 0x958, 0x964, 0x964, 0x964,
-	0x968, 0x970, 0x97a, 0x986, 0x98d, 0x994, 0x99b, 0x9ac, 0x9ac, 0x9ac, 0x9b5, 0x9bb,
-	0x9c3, 0x9c8, 0x9da, 0x9e0, 0x9e7, 0x9ed, 0x9f2, 0x9f8, 0x9fd, 0xa05, 0xa05, 0xa05,
-	0xa05, 0xa0b, 0xa0b, 0xa10, 0xa14, 0xa14, 0xa1e, 0xa25, 0xa2a, 0xa2d, 0xa33, 0xa3b,
-	0xa3b, 0xa3b, 0xa43, 0xa47, 0xa4d, 0xa55, 0xa5d, 0xa66, 0xa6b, 0xa6f, 0xa74, 0xa7a,
-	0xa80, 0xa85, 0xa96, 0xaa5, 0xab3, 0xabb, 0xac1, 0xacc, 0xad4, 0xadc, 0xae2, 0xae7,
-	0xae7, 0xaee, 0xaf9, 0xafe, 0xb07, 0xb0f, 0xb0f, 0xb16, 0xb1b, 0xb1b, 0xb1b, 0xb25,
-	0xb29, 0xb35, 0xb3b, 0xb3f, 0xb44, 0xb44, 0xb4a, 0xb53, 0xb59, 0xb66, 0xb66, 0xb6c,
-	0xb79, 0xb7d, 0xb8e, 0xb96, 0xb9f, 0xba4, 0xba9, 0xbae, 0xbba, 0xbc4, 0xbcb, 0xbd4,
-	0xbde, 0xbe3, 0xbe3, 0xbe3, 0xbe3, 0xbf0, 0xbf0, 0xbfa, 0xbfa, 0xbfa, 0xc01, 0xc01,
-	0xc12, 0xc1d, 0xc1d, 0xc27, 0xc2e, 0xc39, 0xc39, 0xc39, 0xc3e, 0xc45, 0xc45, 0xc45,
-	0xc45, 0xc4c, 0xc4f, 0xc56, 0xc5d, 0xc70, 0xc77, 0xc7c, 0xc82, 0xc82, 0xc89, 0xc8e,
-	0xc96, 0xc9f, 0xc9f, 0xca5, 0xca9, 0xca9, 0xcb1, 0xcc0, 0xcd0, 0xcd0, 0xcd6, 0xcda,
-	0xce8, 0xcee, 0xcee, 0xcee, 0xcf9, 0xd05, 0xd13, 0xd1d, 0xd25, 0xd2c, 0xd38, 0xd40,
-	0xd44, 0xd44, 0xd4a, 0xd51, 0xd5a, 0xd62, 0xd72, 0xd84, 0xd8c, 0xd8c, 0xd8c, 0xd91,
-	0xd95, 0xd9b, 0xda0, 0xda6, 0xda9, 0xdb0, 0xdb0, 0xdb7, 0xdbe, 0xdbe, 0xdc6, 0xdd1,
-	0xdda, 0xdda, 0xde0, 0xde0, 0xde9, 0xde9, 0xdf0, 0xdf6, 0xdfd, 0xe02, 0xe0b, 0xe14,
-	0xe1f, 0xe26, 0xe2c, 0xe30, 0xe30, 0xe30, 0xe30, 0xe30, 0xe34, 0xe34, 0xe39, 0xe3f,
-	0xe45, 0xe4a, 0xe4f, 0xe4f, 0xe56, 0xe56, 0xe5a, 0xe5d, 0xe63, 0xe6a, 0xe6f, 0xe6f,
-	0xe78, 0xe82, 0xe90, 0xe90, 0xe96, 0xeb0, 0xeb4, 0xecd, 0xed3, 0xee9, 0xefc, 0xf0b,
-	0xf1d, 0xf2d, 0xf40, 0xf52, 0xf6c, 0xf7f, 0xf90, 0xfa2, 0xfb2, 0xfb9, 0xfcd, 0xfe1,
-	0xfe8, 0xff4, 0x1006, 0x101a,
+	0x864, 0x86f, 0x87e, 0x87e, 0x87e, 0x883, 0x88c, 0x891, 0x891, 0x899, 0x899, 0x8a3,
+	0x8aa, 0x8af, 0x8ba, 0x8ba, 0x8be, 0x8c2, 0x8c8, 0x8cf, 0x8d7, 0x8d7, 0x8d7, 0x8dd,
+	0x8e3, 0x8ea, 0x8f7, 0x903, 0x903, 0x90d, 0x913, 0x919, 0x91c, 0x921, 0x925, 0x92d,
+	0x935, 0x939, 0x940, 0x94a, 0x94a, 0x94e, 0x94e, 0x953, 0x95c, 0x968, 0x968, 0x968,
+	0x96c, 0x974, 0x97e, 0x98a, 0x991, 0x998, 0x99f, 0x9b0, 0x9b0, 0x9b0, 0x9b9, 0x9bf,
+	0x9c7, 0x9cc, 0x9de, 0x9e4, 0x9eb, 0x9f1, 0x9f6, 0x9fc, 0xa01, 0xa09, 0xa09, 0xa09,
+	0xa09, 0xa0f, 0xa0f, 0xa14, 0xa18, 0xa18, 0xa22, 0xa29, 0xa2e, 0xa31, 0xa37, 0xa3f,
+	0xa3f, 0xa3f, 0xa47, 0xa4b, 0xa51, 0xa59, 0xa61, 0xa6a, 0xa6f, 0xa73, 0xa78, 0xa7e,
+	0xa84, 0xa89, 0xa9a, 0xaa9, 0xab7, 0xabf, 0xac5, 0xad0, 0xad8, 0xae0, 0xae6, 0xaeb,
+	0xaeb, 0xaf2, 0xafd, 0xb02, 0xb0b, 0xb13, 0xb13, 0xb1a, 0xb1f, 0xb1f, 0xb1f, 0xb29,
+	0xb2d, 0xb39, 0xb3f, 0xb43, 0xb48, 0xb48, 0xb4e, 0xb57, 0xb5d, 0xb6a, 0xb6a, 0xb70,
+	0xb7d, 0xb81, 0xb92, 0xb9a, 0xba3, 0xba8, 0xbad, 0xbb2, 0xbbe, 0xbc8, 0xbcf, 0xbd8,
+	0xbe2, 0xbe7, 0xbe7, 0xbe7, 0xbe7, 0xbf4, 0xbf4, 0xbfe, 0xbfe, 0xbfe, 0xc05, 0xc05,
+	0xc16, 0xc21, 0xc21, 0xc2b, 0xc32, 0xc3d, 0xc3d, 0xc3d, 0xc42, 0xc49, 0xc49, 0xc49,
+	0xc49, 0xc50, 0xc53, 0xc5a, 0xc61, 0xc74, 0xc7b, 0xc80, 0xc86, 0xc86, 0xc8d, 0xc92,
+	0xc9a, 0xca3, 0xca3, 0xca9, 0xcad, 0xcad, 0xcb5, 0xcc4, 0xcd4, 0xcd4, 0xcda, 0xcde,
+	0xcec, 0xcf2, 0xcf2, 0xcf2, 0xcfd, 0xd09, 0xd17, 0xd21, 0xd29, 0xd30, 0xd3c, 0xd44,
+	0xd48, 0xd48, 0xd4e, 0xd55, 0xd5e, 0xd66, 0xd76, 0xd88, 0xd90, 0xd90, 0xd90, 0xd95,
+	0xd99, 0xd9f, 0xda4, 0xdaa, 0xdad, 0xdb4, 0xdb4, 0xdbb, 0xdc2, 0xdc2, 0xdca, 0xdd5,
+	0xdde, 0xdde, 0xde4, 0xde4, 0xded, 0xded, 0xdf4, 0xdfa, 0xe01, 0xe06, 0xe0f, 0xe18,
+	0xe23, 0xe2a, 0xe30, 0xe34, 0xe34, 0xe34, 0xe34, 0xe34, 0xe38, 0xe38, 0xe3d, 0xe43,
+	0xe49, 0xe4e, 0xe53, 0xe53, 0xe53, 0xe5a, 0xe5a, 0xe5e, 0xe61, 0xe67, 0xe6e, 0xe73,
+	0xe73, 0xe7c, 0xe86, 0xe94, 0xe94, 0xe9a, 0xeb4, 0xeb8, 0xed1, 0xed7, 0xeed, 0xf00,
+	0xf0f, 0xf21, 0xf31, 0xf44, 0xf56, 0xf70, 0xf82, 0xf93, 0xfa5, 0xfb5, 0xfbc, 0xfd0,
+	0xfe3, 0xfea, 0xff6, 0x1008, 0x101c,
 }
 
 const frCALangStr = "" +
-	"frisongoudjarâtîyi de Sichuankinyarwandacingalaistonganouïgourgagsuisse allemand" +
-	"luoindéterminéyémbaespagnol ibériqueportugais ibérique"
+	"luo"
 
-var frCALangIdx = []uint16{ // 600 entries
+var frCALangIdx = []uint16{ // 394 entries
 	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x6, 0x6, 0x6, 0x6, 0x6, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
-	0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x1f, 0x1f, 0x1f, 0x1f,
-	0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
-	0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
-	0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
-	0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
-	0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
-	0x1f, 0x1f, 0x1f, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x33, 0x33, 0x33,
-	0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
-	0x33, 0x33, 0x33, 0x33, 0x33, 0x39, 0x39, 0x39, 0x39, 0x39, 0x41, 0x41,
-	0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
-	0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
-	0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
-	0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
-	0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
-	0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
-	0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
-	0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
-	0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
-	0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
-	0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x44, 0x44,
-	0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
-	0x44, 0x44, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53,
-	0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53,
-	0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53,
-	0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53,
-	0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53,
-	0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53,
-	0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x56, 0x56, 0x56,
-	0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
-	0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
-	0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
-	0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
-	0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
-	0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
-	0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
-	0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
-	0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
-	0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
-	0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
-	0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
-	0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
-	0x56, 0x56, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
-	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x69, 0x69,
-	0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
-	0x69, 0x69, 0x69, 0x69, 0x69, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x8e,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3,
 }
 
 const guLangStr = "" +
@@ -10425,7 +9659,7 @@
 	"િશકેનેડિયન ફ્રેંચસ્વિસ ફ્રેંચફ્લેમિશબ્રાઝિલીયન પોર્ટુગીઝયુરોપિયન પોર્ટુગીઝમોલડાવ" +
 	"િયનસર્બો-ક્રોએશિયનસરળીકૃત ચાઇનીઝપારંપરિક ચાઇનીઝ"
 
-var guLangIdx = []uint16{ // 604 entries
+var guLangIdx = []uint16{ // 605 entries
 	0x0, 0xc, 0x24, 0x39, 0x54, 0x60, 0x78, 0x90, 0x9c, 0xab, 0xbd, 0xcf,
 	0xea, 0xfc, 0x11a, 0x135, 0x14d, 0x165, 0x177, 0x18f, 0x1a4, 0x1bc, 0x1cb, 0x1d7,
 	0x1e9, 0x201, 0x20d, 0x216, 0x238, 0x247, 0x256, 0x265, 0x274, 0x286, 0x2a1, 0x2a7,
@@ -10473,10 +9707,10 @@
 	0x24e1, 0x24f3, 0x2502, 0x2517, 0x2520, 0x2535, 0x2535, 0x2550, 0x2562, 0x2562, 0x2577, 0x259c,
 	0x25b5, 0x25b5, 0x25b5, 0x25b5, 0x25cd, 0x25ec, 0x2604, 0x2616, 0x2628, 0x2640, 0x2684, 0x2699,
 	0x26b4, 0x26cf, 0x26d8, 0x26e1, 0x26e1, 0x26e1, 0x26e1, 0x26e1, 0x26f0, 0x26f0, 0x2702, 0x2702,
-	0x2711, 0x271d, 0x2729, 0x2729, 0x273e, 0x273e, 0x274a, 0x2753, 0x2762, 0x2762, 0x2762, 0x2762,
-	0x277a, 0x278f, 0x27b6, 0x27b6, 0x27c8, 0x280f, 0x281b, 0x286c, 0x2878, 0x28b6, 0x28e1, 0x290a,
-	0x2944, 0x2975, 0x29a3, 0x29d1, 0x2a0c, 0x2a3a, 0x2a68, 0x2a93, 0x2ab5, 0x2aca, 0x2b04, 0x2b38,
-	0x2b53, 0x2b7e, 0x2ba6, 0x2bd1,
+	0x2711, 0x271d, 0x2729, 0x2729, 0x2729, 0x273e, 0x273e, 0x274a, 0x2753, 0x2762, 0x2762, 0x2762,
+	0x2762, 0x277a, 0x278f, 0x27b6, 0x27b6, 0x27c8, 0x280f, 0x281b, 0x286c, 0x2878, 0x28b6, 0x28e1,
+	0x290a, 0x2944, 0x2975, 0x29a3, 0x29d1, 0x2a0c, 0x2a3a, 0x2a68, 0x2a93, 0x2ab5, 0x2aca, 0x2b04,
+	0x2b38, 0x2b53, 0x2b7e, 0x2ba6, 0x2bd1,
 }
 
 const heLangStr = "" +
@@ -10526,7 +9760,7 @@
 	"אירופאיתספרדית מקסיקניתצרפתית קנדיתצרפתית שוויצריתפלמיתפורטוגלית ברזילאיתפורטוגל" +
 	"ית אירופאיתמולדביתסרבו-קרואטיתסינית מפושטתסינית מסורתית"
 
-var heLangIdx = []uint16{ // 604 entries
+var heLangIdx = []uint16{ // 605 entries
 	0x0, 0xc, 0x18, 0x22, 0x32, 0x3a, 0x46, 0x56, 0x60, 0x6c, 0x78, 0x88,
 	0x92, 0xa0, 0xb0, 0xbe, 0xca, 0xd6, 0xe2, 0xee, 0xfc, 0x108, 0x116, 0x124,
 	0x130, 0x142, 0x148, 0x152, 0x17a, 0x186, 0x190, 0x198, 0x1a4, 0x1ae, 0x1ba, 0x1c2,
@@ -10574,10 +9808,10 @@
 	0x1766, 0x176e, 0x1776, 0x1782, 0x1788, 0x1794, 0x1794, 0x17a2, 0x17b0, 0x17b0, 0x17ba, 0x17cf,
 	0x17e0, 0x17e0, 0x17ea, 0x17ea, 0x17fa, 0x17fa, 0x1808, 0x1814, 0x1820, 0x182e, 0x1853, 0x1861,
 	0x1871, 0x1881, 0x1887, 0x188d, 0x188d, 0x188d, 0x188d, 0x188d, 0x1897, 0x1897, 0x18a3, 0x18af,
-	0x18bb, 0x18c5, 0x18cf, 0x18cf, 0x18d9, 0x18d9, 0x18e1, 0x18e7, 0x18f3, 0x18ff, 0x1907, 0x1907,
-	0x1917, 0x1923, 0x1937, 0x1937, 0x1941, 0x1969, 0x1971, 0x198b, 0x1993, 0x19ac, 0x19c7, 0x19f1,
-	0x1a0e, 0x1a25, 0x1a3e, 0x1a5b, 0x1a84, 0x1aa1, 0x1abe, 0x1ad5, 0x1af2, 0x1afc, 0x1b1f, 0x1b42,
-	0x1b50, 0x1b67, 0x1b7e, 0x1b97,
+	0x18bb, 0x18c5, 0x18cf, 0x18cf, 0x18cf, 0x18d9, 0x18d9, 0x18e1, 0x18e7, 0x18f3, 0x18ff, 0x1907,
+	0x1907, 0x1917, 0x1923, 0x1937, 0x1937, 0x1941, 0x1969, 0x1971, 0x198b, 0x1993, 0x19ac, 0x19c7,
+	0x19f1, 0x1a0e, 0x1a25, 0x1a3e, 0x1a5b, 0x1a84, 0x1aa1, 0x1abe, 0x1ad5, 0x1af2, 0x1afc, 0x1b1f,
+	0x1b42, 0x1b50, 0x1b67, 0x1b7e, 0x1b97,
 }
 
 const hiLangStr = "" +
@@ -10585,102 +9819,102 @@
 	"बशख़िरबेलारूसीबुल्गारियाईबिस्लामाबाम्बाराबंगालीतिब्बतीब्रेटनबोस्नियाईकातालानचेचन" +
 	"कमोरोकोर्सीकनक्रीचेकचर्च साल्विकचूवाशवेल्शडेनिशजर्मनदिवेहीज़ोन्गखाईवेयूनानीअंग्र" +
 	"ेज़ीएस्पेरेंतोस्पेनीएस्टोनियाईबास्कफ़ारसीफुलाहफ़िनिशफ़ीजीफ़ैरोइज़फ़्रेंचपश्चिमी " +
-	"फ़्रिसियाईआइरिशस्काट्स् गायेलिक्गैलिशियनगुआरानीगुजरातीमैंक्सहौसाहिब्रूहिंदीहिरी " +
-	"मोटूक्रोएशियाईहैतियाईहंगेरियाईआर्मेनियाईहरैरोईन्टरलिंगुआइंडोनेशियाईईन्टरलिंगुइईग" +
-	"्बोसिचुआन यीइनुपियाक्इडौआइसलैंडीइतालवीइनूकीटूत्जापानीजावानीज़जॉर्जियाईकोंगोकिकुय" +
-	"ूक्वान्यामाकज़ाख़ग्रीनलैंडिकखमेरकन्नड़कोरियाईकनुरीकश्मीरीकुर्दिशकोमीकोर्निशकिर्ग" +
-	"ीज़लैटिनलग्ज़मबर्गीगांडालिंबर्गिशलिंगालालाओलिथुआनियाईल्यूबा-कटांगालातवियाईमालागा" +
-	"सीमार्शलीज़माओरीमैसिडोनियाईमलयालममंगोलीयाईमराठीमलयमाल्टीज़बर्मीज़नाउरूउत्तरी देब" +
-	"ेलनेपालीडोन्गाडचनॉर्वेजियाई नॉयनॉर्स्कनॉर्वेजियाई बोकमालदक्षिण देबेलनावाजोन्यानज" +
-	"ाओसीटानओजिब्वाओरोमोउड़ियाओस्सेटिकपंजाबीपालीपोलिशपश्तोपुर्तगालीक्वेचुआरोमान्शरुन्" +
-	"दीरोमानियाईरूसीकिन्यारवांडासंस्कृतसार्दिनियनसिंधीनॉर्दन सामीसांगोसिंहलीस्लोवाकस्" +
-	"लोवेनियाईसामोनशोणासोमालीअल्बानियाईसर्बियाईस्वातीसेसोथोसुंडानीस्वीडिशस्वाहिलीतमिल" +
-	"तेलुगूताजिकथाईतिग्रीन्यातुर्कमेनसेत्स्वानाटोंगनतुर्कीसोंगातातारताहितियनविघुरयूक्" +
-	"रेनियाईउर्दूउज़्बेकवेन्दावियतनामीवोलापुकवाल्लूनवोलोफ़ख़ोसायेहुदीयोरूबाज़ुआंगचीनी" +
-	"ज़ुलूअचाइनीसअकोलीअदान्गमेअदिघेअफ्रिहिलीअग्हेमऐनूअक्कादीअलेउतदक्षिणी अल्ताईपुरानी" +
-	" अंग्रेज़ीअंगिकाऐरेमेकमापूचेअराफाओअरावकअसुअस्तुरियनअवधीबलूचीबालिनीसबसाबेजाबेम्बा" +
-	"बेनाभोजपुरीबिकोलबिनीसिक्सिकाब्रजबोडोबुरियातबगिनीसब्लिनकैड्डोकैरिबअत्समसिबुआनोशिग" +
-	"ाचिब्चाछगाताईचूकीसमारीचिनूक जारगॉनचोक्तौशिपेव्यानशेरोकीशेयेन्नसोरानी कुर्दिशकॉप्" +
-	"टिकक्रीमीन तुर्कीकाशुबियनदाकोतादार्गवातैताडिलैवेयरस्लेवडोग्रिबदिन्काझार्माडोग्री" +
-	"निचला सॉर्बियनदुआलामध्य पुर्तगालीजोला-फोंईड्युलाएम्बुएफिकप्राचीन मिस्रीएकाजुकएला" +
-	"माइटमध्यकालीन अंग्रेज़ीइवोन्डोफैन्गफ़िलिपीनोफॉनमध्यकालीन फ़्रांसीसीपुरातन फ़्रां" +
-	"सीसीउत्तरी फ्रीसीयनपूर्वी फ्रीसीयनफ्रीयुलीयानगागागौज़गायोग्बायागीज़गिल्बरतीसमध्य" +
-	"कालीन हाइ जर्मनपुरातन हाइ जर्मनगाँडीगोरोन्तालोगॉथिकग्रेबोप्राचीन यूनानीस्विस जर्" +
-	"मनगुसीग्विच’इनहैडाहवाईहिलिगेननहिताइतह्मॉंगऊपरी सॉर्बियनहूपाइबानइलोकोइंगुशलोज्बान" +
-	"नगोंबामैकहैमेजुदेओ-पर्शियनजुदेओ-अरेबिककारा-कल्पककबाइलकाचिनज्जुकम्बाकावीकबार्डियन" +
-	"त्यापमैकोंडकाबुवेर्दियानुकोरोखासीखोतानीसकोयरा चीनीकलेंजिनकिम्बन्दुकोमी-पर्मयाकको" +
-	"ंकणीकोसरैनक्पेल्लैकराचय-बल्कारकरेलियनकुरूखशम्बालाबफिआकुमीककुतेनाईलादीनोलांगिलाह्" +
-	"न्डालाम्बालेज़्घीयनलैकोटामोंगोलोज़ील्यूबा-लुलुआलुइसेनोलुन्डाल्युओलुशाईल्युईआमादु" +
-	"रीसमगाहीमैथिलीमकासरमन्डिन्गोमसाईमोक्षमंधारमेन्डेमेरुमोरीस्येनमध्यकाल आइरिशमैखुवा" +
-	"-मीट्टोमेटामिकमैकमिनांग्काबाउमन्चुमणिपूरीमोहौकमोस्सीमुंडैंगविविध भाषाएँक्रीकमिरा" +
-	"ंडीमारवाड़ीएर्ज़यानीपोलिटननामानिचला जर्मननेवाड़ीनियासनियुआनक्वासिओनोगाईपुराना नॉ" +
-	"र्सएन्कोउत्तरी सोथोनुएरपारम्परिक नेवारीन्यामवेज़ीन्यानकोलन्योरोन्ज़ीमाओसेजओटोमान" +
-	" तुर्किशपंगासीनानपाह्लावीपाम्पान्गापापियामेन्टोपलोउआनपुरानी फारसीफोएनिशियनपोह्नप" +
-	"िएनपुरानी प्रोवेन्सलकिशराजस्थानीरापानुईरारोतोंगनरोम्बोरोमानीअरोमानियनरवासन्डावेय" +
-	"ाकूतसामैरिटन अरैमिकसैम्बुरुसासाकसंतालीसैंगुसिसिलियनस्कॉट्ससेनासेल्कपकोयराबोरो से" +
-	"न्नीपुरानी आइरिशतैचेल्हितशैनसिदामोदक्षिण सामील्युल सामीइनारी सामीस्कोल्ट सामीसोन" +
-	"िन्केसोग्डिएनस्रानान टॉन्गोसेरेरसुकुमासुसुसुमेरियनकांगो स्वाहिलीक्लासिकल सिरिएकस" +
-	"िरिएकटिम्नेटेसोतेरेनोतेतुमटाइग्रेतिवतोकेलाऊक्लिंगनत्लिंगिततामाशेकन्यासा टोन्गाटो" +
-	"क पिसिनत्सिमीशियनतम्बूकातुवालुटासवाकतुवीनियनमध्य एटलस तमाज़ितउदमुर्तयुगैरिटिकउम्" +
-	"बुन्डुरूटवाईवॉटिकवुंजोवलामोवारैवाशोकाल्मिकसोगायाओयापीसकैंटोनीज़ज़ेपोटेकब्लिसिम्ब" +
-	"ॉल्सज़ेनान्गामानक मोरक्कन तामाज़ाइटज़ूनीकोई भाषा सामग्री नहींज़ाज़ाआधुनिक मानक अ" +
-	"रबीऑस्ट्रियाई जर्मनस्विस उच्च जर्मनऑस्ट्रेलियाई अंग्रेज़ीकनाडाई अंग्रेज़ीब्रिटिश" +
-	" अंग्रेज़ीअमेरिकी अंग्रेज़ीलैटिन अमेरिकी स्पेनीयूरोपीय स्पेनीमैक्सिकन स्पेनिशकना" +
-	"डाई फ़्रेंचस्विस फ़्रेंचफ़्लेमिशब्राज़ीली पुर्तगालीयूरोपीय पुर्तगालीमोलडावियनसेर" +
-	"्बो-क्रोएशन्सरलीकृत चीनीपारंपरिक चीनी"
+	"फ़्रिसियाईआइरिशस्काट्स् गायेलिक्गैलिशियनगुआरानीगुजरातीमैंक्सहौसाहिब्रूहिन्दीहिरी" +
+	" मोटूक्रोएशियाईहैतियाईहंगेरियाईआर्मेनियाईहरैरोईन्टरलिंगुआइंडोनेशियाईईन्टरलिंगुइई" +
+	"ग्बोसिचुआन यीइनुपियाक्इडौआइसलैंडीइतालवीइनूकीटूत्जापानीजावानीज़जॉर्जियाईकोंगोकिकु" +
+	"यूक्वान्यामाकज़ाख़ग्रीनलैंडिकखमेरकन्नड़कोरियाईकनुरीकश्मीरीकुर्दिशकोमीकोर्निशकिर्" +
+	"गीज़लैटिनलग्ज़मबर्गीगांडालिंबर्गिशलिंगालालाओलिथुआनियाईल्यूबा-कटांगालातवियाईमालाग" +
+	"ासीमार्शलीज़माओरीमैसिडोनियाईमलयालममंगोलीयाईमराठीमलयमाल्टीज़बर्मीज़नाउरूउत्तरी दे" +
+	"बेलनेपालीडोन्गाडचनॉर्वेजियाई नॉयनॉर्स्कनॉर्वेजियाई बोकमालदक्षिण देबेलनावाजोन्यान" +
+	"जाओसीटानओजिब्वाओरोमोउड़ियाओस्सेटिकपंजाबीपालीपोलिशपश्तोपुर्तगालीक्वेचुआरोमान्शरुन" +
+	"्दीरोमानियाईरूसीकिन्यारवांडासंस्कृतसार्दिनियनसिंधीनॉर्दन सामीसांगोसिंहलीस्लोवाकस" +
+	"्लोवेनियाईसामोनशोणासोमालीअल्बानियाईसर्बियाईस्वातीसेसोथोसुंडानीस्वीडिशस्वाहिलीतमि" +
+	"लतेलुगूताजिकथाईतिग्रीन्यातुर्कमेनसेत्स्वानाटोंगनतुर्कीसोंगातातारताहितियनविघुरयूक" +
+	"्रेनियाईउर्दूउज़्बेकवेन्दावियतनामीवोलापुकवाल्लूनवोलोफ़ख़ोसायेहुदीयोरूबाज़ुआंगचीन" +
+	"ीज़ुलूअचाइनीसअकोलीअदान्गमेअदिघेअफ्रिहिलीअग्हेमऐनूअक्कादीअलेउतदक्षिणी अल्ताईपुरान" +
+	"ी अंग्रेज़ीअंगिकाऐरेमेकमापूचेअराफाओअरावकअसुअस्तुरियनअवधीबलूचीबालिनीसबसाबेजाबेम्ब" +
+	"ाबेनाभोजपुरीबिकोलबिनीसिक्सिकाब्रजबोडोबुरियातबगिनीसब्लिनकैड्डोकैरिबअत्समसिबुआनोशि" +
+	"गाचिब्चाछगाताईचूकीसमारीचिनूक जारगॉनचोक्तौशिपेव्यानशेरोकीशेयेन्नसोरानी कुर्दिशकॉप" +
+	"्टिकक्रीमीन तुर्कीकाशुबियनदाकोतादार्गवातैताडिलैवेयरस्लेवडोग्रिबदिन्काझार्माडोग्र" +
+	"ीनिचला सॉर्बियनदुआलामध्य पुर्तगालीजोला-फोंईड्युलाएम्बुएफिकप्राचीन मिस्रीएकाजुकएल" +
+	"ामाइटमध्यकालीन अंग्रेज़ीइवोन्डोफैन्गफ़िलिपीनोफॉनमध्यकालीन फ़्रांसीसीपुरातन फ़्रा" +
+	"ंसीसीउत्तरी फ्रीसीयनपूर्वी फ्रीसीयनफ्रीयुलीयानगागागौज़गायोग्बायागीज़गिल्बरतीसमध्" +
+	"यकालीन हाइ जर्मनपुरातन हाइ जर्मनगाँडीगोरोन्तालोगॉथिकग्रेबोप्राचीन यूनानीस्विस जर" +
+	"्मनगुसीग्विच’इनहैडाहवाईहिलिगेननहिताइतह्मॉंगऊपरी सॉर्बियनहूपाइबानइलोकोइंगुशलोज्बा" +
+	"ननगोंबामैकहैमेजुदेओ-पर्शियनजुदेओ-अरेबिककारा-कल्पककबाइलकाचिनज्जुकम्बाकावीकबार्डिय" +
+	"नत्यापमैकोंडकाबुवेर्दियानुकोरोखासीखोतानीसकोयरा चीनीकलेंजिनकिम्बन्दुकोमी-पर्मयाकक" +
+	"ोंकणीकोसरैनक्पेल्लैकराचय-बल्कारकरेलियनकुरूखशम्बालाबफिआकुमीककुतेनाईलादीनोलांगिलाह" +
+	"्न्डालाम्बालेज़्घीयनलैकोटामोंगोलोज़ील्यूबा-लुलुआलुइसेनोलुन्डाल्युओलुशाईल्युईआमाद" +
+	"ुरीसमगाहीमैथिलीमकासरमन्डिन्गोमसाईमोक्षमंधारमेन्डेमेरुमोरीस्येनमध्यकाल आइरिशमैखुव" +
+	"ा-मीट्टोमेटामिकमैकमिनांग्काबाउमन्चुमणिपूरीमोहौकमोस्सीमुंडैंगविविध भाषाएँक्रीकमिर" +
+	"ांडीमारवाड़ीएर्ज़यानीपोलिटननामानिचला जर्मननेवाड़ीनियासनियुआनक्वासिओनोगाईपुराना न" +
+	"ॉर्सएन्कोउत्तरी सोथोनुएरपारम्परिक नेवारीन्यामवेज़ीन्यानकोलन्योरोन्ज़ीमाओसेजओटोमा" +
+	"न तुर्किशपंगासीनानपाह्लावीपाम्पान्गापापियामेन्टोपलोउआनपुरानी फारसीफोएनिशियनपोह्न" +
+	"पिएनपुरानी प्रोवेन्सलकिशराजस्थानीरापानुईरारोतोंगनरोम्बोरोमानीअरोमानियनरवासन्डावे" +
+	"याकूतसामैरिटन अरैमिकसैम्बुरुसासाकसंतालीसैंगुसिसिलियनस्कॉट्ससेनासेल्कपकोयराबोरो स" +
+	"ेन्नीपुरानी आइरिशतैचेल्हितशैनसिदामोदक्षिण सामील्युल सामीइनारी सामीस्कोल्ट सामीसो" +
+	"निन्केसोग्डिएनस्रानान टॉन्गोसेरेरसुकुमासुसुसुमेरियनकांगो स्वाहिलीक्लासिकल सिरिएक" +
+	"सिरिएकटिम्नेटेसोतेरेनोतेतुमटाइग्रेतिवतोकेलाऊक्लिंगनत्लिंगिततामाशेकन्यासा टोन्गाट" +
+	"ोक पिसिनत्सिमीशियनतम्बूकातुवालुटासवाकतुवीनियनमध्य एटलस तमाज़ितउदमुर्तयुगैरिटिकउम" +
+	"्बुन्डुरूटवाईवॉटिकवुंजोवलामोवारैवाशोकाल्मिकसोगायाओयापीसकैंटोनीज़ज़ेपोटेकब्लिसिम्" +
+	"बॉल्सज़ेनान्गामानक मोरक्कन तामाज़ाइटज़ूनीकोई भाषा सामग्री नहींज़ाज़ाआधुनिक मानक " +
+	"अरबीऑस्ट्रियाई जर्मनस्विस उच्च जर्मनऑस्ट्रेलियाई अंग्रेज़ीकनाडाई अंग्रेज़ीब्रिटि" +
+	"श अंग्रेज़ीअमेरिकी अंग्रेज़ीलैटिन अमेरिकी स्पेनीयूरोपीय स्पेनीमैक्सिकन स्पेनिशकन" +
+	"ाडाई फ़्रेंचस्विस फ़्रेंचफ़्लेमिशब्राज़ीली पुर्तगालीयूरोपीय पुर्तगालीमोलडावियनसे" +
+	"र्बो-क्रोएशन्सरलीकृत चीनीपारंपरिक चीनी"
 
-var hiLangIdx = []uint16{ // 604 entries
+var hiLangIdx = []uint16{ // 605 entries
 	0x0, 0xf, 0x30, 0x45, 0x5d, 0x66, 0x7b, 0x90, 0x9c, 0xae, 0xc0, 0xd2,
 	0xf0, 0x102, 0x11a, 0x13b, 0x153, 0x16b, 0x17d, 0x192, 0x1a4, 0x1bf, 0x1d4, 0x1e0,
 	0x1ef, 0x207, 0x213, 0x21c, 0x23e, 0x24d, 0x25c, 0x26b, 0x27a, 0x28c, 0x2a4, 0x2ad,
 	0x2bf, 0x2da, 0x2f8, 0x30a, 0x328, 0x337, 0x349, 0x358, 0x36a, 0x379, 0x391, 0x3a6,
-	0x3da, 0x3e9, 0x41a, 0x432, 0x447, 0x45c, 0x46e, 0x47a, 0x48c, 0x49b, 0x4b4, 0x4d2,
-	0x4e7, 0x502, 0x520, 0x52f, 0x550, 0x571, 0x592, 0x5a1, 0x5ba, 0x5d5, 0x5de, 0x5f6,
-	0x608, 0x623, 0x635, 0x64d, 0x668, 0x677, 0x689, 0x6a7, 0x6b9, 0x6da, 0x6e6, 0x6f8,
-	0x70d, 0x71c, 0x731, 0x746, 0x752, 0x767, 0x77f, 0x78e, 0x7af, 0x7be, 0x7d9, 0x7ee,
-	0x7f7, 0x815, 0x83a, 0x852, 0x86a, 0x885, 0x894, 0x8b5, 0x8c7, 0x8e2, 0x8f1, 0x8fa,
-	0x912, 0x927, 0x936, 0x958, 0x96a, 0x97c, 0x982, 0x9c2, 0x9f6, 0xa18, 0xa2a, 0xa3f,
-	0xa51, 0xa66, 0xa75, 0xa87, 0xa9f, 0xab1, 0xabd, 0xacc, 0xadb, 0xaf6, 0xb0b, 0xb20,
-	0xb32, 0xb4d, 0xb59, 0xb7d, 0xb92, 0xbb0, 0xbbf, 0xbde, 0xbed, 0xbff, 0xc14, 0xc35,
-	0xc44, 0xc50, 0xc62, 0xc80, 0xc98, 0xcaa, 0xcbc, 0xcd1, 0xce6, 0xcfe, 0xd0a, 0xd1c,
-	0xd2b, 0xd34, 0xd52, 0xd6a, 0xd88, 0xd97, 0xda9, 0xdb8, 0xdc7, 0xddf, 0xdee, 0xe0f,
-	0xe1e, 0xe33, 0xe45, 0xe5d, 0xe72, 0xe87, 0xe99, 0xea8, 0xeba, 0xecc, 0xede, 0xeea,
-	0xef9, 0xf0e, 0xf1d, 0xf35, 0xf44, 0xf44, 0xf5f, 0xf71, 0xf7a, 0xf8f, 0xf8f, 0xf9e,
-	0xf9e, 0xfc6, 0xff4, 0x1006, 0x1018, 0x102a, 0x102a, 0x103c, 0x103c, 0x104b, 0x104b, 0x104b,
-	0x1054, 0x1054, 0x106f, 0x106f, 0x107b, 0x107b, 0x108a, 0x109f, 0x109f, 0x10a8, 0x10a8, 0x10a8,
-	0x10a8, 0x10b4, 0x10c6, 0x10c6, 0x10d2, 0x10d2, 0x10d2, 0x10e7, 0x10f6, 0x1102, 0x1102, 0x1102,
-	0x111a, 0x111a, 0x111a, 0x1126, 0x1126, 0x1132, 0x1132, 0x1147, 0x1159, 0x1159, 0x1168, 0x1168,
-	0x117a, 0x1189, 0x1189, 0x1198, 0x11ad, 0x11b9, 0x11cb, 0x11dd, 0x11ec, 0x11f8, 0x121a, 0x122c,
-	0x1247, 0x1259, 0x126e, 0x1296, 0x12ab, 0x12ab, 0x12d3, 0x12eb, 0x12fd, 0x1312, 0x131e, 0x1336,
-	0x1345, 0x135a, 0x136c, 0x137e, 0x1390, 0x13b8, 0x13b8, 0x13c7, 0x13ef, 0x1408, 0x141a, 0x141a,
-	0x1429, 0x1435, 0x1435, 0x145d, 0x146f, 0x1484, 0x14bb, 0x14bb, 0x14d0, 0x14d0, 0x14df, 0x14fa,
-	0x14fa, 0x1503, 0x1503, 0x153d, 0x156e, 0x156e, 0x1599, 0x15c4, 0x15e5, 0x15eb, 0x15fd, 0x15fd,
-	0x1609, 0x161b, 0x161b, 0x1627, 0x1642, 0x1642, 0x1677, 0x16a3, 0x16a3, 0x16b2, 0x16d0, 0x16df,
-	0x16f1, 0x1719, 0x1738, 0x1738, 0x1738, 0x1744, 0x175c, 0x1768, 0x1768, 0x1774, 0x1774, 0x178c,
-	0x179e, 0x17b0, 0x17d5, 0x17d5, 0x17e1, 0x17ed, 0x17ed, 0x17fc, 0x180b, 0x180b, 0x180b, 0x1820,
-	0x1832, 0x1847, 0x186c, 0x188e, 0x188e, 0x18aa, 0x18b9, 0x18c8, 0x18d4, 0x18e3, 0x18ef, 0x190a,
-	0x190a, 0x1919, 0x192b, 0x1955, 0x1955, 0x1961, 0x1961, 0x196d, 0x1982, 0x199e, 0x199e, 0x199e,
-	0x199e, 0x19b3, 0x19ce, 0x19f0, 0x1a02, 0x1a14, 0x1a2c, 0x1a4e, 0x1a4e, 0x1a4e, 0x1a63, 0x1a72,
-	0x1a87, 0x1a93, 0x1a93, 0x1aa2, 0x1ab7, 0x1ac9, 0x1ad8, 0x1af0, 0x1b02, 0x1b1d, 0x1b1d, 0x1b1d,
-	0x1b1d, 0x1b2f, 0x1b2f, 0x1b3e, 0x1b4d, 0x1b4d, 0x1b6f, 0x1b84, 0x1b96, 0x1ba5, 0x1bb4, 0x1bc6,
-	0x1bc6, 0x1bc6, 0x1bdb, 0x1bdb, 0x1bea, 0x1bfc, 0x1c0b, 0x1c26, 0x1c32, 0x1c32, 0x1c41, 0x1c50,
-	0x1c62, 0x1c6e, 0x1c89, 0x1cae, 0x1cd3, 0x1cdf, 0x1cf1, 0x1d15, 0x1d24, 0x1d39, 0x1d48, 0x1d5a,
-	0x1d5a, 0x1d6f, 0x1d91, 0x1da0, 0x1db5, 0x1dcd, 0x1dcd, 0x1dcd, 0x1de2, 0x1de2, 0x1de2, 0x1dfa,
-	0x1e06, 0x1e25, 0x1e3a, 0x1e49, 0x1e5b, 0x1e5b, 0x1e70, 0x1e70, 0x1e7f, 0x1ea1, 0x1ea1, 0x1eb0,
-	0x1ecf, 0x1edb, 0x1f09, 0x1f27, 0x1f3f, 0x1f51, 0x1f66, 0x1f72, 0x1f9a, 0x1fb5, 0x1fcd, 0x1feb,
-	0x200f, 0x2021, 0x2021, 0x2021, 0x2021, 0x2043, 0x2043, 0x205e, 0x205e, 0x205e, 0x2079, 0x2079,
-	0x20aa, 0x20b3, 0x20b3, 0x20ce, 0x20e3, 0x20fe, 0x20fe, 0x20fe, 0x2110, 0x2122, 0x2122, 0x2122,
-	0x2122, 0x213d, 0x2146, 0x215b, 0x216a, 0x2195, 0x21ad, 0x21bc, 0x21ce, 0x21ce, 0x21ce, 0x21dd,
-	0x21f5, 0x220a, 0x220a, 0x220a, 0x2216, 0x2216, 0x2228, 0x2256, 0x2278, 0x2278, 0x2293, 0x229c,
-	0x229c, 0x22ae, 0x22ae, 0x22ae, 0x22cd, 0x22e9, 0x2305, 0x2327, 0x233f, 0x2357, 0x237f, 0x238e,
-	0x238e, 0x238e, 0x23a0, 0x23ac, 0x23c4, 0x23c4, 0x23ec, 0x2417, 0x2429, 0x2429, 0x2429, 0x243b,
-	0x2447, 0x2459, 0x2468, 0x247d, 0x2486, 0x249b, 0x249b, 0x24b0, 0x24c8, 0x24c8, 0x24dd, 0x2502,
-	0x251b, 0x251b, 0x251b, 0x251b, 0x2539, 0x2539, 0x254e, 0x2560, 0x2572, 0x258a, 0x25b9, 0x25ce,
-	0x25e9, 0x2604, 0x260d, 0x2616, 0x2616, 0x2616, 0x2616, 0x2616, 0x2625, 0x2625, 0x2634, 0x2634,
-	0x2643, 0x264f, 0x265b, 0x265b, 0x2670, 0x2670, 0x267c, 0x2685, 0x2694, 0x2694, 0x2694, 0x2694,
-	0x26af, 0x26c7, 0x26ee, 0x26ee, 0x2709, 0x2747, 0x2756, 0x278f, 0x27a1, 0x27cd, 0x27fb, 0x2827,
-	0x2867, 0x2895, 0x28c6, 0x28f7, 0x292f, 0x2957, 0x2985, 0x29ad, 0x29d2, 0x29ea, 0x2a21, 0x2a52,
-	0x2a6d, 0x2a98, 0x2aba, 0x2adf,
+	0x3da, 0x3e9, 0x41a, 0x432, 0x447, 0x45c, 0x46e, 0x47a, 0x48c, 0x49e, 0x4b7, 0x4d5,
+	0x4ea, 0x505, 0x523, 0x532, 0x553, 0x574, 0x595, 0x5a4, 0x5bd, 0x5d8, 0x5e1, 0x5f9,
+	0x60b, 0x626, 0x638, 0x650, 0x66b, 0x67a, 0x68c, 0x6aa, 0x6bc, 0x6dd, 0x6e9, 0x6fb,
+	0x710, 0x71f, 0x734, 0x749, 0x755, 0x76a, 0x782, 0x791, 0x7b2, 0x7c1, 0x7dc, 0x7f1,
+	0x7fa, 0x818, 0x83d, 0x855, 0x86d, 0x888, 0x897, 0x8b8, 0x8ca, 0x8e5, 0x8f4, 0x8fd,
+	0x915, 0x92a, 0x939, 0x95b, 0x96d, 0x97f, 0x985, 0x9c5, 0x9f9, 0xa1b, 0xa2d, 0xa42,
+	0xa54, 0xa69, 0xa78, 0xa8a, 0xaa2, 0xab4, 0xac0, 0xacf, 0xade, 0xaf9, 0xb0e, 0xb23,
+	0xb35, 0xb50, 0xb5c, 0xb80, 0xb95, 0xbb3, 0xbc2, 0xbe1, 0xbf0, 0xc02, 0xc17, 0xc38,
+	0xc47, 0xc53, 0xc65, 0xc83, 0xc9b, 0xcad, 0xcbf, 0xcd4, 0xce9, 0xd01, 0xd0d, 0xd1f,
+	0xd2e, 0xd37, 0xd55, 0xd6d, 0xd8b, 0xd9a, 0xdac, 0xdbb, 0xdca, 0xde2, 0xdf1, 0xe12,
+	0xe21, 0xe36, 0xe48, 0xe60, 0xe75, 0xe8a, 0xe9c, 0xeab, 0xebd, 0xecf, 0xee1, 0xeed,
+	0xefc, 0xf11, 0xf20, 0xf38, 0xf47, 0xf47, 0xf62, 0xf74, 0xf7d, 0xf92, 0xf92, 0xfa1,
+	0xfa1, 0xfc9, 0xff7, 0x1009, 0x101b, 0x102d, 0x102d, 0x103f, 0x103f, 0x104e, 0x104e, 0x104e,
+	0x1057, 0x1057, 0x1072, 0x1072, 0x107e, 0x107e, 0x108d, 0x10a2, 0x10a2, 0x10ab, 0x10ab, 0x10ab,
+	0x10ab, 0x10b7, 0x10c9, 0x10c9, 0x10d5, 0x10d5, 0x10d5, 0x10ea, 0x10f9, 0x1105, 0x1105, 0x1105,
+	0x111d, 0x111d, 0x111d, 0x1129, 0x1129, 0x1135, 0x1135, 0x114a, 0x115c, 0x115c, 0x116b, 0x116b,
+	0x117d, 0x118c, 0x118c, 0x119b, 0x11b0, 0x11bc, 0x11ce, 0x11e0, 0x11ef, 0x11fb, 0x121d, 0x122f,
+	0x124a, 0x125c, 0x1271, 0x1299, 0x12ae, 0x12ae, 0x12d6, 0x12ee, 0x1300, 0x1315, 0x1321, 0x1339,
+	0x1348, 0x135d, 0x136f, 0x1381, 0x1393, 0x13bb, 0x13bb, 0x13ca, 0x13f2, 0x140b, 0x141d, 0x141d,
+	0x142c, 0x1438, 0x1438, 0x1460, 0x1472, 0x1487, 0x14be, 0x14be, 0x14d3, 0x14d3, 0x14e2, 0x14fd,
+	0x14fd, 0x1506, 0x1506, 0x1540, 0x1571, 0x1571, 0x159c, 0x15c7, 0x15e8, 0x15ee, 0x1600, 0x1600,
+	0x160c, 0x161e, 0x161e, 0x162a, 0x1645, 0x1645, 0x167a, 0x16a6, 0x16a6, 0x16b5, 0x16d3, 0x16e2,
+	0x16f4, 0x171c, 0x173b, 0x173b, 0x173b, 0x1747, 0x175f, 0x176b, 0x176b, 0x1777, 0x1777, 0x178f,
+	0x17a1, 0x17b3, 0x17d8, 0x17d8, 0x17e4, 0x17f0, 0x17f0, 0x17ff, 0x180e, 0x180e, 0x180e, 0x1823,
+	0x1835, 0x184a, 0x186f, 0x1891, 0x1891, 0x18ad, 0x18bc, 0x18cb, 0x18d7, 0x18e6, 0x18f2, 0x190d,
+	0x190d, 0x191c, 0x192e, 0x1958, 0x1958, 0x1964, 0x1964, 0x1970, 0x1985, 0x19a1, 0x19a1, 0x19a1,
+	0x19a1, 0x19b6, 0x19d1, 0x19f3, 0x1a05, 0x1a17, 0x1a2f, 0x1a51, 0x1a51, 0x1a51, 0x1a66, 0x1a75,
+	0x1a8a, 0x1a96, 0x1a96, 0x1aa5, 0x1aba, 0x1acc, 0x1adb, 0x1af3, 0x1b05, 0x1b20, 0x1b20, 0x1b20,
+	0x1b20, 0x1b32, 0x1b32, 0x1b41, 0x1b50, 0x1b50, 0x1b72, 0x1b87, 0x1b99, 0x1ba8, 0x1bb7, 0x1bc9,
+	0x1bc9, 0x1bc9, 0x1bde, 0x1bde, 0x1bed, 0x1bff, 0x1c0e, 0x1c29, 0x1c35, 0x1c35, 0x1c44, 0x1c53,
+	0x1c65, 0x1c71, 0x1c8c, 0x1cb1, 0x1cd6, 0x1ce2, 0x1cf4, 0x1d18, 0x1d27, 0x1d3c, 0x1d4b, 0x1d5d,
+	0x1d5d, 0x1d72, 0x1d94, 0x1da3, 0x1db8, 0x1dd0, 0x1dd0, 0x1dd0, 0x1de5, 0x1de5, 0x1de5, 0x1dfd,
+	0x1e09, 0x1e28, 0x1e3d, 0x1e4c, 0x1e5e, 0x1e5e, 0x1e73, 0x1e73, 0x1e82, 0x1ea4, 0x1ea4, 0x1eb3,
+	0x1ed2, 0x1ede, 0x1f0c, 0x1f2a, 0x1f42, 0x1f54, 0x1f69, 0x1f75, 0x1f9d, 0x1fb8, 0x1fd0, 0x1fee,
+	0x2012, 0x2024, 0x2024, 0x2024, 0x2024, 0x2046, 0x2046, 0x2061, 0x2061, 0x2061, 0x207c, 0x207c,
+	0x20ad, 0x20b6, 0x20b6, 0x20d1, 0x20e6, 0x2101, 0x2101, 0x2101, 0x2113, 0x2125, 0x2125, 0x2125,
+	0x2125, 0x2140, 0x2149, 0x215e, 0x216d, 0x2198, 0x21b0, 0x21bf, 0x21d1, 0x21d1, 0x21d1, 0x21e0,
+	0x21f8, 0x220d, 0x220d, 0x220d, 0x2219, 0x2219, 0x222b, 0x2259, 0x227b, 0x227b, 0x2296, 0x229f,
+	0x229f, 0x22b1, 0x22b1, 0x22b1, 0x22d0, 0x22ec, 0x2308, 0x232a, 0x2342, 0x235a, 0x2382, 0x2391,
+	0x2391, 0x2391, 0x23a3, 0x23af, 0x23c7, 0x23c7, 0x23ef, 0x241a, 0x242c, 0x242c, 0x242c, 0x243e,
+	0x244a, 0x245c, 0x246b, 0x2480, 0x2489, 0x249e, 0x249e, 0x24b3, 0x24cb, 0x24cb, 0x24e0, 0x2505,
+	0x251e, 0x251e, 0x251e, 0x251e, 0x253c, 0x253c, 0x2551, 0x2563, 0x2575, 0x258d, 0x25bc, 0x25d1,
+	0x25ec, 0x2607, 0x2610, 0x2619, 0x2619, 0x2619, 0x2619, 0x2619, 0x2628, 0x2628, 0x2637, 0x2637,
+	0x2646, 0x2652, 0x265e, 0x265e, 0x265e, 0x2673, 0x2673, 0x267f, 0x2688, 0x2697, 0x2697, 0x2697,
+	0x2697, 0x26b2, 0x26ca, 0x26f1, 0x26f1, 0x270c, 0x274a, 0x2759, 0x2792, 0x27a4, 0x27d0, 0x27fe,
+	0x282a, 0x286a, 0x2898, 0x28c9, 0x28fa, 0x2932, 0x295a, 0x2988, 0x29b0, 0x29d5, 0x29ed, 0x2a24,
+	0x2a55, 0x2a70, 0x2a9b, 0x2abd, 0x2ae2,
 }
 
 const hrLangStr = "" +
@@ -10739,7 +9973,7 @@
 	"kibrazilski portugalskieuropski portugalskimoldavskisrpsko-hrvatskikineski (poje" +
 	"dnostavljeni)kineski (tradicionalni)"
 
-var hrLangIdx = []uint16{ // 604 entries
+var hrLangIdx = []uint16{ // 605 entries
 	0x0, 0x7, 0xe, 0x15, 0x1e, 0x25, 0x2d, 0x36, 0x3d, 0x44, 0x4b, 0x51,
 	0x60, 0x6a, 0x74, 0x7c, 0x83, 0x8a, 0x93, 0x9d, 0xa6, 0xae, 0xb8, 0xc2,
 	0xca, 0xd3, 0xd7, 0xde, 0xee, 0xf5, 0xfc, 0x102, 0x10b, 0x111, 0x119, 0x11c,
@@ -10787,10 +10021,10 @@
 	0xe3c, 0xe42, 0xe47, 0xe50, 0xe53, 0xe5e, 0xe5e, 0xe68, 0xe6f, 0xe6f, 0xe77, 0xe82,
 	0xe8b, 0xe8b, 0xe91, 0xe91, 0xe9a, 0xe9a, 0xea1, 0xeac, 0xeb3, 0xebb, 0xecf, 0xed8,
 	0xee1, 0xee8, 0xef2, 0xef5, 0xef5, 0xef5, 0xef5, 0xef5, 0xefa, 0xefa, 0xeff, 0xf05,
-	0xf0b, 0xf10, 0xf15, 0xf15, 0xf1b, 0xf1b, 0xf1f, 0xf22, 0xf28, 0xf2f, 0xf34, 0xf34,
-	0xf3d, 0xf44, 0xf4f, 0xf4f, 0xf55, 0xf74, 0xf78, 0xf8f, 0xf95, 0xfaf, 0xfc3, 0xfdf,
-	0xff2, 0x1003, 0x1015, 0x1027, 0x1042, 0x1056, 0x106b, 0x107d, 0x1091, 0x109a, 0x10af, 0x10c3,
-	0x10cc, 0x10db, 0x10f5, 0x110c,
+	0xf0b, 0xf10, 0xf15, 0xf15, 0xf15, 0xf1b, 0xf1b, 0xf1f, 0xf22, 0xf28, 0xf2f, 0xf34,
+	0xf34, 0xf3d, 0xf44, 0xf4f, 0xf4f, 0xf55, 0xf74, 0xf78, 0xf8f, 0xf95, 0xfaf, 0xfc3,
+	0xfdf, 0xff2, 0x1003, 0x1015, 0x1027, 0x1042, 0x1056, 0x106b, 0x107d, 0x1091, 0x109a, 0x10af,
+	0x10c3, 0x10cc, 0x10db, 0x10f5, 0x110c,
 }
 
 const huLangStr = "" +
@@ -10841,7 +10075,7 @@
 	"iasvájci franciaflamandbrazíliai portugáleurópai portugálmoldvaiszerbhorvátegysz" +
 	"erűsített kínaihagyományos kínai"
 
-var huLangIdx = []uint16{ // 604 entries
+var huLangIdx = []uint16{ // 605 entries
 	0x0, 0x4, 0xa, 0x13, 0x1c, 0x20, 0x26, 0x2f, 0x33, 0x3b, 0x3f, 0x45,
 	0x53, 0x5a, 0x62, 0x69, 0x70, 0x77, 0x7f, 0x85, 0x8b, 0x93, 0x9b, 0xa2,
 	0xaa, 0xb2, 0xb6, 0xba, 0xc9, 0xcf, 0xd5, 0xd9, 0xdf, 0xe5, 0xec, 0xef,
@@ -10889,10 +10123,10 @@
 	0xcac, 0xcb3, 0xcb8, 0xcbe, 0xcc1, 0xcc9, 0xcc9, 0xcd0, 0xcd7, 0xcd7, 0xcde, 0xce9,
 	0xcf2, 0xcf2, 0xcf9, 0xcf9, 0xd03, 0xd03, 0xd0a, 0xd10, 0xd17, 0xd1c, 0xd36, 0xd3c,
 	0xd43, 0xd4a, 0xd4e, 0xd51, 0xd51, 0xd51, 0xd51, 0xd51, 0xd58, 0xd58, 0xd5d, 0xd63,
-	0xd69, 0xd6f, 0xd74, 0xd74, 0xd7b, 0xd7b, 0xd80, 0xd84, 0xd88, 0xd8f, 0xd94, 0xd94,
-	0xd9b, 0xda3, 0xdb8, 0xdb8, 0xdbe, 0xdd1, 0xdd5, 0xdf0, 0xdf4, 0xe0a, 0xe19, 0xe2a,
-	0xe39, 0xe46, 0xe50, 0xe5e, 0xe74, 0xe84, 0xe96, 0xea5, 0xeb4, 0xebb, 0xecf, 0xee1,
-	0xee8, 0xef4, 0xf0b, 0xf1e,
+	0xd69, 0xd6f, 0xd74, 0xd74, 0xd74, 0xd7b, 0xd7b, 0xd80, 0xd84, 0xd88, 0xd8f, 0xd94,
+	0xd94, 0xd9b, 0xda3, 0xdb8, 0xdb8, 0xdbe, 0xdd1, 0xdd5, 0xdf0, 0xdf4, 0xe0a, 0xe19,
+	0xe2a, 0xe39, 0xe46, 0xe50, 0xe5e, 0xe74, 0xe84, 0xe96, 0xea5, 0xeb4, 0xebb, 0xecf,
+	0xee1, 0xee8, 0xef4, 0xf0b, 0xf1e,
 }
 
 const hyLangStr = "" +
@@ -10924,7 +10158,7 @@
 	"ներենկանադական ֆրանսերենշվեյցարական ֆրանսերենֆլամանդերենբրազիլական պորտուգալերեն" +
 	"եվրոպական պորտուգալերենմոլդովերենպարզեցված չինարենավանդական չինարեն"
 
-var hyLangIdx = []uint16{ // 604 entries
+var hyLangIdx = []uint16{ // 605 entries
 	0x0, 0x0, 0x12, 0x12, 0x24, 0x34, 0x46, 0x46, 0x56, 0x66, 0x66, 0x66,
 	0x7e, 0x92, 0xaa, 0xc0, 0xc0, 0xce, 0xe2, 0xf4, 0x108, 0x11a, 0x130, 0x130,
 	0x130, 0x144, 0x144, 0x152, 0x152, 0x152, 0x164, 0x174, 0x188, 0x188, 0x196, 0x19c,
@@ -10972,10 +10206,10 @@
 	0xd01, 0xd01, 0xd01, 0xd01, 0xd01, 0xd01, 0xd01, 0xd01, 0xd01, 0xd01, 0xd01, 0xd01,
 	0xd01, 0xd01, 0xd01, 0xd01, 0xd01, 0xd01, 0xd01, 0xd01, 0xd0f, 0xd0f, 0xd3e, 0xd3e,
 	0xd3e, 0xd3e, 0xd55, 0xd5b, 0xd5b, 0xd5b, 0xd5b, 0xd5b, 0xd5b, 0xd5b, 0xd67, 0xd67,
-	0xd67, 0xd67, 0xd67, 0xd67, 0xd67, 0xd67, 0xd6f, 0xd6f, 0xd6f, 0xd6f, 0xd6f, 0xd6f,
-	0xd6f, 0xd6f, 0xd6f, 0xd6f, 0xd6f, 0xda3, 0xda3, 0xddb, 0xddb, 0xe13, 0xe3c, 0xe72,
-	0xe99, 0xebc, 0xee1, 0xf04, 0xf35, 0xf5a, 0xf81, 0xfa6, 0xfcf, 0xfe5, 0x1014, 0x1041,
-	0x1055, 0x1055, 0x1076, 0x1097,
+	0xd67, 0xd67, 0xd67, 0xd67, 0xd67, 0xd67, 0xd67, 0xd6f, 0xd6f, 0xd6f, 0xd6f, 0xd6f,
+	0xd6f, 0xd6f, 0xd6f, 0xd6f, 0xd6f, 0xd6f, 0xda3, 0xda3, 0xddb, 0xddb, 0xe13, 0xe3c,
+	0xe72, 0xe99, 0xebc, 0xee1, 0xf04, 0xf35, 0xf5a, 0xf81, 0xfa6, 0xfcf, 0xfe5, 0x1014,
+	0x1041, 0x1055, 0x1055, 0x1076, 0x1097,
 }
 
 const idLangStr = "" +
@@ -11031,7 +10265,7 @@
 	"ishPortugis BrasilPortugis EropaMoldaviaSerbo-KroasiaChina (Aksara Sederhana)Chi" +
 	"na (Aksara Tradisional)"
 
-var idLangIdx = []uint16{ // 604 entries
+var idLangIdx = []uint16{ // 605 entries
 	0x0, 0x4, 0xa, 0x10, 0x19, 0x1d, 0x24, 0x2a, 0x2e, 0x33, 0x37, 0x3d,
 	0x47, 0x4e, 0x57, 0x5d, 0x64, 0x6b, 0x72, 0x77, 0x7d, 0x83, 0x8a, 0x91,
 	0x99, 0xa0, 0xa4, 0xaa, 0xc0, 0xc7, 0xcc, 0xd1, 0xd7, 0xdd, 0xe5, 0xe8,
@@ -11079,10 +10313,10 @@
 	0xd4c, 0xd52, 0xd57, 0xd5c, 0xd5f, 0xd66, 0xd66, 0xd6d, 0xd74, 0xd74, 0xd7c, 0xd87,
 	0xd90, 0xd96, 0xd9c, 0xd9c, 0xda4, 0xdae, 0xdb5, 0xdbb, 0xdc2, 0xdc9, 0xde0, 0xde6,
 	0xdec, 0xdf3, 0xdf7, 0xdfa, 0xe01, 0xe01, 0xe01, 0xe01, 0xe06, 0xe06, 0xe0b, 0xe11,
-	0xe17, 0xe1c, 0xe21, 0xe21, 0xe27, 0xe27, 0xe2b, 0xe2e, 0xe34, 0xe3b, 0xe40, 0xe40,
-	0xe46, 0xe4d, 0xe57, 0xe57, 0xe5d, 0xe75, 0xe79, 0xe94, 0xe98, 0xeab, 0xeb9, 0xecc,
-	0xedd, 0xeeb, 0xefa, 0xf09, 0xf1e, 0xf2b, 0xf3a, 0xf48, 0xf55, 0xf5c, 0xf6b, 0xf79,
-	0xf81, 0xf8e, 0xfa6, 0xfc0,
+	0xe17, 0xe1c, 0xe21, 0xe21, 0xe21, 0xe27, 0xe27, 0xe2b, 0xe2e, 0xe34, 0xe3b, 0xe40,
+	0xe40, 0xe46, 0xe4d, 0xe57, 0xe57, 0xe5d, 0xe75, 0xe79, 0xe94, 0xe98, 0xeab, 0xeb9,
+	0xecc, 0xedd, 0xeeb, 0xefa, 0xf09, 0xf1e, 0xf2b, 0xf3a, 0xf48, 0xf55, 0xf5c, 0xf6b,
+	0xf79, 0xf81, 0xf8e, 0xfa6, 0xfc0,
 }
 
 const isLangStr = "" +
@@ -11134,7 +10368,7 @@
 	"skasvissnesk franskaflæmskabrasílísk portúgalskaevrópsk portúgalskamoldóvskaserb" +
 	"ókróatískakínverska (einfölduð)kínverska (hefðbundin)"
 
-var isLangIdx = []uint16{ // 604 entries
+var isLangIdx = []uint16{ // 605 entries
 	0x0, 0x0, 0xa, 0x14, 0x1f, 0x23, 0x2d, 0x36, 0x3f, 0x47, 0x50, 0x57,
 	0x5e, 0x65, 0x74, 0x7e, 0x86, 0x8d, 0x96, 0x9e, 0xa8, 0xb1, 0xbc, 0xc8,
 	0xd0, 0xd9, 0xdd, 0xe7, 0xf6, 0xfd, 0x103, 0x109, 0x110, 0x118, 0x11f, 0x122,
@@ -11182,10 +10416,10 @@
 	0xde2, 0xde9, 0xdef, 0xdf5, 0xdf9, 0xe04, 0xe04, 0xe0e, 0xe15, 0xe15, 0xe1d, 0xe2f,
 	0xe37, 0xe37, 0xe37, 0xe37, 0xe41, 0xe41, 0xe4a, 0xe55, 0xe5c, 0xe66, 0xe6f, 0xe77,
 	0xe84, 0xe8e, 0xe92, 0xe96, 0xe96, 0xe96, 0xe96, 0xe96, 0xe9e, 0xe9e, 0xea4, 0xea4,
-	0xeab, 0xeb1, 0xeb7, 0xeb7, 0xec1, 0xec1, 0xec6, 0xeca, 0xed2, 0xed2, 0xed2, 0xed2,
-	0xed2, 0xeda, 0xee4, 0xee4, 0xeea, 0xf09, 0xf0f, 0xf24, 0xf24, 0xf40, 0xf53, 0xf67,
-	0xf77, 0xf86, 0xf91, 0xfa1, 0xfba, 0xfcb, 0xfde, 0xfef, 0x1000, 0x1008, 0x1020, 0x1035,
-	0x103f, 0x1050, 0x1068, 0x1080,
+	0xeab, 0xeb1, 0xeb7, 0xeb7, 0xeb7, 0xec1, 0xec1, 0xec6, 0xeca, 0xed2, 0xed2, 0xed2,
+	0xed2, 0xed2, 0xeda, 0xee4, 0xee4, 0xeea, 0xf09, 0xf0f, 0xf24, 0xf24, 0xf40, 0xf53,
+	0xf67, 0xf77, 0xf86, 0xf91, 0xfa1, 0xfba, 0xfcb, 0xfde, 0xfef, 0x1000, 0x1008, 0x1020,
+	0x1035, 0x103f, 0x1050, 0x1068, 0x1080,
 }
 
 const itLangStr = "" +
@@ -11252,7 +10486,7 @@
 	"ingoportoghese brasilianoportoghese europeomoldavoserbo-croatocinese semplificat" +
 	"ocinese tradizionale"
 
-var itLangIdx = []uint16{ // 604 entries
+var itLangIdx = []uint16{ // 605 entries
 	0x0, 0x4, 0xa, 0x11, 0x1a, 0x1e, 0x25, 0x2e, 0x33, 0x3b, 0x40, 0x46,
 	0x52, 0x5a, 0x64, 0x6b, 0x72, 0x79, 0x82, 0x8a, 0x91, 0x99, 0xa1, 0xa7,
 	0xaf, 0xb4, 0xb8, 0xbc, 0xce, 0xd5, 0xdc, 0xe2, 0xe9, 0xef, 0xf7, 0xfa,
@@ -11300,10 +10534,10 @@
 	0x1041, 0x1047, 0x104c, 0x1051, 0x1054, 0x105b, 0x1062, 0x1069, 0x1070, 0x1078, 0x1080, 0x108f,
 	0x1098, 0x109e, 0x10a4, 0x10ac, 0x10b5, 0x10c1, 0x10c8, 0x10ce, 0x10d5, 0x10dd, 0x10e6, 0x10ec,
 	0x10f5, 0x10fb, 0x10ff, 0x1102, 0x1108, 0x110d, 0x1122, 0x1122, 0x1126, 0x112b, 0x1130, 0x1136,
-	0x113c, 0x1141, 0x1146, 0x1148, 0x114e, 0x1157, 0x115b, 0x1166, 0x116c, 0x1173, 0x1178, 0x1181,
-	0x118a, 0x1191, 0x119b, 0x11a4, 0x11aa, 0x11c8, 0x11cc, 0x11e8, 0x11ec, 0x1202, 0x1213, 0x1228,
-	0x123b, 0x124b, 0x125d, 0x126e, 0x1286, 0x1296, 0x12a8, 0x12b9, 0x12ca, 0x12d3, 0x12e8, 0x12fa,
-	0x1301, 0x130d, 0x1320, 0x1333,
+	0x113c, 0x1141, 0x1146, 0x1146, 0x1148, 0x114e, 0x1157, 0x115b, 0x1166, 0x116c, 0x1173, 0x1178,
+	0x1181, 0x118a, 0x1191, 0x119b, 0x11a4, 0x11aa, 0x11c8, 0x11cc, 0x11e8, 0x11ec, 0x1202, 0x1213,
+	0x1228, 0x123b, 0x124b, 0x125d, 0x126e, 0x1286, 0x1296, 0x12a8, 0x12b9, 0x12ca, 0x12d3, 0x12e8,
+	0x12fa, 0x1301, 0x130d, 0x1320, 0x1333,
 }
 
 const jaLangStr = "" +
@@ -11350,7 +10584,7 @@
 	"的内容なしザザ語現代標準アラビア語標準ドイツ語(スイス)オーストラリア英語カナダ英語イギリス英語アメリカ英語スペイン語(イベリア半島)フレミッシュ語ポルトガル語" +
 	"(イベリア半島)モルダビア語セルボ・クロアチア語簡体中国語繁体中国語"
 
-var jaLangIdx = []uint16{ // 604 entries
+var jaLangIdx = []uint16{ // 605 entries
 	0x0, 0xf, 0x1e, 0x30, 0x48, 0x54, 0x63, 0x72, 0x81, 0x90, 0x9f, 0xae,
 	0xc9, 0xdb, 0xed, 0xff, 0x10e, 0x11d, 0x12c, 0x13b, 0x14a, 0x159, 0x16b, 0x17d,
 	0x18c, 0x19b, 0x1a7, 0x1b3, 0x1c5, 0x1d7, 0x1e9, 0x1fb, 0x207, 0x216, 0x222, 0x22e,
@@ -11398,10 +10632,10 @@
 	0x21f0, 0x21ff, 0x220e, 0x221d, 0x2229, 0x2238, 0x2247, 0x2259, 0x226e, 0x227d, 0x228f, 0x22a6,
 	0x22bb, 0x22ca, 0x22d6, 0x22e5, 0x22f4, 0x2312, 0x2324, 0x2330, 0x233f, 0x234e, 0x2375, 0x2387,
 	0x2396, 0x23a8, 0x23b1, 0x23bd, 0x23cc, 0x23db, 0x23ed, 0x2405, 0x2414, 0x2420, 0x242f, 0x243e,
-	0x2450, 0x245c, 0x2468, 0x246e, 0x2480, 0x248f, 0x2498, 0x24a1, 0x24ad, 0x24bc, 0x24cb, 0x24e3,
-	0x24ec, 0x24fb, 0x2510, 0x2522, 0x252e, 0x2557, 0x2560, 0x2575, 0x257e, 0x2599, 0x2599, 0x25b6,
-	0x25d1, 0x25e0, 0x25f2, 0x2604, 0x2604, 0x2627, 0x2627, 0x2627, 0x2627, 0x263c, 0x263c, 0x2662,
-	0x2674, 0x2692, 0x26a1, 0x26b0,
+	0x2450, 0x245c, 0x2468, 0x2468, 0x246e, 0x2480, 0x248f, 0x2498, 0x24a1, 0x24ad, 0x24bc, 0x24cb,
+	0x24e3, 0x24ec, 0x24fb, 0x2510, 0x2522, 0x252e, 0x2557, 0x2560, 0x2575, 0x257e, 0x2599, 0x2599,
+	0x25b6, 0x25d1, 0x25e0, 0x25f2, 0x2604, 0x2604, 0x2627, 0x2627, 0x2627, 0x2627, 0x263c, 0x263c,
+	0x2662, 0x2674, 0x2692, 0x26a1, 0x26b0,
 }
 
 const kaLangStr = "" +
@@ -11448,7 +10682,7 @@
 	"იული ფრანგულიფლამანდიურიბრაზილიური პორტუგალიურიევროპული პორტუგალიურიმოლდავურისერ" +
 	"ბულ-ხორვატულიგამარტივებული ჩინურიტრადიციული ჩინური"
 
-var kaLangIdx = []uint16{ // 604 entries
+var kaLangIdx = []uint16{ // 605 entries
 	0x0, 0xf, 0x27, 0x3f, 0x5d, 0x6c, 0x84, 0x9f, 0xb4, 0xc9, 0xc9, 0xdb,
 	0x102, 0x11d, 0x13b, 0x156, 0x156, 0x16b, 0x186, 0x19e, 0x1b9, 0x1d1, 0x1ef, 0x204,
 	0x204, 0x21f, 0x228, 0x23a, 0x26b, 0x283, 0x298, 0x2ad, 0x2c8, 0x2da, 0x2ef, 0x2f8,
@@ -11496,10 +10730,10 @@
 	0x2002, 0x2002, 0x2002, 0x2011, 0x2011, 0x2011, 0x2011, 0x2029, 0x2029, 0x2029, 0x2029, 0x2029,
 	0x2029, 0x2029, 0x2029, 0x2029, 0x2029, 0x2029, 0x2029, 0x2029, 0x2041, 0x204d, 0x20a0, 0x20bb,
 	0x20d6, 0x20d6, 0x20f2, 0x20fb, 0x20fb, 0x20fb, 0x20fb, 0x20fb, 0x20fb, 0x20fb, 0x210a, 0x210a,
-	0x211f, 0x211f, 0x211f, 0x211f, 0x213a, 0x213a, 0x2146, 0x2146, 0x2146, 0x2146, 0x2146, 0x2146,
-	0x2161, 0x2161, 0x218b, 0x218b, 0x219d, 0x21f9, 0x21f9, 0x2247, 0x2259, 0x22b2, 0x22e9, 0x2332,
-	0x236f, 0x23a3, 0x23da, 0x2411, 0x245b, 0x248c, 0x24c0, 0x24f1, 0x252b, 0x254c, 0x258f, 0x25cc,
-	0x25e7, 0x2615, 0x264f, 0x2680,
+	0x211f, 0x211f, 0x211f, 0x211f, 0x211f, 0x213a, 0x213a, 0x2146, 0x2146, 0x2146, 0x2146, 0x2146,
+	0x2146, 0x2161, 0x2161, 0x218b, 0x218b, 0x219d, 0x21f9, 0x21f9, 0x2247, 0x2259, 0x22b2, 0x22e9,
+	0x2332, 0x236f, 0x23a3, 0x23da, 0x2411, 0x245b, 0x248c, 0x24c0, 0x24f1, 0x252b, 0x254c, 0x258f,
+	0x25cc, 0x25e7, 0x2615, 0x264f, 0x2680,
 }
 
 const kkLangStr = "" +
@@ -11530,7 +10764,7 @@
 	"ранцуз тіліфламанд тілібразилиялық португал тіліеуропалық португал тілімолдован " +
 	"тіліжеңілдетілген қытай тілідәстүрлі қытай тілі"
 
-var kkLangIdx = []uint16{ // 604 entries
+var kkLangIdx = []uint16{ // 605 entries
 	0x0, 0x0, 0x13, 0x13, 0x25, 0x2d, 0x37, 0x37, 0x48, 0x5b, 0x5b, 0x5b,
 	0x78, 0x8f, 0xa6, 0xbb, 0xbb, 0xc9, 0xde, 0xf1, 0x106, 0x11b, 0x129, 0x129,
 	0x129, 0x142, 0x142, 0x151, 0x151, 0x151, 0x15d, 0x163, 0x176, 0x176, 0x185, 0x18b,
@@ -11578,10 +10812,10 @@
 	0xba1, 0xba1, 0xba1, 0xba1, 0xba1, 0xba1, 0xba1, 0xba1, 0xba1, 0xba1, 0xba1, 0xba1,
 	0xba1, 0xba1, 0xba1, 0xba1, 0xba1, 0xba1, 0xba1, 0xba1, 0xbaf, 0xbaf, 0xbe6, 0xbe6,
 	0xbe6, 0xbe6, 0xbfd, 0xc03, 0xc03, 0xc03, 0xc03, 0xc03, 0xc03, 0xc03, 0xc0f, 0xc0f,
-	0xc0f, 0xc0f, 0xc0f, 0xc0f, 0xc0f, 0xc0f, 0xc17, 0xc17, 0xc17, 0xc17, 0xc17, 0xc17,
-	0xc17, 0xc17, 0xc17, 0xc17, 0xc17, 0xc53, 0xc53, 0xc75, 0xc75, 0xcaa, 0xcd2, 0xd15,
-	0xd45, 0xd6f, 0xd9d, 0xdcb, 0xe00, 0xe26, 0xe4e, 0xe78, 0xea8, 0xebf, 0xeef, 0xf1b,
-	0xf34, 0xf34, 0xf62, 0xf86,
+	0xc0f, 0xc0f, 0xc0f, 0xc0f, 0xc0f, 0xc0f, 0xc0f, 0xc17, 0xc17, 0xc17, 0xc17, 0xc17,
+	0xc17, 0xc17, 0xc17, 0xc17, 0xc17, 0xc17, 0xc53, 0xc53, 0xc75, 0xc75, 0xcaa, 0xcd2,
+	0xd15, 0xd45, 0xd6f, 0xd9d, 0xdcb, 0xe00, 0xe26, 0xe4e, 0xe78, 0xea8, 0xebf, 0xeef,
+	0xf1b, 0xf34, 0xf34, 0xf62, 0xf86,
 }
 
 const kmLangStr = "" +
@@ -11610,7 +10844,7 @@
 	"លេស អាមេរិកអេស្ប៉ាញ អាមេរីកឡាតាំងអេស្ប៉ាញ អឺរ៉ុបផ្លាមីសព័រទុយហ្គាល់ ប្រេស៊ីលព័រទ" +
 	"ុយហ្គាល់ អឺរ៉ុបភាសាម៉ុលដាវីចិន​អក្សរ​កាត់ចិន​អក្សរ​ពេញ"
 
-var kmLangIdx = []uint16{ // 604 entries
+var kmLangIdx = []uint16{ // 605 entries
 	0x0, 0x21, 0x45, 0x6c, 0x93, 0x97, 0xaf, 0xd9, 0xee, 0x103, 0x103, 0x127,
 	0x154, 0x166, 0x181, 0x19f, 0x19f, 0x1b7, 0x1d5, 0x1e1, 0x1fc, 0x20e, 0x223, 0x223,
 	0x223, 0x22b, 0x22b, 0x234, 0x234, 0x234, 0x23d, 0x255, 0x273, 0x273, 0x291, 0x294,
@@ -11658,10 +10892,10 @@
 	0xe31, 0xe31, 0xe31, 0xe31, 0xe31, 0xe31, 0xe31, 0xe31, 0xe31, 0xe31, 0xe31, 0xe31,
 	0xe31, 0xe31, 0xe31, 0xe31, 0xe31, 0xe31, 0xe31, 0xe31, 0xe38, 0xe38, 0xe5a, 0xe5a,
 	0xe5a, 0xe5a, 0xe87, 0xe8a, 0xe8a, 0xe8a, 0xe8a, 0xe8a, 0xe8a, 0xe8a, 0xe8f, 0xe8f,
-	0xe8f, 0xe8f, 0xe8f, 0xe8f, 0xe8f, 0xe8f, 0xe93, 0xe93, 0xe93, 0xe93, 0xe93, 0xe93,
-	0xe93, 0xe93, 0xe93, 0xe93, 0xe93, 0xea8, 0xea8, 0xee1, 0xee1, 0xf23, 0xf57, 0xf85,
-	0xfbc, 0xfe7, 0x102d, 0x105b, 0x109b, 0x10c6, 0x10c6, 0x10c6, 0x10c6, 0x10db, 0x1118, 0x114f,
-	0x1173, 0x1173, 0x119d, 0x11c4,
+	0xe8f, 0xe8f, 0xe8f, 0xe8f, 0xe8f, 0xe8f, 0xe8f, 0xe93, 0xe93, 0xe93, 0xe93, 0xe93,
+	0xe93, 0xe93, 0xe93, 0xe93, 0xe93, 0xe93, 0xea8, 0xea8, 0xee1, 0xee1, 0xf23, 0xf57,
+	0xf85, 0xfbc, 0xfe7, 0x102d, 0x105b, 0x109b, 0x10c6, 0x10c6, 0x10c6, 0x10c6, 0x10db, 0x1118,
+	0x114f, 0x1173, 0x1173, 0x119d, 0x11c4,
 }
 
 const knLangStr = "" +
@@ -11715,7 +10949,7 @@
 	"್ಯಾನಿಷ್ಕೆನೆಡಿಯನ್ ಫ್ರೆಂಚ್ಸ್ವಿಸ್ ಫ್ರೆಂಚ್ಫ್ಲೆಮಿಷ್ಬ್ರೆಜಿಲಿಯನ್ ಪೋರ್ಚುಗೀಸ್ಯೂರೋಪಿಯನ್ ಪೋ" +
 	"ರ್ಚುಗೀಸ್ಮೊಲ್ಡೆವಿಯನ್ಸರ್ಬೋ-ಕ್ರೊಯೇಶಿಯನ್ಸರಳೀಕೃತ ಚೈನೀಸ್ಸಾಂಪ್ರದಾಯಿಕ ಚೈನೀಸ್"
 
-var knLangIdx = []uint16{ // 604 entries
+var knLangIdx = []uint16{ // 605 entries
 	0x0, 0xf, 0x2d, 0x45, 0x66, 0x75, 0x8a, 0xa2, 0xb7, 0xd2, 0xe4, 0xf9,
 	0x11a, 0x12f, 0x14d, 0x16b, 0x183, 0x195, 0x1aa, 0x1c5, 0x1da, 0x1f5, 0x20a, 0x219,
 	0x228, 0x243, 0x24f, 0x25b, 0x283, 0x295, 0x2a7, 0x2bf, 0x2d1, 0x2e3, 0x2fb, 0x304,
@@ -11763,10 +10997,10 @@
 	0x25d5, 0x25e7, 0x25f6, 0x2608, 0x2614, 0x262c, 0x262c, 0x2644, 0x265f, 0x265f, 0x2674, 0x2696,
 	0x26b5, 0x26b5, 0x26b5, 0x26b5, 0x26cd, 0x26cd, 0x26e2, 0x26f4, 0x2703, 0x271e, 0x2753, 0x2771,
 	0x278c, 0x27a1, 0x27ad, 0x27b9, 0x27b9, 0x27b9, 0x27b9, 0x27b9, 0x27cb, 0x27cb, 0x27da, 0x27da,
-	0x27e9, 0x27f8, 0x2804, 0x2804, 0x281c, 0x281c, 0x2825, 0x282e, 0x283d, 0x283d, 0x283d, 0x283d,
-	0x283d, 0x2855, 0x2882, 0x2882, 0x2894, 0x28e7, 0x28f3, 0x2940, 0x294c, 0x298d, 0x29be, 0x29ea,
-	0x2a27, 0x2a5b, 0x2a8c, 0x2abd, 0x2b0d, 0x2b47, 0x2b81, 0x2bb2, 0x2bda, 0x2bf2, 0x2c32, 0x2c6c,
-	0x2c8d, 0x2cbe, 0x2ce6, 0x2d1a,
+	0x27e9, 0x27f8, 0x2804, 0x2804, 0x2804, 0x281c, 0x281c, 0x2825, 0x282e, 0x283d, 0x283d, 0x283d,
+	0x283d, 0x283d, 0x2855, 0x2882, 0x2882, 0x2894, 0x28e7, 0x28f3, 0x2940, 0x294c, 0x298d, 0x29be,
+	0x29ea, 0x2a27, 0x2a5b, 0x2a8c, 0x2abd, 0x2b0d, 0x2b47, 0x2b81, 0x2bb2, 0x2bda, 0x2bf2, 0x2c32,
+	0x2c6c, 0x2c8d, 0x2cbe, 0x2ce6, 0x2d1a,
 }
 
 const koLangStr = "" +
@@ -11803,7 +11037,7 @@
 	"미 스페인어유럽식 스페인어프랑스어 (캐나다)프랑스어 (스위스)플라망어포르투갈어 (브라질)유럽식 포르투갈어몰도바어세르비아-크로아티아어중국어(간체)" +
 	"중국어(번체)"
 
-var koLangIdx = []uint16{ // 604 entries
+var koLangIdx = []uint16{ // 605 entries
 	0x0, 0xc, 0x18, 0x27, 0x39, 0x42, 0x4e, 0x5a, 0x63, 0x6c, 0x78, 0x87,
 	0x9c, 0xab, 0xba, 0xc9, 0xd8, 0xe4, 0xed, 0xf9, 0x108, 0x117, 0x129, 0x132,
 	0x13e, 0x14d, 0x156, 0x15f, 0x172, 0x17e, 0x18a, 0x196, 0x19f, 0x1ab, 0x1b4, 0x1bd,
@@ -11851,10 +11085,10 @@
 	0x1878, 0x1884, 0x188d, 0x1899, 0x18a2, 0x18b7, 0x18c3, 0x18cf, 0x18de, 0x18ea, 0x18f6, 0x1911,
 	0x1921, 0x1921, 0x192d, 0x192d, 0x193c, 0x193c, 0x1948, 0x1954, 0x1963, 0x1972, 0x1991, 0x19a0,
 	0x19af, 0x19bb, 0x19c1, 0x19ca, 0x19ca, 0x19ca, 0x19ca, 0x19ca, 0x19d3, 0x19d3, 0x19dc, 0x19e5,
-	0x19f1, 0x19fd, 0x1a06, 0x1a06, 0x1a12, 0x1a12, 0x1a1b, 0x1a27, 0x1a33, 0x1a3c, 0x1a45, 0x1a45,
-	0x1a45, 0x1a54, 0x1a64, 0x1a64, 0x1a70, 0x1a90, 0x1a99, 0x1ab4, 0x1abd, 0x1ad4, 0x1ad4, 0x1af0,
-	0x1afe, 0x1b10, 0x1b22, 0x1b22, 0x1b38, 0x1b4e, 0x1b4e, 0x1b66, 0x1b7e, 0x1b8a, 0x1ba5, 0x1bbe,
-	0x1bca, 0x1be9, 0x1bfa, 0x1c0b,
+	0x19f1, 0x19fd, 0x1a06, 0x1a06, 0x1a06, 0x1a12, 0x1a12, 0x1a1b, 0x1a27, 0x1a33, 0x1a3c, 0x1a45,
+	0x1a45, 0x1a45, 0x1a54, 0x1a64, 0x1a64, 0x1a70, 0x1a90, 0x1a99, 0x1ab4, 0x1abd, 0x1ad4, 0x1ad4,
+	0x1af0, 0x1afe, 0x1b10, 0x1b22, 0x1b22, 0x1b38, 0x1b4e, 0x1b4e, 0x1b66, 0x1b7e, 0x1b8a, 0x1ba5,
+	0x1bbe, 0x1bca, 0x1be9, 0x1bfa, 0x1c0b,
 }
 
 const kyLangStr = "" +
@@ -11883,7 +11117,7 @@
 	"ндежогорку немисче (Швейцария)испанча (Европа)фламандчапортугалча (Европа)молдов" +
 	"анчасерб-хорваткытайча (жөнөкөйлөштүрүлгөн)кытайча (салттуу)"
 
-var kyLangIdx = []uint16{ // 604 entries
+var kyLangIdx = []uint16{ // 605 entries
 	0x0, 0x0, 0xe, 0xe, 0x22, 0x2e, 0x3c, 0x3c, 0x48, 0x56, 0x56, 0x56,
 	0x6e, 0x7e, 0x90, 0xa0, 0xa0, 0xb2, 0xc8, 0xd6, 0xe6, 0xf6, 0x108, 0x108,
 	0x108, 0x11c, 0x11c, 0x126, 0x126, 0x126, 0x132, 0x13c, 0x14a, 0x14a, 0x158, 0x162,
@@ -11931,10 +11165,10 @@
 	0xc81, 0xc81, 0xc81, 0xc81, 0xc81, 0xc81, 0xc81, 0xc93, 0xc93, 0xc93, 0xc93, 0xc93,
 	0xc93, 0xc93, 0xc93, 0xc93, 0xc93, 0xc93, 0xc93, 0xc93, 0xca5, 0xca5, 0xcd5, 0xcd5,
 	0xcd5, 0xcd5, 0xcf0, 0xcfc, 0xcfc, 0xcfc, 0xcfc, 0xcfc, 0xcfc, 0xcfc, 0xd0a, 0xd0a,
-	0xd0a, 0xd0a, 0xd0a, 0xd0a, 0xd0a, 0xd0a, 0xd16, 0xd16, 0xd16, 0xd16, 0xd16, 0xd16,
-	0xd16, 0xd16, 0xd16, 0xd16, 0xd16, 0xd51, 0xd51, 0xd71, 0xd71, 0xda2, 0xda2, 0xdd4,
-	0xdd4, 0xdd4, 0xdd4, 0xdd4, 0xdd4, 0xdf1, 0xdf1, 0xdf1, 0xdf1, 0xe03, 0xe03, 0xe26,
-	0xe3a, 0xe4f, 0xe84, 0xea3,
+	0xd0a, 0xd0a, 0xd0a, 0xd0a, 0xd0a, 0xd0a, 0xd0a, 0xd16, 0xd16, 0xd16, 0xd16, 0xd16,
+	0xd16, 0xd16, 0xd16, 0xd16, 0xd16, 0xd16, 0xd51, 0xd51, 0xd71, 0xd71, 0xda2, 0xda2,
+	0xdd4, 0xdd4, 0xdd4, 0xdd4, 0xdd4, 0xdd4, 0xdf1, 0xdf1, 0xdf1, 0xdf1, 0xe03, 0xe03,
+	0xe26, 0xe3a, 0xe4f, 0xe84, 0xea3,
 }
 
 const loLangStr = "" +
@@ -11984,7 +11218,7 @@
 	"ຊຢູໂຣປຽນ ສະແປນນິຊເມັກຊິກັນ ສະແປນນິຊເຄເນດຽນ ຝຣັ່ງສະວິສ ຝຣັ່ງຟລີມິຊບຣາຊິລຽນ ປໍຕູກີ" +
 	"ສຢູໂຣປຽນ ປໍຕູກີສໂມດາວຽນເຊີໂບ-ໂກເຊຍຈີນແບບຮຽບງ່າຍຈີນແບບດັ້ງເດີມ"
 
-var loLangIdx = []uint16{ // 604 entries
+var loLangIdx = []uint16{ // 605 entries
 	0x0, 0xc, 0x24, 0x3f, 0x57, 0x66, 0x7b, 0x99, 0xa8, 0xc0, 0xd5, 0xea,
 	0x10b, 0x11a, 0x138, 0x150, 0x165, 0x17a, 0x192, 0x1a7, 0x1b9, 0x1cb, 0x1e0, 0x1ef,
 	0x201, 0x213, 0x219, 0x222, 0x23d, 0x24c, 0x255, 0x264, 0x27c, 0x28e, 0x2a3, 0x2af,
@@ -12032,10 +11266,10 @@
 	0x22fd, 0x230f, 0x231e, 0x232d, 0x2336, 0x234e, 0x234e, 0x2363, 0x2378, 0x2378, 0x2390, 0x23b4,
 	0x23cc, 0x23cc, 0x23de, 0x23de, 0x23f6, 0x23f6, 0x2408, 0x241a, 0x242f, 0x2444, 0x2476, 0x2488,
 	0x249d, 0x24b2, 0x24bb, 0x24c1, 0x24c1, 0x24c1, 0x24c1, 0x24c1, 0x24d0, 0x24d0, 0x24df, 0x24ee,
-	0x2500, 0x250c, 0x2518, 0x2518, 0x252a, 0x252a, 0x2536, 0x2545, 0x254e, 0x2560, 0x256f, 0x256f,
-	0x2587, 0x259c, 0x25c6, 0x25c6, 0x25d8, 0x2622, 0x262e, 0x265e, 0x266a, 0x26ac, 0x26d4, 0x26fd,
-	0x272d, 0x2757, 0x2781, 0x27b1, 0x27f5, 0x2823, 0x2857, 0x287c, 0x289b, 0x28ad, 0x28db, 0x2906,
-	0x291b, 0x293a, 0x2961, 0x298b,
+	0x2500, 0x250c, 0x2518, 0x2518, 0x2518, 0x252a, 0x252a, 0x2536, 0x2545, 0x254e, 0x2560, 0x256f,
+	0x256f, 0x2587, 0x259c, 0x25c6, 0x25c6, 0x25d8, 0x2622, 0x262e, 0x265e, 0x266a, 0x26ac, 0x26d4,
+	0x26fd, 0x272d, 0x2757, 0x2781, 0x27b1, 0x27f5, 0x2823, 0x2857, 0x287c, 0x289b, 0x28ad, 0x28db,
+	0x2906, 0x291b, 0x293a, 0x2961, 0x298b,
 }
 
 const ltLangStr = "" +
@@ -12105,7 +11339,7 @@
 	"ancūzųflamandųBrazilijos portugalųEuropos portugalųmoldavųserbų-kroatųsupaprasti" +
 	"ntoji kinųtradicinė kinų"
 
-var ltLangIdx = []uint16{ // 604 entries
+var ltLangIdx = []uint16{ // 605 entries
 	0x0, 0x6, 0xe, 0x15, 0x1e, 0x24, 0x2b, 0x35, 0x3b, 0x41, 0x49, 0x50,
 	0x63, 0x6c, 0x77, 0x7f, 0x86, 0x8e, 0x96, 0xa2, 0xaa, 0xb1, 0xba, 0xc4,
 	0xcc, 0xd9, 0xdc, 0xe2, 0xf4, 0xfe, 0x103, 0x108, 0x112, 0x118, 0x11f, 0x124,
@@ -12153,10 +11387,10 @@
 	0x1304, 0x130a, 0x130f, 0x1314, 0x1317, 0x131e, 0x1326, 0x132f, 0x1336, 0x133e, 0x1346, 0x1352,
 	0x135b, 0x1361, 0x1367, 0x136f, 0x1378, 0x1388, 0x1390, 0x1396, 0x139f, 0x13a5, 0x13bf, 0x13c7,
 	0x13cf, 0x13d6, 0x13da, 0x13dd, 0x13e4, 0x13ea, 0x13fb, 0x1410, 0x1415, 0x141a, 0x141f, 0x1427,
-	0x142d, 0x1432, 0x1437, 0x144d, 0x1455, 0x145d, 0x1462, 0x1465, 0x146c, 0x1475, 0x147b, 0x1483,
-	0x149e, 0x14a7, 0x14bc, 0x14c4, 0x14ca, 0x14e8, 0x14ec, 0x1502, 0x1506, 0x1527, 0x153b, 0x155f,
-	0x1571, 0x157f, 0x159c, 0x15b7, 0x15cf, 0x15de, 0x15ee, 0x1600, 0x1617, 0x1620, 0x1635, 0x1647,
-	0x164f, 0x165d, 0x1672, 0x1682,
+	0x142d, 0x1432, 0x1437, 0x1437, 0x144d, 0x1455, 0x145d, 0x1462, 0x1465, 0x146c, 0x1475, 0x147b,
+	0x1483, 0x149e, 0x14a7, 0x14bc, 0x14c4, 0x14ca, 0x14e8, 0x14ec, 0x1502, 0x1506, 0x1527, 0x153b,
+	0x155f, 0x1571, 0x157f, 0x159c, 0x15b7, 0x15cf, 0x15de, 0x15ee, 0x1600, 0x1617, 0x1620, 0x1635,
+	0x1647, 0x164f, 0x165d, 0x1672, 0x1682,
 }
 
 const lvLangStr = "" +
@@ -12210,7 +11444,7 @@
 	" frančuflāmuBrazīlijas portugāļuEiropas portugāļumoldāvuserbu-horvātuķīniešu vie" +
 	"nkāršotāķīniešu tradicionālā"
 
-var lvLangIdx = []uint16{ // 604 entries
+var lvLangIdx = []uint16{ // 605 entries
 	0x0, 0x6, 0xd, 0x13, 0x1c, 0x21, 0x27, 0x32, 0x38, 0x41, 0x47, 0x4d,
 	0x5c, 0x65, 0x6f, 0x77, 0x80, 0x87, 0x90, 0x9a, 0xa2, 0xab, 0xb5, 0xbd,
 	0xc5, 0xd0, 0xd4, 0xd9, 0xe6, 0xee, 0xf7, 0xfd, 0x102, 0x10e, 0x115, 0x118,
@@ -12258,10 +11492,10 @@
 	0xdd8, 0xdde, 0xde4, 0xde9, 0xded, 0xdf9, 0xdf9, 0xe02, 0xe0a, 0xe0a, 0xe11, 0xe1d,
 	0xe26, 0xe26, 0xe2c, 0xe2c, 0xe37, 0xe37, 0xe3e, 0xe48, 0xe50, 0xe58, 0xe71, 0xe78,
 	0xe83, 0xe8a, 0xe8f, 0xe93, 0xe93, 0xe93, 0xe93, 0xe93, 0xe97, 0xe97, 0xe9e, 0xeac,
-	0xeb2, 0xeb8, 0xebd, 0xebd, 0xec4, 0xec4, 0xec8, 0xecb, 0xed3, 0xedb, 0xee0, 0xee0,
-	0xeeb, 0xef3, 0xf00, 0xf00, 0xf06, 0xf22, 0xf27, 0xf3e, 0xf44, 0xf5e, 0xf6d, 0xf80,
-	0xf93, 0xfa2, 0xfb8, 0xfc2, 0xfd9, 0xfe8, 0xff8, 0x1008, 0x1018, 0x101e, 0x1035, 0x1048,
-	0x1050, 0x105e, 0x1077, 0x1090,
+	0xeb2, 0xeb8, 0xebd, 0xebd, 0xebd, 0xec4, 0xec4, 0xec8, 0xecb, 0xed3, 0xedb, 0xee0,
+	0xee0, 0xeeb, 0xef3, 0xf00, 0xf00, 0xf06, 0xf22, 0xf27, 0xf3e, 0xf44, 0xf5e, 0xf6d,
+	0xf80, 0xf93, 0xfa2, 0xfb8, 0xfc2, 0xfd9, 0xfe8, 0xff8, 0x1008, 0x1018, 0x101e, 0x1035,
+	0x1048, 0x1050, 0x105e, 0x1077, 0x1090,
 }
 
 const mkLangStr = "" +
@@ -12330,7 +11564,7 @@
 	"а)француски (во Канада)португалски (во Европа)молдавскисрпскохрватскипоедноставе" +
 	"н кинескитрадиционален кинески"
 
-var mkLangIdx = []uint16{ // 604 entries
+var mkLangIdx = []uint16{ // 605 entries
 	0x0, 0xe, 0x1c, 0x30, 0x40, 0x4e, 0x5e, 0x70, 0x7e, 0x8c, 0x9a, 0xaa,
 	0xc4, 0xd6, 0xe8, 0xf8, 0x106, 0x114, 0x126, 0x136, 0x148, 0x158, 0x16c, 0x17c,
 	0x18c, 0x1a2, 0x1a8, 0x1b2, 0x1d2, 0x1e0, 0x1ec, 0x1f8, 0x20a, 0x216, 0x222, 0x228,
@@ -12378,10 +11612,10 @@
 	0x224e, 0x225a, 0x2264, 0x226e, 0x2274, 0x228c, 0x229c, 0x22b0, 0x22be, 0x22cc, 0x22da, 0x22ed,
 	0x22fe, 0x230a, 0x2316, 0x2326, 0x233c, 0x2348, 0x2356, 0x236c, 0x237a, 0x238a, 0x23c6, 0x23d8,
 	0x23ea, 0x23f8, 0x2402, 0x2408, 0x2418, 0x2424, 0x2444, 0x2466, 0x2472, 0x247a, 0x2484, 0x2490,
-	0x249c, 0x24ac, 0x24b4, 0x24b8, 0x24c8, 0x24da, 0x24e2, 0x24e8, 0x24f4, 0x2502, 0x250c, 0x251a,
-	0x252c, 0x253e, 0x2554, 0x2566, 0x2572, 0x25b2, 0x25ba, 0x25ea, 0x25f2, 0x2617, 0x2617, 0x2617,
-	0x2617, 0x2617, 0x263a, 0x2661, 0x2661, 0x2683, 0x2683, 0x26a9, 0x26a9, 0x26a9, 0x26a9, 0x26d3,
-	0x26e5, 0x2701, 0x2728, 0x2751,
+	0x249c, 0x24ac, 0x24b4, 0x24b4, 0x24b8, 0x24c8, 0x24da, 0x24e2, 0x24e8, 0x24f4, 0x2502, 0x250c,
+	0x251a, 0x252c, 0x253e, 0x2554, 0x2566, 0x2572, 0x25b2, 0x25ba, 0x25ea, 0x25f2, 0x2617, 0x2617,
+	0x2617, 0x2617, 0x2617, 0x263a, 0x2661, 0x2661, 0x2683, 0x2683, 0x26a9, 0x26a9, 0x26a9, 0x26a9,
+	0x26d3, 0x26e5, 0x2701, 0x2728, 0x2751,
 }
 
 const mlLangStr = "" +
@@ -12436,7 +11670,7 @@
 	"ക്സിക്കൻ സ്പാനിഷ്കനേഡിയൻ ഫ്രഞ്ച്സ്വിസ് ഫ്രഞ്ച്ഫ്ലമിഷ്ബ്രസീലിയൻ പോർച്ചുഗീസ്യൂറോപ്" +
 	"യൻ പോർച്ചുഗീസ്മോൾഡാവിയൻസെർബോ-ക്രൊയേഷ്യൻചീനഭാഷ-ലളിതലിപിചീനഭാഷ-പരമ്പരാഗതലിപി"
 
-var mlLangIdx = []uint16{ // 604 entries
+var mlLangIdx = []uint16{ // 605 entries
 	0x0, 0xc, 0x2a, 0x45, 0x69, 0x78, 0x90, 0xa8, 0xba, 0xd5, 0xea, 0xfc,
 	0x117, 0x129, 0x147, 0x15f, 0x177, 0x186, 0x198, 0x1ad, 0x1c5, 0x1dd, 0x1f5, 0x201,
 	0x210, 0x22b, 0x237, 0x249, 0x274, 0x286, 0x295, 0x2a7, 0x2b9, 0x2cb, 0x2da, 0x2e3,
@@ -12484,10 +11718,10 @@
 	0x2670, 0x2682, 0x2697, 0x26a9, 0x26b5, 0x26cd, 0x26cd, 0x26e5, 0x2706, 0x2706, 0x2718, 0x273a,
 	0x2756, 0x2756, 0x276b, 0x276b, 0x2780, 0x2780, 0x2792, 0x27a4, 0x27bc, 0x27d4, 0x2818, 0x2836,
 	0x2854, 0x286c, 0x287e, 0x2884, 0x2884, 0x2884, 0x2884, 0x2884, 0x289c, 0x289c, 0x28ae, 0x28bd,
-	0x28c9, 0x28db, 0x28e7, 0x28e7, 0x28f9, 0x28f9, 0x2905, 0x2911, 0x2929, 0x2941, 0x294a, 0x294a,
-	0x2965, 0x2983, 0x29aa, 0x29aa, 0x29b6, 0x29fd, 0x2a09, 0x2a5e, 0x2a6a, 0x2ab4, 0x2adf, 0x2b05,
-	0x2b42, 0x2b70, 0x2ba7, 0x2bdb, 0x2c28, 0x2c5c, 0x2c93, 0x2cbe, 0x2ce6, 0x2cfb, 0x2d38, 0x2d72,
-	0x2d8d, 0x2dbb, 0x2de6, 0x2e20,
+	0x28c9, 0x28db, 0x28e7, 0x28e7, 0x28e7, 0x28f9, 0x28f9, 0x2905, 0x2911, 0x2929, 0x2941, 0x294a,
+	0x294a, 0x2965, 0x2983, 0x29aa, 0x29aa, 0x29b6, 0x29fd, 0x2a09, 0x2a5e, 0x2a6a, 0x2ab4, 0x2adf,
+	0x2b05, 0x2b42, 0x2b70, 0x2ba7, 0x2bdb, 0x2c28, 0x2c5c, 0x2c93, 0x2cbe, 0x2ce6, 0x2cfb, 0x2d38,
+	0x2d72, 0x2d8d, 0x2dbb, 0x2de6, 0x2e20,
 }
 
 const mnLangStr = "" +
@@ -12513,7 +11747,7 @@
 	"цфламандпортугал (бразил)европын португалмолдавхялбаршуулсан хятадуламжлалт хята" +
 	"д"
 
-var mnLangIdx = []uint16{ // 604 entries
+var mnLangIdx = []uint16{ // 605 entries
 	0x0, 0x0, 0xa, 0xa, 0x14, 0x1c, 0x26, 0x26, 0x2e, 0x38, 0x38, 0x38,
 	0x4c, 0x58, 0x68, 0x74, 0x74, 0x82, 0x8e, 0x96, 0xa2, 0xac, 0xba, 0xba,
 	0xba, 0xc6, 0xc6, 0xcc, 0xcc, 0xcc, 0xd4, 0xdc, 0xe8, 0xe8, 0xf2, 0xf8,
@@ -12561,10 +11795,10 @@
 	0x9bc, 0x9bc, 0x9bc, 0x9bc, 0x9bc, 0x9bc, 0x9bc, 0x9bc, 0x9bc, 0x9bc, 0x9bc, 0x9bc,
 	0x9bc, 0x9bc, 0x9bc, 0x9bc, 0x9bc, 0x9bc, 0x9bc, 0x9bc, 0x9ca, 0x9ca, 0x9f0, 0x9f0,
 	0x9f0, 0x9f0, 0xa0d, 0xa13, 0xa13, 0xa13, 0xa13, 0xa13, 0xa13, 0xa13, 0xa1d, 0xa1d,
-	0xa1d, 0xa1d, 0xa1d, 0xa1d, 0xa1d, 0xa1d, 0xa25, 0xa25, 0xa25, 0xa25, 0xa25, 0xa25,
-	0xa25, 0xa25, 0xa25, 0xa25, 0xa25, 0xa33, 0xa33, 0xa60, 0xa60, 0xa79, 0xa92, 0xab8,
-	0xad3, 0xae8, 0xb05, 0xb22, 0xb4c, 0xb67, 0xb86, 0xb9b, 0xbb6, 0xbc4, 0xbe3, 0xc02,
-	0xc0e, 0xc0e, 0xc33, 0xc50,
+	0xa1d, 0xa1d, 0xa1d, 0xa1d, 0xa1d, 0xa1d, 0xa1d, 0xa25, 0xa25, 0xa25, 0xa25, 0xa25,
+	0xa25, 0xa25, 0xa25, 0xa25, 0xa25, 0xa25, 0xa33, 0xa33, 0xa60, 0xa60, 0xa79, 0xa92,
+	0xab8, 0xad3, 0xae8, 0xb05, 0xb22, 0xb4c, 0xb67, 0xb86, 0xb9b, 0xbb6, 0xbc4, 0xbe3,
+	0xc02, 0xc0e, 0xc0e, 0xc33, 0xc50,
 }
 
 const mrLangStr = "" +
@@ -12615,7 +11849,7 @@
 	"निशमेक्सिकन स्पॅनिशकॅनडियन फ्रेंचस्विस फ्रेंचफ्लेमिशब्राझिलियन पोर्तुगीजयुरोपियन" +
 	" पोर्तुगीजमोल्डाव्हियनसर्बो-क्रोएशियनसरलीकृत चीनीपारंपारिक चीनी"
 
-var mrLangIdx = []uint16{ // 604 entries
+var mrLangIdx = []uint16{ // 605 entries
 	0x0, 0xc, 0x24, 0x39, 0x57, 0x63, 0x7b, 0x93, 0x9f, 0xae, 0xcc, 0xd8,
 	0xf3, 0x105, 0x123, 0x13e, 0x156, 0x16e, 0x180, 0x192, 0x1a7, 0x1bf, 0x1d4, 0x1e0,
 	0x1f2, 0x20a, 0x216, 0x21f, 0x247, 0x256, 0x265, 0x274, 0x283, 0x295, 0x2a7, 0x2b0,
@@ -12663,10 +11897,10 @@
 	0x2395, 0x23a7, 0x23b6, 0x23cb, 0x23d4, 0x23e9, 0x23e9, 0x2401, 0x2413, 0x2413, 0x2428, 0x244d,
 	0x2466, 0x2466, 0x2466, 0x2466, 0x247e, 0x247e, 0x2496, 0x24a8, 0x24c3, 0x24db, 0x2510, 0x2525,
 	0x2540, 0x255b, 0x2564, 0x256d, 0x256d, 0x256d, 0x256d, 0x256d, 0x257c, 0x257c, 0x258b, 0x258b,
-	0x259a, 0x25a6, 0x25b2, 0x25b2, 0x25c7, 0x25c7, 0x25d3, 0x25dc, 0x25eb, 0x25eb, 0x25eb, 0x25eb,
-	0x2600, 0x2615, 0x263c, 0x263c, 0x2654, 0x2698, 0x26a4, 0x26ee, 0x26fa, 0x2732, 0x275d, 0x2786,
-	0x27bd, 0x27e8, 0x2813, 0x283e, 0x2879, 0x28a7, 0x28d5, 0x28fd, 0x291f, 0x2934, 0x296e, 0x29a2,
-	0x29c6, 0x29f1, 0x2a13, 0x2a3b,
+	0x259a, 0x25a6, 0x25b2, 0x25b2, 0x25b2, 0x25c7, 0x25c7, 0x25d3, 0x25dc, 0x25eb, 0x25eb, 0x25eb,
+	0x25eb, 0x2600, 0x2615, 0x263c, 0x263c, 0x2654, 0x2698, 0x26a4, 0x26ee, 0x26fa, 0x2732, 0x275d,
+	0x2786, 0x27bd, 0x27e8, 0x2813, 0x283e, 0x2879, 0x28a7, 0x28d5, 0x28fd, 0x291f, 0x2934, 0x296e,
+	0x29a2, 0x29c6, 0x29f1, 0x2a13, 0x2a3b,
 }
 
 const msLangStr = "" +
@@ -12701,7 +11935,7 @@
 	"cis KanadaPerancis SwitzerlandFlemishPortugis BrazilPortugis EropahMoldaviaSerbo" +
 	"CroatiaCina RingkasCina Tradisional"
 
-var msLangIdx = []uint16{ // 604 entries
+var msLangIdx = []uint16{ // 605 entries
 	0x0, 0x0, 0x8, 0xf, 0x18, 0x1c, 0x23, 0x23, 0x27, 0x2c, 0x32, 0x38,
 	0x42, 0x49, 0x50, 0x58, 0x58, 0x5f, 0x67, 0x6c, 0x72, 0x78, 0x81, 0x88,
 	0x88, 0x8f, 0x8f, 0x94, 0xa1, 0xa8, 0xad, 0xb4, 0xba, 0xc0, 0xc8, 0xcb,
@@ -12749,10 +11983,10 @@
 	0x767, 0x767, 0x76c, 0x76c, 0x76c, 0x76c, 0x76c, 0x773, 0x773, 0x779, 0x779, 0x779,
 	0x782, 0x782, 0x788, 0x788, 0x788, 0x788, 0x78f, 0x78f, 0x796, 0x796, 0x7ac, 0x7ac,
 	0x7ac, 0x7ac, 0x7c2, 0x7c5, 0x7c5, 0x7c5, 0x7c5, 0x7c5, 0x7c5, 0x7c5, 0x7ca, 0x7d0,
-	0x7d0, 0x7d0, 0x7d0, 0x7d0, 0x7d0, 0x7d0, 0x7d4, 0x7d4, 0x7d4, 0x7db, 0x7e0, 0x7e0,
-	0x7e0, 0x7e0, 0x7e0, 0x7e0, 0x7e0, 0x7fb, 0x7fb, 0x815, 0x819, 0x82c, 0x83a, 0x852,
-	0x864, 0x873, 0x883, 0x88e, 0x8a4, 0x8b3, 0x8c2, 0x8d1, 0x8e5, 0x8ec, 0x8fb, 0x90a,
-	0x912, 0x91e, 0x92a, 0x93a,
+	0x7d0, 0x7d0, 0x7d0, 0x7d0, 0x7d0, 0x7d0, 0x7d0, 0x7d4, 0x7d4, 0x7d4, 0x7db, 0x7e0,
+	0x7e0, 0x7e0, 0x7e0, 0x7e0, 0x7e0, 0x7e0, 0x7fb, 0x7fb, 0x815, 0x819, 0x82c, 0x83a,
+	0x852, 0x864, 0x873, 0x883, 0x88e, 0x8a4, 0x8b3, 0x8c2, 0x8d1, 0x8e5, 0x8ec, 0x8fb,
+	0x90a, 0x912, 0x91e, 0x92a, 0x93a,
 }
 
 const myLangStr = "" +
@@ -12786,7 +12020,7 @@
 	"်အမေရိကန် အင်္ဂလိပ်လက်တင်အမေရိက စပိန်စပိန်(ဥရောပ)ကနေဒါ ပြင်သစ်ဆွစ် ပြင်သစ်ဖလီမစ်" +
 	"ရှ်ဘရာဇီး ပေါ်တူဂီဥရောပ ပေါ်တူဂီရိုးရှင်းသော တရုတ်ရှေးရိုးစဉ်လာ တရုတ်"
 
-var myLangIdx = []uint16{ // 604 entries
+var myLangIdx = []uint16{ // 605 entries
 	0x0, 0x0, 0x1e, 0x1e, 0x3f, 0x51, 0x6f, 0x6f, 0x81, 0x99, 0x99, 0x99,
 	0xcf, 0xed, 0xff, 0x120, 0x120, 0x135, 0x14d, 0x15c, 0x171, 0x195, 0x1aa, 0x1c2,
 	0x1c2, 0x1da, 0x1e6, 0x1f2, 0x1f2, 0x1f2, 0x1fb, 0x213, 0x225, 0x225, 0x237, 0x23d,
@@ -12834,10 +12068,10 @@
 	0x1692, 0x1692, 0x1692, 0x1692, 0x1692, 0x1692, 0x1692, 0x1692, 0x1692, 0x1692, 0x1692, 0x1692,
 	0x1692, 0x1692, 0x1692, 0x1692, 0x1692, 0x1692, 0x1692, 0x1692, 0x16aa, 0x16aa, 0x16f0, 0x16f0,
 	0x16f0, 0x16f0, 0x1711, 0x1720, 0x1720, 0x1720, 0x1720, 0x1720, 0x1720, 0x1720, 0x1735, 0x1735,
-	0x1735, 0x1735, 0x1735, 0x1735, 0x1735, 0x1735, 0x1744, 0x1744, 0x1744, 0x1744, 0x1744, 0x1744,
-	0x1744, 0x1744, 0x1744, 0x1744, 0x1744, 0x1785, 0x1785, 0x17df, 0x17df, 0x1805, 0x182d, 0x185f,
-	0x1896, 0x18c1, 0x18f5, 0x1929, 0x195d, 0x197d, 0x197d, 0x19a2, 0x19c4, 0x19df, 0x1a0a, 0x1a32,
-	0x1a32, 0x1a32, 0x1a66, 0x1a9d,
+	0x1735, 0x1735, 0x1735, 0x1735, 0x1735, 0x1735, 0x1735, 0x1744, 0x1744, 0x1744, 0x1744, 0x1744,
+	0x1744, 0x1744, 0x1744, 0x1744, 0x1744, 0x1744, 0x1785, 0x1785, 0x17df, 0x17df, 0x1805, 0x182d,
+	0x185f, 0x1896, 0x18c1, 0x18f5, 0x1929, 0x195d, 0x197d, 0x197d, 0x19a2, 0x19c4, 0x19df, 0x1a0a,
+	0x1a32, 0x1a32, 0x1a32, 0x1a66, 0x1a9d,
 }
 
 const neLangStr = "" +
@@ -12863,7 +12097,7 @@
 	"री छैनआधुनिक मानक अरबीअष्ट्रियन जर्मनस्वीस हाई जर्मनयुरोपेली स्पेनिसफ्लेमिशपोर्त" +
 	"ुगी (युरोप)माल्डाभियनसरलिकृत चिनियाँपरम्परागत चिनियाँ"
 
-var neLangIdx = []uint16{ // 604 entries
+var neLangIdx = []uint16{ // 605 entries
 	0x0, 0x0, 0x21, 0x21, 0x3f, 0x4b, 0x63, 0x63, 0x6f, 0x7e, 0x7e, 0x7e,
 	0x99, 0xae, 0xc6, 0xea, 0xea, 0x102, 0x114, 0x129, 0x13b, 0x159, 0x171, 0x171,
 	0x171, 0x189, 0x189, 0x192, 0x192, 0x192, 0x1a1, 0x1b0, 0x1bf, 0x1bf, 0x1d1, 0x1da,
@@ -12911,10 +12145,10 @@
 	0x109a, 0x109a, 0x109a, 0x109a, 0x109a, 0x109a, 0x109a, 0x109a, 0x109a, 0x109a, 0x109a, 0x109a,
 	0x109a, 0x109a, 0x109a, 0x109a, 0x109a, 0x109a, 0x109a, 0x109a, 0x10af, 0x10af, 0x10f6, 0x10f6,
 	0x10f6, 0x10f6, 0x1115, 0x111e, 0x111e, 0x111e, 0x111e, 0x111e, 0x111e, 0x111e, 0x1130, 0x1130,
-	0x1130, 0x1130, 0x1130, 0x1130, 0x1130, 0x1130, 0x113c, 0x113c, 0x113c, 0x113c, 0x113c, 0x113c,
-	0x113c, 0x113c, 0x113c, 0x113c, 0x113c, 0x117d, 0x117d, 0x11ac, 0x11ac, 0x11d8, 0x1203, 0x122c,
-	0x122c, 0x122c, 0x122c, 0x122c, 0x122c, 0x125a, 0x125a, 0x125a, 0x125a, 0x126f, 0x126f, 0x1299,
-	0x12b7, 0x12b7, 0x12e2, 0x1313,
+	0x1130, 0x1130, 0x1130, 0x1130, 0x1130, 0x1130, 0x1130, 0x113c, 0x113c, 0x113c, 0x113c, 0x113c,
+	0x113c, 0x113c, 0x113c, 0x113c, 0x113c, 0x113c, 0x117d, 0x117d, 0x11ac, 0x11ac, 0x11d8, 0x1203,
+	0x122c, 0x122c, 0x122c, 0x122c, 0x122c, 0x122c, 0x125a, 0x125a, 0x125a, 0x125a, 0x126f, 0x126f,
+	0x1299, 0x12b7, 0x12b7, 0x12e2, 0x1313,
 }
 
 const nlLangStr = "" +
@@ -12978,10 +12212,10 @@
 	"rd Marokkaanse TamazightZunigeen linguïstische inhoudZazamodern standaard Arabis" +
 	"chOostenrijks DuitsZwitsers HoogduitsAustralisch EngelsCanadees EngelsBrits Enge" +
 	"lsAmerikaans EngelsLatijns-Amerikaans SpaansEuropees SpaansMexicaans SpaansCanad" +
-	"ees FransZwitsers FransVlaamsBraziliaans PortugeesEuropees PortugeesServokroatis" +
-	"chvereenvoudigd Chineestraditioneel Chinees"
+	"ees FransZwitsers FransVlaamsBraziliaans PortugeesEuropees PortugeesServo-Kroati" +
+	"schvereenvoudigd Chineestraditioneel Chinees"
 
-var nlLangIdx = []uint16{ // 604 entries
+var nlLangIdx = []uint16{ // 605 entries
 	0x0, 0x4, 0xe, 0x17, 0x20, 0x24, 0x2b, 0x34, 0x3c, 0x44, 0x4c, 0x52,
 	0x60, 0x69, 0x75, 0x7d, 0x84, 0x8b, 0x93, 0x9c, 0xa3, 0xab, 0xb4, 0xbf,
 	0xc7, 0xd1, 0xd5, 0xdf, 0xeb, 0xf8, 0xfd, 0x102, 0x107, 0x10d, 0x115, 0x118,
@@ -13029,10 +12263,10 @@
 	0x106d, 0x1073, 0x1078, 0x107d, 0x1080, 0x1088, 0x108f, 0x1096, 0x109d, 0x109d, 0x10a5, 0x10b0,
 	0x10b9, 0x10bf, 0x10c5, 0x10cf, 0x10d8, 0x10e2, 0x10eb, 0x10f5, 0x10fc, 0x1104, 0x1120, 0x1129,
 	0x1134, 0x113b, 0x113f, 0x1142, 0x114c, 0x1154, 0x115f, 0x115f, 0x1166, 0x116b, 0x1170, 0x1176,
-	0x117e, 0x1183, 0x1188, 0x118c, 0x1193, 0x119c, 0x11a0, 0x11a3, 0x11a9, 0x11b0, 0x11b5, 0x11be,
-	0x11c7, 0x11ce, 0x11da, 0x11e0, 0x11e6, 0x1205, 0x1209, 0x1223, 0x1227, 0x1240, 0x1251, 0x1263,
-	0x1275, 0x1284, 0x1290, 0x12a1, 0x12ba, 0x12c9, 0x12d9, 0x12e7, 0x12f5, 0x12fb, 0x1310, 0x1322,
-	0x1322, 0x1330, 0x1345, 0x1359,
+	0x117e, 0x1183, 0x1188, 0x1188, 0x118c, 0x1193, 0x119c, 0x11a0, 0x11a3, 0x11a9, 0x11b0, 0x11b5,
+	0x11be, 0x11c7, 0x11ce, 0x11da, 0x11e0, 0x11e6, 0x1205, 0x1209, 0x1223, 0x1227, 0x1240, 0x1251,
+	0x1263, 0x1275, 0x1284, 0x1290, 0x12a1, 0x12ba, 0x12c9, 0x12d9, 0x12e7, 0x12f5, 0x12fb, 0x1310,
+	0x1322, 0x1322, 0x1331, 0x1346, 0x135a,
 }
 
 const noLangStr = "" +
@@ -13088,7 +12322,7 @@
 	"siliansk portugisiskeuropeisk portugisiskmoldovskserbokroatiskforenklet kinesisk" +
 	"tradisjonell kinesisk"
 
-var noLangIdx = []uint16{ // 604 entries
+var noLangIdx = []uint16{ // 605 entries
 	0x0, 0x4, 0xd, 0x15, 0x1e, 0x22, 0x2a, 0x32, 0x39, 0x41, 0x48, 0x4e,
 	0x5c, 0x65, 0x71, 0x79, 0x80, 0x87, 0x8e, 0x97, 0x9f, 0xa6, 0xaf, 0xba,
 	0xc2, 0xcc, 0xd0, 0xd9, 0xe5, 0xee, 0xf6, 0xfb, 0xff, 0x105, 0x10d, 0x110,
@@ -13136,10 +12370,10 @@
 	0xd45, 0xd4b, 0xd50, 0xd56, 0xd59, 0xd60, 0xd60, 0xd67, 0xd6e, 0xd6e, 0xd76, 0xd84,
 	0xd8d, 0xd8d, 0xd93, 0xd93, 0xd9c, 0xd9c, 0xda3, 0xda9, 0xdb0, 0xdb8, 0xdd3, 0xdd9,
 	0xde2, 0xde9, 0xdec, 0xdef, 0xdef, 0xdef, 0xdef, 0xdef, 0xdf5, 0xdf5, 0xdfa, 0xe00,
-	0xe06, 0xe0b, 0xe10, 0xe10, 0xe16, 0xe16, 0xe1a, 0xe1d, 0xe25, 0xe2c, 0xe31, 0xe31,
-	0xe3c, 0xe43, 0xe4f, 0xe4f, 0xe55, 0xe72, 0xe76, 0xe8c, 0xe90, 0xea8, 0xeb8, 0xeca,
-	0xedb, 0xeeb, 0xefa, 0xf0c, 0xf22, 0xf32, 0xf43, 0xf52, 0xf62, 0xf68, 0xf7f, 0xf94,
-	0xf9c, 0xfa9, 0xfbb, 0xfd0,
+	0xe06, 0xe0b, 0xe10, 0xe10, 0xe10, 0xe16, 0xe16, 0xe1a, 0xe1d, 0xe25, 0xe2c, 0xe31,
+	0xe31, 0xe3c, 0xe43, 0xe4f, 0xe4f, 0xe55, 0xe72, 0xe76, 0xe8c, 0xe90, 0xea8, 0xeb8,
+	0xeca, 0xedb, 0xeeb, 0xefa, 0xf0c, 0xf22, 0xf32, 0xf43, 0xf52, 0xf62, 0xf68, 0xf7f,
+	0xf94, 0xf9c, 0xfa9, 0xfbb, 0xfd0,
 }
 
 const paLangStr = "" +
@@ -13166,7 +12400,7 @@
 	"ੰਗਰੇਜ਼ੀਲਾਤੀਨੀ ਅਮਰੀਕੀ ਸਪੇਨੀਯੂਰਪੀ ਸਪੇਨੀਮੈਕਸੀਕਨ ਸਪੈਨਿਸ਼ਕੈਨੇਡੀਅਨ ਫਰਾਂਸੀਸੀਸਵਿਸ ਫਰਾਂਸੀ" +
 	"ਸੀਫਲੈਮਿਸ਼ਬ੍ਰਾਜ਼ੀਲੀਆਈ ਪੁਰਤਗਾਲੀਯੂਰਪੀ ਪੁਰਤਗਾਲੀਮੋਲਡਾਵੀਆਈਸਰਲ ਚੀਨੀਰਵਾਇਤੀ ਚੀਨੀ"
 
-var paLangIdx = []uint16{ // 604 entries
+var paLangIdx = []uint16{ // 605 entries
 	0x0, 0x0, 0x1b, 0x1b, 0x30, 0x3c, 0x51, 0x51, 0x5d, 0x6c, 0x6c, 0x6c,
 	0x8d, 0x9f, 0xb7, 0xd2, 0xd2, 0xe4, 0xf6, 0x108, 0x117, 0x12c, 0x141, 0x14d,
 	0x14d, 0x162, 0x162, 0x16b, 0x16b, 0x16b, 0x17a, 0x18c, 0x198, 0x198, 0x1ad, 0x1b6,
@@ -13214,10 +12448,10 @@
 	0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046,
 	0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x105b, 0x105b, 0x1087, 0x1087,
 	0x1087, 0x1087, 0x10ac, 0x10b5, 0x10b5, 0x10b5, 0x10b5, 0x10b5, 0x10b5, 0x10b5, 0x10c4, 0x10c4,
-	0x10c4, 0x10c4, 0x10c4, 0x10c4, 0x10c4, 0x10c4, 0x10d0, 0x10d0, 0x10d0, 0x10d0, 0x10d0, 0x10d0,
-	0x10d0, 0x10d0, 0x10d0, 0x10d0, 0x10d0, 0x110e, 0x110e, 0x114a, 0x114a, 0x1179, 0x119b, 0x11be,
-	0x11f5, 0x1226, 0x1254, 0x127f, 0x12b4, 0x12d3, 0x12fe, 0x132f, 0x1354, 0x1369, 0x13a3, 0x13cb,
-	0x13e6, 0x13e6, 0x13fc, 0x141b,
+	0x10c4, 0x10c4, 0x10c4, 0x10c4, 0x10c4, 0x10c4, 0x10c4, 0x10d0, 0x10d0, 0x10d0, 0x10d0, 0x10d0,
+	0x10d0, 0x10d0, 0x10d0, 0x10d0, 0x10d0, 0x10d0, 0x110e, 0x110e, 0x114a, 0x114a, 0x1179, 0x119b,
+	0x11be, 0x11f5, 0x1226, 0x1254, 0x127f, 0x12b4, 0x12d3, 0x12fe, 0x132f, 0x1354, 0x1369, 0x13a3,
+	0x13cb, 0x13e6, 0x13e6, 0x13fc, 0x141b,
 }
 
 const plLangStr = "" +
@@ -13289,7 +12523,7 @@
 	"kiflamandzki (Belgia)brazylijski portugalskieuropejski portugalskimołdawskiserbs" +
 	"ko-chorwackichiński (uproszczony)chiński (tradycyjny)"
 
-var plLangIdx = []uint16{ // 604 entries
+var plLangIdx = []uint16{ // 605 entries
 	0x0, 0x4, 0xc, 0x16, 0x1f, 0x23, 0x2b, 0x35, 0x3c, 0x43, 0x4a, 0x50,
 	0x57, 0x61, 0x6c, 0x76, 0x7d, 0x84, 0x8d, 0x98, 0xa2, 0xac, 0xb7, 0xc2,
 	0xca, 0xd6, 0xd9, 0xdf, 0xfb, 0x103, 0x10b, 0x112, 0x11b, 0x125, 0x12d, 0x130,
@@ -13337,10 +12571,10 @@
 	0x121b, 0x1221, 0x1226, 0x122b, 0x122e, 0x1235, 0x123e, 0x1249, 0x1250, 0x1258, 0x1260, 0x126d,
 	0x1276, 0x127c, 0x1282, 0x128b, 0x1294, 0x1299, 0x12a0, 0x12a6, 0x12ad, 0x12b6, 0x12d4, 0x12dc,
 	0x12e4, 0x12eb, 0x12f9, 0x12fc, 0x1303, 0x1309, 0x131c, 0x132f, 0x1337, 0x133c, 0x1341, 0x1347,
-	0x134d, 0x1352, 0x1357, 0x1359, 0x1362, 0x136b, 0x136f, 0x1372, 0x1378, 0x137f, 0x1384, 0x138c,
-	0x1396, 0x139f, 0x13a4, 0x13ad, 0x13b3, 0x13b6, 0x13ba, 0x13df, 0x13e5, 0x13fa, 0x140e, 0x142a,
-	0x1440, 0x1454, 0x1467, 0x147d, 0x1495, 0x14ab, 0x14c3, 0x14d7, 0x14ec, 0x14ff, 0x1516, 0x152c,
-	0x1536, 0x1547, 0x155d, 0x1572,
+	0x134d, 0x1352, 0x1357, 0x1357, 0x1359, 0x1362, 0x136b, 0x136f, 0x1372, 0x1378, 0x137f, 0x1384,
+	0x138c, 0x1396, 0x139f, 0x13a4, 0x13ad, 0x13b3, 0x13b6, 0x13ba, 0x13df, 0x13e5, 0x13fa, 0x140e,
+	0x142a, 0x1440, 0x1454, 0x1467, 0x147d, 0x1495, 0x14ab, 0x14c3, 0x14d7, 0x14ec, 0x14ff, 0x1516,
+	0x152c, 0x1536, 0x1547, 0x155d, 0x1572,
 }
 
 const ptLangStr = "" +
@@ -13356,46 +12590,46 @@
 	"atangaletãomalgaxemarshalêsmaorimacedôniomalaialamongolmaratamalaiomaltêsbirmanê" +
 	"snauruanondebele do nortenepalidongoholandêsnynorsk norueguêsbokmål norueguêsnde" +
 	"bele do sulnavajonianjaoccitânicoojibwaoromooriyaosseticpanjabipálipolonêspashto" +
-	"portuguêsquíchuaromancherundiromenorussoruandasânscritosardosindisami do nortesa" +
-	"ngocingalêseslovacoeslovenosamoanoshonasomalialbanêssérvioswatisoto do sulsundan" +
-	"êssuecosuaílitâmiltelugutajiquetailandêstigríniaturcomenotswanatonganêsturcotson" +
-	"gatatartaitianouigurucranianourduusbequevendavietnamitavolapuquevalãouólofexosai" +
-	"ídicheiorubazhuangchinêszuluachémacoliadangmeadigueafrihiliaghemainuacadianoaleú" +
-	"tealtai do sulinglês arcaicoangikaaramaicoaraucanoarapahoarauaquiasuasturianoawa" +
-	"dhibalúchibalinêsbasabamumghomala’bejabembabenabafutbhojpuribikolbinikomsiksikab" +
-	"rajbodoakooseburiatbuguinêsbulublinmedumbacaddocaribecayugaatsamcebuanochigachib" +
-	"chachagataichuukesemarichinook jargonchoctawchipewyancherokeecheienesorâni curdo" +
-	"coptaturco da Crimeiakashubiandacotadargwataitadelawareslavedogribdinkazarmadogr" +
-	"isérvio baixodualaholandês médiojola-fonyidiúladazagaembuefiqueegípcio arcaicoek" +
-	"ajukelamiteinglês médioewondofanguefilipinofomfrancês médiofrancês arcaicofrísio" +
-	" setentrionalfrisão orientalfriulanogagagauzgayogbaiageezgilbertêsalemão médio-a" +
-	"ltoalemão arcaico altogondigorontalogóticogrebogrego arcaicoalemão suíçogusiigwi" +
-	"chʼinhaidahavaianohiligaynonhititahmongsorábio superiorhupaibanibibioilocanoingu" +
-	"chelojbannguembamachamejudaico-persajudaico-arábicokara-kalpakkabylekachinjjukam" +
-	"bakawikabardianokanembutyapmacondekabuverdianukorokhasikhotanêskoyra chiinikakok" +
-	"alenjinquimbundokomi-permyakconcanikosraeankpellekarachay-balkaridioma carélioku" +
-	"rukhshambalabafiakölschkumykkutenailadinolangilahndalambalezghianlacotamongolozi" +
-	"luba-lulualuisenolundaluolushailuyiamadurêsmafamagahimaithilimakasarmandingamass" +
-	"aimabamocsamandarmendemerumorisyenirlandês médiomacuameta’miquemaqueminangkabaum" +
-	"anchumanipurimoicanomossimundangidiomas múltiploscreekmirandêsmarwarimyeneerzyan" +
-	"apolitanonamabaixo-alemãonewariniasniueanokwasiongiemboonnogainórdico arcaicon’k" +
-	"osoto setentrionalnuernewari clássiconyamwezinyankolenyoronzimaosageturco otoman" +
-	"opangasinãpálavipampangapapiamentopalauanopersa arcaicofeníciopohnpeianprovençal" +
-	" arcaicoquichérajastanirapanuirarotonganoromboromaniaromenorwasandaweiacutoarama" +
-	"ico samaritanosamburusasaksantalingambaysangusicilianoescocêssenecasenaselkupkoy" +
-	"raboro senniirlandês arcaicotachelhitshanárabe chadianosidamosami do sullule sam" +
-	"iinari samiskolt samisoninquêsogdianoidioma surinamêssereresahosukumasossosuméri" +
-	"ocomorianosuaíli do Congosiríaco clássicosiríacotimnetesoterenotétumtigrétivtoqu" +
-	"elauanoklingontlinguitetamaxequetonganês de Nyasatok pisintarokotsimshiantumbuka" +
-	"tuvaluanotasawaqtuviniantamazightudmurtugaríticoumbunduidioma desconhecidovaivot" +
-	"icvunjowalserwalamowaraywashokalmyklusogayaoyapeseyangbenyembacantonêszapotecasí" +
-	"mbolos bliszenagatamazight marroquino padrãozunhisem conteúdo linguísticozazaára" +
-	"be modernoalemão austríacoalto alemão suíçoinglês australianoinglês canadenseing" +
-	"lês britânicoinglês americanoespanhol latino-americanoespanhol europeuespanhol m" +
-	"exicanofrancês canadensefrancês suíçoflamengoportuguês do Brasilportuguês europe" +
-	"umoldávioservo-croatachinês simplificadochinês tradicional"
+	"portuguêsquíchuaromancherundiromenorussokinyarwandasânscritosardosindisami do no" +
+	"rtesangocingalêseslovacoeslovenosamoanoshonasomalialbanêssérvioswatisoto do suls" +
+	"undanêssuecosuaílitâmiltelugutajiquetailandêstigríniaturcomenotswanatonganêsturc" +
+	"otsongatatartaitianouigurucranianourduusbequevendavietnamitavolapuquevalãouólofe" +
+	"xosaiídicheiorubazhuangchinêszuluachémacoliadangmeadigueafrihiliaghemainuacadian" +
+	"oaleútealtai do sulinglês arcaicoangikaaramaicoaraucanoarapahoarauaquiasuasturia" +
+	"noawadhibalúchibalinêsbasabamumghomala’bejabembabenabafutbhojpuribikolbinikomsik" +
+	"sikabrajbodoakooseburiatbuginêsbulublinmedumbacaddocaribecayugaatsamcebuanochiga" +
+	"chibchachagataichuukesemarichinook jargonchoctawchipewyancherokeecheienesorâni c" +
+	"urdocoptaturco da Crimeiakashubiandacotadargwataitadelawareslavedogribdinkazarma" +
+	"dogrisorábio baixodualaholandês médiojola-fonyidiúladazagaembuefiqueegípcio arca" +
+	"icoekajukelamiteinglês médioewondofanguefilipinofomfrancês médiofrancês arcaicof" +
+	"rísio setentrionalfrisão orientalfriulanogagagauzgayogbaiageezgilbertêsalemão mé" +
+	"dio-altoalemão arcaico altogondigorontalogóticogrebogrego arcaicoalemão suíçogus" +
+	"iigwichʼinhaidahavaianohiligaynonhititahmongsorábio altohupaibanibibioilocanoing" +
+	"uchelojbannguembamachamejudaico-persajudaico-arábicokara-kalpakkabylekachinjjuka" +
+	"mbakawikabardianokanembutyapmacondekabuverdianukorokhasikhotanêskoyra chiinikako" +
+	"kalenjinquimbundokomi-permyakconcanikosraeankpellekarachay-balkaridioma caréliok" +
+	"urukhshambalabafiakölschkumykkutenailadinolangilahndalambalezghianlacotamongoloz" +
+	"iluba-lulualuisenolundaluolushailuyiamadurêsmafamagahimaithilimakasarmandingamas" +
+	"saimabamocsamandarmendemerumorisyenirlandês médiomacuameta’miquemaqueminangkabau" +
+	"manchumanipurimoicanomossimundangidiomas múltiploscreekmirandêsmarwarimyeneerzya" +
+	"napolitanonamabaixo alemãonewariniasniueanokwasiongiemboonnogainórdico arcaicon’" +
+	"kosoto setentrionalnuernewari clássiconyamwezinyankolenyoronzimaosageturco otoma" +
+	"nopangasinãpálavipampangapapiamentopalauanopersa arcaicofeníciopohnpeianprovença" +
+	"l arcaicoquichérajastanirapanuirarotonganoromboromaniaromenorwasandaweiacutoaram" +
+	"aico samaritanosamburusasaksantalingambaysangusicilianoescocêssenecasenaselkupko" +
+	"yraboro senniirlandês arcaicotachelhitshanárabe chadianosidamosami do sullule sa" +
+	"miinari samiskolt samisoninquêsogdianoidioma surinamêssereresahosukumasossosumér" +
+	"iocomorianosuaíli do Congosiríaco clássicosiríacotimnetesoterenotétumtigrétivtoq" +
+	"uelauanoklingontlinguitetamaxequetonganês de Nyasatok pisintarokotsimshiantumbuk" +
+	"atuvaluanotasawaqtuvinianotamazight do Atlas Centraludmurtugaríticoumbunduidioma" +
+	" desconhecidovaivoticvunjowalserwalamowaraywashokalmyklusogayaoyapeseyangbenyemb" +
+	"acantonêszapotecasímbolos bliszenagatamazight marroquino padrãozunhisem conteúdo" +
+	" linguísticozazaárabe modernoalemão austríacoalto alemão suíçoinglês australiano" +
+	"inglês canadenseinglês britânicoinglês americanoespanhol latino-americanoespanho" +
+	"l europeuespanhol mexicanofrancês canadensefrancês suíçoflamengoportuguês do Bra" +
+	"silportuguês europeumoldávioservo-croatachinês simplificadochinês tradicional"
 
-var ptLangIdx = []uint16{ // 604 entries
+var ptLangIdx = []uint16{ // 605 entries
 	0x0, 0x4, 0xc, 0x15, 0x1f, 0x23, 0x2b, 0x34, 0x3a, 0x42, 0x48, 0x4e,
 	0x59, 0x60, 0x6b, 0x73, 0x7b, 0x82, 0x89, 0x91, 0x98, 0x9f, 0xa7, 0xaf,
 	0xb7, 0xbf, 0xc3, 0xc9, 0xdd, 0xe4, 0xea, 0xf6, 0xfd, 0x103, 0x109, 0x10c,
@@ -13407,110 +12641,107 @@
 	0x2ed, 0x2f4, 0x300, 0x306, 0x30d, 0x317, 0x31c, 0x326, 0x32e, 0x334, 0x33a, 0x340,
 	0x347, 0x350, 0x358, 0x368, 0x36e, 0x373, 0x37c, 0x38e, 0x3a0, 0x3ae, 0x3b4, 0x3ba,
 	0x3c5, 0x3cb, 0x3d0, 0x3d5, 0x3dc, 0x3e3, 0x3e8, 0x3f0, 0x3f6, 0x400, 0x408, 0x410,
-	0x415, 0x41b, 0x420, 0x426, 0x430, 0x435, 0x43a, 0x447, 0x44c, 0x455, 0x45d, 0x465,
-	0x46c, 0x471, 0x477, 0x47f, 0x486, 0x48b, 0x496, 0x49f, 0x4a4, 0x4ab, 0x4b1, 0x4b7,
-	0x4be, 0x4c8, 0x4d1, 0x4da, 0x4e0, 0x4e9, 0x4ee, 0x4f4, 0x4f9, 0x501, 0x506, 0x50f,
-	0x513, 0x51a, 0x51f, 0x529, 0x532, 0x538, 0x53f, 0x543, 0x54b, 0x551, 0x557, 0x55e,
-	0x562, 0x568, 0x56d, 0x574, 0x57a, 0x57a, 0x582, 0x587, 0x58b, 0x593, 0x593, 0x59a,
-	0x59a, 0x5a6, 0x5b5, 0x5bb, 0x5c3, 0x5cb, 0x5cb, 0x5d2, 0x5d2, 0x5da, 0x5da, 0x5da,
-	0x5dd, 0x5dd, 0x5e6, 0x5e6, 0x5ec, 0x5ec, 0x5f4, 0x5fc, 0x5fc, 0x600, 0x605, 0x605,
-	0x60f, 0x613, 0x618, 0x618, 0x61c, 0x621, 0x621, 0x629, 0x62e, 0x632, 0x632, 0x635,
-	0x63c, 0x63c, 0x63c, 0x640, 0x640, 0x644, 0x64a, 0x650, 0x659, 0x65d, 0x661, 0x668,
-	0x66d, 0x673, 0x679, 0x67e, 0x685, 0x68a, 0x691, 0x699, 0x6a1, 0x6a5, 0x6b3, 0x6ba,
-	0x6c3, 0x6cb, 0x6d2, 0x6df, 0x6e4, 0x6e4, 0x6f4, 0x6fd, 0x703, 0x709, 0x70e, 0x716,
-	0x71b, 0x721, 0x726, 0x72b, 0x730, 0x73d, 0x73d, 0x742, 0x752, 0x75c, 0x762, 0x768,
-	0x76c, 0x772, 0x772, 0x782, 0x788, 0x78f, 0x79d, 0x79d, 0x7a3, 0x7a3, 0x7a9, 0x7b1,
-	0x7b1, 0x7b4, 0x7b4, 0x7c3, 0x7d3, 0x7d3, 0x7e7, 0x7f7, 0x7ff, 0x801, 0x807, 0x807,
-	0x80b, 0x810, 0x810, 0x814, 0x81e, 0x81e, 0x831, 0x845, 0x845, 0x84a, 0x853, 0x85a,
-	0x85f, 0x86c, 0x87b, 0x87b, 0x87b, 0x880, 0x889, 0x88e, 0x88e, 0x896, 0x896, 0x8a0,
-	0x8a6, 0x8ab, 0x8bc, 0x8bc, 0x8c0, 0x8c4, 0x8ca, 0x8d1, 0x8d8, 0x8d8, 0x8d8, 0x8de,
-	0x8e5, 0x8ec, 0x8f9, 0x909, 0x909, 0x914, 0x91a, 0x920, 0x923, 0x928, 0x92c, 0x936,
-	0x93d, 0x941, 0x948, 0x954, 0x954, 0x958, 0x958, 0x95d, 0x966, 0x972, 0x972, 0x972,
-	0x976, 0x97e, 0x987, 0x993, 0x99a, 0x9a2, 0x9a8, 0x9b7, 0x9b7, 0x9b7, 0x9c6, 0x9cc,
-	0x9d4, 0x9d9, 0x9e0, 0x9e5, 0x9ec, 0x9f2, 0x9f7, 0x9fd, 0xa02, 0xa0a, 0xa0a, 0xa0a,
-	0xa0a, 0xa10, 0xa10, 0xa15, 0xa19, 0xa19, 0xa23, 0xa2a, 0xa2f, 0xa32, 0xa38, 0xa3d,
-	0xa3d, 0xa3d, 0xa45, 0xa49, 0xa4f, 0xa57, 0xa5e, 0xa66, 0xa6c, 0xa70, 0xa75, 0xa7b,
-	0xa80, 0xa84, 0xa8c, 0xa9c, 0xaa1, 0xaa8, 0xab2, 0xabd, 0xac3, 0xacb, 0xad2, 0xad7,
-	0xad7, 0xade, 0xaf0, 0xaf5, 0xafe, 0xb05, 0xb05, 0xb0a, 0xb0f, 0xb0f, 0xb0f, 0xb19,
-	0xb1d, 0xb2a, 0xb30, 0xb34, 0xb3b, 0xb3b, 0xb41, 0xb4a, 0xb4f, 0xb5f, 0xb5f, 0xb65,
-	0xb76, 0xb7a, 0xb8a, 0xb92, 0xb9a, 0xb9f, 0xba4, 0xba9, 0xbb6, 0xbc0, 0xbc7, 0xbcf,
-	0xbd9, 0xbe1, 0xbe1, 0xbe1, 0xbe1, 0xbee, 0xbee, 0xbf6, 0xbf6, 0xbf6, 0xbff, 0xbff,
-	0xc11, 0xc18, 0xc18, 0xc21, 0xc28, 0xc33, 0xc33, 0xc33, 0xc38, 0xc3e, 0xc3e, 0xc3e,
-	0xc3e, 0xc45, 0xc48, 0xc4f, 0xc55, 0xc68, 0xc6f, 0xc74, 0xc7b, 0xc7b, 0xc82, 0xc87,
-	0xc90, 0xc98, 0xc98, 0xc9e, 0xca2, 0xca2, 0xca8, 0xcb7, 0xcc8, 0xcc8, 0xcd1, 0xcd5,
-	0xce4, 0xcea, 0xcea, 0xcea, 0xcf5, 0xcfe, 0xd08, 0xd12, 0xd1b, 0xd23, 0xd34, 0xd3a,
-	0xd3e, 0xd3e, 0xd44, 0xd49, 0xd51, 0xd5a, 0xd6a, 0xd7c, 0xd84, 0xd84, 0xd84, 0xd89,
-	0xd8d, 0xd93, 0xd99, 0xd9f, 0xda2, 0xdad, 0xdad, 0xdb4, 0xdbd, 0xdbd, 0xdc6, 0xdd8,
-	0xde1, 0xde1, 0xde7, 0xde7, 0xdf0, 0xdf0, 0xdf7, 0xe00, 0xe07, 0xe0f, 0xe18, 0xe1e,
-	0xe28, 0xe2f, 0xe42, 0xe45, 0xe45, 0xe45, 0xe45, 0xe45, 0xe4a, 0xe4a, 0xe4f, 0xe55,
-	0xe5b, 0xe60, 0xe65, 0xe65, 0xe6b, 0xe6b, 0xe71, 0xe74, 0xe7a, 0xe81, 0xe86, 0xe86,
-	0xe8f, 0xe97, 0xea5, 0xea5, 0xeab, 0xec7, 0xecc, 0xee6, 0xeea, 0xef8, 0xf0a, 0xf1e,
-	0xf31, 0xf42, 0xf54, 0xf65, 0xf7e, 0xf8e, 0xf9f, 0xfb1, 0xfc1, 0xfc9, 0xfdd, 0xfef,
-	0xff8, 0x1004, 0x1018, 0x102b,
+	0x415, 0x41b, 0x420, 0x42b, 0x435, 0x43a, 0x43f, 0x44c, 0x451, 0x45a, 0x462, 0x46a,
+	0x471, 0x476, 0x47c, 0x484, 0x48b, 0x490, 0x49b, 0x4a4, 0x4a9, 0x4b0, 0x4b6, 0x4bc,
+	0x4c3, 0x4cd, 0x4d6, 0x4df, 0x4e5, 0x4ee, 0x4f3, 0x4f9, 0x4fe, 0x506, 0x50b, 0x514,
+	0x518, 0x51f, 0x524, 0x52e, 0x537, 0x53d, 0x544, 0x548, 0x550, 0x556, 0x55c, 0x563,
+	0x567, 0x56d, 0x572, 0x579, 0x57f, 0x57f, 0x587, 0x58c, 0x590, 0x598, 0x598, 0x59f,
+	0x59f, 0x5ab, 0x5ba, 0x5c0, 0x5c8, 0x5d0, 0x5d0, 0x5d7, 0x5d7, 0x5df, 0x5df, 0x5df,
+	0x5e2, 0x5e2, 0x5eb, 0x5eb, 0x5f1, 0x5f1, 0x5f9, 0x601, 0x601, 0x605, 0x60a, 0x60a,
+	0x614, 0x618, 0x61d, 0x61d, 0x621, 0x626, 0x626, 0x62e, 0x633, 0x637, 0x637, 0x63a,
+	0x641, 0x641, 0x641, 0x645, 0x645, 0x649, 0x64f, 0x655, 0x65d, 0x661, 0x665, 0x66c,
+	0x671, 0x677, 0x67d, 0x682, 0x689, 0x68e, 0x695, 0x69d, 0x6a5, 0x6a9, 0x6b7, 0x6be,
+	0x6c7, 0x6cf, 0x6d6, 0x6e3, 0x6e8, 0x6e8, 0x6f8, 0x701, 0x707, 0x70d, 0x712, 0x71a,
+	0x71f, 0x725, 0x72a, 0x72f, 0x734, 0x742, 0x742, 0x747, 0x757, 0x761, 0x767, 0x76d,
+	0x771, 0x777, 0x777, 0x787, 0x78d, 0x794, 0x7a2, 0x7a2, 0x7a8, 0x7a8, 0x7ae, 0x7b6,
+	0x7b6, 0x7b9, 0x7b9, 0x7c8, 0x7d8, 0x7d8, 0x7ec, 0x7fc, 0x804, 0x806, 0x80c, 0x80c,
+	0x810, 0x815, 0x815, 0x819, 0x823, 0x823, 0x836, 0x84a, 0x84a, 0x84f, 0x858, 0x85f,
+	0x864, 0x871, 0x880, 0x880, 0x880, 0x885, 0x88e, 0x893, 0x893, 0x89b, 0x89b, 0x8a5,
+	0x8ab, 0x8b0, 0x8bd, 0x8bd, 0x8c1, 0x8c5, 0x8cb, 0x8d2, 0x8d9, 0x8d9, 0x8d9, 0x8df,
+	0x8e6, 0x8ed, 0x8fa, 0x90a, 0x90a, 0x915, 0x91b, 0x921, 0x924, 0x929, 0x92d, 0x937,
+	0x93e, 0x942, 0x949, 0x955, 0x955, 0x959, 0x959, 0x95e, 0x967, 0x973, 0x973, 0x973,
+	0x977, 0x97f, 0x988, 0x994, 0x99b, 0x9a3, 0x9a9, 0x9b8, 0x9b8, 0x9b8, 0x9c7, 0x9cd,
+	0x9d5, 0x9da, 0x9e1, 0x9e6, 0x9ed, 0x9f3, 0x9f8, 0x9fe, 0xa03, 0xa0b, 0xa0b, 0xa0b,
+	0xa0b, 0xa11, 0xa11, 0xa16, 0xa1a, 0xa1a, 0xa24, 0xa2b, 0xa30, 0xa33, 0xa39, 0xa3e,
+	0xa3e, 0xa3e, 0xa46, 0xa4a, 0xa50, 0xa58, 0xa5f, 0xa67, 0xa6d, 0xa71, 0xa76, 0xa7c,
+	0xa81, 0xa85, 0xa8d, 0xa9d, 0xaa2, 0xaa9, 0xab3, 0xabe, 0xac4, 0xacc, 0xad3, 0xad8,
+	0xad8, 0xadf, 0xaf1, 0xaf6, 0xaff, 0xb06, 0xb06, 0xb0b, 0xb10, 0xb10, 0xb10, 0xb1a,
+	0xb1e, 0xb2b, 0xb31, 0xb35, 0xb3c, 0xb3c, 0xb42, 0xb4b, 0xb50, 0xb60, 0xb60, 0xb66,
+	0xb77, 0xb7b, 0xb8b, 0xb93, 0xb9b, 0xba0, 0xba5, 0xbaa, 0xbb7, 0xbc1, 0xbc8, 0xbd0,
+	0xbda, 0xbe2, 0xbe2, 0xbe2, 0xbe2, 0xbef, 0xbef, 0xbf7, 0xbf7, 0xbf7, 0xc00, 0xc00,
+	0xc12, 0xc19, 0xc19, 0xc22, 0xc29, 0xc34, 0xc34, 0xc34, 0xc39, 0xc3f, 0xc3f, 0xc3f,
+	0xc3f, 0xc46, 0xc49, 0xc50, 0xc56, 0xc69, 0xc70, 0xc75, 0xc7c, 0xc7c, 0xc83, 0xc88,
+	0xc91, 0xc99, 0xc99, 0xc9f, 0xca3, 0xca3, 0xca9, 0xcb8, 0xcc9, 0xcc9, 0xcd2, 0xcd6,
+	0xce5, 0xceb, 0xceb, 0xceb, 0xcf6, 0xcff, 0xd09, 0xd13, 0xd1c, 0xd24, 0xd35, 0xd3b,
+	0xd3f, 0xd3f, 0xd45, 0xd4a, 0xd52, 0xd5b, 0xd6b, 0xd7d, 0xd85, 0xd85, 0xd85, 0xd8a,
+	0xd8e, 0xd94, 0xd9a, 0xda0, 0xda3, 0xdae, 0xdae, 0xdb5, 0xdbe, 0xdbe, 0xdc7, 0xdd9,
+	0xde2, 0xde2, 0xde8, 0xde8, 0xdf1, 0xdf1, 0xdf8, 0xe01, 0xe08, 0xe11, 0xe2b, 0xe31,
+	0xe3b, 0xe42, 0xe55, 0xe58, 0xe58, 0xe58, 0xe58, 0xe58, 0xe5d, 0xe5d, 0xe62, 0xe68,
+	0xe6e, 0xe73, 0xe78, 0xe78, 0xe78, 0xe7e, 0xe7e, 0xe84, 0xe87, 0xe8d, 0xe94, 0xe99,
+	0xe99, 0xea2, 0xeaa, 0xeb8, 0xeb8, 0xebe, 0xeda, 0xedf, 0xef9, 0xefd, 0xf0b, 0xf1d,
+	0xf31, 0xf44, 0xf55, 0xf67, 0xf78, 0xf91, 0xfa1, 0xfb2, 0xfc4, 0xfd4, 0xfdc, 0xff0,
+	0x1002, 0x100b, 0x1017, 0x102b, 0x103e,
 }
 
 const ptPTLangStr = "" +
-	"africânderchechenechecoeweestóniofrísico ocidentalhaúçahindiarménioigboinupiaqco" +
-	"nguêscmercanarimgandamacedónionorueguês nynorsknorueguês bokmålprovençalossético" +
-	"polacopastókinyarwandaturcomanotongamapuchebamunghomalabuginesejargão chinooksor" +
-	"ani curdobaixo sórabiodiulaegípcio clássicoinglês medievalfrancês medievalfrísio" +
-	" orientalalemão medieval altogrego clássicoalto sórabiocabo-verdianolezghianoluo" +
-	"irlandês, medievalmohawkbaixo alemãonorse, oldprovençal, arcaicoromanêssakhaárab" +
-	"e do Chadelíngua comorianatoganêstuvinianotamazight do Atlas Centralrootvaisogat" +
-	"amazight padrão de Marrocosárabe moderno padrãoinglês canadianoespanhol do Méxic" +
-	"ofrancês canadiano"
+	"africânderchecoeweestóniofrísico ocidentalhaúçahindiarménioigboconguêscanarimgan" +
+	"damacedónionorueguês nynorsknorueguês bokmålprovençalosséticopolacopastóturcoman" +
+	"otongamapuchebamunghomalajargão chinooksorani curdobaixo sórabioegípcio clássico" +
+	"inglês medievalfrancês medievalfrísio orientalalemão medieval altogrego clássico" +
+	"alto sórabiocabo-verdianolezghianoluoirlandês, medievalromanêssakhaárabe do Chad" +
+	"evaisogainglês canadianofrancês canadiano"
 
-var ptPTLangIdx = []uint16{ // 596 entries
+var ptPTLangIdx = []uint16{ // 597 entries
 	0x0, 0x0, 0x0, 0x0, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb,
-	0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0x13,
-	0x13, 0x13, 0x13, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1b,
-	0x1b, 0x1b, 0x1b, 0x1b, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
-	0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x3c, 0x3c, 0x41, 0x41, 0x41,
-	0x41, 0x41, 0x49, 0x49, 0x49, 0x49, 0x49, 0x4d, 0x4d, 0x54, 0x54, 0x54,
-	0x54, 0x54, 0x54, 0x54, 0x54, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x60, 0x67,
-	0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x6c, 0x6c, 0x6c,
-	0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x76, 0x76, 0x76, 0x76, 0x76,
-	0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x88, 0x9a, 0x9a, 0x9a, 0x9a,
-	0xa4, 0xa4, 0xa4, 0xa4, 0xad, 0xad, 0xad, 0xb3, 0xb9, 0xb9, 0xb9, 0xb9,
-	0xb9, 0xb9, 0xb9, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4,
-	0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4,
-	0xc4, 0xc4, 0xc4, 0xcd, 0xcd, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2,
-	0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2,
-	0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2,
-	0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
-	0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xde, 0xde,
-	0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
-	0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xed, 0xed, 0xed, 0xed,
-	0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xfc, 0xfc,
-	0xfc, 0xfc, 0xfc, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108,
-	0x108, 0x108, 0x108, 0x108, 0x108, 0x116, 0x116, 0x116, 0x116, 0x116, 0x11b, 0x11b,
-	0x11b, 0x11b, 0x11b, 0x12d, 0x12d, 0x12d, 0x13d, 0x13d, 0x13d, 0x13d, 0x13d, 0x13d,
-	0x13d, 0x13d, 0x13d, 0x14e, 0x14e, 0x14e, 0x14e, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e,
-	0x15e, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e, 0x173, 0x173, 0x173, 0x173, 0x173, 0x173,
-	0x173, 0x182, 0x182, 0x182, 0x182, 0x182, 0x182, 0x182, 0x182, 0x182, 0x182, 0x182,
-	0x182, 0x182, 0x18f, 0x18f, 0x18f, 0x18f, 0x18f, 0x18f, 0x18f, 0x18f, 0x18f, 0x18f,
-	0x18f, 0x18f, 0x18f, 0x18f, 0x18f, 0x18f, 0x18f, 0x18f, 0x18f, 0x18f, 0x18f, 0x18f,
-	0x18f, 0x18f, 0x18f, 0x19c, 0x19c, 0x19c, 0x19c, 0x19c, 0x19c, 0x19c, 0x19c, 0x19c,
-	0x19c, 0x19c, 0x19c, 0x19c, 0x19c, 0x19c, 0x19c, 0x19c, 0x19c, 0x19c, 0x19c, 0x19c,
-	0x19c, 0x19c, 0x19c, 0x19c, 0x19c, 0x19c, 0x19c, 0x19c, 0x19c, 0x1a5, 0x1a5, 0x1a5,
-	0x1a5, 0x1a5, 0x1a5, 0x1a5, 0x1a5, 0x1a5, 0x1a5, 0x1a5, 0x1a5, 0x1a8, 0x1a8, 0x1a8,
-	0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8,
-	0x1a8, 0x1a8, 0x1a8, 0x1bb, 0x1bb, 0x1bb, 0x1bb, 0x1bb, 0x1bb, 0x1bb, 0x1c1, 0x1c1,
-	0x1c1, 0x1c1, 0x1c1, 0x1c1, 0x1c1, 0x1c1, 0x1c1, 0x1c1, 0x1c1, 0x1c1, 0x1c1, 0x1c1,
-	0x1c1, 0x1ce, 0x1ce, 0x1ce, 0x1ce, 0x1ce, 0x1ce, 0x1ce, 0x1ce, 0x1d8, 0x1d8, 0x1d8,
-	0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8,
-	0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8, 0x1d8,
-	0x1eb, 0x1eb, 0x1eb, 0x1eb, 0x1eb, 0x1eb, 0x1eb, 0x1eb, 0x1eb, 0x1f3, 0x1f3, 0x1f3,
-	0x1f3, 0x1f3, 0x1f3, 0x1f3, 0x1f8, 0x1f8, 0x1f8, 0x1f8, 0x1f8, 0x1f8, 0x1f8, 0x1f8,
-	0x1f8, 0x1f8, 0x1f8, 0x1f8, 0x1f8, 0x1f8, 0x1f8, 0x1f8, 0x1f8, 0x1f8, 0x1f8, 0x1f8,
-	0x207, 0x207, 0x207, 0x207, 0x207, 0x207, 0x207, 0x207, 0x207, 0x207, 0x207, 0x207,
-	0x207, 0x207, 0x207, 0x207, 0x207, 0x218, 0x218, 0x218, 0x218, 0x218, 0x218, 0x218,
-	0x218, 0x218, 0x218, 0x218, 0x218, 0x218, 0x218, 0x218, 0x218, 0x218, 0x218, 0x220,
-	0x220, 0x220, 0x220, 0x220, 0x220, 0x220, 0x220, 0x220, 0x220, 0x229, 0x243, 0x243,
-	0x243, 0x243, 0x247, 0x24a, 0x24a, 0x24a, 0x24a, 0x24a, 0x24a, 0x24a, 0x24a, 0x24a,
-	0x24a, 0x24a, 0x24a, 0x24a, 0x24a, 0x24a, 0x24e, 0x24e, 0x24e, 0x24e, 0x24e, 0x24e,
-	0x24e, 0x24e, 0x24e, 0x24e, 0x24e, 0x26b, 0x26b, 0x26b, 0x26b, 0x281, 0x281, 0x281,
-	0x281, 0x292, 0x292, 0x292, 0x292, 0x292, 0x2a5, 0x2b7,
+	0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb,
+	0xb, 0xb, 0xb, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x13,
+	0x13, 0x13, 0x13, 0x13, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b,
+	0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x34, 0x34, 0x39, 0x39, 0x39,
+	0x39, 0x39, 0x41, 0x41, 0x41, 0x41, 0x41, 0x45, 0x45, 0x45, 0x45, 0x45,
+	0x45, 0x45, 0x45, 0x45, 0x45, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x54,
+	0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x59, 0x59, 0x59,
+	0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x63, 0x63, 0x63, 0x63, 0x63,
+	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x75, 0x87, 0x87, 0x87, 0x87,
+	0x91, 0x91, 0x91, 0x91, 0x9a, 0x9a, 0x9a, 0xa0, 0xa6, 0xa6, 0xa6, 0xa6,
+	0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6,
+	0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6,
+	0xa6, 0xa6, 0xa6, 0xaf, 0xaf, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4,
+	0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4,
+	0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4,
+	0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,
+	0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xc0, 0xc0,
+	0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
+	0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
+	0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xd6, 0xd6,
+	0xd6, 0xd6, 0xd6, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
+	0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+	0xf0, 0xf0, 0xf0, 0x102, 0x102, 0x102, 0x112, 0x112, 0x112, 0x112, 0x112, 0x112,
+	0x112, 0x112, 0x112, 0x123, 0x123, 0x123, 0x123, 0x133, 0x133, 0x133, 0x133, 0x133,
+	0x133, 0x133, 0x133, 0x133, 0x133, 0x133, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148,
+	0x148, 0x157, 0x157, 0x157, 0x157, 0x157, 0x157, 0x157, 0x157, 0x157, 0x157, 0x157,
+	0x157, 0x157, 0x164, 0x164, 0x164, 0x164, 0x164, 0x164, 0x164, 0x164, 0x164, 0x164,
+	0x164, 0x164, 0x164, 0x164, 0x164, 0x164, 0x164, 0x164, 0x164, 0x164, 0x164, 0x164,
+	0x164, 0x164, 0x164, 0x171, 0x171, 0x171, 0x171, 0x171, 0x171, 0x171, 0x171, 0x171,
+	0x171, 0x171, 0x171, 0x171, 0x171, 0x171, 0x171, 0x171, 0x171, 0x171, 0x171, 0x171,
+	0x171, 0x171, 0x171, 0x171, 0x171, 0x171, 0x171, 0x171, 0x171, 0x17a, 0x17a, 0x17a,
+	0x17a, 0x17a, 0x17a, 0x17a, 0x17a, 0x17a, 0x17a, 0x17a, 0x17a, 0x17d, 0x17d, 0x17d,
+	0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d, 0x17d,
+	0x17d, 0x17d, 0x17d, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190,
+	0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190,
+	0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190,
+	0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190,
+	0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190,
+	0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x198, 0x198, 0x198,
+	0x198, 0x198, 0x198, 0x198, 0x19d, 0x19d, 0x19d, 0x19d, 0x19d, 0x19d, 0x19d, 0x19d,
+	0x19d, 0x19d, 0x19d, 0x19d, 0x19d, 0x19d, 0x19d, 0x19d, 0x19d, 0x19d, 0x19d, 0x19d,
+	0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac,
+	0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac,
+	0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac,
+	0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac, 0x1ac,
+	0x1ac, 0x1ac, 0x1ac, 0x1af, 0x1af, 0x1af, 0x1af, 0x1af, 0x1af, 0x1af, 0x1af, 0x1af,
+	0x1af, 0x1af, 0x1af, 0x1af, 0x1af, 0x1af, 0x1af, 0x1b3, 0x1b3, 0x1b3, 0x1b3, 0x1b3,
+	0x1b3, 0x1b3, 0x1b3, 0x1b3, 0x1b3, 0x1b3, 0x1b3, 0x1b3, 0x1b3, 0x1b3, 0x1b3, 0x1b3,
+	0x1b3, 0x1b3, 0x1c4, 0x1c4, 0x1c4, 0x1c4, 0x1c4, 0x1c4, 0x1d6,
 }
 
 const roLangStr = "" +
@@ -13566,7 +12797,7 @@
 	"franceză elvețianăflamandăportugheză brazilianăportugheză europeanămoldovenească" +
 	"sârbo-croatăchineză simplificatăchineză tradițională"
 
-var roLangIdx = []uint16{ // 604 entries
+var roLangIdx = []uint16{ // 605 entries
 	0x0, 0x4, 0xb, 0x14, 0x1d, 0x21, 0x2a, 0x34, 0x3a, 0x42, 0x48, 0x4e,
 	0x54, 0x5d, 0x67, 0x6f, 0x76, 0x7d, 0x87, 0x90, 0x98, 0xa1, 0xaa, 0xb1,
 	0xb9, 0xc3, 0xc7, 0xcc, 0xd4, 0xdd, 0xe4, 0xeb, 0xf3, 0xf9, 0x101, 0x104,
@@ -13614,10 +12845,10 @@
 	0xe07, 0xe0d, 0xe12, 0xe17, 0xe1a, 0xe21, 0xe21, 0xe2d, 0xe34, 0xe34, 0xe3c, 0xe47,
 	0xe50, 0xe50, 0xe56, 0xe56, 0xe5f, 0xe5f, 0xe66, 0xe6c, 0xe73, 0xe7a, 0xe95, 0xe9b,
 	0xea5, 0xeac, 0xeb0, 0xeb3, 0xeb3, 0xeb3, 0xeb3, 0xeb3, 0xeb8, 0xeb8, 0xebd, 0xec3,
-	0xec9, 0xece, 0xed3, 0xed3, 0xedb, 0xedb, 0xedf, 0xee2, 0xee9, 0xef0, 0xef5, 0xef5,
-	0xeff, 0xf08, 0xf17, 0xf17, 0xf1d, 0xf39, 0xf3d, 0xf57, 0xf5b, 0xf73, 0xf86, 0xfa3,
-	0xfb8, 0xfcb, 0xfde, 0xff1, 0x100c, 0x1020, 0x1033, 0x1047, 0x105c, 0x1065, 0x107c, 0x1092,
-	0x10a0, 0x10ae, 0x10c4, 0x10db,
+	0xec9, 0xece, 0xed3, 0xed3, 0xed3, 0xedb, 0xedb, 0xedf, 0xee2, 0xee9, 0xef0, 0xef5,
+	0xef5, 0xeff, 0xf08, 0xf17, 0xf17, 0xf1d, 0xf39, 0xf3d, 0xf57, 0xf5b, 0xf73, 0xf86,
+	0xfa3, 0xfb8, 0xfcb, 0xfde, 0xff1, 0x100c, 0x1020, 0x1033, 0x1047, 0x105c, 0x1065, 0x107c,
+	0x1092, 0x10a0, 0x10ae, 0x10c4, 0x10db,
 }
 
 const ruLangStr = "" +
@@ -13646,41 +12877,41 @@
 	"жпурибикольскийбиникомсиксикабрауибодоакоосебурятскийбугийскийбулубилин (блин)ме" +
 	"думбакаддокарибкайюгаатсамкебуаночигачибчачагатайскийчукотскиймарийский (черемис" +
 	"ский)чинук жаргончоктавчипевайянчерокичейеннсорани курдскийкоптскийкрымско-татар" +
-	"скийкашубианскийдакотадаргватаитаделаварскийславянскийдогрибдинказармадогринижне" +
-	"лужицкийдуаласредненидерландскийдьола-фоньидиула (дьюла)дазагскийэмбуэфикдревнее" +
-	"гипетскийэкаджукэламскийсреднеанглийскийэвондофангфилиппинскийфонсреднефранцузск" +
-	"ийстарофранцузскийфризский северныйвосточный фризскийфриульскийгагагаузскийгайог" +
-	"баягеэзгильбертскийсредневерхненемецкийдревневерхненемецкийгондигоронталоготский" +
-	"гребодревнегреческийшвейцарский немецкийгусиигвичинхайдагавайскийхилигайнонхеттс" +
-	"кийхмонгверхнелужицкийхупаибанскийибибиоилокоингушскийложбаннгомбамачамееврейско" +
-	"-персидскийеврейско-арабскийкаракалпакскийкабильскийкачинскийкаджикамбакавикабар" +
-	"динскийканембутьяпмакондекабувердьянукорокхасихотанскийкойра чииникакокаленджинк" +
-	"имбундийскийкоми-пермяцкийконканикосраенскийкпеллекарачаево-балкарскийкарельский" +
-	"курухшамбалабафиякёльшкумыкскийкутенаиладинолангилахндаламбалезгинскийлакотамонг" +
-	"олозилуба-лулуалуисеньолундалуо (Кения и Танзания)лушайлухьямадурскиймафамагахим" +
-	"айтхилимакассарскиймандингомасаимабанскиймокшанскиймандарскиймендемерумаврикийск" +
-	"ий креольскийсреднеирландскиймакуа-мееттометамикмакминангкабауманьчжурскийманипу" +
-	"рскиймохаукмосимундангнесколько языковкрикмирандийскиймарваримиенеэрзянеаполитан" +
-	"скийнаманижнегерманскийневарскийниасниуэквасионгиембундногайскийстаронорвежскийн" +
-	"косото северныйнуэрневари (классический)ньямвезиньянколеньоронзимаоседжистаротур" +
-	"ецкийпангасинанпехлевийскийпампангапапьяментопалаустароперсидскийфиникийскийпона" +
-	"пестаропровансальскийкичераджастханирапануираротонганскийромбоцыганскийарумынски" +
-	"йруандасандавеякутскийсамаритянский арамейскийсамбурусасакисанталингамбайскийсан" +
-	"гусицилийскийшотландскийсенекасенаселькупскийкойраборо сеннистароирландскийтахел" +
-	"хитшанскийчадский арабссидамасаамский (южный)луле-саамскийинари-саамскийскольт-с" +
-	"аамскийсонинкесогдийскийсранан тонгосерерсахосукумасусушумерскийкоморскийконголе" +
-	"зский суахиликлассический сирийскийсирийскийтемнетесотеренотетумтигретивитокелай" +
-	"скийклингонскийтлингиттамашекньяса (тонга)ток-писинтуройотарокоцимшиантумбукатув" +
-	"алутасавактувинскийсреднеатласский тамазигхтскийудмуртскийугаритскийумбундукорне" +
-	"вой языкваиводскийвунджовалисскийволамоварайвашокалмыцкийсогаяояпянбанйембаканто" +
-	"нскийсапотекскийблиссимволиказенагскийтамазигхтскийзуньибез языкового содержания" +
-	"зазаарабский литературныйавстрийский немецкийшвейцарский верхненемецкийавстралий" +
-	"ский английскийканадский английскийбританский английскийамериканский английскийл" +
-	"атиноамериканский испанскийевропейский испанскийканадский французскийшвейцарский" +
-	" французскийфламандскийбразильский португальскийевропейский португальскиймолдавс" +
-	"кийсербскохорватскийупрощенный китайскийтрадиционный китайский"
+	"скийкашубианскийдакотадаргватаитаделаварскийслейвидогрибдинказармадогринижнелужи" +
+	"цкийдуаласредненидерландскийдьола-фоньидиула (дьюла)дазагскийэмбуэфикдревнеегипе" +
+	"тскийэкаджукэламскийсреднеанглийскийэвондофангфилиппинскийфонсреднефранцузскийст" +
+	"арофранцузскийфризский северныйвосточный фризскийфриульскийгагагаузскийгайогбаяг" +
+	"еэзгильбертскийсредневерхненемецкийдревневерхненемецкийгондигоронталоготскийгреб" +
+	"одревнегреческийшвейцарский немецкийгусиигвичинхайдагавайскийхилигайнонхеттскийх" +
+	"монгверхнелужицкийхупаибанскийибибиоилокоингушскийложбаннгомбамачамееврейско-пер" +
+	"сидскийеврейско-арабскийкаракалпакскийкабильскийкачинскийкаджикамбакавикабардинс" +
+	"кийканембутьяпмакондекабувердьянукорокхасихотанскийкойра чииникакокаленджинкимбу" +
+	"ндийскийкоми-пермяцкийконканикосраенскийкпеллекарачаево-балкарскийкарельскийкуру" +
+	"хшамбалабафиякёльшкумыкскийкутенаиладинолангилахндаламбалезгинскийлакотамонголоз" +
+	"илуба-лулуалуисеньолундалуо (Кения и Танзания)лушайлухьямадурскиймафамагахимайтх" +
+	"илимакассарскиймандингомасаимабанскиймокшанскиймандарскиймендемерумаврикийский к" +
+	"реольскийсреднеирландскиймакуа-мееттометамикмакминангкабауманьчжурскийманипурски" +
+	"ймохаукмосимундангнесколько языковкрикмирандийскиймарваримиенеэрзянеаполитанский" +
+	"наманижнегерманскийневарскийниасниуэквасионгиембундногайскийстаронорвежскийнкосо" +
+	"то северныйнуэрневари (классический)ньямвезиньянколеньоронзимаоседжистаротурецки" +
+	"йпангасинанпехлевийскийпампангапапьяментопалаустароперсидскийфиникийскийпонапест" +
+	"аропровансальскийкичераджастханирапануираротонганскийромбоцыганскийарумынскийруа" +
+	"ндасандавеякутскийсамаритянский арамейскийсамбурусасакисанталингамбайскийсангуси" +
+	"цилийскийшотландскийсенекасенаселькупскийкойраборо сеннистароирландскийтахелхитш" +
+	"анскийчадский арабссидамасаамский (южный)луле-саамскийинари-саамскийскольт-саамс" +
+	"кийсонинкесогдийскийсранан тонгосерерсахосукумасусушумерскийкоморскийконголезски" +
+	"й суахиликлассический сирийскийсирийскийтемнетесотеренотетумтигретивитокелайский" +
+	"клингонскийтлингиттамашекньяса (тонга)ток-писинтуройотарокоцимшиантумбукатувалут" +
+	"асавактувинскийсреднеатласский тамазигхтскийудмуртскийугаритскийумбундукорневой " +
+	"языкваиводскийвунджовалисскийволамоварайвашокалмыцкийсогаяояпянбанйембакантонски" +
+	"йсапотекскийблиссимволиказенагскийтамазигхтскийзуньибез языкового содержаниязаза" +
+	"арабский литературныйавстрийский немецкийшвейцарский верхненемецкийавстралийский" +
+	" английскийканадский английскийбританский английскийамериканский английскийлатин" +
+	"оамериканский испанскийевропейский испанскийканадский французскийшвейцарский фра" +
+	"нцузскийфламандскийбразильский португальскийевропейский португальскиймолдавскийс" +
+	"ербскохорватскийупрощенный китайскийтрадиционный китайский"
 
-var ruLangIdx = []uint16{ // 604 entries
+var ruLangIdx = []uint16{ // 605 entries
 	0x0, 0x8, 0x1a, 0x30, 0x42, 0x4a, 0x5c, 0x70, 0x80, 0x92, 0xa2, 0xae,
 	0xcc, 0xe0, 0xf6, 0x10a, 0x118, 0x130, 0x146, 0x158, 0x16c, 0x180, 0x196, 0x1a8,
 	0x1b6, 0x1ce, 0x1e0, 0x1ee, 0x212, 0x224, 0x238, 0x246, 0x256, 0x26c, 0x27b, 0x281,
@@ -13703,35 +12934,35 @@
 	0xdf2, 0xdf2, 0xdf2, 0xdfc, 0xdfc, 0xe04, 0xe10, 0xe22, 0xe34, 0xe3c, 0xe51, 0xe5f,
 	0xe69, 0xe73, 0xe7f, 0xe89, 0xe97, 0xe9f, 0xea9, 0xebf, 0xed1, 0xefc, 0xf13, 0xf1f,
 	0xf31, 0xf3d, 0xf49, 0xf66, 0xf76, 0xf76, 0xf97, 0xfaf, 0xfbb, 0xfc7, 0xfd1, 0xfe7,
-	0xffb, 0x1007, 0x1011, 0x101b, 0x1025, 0x103f, 0x103f, 0x1049, 0x106f, 0x1084, 0x109b, 0x10ad,
-	0x10b5, 0x10bd, 0x10bd, 0x10dd, 0x10eb, 0x10fb, 0x111b, 0x111b, 0x1127, 0x1127, 0x112f, 0x1147,
-	0x1147, 0x114d, 0x114d, 0x116f, 0x118f, 0x118f, 0x11b0, 0x11d3, 0x11e7, 0x11eb, 0x11ff, 0x11ff,
-	0x1207, 0x120f, 0x120f, 0x1217, 0x122f, 0x122f, 0x1257, 0x127f, 0x127f, 0x1289, 0x129b, 0x12a9,
-	0x12b3, 0x12d1, 0x12f8, 0x12f8, 0x12f8, 0x1302, 0x130e, 0x1318, 0x1318, 0x132a, 0x132a, 0x133e,
-	0x134e, 0x1358, 0x1374, 0x1374, 0x137c, 0x138c, 0x1398, 0x13a2, 0x13b4, 0x13b4, 0x13b4, 0x13c0,
-	0x13cc, 0x13d8, 0x13fd, 0x141e, 0x141e, 0x143a, 0x144e, 0x1460, 0x146a, 0x1474, 0x147c, 0x1494,
-	0x14a2, 0x14aa, 0x14b8, 0x14d0, 0x14d0, 0x14d8, 0x14d8, 0x14e2, 0x14f4, 0x1509, 0x1509, 0x1509,
-	0x1511, 0x1523, 0x153d, 0x1558, 0x1566, 0x157c, 0x1588, 0x15af, 0x15af, 0x15af, 0x15c3, 0x15cd,
-	0x15db, 0x15e5, 0x15ef, 0x1601, 0x160f, 0x161b, 0x1625, 0x1631, 0x163b, 0x164f, 0x164f, 0x164f,
-	0x164f, 0x165b, 0x165b, 0x1665, 0x166d, 0x166d, 0x1680, 0x1690, 0x169a, 0x16c1, 0x16cb, 0x16d5,
-	0x16d5, 0x16d5, 0x16e7, 0x16ef, 0x16fb, 0x170b, 0x1723, 0x1733, 0x173d, 0x174f, 0x1763, 0x1777,
-	0x1781, 0x1789, 0x17b6, 0x17d6, 0x17ed, 0x17f5, 0x1801, 0x1817, 0x182f, 0x1845, 0x1851, 0x1859,
-	0x1859, 0x1867, 0x1886, 0x188e, 0x18a6, 0x18b4, 0x18b4, 0x18be, 0x18c6, 0x18c6, 0x18c6, 0x18e2,
-	0x18ea, 0x1908, 0x191a, 0x1922, 0x192a, 0x192a, 0x1936, 0x1948, 0x195a, 0x1978, 0x1978, 0x197e,
-	0x1997, 0x199f, 0x19c6, 0x19d6, 0x19e6, 0x19f0, 0x19fa, 0x1a06, 0x1a20, 0x1a34, 0x1a4c, 0x1a5c,
-	0x1a70, 0x1a7a, 0x1a7a, 0x1a7a, 0x1a7a, 0x1a98, 0x1a98, 0x1aae, 0x1aae, 0x1aae, 0x1aba, 0x1aba,
-	0x1ae0, 0x1ae8, 0x1ae8, 0x1afe, 0x1b0c, 0x1b28, 0x1b28, 0x1b28, 0x1b32, 0x1b44, 0x1b44, 0x1b44,
-	0x1b44, 0x1b58, 0x1b64, 0x1b72, 0x1b82, 0x1bb1, 0x1bbf, 0x1bcb, 0x1bd9, 0x1bd9, 0x1bef, 0x1bf9,
-	0x1c0f, 0x1c25, 0x1c25, 0x1c31, 0x1c39, 0x1c39, 0x1c4f, 0x1c6c, 0x1c8a, 0x1c8a, 0x1c9a, 0x1ca8,
-	0x1cc1, 0x1ccd, 0x1ccd, 0x1ccd, 0x1cea, 0x1d03, 0x1d1e, 0x1d3b, 0x1d49, 0x1d5d, 0x1d74, 0x1d7e,
-	0x1d86, 0x1d86, 0x1d92, 0x1d9a, 0x1dac, 0x1dbe, 0x1de5, 0x1e10, 0x1e22, 0x1e22, 0x1e22, 0x1e2c,
-	0x1e34, 0x1e40, 0x1e4a, 0x1e54, 0x1e5c, 0x1e72, 0x1e72, 0x1e88, 0x1e96, 0x1e96, 0x1ea4, 0x1ebb,
-	0x1ecc, 0x1ed8, 0x1ee4, 0x1ee4, 0x1ef2, 0x1ef2, 0x1f00, 0x1f0c, 0x1f1a, 0x1f2c, 0x1f65, 0x1f79,
-	0x1f8d, 0x1f9b, 0x1fb4, 0x1fba, 0x1fba, 0x1fba, 0x1fba, 0x1fba, 0x1fc8, 0x1fc8, 0x1fd4, 0x1fe6,
-	0x1ff2, 0x1ffc, 0x2004, 0x2004, 0x2016, 0x2016, 0x201e, 0x2022, 0x2026, 0x2030, 0x203a, 0x203a,
-	0x204e, 0x2064, 0x207e, 0x207e, 0x2090, 0x20aa, 0x20b4, 0x20e2, 0x20ea, 0x2113, 0x213a, 0x216d,
-	0x219c, 0x21c3, 0x21ec, 0x2219, 0x2250, 0x2279, 0x2279, 0x22a2, 0x22cf, 0x22e5, 0x2316, 0x2347,
-	0x235b, 0x237d, 0x23a4, 0x23cf,
+	0xff3, 0xfff, 0x1009, 0x1013, 0x101d, 0x1037, 0x1037, 0x1041, 0x1067, 0x107c, 0x1093, 0x10a5,
+	0x10ad, 0x10b5, 0x10b5, 0x10d5, 0x10e3, 0x10f3, 0x1113, 0x1113, 0x111f, 0x111f, 0x1127, 0x113f,
+	0x113f, 0x1145, 0x1145, 0x1167, 0x1187, 0x1187, 0x11a8, 0x11cb, 0x11df, 0x11e3, 0x11f7, 0x11f7,
+	0x11ff, 0x1207, 0x1207, 0x120f, 0x1227, 0x1227, 0x124f, 0x1277, 0x1277, 0x1281, 0x1293, 0x12a1,
+	0x12ab, 0x12c9, 0x12f0, 0x12f0, 0x12f0, 0x12fa, 0x1306, 0x1310, 0x1310, 0x1322, 0x1322, 0x1336,
+	0x1346, 0x1350, 0x136c, 0x136c, 0x1374, 0x1384, 0x1390, 0x139a, 0x13ac, 0x13ac, 0x13ac, 0x13b8,
+	0x13c4, 0x13d0, 0x13f5, 0x1416, 0x1416, 0x1432, 0x1446, 0x1458, 0x1462, 0x146c, 0x1474, 0x148c,
+	0x149a, 0x14a2, 0x14b0, 0x14c8, 0x14c8, 0x14d0, 0x14d0, 0x14da, 0x14ec, 0x1501, 0x1501, 0x1501,
+	0x1509, 0x151b, 0x1535, 0x1550, 0x155e, 0x1574, 0x1580, 0x15a7, 0x15a7, 0x15a7, 0x15bb, 0x15c5,
+	0x15d3, 0x15dd, 0x15e7, 0x15f9, 0x1607, 0x1613, 0x161d, 0x1629, 0x1633, 0x1647, 0x1647, 0x1647,
+	0x1647, 0x1653, 0x1653, 0x165d, 0x1665, 0x1665, 0x1678, 0x1688, 0x1692, 0x16b9, 0x16c3, 0x16cd,
+	0x16cd, 0x16cd, 0x16df, 0x16e7, 0x16f3, 0x1703, 0x171b, 0x172b, 0x1735, 0x1747, 0x175b, 0x176f,
+	0x1779, 0x1781, 0x17ae, 0x17ce, 0x17e5, 0x17ed, 0x17f9, 0x180f, 0x1827, 0x183d, 0x1849, 0x1851,
+	0x1851, 0x185f, 0x187e, 0x1886, 0x189e, 0x18ac, 0x18ac, 0x18b6, 0x18be, 0x18be, 0x18be, 0x18da,
+	0x18e2, 0x1900, 0x1912, 0x191a, 0x1922, 0x1922, 0x192e, 0x1940, 0x1952, 0x1970, 0x1970, 0x1976,
+	0x198f, 0x1997, 0x19be, 0x19ce, 0x19de, 0x19e8, 0x19f2, 0x19fe, 0x1a18, 0x1a2c, 0x1a44, 0x1a54,
+	0x1a68, 0x1a72, 0x1a72, 0x1a72, 0x1a72, 0x1a90, 0x1a90, 0x1aa6, 0x1aa6, 0x1aa6, 0x1ab2, 0x1ab2,
+	0x1ad8, 0x1ae0, 0x1ae0, 0x1af6, 0x1b04, 0x1b20, 0x1b20, 0x1b20, 0x1b2a, 0x1b3c, 0x1b3c, 0x1b3c,
+	0x1b3c, 0x1b50, 0x1b5c, 0x1b6a, 0x1b7a, 0x1ba9, 0x1bb7, 0x1bc3, 0x1bd1, 0x1bd1, 0x1be7, 0x1bf1,
+	0x1c07, 0x1c1d, 0x1c1d, 0x1c29, 0x1c31, 0x1c31, 0x1c47, 0x1c64, 0x1c82, 0x1c82, 0x1c92, 0x1ca0,
+	0x1cb9, 0x1cc5, 0x1cc5, 0x1cc5, 0x1ce2, 0x1cfb, 0x1d16, 0x1d33, 0x1d41, 0x1d55, 0x1d6c, 0x1d76,
+	0x1d7e, 0x1d7e, 0x1d8a, 0x1d92, 0x1da4, 0x1db6, 0x1ddd, 0x1e08, 0x1e1a, 0x1e1a, 0x1e1a, 0x1e24,
+	0x1e2c, 0x1e38, 0x1e42, 0x1e4c, 0x1e54, 0x1e6a, 0x1e6a, 0x1e80, 0x1e8e, 0x1e8e, 0x1e9c, 0x1eb3,
+	0x1ec4, 0x1ed0, 0x1edc, 0x1edc, 0x1eea, 0x1eea, 0x1ef8, 0x1f04, 0x1f12, 0x1f24, 0x1f5d, 0x1f71,
+	0x1f85, 0x1f93, 0x1fac, 0x1fb2, 0x1fb2, 0x1fb2, 0x1fb2, 0x1fb2, 0x1fc0, 0x1fc0, 0x1fcc, 0x1fde,
+	0x1fea, 0x1ff4, 0x1ffc, 0x1ffc, 0x1ffc, 0x200e, 0x200e, 0x2016, 0x201a, 0x201e, 0x2028, 0x2032,
+	0x2032, 0x2046, 0x205c, 0x2076, 0x2076, 0x2088, 0x20a2, 0x20ac, 0x20da, 0x20e2, 0x210b, 0x2132,
+	0x2165, 0x2194, 0x21bb, 0x21e4, 0x2211, 0x2248, 0x2271, 0x2271, 0x229a, 0x22c7, 0x22dd, 0x230e,
+	0x233f, 0x2353, 0x2375, 0x239c, 0x23c7,
 }
 
 const siLangStr = "" +
@@ -13760,7 +12991,7 @@
 	"ස්පාඤ්ඤමෙක්සිකානු ස්පාඤ්ඤකැනේඩියානු ප්‍රංශස්විස් ප්‍රංශෆ්ලෙමිශ්බ්‍රසීල පෘතුගීසිය" +
 	"ුරෝපීය පෘතුගීසිසුළුකළ චීනසාම්ප්‍රදායික චීන"
 
-var siLangIdx = []uint16{ // 604 entries
+var siLangIdx = []uint16{ // 605 entries
 	0x0, 0x0, 0x21, 0x21, 0x3f, 0x4e, 0x69, 0x69, 0x78, 0x90, 0x90, 0x90,
 	0xb1, 0xc9, 0xea, 0x10b, 0x10b, 0x11d, 0x132, 0x144, 0x15f, 0x17d, 0x18f, 0x18f,
 	0x18f, 0x1b3, 0x1b3, 0x1bf, 0x1bf, 0x1bf, 0x1d1, 0x1e3, 0x1f5, 0x207, 0x21f, 0x228,
@@ -13808,10 +13039,10 @@
 	0x114c, 0x114c, 0x114c, 0x114c, 0x114c, 0x114c, 0x114c, 0x114c, 0x114c, 0x114c, 0x114c, 0x114c,
 	0x114c, 0x114c, 0x114c, 0x114c, 0x114c, 0x114c, 0x114c, 0x114c, 0x115e, 0x115e, 0x1196, 0x1196,
 	0x1196, 0x1196, 0x11bb, 0x11c4, 0x11c4, 0x11c4, 0x11c4, 0x11c4, 0x11c4, 0x11c4, 0x11d6, 0x11d6,
-	0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11e2, 0x11e2, 0x11e2, 0x11e2, 0x11e2, 0x11e2,
-	0x11e2, 0x11e2, 0x11e2, 0x11e2, 0x11e2, 0x1223, 0x1223, 0x1271, 0x1271, 0x129d, 0x12d4, 0x1306,
-	0x134c, 0x1386, 0x13c3, 0x13fa, 0x1438, 0x1463, 0x1497, 0x14c8, 0x14ed, 0x1505, 0x1533, 0x1561,
-	0x1561, 0x1561, 0x157d, 0x15ae,
+	0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11e2, 0x11e2, 0x11e2, 0x11e2, 0x11e2,
+	0x11e2, 0x11e2, 0x11e2, 0x11e2, 0x11e2, 0x11e2, 0x1223, 0x1223, 0x1271, 0x1271, 0x129d, 0x12d4,
+	0x1306, 0x134c, 0x1386, 0x13c3, 0x13fa, 0x1438, 0x1463, 0x1497, 0x14c8, 0x14ed, 0x1505, 0x1533,
+	0x1561, 0x1561, 0x1561, 0x157d, 0x15ae,
 }
 
 const skLangStr = "" +
@@ -13877,7 +13108,7 @@
 	"ina (švajčiarska)flámčinaportugalčina (brazílska)portugalčina (európska)moldavči" +
 	"nasrbochorvátčinačínština (zjednodušená)čínština (tradičná)"
 
-var skLangIdx = []uint16{ // 604 entries
+var skLangIdx = []uint16{ // 605 entries
 	0x0, 0x9, 0x15, 0x1f, 0x2c, 0x35, 0x3f, 0x4b, 0x54, 0x5e, 0x67, 0x71,
 	0x82, 0x8e, 0x9b, 0xa6, 0xad, 0xb8, 0xc4, 0xce, 0xda, 0xe6, 0xf3, 0xff,
 	0x10a, 0x115, 0x119, 0x122, 0x137, 0x142, 0x14c, 0x155, 0x15d, 0x163, 0x16b, 0x16e,
@@ -13925,10 +13156,10 @@
 	0x11ed, 0x11f3, 0x11f8, 0x1203, 0x1206, 0x1212, 0x1212, 0x121f, 0x122b, 0x122b, 0x1233, 0x123e,
 	0x1247, 0x1247, 0x124d, 0x124d, 0x1260, 0x1260, 0x1267, 0x1271, 0x1278, 0x1283, 0x129c, 0x12a7,
 	0x12b2, 0x12b9, 0x12bf, 0x12c2, 0x12c2, 0x12c2, 0x12c2, 0x12c2, 0x12ca, 0x12ca, 0x12cf, 0x12da,
-	0x12e0, 0x12e5, 0x12ea, 0x12ea, 0x12f5, 0x12f5, 0x12f9, 0x12fc, 0x1304, 0x130b, 0x1310, 0x1310,
-	0x131b, 0x1328, 0x1335, 0x1335, 0x133b, 0x135b, 0x1365, 0x137b, 0x1381, 0x13a2, 0x13b5, 0x13d7,
-	0x13f0, 0x1407, 0x141d, 0x1434, 0x1455, 0x146e, 0x1486, 0x14a0, 0x14be, 0x14c8, 0x14e2, 0x14fb,
-	0x1506, 0x1517, 0x1533, 0x154b,
+	0x12e0, 0x12e5, 0x12ea, 0x12ea, 0x12ea, 0x12f5, 0x12f5, 0x12f9, 0x12fc, 0x1304, 0x130b, 0x1310,
+	0x1310, 0x131b, 0x1328, 0x1335, 0x1335, 0x133b, 0x135b, 0x1365, 0x137b, 0x1381, 0x13a2, 0x13b5,
+	0x13d7, 0x13f0, 0x1407, 0x141d, 0x1434, 0x1455, 0x146e, 0x1486, 0x14a0, 0x14be, 0x14c8, 0x14e2,
+	0x14fb, 0x1506, 0x1517, 0x1533, 0x154b,
 }
 
 const slLangStr = "" +
@@ -13999,7 +13230,7 @@
 	"činaflamščinabrazilska portugalščinaiberska portugalščinamoldavščinasrbohrvaščin" +
 	"apoenostavljena kitajščinatradicionalna kitajščina"
 
-var slLangIdx = []uint16{ // 604 entries
+var slLangIdx = []uint16{ // 605 entries
 	0x0, 0xb, 0x16, 0x24, 0x32, 0x3d, 0x49, 0x56, 0x61, 0x6c, 0x77, 0x83,
 	0x96, 0xa4, 0xb1, 0xbe, 0xcb, 0xd8, 0xe5, 0xf3, 0x100, 0x10c, 0x11a, 0x128,
 	0x135, 0x141, 0x14c, 0x156, 0x172, 0x17e, 0x18d, 0x197, 0x1a1, 0x1ac, 0x1b2, 0x1bd,
@@ -14047,10 +13278,10 @@
 	0x143e, 0x143e, 0x144a, 0x1457, 0x1461, 0x146f, 0x146f, 0x147d, 0x148b, 0x148b, 0x1498, 0x14ae,
 	0x14b7, 0x14b7, 0x14b7, 0x14b7, 0x14c2, 0x14c2, 0x14cf, 0x14dd, 0x14e4, 0x14f0, 0x1508, 0x1515,
 	0x1524, 0x1531, 0x154c, 0x1556, 0x1556, 0x1556, 0x1556, 0x1556, 0x1562, 0x1562, 0x1567, 0x1567,
-	0x1573, 0x157f, 0x158c, 0x158c, 0x1598, 0x1598, 0x15a2, 0x15ad, 0x15b7, 0x15b7, 0x15b7, 0x15b7,
-	0x15c4, 0x15d1, 0x15e5, 0x15e5, 0x15f0, 0x160b, 0x1617, 0x1630, 0x163c, 0x165a, 0x166f, 0x1689,
-	0x16a0, 0x16b5, 0x16c6, 0x16d8, 0x16f6, 0x170a, 0x170a, 0x1720, 0x1738, 0x1743, 0x175c, 0x1773,
-	0x1780, 0x178f, 0x17aa, 0x17c4,
+	0x1573, 0x157f, 0x158c, 0x158c, 0x158c, 0x1598, 0x1598, 0x15a2, 0x15ad, 0x15b7, 0x15b7, 0x15b7,
+	0x15b7, 0x15c4, 0x15d1, 0x15e5, 0x15e5, 0x15f0, 0x160b, 0x1617, 0x1630, 0x163c, 0x165a, 0x166f,
+	0x1689, 0x16a0, 0x16b5, 0x16c6, 0x16d8, 0x16f6, 0x170a, 0x170a, 0x1720, 0x1738, 0x1743, 0x175c,
+	0x1773, 0x1780, 0x178f, 0x17aa, 0x17c4,
 }
 
 const sqLangStr = "" +
@@ -14085,7 +13316,7 @@
 	"flamandeportugalishte brazilianeportugalishte evropianemoldavishteSerbo-Kroatish" +
 	"tkinezishte e thjeshtuarkinezishte tradicionale"
 
-var sqLangIdx = []uint16{ // 604 entries
+var sqLangIdx = []uint16{ // 605 entries
 	0x0, 0x0, 0x9, 0x9, 0x14, 0x1c, 0x23, 0x23, 0x2b, 0x35, 0x35, 0x35,
 	0x3a, 0x45, 0x52, 0x5d, 0x5d, 0x64, 0x6e, 0x77, 0x7e, 0x8a, 0x95, 0x95,
 	0x95, 0xa1, 0xa1, 0xa9, 0xa9, 0xa9, 0xb2, 0xb9, 0xc4, 0xc4, 0xca, 0xd0,
@@ -14133,10 +13364,10 @@
 	0x73b, 0x73b, 0x73b, 0x73b, 0x73b, 0x73b, 0x73b, 0x73b, 0x73b, 0x73b, 0x73b, 0x73b,
 	0x73b, 0x73b, 0x73b, 0x73b, 0x73b, 0x73b, 0x73b, 0x73b, 0x745, 0x745, 0x762, 0x762,
 	0x762, 0x762, 0x76c, 0x772, 0x772, 0x772, 0x772, 0x772, 0x772, 0x772, 0x77a, 0x77a,
-	0x77a, 0x77a, 0x77a, 0x77a, 0x77a, 0x77a, 0x781, 0x781, 0x781, 0x781, 0x781, 0x781,
-	0x781, 0x781, 0x781, 0x781, 0x781, 0x79e, 0x79e, 0x7bb, 0x7bb, 0x7d6, 0x7ec, 0x816,
-	0x82b, 0x83d, 0x850, 0x863, 0x87e, 0x892, 0x8a6, 0x8bb, 0x8d1, 0x8d9, 0x8f1, 0x908,
-	0x913, 0x922, 0x939, 0x950,
+	0x77a, 0x77a, 0x77a, 0x77a, 0x77a, 0x77a, 0x77a, 0x781, 0x781, 0x781, 0x781, 0x781,
+	0x781, 0x781, 0x781, 0x781, 0x781, 0x781, 0x79e, 0x79e, 0x7bb, 0x7bb, 0x7d6, 0x7ec,
+	0x816, 0x82b, 0x83d, 0x850, 0x863, 0x87e, 0x892, 0x8a6, 0x8bb, 0x8d1, 0x8d9, 0x8f1,
+	0x908, 0x913, 0x922, 0x939, 0x950,
 }
 
 const srLangStr = "" +
@@ -14188,7 +13419,7 @@
 	"гвистичког садржајаЗазамодеран стандардни арапскишвајцарски високи немачкифламан" +
 	"скиБразилски португалскиИберијски португалскимолдавскиСрпскохрватски"
 
-var srLangIdx = []uint16{ // 602 entries
+var srLangIdx = []uint16{ // 603 entries
 	0x0, 0xe, 0x1c, 0x30, 0x40, 0x48, 0x58, 0x72, 0x80, 0x8e, 0x9c, 0xa8,
 	0xc2, 0xd4, 0xe6, 0xf6, 0x104, 0x112, 0x124, 0x138, 0x14a, 0x15a, 0x16e, 0x17e,
 	0x18a, 0x1a0, 0x1a6, 0x1b0, 0x1cc, 0x1da, 0x1e6, 0x1f2, 0x200, 0x214, 0x21e, 0x224,
@@ -14236,10 +13467,114 @@
 	0x19bf, 0x19cb, 0x19d5, 0x19df, 0x19e5, 0x19f3, 0x19f3, 0x1a07, 0x1a15, 0x1a15, 0x1a23, 0x1a36,
 	0x1a47, 0x1a47, 0x1a47, 0x1a47, 0x1a57, 0x1a57, 0x1a65, 0x1a71, 0x1a7f, 0x1a93, 0x1ac4, 0x1ad0,
 	0x1ae2, 0x1af0, 0x1af6, 0x1afc, 0x1afc, 0x1afc, 0x1afc, 0x1afc, 0x1b08, 0x1b08, 0x1b12, 0x1b12,
-	0x1b1e, 0x1b28, 0x1b30, 0x1b30, 0x1b3c, 0x1b3c, 0x1b44, 0x1b4a, 0x1b58, 0x1b58, 0x1b58, 0x1b58,
-	0x1b6a, 0x1b7c, 0x1b90, 0x1b90, 0x1b9c, 0x1bd6, 0x1bde, 0x1c10, 0x1c18, 0x1c4a, 0x1c4a, 0x1c7a,
-	0x1c7a, 0x1c7a, 0x1c7a, 0x1c7a, 0x1c7a, 0x1c7a, 0x1c7a, 0x1c7a, 0x1c7a, 0x1c8c, 0x1cb5, 0x1cde,
-	0x1cf0, 0x1d0c,
+	0x1b1e, 0x1b28, 0x1b30, 0x1b30, 0x1b30, 0x1b3c, 0x1b3c, 0x1b44, 0x1b4a, 0x1b58, 0x1b58, 0x1b58,
+	0x1b58, 0x1b6a, 0x1b7c, 0x1b90, 0x1b90, 0x1b9c, 0x1bd6, 0x1bde, 0x1c10, 0x1c18, 0x1c4a, 0x1c4a,
+	0x1c7a, 0x1c7a, 0x1c7a, 0x1c7a, 0x1c7a, 0x1c7a, 0x1c7a, 0x1c7a, 0x1c7a, 0x1c7a, 0x1c8c, 0x1cb5,
+	0x1cde, 0x1cf0, 0x1d0c,
+}
+
+const srLatnLangStr = "" +
+	"AfarskiabhaskiAvestanskiafrikansakanamharskiAragonežanskiarapskiasamskiAvarskiAj" +
+	"maraazerbejdžanskibaškirskibeloruskibugarskiBislamabambarabengalskitibetanskibre" +
+	"tonskibosanskikatalonskiČečenskiČamorokorzikanskiKričeškiStaroslovenskiČuvaškive" +
+	"lškidanskinemačkiDivehijskidžongaevegrčkiengleskiesperantošpanskiestonskibaskijs" +
+	"kipersijskiFulahfinskifidžijskifarskifrancuskizapadni frizijskiirskiŠkotski Gals" +
+	"kigalicijskigvaranigudžaratiMankshausahebrejskihindiHiri MotuhrvatskiHaitskimađa" +
+	"rskijermenskiHereroInterlingvaindonežanskiMeđujezičkiigbosečuan jiUnupiakIdoisla" +
+	"ndskiitalijanskiinuktitutjapanskijavanskigruzijskiKongokikujuKuanjamakazaškikala" +
+	"lisutkmerskikanadakorejskiKanurikašmirskikurdskiKomikornvolskikirgiskilatinskilu" +
+	"ksemburškigandaLimburgišlingalalaoškilitvanskiluba-katangaletonskimalgaškiMaršal" +
+	"skimaorskimakedonskimalajalammongolskimaratimalajskimalteškiburmanskiNaurusevern" +
+	"i ndebelenepalskiNdongaholandskinorveški ninorsknorveški bokmalJužni ndebeleNava" +
+	"hoNjanjaProvansalskiOjibvaoromoorijaOsetskipandžabiPalipoljskipaštunskiportugals" +
+	"kikečuareto-romanskirundirumunskiruskikinjaruandasanskritSardinjaskisindiseverni" +
+	" samisangosinhalskislovačkislovenačkiSamoanskišonasomalskialbanskisrpskiSvatiSes" +
+	"otosudanskišvedskisvahilitamilskiteluguTađiktajlandskitigrinjaturkmenskiTsvanato" +
+	"ngaturskiTsongatatarskiTahićanskiujgurskiukrajinskiurduuzbečkiVendavijetnamskiVo" +
+	"lapukValunvolofkosaJidišjorubaŽuangkineskizuluAčineskiAkoliAdangmejskiAdigejskiA" +
+	"frihiliagemAinuAkadijskiAljutJužni altaiStaroengleskiAngikaArmajskimapučeArapaho" +
+	"AravakasuAsturijskiAvadhiBalučiBalinezijskiBasaBejabembabenaBojpuriBikolBiniSisi" +
+	"kaBrajbodoBuriatBuginežanskiBlinKadoKaripskiAtsamskiCebuanočigaČibčaČagataiČukes" +
+	"kiMariČinukskiČoktavskiČipvijanskičerokiČejenskisorani kurdskiKoptskiKrimeanski " +
+	"turskiKašubijanskiDakotaDargvataitaDelaverSlavskiDogribDinkazarmaDogridonji luži" +
+	"čkosrpskidualaSrednji holandskidžola fonjiĐulaembuEfikskiStaroegipatskiEkajukEla" +
+	"mitskiSrednji engleskiEvondoFangfilipinskiFonSrednji francuskiStarofrancuskiSeve" +
+	"rno-frizijskiIstočni frizijskiFriulijskiGagagauzGajoGbajaDžizGilbertškiSrednji v" +
+	"isoki nemačkiStaronemačkiGondiGorontaloGotskiGreboStarogrčkiŠvajcarski nemačkigu" +
+	"siGvič’inHaidahavajskiHiligajnonHititeHmonggornji lužičkosrpskiHupaIbanIlokoIngv" +
+	"iškiLojbanngombamačameJudeo-persijskiJudeo-arapskiKara-kalpaškikabileKačinĐukamb" +
+	"aKaviKabardijskiTjapmakondezelenortski kreolskiKoroKasiKotaneškikojra čiinikalen" +
+	"džinKimbundukomi-permskikonkaniKosreanskiKpeleKaračaj-balkarKarelijskiKurukhšamb" +
+	"alabafijaKumikKutenaiLadinolangiLandaLambaLezgianlakotaMongoLoziLuba-luluaLuisen" +
+	"oLundaluoLušailujiaMadureškiMagahiMaitiliMakasarMandingomasaiMokšaMandarMendemer" +
+	"umorisjenSrednji irskimakuva-meetometaMikmakMinangkabauMančuManipurimohokMosimun" +
+	"dangViše jezikaKriškiMirandeškiMarvariErzijaNeapolitanskinamaNiski nemačkiNevari" +
+	"NiasNiueankvasioNogaiStari norskiN’koSeverni sotonuerKlasični nevariNjamvezinjan" +
+	"koleNjoroNzimaOsageOtomanski turskiPangasinskiPahlaviPampangaPapiamentoPalauansk" +
+	"iStaropersijskiFeničanskiPonpejskiStaroprovansalskik’ičeRađastaniRapanuiRarotong" +
+	"anromboRomaniAromanijskiruaSandaveJakutSamaritanski aramejskisamburuSasakSantali" +
+	"sanguSicilijanskiŠkotskisenaSelkapkojraboro seniStaroirskitašelhitŠanSidamojužni" +
+	" samilule samiinari samiskolt samiSoninkeSodžijenskiSrananski tongoSererSukumaSu" +
+	"suSumerskiKomorskikongo svahiliKlasični sirijskiSirijskiTimnetesoTerenoTetumTigr" +
+	"eTivTokelauKlingonskiTlingitTamašekNjasa tongaTok PisinTsimšianTumbukaTuvalutasa" +
+	"vakTuvinijskicentralnoatlaski tamazigtUdmurtUgaritskiUmbunduRutvaiVotskivundžoVa" +
+	"lamoVarajVašoKalmiksogaJaoJapeškiKantonskiZapotečkiBlisimboliZenagastandardni ma" +
+	"rokanski tamazigtZunibez lingvističkog sadržajaZazamoderan standardni arapskišva" +
+	"jcarski visoki nemačkiflamanskiBrazilski portugalskiIberijski portugalskimoldavs" +
+	"kiSrpskohrvatski"
+
+var srLatnLangIdx = []uint16{ // 603 entries
+	0x0, 0x7, 0xe, 0x18, 0x20, 0x24, 0x2c, 0x3a, 0x41, 0x48, 0x4f, 0x55,
+	0x64, 0x6e, 0x77, 0x7f, 0x86, 0x8d, 0x96, 0xa0, 0xa9, 0xb1, 0xbb, 0xc5,
+	0xcc, 0xd7, 0xda, 0xe1, 0xef, 0xf8, 0xff, 0x105, 0x10d, 0x117, 0x11e, 0x121,
+	0x127, 0x12f, 0x138, 0x140, 0x148, 0x151, 0x15a, 0x15f, 0x165, 0x16f, 0x175, 0x17e,
+	0x18f, 0x194, 0x1a3, 0x1ad, 0x1b4, 0x1be, 0x1c3, 0x1c8, 0x1d1, 0x1d6, 0x1df, 0x1e7,
+	0x1ee, 0x1f7, 0x200, 0x206, 0x211, 0x21e, 0x22b, 0x22f, 0x239, 0x240, 0x243, 0x24c,
+	0x257, 0x260, 0x268, 0x270, 0x279, 0x27e, 0x284, 0x28c, 0x294, 0x29d, 0x2a4, 0x2aa,
+	0x2b2, 0x2b8, 0x2c2, 0x2c9, 0x2cd, 0x2d7, 0x2df, 0x2e7, 0x2f4, 0x2f9, 0x303, 0x30a,
+	0x311, 0x31a, 0x326, 0x32e, 0x337, 0x341, 0x348, 0x352, 0x35b, 0x364, 0x36a, 0x372,
+	0x37b, 0x384, 0x389, 0x398, 0x3a0, 0x3a6, 0x3af, 0x3c0, 0x3d0, 0x3de, 0x3e4, 0x3ea,
+	0x3f6, 0x3fc, 0x401, 0x406, 0x40d, 0x416, 0x41a, 0x421, 0x42b, 0x436, 0x43c, 0x449,
+	0x44e, 0x456, 0x45b, 0x466, 0x46e, 0x479, 0x47e, 0x48a, 0x48f, 0x498, 0x4a1, 0x4ac,
+	0x4b5, 0x4ba, 0x4c2, 0x4ca, 0x4d0, 0x4d5, 0x4db, 0x4e3, 0x4eb, 0x4f2, 0x4fa, 0x500,
+	0x506, 0x510, 0x518, 0x522, 0x528, 0x52d, 0x533, 0x539, 0x541, 0x54c, 0x554, 0x55e,
+	0x562, 0x56a, 0x56f, 0x57a, 0x581, 0x586, 0x58b, 0x58f, 0x595, 0x59b, 0x5a1, 0x5a8,
+	0x5ac, 0x5b5, 0x5ba, 0x5c5, 0x5ce, 0x5ce, 0x5d6, 0x5da, 0x5de, 0x5e7, 0x5e7, 0x5ec,
+	0x5ec, 0x5f8, 0x605, 0x60b, 0x613, 0x61a, 0x61a, 0x621, 0x621, 0x627, 0x627, 0x627,
+	0x62a, 0x62a, 0x634, 0x634, 0x63a, 0x63a, 0x641, 0x64d, 0x64d, 0x651, 0x651, 0x651,
+	0x651, 0x655, 0x65a, 0x65a, 0x65e, 0x65e, 0x65e, 0x665, 0x66a, 0x66e, 0x66e, 0x66e,
+	0x674, 0x674, 0x674, 0x678, 0x678, 0x67c, 0x67c, 0x682, 0x68f, 0x68f, 0x693, 0x693,
+	0x697, 0x69f, 0x69f, 0x6a7, 0x6ae, 0x6b3, 0x6ba, 0x6c2, 0x6ca, 0x6ce, 0x6d7, 0x6e1,
+	0x6ed, 0x6f4, 0x6fd, 0x70b, 0x712, 0x712, 0x723, 0x730, 0x736, 0x73c, 0x741, 0x748,
+	0x74f, 0x755, 0x75a, 0x75f, 0x764, 0x779, 0x779, 0x77e, 0x78f, 0x79b, 0x7a0, 0x7a0,
+	0x7a4, 0x7ab, 0x7ab, 0x7b9, 0x7bf, 0x7c8, 0x7d8, 0x7d8, 0x7de, 0x7de, 0x7e2, 0x7ec,
+	0x7ec, 0x7ef, 0x7ef, 0x800, 0x80e, 0x80e, 0x81f, 0x831, 0x83b, 0x83d, 0x843, 0x843,
+	0x847, 0x84c, 0x84c, 0x851, 0x85c, 0x85c, 0x873, 0x880, 0x880, 0x885, 0x88e, 0x894,
+	0x899, 0x8a4, 0x8b8, 0x8b8, 0x8b8, 0x8bc, 0x8c6, 0x8cb, 0x8cb, 0x8d3, 0x8d3, 0x8dd,
+	0x8e3, 0x8e8, 0x8fe, 0x8fe, 0x902, 0x906, 0x906, 0x90b, 0x914, 0x914, 0x914, 0x91a,
+	0x920, 0x927, 0x936, 0x943, 0x943, 0x951, 0x957, 0x95d, 0x960, 0x965, 0x969, 0x974,
+	0x974, 0x978, 0x97f, 0x993, 0x993, 0x997, 0x997, 0x99b, 0x9a5, 0x9b1, 0x9b1, 0x9b1,
+	0x9b1, 0x9bb, 0x9c3, 0x9cf, 0x9d6, 0x9e0, 0x9e5, 0x9f4, 0x9f4, 0x9f4, 0x9fe, 0xa04,
+	0xa0c, 0xa12, 0xa12, 0xa17, 0xa1e, 0xa24, 0xa29, 0xa2e, 0xa33, 0xa3a, 0xa3a, 0xa3a,
+	0xa3a, 0xa40, 0xa40, 0xa45, 0xa49, 0xa49, 0xa53, 0xa5a, 0xa5f, 0xa62, 0xa68, 0xa6d,
+	0xa6d, 0xa6d, 0xa77, 0xa77, 0xa7d, 0xa84, 0xa8b, 0xa93, 0xa98, 0xa98, 0xa9e, 0xaa4,
+	0xaa9, 0xaad, 0xab5, 0xac2, 0xace, 0xad2, 0xad8, 0xae3, 0xae9, 0xaf1, 0xaf6, 0xafa,
+	0xafa, 0xb01, 0xb0d, 0xb14, 0xb1f, 0xb26, 0xb26, 0xb26, 0xb2c, 0xb2c, 0xb2c, 0xb39,
+	0xb3d, 0xb4b, 0xb51, 0xb55, 0xb5b, 0xb5b, 0xb61, 0xb61, 0xb66, 0xb72, 0xb72, 0xb78,
+	0xb84, 0xb88, 0xb98, 0xba0, 0xba8, 0xbad, 0xbb2, 0xbb7, 0xbc7, 0xbd2, 0xbd9, 0xbe1,
+	0xbeb, 0xbf5, 0xbf5, 0xbf5, 0xbf5, 0xc03, 0xc03, 0xc0e, 0xc0e, 0xc0e, 0xc17, 0xc17,
+	0xc28, 0xc30, 0xc30, 0xc3a, 0xc41, 0xc4b, 0xc4b, 0xc4b, 0xc50, 0xc56, 0xc56, 0xc56,
+	0xc56, 0xc61, 0xc64, 0xc6b, 0xc70, 0xc86, 0xc8d, 0xc92, 0xc99, 0xc99, 0xc99, 0xc9e,
+	0xcaa, 0xcb2, 0xcb2, 0xcb2, 0xcb6, 0xcb6, 0xcbc, 0xcca, 0xcd4, 0xcd4, 0xcdd, 0xce1,
+	0xce1, 0xce7, 0xce7, 0xce7, 0xcf2, 0xcfb, 0xd05, 0xd0f, 0xd16, 0xd22, 0xd31, 0xd36,
+	0xd36, 0xd36, 0xd3c, 0xd40, 0xd48, 0xd50, 0xd5d, 0xd6f, 0xd77, 0xd77, 0xd77, 0xd7c,
+	0xd80, 0xd86, 0xd8b, 0xd90, 0xd93, 0xd9a, 0xd9a, 0xda4, 0xdab, 0xdab, 0xdb3, 0xdbe,
+	0xdc7, 0xdc7, 0xdc7, 0xdc7, 0xdd0, 0xdd0, 0xdd7, 0xddd, 0xde4, 0xdee, 0xe07, 0xe0d,
+	0xe16, 0xe1d, 0xe20, 0xe23, 0xe23, 0xe23, 0xe23, 0xe23, 0xe29, 0xe29, 0xe30, 0xe30,
+	0xe36, 0xe3b, 0xe40, 0xe40, 0xe40, 0xe46, 0xe46, 0xe4a, 0xe4d, 0xe55, 0xe55, 0xe55,
+	0xe55, 0xe5e, 0xe68, 0xe72, 0xe72, 0xe78, 0xe96, 0xe9a, 0xeb6, 0xeba, 0xed4, 0xed4,
+	0xeef, 0xeef, 0xeef, 0xeef, 0xeef, 0xeef, 0xeef, 0xeef, 0xeef, 0xeef, 0xef8, 0xf0d,
+	0xf22, 0xf2b, 0xf39,
 }
 
 const svLangStr = "" +
@@ -14248,118 +13583,118 @@
 	"anskabretonskabosniskakatalanskatjetjenskachamorrokorsikanskacreetjeckiskakyrksl" +
 	"aviskatjuvasjiskawalesiskadanskatyskadivehibhutanesiskaewegrekiskaengelskaespera" +
 	"ntospanskaestniskabaskiskapersiskafulanifinskafijianskafäröiskafranskavästfrisis" +
-	"kairiskahöglandsskotskagaliciskaguaranígujaratimanxhausahebreiskahindihirimotukr" +
-	"oatiskahaitiskaungerskaarmeniskahererointerlinguaindonesiskainterlingueigboszezu" +
-	"an iinupiakidoisländskaitalienskainuktitutjapanskajavanesiskageorgiskakikongokik" +
-	"uyukuanyamakazakiskagrönländskakambodjanskakannadakoreanskakanurikashmiriskakurd" +
-	"iskakomekorniskakirgisiskalatinluxemburgiskalugandalimburgiskalingalalaotiskalit" +
-	"auiskaluba-katangalettiskamalagassiskamarshalliskamaorimakedonskamalayalammongol" +
-	"iskamarathimalajiskamaltesiskaburmesiskanaurunordndebelenepalesiskandonganederlä" +
-	"ndskanynorskanorskt bokmålsydndebelenavahonyanjaoccitanskaodjibwaoromooriyaosset" +
-	"iskapunjabipalipolskaafghanskaportugisiskaquechuarätoromanskarundirumänskaryskak" +
-	"injarwandasanskritsardiskasindhinordsamiskasangosingalesiskaslovakiskaslovenskas" +
-	"amoanskashonasomaliskaalbanskaserbiskaswatisydsothosundanesiskasvenskaswahilitam" +
-	"iltelugiskatadzjikiskathailändskatigrinjaturkmeniskatswanatonganskaturkiskatsong" +
-	"atatariskatahitiskauiguriskaukrainskaurduuzbekiskavendavietnamesiskavolapükvallo" +
-	"nskawolofxhosajiddischyorubazhuangkinesiskazuluacehnesiskaacholiadangmeadygeiska" +
-	"tunisisk arabiskaafrihiliaghemainuakkadiskaaleutiskagegiskasydaltaiskafornengels" +
-	"kaangikaarameiskaaraukanskaaraoniskaarapahoalgerisk arabiskaarawakiskamarockansk" +
-	" arabiskaegyptisk arabiskaasuamerikanskt teckenspråkasturiskakotavaawadhisydazer" +
-	"badjanskabaluchiskabalinesiskabayerskabasabamunskaghomalabejabembabetawiskabenab" +
-	"afutbagadabhojpuribikolbinibanjariskabamekonsiksikabishnupriyabakhtiaribrajbrahu" +
-	"iskabodobakossiburjätiskabuginesiskabouloublinbagangtecaddokaribiskacayugaatsamc" +
-	"ebuanochigachibchachagataichuukesiskamariskachinookchoctawchipewyancherokesiskac" +
-	"heyennesoranisk kurdiskakoptiskakrimtatariskakasjubiskadakotadarginskataitadelaw" +
-	"areslavejdogribdinkazarmadogrilågsorbiskadualamedelnederländskajola-fonyidyulada" +
-	"zagaembuefikemiliskafornegyptiskaekajukelamitiskamedelengelskaewondofangfilippin" +
-	"skameänkielifonspråketcajun-franskamedelfranskafornfranskafrankoprovensalskanord" +
-	"frisiskaöstfrisiskafriulianskagãgagauziskagangayogbayazoroastrisk darietiopiskag" +
-	"ilbertiskagilakimedelhögtyskafornhögtyskaGoa-konkanigondigorontalogotiskagrebofo" +
-	"rngrekiskaschweizertyskagusiigwichinhaidahakkahawaiiskaFiji-hindihiligaynonhetti" +
-	"tiskahmongspråkhögsorbiskaxianghupaibanskaibibioilokoingusjiskaingriskajamaikans" +
-	"k engelsk kreollojbanngombakimashamijudisk persiskajudisk arabiskajylländskakara" +
-	"kalpakiskakabyliskakachinjjukambakawikabardinskakanembutyapmakondekapverdiskakor" +
-	"okhasikhotanesiskaTimbuktu-songhoykhowarmkakokalenjinkimbundukomi-permjakiskakon" +
-	"kanikosreanskakpellekarachay-balkarkarelskakurukhkisambaabafiakölniskakumykiskak" +
-	"utenajladinolangilahndalambalezghienliguriskalivoniskalakotalombardiskamongolozi" +
-	"lettgalliskaluba-lulualuiseñolundaluolushailuhyamaduresiskamafamagahimaithilimak" +
-	"asarmandemassajiskamabamoksjamandarmendemerumauritansk kreolmedeliriskamakhuwa-m" +
-	"eettometa’mi’kmaqminangkabaumanchuriskamanipurimohawkmossivästmariskamundangfler" +
-	"a språkmuskogeemirandesiskamarwarimyeneerjyamazanderanimin nannapolitanskanamalå" +
-	"gtyskanewariskaniasniueanskakwasiobamileké-ngiemboonnogaifornnordiskan-kånordsot" +
-	"honuerklassisk newariskanyamwezinyankolenyoronzimaosageottomanskapangasinanmedel" +
-	"persiskapampangapapiamentopalaupikardiskaPennsylvaniatyskamennonitisk lågtyskafo" +
-	"rnpersiskaPfalz-tyskafeniciskapiemontesiskapontiskaponapefornpreussiskafornprove" +
-	"nsalskakʼicheʼChimborazo-höglandskichwarajasthanirapanuirarotonganskaromagnolrif" +
-	"fianskaromboromanirotumänskarusynrovianskaarumänskarwasandawejakutiskasamaritans" +
-	"kasamburusasaksantalisaurashtrangambaysangusicilianskaskotskasassaresisk sardisk" +
-	"asenecasenaselkupGao-songhayforniriskasamogitiskatachelhitshanChad-arabiskasidam" +
-	"olågsilesiskasydsamiskalulesamiskaenaresamiskaskoltsamiskasoninkesogdiskasranan " +
-	"tongoserersahosaterfrisiskasukumasususumeriskashimaoréKongo-swahiliklassisk syri" +
-	"skasyriskasilesiskatulutemnetesoterenotetumtigrétivitokelauiskaklingonskatlingit" +
-	"talyshtamasheknyasatonganskatok pisintarokotsakodiskatsimshiantumbukatuvaluanska" +
-	"tasawaqtuviniskacentralmarockansk tamazightudmurtiskaugaritiskaumbundurotvajvene" +
-	"tianskavepsvästflamländskaMain-frankiskavotiskavõruvunjowalsertyskawalamowaraywa" +
-	"showukalmuckiskalusogakiyaojapetiskayangbenbamileké-jembakantonesiskazapotekblis" +
-	"symbolerzeeländskazenagamarockansk standard-tamazightzuniinget språkligt innehål" +
-	"lzazaiskamodern standardarabiskaösterrikisk tyskaschweizisk högtyskaaustralisk e" +
-	"ngelskakanadensisk engelskabrittisk engelskaamerikansk engelskalatinamerikansk s" +
-	"panskaeuropeisk spanskamexikansk spanskakanadensisk franskaschweizisk franskafla" +
-	"mländskabrasiliansk portugisiskaeuropeisk portugisiskamoldaviskaserbokroatiskafö" +
-	"renklad kinesiskatraditionell kinesiska"
+	"kairiskaskotsk gäliskagaliciskaguaranígujaratimanxhausahebreiskahindihirimotukro" +
+	"atiskahaitiskaungerskaarmeniskahererointerlinguaindonesiskainterlingueigboszezua" +
+	"n iinupiakidoisländskaitalienskainuktitutjapanskajavanesiskageorgiskakikongokiku" +
+	"yukuanyamakazakiskagrönländskakambodjanskakannadakoreanskakanurikashmiriskakurdi" +
+	"skakomekorniskakirgisiskalatinluxemburgiskalugandalimburgiskalingalalaotiskalita" +
+	"uiskaluba-katangalettiskamalagassiskamarshalliskamaorimakedonskamalayalammongoli" +
+	"skamarathimalajiskamaltesiskaburmesiskanaurunordndebelenepalesiskandonganederlän" +
+	"dskanynorskanorskt bokmålsydndebelenavahonyanjaoccitanskaodjibwaoromooriyaosseti" +
+	"skapunjabipalipolskaafghanskaportugisiskaquechuarätoromanskarundirumänskaryskaki" +
+	"njarwandasanskritsardiskasindhinordsamiskasangosingalesiskaslovakiskaslovenskasa" +
+	"moanskashonasomaliskaalbanskaserbiskaswatisydsothosundanesiskasvenskaswahilitami" +
+	"ltelugiskatadzjikiskathailändskatigrinjaturkmeniskatswanatonganskaturkiskatsonga" +
+	"tatariskatahitiskauiguriskaukrainskaurduuzbekiskavendavietnamesiskavolapükvallon" +
+	"skawolofxhosajiddischyorubazhuangkinesiskazuluacehnesiskaacholiadangmeadygeiskat" +
+	"unisisk arabiskaafrihiliaghemainuakkadiskaaleutiskagegiskasydaltaiskafornengelsk" +
+	"aangikaarameiskaaraukanskaaraoniskaarapahoalgerisk arabiskaarawakiskamarockansk " +
+	"arabiskaegyptisk arabiskaasuamerikanskt teckenspråkasturiskakotavaawadhisydazerb" +
+	"adjanskabaluchiskabalinesiskabayerskabasabamunskaghomalabejabembabetawiskabenaba" +
+	"futbagadabhojpuribikolbinibanjariskabamekonsiksikabishnupriyabakhtiaribrajbrahui" +
+	"skabodobakossiburjätiskabuginesiskabouloublinbagangtecaddokaribiskacayugaatsamce" +
+	"buanochigachibchachagataichuukesiskamariskachinookchoctawchipewyancherokesiskach" +
+	"eyennesoranisk kurdiskakoptiskakrimtatariskakasjubiskadakotadarginskataitadelawa" +
+	"reslavejdogribdinkazarmadogrilågsorbiskadualamedelnederländskajola-fonyidyuladaz" +
+	"agaembuefikemiliskafornegyptiskaekajukelamitiskamedelengelskaewondofangfilippins" +
+	"kameänkielifonspråketcajun-franskamedelfranskafornfranskafrankoprovensalskanordf" +
+	"risiskaöstfrisiskafriulianskagãgagauziskagangayogbayazoroastrisk darietiopiskagi" +
+	"lbertiskagilakimedelhögtyskafornhögtyskaGoa-konkanigondigorontalogotiskagrebofor" +
+	"ngrekiskaschweizertyskagusiigwichinhaidahakkahawaiiskaFiji-hindihiligaynonhettit" +
+	"iskahmongspråkhögsorbiskaxianghupaibanskaibibioilokoingusjiskaingriskajamaikansk" +
+	" engelsk kreollojbanngombakimashamijudisk persiskajudisk arabiskajylländskakarak" +
+	"alpakiskakabyliskakachinjjukambakawikabardinskakanembutyapmakondekapverdiskakoro" +
+	"khasikhotanesiskaTimbuktu-songhoykhowarmkakokalenjinkimbundukomi-permjakiskakonk" +
+	"anikosreanskakpellekarachay-balkarkarelskakurukhkisambaabafiakölniskakumykiskaku" +
+	"tenajladinolangilahndalambalezghienliguriskalivoniskalakotalombardiskamongolozil" +
+	"ettgalliskaluba-lulualuiseñolundaluolushailuhyamaduresiskamafamagahimaithilimaka" +
+	"sarmandemassajiskamabamoksjamandarmendemerumauritansk kreolmedeliriskamakhuwa-me" +
+	"ettometa’mi’kmaqminangkabaumanchuriskamanipurimohawkmossivästmariskamundangflera" +
+	" språkmuskogeemirandesiskamarwarimyeneerjyamazanderanimin nannapolitanskanamalåg" +
+	"tyskanewariskaniasniueanskakwasiobamileké-ngiemboonnogaifornnordiskan-kånordsoth" +
+	"onuerklassisk newariskanyamwezinyankolenyoronzimaosageottomanskapangasinanmedelp" +
+	"ersiskapampangapapiamentopalaupikardiskaPennsylvaniatyskamennonitisk lågtyskafor" +
+	"npersiskaPfalz-tyskafeniciskapiemontesiskapontiskaponapefornpreussiskafornproven" +
+	"salskakʼicheʼChimborazo-höglandskichwarajasthanirapanuirarotonganskaromagnolriff" +
+	"ianskaromboromanirotumänskarusynrovianskaarumänskarwasandawejakutiskasamaritansk" +
+	"asamburusasaksantalisaurashtrangambaysangusicilianskaskotskasassaresisk sardiska" +
+	"senecasenaselkupGao-songhayforniriskasamogitiskatachelhitshanChad-arabiskasidamo" +
+	"lågsilesiskasydsamiskalulesamiskaenaresamiskaskoltsamiskasoninkesogdiskasranan t" +
+	"ongoserersahosaterfrisiskasukumasususumeriskashimaoréKongo-swahiliklassisk syris" +
+	"kasyriskasilesiskatulutemnetesoterenotetumtigrétivitokelauiskaklingonskatlingitt" +
+	"alyshtamasheknyasatonganskatok pisintarokotsakodiskatsimshiantumbukatuvaluanskat" +
+	"asawaqtuviniskacentralmarockansk tamazightudmurtiskaugaritiskaumbundurotvajvenet" +
+	"ianskavepsvästflamländskaMain-frankiskavotiskavõruvunjowalsertyskawalamowaraywas" +
+	"howukalmuckiskalusogakiyaojapetiskayangbenbamileké-jembakantonesiskazapotekbliss" +
+	"ymbolerzeeländskazenagamarockansk standard-tamazightzuniinget språkligt innehåll" +
+	"zazaiskamodern standardarabiskaösterrikisk tyskaschweizisk högtyskaaustralisk en" +
+	"gelskakanadensisk engelskabrittisk engelskaamerikansk engelskalatinamerikansk sp" +
+	"anskaeuropeisk spanskamexikansk spanskakanadensisk franskaschweizisk franskaflam" +
+	"ländskabrasiliansk portugisiskaeuropeisk portugisiskamoldaviskaserbokroatiskaför" +
+	"enklad kinesiskatraditionell kinesiska"
 
-var svLangIdx = []uint16{ // 604 entries
+var svLangIdx = []uint16{ // 605 entries
 	0x0, 0x4, 0xe, 0x17, 0x20, 0x24, 0x2d, 0x39, 0x41, 0x4c, 0x54, 0x5a,
 	0x69, 0x74, 0x7c, 0x86, 0x8d, 0x94, 0x9b, 0xa5, 0xae, 0xb6, 0xc0, 0xca,
 	0xd2, 0xdd, 0xe1, 0xea, 0xf6, 0x101, 0x10a, 0x110, 0x115, 0x11b, 0x127, 0x12a,
 	0x132, 0x13a, 0x143, 0x14a, 0x152, 0x15a, 0x162, 0x168, 0x16e, 0x177, 0x181, 0x188,
-	0x195, 0x19b, 0x1ab, 0x1b4, 0x1bc, 0x1c4, 0x1c8, 0x1cd, 0x1d6, 0x1db, 0x1e3, 0x1ec,
-	0x1f4, 0x1fc, 0x205, 0x20b, 0x216, 0x221, 0x22c, 0x230, 0x239, 0x240, 0x243, 0x24d,
-	0x257, 0x260, 0x268, 0x273, 0x27c, 0x283, 0x289, 0x291, 0x29a, 0x2a7, 0x2b3, 0x2ba,
-	0x2c3, 0x2c9, 0x2d4, 0x2dc, 0x2e0, 0x2e8, 0x2f2, 0x2f7, 0x304, 0x30b, 0x316, 0x31d,
-	0x325, 0x32e, 0x33a, 0x342, 0x34e, 0x35a, 0x35f, 0x369, 0x372, 0x37c, 0x383, 0x38c,
-	0x396, 0x3a0, 0x3a5, 0x3b0, 0x3bb, 0x3c1, 0x3ce, 0x3d6, 0x3e4, 0x3ee, 0x3f4, 0x3fa,
-	0x404, 0x40b, 0x410, 0x415, 0x41e, 0x425, 0x429, 0x42f, 0x438, 0x444, 0x44b, 0x458,
-	0x45d, 0x466, 0x46b, 0x476, 0x47e, 0x486, 0x48c, 0x497, 0x49c, 0x4a8, 0x4b2, 0x4bb,
-	0x4c4, 0x4c9, 0x4d2, 0x4da, 0x4e2, 0x4e7, 0x4ef, 0x4fb, 0x502, 0x509, 0x50e, 0x517,
-	0x522, 0x52e, 0x536, 0x541, 0x547, 0x550, 0x558, 0x55e, 0x567, 0x570, 0x579, 0x582,
-	0x586, 0x58f, 0x594, 0x5a1, 0x5a9, 0x5b2, 0x5b7, 0x5bc, 0x5c4, 0x5ca, 0x5d0, 0x5d9,
-	0x5dd, 0x5e8, 0x5ee, 0x5f5, 0x5fe, 0x60f, 0x617, 0x61c, 0x620, 0x629, 0x629, 0x632,
-	0x639, 0x644, 0x650, 0x656, 0x65f, 0x669, 0x672, 0x679, 0x68a, 0x694, 0x6a7, 0x6b8,
-	0x6bb, 0x6d3, 0x6dc, 0x6e2, 0x6e8, 0x6f8, 0x702, 0x70d, 0x715, 0x719, 0x721, 0x721,
-	0x728, 0x72c, 0x731, 0x73a, 0x73e, 0x743, 0x749, 0x751, 0x756, 0x75a, 0x764, 0x76b,
-	0x772, 0x77d, 0x786, 0x78a, 0x793, 0x797, 0x79e, 0x7a9, 0x7b4, 0x7ba, 0x7be, 0x7c6,
-	0x7cb, 0x7d4, 0x7da, 0x7df, 0x7e6, 0x7eb, 0x7f2, 0x7fa, 0x805, 0x80c, 0x813, 0x81a,
-	0x823, 0x82f, 0x837, 0x848, 0x850, 0x850, 0x85d, 0x867, 0x86d, 0x876, 0x87b, 0x883,
-	0x889, 0x88f, 0x894, 0x899, 0x89e, 0x8aa, 0x8aa, 0x8af, 0x8c1, 0x8cb, 0x8d0, 0x8d6,
-	0x8da, 0x8de, 0x8e6, 0x8f3, 0x8f9, 0x903, 0x910, 0x910, 0x916, 0x916, 0x91a, 0x925,
-	0x92f, 0x93a, 0x947, 0x953, 0x95e, 0x970, 0x97c, 0x988, 0x993, 0x996, 0x9a0, 0x9a3,
-	0x9a7, 0x9ac, 0x9bc, 0x9c5, 0x9d0, 0x9d6, 0x9e4, 0x9f1, 0x9fc, 0xa01, 0xa0a, 0xa11,
-	0xa16, 0xa22, 0xa30, 0xa30, 0xa30, 0xa35, 0xa3c, 0xa41, 0xa46, 0xa4f, 0xa59, 0xa63,
-	0xa6d, 0xa78, 0xa84, 0xa89, 0xa8d, 0xa94, 0xa9a, 0xa9f, 0xaa9, 0xab1, 0xac9, 0xacf,
-	0xad5, 0xade, 0xaed, 0xafc, 0xb07, 0xb15, 0xb1e, 0xb24, 0xb27, 0xb2c, 0xb30, 0xb3b,
-	0xb42, 0xb46, 0xb4d, 0xb58, 0xb58, 0xb5c, 0xb5c, 0xb61, 0xb6d, 0xb7d, 0xb83, 0xb83,
-	0xb88, 0xb90, 0xb98, 0xba8, 0xbaf, 0xbb9, 0xbbf, 0xbce, 0xbce, 0xbce, 0xbd6, 0xbdc,
-	0xbe4, 0xbe9, 0xbf2, 0xbfb, 0xc02, 0xc08, 0xc0d, 0xc13, 0xc18, 0xc20, 0xc20, 0xc29,
-	0xc32, 0xc38, 0xc43, 0xc48, 0xc4c, 0xc58, 0xc62, 0xc6a, 0xc6f, 0xc72, 0xc78, 0xc7d,
-	0xc7d, 0xc7d, 0xc88, 0xc8c, 0xc92, 0xc9a, 0xca1, 0xca6, 0xcb0, 0xcb4, 0xcba, 0xcc0,
-	0xcc5, 0xcc9, 0xcd9, 0xce4, 0xcf2, 0xcf9, 0xd02, 0xd0d, 0xd18, 0xd20, 0xd26, 0xd2b,
-	0xd37, 0xd3e, 0xd4a, 0xd52, 0xd5e, 0xd65, 0xd65, 0xd6a, 0xd6f, 0xd7a, 0xd81, 0xd8d,
-	0xd91, 0xd9a, 0xda3, 0xda7, 0xdb0, 0xdb0, 0xdb6, 0xdc9, 0xdce, 0xdda, 0xdda, 0xddf,
-	0xde8, 0xdec, 0xdfe, 0xe06, 0xe0e, 0xe13, 0xe18, 0xe1d, 0xe27, 0xe31, 0xe3e, 0xe46,
-	0xe50, 0xe55, 0xe5f, 0xe70, 0xe85, 0xe91, 0xe9c, 0xea5, 0xeb2, 0xeba, 0xec0, 0xece,
-	0xede, 0xee7, 0xf01, 0xf0b, 0xf12, 0xf1f, 0xf27, 0xf31, 0xf36, 0xf3c, 0xf47, 0xf4c,
-	0xf55, 0xf5f, 0xf62, 0xf69, 0xf72, 0xf7e, 0xf85, 0xf8a, 0xf91, 0xf9b, 0xfa2, 0xfa7,
-	0xfb2, 0xfb9, 0xfcd, 0xfd3, 0xfd7, 0xfd7, 0xfdd, 0xfe8, 0xff2, 0xffd, 0x1006, 0x100a,
-	0x1017, 0x101d, 0x102a, 0x102a, 0x1034, 0x103f, 0x104b, 0x1057, 0x105e, 0x1066, 0x1072, 0x1077,
-	0x107b, 0x1088, 0x108e, 0x1092, 0x109b, 0x10a4, 0x10b1, 0x10c1, 0x10c8, 0x10d1, 0x10d5, 0x10da,
-	0x10de, 0x10e4, 0x10e9, 0x10ef, 0x10f3, 0x10fe, 0x10fe, 0x1108, 0x110f, 0x1115, 0x111d, 0x112b,
-	0x1134, 0x1134, 0x113a, 0x1144, 0x114d, 0x114d, 0x1154, 0x115f, 0x1166, 0x116f, 0x118a, 0x1194,
-	0x119e, 0x11a5, 0x11a8, 0x11ab, 0x11b6, 0x11ba, 0x11cb, 0x11d9, 0x11e0, 0x11e5, 0x11ea, 0x11f5,
-	0x11fb, 0x1200, 0x1205, 0x1207, 0x1212, 0x1212, 0x1218, 0x121d, 0x1226, 0x122d, 0x123c, 0x123c,
-	0x1248, 0x124f, 0x125b, 0x1266, 0x126c, 0x1289, 0x128d, 0x12a7, 0x12af, 0x12c6, 0x12d8, 0x12ec,
-	0x12ff, 0x1313, 0x1324, 0x1337, 0x134e, 0x135f, 0x1370, 0x1383, 0x1395, 0x13a1, 0x13b9, 0x13cf,
-	0x13d9, 0x13e7, 0x13fb, 0x1411,
+	0x195, 0x19b, 0x1aa, 0x1b3, 0x1bb, 0x1c3, 0x1c7, 0x1cc, 0x1d5, 0x1da, 0x1e2, 0x1eb,
+	0x1f3, 0x1fb, 0x204, 0x20a, 0x215, 0x220, 0x22b, 0x22f, 0x238, 0x23f, 0x242, 0x24c,
+	0x256, 0x25f, 0x267, 0x272, 0x27b, 0x282, 0x288, 0x290, 0x299, 0x2a6, 0x2b2, 0x2b9,
+	0x2c2, 0x2c8, 0x2d3, 0x2db, 0x2df, 0x2e7, 0x2f1, 0x2f6, 0x303, 0x30a, 0x315, 0x31c,
+	0x324, 0x32d, 0x339, 0x341, 0x34d, 0x359, 0x35e, 0x368, 0x371, 0x37b, 0x382, 0x38b,
+	0x395, 0x39f, 0x3a4, 0x3af, 0x3ba, 0x3c0, 0x3cd, 0x3d5, 0x3e3, 0x3ed, 0x3f3, 0x3f9,
+	0x403, 0x40a, 0x40f, 0x414, 0x41d, 0x424, 0x428, 0x42e, 0x437, 0x443, 0x44a, 0x457,
+	0x45c, 0x465, 0x46a, 0x475, 0x47d, 0x485, 0x48b, 0x496, 0x49b, 0x4a7, 0x4b1, 0x4ba,
+	0x4c3, 0x4c8, 0x4d1, 0x4d9, 0x4e1, 0x4e6, 0x4ee, 0x4fa, 0x501, 0x508, 0x50d, 0x516,
+	0x521, 0x52d, 0x535, 0x540, 0x546, 0x54f, 0x557, 0x55d, 0x566, 0x56f, 0x578, 0x581,
+	0x585, 0x58e, 0x593, 0x5a0, 0x5a8, 0x5b1, 0x5b6, 0x5bb, 0x5c3, 0x5c9, 0x5cf, 0x5d8,
+	0x5dc, 0x5e7, 0x5ed, 0x5f4, 0x5fd, 0x60e, 0x616, 0x61b, 0x61f, 0x628, 0x628, 0x631,
+	0x638, 0x643, 0x64f, 0x655, 0x65e, 0x668, 0x671, 0x678, 0x689, 0x693, 0x6a6, 0x6b7,
+	0x6ba, 0x6d2, 0x6db, 0x6e1, 0x6e7, 0x6f7, 0x701, 0x70c, 0x714, 0x718, 0x720, 0x720,
+	0x727, 0x72b, 0x730, 0x739, 0x73d, 0x742, 0x748, 0x750, 0x755, 0x759, 0x763, 0x76a,
+	0x771, 0x77c, 0x785, 0x789, 0x792, 0x796, 0x79d, 0x7a8, 0x7b3, 0x7b9, 0x7bd, 0x7c5,
+	0x7ca, 0x7d3, 0x7d9, 0x7de, 0x7e5, 0x7ea, 0x7f1, 0x7f9, 0x804, 0x80b, 0x812, 0x819,
+	0x822, 0x82e, 0x836, 0x847, 0x84f, 0x84f, 0x85c, 0x866, 0x86c, 0x875, 0x87a, 0x882,
+	0x888, 0x88e, 0x893, 0x898, 0x89d, 0x8a9, 0x8a9, 0x8ae, 0x8c0, 0x8ca, 0x8cf, 0x8d5,
+	0x8d9, 0x8dd, 0x8e5, 0x8f2, 0x8f8, 0x902, 0x90f, 0x90f, 0x915, 0x915, 0x919, 0x924,
+	0x92e, 0x939, 0x946, 0x952, 0x95d, 0x96f, 0x97b, 0x987, 0x992, 0x995, 0x99f, 0x9a2,
+	0x9a6, 0x9ab, 0x9bb, 0x9c4, 0x9cf, 0x9d5, 0x9e3, 0x9f0, 0x9fb, 0xa00, 0xa09, 0xa10,
+	0xa15, 0xa21, 0xa2f, 0xa2f, 0xa2f, 0xa34, 0xa3b, 0xa40, 0xa45, 0xa4e, 0xa58, 0xa62,
+	0xa6c, 0xa77, 0xa83, 0xa88, 0xa8c, 0xa93, 0xa99, 0xa9e, 0xaa8, 0xab0, 0xac8, 0xace,
+	0xad4, 0xadd, 0xaec, 0xafb, 0xb06, 0xb14, 0xb1d, 0xb23, 0xb26, 0xb2b, 0xb2f, 0xb3a,
+	0xb41, 0xb45, 0xb4c, 0xb57, 0xb57, 0xb5b, 0xb5b, 0xb60, 0xb6c, 0xb7c, 0xb82, 0xb82,
+	0xb87, 0xb8f, 0xb97, 0xba7, 0xbae, 0xbb8, 0xbbe, 0xbcd, 0xbcd, 0xbcd, 0xbd5, 0xbdb,
+	0xbe3, 0xbe8, 0xbf1, 0xbfa, 0xc01, 0xc07, 0xc0c, 0xc12, 0xc17, 0xc1f, 0xc1f, 0xc28,
+	0xc31, 0xc37, 0xc42, 0xc47, 0xc4b, 0xc57, 0xc61, 0xc69, 0xc6e, 0xc71, 0xc77, 0xc7c,
+	0xc7c, 0xc7c, 0xc87, 0xc8b, 0xc91, 0xc99, 0xca0, 0xca5, 0xcaf, 0xcb3, 0xcb9, 0xcbf,
+	0xcc4, 0xcc8, 0xcd8, 0xce3, 0xcf1, 0xcf8, 0xd01, 0xd0c, 0xd17, 0xd1f, 0xd25, 0xd2a,
+	0xd36, 0xd3d, 0xd49, 0xd51, 0xd5d, 0xd64, 0xd64, 0xd69, 0xd6e, 0xd79, 0xd80, 0xd8c,
+	0xd90, 0xd99, 0xda2, 0xda6, 0xdaf, 0xdaf, 0xdb5, 0xdc8, 0xdcd, 0xdd9, 0xdd9, 0xdde,
+	0xde7, 0xdeb, 0xdfd, 0xe05, 0xe0d, 0xe12, 0xe17, 0xe1c, 0xe26, 0xe30, 0xe3d, 0xe45,
+	0xe4f, 0xe54, 0xe5e, 0xe6f, 0xe84, 0xe90, 0xe9b, 0xea4, 0xeb1, 0xeb9, 0xebf, 0xecd,
+	0xedd, 0xee6, 0xf00, 0xf0a, 0xf11, 0xf1e, 0xf26, 0xf30, 0xf35, 0xf3b, 0xf46, 0xf4b,
+	0xf54, 0xf5e, 0xf61, 0xf68, 0xf71, 0xf7d, 0xf84, 0xf89, 0xf90, 0xf9a, 0xfa1, 0xfa6,
+	0xfb1, 0xfb8, 0xfcc, 0xfd2, 0xfd6, 0xfd6, 0xfdc, 0xfe7, 0xff1, 0xffc, 0x1005, 0x1009,
+	0x1016, 0x101c, 0x1029, 0x1029, 0x1033, 0x103e, 0x104a, 0x1056, 0x105d, 0x1065, 0x1071, 0x1076,
+	0x107a, 0x1087, 0x108d, 0x1091, 0x109a, 0x10a3, 0x10b0, 0x10c0, 0x10c7, 0x10d0, 0x10d4, 0x10d9,
+	0x10dd, 0x10e3, 0x10e8, 0x10ee, 0x10f2, 0x10fd, 0x10fd, 0x1107, 0x110e, 0x1114, 0x111c, 0x112a,
+	0x1133, 0x1133, 0x1139, 0x1143, 0x114c, 0x114c, 0x1153, 0x115e, 0x1165, 0x116e, 0x1189, 0x1193,
+	0x119d, 0x11a4, 0x11a7, 0x11aa, 0x11b5, 0x11b9, 0x11ca, 0x11d8, 0x11df, 0x11e4, 0x11e9, 0x11f4,
+	0x11fa, 0x11ff, 0x1204, 0x1204, 0x1206, 0x1211, 0x1211, 0x1217, 0x121c, 0x1225, 0x122c, 0x123b,
+	0x123b, 0x1247, 0x124e, 0x125a, 0x1265, 0x126b, 0x1288, 0x128c, 0x12a6, 0x12ae, 0x12c5, 0x12d7,
+	0x12eb, 0x12fe, 0x1312, 0x1323, 0x1336, 0x134d, 0x135e, 0x136f, 0x1382, 0x1394, 0x13a0, 0x13b8,
+	0x13ce, 0x13d8, 0x13e6, 0x13fa, 0x1410,
 }
 
 const swLangStr = "" +
@@ -14393,7 +13728,7 @@
 	"joKisogaKiyaoTamaziti Msingi ya KimorokoHakuna maudhui ya lughaKiarabu Sanifu ch" +
 	"a KisasaKihispania cha UlayaKichina cha Jadi"
 
-var swLangIdx = []uint16{ // 604 entries
+var swLangIdx = []uint16{ // 605 entries
 	0x0, 0x0, 0x9, 0x9, 0x13, 0x1a, 0x22, 0x22, 0x29, 0x30, 0x30, 0x38,
 	0x43, 0x4c, 0x56, 0x60, 0x60, 0x69, 0x72, 0x7a, 0x83, 0x8b, 0x95, 0x95,
 	0x95, 0x9f, 0x9f, 0xa6, 0xa6, 0xa6, 0xae, 0xb7, 0xc1, 0xc9, 0xd2, 0xd7,
@@ -14441,10 +13776,10 @@
 	0x813, 0x813, 0x81a, 0x81a, 0x81a, 0x81a, 0x81a, 0x824, 0x824, 0x824, 0x824, 0x824,
 	0x82e, 0x82e, 0x82e, 0x82e, 0x82e, 0x82e, 0x837, 0x837, 0x840, 0x840, 0x857, 0x857,
 	0x857, 0x857, 0x86a, 0x86f, 0x86f, 0x86f, 0x86f, 0x86f, 0x86f, 0x86f, 0x876, 0x876,
-	0x876, 0x876, 0x876, 0x876, 0x876, 0x876, 0x87c, 0x881, 0x881, 0x881, 0x881, 0x881,
-	0x881, 0x881, 0x881, 0x881, 0x881, 0x89c, 0x89c, 0x8b3, 0x8b3, 0x8cc, 0x8cc, 0x8cc,
-	0x8cc, 0x8cc, 0x8cc, 0x8cc, 0x8cc, 0x8e0, 0x8e0, 0x8e0, 0x8e0, 0x8e0, 0x8e0, 0x8e0,
-	0x8e0, 0x8e0, 0x8e0, 0x8f0,
+	0x876, 0x876, 0x876, 0x876, 0x876, 0x876, 0x876, 0x87c, 0x881, 0x881, 0x881, 0x881,
+	0x881, 0x881, 0x881, 0x881, 0x881, 0x881, 0x89c, 0x89c, 0x8b3, 0x8b3, 0x8cc, 0x8cc,
+	0x8cc, 0x8cc, 0x8cc, 0x8cc, 0x8cc, 0x8cc, 0x8e0, 0x8e0, 0x8e0, 0x8e0, 0x8e0, 0x8e0,
+	0x8e0, 0x8e0, 0x8e0, 0x8e0, 0x8f0,
 }
 
 const taLangStr = "" +
@@ -14501,7 +13836,7 @@
 	"ிய பிரெஞ்சுஸ்விஸ் பிரஞ்சுபிலெமிஷ்போர்ச்சுகீஸ் (பிரேசில்)ஐரோப்பிய போர்ச்சுகீஸ்மோல" +
 	"்டாவியன்செர்போ-க்ரோஷியன்எளிதாக்கப்பட்ட சீனம்பாரம்பரிய சீனம்"
 
-var taLangIdx = []uint16{ // 604 entries
+var taLangIdx = []uint16{ // 605 entries
 	0x0, 0x12, 0x33, 0x4e, 0x72, 0x81, 0x9c, 0xb7, 0xc9, 0xde, 0xf3, 0x105,
 	0x123, 0x13b, 0x15c, 0x17a, 0x192, 0x1a7, 0x1bf, 0x1e0, 0x1fb, 0x216, 0x231, 0x243,
 	0x255, 0x270, 0x27c, 0x288, 0x2b0, 0x2c2, 0x2d4, 0x2e6, 0x2fb, 0x30d, 0x31f, 0x328,
@@ -14549,10 +13884,10 @@
 	0x2859, 0x286b, 0x287d, 0x288f, 0x289b, 0x28ad, 0x28ad, 0x28cb, 0x28e9, 0x28e9, 0x2901, 0x2923,
 	0x2942, 0x2942, 0x2942, 0x2942, 0x2963, 0x2963, 0x297b, 0x298d, 0x299f, 0x29ba, 0x29f2, 0x2a0d,
 	0x2a28, 0x2a43, 0x2a4f, 0x2a55, 0x2a55, 0x2a55, 0x2a55, 0x2a55, 0x2a67, 0x2a67, 0x2a79, 0x2a79,
-	0x2a8b, 0x2a97, 0x2aa3, 0x2aa3, 0x2ab8, 0x2ab8, 0x2ac4, 0x2ad0, 0x2ae2, 0x2ae2, 0x2ae2, 0x2ae2,
-	0x2b00, 0x2b18, 0x2b48, 0x2b48, 0x2b57, 0x2baa, 0x2bb6, 0x2bfd, 0x2c09, 0x2c53, 0x2c81, 0x2cb0,
-	0x2ced, 0x2d1b, 0x2d52, 0x2d83, 0x2dca, 0x2dfb, 0x2e2f, 0x2e57, 0x2e7f, 0x2e97, 0x2ed6, 0x2f13,
-	0x2f34, 0x2f62, 0x2f9c, 0x2fc7,
+	0x2a8b, 0x2a97, 0x2aa3, 0x2aa3, 0x2aa3, 0x2ab8, 0x2ab8, 0x2ac4, 0x2ad0, 0x2ae2, 0x2ae2, 0x2ae2,
+	0x2ae2, 0x2b00, 0x2b18, 0x2b48, 0x2b48, 0x2b57, 0x2baa, 0x2bb6, 0x2bfd, 0x2c09, 0x2c53, 0x2c81,
+	0x2cb0, 0x2ced, 0x2d1b, 0x2d52, 0x2d83, 0x2dca, 0x2dfb, 0x2e2f, 0x2e57, 0x2e7f, 0x2e97, 0x2ed6,
+	0x2f13, 0x2f34, 0x2f62, 0x2f9c, 0x2fc7,
 }
 
 const teLangStr = "" +
@@ -14606,7 +13941,7 @@
 	"ియెన్ ఫ్రెంచ్స్విస్ ఫ్రెంచ్ఫ్లెమిష్బ్రెజీలియన్ పోర్చుగీస్యూరోపియన్ పోర్చుగీస్మొల" +
 	"్డావియన్సేర్బో-క్రొయేషియన్సరళీకృత చైనీస్సాంప్రదాయక చైనీస్"
 
-var teLangIdx = []uint16{ // 604 entries
+var teLangIdx = []uint16{ // 605 entries
 	0x0, 0xf, 0x2d, 0x48, 0x69, 0x78, 0x93, 0xab, 0xbd, 0xd2, 0xe7, 0xf6,
 	0x114, 0x129, 0x147, 0x165, 0x17d, 0x18f, 0x1a4, 0x1b9, 0x1ce, 0x1e9, 0x1fe, 0x210,
 	0x222, 0x23d, 0x249, 0x255, 0x27a, 0x28c, 0x29e, 0x2b0, 0x2c2, 0x2d4, 0x2e6, 0x2ef,
@@ -14654,10 +13989,10 @@
 	0x25dc, 0x25ee, 0x25fa, 0x260c, 0x2618, 0x2630, 0x2630, 0x264b, 0x2660, 0x2660, 0x2675, 0x269a,
 	0x26b9, 0x26b9, 0x26b9, 0x26b9, 0x26d1, 0x26d1, 0x26e6, 0x26f8, 0x270d, 0x2728, 0x276f, 0x278a,
 	0x27a5, 0x27bd, 0x27c9, 0x27d5, 0x27d5, 0x27d5, 0x27d5, 0x27d5, 0x27e7, 0x27e7, 0x27f6, 0x27f6,
-	0x2808, 0x2814, 0x2820, 0x2820, 0x2835, 0x2835, 0x2841, 0x284a, 0x285c, 0x285c, 0x285c, 0x285c,
-	0x2874, 0x2889, 0x28ad, 0x28ad, 0x28bf, 0x2906, 0x2912, 0x292b, 0x2937, 0x2978, 0x29af, 0x29db,
-	0x2a18, 0x2a49, 0x2a7a, 0x2aab, 0x2af2, 0x2b26, 0x2b5a, 0x2b8b, 0x2bb3, 0x2bcb, 0x2c0b, 0x2c45,
-	0x2c66, 0x2c9a, 0x2cc2, 0x2cf3,
+	0x2808, 0x2814, 0x2820, 0x2820, 0x2820, 0x2835, 0x2835, 0x2841, 0x284a, 0x285c, 0x285c, 0x285c,
+	0x285c, 0x2874, 0x2889, 0x28ad, 0x28ad, 0x28bf, 0x2906, 0x2912, 0x292b, 0x2937, 0x2978, 0x29af,
+	0x29db, 0x2a18, 0x2a49, 0x2a7a, 0x2aab, 0x2af2, 0x2b26, 0x2b5a, 0x2b8b, 0x2bb3, 0x2bcb, 0x2c0b,
+	0x2c45, 0x2c66, 0x2c9a, 0x2cc2, 0x2cf3,
 }
 
 const thLangStr = "" +
@@ -14719,7 +14054,7 @@
 	"ังกฤษ - อเมริกันสเปน (ยุโรป)ฝรั่งเศส (สวิส)เฟลมิชโปรตุเกส - บราซิลโปรตุเกส - ยุโ" +
 	"รปมอลโดวาเซอร์โบ-โครเอเชียจีนตัวย่อจีนตัวเต็ม"
 
-var thLangIdx = []uint16{ // 604 entries
+var thLangIdx = []uint16{ // 605 entries
 	0x0, 0x12, 0x24, 0x36, 0x54, 0x63, 0x78, 0x8d, 0x9f, 0xb1, 0xc3, 0xdb,
 	0xff, 0x114, 0x129, 0x144, 0x159, 0x16e, 0x183, 0x192, 0x1a4, 0x1b9, 0x1ce, 0x1dd,
 	0x1f5, 0x20d, 0x216, 0x222, 0x246, 0x255, 0x264, 0x27c, 0x291, 0x2a3, 0x2b2, 0x2be,
@@ -14767,10 +14102,10 @@
 	0x2d65, 0x2d77, 0x2d86, 0x2d95, 0x2d9e, 0x2db3, 0x2dcb, 0x2de0, 0x2df5, 0x2e04, 0x2e19, 0x2e3a,
 	0x2e55, 0x2e67, 0x2e79, 0x2e91, 0x2ea9, 0x2ec4, 0x2ed9, 0x2eeb, 0x2f03, 0x2f0f, 0x2f45, 0x2f5d,
 	0x2f72, 0x2f8a, 0x2f93, 0x2f99, 0x2fae, 0x2fbd, 0x2fe4, 0x300c, 0x301b, 0x3027, 0x3036, 0x304e,
-	0x3060, 0x3072, 0x307e, 0x3090, 0x30a8, 0x30c3, 0x30cf, 0x30db, 0x30e4, 0x30f6, 0x3105, 0x311d,
-	0x3135, 0x314a, 0x316e, 0x3183, 0x3195, 0x31da, 0x31e6, 0x3213, 0x321f, 0x325e, 0x328e, 0x32bb,
-	0x32ee, 0x3315, 0x3351, 0x337e, 0x337e, 0x339c, 0x339c, 0x339c, 0x33c3, 0x33d5, 0x3402, 0x342c,
-	0x3441, 0x3472, 0x348d, 0x34ab,
+	0x3060, 0x3072, 0x307e, 0x307e, 0x3090, 0x30a8, 0x30c3, 0x30cf, 0x30db, 0x30e4, 0x30f6, 0x3105,
+	0x311d, 0x3135, 0x314a, 0x316e, 0x3183, 0x3195, 0x31da, 0x31e6, 0x3213, 0x321f, 0x325e, 0x328e,
+	0x32bb, 0x32ee, 0x3315, 0x3351, 0x337e, 0x337e, 0x339c, 0x339c, 0x339c, 0x33c3, 0x33d5, 0x3402,
+	0x342c, 0x3441, 0x3472, 0x348d, 0x34ab,
 }
 
 const trLangStr = "" +
@@ -14841,7 +14176,7 @@
 	"zcasıFlamancaBrezilya PortekizcesiAvrupa PortekizcesiMoldovacaSırp-Hırvat DiliBa" +
 	"sitleştirilmiş ÇinceGeleneksel Çince"
 
-var trLangIdx = []uint16{ // 604 entries
+var trLangIdx = []uint16{ // 605 entries
 	0x0, 0x4, 0xb, 0x13, 0x1d, 0x21, 0x28, 0x30, 0x37, 0x3e, 0x47, 0x4d,
 	0x54, 0x60, 0x6c, 0x74, 0x7b, 0x82, 0x8a, 0x92, 0x9a, 0xa4, 0xad, 0xb6,
 	0xbe, 0xc7, 0xcb, 0xd2, 0xe2, 0xec, 0xf1, 0xf6, 0xfd, 0x103, 0x10d, 0x110,
@@ -14889,10 +14224,10 @@
 	0x1226, 0x122c, 0x1231, 0x1236, 0x1239, 0x1240, 0x1247, 0x1250, 0x1257, 0x1261, 0x1269, 0x1274,
 	0x127d, 0x1283, 0x1289, 0x1291, 0x129a, 0x12a0, 0x12a7, 0x12ad, 0x12b4, 0x12ba, 0x12cc, 0x12d5,
 	0x12e0, 0x12e7, 0x12ed, 0x12f0, 0x12fa, 0x12fe, 0x130c, 0x131f, 0x1324, 0x1329, 0x132e, 0x1334,
-	0x133a, 0x133f, 0x1344, 0x134f, 0x1359, 0x1361, 0x1365, 0x1368, 0x136e, 0x1375, 0x137a, 0x1383,
-	0x138b, 0x1397, 0x13a6, 0x13af, 0x13b5, 0x13d4, 0x13d8, 0x13ee, 0x13f4, 0x140b, 0x141f, 0x143b,
-	0x1452, 0x1465, 0x147a, 0x148f, 0x14ab, 0x14c0, 0x14d6, 0x14ea, 0x1501, 0x1509, 0x151e, 0x1531,
-	0x153a, 0x154c, 0x1565, 0x1576,
+	0x133a, 0x133f, 0x1344, 0x1344, 0x134f, 0x1359, 0x1361, 0x1365, 0x1368, 0x136e, 0x1375, 0x137a,
+	0x1383, 0x138b, 0x1397, 0x13a6, 0x13af, 0x13b5, 0x13d4, 0x13d8, 0x13ee, 0x13f4, 0x140b, 0x141f,
+	0x143b, 0x1452, 0x1465, 0x147a, 0x148f, 0x14ab, 0x14c0, 0x14d6, 0x14ea, 0x1501, 0x1509, 0x151e,
+	0x1531, 0x153a, 0x154c, 0x1565, 0x1576,
 }
 
 const ukLangStr = "" +
@@ -14951,7 +14286,7 @@
 	"а арабськаверхньонімецька (Швейцарія)англійська британськаіспанська (Європа)флам" +
 	"андськапортугальська (Європа)молдавськасербсько-хорватська"
 
-var ukLangIdx = []uint16{ // 602 entries
+var ukLangIdx = []uint16{ // 603 entries
 	0x0, 0x10, 0x20, 0x36, 0x48, 0x50, 0x62, 0x76, 0x86, 0x98, 0xa8, 0xb4,
 	0xd2, 0xe6, 0xfa, 0x10e, 0x11c, 0x12a, 0x140, 0x152, 0x166, 0x17a, 0x190, 0x1a2,
 	0x1b0, 0x1c8, 0x1ce, 0x1da, 0x201, 0x211, 0x225, 0x233, 0x243, 0x24f, 0x25e, 0x264,
@@ -14999,88 +14334,88 @@
 	0x1d8d, 0x1d99, 0x1da3, 0x1dad, 0x1db3, 0x1dc1, 0x1dc1, 0x1dcf, 0x1ddd, 0x1ddd, 0x1deb, 0x1e00,
 	0x1e11, 0x1e11, 0x1e1d, 0x1e1d, 0x1e2b, 0x1e2b, 0x1e39, 0x1e45, 0x1e53, 0x1e65, 0x1e9e, 0x1eb2,
 	0x1ec6, 0x1ed4, 0x1ee0, 0x1ee6, 0x1ee6, 0x1ee6, 0x1ee6, 0x1ee6, 0x1ef4, 0x1ef4, 0x1efe, 0x1f12,
-	0x1f1e, 0x1f28, 0x1f30, 0x1f30, 0x1f42, 0x1f42, 0x1f4a, 0x1f4e, 0x1f52, 0x1f5e, 0x1f66, 0x1f66,
-	0x1f7a, 0x1f90, 0x1fa5, 0x1fa5, 0x1fb1, 0x1ff3, 0x1ffd, 0x2023, 0x202f, 0x2063, 0x2063, 0x2096,
-	0x2096, 0x2096, 0x20bf, 0x20bf, 0x20bf, 0x20e0, 0x20e0, 0x20e0, 0x20e0, 0x20f6, 0x20f6, 0x211f,
-	0x2133, 0x2158,
+	0x1f1e, 0x1f28, 0x1f30, 0x1f30, 0x1f30, 0x1f42, 0x1f42, 0x1f4a, 0x1f4e, 0x1f52, 0x1f5e, 0x1f66,
+	0x1f66, 0x1f7a, 0x1f90, 0x1fa5, 0x1fa5, 0x1fb1, 0x1ff3, 0x1ffd, 0x2023, 0x202f, 0x2063, 0x2063,
+	0x2096, 0x2096, 0x2096, 0x20bf, 0x20bf, 0x20bf, 0x20e0, 0x20e0, 0x20e0, 0x20e0, 0x20f6, 0x20f6,
+	0x211f, 0x2133, 0x2158,
 }
 
 const urLangStr = "" +
 	"ابقازیانایفریکانزاکانامہاریعربیآسامیایماراآزربائیجانیباشکیربیلاروسیبلغاریبمباراب" +
-	"نگالیتبتیبریٹنبوسنیکاٹالانینکوراسیکنچیکویلشڈینشجرمنڈیویہیژونگکھاایویونانیانگریزی" +
-	"ایسپرانٹوہسپانویاسٹونینباسکیفارسیفینیشفجیفیروئیزفرانسیسیمغربی فریسیئنآئیرِشسکاٹ " +
-	"گیلِکگالیشیائیگُارانیگجراتیمینکسہؤساعبرانیہندیکراتیہیتیہنگیرینارمینیبین لسانیاتا" +
-	"نڈونیثیائیاِگبوسچوان ایآئس لینڈکاطالویانیوکتیتتجاپانیجاویجارجیکانگوکیکوقزاخكالال" +
-	"يستخمیرکنّاڈاکوریائیکشمیریکردشکورنشکرغیزیلاطینیلگژمبرگ کا باشندہگینڈالِنگَلالاؤل" +
-	"تھُواینینلبا-كاتانجالیٹوینملاگاسیماؤریمقدونیائیمالایالممنگؤلیمراٹهیمالائیمالٹیبر" +
-	"میشمالی دبیلنیپالیڈچنورویجینی نینورسکنارویجین بوکملنیانجاآكسیٹاناورومواورِیااوسی" +
-	"ٹکپنجابیپولستانیپشتوپُرتگالیکویچوآرومانشرونڈیرومنیروسیکینیاروانڈاسَنسکرِتسندھیشم" +
-	"الی سامیسانغوسنہالاسلوواکسلووینیائیساموآنشوناصومالیالبانیصربیسواتیجنوبی سوتھوسنڈ" +
-	"انیزسویڈشسواحلیتملتیلگوتاجکتھائیٹگرینیاترکمانسواناٹونگنترکیزونگاتاتارتاہیتییوئگہ" +
-	"ریوکرینیائیاردوازبیکوینڈاویتنامیوولوفژوسایدشیوروباچینیزولواکولیاغمماپوچےآسوبیمبا" +
-	"بینابوڈوچیگاچیروکیسورانی کردشتائتازرماذیلی سربیائیدوالاجولا فونياامبوایفِکفلیپین" +
-	"وگاغاغاوزسوئس جرمنگسیہوائیاپر سربیائیگومباماشیمقبائلیکامباماكوندهكابويرديانوكوير" +
-	"ا شينيكالينجينکومی پرمیاککونکنیشامبالابافيالانگیلاکوٹالوزیلیوبا لولوآلولویاماسای" +
-	"میروموریسیینماخاوا-ميتومیٹاموہاوکمنڈانگناماكوايسواینکوشمالی سوتھونویرنینکولكيشیر" +
-	"ومبوrwkسامبوروسانگوسیناكويرابورو سينیتشلحيتجنوبی سامیلول سامیاناری سامیاسکولٹ سا" +
-	"میکانگو سواحلیتیسوٹیٹمکلنگنٹوک پِسِنٹمبوکاتاساواقسینٹرل ایٹلس ٹمازائٹنامعلوم زبا" +
-	"نوائیاونجوسوگااسٹینڈرڈ مغربی امازیقیکوئی لسانی مواد نہیںماڈرن اسٹینڈرڈ عربیآسٹری" +
-	"ائی جرمنسوئس ہائی جرمنآسٹریلیائی انگریزیکینیڈین انگریزیبرطانوی انگریزیامریکی انگ" +
-	"ریزیلاطینی امریکی ہسپانوییورپی ہسپانویمیکسیکن ہسپانویکینیڈین فرانسیسیسوئس فرینچف" +
-	"لیمِشبرازیلی پرتگالییورپی پرتگالیسربو-کروئیشینچینی (آسان کردہ)روایتی چینی"
+	"نگالیتبتیبریٹنبوسنیکیٹالانکوراسیکنچیکویلشڈینشجرمنڈیویہیژونگکھاایویونانیانگریزیای" +
+	"سپرانٹوہسپانویاسٹونینباسکیفارسیفینیشفجیفیروئیزفرانسیسیمغربی فریسیئنآئیرِشسکاٹ گی" +
+	"لِکگالیشیائیگُارانیگجراتیمینکسہؤساعبرانیہندیکراتیہیتیہنگیرینارمینیبین لسانیاتانڈ" +
+	"ونیثیائیاِگبوسچوان ایآئس لینڈکاطالویاینُکٹیٹٹجاپانیجاویجارجیکانگوکیکویوقزاخكالال" +
+	"يستخمیرکنّاڈاکوریائیکشمیریکردشکورنشکرغیزیلاطینیلگژمبرگشگینڈالِنگَلالاؤلتھُواینین" +
+	"لبا-كاتانجالیٹوینملاگاسیماؤریمقدونیائیمالایالممنگؤلیمراٹهیمالائیمالٹیبرمیشمالی د" +
+	"بیلنیپالیڈچنورویجینی نینورسکنارویجین بوکملنیانجاآكسیٹاناورومواورِیااوسیٹکپنجابیپ" +
+	"ولستانیپشتوپُرتگالیکویچوآرومانشرونڈیرومینینروسیکینیاروانڈاسَنسکرِتسندھیشمالی سام" +
+	"یسانجوسنہالاسلوواکسلووینیائیساموآنشوناصومالیالبانیصربیسواتیجنوبی سوتھوسنڈانیزسوی" +
+	"ڈشسواحلیتملتیلگوتاجکتھائیٹگرینیاترکمانسواناٹونگنترکیزونگاتاتارتاہیتییوئگہریوکرین" +
+	"یائیاردوازبیکوینڈاویتنامیوولوفژوسایدشیوروباچینیزولواکولیاغمماپوچےآسوبیمبابینابوڈ" +
+	"وچیگاچیروکیسورانی کردشتائتازرماذیلی سربیائیدوالاجولا فونياامبوایفِکفلیپینوگاغاغا" +
+	"وزسوئس جرمنگسیہوائیاپر سربیائینگومباماشیمقبائلیکامباماكوندهكابويرديانوكويرا شيني" +
+	"كالينجينکومی پرمیاککونکنیشامبالابافيالانگیلاکوٹالوزیلیوبا لولوآلولویاماسایمیرومو" +
+	"ریسیینماخاوا-ميتومیٹاموہاکمنڈانگناماكوايسواینکوشمالی سوتھونویرنینکولكيشیرومبوروا" +
+	"سامبوروسانگوسیناكويرابورو سينیتشلحيتجنوبی سامیلول سامیاناری سامیسکولٹ سامیکانگو " +
+	"سواحلیتیسوٹیٹمکلنگنٹوک پِسِنٹمبوکاتاساواقسینٹرل ایٹلس ٹمازائٹنامعلوم زبانوائیونج" +
+	"وسوگااسٹینڈرڈ مراقشی تمازیقیکوئی لسانی مواد نہیںماڈرن اسٹینڈرڈ عربیآسٹریائی جرمن" +
+	"سوئس ہائی جرمنآسٹریلیائی انگریزیکینیڈین انگریزیبرطانوی انگریزیامریکی انگریزیلاطی" +
+	"نی امریکی ہسپانوییورپی ہسپانویمیکسیکن ہسپانویکینیڈین فرانسیسیسوئس فرینچفلیمِشبرا" +
+	"زیلی پرتگالییورپی پرتگالیسربو-کروئیشینچینی (آسان کردہ)روایتی چینی"
 
-var urLangIdx = []uint16{ // 604 entries
+var urLangIdx = []uint16{ // 605 entries
 	0x0, 0x0, 0x10, 0x10, 0x22, 0x2a, 0x36, 0x36, 0x3e, 0x48, 0x48, 0x54,
-	0x6a, 0x76, 0x86, 0x92, 0x92, 0x9e, 0xaa, 0xb2, 0xbc, 0xc6, 0xd8, 0xd8,
-	0xd8, 0xe8, 0xe8, 0xee, 0xee, 0xee, 0xf6, 0xfe, 0x106, 0x112, 0x120, 0x126,
-	0x132, 0x140, 0x152, 0x160, 0x16e, 0x178, 0x182, 0x182, 0x18c, 0x192, 0x1a0, 0x1b0,
-	0x1c9, 0x1d5, 0x1e8, 0x1fa, 0x208, 0x214, 0x21e, 0x226, 0x232, 0x23a, 0x23a, 0x244,
-	0x24c, 0x25a, 0x266, 0x266, 0x27b, 0x291, 0x291, 0x29b, 0x2aa, 0x2aa, 0x2aa, 0x2bb,
-	0x2c7, 0x2d9, 0x2e5, 0x2ed, 0x2f7, 0x301, 0x309, 0x309, 0x311, 0x321, 0x329, 0x335,
-	0x343, 0x343, 0x34f, 0x357, 0x357, 0x361, 0x36d, 0x379, 0x399, 0x3a3, 0x3a3, 0x3b1,
-	0x3b7, 0x3cb, 0x3e0, 0x3ec, 0x3fa, 0x3fa, 0x404, 0x416, 0x426, 0x432, 0x43e, 0x44a,
-	0x454, 0x45c, 0x45c, 0x46f, 0x47b, 0x47b, 0x47f, 0x4a0, 0x4bb, 0x4bb, 0x4bb, 0x4c7,
-	0x4d5, 0x4d5, 0x4e1, 0x4ed, 0x4f9, 0x505, 0x505, 0x515, 0x51d, 0x52d, 0x539, 0x545,
-	0x54f, 0x559, 0x561, 0x577, 0x587, 0x587, 0x591, 0x5a4, 0x5ae, 0x5ba, 0x5c6, 0x5da,
-	0x5e6, 0x5ee, 0x5fa, 0x606, 0x60e, 0x618, 0x62d, 0x63b, 0x645, 0x651, 0x657, 0x661,
-	0x669, 0x673, 0x681, 0x68d, 0x697, 0x6a1, 0x6a9, 0x6b3, 0x6bd, 0x6c9, 0x6d5, 0x6e9,
-	0x6f1, 0x6fb, 0x705, 0x713, 0x713, 0x713, 0x71d, 0x725, 0x72b, 0x737, 0x737, 0x73f,
-	0x747, 0x747, 0x751, 0x751, 0x751, 0x751, 0x751, 0x757, 0x757, 0x757, 0x757, 0x757,
-	0x757, 0x757, 0x757, 0x757, 0x757, 0x763, 0x763, 0x763, 0x763, 0x763, 0x763, 0x763,
-	0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769, 0x769,
-	0x769, 0x769, 0x773, 0x773, 0x77b, 0x77b, 0x77b, 0x77b, 0x77b, 0x77b, 0x77b, 0x77b,
-	0x77b, 0x77b, 0x77b, 0x77b, 0x77b, 0x783, 0x783, 0x783, 0x783, 0x783, 0x783, 0x783,
-	0x783, 0x783, 0x783, 0x783, 0x783, 0x78b, 0x78b, 0x78b, 0x78b, 0x78b, 0x78b, 0x78b,
-	0x78b, 0x797, 0x797, 0x7ac, 0x7ac, 0x7ac, 0x7ac, 0x7ac, 0x7ac, 0x7ac, 0x7b6, 0x7b6,
-	0x7b6, 0x7b6, 0x7b6, 0x7be, 0x7be, 0x7d5, 0x7d5, 0x7df, 0x7df, 0x7f2, 0x7f2, 0x7f2,
-	0x7fa, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x812,
-	0x812, 0x812, 0x812, 0x812, 0x812, 0x812, 0x812, 0x812, 0x812, 0x816, 0x822, 0x822,
-	0x822, 0x822, 0x822, 0x822, 0x822, 0x822, 0x822, 0x822, 0x822, 0x822, 0x822, 0x822,
-	0x822, 0x822, 0x833, 0x833, 0x833, 0x839, 0x839, 0x839, 0x839, 0x843, 0x843, 0x843,
-	0x843, 0x843, 0x858, 0x858, 0x858, 0x858, 0x858, 0x858, 0x858, 0x858, 0x858, 0x858,
-	0x862, 0x86c, 0x86c, 0x86c, 0x86c, 0x86c, 0x878, 0x878, 0x878, 0x882, 0x882, 0x882,
-	0x882, 0x882, 0x890, 0x8a6, 0x8a6, 0x8a6, 0x8a6, 0x8a6, 0x8a6, 0x8b9, 0x8b9, 0x8b9,
-	0x8b9, 0x8c9, 0x8c9, 0x8de, 0x8ea, 0x8ea, 0x8ea, 0x8ea, 0x8ea, 0x8ea, 0x8ea, 0x8ea,
-	0x8f8, 0x902, 0x902, 0x902, 0x902, 0x902, 0x90c, 0x90c, 0x90c, 0x90c, 0x90c, 0x90c,
-	0x90c, 0x918, 0x918, 0x918, 0x920, 0x920, 0x935, 0x935, 0x935, 0x939, 0x939, 0x941,
-	0x941, 0x941, 0x941, 0x941, 0x941, 0x941, 0x941, 0x941, 0x94b, 0x94b, 0x94b, 0x94b,
-	0x94b, 0x953, 0x963, 0x963, 0x978, 0x980, 0x980, 0x980, 0x980, 0x980, 0x98c, 0x98c,
-	0x98c, 0x998, 0x998, 0x998, 0x998, 0x998, 0x998, 0x998, 0x998, 0x998, 0x998, 0x998,
-	0x9a0, 0x9a0, 0x9a0, 0x9a0, 0x9a0, 0x9a0, 0x9ac, 0x9ac, 0x9ac, 0x9ac, 0x9ac, 0x9b6,
-	0x9cb, 0x9d3, 0x9d3, 0x9d3, 0x9df, 0x9df, 0x9df, 0x9df, 0x9df, 0x9df, 0x9df, 0x9df,
-	0x9df, 0x9df, 0x9df, 0x9df, 0x9df, 0x9df, 0x9df, 0x9df, 0x9df, 0x9df, 0x9df, 0x9df,
-	0x9df, 0x9e7, 0x9e7, 0x9e7, 0x9e7, 0x9e7, 0x9e7, 0x9e7, 0x9f1, 0x9f1, 0x9f1, 0x9f1,
-	0x9f1, 0x9f1, 0x9f4, 0x9f4, 0x9f4, 0x9f4, 0xa02, 0xa02, 0xa02, 0xa02, 0xa02, 0xa0c,
-	0xa0c, 0xa0c, 0xa0c, 0xa0c, 0xa14, 0xa14, 0xa14, 0xa2f, 0xa2f, 0xa2f, 0xa3b, 0xa3b,
-	0xa3b, 0xa3b, 0xa3b, 0xa3b, 0xa4e, 0xa5d, 0xa70, 0xa85, 0xa85, 0xa85, 0xa85, 0xa85,
-	0xa85, 0xa85, 0xa85, 0xa85, 0xa85, 0xa85, 0xa9c, 0xa9c, 0xa9c, 0xa9c, 0xa9c, 0xa9c,
-	0xaa4, 0xaa4, 0xaac, 0xaac, 0xaac, 0xaac, 0xaac, 0xab6, 0xab6, 0xab6, 0xab6, 0xab6,
-	0xac7, 0xac7, 0xac7, 0xac7, 0xac7, 0xac7, 0xad3, 0xad3, 0xae1, 0xae1, 0xb07, 0xb07,
-	0xb07, 0xb07, 0xb1e, 0xb26, 0xb26, 0xb26, 0xb26, 0xb26, 0xb26, 0xb26, 0xb30, 0xb30,
-	0xb30, 0xb30, 0xb30, 0xb30, 0xb30, 0xb30, 0xb38, 0xb38, 0xb38, 0xb38, 0xb38, 0xb38,
-	0xb38, 0xb38, 0xb38, 0xb38, 0xb38, 0xb62, 0xb62, 0xb87, 0xb87, 0xbab, 0xbc4, 0xbde,
-	0xc01, 0xc1e, 0xc3b, 0xc56, 0xc7e, 0xc97, 0xcb4, 0xcd3, 0xce6, 0xcf2, 0xd0f, 0xd28,
-	0xd28, 0xd41, 0xd5d, 0xd72,
+	0x6a, 0x76, 0x86, 0x92, 0x92, 0x9e, 0xaa, 0xb2, 0xbc, 0xc6, 0xd4, 0xd4,
+	0xd4, 0xe4, 0xe4, 0xea, 0xea, 0xea, 0xf2, 0xfa, 0x102, 0x10e, 0x11c, 0x122,
+	0x12e, 0x13c, 0x14e, 0x15c, 0x16a, 0x174, 0x17e, 0x17e, 0x188, 0x18e, 0x19c, 0x1ac,
+	0x1c5, 0x1d1, 0x1e4, 0x1f6, 0x204, 0x210, 0x21a, 0x222, 0x22e, 0x236, 0x236, 0x240,
+	0x248, 0x256, 0x262, 0x262, 0x277, 0x28d, 0x28d, 0x297, 0x2a6, 0x2a6, 0x2a6, 0x2b7,
+	0x2c3, 0x2d5, 0x2e1, 0x2e9, 0x2f3, 0x2fd, 0x309, 0x309, 0x311, 0x321, 0x329, 0x335,
+	0x343, 0x343, 0x34f, 0x357, 0x357, 0x361, 0x36d, 0x379, 0x389, 0x393, 0x393, 0x3a1,
+	0x3a7, 0x3bb, 0x3d0, 0x3dc, 0x3ea, 0x3ea, 0x3f4, 0x406, 0x416, 0x422, 0x42e, 0x43a,
+	0x444, 0x44c, 0x44c, 0x45f, 0x46b, 0x46b, 0x46f, 0x490, 0x4ab, 0x4ab, 0x4ab, 0x4b7,
+	0x4c5, 0x4c5, 0x4d1, 0x4dd, 0x4e9, 0x4f5, 0x4f5, 0x505, 0x50d, 0x51d, 0x529, 0x535,
+	0x53f, 0x54d, 0x555, 0x56b, 0x57b, 0x57b, 0x585, 0x598, 0x5a2, 0x5ae, 0x5ba, 0x5ce,
+	0x5da, 0x5e2, 0x5ee, 0x5fa, 0x602, 0x60c, 0x621, 0x62f, 0x639, 0x645, 0x64b, 0x655,
+	0x65d, 0x667, 0x675, 0x681, 0x68b, 0x695, 0x69d, 0x6a7, 0x6b1, 0x6bd, 0x6c9, 0x6dd,
+	0x6e5, 0x6ef, 0x6f9, 0x707, 0x707, 0x707, 0x711, 0x719, 0x71f, 0x72b, 0x72b, 0x733,
+	0x73b, 0x73b, 0x745, 0x745, 0x745, 0x745, 0x745, 0x74b, 0x74b, 0x74b, 0x74b, 0x74b,
+	0x74b, 0x74b, 0x74b, 0x74b, 0x74b, 0x757, 0x757, 0x757, 0x757, 0x757, 0x757, 0x757,
+	0x75d, 0x75d, 0x75d, 0x75d, 0x75d, 0x75d, 0x75d, 0x75d, 0x75d, 0x75d, 0x75d, 0x75d,
+	0x75d, 0x75d, 0x767, 0x767, 0x76f, 0x76f, 0x76f, 0x76f, 0x76f, 0x76f, 0x76f, 0x76f,
+	0x76f, 0x76f, 0x76f, 0x76f, 0x76f, 0x777, 0x777, 0x777, 0x777, 0x777, 0x777, 0x777,
+	0x777, 0x777, 0x777, 0x777, 0x777, 0x77f, 0x77f, 0x77f, 0x77f, 0x77f, 0x77f, 0x77f,
+	0x77f, 0x78b, 0x78b, 0x7a0, 0x7a0, 0x7a0, 0x7a0, 0x7a0, 0x7a0, 0x7a0, 0x7aa, 0x7aa,
+	0x7aa, 0x7aa, 0x7aa, 0x7b2, 0x7b2, 0x7c9, 0x7c9, 0x7d3, 0x7d3, 0x7e6, 0x7e6, 0x7e6,
+	0x7ee, 0x7f8, 0x7f8, 0x7f8, 0x7f8, 0x7f8, 0x7f8, 0x7f8, 0x7f8, 0x7f8, 0x7f8, 0x806,
+	0x806, 0x806, 0x806, 0x806, 0x806, 0x806, 0x806, 0x806, 0x806, 0x80a, 0x816, 0x816,
+	0x816, 0x816, 0x816, 0x816, 0x816, 0x816, 0x816, 0x816, 0x816, 0x816, 0x816, 0x816,
+	0x816, 0x816, 0x827, 0x827, 0x827, 0x82d, 0x82d, 0x82d, 0x82d, 0x837, 0x837, 0x837,
+	0x837, 0x837, 0x84c, 0x84c, 0x84c, 0x84c, 0x84c, 0x84c, 0x84c, 0x84c, 0x84c, 0x84c,
+	0x858, 0x862, 0x862, 0x862, 0x862, 0x862, 0x86e, 0x86e, 0x86e, 0x878, 0x878, 0x878,
+	0x878, 0x878, 0x886, 0x89c, 0x89c, 0x89c, 0x89c, 0x89c, 0x89c, 0x8af, 0x8af, 0x8af,
+	0x8af, 0x8bf, 0x8bf, 0x8d4, 0x8e0, 0x8e0, 0x8e0, 0x8e0, 0x8e0, 0x8e0, 0x8e0, 0x8e0,
+	0x8ee, 0x8f8, 0x8f8, 0x8f8, 0x8f8, 0x8f8, 0x902, 0x902, 0x902, 0x902, 0x902, 0x902,
+	0x902, 0x90e, 0x90e, 0x90e, 0x916, 0x916, 0x92b, 0x92b, 0x92b, 0x92f, 0x92f, 0x937,
+	0x937, 0x937, 0x937, 0x937, 0x937, 0x937, 0x937, 0x937, 0x941, 0x941, 0x941, 0x941,
+	0x941, 0x949, 0x959, 0x959, 0x96e, 0x976, 0x976, 0x976, 0x976, 0x976, 0x980, 0x980,
+	0x980, 0x98c, 0x98c, 0x98c, 0x98c, 0x98c, 0x98c, 0x98c, 0x98c, 0x98c, 0x98c, 0x98c,
+	0x994, 0x994, 0x994, 0x994, 0x994, 0x994, 0x9a0, 0x9a0, 0x9a0, 0x9a0, 0x9a0, 0x9aa,
+	0x9bf, 0x9c7, 0x9c7, 0x9c7, 0x9d3, 0x9d3, 0x9d3, 0x9d3, 0x9d3, 0x9d3, 0x9d3, 0x9d3,
+	0x9d3, 0x9d3, 0x9d3, 0x9d3, 0x9d3, 0x9d3, 0x9d3, 0x9d3, 0x9d3, 0x9d3, 0x9d3, 0x9d3,
+	0x9d3, 0x9db, 0x9db, 0x9db, 0x9db, 0x9db, 0x9db, 0x9db, 0x9e5, 0x9e5, 0x9e5, 0x9e5,
+	0x9e5, 0x9e5, 0x9eb, 0x9eb, 0x9eb, 0x9eb, 0x9f9, 0x9f9, 0x9f9, 0x9f9, 0x9f9, 0xa03,
+	0xa03, 0xa03, 0xa03, 0xa03, 0xa0b, 0xa0b, 0xa0b, 0xa26, 0xa26, 0xa26, 0xa32, 0xa32,
+	0xa32, 0xa32, 0xa32, 0xa32, 0xa45, 0xa54, 0xa67, 0xa7a, 0xa7a, 0xa7a, 0xa7a, 0xa7a,
+	0xa7a, 0xa7a, 0xa7a, 0xa7a, 0xa7a, 0xa7a, 0xa91, 0xa91, 0xa91, 0xa91, 0xa91, 0xa91,
+	0xa99, 0xa99, 0xaa1, 0xaa1, 0xaa1, 0xaa1, 0xaa1, 0xaab, 0xaab, 0xaab, 0xaab, 0xaab,
+	0xabc, 0xabc, 0xabc, 0xabc, 0xabc, 0xabc, 0xac8, 0xac8, 0xad6, 0xad6, 0xafc, 0xafc,
+	0xafc, 0xafc, 0xb13, 0xb1b, 0xb1b, 0xb1b, 0xb1b, 0xb1b, 0xb1b, 0xb1b, 0xb23, 0xb23,
+	0xb23, 0xb23, 0xb23, 0xb23, 0xb23, 0xb23, 0xb23, 0xb2b, 0xb2b, 0xb2b, 0xb2b, 0xb2b,
+	0xb2b, 0xb2b, 0xb2b, 0xb2b, 0xb2b, 0xb2b, 0xb57, 0xb57, 0xb7c, 0xb7c, 0xba0, 0xbb9,
+	0xbd3, 0xbf6, 0xc13, 0xc30, 0xc4b, 0xc73, 0xc8c, 0xca9, 0xcc8, 0xcdb, 0xce7, 0xd04,
+	0xd1d, 0xd1d, 0xd36, 0xd52, 0xd67,
 }
 
 const uzLangStr = "" +
@@ -15114,7 +14449,7 @@
 	"ariya fransuzchasiflamandchaBraziliya portugalchasiYevropa portugalchasimoldovan" +
 	" ruminchasoddalashtirilgan xitoychaanʼanaviy xitoycha"
 
-var uzLangIdx = []uint16{ // 604 entries
+var uzLangIdx = []uint16{ // 605 entries
 	0x0, 0x0, 0x8, 0x8, 0x12, 0x19, 0x21, 0x21, 0x28, 0x30, 0x30, 0x30,
 	0x3d, 0x47, 0x51, 0x5a, 0x5a, 0x63, 0x6c, 0x74, 0x7d, 0x86, 0x90, 0x90,
 	0x90, 0x9a, 0x9a, 0xa1, 0xa1, 0xa1, 0xa8, 0xae, 0xb6, 0xb6, 0xbe, 0xc4,
@@ -15162,10 +14497,10 @@
 	0x734, 0x734, 0x734, 0x734, 0x734, 0x734, 0x734, 0x734, 0x734, 0x734, 0x734, 0x734,
 	0x734, 0x734, 0x734, 0x734, 0x734, 0x734, 0x734, 0x734, 0x73e, 0x73e, 0x758, 0x758,
 	0x758, 0x758, 0x765, 0x76d, 0x76d, 0x76d, 0x76d, 0x76d, 0x76d, 0x76d, 0x777, 0x777,
-	0x777, 0x777, 0x777, 0x777, 0x777, 0x777, 0x77f, 0x77f, 0x77f, 0x77f, 0x77f, 0x77f,
-	0x77f, 0x77f, 0x77f, 0x77f, 0x77f, 0x798, 0x798, 0x7a9, 0x7a9, 0x7c3, 0x7d6, 0x7eb,
-	0x801, 0x813, 0x828, 0x828, 0x840, 0x852, 0x864, 0x877, 0x88e, 0x898, 0x8af, 0x8c4,
-	0x8d5, 0x8d5, 0x8ef, 0x902,
+	0x777, 0x777, 0x777, 0x777, 0x777, 0x777, 0x777, 0x77f, 0x77f, 0x77f, 0x77f, 0x77f,
+	0x77f, 0x77f, 0x77f, 0x77f, 0x77f, 0x77f, 0x798, 0x798, 0x7a9, 0x7a9, 0x7c3, 0x7d6,
+	0x7eb, 0x801, 0x813, 0x828, 0x828, 0x840, 0x852, 0x864, 0x877, 0x88e, 0x898, 0x8af,
+	0x8c4, 0x8d5, 0x8d5, 0x8ef, 0x902,
 }
 
 const viLangStr = "" +
@@ -15252,7 +14587,7 @@
 	"ĩ)Tiếng Anh (Anh)Tiếng Anh (Mỹ)Tiếng Tây Ban Nha (Mỹ La tinh)Tiếng FlemishTiếng " +
 	"Bồ Đào Nha (Braxin)Tiếng MoldovaTiếng Xéc bi - Croatia"
 
-var viLangIdx = []uint16{ // 602 entries
+var viLangIdx = []uint16{ // 603 entries
 	0x0, 0xc, 0x1c, 0x2b, 0x3a, 0x46, 0x55, 0x63, 0x74, 0x81, 0x8f, 0x9d,
 	0xaf, 0xbe, 0xcd, 0xdd, 0xec, 0xfb, 0x10a, 0x11d, 0x12b, 0x13a, 0x149, 0x158,
 	0x168, 0x177, 0x183, 0x18f, 0x1a8, 0x1b7, 0x1c4, 0x1d7, 0x1e5, 0x1f3, 0x203, 0x20e,
@@ -15300,10 +14635,10 @@
 	0x1af1, 0x1aff, 0x1b04, 0x1b11, 0x1b1c, 0x1b2b, 0x1b2b, 0x1b3a, 0x1b49, 0x1b49, 0x1b59, 0x1b6c,
 	0x1b7d, 0x1b7d, 0x1b8b, 0x1b8b, 0x1b9c, 0x1b9c, 0x1bab, 0x1bb9, 0x1bc8, 0x1bd8, 0x1bff, 0x1c0d,
 	0x1c1d, 0x1c2c, 0x1c38, 0x1c43, 0x1c43, 0x1c43, 0x1c43, 0x1c43, 0x1c50, 0x1c50, 0x1c5d, 0x1c6b,
-	0x1c79, 0x1c86, 0x1c93, 0x1c93, 0x1ca1, 0x1ca1, 0x1cad, 0x1cb8, 0x1cc3, 0x1cd2, 0x1cdf, 0x1cdf,
-	0x1cf5, 0x1d04, 0x1d1a, 0x1d1a, 0x1d28, 0x1d50, 0x1d5c, 0x1d7d, 0x1d89, 0x1da8, 0x1da8, 0x1dd0,
-	0x1dd0, 0x1dd0, 0x1de1, 0x1df3, 0x1e16, 0x1e16, 0x1e16, 0x1e16, 0x1e16, 0x1e25, 0x1e44, 0x1e44,
-	0x1e53, 0x1e6c,
+	0x1c79, 0x1c86, 0x1c93, 0x1c93, 0x1c93, 0x1ca1, 0x1ca1, 0x1cad, 0x1cb8, 0x1cc3, 0x1cd2, 0x1cdf,
+	0x1cdf, 0x1cf5, 0x1d04, 0x1d1a, 0x1d1a, 0x1d28, 0x1d50, 0x1d5c, 0x1d7d, 0x1d89, 0x1da8, 0x1da8,
+	0x1dd0, 0x1dd0, 0x1dd0, 0x1de1, 0x1df3, 0x1e16, 0x1e16, 0x1e16, 0x1e16, 0x1e16, 0x1e25, 0x1e44,
+	0x1e44, 0x1e53, 0x1e6c,
 }
 
 const zhLangStr = "" +
@@ -15335,7 +14670,7 @@
 	"阿拉伯文奥地利德文瑞士高地德文澳大利亚英文加拿大英文英式英文美式英文拉丁美洲西班牙文欧洲西班牙文墨西哥西班牙文加拿大法文瑞士法文佛兰芒文巴西葡萄牙文欧洲葡萄牙文" +
 	"摩尔多瓦文塞尔维亚-克罗地亚文简体中文繁体中文"
 
-var zhLangIdx = []uint16{ // 604 entries
+var zhLangIdx = []uint16{ // 605 entries
 	0x0, 0x9, 0x1b, 0x2a, 0x39, 0x42, 0x51, 0x5d, 0x69, 0x75, 0x81, 0x8d,
 	0x9c, 0xab, 0xba, 0xc9, 0xd8, 0xe4, 0xf0, 0xf6, 0x105, 0x114, 0x126, 0x12f,
 	0x13b, 0x147, 0x153, 0x15c, 0x16e, 0x17a, 0x186, 0x18f, 0x195, 0x1a1, 0x1aa, 0x1b3,
@@ -15383,10 +14718,10 @@
 	0x154a, 0x1556, 0x1562, 0x156e, 0x1577, 0x1583, 0x1583, 0x158f, 0x159e, 0x159e, 0x15ad, 0x15cb,
 	0x15da, 0x15da, 0x15e6, 0x15e6, 0x15f5, 0x15f5, 0x1601, 0x160d, 0x1619, 0x1622, 0x1634, 0x1646,
 	0x1655, 0x1661, 0x166a, 0x1673, 0x1673, 0x1673, 0x1673, 0x1673, 0x167f, 0x167f, 0x1688, 0x1694,
-	0x16a0, 0x16a9, 0x16b2, 0x16b2, 0x16c1, 0x16c1, 0x16ca, 0x16d3, 0x16dc, 0x16e5, 0x16f1, 0x16f1,
-	0x16f7, 0x1706, 0x1715, 0x1715, 0x1721, 0x173f, 0x1748, 0x1757, 0x1760, 0x1778, 0x1787, 0x1799,
-	0x17ab, 0x17ba, 0x17c6, 0x17d2, 0x17ea, 0x17fc, 0x1811, 0x1820, 0x182c, 0x1838, 0x184a, 0x185c,
-	0x186b, 0x1887, 0x1893, 0x189f,
+	0x16a0, 0x16a9, 0x16b2, 0x16b2, 0x16b2, 0x16c1, 0x16c1, 0x16ca, 0x16d3, 0x16dc, 0x16e5, 0x16f1,
+	0x16f1, 0x16f7, 0x1706, 0x1715, 0x1715, 0x1721, 0x173f, 0x1748, 0x1757, 0x1760, 0x1778, 0x1787,
+	0x1799, 0x17ab, 0x17ba, 0x17c6, 0x17d2, 0x17ea, 0x17fc, 0x1811, 0x1820, 0x182c, 0x1838, 0x184a,
+	0x185c, 0x186b, 0x1887, 0x1893, 0x189f,
 }
 
 const zhHantLangStr = "" +
@@ -15423,7 +14758,7 @@
 	"文瓦紹文吳語卡爾梅克文明格列爾文索加文瑤文雅浦文洋卞文耶姆巴文奈恩加圖文粵語薩波特克文布列斯符號西蘭文澤納加文標準摩洛哥塔馬塞特文祖尼文無語言內容扎扎文現代標準" +
 	"阿拉伯文高地德文(瑞士)佛蘭芒文摩爾多瓦文塞爾維亞克羅埃西亞文簡體中文繁體中文"
 
-var zhHantLangIdx = []uint16{ // 604 entries
+var zhHantLangIdx = []uint16{ // 605 entries
 	0x0, 0x9, 0x18, 0x27, 0x36, 0x3f, 0x4e, 0x5a, 0x66, 0x72, 0x7e, 0x8a,
 	0x99, 0xa8, 0xb7, 0xc6, 0xd5, 0xe1, 0xed, 0xf3, 0x102, 0x111, 0x123, 0x12c,
 	0x138, 0x144, 0x14d, 0x156, 0x168, 0x174, 0x180, 0x189, 0x18f, 0x19b, 0x1a4, 0x1ad,
@@ -15471,10 +14806,10 @@
 	0x1a2e, 0x1a3a, 0x1a43, 0x1a4f, 0x1a58, 0x1a64, 0x1a70, 0x1a7c, 0x1a8b, 0x1a97, 0x1aa6, 0x1abe,
 	0x1aca, 0x1ad6, 0x1ae2, 0x1af4, 0x1b00, 0x1b12, 0x1b21, 0x1b2d, 0x1b39, 0x1b42, 0x1b54, 0x1b63,
 	0x1b6f, 0x1b7b, 0x1b84, 0x1b8d, 0x1b99, 0x1ba5, 0x1bb4, 0x1bcd, 0x1bd9, 0x1be2, 0x1beb, 0x1bf4,
-	0x1c00, 0x1c09, 0x1c12, 0x1c18, 0x1c27, 0x1c36, 0x1c3f, 0x1c45, 0x1c4e, 0x1c57, 0x1c63, 0x1c72,
-	0x1c78, 0x1c87, 0x1c96, 0x1c9f, 0x1cab, 0x1cc9, 0x1cd2, 0x1ce1, 0x1cea, 0x1d02, 0x1d02, 0x1d1a,
-	0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d26, 0x1d26, 0x1d26,
-	0x1d35, 0x1d53, 0x1d5f, 0x1d6b,
+	0x1c00, 0x1c09, 0x1c12, 0x1c12, 0x1c18, 0x1c27, 0x1c36, 0x1c3f, 0x1c45, 0x1c4e, 0x1c57, 0x1c63,
+	0x1c72, 0x1c78, 0x1c87, 0x1c96, 0x1c9f, 0x1cab, 0x1cc9, 0x1cd2, 0x1ce1, 0x1cea, 0x1d02, 0x1d02,
+	0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d26, 0x1d26,
+	0x1d26, 0x1d35, 0x1d53, 0x1d5f, 0x1d6b,
 }
 
 const zuLangStr = "" +
@@ -15516,7 +14851,7 @@
 	"Frenchisi-Swiss Frenchisi-Flemishisi-Brazillian Portugueseisi-European Portugues" +
 	"eisi-Moldavianisi-Sipmlified Chineseisi-Traditional Chinese"
 
-var zuLangIdx = []uint16{ // 604 entries
+var zuLangIdx = []uint16{ // 605 entries
 	0x0, 0x0, 0xd, 0xd, 0x1a, 0x22, 0x2d, 0x2d, 0x37, 0x43, 0x43, 0x4d,
 	0x5c, 0x67, 0x75, 0x80, 0x80, 0x8b, 0x96, 0xa1, 0xab, 0xb6, 0xc1, 0xc1,
 	0xc1, 0xcd, 0xcd, 0xd6, 0xd6, 0xd6, 0xdf, 0xe9, 0xf3, 0xfd, 0x109, 0x110,
@@ -15564,13 +14899,13 @@
 	0x976, 0x976, 0x97f, 0x97f, 0x97f, 0x97f, 0x97f, 0x98a, 0x98a, 0x98a, 0x98a, 0x98a,
 	0x997, 0x997, 0x997, 0x997, 0x997, 0x997, 0x9a2, 0x9a2, 0x9ad, 0x9ad, 0x9c8, 0x9c8,
 	0x9c8, 0x9c8, 0x9d8, 0x9df, 0x9df, 0x9df, 0x9df, 0x9df, 0x9df, 0x9df, 0x9e8, 0x9e8,
-	0x9e8, 0x9e8, 0x9e8, 0x9e8, 0x9e8, 0x9e8, 0x9f0, 0x9f0, 0x9f0, 0x9f0, 0x9f0, 0x9f0,
-	0x9f0, 0x9f0, 0x9f0, 0x9f0, 0x9f0, 0xa0f, 0xa0f, 0xa28, 0xa28, 0xa49, 0xa5c, 0xa71,
-	0xa88, 0xa9a, 0xaab, 0xabd, 0xad7, 0xad7, 0xaea, 0xafd, 0xb0d, 0xb18, 0xb31, 0xb48,
-	0xb55, 0xb55, 0xb6b, 0xb82,
+	0x9e8, 0x9e8, 0x9e8, 0x9e8, 0x9e8, 0x9e8, 0x9e8, 0x9f0, 0x9f0, 0x9f0, 0x9f0, 0x9f0,
+	0x9f0, 0x9f0, 0x9f0, 0x9f0, 0x9f0, 0x9f0, 0xa0f, 0xa0f, 0xa28, 0xa28, 0xa49, 0xa5c,
+	0xa71, 0xa88, 0xa9a, 0xaab, 0xabd, 0xad7, 0xad7, 0xaea, 0xafd, 0xb0d, 0xb18, 0xb31,
+	0xb48, 0xb55, 0xb55, 0xb6b, 0xb82,
 }
 
-// Total size for lang: 852872 bytes (852 KB)
+// Total size for lang: 835690 bytes (835 KB)
 
 // Number of keys: 164
 var (
@@ -15581,7 +14916,7 @@
 	}
 )
 
-var scriptHeaders = [220]header{
+var scriptHeaders = [210]header{
 	{ // af
 		afScriptStr,
 		afScriptIdx,
@@ -15596,7 +14931,6 @@
 		arScriptStr,
 		arScriptIdx,
 	},
-	{}, // ar-AE
 	{}, // ar-EG
 	{ // as
 		"বঙালী",
@@ -15631,7 +14965,14 @@
 		azScriptStr,
 		azScriptIdx,
 	},
-	{}, // az-Cyrl
+	{ // az-Cyrl
+		"Кирил",
+		[]uint16{ // 27 entries
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0xa,
+		},
+	},
 	{}, // bas
 	{ // be
 		"арабскаеармянскаекірылічныгрузінскаеспрошчанае кітайскаетрадыцыйнае кітайскаегаб" +
@@ -15664,16 +15005,6 @@
 		bnScriptStr,
 		bnScriptIdx,
 	},
-	{ // bn-IN
-		"ঐতিহ্যবাহী",
-		[]uint16{ // 49 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x1e,
-		},
-	},
 	{ // bo
 		"བོད་ཡིག་",
 		[]uint16{ // 150 entries
@@ -15983,53 +15314,28 @@
 		enScriptStr,
 		enScriptIdx,
 	},
-	{ // en-AU
-		"ChamLomaModiMoonThai",
-		[]uint16{ // 149 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x4,
-			0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
-			0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
-			0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
-			0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
-			0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x8, 0x8, 0x8, 0x8, 0x8,
-			0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0xc, 0xc, 0x10, 0x10, 0x10, 0x10,
-			0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-			0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-			0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-			0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-			0x10, 0x10, 0x10, 0x10, 0x14,
-		},
-	},
-	{ // en-GB
-		enGBScriptStr,
-		enGBScriptIdx,
-	},
+	{}, // en-AU
 	{}, // eo
 	{ // es
 		esScriptStr,
 		esScriptIdx,
 	},
-	{ // es-419
-		es419ScriptStr,
-		es419ScriptIdx,
-	},
 	{}, // es-CL
 	{ // es-MX
-		"han simplificadohan tradicionallaocingaléstelugú",
+		"telugú",
 		[]uint16{ // 144 entries
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10,
-			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
-			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
-			0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x2b, 0x2b, 0x2b, 0x2b,
-			0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x32,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7,
 		},
 	},
 	{ // et
@@ -16643,12 +15949,10 @@
 		neScriptStr,
 		neScriptIdx,
 	},
-	{}, // ne-IN
 	{ // nl
 		nlScriptStr,
 		nlScriptIdx,
 	},
-	{}, // nl-BE
 	{}, // nmg
 	{ // nn
 		"arabiskarmiskarmenskavestiskbalinesiskbatakbengaliblissymbolbopomofobrahmibraill" +
@@ -16834,7 +16138,6 @@
 		ruScriptStr,
 		ruScriptIdx,
 	},
-	{}, // ru-UA
 	{}, // rw
 	{}, // rwk
 	{ // sah
@@ -16946,70 +16249,19 @@
 		srScriptIdx,
 	},
 	{ // sr-Latn
-		"arapsko pismoimperijsko aramejsko pismojermensko pismoavestansko pismobalijsko p" +
-			"ismobatak pismobengalsko pismoblisimbolično pismobopomofo pismobramansko pismoBr" +
-			"ajevo pismobuginsko pismobuhidsko pismočakmansko pismoujedinjeni kanadski aborid" +
-			"žinski silabicikarijsko pismočamsko pismoČerokicirt pismokoptičko pismokiparsko " +
-			"pismoćirilicaStaroslovenska crkvena ćirilicadevanagariDezeretegipatsko narodno p" +
-			"ismoegipatsko hijeratsko pismoegipatski hijeroglifietiopsko pismogruzijsko khuts" +
-			"uri pismogruzijsko pismoglagoljicaGotikagrčko pismogudžaratsko pismogurmuki pism" +
-			"ohangulhanhanunopojednostavljeno han pismotradicionalno han pismohebrejsko pismo" +
-			"hiraganapahav hmong pismoKatakana ili Hiraganastaromađarsko pismoinduško pismost" +
-			"ari italikjavansko pismojapansko pismokajah-li pismokatakanakarošti pismokmersko" +
-			" pismokanada pismokorejsko pismokaitilanna pismolaoško pismolatinica (fraktur va" +
-			"rijanta)galska latinicalatinicalepča pismolimbu pismolinearno A pismolinearno B " +
-			"pismolisijsko pismolidijsko pismomandeansko pismomanihejsko pismomajanski hijero" +
-			"glifimeroitik pismomalajalam pismomongolsko pismomesečevo pismomeitei majek pism" +
-			"omijanmarsko pismon’ko pismoogamsko pismool čiki pismoorkonsko pismoorijansko pi" +
-			"smoosmanjansko pismostaro permiksko pismopags-pa pismopisani pahlavipsalter pahl" +
-			"avipahlavi pismoFeničansko pismoporald fonetsko pismopisani partianrejang pismor" +
-			"ongorongo pismorunsko pismosamaritansko pismosarati pismosauraštra pismoznakovno" +
-			" pismošavijansko pismosinhalsko pismosudansko pismosiloti nagri pismosirijsko pi" +
-			"smosirijsko estrangelo pismozapadnosirijsko pismopismo istočne Sirijetagbanva pi" +
-			"smotai le pismonovi tai luetamilsko pismotai viet pismotelugu pismotengvar pismo" +
-			"tifinag pismoTagalogthana pismotajlandsko pismotibetansko pismougaritsko pismova" +
-			"i pismovidljivi govorstaropersijsko pismosumersko-akadsko kuneiform pismoji pism" +
-			"onasledno pismomatematička notacijasimbolinepisani jezikzajedničko pismonepoznat" +
-			"o pismo",
-		[]uint16{ // 165 entries
-			0x0, 0x0, 0x0, 0xd, 0x27, 0x36, 0x46, 0x54, 0x54, 0x54, 0x5f, 0x6e,
-			0x82, 0x90, 0x9f, 0xac, 0xba, 0xc8, 0xd8, 0x102, 0x110, 0x11d, 0x124, 0x12e,
-			0x13d, 0x14b, 0x154, 0x174, 0x17e, 0x185, 0x185, 0x19c, 0x1b6, 0x1cb, 0x1cb, 0x1d9,
-			0x1f1, 0x200, 0x20a, 0x210, 0x210, 0x21c, 0x22e, 0x23b, 0x241, 0x244, 0x24a, 0x264,
-			0x27b, 0x28a, 0x292, 0x292, 0x2a3, 0x2b8, 0x2cc, 0x2da, 0x2e6, 0x2f4, 0x302, 0x302,
-			0x310, 0x318, 0x326, 0x333, 0x333, 0x33f, 0x34d, 0x34d, 0x352, 0x35d, 0x36a, 0x386,
-			0x395, 0x39d, 0x3a9, 0x3b4, 0x3c4, 0x3d4, 0x3d4, 0x3d4, 0x3e2, 0x3f0, 0x3f0, 0x400,
-			0x410, 0x424, 0x424, 0x424, 0x432, 0x441, 0x441, 0x450, 0x45f, 0x45f, 0x471, 0x482,
-			0x482, 0x482, 0x482, 0x48e, 0x48e, 0x49b, 0x4a9, 0x4b7, 0x4c6, 0x4d7, 0x4d7, 0x4d7,
-			0x4ec, 0x4f9, 0x507, 0x516, 0x523, 0x534, 0x549, 0x557, 0x563, 0x573, 0x57f, 0x591,
-			0x59d, 0x59d, 0x5ad, 0x5bb, 0x5cc, 0x5cc, 0x5cc, 0x5cc, 0x5db, 0x5db, 0x5e9, 0x5fb,
-			0x609, 0x622, 0x637, 0x64c, 0x65a, 0x65a, 0x666, 0x672, 0x680, 0x680, 0x68e, 0x69a,
-			0x6a7, 0x6b4, 0x6bb, 0x6c6, 0x6d6, 0x6e6, 0x6e6, 0x6f5, 0x6fe, 0x70c, 0x70c, 0x70c,
-			0x720, 0x740, 0x748, 0x756, 0x76b, 0x772, 0x780, 0x791, 0x7a0,
-		},
+		srLatnScriptStr,
+		srLatnScriptIdx,
 	},
 	{ // sv
 		svScriptStr,
 		svScriptIdx,
 	},
-	{ // sv-FI
-		"kanameroitiska",
-		[]uint16{ // 89 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
-			0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
-			0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
-			0x4, 0x4, 0x4, 0x4, 0xe,
-		},
-	},
+	{}, // sv-FI
 	{ // sw
 		swScriptStr,
 		swScriptIdx,
 	},
-	{}, // swc
+	{}, // sw-CD
 	{ // ta
 		taScriptStr,
 		taScriptIdx,
@@ -17235,77 +16487,16 @@
 		zhScriptStr,
 		zhScriptIdx,
 	},
-	{ // zh-Hans-HK
-		"卡纳塔克文辛哈拉文塔安娜文未知语系",
-		[]uint16{ // 165 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x1b, 0x1b, 0x1b, 0x1b,
-			0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b,
-			0x1b, 0x1b, 0x1b, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
-			0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x33,
-		},
-	},
-	{ // zh-Hans-MO
-		"卡纳塔克文辛哈拉文塔安娜文未知语系",
-		[]uint16{ // 165 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x1b, 0x1b, 0x1b, 0x1b,
-			0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b,
-			0x1b, 0x1b, 0x1b, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
-			0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x33,
-		},
-	},
-	{ // zh-Hans-SG
-		"卡纳塔克文辛哈拉文塔安娜文未知语系",
-		[]uint16{ // 165 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x1b, 0x1b, 0x1b, 0x1b,
-			0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b,
-			0x1b, 0x1b, 0x1b, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
-			0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x33,
-		},
-	},
 	{ // zh-Hant
 		zhHantScriptStr,
 		zhHantScriptIdx,
 	},
 	{ // zh-Hant-HK
-		"西里爾語字母梵文韓文字母簡體字繁體字拉丁字母",
-		[]uint16{ // 74 entries
+		"西里爾文梵文",
+		[]uint16{ // 29 entries
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x12, 0x12, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
-			0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x24, 0x24, 0x24, 0x2d,
-			0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-			0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-			0x36, 0x42,
+			0x0, 0x0, 0xc, 0xc, 0x12,
 		},
 	},
 	{ // zu
@@ -17725,74 +16916,38 @@
 	0x58d, 0x5a6, 0x5a8, 0x5b1, 0x5c6, 0x5cd, 0x5d6, 0x5dc, 0x5ea,
 }
 
-const enGBScriptStr = "" +
-	"Thai"
-
-var enGBScriptIdx = []uint16{ // 149 entries
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x4,
-}
-
 const esScriptStr = "" +
 	"árabearmenioavésticobalinésbatakbengalísímbolos blisbopomofobrahmibraillebuginés" +
 	"buhidsímbolos aborígenes canadienses unificadoscariochamcherokeecirthcoptochipri" +
 	"otacirílicocirílico del antiguo eslavo eclesiásticodevanagarideseretegipcio demó" +
 	"ticoegipcio hieráticojeroglíficos egipciosetiópicogeorgiano eclesiásticogeorgian" +
-	"oglagolíticogóticogriegogujaratigurmujihangulhanhanunoohanzi simplificadohanzi t" +
-	"radicionalhebreohiraganapahawh hmongkatakana o hiraganahúngaro antiguoIndio (har" +
-	"appan)antigua bastardillajavanésjaponéskayah likatakanakharosthijemercanaréscore" +
-	"anolannalaolatino frakturlatino gaélicolatínlepchalimbulineal Alineal Bliciolidi" +
-	"omandeojeroglíficos mayasmeroíticomalayálammongolmoonmanipuribirmanon’kooghamol " +
-	"cikiorkhonoriyaosmaniyapermiano antiguophags-pafenicioPollard Miaorejangrongo-ro" +
-	"ngorúnicosaratisaurashtraSignWritingshavianosingaléssundanéssyloti nagrisiriacos" +
-	"iriaco estrangelosiriaco occidentalsiriaco orientaltagbanúatai lenuevo tai lueta" +
-	"miltelugutengwartifinaghtagalothaanatailandéstibetanougaríticovailenguaje visibl" +
-	"epersa antiguocuneiforme sumerio-acadioyiheredadosímbolosno escritocomúnalfabeto" +
-	" desconocido"
+	"oglagolíticogóticogriegogujaratigurmujihangulhanhanunoohan simplificadohan tradi" +
+	"cionalhebreohiraganapahawh hmongkatakana o hiraganahúngaro antiguoIndio (harappa" +
+	"n)antigua bastardillajavanésjaponéskayah likatakanakharosthijemercanaréscoreanol" +
+	"annalaolatino frakturlatino gaélicolatínlepchalimbulineal Alineal Bliciolidioman" +
+	"deojeroglíficos mayasmeroíticomalayálammongolmoonmanipuribirmanon’kooghamol ciki" +
+	"orkhonoriyaosmaniyapermiano antiguophags-pafenicioPollard Miaorejangrongo-rongor" +
+	"únicosaratisaurashtraSignWritingshavianocingaléssundanéssyloti nagrisiriacosiria" +
+	"co estrangelosiriaco occidentalsiriaco orientaltagbanúatai lenuevo tai luetamilt" +
+	"elugutengwartifinaghtagalothaanatailandéstibetanougaríticovailenguaje visibleper" +
+	"sa antiguocuneiforme sumerio-acadioyiheredadosímbolosno escritocomúnalfabeto des" +
+	"conocido"
 
 var esScriptIdx = []uint16{ // 165 entries
 	0x0, 0x0, 0x0, 0x6, 0x6, 0xd, 0x16, 0x1e, 0x1e, 0x1e, 0x23, 0x2b,
 	0x39, 0x41, 0x47, 0x4e, 0x56, 0x5b, 0x5b, 0x87, 0x8c, 0x90, 0x98, 0x9d,
 	0xa2, 0xab, 0xb4, 0xde, 0xe8, 0xef, 0xef, 0x100, 0x112, 0x128, 0x128, 0x131,
-	0x148, 0x151, 0x15d, 0x164, 0x164, 0x16a, 0x172, 0x179, 0x17f, 0x182, 0x189, 0x19b,
-	0x1ac, 0x1b2, 0x1ba, 0x1ba, 0x1c6, 0x1d9, 0x1e9, 0x1f9, 0x20c, 0x214, 0x21c, 0x21c,
-	0x224, 0x22c, 0x235, 0x23a, 0x23a, 0x242, 0x249, 0x249, 0x249, 0x24e, 0x251, 0x25f,
-	0x26e, 0x274, 0x27a, 0x27f, 0x287, 0x28f, 0x28f, 0x28f, 0x294, 0x299, 0x299, 0x29f,
-	0x29f, 0x2b2, 0x2b2, 0x2b2, 0x2bc, 0x2c6, 0x2c6, 0x2cc, 0x2d0, 0x2d0, 0x2d8, 0x2df,
-	0x2df, 0x2df, 0x2df, 0x2e5, 0x2e5, 0x2ea, 0x2f1, 0x2f7, 0x2fc, 0x304, 0x304, 0x304,
-	0x314, 0x31c, 0x31c, 0x31c, 0x31c, 0x323, 0x32f, 0x32f, 0x335, 0x340, 0x347, 0x347,
-	0x34d, 0x34d, 0x357, 0x362, 0x36a, 0x36a, 0x36a, 0x36a, 0x373, 0x373, 0x37c, 0x388,
-	0x38f, 0x3a1, 0x3b3, 0x3c3, 0x3cc, 0x3cc, 0x3d2, 0x3df, 0x3e4, 0x3e4, 0x3e4, 0x3ea,
-	0x3f1, 0x3f9, 0x3ff, 0x405, 0x40f, 0x417, 0x417, 0x421, 0x424, 0x434, 0x434, 0x434,
-	0x441, 0x45a, 0x45c, 0x464, 0x464, 0x46d, 0x477, 0x47d, 0x491,
-}
-
-const es419ScriptStr = "" +
-	"Han simplificadoHan tradicionallaosianomalayalamsinhala"
-
-var es419ScriptIdx = []uint16{ // 129 entries
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10,
-	0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
-	0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x27, 0x27,
-	0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
-	0x27, 0x27, 0x27, 0x27, 0x27, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
-	0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
-	0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
-	0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37,
+	0x148, 0x151, 0x15d, 0x164, 0x164, 0x16a, 0x172, 0x179, 0x17f, 0x182, 0x189, 0x199,
+	0x1a8, 0x1ae, 0x1b6, 0x1b6, 0x1c2, 0x1d5, 0x1e5, 0x1f5, 0x208, 0x210, 0x218, 0x218,
+	0x220, 0x228, 0x231, 0x236, 0x236, 0x23e, 0x245, 0x245, 0x245, 0x24a, 0x24d, 0x25b,
+	0x26a, 0x270, 0x276, 0x27b, 0x283, 0x28b, 0x28b, 0x28b, 0x290, 0x295, 0x295, 0x29b,
+	0x29b, 0x2ae, 0x2ae, 0x2ae, 0x2b8, 0x2c2, 0x2c2, 0x2c8, 0x2cc, 0x2cc, 0x2d4, 0x2db,
+	0x2db, 0x2db, 0x2db, 0x2e1, 0x2e1, 0x2e6, 0x2ed, 0x2f3, 0x2f8, 0x300, 0x300, 0x300,
+	0x310, 0x318, 0x318, 0x318, 0x318, 0x31f, 0x32b, 0x32b, 0x331, 0x33c, 0x343, 0x343,
+	0x349, 0x349, 0x353, 0x35e, 0x366, 0x366, 0x366, 0x366, 0x36f, 0x36f, 0x378, 0x384,
+	0x38b, 0x39d, 0x3af, 0x3bf, 0x3c8, 0x3c8, 0x3ce, 0x3db, 0x3e0, 0x3e0, 0x3e0, 0x3e6,
+	0x3ed, 0x3f5, 0x3fb, 0x401, 0x40b, 0x413, 0x413, 0x41d, 0x420, 0x430, 0x430, 0x430,
+	0x43d, 0x456, 0x458, 0x460, 0x460, 0x469, 0x473, 0x479, 0x48d,
 }
 
 const etScriptStr = "" +
@@ -17967,20 +17122,13 @@
 }
 
 const frCAScriptStr = "" +
-	"devanagarigujaratichinois simplifiéchinois traditionnelmalayâlamoriyâcingalais"
+	"devanagarigujarati"
 
-var frCAScriptIdx = []uint16{ // 129 entries
+var frCAScriptIdx = []uint16{ // 43 entries
 	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 	0x0, 0x0, 0x0, 0x0, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa,
-	0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0x12, 0x12, 0x12, 0x12, 0x12, 0x24,
-	0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
-	0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
-	0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
-	0x38, 0x38, 0x38, 0x38, 0x38, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
-	0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x48, 0x48, 0x48, 0x48,
-	0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-	0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x51,
+	0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0x12,
 }
 
 const guScriptStr = "" +
@@ -18820,18 +17968,18 @@
 	"eenvoudigd Chineestraditioneel ChineesHebreeuwsHiraganaAnatolische hiërogliefenP" +
 	"ahawh HmongKatakana of HiraganaOudhongaarsIndusOud-italischJavaansJapansJurchenK" +
 	"ayah LiKatakanaKharoshthiKhmerKhojkiKannadaKoreaansKpelleKaithiLannaLaotiaansGot" +
-	"isch LatijnGaelisch LatijnLatijnLepchaLimbuLineair ALineair BFraserLomaLycischLy" +
-	"dischMahajaniMandaeansManicheaansMayahiërogliefenMendeMeroitisch cursiefMeroïtis" +
-	"chMalayalamModiMongoolsMoonMroMeiteiBirmaansOud Noord-ArabischNabateaansNaxi Geb" +
-	"aN’KoNüshuOghamOl ChikiOrkhonOdiaOsmanyaPalmyreensPau Cin HauOudpermischPhags-pa" +
-	"Inscriptioneel PahlaviPsalmen PahlaviBoek PahlaviFoenicischPollard-fonetischInsc" +
-	"riptioneel ParthischRejangRongorongoRunicSamaritaansSaratiOud Zuid-ArabischSaura" +
-	"shtraSignWritingShavianSharadaSiddhamSindhiSingaleesSora SompengSoendaneesSyloti" +
-	" NagriSyriacEstrangelo ArameesWest-ArameesOost-ArameesTagbanwaTakriTai LeNieuw T" +
-	"ai LueTamilTangutTai VietTeluguTengwarTifinaghTagalogThaanaThaiTibetaansTirhutaU" +
-	"garitischVaiZichtbare spraakVarang KshitiWoleaiOudperzischSumero-Akkadian Cuneif" +
-	"ormYiOvergeërfdWiskundige notatieSymbolenongeschrevenalgemeenonbekend schriftsys" +
-	"teem"
+	"isch LatijnsGaelisch LatijnsLatijnsLepchaLimbuLineair ALineair BFraserLomaLycisc" +
+	"hLydischMahajaniMandaeansManicheaansMayahiërogliefenMendeMeroitisch cursiefMeroï" +
+	"tischMalayalamModiMongoolsMoonMroMeiteiBirmaansOud Noord-ArabischNabateaansNaxi " +
+	"GebaN’KoNüshuOghamOl ChikiOrkhonOdiaOsmanyaPalmyreensPau Cin HauOudpermischPhags" +
+	"-paInscriptioneel PahlaviPsalmen PahlaviBoek PahlaviFoenicischPollard-fonetischI" +
+	"nscriptioneel ParthischRejangRongorongoRunicSamaritaansSaratiOud Zuid-ArabischSa" +
+	"urashtraSignWritingShavianSharadaSiddhamSindhiSingaleesSora SompengSoendaneesSyl" +
+	"oti NagriSyriacEstrangelo ArameesWest-ArameesOost-ArameesTagbanwaTakriTai LeNieu" +
+	"w Tai LueTamilTangutTai VietTeluguTengwarTifinaghTagalogThaanaThaiTibetaansTirhu" +
+	"taUgaritischVaiZichtbare spraakVarang KshitiWoleaiOudperzischSumero-Akkadian Cun" +
+	"eiformYiOvergeërfdWiskundige notatieSymbolenongeschrevenalgemeenonbekend schrift" +
+	"systeem"
 
 var nlScriptIdx = []uint16{ // 165 entries
 	0x0, 0x6, 0x19, 0x21, 0x33, 0x3a, 0x43, 0x4b, 0x51, 0x5a, 0x5f, 0x67,
@@ -18839,15 +17987,15 @@
 	0xe1, 0xe9, 0xf3, 0x10d, 0x117, 0x11e, 0x132, 0x145, 0x15a, 0x172, 0x179, 0x183,
 	0x195, 0x19e, 0x1aa, 0x1b2, 0x1b9, 0x1bf, 0x1c7, 0x1cf, 0x1d5, 0x1d8, 0x1df, 0x1f4,
 	0x208, 0x211, 0x219, 0x232, 0x23e, 0x252, 0x25d, 0x262, 0x26e, 0x275, 0x27b, 0x282,
-	0x28a, 0x292, 0x29c, 0x2a1, 0x2a7, 0x2ae, 0x2b6, 0x2bc, 0x2c2, 0x2c7, 0x2d0, 0x2de,
-	0x2ed, 0x2f3, 0x2f9, 0x2fe, 0x307, 0x310, 0x316, 0x31a, 0x321, 0x328, 0x330, 0x339,
-	0x344, 0x355, 0x35a, 0x36c, 0x377, 0x380, 0x384, 0x38c, 0x390, 0x393, 0x399, 0x3a1,
-	0x3b3, 0x3bd, 0x3c6, 0x3cc, 0x3d2, 0x3d7, 0x3df, 0x3e5, 0x3e9, 0x3f0, 0x3fa, 0x405,
-	0x410, 0x418, 0x42e, 0x43d, 0x449, 0x453, 0x464, 0x47c, 0x482, 0x48c, 0x491, 0x49c,
-	0x4a2, 0x4b3, 0x4bd, 0x4c8, 0x4cf, 0x4d6, 0x4dd, 0x4e3, 0x4ec, 0x4f8, 0x502, 0x50e,
-	0x514, 0x526, 0x532, 0x53e, 0x546, 0x54b, 0x551, 0x55e, 0x563, 0x569, 0x571, 0x577,
-	0x57e, 0x586, 0x58d, 0x593, 0x597, 0x5a0, 0x5a7, 0x5b1, 0x5b4, 0x5c4, 0x5d1, 0x5d7,
-	0x5e2, 0x5fb, 0x5fd, 0x608, 0x61a, 0x622, 0x62e, 0x636, 0x64d,
+	0x28a, 0x292, 0x29c, 0x2a1, 0x2a7, 0x2ae, 0x2b6, 0x2bc, 0x2c2, 0x2c7, 0x2d0, 0x2df,
+	0x2ef, 0x2f6, 0x2fc, 0x301, 0x30a, 0x313, 0x319, 0x31d, 0x324, 0x32b, 0x333, 0x33c,
+	0x347, 0x358, 0x35d, 0x36f, 0x37a, 0x383, 0x387, 0x38f, 0x393, 0x396, 0x39c, 0x3a4,
+	0x3b6, 0x3c0, 0x3c9, 0x3cf, 0x3d5, 0x3da, 0x3e2, 0x3e8, 0x3ec, 0x3f3, 0x3fd, 0x408,
+	0x413, 0x41b, 0x431, 0x440, 0x44c, 0x456, 0x467, 0x47f, 0x485, 0x48f, 0x494, 0x49f,
+	0x4a5, 0x4b6, 0x4c0, 0x4cb, 0x4d2, 0x4d9, 0x4e0, 0x4e6, 0x4ef, 0x4fb, 0x505, 0x511,
+	0x517, 0x529, 0x535, 0x541, 0x549, 0x54e, 0x554, 0x561, 0x566, 0x56c, 0x574, 0x57a,
+	0x581, 0x589, 0x590, 0x596, 0x59a, 0x5a3, 0x5aa, 0x5b4, 0x5b7, 0x5c7, 0x5d4, 0x5da,
+	0x5e5, 0x5fe, 0x600, 0x60b, 0x61d, 0x625, 0x631, 0x639, 0x650,
 }
 
 const noScriptStr = "" +
@@ -18957,7 +18105,7 @@
 	"ianogeorgianoglagolíticogóticogregogujeratigurmuquihangulhanhanunoohan simplific" +
 	"adohan tradicionalhebraicohiraganapahawh hmongkatakana ou hiraganahúngaro antigo" +
 	"indoitálico antigojavanêsjaponêskayah likatakanakharoshthikhmerkannadacoreanokth" +
-	"ilannalaolatim frakturlatim gaélicolatimlepchalimbuA linearB linearlisulíciolídi" +
+	"ilannalaolatim frakturlatim gaélicolatimlepchalimbulinear Alinear Blisulíciolídi" +
 	"omandaicomaniqueanohieróglifos maiasmeroítico cursivomeroíticomalaialamongolmoon" +
 	"meitei mayekbirmanêsn’koogâmicool chikiorkhonoriyaosmaniapérmico antigophags-pap" +
 	"hliphlppahlavi antigofeníciofonético pollardprtirejangrongorongorúnicosamaritano" +
@@ -18984,25 +18132,24 @@
 }
 
 const ptPTScriptStr = "" +
-	"arméniosímbolos Blissegípcio demóticoegípcio hieráticoguzeratehan simplificadoha" +
-	"n tradicionalinduslinear Alinear Bsiloti nagritai letelugucuneiforme sumero-acad" +
-	"ianosímbolosnão escrito"
+	"arménioegípcio demóticoegípcio hieráticoguzerateindussiloti nagritai letelugusím" +
+	"bolosnão escrito"
 
 var ptPTScriptIdx = []uint16{ // 163 entries
 	0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8,
-	0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-	0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x29, 0x3c, 0x3c, 0x3c, 0x3c,
-	0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x44, 0x44, 0x44, 0x44, 0x44, 0x54,
-	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x68, 0x68, 0x68, 0x68, 0x68,
-	0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68,
-	0x68, 0x68, 0x68, 0x68, 0x70, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-	0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-	0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-	0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-	0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x84,
-	0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x90,
-	0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-	0x90, 0xaa, 0xaa, 0xaa, 0xaa, 0xb3, 0xbf,
+	0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8,
+	0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x1a, 0x2d, 0x2d, 0x2d, 0x2d,
+	0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
+	0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a,
+	0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a,
+	0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a,
+	0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a,
+	0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a,
+	0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a,
+	0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x46,
+	0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x52,
+	0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52,
+	0x52, 0x52, 0x52, 0x52, 0x52, 0x5b, 0x67,
 }
 
 const roScriptStr = "" +
@@ -19035,27 +18182,27 @@
 }
 
 const ruScriptStr = "" +
-	"афакаарабицаАрамейскаяармянскаяАвестийскаяБалийскаябамумбасса (вах)Батакскаябенг" +
-	"альскаяБлиссимволикабопомофоБрахмиБрайляБугинизийскаяБухидЧакмийскаяКанадское сл" +
-	"оговое письмоКарийскаяЧамскаяЧерокиКиртКоптскаяКипрскаякириллицаСтарославянскаяд" +
-	"еванагариДезеретдуплоянская скорописьЕгипетская демотическаяЕгипетская иератичес" +
-	"каяЕгипетская иероглифическаяэфиопскаяГрузинская хуцуригрузинскаяГлаголицаГотска" +
-	"ягрантхагреческаягуджаратигурмукхихангылькитайскаяХанунуупрощенная китайскаятрад" +
-	"иционная китайскаяивритхираганалувийские иероглифыПахау хмонгКатакана или хирага" +
-	"наСтаровенгерскаяХараппская (письменность долины Инда)СтароитальянскаяЯванскаяяп" +
-	"онскаячжурчжэньскаяКайакатаканаКхароштхикхмерскаяходжикиканнадакорейскаякпеллеКа" +
-	"йтхиЛанналаосскаяЛатинская фрактураГэльская латинскаялатиницаЛепхаЛимбуЛинейное " +
-	"письмо АЛинейное письмо БлисуломаЛицианЛидийскаяМандейскаяМанихейскаяМайямендеме" +
-	"роитская курсивнаяМероитскаямалаяльскаямонгольскаяАзбука МунамроМанипуримьянманс" +
-	"каясеверноаравийскоенабатейскаянаси гебаНконюй-шуОгамическаяОл ЧикиОрхоно-енисей" +
-	"скаяорияОсманскаяпальмирыДревнепермскаяПагспапехлевийскаяпахлави псалтирнаяПахла" +
-	"ви книжнаяФиникийскаяПоллардовская фонетикапарфянскаяРеджангскаяРонго-ронгоРунич" +
-	"ескаяСамаритянскаяСаратистароюжноарабскаяСаураштраЯзык знаковАлфавит Шоушарадакх" +
-	"удавадисингальскаясора-сонпенгСунданскаяСилоти НагриСирийскаяСирийская эстрангел" +
-	"оЗападносирийскаяВосточно-сирийскаяТагбанватакриТайский ЛеНовый Тайский Летамиль" +
-	"скаятангутское менятай-вьеттелугуТенгварскаяДревнеливийскаяТагалогтаанатайскаяти" +
-	"бетскаятирхутаУгаритскаяВайскаяВидимая речьваранг-кшитиволеаиСтароперсидскаяШуме" +
-	"ро-аккадская клинописьИУнаследованнаяматематические обозначениясимволыбесписьмен" +
+	"афакаарабицаарамейскаяармянскаяавестийскаябалийскаябамумбасса (вах)батакскаябенг" +
+	"альскаяблиссимволикабопомофобрахмибрайлябугинизийскаябухидчакмийскаяканадское сл" +
+	"оговое письмокарийскаячамскаячерокикирткоптскаякипрскаякириллицастарославянскаяд" +
+	"еванагаридезеретдуплоянская скорописьегипетская демотическаяегипетская иератичес" +
+	"каяегипетская иероглифическаяэфиопскаягрузинская хуцуригрузинскаяглаголицаготска" +
+	"ягрантхагреческаягуджаратигурмукхихангылькитайскаяханунуупрощенная китайскаятрад" +
+	"иционная китайскаяивритхираганалувийские иероглифыпахау хмонгкатакана или хирага" +
+	"настаровенгерскаяхараппская (письменность долины Инда)староитальянскаяяванскаяяп" +
+	"онскаячжурчжэньскаякайакатаканакхароштхикхмерскаяходжикиканнадакорейскаякпеллека" +
+	"йтхиланналаосскаялатинская фрактурагэльская латинскаялатиницалепхалимбулинейное " +
+	"письмо Алинейное письмо Блисуломалицианлидийскаямандейскаяманихейскаямайямендеме" +
+	"роитская курсивнаямероитскаямалаяльскаямонгольскаяазбука мунамроманипуримьянманс" +
+	"каясеверноаравийскоенабатейскаянаси гебанконюй-шуогамическаяол чикиорхоно-енисей" +
+	"скаяорияосманскаяпальмирыдревнепермскаяпагспапехлевийскаяпахлави псалтирнаяпахла" +
+	"ви книжнаяфиникийскаяполлардовская фонетикапарфянскаяреджангскаяронго-ронгорунич" +
+	"ескаясамаритянскаясаратистароюжноарабскаясаураштраязык знаковалфавит Шоушарадакх" +
+	"удавадисингальскаясора-сонпенгсунданскаясилоти нагрисирийскаясирийская эстрангел" +
+	"озападносирийскаявосточно-сирийскаятагбанватакритайский леновый тайский летамиль" +
+	"скаятангутское менятай-вьеттелугутенгварскаядревнеливийскаятагалогтаанатайскаяти" +
+	"бетскаятирхутаугаритскаявайскаявидимая речьваранг-кшитиволеаистароперсидскаяшуме" +
+	"ро-аккадская клинописьиунаследованнаяматематические обозначениясимволыбесписьмен" +
 	"ныйобщепринятаянеизвестная письменность"
 
 var ruScriptIdx = []uint16{ // 165 entries
@@ -19228,6 +18375,50 @@
 	0xd7d, 0xdba, 0xdc9, 0xde4, 0xe0b, 0xe19, 0xe34, 0xe53, 0xe70,
 }
 
+const srLatnScriptStr = "" +
+	"arapsko pismoimperijsko aramejsko pismojermensko pismoavestansko pismobalijsko p" +
+	"ismobatak pismobengalsko pismoblisimbolično pismobopomofo pismobramansko pismoBr" +
+	"ajevo pismobuginsko pismobuhidsko pismočakmansko pismoujedinjeni kanadski aborid" +
+	"žinski silabicikarijsko pismočamsko pismoČerokicirt pismokoptičko pismokiparsko " +
+	"pismoćirilicaStaroslovenska crkvena ćirilicadevanagariDezeretegipatsko narodno p" +
+	"ismoegipatsko hijeratsko pismoegipatski hijeroglifietiopsko pismogruzijsko khuts" +
+	"uri pismogruzijsko pismoglagoljicaGotikagrčko pismogudžaratsko pismogurmuki pism" +
+	"ohangulhanhanunopojednostavljeno han pismotradicionalno han pismohebrejsko pismo" +
+	"hiraganapahav hmong pismoKatakana ili Hiraganastaromađarsko pismoinduško pismost" +
+	"ari italikjavansko pismojapansko pismokajah-li pismokatakanakarošti pismokmersko" +
+	" pismokanada pismokorejsko pismokaitilanna pismolaoško pismolatinica (fraktur va" +
+	"rijanta)galska latinicalatinicalepča pismolimbu pismolinearno A pismolinearno B " +
+	"pismolisijsko pismolidijsko pismomandeansko pismomanihejsko pismomajanski hijero" +
+	"glifimeroitik pismomalajalam pismomongolsko pismomesečevo pismomeitei majek pism" +
+	"omijanmarsko pismon’ko pismoogamsko pismool čiki pismoorkonsko pismoorijansko pi" +
+	"smoosmanjansko pismostaro permiksko pismopags-pa pismopisani pahlavipsalter pahl" +
+	"avipahlavi pismoFeničansko pismoporald fonetsko pismopisani partianrejang pismor" +
+	"ongorongo pismorunsko pismosamaritansko pismosarati pismosauraštra pismoznakovno" +
+	" pismošavijansko pismosinhalsko pismosudansko pismosiloti nagri pismosirijsko pi" +
+	"smosirijsko estrangelo pismozapadnosirijsko pismopismo istočne Sirijetagbanva pi" +
+	"smotai le pismonovi tai luetamilsko pismotai viet pismotelugu pismotengvar pismo" +
+	"tifinag pismoTagalogthana pismotajlandsko pismotibetansko pismougaritsko pismova" +
+	"i pismovidljivi govorstaropersijsko pismosumersko-akadsko kuneiform pismoji pism" +
+	"onasledno pismomatematička notacijasimbolinepisani jezikzajedničko pismonepoznat" +
+	"o pismo"
+
+var srLatnScriptIdx = []uint16{ // 165 entries
+	0x0, 0x0, 0x0, 0xd, 0x27, 0x36, 0x46, 0x54, 0x54, 0x54, 0x5f, 0x6e,
+	0x82, 0x90, 0x9f, 0xac, 0xba, 0xc8, 0xd8, 0x102, 0x110, 0x11d, 0x124, 0x12e,
+	0x13d, 0x14b, 0x154, 0x174, 0x17e, 0x185, 0x185, 0x19c, 0x1b6, 0x1cb, 0x1cb, 0x1d9,
+	0x1f1, 0x200, 0x20a, 0x210, 0x210, 0x21c, 0x22e, 0x23b, 0x241, 0x244, 0x24a, 0x264,
+	0x27b, 0x28a, 0x292, 0x292, 0x2a3, 0x2b8, 0x2cc, 0x2da, 0x2e6, 0x2f4, 0x302, 0x302,
+	0x310, 0x318, 0x326, 0x333, 0x333, 0x33f, 0x34d, 0x34d, 0x352, 0x35d, 0x36a, 0x386,
+	0x395, 0x39d, 0x3a9, 0x3b4, 0x3c4, 0x3d4, 0x3d4, 0x3d4, 0x3e2, 0x3f0, 0x3f0, 0x400,
+	0x410, 0x424, 0x424, 0x424, 0x432, 0x441, 0x441, 0x450, 0x45f, 0x45f, 0x471, 0x482,
+	0x482, 0x482, 0x482, 0x48e, 0x48e, 0x49b, 0x4a9, 0x4b7, 0x4c6, 0x4d7, 0x4d7, 0x4d7,
+	0x4ec, 0x4f9, 0x507, 0x516, 0x523, 0x534, 0x549, 0x557, 0x563, 0x573, 0x57f, 0x591,
+	0x59d, 0x59d, 0x5ad, 0x5bb, 0x5cc, 0x5cc, 0x5cc, 0x5cc, 0x5db, 0x5db, 0x5e9, 0x5fb,
+	0x609, 0x622, 0x637, 0x64c, 0x65a, 0x65a, 0x666, 0x672, 0x680, 0x680, 0x68e, 0x69a,
+	0x6a7, 0x6b4, 0x6bb, 0x6c6, 0x6d6, 0x6e6, 0x6e6, 0x6f5, 0x6fe, 0x70c, 0x70c, 0x70c,
+	0x720, 0x740, 0x748, 0x756, 0x76b, 0x772, 0x780, 0x791, 0x7a0,
+}
+
 const svScriptStr = "" +
 	"afakiskakaukasiska albanskaarabiskaimperisk arameiskaarmeniskaavestiskabalinesis" +
 	"kabamunskabassaiska vahbatakbengaliskablissymbolerbopomofobramipunktskriftbugine" +
@@ -19239,7 +18430,7 @@
 	"atakana/hiraganafornungerskaindusfornitaliskajavanskajapanskajurchenskakaya lika" +
 	"takanakharoshtikhmeriskakhojkiskakanaresiskakoreanskakpellékaithiskalannalaotisk" +
 	"afrakturlatingaeliskt latinlatinskaronglimbulinjär Alinjär BFraserlomalykiskalyd" +
-	"iskamahajaniskamandaéiskamanikeanskamayahieroglyfermendekursiv-meroitiskamerioti" +
+	"iskamahajaniskamandaéiskamanikeanskamayahieroglyfermendekursiv-meroitiskameroiti" +
 	"skamalayalammodiskamongoliskamoonmrumeitei-mayekburmesiskafornnordarabiskanabata" +
 	"teiskanaxi geban-kånüshuoghamol-chikiorkonoriyaosmanjapalmyreniskaPau Cin Hau-sk" +
 	"riftfornpermiskaphags-patidig pahlavipsaltaren-pahlavibokpahlavifenikiskapollard" +
@@ -19649,7 +18840,7 @@
 	0x13c, 0x13c, 0x13c, 0x13c, 0x13c, 0x146, 0x153, 0x15f, 0x173,
 }
 
-// Total size for script: 220030 bytes (220 KB)
+// Total size for script: 216769 bytes (216 KB)
 
 // Number of keys: 290
 var (
@@ -19660,7 +18851,7 @@
 	}
 )
 
-var regionHeaders = [220]header{
+var regionHeaders = [210]header{
 	{ // af
 		afRegionStr,
 		afRegionIdx,
@@ -19779,7 +18970,6 @@
 		arRegionStr,
 		arRegionIdx,
 	},
-	{}, // ar-AE
 	{}, // ar-EG
 	{ // as
 		"এন্টাৰ্টিকাব্ৰাজিলবভেট দ্বীপচীনজাৰ্মানিফ্ৰান্সসংযুক্ত ৰাজ্যদক্ষিণ জৰ্জিয়া আৰু দ" +
@@ -20225,21 +19415,6 @@
 		bnRegionStr,
 		bnRegionIdx,
 	},
-	{ // bn-IN
-		"গ্রেনেডাগোয়াতেমালাজামাইকা",
-		[]uint16{ // 120 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
-			0x18, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
-			0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x4e,
-		},
-	},
 	{ // bo
 		"རྒྱ་ནགའཇར་མན་དབྱིན་ཇི་རྒྱ་གར་ཨི་ཀྲར་ལི་རི་པིན་བར་ཡུལ་ཨུ་རུ་སུ་ཨ་མེ་རི་ཀ།མིའི་ཤེས" +
 			"་རྟོགས་མ་བྱུང་བའི་ཁོར་ཡུགའཛམ་གླིང་།",
@@ -20798,31 +19973,31 @@
 		deRegionIdx,
 	},
 	{ // de-CH
-		"BangladeshBruneiBotswanaWeissrusslandKapverdenDjiboutiGrossbritannienMarshall-In" +
-			"selnÄusseres OzeanienRwandaSalomon-InselnSao Tomé und PrincipeZimbabwe",
+		"BangladeshBruneiBotswanaWeissrusslandGrossbritannienMarshall-InselnÄusseres Ozea" +
+			"nienSalomon-InselnZimbabwe",
 		[]uint16{ // 260 entries
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0xa, 0xa,
 			0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
 			0x10, 0x18, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
-			0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e,
-			0x2e, 0x2e, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-			0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
-			0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
-			0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
-			0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
-			0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
-			0x54, 0x54, 0x54, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0x6c, 0x7a, 0x7a,
-			0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a,
-			0x7a, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-			0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-			0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-			0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x98,
+			0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
+			0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
+			0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x34,
+			0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
+			0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
+			0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
+			0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
+			0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
+			0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43,
+			0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43,
+			0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43,
+			0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43,
+			0x43, 0x43, 0x43, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x63, 0x63,
+			0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
+			0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
+			0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
+			0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
+			0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x6b,
 		},
 	},
 	{ // dje
@@ -21218,37 +20393,7 @@
 		enRegionStr,
 		enRegionIdx,
 	},
-	{ // en-AU
-		"South Georgia and the South Sandwich IslandsHeard Island and McDonald IslandsU.S" +
-			". Minor Outlying IslandsSaint Vincent and the Grenadines",
-		[]uint16{ // 247 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d,
-			0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d,
-			0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d,
-			0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d,
-			0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d,
-			0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d,
-			0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d,
-			0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d,
-			0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d,
-			0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d,
-			0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d,
-			0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d,
-			0x4d, 0x68, 0x68, 0x68, 0x68, 0x68, 0x88,
-		},
-	},
-	{ // en-GB
-		enGBRegionStr,
-		enGBRegionIdx,
-	},
+	{}, // en-AU
 	{ // eo
 		"AndoroUnuiĝintaj Arabaj EmirlandosAfganujoAntigvo-BarbudoAngviloAlbanujoArmenujo" +
 			"Nederlandaj AntilojAngoloAntarktoArgentinoAŭstrujoAŭstralioAruboAzerbajĝanoBosni" +
@@ -21305,10 +20450,6 @@
 		esRegionStr,
 		esRegionIdx,
 	},
-	{ // es-419
-		es419RegionStr,
-		es419RegionIdx,
-	},
 	{ // es-CL
 		"Sahara OccidentalSudamérica",
 		[]uint16{ // 265 entries
@@ -21338,41 +20479,39 @@
 		},
 	},
 	{ // es-MX
-		"Bosnia-HerzegovinaBangladeshIslas Cocos (Keeling)Congo BrazzavilleIsla de Navida" +
-			"dGuernseyIslas Georgias del Sur y Sandwich del SurGuinea-BissauRegión Administra" +
-			"tiva Especial de Hong Kong de la República Popular ChinaIslas CanariasRegión Adm" +
-			"inistrativa Especial de Macao de la República Popular ChinaPalaosQatarIslas Ultr" +
-			"amarinasTristán de AcuñaIslas UltramarinasMenores de Estados UnidosIslas Vírgene" +
-			"s de los Estados UnidosSudaméricaÁfrica OccidentalÁfrica OrientalÁfrica del Nort" +
-			"eÁfrica CentralÁfrica del SurAméricasAmérica SeptentrionalAsia OrientalAsia del " +
-			"SurSudeste AsiáticoEuropa del SurAsia CentralAsia OccidentalEuropa OrientalEurop" +
-			"a del NorteEuropa Occidental",
+		"BangladeshIslas Cocos (Keeling)Isla de NavidadGuernseyRegión Administrativa Espe" +
+			"cial de Hong Kong de la República Popular ChinaIslas CanariasRegión Administrati" +
+			"va Especial de Macao de la República Popular ChinaPalaosIslas UltramarinasTristá" +
+			"n de AcuñaIslas Ultramarinas Menores de Estados UnidosIslas Vírgenes de los Esta" +
+			"dos UnidosSudaméricaÁfrica OccidentalÁfrica OrientalÁfrica del NorteÁfrica Centr" +
+			"alÁfrica del SurAméricasAsia OrientalAsia del SurSudeste AsiáticoEuropa del SurA" +
+			"sia CentralAsia OccidentalEuropa OrientalEuropa del NorteEuropa Occidental",
 		[]uint16{ // 290 entries
 			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x12, 0x1c, 0x1c, 0x1c,
-			0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
-			0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x31, 0x31, 0x31, 0x42, 0x42, 0x42, 0x42,
-			0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x51, 0x51, 0x51,
-			0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
-			0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
-			0x51, 0x51, 0x51, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59,
-			0x82, 0x82, 0x82, 0x8f, 0x8f, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xe8,
-			0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
-			0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
-			0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
-			0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x12f,
-			0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f,
-			0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f,
-			0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f, 0x12f,
-			0x135, 0x135, 0x13a, 0x14c, 0x14c, 0x14c, 0x14c, 0x14c, 0x14c, 0x14c, 0x14c, 0x14c,
-			0x14c, 0x14c, 0x14c, 0x14c, 0x14c, 0x14c, 0x14c, 0x14c, 0x14c, 0x14c, 0x14c, 0x14c,
-			0x14c, 0x14c, 0x14c, 0x14c, 0x14c, 0x14c, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e,
-			0x15e, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e,
-			0x15e, 0x189, 0x189, 0x189, 0x189, 0x189, 0x189, 0x189, 0x189, 0x1ae, 0x1ae, 0x1ae,
-			0x1ae, 0x1ae, 0x1ae, 0x1ae, 0x1ae, 0x1ae, 0x1ae, 0x1ae, 0x1ae, 0x1ae, 0x1ae, 0x1ae,
-			0x1b9, 0x1b9, 0x1cb, 0x1cb, 0x1db, 0x1ec, 0x1fb, 0x20a, 0x213, 0x229, 0x229, 0x236,
-			0x242, 0x253, 0x261, 0x261, 0x261, 0x261, 0x261, 0x261, 0x26d, 0x27c, 0x27c, 0x28b,
-			0x29b, 0x2ac,
+			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0xa, 0xa,
+			0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa,
+			0xa, 0xa, 0xa, 0xa, 0xa, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+			0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x2e, 0x2e, 0x2e,
+			0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e,
+			0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e,
+			0x2e, 0x2e, 0x2e, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
+			0x36, 0x36, 0x36, 0x36, 0x36, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x8f,
+			0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
+			0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
+			0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
+			0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0xd6,
+			0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
+			0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
+			0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
+			0xdc, 0xdc, 0xdc, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee,
+			0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee,
+			0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100,
+			0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100,
+			0x100, 0x12c, 0x12c, 0x12c, 0x12c, 0x12c, 0x12c, 0x12c, 0x12c, 0x151, 0x151, 0x151,
+			0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151,
+			0x15c, 0x15c, 0x16e, 0x16e, 0x17e, 0x18f, 0x19e, 0x1ad, 0x1b6, 0x1b6, 0x1b6, 0x1c3,
+			0x1cf, 0x1e0, 0x1ee, 0x1ee, 0x1ee, 0x1ee, 0x1ee, 0x1ee, 0x1fa, 0x209, 0x209, 0x218,
+			0x228, 0x239,
 		},
 	},
 	{ // et
@@ -21380,72 +20519,72 @@
 		etRegionIdx,
 	},
 	{ // eu
-		"Ascension uharteaAndorraArabiar Emirrerri BatuakAfganistanAntigua eta BarbudaAng" +
-			"ilaAlbaniaArmeniaHolandarren AntillakAngolaAntartikaArgentinaAmerikar SamoaAustr" +
-			"iaAustraliaArubaAland uharteakAzerbaijanBosnia-HerzegovinaBarbadosBangladeshBelg" +
-			"ikaBurkina FasoBulgariaBahrainBurundiBeninSan BartolomeBermudaBruneiBoliviaKarib" +
-			"eko HerbehereakBrasilBahamakBhutanBouvet uharteaBotswanaBielorrusiaBelizeKanadaC" +
-			"ocos (Keeling) uharteakKongoko Errepublika DemokratikoaAfrika Erdiko Errepublika" +
-			"Kongo (Brazzaville)SuitzaBoli KostaCook uharteakTxileKamerunTxinaKolonbiaClipper" +
-			"ton uharteaCosta RicaKubaCabo VerdeCuraçaoChristmas uharteaZipreTxekiar Errepubl" +
-			"ikaAlemaniaDiego GarciaDjibutiDanimarkaDominikaDominikar ErrepublikaAljeriaCeuta" +
-			" eta MelillaEkuadorEstoniaEgiptoMendebaldeko SaharaEritreaEspainiaEtiopiaEuropar" +
-			" BatasunaFinlandiaFijiMalvinakMikronesiaFaroe uharteakFrantziaGabonErresuma Batu" +
-			"aGrenadaGeorgiaGuyana FrantsesaGuernseyGhanaGibraltarGroenlandiaGambiaGineaGuada" +
-			"lupeEkuatore GineaGreziaHegoaldeko Georgia eta Hegoaldeko Sandwich uharteakGuate" +
-			"malaGuamGinea-BissauGuyanaHong Kong AEB TxinaHeard eta McDonald uharteakHonduras" +
-			"KroaziaHaitiHungariaKanariakIndonesiaIrlandaIsraelMan uharteaIndiaIndiako Ozeano" +
-			"ko lurralde britainiarraIrakIranIslandiaItaliaJerseyJamaikaJordaniaJaponiaKenyaK" +
-			"irgizistanKanbodiaKiribatiKomoreakSaint Kitts eta NevisIpar KoreaHego KoreaKuwai" +
-			"tKaiman uharteakKazakhstanLaosLibanoSanta LuziaLiechtensteinSri LankaLiberiaLeso" +
-			"thoLituaniaLuxenburgoLetoniaLibiaMarokoMonakoMoldaviaMontenegroSaint MartinMadag" +
-			"askarMarshall uharteakMazedoniaMaliMyanmarMongoliaMacau AEB TxinaIparraldeko Mar" +
-			"iana uharteakMartinikaMauritaniaMontserratMaltaMaurizioMaldivakMalawiMexikoMalay" +
-			"siaMozambikeNamibiaKaledonia BerriaNigerNorfolk uharteaNigeriaNikaraguaHerbehere" +
-			"akNorvegiaNepalNauruNiueZeelanda BerriaOmanPanamaPeruPolinesia FrantsesaPapua Gi" +
-			"nea BerriaFilipinakPakistanPoloniaSaint-Pierre eta MikelunePitcairn uharteakPuer" +
-			"to RicoPalestinako LurraldeakPortugalPalauParaguaiQatarMugaz kanpoko OzeaniaReun" +
-			"ionErrumaniaSerbiaErrusiaRuandaSaudi ArabiaSalomon uharteakSeychelleakSudanSuedi" +
-			"aSingapurSaint HelenaEsloveniaSvalbard eta Jan Mayen uharteakEslovakiaSierra Leo" +
-			"naSan MarinoSenegalSomaliaSurinamHego SudanSao Tome eta PrincipeEl SalvadorSint " +
-			"MaartenSiriaSwazilandiaTristan da CunhaTurk eta Caicos uharteakTxadHegoaldeko lu" +
-			"rralde frantsesakTogoThailandiaTadjikistanTokelauEkialdeko TimorTurkmenistanTuni" +
-			"siaTongaTurkiaTrinidad eta TobagoTuvaluTaiwanTanzaniaUkrainaUgandaAmeriketako Es" +
-			"tatu Batuetako Kanpoaldeko Uharte TxikiakAmeriketako Estatu BatuakUruguaiUzbekis" +
-			"tanVatikano HiriaSaint Vincent eta GrenadinakVenezuelaBirjina uharte britainiarr" +
-			"akBirjina uharte amerikarrakVietnamVanuatuWallis eta FutunaSamoaKosovoYemenMayot" +
-			"teHegoafrikaZambiaZimbabweEskualde ezezagunaMunduaAfrikaIpar AmerikaHego Amerika" +
-			"OzeaniaAfrika mendebaldeaErdialdeko AmerikaAfrika ekialdeaAfrika iparraldeaErdia" +
-			"ldeko AfrikaAfrika hegoaldeaAmerikaAmerika iparraldeaKaribeaAsia ekialdeaAsia he" +
-			"goaldeaAsia hego-ekialdeaEuropa hegoaldeaAustralasiaMelanesiaMikronesia eskualde" +
-			"aPolinesiaAsiaAsia erdialdeaAsia mendebaldeaEuropaEuropa ekialdeaEuropa iparrald" +
-			"eaEuropa mendebaldeaLatinoamerika",
+		"Ascension uharteaAndorraArabiar Emirerri BatuakAfganistanAntigua eta BarbudaAngi" +
+			"laAlbaniaArmeniaHolandarren AntillakAngolaAntartikaArgentinaAmerikar SamoaAustri" +
+			"aAustraliaArubaAland uharteakAzerbaijanBosnia-HerzegovinaBarbadosBangladeshBelgi" +
+			"kaBurkina FasoBulgariaBahrainBurundiBeninSaint BarthélemyBermudaBruneiBoliviaKar" +
+			"ibeko HerbehereakBrasilBahamakBhutanBouvet uharteaBotswanaBielorrusiaBelizeKanad" +
+			"aCocos uharteakKongoko Errepublika DemokratikoaAfrika Erdiko ErrepublikaKongo (B" +
+			"razzaville)SuitzaBoli KostaCook uharteakTxileKamerunTxinaKolonbiaClipperton uhar" +
+			"teaCosta RicaKubaCabo VerdeCuraçaoChristmas uharteaZipreTxekiar ErrepublikaAlema" +
+			"niaDiego GarciaDjibutiDanimarkaDominikaDominikar ErrepublikaAljeriaCeuta eta Mel" +
+			"illaEkuadorEstoniaEgiptoMendebaldeko SaharaEritreaEspainiaEtiopiaEuropar Batasun" +
+			"aFinlandiaFijiMalvinakMikronesiaFaroe uharteakFrantziaGabonErresuma BatuaGrenada" +
+			"GeorgiaGuyana FrantsesaGuerneseyGhanaGibraltarGroenlandiaGambiaGineaGuadalupeEku" +
+			"atore GineaGreziaHegoaldeko Georgia eta Hegoaldeko Sandwich uharteakGuatemalaGua" +
+			"mGinea-BissauGuyanaHong Kong AEB TxinaHeard eta McDonald uharteakHondurasKroazia" +
+			"HaitiHungariaKanariakIndonesiaIrlandaIsraelMan uharteaIndiaIndiako Ozeanoko lurr" +
+			"alde britainiarraIrakIranIslandiaItaliaJerseyJamaikaJordaniaJaponiaKenyaKirgizis" +
+			"tanKanbodiaKiribatiKomoreakSaint Kitts eta NevisIpar KoreaHego KoreaKuwaitKaiman" +
+			" uharteakKazakhstanLaosLibanoSanta LuziaLiechtensteinSri LankaLiberiaLesothoLitu" +
+			"aniaLuxenburgoLetoniaLibiaMarokoMonakoMoldaviaMontenegroSaint MartinMadagaskarMa" +
+			"rshall uharteakMazedoniaMaliMyanmarMongoliaMacau AEB TxinaIparraldeko Mariana uh" +
+			"arteakMartinikaMauritaniaMontserratMaltaMaurizioMaldivakMalawiMexikoMalaysiaMoza" +
+			"mbikeNamibiaKaledonia BerriaNigerNorfolk uharteaNigeriaNikaraguaHerbehereakNorve" +
+			"giaNepalNauruNiueZeelanda BerriaOmanPanamaPeruPolinesia FrantsesaPapua Ginea Ber" +
+			"riaFilipinakPakistanPoloniaSaint-Pierre eta MikelunePitcairn uharteakPuerto Rico" +
+			"Palestinako LurraldeakPortugalPalauParaguaiQatarMugaz kanpoko OzeaniaReunionErru" +
+			"maniaSerbiaErrusiaRuandaSaudi ArabiaSalomon uharteakSeychelleakSudanSuediaSingap" +
+			"urSaint HelenaEsloveniaSvalbard eta Jan Mayen uharteakEslovakiaSierra LeonaSan M" +
+			"arinoSenegalSomaliaSurinamHego SudanSao Tome eta PrincipeEl SalvadorSint Maarten" +
+			"SiriaSwazilandiaTristan da CunhaTurk eta Caicos uharteakTxadHegoaldeko lurralde " +
+			"frantsesakTogoThailandiaTajikistanTokelauEkialdeko TimorTurkmenistanTunisiaTonga" +
+			"TurkiaTrinidad eta TobagoTuvaluTaiwanTanzaniaUkrainaUgandaAmeriketako Estatu Bat" +
+			"uetako Kanpoaldeko Uharte TxikiakAmeriketako Estatu BatuakUruguaiUzbekistanVatik" +
+			"ano HiriaSaint Vincent eta GrenadinakVenezuelaBirjina uharte britainiarrakBirjin" +
+			"a uharte amerikarrakVietnamVanuatuWallis eta FutunaSamoaKosovoYemenMayotteHegoaf" +
+			"rikaZambiaZimbabweEskualde ezezagunaMunduaAfrikaIpar AmerikaHego AmerikaOzeaniaA" +
+			"frika mendebaldeaErdialdeko AmerikaAfrika ekialdeaAfrika iparraldeaErdialdeko Af" +
+			"rikaAfrika hegoaldeaAmerikaAmerika iparraldeaKaribeaAsia ekialdeaAsia hegoaldeaA" +
+			"sia hego-ekialdeaEuropa hegoaldeaAustralasiaMelanesiaMikronesia eskualdeaPolines" +
+			"iaAsiaAsia erdialdeaAsia mendebaldeaEuropaEuropa ekialdeaEuropa iparraldeaEuropa" +
+			" mendebaldeaLatinoamerika",
 		[]uint16{ // 291 entries
-			0x0, 0x11, 0x18, 0x30, 0x3a, 0x4d, 0x53, 0x5a, 0x61, 0x75, 0x7b, 0x84,
-			0x8d, 0x9b, 0xa2, 0xab, 0xb0, 0xbe, 0xc8, 0xda, 0xe2, 0xec, 0xf3, 0xff,
-			0x107, 0x10e, 0x115, 0x11a, 0x127, 0x12e, 0x134, 0x13b, 0x14f, 0x155, 0x15c, 0x162,
-			0x170, 0x178, 0x183, 0x189, 0x18f, 0x1a7, 0x1c7, 0x1e0, 0x1f3, 0x1f9, 0x203, 0x210,
-			0x215, 0x21c, 0x221, 0x229, 0x23b, 0x245, 0x249, 0x253, 0x25b, 0x26c, 0x271, 0x284,
-			0x28c, 0x298, 0x29f, 0x2a8, 0x2b0, 0x2c5, 0x2cc, 0x2dd, 0x2e4, 0x2eb, 0x2f1, 0x304,
-			0x30b, 0x313, 0x31a, 0x32a, 0x333, 0x337, 0x33f, 0x349, 0x357, 0x35f, 0x364, 0x372,
-			0x379, 0x380, 0x390, 0x398, 0x39d, 0x3a6, 0x3b1, 0x3b7, 0x3bc, 0x3c5, 0x3d3, 0x3d9,
-			0x40c, 0x415, 0x419, 0x425, 0x42b, 0x43e, 0x459, 0x461, 0x468, 0x46d, 0x475, 0x47d,
-			0x486, 0x48d, 0x493, 0x49e, 0x4a3, 0x4c9, 0x4cd, 0x4d1, 0x4d9, 0x4df, 0x4e5, 0x4ec,
-			0x4f4, 0x4fb, 0x500, 0x50b, 0x513, 0x51b, 0x523, 0x538, 0x542, 0x54c, 0x552, 0x561,
-			0x56b, 0x56f, 0x575, 0x580, 0x58d, 0x596, 0x59d, 0x5a4, 0x5ac, 0x5b6, 0x5bd, 0x5c2,
-			0x5c8, 0x5ce, 0x5d6, 0x5e0, 0x5ec, 0x5f6, 0x607, 0x610, 0x614, 0x61b, 0x623, 0x632,
-			0x64e, 0x657, 0x661, 0x66b, 0x670, 0x678, 0x680, 0x686, 0x68c, 0x694, 0x69d, 0x6a4,
-			0x6b4, 0x6b9, 0x6c8, 0x6cf, 0x6d8, 0x6e3, 0x6eb, 0x6f0, 0x6f5, 0x6f9, 0x708, 0x70c,
-			0x712, 0x716, 0x729, 0x73b, 0x744, 0x74c, 0x753, 0x76c, 0x77d, 0x788, 0x79e, 0x7a6,
-			0x7ab, 0x7b3, 0x7b8, 0x7cd, 0x7d4, 0x7dd, 0x7e3, 0x7ea, 0x7f0, 0x7fc, 0x80c, 0x817,
-			0x81c, 0x822, 0x82a, 0x836, 0x83f, 0x85e, 0x867, 0x873, 0x87d, 0x884, 0x88b, 0x892,
-			0x89c, 0x8b1, 0x8bc, 0x8c8, 0x8cd, 0x8d8, 0x8e8, 0x900, 0x904, 0x922, 0x926, 0x930,
-			0x93b, 0x942, 0x951, 0x95d, 0x964, 0x969, 0x96f, 0x982, 0x988, 0x98e, 0x996, 0x99d,
-			0x9a3, 0x9da, 0x9f3, 0x9fa, 0xa04, 0xa12, 0xa2e, 0xa37, 0xa53, 0xa6d, 0xa74, 0xa7b,
-			0xa8c, 0xa91, 0xa97, 0xa9c, 0xaa3, 0xaad, 0xab3, 0xabb, 0xacd, 0xad3, 0xad9, 0xae5,
-			0xaf1, 0xaf8, 0xb0a, 0xb1c, 0xb2b, 0xb3c, 0xb4d, 0xb5d, 0xb64, 0xb76, 0xb7d, 0xb8a,
-			0xb98, 0xbaa, 0xbba, 0xbc5, 0xbce, 0xbe2, 0xbeb, 0xbef, 0xbfd, 0xc0d, 0xc13, 0xc22,
-			0xc33, 0xc45, 0xc52,
+			0x0, 0x11, 0x18, 0x2f, 0x39, 0x4c, 0x52, 0x59, 0x60, 0x74, 0x7a, 0x83,
+			0x8c, 0x9a, 0xa1, 0xaa, 0xaf, 0xbd, 0xc7, 0xd9, 0xe1, 0xeb, 0xf2, 0xfe,
+			0x106, 0x10d, 0x114, 0x119, 0x12a, 0x131, 0x137, 0x13e, 0x152, 0x158, 0x15f, 0x165,
+			0x173, 0x17b, 0x186, 0x18c, 0x192, 0x1a0, 0x1c0, 0x1d9, 0x1ec, 0x1f2, 0x1fc, 0x209,
+			0x20e, 0x215, 0x21a, 0x222, 0x234, 0x23e, 0x242, 0x24c, 0x254, 0x265, 0x26a, 0x27d,
+			0x285, 0x291, 0x298, 0x2a1, 0x2a9, 0x2be, 0x2c5, 0x2d6, 0x2dd, 0x2e4, 0x2ea, 0x2fd,
+			0x304, 0x30c, 0x313, 0x323, 0x32c, 0x330, 0x338, 0x342, 0x350, 0x358, 0x35d, 0x36b,
+			0x372, 0x379, 0x389, 0x392, 0x397, 0x3a0, 0x3ab, 0x3b1, 0x3b6, 0x3bf, 0x3cd, 0x3d3,
+			0x406, 0x40f, 0x413, 0x41f, 0x425, 0x438, 0x453, 0x45b, 0x462, 0x467, 0x46f, 0x477,
+			0x480, 0x487, 0x48d, 0x498, 0x49d, 0x4c3, 0x4c7, 0x4cb, 0x4d3, 0x4d9, 0x4df, 0x4e6,
+			0x4ee, 0x4f5, 0x4fa, 0x505, 0x50d, 0x515, 0x51d, 0x532, 0x53c, 0x546, 0x54c, 0x55b,
+			0x565, 0x569, 0x56f, 0x57a, 0x587, 0x590, 0x597, 0x59e, 0x5a6, 0x5b0, 0x5b7, 0x5bc,
+			0x5c2, 0x5c8, 0x5d0, 0x5da, 0x5e6, 0x5f0, 0x601, 0x60a, 0x60e, 0x615, 0x61d, 0x62c,
+			0x648, 0x651, 0x65b, 0x665, 0x66a, 0x672, 0x67a, 0x680, 0x686, 0x68e, 0x697, 0x69e,
+			0x6ae, 0x6b3, 0x6c2, 0x6c9, 0x6d2, 0x6dd, 0x6e5, 0x6ea, 0x6ef, 0x6f3, 0x702, 0x706,
+			0x70c, 0x710, 0x723, 0x735, 0x73e, 0x746, 0x74d, 0x766, 0x777, 0x782, 0x798, 0x7a0,
+			0x7a5, 0x7ad, 0x7b2, 0x7c7, 0x7ce, 0x7d7, 0x7dd, 0x7e4, 0x7ea, 0x7f6, 0x806, 0x811,
+			0x816, 0x81c, 0x824, 0x830, 0x839, 0x858, 0x861, 0x86d, 0x877, 0x87e, 0x885, 0x88c,
+			0x896, 0x8ab, 0x8b6, 0x8c2, 0x8c7, 0x8d2, 0x8e2, 0x8fa, 0x8fe, 0x91c, 0x920, 0x92a,
+			0x934, 0x93b, 0x94a, 0x956, 0x95d, 0x962, 0x968, 0x97b, 0x981, 0x987, 0x98f, 0x996,
+			0x99c, 0x9d3, 0x9ec, 0x9f3, 0x9fd, 0xa0b, 0xa27, 0xa30, 0xa4c, 0xa66, 0xa6d, 0xa74,
+			0xa85, 0xa8a, 0xa90, 0xa95, 0xa9c, 0xaa6, 0xaac, 0xab4, 0xac6, 0xacc, 0xad2, 0xade,
+			0xaea, 0xaf1, 0xb03, 0xb15, 0xb24, 0xb35, 0xb46, 0xb56, 0xb5d, 0xb6f, 0xb76, 0xb83,
+			0xb91, 0xba3, 0xbb3, 0xbbe, 0xbc7, 0xbdb, 0xbe4, 0xbe8, 0xbf6, 0xc06, 0xc0c, 0xc1b,
+			0xc2c, 0xc3e, 0xc4b,
 		},
 	},
 	{ // ewo
@@ -21506,38 +20645,37 @@
 	},
 	{ // fa-AF
 		"اندوراانتیگوا و باربوداالبانیاانگولاارجنتاینآسترالیابوسنیا و هرزه‌گوینابنگله‌دیش" +
-			"بلجیمبلغاریابرونیبولیویابرازیلبهاماسروسیهٔ سفیدجمهوری دموکراتیک کانگوافریقای مرک" +
-			"زیکانگوسویسچلیکولمبیاکاستریکاکیوبادنمارکاستونیااریتریاهسپانیهایتوپیافنلندمیکرونز" +
-			"یاگریناداگینیاگینیا استواییگواتیمالاگینیا بیسائوگیاناهاندوراسکروشیاهایتیاندونیزی" +
-			"اآیرلندآیسلندجاپانکینیاقرغزستانکمپوچیاسنت کیتس و نیویسکوریای شمالیکوریای جنوبیسر" +
-			"یلانکالیسوتولتوانیالاتویالیبیامادغاسکرمنگولیاموریتانیامالتامکسیکومالیزیاموزمبیقن" +
-			"یجریانیکاراگواهالندناروینیپالزیلاند جدیدپانامهپیروپاپوا نیو گینیاپولندپرتگالپارا" +
-			"گوایرومانیاروآنداجزایر سلومونسویدنسینگاپورسلونیاسلواکیاسیرالیونسینیگالسومالیهسائ" +
-			"و تومه و پرینسیپالسلوادورتاجکستاناکراینیوروگوایسنت وینسنت و گرینادینونزویلازیمبا" +
-			"بوی",
+			"بلجیمبلغاریابرونیبولیویابرازیلبهاماسروسیهٔ سفیدکانگو - کینشاساکانگو - برازویلسوی" +
+			"سچلیکولمبیاکاستریکاکیوبادنمارکاستونیااریتریاهسپانیهایتوپیافنلندمیکرونزیاگریناداگ" +
+			"ینیاگینیا استواییگواتیمالاگینیا بیسائوگیاناهاندوراسکروشیاهایتیاندونیزیاآیرلندآیس" +
+			"لندجاپانکینیاقرغزستانکمپوچیاکوریای شمالیکوریای جنوبیسریلانکالیسوتولتوانیالاتویال" +
+			"یبیامادغاسکرمنگولیاموریتانیامالتامکسیکومالیزیاموزمبیقنیجریانیکاراگواهالندناروینی" +
+			"پالزیلاند جدیدپانامهپیروپاپوا نیو گینیاپولندپرتگالپاراگوایرومانیاروآنداسویدنسینگ" +
+			"اپورسلونیاسلواکیاسیرالیونسینیگالسومالیهالسلوادورتاجکستاناکراینیوروگوایونزویلازیم" +
+			"بابوی",
 		[]uint16{ // 260 entries
 			0x0, 0x0, 0xc, 0xc, 0xc, 0x2c, 0x2c, 0x3a, 0x3a, 0x3a, 0x46, 0x46,
 			0x56, 0x56, 0x56, 0x66, 0x66, 0x66, 0x66, 0x8b, 0x8b, 0x9e, 0xa8, 0xa8,
 			0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xc0, 0xce, 0xce, 0xda, 0xe6, 0xe6,
-			0xe6, 0xe6, 0xfb, 0xfb, 0xfb, 0xfb, 0x125, 0x13e, 0x148, 0x150, 0x150, 0x150,
-			0x156, 0x156, 0x156, 0x164, 0x164, 0x174, 0x17e, 0x17e, 0x17e, 0x17e, 0x17e, 0x17e,
-			0x17e, 0x17e, 0x17e, 0x18a, 0x18a, 0x18a, 0x18a, 0x18a, 0x18a, 0x198, 0x198, 0x198,
-			0x1a6, 0x1b4, 0x1c2, 0x1c2, 0x1cc, 0x1cc, 0x1cc, 0x1de, 0x1de, 0x1de, 0x1de, 0x1de,
-			0x1ec, 0x1ec, 0x1ec, 0x1ec, 0x1ec, 0x1ec, 0x1ec, 0x1ec, 0x1f6, 0x1f6, 0x20f, 0x20f,
-			0x20f, 0x221, 0x221, 0x238, 0x242, 0x242, 0x242, 0x252, 0x25e, 0x268, 0x268, 0x268,
-			0x27a, 0x286, 0x286, 0x286, 0x286, 0x286, 0x286, 0x286, 0x292, 0x292, 0x292, 0x292,
-			0x292, 0x29c, 0x2a6, 0x2b6, 0x2c4, 0x2c4, 0x2c4, 0x2e1, 0x2f8, 0x30f, 0x30f, 0x30f,
-			0x30f, 0x30f, 0x30f, 0x30f, 0x30f, 0x31f, 0x31f, 0x32b, 0x339, 0x339, 0x345, 0x34f,
-			0x34f, 0x34f, 0x34f, 0x34f, 0x34f, 0x35f, 0x35f, 0x35f, 0x35f, 0x35f, 0x36d, 0x36d,
-			0x36d, 0x36d, 0x37f, 0x37f, 0x389, 0x389, 0x389, 0x389, 0x395, 0x3a3, 0x3b1, 0x3b1,
-			0x3b1, 0x3b1, 0x3b1, 0x3bd, 0x3cf, 0x3d9, 0x3e3, 0x3ed, 0x3ed, 0x3ed, 0x402, 0x402,
-			0x40e, 0x416, 0x416, 0x432, 0x432, 0x432, 0x43c, 0x43c, 0x43c, 0x43c, 0x43c, 0x448,
-			0x448, 0x458, 0x458, 0x458, 0x458, 0x466, 0x466, 0x466, 0x472, 0x472, 0x489, 0x489,
-			0x489, 0x493, 0x4a3, 0x4a3, 0x4af, 0x4af, 0x4bd, 0x4cd, 0x4cd, 0x4db, 0x4e9, 0x4e9,
-			0x4e9, 0x50c, 0x51e, 0x51e, 0x51e, 0x51e, 0x51e, 0x51e, 0x51e, 0x51e, 0x51e, 0x51e,
-			0x52e, 0x52e, 0x52e, 0x52e, 0x52e, 0x52e, 0x52e, 0x52e, 0x52e, 0x52e, 0x52e, 0x53a,
-			0x53a, 0x53a, 0x53a, 0x54a, 0x54a, 0x54a, 0x571, 0x57f, 0x57f, 0x57f, 0x57f, 0x57f,
-			0x57f, 0x57f, 0x57f, 0x57f, 0x57f, 0x57f, 0x57f, 0x58f,
+			0xe6, 0xe6, 0xfb, 0xfb, 0xfb, 0xfb, 0x116, 0x116, 0x131, 0x139, 0x139, 0x139,
+			0x13f, 0x13f, 0x13f, 0x14d, 0x14d, 0x15d, 0x167, 0x167, 0x167, 0x167, 0x167, 0x167,
+			0x167, 0x167, 0x167, 0x173, 0x173, 0x173, 0x173, 0x173, 0x173, 0x181, 0x181, 0x181,
+			0x18f, 0x19d, 0x1ab, 0x1ab, 0x1b5, 0x1b5, 0x1b5, 0x1c7, 0x1c7, 0x1c7, 0x1c7, 0x1c7,
+			0x1d5, 0x1d5, 0x1d5, 0x1d5, 0x1d5, 0x1d5, 0x1d5, 0x1d5, 0x1df, 0x1df, 0x1f8, 0x1f8,
+			0x1f8, 0x20a, 0x20a, 0x221, 0x22b, 0x22b, 0x22b, 0x23b, 0x247, 0x251, 0x251, 0x251,
+			0x263, 0x26f, 0x26f, 0x26f, 0x26f, 0x26f, 0x26f, 0x26f, 0x27b, 0x27b, 0x27b, 0x27b,
+			0x27b, 0x285, 0x28f, 0x29f, 0x2ad, 0x2ad, 0x2ad, 0x2ad, 0x2c4, 0x2db, 0x2db, 0x2db,
+			0x2db, 0x2db, 0x2db, 0x2db, 0x2db, 0x2eb, 0x2eb, 0x2f7, 0x305, 0x305, 0x311, 0x31b,
+			0x31b, 0x31b, 0x31b, 0x31b, 0x31b, 0x32b, 0x32b, 0x32b, 0x32b, 0x32b, 0x339, 0x339,
+			0x339, 0x339, 0x34b, 0x34b, 0x355, 0x355, 0x355, 0x355, 0x361, 0x36f, 0x37d, 0x37d,
+			0x37d, 0x37d, 0x37d, 0x389, 0x39b, 0x3a5, 0x3af, 0x3b9, 0x3b9, 0x3b9, 0x3ce, 0x3ce,
+			0x3da, 0x3e2, 0x3e2, 0x3fe, 0x3fe, 0x3fe, 0x408, 0x408, 0x408, 0x408, 0x408, 0x414,
+			0x414, 0x424, 0x424, 0x424, 0x424, 0x432, 0x432, 0x432, 0x43e, 0x43e, 0x43e, 0x43e,
+			0x43e, 0x448, 0x458, 0x458, 0x464, 0x464, 0x472, 0x482, 0x482, 0x490, 0x49e, 0x49e,
+			0x49e, 0x49e, 0x4b0, 0x4b0, 0x4b0, 0x4b0, 0x4b0, 0x4b0, 0x4b0, 0x4b0, 0x4b0, 0x4b0,
+			0x4c0, 0x4c0, 0x4c0, 0x4c0, 0x4c0, 0x4c0, 0x4c0, 0x4c0, 0x4c0, 0x4c0, 0x4c0, 0x4cc,
+			0x4cc, 0x4cc, 0x4cc, 0x4dc, 0x4dc, 0x4dc, 0x4dc, 0x4ea, 0x4ea, 0x4ea, 0x4ea, 0x4ea,
+			0x4ea, 0x4ea, 0x4ea, 0x4ea, 0x4ea, 0x4ea, 0x4ea, 0x4fa,
 		},
 	},
 	{ // ff
@@ -21967,68 +21105,68 @@
 	{ // gl
 		"Illa de AscensiónAndorraEmiratos Árabes UnidosAfganistánAntiga e BarbudaAnguilaA" +
 			"lbaniaArmeniaAntillas HolandesasAngolaAntártidaArxentinaSamoa AmericanaAustriaAu" +
-			"straliaArubaIllas AlandAcerbaixánBosnia e HercegovinaBarbadosBangladeshBélxicaBu" +
-			"rkina FasoBulgariaBahreinBurundiBeninSan BartoloméBermudasBruneiBoliviaCaribe ne" +
-			"erlandésBrasilBahamasButánIlla BouvetBotsuanaBielorrusiaBeliceCanadáIllas Cocos " +
-			"(Keeling)República Democrática do CongoRepública Africana CentralCongoSuízaCosta" +
-			" de MarfilIllas CookChileCamerúnChinaColombiaIlla ClippertonCosta RicaCubaCabo V" +
-			"erdeCuraçaoIlla ChristmasChipreRepública ChecaAlemañaDiego GarcíaXibutiDinamarca" +
-			"DominicaRepública DominicanaArxeliaCeuta e MelillaEcuadorEstoniaExiptoSahara Occ" +
-			"identalEritreaEspañaEtiopíaUnión EuropeaFinlandiaFixiIllas MalvinasMicronesiaIll" +
-			"as FeroeFranciaGabónReino UnidoGranadaXeorxiaGüiana FrancesaGuernseyGanaXibralta" +
-			"rGrenlandiaGambiaGuineaGuadalupeGuinea EcuatorialGreciaXeorxia do Sur e Illas Sa" +
-			"ndwichGuatemalaGuamGuinea-BissauGüianaHong Kong RAE de ChinaIlla Heard e Illas M" +
-			"cDonaldHondurasCroaciaHaitíHungríaIllas CanariasIndonesiaIrlandaIsraelIlla de Ma" +
-			"nIndiaTerritorio Británico do Océano ÍndicoIraqIránIslandiaItaliaJerseyXamaicaXo" +
-			"rdaniaXapónQueniaQuirguicistánCambodiaKiribatiComoresSan Cristovo e NevisCorea d" +
-			"o NorteCorea do SurKuwaitIllas CaimánKazakhstanLaosLíbanoSanta LucíaLiechtenstei" +
-			"nSri LankaLiberiaLesothoLituaniaLuxemburgoLetoniaLibiaMarrocosMónacoMoldovaMonte" +
-			"negroSan MartiñoMadagascarIllas MarshallMacedoniaMaliMyanmar (Birmania)MongoliaM" +
-			"acau RAE de ChinaIllas Marianas do norteMartinicaMauritaniaMontserratMaltaMauric" +
-			"ioMaldivasMalauiMéxicoMalaisiaMozambiqueNamibiaNova CaledoniaNíxerIlla NorfolkNi" +
-			"xeriaNicaraguaPaíses BaixosNoruegaNepalNauruNiueNova CelandiaOmánPanamáPerúPolin" +
-			"esia FrancesaPapúa Nova GuineaFilipinasPaquistánPoloniaSan Pedro e MiguelónIllas" +
-			" PitcairnPorto RicoTerritorios palestinosPortugalPalauParaguaiQatarOceanía Dista" +
-			"nteReuniónRomaníaSerbiaRusiaRuandaArabia SauditaIllas SalomónSeixelesSudánSuecia" +
-			"SingapurSanta HelenaEsloveniaSvalbard e Jan MayenEslovaquiaSerra LeoaSan MarinoS" +
-			"enegalSomaliaSurinamSudán do surSan Tomé e PríncipeEl SalvadorSint MaartenSiriaS" +
-			"uacilandiaTristán da CunhaIllas Turks e CaicosChadTerritorios Franceses do SulTo" +
-			"goTailandiaTaxiquistánTokelauTimor LesteTurkmenistánTunisiaTongaTurquíaTrindade " +
-			"e TobagoTuvaluTaiwánTanzaniaUcraínaUgandaIllas Menores Distantes dos EUA.Estados" +
-			" Unidos de AméricaUruguaiUzbekistánCidade do VaticanoSan Vicente e GranadinasVen" +
-			"ezuelaIllas Virxes BritánicasIllas Virxes EstadounidensesVietnamVanuatuWallis e " +
-			"FutunaSamoaKosovoIemenMayotteSudáfricaZambiaCimbabueRexión descoñecidaMundoÁfric" +
-			"aNorteaméricaSudaméricaOceaníaÁfrica OccidentalAmérica CentralÁfrica OrientalÁfr" +
-			"ica SeptentrionalÁfrica CentralÁfrica MeridionalAméricaAmérica do NorteCaribeAsi" +
-			"a OrientalSul de AsiaSureste AsiáticoEuropa MeridionalAustralasiaMelanesiaRexión" +
-			" da MicronesiaPolinesiaAsiaAsia CentralAsia OccidentalEuropaEuropa do LesteEurop" +
-			"a SeptentrionalEuropa OccidentalAmérica Latina",
+			"straliaArubaÅlandAcerbaixánBosnia e HercegovinaBarbadosBangladeshBélxicaBurkina " +
+			"FasoBulgariaBahreinBurundiBeninSan BartoloméBermudasBruneiBoliviaCaribe neerland" +
+			"ésBrasilBahamasButánIlla BouvetBotsuanaBielorrusiaBeliceCanadáIllas CocosRepúbli" +
+			"ca Democrática do CongoRepública CentroafricanaCongoSuízaCosta de MarfilIllas Co" +
+			"okChileCamerúnChinaColombiaIlla ClippertonCosta RicaCubaCabo VerdeCuraçaoIlla Ch" +
+			"ristmasChipreRepública ChecaAlemañaDiego GarcíaDjibutiDinamarcaDominicaRepública" +
+			" DominicanaArxeliaCeuta e MelillaEcuadorEstoniaExiptoSáhara OccidentalEritreaEsp" +
+			"añaEtiopíaUnión EuropeaFinlandiaFidxiIllas MalvinasMicronesiaIllas FeroeFranciaG" +
+			"abónReino UnidoGranadaXeorxiaGüiana FrancesaGuernseyGanaXibraltarGrenlandiaGambi" +
+			"aGuineaGuadalupeGuinea EcuatorialGreciaXeorxia do Sur e Illas SandwichGuatemalaG" +
+			"uamGuinea-BisauGüianaHong Kong RAE de ChinaIlla Heard e Illas McDonaldHondurasCr" +
+			"oaciaHaitíHungríaIllas CanariasIndonesiaIrlandaIsraelIlla de ManIndiaTerritorio " +
+			"Británico do Océano ÍndicoIraqIránIslandiaItaliaIlla de JerseyXamaicaXordaniaXap" +
+			"ónKenyaQuirguicistánCambodiaKiribatiComoresSaint Kitts e NevisCorea do NorteCore" +
+			"a do SurKuwaitIllas CaimánCasaquistánLaosLíbanoSanta LucíaLiechtensteinSri Lanka" +
+			"LiberiaLesotoLituaniaLuxemburgoLetoniaLibiaMarrocosMónacoMoldaviaMontenegroSan M" +
+			"artiñoMadagascarIllas MarshallRepública de MacedoniaMalíMyanmar (Birmania)Mongol" +
+			"iaMacau RAE de ChinaIllas Marianas do norteMartinicaMauritaniaIlla MontserratMal" +
+			"taMauricioMaldivasMalauiMéxicoMalaisiaMozambiqueNamibiaNova CaledoniaNíxerIlla N" +
+			"orfolkNixeriaNicaraguaPaíses BaixosNoruegaNepalNauruNiueNova ZelandiaOmánPanamáP" +
+			"erúPolinesia FrancesaPapúa Nova GuineaFilipinasPaquistánPoloniaSan Pedro e Migue" +
+			"lónIllas PitcairnPorto RicoTerritorios palestinosPortugalRep. das PalausParaguai" +
+			"QatarOceanía DistanteReuniónRomaníaSerbiaRusiaRuandaArabia SauditaIllas SalomónS" +
+			"eixelesSudánSueciaSingapurSanta HelenaEsloveniaSvalbard e Jan MayenEslovaquiaSer" +
+			"ra LeoaSan MarinoSenegalSomaliaSurinamSudán do surSan Tomé e PríncipeO SalvadorS" +
+			"int MaartenSiriaSuacilandiaTristán da CunhaIllas Turks e CaicosChadTerritorios F" +
+			"ranceses do SulTogoTailandiaTaxiquistánToquelauTimor LesteTurcomenistánTunisiaTo" +
+			"ngaTurquíaTrindade e TobagoTuvaluTaiwánTanzaniaUcraínaUgandaIllas Menores Distan" +
+			"tes dos EUA.Estados Unidos de AméricaUruguaiUzbekistánCidade do VaticanoSan Vice" +
+			"nte e GranadinasVenezuelaIllas Virxes BritánicasIllas Virxes EstadounidensesViet" +
+			"namVanuatuWallis e FutunaSamoaKosovoIemenMayotteSudáfricaZambiaCimbabueRexión de" +
+			"scoñecidaMundoÁfricaNorteaméricaSudaméricaOceaníaÁfrica OccidentalAmérica Centra" +
+			"lÁfrica OrientalÁfrica SeptentrionalÁfrica CentralÁfrica MeridionalAméricaAméric" +
+			"a do NorteCaribeAsia OrientalSul de AsiaSureste AsiáticoEuropa MeridionalAustral" +
+			"asiaMelanesiaRexión da MicronesiaPolinesiaAsiaAsia CentralAsia OccidentalEuropaE" +
+			"uropa do LesteEuropa SeptentrionalEuropa OccidentalAmérica Latina",
 		[]uint16{ // 291 entries
 			0x0, 0x12, 0x19, 0x30, 0x3b, 0x4b, 0x52, 0x59, 0x60, 0x73, 0x79, 0x83,
-			0x8c, 0x9b, 0xa2, 0xab, 0xb0, 0xbb, 0xc6, 0xda, 0xe2, 0xec, 0xf4, 0x100,
-			0x108, 0x10f, 0x116, 0x11b, 0x129, 0x131, 0x137, 0x13e, 0x150, 0x156, 0x15d, 0x163,
-			0x16e, 0x176, 0x181, 0x187, 0x18e, 0x1a3, 0x1c3, 0x1de, 0x1e3, 0x1e9, 0x1f8, 0x202,
-			0x207, 0x20f, 0x214, 0x21c, 0x22b, 0x235, 0x239, 0x243, 0x24b, 0x259, 0x25f, 0x26f,
-			0x277, 0x284, 0x28a, 0x293, 0x29b, 0x2b0, 0x2b7, 0x2c6, 0x2cd, 0x2d4, 0x2da, 0x2eb,
-			0x2f2, 0x2f9, 0x301, 0x30f, 0x318, 0x31c, 0x32a, 0x334, 0x33f, 0x346, 0x34c, 0x357,
-			0x35e, 0x365, 0x375, 0x37d, 0x381, 0x38a, 0x394, 0x39a, 0x3a0, 0x3a9, 0x3ba, 0x3c0,
-			0x3df, 0x3e8, 0x3ec, 0x3f9, 0x400, 0x416, 0x431, 0x439, 0x440, 0x446, 0x44e, 0x45c,
-			0x465, 0x46c, 0x472, 0x47d, 0x482, 0x4aa, 0x4ae, 0x4b3, 0x4bb, 0x4c1, 0x4c7, 0x4ce,
-			0x4d6, 0x4dc, 0x4e2, 0x4f0, 0x4f8, 0x500, 0x507, 0x51b, 0x529, 0x535, 0x53b, 0x548,
-			0x552, 0x556, 0x55d, 0x569, 0x576, 0x57f, 0x586, 0x58d, 0x595, 0x59f, 0x5a6, 0x5ab,
-			0x5b3, 0x5ba, 0x5c1, 0x5cb, 0x5d7, 0x5e1, 0x5ef, 0x5f8, 0x5fc, 0x60e, 0x616, 0x628,
-			0x63f, 0x648, 0x652, 0x65c, 0x661, 0x669, 0x671, 0x677, 0x67e, 0x686, 0x690, 0x697,
-			0x6a5, 0x6ab, 0x6b7, 0x6be, 0x6c7, 0x6d5, 0x6dc, 0x6e1, 0x6e6, 0x6ea, 0x6f7, 0x6fc,
-			0x703, 0x708, 0x71a, 0x72c, 0x735, 0x73f, 0x746, 0x75b, 0x769, 0x773, 0x789, 0x791,
-			0x796, 0x79e, 0x7a3, 0x7b4, 0x7bc, 0x7c4, 0x7ca, 0x7cf, 0x7d5, 0x7e3, 0x7f1, 0x7f9,
-			0x7ff, 0x805, 0x80d, 0x819, 0x822, 0x836, 0x840, 0x84a, 0x854, 0x85b, 0x862, 0x869,
-			0x876, 0x88b, 0x896, 0x8a2, 0x8a7, 0x8b2, 0x8c3, 0x8d7, 0x8db, 0x8f7, 0x8fb, 0x904,
-			0x910, 0x917, 0x922, 0x92f, 0x936, 0x93b, 0x943, 0x954, 0x95a, 0x961, 0x969, 0x971,
-			0x977, 0x997, 0x9b1, 0x9b8, 0x9c3, 0x9d5, 0x9ed, 0x9f6, 0xa0e, 0xa2a, 0xa31, 0xa38,
-			0xa47, 0xa4c, 0xa52, 0xa57, 0xa5e, 0xa68, 0xa6e, 0xa76, 0xa8a, 0xa8f, 0xa96, 0xaa3,
-			0xaae, 0xab6, 0xac8, 0xad8, 0xae8, 0xafd, 0xb0c, 0xb1e, 0xb26, 0xb37, 0xb3d, 0xb4a,
-			0xb55, 0xb66, 0xb77, 0xb82, 0xb8b, 0xba0, 0xba9, 0xbad, 0xbb9, 0xbc8, 0xbce, 0xbdd,
-			0xbf1, 0xc02, 0xc11,
+			0x8c, 0x9b, 0xa2, 0xab, 0xb0, 0xb6, 0xc1, 0xd5, 0xdd, 0xe7, 0xef, 0xfb,
+			0x103, 0x10a, 0x111, 0x116, 0x124, 0x12c, 0x132, 0x139, 0x14b, 0x151, 0x158, 0x15e,
+			0x169, 0x171, 0x17c, 0x182, 0x189, 0x194, 0x1b4, 0x1cd, 0x1d2, 0x1d8, 0x1e7, 0x1f1,
+			0x1f6, 0x1fe, 0x203, 0x20b, 0x21a, 0x224, 0x228, 0x232, 0x23a, 0x248, 0x24e, 0x25e,
+			0x266, 0x273, 0x27a, 0x283, 0x28b, 0x2a0, 0x2a7, 0x2b6, 0x2bd, 0x2c4, 0x2ca, 0x2dc,
+			0x2e3, 0x2ea, 0x2f2, 0x300, 0x309, 0x30e, 0x31c, 0x326, 0x331, 0x338, 0x33e, 0x349,
+			0x350, 0x357, 0x367, 0x36f, 0x373, 0x37c, 0x386, 0x38c, 0x392, 0x39b, 0x3ac, 0x3b2,
+			0x3d1, 0x3da, 0x3de, 0x3ea, 0x3f1, 0x407, 0x422, 0x42a, 0x431, 0x437, 0x43f, 0x44d,
+			0x456, 0x45d, 0x463, 0x46e, 0x473, 0x49b, 0x49f, 0x4a4, 0x4ac, 0x4b2, 0x4c0, 0x4c7,
+			0x4cf, 0x4d5, 0x4da, 0x4e8, 0x4f0, 0x4f8, 0x4ff, 0x512, 0x520, 0x52c, 0x532, 0x53f,
+			0x54b, 0x54f, 0x556, 0x562, 0x56f, 0x578, 0x57f, 0x585, 0x58d, 0x597, 0x59e, 0x5a3,
+			0x5ab, 0x5b2, 0x5ba, 0x5c4, 0x5d0, 0x5da, 0x5e8, 0x5ff, 0x604, 0x616, 0x61e, 0x630,
+			0x647, 0x650, 0x65a, 0x669, 0x66e, 0x676, 0x67e, 0x684, 0x68b, 0x693, 0x69d, 0x6a4,
+			0x6b2, 0x6b8, 0x6c4, 0x6cb, 0x6d4, 0x6e2, 0x6e9, 0x6ee, 0x6f3, 0x6f7, 0x704, 0x709,
+			0x710, 0x715, 0x727, 0x739, 0x742, 0x74c, 0x753, 0x768, 0x776, 0x780, 0x796, 0x79e,
+			0x7ad, 0x7b5, 0x7ba, 0x7cb, 0x7d3, 0x7db, 0x7e1, 0x7e6, 0x7ec, 0x7fa, 0x808, 0x810,
+			0x816, 0x81c, 0x824, 0x830, 0x839, 0x84d, 0x857, 0x861, 0x86b, 0x872, 0x879, 0x880,
+			0x88d, 0x8a2, 0x8ac, 0x8b8, 0x8bd, 0x8c8, 0x8d9, 0x8ed, 0x8f1, 0x90d, 0x911, 0x91a,
+			0x926, 0x92e, 0x939, 0x947, 0x94e, 0x953, 0x95b, 0x96c, 0x972, 0x979, 0x981, 0x989,
+			0x98f, 0x9af, 0x9c9, 0x9d0, 0x9db, 0x9ed, 0xa05, 0xa0e, 0xa26, 0xa42, 0xa49, 0xa50,
+			0xa5f, 0xa64, 0xa6a, 0xa6f, 0xa76, 0xa80, 0xa86, 0xa8e, 0xaa2, 0xaa7, 0xaae, 0xabb,
+			0xac6, 0xace, 0xae0, 0xaf0, 0xb00, 0xb15, 0xb24, 0xb36, 0xb3e, 0xb4f, 0xb55, 0xb62,
+			0xb6d, 0xb7e, 0xb8f, 0xb9a, 0xba3, 0xbb8, 0xbc1, 0xbc5, 0xbd1, 0xbe0, 0xbe6, 0xbf5,
+			0xc09, 0xc1a, 0xc29,
 		},
 	},
 	{ // gsw
@@ -24175,26 +23313,10 @@
 		neRegionStr,
 		neRegionIdx,
 	},
-	{}, // ne-IN
 	{ // nl
 		nlRegionStr,
 		nlRegionIdx,
 	},
-	{ // nl-BE
-		"Het Eiland Man",
-		[]uint16{ // 112 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0xe,
-		},
-	},
 	{ // nmg
 		"Andɔ́raMinlambɔ́ Nsaŋ́nsa mí ArabiaAfganistaŋAntíga bá BarbúdaAnguíllaAlbaniaArm" +
 			"éniaB’Antilles bó NedɛrlandAngolaArgentínaSamoa m ́Amɛ́rkaÖtrishÖstraliáÁrúbaAze" +
@@ -24838,7 +23960,6 @@
 		ruRegionStr,
 		ruRegionIdx,
 	},
-	{}, // ru-UA
 	{ // rw
 		"RwandaIgitonga",
 		[]uint16{ // 234 entries
@@ -25543,165 +24664,42 @@
 		srRegionIdx,
 	},
 	{ // sr-Latn
-		"Ostrvo AsensionAndoraUjedinjeni Arapski EmiratiAvganistanAntigva i BarbudaAngvil" +
-			"aAlbanijaJermenijaHolandski AntiliAngolaAntarktikArgentinaAmerička SamoaAustrija" +
-			"AustralijaArubaOlandska ostrvaAzerbejdžanBosna i HercegovinaBarbadosBangladešBel" +
-			"gijaBurkina FasoBugarskaBahreinBurundiBeninSveti BartolomejBermudaBrunejBolivija" +
-			"Karipska HolandijaBrazilBahamiButanOstrvo BuveBocvanaBelorusijaBelizeKanadaKokos" +
-			" (Keling) OstrvaKongo - KinšasaCentralnoafrička RepublikaKongo - BrazavilŠvajcar" +
-			"skaObala SlonovačeKukova OstrvaČileKamerunKinaKolumbijaOstrvo KlipertonKostarika" +
-			"KubaZelenortska OstrvaKurasaoBožićno ostrvoKiparČeškaNemačkaDijego GarsijaDžibut" +
-			"iDanskaDominikaDominikanska RepublikaAlžirSeuta i MeliljaEkvadorEstonijaEgipatZa" +
-			"padna SaharaEritrejaŠpanijaEtiopijaEvropska UnijaFinskaFidžiFoklandska ostrvaMik" +
-			"ronezijaFarska OstrvaFrancuskaGabonVelika BritanijaGrenadaGruzijaFrancuska Gvaja" +
-			"naGurnsiGanaGibraltarGrenlandGambijaGvinejaGvadelupeEkvatorijalna GvinejaGrčkaJu" +
-			"žna Džordžija i Južna Sendvič OstrvaGvatemalaGuamGvineja-BisaoGvajanaHong Kong S" +
-			". A. R. KinaOstrva Herd i MekdonaldHondurasHrvatskaHaitiMađarskaKanarska ostrvaI" +
-			"ndonezijaIrskaIzraelOstrvo ManIndijaBritanska teritorija u Indijskom okeanuIrakI" +
-			"ranIslandItalijaDžersiJamajkaJordanJapanKenijaKirgistanKambodžaKiribatiKomorska " +
-			"OstrvaSent Kits i NevisSeverna KorejaJužna KorejaKuvajtKajmanska OstrvaKazahstan" +
-			"LaosLibanSveta LucijaLihtenštajnŠri LankaLiberijaLesotoLitvanijaLuksemburgLetoni" +
-			"jaLibijaMarokoMonakoMoldavijaCrna GoraSent MartinMadagaskarMaršalska OstrvaMaked" +
-			"onijaMaliMijanmar (Burma)MongolijaSAR Makao (Kina)Severna Marijanska OstrvaMarti" +
-			"nikMauritanijaMonseratMaltaMauricijusMaldiviMalaviMeksikoMalezijaMozambikNamibij" +
-			"aNova KaledonijaNigerNorfolk OstrvoNigerijaNikaragvaHolandijaNorveškaNepalNauruN" +
-			"iueNovi ZelandOmanPanamaPeruFrancuska PolinezijaPapua Nova GvinejaFilipiniPakist" +
-			"anPoljskaSen Pjer i MikelonPitkernPortorikoPalestinske teritorijePortugalPalauPa" +
-			"ragvajKatarOkeanija (udaljena ostrva)ReinionRumunijaSrbijaRusijaRuandaSaudijska " +
-			"ArabijaSolomonska OstrvaSejšeliSudanŠvedskaSingapurSveta JelenaSlovenijaSvalbard" +
-			" i Jan MajenSlovačkaSijera LeoneSan MarinoSenegalSomalijaSurinamJužni SudanSao T" +
-			"ome i PrincipeSalvadorSveti MartinSirijaSvazilendTristan da KunjaOstrva Turks i " +
-			"KaikosČadFrancuske Južne TeritorijeTogoTajlandTadžikistanTokelauIstočni TimorTur" +
-			"kmenistanTunisTongaTurskaTrinidad i TobagoTuvaluTajvanTanzanijaUkrajinaUgandaUda" +
-			"ljena ostrva SADSjedinjene Američke DržaveUrugvajUzbekistanVatikanSent Vinsent i" +
-			" GrenadiniVenecuelaBritanska Devičanska OstrvaAmerička Devičanska OstrvaVijetnam" +
-			"VanuatuValis i FutunaSamoaKosovoJemenMajotJužnoafrička RepublikaZambijaZimbabveN" +
-			"epoznat regionsvetAfrikaSevernoamerički kontinentJužna AmerikaOkeanijaZapadna Af" +
-			"rikaCentralna AmerikaIstočna AfrikaSeverna AfrikaCentralna AfrikaJužna AfrikaSev" +
-			"erna i Južna AmerikaSeverna AmerikaKaribiIstočna AzijaJužna AzijaJugoistočna Azi" +
-			"jaJužna EvropaAustralija i Novi ZelandMelanezijaMikronezijski regionPolinezijaAz" +
-			"ijaCentralna AzijaZapadna AzijaEvropaIstočna EvropaSeverna EvropaZapadna EvropaL" +
-			"atinska Amerika",
-		[]uint16{ // 291 entries
-			0x0, 0xf, 0x15, 0x2f, 0x39, 0x4a, 0x51, 0x59, 0x62, 0x72, 0x78, 0x81,
-			0x8a, 0x99, 0xa1, 0xab, 0xb0, 0xbf, 0xcb, 0xde, 0xe6, 0xf0, 0xf7, 0x103,
-			0x10b, 0x112, 0x119, 0x11e, 0x12e, 0x135, 0x13b, 0x143, 0x155, 0x15b, 0x161, 0x166,
-			0x171, 0x178, 0x182, 0x188, 0x18e, 0x1a3, 0x1b3, 0x1ce, 0x1de, 0x1e9, 0x1f9, 0x206,
-			0x20b, 0x212, 0x216, 0x21f, 0x22f, 0x238, 0x23c, 0x24e, 0x255, 0x265, 0x26a, 0x271,
-			0x279, 0x287, 0x28f, 0x295, 0x29d, 0x2b3, 0x2b9, 0x2c8, 0x2cf, 0x2d7, 0x2dd, 0x2eb,
-			0x2f3, 0x2fb, 0x303, 0x311, 0x317, 0x31d, 0x32e, 0x339, 0x346, 0x34f, 0x354, 0x364,
-			0x36b, 0x372, 0x383, 0x389, 0x38d, 0x396, 0x39e, 0x3a5, 0x3ac, 0x3b5, 0x3ca, 0x3d0,
-			0x3fb, 0x404, 0x408, 0x415, 0x41c, 0x433, 0x44a, 0x452, 0x45a, 0x45f, 0x468, 0x477,
-			0x481, 0x486, 0x48c, 0x496, 0x49c, 0x4c3, 0x4c7, 0x4cb, 0x4d1, 0x4d8, 0x4df, 0x4e6,
-			0x4ec, 0x4f1, 0x4f7, 0x500, 0x509, 0x511, 0x520, 0x531, 0x53f, 0x54c, 0x552, 0x562,
-			0x56b, 0x56f, 0x574, 0x580, 0x58c, 0x596, 0x59e, 0x5a4, 0x5ad, 0x5b7, 0x5bf, 0x5c5,
-			0x5cb, 0x5d1, 0x5da, 0x5e3, 0x5ee, 0x5f8, 0x609, 0x613, 0x617, 0x627, 0x630, 0x640,
-			0x659, 0x661, 0x66c, 0x674, 0x679, 0x683, 0x68a, 0x690, 0x697, 0x69f, 0x6a7, 0x6af,
-			0x6be, 0x6c3, 0x6d1, 0x6d9, 0x6e2, 0x6eb, 0x6f4, 0x6f9, 0x6fe, 0x702, 0x70d, 0x711,
-			0x717, 0x71b, 0x72f, 0x741, 0x749, 0x751, 0x758, 0x76a, 0x771, 0x77a, 0x790, 0x798,
-			0x79d, 0x7a5, 0x7aa, 0x7c4, 0x7cb, 0x7d3, 0x7d9, 0x7df, 0x7e5, 0x7f6, 0x807, 0x80f,
-			0x814, 0x81c, 0x824, 0x830, 0x839, 0x84d, 0x856, 0x862, 0x86c, 0x873, 0x87b, 0x882,
-			0x88e, 0x8a1, 0x8a9, 0x8b5, 0x8bb, 0x8c4, 0x8d4, 0x8e9, 0x8ed, 0x908, 0x90c, 0x913,
-			0x91f, 0x926, 0x934, 0x940, 0x945, 0x94a, 0x950, 0x961, 0x967, 0x96d, 0x976, 0x97e,
-			0x984, 0x997, 0x9b3, 0x9ba, 0x9c4, 0x9cb, 0x9e3, 0x9ec, 0xa08, 0xa24, 0xa2c, 0xa33,
-			0xa41, 0xa46, 0xa4c, 0xa51, 0xa56, 0xa6e, 0xa75, 0xa7d, 0xa8c, 0xa90, 0xa96, 0xab0,
-			0xabe, 0xac6, 0xad4, 0xae5, 0xaf4, 0xb02, 0xb12, 0xb1f, 0xb37, 0xb46, 0xb4c, 0xb5a,
-			0xb66, 0xb78, 0xb85, 0xb9d, 0xba7, 0xbbb, 0xbc5, 0xbca, 0xbd9, 0xbe6, 0xbec, 0xbfb,
-			0xc09, 0xc17, 0xc27,
-		},
+		srLatnRegionStr,
+		srLatnRegionIdx,
 	},
 	{ // sv
 		svRegionStr,
 		svRegionIdx,
 	},
-	{ // sv-FI
-		"Saint-BarthélemyBonaire, S:t Eustatius och SabaDemokratiska republiken KongoKong" +
-			"oFörenade kungariketSaint Kitts och NevisSaint LuciaS:t Martin (franska delen)Bu" +
-			"rmaSaint Pierre och MiquelonPitcairnPalestinska områdetNordsudanSaint HelenaSint" +
-			" MartinTokelauöarnaFörenta staternaVatikanenSaint Vincent och GrenadinernaWallis" +
-			"- och FutunaSydöstasien",
-		[]uint16{ // 278 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x11, 0x11, 0x11, 0x11, 0x30, 0x30, 0x30, 0x30,
-			0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x4d, 0x4d, 0x52, 0x52, 0x52, 0x52,
-			0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52,
-			0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52,
-			0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x66,
-			0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
-			0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
-			0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
-			0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
-			0x7b, 0x7b, 0x7b, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
-			0x86, 0x86, 0x86, 0x86, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa5, 0xa5, 0xa5,
-			0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
-			0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
-			0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xbe, 0xc6, 0xc6, 0xda, 0xda,
-			0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda,
-			0xe3, 0xe3, 0xe3, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef,
-			0xef, 0xef, 0xef, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
-			0xfa, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107,
-			0x107, 0x107, 0x118, 0x118, 0x118, 0x121, 0x13f, 0x13f, 0x13f, 0x13f, 0x13f, 0x13f,
-			0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151,
-			0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151,
-			0x151, 0x15d,
-		},
-	},
+	{}, // sv-FI
 	{ // sw
 		swRegionStr,
 		swRegionIdx,
 	},
-	{ // swc
-		"AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmeniaAntili" +
-			" za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaArubaAzabajaniBosnia " +
-			"na HezegovinaBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareniBurundiBeniniB" +
-			"ermudaBruneiBoliviaBraziliBahamaButaniBotswanaBelarusiBelizeKanadaJamhuri ya Kid" +
-			"emokrasia ya KongoJamhuri ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChil" +
-			"eKameruniChinaKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
-			"iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispaniaUhabe" +
-			"shiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniUingerezaGrenadaJojiaGwiy" +
-			"ana ya UfaransaGhanaJibraltaGrinlandiGambiaGineGwadelupeGinekwetaUgirikiGwatemal" +
-			"aGwamGinebisauGuyanaHondurasiKorasiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEn" +
-			"eo la Uingereza katika Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapani" +
-			"KenyaKirigizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea " +
-			"KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSirila" +
-			"nkaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldovaBukiniVisiwa vya" +
-			" MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana vya KaskaziniMartinikiMorit" +
-			"aniaMontserratiMaltaMorisiModivuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaN" +
-			"ijeriKisiwa cha NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOman" +
-			"iPanamaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri na Mikel" +
-			"oniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa PalestinaUrenoPala" +
-			"uParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiwa vya SolomonShelisheliSudan" +
-			"iUswidiSingapooSantahelenaSloveniaSlovakiaSiera LeoniSamarinoSenegaliSomaliaSuri" +
-			"namuSao Tome na PrincipeElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTai" +
-			"landiTajikistaniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
-			"idad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibekistaniVatik" +
-			"aniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa vya V" +
-			"irgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMayotteAfrika Kusini" +
-			"ZambiaZimbabwe",
-		[]uint16{ // 260 entries
-			0x0, 0x0, 0x6, 0x16, 0x22, 0x34, 0x3c, 0x43, 0x4a, 0x5c, 0x62, 0x62,
-			0x6a, 0x7b, 0x82, 0x8b, 0x90, 0x90, 0x99, 0xad, 0xb5, 0xc0, 0xc8, 0xd2,
-			0xda, 0xe2, 0xe9, 0xef, 0xef, 0xf6, 0xfc, 0x103, 0x103, 0x10a, 0x110, 0x116,
-			0x116, 0x11e, 0x126, 0x12c, 0x132, 0x132, 0x152, 0x16b, 0x170, 0x176, 0x17d, 0x18c,
-			0x191, 0x199, 0x19e, 0x1a6, 0x1a6, 0x1af, 0x1b3, 0x1bb, 0x1bb, 0x1bb, 0x1c2, 0x1d2,
-			0x1db, 0x1db, 0x1e1, 0x1e8, 0x1f0, 0x203, 0x20a, 0x20a, 0x210, 0x217, 0x21c, 0x21c,
-			0x223, 0x22b, 0x233, 0x233, 0x238, 0x23c, 0x24f, 0x259, 0x259, 0x261, 0x267, 0x270,
-			0x277, 0x27c, 0x28f, 0x28f, 0x294, 0x29c, 0x2a5, 0x2ab, 0x2af, 0x2b8, 0x2c1, 0x2c8,
-			0x2c8, 0x2d1, 0x2d5, 0x2de, 0x2e4, 0x2e4, 0x2e4, 0x2ed, 0x2f4, 0x2f9, 0x301, 0x301,
-			0x30a, 0x312, 0x319, 0x319, 0x31e, 0x343, 0x348, 0x34e, 0x356, 0x35c, 0x35c, 0x363,
-			0x36a, 0x370, 0x375, 0x382, 0x38a, 0x392, 0x398, 0x3ab, 0x3ba, 0x3c6, 0x3cd, 0x3de,
-			0x3e9, 0x3ee, 0x3f6, 0x400, 0x40a, 0x413, 0x41a, 0x420, 0x428, 0x431, 0x438, 0x43d,
-			0x443, 0x449, 0x450, 0x450, 0x450, 0x456, 0x468, 0x471, 0x475, 0x47a, 0x482, 0x482,
-			0x4a2, 0x4ab, 0x4b4, 0x4bf, 0x4c4, 0x4ca, 0x4d0, 0x4d6, 0x4dd, 0x4e4, 0x4ec, 0x4f3,
-			0x4ff, 0x505, 0x516, 0x51d, 0x526, 0x52e, 0x533, 0x539, 0x53e, 0x542, 0x54c, 0x551,
-			0x557, 0x55b, 0x570, 0x575, 0x57d, 0x586, 0x58d, 0x5a3, 0x5ac, 0x5b5, 0x5e7, 0x5ec,
-			0x5f1, 0x5f9, 0x5ff, 0x5ff, 0x608, 0x60f, 0x60f, 0x614, 0x61a, 0x61f, 0x631, 0x63b,
-			0x641, 0x647, 0x64f, 0x65a, 0x662, 0x662, 0x66a, 0x675, 0x67d, 0x685, 0x68c, 0x694,
-			0x694, 0x6a8, 0x6b0, 0x6b0, 0x6b5, 0x6bb, 0x6bb, 0x6d4, 0x6d9, 0x6d9, 0x6dd, 0x6e5,
-			0x6f0, 0x6f7, 0x70a, 0x719, 0x720, 0x725, 0x72c, 0x73e, 0x744, 0x74b, 0x753, 0x75a,
-			0x760, 0x760, 0x768, 0x76f, 0x77b, 0x783, 0x79c, 0x7a5, 0x7c4, 0x7e2, 0x7eb, 0x7f2,
-			0x801, 0x806, 0x806, 0x80c, 0x813, 0x820, 0x826, 0x82e,
+	{ // sw-CD
+		"AfuganistaniBeniniKongoKodivaaKuprosiUajemiLishenteniBukiniMyamaKisiwa cha Norfo" +
+			"kNijeriaTimori ya Mashariki",
+		[]uint16{ // 231 entries
+			0x0, 0x0, 0x0, 0x0, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc,
+			0xc, 0xc, 0xc, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
+			0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x17, 0x17, 0x1e, 0x1e,
+			0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x25, 0x25,
+			0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
+			0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
+			0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
+			0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
+			0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+			0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+			0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
+			0x35, 0x35, 0x35, 0x35, 0x35, 0x3b, 0x3b, 0x3b, 0x3b, 0x40, 0x40, 0x40,
+			0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+			0x40, 0x40, 0x51, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
+			0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
+			0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
+			0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
+			0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
+			0x58, 0x58, 0x6b,
 		},
 	},
 	{ // ta
@@ -26031,35 +25029,33 @@
 		urRegionIdx,
 	},
 	{ // ur-IN
-		"جزیرہ اسینشنجزائر ایلانڈبارباڈوسبرازیلجزیرہ بووہجزائر (کیلنگ) کوکوسکوت داوواغجزا" +
-			"ئر ککجزیرہ کلپرٹنڈیگو گارشیایورپی اتحادجزائر فاکلینڈجزائرفاروگریناڈافرانسیسی گیا" +
-			"ناجزائر ہرڈ و مکڈونلڈجزائر کناریبرطانوی بحرہند خطہجزائر مارشلجزائر شمالی ماریانا" +
-			"جزیرہ نارفولکناوروفلپائنجزائر پٹکیرنروسجزائر سلیمانترسٹان دا کونیاجزائر کیکس و ت" +
-			"رکیہامریکی بیرونی جزائربرطانوی جزائر ورجنامریکی جزائر ورجنامریکہ",
-		[]uint16{ // 273 entries
+		"جزیرہ اسینشنجزائر آلینڈجزیرہ بوویتجزائر (کیلنگ) کوکوسکوت داوواغجزائر ککجزیرہ کلپ" +
+			"رٹنڈیگو گارشیاجزائر فاکلینڈجزائر فیروفرانسیسی گیاناجزائر ہرڈ و مکڈونلڈجزائر کنار" +
+			"یبرطانوی بحرہند خطہجزائر مارشلجزائر شمالی ماریاناجزیرہ نارفوکجزائر پٹکیرنجزائر س" +
+			"لیمانترسٹان دا کونیاجزائر کیکس و ترکیہامریکی بیرونی جزائربرطانوی جزائر ورجنامریک" +
+			"ی جزائر ورجن",
+		[]uint16{ // 250 entries
 			0x0, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
-			0x17, 0x17, 0x17, 0x17, 0x17, 0x2e, 0x2e, 0x2e, 0x3e, 0x3e, 0x3e, 0x3e,
-			0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x4a, 0x4a, 0x4a,
-			0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x92, 0xa1,
-			0xa1, 0xa1, 0xa1, 0xa1, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
-			0xb8, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
-			0xcd, 0xcd, 0xcd, 0xe2, 0xe2, 0xe2, 0xfb, 0xfb, 0x10d, 0x10d, 0x10d, 0x10d,
-			0x11b, 0x11b, 0x136, 0x136, 0x136, 0x136, 0x136, 0x136, 0x136, 0x136, 0x136, 0x136,
-			0x136, 0x136, 0x136, 0x136, 0x136, 0x136, 0x159, 0x159, 0x159, 0x159, 0x159, 0x16e,
-			0x16e, 0x16e, 0x16e, 0x16e, 0x16e, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190,
-			0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190,
-			0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x190,
-			0x190, 0x190, 0x190, 0x190, 0x190, 0x190, 0x1a5, 0x1a5, 0x1a5, 0x1a5, 0x1a5, 0x1a5,
-			0x1c9, 0x1c9, 0x1c9, 0x1c9, 0x1c9, 0x1c9, 0x1c9, 0x1c9, 0x1c9, 0x1c9, 0x1c9, 0x1c9,
-			0x1c9, 0x1c9, 0x1e2, 0x1e2, 0x1e2, 0x1e2, 0x1e2, 0x1e2, 0x1ec, 0x1ec, 0x1ec, 0x1ec,
-			0x1ec, 0x1ec, 0x1ec, 0x1ec, 0x1f8, 0x1f8, 0x1f8, 0x1f8, 0x20f, 0x20f, 0x20f, 0x20f,
-			0x20f, 0x20f, 0x20f, 0x20f, 0x20f, 0x20f, 0x20f, 0x215, 0x215, 0x215, 0x22c, 0x22c,
-			0x22c, 0x22c, 0x22c, 0x22c, 0x22c, 0x22c, 0x22c, 0x22c, 0x22c, 0x22c, 0x22c, 0x22c,
-			0x22c, 0x22c, 0x22c, 0x22c, 0x22c, 0x22c, 0x248, 0x269, 0x269, 0x269, 0x269, 0x269,
-			0x269, 0x269, 0x269, 0x269, 0x269, 0x269, 0x269, 0x269, 0x269, 0x269, 0x269, 0x269,
-			0x269, 0x28d, 0x28d, 0x28d, 0x28d, 0x28d, 0x28d, 0x28d, 0x2af, 0x2cf, 0x2cf, 0x2cf,
-			0x2cf, 0x2cf, 0x2cf, 0x2cf, 0x2cf, 0x2cf, 0x2cf, 0x2cf, 0x2cf, 0x2cf, 0x2cf, 0x2cf,
-			0x2cf, 0x2cf, 0x2cf, 0x2cf, 0x2cf, 0x2cf, 0x2cf, 0x2cf, 0x2db,
+			0x17, 0x17, 0x17, 0x17, 0x17, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c,
+			0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c,
+			0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x63, 0x63, 0x63, 0x63, 0x76, 0x85,
+			0x85, 0x85, 0x85, 0x85, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c,
+			0x9c, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1,
+			0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xca, 0xca, 0xdd, 0xdd, 0xdd, 0xdd,
+			0xdd, 0xdd, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
+			0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0x11b, 0x11b, 0x11b, 0x11b, 0x11b, 0x130,
+			0x130, 0x130, 0x130, 0x130, 0x130, 0x152, 0x152, 0x152, 0x152, 0x152, 0x152, 0x152,
+			0x152, 0x152, 0x152, 0x152, 0x152, 0x152, 0x152, 0x152, 0x152, 0x152, 0x152, 0x152,
+			0x152, 0x152, 0x152, 0x152, 0x152, 0x152, 0x152, 0x152, 0x152, 0x152, 0x152, 0x152,
+			0x152, 0x152, 0x152, 0x152, 0x152, 0x152, 0x167, 0x167, 0x167, 0x167, 0x167, 0x167,
+			0x18b, 0x18b, 0x18b, 0x18b, 0x18b, 0x18b, 0x18b, 0x18b, 0x18b, 0x18b, 0x18b, 0x18b,
+			0x18b, 0x18b, 0x1a2, 0x1a2, 0x1a2, 0x1a2, 0x1a2, 0x1a2, 0x1a2, 0x1a2, 0x1a2, 0x1a2,
+			0x1a2, 0x1a2, 0x1a2, 0x1a2, 0x1a2, 0x1a2, 0x1a2, 0x1a2, 0x1b9, 0x1b9, 0x1b9, 0x1b9,
+			0x1b9, 0x1b9, 0x1b9, 0x1b9, 0x1b9, 0x1b9, 0x1b9, 0x1b9, 0x1b9, 0x1b9, 0x1d0, 0x1d0,
+			0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1d0,
+			0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1d0, 0x1ec, 0x20d, 0x20d, 0x20d, 0x20d, 0x20d,
+			0x20d, 0x20d, 0x20d, 0x20d, 0x20d, 0x20d, 0x20d, 0x20d, 0x20d, 0x20d, 0x20d, 0x20d,
+			0x20d, 0x231, 0x231, 0x231, 0x231, 0x231, 0x231, 0x231, 0x253, 0x273,
 		},
 	},
 	{ // uz
@@ -26733,103 +25729,38 @@
 		zhRegionStr,
 		zhRegionIdx,
 	},
-	{ // zh-Hans-HK
-		"瓜德罗普岛黑山圣皮埃尔和密克隆",
-		[]uint16{ // 188 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
-			0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
-			0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
-			0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x2d,
-		},
-	},
-	{ // zh-Hans-MO
-		"克利柏顿岛黑山圣皮埃尔和密克隆",
-		[]uint16{ // 188 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
-			0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
-			0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
-			0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x2d,
-		},
-	},
-	{ // zh-Hans-SG
-		"克利柏顿岛黑山圣皮埃尔和密克隆",
-		[]uint16{ // 188 entries
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-			0x0, 0x0, 0x0, 0x0, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-			0xf, 0xf, 0xf, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
-			0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
-			0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
-			0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x2d,
-		},
-	},
 	{ // zh-Hant
 		zhHantRegionStr,
 		zhHantRegionIdx,
 	},
 	{ // zh-Hant-HK
-		"阿拉伯聯合酋長國安提瓜及巴布達阿魯巴阿塞拜疆波斯尼亞和黑塞哥維那巴巴多斯貝寧聖巴泰勒米博茨瓦納剛果 - 金夏沙剛果 - 布拉薩科特迪瓦哥斯達黎加佛得角塞浦路斯厄" +
-			"立特里亞埃塞俄比亞加蓬格林納達格魯吉亞岡比亞南佐治亞島與南桑威奇群島危地馬拉赫德與麥當勞群島洪都拉斯英屬地曼島意大利肯雅科摩羅聖基茨和尼維斯聖盧西亞列支敦士登利" +
-			"比里亞萊索托黑山馬里毛里塔尼亞蒙塞拉特島毛里裘斯馬爾代夫莫桑比克新喀里多尼亞尼日爾尼日利亞阿曼巴布亞新幾內亞皮特凱恩島卡塔爾盧旺達沙特阿拉伯所羅門群島塞舌爾斯洛" +
-			"文尼亞斯瓦爾巴群島及揚馬延島塞拉利昂索馬里蘇里南聖多美普林西比斯威士蘭特克斯和凱科斯群島乍得法屬南部地區湯加千里達和多巴哥圖瓦盧坦桑尼亞梵蒂岡宮城聖文森特和格林" +
-			"納丁斯瓦努阿圖贊比亞中美洲加勒比",
-		[]uint16{ // 275 entries
-			0x0, 0x0, 0x0, 0x18, 0x18, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
-			0x2d, 0x2d, 0x2d, 0x2d, 0x36, 0x36, 0x42, 0x60, 0x6c, 0x6c, 0x6c, 0x6c,
-			0x6c, 0x6c, 0x6c, 0x72, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
-			0x81, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x9f, 0x9f, 0xb1, 0xb1, 0xbd, 0xbd,
-			0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xcc, 0xcc, 0xd5, 0xd5, 0xd5, 0xe1, 0xe1,
-			0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
-			0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x105, 0x105,
-			0x111, 0x11d, 0x11d, 0x11d, 0x11d, 0x11d, 0x11d, 0x126, 0x126, 0x126, 0x126, 0x126,
-			0x14a, 0x156, 0x156, 0x156, 0x156, 0x156, 0x16e, 0x17a, 0x17a, 0x17a, 0x17a, 0x17a,
-			0x17a, 0x17a, 0x17a, 0x189, 0x189, 0x189, 0x189, 0x189, 0x189, 0x192, 0x192, 0x192,
-			0x192, 0x192, 0x198, 0x198, 0x198, 0x198, 0x1a1, 0x1b6, 0x1b6, 0x1b6, 0x1b6, 0x1b6,
-			0x1b6, 0x1b6, 0x1b6, 0x1c2, 0x1d1, 0x1d1, 0x1dd, 0x1e6, 0x1e6, 0x1e6, 0x1e6, 0x1e6,
-			0x1e6, 0x1e6, 0x1e6, 0x1ec, 0x1ec, 0x1ec, 0x1ec, 0x1ec, 0x1f2, 0x1f2, 0x1f2, 0x1f2,
-			0x1f2, 0x1f2, 0x201, 0x210, 0x210, 0x21c, 0x228, 0x228, 0x228, 0x228, 0x234, 0x234,
-			0x246, 0x24f, 0x24f, 0x25b, 0x25b, 0x25b, 0x25b, 0x25b, 0x25b, 0x25b, 0x25b, 0x261,
-			0x261, 0x261, 0x261, 0x276, 0x276, 0x276, 0x276, 0x276, 0x285, 0x285, 0x285, 0x285,
-			0x285, 0x285, 0x28e, 0x28e, 0x28e, 0x28e, 0x28e, 0x28e, 0x297, 0x2a6, 0x2b5, 0x2be,
-			0x2be, 0x2be, 0x2be, 0x2be, 0x2cd, 0x2ee, 0x2ee, 0x2fa, 0x2fa, 0x2fa, 0x303, 0x30c,
-			0x30c, 0x321, 0x321, 0x321, 0x321, 0x32d, 0x32d, 0x348, 0x34e, 0x360, 0x360, 0x360,
-			0x360, 0x360, 0x360, 0x360, 0x360, 0x366, 0x366, 0x37b, 0x384, 0x384, 0x390, 0x390,
-			0x390, 0x390, 0x390, 0x390, 0x390, 0x39f, 0x3bd, 0x3bd, 0x3bd, 0x3bd, 0x3bd, 0x3c9,
-			0x3c9, 0x3c9, 0x3c9, 0x3c9, 0x3c9, 0x3c9, 0x3d2, 0x3d2, 0x3d2, 0x3d2, 0x3d2, 0x3d2,
-			0x3d2, 0x3d2, 0x3d2, 0x3db, 0x3db, 0x3db, 0x3db, 0x3db, 0x3db, 0x3db, 0x3e4,
+		"阿拉伯聯合酋長國阿魯巴阿塞拜疆波斯尼亞和黑塞哥維那博茨瓦納剛果 - 金夏沙剛果 - 布拉薩哥斯達黎加塞浦路斯厄立特里亞埃塞俄比亞格林納達格魯吉亞危地馬拉意大利肯" +
+			"雅科摩羅列支敦士登萊索托黑山毛里裘斯馬爾代夫莫桑比克尼日爾尼日利亞巴布亞新幾內亞皮特凱恩島卡塔爾盧旺達沙特阿拉伯所羅門群島塞舌爾斯洛文尼亞斯瓦爾巴特群島及揚馬延" +
+			"島塞拉利昂斯威士蘭特克斯和凱科斯群島法屬南部地區湯加圖瓦盧坦桑尼亞瓦努阿圖贊比亞中美洲",
+		[]uint16{ // 268 entries
+			0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+			0x18, 0x18, 0x18, 0x18, 0x21, 0x21, 0x2d, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b,
+			0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b,
+			0x4b, 0x57, 0x57, 0x57, 0x57, 0x57, 0x69, 0x69, 0x7b, 0x7b, 0x7b, 0x7b,
+			0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x96, 0x96,
+			0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
+			0xa5, 0xa5, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4,
+			0xc0, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
+			0xcc, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
+			0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xe1, 0xe1, 0xe1,
+			0xe1, 0xe1, 0xe7, 0xe7, 0xe7, 0xe7, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+			0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0x108, 0x108, 0x108, 0x108, 0x108,
+			0x108, 0x108, 0x108, 0x10e, 0x10e, 0x10e, 0x10e, 0x10e, 0x10e, 0x10e, 0x10e, 0x10e,
+			0x10e, 0x10e, 0x10e, 0x10e, 0x10e, 0x11a, 0x126, 0x126, 0x126, 0x126, 0x132, 0x132,
+			0x132, 0x13b, 0x13b, 0x147, 0x147, 0x147, 0x147, 0x147, 0x147, 0x147, 0x147, 0x147,
+			0x147, 0x147, 0x147, 0x15c, 0x15c, 0x15c, 0x15c, 0x15c, 0x16b, 0x16b, 0x16b, 0x16b,
+			0x16b, 0x16b, 0x174, 0x174, 0x174, 0x174, 0x174, 0x174, 0x17d, 0x18c, 0x19b, 0x1a4,
+			0x1a4, 0x1a4, 0x1a4, 0x1a4, 0x1b3, 0x1d7, 0x1d7, 0x1e3, 0x1e3, 0x1e3, 0x1e3, 0x1e3,
+			0x1e3, 0x1e3, 0x1e3, 0x1e3, 0x1e3, 0x1ef, 0x1ef, 0x20a, 0x20a, 0x21c, 0x21c, 0x21c,
+			0x21c, 0x21c, 0x21c, 0x21c, 0x21c, 0x222, 0x222, 0x222, 0x22b, 0x22b, 0x237, 0x237,
+			0x237, 0x237, 0x237, 0x237, 0x237, 0x237, 0x237, 0x237, 0x237, 0x237, 0x237, 0x243,
+			0x243, 0x243, 0x243, 0x243, 0x243, 0x243, 0x24c, 0x24c, 0x24c, 0x24c, 0x24c, 0x24c,
+			0x24c, 0x24c, 0x24c, 0x255,
 		},
 	},
 	{ // zu
@@ -26843,67 +25774,67 @@
 	"illaAlbaniëArmeniëNederlands-AntilleAngolaAntarktikaArgentiniëAmerikaans-SamoaOo" +
 	"stenrykAustraliëArubaÅlandeilandeAzerbeidjanBosnië en HerzegowinaBarbadosBanglad" +
 	"esjBelgiëBurkina FasoBulgaryeBahreinBurundiBeninSint BarthélemyBermudaBroeneiBol" +
-	"iviëKaribiese NederlandBrasiliëBahamasBhoetanBouveteilandBotswanaBelarusBelizeKa" +
-	"nadaCocos- (Keeling) eilandeDemokratiese Republiek van die KongoSentraal-Afrikaa" +
-	"nse RepubliekRepubliek van die KongoSwitserlandIvoorkusCookeilandeChiliKameroenS" +
-	"jinaColombiëClippertoneilandCosta RicaKubaKaap VerdeCuraçaoKerseilandSiprusTjegg" +
-	"iese RepubliekDuitslandDiego GarciaDjiboetiDenemarkeDominicaDominikaanse Republi" +
-	"ekAlgeriëCeuta en MelillaEcuadorEstlandEgipteWes-SaharaEritreaSpanjeEthiopiëEuro" +
-	"pese UnieFinlandFidjiFalklandeilandeMikronesiëFaroëreilandeFrankrykGaboenVerenig" +
-	"de KoninkrykGrenadaGeorgiëFrans-GuyanaGuernseyGhanaGibraltarGroenlandGambiëGuine" +
-	"eGuadeloupeEkwatoriaal-GuineeGriekelandSuid-Georgië en die Suidelike Sandwicheil" +
-	"andeGuatemalaGuamGuinee-BissauGuyanaHongkong SAS SjinaHeard- en McDonaldeilandeH" +
-	"ondurasKroasiëHaïtiHongaryeKanariese EilandeIndonesiëIerlandIsraelEiland ManIndi" +
-	"ëBritse Indiese OseaangebiedIrakIranYslandItaliëJerseyJamaikaJordaniëJapanKeniaK" +
-	"irgisiëKambodjaKiribatiComoreSint Kitts en NevisNoord-KoreaSuid-KoreaKoeweitKaai" +
-	"manseilandeKazakstanLaosLibanonSint LuciaLiechtensteinSri LankaLiberiëLesothoLit" +
-	"aueLuxemburgLetlandLibiëMarokkoMonacoMoldowaMontenegroSint MartinMadagaskarMarsh" +
-	"alleilandeMacedoniëMaliMianmar (Birma)MongoliëMacau SAS SjinaNoordelike Mariana-" +
-	"eilandeMartiniqueMauritaniëMontserratMaltaMauritiusMalediveMalawiMeksikoMaleisië" +
-	"MosambiekNamibiëNieu-KaledoniëNigerNorfolkeilandNigeriëNicaraguaNederlandNoorweë" +
-	"NepalNauruNiueNieu-SeelandOmanPanamaPeruFrans-PolinesiëPapoea-Nieu-GuineeFilippy" +
-	"nePakistanPoleSint Pierre en MiquelonPitcairneilandePuerto RicoPalestynse gebied" +
-	"ePortugalPalauParaguayKatarOmliggende OseaniëRéunionRoemeniëSerwiëRuslandRwandaS" +
-	"aoedi-ArabiëSolomoneilandeSeychelleSoedanSwedeSingapoerSint HelenaSloweniëSvalba" +
-	"rd en Jan MayenSlowakyeSierra LeoneSan MarinoSenegalSomaliëSurinameSuid-SoedanSa" +
-	"o Tome en PrincipeEl SalvadorSint MaartenSiriëSwazilandTristan da CunhaTurks- en" +
-	" CaicoseilandeTsjadFranse Suidelike GebiedeTogoThailandTadjikistanTokelauOos-Tim" +
-	"orTurkmeniëTunisiëTongaTurkyeTrinidad en TobagoTuvaluTaiwanTanzaniëOekraïneUgand" +
-	"aVS klein omliggende eilandeVerenigde State van AmerikaUruguayOesbekistanVatikaa" +
-	"nstadSint Vincent en die GrenadineVenezuelaBritse Maagde-eilandeAmerikaanse Maag" +
-	"de-eilandeViëtnamVanuatuWallis en FutunaSamoaKosovoJemenMayotteSuid-AfrikaZambië" +
-	"ZimbabweOnbekende gebiedWêreldAfrikaNoord-AmerikaSuid-AmerikaOseaniëWes-AfrikaSe" +
-	"ntraal-AmerikaOos-AfrikaNoord-AfrikaMidde-AfrikaSuider-AfrikaAmerikasNoordelike " +
-	"AmerikaKaribiesOos-AsiëSuid-AsiëSuidoos-AsiëSuid-EuropaAustralasiëMelanesiëMikro" +
-	"nesiese streekPolinesiëAsiëSentraal-AsiëWes-AsiëEuropaOos-EuropaNoord-EuropaWes-" +
-	"EuropaLatyns-Amerika"
+	"iviëKaribiese NederlandBrasiliëBahamasBhoetanBouvet-eilandBotswanaBelarusBelizeK" +
+	"anadaKokos-eilandeDemokratiese Republiek van die KongoSentraal-Afrikaanse Republ" +
+	"iekRepubliek van die KongoSwitserlandIvoorkusCookeilandeChiliKameroenSjinaColomb" +
+	"iëClippertoneilandCosta RicaKubaKaap VerdeCuraçaoKerseilandSiprusTjeggiese Repub" +
+	"liekDuitslandDiego GarciaDjiboetiDenemarkeDominicaDominikaanse RepubliekAlgeriëC" +
+	"euta en MelillaEcuadorEstlandEgipteWes-SaharaEritreaSpanjeEthiopiëEuropese UnieF" +
+	"inlandFidjiFalklandeilandeMikronesiëFaroëreilandeFrankrykGaboenVerenigde Koninkr" +
+	"ykGrenadaGeorgiëFrans-GuyanaGuernseyGhanaGibraltarGroenlandGambiëGuineeGuadeloup" +
+	"eEkwatoriaal-GuineeGriekelandSuid-Georgië en die Suidelike SandwicheilandeGuatem" +
+	"alaGuamGuinee-BissauGuyanaHongkong SAS SjinaHeard- en McDonaldeilandeHondurasKro" +
+	"asiëHaïtiHongaryeKanariese EilandeIndonesiëIerlandIsraelEiland ManIndiëBrits-Ind" +
+	"iese OseaangebiedIrakIranYslandItaliëJerseyJamaikaJordaniëJapanKeniaKirgisiëKamb" +
+	"odjaKiribatiComoreSt. Kitts en NevisNoord-KoreaSuid-KoreaKoeweitKaaimanseilandeK" +
+	"azakstanLaosLibanonSt. LuciaLiechtensteinSri LankaLiberiëLesothoLitaueLuxemburgL" +
+	"etlandLibiëMarokkoMonacoMoldowaMontenegroSint MartinMadagaskarMarshalleilandeMac" +
+	"edoniëMaliMianmar (Birma)MongoliëMacau SAS SjinaNoord-Mariane-eilandeMartiniqueM" +
+	"auritaniëMontserratMaltaMauritiusMalediveMalawiMeksikoMaleisiëMosambiekNamibiëNi" +
+	"eu-KaledoniëNigerNorfolkeilandNigeriëNicaraguaNederlandNoorweëNepalNauruNiueNieu" +
+	"-SeelandOmanPanamaPeruFrans-PolinesiëPapoea-Nieu-GuineeFilippynePakistanPoleSt. " +
+	"Pierre en MiquelonPitcairneilandePuerto RicoPalestynse gebiedePortugalPalauParag" +
+	"uayKatarOmliggende OseaniëRéunionRoemeniëSerwiëRuslandRwandaSaoedi-ArabiëSalomon" +
+	"seilandeSeychelleSoedanSwedeSingapoerSint HelenaSloweniëSvalbard en Jan MayenSlo" +
+	"wakyeSierra LeoneSan MarinoSenegalSomaliëSurinameSuid-SoedanSão Tomé en Príncipe" +
+	"El SalvadorSint MaartenSiriëSwazilandTristan da CunhaTurks- en CaicoseilandeTsja" +
+	"dFranse Suidelike GebiedeTogoThailandTadjikistanTokelauOos-TimorTurkmeniëTunisië" +
+	"TongaTurkyeTrinidad en TobagoTuvaluTaiwanTanzaniëOekraïneUgandaVS klein omliggen" +
+	"de eilandeVerenigde State van AmerikaUruguayOesbekistanVatikaanstadSt. Vincent e" +
+	"n die GrenadineVenezuelaBritse Maagde-eilandeAmerikaanse Maagde-eilandeViëtnamVa" +
+	"nuatuWallis en FutunaSamoaKosovoJemenMayotteSuid-AfrikaZambiëZimbabweOnbekende g" +
+	"ebiedWêreldAfrikaNoord-AmerikaSuid-AmerikaOseaniëWes-AfrikaSentraal-AmerikaOos-A" +
+	"frikaNoord-AfrikaMidde-AfrikaSuider-AfrikaAmerikasNoordelike AmerikaKaribiesOos-" +
+	"AsiëSuid-AsiëSuidoos-AsiëSuid-EuropaAustralasiëMelanesiëMikronesiese streekPolin" +
+	"esiëAsiëSentraal-AsiëWes-AsiëEuropaOos-EuropaNoord-EuropaWes-EuropaLatyns-Amerik" +
+	"a"
 
 var afRegionIdx = []uint16{ // 291 entries
 	0x0, 0xf, 0x16, 0x30, 0x3a, 0x4c, 0x54, 0x5c, 0x64, 0x76, 0x7c, 0x86,
 	0x91, 0xa1, 0xaa, 0xb4, 0xb9, 0xc6, 0xd1, 0xe7, 0xef, 0xf9, 0x100, 0x10c,
 	0x114, 0x11b, 0x122, 0x127, 0x137, 0x13e, 0x145, 0x14d, 0x160, 0x169, 0x170, 0x177,
-	0x183, 0x18b, 0x192, 0x198, 0x19e, 0x1b6, 0x1da, 0x1f7, 0x20e, 0x219, 0x221, 0x22c,
-	0x231, 0x239, 0x23e, 0x247, 0x257, 0x261, 0x265, 0x26f, 0x277, 0x281, 0x287, 0x29a,
-	0x2a3, 0x2af, 0x2b7, 0x2c0, 0x2c8, 0x2de, 0x2e6, 0x2f6, 0x2fd, 0x304, 0x30a, 0x314,
-	0x31b, 0x321, 0x32a, 0x337, 0x33e, 0x343, 0x352, 0x35d, 0x36b, 0x373, 0x379, 0x38c,
-	0x393, 0x39b, 0x3a7, 0x3af, 0x3b4, 0x3bd, 0x3c6, 0x3cd, 0x3d3, 0x3dd, 0x3ef, 0x3f9,
-	0x427, 0x430, 0x434, 0x441, 0x447, 0x459, 0x472, 0x47a, 0x482, 0x488, 0x490, 0x4a1,
-	0x4ab, 0x4b2, 0x4b8, 0x4c2, 0x4c8, 0x4e3, 0x4e7, 0x4eb, 0x4f1, 0x4f8, 0x4fe, 0x505,
-	0x50e, 0x513, 0x518, 0x521, 0x529, 0x531, 0x537, 0x54a, 0x555, 0x55f, 0x566, 0x575,
-	0x57e, 0x582, 0x589, 0x593, 0x5a0, 0x5a9, 0x5b1, 0x5b8, 0x5be, 0x5c7, 0x5ce, 0x5d4,
-	0x5db, 0x5e1, 0x5e8, 0x5f2, 0x5fd, 0x607, 0x616, 0x620, 0x624, 0x633, 0x63c, 0x64b,
-	0x665, 0x66f, 0x67a, 0x684, 0x689, 0x692, 0x69a, 0x6a0, 0x6a7, 0x6b0, 0x6b9, 0x6c1,
-	0x6d0, 0x6d5, 0x6e2, 0x6ea, 0x6f3, 0x6fc, 0x704, 0x709, 0x70e, 0x712, 0x71e, 0x722,
-	0x728, 0x72c, 0x73c, 0x74e, 0x757, 0x75f, 0x763, 0x77a, 0x789, 0x794, 0x7a6, 0x7ae,
-	0x7b3, 0x7bb, 0x7c0, 0x7d3, 0x7db, 0x7e4, 0x7eb, 0x7f2, 0x7f8, 0x806, 0x814, 0x81d,
-	0x823, 0x828, 0x831, 0x83c, 0x845, 0x85a, 0x862, 0x86e, 0x878, 0x87f, 0x887, 0x88f,
-	0x89a, 0x8ae, 0x8b9, 0x8c5, 0x8cb, 0x8d4, 0x8e4, 0x8fb, 0x900, 0x918, 0x91c, 0x924,
-	0x92f, 0x936, 0x93f, 0x949, 0x951, 0x956, 0x95c, 0x96e, 0x974, 0x97a, 0x983, 0x98c,
-	0x992, 0x9ad, 0x9c8, 0x9cf, 0x9da, 0x9e6, 0xa03, 0xa0c, 0xa21, 0xa3b, 0xa43, 0xa4a,
-	0xa5a, 0xa5f, 0xa65, 0xa6a, 0xa71, 0xa7c, 0xa83, 0xa8b, 0xa9b, 0xaa2, 0xaa8, 0xab5,
-	0xac1, 0xac9, 0xad3, 0xae3, 0xaed, 0xaf9, 0xb05, 0xb12, 0xb1a, 0xb2c, 0xb34, 0xb3d,
-	0xb47, 0xb54, 0xb5f, 0xb6b, 0xb75, 0xb88, 0xb92, 0xb97, 0xba5, 0xbae, 0xbb4, 0xbbe,
-	0xbca, 0xbd4, 0xbe2,
+	0x184, 0x18c, 0x193, 0x199, 0x19f, 0x1ac, 0x1d0, 0x1ed, 0x204, 0x20f, 0x217, 0x222,
+	0x227, 0x22f, 0x234, 0x23d, 0x24d, 0x257, 0x25b, 0x265, 0x26d, 0x277, 0x27d, 0x290,
+	0x299, 0x2a5, 0x2ad, 0x2b6, 0x2be, 0x2d4, 0x2dc, 0x2ec, 0x2f3, 0x2fa, 0x300, 0x30a,
+	0x311, 0x317, 0x320, 0x32d, 0x334, 0x339, 0x348, 0x353, 0x361, 0x369, 0x36f, 0x382,
+	0x389, 0x391, 0x39d, 0x3a5, 0x3aa, 0x3b3, 0x3bc, 0x3c3, 0x3c9, 0x3d3, 0x3e5, 0x3ef,
+	0x41d, 0x426, 0x42a, 0x437, 0x43d, 0x44f, 0x468, 0x470, 0x478, 0x47e, 0x486, 0x497,
+	0x4a1, 0x4a8, 0x4ae, 0x4b8, 0x4be, 0x4d8, 0x4dc, 0x4e0, 0x4e6, 0x4ed, 0x4f3, 0x4fa,
+	0x503, 0x508, 0x50d, 0x516, 0x51e, 0x526, 0x52c, 0x53e, 0x549, 0x553, 0x55a, 0x569,
+	0x572, 0x576, 0x57d, 0x586, 0x593, 0x59c, 0x5a4, 0x5ab, 0x5b1, 0x5ba, 0x5c1, 0x5c7,
+	0x5ce, 0x5d4, 0x5db, 0x5e5, 0x5f0, 0x5fa, 0x609, 0x613, 0x617, 0x626, 0x62f, 0x63e,
+	0x653, 0x65d, 0x668, 0x672, 0x677, 0x680, 0x688, 0x68e, 0x695, 0x69e, 0x6a7, 0x6af,
+	0x6be, 0x6c3, 0x6d0, 0x6d8, 0x6e1, 0x6ea, 0x6f2, 0x6f7, 0x6fc, 0x700, 0x70c, 0x710,
+	0x716, 0x71a, 0x72a, 0x73c, 0x745, 0x74d, 0x751, 0x767, 0x776, 0x781, 0x793, 0x79b,
+	0x7a0, 0x7a8, 0x7ad, 0x7c0, 0x7c8, 0x7d1, 0x7d8, 0x7df, 0x7e5, 0x7f3, 0x802, 0x80b,
+	0x811, 0x816, 0x81f, 0x82a, 0x833, 0x848, 0x850, 0x85c, 0x866, 0x86d, 0x875, 0x87d,
+	0x888, 0x89f, 0x8aa, 0x8b6, 0x8bc, 0x8c5, 0x8d5, 0x8ec, 0x8f1, 0x909, 0x90d, 0x915,
+	0x920, 0x927, 0x930, 0x93a, 0x942, 0x947, 0x94d, 0x95f, 0x965, 0x96b, 0x974, 0x97d,
+	0x983, 0x99e, 0x9b9, 0x9c0, 0x9cb, 0x9d7, 0x9f3, 0x9fc, 0xa11, 0xa2b, 0xa33, 0xa3a,
+	0xa4a, 0xa4f, 0xa55, 0xa5a, 0xa61, 0xa6c, 0xa73, 0xa7b, 0xa8b, 0xa92, 0xa98, 0xaa5,
+	0xab1, 0xab9, 0xac3, 0xad3, 0xadd, 0xae9, 0xaf5, 0xb02, 0xb0a, 0xb1c, 0xb24, 0xb2d,
+	0xb37, 0xb44, 0xb4f, 0xb5b, 0xb65, 0xb78, 0xb82, 0xb87, 0xb95, 0xb9e, 0xba4, 0xbae,
+	0xbba, 0xbc4, 0xbd2,
 }
 
 const amRegionStr = "" +
@@ -27173,37 +26104,37 @@
 	"উবাকেপভার্দেকিউরাসাওক্রিসমাস দ্বীপসাইপ্রাসচেক প্রজাতন্ত্রজার্মানিদিয়েগো গার্সিয" +
 	"়াজিবুতিডেনমার্কডোমিনিকাডোমেনিকান প্রজাতন্ত্রআলজেরিয়াকুউটা এবং মেলিলাইকুয়েডরএস" +
 	"্তোনিয়ামিশরপশ্চিম সাহারাইরিত্রিয়াস্পেনইফিওপিয়াইউরোপীয় ইউনিয়নফিনল্যান্ডফিজিফ" +
-	"কল্যান্ড দ্বীপপুঞ্জমাইক্রোনেশিয়াফ্যারও দ্বীপপুঞ্জফ্রান্সগ্যাবনযুক্তরাজ্যগ্রেনাড" +
+	"কল্যান্ড দ্বীপপুঞ্জমাইক্রোনেশিয়াফ্যারও দ্বীপপুঞ্জফ্রান্সগ্যাবনযুক্তরাজ্যগ্রেনেড" +
 	"াজর্জিয়াফরাসী গায়ানাগ্রাঞ্জিঘানাজিব্রাল্টারগ্রীনল্যান্ডগাম্বিয়াগিনিগুয়াদেলৌপ" +
-	"নিরক্ষীয় গিনিগ্রীসদক্ষিণ জর্জিয়া ও দক্ষিণ স্যান্ডউইচ দ্বীপপুঞ্জগোয়াটিমালাগুয়" +
+	"নিরক্ষীয় গিনিগ্রীসদক্ষিণ জর্জিয়া ও দক্ষিণ স্যান্ডউইচ দ্বীপপুঞ্জগোয়াতেমালাগুয়" +
 	"ামগিনি-বিসাউগিয়ানাহংকং এসএআর চীনাহার্ড দ্বীপ এবং ম্যাকডোনাল্ড দ্বীপপুঞ্জহণ্ডুরা" +
 	"সক্রোয়েশিয়াহাইতিহাঙ্গেরিক্যানারি দ্বীপপুঞ্জইন্দোনেশিয়াআয়ারল্যান্ডইস্রায়েলআই" +
-	"ল অফ ম্যানভারতব্রিটিশ ভারত মহাসাগরীয় অঞ্চলইরাকইরানআইসল্যান্ডইতালীজার্সিজ্যামাইক" +
-	"াজর্ডনজাপানকেনিয়াকির্গিজিয়াকম্বোডিয়াকিরিবাতিকমোরোসসেন্ট কিটস ও নেভিসউত্তর কোর" +
-	"িয়াদক্ষিণ কোরিয়াকুয়েতকেম্যান দ্বীপপুঞ্জকাজাকস্থানলাওসলেবাননসেন্ট লুসিয়ালিচেন" +
-	"স্টেইনশ্রীলঙ্কালাইবেরিয়ালেসোথোলিথুয়ানিয়ালাক্সেমবার্গলাত্ভিয়ালিবিয়ামোরক্কোমো" +
-	"নাকোমোল্দাভিয়ামন্টিনিগ্রোসেন্ট মার্টিনমাদাগাস্কারমার্শাল দ্বীপপুঞ্জম্যাসাডোনিয়" +
-	"ামালিমায়ানমার (বার্মা)মঙ্গোলিয়াম্যাকাও এস এ আর চায়নাউত্তরাঞ্চলীয় মারিয়ানা দ" +
-	"্বীপপুঞ্জমার্টিনিকমরিতানিয়ামন্টসেরাটমাল্টামরিশাসমালদ্বীপমালাউইমেক্সিকোমালয়েশিয" +
-	"়ামোজাম্বিকনামিবিয়ানিউ ক্যালেডোনিয়ানাইজারনিরফোক দ্বীপনাইজেরিয়ানিকারাগুয়ানেদা" +
-	"রল্যান্ডসনরওয়েনেপালনাউরুনিউয়েনিউজিল্যান্ডওমানপানামাপিরুফরাসী পলিনেশিয়াপাপুয়া" +
-	" নিউ গিনিফিলিপাইনপাকিস্তানপোল্যান্ডসেন্ট পিয়ের ও মিকুয়েলনপিটকেয়ার্ন দ্বীপপুঞ্" +
-	"জপুয়ের্তো রিকোফিলিস্তিন অঞ্চলসমূহপর্তুগালপালাউপ্যারাগুয়েকাতারআউটলাইনিং ওসানিয়" +
-	"ারিইউনিয়নরুমানিয়াসার্বিয়ারাশিয়ারুয়ান্ডাসৌদি আরবসলোমন দ্বীপপুঞ্জসিসিলিসুদানস" +
-	"ুইডেনসিঙ্গাপুরসেন্ট হেলেনাস্লোভানিয়াস্বালবার্ড ও জান মেয়েনশ্লোভাকিয়াসিয়েরালি" +
-	"ওনসান মারিনোসেনেগালসোমালিয়াসুরিনামদক্ষিন সুদানসাওটোমা ও প্রিন্সিপিএল সালভেদরসিন" +
-	"্ট মার্টেনসিরিয়াসোয়াজিল্যান্ডট্রিস্টান ডা কুনহাতুর্কস ও কাইকোস দ্বীপপুঞ্জচাদফর" +
-	"াসী দক্ষিণাঞ্চলটোগোথাইল্যান্ডতাজিকস্থানটোকেলাউতিমুর-লেস্তেতুর্কমেনিস্তানতিউনিশিয" +
-	"়াটোঙ্গাতুরস্কত্রিনিনাদ ও টোব্যাগোটুভালুতাইওয়ানতাঞ্জানিয়াইউক্রেইনউগান্ডাযুক্তর" +
-	"াষ্ট্রের পার্শ্ববর্তী দ্বীপপুঞ্জমার্কিন যুক্তরাষ্ট্রউরুগুয়েউজবেকিস্তানভ্যাটিকান" +
-	" সিটিসেন্ট ভিনসেন্ট ও দ্যা গ্রেনাডিনসভেনেজুয়েলাব্রিটিশ ভার্জিন দ্বীপপুঞ্জমার্কি" +
-	"ন ভার্জিন দ্বীপপুঞ্জভিয়েতনামভানুয়াটুওয়ালিস ও ফুটুনাসামোয়াকসোভোইয়েমেনমায়োত্" +
-	"তেদক্ষিণ আফ্রিকাজাম্বিয়াজিম্বাবোয়েঅজানা স্থানপৃথিবীআফ্রিকাউত্তর আমেরিকাদক্ষিণ " +
-	"আমেরিকাওশিয়ানিয়াপশ্চিম আফ্রিকামধ্য আমেরিকাপূর্ব আফ্রিকাউত্তর আফ্রিকামধ্য আফ্রি" +
-	"কাদক্ষিণাঞ্চলীয় আফ্রিকাআমেরিকাসউত্তরাঞ্চলীয় আমেরিকাক্যারাবিয়ানপূর্ব এশিয়াদক্" +
-	"ষিণ এশিয়াদক্ষিণ পূর্ব এশিয়াদক্ষিণ ইউরোপঅস্ট্রালেশিয়াম্যালেনেশিয়াম্যালেনিশা অ" +
-	"ঞ্চলপলিনেশিয়াএশিয়ামধ্য এশিয়াপশ্চিম এশিয়াইউরোপপূর্ব ইউরোপউত্তর ইউরোপপশ্চিম ইউ" +
-	"রোপল্যাটিন আমেরিকা"
+	"ল অফ ম্যানভারতব্রিটিশ ভারত মহাসাগরীয় অঞ্চলইরাকইরানআইসল্যান্ডইতালীজার্সিজামাইকাজ" +
+	"র্ডনজাপানকেনিয়াকির্গিজিয়াকম্বোডিয়াকিরিবাতিকমোরোসসেন্ট কিটস ও নেভিসউত্তর কোরিয" +
+	"়াদক্ষিণ কোরিয়াকুয়েতকেম্যান দ্বীপপুঞ্জকাজাকস্থানলাওসলেবাননসেন্ট লুসিয়ালিচেনস্" +
+	"টেইনশ্রীলঙ্কালাইবেরিয়ালেসোথোলিথুয়ানিয়ালাক্সেমবার্গলাত্ভিয়ালিবিয়ামোরক্কোমোনা" +
+	"কোমোল্দাভিয়ামন্টিনিগ্রোসেন্ট মার্টিনমাদাগাস্কারমার্শাল দ্বীপপুঞ্জম্যাসাডোনিয়াম" +
+	"ালিমায়ানমার (বার্মা)মঙ্গোলিয়াম্যাকাও এস এ আর চায়নাউত্তরাঞ্চলীয় মারিয়ানা দ্ব" +
+	"ীপপুঞ্জমার্টিনিকমরিতানিয়ামন্টসেরাটমাল্টামরিশাসমালদ্বীপমালাউইমেক্সিকোমালয়েশিয়া" +
+	"মোজাম্বিকনামিবিয়ানিউ ক্যালেডোনিয়ানাইজারনিরফোক দ্বীপনাইজেরিয়ানিকারাগুয়ানেদারল" +
+	"্যান্ডসনরওয়েনেপালনাউরুনিউয়েনিউজিল্যান্ডওমানপানামাপিরুফরাসী পলিনেশিয়াপাপুয়া ন" +
+	"িউ গিনিফিলিপাইনপাকিস্তানপোল্যান্ডসেন্ট পিয়ের ও মিকুয়েলনপিটকেয়ার্ন দ্বীপপুঞ্জপ" +
+	"ুয়ের্তো রিকোফিলিস্তিন অঞ্চলসমূহপর্তুগালপালাউপ্যারাগুয়েকাতারআউটলাইনিং ওসানিয়ার" +
+	"িইউনিয়নরুমানিয়াসার্বিয়ারাশিয়ারুয়ান্ডাসৌদি আরবসলোমন দ্বীপপুঞ্জসিসিলিসুদানসুই" +
+	"ডেনসিঙ্গাপুরসেন্ট হেলেনাস্লোভানিয়াস্বালবার্ড ও জান মেয়েনশ্লোভাকিয়াসিয়েরালিওন" +
+	"সান মারিনোসেনেগালসোমালিয়াসুরিনামদক্ষিন সুদানসাওটোমা ও প্রিন্সিপিএল সালভেদরসিন্ট" +
+	" মার্টেনসিরিয়াসোয়াজিল্যান্ডট্রিস্টান ডা কুনহাতুর্কস ও কাইকোস দ্বীপপুঞ্জচাদফরাস" +
+	"ী দক্ষিণাঞ্চলটোগোথাইল্যান্ডতাজিকস্থানটোকেলাউতিমুর-লেস্তেতুর্কমেনিস্তানতিউনিশিয়া" +
+	"টোঙ্গাতুরস্কত্রিনিনাদ ও টোব্যাগোটুভালুতাইওয়ানতাঞ্জানিয়াইউক্রেইনউগান্ডাযুক্তরাষ" +
+	"্ট্রের পার্শ্ববর্তী দ্বীপপুঞ্জমার্কিন যুক্তরাষ্ট্রউরুগুয়েউজবেকিস্তানভ্যাটিকান স" +
+	"িটিসেন্ট ভিনসেন্ট ও দ্যা গ্রেনাডিনসভেনেজুয়েলাব্রিটিশ ভার্জিন দ্বীপপুঞ্জমার্কিন " +
+	"ভার্জিন দ্বীপপুঞ্জভিয়েতনামভানুয়াটুওয়ালিস ও ফুটুনাসামোয়াকসোভোইয়েমেনমায়োত্তে" +
+	"দক্ষিণ আফ্রিকাজাম্বিয়াজিম্বাবোয়েঅজানা স্থানপৃথিবীআফ্রিকাউত্তর আমেরিকাদক্ষিণ আম" +
+	"েরিকাওশিয়ানিয়াপশ্চিম আফ্রিকামধ্য আমেরিকাপূর্ব আফ্রিকাউত্তর আফ্রিকামধ্য আফ্রিকা" +
+	"দক্ষিণাঞ্চলীয় আফ্রিকাআমেরিকাসউত্তরাঞ্চলীয় আমেরিকাক্যারাবিয়ানপূর্ব এশিয়াদক্ষি" +
+	"ণ এশিয়াদক্ষিণ পূর্ব এশিয়াদক্ষিণ ইউরোপঅস্ট্রালেশিয়াম্যালেনেশিয়াম্যালেনিশা অঞ্" +
+	"চলপলিনেশিয়াএশিয়ামধ্য এশিয়াপশ্চিম এশিয়াইউরোপপূর্ব ইউরোপউত্তর ইউরোপপশ্চিম ইউরো" +
+	"পল্যাটিন আমেরিকা"
 
 var bnRegionIdx = []uint16{ // 291 entries
 	0x0, 0x3a, 0x58, 0x8a, 0xab, 0xe3, 0x104, 0x125, 0x143, 0x18c, 0x1aa, 0x1d7,
@@ -27215,22 +26146,22 @@
 	0x985, 0x994, 0x9af, 0x9dd, 0x9fb, 0xa07, 0xa41, 0xa6b, 0xa9c, 0xab1, 0xac3, 0xae1,
 	0xaf9, 0xb11, 0xb36, 0xb4e, 0xb5a, 0xb7b, 0xb9f, 0xbba, 0xbc6, 0xbe4, 0xc0c, 0xc1b,
 	0xc9b, 0xcbc, 0xcce, 0xcea, 0xcff, 0xd28, 0xd95, 0xdad, 0xdd1, 0xde0, 0xdf8, 0xe2f,
-	0xe53, 0xe77, 0xe92, 0xeb2, 0xebe, 0xf0f, 0xf1b, 0xf27, 0xf45, 0xf54, 0xf66, 0xf81,
-	0xf90, 0xf9f, 0xfb4, 0xfd5, 0xff3, 0x100b, 0x101d, 0x104d, 0x1072, 0x109a, 0x10ac, 0x10e0,
-	0x10fe, 0x110a, 0x111c, 0x1141, 0x1162, 0x117d, 0x119b, 0x11ad, 0x11d1, 0x11f5, 0x1210, 0x1225,
-	0x123a, 0x124c, 0x126d, 0x128e, 0x12b3, 0x12d4, 0x1308, 0x132f, 0x133b, 0x136b, 0x1389, 0x13c3,
-	0x1425, 0x1440, 0x145e, 0x1479, 0x148b, 0x149d, 0x14b5, 0x14c7, 0x14df, 0x1500, 0x151b, 0x1536,
-	0x1567, 0x1579, 0x159b, 0x15b9, 0x15da, 0x1601, 0x1613, 0x1622, 0x1631, 0x1643, 0x1667, 0x1673,
-	0x1685, 0x1691, 0x16bf, 0x16eb, 0x1703, 0x171e, 0x1739, 0x177b, 0x17bb, 0x17e3, 0x181a, 0x1832,
-	0x1841, 0x1862, 0x1871, 0x18a5, 0x18c0, 0x18db, 0x18f6, 0x190b, 0x1926, 0x193c, 0x196a, 0x197c,
-	0x198b, 0x199d, 0x19b8, 0x19da, 0x19fb, 0x1a3a, 0x1a5b, 0x1a7c, 0x1a98, 0x1aad, 0x1ac8, 0x1add,
-	0x1aff, 0x1b37, 0x1b53, 0x1b78, 0x1b8d, 0x1bb7, 0x1be9, 0x1c31, 0x1c3a, 0x1c6b, 0x1c77, 0x1c95,
-	0x1cb3, 0x1cc8, 0x1cea, 0x1d14, 0x1d32, 0x1d44, 0x1d56, 0x1d8e, 0x1da0, 0x1db8, 0x1dd9, 0x1df1,
-	0x1e06, 0x1e74, 0x1eae, 0x1ec6, 0x1ee7, 0x1f0f, 0x1f67, 0x1f88, 0x1fd2, 0x201c, 0x2037, 0x2052,
-	0x207e, 0x2093, 0x20a2, 0x20b7, 0x20d2, 0x20fa, 0x2115, 0x2136, 0x2155, 0x2167, 0x217c, 0x21a1,
-	0x21c9, 0x21ea, 0x2212, 0x2234, 0x2259, 0x227e, 0x22a0, 0x22e0, 0x22f8, 0x2335, 0x2359, 0x237b,
-	0x23a0, 0x23d5, 0x23f7, 0x2421, 0x2448, 0x2476, 0x2494, 0x24a6, 0x24c5, 0x24ea, 0x24f9, 0x2518,
-	0x2537, 0x2559, 0x2584,
+	0xe53, 0xe77, 0xe92, 0xeb2, 0xebe, 0xf0f, 0xf1b, 0xf27, 0xf45, 0xf54, 0xf66, 0xf7b,
+	0xf8a, 0xf99, 0xfae, 0xfcf, 0xfed, 0x1005, 0x1017, 0x1047, 0x106c, 0x1094, 0x10a6, 0x10da,
+	0x10f8, 0x1104, 0x1116, 0x113b, 0x115c, 0x1177, 0x1195, 0x11a7, 0x11cb, 0x11ef, 0x120a, 0x121f,
+	0x1234, 0x1246, 0x1267, 0x1288, 0x12ad, 0x12ce, 0x1302, 0x1329, 0x1335, 0x1365, 0x1383, 0x13bd,
+	0x141f, 0x143a, 0x1458, 0x1473, 0x1485, 0x1497, 0x14af, 0x14c1, 0x14d9, 0x14fa, 0x1515, 0x1530,
+	0x1561, 0x1573, 0x1595, 0x15b3, 0x15d4, 0x15fb, 0x160d, 0x161c, 0x162b, 0x163d, 0x1661, 0x166d,
+	0x167f, 0x168b, 0x16b9, 0x16e5, 0x16fd, 0x1718, 0x1733, 0x1775, 0x17b5, 0x17dd, 0x1814, 0x182c,
+	0x183b, 0x185c, 0x186b, 0x189f, 0x18ba, 0x18d5, 0x18f0, 0x1905, 0x1920, 0x1936, 0x1964, 0x1976,
+	0x1985, 0x1997, 0x19b2, 0x19d4, 0x19f5, 0x1a34, 0x1a55, 0x1a76, 0x1a92, 0x1aa7, 0x1ac2, 0x1ad7,
+	0x1af9, 0x1b31, 0x1b4d, 0x1b72, 0x1b87, 0x1bb1, 0x1be3, 0x1c2b, 0x1c34, 0x1c65, 0x1c71, 0x1c8f,
+	0x1cad, 0x1cc2, 0x1ce4, 0x1d0e, 0x1d2c, 0x1d3e, 0x1d50, 0x1d88, 0x1d9a, 0x1db2, 0x1dd3, 0x1deb,
+	0x1e00, 0x1e6e, 0x1ea8, 0x1ec0, 0x1ee1, 0x1f09, 0x1f61, 0x1f82, 0x1fcc, 0x2016, 0x2031, 0x204c,
+	0x2078, 0x208d, 0x209c, 0x20b1, 0x20cc, 0x20f4, 0x210f, 0x2130, 0x214f, 0x2161, 0x2176, 0x219b,
+	0x21c3, 0x21e4, 0x220c, 0x222e, 0x2253, 0x2278, 0x229a, 0x22da, 0x22f2, 0x232f, 0x2353, 0x2375,
+	0x239a, 0x23cf, 0x23f1, 0x241b, 0x2442, 0x2470, 0x248e, 0x24a0, 0x24bf, 0x24e4, 0x24f3, 0x2512,
+	0x2531, 0x2553, 0x257e,
 }
 
 const caRegionStr = "" +
@@ -27373,137 +26304,137 @@
 const daRegionStr = "" +
 	"AscensionøenAndorraForenede Arabiske EmiraterAfghanistanAntigua og BarbudaAnguil" +
 	"laAlbanienArmenienHollandske AntillerAngolaAntarktisArgentinaAmerikansk SamoaØst" +
-	"rigAustralienArubaÅlandsøerneAserbajdsjanBosnien-HercegovinaBarbadosBangladeshBe" +
-	"lgienBurkina FasoBulgarienBahrainBurundiBeninSaint BarthélemyBermudaBruneiBolivi" +
-	"aNederlandske antillerBrasilienBahamasBhutanBouvetøenBotswanaHvideruslandBelizeC" +
-	"anadaCocosøerneCongo-KinshasaCentralafrikanske RepublikCongo-BrazzavilleSchweizE" +
-	"lfenbenskystenCookøerneChileCamerounKinaColombiaClippertonøenCosta RicaCubaKap V" +
-	"erdeCuraçaoJuleøenCypernTjekkietTysklandDiego GarciaDjiboutiDanmarkDominicaDen D" +
-	"ominikanske RepublikAlgerietCeuta og MelillaEcuadorEstlandEgyptenVestsaharaEritr" +
-	"eaSpanienEtiopienDen Europæiske UnionFinlandFijiFalklandsøerneMikronesiens Foren" +
-	"ede StaterFærøerneFrankrigGabonStorbritannienGrenadaGeorgienFransk GuyanaGuernse" +
-	"yGhanaGibraltarGrønlandGambiaGuineaGuadeloupeÆkvatorialguineaGrækenlandSouth Geo" +
-	"rgia og South Sandwich IslandsGuatemalaGuamGuinea-BissauGuyanaHongkong SARHeard " +
-	"Island og McDonald IslandsHondurasKroatienHaitiUngarnKanariske øerIndonesienIrla" +
-	"ndIsraelIsle of ManIndienDet britiske territorium i Det Indiske OceanIrakIranIsl" +
-	"andItalienJerseyJamaicaJordanJapanKenyaKirgisistanCambodjaKiribatiComorerneSaint" +
-	" Kitts og NevisNordkoreaSydkoreaKuwaitCaymanøerneKasakhstanLaosLibanonSaint Luci" +
-	"aLiechtensteinSri LankaLiberiaLesothoLitauenLuxembourgLetlandLibyenMarokkoMonaco" +
-	"MoldovaMontenegroSaint MartinMadagaskarMarshalløerneMakedonienMaliMyanmar (Burma" +
-	")MongolietMacao SARNordmarianerneMartiniqueMauretanienMontserratMaltaMauritiusMa" +
-	"ldiverneMalawiMexicoMalaysiaMozambiqueNamibiaNy CaledonienNigerNorfolkøenNigeria" +
-	"NicaraguaHollandNorgeNepalNauruNiueNew ZealandOmanPanamaPeruFransk PolynesienPap" +
-	"ua Ny GuineaFilippinernePakistanPolenSaint Pierre og MiquelonPitcairnPuerto Rico" +
-	"De palæstinensiske områderPortugalPalauParaguayQatarYdre OceanienRéunionRumænien" +
-	"SerbienRuslandRwandaSaudi-ArabienSalomonøerneSeychellerneSudanSverigeSingaporeSt" +
-	". HelenaSlovenienSvalbard og Jan MayenSlovakietSierra LeoneSan MarinoSenegalSoma" +
-	"liaSurinamSydsudanSao Tome og PrincipeEl SalvadorSint MaartenSyrienSwazilandTris" +
-	"tan da CunhaTurks- og CaicosøerneTchadDe franske besiddelser i Det Sydlige Indis" +
-	"ke OceanTogoThailandTadsjikistanTokelauTimor-LesteTurkmenistanTunesienTongaTyrki" +
-	"etTrinidad og TobagoTuvaluTaiwanTanzaniaUkraineUgandaAmerikanske oversøiske øerU" +
-	"SAUruguayUsbekistanVatikanstatenSaint Vincent og GrenadinerneVenezuelaDe Britisk" +
-	"e JomfruøerDe Amerikanske JomfruøerVietnamVanuatuWallis og FutunaSamoaKosovoYeme" +
-	"nMayotteSydafrikaZambiaZimbabweUkendt områdeVerdenAfrikaNordamerikaSydamerikaOce" +
-	"anienVestafrikaMellemamerikaØstafrikaNordafrikaCentralafrikaDet sydlige AfrikaAm" +
-	"erikaDet nordlige AmerikaCaribienØstasienSydasienSydøstasienSydeuropaAustralasie" +
-	"nMelanesienMikronesienPolynesienAsienCentralasienVestasienEuropaØsteuropaNordeur" +
-	"opaVesteuropaLatinamerika"
+	"rigAustralienArubaÅlandAserbajdsjanBosnien-HercegovinaBarbadosBangladeshBelgienB" +
+	"urkina FasoBulgarienBahrainBurundiBeninSaint BarthélemyBermudaBruneiBoliviaNeder" +
+	"landske antillerBrasilienBahamasBhutanBouvetøenBotswanaHvideruslandBelizeCanadaC" +
+	"ocosøerneCongo-KinshasaCentralafrikanske RepublikCongo-BrazzavilleSchweizElfenbe" +
+	"nskystenCookøerneChileCamerounKinaColombiaClippertonøenCosta RicaCubaKap VerdeCu" +
+	"raçaoJuleøenCypernTjekkietTysklandDiego GarciaDjiboutiDanmarkDominicaDen Dominik" +
+	"anske RepublikAlgerietCeuta og MelillaEcuadorEstlandEgyptenVestsaharaEritreaSpan" +
+	"ienEtiopienDen Europæiske UnionFinlandFijiFalklandsøerneMikronesiens Forenede St" +
+	"aterFærøerneFrankrigGabonStorbritannienGrenadaGeorgienFransk GuyanaGuernseyGhana" +
+	"GibraltarGrønlandGambiaGuineaGuadeloupeÆkvatorialguineaGrækenlandSouth Georgia o" +
+	"g South Sandwich IslandsGuatemalaGuamGuinea-BissauGuyanaHongkong SARHeard Island" +
+	" og McDonald IslandsHondurasKroatienHaitiUngarnKanariske øerIndonesienIrlandIsra" +
+	"elIsle of ManIndienDet britiske territorium i Det Indiske OceanIrakIranIslandIta" +
+	"lienJerseyJamaicaJordanJapanKenyaKirgisistanCambodjaKiribatiComorerneSaint Kitts" +
+	" og NevisNordkoreaSydkoreaKuwaitCaymanøerneKasakhstanLaosLibanonSaint LuciaLiech" +
+	"tensteinSri LankaLiberiaLesothoLitauenLuxembourgLetlandLibyenMarokkoMonacoMoldov" +
+	"aMontenegroSaint MartinMadagaskarMarshalløerneMakedonienMaliMyanmar (Burma)Mongo" +
+	"lietMacao SARNordmarianerneMartiniqueMauretanienMontserratMaltaMauritiusMaldiver" +
+	"neMalawiMexicoMalaysiaMozambiqueNamibiaNy KaledonienNigerNorfolk IslandNigeriaNi" +
+	"caraguaHollandNorgeNepalNauruNiueNew ZealandOmanPanamaPeruFransk PolynesienPapua" +
+	" Ny GuineaFilippinernePakistanPolenSaint Pierre og MiquelonPitcairnPuerto RicoDe" +
+	" palæstinensiske områderPortugalPalauParaguayQatarYdre OceanienRéunionRumænienSe" +
+	"rbienRuslandRwandaSaudi-ArabienSalomonøerneSeychellerneSudanSverigeSingaporeSt. " +
+	"HelenaSlovenienSvalbard og Jan MayenSlovakietSierra LeoneSan MarinoSenegalSomali" +
+	"aSurinamSydsudanSao Tome og PrincipeEl SalvadorSint MaartenSyrienSwazilandTrista" +
+	"n da CunhaTurks- og CaicosøerneTchadDe franske besiddelser i Det Sydlige Indiske" +
+	" OceanTogoThailandTadsjikistanTokelauTimor-LesteTurkmenistanTunesienTongaTyrkiet" +
+	"Trinidad og TobagoTuvaluTaiwanTanzaniaUkraineUgandaAmerikanske oversøiske øerUSA" +
+	"UruguayUsbekistanVatikanstatenSaint Vincent og GrenadinerneVenezuelaDe Britiske " +
+	"JomfruøerDe Amerikanske JomfruøerVietnamVanuatuWallis og FutunaSamoaKosovoYemenM" +
+	"ayotteSydafrikaZambiaZimbabweUkendt områdeVerdenAfrikaNordamerikaSydamerikaOcean" +
+	"ienVestafrikaMellemamerikaØstafrikaNordafrikaCentralafrikaDet sydlige AfrikaAmer" +
+	"ikaDet nordlige AmerikaCaribienØstasienSydasienSydøstasienSydeuropaAustralasienM" +
+	"elanesienMikronesienPolynesienAsienCentralasienVestasienEuropaØsteuropaNordeurop" +
+	"aVesteuropaLatinamerika"
 
 var daRegionIdx = []uint16{ // 291 entries
 	0x0, 0xd, 0x14, 0x2e, 0x39, 0x4b, 0x53, 0x5b, 0x63, 0x76, 0x7c, 0x85,
-	0x8e, 0x9e, 0xa5, 0xaf, 0xb4, 0xc1, 0xcd, 0xe0, 0xe8, 0xf2, 0xf9, 0x105,
-	0x10e, 0x115, 0x11c, 0x121, 0x132, 0x139, 0x13f, 0x146, 0x15b, 0x164, 0x16b, 0x171,
-	0x17b, 0x183, 0x18f, 0x195, 0x19b, 0x1a6, 0x1b4, 0x1ce, 0x1df, 0x1e6, 0x1f5, 0x1ff,
-	0x204, 0x20c, 0x210, 0x218, 0x226, 0x230, 0x234, 0x23d, 0x245, 0x24d, 0x253, 0x25b,
-	0x263, 0x26f, 0x277, 0x27e, 0x286, 0x29f, 0x2a7, 0x2b7, 0x2be, 0x2c5, 0x2cc, 0x2d6,
-	0x2dd, 0x2e4, 0x2ec, 0x301, 0x308, 0x30c, 0x31b, 0x337, 0x341, 0x349, 0x34e, 0x35c,
-	0x363, 0x36b, 0x378, 0x380, 0x385, 0x38e, 0x397, 0x39d, 0x3a3, 0x3ad, 0x3be, 0x3c9,
-	0x3f0, 0x3f9, 0x3fd, 0x40a, 0x410, 0x41c, 0x43c, 0x444, 0x44c, 0x451, 0x457, 0x465,
-	0x46f, 0x475, 0x47b, 0x486, 0x48c, 0x4b8, 0x4bc, 0x4c0, 0x4c6, 0x4cd, 0x4d3, 0x4da,
-	0x4e0, 0x4e5, 0x4ea, 0x4f5, 0x4fd, 0x505, 0x50e, 0x522, 0x52b, 0x533, 0x539, 0x545,
-	0x54f, 0x553, 0x55a, 0x565, 0x572, 0x57b, 0x582, 0x589, 0x590, 0x59a, 0x5a1, 0x5a7,
-	0x5ae, 0x5b4, 0x5bb, 0x5c5, 0x5d1, 0x5db, 0x5e9, 0x5f3, 0x5f7, 0x606, 0x60f, 0x618,
-	0x626, 0x630, 0x63b, 0x645, 0x64a, 0x653, 0x65d, 0x663, 0x669, 0x671, 0x67b, 0x682,
-	0x68f, 0x694, 0x69f, 0x6a6, 0x6af, 0x6b6, 0x6bb, 0x6c0, 0x6c5, 0x6c9, 0x6d4, 0x6d8,
-	0x6de, 0x6e2, 0x6f3, 0x702, 0x70e, 0x716, 0x71b, 0x733, 0x73b, 0x746, 0x762, 0x76a,
-	0x76f, 0x777, 0x77c, 0x789, 0x791, 0x79a, 0x7a1, 0x7a8, 0x7ae, 0x7bb, 0x7c8, 0x7d4,
-	0x7d9, 0x7e0, 0x7e9, 0x7f3, 0x7fc, 0x811, 0x81a, 0x826, 0x830, 0x837, 0x83e, 0x845,
-	0x84d, 0x861, 0x86c, 0x878, 0x87e, 0x887, 0x897, 0x8ad, 0x8b2, 0x8e4, 0x8e8, 0x8f0,
-	0x8fc, 0x903, 0x90e, 0x91a, 0x922, 0x927, 0x92e, 0x940, 0x946, 0x94c, 0x954, 0x95b,
-	0x961, 0x97d, 0x980, 0x987, 0x991, 0x99e, 0x9bb, 0x9c4, 0x9da, 0x9f3, 0x9fa, 0xa01,
-	0xa11, 0xa16, 0xa1c, 0xa21, 0xa28, 0xa31, 0xa37, 0xa3f, 0xa4d, 0xa53, 0xa59, 0xa64,
-	0xa6e, 0xa76, 0xa80, 0xa8d, 0xa97, 0xaa1, 0xaae, 0xac0, 0xac7, 0xadb, 0xae3, 0xaec,
-	0xaf4, 0xb00, 0xb09, 0xb15, 0xb1f, 0xb2a, 0xb34, 0xb39, 0xb45, 0xb4e, 0xb54, 0xb5e,
-	0xb68, 0xb72, 0xb7e,
+	0x8e, 0x9e, 0xa5, 0xaf, 0xb4, 0xba, 0xc6, 0xd9, 0xe1, 0xeb, 0xf2, 0xfe,
+	0x107, 0x10e, 0x115, 0x11a, 0x12b, 0x132, 0x138, 0x13f, 0x154, 0x15d, 0x164, 0x16a,
+	0x174, 0x17c, 0x188, 0x18e, 0x194, 0x19f, 0x1ad, 0x1c7, 0x1d8, 0x1df, 0x1ee, 0x1f8,
+	0x1fd, 0x205, 0x209, 0x211, 0x21f, 0x229, 0x22d, 0x236, 0x23e, 0x246, 0x24c, 0x254,
+	0x25c, 0x268, 0x270, 0x277, 0x27f, 0x298, 0x2a0, 0x2b0, 0x2b7, 0x2be, 0x2c5, 0x2cf,
+	0x2d6, 0x2dd, 0x2e5, 0x2fa, 0x301, 0x305, 0x314, 0x330, 0x33a, 0x342, 0x347, 0x355,
+	0x35c, 0x364, 0x371, 0x379, 0x37e, 0x387, 0x390, 0x396, 0x39c, 0x3a6, 0x3b7, 0x3c2,
+	0x3e9, 0x3f2, 0x3f6, 0x403, 0x409, 0x415, 0x435, 0x43d, 0x445, 0x44a, 0x450, 0x45e,
+	0x468, 0x46e, 0x474, 0x47f, 0x485, 0x4b1, 0x4b5, 0x4b9, 0x4bf, 0x4c6, 0x4cc, 0x4d3,
+	0x4d9, 0x4de, 0x4e3, 0x4ee, 0x4f6, 0x4fe, 0x507, 0x51b, 0x524, 0x52c, 0x532, 0x53e,
+	0x548, 0x54c, 0x553, 0x55e, 0x56b, 0x574, 0x57b, 0x582, 0x589, 0x593, 0x59a, 0x5a0,
+	0x5a7, 0x5ad, 0x5b4, 0x5be, 0x5ca, 0x5d4, 0x5e2, 0x5ec, 0x5f0, 0x5ff, 0x608, 0x611,
+	0x61f, 0x629, 0x634, 0x63e, 0x643, 0x64c, 0x656, 0x65c, 0x662, 0x66a, 0x674, 0x67b,
+	0x688, 0x68d, 0x69b, 0x6a2, 0x6ab, 0x6b2, 0x6b7, 0x6bc, 0x6c1, 0x6c5, 0x6d0, 0x6d4,
+	0x6da, 0x6de, 0x6ef, 0x6fe, 0x70a, 0x712, 0x717, 0x72f, 0x737, 0x742, 0x75e, 0x766,
+	0x76b, 0x773, 0x778, 0x785, 0x78d, 0x796, 0x79d, 0x7a4, 0x7aa, 0x7b7, 0x7c4, 0x7d0,
+	0x7d5, 0x7dc, 0x7e5, 0x7ef, 0x7f8, 0x80d, 0x816, 0x822, 0x82c, 0x833, 0x83a, 0x841,
+	0x849, 0x85d, 0x868, 0x874, 0x87a, 0x883, 0x893, 0x8a9, 0x8ae, 0x8e0, 0x8e4, 0x8ec,
+	0x8f8, 0x8ff, 0x90a, 0x916, 0x91e, 0x923, 0x92a, 0x93c, 0x942, 0x948, 0x950, 0x957,
+	0x95d, 0x979, 0x97c, 0x983, 0x98d, 0x99a, 0x9b7, 0x9c0, 0x9d6, 0x9ef, 0x9f6, 0x9fd,
+	0xa0d, 0xa12, 0xa18, 0xa1d, 0xa24, 0xa2d, 0xa33, 0xa3b, 0xa49, 0xa4f, 0xa55, 0xa60,
+	0xa6a, 0xa72, 0xa7c, 0xa89, 0xa93, 0xa9d, 0xaaa, 0xabc, 0xac3, 0xad7, 0xadf, 0xae8,
+	0xaf0, 0xafc, 0xb05, 0xb11, 0xb1b, 0xb26, 0xb30, 0xb35, 0xb41, 0xb4a, 0xb50, 0xb5a,
+	0xb64, 0xb6e, 0xb7a,
 }
 
 const deRegionStr = "" +
 	"AscensionAndorraVereinigte Arabische EmirateAfghanistanAntigua und BarbudaAnguil" +
 	"laAlbanienArmenienNiederländische AntillenAngolaAntarktisArgentinienAmerikanisch" +
-	"-SamoaÖsterreichAustralienArubaÅland-InselnAserbaidschanBosnien und HerzegowinaB" +
-	"arbadosBangladeschBelgienBurkina FasoBulgarienBahrainBurundiBeninSt. BarthélemyB" +
-	"ermudaBrunei DarussalamBolivienKaribische NiederlandeBrasilienBahamasBhutanBouve" +
-	"tinselBotsuanaBelarusBelizeKanadaKokosinselnKongo-KinshasaZentralafrikanische Re" +
-	"publikKongo-BrazzavilleSchweizCôte d’IvoireCookinselnChileKamerunChinaKolumbienC" +
-	"lipperton-InselCosta RicaKubaKap VerdeCuraçaoWeihnachtsinselZypernTschechische R" +
-	"epublikDeutschlandDiego GarciaDschibutiDänemarkDominicaDominikanische RepublikAl" +
-	"gerienCeuta und MelillaEcuadorEstlandÄgyptenWestsaharaEritreaSpanienÄthiopienEur" +
-	"opäische UnionFinnlandFidschiFalklandinselnMikronesienFäröerFrankreichGabunVerei" +
-	"nigtes KönigreichGrenadaGeorgienFranzösisch-GuayanaGuernseyGhanaGibraltarGrönlan" +
-	"dGambiaGuineaGuadeloupeÄquatorialguineaGriechenlandSüdgeorgien und die Südlichen" +
-	" SandwichinselnGuatemalaGuamGuinea-BissauGuyanaSonderverwaltungszone HongkongHea" +
-	"rd- und McDonald-InselnHondurasKroatienHaitiUngarnKanarische InselnIndonesienIrl" +
-	"andIsraelIsle of ManIndienBritisches Territorium im Indischen OzeanIrakIranIslan" +
-	"dItalienJerseyJamaikaJordanienJapanKeniaKirgisistanKambodschaKiribatiKomorenSt. " +
-	"Kitts und NevisDemokratische Volksrepublik KoreaRepublik KoreaKuwaitKaimaninseln" +
-	"KasachstanLaosLibanonSt. LuciaLiechtensteinSri LankaLiberiaLesothoLitauenLuxembu" +
-	"rgLettlandLibyenMarokkoMonacoRepublik MoldauMontenegroSt. MartinMadagaskarMarsha" +
-	"llinselnMazedonienMaliMyanmarMongoleiSonderverwaltungsregion MacauNördliche Mari" +
-	"anenMartiniqueMauretanienMontserratMaltaMauritiusMaledivenMalawiMexikoMalaysiaMo" +
-	"sambikNamibiaNeukaledonienNigerNorfolkinselNigeriaNicaraguaNiederlandeNorwegenNe" +
-	"palNauruNiueNeuseelandOmanPanamaPeruFranzösisch-PolynesienPapua-NeuguineaPhilipp" +
-	"inenPakistanPolenSt. Pierre und MiquelonPitcairninselnPuerto RicoPalästinensisch" +
-	"e AutonomiegebietePortugalPalauParaguayKatarÄußeres OzeanienRéunionRumänienSerbi" +
-	"enRussische FöderationRuandaSaudi-ArabienSalomonenSeychellenSudanSchwedenSingapu" +
-	"rSt. HelenaSlowenienSvalbard und Jan MayenSlowakeiSierra LeoneSan MarinoSenegalS" +
-	"omaliaSurinameSüdsudanSão Tomé und PríncipeEl SalvadorSint MaartenSyrienSwasilan" +
-	"dTristan da CunhaTurks- und CaicosinselnTschadFranzösische Süd- und Antarktisgeb" +
-	"ieteTogoThailandTadschikistanTokelauTimor-LesteTurkmenistanTunesienTongaTürkeiTr" +
-	"inidad und TobagoTuvaluTaiwanTansaniaUkraineUgandaAmerikanisch-OzeanienVereinigt" +
-	"e StaatenUruguayUsbekistanVatikanstadtSt. Vincent und die GrenadinenVenezuelaBri" +
-	"tische JungferninselnAmerikanische JungferninselnVietnamVanuatuWallis und Futuna" +
-	"SamoaKosovoJemenMayotteSüdafrikaSambiaSimbabweUnbekannte RegionWeltAfrikaNordame" +
-	"rikaSüdamerikaOzeanienWestafrikaMittelamerikaOstafrikaNordafrikaZentralafrikaSüd" +
-	"liches AfrikaAmerikaNördliches AmerikaKaribikOstasienSüdasienSüdostasienSüdeurop" +
-	"aAustralasienMelanesienMikronesisches InselgebietPolynesienAsienZentralasienWest" +
-	"asienEuropaOsteuropaNordeuropaWesteuropaLateinamerika"
+	"-SamoaÖsterreichAustralienArubaÅlandinselnAserbaidschanBosnien und HerzegowinaBa" +
+	"rbadosBangladeschBelgienBurkina FasoBulgarienBahrainBurundiBeninSt. BarthélemyBe" +
+	"rmudaBrunei DarussalamBolivienBonaire, Sint Eustatius und SabaBrasilienBahamasBh" +
+	"utanBouvetinselBotsuanaBelarusBelizeKanadaKokosinselnKongo-KinshasaZentralafrika" +
+	"nische RepublikKongo-BrazzavilleSchweizCôte d’IvoireCookinselnChileKamerunChinaK" +
+	"olumbienClipperton-InselCosta RicaKubaKap VerdeCuraçaoWeihnachtsinselZypernTsche" +
+	"chische RepublikDeutschlandDiego GarciaDschibutiDänemarkDominicaDominikanische R" +
+	"epublikAlgerienCeuta und MelillaEcuadorEstlandÄgyptenWestsaharaEritreaSpanienÄth" +
+	"iopienEuropäische UnionFinnlandFidschiFalklandinselnMikronesienFäröerFrankreichG" +
+	"abunVereinigtes KönigreichGrenadaGeorgienFranzösisch-GuayanaGuernseyGhanaGibralt" +
+	"arGrönlandGambiaGuineaGuadeloupeÄquatorialguineaGriechenlandSüdgeorgien und die " +
+	"Südlichen SandwichinselnGuatemalaGuamGuinea-BissauGuyanaSonderverwaltungszone Ho" +
+	"ngkongHeard- und McDonald-InselnHondurasKroatienHaitiUngarnKanarische InselnIndo" +
+	"nesienIrlandIsraelIsle of ManIndienBritisches Territorium im Indischen OzeanIrak" +
+	"IranIslandItalienJerseyJamaikaJordanienJapanKeniaKirgisistanKambodschaKiribatiKo" +
+	"morenSt. Kitts und NevisNordkoreaSüdkoreaKuwaitKaimaninselnKasachstanLaosLibanon" +
+	"St. LuciaLiechtensteinSri LankaLiberiaLesothoLitauenLuxemburgLettlandLibyenMarok" +
+	"koMonacoRepublik MoldauMontenegroSt. MartinMadagaskarMarshallinselnMazedonienMal" +
+	"iMyanmarMongoleiSonderverwaltungsregion MacauNördliche MarianenMartiniqueMaureta" +
+	"nienMontserratMaltaMauritiusMaledivenMalawiMexikoMalaysiaMosambikNamibiaNeukaled" +
+	"onienNigerNorfolkinselNigeriaNicaraguaNiederlandeNorwegenNepalNauruNiueNeuseelan" +
+	"dOmanPanamaPeruFranzösisch-PolynesienPapua-NeuguineaPhilippinenPakistanPolenSt. " +
+	"Pierre und MiquelonPitcairninselnPuerto RicoPalästinensische AutonomiegebietePor" +
+	"tugalPalauParaguayKatarÄußeres OzeanienRéunionRumänienSerbienRusslandRuandaSaudi" +
+	"-ArabienSalomonenSeychellenSudanSchwedenSingapurSt. HelenaSlowenienSvalbard und " +
+	"Jan MayenSlowakeiSierra LeoneSan MarinoSenegalSomaliaSurinameSüdsudanSão Tomé un" +
+	"d PríncipeEl SalvadorSint MaartenSyrienSwasilandTristan da CunhaTurks- und Caico" +
+	"sinselnTschadFranzösische Süd- und AntarktisgebieteTogoThailandTadschikistanToke" +
+	"lauTimor-LesteTurkmenistanTunesienTongaTürkeiTrinidad und TobagoTuvaluTaiwanTans" +
+	"aniaUkraineUgandaAmerikanisch-OzeanienVereinigte StaatenUruguayUsbekistanVatikan" +
+	"stadtSt. Vincent und die GrenadinenVenezuelaBritische JungferninselnAmerikanisch" +
+	"e JungferninselnVietnamVanuatuWallis und FutunaSamoaKosovoJemenMayotteSüdafrikaS" +
+	"ambiaSimbabweUnbekannte RegionWeltAfrikaNordamerikaSüdamerikaOzeanienWestafrikaM" +
+	"ittelamerikaOstafrikaNordafrikaZentralafrikaSüdliches AfrikaAmerikaNördliches Am" +
+	"erikaKaribikOstasienSüdasienSüdostasienSüdeuropaAustralasienMelanesienMikronesis" +
+	"ches InselgebietPolynesienAsienZentralasienWestasienEuropaOsteuropaNordeuropaWes" +
+	"teuropaLateinamerika"
 
 var deRegionIdx = []uint16{ // 291 entries
 	0x0, 0x9, 0x10, 0x2c, 0x37, 0x4a, 0x52, 0x5a, 0x62, 0x7b, 0x81, 0x8a,
-	0x95, 0xa7, 0xb2, 0xbc, 0xc1, 0xce, 0xdb, 0xf2, 0xfa, 0x105, 0x10c, 0x118,
-	0x121, 0x128, 0x12f, 0x134, 0x143, 0x14a, 0x15b, 0x163, 0x179, 0x182, 0x189, 0x18f,
-	0x19a, 0x1a2, 0x1a9, 0x1af, 0x1b5, 0x1c0, 0x1ce, 0x1ea, 0x1fb, 0x202, 0x212, 0x21c,
-	0x221, 0x228, 0x22d, 0x236, 0x246, 0x250, 0x254, 0x25d, 0x265, 0x274, 0x27a, 0x28f,
-	0x29a, 0x2a6, 0x2af, 0x2b8, 0x2c0, 0x2d7, 0x2df, 0x2f0, 0x2f7, 0x2fe, 0x306, 0x310,
-	0x317, 0x31e, 0x328, 0x33a, 0x342, 0x349, 0x357, 0x362, 0x36a, 0x374, 0x379, 0x390,
-	0x397, 0x39f, 0x3b3, 0x3bb, 0x3c0, 0x3c9, 0x3d2, 0x3d8, 0x3de, 0x3e8, 0x3f9, 0x405,
-	0x433, 0x43c, 0x440, 0x44d, 0x453, 0x471, 0x48b, 0x493, 0x49b, 0x4a0, 0x4a6, 0x4b7,
-	0x4c1, 0x4c7, 0x4cd, 0x4d8, 0x4de, 0x507, 0x50b, 0x50f, 0x515, 0x51c, 0x522, 0x529,
-	0x532, 0x537, 0x53c, 0x547, 0x551, 0x559, 0x560, 0x573, 0x594, 0x5a2, 0x5a8, 0x5b4,
-	0x5be, 0x5c2, 0x5c9, 0x5d2, 0x5df, 0x5e8, 0x5ef, 0x5f6, 0x5fd, 0x606, 0x60e, 0x614,
-	0x61b, 0x621, 0x630, 0x63a, 0x644, 0x64e, 0x65c, 0x666, 0x66a, 0x671, 0x679, 0x696,
-	0x6a9, 0x6b3, 0x6be, 0x6c8, 0x6cd, 0x6d6, 0x6df, 0x6e5, 0x6eb, 0x6f3, 0x6fb, 0x702,
-	0x70f, 0x714, 0x720, 0x727, 0x730, 0x73b, 0x743, 0x748, 0x74d, 0x751, 0x75b, 0x75f,
-	0x765, 0x769, 0x780, 0x78f, 0x79a, 0x7a2, 0x7a7, 0x7be, 0x7cc, 0x7d7, 0x7f9, 0x801,
-	0x806, 0x80e, 0x813, 0x825, 0x82d, 0x836, 0x83d, 0x852, 0x858, 0x865, 0x86e, 0x878,
-	0x87d, 0x885, 0x88d, 0x897, 0x8a0, 0x8b6, 0x8be, 0x8ca, 0x8d4, 0x8db, 0x8e2, 0x8ea,
-	0x8f3, 0x90b, 0x916, 0x922, 0x928, 0x931, 0x941, 0x958, 0x95e, 0x986, 0x98a, 0x992,
-	0x99f, 0x9a6, 0x9b1, 0x9bd, 0x9c5, 0x9ca, 0x9d1, 0x9e4, 0x9ea, 0x9f0, 0x9f8, 0x9ff,
-	0xa05, 0xa1a, 0xa2c, 0xa33, 0xa3d, 0xa49, 0xa67, 0xa70, 0xa88, 0xaa4, 0xaab, 0xab2,
-	0xac3, 0xac8, 0xace, 0xad3, 0xada, 0xae4, 0xaea, 0xaf2, 0xb03, 0xb07, 0xb0d, 0xb18,
-	0xb23, 0xb2b, 0xb35, 0xb42, 0xb4b, 0xb55, 0xb62, 0xb73, 0xb7a, 0xb8d, 0xb94, 0xb9c,
-	0xba5, 0xbb1, 0xbbb, 0xbc7, 0xbd1, 0xbeb, 0xbf5, 0xbfa, 0xc06, 0xc0f, 0xc15, 0xc1e,
-	0xc28, 0xc32, 0xc3f,
+	0x95, 0xa7, 0xb2, 0xbc, 0xc1, 0xcd, 0xda, 0xf1, 0xf9, 0x104, 0x10b, 0x117,
+	0x120, 0x127, 0x12e, 0x133, 0x142, 0x149, 0x15a, 0x162, 0x182, 0x18b, 0x192, 0x198,
+	0x1a3, 0x1ab, 0x1b2, 0x1b8, 0x1be, 0x1c9, 0x1d7, 0x1f3, 0x204, 0x20b, 0x21b, 0x225,
+	0x22a, 0x231, 0x236, 0x23f, 0x24f, 0x259, 0x25d, 0x266, 0x26e, 0x27d, 0x283, 0x298,
+	0x2a3, 0x2af, 0x2b8, 0x2c1, 0x2c9, 0x2e0, 0x2e8, 0x2f9, 0x300, 0x307, 0x30f, 0x319,
+	0x320, 0x327, 0x331, 0x343, 0x34b, 0x352, 0x360, 0x36b, 0x373, 0x37d, 0x382, 0x399,
+	0x3a0, 0x3a8, 0x3bc, 0x3c4, 0x3c9, 0x3d2, 0x3db, 0x3e1, 0x3e7, 0x3f1, 0x402, 0x40e,
+	0x43c, 0x445, 0x449, 0x456, 0x45c, 0x47a, 0x494, 0x49c, 0x4a4, 0x4a9, 0x4af, 0x4c0,
+	0x4ca, 0x4d0, 0x4d6, 0x4e1, 0x4e7, 0x510, 0x514, 0x518, 0x51e, 0x525, 0x52b, 0x532,
+	0x53b, 0x540, 0x545, 0x550, 0x55a, 0x562, 0x569, 0x57c, 0x585, 0x58e, 0x594, 0x5a0,
+	0x5aa, 0x5ae, 0x5b5, 0x5be, 0x5cb, 0x5d4, 0x5db, 0x5e2, 0x5e9, 0x5f2, 0x5fa, 0x600,
+	0x607, 0x60d, 0x61c, 0x626, 0x630, 0x63a, 0x648, 0x652, 0x656, 0x65d, 0x665, 0x682,
+	0x695, 0x69f, 0x6aa, 0x6b4, 0x6b9, 0x6c2, 0x6cb, 0x6d1, 0x6d7, 0x6df, 0x6e7, 0x6ee,
+	0x6fb, 0x700, 0x70c, 0x713, 0x71c, 0x727, 0x72f, 0x734, 0x739, 0x73d, 0x747, 0x74b,
+	0x751, 0x755, 0x76c, 0x77b, 0x786, 0x78e, 0x793, 0x7aa, 0x7b8, 0x7c3, 0x7e5, 0x7ed,
+	0x7f2, 0x7fa, 0x7ff, 0x811, 0x819, 0x822, 0x829, 0x831, 0x837, 0x844, 0x84d, 0x857,
+	0x85c, 0x864, 0x86c, 0x876, 0x87f, 0x895, 0x89d, 0x8a9, 0x8b3, 0x8ba, 0x8c1, 0x8c9,
+	0x8d2, 0x8ea, 0x8f5, 0x901, 0x907, 0x910, 0x920, 0x937, 0x93d, 0x965, 0x969, 0x971,
+	0x97e, 0x985, 0x990, 0x99c, 0x9a4, 0x9a9, 0x9b0, 0x9c3, 0x9c9, 0x9cf, 0x9d7, 0x9de,
+	0x9e4, 0x9f9, 0xa0b, 0xa12, 0xa1c, 0xa28, 0xa46, 0xa4f, 0xa67, 0xa83, 0xa8a, 0xa91,
+	0xaa2, 0xaa7, 0xaad, 0xab2, 0xab9, 0xac3, 0xac9, 0xad1, 0xae2, 0xae6, 0xaec, 0xaf7,
+	0xb02, 0xb0a, 0xb14, 0xb21, 0xb2a, 0xb34, 0xb41, 0xb52, 0xb59, 0xb6c, 0xb73, 0xb7b,
+	0xb84, 0xb90, 0xb9a, 0xba6, 0xbb0, 0xbca, 0xbd4, 0xbd9, 0xbe5, 0xbee, 0xbf4, 0xbfd,
+	0xc07, 0xc11, 0xc1e,
 }
 
 const elRegionStr = "" +
@@ -27527,27 +26458,26 @@
 	"όφορος και ΝέβιςΒόρεια ΚορέαΝότια ΚορέαΚουβέιτΝήσοι ΚάιμανΚαζακστάνΛάοςΛίβανοςΑγ" +
 	"ία ΛουκίαΛιχτενστάινΣρι ΛάνκαΛιβερίαΛεσότοΛιθουανίαΛουξεμβούργοΛετονίαΛιβύηΜαρόκ" +
 	"οΜονακόΜολδαβίαΜαυροβούνιοΆγιος Μαρτίνος (Γαλλικό τμήμα)ΜαδαγασκάρηΝήσοι ΜάρσαλΠ" +
-	"ρώην Γιουγκοσλαβική Δημοκρατία της ΜακεδονίαςΜάλιΜιανμάρ/ΒιρμανίαΜογγολίαΜακάο Ε" +
-	"ΔΠ ΚίναςΝήσοι Βόρειες ΜαριάνεςΜαρτινίκαΜαυριτανίαΜονσεράτΜάλταΜαυρίκιοςΜαλδίβεςΜ" +
-	"αλάουιΜεξικόΜαλαισίαΜοζαμβίκηΝαμίμπιαΝέα ΚαληδονίαΝίγηραςΝήσος ΝόρφολκΝιγηρίαΝικ" +
-	"αράγουαΟλλανδίαΝορβηγίαΝεπάλΝαουρούΝιούεΝέα ΖηλανδίαΟμάνΠαναμάςΠερούΓαλλική Πολυ" +
-	"νησίαΠαπούα Νέα ΓουινέαΦιλιππίνεςΠακιστάνΠολωνίαΣεν Πιερ και ΜικελόνΝήσοι Πίτκερ" +
-	"νΠουέρτο ΡίκοΠαλαιστινιακά ΕδάφηΠορτογαλίαΠαλάουΠαραγουάηΚατάρΠεριφερειακή Ωκεαν" +
-	"ίαΡεϊνιόνΡουμανίαΣερβίαΡωσίαΡουάνταΣαουδική ΑραβίαΝήσοι ΣολομώντοςΣεϋχέλλεςΣουδά" +
-	"νΣουηδίαΣιγκαπούρηΑγία ΕλένηΣλοβενίαΣβάλμπαρντ και Γιαν ΜαγιένΣλοβακίαΣιέρα Λεόν" +
-	"εΆγιος ΜαρίνοςΣενεγάληΣομαλίαΣουρινάμΝότιο ΣουδάνΣάο Τομέ και ΠρίνσιπεΕλ Σαλβαδό" +
-	"ρΆγιος Μαρτίνος (Ολλανδικό τμήμα)ΣυρίαΣουαζιλάνδηΤριστάν ντα ΚούνιαΝήσοι Τερκ κα" +
-	"ι ΚάικοςΤσαντΓαλλικές περιοχές του νοτίου ημισφαιρίουΤόγκοΤαϊλάνδηΤατζικιστάνΤοκ" +
-	"ελάουΤιμόρ-ΛέστεΤουρκμενιστάνΤυνησίαΤόνγκαΤουρκίαΤρινιντάντ και ΤομπάγκοΤουβαλού" +
-	"ΤαϊβάνΤανζανίαΟυκρανίαΟυγκάνταΑπομακρυσμένες Νησίδες Η.Π.Α.Ηνωμένες ΠολιτείεςΟυρ" +
-	"ουγουάηΟυζμπεκιστάνΒατικανόΆγιος Βικέντιος και ΓρεναδίνεςΒενεζουέλαΒρετανικές Πα" +
-	"ρθένοι ΝήσοιΑμερικανικές Παρθένοι ΝήσοιΒιετνάμΒανουάτουΟυάλις και ΦουτούναΣαμόαΚ" +
-	"όσοβοΥεμένηΜαγιότΝότια ΑφρικήΖάμπιαΖιμπάμπουεΆγνωστη περιοχήΚόσμοςΑφρικήΒόρεια Α" +
-	"μερικήΝότια ΑμερικήΩκεανίαΔυτική ΑφρικήΚεντρική ΑμερικήΑνατολική ΑφρικήΒόρεια Αφ" +
-	"ρικήΜέση ΑφρικήΝότιος ΑφρικήΑμερικήΒόρειος ΑμερικήΚαραϊβικήΑνατολική ΑσίαΝότια Α" +
-	"σίαΝοτιοανατολική ΑσίαΝότια ΕυρώπηΑυστραλασίαΜελανησίαΠεριοχή ΜικρονησίαςΠολυνησ" +
-	"ίαΑσίαΚεντρική ΑσίαΔυτική ΑσίαΕυρώπηΑνατολική ΕυρώπηΒόρεια ΕυρώπηΔυτική ΕυρώπηΛα" +
-	"τινική Αμερική"
+	"ΓΔΜΜάλιΜιανμάρ/ΒιρμανίαΜογγολίαΜακάο ΕΔΠ ΚίναςΝήσοι Βόρειες ΜαριάνεςΜαρτινίκαΜαυ" +
+	"ριτανίαΜονσεράτΜάλταΜαυρίκιοςΜαλδίβεςΜαλάουιΜεξικόΜαλαισίαΜοζαμβίκηΝαμίμπιαΝέα Κ" +
+	"αληδονίαΝίγηραςΝήσος ΝόρφολκΝιγηρίαΝικαράγουαΟλλανδίαΝορβηγίαΝεπάλΝαουρούΝιούεΝέ" +
+	"α ΖηλανδίαΟμάνΠαναμάςΠερούΓαλλική ΠολυνησίαΠαπούα Νέα ΓουινέαΦιλιππίνεςΠακιστάνΠ" +
+	"ολωνίαΣεν Πιερ και ΜικελόνΝήσοι ΠίτκερνΠουέρτο ΡίκοΠαλαιστινιακά ΕδάφηΠορτογαλία" +
+	"ΠαλάουΠαραγουάηΚατάρΠεριφερειακή ΩκεανίαΡεϊνιόνΡουμανίαΣερβίαΡωσίαΡουάνταΣαουδικ" +
+	"ή ΑραβίαΝήσοι ΣολομώντοςΣεϋχέλλεςΣουδάνΣουηδίαΣιγκαπούρηΑγία ΕλένηΣλοβενίαΣβάλμπ" +
+	"αρντ και Γιαν ΜαγιένΣλοβακίαΣιέρα ΛεόνεΆγιος ΜαρίνοςΣενεγάληΣομαλίαΣουρινάμΝότιο" +
+	" ΣουδάνΣάο Τομέ και ΠρίνσιπεΕλ ΣαλβαδόρΆγιος Μαρτίνος (Ολλανδικό τμήμα)ΣυρίαΣουα" +
+	"ζιλάνδηΤριστάν ντα ΚούνιαΝήσοι Τερκ και ΚάικοςΤσαντΓαλλικά Νότια ΕδάφηΤόγκοΤαϊλά" +
+	"νδηΤατζικιστάνΤοκελάουΤιμόρ-ΛέστεΤουρκμενιστάνΤυνησίαΤόνγκαΤουρκίαΤρινιντάντ και" +
+	" ΤομπάγκοΤουβαλούΤαϊβάνΤανζανίαΟυκρανίαΟυγκάνταΑπομακρυσμένες Νησίδες Η.Π.Α.Ηνωμ" +
+	"ένες ΠολιτείεςΟυρουγουάηΟυζμπεκιστάνΒατικανόΆγιος Βικέντιος και ΓρεναδίνεςΒενεζο" +
+	"υέλαΒρετανικές Παρθένοι ΝήσοιΑμερικανικές Παρθένοι ΝήσοιΒιετνάμΒανουάτουΟυάλις κ" +
+	"αι ΦουτούναΣαμόαΚόσοβοΥεμένηΜαγιότΝότια ΑφρικήΖάμπιαΖιμπάμπουεΆγνωστη περιοχήΚόσ" +
+	"μοςΑφρικήΒόρεια ΑμερικήΝότια ΑμερικήΩκεανίαΔυτική ΑφρικήΚεντρική ΑμερικήΑνατολικ" +
+	"ή ΑφρικήΒόρεια ΑφρικήΜέση ΑφρικήΝότιος ΑφρικήΑμερικήΒόρειος ΑμερικήΚαραϊβικήΑνατ" +
+	"ολική ΑσίαΝότια ΑσίαΝοτιοανατολική ΑσίαΝότια ΕυρώπηΑυστραλασίαΜελανησίαΠεριοχή Μ" +
+	"ικρονησίαςΠολυνησίαΑσίαΚεντρική ΑσίαΔυτική ΑσίαΕυρώπηΑνατολική ΕυρώπηΒόρεια Ευρώ" +
+	"πηΔυτική ΕυρώπηΛατινική Αμερική"
 
 var elRegionIdx = []uint16{ // 291 entries
 	0x0, 0x1b, 0x27, 0x53, 0x67, 0x97, 0xa9, 0xb7, 0xc5, 0xea, 0xf8, 0x10c,
@@ -27562,19 +26492,19 @@
 	0x928, 0x938, 0x944, 0x955, 0x95f, 0x99a, 0x9a2, 0x9aa, 0x9ba, 0x9c6, 0x9d2, 0x9e2,
 	0x9f2, 0xa00, 0xa0a, 0xa1c, 0xa2c, 0xa3e, 0xa4c, 0xa7f, 0xa96, 0xaab, 0xab9, 0xad0,
 	0xae2, 0xaea, 0xaf8, 0xb0d, 0xb23, 0xb34, 0xb42, 0xb4e, 0xb60, 0xb78, 0xb86, 0xb90,
-	0xb9c, 0xba8, 0xbb8, 0xbce, 0xc05, 0xc1b, 0xc32, 0xc8a, 0xc92, 0xcb1, 0xcc1, 0xcdd,
-	0xd07, 0xd19, 0xd2d, 0xd3d, 0xd47, 0xd59, 0xd69, 0xd77, 0xd83, 0xd93, 0xda5, 0xdb5,
-	0xdce, 0xddc, 0xdf5, 0xe03, 0xe17, 0xe27, 0xe37, 0xe41, 0xe4f, 0xe59, 0xe70, 0xe78,
-	0xe86, 0xe90, 0xeb1, 0xed3, 0xee7, 0xef7, 0xf05, 0xf2a, 0xf43, 0xf5a, 0xf7f, 0xf93,
-	0xf9f, 0xfb1, 0xfbb, 0xfe2, 0xff0, 0x1000, 0x100c, 0x1016, 0x1024, 0x1041, 0x1060, 0x1072,
-	0x107e, 0x108c, 0x10a0, 0x10b3, 0x10c3, 0x10f4, 0x1104, 0x1119, 0x1132, 0x1142, 0x1150, 0x1160,
-	0x1177, 0x119e, 0x11b3, 0x11ee, 0x11f8, 0x120e, 0x1230, 0x1257, 0x1261, 0x12ad, 0x12b7, 0x12c7,
-	0x12dd, 0x12ed, 0x1302, 0x131c, 0x132a, 0x1336, 0x1344, 0x1370, 0x1380, 0x138c, 0x139c, 0x13ac,
-	0x13bc, 0x13f1, 0x1414, 0x1428, 0x1440, 0x1450, 0x1489, 0x149d, 0x14cd, 0x1501, 0x150f, 0x1521,
-	0x1545, 0x154f, 0x155b, 0x1567, 0x1573, 0x158a, 0x1596, 0x15aa, 0x15c7, 0x15d3, 0x15df, 0x15fa,
-	0x1613, 0x1621, 0x163a, 0x1659, 0x1678, 0x1691, 0x16a6, 0x16bf, 0x16cd, 0x16ea, 0x16fc, 0x1717,
-	0x172a, 0x174f, 0x1766, 0x177c, 0x178e, 0x17b3, 0x17c5, 0x17cd, 0x17e6, 0x17fb, 0x1807, 0x1826,
-	0x183f, 0x1858, 0x1877,
+	0xb9c, 0xba8, 0xbb8, 0xbce, 0xc05, 0xc1b, 0xc32, 0xc3a, 0xc42, 0xc61, 0xc71, 0xc8d,
+	0xcb7, 0xcc9, 0xcdd, 0xced, 0xcf7, 0xd09, 0xd19, 0xd27, 0xd33, 0xd43, 0xd55, 0xd65,
+	0xd7e, 0xd8c, 0xda5, 0xdb3, 0xdc7, 0xdd7, 0xde7, 0xdf1, 0xdff, 0xe09, 0xe20, 0xe28,
+	0xe36, 0xe40, 0xe61, 0xe83, 0xe97, 0xea7, 0xeb5, 0xeda, 0xef3, 0xf0a, 0xf2f, 0xf43,
+	0xf4f, 0xf61, 0xf6b, 0xf92, 0xfa0, 0xfb0, 0xfbc, 0xfc6, 0xfd4, 0xff1, 0x1010, 0x1022,
+	0x102e, 0x103c, 0x1050, 0x1063, 0x1073, 0x10a4, 0x10b4, 0x10c9, 0x10e2, 0x10f2, 0x1100, 0x1110,
+	0x1127, 0x114e, 0x1163, 0x119e, 0x11a8, 0x11be, 0x11e0, 0x1207, 0x1211, 0x1235, 0x123f, 0x124f,
+	0x1265, 0x1275, 0x128a, 0x12a4, 0x12b2, 0x12be, 0x12cc, 0x12f8, 0x1308, 0x1314, 0x1324, 0x1334,
+	0x1344, 0x1379, 0x139c, 0x13b0, 0x13c8, 0x13d8, 0x1411, 0x1425, 0x1455, 0x1489, 0x1497, 0x14a9,
+	0x14cd, 0x14d7, 0x14e3, 0x14ef, 0x14fb, 0x1512, 0x151e, 0x1532, 0x154f, 0x155b, 0x1567, 0x1582,
+	0x159b, 0x15a9, 0x15c2, 0x15e1, 0x1600, 0x1619, 0x162e, 0x1647, 0x1655, 0x1672, 0x1684, 0x169f,
+	0x16b2, 0x16d7, 0x16ee, 0x1704, 0x1716, 0x173b, 0x174d, 0x1755, 0x176e, 0x1783, 0x178f, 0x17ae,
+	0x17c7, 0x17e0, 0x17ff,
 }
 
 const enRegionStr = "" +
@@ -27644,37 +26574,6 @@
 	0xb61, 0xb6f, 0xb7c,
 }
 
-const enGBRegionStr = "" +
-	"Antigua and BarbudaBosnia and HerzegovinaSaint BarthélemyCeuta and MelillaSaint " +
-	"Kitts and NevisSaint LuciaSaint MartinSaint Pierre and MiquelonSaint HelenaSvalb" +
-	"ard and Jan MayenSão Tomé and PríncipeTurks and Caicos IslandsTrinidad and Tobag" +
-	"oWallis and Futuna"
-
-var enGBRegionIdx = []uint16{ // 253 entries
-	0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
-	0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x29, 0x29, 0x29, 0x29, 0x29,
-	0x29, 0x29, 0x29, 0x29, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a,
-	0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a,
-	0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a,
-	0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b,
-	0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b,
-	0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b,
-	0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b,
-	0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b,
-	0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x60, 0x60, 0x60, 0x60, 0x60,
-	0x60, 0x60, 0x60, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b,
-	0x6b, 0x6b, 0x6b, 0x6b, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
-	0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
-	0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
-	0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x90, 0x90, 0x90, 0x90, 0x90,
-	0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-	0x90, 0x90, 0x90, 0x9c, 0x9c, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2,
-	0xb2, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
-	0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
-	0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
-	0x106,
-}
-
 const esRegionStr = "" +
 	"Isla de la AscensiónAndorraEmiratos Árabes UnidosAfganistánAntigua y BarbudaAngu" +
 	"ilaAlbaniaArmeniaAntillas NeerlandesasAngolaAntártidaArgentinaSamoa AmericanaAus" +
@@ -27683,86 +26582,65 @@
 	"neerlandésBrasilBahamasButánIsla BouvetBotsuanaBielorrusiaBeliceCanadáIslas Coco" +
 	"sRepública Democrática del CongoRepública CentroafricanaRepública del CongoSuiza" +
 	"Costa de MarfilIslas CookChileCamerúnChinaColombiaIsla ClippertonCosta RicaCubaC" +
-	"abo VerdeCurazaoIsla ChristmasChipreRepública ChecaAlemaniaDiego GarcíaYibutiDin" +
-	"amarcaDominicaRepública DominicanaArgeliaCeuta y MelillaEcuadorEstoniaEgiptoSáha" +
-	"ra OccidentalEritreaEspañaEtiopíaUnión EuropeaFinlandiaFiyiIslas MalvinasMicrone" +
-	"siaIslas FeroeFranciaGabónReino UnidoGranadaGeorgiaGuayana FrancesaGuerneseyGhan" +
-	"aGibraltarGroenlandiaGambiaGuineaGuadalupeGuinea EcuatorialGreciaIslas Georgia d" +
-	"el Sur y Sandwich del SurGuatemalaGuamGuinea-BisáuGuyanaRAE de Hong Kong (China)" +
-	"Islas Heard y McDonaldHondurasCroaciaHaitíHungríaislas CanariasIndonesiaIrlandaI" +
-	"sraelIsla de ManIndiaTerritorio Británico del Océano ÍndicoIraqIránIslandiaItali" +
-	"aJerseyJamaicaJordaniaJapónKeniaKirguistánCamboyaKiribatiComorasSan Cristóbal y " +
-	"NievesCorea del NorteCorea del SurKuwaitIslas CaimánKazajistánLaosLíbanoSanta Lu" +
-	"cíaLiechtensteinSri LankaLiberiaLesotoLituaniaLuxemburgoLetoniaLibiaMarruecosMón" +
-	"acoMoldaviaMontenegroSan MartínMadagascarIslas MarshallMacedoniaMaliMyanmar (Bir" +
-	"mania)MongoliaRAE de Macao (China)Islas Marianas del NorteMartinicaMauritaniaMon" +
-	"tserratMaltaMauricioMaldivasMalauiMéxicoMalasiaMozambiqueNamibiaNueva CaledoniaN" +
-	"ígerIsla NorfolkNigeriaNicaraguaPaíses BajosNoruegaNepalNauruIsla NiueNueva Zela" +
-	"ndaOmánPanamáPerúPolinesia FrancesaPapúa Nueva GuineaFilipinasPakistánPoloniaSan" +
-	" Pedro y MiquelónIslas PitcairnPuerto RicoTerritorios PalestinosPortugalPalauPar" +
-	"aguayCatarTerritorios alejados de OceaníaReuniónRumaníaSerbiaRusiaRuandaArabia S" +
-	"audíIslas SalomónSeychellesSudánSueciaSingapurSanta ElenaEsloveniaSvalbard y Jan" +
-	" MayenEslovaquiaSierra LeonaSan MarinoSenegalSomaliaSurinamSudán del SurSanto To" +
-	"mé y PríncipeEl SalvadorSint MaartenSiriaSuazilandiaTristán da CunhaIslas Turcas" +
-	" y CaicosChadTerritorios Australes FrancesesTogoTailandiaTayikistánTokelauTimor " +
-	"OrientalTurkmenistánTúnezTongaTurquíaTrinidad y TobagoTuvaluTaiwánTanzaniaUcrani" +
-	"aUgandaIslas menores alejadas de EE. UU.Estados UnidosUruguayUzbekistánCiudad de" +
-	"l VaticanoSan Vicente y las GranadinasVenezuelaIslas Vírgenes BritánicasIslas Ví" +
-	"rgenes de EE. UU.VietnamVanuatuWallis y FutunaSamoaKosovoYemenMayotteSudáfricaZa" +
-	"mbiaZimbabueRegión desconocidaMundoÁfricaAmérica del NorteSuraméricaOceaníaÁfric" +
-	"a occidentalCentroaméricaÁfrica orientalÁfrica septentrionalÁfrica centralÁfrica" +
-	" meridionalAméricaNorteaméricaCaribeAsia orientalAsia meridionalSudeste asiático" +
-	"Europa meridionalAustralasiaMelanesiaRegión de MicronesiaPolinesiaAsiaAsia centr" +
-	"alAsia occidentalEuropaEuropa orientalEuropa septentrionalEuropa occidentalLatin" +
-	"oamérica"
+	"abo VerdeCurazaoIsla de Navidad (Christmas)ChipreRepública ChecaAlemaniaDiego Ga" +
+	"rcíaYibutiDinamarcaDominicaRepública DominicanaArgeliaCeuta y MelillaEcuadorEsto" +
+	"niaEgiptoSáhara OccidentalEritreaEspañaEtiopíaUnión EuropeaFinlandiaFiyiIslas Ma" +
+	"lvinasMicronesiaIslas FeroeFranciaGabónReino UnidoGranadaGeorgiaGuayana Francesa" +
+	"GuerneseyGhanaGibraltarGroenlandiaGambiaGuineaGuadalupeGuinea EcuatorialGreciaIs" +
+	"las Georgia del Sur y Sandwich del SurGuatemalaGuamGuinea-BisáuGuyanaRAE de Hong" +
+	" Kong (China)Islas Heard y McDonaldHondurasCroaciaHaitíHungríaislas CanariasIndo" +
+	"nesiaIrlandaIsraelIsla de ManIndiaTerritorio Británico del Océano ÍndicoIrakIrán" +
+	"IslandiaItaliaJerseyJamaicaJordaniaJapónKeniaKirguistánCamboyaKiribatiComorasSan" +
+	" Cristóbal y NievesCorea del NorteCorea del SurKuwaitIslas CaimánKazajistánLaosL" +
+	"íbanoSanta LucíaLiechtensteinSri LankaLiberiaLesotoLituaniaLuxemburgoLetoniaLibi" +
+	"aMarruecosMónacoMoldaviaMontenegroSan MartínMadagascarIslas MarshallMacedoniaMal" +
+	"iMyanmar (Birmania)MongoliaRAE de Macao (China)Islas Marianas del NorteMartinica" +
+	"MauritaniaMontserratMaltaMauricioMaldivasMalauiMéxicoMalasiaMozambiqueNamibiaNue" +
+	"va CaledoniaNígerIsla NorfolkNigeriaNicaraguaPaíses BajosNoruegaNepalNauruNiueNu" +
+	"eva ZelandaOmánPanamáPerúPolinesia FrancesaPapúa Nueva GuineaFilipinasPakistánPo" +
+	"loniaSan Pedro y MiquelónIslas PitcairnPuerto RicoTerritorios PalestinosPortugal" +
+	"PalauParaguayCatarTerritorios alejados de OceaníaReuniónRumaníaSerbiaRusiaRuanda" +
+	"Arabia SaudíIslas SalomónSeychellesSudánSueciaSingapurSanta ElenaEsloveniaSvalba" +
+	"rd y Jan MayenEslovaquiaSierra LeonaSan MarinoSenegalSomaliaSurinamSudán del Sur" +
+	"Santo Tomé y PríncipeEl SalvadorSint MaartenSiriaSuazilandiaTristán da CunhaIsla" +
+	"s Turcas y CaicosChadTerritorios Australes FrancesesTogoTailandiaTayikistánTokel" +
+	"auTimor OrientalTurkmenistánTúnezTongaTurquíaTrinidad y TobagoTuvaluTaiwánTanzan" +
+	"iaUcraniaUgandaIslas menores alejadas de EE. UU.Estados UnidosUruguayUzbekistánC" +
+	"iudad del VaticanoSan Vicente y las GranadinasVenezuelaIslas Vírgenes Británicas" +
+	"Islas Vírgenes de EE. UU.VietnamVanuatuWallis y FutunaSamoaKosovoYemenMayotteSud" +
+	"áfricaZambiaZimbabueRegión desconocidaMundoÁfricaAmérica del NorteSuraméricaOcea" +
+	"níaÁfrica occidentalCentroaméricaÁfrica orientalÁfrica septentrionalÁfrica centr" +
+	"alÁfrica meridionalAméricaNorteaméricaCaribeAsia orientalAsia meridionalSudeste " +
+	"asiáticoEuropa meridionalAustralasiaMelanesiaRegión de MicronesiaPolinesiaAsiaAs" +
+	"ia centralAsia occidentalEuropaEuropa orientalEuropa septentrionalEuropa occiden" +
+	"talLatinoamérica"
 
 var esRegionIdx = []uint16{ // 291 entries
 	0x0, 0x15, 0x1c, 0x33, 0x3e, 0x4f, 0x56, 0x5d, 0x64, 0x79, 0x7f, 0x89,
 	0x92, 0xa1, 0xa8, 0xb1, 0xb6, 0xc2, 0xcd, 0xdf, 0xe7, 0xf1, 0xf9, 0x105,
 	0x10d, 0x114, 0x11b, 0x121, 0x12f, 0x137, 0x13e, 0x145, 0x157, 0x15d, 0x164, 0x16a,
 	0x175, 0x17d, 0x188, 0x18e, 0x195, 0x1a0, 0x1c1, 0x1da, 0x1ee, 0x1f3, 0x202, 0x20c,
-	0x211, 0x219, 0x21e, 0x226, 0x235, 0x23f, 0x243, 0x24d, 0x254, 0x262, 0x268, 0x278,
-	0x280, 0x28d, 0x293, 0x29c, 0x2a4, 0x2b9, 0x2c0, 0x2cf, 0x2d6, 0x2dd, 0x2e3, 0x2f5,
-	0x2fc, 0x303, 0x30b, 0x319, 0x322, 0x326, 0x334, 0x33e, 0x349, 0x350, 0x356, 0x361,
-	0x368, 0x36f, 0x37f, 0x388, 0x38d, 0x396, 0x3a1, 0x3a7, 0x3ad, 0x3b6, 0x3c7, 0x3cd,
-	0x3f5, 0x3fe, 0x402, 0x40f, 0x415, 0x42d, 0x443, 0x44b, 0x452, 0x458, 0x460, 0x46e,
-	0x477, 0x47e, 0x484, 0x48f, 0x494, 0x4bd, 0x4c1, 0x4c6, 0x4ce, 0x4d4, 0x4da, 0x4e1,
-	0x4e9, 0x4ef, 0x4f4, 0x4ff, 0x506, 0x50e, 0x515, 0x52c, 0x53b, 0x548, 0x54e, 0x55b,
-	0x566, 0x56a, 0x571, 0x57d, 0x58a, 0x593, 0x59a, 0x5a0, 0x5a8, 0x5b2, 0x5b9, 0x5be,
-	0x5c7, 0x5ce, 0x5d6, 0x5e0, 0x5eb, 0x5f5, 0x603, 0x60c, 0x610, 0x622, 0x62a, 0x63e,
-	0x656, 0x65f, 0x669, 0x673, 0x678, 0x680, 0x688, 0x68e, 0x695, 0x69c, 0x6a6, 0x6ad,
-	0x6bc, 0x6c2, 0x6ce, 0x6d5, 0x6de, 0x6eb, 0x6f2, 0x6f7, 0x6fc, 0x705, 0x712, 0x717,
-	0x71e, 0x723, 0x735, 0x748, 0x751, 0x75a, 0x761, 0x776, 0x784, 0x78f, 0x7a5, 0x7ad,
-	0x7b2, 0x7ba, 0x7bf, 0x7df, 0x7e7, 0x7ef, 0x7f5, 0x7fa, 0x800, 0x80d, 0x81b, 0x825,
-	0x82b, 0x831, 0x839, 0x844, 0x84d, 0x861, 0x86b, 0x877, 0x881, 0x888, 0x88f, 0x896,
-	0x8a4, 0x8bb, 0x8c6, 0x8d2, 0x8d7, 0x8e2, 0x8f3, 0x908, 0x90c, 0x92b, 0x92f, 0x938,
-	0x943, 0x94a, 0x958, 0x965, 0x96b, 0x970, 0x978, 0x989, 0x98f, 0x996, 0x99e, 0x9a5,
-	0x9ab, 0x9cc, 0x9da, 0x9e1, 0x9ec, 0x9ff, 0xa1b, 0xa24, 0xa3f, 0xa59, 0xa60, 0xa67,
-	0xa76, 0xa7b, 0xa81, 0xa86, 0xa8d, 0xa97, 0xa9d, 0xaa5, 0xab8, 0xabd, 0xac4, 0xad6,
-	0xae1, 0xae9, 0xafb, 0xb09, 0xb19, 0xb2e, 0xb3d, 0xb4f, 0xb57, 0xb64, 0xb6a, 0xb77,
-	0xb86, 0xb97, 0xba8, 0xbb3, 0xbbc, 0xbd1, 0xbda, 0xbde, 0xbea, 0xbf9, 0xbff, 0xc0e,
-	0xc22, 0xc33, 0xc41,
-}
-
-const es419RegionStr = "" +
-	"Isla AscensiónBosnia y HerzegovinaIrakNiue"
-
-var es419RegionIdx = []uint16{ // 178 entries
-	0x0, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-	0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x23, 0x23, 0x23, 0x23, 0x23,
-	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
-	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
-	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
-	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
-	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
-	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
-	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
-	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
-	0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
-	0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
-	0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
-	0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
-	0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x2b,
+	0x211, 0x219, 0x21e, 0x226, 0x235, 0x23f, 0x243, 0x24d, 0x254, 0x26f, 0x275, 0x285,
+	0x28d, 0x29a, 0x2a0, 0x2a9, 0x2b1, 0x2c6, 0x2cd, 0x2dc, 0x2e3, 0x2ea, 0x2f0, 0x302,
+	0x309, 0x310, 0x318, 0x326, 0x32f, 0x333, 0x341, 0x34b, 0x356, 0x35d, 0x363, 0x36e,
+	0x375, 0x37c, 0x38c, 0x395, 0x39a, 0x3a3, 0x3ae, 0x3b4, 0x3ba, 0x3c3, 0x3d4, 0x3da,
+	0x402, 0x40b, 0x40f, 0x41c, 0x422, 0x43a, 0x450, 0x458, 0x45f, 0x465, 0x46d, 0x47b,
+	0x484, 0x48b, 0x491, 0x49c, 0x4a1, 0x4ca, 0x4ce, 0x4d3, 0x4db, 0x4e1, 0x4e7, 0x4ee,
+	0x4f6, 0x4fc, 0x501, 0x50c, 0x513, 0x51b, 0x522, 0x539, 0x548, 0x555, 0x55b, 0x568,
+	0x573, 0x577, 0x57e, 0x58a, 0x597, 0x5a0, 0x5a7, 0x5ad, 0x5b5, 0x5bf, 0x5c6, 0x5cb,
+	0x5d4, 0x5db, 0x5e3, 0x5ed, 0x5f8, 0x602, 0x610, 0x619, 0x61d, 0x62f, 0x637, 0x64b,
+	0x663, 0x66c, 0x676, 0x680, 0x685, 0x68d, 0x695, 0x69b, 0x6a2, 0x6a9, 0x6b3, 0x6ba,
+	0x6c9, 0x6cf, 0x6db, 0x6e2, 0x6eb, 0x6f8, 0x6ff, 0x704, 0x709, 0x70d, 0x71a, 0x71f,
+	0x726, 0x72b, 0x73d, 0x750, 0x759, 0x762, 0x769, 0x77e, 0x78c, 0x797, 0x7ad, 0x7b5,
+	0x7ba, 0x7c2, 0x7c7, 0x7e7, 0x7ef, 0x7f7, 0x7fd, 0x802, 0x808, 0x815, 0x823, 0x82d,
+	0x833, 0x839, 0x841, 0x84c, 0x855, 0x869, 0x873, 0x87f, 0x889, 0x890, 0x897, 0x89e,
+	0x8ac, 0x8c3, 0x8ce, 0x8da, 0x8df, 0x8ea, 0x8fb, 0x910, 0x914, 0x933, 0x937, 0x940,
+	0x94b, 0x952, 0x960, 0x96d, 0x973, 0x978, 0x980, 0x991, 0x997, 0x99e, 0x9a6, 0x9ad,
+	0x9b3, 0x9d4, 0x9e2, 0x9e9, 0x9f4, 0xa07, 0xa23, 0xa2c, 0xa47, 0xa61, 0xa68, 0xa6f,
+	0xa7e, 0xa83, 0xa89, 0xa8e, 0xa95, 0xa9f, 0xaa5, 0xaad, 0xac0, 0xac5, 0xacc, 0xade,
+	0xae9, 0xaf1, 0xb03, 0xb11, 0xb21, 0xb36, 0xb45, 0xb57, 0xb5f, 0xb6c, 0xb72, 0xb7f,
+	0xb8e, 0xb9f, 0xbb0, 0xbbb, 0xbc4, 0xbd9, 0xbe2, 0xbe6, 0xbf2, 0xc01, 0xc07, 0xc16,
+	0xc2a, 0xc3b, 0xc49,
 }
 
 const etRegionStr = "" +
@@ -27834,65 +26712,64 @@
 
 const faRegionStr = "" +
 	"جزایر آسنسیونآندوراامارات متحدهٔ عربیافغانستانآنتیگوا و باربوداآنگویلاآلبانیارمن" +
-	"ستانآنتیل هلندآنگولاجنوبگانآرژانتینساموآی آمریکااتریشاسترالیاآروباجزایر اُلندجمه" +
+	"ستانآنتیل هلندآنگولاجنوبگانآرژانتینساموآی امریکااتریشاسترالیاآروباجزایر آلاندجمه" +
 	"وری آذربایجانبوسنی و هرزگوینباربادوسبنگلادشبلژیکبورکینافاسوبلغارستانبحرینبوروندی" +
-	"بنینسن بارتلمیبرمودابرونئیبولیویجزایر کارائیب هلندبرزیلباهامابوتانجزیره بووهبوتس" +
-	"وانابلاروسبلیزکاناداجزایر کوکوس (کیلینگ)کنگو - کینشاساجمهوری افریقای مرکزیکنگو -" +
-	" برازویلسوئیسساحل عاججزایر کوکشیلیکامرونچینکلمبیاجزایر کلیپرتونکاستاریکاکوباکیپ‌" +
-	"وردکوراسائوجزیرهٔ کریسمسقبرسجمهوری چکآلماندیه‌گو گارسیاجیبوتیدانمارکدومینیکاجمهو" +
-	"ری دومینیکنالجزایرسبته و ملیلهاکوادوراستونیمصرصحرای غربیاریترهاسپانیااتیوپیاتحاد" +
-	"یهٔ اروپافنلاندفیجیجزایر فالکلندمیکرونزیجزایر فاروفرانسهگابنبریتانیاگرناداگرجستا" +
-	"نگویان فرانسهگرنزیغناجبل‌الطارقگرینلندگامبیاگینهگوادلوپگینهٔ استوایییونانجزایر ج" +
-	"ورجیای جنوبی و ساندویچ جنوبیگواتمالاگوامگینهٔ بیسائوگویانهنگ‌کنگ، ناحیهٔ ویژهٔ ح" +
-	"کومتی چینجزایر هرد و مک‌دونالدهندوراسکرواسیهائیتیمجارستانجزایر قناریاندونزیایرلن" +
-	"داسرائیلجزیرهٔ منهندقلمرو بریتانیا در اقیانوس هندعراقایرانایسلندایتالیاجرزیجامائ" +
-	"یکااردنژاپنکنیاقرقیزستانکامبوجکیریباتیکومورسنت کیتس و نویسکرهٔ شمالیکرهٔ جنوبیکو" +
-	"یتجزایر کِیمنقزاقستانلائوسلبنانسنت لوسیالیختن‌اشتاینسری‌لانکالیبریالسوتولیتوانیل" +
-	"وکزامبورگلتونیلیبیمراکشموناکومولداویمونته‌نگروسنت مارتینماداگاسکارجزایر مارشالمق" +
-	"دونیهمالیمیانمار (برمه)مغولستانماکائو، ناحیهٔ ویژهٔ حکومتی چینجزایر ماریانای شما" +
-	"لیمارتینیکموریتانیمونت‌سراتمالتموریسمالدیومالاویمکزیکمالزیموزامبیکنامیبیاکالدونی" +
-	"ای جدیدنیجرجزیره نورفکنیجریهنیکاراگوئههلندنروژنپالنائورونیوئهزلاند نوعمانپاناماپ" +
-	"روپلی‌نزی فرانسهپاپوا گینهٔ نوفیلیپینپاکستانلهستانسن پیر و میکلنجزایر پیت‌کرنپور" +
-	"توریکوسرزمین‌های فلسطینیپرتغالپالائوپاراگوئهقطربخش‌های دورافتادهٔ اقیانوسیهرئونی" +
-	"ونرومانیصربستانروسیهروانداعربستان سعودیجزایر سلیمانسیشلسودانسوئدسنگاپورسنت هلناس" +
-	"لوونیاسوالبارد و جان‌مایناسلواکیسیرالئونسن مارینوسنگالسومالیسورینامسودان جنوبیسا" +
-	"ئوتومه و پرینسیپالسالوادورسنت مارتنسوریهسوازیلندتریستان دا کوناجزایر تورکس و کای" +
-	"کوسچادقلمروهای جنوبی فرانسهتوگوتایلندتاجیکستانتوکلائوتیمور شرقیترکمنستانتونستونگ" +
-	"اترکیهترینیداد و توباگوتووالوتایوانتانزانیااوکرایناوگانداجزایر دورافتادهٔ ایالات" +
-	" متحدهایالات متحدهٔ امریکااروگوئهازبکستانواتیکانسنت وینسنت و گرنادین‌هاونزوئلاجز" +
-	"ایر ویرجین بریتانیاجزایر ویرجین ایالات متحدهویتناموانواتووالیس و فوتوناساموآکوزو" +
-	"ویمنمایوتافریقای جنوبیزامبیازیمبابوهناحیهٔ نامشخصجهانافریقاامریکای شمالیامریکای " +
-	"جنوبیاقیانوسیهغرب افریقاامریکای مرکزیشرق افریقاشمال افریقامرکز افریقاجنوب افریقا" +
-	"امریکاشمال امریکاکارائیبشرق آسیاجنوب آسیاجنوب شرق آسیاجنوب اروپااسترالزیملانزینا" +
-	"حیهٔ میکرونزیپلی‌نزیآسیاآسیای مرکزیغرب آسیااروپاشرق اروپاشمال اروپاغرب اروپاامری" +
-	"کای لاتین"
+	"بنینسن بارتلمیبرمودابرونئیبولیویبونیربرزیلباهامابوتانجزیره بووهبوتسوانابلاروسبلی" +
+	"زکاناداجزایر کوکوسکنگو - کینشاساجمهوری افریقای مرکزیکنگو - برازویلسوئیسساحل عاجج" +
+	"زایر کوکشیلیکامرونچینکلمبیاجزایر کلیپرتونکاستاریکاکوباکیپ‌وردکوراسائوجزیرهٔ کریس" +
+	"مسقبرسجمهوری چکآلماندیه‌گو گارسیاجیبوتیدانمارکدومینیکاجمهوری دومینیکنالجزایرسبته" +
+	" و ملیلهاکوادوراستونیمصرصحرای غربیاریترهاسپانیااتیوپیاتحادیهٔ اروپافنلاندفیجیجزا" +
+	"یر فالکلندمیکرونزیجزایر فاروفرانسهگابنبریتانیاگرناداگرجستانگویان فرانسهگرنزیغناج" +
+	"بل‌الطارقگرینلندگامبیاگینهگوادلوپگینهٔ استوایییونانجورجیای جنوبی و جزایر ساندویچ" +
+	" جنوبیگواتمالاگوامگینهٔ بیسائوگویانهنگ‌کنگ، ناحیهٔ ویژهٔ حکومتی چینجزیرهٔ هرد و " +
+	"جزایر مک‌دونالدهندوراسکرواسیهائیتیمجارستانجزایر قناریاندونزیایرلنداسرائیلجزیرهٔ " +
+	"منهندقلمرو بریتانیا در اقیانوس هندعراقایرانایسلندایتالیاجرزیجامائیکااردنژاپنکنیا" +
+	"قرقیزستانکامبوجکیریباتیکوموروسنت کیتس و نویسکرهٔ شمالیکرهٔ جنوبیکویتجزایر کِیمنق" +
+	"زاقستانلائوسلبنانسنت لوسیالیختن‌اشتاینسری‌لانکالیبریالسوتولیتوانیلوکزامبورگلتونی" +
+	"لیبیمراکشموناکومولداویمونته‌نگروسنت مارتینماداگاسکارجزایر مارشالمقدونیهمالیمیانم" +
+	"ار (برمه)مغولستانماکائو، ناحیهٔ ویژهٔ حکومتی چینجزایر ماریانای شمالیمارتینیکموری" +
+	"تانیمونت‌سراتمالتموریسمالدیومالاویمکزیکمالزیموزامبیکنامیبیاکالدونیای جدیدنیجرجزی" +
+	"رهٔ نورفولکنیجریهنیکاراگوئههلندنروژنپالنائورونیوئهنیوزیلندعمانپاناماپروپلی‌نزی ف" +
+	"رانسهپاپوا گینهٔ نوفیلیپینپاکستانلهستانسن پیر و میکلنجزایر پیت‌کرنپورتوریکوسرزمی" +
+	"ن‌های فلسطینیپرتغالپالائوپاراگوئهقطربخش‌های دورافتادهٔ اقیانوسیهرئونیونرومانیصرب" +
+	"ستانروسیهروانداعربستان سعودیجزایر سلیمانسیشلسودانسوئدسنگاپورسنت هلناسلوونیاسوالب" +
+	"ارد و جان‌مایناسلواکیسیرالئونسان‌مارینوسنگالسومالیسورینامسودان جنوبیپرینسیپ و سا" +
+	"ئوتومهالسالوادورسنت مارتنسوریهسوازیلندتریستان دا کوناجزایر تورکس و کایکوسچادقلمر" +
+	"وهای جنوبی فرانسهتوگوتایلندتاجیکستانتوکلائوتیمور شرقیترکمنستانتونستونگاترکیهترین" +
+	"یداد و توباگوتووالوتایوانتانزانیااوکرایناوگانداجزایر دورافتادهٔ ایالات متحدهایال" +
+	"ات متحدهٔ امریکااروگوئهازبکستانواتیکانسنت وینسنت و گرنادین‌هاونزوئلاجزایر ویرجین" +
+	" بریتانیاجزایر ویرجین ایالات متحدهویتناموانواتووالیس و فوتوناساموآکوزوویمنمایوتا" +
+	"فریقای جنوبیزامبیازیمبابوهناحیهٔ نامشخصجهانافریقاامریکای شمالیامریکای جنوبیاقیان" +
+	"وسیهغرب افریقاامریکای مرکزیشرق افریقاشمال افریقامرکز افریقاجنوب افریقاامریکاشمال" +
+	" امریکاکارائیبشرق آسیاجنوب آسیاجنوب شرق آسیاجنوب اروپااسترالزیملانزیناحیهٔ میکرو" +
+	"نزیپلی‌نزیآسیاآسیای مرکزیغرب آسیااروپاشرق اروپاشمال اروپاغرب اروپاامریکای لاتین"
 
 var faRegionIdx = []uint16{ // 291 entries
 	0x0, 0x19, 0x25, 0x47, 0x59, 0x79, 0x87, 0x93, 0xa3, 0xb6, 0xc2, 0xd0,
 	0xe0, 0xf9, 0x103, 0x113, 0x11d, 0x132, 0x151, 0x16d, 0x17d, 0x18b, 0x195, 0x1ab,
-	0x1bd, 0x1c7, 0x1d5, 0x1dd, 0x1f0, 0x1fc, 0x208, 0x214, 0x236, 0x240, 0x24c, 0x256,
-	0x269, 0x279, 0x285, 0x28d, 0x299, 0x2bd, 0x2d6, 0x2fc, 0x315, 0x31f, 0x32e, 0x33f,
-	0x347, 0x353, 0x359, 0x365, 0x380, 0x392, 0x39a, 0x3a9, 0x3b9, 0x3d2, 0x3da, 0x3eb,
-	0x3f5, 0x40f, 0x41b, 0x429, 0x439, 0x456, 0x464, 0x47a, 0x488, 0x494, 0x49a, 0x4ad,
-	0x4b9, 0x4c7, 0x4d3, 0x4ee, 0x4fa, 0x502, 0x51b, 0x52b, 0x53e, 0x54a, 0x552, 0x562,
-	0x56e, 0x57c, 0x593, 0x59d, 0x5a3, 0x5b8, 0x5c6, 0x5d2, 0x5da, 0x5e8, 0x601, 0x60b,
-	0x64c, 0x65c, 0x664, 0x67b, 0x685, 0x6c2, 0x6ea, 0x6f8, 0x704, 0x710, 0x720, 0x735,
-	0x743, 0x74f, 0x75d, 0x76e, 0x774, 0x7aa, 0x7b2, 0x7bc, 0x7c8, 0x7d6, 0x7de, 0x7ee,
-	0x7f6, 0x7fe, 0x806, 0x818, 0x824, 0x834, 0x83e, 0x859, 0x86c, 0x87f, 0x887, 0x89c,
-	0x8ac, 0x8b6, 0x8c0, 0x8d1, 0x8ea, 0x8fd, 0x909, 0x913, 0x921, 0x935, 0x93f, 0x947,
-	0x951, 0x95d, 0x96b, 0x980, 0x993, 0x9a7, 0x9be, 0x9cc, 0x9d4, 0x9ed, 0x9fd, 0xa37,
-	0xa5d, 0xa6d, 0xa7d, 0xa90, 0xa98, 0xaa2, 0xaae, 0xaba, 0xac4, 0xace, 0xade, 0xaec,
-	0xb07, 0xb0f, 0xb24, 0xb30, 0xb44, 0xb4c, 0xb54, 0xb5c, 0xb68, 0xb72, 0xb81, 0xb89,
-	0xb95, 0xb9b, 0xbb7, 0xbd1, 0xbdf, 0xbed, 0xbf9, 0xc12, 0xc2c, 0xc3e, 0xc62, 0xc6e,
-	0xc7a, 0xc8a, 0xc90, 0xcc7, 0xcd5, 0xce1, 0xcef, 0xcf9, 0xd05, 0xd1e, 0xd35, 0xd3d,
-	0xd47, 0xd4f, 0xd5d, 0xd6a, 0xd78, 0xd9f, 0xdad, 0xdbd, 0xdce, 0xdd8, 0xde4, 0xdf2,
-	0xe07, 0xe29, 0xe3d, 0xe4e, 0xe58, 0xe68, 0xe84, 0xea9, 0xeaf, 0xed7, 0xedf, 0xeeb,
-	0xefd, 0xf0b, 0xf1e, 0xf30, 0xf38, 0xf42, 0xf4c, 0xf6c, 0xf78, 0xf84, 0xf94, 0xfa2,
-	0xfb0, 0xfe7, 0x100d, 0x101b, 0x102b, 0x1039, 0x1065, 0x1073, 0x109b, 0x10ca, 0x10d6, 0x10e4,
-	0x10fe, 0x1108, 0x1112, 0x1118, 0x1122, 0x113b, 0x1147, 0x1157, 0x1170, 0x1178, 0x1184, 0x119d,
-	0x11b6, 0x11c8, 0x11db, 0x11f4, 0x1207, 0x121c, 0x1231, 0x1246, 0x1252, 0x1267, 0x1275, 0x1284,
-	0x1295, 0x12ad, 0x12c0, 0x12d0, 0x12dc, 0x12f9, 0x1308, 0x1310, 0x1325, 0x1334, 0x133e, 0x134f,
-	0x1362, 0x1373, 0x138c,
+	0x1bd, 0x1c7, 0x1d5, 0x1dd, 0x1f0, 0x1fc, 0x208, 0x214, 0x21e, 0x228, 0x234, 0x23e,
+	0x251, 0x261, 0x26d, 0x275, 0x281, 0x296, 0x2af, 0x2d5, 0x2ee, 0x2f8, 0x307, 0x318,
+	0x320, 0x32c, 0x332, 0x33e, 0x359, 0x36b, 0x373, 0x382, 0x392, 0x3ab, 0x3b3, 0x3c4,
+	0x3ce, 0x3e8, 0x3f4, 0x402, 0x412, 0x42f, 0x43d, 0x453, 0x461, 0x46d, 0x473, 0x486,
+	0x492, 0x4a0, 0x4ac, 0x4c7, 0x4d3, 0x4db, 0x4f4, 0x504, 0x517, 0x523, 0x52b, 0x53b,
+	0x547, 0x555, 0x56c, 0x576, 0x57c, 0x591, 0x59f, 0x5ab, 0x5b3, 0x5c1, 0x5da, 0x5e4,
+	0x625, 0x635, 0x63d, 0x654, 0x65e, 0x69b, 0x6d0, 0x6de, 0x6ea, 0x6f6, 0x706, 0x71b,
+	0x729, 0x735, 0x743, 0x754, 0x75a, 0x790, 0x798, 0x7a2, 0x7ae, 0x7bc, 0x7c4, 0x7d4,
+	0x7dc, 0x7e4, 0x7ec, 0x7fe, 0x80a, 0x81a, 0x826, 0x841, 0x854, 0x867, 0x86f, 0x884,
+	0x894, 0x89e, 0x8a8, 0x8b9, 0x8d2, 0x8e5, 0x8f1, 0x8fb, 0x909, 0x91d, 0x927, 0x92f,
+	0x939, 0x945, 0x953, 0x968, 0x97b, 0x98f, 0x9a6, 0x9b4, 0x9bc, 0x9d5, 0x9e5, 0xa1f,
+	0xa45, 0xa55, 0xa65, 0xa78, 0xa80, 0xa8a, 0xa96, 0xaa2, 0xaac, 0xab6, 0xac6, 0xad4,
+	0xaef, 0xaf7, 0xb12, 0xb1e, 0xb32, 0xb3a, 0xb42, 0xb4a, 0xb56, 0xb60, 0xb70, 0xb78,
+	0xb84, 0xb8a, 0xba6, 0xbc0, 0xbce, 0xbdc, 0xbe8, 0xc01, 0xc1b, 0xc2d, 0xc51, 0xc5d,
+	0xc69, 0xc79, 0xc7f, 0xcb6, 0xcc4, 0xcd0, 0xcde, 0xce8, 0xcf4, 0xd0d, 0xd24, 0xd2c,
+	0xd36, 0xd3e, 0xd4c, 0xd59, 0xd67, 0xd8e, 0xd9c, 0xdac, 0xdc1, 0xdcb, 0xdd7, 0xde5,
+	0xdfa, 0xe1c, 0xe30, 0xe41, 0xe4b, 0xe5b, 0xe77, 0xe9c, 0xea2, 0xeca, 0xed2, 0xede,
+	0xef0, 0xefe, 0xf11, 0xf23, 0xf2b, 0xf35, 0xf3f, 0xf5f, 0xf6b, 0xf77, 0xf87, 0xf95,
+	0xfa3, 0xfda, 0x1000, 0x100e, 0x101e, 0x102c, 0x1058, 0x1066, 0x108e, 0x10bd, 0x10c9, 0x10d7,
+	0x10f1, 0x10fb, 0x1105, 0x110b, 0x1115, 0x112e, 0x113a, 0x114a, 0x1163, 0x116b, 0x1177, 0x1190,
+	0x11a9, 0x11bb, 0x11ce, 0x11e7, 0x11fa, 0x120f, 0x1224, 0x1239, 0x1245, 0x125a, 0x1268, 0x1277,
+	0x1288, 0x12a0, 0x12b3, 0x12c3, 0x12cf, 0x12ec, 0x12fb, 0x1303, 0x1318, 0x1327, 0x1331, 0x1342,
+	0x1355, 0x1366, 0x137f,
 }
 
 const fiRegionStr = "" +
@@ -27906,34 +26783,34 @@
 	"pertoninsaariCosta RicaKuubaKap VerdeCuraçaoJoulusaariKyprosTšekkiSaksaDiego Gar" +
 	"ciaDjiboutiTanskaDominicaDominikaaninen tasavaltaAlgeriaCeuta ja MelillaEcuadorV" +
 	"iroEgyptiLänsi-SaharaEritreaEspanjaEtiopiaEuroopan unioniSuomiFidžiFalklandinsaa" +
-	"retMikronesian liittovaltioFärsaaretRanskaGabonYhdistynyt kuningaskuntaGrenadaGe" +
-	"orgiaRanskan GuayanaGuernseyGhanaGibraltarGrönlantiGambiaGuineaGuadeloupePäivänt" +
-	"asaajan GuineaKreikkaEtelä-Georgia ja Eteläiset SandwichsaaretGuatemalaGuamGuine" +
-	"a-BissauGuyanaHongkong – Kiinan e.h.a.Heard ja McDonaldinsaaretHondurasKroatiaHa" +
-	"itiUnkariKanariansaaretIndonesiaIrlantiIsraelMansaariIntiaBrittiläinen Intian va" +
-	"ltameren alueIrakIranIslantiItaliaJerseyJamaikaJordaniaJapaniKeniaKirgisiaKambod" +
-	"žaKiribatiKomoritSaint Kitts ja NevisPohjois-KoreaEtelä-KoreaKuwaitCaymansaaretK" +
-	"azakstanLaosLibanonSaint LuciaLiechtensteinSri LankaLiberiaLesothoLiettuaLuxembu" +
-	"rgLatviaLibyaMarokkoMonacoMoldovaMontenegroSaint-MartinMadagaskarMarshallinsaare" +
-	"tMakedoniaMaliMyanmar (Burma)MongoliaMacao – Kiinan e.h.a.Pohjois-MariaanitMarti" +
-	"niqueMauritaniaMontserratMaltaMauritiusMalediivitMalawiMeksikoMalesiaMosambikNam" +
-	"ibiaUusi-KaledoniaNigerNorfolkinsaariNigeriaNicaraguaAlankomaatNorjaNepalNauruNi" +
-	"ueUusi-SeelantiOmanPanamaPeruRanskan PolynesiaPapua-Uusi-GuineaFilippiinitPakist" +
-	"anPuolaSaint-Pierre ja MiquelonPitcairnPuerto RicoPalestiinalaisalueetPortugaliP" +
-	"alauParaguayQatarulkomeriRéunionRomaniaSerbiaVenäjäRuandaSaudi-ArabiaSalomonsaar" +
-	"etSeychellitSudanRuotsiSingaporeSaint HelenaSloveniaHuippuvuoret ja Jan MayenSlo" +
-	"vakiaSierra LeoneSan MarinoSenegalSomaliaSurinamEtelä-SudanSão Tomé ja PríncipeE" +
-	"l SalvadorSint MaartenSyyriaSwazimaaTristan da CunhaTurks- ja CaicossaaretTšadRa" +
-	"nskan ulkopuoliset eteläiset alueetTogoThaimaaTadžikistanTokelauItä-TimorTurkmen" +
-	"istanTunisiaTongaTurkkiTrinidad ja TobagoTuvaluTaiwanTansaniaUkrainaUgandaYhdysv" +
-	"altain erillissaaretYhdysvallatUruguayUzbekistanVatikaaniSaint Vincent ja Grenad" +
-	"iinitVenezuelaBrittiläiset NeitsytsaaretYhdysvaltain NeitsytsaaretVietnamVanuatu" +
-	"Wallis ja FutunaSamoaKosovoJemenMayotteEtelä-AfrikkaSambiaZimbabwetuntematon alu" +
-	"emaailmaAfrikkaPohjois-AmerikkaEtelä-AmerikkaOseaniaLänsi-AfrikkaVäli-AmerikkaIt" +
-	"ä-AfrikkaPohjois-AfrikkaKeski-Afrikkaeteläinen AfrikkaAmerikkapohjoinen Amerikka" +
-	"KaribiaItä-AasiaEtelä-AasiaKaakkois-AasiaEtelä-EurooppaAustralaasiaMelanesiaMikr" +
-	"onesiaPolynesiaAasiaKeski-AasiaLänsi-AasiaEurooppaItä-EurooppaPohjois-EurooppaLä" +
-	"nsi-EurooppaLatinalainen Amerikka"
+	"retMikronesian liittovaltioFärsaaretRanskaGabonIso-BritanniaGrenadaGeorgiaRanska" +
+	"n GuayanaGuernseyGhanaGibraltarGrönlantiGambiaGuineaGuadeloupePäiväntasaajan Gui" +
+	"neaKreikkaEtelä-Georgia ja Eteläiset SandwichsaaretGuatemalaGuamGuinea-BissauGuy" +
+	"anaHongkong – Kiinan e.h.a.Heard ja McDonaldinsaaretHondurasKroatiaHaitiUnkariKa" +
+	"nariansaaretIndonesiaIrlantiIsraelMansaariIntiaBrittiläinen Intian valtameren al" +
+	"ueIrakIranIslantiItaliaJerseyJamaikaJordaniaJapaniKeniaKirgisiaKambodžaKiribatiK" +
+	"omoritSaint Kitts ja NevisPohjois-KoreaEtelä-KoreaKuwaitCaymansaaretKazakstanLao" +
+	"sLibanonSaint LuciaLiechtensteinSri LankaLiberiaLesothoLiettuaLuxemburgLatviaLib" +
+	"yaMarokkoMonacoMoldovaMontenegroSaint-MartinMadagaskarMarshallinsaaretMakedoniaM" +
+	"aliMyanmar (Burma)MongoliaMacao – Kiinan e.h.a.Pohjois-MariaanitMartiniqueMaurit" +
+	"aniaMontserratMaltaMauritiusMalediivitMalawiMeksikoMalesiaMosambikNamibiaUusi-Ka" +
+	"ledoniaNigerNorfolkinsaariNigeriaNicaraguaAlankomaatNorjaNepalNauruNiueUusi-Seel" +
+	"antiOmanPanamaPeruRanskan PolynesiaPapua-Uusi-GuineaFilippiinitPakistanPuolaSain" +
+	"t-Pierre ja MiquelonPitcairnPuerto RicoPalestiinalaisalueetPortugaliPalauParagua" +
+	"yQatarulkomeriRéunionRomaniaSerbiaVenäjäRuandaSaudi-ArabiaSalomonsaaretSeychelli" +
+	"tSudanRuotsiSingaporeSaint HelenaSloveniaHuippuvuoret ja Jan MayenSlovakiaSierra" +
+	" LeoneSan MarinoSenegalSomaliaSurinamEtelä-SudanSão Tomé ja PríncipeEl SalvadorS" +
+	"int MaartenSyyriaSwazimaaTristan da CunhaTurks- ja CaicossaaretTšadRanskan etelä" +
+	"iset alueetTogoThaimaaTadžikistanTokelauItä-TimorTurkmenistanTunisiaTongaTurkkiT" +
+	"rinidad ja TobagoTuvaluTaiwanTansaniaUkrainaUgandaYhdysvaltain erillissaaretYhdy" +
+	"svallatUruguayUzbekistanVatikaaniSaint Vincent ja GrenadiinitVenezuelaBrittiläis" +
+	"et NeitsytsaaretYhdysvaltain NeitsytsaaretVietnamVanuatuWallis ja FutunaSamoaKos" +
+	"ovoJemenMayotteEtelä-AfrikkaSambiaZimbabwetuntematon aluemaailmaAfrikkaPohjois-A" +
+	"merikkaEtelä-AmerikkaOseaniaLänsi-AfrikkaVäli-AmerikkaItä-AfrikkaPohjois-Afrikka" +
+	"Keski-Afrikkaeteläinen AfrikkaAmerikkapohjoinen AmerikkaKaribiaItä-AasiaEtelä-Aa" +
+	"siaKaakkois-AasiaEtelä-EurooppaAustralaasiaMelanesiaMikronesiaPolynesiaAasiaKesk" +
+	"i-AasiaLänsi-AasiaEurooppaItä-EurooppaPohjois-EurooppaLänsi-EurooppaLatinalainen" +
+	" Amerikka"
 
 var fiRegionIdx = []uint16{ // 291 entries
 	0x0, 0xf, 0x16, 0x27, 0x31, 0x43, 0x4b, 0x52, 0x59, 0x6e, 0x74, 0x7d,
@@ -27942,25 +26819,25 @@
 	0x172, 0x17a, 0x188, 0x18e, 0x194, 0x1b0, 0x1cf, 0x1e6, 0x1f6, 0x1fd, 0x20e, 0x21a,
 	0x21f, 0x226, 0x22b, 0x233, 0x244, 0x24e, 0x253, 0x25c, 0x264, 0x26e, 0x274, 0x27b,
 	0x280, 0x28c, 0x294, 0x29a, 0x2a2, 0x2ba, 0x2c1, 0x2d1, 0x2d8, 0x2dc, 0x2e2, 0x2ef,
-	0x2f6, 0x2fd, 0x304, 0x313, 0x318, 0x31e, 0x32e, 0x346, 0x350, 0x356, 0x35b, 0x373,
-	0x37a, 0x381, 0x390, 0x398, 0x39d, 0x3a6, 0x3b0, 0x3b6, 0x3bc, 0x3c6, 0x3dd, 0x3e4,
-	0x40f, 0x418, 0x41c, 0x429, 0x42f, 0x449, 0x462, 0x46a, 0x471, 0x476, 0x47c, 0x48a,
-	0x493, 0x49a, 0x4a0, 0x4a8, 0x4ad, 0x4d1, 0x4d5, 0x4d9, 0x4e0, 0x4e6, 0x4ec, 0x4f3,
-	0x4fb, 0x501, 0x506, 0x50e, 0x517, 0x51f, 0x526, 0x53a, 0x547, 0x553, 0x559, 0x565,
-	0x56e, 0x572, 0x579, 0x584, 0x591, 0x59a, 0x5a1, 0x5a8, 0x5af, 0x5b8, 0x5be, 0x5c3,
-	0x5ca, 0x5d0, 0x5d7, 0x5e1, 0x5ed, 0x5f7, 0x607, 0x610, 0x614, 0x623, 0x62b, 0x642,
-	0x653, 0x65d, 0x667, 0x671, 0x676, 0x67f, 0x689, 0x68f, 0x696, 0x69d, 0x6a5, 0x6ac,
-	0x6ba, 0x6bf, 0x6cd, 0x6d4, 0x6dd, 0x6e7, 0x6ec, 0x6f1, 0x6f6, 0x6fa, 0x707, 0x70b,
-	0x711, 0x715, 0x726, 0x737, 0x742, 0x74a, 0x74f, 0x767, 0x76f, 0x77a, 0x78e, 0x797,
-	0x79c, 0x7a4, 0x7a9, 0x7b1, 0x7b9, 0x7c0, 0x7c6, 0x7ce, 0x7d4, 0x7e0, 0x7ed, 0x7f7,
-	0x7fc, 0x802, 0x80b, 0x817, 0x81f, 0x838, 0x840, 0x84c, 0x856, 0x85d, 0x864, 0x86b,
-	0x877, 0x88e, 0x899, 0x8a5, 0x8ab, 0x8b3, 0x8c3, 0x8d9, 0x8de, 0x904, 0x908, 0x90f,
-	0x91b, 0x922, 0x92c, 0x938, 0x93f, 0x944, 0x94a, 0x95c, 0x962, 0x968, 0x970, 0x977,
-	0x97d, 0x997, 0x9a2, 0x9a9, 0x9b3, 0x9bc, 0x9d8, 0x9e1, 0x9fc, 0xa16, 0xa1d, 0xa24,
-	0xa34, 0xa39, 0xa3f, 0xa44, 0xa4b, 0xa59, 0xa5f, 0xa67, 0xa76, 0xa7d, 0xa84, 0xa94,
-	0xaa3, 0xaaa, 0xab8, 0xac6, 0xad2, 0xae1, 0xaee, 0xb00, 0xb08, 0xb1a, 0xb21, 0xb2b,
-	0xb37, 0xb45, 0xb54, 0xb60, 0xb69, 0xb73, 0xb7c, 0xb81, 0xb8c, 0xb98, 0xba0, 0xbad,
-	0xbbd, 0xbcc, 0xbe1,
+	0x2f6, 0x2fd, 0x304, 0x313, 0x318, 0x31e, 0x32e, 0x346, 0x350, 0x356, 0x35b, 0x368,
+	0x36f, 0x376, 0x385, 0x38d, 0x392, 0x39b, 0x3a5, 0x3ab, 0x3b1, 0x3bb, 0x3d2, 0x3d9,
+	0x404, 0x40d, 0x411, 0x41e, 0x424, 0x43e, 0x457, 0x45f, 0x466, 0x46b, 0x471, 0x47f,
+	0x488, 0x48f, 0x495, 0x49d, 0x4a2, 0x4c6, 0x4ca, 0x4ce, 0x4d5, 0x4db, 0x4e1, 0x4e8,
+	0x4f0, 0x4f6, 0x4fb, 0x503, 0x50c, 0x514, 0x51b, 0x52f, 0x53c, 0x548, 0x54e, 0x55a,
+	0x563, 0x567, 0x56e, 0x579, 0x586, 0x58f, 0x596, 0x59d, 0x5a4, 0x5ad, 0x5b3, 0x5b8,
+	0x5bf, 0x5c5, 0x5cc, 0x5d6, 0x5e2, 0x5ec, 0x5fc, 0x605, 0x609, 0x618, 0x620, 0x637,
+	0x648, 0x652, 0x65c, 0x666, 0x66b, 0x674, 0x67e, 0x684, 0x68b, 0x692, 0x69a, 0x6a1,
+	0x6af, 0x6b4, 0x6c2, 0x6c9, 0x6d2, 0x6dc, 0x6e1, 0x6e6, 0x6eb, 0x6ef, 0x6fc, 0x700,
+	0x706, 0x70a, 0x71b, 0x72c, 0x737, 0x73f, 0x744, 0x75c, 0x764, 0x76f, 0x783, 0x78c,
+	0x791, 0x799, 0x79e, 0x7a6, 0x7ae, 0x7b5, 0x7bb, 0x7c3, 0x7c9, 0x7d5, 0x7e2, 0x7ec,
+	0x7f1, 0x7f7, 0x800, 0x80c, 0x814, 0x82d, 0x835, 0x841, 0x84b, 0x852, 0x859, 0x860,
+	0x86c, 0x883, 0x88e, 0x89a, 0x8a0, 0x8a8, 0x8b8, 0x8ce, 0x8d3, 0x8ec, 0x8f0, 0x8f7,
+	0x903, 0x90a, 0x914, 0x920, 0x927, 0x92c, 0x932, 0x944, 0x94a, 0x950, 0x958, 0x95f,
+	0x965, 0x97f, 0x98a, 0x991, 0x99b, 0x9a4, 0x9c0, 0x9c9, 0x9e4, 0x9fe, 0xa05, 0xa0c,
+	0xa1c, 0xa21, 0xa27, 0xa2c, 0xa33, 0xa41, 0xa47, 0xa4f, 0xa5e, 0xa65, 0xa6c, 0xa7c,
+	0xa8b, 0xa92, 0xaa0, 0xaae, 0xaba, 0xac9, 0xad6, 0xae8, 0xaf0, 0xb02, 0xb09, 0xb13,
+	0xb1f, 0xb2d, 0xb3c, 0xb48, 0xb51, 0xb5b, 0xb64, 0xb69, 0xb74, 0xb80, 0xb88, 0xb95,
+	0xba5, 0xbb4, 0xbc9,
 }
 
 const filRegionStr = "" +
@@ -28044,34 +26921,34 @@
 	"ypteSahara occidentalÉrythréeEspagneÉthiopieUnion européenneFinlandeFidjiÎles Ma" +
 	"louinesÉtats fédérés de MicronésieÎles FéroéFranceGabonRoyaume-UniGrenadeGéorgie" +
 	"Guyane françaiseGuerneseyGhanaGibraltarGroenlandGambieGuinéeGuadeloupeGuinée équ" +
-	"atorialeGrèceÎles Géorgie du Sud et Sandwich du SudGuatemalaGuamGuinée-BissauGuy" +
+	"atorialeGrèceGéorgie du Sud et îles Sandwich du SudGuatemalaGuamGuinée-BissauGuy" +
 	"anaR.A.S. chinoise de Hong KongÎles Heard et McDonaldHondurasCroatieHaïtiHongrie" +
 	"Îles CanariesIndonésieIrlandeIsraëlÎle de ManIndeTerritoire britannique de l’océ" +
 	"an IndienIrakIranIslandeItalieJerseyJamaïqueJordanieJaponKenyaKirghizistanCambod" +
 	"geKiribatiComoresSaint-Christophe-et-NiévèsCorée du NordCorée du SudKoweïtÎles C" +
 	"aïmansKazakhstanLaosLibanSainte-LucieLiechtensteinSri LankaLibériaLesothoLituani" +
-	"eLuxembourgLettonieLibyeMarocMonacoMoldavieMonténégroSaint-Martin (partie frança" +
-	"ise)MadagascarÎles MarshallMacédoineMaliMyanmarMongolieR.A.S. chinoise de MacaoÎ" +
-	"les Mariannes du NordMartiniqueMauritanieMontserratMalteMauriceMaldivesMalawiMex" +
-	"iqueMalaisieMozambiqueNamibieNouvelle-CalédonieNigerÎle NorfolkNigériaNicaraguaP" +
-	"ays-BasNorvègeNépalNauruNiueNouvelle-ZélandeOmanPanamaPérouPolynésie françaisePa" +
-	"pouasie-Nouvelle-GuinéePhilippinesPakistanPologneSaint-Pierre-et-MiquelonPitcair" +
-	"nPorto RicoTerritoires palestiniensPortugalPalaosParaguayQatarrégions éloignées " +
-	"de l’OcéanieLa RéunionRoumanieSerbieRussieRwandaArabie saouditeÎles SalomonSeych" +
-	"ellesSoudanSuèdeSingapourSainte-HélèneSlovénieSvalbard et Jan MayenSlovaquieSier" +
-	"ra LeoneSaint-MarinSénégalSomalieSurinameSoudan du SudSao Tomé-et-PrincipeEl Sal" +
-	"vadorSaint-Martin (partie néerlandaise)SyrieSwazilandTristan da CunhaÎles Turque" +
-	"s-et-CaïquesTchadTerres australes françaisesTogoThaïlandeTadjikistanTokelauTimor" +
-	" orientalTurkménistanTunisieTongaTurquieTrinité-et-TobagoTuvaluTaïwanTanzanieUkr" +
-	"aineOugandaÎles mineures éloignées des États-UnisÉtats-UnisUruguayOuzbékistanÉta" +
-	"t de la Cité du VaticanSaint-Vincent-et-les-GrenadinesVenezuelaÎles Vierges brit" +
-	"anniquesÎles Vierges des États-UnisVietnamVanuatuWallis-et-FutunaSamoaKosovoYéme" +
-	"nMayotteAfrique du SudZambieZimbabwerégion indéterminéeMondeAfriqueAmérique du N" +
-	"ordAmérique du SudOcéanieAfrique occidentaleAmérique centraleAfrique orientaleAf" +
-	"rique septentrionaleAfrique centraleAfrique australeAmériquesAmérique septentrio" +
-	"naleCaraïbesAsie orientaleAsie du SudAsie du Sud-EstEurope méridionaleAustralasi" +
-	"eMélanésierégion micronésiennePolynésieAsieAsie centraleAsie occidentaleEuropeEu" +
-	"rope orientaleEurope septentrionaleEurope occidentaleAmérique latine"
+	"eLuxembourgLettonieLibyeMarocMonacoMoldavieMonténégroSaint-MartinMadagascarÎles " +
+	"MarshallMacédoineMaliMyanmarMongolieR.A.S. chinoise de MacaoÎles Mariannes du No" +
+	"rdMartiniqueMauritanieMontserratMalteMauriceMaldivesMalawiMexiqueMalaisieMozambi" +
+	"queNamibieNouvelle-CalédonieNigerÎle NorfolkNigériaNicaraguaPays-BasNorvègeNépal" +
+	"NauruNiueNouvelle-ZélandeOmanPanamaPérouPolynésie françaisePapouasie-Nouvelle-Gu" +
+	"inéePhilippinesPakistanPologneSaint-Pierre-et-MiquelonÎles PitcairnPorto RicoTer" +
+	"ritoires palestiniensPortugalPalaosParaguayQatarrégions éloignées de l’OcéanieLa" +
+	" RéunionRoumanieSerbieRussieRwandaArabie saouditeÎles SalomonSeychellesSoudanSuè" +
+	"deSingapourSainte-HélèneSlovénieSvalbard et Jan MayenSlovaquieSierra LeoneSaint-" +
+	"MarinSénégalSomalieSurinameSoudan du SudSao Tomé-et-PrincipeEl SalvadorSaint-Mar" +
+	"tin (partie néerlandaise)SyrieSwazilandTristan da CunhaÎles Turques-et-CaïquesTc" +
+	"hadTerres australes françaisesTogoThaïlandeTadjikistanTokelauTimor orientalTurkm" +
+	"énistanTunisieTongaTurquieTrinité-et-TobagoTuvaluTaïwanTanzanieUkraineOugandaÎle" +
+	"s mineures éloignées des États-UnisÉtats-UnisUruguayOuzbékistanÉtat de la Cité d" +
+	"u VaticanSaint-Vincent-et-les-GrenadinesVenezuelaÎles Vierges britanniquesÎles V" +
+	"ierges des États-UnisVietnamVanuatuWallis-et-FutunaSamoaKosovoYémenMayotteAfriqu" +
+	"e du SudZambieZimbabwerégion indéterminéeMondeAfriqueAmérique du NordAmérique du" +
+	" SudOcéanieAfrique occidentaleAmérique centraleAfrique orientaleAfrique septentr" +
+	"ionaleAfrique centraleAfrique australeAmériquesAmérique septentrionaleCaraïbesAs" +
+	"ie orientaleAsie du SudAsie du Sud-EstEurope méridionaleAustralasieMélanésierégi" +
+	"on micronésiennePolynésieAsieAsie centraleAsie occidentaleEuropeEurope orientale" +
+	"Europe septentrionaleEurope occidentaleAmérique latine"
 
 var frRegionIdx = []uint16{ // 291 entries
 	0x0, 0x15, 0x1c, 0x30, 0x3b, 0x4d, 0x55, 0x5c, 0x64, 0x7b, 0x81, 0x8c,
@@ -28086,25 +26963,23 @@
 	0x4b2, 0x4b9, 0x4c0, 0x4cb, 0x4cf, 0x4fa, 0x4fe, 0x502, 0x509, 0x50f, 0x515, 0x51e,
 	0x526, 0x52b, 0x530, 0x53c, 0x544, 0x54c, 0x553, 0x56f, 0x57d, 0x58a, 0x591, 0x59f,
 	0x5a9, 0x5ad, 0x5b2, 0x5be, 0x5cb, 0x5d4, 0x5dc, 0x5e3, 0x5eb, 0x5f5, 0x5fd, 0x602,
-	0x607, 0x60d, 0x615, 0x621, 0x641, 0x64b, 0x659, 0x663, 0x667, 0x66e, 0x676, 0x68e,
-	0x6a5, 0x6af, 0x6b9, 0x6c3, 0x6c8, 0x6cf, 0x6d7, 0x6dd, 0x6e4, 0x6ec, 0x6f6, 0x6fd,
-	0x710, 0x715, 0x721, 0x729, 0x732, 0x73a, 0x742, 0x748, 0x74d, 0x751, 0x762, 0x766,
-	0x76c, 0x772, 0x787, 0x7a1, 0x7ac, 0x7b4, 0x7bb, 0x7d3, 0x7db, 0x7e5, 0x7fd, 0x805,
-	0x80b, 0x813, 0x818, 0x83c, 0x847, 0x84f, 0x855, 0x85b, 0x861, 0x870, 0x87d, 0x887,
-	0x88d, 0x893, 0x89c, 0x8ab, 0x8b4, 0x8c9, 0x8d2, 0x8de, 0x8e9, 0x8f2, 0x8f9, 0x901,
-	0x90e, 0x923, 0x92e, 0x951, 0x956, 0x95f, 0x96f, 0x988, 0x98d, 0x9a9, 0x9ad, 0x9b7,
-	0x9c2, 0x9c9, 0x9d7, 0x9e4, 0x9eb, 0x9f0, 0x9f7, 0xa09, 0xa0f, 0xa16, 0xa1e, 0xa25,
-	0xa2c, 0xa56, 0xa61, 0xa68, 0xa74, 0xa90, 0xaaf, 0xab8, 0xad2, 0xaef, 0xaf6, 0xafd,
-	0xb0d, 0xb12, 0xb18, 0xb1e, 0xb25, 0xb33, 0xb39, 0xb41, 0xb57, 0xb5c, 0xb63, 0xb74,
-	0xb84, 0xb8c, 0xb9f, 0xbb1, 0xbc2, 0xbd8, 0xbe8, 0xbf8, 0xc02, 0xc1a, 0xc23, 0xc31,
-	0xc3c, 0xc4b, 0xc5e, 0xc69, 0xc74, 0xc8a, 0xc94, 0xc98, 0xca5, 0xcb5, 0xcbb, 0xccb,
-	0xce0, 0xcf2, 0xd02,
+	0x607, 0x60d, 0x615, 0x621, 0x62d, 0x637, 0x645, 0x64f, 0x653, 0x65a, 0x662, 0x67a,
+	0x691, 0x69b, 0x6a5, 0x6af, 0x6b4, 0x6bb, 0x6c3, 0x6c9, 0x6d0, 0x6d8, 0x6e2, 0x6e9,
+	0x6fc, 0x701, 0x70d, 0x715, 0x71e, 0x726, 0x72e, 0x734, 0x739, 0x73d, 0x74e, 0x752,
+	0x758, 0x75e, 0x773, 0x78d, 0x798, 0x7a0, 0x7a7, 0x7bf, 0x7cd, 0x7d7, 0x7ef, 0x7f7,
+	0x7fd, 0x805, 0x80a, 0x82e, 0x839, 0x841, 0x847, 0x84d, 0x853, 0x862, 0x86f, 0x879,
+	0x87f, 0x885, 0x88e, 0x89d, 0x8a6, 0x8bb, 0x8c4, 0x8d0, 0x8db, 0x8e4, 0x8eb, 0x8f3,
+	0x900, 0x915, 0x920, 0x943, 0x948, 0x951, 0x961, 0x97a, 0x97f, 0x99b, 0x99f, 0x9a9,
+	0x9b4, 0x9bb, 0x9c9, 0x9d6, 0x9dd, 0x9e2, 0x9e9, 0x9fb, 0xa01, 0xa08, 0xa10, 0xa17,
+	0xa1e, 0xa48, 0xa53, 0xa5a, 0xa66, 0xa82, 0xaa1, 0xaaa, 0xac4, 0xae1, 0xae8, 0xaef,
+	0xaff, 0xb04, 0xb0a, 0xb10, 0xb17, 0xb25, 0xb2b, 0xb33, 0xb49, 0xb4e, 0xb55, 0xb66,
+	0xb76, 0xb7e, 0xb91, 0xba3, 0xbb4, 0xbca, 0xbda, 0xbea, 0xbf4, 0xc0c, 0xc15, 0xc23,
+	0xc2e, 0xc3d, 0xc50, 0xc5b, 0xc66, 0xc7c, 0xc86, 0xc8a, 0xc97, 0xca7, 0xcad, 0xcbd,
+	0xcd2, 0xce4, 0xcf4,
 }
 
 const frCARegionStr = "" +
-	"BélarusÎles Cocos (Keeling)MicronésieGéorgie du Sud et les îles Sandwich du SudS" +
-	"aint-Martin (France)Océanie éloignéeSalvadorSaint-Martin (Pays-Bas)Saint-Vincent" +
-	"-et-les Grenadines"
+	"BélarusÎles Cocos (Keeling)MicronésieSaint-Vincent-et-les Grenadines"
 
 var frCARegionIdx = []uint16{ // 247 entries
 	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
@@ -28115,19 +26990,19 @@
 	0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d,
 	0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x28, 0x28, 0x28, 0x28, 0x28,
 	0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
-	0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
-	0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
-	0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
-	0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
-	0x54, 0x54, 0x54, 0x54, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
-	0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
-	0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
-	0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
-	0x69, 0x69, 0x69, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
-	0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
-	0x7c, 0x7c, 0x84, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
-	0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
-	0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0xba,
+	0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
+	0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
+	0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
+	0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
+	0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
+	0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
+	0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
+	0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
+	0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
+	0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
+	0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
+	0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
+	0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x47,
 }
 
 const guRegionStr = "" +
@@ -28211,28 +27086,28 @@
 	"תריאהספרדאתיופיההאיחוד האירופיפינלנדפיג׳יאיי פוקלנדמיקרונזיהאיי פארוצרפתגאבוןהממ" +
 	"לכה המאוחדתגרנדהגאורגיהגיאנה הצרפתיתגרנסיגאנהגיברלטרגרינלנדגמביהגיניאהגוואדלופגי" +
 	"ניאה המשווניתיווןג׳ורג׳יה הדרומית ואיי סנדוויץ׳ הדרומייםגואטמלהגואםגיניאה-ביסאוג" +
-	"יאנההונג קונג - מחוז מנהלי מיוחד של סיןאיי הרד ואיי מקדונלדהונדורסקרואטיההאיטיהו" +
-	"נגריההאיים הקנרייםאינדונזיהאירלנדישראלהאי מאןהודוטריטוריה בריטית באוקיאנוס ההודי" +
-	"עיראקאיראןאיסלנדאיטליהג׳רסיג׳מייקהירדןיפןקניהקירגיזסטןקמבודיהקיריבאטיקומורוססנט " +
-	"קיטס ונוויסקוריאה הצפוניתקוריאה הדרומיתכוויתאיי קיימןקזחסטןלאוסלבנוןסנט לוסיהליכ" +
-	"טנשטייןסרי לנקהליבריהלסוטוליטאלוקסמבורגלטביהלובמרוקומונקומולדובהמונטנגרוסנט מרטי" +
-	"ןמדגסקראיי מרשלמקדוניהמאלימיאנמאר (בורמה)‎מונגוליהמקאו - מחוז מנהלי מיוחד של סין" +
-	"איי מריאנה הצפונייםמרטיניקמאוריטניהמונסראטמלטהמאוריציוסהאיים המלדיבייםמלאווימקסי" +
-	"קומלזיהמוזמביקנמיביהקלדוניה החדשהניז׳ראיי נורפוקניגריהניקרגואההולנדנורווגיהנפאלנ" +
-	"אורוניווהניו זילנדעומאןפנמהפרופולינזיה הצרפתיתפפואה גיניאה החדשהפיליפיניםפקיסטןפ" +
-	"וליןסנט פייר ומיקלוןאיי פיטקרןפורטו ריקוהשטחים הפלסטינייםפורטוגלפאלאופרגוואיקטאר" +
+	"יאנההונג קונג - מחוז מנהלי מיוחד של סיןהאי הרד ואיי מקדונלדהונדורסקרואטיההאיטיהו" +
+	"נגריההאיים הקנרייםאינדונזיהאירלנדישראלהאי מאןהודוהטריטוריה הבריטית באוקיינוס ההו" +
+	"דיעיראקאיראןאיסלנדאיטליהג׳רסיג׳מייקהירדןיפןקניהקירגיזסטןקמבודיהקיריבאטיקומורוסנט" +
+	" קיטס ונוויסקוריאה הצפוניתקוריאה הדרומיתכוויתאיי קיימןקזחסטןלאוסלבנוןסנט לוסיהלי" +
+	"כטנשטייןסרי לנקהליבריהלסוטוליטאלוקסמבורגלטביהלובמרוקומונקומולדובהמונטנגרוסן מרטן" +
+	"מדגסקראיי מרשלמקדוניהמאלימיאנמאר (בורמה)‎מונגוליהמקאו - מחוז מנהלי מיוחד של סיןא" +
+	"יי מריאנה הצפונייםמרטיניקמאוריטניהמונסראטמלטהמאוריציוסהאיים המלדיבייםמלאווימקסיק" +
+	"ומלזיהמוזמביקנמיביהקלדוניה החדשהניז׳ראיי נורפוקניגריהניקרגואההולנדנורווגיהנפאלנא" +
+	"ורוניווהניו זילנדעומאןפנמהפרופולינזיה הצרפתיתפפואה גיניאה החדשהפיליפיניםפקיסטןפו" +
+	"ליןסנט פייר ומיקלוןאיי פיטקרןפוארטו ריקוהשטחים הפלסטינייםפורטוגלפאלאופרגוואיקטאר" +
 	"אוקיאניה חיצוניתראוניוןרומניהסרביהרוסיהרואנדהערב הסעודיתאיי שלמהאיי סיישלסודןשוו" +
 	"דיהסינגפורסנט הלנהסלובניהסוולבארד ויאן מאייןסלובקיהסיירה לאונהסן מרינוסנגלסומליה" +
 	"סורינםדרום סודןסאו טומה ופרינסיפהאל סלבדורסינט מארטןסוריהסווזילנדטריסטן דה קונהא" +
 	"יי טורקס וקאיקוסצ׳אדטריטוריות דרומיות של צרפתטוגותאילנדטג׳יקיסטןטוקלאוטימור לסטה" +
 	"טורקמניסטןתוניסיהטונגהטורקיהטרינידד וטובגוטובלוטייוואןטנזניהאוקראינהאוגנדהאיים ל" +
 	"חוף ארצות הבריתארצות הבריתאורוגוואיאוזבקיסטןהוותיקןסנט וינסנט והגרנדיניםונצואלהא" +
-	"יי הבתולה הבריטייםאיי הבתולה האמריקנייםוייטנאםונואטואיי ווליס ופוטונהסמואהקוסובו" +
-	"תימןמאיוטדרום אפריקהזמביהזימבאבווהאזור לא ידועהעולםאפריקהצפון אמריקהדרום אמריקהא" +
-	"וקיאניהמערב אפריקהמרכז אמריקהמזרח אפריקהצפון אפריקהמרכז אפריקהדרום יבשת אפריקהאמ" +
-	"ריקהאמריקה הצפוניתהאיים הקריבייםמזרח אסיהדרום אסיהדרום־מזרח אסיהדרום אירופהאוסטר" +
-	"לאסיהמלנזיהאזור מיקרונזיהפולינזיהאסיהמרכז אסיהמערב אסיהאירופהמזרח אירופהצפון איר" +
-	"ופהמערב אירופהאמריקה הלטינית"
+	"יי הבתולה הבריטייםאיי הבתולה של ארצות הבריתוייטנאםונואטואיי ווליס ופוטונהסמואהקו" +
+	"סובותימןמאיוטדרום אפריקהזמביהזימבאבווהאזור לא ידועהעולםאפריקהצפון אמריקהדרום אמר" +
+	"יקהאוקיאניהמערב אפריקהמרכז אמריקהמזרח אפריקהצפון אפריקהמרכז אפריקהדרום יבשת אפרי" +
+	"קהאמריקהאמריקה הצפוניתהאיים הקריבייםמזרח אסיהדרום אסיהדרום־מזרח אסיהדרום אירופהא" +
+	"וסטרלאסיהמלנזיהאזור מיקרונזיהפולינזיהאסיהמרכז אסיהמערב אסיהאירופהמזרח אירופהצפון" +
+	" אירופהמערב אירופהאמריקה הלטינית"
 
 var heRegionIdx = []uint16{ // 291 entries
 	0x0, 0x11, 0x1d, 0x49, 0x59, 0x78, 0x84, 0x90, 0x9c, 0xbb, 0xc7, 0xdb,
@@ -28244,22 +27119,22 @@
 	0x4e4, 0x4ec, 0x4fa, 0x515, 0x521, 0x52b, 0x53e, 0x550, 0x55f, 0x567, 0x571, 0x58c,
 	0x596, 0x5a4, 0x5bd, 0x5c7, 0x5cf, 0x5dd, 0x5eb, 0x5f5, 0x601, 0x611, 0x62e, 0x636,
 	0x680, 0x68e, 0x696, 0x6ad, 0x6b7, 0x6f5, 0x71a, 0x728, 0x736, 0x740, 0x74e, 0x767,
-	0x779, 0x785, 0x78f, 0x79c, 0x7a4, 0x7df, 0x7e9, 0x7f3, 0x7ff, 0x80b, 0x815, 0x823,
-	0x82b, 0x831, 0x839, 0x84b, 0x859, 0x869, 0x877, 0x893, 0x8ae, 0x8c9, 0x8d3, 0x8e4,
-	0x8f0, 0x8f8, 0x902, 0x913, 0x927, 0x936, 0x942, 0x94c, 0x954, 0x966, 0x970, 0x976,
-	0x980, 0x98a, 0x998, 0x9a8, 0x9b9, 0x9c5, 0x9d4, 0x9e2, 0x9ea, 0xa08, 0xa18, 0xa4d,
-	0xa71, 0xa7f, 0xa91, 0xa9f, 0xaa7, 0xab9, 0xad6, 0xae2, 0xaee, 0xaf8, 0xb06, 0xb12,
-	0xb2b, 0xb35, 0xb48, 0xb54, 0xb64, 0xb6e, 0xb7e, 0xb86, 0xb90, 0xb9a, 0xbab, 0xbb5,
-	0xbbd, 0xbc3, 0xbe2, 0xc04, 0xc16, 0xc22, 0xc2c, 0xc4a, 0xc5d, 0xc70, 0xc91, 0xc9f,
+	0x779, 0x785, 0x78f, 0x79c, 0x7a4, 0x7e3, 0x7ed, 0x7f7, 0x803, 0x80f, 0x819, 0x827,
+	0x82f, 0x835, 0x83d, 0x84f, 0x85d, 0x86d, 0x879, 0x895, 0x8b0, 0x8cb, 0x8d5, 0x8e6,
+	0x8f2, 0x8fa, 0x904, 0x915, 0x929, 0x938, 0x944, 0x94e, 0x956, 0x968, 0x972, 0x978,
+	0x982, 0x98c, 0x99a, 0x9aa, 0x9b7, 0x9c3, 0x9d2, 0x9e0, 0x9e8, 0xa06, 0xa16, 0xa4b,
+	0xa6f, 0xa7d, 0xa8f, 0xa9d, 0xaa5, 0xab7, 0xad4, 0xae0, 0xaec, 0xaf6, 0xb04, 0xb10,
+	0xb29, 0xb33, 0xb46, 0xb52, 0xb62, 0xb6c, 0xb7c, 0xb84, 0xb8e, 0xb98, 0xba9, 0xbb3,
+	0xbbb, 0xbc1, 0xbe0, 0xc02, 0xc14, 0xc20, 0xc2a, 0xc48, 0xc5b, 0xc70, 0xc91, 0xc9f,
 	0xca9, 0xcb7, 0xcbf, 0xcde, 0xcec, 0xcf8, 0xd02, 0xd0c, 0xd18, 0xd2d, 0xd3c, 0xd4d,
 	0xd55, 0xd61, 0xd6f, 0xd7e, 0xd8c, 0xdb0, 0xdbe, 0xdd3, 0xde2, 0xdea, 0xdf6, 0xe02,
 	0xe13, 0xe35, 0xe46, 0xe59, 0xe63, 0xe73, 0xe8d, 0xead, 0xeb5, 0xee4, 0xeec, 0xef8,
 	0xf0a, 0xf16, 0xf29, 0xf3d, 0xf4b, 0xf55, 0xf61, 0xf7c, 0xf86, 0xf94, 0xfa0, 0xfb0,
-	0xfbc, 0xfe3, 0xff8, 0x100a, 0x101c, 0x102a, 0x1052, 0x1060, 0x1084, 0x10ac, 0x10ba, 0x10c6,
-	0x10e6, 0x10f0, 0x10fc, 0x1104, 0x110e, 0x1123, 0x112d, 0x113f, 0x1155, 0x115f, 0x116b, 0x1180,
-	0x1195, 0x11a5, 0x11ba, 0x11cf, 0x11e4, 0x11f9, 0x120e, 0x122c, 0x1238, 0x1253, 0x126e, 0x127f,
-	0x1290, 0x12ab, 0x12c0, 0x12d4, 0x12e0, 0x12fb, 0x130b, 0x1313, 0x1324, 0x1335, 0x1341, 0x1356,
-	0x136b, 0x1380, 0x139b,
+	0xfbc, 0xfe3, 0xff8, 0x100a, 0x101c, 0x102a, 0x1052, 0x1060, 0x1084, 0x10b2, 0x10c0, 0x10cc,
+	0x10ec, 0x10f6, 0x1102, 0x110a, 0x1114, 0x1129, 0x1133, 0x1145, 0x115b, 0x1165, 0x1171, 0x1186,
+	0x119b, 0x11ab, 0x11c0, 0x11d5, 0x11ea, 0x11ff, 0x1214, 0x1232, 0x123e, 0x1259, 0x1274, 0x1285,
+	0x1296, 0x12b1, 0x12c6, 0x12da, 0x12e6, 0x1301, 0x1311, 0x1319, 0x132a, 0x133b, 0x1347, 0x135c,
+	0x1371, 0x1386, 0x13a1,
 }
 
 const hiRegionStr = "" +
@@ -28552,33 +27427,33 @@
 	"k DominikaAljazairCeuta dan MelillaEkuadorEstoniaMesirSahara BaratEritreaSpanyol" +
 	"EtiopiaUni EropaFinlandiaFijiKepulauan MalvinasMikronesiaKepulauan FaroePrancisG" +
 	"abonInggrisGrenadaGeorgiaGuyana PrancisGuernseyGhanaGibraltarGrinlandiaGambiaGui" +
-	"neaGuadeloupeGuinea EkuatorialYunaniGeorgia Selatan dan Kepulauan Sandwich Selat" +
-	"anGuatemalaGuamGuinea-BissauGuyanaHong Kong SAR ChinaPulau Heard dan Kepulauan M" +
-	"cDonaldHondurasKroasiaHaitiHungariaKepulauan CanaryIndonesiaIrlandiaIsraelPulau " +
-	"ManIndiaWilayah Inggris di Samudra HindiaIrakIranIslandiaItaliaJerseyJamaikaYord" +
-	"aniaJepangKenyaKirgistanKambojaKiribatiKomoroSaint Kitts dan NevisKorea UtaraKor" +
-	"ea SelatanKuwaitKepulauan CaymanKazakstanLaosLebanonSaint LuciaLiechtensteinSri " +
-	"LankaLiberiaLesothoLituaniaLuksemburgLatviaLibiaMarokoMonakoMoldovaMontenegroSai" +
-	"nt MartinMadagaskarKepulauan MarshallMakedoniaMaliMyanmar (Burma)MongoliaMakau S" +
-	"AR ChinaKepulauan Mariana UtaraMartinikMauritaniaMontserratMaltaMauritiusMaladew" +
-	"aMalawiMeksikoMalaysiaMozambikNamibiaKaledonia BaruNigerKepulauan NorfolkNigeria" +
-	"NikaraguaBelandaNorwegiaNepalNauruNiueSelandia BaruOmanPanamaPeruPolinesia Pranc" +
-	"isPapua NuginiFilipinaPakistanPolandiaSaint Pierre dan MiquelonKepulauan Pitcair" +
-	"nPuerto RikoWilayah PalestinaPortugalPalauParaguayQatarOseania LuarRéunionRumani" +
-	"aSerbiaRusiaRwandaArab SaudiKepulauan SolomonSeychellesSudanSwediaSingapuraSaint" +
-	" HelenaSloveniaKepulauan Svalbard dan Jan MayenSlovakiaSierra LeoneSan MarinoSen" +
-	"egalSomaliaSurinameSudan SelatanSao Tome dan PrincipeEl SalvadorSint MaartenSuri" +
-	"ahSwazilandTristan da CunhaKepulauan Turks dan CaicosCadWilayah Kutub Selatan Pr" +
-	"ancisTogoThailandTajikistanTokelauTimor LesteTurkimenistanTunisiaTongaTurkiTrini" +
-	"dad dan TobagoTuvaluTaiwanTanzaniaUkrainaUgandaKepulauan Terluar A.S.Amerika Ser" +
-	"ikatUruguayUzbekistanVatikanSaint Vincent dan GrenadinesVenezuelaKepulauan Virgi" +
-	"n InggrisKepulauan Virgin A.S.VietnamVanuatuKepulauan Wallis dan FutunaSamoaKoso" +
-	"voYamanMayotteAfrika SelatanZambiaZimbabweWilayah Tidak DikenalDuniaAfrikaAmerik" +
-	"a UtaraAmerika SelatanOseaniaAfrika BaratAmerika TengahAfrika TimurAfrika UtaraA" +
-	"frika TengahAfrika Bagian SelatanAmerikaAmerika Bagian UtaraKepulauan KaribiaAsi" +
-	"a TimurAsia SelatanAsia TenggaraEropa SelatanAustralasiaMelanesiaWilayah Mikrone" +
-	"siaPolinesiaAsiaAsia TengahAsia BaratEropaEropa TimurEropa UtaraEropa BaratAmeri" +
-	"ka Latin"
+	"neaGuadeloupeGuinea EkuatorialYunaniGeorgia Selatan & Kep. Sandwich SelatanGuate" +
+	"malaGuamGuinea-BissauGuyanaHong Kong SAR ChinaPulau Heard dan Kepulauan McDonald" +
+	"HondurasKroasiaHaitiHungariaKepulauan CanaryIndonesiaIrlandiaIsraelPulau ManIndi" +
+	"aWilayah Inggris di Samudra HindiaIrakIranIslandiaItaliaJerseyJamaikaYordaniaJep" +
+	"angKenyaKirgistanKambojaKiribatiKomoroSaint Kitts dan NevisKorea UtaraKorea Sela" +
+	"tanKuwaitKepulauan CaymanKazakstanLaosLebanonSaint LuciaLiechtensteinSri LankaLi" +
+	"beriaLesothoLituaniaLuksemburgLatviaLibiaMarokoMonakoMoldovaMontenegroSaint Mart" +
+	"inMadagaskarKepulauan MarshallMakedoniaMaliMyanmar (Burma)MongoliaMakau SAR Chin" +
+	"aKepulauan Mariana UtaraMartinikMauritaniaMontserratMaltaMauritiusMaladewaMalawi" +
+	"MeksikoMalaysiaMozambikNamibiaKaledonia BaruNigerKepulauan NorfolkNigeriaNikarag" +
+	"uaBelandaNorwegiaNepalNauruNiueSelandia BaruOmanPanamaPeruPolinesia PrancisPapua" +
+	" NuginiFilipinaPakistanPolandiaSaint Pierre dan MiquelonKepulauan PitcairnPuerto" +
+	" RikoWilayah PalestinaPortugalPalauParaguayQatarOseania LuarRéunionRumaniaSerbia" +
+	"RusiaRwandaArab SaudiKepulauan SolomonSeychellesSudanSwediaSingapuraSaint Helena" +
+	"SloveniaKepulauan Svalbard dan Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSom" +
+	"aliaSurinameSudan SelatanSao Tome dan PrincipeEl SalvadorSint MaartenSuriahSwazi" +
+	"landTristan da CunhaKepulauan Turks dan CaicosCadWilayah Kutub Selatan PrancisTo" +
+	"goThailandTajikistanTokelauTimor LesteTurkimenistanTunisiaTongaTurkiTrinidad dan" +
+	" TobagoTuvaluTaiwanTanzaniaUkrainaUgandaKepulauan Terluar A.S.Amerika SerikatUru" +
+	"guayUzbekistanVatikanSaint Vincent dan GrenadinesVenezuelaKepulauan Virgin Inggr" +
+	"isKepulauan Virgin A.S.VietnamVanuatuKepulauan Wallis dan FutunaSamoaKosovoYaman" +
+	"MayotteAfrika SelatanZambiaZimbabweWilayah Tidak DikenalDuniaAfrikaAmerika Utara" +
+	"Amerika SelatanOseaniaAfrika BaratAmerika TengahAfrika TimurAfrika UtaraAfrika T" +
+	"engahAfrika Bagian SelatanAmerikaAmerika Bagian UtaraKepulauan KaribiaAsia Timur" +
+	"Asia SelatanAsia TenggaraEropa SelatanAustralasiaMelanesiaWilayah MikronesiaPoli" +
+	"nesiaAsiaAsia TengahAsia BaratEropaEropa TimurEropa UtaraEropa BaratAmerika Lati" +
+	"n"
 
 var idRegionIdx = []uint16{ // 291 entries
 	0x0, 0xf, 0x16, 0x25, 0x2f, 0x42, 0x4a, 0x51, 0x58, 0x67, 0x6d, 0x77,
@@ -28589,23 +27464,23 @@
 	0x25b, 0x267, 0x26d, 0x274, 0x27c, 0x28d, 0x295, 0x2a6, 0x2ad, 0x2b4, 0x2b9, 0x2c5,
 	0x2cc, 0x2d3, 0x2da, 0x2e3, 0x2ec, 0x2f0, 0x302, 0x30c, 0x31b, 0x322, 0x327, 0x32e,
 	0x335, 0x33c, 0x34a, 0x352, 0x357, 0x360, 0x36a, 0x370, 0x376, 0x380, 0x391, 0x397,
-	0x3c5, 0x3ce, 0x3d2, 0x3df, 0x3e5, 0x3f8, 0x41a, 0x422, 0x429, 0x42e, 0x436, 0x446,
-	0x44f, 0x457, 0x45d, 0x466, 0x46b, 0x48c, 0x490, 0x494, 0x49c, 0x4a2, 0x4a8, 0x4af,
-	0x4b7, 0x4bd, 0x4c2, 0x4cb, 0x4d2, 0x4da, 0x4e0, 0x4f5, 0x500, 0x50d, 0x513, 0x523,
-	0x52c, 0x530, 0x537, 0x542, 0x54f, 0x558, 0x55f, 0x566, 0x56e, 0x578, 0x57e, 0x583,
-	0x589, 0x58f, 0x596, 0x5a0, 0x5ac, 0x5b6, 0x5c8, 0x5d1, 0x5d5, 0x5e4, 0x5ec, 0x5fb,
-	0x612, 0x61a, 0x624, 0x62e, 0x633, 0x63c, 0x644, 0x64a, 0x651, 0x659, 0x661, 0x668,
-	0x676, 0x67b, 0x68c, 0x693, 0x69c, 0x6a3, 0x6ab, 0x6b0, 0x6b5, 0x6b9, 0x6c6, 0x6ca,
-	0x6d0, 0x6d4, 0x6e5, 0x6f1, 0x6f9, 0x701, 0x709, 0x722, 0x734, 0x73f, 0x750, 0x758,
-	0x75d, 0x765, 0x76a, 0x776, 0x77e, 0x785, 0x78b, 0x790, 0x796, 0x7a0, 0x7b1, 0x7bb,
-	0x7c0, 0x7c6, 0x7cf, 0x7db, 0x7e3, 0x803, 0x80b, 0x817, 0x821, 0x828, 0x82f, 0x837,
-	0x844, 0x859, 0x864, 0x870, 0x876, 0x87f, 0x88f, 0x8a9, 0x8ac, 0x8c9, 0x8cd, 0x8d5,
-	0x8df, 0x8e6, 0x8f1, 0x8fe, 0x905, 0x90a, 0x90f, 0x922, 0x928, 0x92e, 0x936, 0x93d,
-	0x943, 0x959, 0x968, 0x96f, 0x979, 0x980, 0x99c, 0x9a5, 0x9bd, 0x9d2, 0x9d9, 0x9e0,
-	0x9fb, 0xa00, 0xa06, 0xa0b, 0xa12, 0xa20, 0xa26, 0xa2e, 0xa43, 0xa48, 0xa4e, 0xa5b,
-	0xa6a, 0xa71, 0xa7d, 0xa8b, 0xa97, 0xaa3, 0xab0, 0xac5, 0xacc, 0xae0, 0xaf1, 0xafb,
-	0xb07, 0xb14, 0xb21, 0xb2c, 0xb35, 0xb47, 0xb50, 0xb54, 0xb5f, 0xb69, 0xb6e, 0xb79,
-	0xb84, 0xb8f, 0xb9c,
+	0x3be, 0x3c7, 0x3cb, 0x3d8, 0x3de, 0x3f1, 0x413, 0x41b, 0x422, 0x427, 0x42f, 0x43f,
+	0x448, 0x450, 0x456, 0x45f, 0x464, 0x485, 0x489, 0x48d, 0x495, 0x49b, 0x4a1, 0x4a8,
+	0x4b0, 0x4b6, 0x4bb, 0x4c4, 0x4cb, 0x4d3, 0x4d9, 0x4ee, 0x4f9, 0x506, 0x50c, 0x51c,
+	0x525, 0x529, 0x530, 0x53b, 0x548, 0x551, 0x558, 0x55f, 0x567, 0x571, 0x577, 0x57c,
+	0x582, 0x588, 0x58f, 0x599, 0x5a5, 0x5af, 0x5c1, 0x5ca, 0x5ce, 0x5dd, 0x5e5, 0x5f4,
+	0x60b, 0x613, 0x61d, 0x627, 0x62c, 0x635, 0x63d, 0x643, 0x64a, 0x652, 0x65a, 0x661,
+	0x66f, 0x674, 0x685, 0x68c, 0x695, 0x69c, 0x6a4, 0x6a9, 0x6ae, 0x6b2, 0x6bf, 0x6c3,
+	0x6c9, 0x6cd, 0x6de, 0x6ea, 0x6f2, 0x6fa, 0x702, 0x71b, 0x72d, 0x738, 0x749, 0x751,
+	0x756, 0x75e, 0x763, 0x76f, 0x777, 0x77e, 0x784, 0x789, 0x78f, 0x799, 0x7aa, 0x7b4,
+	0x7b9, 0x7bf, 0x7c8, 0x7d4, 0x7dc, 0x7fc, 0x804, 0x810, 0x81a, 0x821, 0x828, 0x830,
+	0x83d, 0x852, 0x85d, 0x869, 0x86f, 0x878, 0x888, 0x8a2, 0x8a5, 0x8c2, 0x8c6, 0x8ce,
+	0x8d8, 0x8df, 0x8ea, 0x8f7, 0x8fe, 0x903, 0x908, 0x91b, 0x921, 0x927, 0x92f, 0x936,
+	0x93c, 0x952, 0x961, 0x968, 0x972, 0x979, 0x995, 0x99e, 0x9b6, 0x9cb, 0x9d2, 0x9d9,
+	0x9f4, 0x9f9, 0x9ff, 0xa04, 0xa0b, 0xa19, 0xa1f, 0xa27, 0xa3c, 0xa41, 0xa47, 0xa54,
+	0xa63, 0xa6a, 0xa76, 0xa84, 0xa90, 0xa9c, 0xaa9, 0xabe, 0xac5, 0xad9, 0xaea, 0xaf4,
+	0xb00, 0xb0d, 0xb1a, 0xb25, 0xb2e, 0xb40, 0xb49, 0xb4d, 0xb58, 0xb62, 0xb67, 0xb72,
+	0xb7d, 0xb88, 0xb95,
 }
 
 const isRegionStr = "" +
@@ -28689,32 +27564,32 @@
 	"FaroeFranciaGabonRegno UnitoGrenadaGeorgiaGuiana FranceseGuernseyGhanaGibilterra" +
 	"GroenlandiaGambiaGuineaGuadalupaGuinea EquatorialeGreciaGeorgia del Sud e isole " +
 	"Sandwich meridionaliGuatemalaGuamGuinea-BissauGuyanaRAS di Hong KongIsole Heard " +
-	"ed Isole McDonaldHondurasCroaziaHaitiUngheriaIsole CanarieIndonesiaIrlandaIsrael" +
-	"eIsola di ManIndiaTerritorio Britannico dell’Oceano IndianoIraqIranIslandaItalia" +
-	"JerseyGiamaicaGiordaniaGiapponeKenyaKirghizistanCambogiaKiribatiComoreSaint Kitt" +
-	"s e NevisCorea del NordCorea del SudKuwaitIsole CaymanKazakistanLaosLibanoSaint " +
-	"LuciaLiechtensteinSri LankaLiberiaLesothoLituaniaLussemburgoLettoniaLibiaMarocco" +
-	"MonacoMoldaviaMontenegroSaint MartinMadagascarIsole MarshallRepubblica di Macedo" +
-	"niaMaliMyanmar (Birmania)MongoliaRAS di MacaoIsole Marianne SettentrionaliMartin" +
-	"icaMauritaniaMontserratMaltaMauritiusMaldiveMalawiMessicoMalesiaMozambicoNamibia" +
-	"Nuova CaledoniaNigerIsola NorfolkNigeriaNicaraguaPaesi BassiNorvegiaNepalNauruNi" +
-	"ueNuova ZelandaOmanPanamáPerùPolinesia FrancesePapua Nuova GuineaFilippinePakist" +
-	"anPoloniaSaint Pierre e MiquelonIsole PitcairnPortoricoTerritori palestinesiPort" +
-	"ogalloPalauParaguayQatarOceania lontanaRéunionRomaniaSerbiaFederazione RussaRuan" +
-	"daArabia SauditaIsole SolomonSeychellesSudanSveziaSingaporeSant’ElenaSloveniaSva" +
-	"lbard e Jan MayenSlovacchiaSierra LeoneSan MarinoSenegalSomaliaSurinameSudan del" +
-	" SudSão Tomé e PríncipeEl SalvadorSint MaartenSiriaSwazilandTristan da CunhaIsol" +
-	"e Turks e CaicosCiadTerritori australi francesiTogoTailandiaTagikistanTokelauTim" +
-	"or EstTurkmenistanTunisiaTongaTurchiaTrinidad e TobagoTuvaluTaiwanTanzaniaUcrain" +
-	"aUgandaIsole minori lontane dagli USAStati UnitiUruguayUzbekistanCittà del Vatic" +
-	"anoSaint Vincent e GrenadinesVenezuelaIsole Vergini BritannicheIsole Vergini Ame" +
-	"ricaneVietnamVanuatuWallis e FutunaSamoaKosovoYemenMayotteSudafricaZambiaZimbabw" +
-	"eRegione non valida o sconosciutaMondoAfricaNord AmericaAmerica del SudOceaniaAf" +
-	"rica occidentaleAmerica CentraleAfrica orientaleAfrica del NordAfrica centraleAf" +
-	"rica del SudAmericheAmerica del NordCaraibiAsia orientaleAsia del SudSud-est asi" +
-	"aticoEuropa meridionaleAustralasiaMelanesiaRegione MicronesianaPolinesiaAsiaAsia" +
-	" centraleAsia occidentaleEuropaEuropa orientaleEuropa settentrionaleEuropa occid" +
-	"entaleAmerica Latina"
+	"e McDonaldHondurasCroaziaHaitiUngheriaIsole CanarieIndonesiaIrlandaIsraeleIsola " +
+	"di ManIndiaTerritorio Britannico dell’Oceano IndianoIraqIranIslandaItaliaJerseyG" +
+	"iamaicaGiordaniaGiapponeKenyaKirghizistanCambogiaKiribatiComoreSaint Kitts e Nev" +
+	"isCorea del NordCorea del SudKuwaitIsole CaymanKazakistanLaosLibanoSaint LuciaLi" +
+	"echtensteinSri LankaLiberiaLesothoLituaniaLussemburgoLettoniaLibiaMaroccoMonacoM" +
+	"oldaviaMontenegroSaint MartinMadagascarIsole MarshallRepubblica di MacedoniaMali" +
+	"Myanmar (Birmania)MongoliaRAS di MacaoIsole Marianne SettentrionaliMartinicaMaur" +
+	"itaniaMontserratMaltaMauritiusMaldiveMalawiMessicoMalesiaMozambicoNamibiaNuova C" +
+	"aledoniaNigerIsola NorfolkNigeriaNicaraguaPaesi BassiNorvegiaNepalNauruNiueNuova" +
+	" ZelandaOmanPanamáPerùPolinesia FrancesePapua Nuova GuineaFilippinePakistanPolon" +
+	"iaSaint Pierre e MiquelonIsole PitcairnPortoricoTerritori palestinesiPortogalloP" +
+	"alauParaguayQatarOceania lontanaRéunionRomaniaSerbiaFederazione RussaRuandaArabi" +
+	"a SauditaIsole SolomonSeychellesSudanSveziaSingaporeSant’ElenaSloveniaSvalbard e" +
+	" Jan MayenSlovacchiaSierra LeoneSan MarinoSenegalSomaliaSurinameSudan del SudSão" +
+	" Tomé e PríncipeEl SalvadorSint MaartenSiriaSwazilandTristan da CunhaIsole Turks" +
+	" e CaicosCiadTerritori australi francesiTogoTailandiaTagikistanTokelauTimor EstT" +
+	"urkmenistanTunisiaTongaTurchiaTrinidad e TobagoTuvaluTaiwanTanzaniaUcrainaUganda" +
+	"Isole minori lontane dagli USAStati UnitiUruguayUzbekistanCittà del VaticanoSain" +
+	"t Vincent e GrenadinesVenezuelaIsole Vergini BritannicheIsole Vergini AmericaneV" +
+	"ietnamVanuatuWallis e FutunaSamoaKosovoYemenMayotteSudafricaZambiaZimbabweRegion" +
+	"e non valida o sconosciutaMondoAfricaNord AmericaAmerica del SudOceaniaAfrica oc" +
+	"cidentaleAmerica CentraleAfrica orientaleAfrica del NordAfrica centraleAfrica de" +
+	"l SudAmericheAmerica del NordCaraibiAsia orientaleAsia del SudSud-est asiaticoEu" +
+	"ropa meridionaleAustralasiaMelanesiaRegione MicronesianaPolinesiaAsiaAsia centra" +
+	"leAsia occidentaleEuropaEuropa orientaleEuropa settentrionaleEuropa occidentaleA" +
+	"merica Latina"
 
 var itRegionIdx = []uint16{ // 291 entries
 	0x0, 0x13, 0x1a, 0x2d, 0x38, 0x49, 0x51, 0x58, 0x5f, 0x6f, 0x75, 0x7e,
@@ -28725,23 +27600,23 @@
 	0x263, 0x26f, 0x275, 0x27e, 0x286, 0x29b, 0x2a2, 0x2b1, 0x2b8, 0x2bf, 0x2c5, 0x2d7,
 	0x2de, 0x2e4, 0x2eb, 0x2f9, 0x302, 0x306, 0x314, 0x31e, 0x329, 0x330, 0x335, 0x340,
 	0x347, 0x34e, 0x35d, 0x365, 0x36a, 0x374, 0x37f, 0x385, 0x38b, 0x394, 0x3a6, 0x3ac,
-	0x3d8, 0x3e1, 0x3e5, 0x3f2, 0x3f8, 0x408, 0x425, 0x42d, 0x434, 0x439, 0x441, 0x44e,
-	0x457, 0x45e, 0x465, 0x471, 0x476, 0x4a1, 0x4a5, 0x4a9, 0x4b0, 0x4b6, 0x4bc, 0x4c4,
-	0x4cd, 0x4d5, 0x4da, 0x4e6, 0x4ee, 0x4f6, 0x4fc, 0x50f, 0x51d, 0x52a, 0x530, 0x53c,
-	0x546, 0x54a, 0x550, 0x55b, 0x568, 0x571, 0x578, 0x57f, 0x587, 0x592, 0x59a, 0x59f,
-	0x5a6, 0x5ac, 0x5b4, 0x5be, 0x5ca, 0x5d4, 0x5e2, 0x5f9, 0x5fd, 0x60f, 0x617, 0x623,
-	0x640, 0x649, 0x653, 0x65d, 0x662, 0x66b, 0x672, 0x678, 0x67f, 0x686, 0x68f, 0x696,
-	0x6a5, 0x6aa, 0x6b7, 0x6be, 0x6c7, 0x6d2, 0x6da, 0x6df, 0x6e4, 0x6e8, 0x6f5, 0x6f9,
-	0x700, 0x705, 0x717, 0x729, 0x732, 0x73a, 0x741, 0x758, 0x766, 0x76f, 0x784, 0x78e,
-	0x793, 0x79b, 0x7a0, 0x7af, 0x7b7, 0x7be, 0x7c4, 0x7d5, 0x7db, 0x7e9, 0x7f6, 0x800,
-	0x805, 0x80b, 0x814, 0x820, 0x828, 0x83c, 0x846, 0x852, 0x85c, 0x863, 0x86a, 0x872,
-	0x87f, 0x895, 0x8a0, 0x8ac, 0x8b1, 0x8ba, 0x8ca, 0x8de, 0x8e2, 0x8fd, 0x901, 0x90a,
-	0x914, 0x91b, 0x924, 0x930, 0x937, 0x93c, 0x943, 0x954, 0x95a, 0x960, 0x968, 0x96f,
-	0x975, 0x993, 0x99e, 0x9a5, 0x9af, 0x9c2, 0x9dc, 0x9e5, 0x9fe, 0xa15, 0xa1c, 0xa23,
-	0xa32, 0xa37, 0xa3d, 0xa42, 0xa49, 0xa52, 0xa58, 0xa60, 0xa80, 0xa85, 0xa8b, 0xa97,
-	0xaa6, 0xaad, 0xabf, 0xacf, 0xadf, 0xaee, 0xafd, 0xb0b, 0xb13, 0xb23, 0xb2a, 0xb38,
-	0xb44, 0xb54, 0xb66, 0xb71, 0xb7a, 0xb8e, 0xb97, 0xb9b, 0xba8, 0xbb8, 0xbbe, 0xbce,
-	0xbe3, 0xbf5, 0xc03,
+	0x3d8, 0x3e1, 0x3e5, 0x3f2, 0x3f8, 0x408, 0x41e, 0x426, 0x42d, 0x432, 0x43a, 0x447,
+	0x450, 0x457, 0x45e, 0x46a, 0x46f, 0x49a, 0x49e, 0x4a2, 0x4a9, 0x4af, 0x4b5, 0x4bd,
+	0x4c6, 0x4ce, 0x4d3, 0x4df, 0x4e7, 0x4ef, 0x4f5, 0x508, 0x516, 0x523, 0x529, 0x535,
+	0x53f, 0x543, 0x549, 0x554, 0x561, 0x56a, 0x571, 0x578, 0x580, 0x58b, 0x593, 0x598,
+	0x59f, 0x5a5, 0x5ad, 0x5b7, 0x5c3, 0x5cd, 0x5db, 0x5f2, 0x5f6, 0x608, 0x610, 0x61c,
+	0x639, 0x642, 0x64c, 0x656, 0x65b, 0x664, 0x66b, 0x671, 0x678, 0x67f, 0x688, 0x68f,
+	0x69e, 0x6a3, 0x6b0, 0x6b7, 0x6c0, 0x6cb, 0x6d3, 0x6d8, 0x6dd, 0x6e1, 0x6ee, 0x6f2,
+	0x6f9, 0x6fe, 0x710, 0x722, 0x72b, 0x733, 0x73a, 0x751, 0x75f, 0x768, 0x77d, 0x787,
+	0x78c, 0x794, 0x799, 0x7a8, 0x7b0, 0x7b7, 0x7bd, 0x7ce, 0x7d4, 0x7e2, 0x7ef, 0x7f9,
+	0x7fe, 0x804, 0x80d, 0x819, 0x821, 0x835, 0x83f, 0x84b, 0x855, 0x85c, 0x863, 0x86b,
+	0x878, 0x88e, 0x899, 0x8a5, 0x8aa, 0x8b3, 0x8c3, 0x8d7, 0x8db, 0x8f6, 0x8fa, 0x903,
+	0x90d, 0x914, 0x91d, 0x929, 0x930, 0x935, 0x93c, 0x94d, 0x953, 0x959, 0x961, 0x968,
+	0x96e, 0x98c, 0x997, 0x99e, 0x9a8, 0x9bb, 0x9d5, 0x9de, 0x9f7, 0xa0e, 0xa15, 0xa1c,
+	0xa2b, 0xa30, 0xa36, 0xa3b, 0xa42, 0xa4b, 0xa51, 0xa59, 0xa79, 0xa7e, 0xa84, 0xa90,
+	0xa9f, 0xaa6, 0xab8, 0xac8, 0xad8, 0xae7, 0xaf6, 0xb04, 0xb0c, 0xb1c, 0xb23, 0xb31,
+	0xb3d, 0xb4d, 0xb5f, 0xb6a, 0xb73, 0xb87, 0xb90, 0xb94, 0xba1, 0xbb1, 0xbb7, 0xbc7,
+	0xbdc, 0xbee, 0xbfc,
 }
 
 const jaRegionStr = "" +
@@ -28797,74 +27672,74 @@
 
 const kaRegionStr = "" +
 	"ამაღლების კუნძულიანდორაარაბთა გაერთიანებული საამიროებიავღანეთიანტიგუა და ბარბუდა" +
-	"ანგვილაალბანეთისომხეთინიდერლანდების ანტილებიანგოლაანტარქტიკაარგენტინაამერიკული ს" +
-	"ამოაავსტრიაავსტრალიაარუბაალანდის კუნძულებიაზერბაიჯანიბოსნია და ჰერცეგოვინაბარბად" +
-	"ოსიბანგლადეშიბელგიაბურკინა-ფასობულგარეთიბაჰრეინიბურუნდიბენინისენ-ბართლემიბერმუდი" +
-	"ბრუნეიბოლივიაკარიბის ნიდერლანდებიბრაზილიაბაჰამის კუნძულებიბუტანიბუვეს კუნძულიბოტ" +
-	"სვანაბელორუსიაბელიზიკანადაქოქოსის (კილინგის) კუნძულებიკონგო - კინშასაცენტრალური " +
-	"აფრიკის რესპუბლიკაკონგო - ბრაზავილიშვეიცარიაკოტ-დივუარიკუკის კუნძულებიჩილეკამერუ" +
-	"ნიჩინეთიკოლუმბიაკლიპერტონის კუნძულიკოსტა-რიკაკუბაკაბო-ვერდეკიურასაოშობის კუნძული" +
-	"კვიპროსიჩეხეთის რესპუბლიკაგერმანიადიეგო-გარსიაჯიბუტიდანიადომინიკადომინიკანის რეს" +
-	"პუბლიკაალჟირისეუტა და მელილაეკვადორიესტონეთიეგვიპტედასავლეთი საჰარაერიტრეაესპანე" +
-	"თიეთიოპიაევროკავშირიფინეთიფიჯიფოლკლენდის კუნძულებიმიკრონეზიაფარერის კუნძულებისაფ" +
-	"რანგეთიგაბონიდიდი ბრიტანეთიგრენადასაქართველოფრანგული გვიანაგერნსიგანაგიბრალტარიგ" +
-	"რენლანდიაგამბიაგვინეაგვადელუპეეკვატორული გვინეასაბერძნეთისამხრეთი გეორგია და სამ" +
-	"ხრეთ სენდვიჩის კუნძულებიგვატემალაგუამიგვინეა-ბისაუგაიანაჰონკონგის სპეციალური ადმ" +
-	"ინისტრაციული რეგიონი ჩინეთიჰერდი და მაკდონალდის კუნძულებიჰონდურასიხორვატიაჰაიტიუ" +
-	"ნგრეთიკანარის კუნძულებიინდონეზიაირლანდიაისრაელიმენის კუნძულიინდოეთიბრიტანული ტერ" +
-	"იტორია ინდოეთის ოკეანეშიერაყიირანიისლანდიაიტალიაჯერსიიამაიკაიორდანიაიაპონიაკენია" +
-	"ყირგიზეთიკამბოჯაკირიბატიკომორის კუნძულებისენტ-კიტსი და ნევისიჩრდილოეთი კორეასამხ" +
-	"რეთი კორეაქუვეითიკაიმანის კუნძულებიყაზახეთილაოსილიბანისენტ-ლუსიალიხტენშტეინიშრი-" +
-	"ლანკალიბერიალესოთოლიტვალუქსემბურგილატვიალიბიამაროკომონაკომოლდოვამონტენეგროსენ-მა" +
-	"რტენიმადაგასკარიმარშალის კუნძულებიმაკედონიამალიმიანმარი (ბირმა)მონღოლეთიმაკაოს ს" +
-	"პეციალური ადმინისტრაციული რეგიონი ჩინეთიჩრდილოეთ მარიანას კუნძულებიმარტინიკამავრ" +
-	"იტანიამონსერატიმალტამავრიკიმალდივის კუნძულებიმალავიმექსიკამალაიზიამოზამბიკინამიბ" +
-	"იაახალი კალედონიანიგერინორფოლკის კუნძულინიგერიანიკარაგუანიდერლანდებინორვეგიანეპა" +
-	"ლინაურუნიუეახალი ზელანდიაომანიპანამაპერუფრანგული პოლინეზიაპაპუა-ახალი გვინეაფილი" +
-	"პინებიპაკისტანიპოლონეთისენ-პიერი და მიკელონიპიტკერნის კუნძულებიპუერტო-რიკოპალესტ" +
-	"ინის ტერიტორიებიპორტუგალიაპალაუპარაგვაიკატარიშორეული ოკეანეთირეუნიონირუმინეთისერ" +
-	"ბეთირუსეთირუანდასაუდის არაბეთისოლომონის კუნძულებისეიშელის კუნძულებისუდანიშვედეთი" +
-	"სინგაპურიწმინდა ელენეს კუნძულისლოვენიაშპიცბერგენი და იან-მაიენისლოვაკეთისიერა-ლე" +
-	"ონესან-მარინოსენეგალისომალისურინამისამხრეთი სუდანისან-ტომე და პრინსიპისალვადორის" +
-	"ინტ-მარტენისირიასვაზილენდიტრისტან-და-კუნიატერკსის და კაიკოსის კუნძულებიჩადიფრანგ" +
-	"ული სამხრეთის ტერიტორიებიტოგოტაილანდიტაჯიკეთიტოკელაუტიმორ-ლეშტითურქმენეთიტუნისიტ" +
-	"ონგათურქეთიტრინიდადი და ტობაგოტუვალუტაივანიტანზანიაუკრაინაუგანდააშშ-ის შორეული კ" +
-	"უნძულებიამერიკის შეერთებული შტატებიურუგვაიუზბეკეთიქალაქი ვატიკანისენტ-ვინსენტი დ" +
-	"ა გრენადინებივენესუელაბრიტანეთის ვირჯინიის კუნძულებიაშშ-ის ვირჯინიის კუნძულებივი" +
-	"ეტნამივანუატუუოლისი და ფუტუნასამოაკოსოვოიემენიმაიოტასამხრეთ აფრიკაზამბიაზიმბაბვე" +
-	"უცნობი რეგიონიმსოფლიოაფრიკაჩრდილოეთი ამერიკასამხრეთი ამერიკაოკეანეთიდასავლეთი აფ" +
-	"რიკაცენტრალური ამერიკააღმოსავლეთი აფრიკაჩრდილოეთი აფრიკაშუა აფრიკასამხრეთი აფრიკ" +
-	"აამერიკებიამერიკის ჩრდილოეთიკარიბის ზღვააღმოსავლეთი აზიასამხრეთი აზიასამხრეთ-აღმ" +
-	"ოსავლეთი აზიასამხრეთი ევროპაავსტრალაზიამელანეზიამიკრონეზიის რეგიონიპოლინეზიააზია" +
-	"ცენტრალური აზიადასავლეთი აზიაევროპააღმოსავლეთი ევროპაჩრდილოეთი ევროპადასავლეთი ე" +
-	"ვროპალათინური ამერიკა"
+	"ანგილიაალბანეთისომხეთინიდერლანდების ანტილებიანგოლაანტარქტიკაარგენტინაამერიკის სა" +
+	"მოაავსტრიაავსტრალიაარუბაალანდის კუნძულებიაზერბაიჯანიბოსნია და ჰერცეგოვინაბარბადო" +
+	"სიბანგლადეშიბელგიაბურკინა-ფასობულგარეთიბაჰრეინიბურუნდიბენინისენ-ბართელმიბერმუდიბ" +
+	"რუნეიბოლივიაკარიბის ნიდერლანდებიბრაზილიაბაჰამის კუნძულებიბჰუტანიბუვებოტსვანაბელა" +
+	"რუსიბელიზიკანადაქოქოსის კუნძულებიკონგო - კინშასაცენტრალური აფრიკის რესპუბლიკაკონ" +
+	"გო - ბრაზავილიშვეიცარიაკოტ-დივუარიკუკის კუნძულებიჩილეკამერუნიჩინეთიკოლუმბიაკლიპე" +
+	"რტონის კუნძულიკოსტა-რიკაკუბაკაბო-ვერდეკიურასაოშობის კუნძულიკვიპროსიჩეხეთის რესპუ" +
+	"ბლიკაგერმანიადიეგო-გარსიაჯიბუტიდანიადომინიკადომინიკელთა რესპუბლიკაალჟირისეუტა და" +
+	" მელილაეკვადორიესტონეთიეგვიპტედასავლეთი საჰარაერიტრეაესპანეთიეთიოპიაევროკავშირიფ" +
+	"ინეთიფიჯიფოლკლენდის კუნძულებიმიკრონეზიაფარერის კუნძულებისაფრანგეთიგაბონიდიდი ბრი" +
+	"ტანეთიგრენადასაქართველოსაფრანგეთის გვიანაგერნსიგანაგიბრალტარიგრენლანდიაგამბიაგვი" +
+	"ნეაგვადელუპაეკვატორული გვინეასაბერძნეთისამხრეთი გეორგია და სამხრეთ სენდვიჩის კუნ" +
+	"ძულებიგვატემალაგუამიგვინეა-ბისაუგაიანაჰონკონგის სპეციალური ადმინისტრაციული რეგიო" +
+	"ნი ჩინეთიჰერდი და მაკდონალდის კუნძულებიჰონდურასიხორვატიაჰაიტიუნგრეთიკანარის კუნძ" +
+	"ულებიინდონეზიაირლანდიაისრაელიმენის კუნძულიინდოეთიბრიტ. ტერიტ. ინდ. ოკეანეშიერაყი" +
+	"ირანიისლანდიაიტალიაჯერსიიამაიკაიორდანიაიაპონიაკენიაყირგიზეთიკამბოჯაკირიბატიკომორ" +
+	"ის კუნძულებისენტ-კიტსი და ნევისიჩრდილოეთი კორეასამხრეთი კორეაქუვეითიკაიმანის კუნ" +
+	"ძულებიყაზახეთილაოსილიბანისენტ-ლუსიალიხტენშტაინიშრი-ლანკალიბერიალესოთოლიტვალუქსემ" +
+	"ბურგილატვიალიბიამაროკომონაკომოლდოვამონტენეგროსენ-მარტენიმადაგასკარიმარშალის კუნძ" +
+	"ულებიმაკედონიამალიმიანმარი (ბირმა)მონღოლეთიმაკაოს სპეციალური ადმინისტრაციული რეგ" +
+	"იონი ჩინეთიჩრდილოეთ მარიანას კუნძულებიმარტინიკამავრიტანიამონსერატიმალტამავრიკიმა" +
+	"ლდივის რესპუბლიკამალავიმექსიკამალაიზიამოზამბიკინამიბიაახალი კალედონიანიგერინორფო" +
+	"ლკის კუნძულინიგერიანიკარაგუანიდერლანდებინორვეგიანეპალინაურუნიუეახალი ზელანდიაომა" +
+	"ნიპანამაპერუსაფრანგეთის პოლინეზიაპაპუა-ახალი გვინეაფილიპინებიპაკისტანიპოლონეთისე" +
+	"ნ-პიერი და მიკელონიპიტკერნის კუნძულებიპუერტო-რიკოპალესტინის ტერიტორიებიპორტუგალი" +
+	"აპალაუპარაგვაიკატარიშორეული ოკეანეთირეუნიონირუმინეთისერბეთირუსეთირუანდასაუდის არ" +
+	"აბეთისოლომონის კუნძულებისეიშელის კუნძულებისუდანიშვედეთისინგაპურიწმინდა ელენეს კუ" +
+	"ნძულისლოვენიაშპიცბერგენი და იან-მაიენისლოვაკეთისიერა-ლეონესან-მარინოსენეგალისომა" +
+	"ლისურინამისამხრეთი სუდანისან-ტომე და პრინსიპისალვადორისინტ-მარტენისირიასვაზილენდ" +
+	"იტრისტან-და-კუნიატერქსისა და კაიკოსის კუნძულებიჩადიფრანგული სამხრეთის ტერიტორიებ" +
+	"იტოგოტაილანდიტაჯიკეთიტოკელაუაღმოსავლეთი ტიმორითურქმენეთიტუნისიტონგათურქეთიტრინიდ" +
+	"ადი და ტობაგოტუვალუტაივანიტანზანიაუკრაინაუგანდააშშ-ის შორეული კუნძულებიამერიკის " +
+	"შეერთებული შტატებიურუგვაიუზბეკეთიქალაქი ვატიკანისენტ-ვინსენტი და გრენადინებივენე" +
+	"სუელაბრიტანეთის ვირჯინის კუნძულებიაშშ-ის ვირჯინის კუნძულებივიეტნამივანუატუუოლისი" +
+	" და ფუტუნასამოაკოსოვოიემენიმაიოტასამხრეთ აფრიკის რესპუბლიკაზამბიაზიმბაბვეუცნობი " +
+	"რეგიონიმსოფლიოაფრიკაჩრდილოეთი ამერიკასამხრეთი ამერიკაოკეანეთიდასავლეთი აფრიკაცენ" +
+	"ტრალური ამერიკააღმოსავლეთი აფრიკაჩრდილოეთი აფრიკაშუა აფრიკასამხრეთი აფრიკაამერიკ" +
+	"ებიამერიკის ჩრდილოეთიკარიბის ზღვააღმოსავლეთი აზიასამხრეთი აზიასამხრეთ-აღმოსავლეთ" +
+	"ი აზიასამხრეთი ევროპაავსტრალაზიამელანეზიამიკრონეზიის რეგიონიპოლინეზიააზიაცენტრალ" +
+	"ური აზიადასავლეთი აზიაევროპააღმოსავლეთი ევროპაჩრდილოეთი ევროპადასავლეთი ევროპალა" +
+	"თინური ამერიკა"
 
 var kaRegionIdx = []uint16{ // 291 entries
 	0x0, 0x31, 0x43, 0x9c, 0xb4, 0xe6, 0xfb, 0x113, 0x128, 0x168, 0x17a, 0x198,
-	0x1b3, 0x1de, 0x1f3, 0x20e, 0x21d, 0x24e, 0x26f, 0x2aa, 0x2c5, 0x2e3, 0x2f5, 0x317,
-	0x332, 0x34a, 0x35f, 0x371, 0x393, 0x3a8, 0x3ba, 0x3cf, 0x409, 0x421, 0x452, 0x464,
-	0x489, 0x4a1, 0x4bc, 0x4ce, 0x4e0, 0x52c, 0x553, 0x5a6, 0x5d3, 0x5ee, 0x60d, 0x638,
-	0x644, 0x65c, 0x66e, 0x686, 0x6bd, 0x6d9, 0x6e5, 0x701, 0x719, 0x73e, 0x756, 0x78a,
-	0x7a2, 0x7c4, 0x7d6, 0x7e5, 0x7fd, 0x83d, 0x84f, 0x878, 0x890, 0x8a8, 0x8bd, 0x8eb,
-	0x900, 0x918, 0x92d, 0x94e, 0x960, 0x96c, 0x9a6, 0x9c4, 0x9f5, 0xa13, 0xa25, 0xa4d,
-	0xa62, 0xa80, 0xaab, 0xabd, 0xac9, 0xae7, 0xb05, 0xb17, 0xb29, 0xb44, 0xb75, 0xb93,
-	0xc16, 0xc31, 0xc40, 0xc62, 0xc74, 0xd05, 0xd59, 0xd74, 0xd8c, 0xd9b, 0xdb0, 0xde1,
-	0xdfc, 0xe14, 0xe29, 0xe4e, 0xe63, 0xecc, 0xedb, 0xeea, 0xf02, 0xf14, 0xf23, 0xf38,
-	0xf50, 0xf65, 0xf74, 0xf8f, 0xfa4, 0xfbc, 0xfed, 0x1023, 0x104e, 0x1076, 0x108b, 0x10bf,
-	0x10d7, 0x10e6, 0x10f8, 0x1114, 0x1138, 0x1151, 0x1166, 0x1178, 0x1187, 0x11a8, 0x11ba, 0x11c9,
-	0x11db, 0x11ed, 0x1202, 0x1220, 0x123f, 0x1260, 0x1294, 0x12af, 0x12bb, 0x12e5, 0x1300, 0x1388,
-	0x13d5, 0x13f0, 0x140e, 0x1429, 0x1438, 0x144d, 0x1481, 0x1493, 0x14a8, 0x14c0, 0x14db, 0x14f0,
-	0x151b, 0x152d, 0x155e, 0x1573, 0x158e, 0x15b2, 0x15ca, 0x15dc, 0x15eb, 0x15f7, 0x161f, 0x162e,
-	0x1640, 0x164c, 0x1680, 0x16b2, 0x16d0, 0x16eb, 0x1703, 0x173c, 0x1773, 0x1792, 0x17d2, 0x17f0,
-	0x17ff, 0x1817, 0x1829, 0x1857, 0x186f, 0x1887, 0x189c, 0x18ae, 0x18c0, 0x18e8, 0x191f, 0x1953,
-	0x1965, 0x197a, 0x1995, 0x19d0, 0x19e8, 0x1a2d, 0x1a48, 0x1a67, 0x1a83, 0x1a9b, 0x1aad, 0x1ac5,
-	0x1af0, 0x1b26, 0x1b41, 0x1b63, 0x1b72, 0x1b90, 0x1bbc, 0x1c0d, 0x1c19, 0x1c6f, 0x1c7b, 0x1c93,
-	0x1cab, 0x1cc0, 0x1cdf, 0x1cfd, 0x1d0f, 0x1d1e, 0x1d33, 0x1d68, 0x1d7a, 0x1d8f, 0x1da7, 0x1dbc,
-	0x1dce, 0x1e10, 0x1e5d, 0x1e72, 0x1e8a, 0x1eb5, 0x1f03, 0x1f1e, 0x1f74, 0x1fbc, 0x1fd4, 0x1fe9,
-	0x2015, 0x2024, 0x2036, 0x2048, 0x205a, 0x2082, 0x2094, 0x20ac, 0x20d4, 0x20e9, 0x20fb, 0x212c,
-	0x215a, 0x2172, 0x21a0, 0x21d4, 0x2208, 0x2236, 0x2252, 0x227d, 0x2298, 0x22cc, 0x22ee, 0x231c,
-	0x2341, 0x2385, 0x23b0, 0x23d1, 0x23ec, 0x2423, 0x243e, 0x244a, 0x2475, 0x249d, 0x24af, 0x24e3,
-	0x2511, 0x253f, 0x256d,
+	0x1b3, 0x1db, 0x1f0, 0x20b, 0x21a, 0x24b, 0x26c, 0x2a7, 0x2c2, 0x2e0, 0x2f2, 0x314,
+	0x32f, 0x347, 0x35c, 0x36e, 0x390, 0x3a5, 0x3b7, 0x3cc, 0x406, 0x41e, 0x44f, 0x464,
+	0x470, 0x488, 0x4a0, 0x4b2, 0x4c4, 0x4f5, 0x51c, 0x56f, 0x59c, 0x5b7, 0x5d6, 0x601,
+	0x60d, 0x625, 0x637, 0x64f, 0x686, 0x6a2, 0x6ae, 0x6ca, 0x6e2, 0x707, 0x71f, 0x753,
+	0x76b, 0x78d, 0x79f, 0x7ae, 0x7c6, 0x806, 0x818, 0x841, 0x859, 0x871, 0x886, 0x8b4,
+	0x8c9, 0x8e1, 0x8f6, 0x917, 0x929, 0x935, 0x96f, 0x98d, 0x9be, 0x9dc, 0x9ee, 0xa16,
+	0xa2b, 0xa49, 0xa7d, 0xa8f, 0xa9b, 0xab9, 0xad7, 0xae9, 0xafb, 0xb16, 0xb47, 0xb65,
+	0xbe8, 0xc03, 0xc12, 0xc34, 0xc46, 0xcd7, 0xd2b, 0xd46, 0xd5e, 0xd6d, 0xd82, 0xdb3,
+	0xdce, 0xde6, 0xdfb, 0xe20, 0xe35, 0xe77, 0xe86, 0xe95, 0xead, 0xebf, 0xece, 0xee3,
+	0xefb, 0xf10, 0xf1f, 0xf3a, 0xf4f, 0xf67, 0xf98, 0xfce, 0xff9, 0x1021, 0x1036, 0x106a,
+	0x1082, 0x1091, 0x10a3, 0x10bf, 0x10e3, 0x10fc, 0x1111, 0x1123, 0x1132, 0x1153, 0x1165, 0x1174,
+	0x1186, 0x1198, 0x11ad, 0x11cb, 0x11ea, 0x120b, 0x123f, 0x125a, 0x1266, 0x1290, 0x12ab, 0x1333,
+	0x1380, 0x139b, 0x13b9, 0x13d4, 0x13e3, 0x13f8, 0x142f, 0x1441, 0x1456, 0x146e, 0x1489, 0x149e,
+	0x14c9, 0x14db, 0x150c, 0x1521, 0x153c, 0x1560, 0x1578, 0x158a, 0x1599, 0x15a5, 0x15cd, 0x15dc,
+	0x15ee, 0x15fa, 0x1637, 0x1669, 0x1687, 0x16a2, 0x16ba, 0x16f3, 0x172a, 0x1749, 0x1789, 0x17a7,
+	0x17b6, 0x17ce, 0x17e0, 0x180e, 0x1826, 0x183e, 0x1853, 0x1865, 0x1877, 0x189f, 0x18d6, 0x190a,
+	0x191c, 0x1931, 0x194c, 0x1987, 0x199f, 0x19e4, 0x19ff, 0x1a1e, 0x1a3a, 0x1a52, 0x1a64, 0x1a7c,
+	0x1aa7, 0x1add, 0x1af8, 0x1b1a, 0x1b29, 0x1b47, 0x1b73, 0x1bc7, 0x1bd3, 0x1c29, 0x1c35, 0x1c4d,
+	0x1c65, 0x1c7a, 0x1cae, 0x1ccc, 0x1cde, 0x1ced, 0x1d02, 0x1d37, 0x1d49, 0x1d5e, 0x1d76, 0x1d8b,
+	0x1d9d, 0x1ddf, 0x1e2c, 0x1e41, 0x1e59, 0x1e84, 0x1ed2, 0x1eed, 0x1f40, 0x1f85, 0x1f9d, 0x1fb2,
+	0x1fde, 0x1fed, 0x1fff, 0x2011, 0x2023, 0x206d, 0x207f, 0x2097, 0x20bf, 0x20d4, 0x20e6, 0x2117,
+	0x2145, 0x215d, 0x218b, 0x21bf, 0x21f3, 0x2221, 0x223d, 0x2268, 0x2283, 0x22b7, 0x22d9, 0x2307,
+	0x232c, 0x2370, 0x239b, 0x23bc, 0x23d7, 0x240e, 0x2429, 0x2435, 0x2460, 0x2488, 0x249a, 0x24ce,
+	0x24fc, 0x252a, 0x2558,
 }
 
 const kkRegionStr = "" +
@@ -29076,50 +27951,50 @@
 }
 
 const koRegionStr = "" +
-	"어센션 섬안도라아랍에미리트 연합아프가니스탄앤티가 바부다안길라알바니아아르메니아네덜란드령 안틸레스앙골라남극 대륙아르헨티나아메리칸 사모아오스트리아오스" +
-	"트레일리아아루바올란드 제도아제르바이잔보스니아 헤르체고비나바베이도스방글라데시벨기에부르키나파소불가리아바레인부룬디베냉생 바르텔르미버뮤다브루나이볼리비아" +
-	"네덜란드령 카리브브라질바하마부탄부베보츠와나벨라루스벨리즈캐나다코코스제도콩고-킨샤사중앙 아프리카 공화국콩고스위스코트디부아르쿡제도칠레카메룬중국콜롬비아" +
-	"클립퍼튼 섬코스타리카쿠바까뽀베르데퀴라소크리스마스섬사이프러스체코독일디에고 가르시아지부티덴마크도미니카도미니카 공화국알제리세우타 및 멜리야에콰도르에스" +
-	"토니아이집트서사하라에리트리아스페인이디오피아유럽 연합핀란드피지포클랜드 제도미크로네시아페로제도프랑스가봉영국그레나다조지아프랑스령 기아나건지가나지브롤터" +
-	"그린란드감비아기니과들루프적도 기니그리스사우스조지아 사우스샌드위치 제도과테말라괌기네비쏘가이아나홍콩, 중국 특별행정구허드섬-맥도널드제도온두라스크로아" +
-	"티아아이티헝가리카나리아 제도인도네시아아일랜드이스라엘맨 섬인도영국령인도양식민지이라크이란아이슬란드이탈리아저지자메이카요르단일본케냐키르기스스탄캄보디아키" +
-	"리바시코모로스세인트 키츠 네비스조선 민주주의 인민 공화국대한민국쿠웨이트케이맨제도카자흐스탄라오스레바논세인트루시아리히텐슈타인스리랑카라이베리아레소토리" +
-	"투아니아룩셈부르크라트비아리비아모로코모나코몰도바몬테네그로생 마르탱마다가스카르마샬 군도마케도니아말리미얀마몽골마카오, 중국 특별행정구북마리아나제도말티" +
-	"니크모리타니몬트세라트몰타모리셔스몰디브말라위멕시코말레이시아모잠비크나미비아뉴 칼레도니아니제르노퍽섬나이지리아니카라과네덜란드노르웨이네팔나우루니우에뉴질랜" +
-	"드오만파나마페루프랑스령 폴리네시아파푸아뉴기니필리핀파키스탄폴란드생피에르 미클롱핏케언 섬푸에르토리코팔레스타인 지구포르투갈팔라우파라과이카타르오세아니아" +
-	" 외곽리유니온루마니아세르비아러시아르완다사우디아라비아솔로몬 제도쉐이쉘수단스웨덴싱가포르세인트헬레나슬로베니아스발바르제도-얀마웬섬슬로바키아시에라리온산마" +
-	"리노세네갈소말리아수리남남수단상투메 프린시페엘살바도르신트마르턴시리아스와질랜드트리스탄다쿠나터크스케이커스제도차드프랑스 남부 지방토고태국타지키스탄토켈라" +
-	"우동티모르투르크메니스탄튀니지통가터키트리니다드 토바고투발루대만탄자니아우크라이나우간다미국령 해외 제도미국우루과이우즈베키스탄바티칸세인트빈센트그레나딘베" +
-	"네수엘라영국령 버진 아일랜드미국령 버진 아일랜드베트남바누아투왈리스-푸투나 제도사모아코소보예멘마요티남아프리카잠비아짐바브웨알려지지 않은 지역세계아프" +
+	"어센션 섬안도라아랍에미리트 연합아프가니스탄앤티가 바부다앵귈라알바니아아르메니아네덜란드령 안틸레스앙골라남극 대륙아르헨티나아메리칸 사모아오스트리아오스" +
+	"트레일리아아루바올란드 제도아제르바이잔보스니아 헤르체고비나바베이도스방글라데시벨기에부르키나파소불가리아바레인부룬디베냉생바르텔레미버뮤다브루나이볼리비아네" +
+	"덜란드령 카리브브라질바하마부탄부베섬보츠와나벨라루스벨리즈캐나다코코스제도콩고-킨샤사중앙 아프리카 공화국콩고스위스코트디부아르쿡제도칠레카메룬중국콜롬비아" +
+	"클립퍼튼 섬코스타리카쿠바카보베르데퀴라소크리스마스섬키프로스체코독일디에고 가르시아지부티덴마크도미니카도미니카 공화국알제리세우타 및 멜리야에콰도르에스토" +
+	"니아이집트서사하라에리트리아스페인이디오피아유럽 연합핀란드피지포클랜드 제도미크로네시아페로 제도프랑스가봉영국그레나다조지아프랑스령 기아나건지가나지브롤터" +
+	"그린란드감비아기니과들루프적도 기니그리스사우스조지아 사우스샌드위치 제도과테말라괌기니비사우가이아나홍콩, 중국 특별행정구허드 맥도널드 제도온두라스크로" +
+	"아티아아이티헝가리카나리아 제도인도네시아아일랜드이스라엘맨 섬인도영국령 인도양 식민지이라크이란아이슬란드이탈리아저지자메이카요르단일본케냐키르기스스탄캄보" +
+	"디아키리바시코모로세인트키츠 네비스조선민주주의인민공화국대한민국쿠웨이트케이맨제도카자흐스탄라오스레바논세인트루시아리히텐슈타인스리랑카라이베리아레소토리투아" +
+	"니아룩셈부르크라트비아리비아모로코모나코몰도바몬테네그로생 마르탱마다가스카르마샬 군도마케도니아말리미얀마몽골마카오, 중국 특별행정구북마리아나제도마르티니" +
+	"크모리타니몬트세라트몰타모리셔스몰디브말라위멕시코말레이시아모잠비크나미비아뉴칼레도니아니제르노퍽섬나이지리아니카라과네덜란드노르웨이네팔나우루니우에뉴질랜드오" +
+	"만파나마페루프랑스령 폴리네시아파푸아뉴기니필리핀파키스탄폴란드생피에르 미클롱핏케언 섬푸에르토리코팔레스타인 지구포르투갈팔라우파라과이카타르오세아니아 외" +
+	"곽리유니온루마니아세르비아러시아르완다사우디아라비아솔로몬 제도세이셸수단스웨덴싱가포르세인트헬레나슬로베니아스발바르제도-얀마웬섬슬로바키아시에라리온산마리노" +
+	"세네갈소말리아수리남남수단상투메 프린시페엘살바도르신트마르턴시리아스와질란드트리스탄다쿠나터크스 케이커스 제도차드프랑스 남부 지방토고태국타지키스탄토켈라" +
+	"우동티모르투르크메니스탄튀니지통가터키트리니다드 토바고투발루대만탄자니아우크라이나우간다미국령 해외 제도미국우루과이우즈베키스탄바티칸시국세인트빈센트그레나" +
+	"딘베네수엘라영국령 버진아일랜드미국령 버진아일랜드베트남바누아투왈리스-푸투나 제도사모아코소보예멘마요트남아프리카잠비아짐바브웨알려지지 않은 지역세계아프" +
 	"리카북아메리카남아메리카(남미)오세아니아서아프리카중앙 아메리카동부 아프리카북부 아프리카중부 아프리카남부 아프리카아메리카 대륙북부 아메리카카리브 제" +
 	"도동아시아남아시아동남아시아남유럽오스트랄라시아멜라네시아미크로네시아 지역폴리네시아아시아중앙 아시아서아시아유럽동유럽북유럽서유럽라틴 아메리카"
 
 var koRegionIdx = []uint16{ // 291 entries
 	0x0, 0xd, 0x16, 0x2f, 0x41, 0x54, 0x5d, 0x69, 0x78, 0x94, 0x9d, 0xaa,
 	0xb9, 0xcf, 0xde, 0xf3, 0xfc, 0x10c, 0x11e, 0x13d, 0x14c, 0x15b, 0x164, 0x176,
-	0x182, 0x18b, 0x194, 0x19a, 0x1ad, 0x1b6, 0x1c2, 0x1ce, 0x1e7, 0x1f0, 0x1f9, 0x1ff,
-	0x205, 0x211, 0x21d, 0x226, 0x22f, 0x23e, 0x24e, 0x26b, 0x271, 0x27a, 0x28c, 0x295,
-	0x29b, 0x2a4, 0x2aa, 0x2b6, 0x2c6, 0x2d5, 0x2db, 0x2ea, 0x2f3, 0x305, 0x314, 0x31a,
-	0x320, 0x336, 0x33f, 0x348, 0x354, 0x36a, 0x373, 0x38a, 0x396, 0x3a5, 0x3ae, 0x3ba,
-	0x3c9, 0x3d2, 0x3e1, 0x3ee, 0x3f7, 0x3fd, 0x410, 0x422, 0x42e, 0x437, 0x43d, 0x443,
+	0x182, 0x18b, 0x194, 0x19a, 0x1ac, 0x1b5, 0x1c1, 0x1cd, 0x1e6, 0x1ef, 0x1f8, 0x1fe,
+	0x207, 0x213, 0x21f, 0x228, 0x231, 0x240, 0x250, 0x26d, 0x273, 0x27c, 0x28e, 0x297,
+	0x29d, 0x2a6, 0x2ac, 0x2b8, 0x2c8, 0x2d7, 0x2dd, 0x2ec, 0x2f5, 0x307, 0x313, 0x319,
+	0x31f, 0x335, 0x33e, 0x347, 0x353, 0x369, 0x372, 0x389, 0x395, 0x3a4, 0x3ad, 0x3b9,
+	0x3c8, 0x3d1, 0x3e0, 0x3ed, 0x3f6, 0x3fc, 0x40f, 0x421, 0x42e, 0x437, 0x43d, 0x443,
 	0x44f, 0x458, 0x46e, 0x474, 0x47a, 0x486, 0x492, 0x49b, 0x4a1, 0x4ad, 0x4ba, 0x4c3,
-	0x4f2, 0x4fe, 0x501, 0x50d, 0x519, 0x537, 0x553, 0x55f, 0x56e, 0x577, 0x580, 0x593,
-	0x5a2, 0x5ae, 0x5ba, 0x5c1, 0x5c7, 0x5e2, 0x5eb, 0x5f1, 0x600, 0x60c, 0x612, 0x61e,
-	0x627, 0x62d, 0x633, 0x645, 0x651, 0x65d, 0x669, 0x683, 0x6a7, 0x6b3, 0x6bf, 0x6ce,
-	0x6dd, 0x6e6, 0x6ef, 0x701, 0x713, 0x71f, 0x72e, 0x737, 0x746, 0x755, 0x761, 0x76a,
-	0x773, 0x77c, 0x785, 0x794, 0x7a1, 0x7b3, 0x7c0, 0x7cf, 0x7d5, 0x7de, 0x7e4, 0x805,
-	0x81a, 0x826, 0x832, 0x841, 0x847, 0x853, 0x85c, 0x865, 0x86e, 0x87d, 0x889, 0x895,
-	0x8a8, 0x8b1, 0x8ba, 0x8c9, 0x8d5, 0x8e1, 0x8ed, 0x8f3, 0x8fc, 0x905, 0x911, 0x917,
-	0x920, 0x926, 0x942, 0x954, 0x95d, 0x969, 0x972, 0x988, 0x995, 0x9a7, 0x9bd, 0x9c9,
-	0x9d2, 0x9de, 0x9e7, 0x9fd, 0xa09, 0xa15, 0xa21, 0xa2a, 0xa33, 0xa48, 0xa58, 0xa61,
-	0xa67, 0xa70, 0xa7c, 0xa8e, 0xa9d, 0xabc, 0xacb, 0xada, 0xae6, 0xaef, 0xafb, 0xb04,
-	0xb0d, 0xb23, 0xb32, 0xb41, 0xb4a, 0xb59, 0xb6e, 0xb89, 0xb8f, 0xba6, 0xbac, 0xbb2,
+	0x4f2, 0x4fe, 0x501, 0x510, 0x51c, 0x53a, 0x554, 0x560, 0x56f, 0x578, 0x581, 0x594,
+	0x5a3, 0x5af, 0x5bb, 0x5c2, 0x5c8, 0x5e5, 0x5ee, 0x5f4, 0x603, 0x60f, 0x615, 0x621,
+	0x62a, 0x630, 0x636, 0x648, 0x654, 0x660, 0x669, 0x682, 0x6a3, 0x6af, 0x6bb, 0x6ca,
+	0x6d9, 0x6e2, 0x6eb, 0x6fd, 0x70f, 0x71b, 0x72a, 0x733, 0x742, 0x751, 0x75d, 0x766,
+	0x76f, 0x778, 0x781, 0x790, 0x79d, 0x7af, 0x7bc, 0x7cb, 0x7d1, 0x7da, 0x7e0, 0x801,
+	0x816, 0x825, 0x831, 0x840, 0x846, 0x852, 0x85b, 0x864, 0x86d, 0x87c, 0x888, 0x894,
+	0x8a6, 0x8af, 0x8b8, 0x8c7, 0x8d3, 0x8df, 0x8eb, 0x8f1, 0x8fa, 0x903, 0x90f, 0x915,
+	0x91e, 0x924, 0x940, 0x952, 0x95b, 0x967, 0x970, 0x986, 0x993, 0x9a5, 0x9bb, 0x9c7,
+	0x9d0, 0x9dc, 0x9e5, 0x9fb, 0xa07, 0xa13, 0xa1f, 0xa28, 0xa31, 0xa46, 0xa56, 0xa5f,
+	0xa65, 0xa6e, 0xa7a, 0xa8c, 0xa9b, 0xaba, 0xac9, 0xad8, 0xae4, 0xaed, 0xaf9, 0xb02,
+	0xb0b, 0xb21, 0xb30, 0xb3f, 0xb48, 0xb57, 0xb6c, 0xb89, 0xb8f, 0xba6, 0xbac, 0xbb2,
 	0xbc1, 0xbcd, 0xbd9, 0xbee, 0xbf7, 0xbfd, 0xc03, 0xc1c, 0xc25, 0xc2b, 0xc37, 0xc46,
-	0xc4f, 0xc66, 0xc6c, 0xc78, 0xc8a, 0xc93, 0xcb1, 0xcc0, 0xcdd, 0xcfa, 0xd03, 0xd0f,
-	0xd29, 0xd32, 0xd3b, 0xd41, 0xd4a, 0xd59, 0xd62, 0xd6e, 0xd88, 0xd8e, 0xd9a, 0xda9,
-	0xdc0, 0xdcf, 0xdde, 0xdf1, 0xe04, 0xe17, 0xe2a, 0xe3d, 0xe50, 0xe63, 0xe73, 0xe7f,
-	0xe8b, 0xe9a, 0xea3, 0xeb8, 0xec7, 0xee0, 0xeef, 0xef8, 0xf08, 0xf14, 0xf1a, 0xf23,
-	0xf2c, 0xf35, 0xf48,
+	0xc4f, 0xc66, 0xc6c, 0xc78, 0xc8a, 0xc99, 0xcb7, 0xcc6, 0xce2, 0xcfe, 0xd07, 0xd13,
+	0xd2d, 0xd36, 0xd3f, 0xd45, 0xd4e, 0xd5d, 0xd66, 0xd72, 0xd8c, 0xd92, 0xd9e, 0xdad,
+	0xdc4, 0xdd3, 0xde2, 0xdf5, 0xe08, 0xe1b, 0xe2e, 0xe41, 0xe54, 0xe67, 0xe77, 0xe83,
+	0xe8f, 0xe9e, 0xea7, 0xebc, 0xecb, 0xee4, 0xef3, 0xefc, 0xf0c, 0xf18, 0xf1e, 0xf27,
+	0xf30, 0xf39, 0xf4c,
 }
 
 const kyRegionStr = "" +
@@ -29908,16 +28783,16 @@
 	"landenSeychellenSoedanZwedenSingaporeSint-HelenaSloveniëSpitsbergen en Jan Mayen" +
 	"SlowakijeSierra LeoneSan MarinoSenegalSomaliëSurinameZuid-SoedanSao Tomé en Prin" +
 	"cipeEl SalvadorSint-MaartenSyriëSwazilandTristan da CunhaTurks- en Caicoseilande" +
-	"nTsjaadFranse Gebieden in de zuidelijke Indische OceaanTogoThailandTadzjikistanT" +
-	"okelauOost-TimorTurkmenistanTunesiëTongaTurkijeTrinidad en TobagoTuvaluTaiwanTan" +
-	"zaniaOekraïneOegandaKleine afgelegen eilanden van de Verenigde StatenVerenigde S" +
-	"tatenUruguayOezbekistanVaticaanstadSaint Vincent en de GrenadinesVenezuelaBritse" +
-	" MaagdeneilandenAmerikaanse MaagdeneilandenVietnamVanuatuWallis en FutunaSamoaKo" +
-	"sovoJemenMayotteZuid-AfrikaZambiaZimbabweonbekend gebiedwereldAfrikaNoord-Amerik" +
-	"aZuid-AmerikaOceaniëWest-AfrikaMidden-AmerikaOost-AfrikaNoord-AfrikaCentraal-Afr" +
-	"ikaZuidelijk AfrikaAmerikaNoordelijk AmerikaCaribisch gebiedOost-AziëZuid-AziëZu" +
-	"idoost-AziëZuid-EuropaAustralaziëMelanesiëMicronesische regioPolynesiëAziëCentra" +
-	"al-AziëWest-AziëEuropaOost-EuropaNoord-EuropaWest-EuropaLatijns-Amerika"
+	"nTsjaadFranse Zuidelijke GebiedenTogoThailandTadzjikistanTokelauOost-TimorTurkme" +
+	"nistanTunesiëTongaTurkijeTrinidad en TobagoTuvaluTaiwanTanzaniaOekraïneOegandaKl" +
+	"eine afgelegen eilanden van de Verenigde StatenVerenigde StatenUruguayOezbekista" +
+	"nVaticaanstadSaint Vincent en de GrenadinesVenezuelaBritse MaagdeneilandenAmerik" +
+	"aanse MaagdeneilandenVietnamVanuatuWallis en FutunaSamoaKosovoJemenMayotteZuid-A" +
+	"frikaZambiaZimbabweonbekend gebiedwereldAfrikaNoord-AmerikaZuid-AmerikaOceaniëWe" +
+	"st-AfrikaMidden-AmerikaOost-AfrikaNoord-AfrikaCentraal-AfrikaZuidelijk AfrikaAme" +
+	"rikaNoordelijk AmerikaCaribisch gebiedOost-AziëZuid-AziëZuidoost-AziëZuid-Europa" +
+	"AustralaziëMelanesiëMicronesische regioPolynesiëAziëCentraal-AziëWest-AziëEuropa" +
+	"Oost-EuropaNoord-EuropaWest-EuropaLatijns-Amerika"
 
 var nlRegionIdx = []uint16{ // 291 entries
 	0x0, 0x9, 0x10, 0x2c, 0x37, 0x49, 0x51, 0x59, 0x61, 0x75, 0x7b, 0x85,
@@ -29938,13 +28813,13 @@
 	0x70b, 0x70f, 0x71f, 0x732, 0x73c, 0x744, 0x749, 0x761, 0x771, 0x77c, 0x790, 0x798,
 	0x79d, 0x7a5, 0x7aa, 0x7b9, 0x7c1, 0x7ca, 0x7d1, 0x7d8, 0x7de, 0x7ec, 0x7fc, 0x806,
 	0x80c, 0x812, 0x81b, 0x826, 0x82f, 0x847, 0x850, 0x85c, 0x866, 0x86d, 0x875, 0x87d,
-	0x888, 0x89d, 0x8a8, 0x8b4, 0x8ba, 0x8c3, 0x8d3, 0x8eb, 0x8f1, 0x921, 0x925, 0x92d,
-	0x939, 0x940, 0x94a, 0x956, 0x95e, 0x963, 0x96a, 0x97c, 0x982, 0x988, 0x990, 0x999,
-	0x9a0, 0x9d1, 0x9e1, 0x9e8, 0x9f3, 0x9ff, 0xa1d, 0xa26, 0xa3c, 0xa57, 0xa5e, 0xa65,
-	0xa75, 0xa7a, 0xa80, 0xa85, 0xa8c, 0xa97, 0xa9d, 0xaa5, 0xab4, 0xaba, 0xac0, 0xacd,
-	0xad9, 0xae1, 0xaec, 0xafa, 0xb05, 0xb11, 0xb20, 0xb30, 0xb37, 0xb49, 0xb59, 0xb63,
-	0xb6d, 0xb7b, 0xb86, 0xb92, 0xb9c, 0xbaf, 0xbb9, 0xbbe, 0xbcc, 0xbd6, 0xbdc, 0xbe7,
-	0xbf3, 0xbfe, 0xc0d,
+	0x888, 0x89d, 0x8a8, 0x8b4, 0x8ba, 0x8c3, 0x8d3, 0x8eb, 0x8f1, 0x90b, 0x90f, 0x917,
+	0x923, 0x92a, 0x934, 0x940, 0x948, 0x94d, 0x954, 0x966, 0x96c, 0x972, 0x97a, 0x983,
+	0x98a, 0x9bb, 0x9cb, 0x9d2, 0x9dd, 0x9e9, 0xa07, 0xa10, 0xa26, 0xa41, 0xa48, 0xa4f,
+	0xa5f, 0xa64, 0xa6a, 0xa6f, 0xa76, 0xa81, 0xa87, 0xa8f, 0xa9e, 0xaa4, 0xaaa, 0xab7,
+	0xac3, 0xacb, 0xad6, 0xae4, 0xaef, 0xafb, 0xb0a, 0xb1a, 0xb21, 0xb33, 0xb43, 0xb4d,
+	0xb57, 0xb65, 0xb70, 0xb7c, 0xb86, 0xb99, 0xba3, 0xba8, 0xbb6, 0xbc0, 0xbc6, 0xbd1,
+	0xbdd, 0xbe8, 0xbf7,
 }
 
 const noRegionStr = "" +
@@ -29961,28 +28836,28 @@
 	"abonStorbritanniaGrenadaGeorgiaFransk GuyanaGuernseyGhanaGibraltarGrønlandGambia" +
 	"GuineaGuadeloupeEkvatorial-GuineaHellasSør-Georgia og Sør-SandwichøyeneGuatemala" +
 	"GuamGuinea-BissauGuyanaHongkong S.A.R. KinaHeard- og McDonaldøyeneHondurasKroati" +
-	"aHaitiUngarnKanariøyeneIndonesiaIrlandIsraelManIndiaBritiske territorier i India" +
-	"havetIrakIranIslandItaliaJerseyJamaicaJordanJapanKenyaKirgisistanKambodsjaKiriba" +
-	"tiKomoreneSt. Kitts og NevisNord-KoreaSør-KoreaKuwaitCaymanøyeneKasakhstanLaosLi" +
-	"banonSt. LuciaLiechtensteinSri LankaLiberiaLesothoLitauenLuxemburgLatviaLibyaMar" +
-	"okkoMonacoMoldovaMontenegroSaint-MartinMadagaskarMarshalløyeneMakedoniaMaliMyanm" +
-	"ar (Burma)MongoliaMacao S.A.R. KinaNord-MarianeneMartiniqueMauritaniaMontserratM" +
-	"altaMauritiusMaldiveneMalawiMexicoMalaysiaMosambikNamibiaNy-CaledoniaNigerNorfol" +
-	"køyaNigeriaNicaraguaNederlandNorgeNepalNauruNiueNew ZealandOmanPanamaPeruFransk " +
-	"PolynesiaPapua Ny-GuineaFilippinenePakistanPolenSt. Pierre og MiquelonPitcairnPu" +
-	"erto RicoDet palestinske områdetPortugalPalauParaguayQatarytre OseaniaRéunionRom" +
-	"aniaSerbiaRusslandRwandaSaudi-ArabiaSalomonøyeneSeychelleneSudanSverigeSingapore" +
-	"St. HelenaSloveniaSvalbard og Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSoma" +
-	"liaSurinamSør-SudanSão Tomé og PríncipeEl SalvadorSint MaartenSyriaSwazilandTris" +
-	"tan da CunhaTurks- og CaicosøyeneTsjadDe franske sørterritorierTogoThailandTadsj" +
-	"ikistanTokelauØst-TimorTurkmenistanTunisiaTongaTyrkiaTrinidad og TobagoTuvaluTai" +
-	"wanTanzaniaUkrainaUgandaUSAs ytre øyerUSAUruguayUsbekistanVatikanstatenSt. Vince" +
-	"nt og GrenadineneVenezuelaDe britiske jomfruøyeneDe amerikanske jomfruøyeneVietn" +
-	"amVanuatuWallis og FutunaSamoaKosovoJemenMayotteSør-AfrikaZambiaZimbabweukjent o" +
-	"mrådeverdenAfrikaNord-AmerikaSør-AmerikaOseaniaVest-AfrikaMellom-AmerikaØst-Afri" +
-	"kaNord-AfrikaSentral-AfrikaSørlige AfrikaAmerikaNordlige AmerikaKaribiaØst-AsiaS" +
-	"ør-AsiaSørøst-AsiaSør-EuropaAustralasiaMelanesiaMikronesiaPolynesiaAsiaSentral-A" +
-	"siaVest-AsiaEuropaØst-EuropaNord-EuropaVest-EuropaLatin-Amerika"
+	"aHaitiUngarnKanariøyeneIndonesiaIrlandIsraelManIndiaDet britiske territoriet i I" +
+	"ndiahavetIrakIranIslandItaliaJerseyJamaicaJordanJapanKenyaKirgisistanKambodsjaKi" +
+	"ribatiKomoreneSaint Kitts og NevisNord-KoreaSør-KoreaKuwaitCaymanøyeneKasakhstan" +
+	"LaosLibanonSt. LuciaLiechtensteinSri LankaLiberiaLesothoLitauenLuxemburgLatviaLi" +
+	"byaMarokkoMonacoMoldovaMontenegroSaint-MartinMadagaskarMarshalløyeneMakedoniaMal" +
+	"iMyanmar (Burma)MongoliaMacao S.A.R. KinaNord-MarianeneMartiniqueMauritaniaMonts" +
+	"erratMaltaMauritiusMaldiveneMalawiMexicoMalaysiaMosambikNamibiaNy-CaledoniaNiger" +
+	"NorfolkøyaNigeriaNicaraguaNederlandNorgeNepalNauruNiueNew ZealandOmanPanamaPeruF" +
+	"ransk PolynesiaPapua Ny-GuineaFilippinenePakistanPolenSt. Pierre og MiquelonPitc" +
+	"airnPuerto RicoDet palestinske områdetPortugalPalauParaguayQatarytre OseaniaRéun" +
+	"ionRomaniaSerbiaRusslandRwandaSaudi-ArabiaSalomonøyeneSeychelleneSudanSverigeSin" +
+	"gaporeSt. HelenaSloveniaSvalbard og Jan MayenSlovakiaSierra LeoneSan MarinoSeneg" +
+	"alSomaliaSurinamSør-SudanSão Tomé og PríncipeEl SalvadorSint MaartenSyriaSwazila" +
+	"ndTristan da CunhaTurks- og CaicosøyeneTsjadDe franske sørterritorierTogoThailan" +
+	"dTadsjikistanTokelauØst-TimorTurkmenistanTunisiaTongaTyrkiaTrinidad og TobagoTuv" +
+	"aluTaiwanTanzaniaUkrainaUgandaUSAs ytre øyerUSAUruguayUsbekistanVatikanstatenSt." +
+	" Vincent og GrenadineneVenezuelaDe britiske jomfruøyeneDe amerikanske jomfruøyen" +
+	"eVietnamVanuatuWallis og FutunaSamoaKosovoJemenMayotteSør-AfrikaZambiaZimbabweuk" +
+	"jent områdeverdenAfrikaNord-AmerikaSør-AmerikaOseaniaVest-AfrikaMellom-AmerikaØs" +
+	"t-AfrikaNord-AfrikaSentral-AfrikaSørlige AfrikaAmerikaNordlige AmerikaKaribiaØst" +
+	"-AsiaSør-AsiaSørøst-AsiaSør-EuropaAustralasiaMelanesiaMikronesiaPolynesiaAsiaSen" +
+	"tral-AsiaVest-AsiaEuropaØst-EuropaNord-EuropaVest-EuropaLatin-Amerika"
 
 var noRegionIdx = []uint16{ // 291 entries
 	0x0, 0x9, 0x10, 0x2c, 0x37, 0x49, 0x51, 0x58, 0x5f, 0x77, 0x7d, 0x86,
@@ -29994,22 +28869,22 @@
 	0x2d9, 0x2df, 0x2e6, 0x2e8, 0x2ef, 0x2f3, 0x302, 0x319, 0x323, 0x32c, 0x331, 0x33e,
 	0x345, 0x34c, 0x359, 0x361, 0x366, 0x36f, 0x378, 0x37e, 0x384, 0x38e, 0x39f, 0x3a5,
 	0x3c8, 0x3d1, 0x3d5, 0x3e2, 0x3e8, 0x3fc, 0x414, 0x41c, 0x423, 0x428, 0x42e, 0x43a,
-	0x443, 0x449, 0x44f, 0x452, 0x457, 0x478, 0x47c, 0x480, 0x486, 0x48c, 0x492, 0x499,
-	0x49f, 0x4a4, 0x4a9, 0x4b4, 0x4bd, 0x4c5, 0x4cd, 0x4df, 0x4e9, 0x4f3, 0x4f9, 0x505,
-	0x50f, 0x513, 0x51a, 0x523, 0x530, 0x539, 0x540, 0x547, 0x54e, 0x557, 0x55d, 0x562,
-	0x569, 0x56f, 0x576, 0x580, 0x58c, 0x596, 0x5a4, 0x5ad, 0x5b1, 0x5c0, 0x5c8, 0x5d9,
-	0x5e7, 0x5f1, 0x5fb, 0x605, 0x60a, 0x613, 0x61c, 0x622, 0x628, 0x630, 0x638, 0x63f,
-	0x64b, 0x650, 0x65b, 0x662, 0x66b, 0x674, 0x679, 0x67e, 0x683, 0x687, 0x692, 0x696,
-	0x69c, 0x6a0, 0x6b0, 0x6bf, 0x6ca, 0x6d2, 0x6d7, 0x6ed, 0x6f5, 0x700, 0x718, 0x720,
-	0x725, 0x72d, 0x732, 0x73e, 0x746, 0x74d, 0x753, 0x75b, 0x761, 0x76d, 0x77a, 0x785,
-	0x78a, 0x791, 0x79a, 0x7a4, 0x7ac, 0x7c1, 0x7c9, 0x7d5, 0x7df, 0x7e6, 0x7ed, 0x7f4,
-	0x7fe, 0x815, 0x820, 0x82c, 0x831, 0x83a, 0x84a, 0x860, 0x865, 0x87f, 0x883, 0x88b,
-	0x897, 0x89e, 0x8a8, 0x8b4, 0x8bb, 0x8c0, 0x8c6, 0x8d8, 0x8de, 0x8e4, 0x8ec, 0x8f3,
-	0x8f9, 0x908, 0x90b, 0x912, 0x91c, 0x929, 0x943, 0x94c, 0x964, 0x97f, 0x986, 0x98d,
-	0x99d, 0x9a2, 0x9a8, 0x9ad, 0x9b4, 0x9bf, 0x9c5, 0x9cd, 0x9db, 0x9e1, 0x9e7, 0x9f3,
-	0x9ff, 0xa06, 0xa11, 0xa1f, 0xa2a, 0xa35, 0xa43, 0xa52, 0xa59, 0xa69, 0xa70, 0xa79,
-	0xa82, 0xa8f, 0xa9a, 0xaa5, 0xaae, 0xab8, 0xac1, 0xac5, 0xad1, 0xada, 0xae0, 0xaeb,
-	0xaf6, 0xb01, 0xb0e,
+	0x443, 0x449, 0x44f, 0x452, 0x457, 0x47c, 0x480, 0x484, 0x48a, 0x490, 0x496, 0x49d,
+	0x4a3, 0x4a8, 0x4ad, 0x4b8, 0x4c1, 0x4c9, 0x4d1, 0x4e5, 0x4ef, 0x4f9, 0x4ff, 0x50b,
+	0x515, 0x519, 0x520, 0x529, 0x536, 0x53f, 0x546, 0x54d, 0x554, 0x55d, 0x563, 0x568,
+	0x56f, 0x575, 0x57c, 0x586, 0x592, 0x59c, 0x5aa, 0x5b3, 0x5b7, 0x5c6, 0x5ce, 0x5df,
+	0x5ed, 0x5f7, 0x601, 0x60b, 0x610, 0x619, 0x622, 0x628, 0x62e, 0x636, 0x63e, 0x645,
+	0x651, 0x656, 0x661, 0x668, 0x671, 0x67a, 0x67f, 0x684, 0x689, 0x68d, 0x698, 0x69c,
+	0x6a2, 0x6a6, 0x6b6, 0x6c5, 0x6d0, 0x6d8, 0x6dd, 0x6f3, 0x6fb, 0x706, 0x71e, 0x726,
+	0x72b, 0x733, 0x738, 0x744, 0x74c, 0x753, 0x759, 0x761, 0x767, 0x773, 0x780, 0x78b,
+	0x790, 0x797, 0x7a0, 0x7aa, 0x7b2, 0x7c7, 0x7cf, 0x7db, 0x7e5, 0x7ec, 0x7f3, 0x7fa,
+	0x804, 0x81b, 0x826, 0x832, 0x837, 0x840, 0x850, 0x866, 0x86b, 0x885, 0x889, 0x891,
+	0x89d, 0x8a4, 0x8ae, 0x8ba, 0x8c1, 0x8c6, 0x8cc, 0x8de, 0x8e4, 0x8ea, 0x8f2, 0x8f9,
+	0x8ff, 0x90e, 0x911, 0x918, 0x922, 0x92f, 0x949, 0x952, 0x96a, 0x985, 0x98c, 0x993,
+	0x9a3, 0x9a8, 0x9ae, 0x9b3, 0x9ba, 0x9c5, 0x9cb, 0x9d3, 0x9e1, 0x9e7, 0x9ed, 0x9f9,
+	0xa05, 0xa0c, 0xa17, 0xa25, 0xa30, 0xa3b, 0xa49, 0xa58, 0xa5f, 0xa6f, 0xa76, 0xa7f,
+	0xa88, 0xa95, 0xaa0, 0xaab, 0xab4, 0xabe, 0xac7, 0xacb, 0xad7, 0xae0, 0xae6, 0xaf1,
+	0xafc, 0xb07, 0xb14,
 }
 
 const paRegionStr = "" +
@@ -30088,34 +28963,34 @@
 	"niaCyprCzechyNiemcyDiego GarciaDżibutiDaniaDominikaDominikanaAlgieriaCeuta i Mel" +
 	"illaEkwadorEstoniaEgiptSahara ZachodniaErytreaHiszpaniaEtiopiaUnia EuropejskaFin" +
 	"landiaFidżiFalklandyMikronezjaWyspy OwczeFrancjaGabonWielka BrytaniaGrenadaGruzj" +
-	"aGujana FrancuskaWyspa GuernseyGhanaGibraltarGrenlandiaGambiaGwineaGwadelupaGwin" +
-	"ea RównikowaGrecjaGeorgia Południowa i Sandwich PołudniowyGwatemalaGuamGwinea Bi" +
-	"ssauGujanaSRA Hongkong (Chiny)Wyspy Heard i McDonaldaHondurasChorwacjaHaitiWęgry" +
-	"Wyspy KanaryjskieIndonezjaIrlandiaIzraelWyspa ManIndieBrytyjskie Terytorium Ocea" +
-	"nu IndyjskiegoIrakIranIslandiaWłochyWyspa JerseyJamajkaJordaniaJaponiaKeniaKirgi" +
-	"stanKambodżaKiribatiKomorySaint Kitts i NevisKorea PółnocnaKorea PołudniowaKuwej" +
-	"tKajmanyKazachstanLaosLibanSaint LuciaLiechtensteinSri LankaLiberiaLesothoLitwaL" +
-	"uksemburgŁotwaLibiaMarokoMonakoMołdawiaCzarnogóraSaint-MartinMadagaskarWyspy Mar" +
-	"shallaMacedoniaMaliMjanma (Birma)MongoliaSRA Makau (Chiny)Mariany PółnocneMartyn" +
-	"ikaMauretaniaMontserratMaltaMauritiusMalediwyMalawiMeksykMalezjaMozambikNamibiaN" +
-	"owa KaledoniaNigerNorfolkNigeriaNikaraguaHolandiaNorwegiaNepalNauruNiueNowa Zela" +
-	"ndiaOmanPanamaPeruPolinezja FrancuskaPapua-Nowa GwineaFilipinyPakistanPolskaSain" +
-	"t-Pierre i MiquelonPitcairnPortorykoTerytoria PalestyńskiePortugaliaPalauParagwa" +
-	"jKatarOceania inneReunionRumuniaSerbiaRosjaRwandaArabia SaudyjskaWyspy SalomonaS" +
-	"eszeleSudanSzwecjaSingapurWyspa Świętej HelenySłoweniaSvalbard i Jan MayenSłowac" +
-	"jaSierra LeoneSan MarinoSenegalSomaliaSurinamSudan PołudniowyWyspy Świętego Toma" +
-	"sza i KsiążęcaSalwadorSint MaartenSyriaSuaziTristan da CunhaTurks i CaicosCzadFr" +
-	"ancuskie Terytoria PołudnioweTogoTajlandiaTadżykistanTokelauTimor WschodniTurkme" +
-	"nistanTunezjaTongaTurcjaTrynidad i TobagoTuvaluTajwanTanzaniaUkrainaUgandaDaleki" +
-	"e Wyspy Mniejsze Stanów ZjednoczonychStany ZjednoczoneUrugwajUzbekistanWatykanSa" +
-	"int Vincent i GrenadynyWenezuelaBrytyjskie Wyspy DziewiczeWyspy Dziewicze Stanów" +
-	" ZjednoczonychWietnamVanuatuWallis i FutunaSamoaKosowoJemenMajottaRepublika Połu" +
-	"dniowej AfrykiZambiaZimbabweNieznany regionświatAfrykaAmeryka PółnocnaAmeryka Po" +
-	"łudniowaOceaniaAfryka ZachodniaAmeryka ŚrodkowaAfryka WschodniaAfryka PółnocnaAf" +
-	"ryka ŚrodkowaAfryka PołudniowaAmerykaAmeryka Północna (USA, Kanada)KaraibyAzja W" +
-	"schodniaAzja PołudniowaAzja Południowo-WschodniaEuropa PołudniowaAustralazjaMela" +
-	"nezjaRegion MikronezjiPolinezjaAzjaAzja ŚrodkowaAzja ZachodniaEuropaEuropa Wscho" +
-	"dniaEuropa PółnocnaEuropa ZachodniaAmeryka Łacińska"
+	"aGujana FrancuskaGuernseyGhanaGibraltarGrenlandiaGambiaGwineaGwadelupaGwinea Rów" +
+	"nikowaGrecjaGeorgia Południowa i Sandwich PołudniowyGwatemalaGuamGwinea BissauGu" +
+	"janaSRA Hongkong (Chiny)Wyspy Heard i McDonaldaHondurasChorwacjaHaitiWęgryWyspy " +
+	"KanaryjskieIndonezjaIrlandiaIzraelWyspa ManIndieBrytyjskie Terytorium Oceanu Ind" +
+	"yjskiegoIrakIranIslandiaWłochyJerseyJamajkaJordaniaJaponiaKeniaKirgistanKambodża" +
+	"KiribatiKomorySaint Kitts i NevisKorea PółnocnaKorea PołudniowaKuwejtKajmanyKaza" +
+	"chstanLaosLibanSaint LuciaLiechtensteinSri LankaLiberiaLesothoLitwaLuksemburgŁot" +
+	"waLibiaMarokoMonakoMołdawiaCzarnogóraSaint-MartinMadagaskarWyspy MarshallaMacedo" +
+	"niaMaliMjanma (Birma)MongoliaSRA Makau (Chiny)Mariany PółnocneMartynikaMauretani" +
+	"aMontserratMaltaMauritiusMalediwyMalawiMeksykMalezjaMozambikNamibiaNowa Kaledoni" +
+	"aNigerNorfolkNigeriaNikaraguaHolandiaNorwegiaNepalNauruNiueNowa ZelandiaOmanPana" +
+	"maPeruPolinezja FrancuskaPapua-Nowa GwineaFilipinyPakistanPolskaSaint-Pierre i M" +
+	"iquelonPitcairnPortorykoTerytoria PalestyńskiePortugaliaPalauParagwajKatarOceani" +
+	"a inneReunionRumuniaSerbiaRosjaRwandaArabia SaudyjskaWyspy SalomonaSeszeleSudanS" +
+	"zwecjaSingapurWyspa Świętej HelenySłoweniaSvalbard i Jan MayenSłowacjaSierra Leo" +
+	"neSan MarinoSenegalSomaliaSurinamSudan PołudniowyWyspy Świętego Tomasza i Książę" +
+	"caSalwadorSint MaartenSyriaSuaziTristan da CunhaTurks i CaicosCzadFrancuskie Ter" +
+	"ytoria Południowe i AntarktyczneTogoTajlandiaTadżykistanTokelauTimor WschodniTur" +
+	"kmenistanTunezjaTongaTurcjaTrynidad i TobagoTuvaluTajwanTanzaniaUkrainaUgandaDal" +
+	"ekie Wyspy Mniejsze Stanów ZjednoczonychStany ZjednoczoneUrugwajUzbekistanWatyka" +
+	"nSaint Vincent i GrenadynyWenezuelaBrytyjskie Wyspy DziewiczeWyspy Dziewicze Sta" +
+	"nów ZjednoczonychWietnamVanuatuWallis i FutunaSamoaKosowoJemenMajottaRepublika P" +
+	"ołudniowej AfrykiZambiaZimbabweNieznany regionświatAfrykaAmeryka PółnocnaAmeryka" +
+	" PołudniowaOceaniaAfryka ZachodniaAmeryka ŚrodkowaAfryka WschodniaAfryka Północn" +
+	"aAfryka ŚrodkowaAfryka PołudniowaAmerykaAmeryka Północna (USA, Kanada)KaraibyAzj" +
+	"a WschodniaAzja PołudniowaAzja Południowo-WschodniaEuropa PołudniowaAustralazjaM" +
+	"elanezjaRegion MikronezjiPolinezjaAzjaAzja ŚrodkowaAzja ZachodniaEuropaEuropa Ws" +
+	"chodniaEuropa PółnocnaEuropa ZachodniaAmeryka Łacińska"
 
 var plRegionIdx = []uint16{ // 291 entries
 	0x0, 0x17, 0x1d, 0x39, 0x43, 0x54, 0x5c, 0x63, 0x6a, 0x7d, 0x83, 0x8d,
@@ -30125,24 +29000,24 @@
 	0x22a, 0x231, 0x236, 0x23e, 0x248, 0x251, 0x255, 0x273, 0x27b, 0x293, 0x297, 0x29d,
 	0x2a3, 0x2af, 0x2b7, 0x2bc, 0x2c4, 0x2ce, 0x2d6, 0x2e5, 0x2ec, 0x2f3, 0x2f8, 0x308,
 	0x30f, 0x318, 0x31f, 0x32e, 0x337, 0x33d, 0x346, 0x350, 0x35b, 0x362, 0x367, 0x376,
-	0x37d, 0x383, 0x393, 0x3a1, 0x3a6, 0x3af, 0x3b9, 0x3bf, 0x3c5, 0x3ce, 0x3df, 0x3e5,
-	0x40f, 0x418, 0x41c, 0x429, 0x42f, 0x443, 0x45a, 0x462, 0x46b, 0x470, 0x476, 0x487,
-	0x490, 0x498, 0x49e, 0x4a7, 0x4ac, 0x4d4, 0x4d8, 0x4dc, 0x4e4, 0x4eb, 0x4f7, 0x4fe,
-	0x506, 0x50d, 0x512, 0x51b, 0x524, 0x52c, 0x532, 0x545, 0x555, 0x566, 0x56c, 0x573,
-	0x57d, 0x581, 0x586, 0x591, 0x59e, 0x5a7, 0x5ae, 0x5b5, 0x5ba, 0x5c4, 0x5ca, 0x5cf,
-	0x5d5, 0x5db, 0x5e4, 0x5ef, 0x5fb, 0x605, 0x614, 0x61d, 0x621, 0x62f, 0x637, 0x648,
-	0x65a, 0x663, 0x66d, 0x677, 0x67c, 0x685, 0x68d, 0x693, 0x699, 0x6a0, 0x6a8, 0x6af,
-	0x6bd, 0x6c2, 0x6c9, 0x6d0, 0x6d9, 0x6e1, 0x6e9, 0x6ee, 0x6f3, 0x6f7, 0x704, 0x708,
-	0x70e, 0x712, 0x725, 0x736, 0x73e, 0x746, 0x74c, 0x763, 0x76b, 0x774, 0x78b, 0x795,
-	0x79a, 0x7a2, 0x7a7, 0x7b3, 0x7ba, 0x7c1, 0x7c7, 0x7cc, 0x7d2, 0x7e2, 0x7f0, 0x7f7,
-	0x7fc, 0x803, 0x80b, 0x821, 0x82a, 0x83e, 0x847, 0x853, 0x85d, 0x864, 0x86b, 0x872,
-	0x883, 0x8a9, 0x8b1, 0x8bd, 0x8c2, 0x8c7, 0x8d7, 0x8e5, 0x8e9, 0x909, 0x90d, 0x916,
-	0x922, 0x929, 0x937, 0x943, 0x94a, 0x94f, 0x955, 0x966, 0x96c, 0x972, 0x97a, 0x981,
-	0x987, 0x9b3, 0x9c4, 0x9cb, 0x9d5, 0x9dc, 0x9f5, 0x9fe, 0xa18, 0xa3d, 0xa44, 0xa4b,
-	0xa5a, 0xa5f, 0xa65, 0xa6a, 0xa71, 0xa8e, 0xa94, 0xa9c, 0xaab, 0xab1, 0xab7, 0xac9,
-	0xadc, 0xae3, 0xaf3, 0xb04, 0xb14, 0xb25, 0xb35, 0xb47, 0xb4e, 0xb6e, 0xb75, 0xb83,
-	0xb93, 0xbad, 0xbbf, 0xbca, 0xbd3, 0xbe4, 0xbed, 0xbf1, 0xbff, 0xc0d, 0xc13, 0xc23,
-	0xc34, 0xc44, 0xc56,
+	0x37d, 0x383, 0x393, 0x39b, 0x3a0, 0x3a9, 0x3b3, 0x3b9, 0x3bf, 0x3c8, 0x3d9, 0x3df,
+	0x409, 0x412, 0x416, 0x423, 0x429, 0x43d, 0x454, 0x45c, 0x465, 0x46a, 0x470, 0x481,
+	0x48a, 0x492, 0x498, 0x4a1, 0x4a6, 0x4ce, 0x4d2, 0x4d6, 0x4de, 0x4e5, 0x4eb, 0x4f2,
+	0x4fa, 0x501, 0x506, 0x50f, 0x518, 0x520, 0x526, 0x539, 0x549, 0x55a, 0x560, 0x567,
+	0x571, 0x575, 0x57a, 0x585, 0x592, 0x59b, 0x5a2, 0x5a9, 0x5ae, 0x5b8, 0x5be, 0x5c3,
+	0x5c9, 0x5cf, 0x5d8, 0x5e3, 0x5ef, 0x5f9, 0x608, 0x611, 0x615, 0x623, 0x62b, 0x63c,
+	0x64e, 0x657, 0x661, 0x66b, 0x670, 0x679, 0x681, 0x687, 0x68d, 0x694, 0x69c, 0x6a3,
+	0x6b1, 0x6b6, 0x6bd, 0x6c4, 0x6cd, 0x6d5, 0x6dd, 0x6e2, 0x6e7, 0x6eb, 0x6f8, 0x6fc,
+	0x702, 0x706, 0x719, 0x72a, 0x732, 0x73a, 0x740, 0x757, 0x75f, 0x768, 0x77f, 0x789,
+	0x78e, 0x796, 0x79b, 0x7a7, 0x7ae, 0x7b5, 0x7bb, 0x7c0, 0x7c6, 0x7d6, 0x7e4, 0x7eb,
+	0x7f0, 0x7f7, 0x7ff, 0x815, 0x81e, 0x832, 0x83b, 0x847, 0x851, 0x858, 0x85f, 0x866,
+	0x877, 0x89d, 0x8a5, 0x8b1, 0x8b6, 0x8bb, 0x8cb, 0x8d9, 0x8dd, 0x90c, 0x910, 0x919,
+	0x925, 0x92c, 0x93a, 0x946, 0x94d, 0x952, 0x958, 0x969, 0x96f, 0x975, 0x97d, 0x984,
+	0x98a, 0x9b6, 0x9c7, 0x9ce, 0x9d8, 0x9df, 0x9f8, 0xa01, 0xa1b, 0xa40, 0xa47, 0xa4e,
+	0xa5d, 0xa62, 0xa68, 0xa6d, 0xa74, 0xa91, 0xa97, 0xa9f, 0xaae, 0xab4, 0xaba, 0xacc,
+	0xadf, 0xae6, 0xaf6, 0xb07, 0xb17, 0xb28, 0xb38, 0xb4a, 0xb51, 0xb71, 0xb78, 0xb86,
+	0xb96, 0xbb0, 0xbc2, 0xbcd, 0xbd6, 0xbe7, 0xbf0, 0xbf4, 0xc02, 0xc10, 0xc16, 0xc26,
+	0xc37, 0xc47, 0xc59,
 }
 
 const ptRegionStr = "" +
@@ -30158,11 +29033,11 @@
 	"haEquadorEstôniaEgitoSaara OcidentalEritreiaEspanhaEtiópiaUnião EuropeiaFinlândi" +
 	"aFijiIlhas MalvinasMicronésiaIlhas FaroeFrançaGabãoReino UnidoGranadaGeórgiaGuia" +
 	"na FrancesaGuernseyGanaGibraltarGroenlândiaGâmbiaGuinéGuadalupeGuiné EquatorialG" +
-	"réciaGeórgia do Sul e Ilhas Sandwich do SulGuatemalaGuamGuiné BissauGuianaHong K" +
+	"réciaIlhas Geórgia do Sul e Sandwich do SulGuatemalaGuamGuiné-BissauGuianaHong K" +
 	"ong, RAE da ChinaIlhas Heard e McDonaldHondurasCroáciaHaitiHungriaIlhas Canárias" +
 	"IndonésiaIrlandaIsraelIlha de ManÍndiaTerritório Britânico do Oceano ÍndicoIraqu" +
 	"eIrãIslândiaItáliaJerseyJamaicaJordâniaJapãoQuêniaQuirguistãoCambojaQuiribatiCom" +
-	"oresSão Cristóvão e NevisCoreia do NorteCoreia do SulKuwaitIlhas CaimanCazaquist" +
+	"oresSão Cristóvão e NevisCoreia do NorteCoreia do SulKuwaitIlhas CaymanCazaquist" +
 	"ãoLaosLíbanoSanta LúciaLiechtensteinSri LankaLibériaLesotoLituâniaLuxemburgoLetô" +
 	"niaLíbiaMarrocosMônacoMoldáviaMontenegroSão MartinhoMadagascarIlhas MarshallMace" +
 	"dôniaMaliMianmar (Birmânia)MongóliaMacau, RAE da ChinaIlhas Marianas do NorteMar" +
@@ -30176,14 +29051,14 @@
 	"ncipeEl SalvadorSint MaartenSíriaSuazilândiaTristão da CunhaIlhas Turks e Caicos" +
 	"ChadeTerritórios Franceses do SulTogoTailândiaTajiquistãoTokelauTimor-LesteTurco" +
 	"menistãoTunísiaTongaTurquiaTrinidad e TobagoTuvaluTaiwanTanzâniaUcrâniaUgandaIlh" +
-	"as Distantes dos EUAEstados UnidosUruguaiUzbequistãoCidade do VaticanoSão Vicent" +
-	"e e GranadinasVenezuelaIlhas Virgens BritânicasIlhas Virgens dos EUAVietnãVanuat" +
-	"uWallis e FutunaSamoaKosovoIêmenMayotteÁfrica do SulZâmbiaZimbábueRegião desconh" +
-	"ecidaMundoÁfricaAmérica do NorteAmérica do SulOceaniaÁfrica OcidentalAmérica Cen" +
-	"tralÁfrica OrientalÁfrica do NorteÁfrica CentralÁfrica AustralAméricasAmérica Se" +
-	"tentrionalCaribeÁsia OrientalÁsia do SulSudeste AsiáticoEuropa do SulAustralásia" +
-	"MelanésiaRegião da MicronésiaPolinésiaÁsiaÁsia CentralÁsia OcidentalEuropaEuropa" +
-	" OrientalEuropa SetentrionalEuropa OcidentalAmérica Latina"
+	"as Menores Distantes dos EUAEstados UnidosUruguaiUzbequistãoCidade do VaticanoSã" +
+	"o Vicente e GranadinasVenezuelaIlhas Virgens BritânicasIlhas Virgens dos EUAViet" +
+	"nãVanuatuWallis e FutunaSamoaKosovoIêmenMayotteÁfrica do SulZâmbiaZimbábueRegião" +
+	" desconhecidaMundoÁfricaAmérica do NorteAmérica do SulOceaniaÁfrica OcidentalAmé" +
+	"rica CentralÁfrica OrientalÁfrica do NorteÁfrica CentralÁfrica AustralAméricasAm" +
+	"érica SetentrionalCaribeÁsia OrientalÁsia do SulSudeste AsiáticoEuropa do SulAus" +
+	"tralásiaMelanésiaRegião da MicronésiaPolinésiaÁsiaÁsia CentralÁsia OcidentalEuro" +
+	"paEuropa OrientalEuropa SetentrionalEuropa OcidentalAmérica Latina"
 
 var ptRegionIdx = []uint16{ // 291 entries
 	0x0, 0x11, 0x18, 0x2f, 0x3b, 0x4d, 0x55, 0x5d, 0x65, 0x78, 0x7e, 0x88,
@@ -30206,49 +29081,47 @@
 	0x84e, 0x855, 0x85e, 0x86a, 0x874, 0x888, 0x893, 0x89d, 0x8a7, 0x8ae, 0x8b6, 0x8be,
 	0x8cb, 0x8e1, 0x8ec, 0x8f8, 0x8fe, 0x90a, 0x91b, 0x92f, 0x934, 0x951, 0x955, 0x95f,
 	0x96b, 0x972, 0x97d, 0x98b, 0x993, 0x998, 0x99f, 0x9b0, 0x9b6, 0x9bc, 0x9c5, 0x9cd,
-	0x9d3, 0x9ea, 0x9f8, 0x9ff, 0xa0b, 0xa1d, 0xa36, 0xa3f, 0xa58, 0xa6d, 0xa74, 0xa7b,
-	0xa8a, 0xa8f, 0xa95, 0xa9b, 0xaa2, 0xab0, 0xab7, 0xac0, 0xad4, 0xad9, 0xae0, 0xaf1,
-	0xb00, 0xb07, 0xb18, 0xb28, 0xb38, 0xb48, 0xb57, 0xb66, 0xb6f, 0xb84, 0xb8a, 0xb98,
-	0xba4, 0xbb5, 0xbc2, 0xbce, 0xbd8, 0xbee, 0xbf8, 0xbfd, 0xc0a, 0xc19, 0xc1f, 0xc2e,
-	0xc41, 0xc51, 0xc60,
+	0x9d3, 0x9f2, 0xa00, 0xa07, 0xa13, 0xa25, 0xa3e, 0xa47, 0xa60, 0xa75, 0xa7c, 0xa83,
+	0xa92, 0xa97, 0xa9d, 0xaa3, 0xaaa, 0xab8, 0xabf, 0xac8, 0xadc, 0xae1, 0xae8, 0xaf9,
+	0xb08, 0xb0f, 0xb20, 0xb30, 0xb40, 0xb50, 0xb5f, 0xb6e, 0xb77, 0xb8c, 0xb92, 0xba0,
+	0xbac, 0xbbd, 0xbca, 0xbd6, 0xbe0, 0xbf6, 0xc00, 0xc05, 0xc12, 0xc21, 0xc27, 0xc36,
+	0xc49, 0xc59, 0xc68,
 }
 
 const ptPTRegionStr = "" +
-	"AnguilaArméniaBarémBenimBotswanaIlhas CocosCongo-KinshasaCongo-BrazzavilleCamarõ" +
-	"esCuraçauIlha do NatalRepública ChecaJibutiDomínicaEstóniaEgiptoIlhas FalklandIl" +
-	"has FaroéGronelândiaIlhas Geórgia do Sul e Sandwich do SulGuameGuiné-BissauIrãoQ" +
-	"uéniaIlhas CaimãoLetóniaMónacoMadagáscarMacedóniaMonserrateMauríciaNova Caledóni" +
-	"aPaíses BaixosPolóniaPitcairnTerritório PalestinianoOceânia InsularRoméniaSeiche" +
-	"lesSingapuraEslovéniaSão MarinoIlhas Turcas e CaicosToquelauTurquemenistãoTrinda" +
-	"de e TobagoVietnameIémenMaioteZimbabuéOceâniaNorte de ÁfricaCaraíbasEuropa do No" +
-	"rte"
+	"AnguilaArméniaBarémBenimCongo-KinshasaCongo-BrazzavilleCamarõesCuraçauRepública " +
+	"ChecaDomínicaEstóniaIlhas FalklandIlhas FaroéGronelândiaGuameIrãoQuéniaIlhas Cai" +
+	"mãoLetóniaMónacoMadagáscarMacedóniaMonserrateMauríciaNova CaledóniaPolóniaPitcai" +
+	"rnTerritórios palestinianosOceânia InsularRoméniaSeichelesSingapuraEslovéniaSão " +
+	"MarinoToquelauTurquemenistãoTrindade e TobagoVietnameIémenMaioteZimbabuéOceâniaN" +
+	"orte de ÁfricaCaraíbasEuropa do Norte"
 
 var ptPTRegionIdx = []uint16{ // 289 entries
 	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x7, 0xf, 0xf, 0xf, 0xf,
 	0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
 	0xf, 0x15, 0x15, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a,
-	0x1a, 0x22, 0x22, 0x22, 0x22, 0x2d, 0x3b, 0x3b, 0x4c, 0x4c, 0x4c, 0x4c,
-	0x4c, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x5d, 0x6a, 0x6a, 0x7a,
-	0x7a, 0x7a, 0x80, 0x80, 0x89, 0x89, 0x89, 0x89, 0x89, 0x91, 0x97, 0x97,
-	0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0xa5, 0xa5, 0xb1, 0xb1, 0xb1, 0xb1,
-	0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
-	0xe4, 0xe4, 0xe9, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
-	0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
-	0xfb, 0xfb, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x10f,
-	0x10f, 0x10f, 0x10f, 0x10f, 0x10f, 0x10f, 0x10f, 0x10f, 0x10f, 0x10f, 0x117, 0x117,
-	0x117, 0x11e, 0x11e, 0x11e, 0x11e, 0x129, 0x129, 0x133, 0x133, 0x133, 0x133, 0x133,
-	0x133, 0x133, 0x133, 0x13d, 0x13d, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146, 0x146,
-	0x155, 0x155, 0x155, 0x155, 0x155, 0x163, 0x163, 0x163, 0x163, 0x163, 0x163, 0x163,
-	0x163, 0x163, 0x163, 0x163, 0x163, 0x163, 0x16b, 0x16b, 0x173, 0x173, 0x18b, 0x18b,
-	0x18b, 0x18b, 0x18b, 0x19b, 0x19b, 0x1a3, 0x1a3, 0x1a3, 0x1a3, 0x1a3, 0x1a3, 0x1ac,
-	0x1ac, 0x1ac, 0x1b5, 0x1b5, 0x1bf, 0x1bf, 0x1bf, 0x1bf, 0x1ca, 0x1ca, 0x1ca, 0x1ca,
-	0x1ca, 0x1ca, 0x1ca, 0x1ca, 0x1ca, 0x1ca, 0x1ca, 0x1df, 0x1df, 0x1df, 0x1df, 0x1df,
-	0x1df, 0x1e7, 0x1e7, 0x1f6, 0x1f6, 0x1f6, 0x1f6, 0x207, 0x207, 0x207, 0x207, 0x207,
-	0x207, 0x207, 0x207, 0x207, 0x207, 0x207, 0x207, 0x207, 0x207, 0x207, 0x20f, 0x20f,
-	0x20f, 0x20f, 0x20f, 0x215, 0x21b, 0x21b, 0x21b, 0x224, 0x224, 0x224, 0x224, 0x224,
-	0x224, 0x22c, 0x22c, 0x22c, 0x22c, 0x23c, 0x23c, 0x23c, 0x23c, 0x23c, 0x245, 0x245,
-	0x245, 0x245, 0x245, 0x245, 0x245, 0x245, 0x245, 0x245, 0x245, 0x245, 0x245, 0x245,
-	0x254,
+	0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x28, 0x28, 0x39, 0x39, 0x39, 0x39,
+	0x39, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x4a, 0x4a, 0x4a, 0x5a,
+	0x5a, 0x5a, 0x5a, 0x5a, 0x63, 0x63, 0x63, 0x63, 0x63, 0x6b, 0x6b, 0x6b,
+	0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x79, 0x79, 0x85, 0x85, 0x85, 0x85,
+	0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
+	0x91, 0x91, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
+	0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
+	0x9b, 0x9b, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xaf,
+	0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb7, 0xb7,
+	0xb7, 0xbe, 0xbe, 0xbe, 0xbe, 0xc9, 0xc9, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3,
+	0xd3, 0xd3, 0xd3, 0xdd, 0xdd, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6,
+	0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
+	0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xfd, 0xfd, 0x105, 0x105, 0x11f, 0x11f,
+	0x11f, 0x11f, 0x11f, 0x12f, 0x12f, 0x137, 0x137, 0x137, 0x137, 0x137, 0x137, 0x140,
+	0x140, 0x140, 0x149, 0x149, 0x153, 0x153, 0x153, 0x153, 0x15e, 0x15e, 0x15e, 0x15e,
+	0x15e, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e, 0x15e,
+	0x15e, 0x166, 0x166, 0x175, 0x175, 0x175, 0x175, 0x186, 0x186, 0x186, 0x186, 0x186,
+	0x186, 0x186, 0x186, 0x186, 0x186, 0x186, 0x186, 0x186, 0x186, 0x186, 0x18e, 0x18e,
+	0x18e, 0x18e, 0x18e, 0x194, 0x19a, 0x19a, 0x19a, 0x1a3, 0x1a3, 0x1a3, 0x1a3, 0x1a3,
+	0x1a3, 0x1ab, 0x1ab, 0x1ab, 0x1ab, 0x1bb, 0x1bb, 0x1bb, 0x1bb, 0x1bb, 0x1c4, 0x1c4,
+	0x1c4, 0x1c4, 0x1c4, 0x1c4, 0x1c4, 0x1c4, 0x1c4, 0x1c4, 0x1c4, 0x1c4, 0x1c4, 0x1c4,
+	0x1d3,
 }
 
 const roRegionStr = "" +
@@ -30342,24 +29215,24 @@
 	"нштейнШри-ЛанкаЛиберияЛесотоЛитваЛюксембургЛатвияЛивияМароккоМонакоМолдоваЧерног" +
 	"орияСен-МартенМадагаскарМаршалловы о-ваМакедонияМалиМьянма (Бирма)МонголияМакао " +
 	"(особый район)Северные Марианские о-ваМартиникаМавританияМонтсерратМальтаМаврики" +
-	"йМальдивские о-ваМалавиМексикаМалайзияМозамбикНамибияНовая КаледонияНигеро-в Нор" +
-	"фолкНигерияНикарагуаНидерландыНорвегияНепалНауруНиуэНовая ЗеландияОманПанамаПеру" +
-	"Французская ПолинезияПапуа – Новая ГвинеяФилиппиныПакистанПольшаСен-Пьер и Микел" +
-	"онПиткэрнПуэрто-РикоПалестинские территорииПортугалияПалауПарагвайКатарВнешняя О" +
-	"кеанияРеюньонРумынияСербияРоссияРуандаСаудовская АравияСоломоновы о-ваСейшельски" +
-	"е о-ваСуданШвецияСингапурО-в Св. ЕленыСловенияШпицберген и Ян-МайенСловакияСьерр" +
-	"а-ЛеонеСан-МариноСенегалСомалиСуринамЮжный СуданСан-Томе и ПринсипиСальвадорСинт" +
-	"-МартенСирияСвазилендТристан-да-КуньяО-ва Тёркс и КайкосЧадФранцузские Южные Тер" +
-	"риторииТогоТаиландТаджикистанТокелауВосточный ТиморТуркменистанТунисТонгаТурцияТ" +
-	"ринидад и ТобагоТувалуТайваньТанзанияУкраинаУгандаВнешние малые о-ва (США)Соедин" +
-	"енные ШтатыУругвайУзбекистанВатиканСент-Винсент и ГренадиныВенесуэлаВиргинские о" +
-	"-ва (Британские)Виргинские о-ва (США)ВьетнамВануатуУоллис и ФутунаСамоаКосовоЙем" +
-	"енМайоттаЮАРЗамбияЗимбабвеНеизвестный регионМирАфрикаСеверная АмерикаЮжная Амери" +
-	"каОкеанияЗападная АфрикаЦентральная АмерикаВосточная АфрикаСеверная АфрикаЦентра" +
-	"льная АфрикаЮжная АфрикаАмерикаСеверная Америка – США и КанадаКарибыВосточная Аз" +
-	"ияЮжная АзияЮго-Восточная АзияЮжная ЕвропаАвстралазияМеланезияМикронезияПолинези" +
-	"яАзияСредняя АзияБлижний и Средний ВостокЕвропаВосточная ЕвропаСеверная ЕвропаЗа" +
-	"падная ЕвропаЛатинская Америка"
+	"йМальдивыМалавиМексикаМалайзияМозамбикНамибияНовая КаледонияНигеро-в НорфолкНиге" +
+	"рияНикарагуаНидерландыНорвегияНепалНауруНиуэНовая ЗеландияОманПанамаПеруФранцузс" +
+	"кая ПолинезияПапуа – Новая ГвинеяФилиппиныПакистанПольшаСен-Пьер и МикелонПиткер" +
+	"нПуэрто-РикоПалестинские территорииПортугалияПалауПарагвайКатарВнешняя ОкеанияРе" +
+	"юньонРумынияСербияРоссияРуандаСаудовская АравияСоломоновы о-ваСейшельские о-ваСу" +
+	"данШвецияСингапурО-в Св. ЕленыСловенияШпицберген и Ян-МайенСловакияСьерра-ЛеонеС" +
+	"ан-МариноСенегалСомалиСуринамЮжный СуданСан-Томе и ПринсипиСальвадорСинт-МартенС" +
+	"ирияСвазилендТристан-да-КуньяО-ва Тёркс и КайкосЧадФранцузские Южные ТерриторииТ" +
+	"огоТаиландТаджикистанТокелауВосточный ТиморТуркменистанТунисТонгаТурцияТринидад " +
+	"и ТобагоТувалуТайваньТанзанияУкраинаУгандаВнешние малые о-ва (США)Соединенные Шт" +
+	"атыУругвайУзбекистанВатиканСент-Винсент и ГренадиныВенесуэлаВиргинские о-ва (Бри" +
+	"танские)Виргинские о-ва (США)ВьетнамВануатуУоллис и ФутунаСамоаКосовоЙеменМайотт" +
+	"аЮАРЗамбияЗимбабвеНеизвестный регионМирАфрикаСеверная АмерикаЮжная АмерикаОкеани" +
+	"яЗападная АфрикаЦентральная АмерикаВосточная АфрикаСеверная АфрикаЦентральная Аф" +
+	"рикаЮжная АфрикаАмерикаСеверная Америка – США и КанадаКарибыВосточная АзияЮжная " +
+	"АзияЮго-Восточная АзияЮжная ЕвропаАвстралазияМеланезияМикронезияПолинезияАзияСре" +
+	"дняя АзияБлижний и Средний ВостокЕвропаВосточная ЕвропаСеверная ЕвропаЗападная Е" +
+	"вропаЛатинская Америка"
 
 var ruRegionIdx = []uint16{ // 291 entries
 	0x0, 0x1a, 0x28, 0x2e, 0x42, 0x62, 0x70, 0x7e, 0x8c, 0xc3, 0xcf, 0xe3,
@@ -30375,18 +29248,18 @@
 	0x93b, 0x947, 0x951, 0x961, 0x971, 0x981, 0x99b, 0x9ba, 0x9c2, 0x9e1, 0x9ed, 0xa07,
 	0xa19, 0xa21, 0xa2b, 0xa3e, 0xa54, 0xa65, 0xa73, 0xa7f, 0xa89, 0xa9d, 0xaa9, 0xab3,
 	0xac1, 0xacd, 0xadb, 0xaef, 0xb02, 0xb16, 0xb32, 0xb44, 0xb4c, 0xb65, 0xb75, 0xb99,
-	0xbc6, 0xbd8, 0xbec, 0xc00, 0xc0c, 0xc1c, 0xc3a, 0xc46, 0xc54, 0xc64, 0xc74, 0xc82,
-	0xc9f, 0xca9, 0xcbd, 0xccb, 0xcdd, 0xcf1, 0xd01, 0xd0b, 0xd15, 0xd1d, 0xd38, 0xd40,
-	0xd4c, 0xd54, 0xd7d, 0xda3, 0xdb5, 0xdc5, 0xdd1, 0xdf2, 0xe00, 0xe15, 0xe42, 0xe56,
-	0xe60, 0xe70, 0xe7a, 0xe97, 0xea5, 0xeb3, 0xebf, 0xecb, 0xed7, 0xef8, 0xf14, 0xf32,
-	0xf3c, 0xf48, 0xf58, 0xf6e, 0xf7e, 0xfa5, 0xfb5, 0xfcc, 0xfdf, 0xfed, 0xff9, 0x1007,
-	0x101c, 0x103f, 0x1051, 0x1066, 0x1070, 0x1082, 0x10a0, 0x10c2, 0x10c8, 0x10fe, 0x1106, 0x1114,
-	0x112a, 0x1138, 0x1155, 0x116d, 0x1177, 0x1181, 0x118d, 0x11ad, 0x11b9, 0x11c7, 0x11d7, 0x11e5,
-	0x11f1, 0x121b, 0x123c, 0x124a, 0x125e, 0x126c, 0x1299, 0x12ab, 0x12de, 0x1303, 0x1311, 0x131f,
-	0x133b, 0x1345, 0x1351, 0x135b, 0x1369, 0x136f, 0x137b, 0x138b, 0x13ae, 0x13b4, 0x13c0, 0x13df,
-	0x13f8, 0x1406, 0x1423, 0x1448, 0x1467, 0x1484, 0x14a7, 0x14be, 0x14cc, 0x1506, 0x1512, 0x152d,
-	0x1540, 0x1562, 0x1579, 0x158f, 0x15a1, 0x15b5, 0x15c7, 0x15cf, 0x15e6, 0x1613, 0x161f, 0x163e,
-	0x165b, 0x1678, 0x1699,
+	0xbc6, 0xbd8, 0xbec, 0xc00, 0xc0c, 0xc1c, 0xc2c, 0xc38, 0xc46, 0xc56, 0xc66, 0xc74,
+	0xc91, 0xc9b, 0xcaf, 0xcbd, 0xccf, 0xce3, 0xcf3, 0xcfd, 0xd07, 0xd0f, 0xd2a, 0xd32,
+	0xd3e, 0xd46, 0xd6f, 0xd95, 0xda7, 0xdb7, 0xdc3, 0xde4, 0xdf2, 0xe07, 0xe34, 0xe48,
+	0xe52, 0xe62, 0xe6c, 0xe89, 0xe97, 0xea5, 0xeb1, 0xebd, 0xec9, 0xeea, 0xf06, 0xf24,
+	0xf2e, 0xf3a, 0xf4a, 0xf60, 0xf70, 0xf97, 0xfa7, 0xfbe, 0xfd1, 0xfdf, 0xfeb, 0xff9,
+	0x100e, 0x1031, 0x1043, 0x1058, 0x1062, 0x1074, 0x1092, 0x10b4, 0x10ba, 0x10f0, 0x10f8, 0x1106,
+	0x111c, 0x112a, 0x1147, 0x115f, 0x1169, 0x1173, 0x117f, 0x119f, 0x11ab, 0x11b9, 0x11c9, 0x11d7,
+	0x11e3, 0x120d, 0x122e, 0x123c, 0x1250, 0x125e, 0x128b, 0x129d, 0x12d0, 0x12f5, 0x1303, 0x1311,
+	0x132d, 0x1337, 0x1343, 0x134d, 0x135b, 0x1361, 0x136d, 0x137d, 0x13a0, 0x13a6, 0x13b2, 0x13d1,
+	0x13ea, 0x13f8, 0x1415, 0x143a, 0x1459, 0x1476, 0x1499, 0x14b0, 0x14be, 0x14f8, 0x1504, 0x151f,
+	0x1532, 0x1554, 0x156b, 0x1581, 0x1593, 0x15a7, 0x15b9, 0x15c1, 0x15d8, 0x1605, 0x1611, 0x1630,
+	0x164d, 0x166a, 0x168b,
 }
 
 const siRegionStr = "" +
@@ -30539,36 +29412,36 @@
 	"ertonKostarikaKubaZelenortski otokiCuraçaoBožični otokCiperČeškaNemčijaDiego Gar" +
 	"ciaDžibutiDanskaDominikaDominikanska republikaAlžirijaCeuta in MelillaEkvadorEst" +
 	"onijaEgiptZahodna SaharaEritrejaŠpanijaEtiopijaEvropska unijaFinskaFidžiFalkland" +
-	"ski otokiMikronezijaFerski otokiFrancijaGabonVelika BritanijaGrenadaGruzijaFranc" +
-	"oska GvajanaGuernseyGanaGibraltarGrenlandijaGambijaGvinejaGvadalupeEkvatorialna " +
-	"GvinejaGrčijaJužna Georgia in Južni Sandwichevi otokiGvatemalaGuamGvineja Bissau" +
-	"GvajanaPosebno administrativno območje LR Kitajske Hong KongHeardov otok in McDo" +
-	"naldovi otokiHondurasHrvaškaHaitiMadžarskaKanarski otokiIndonezijaIrskaIzraelOto" +
-	"k ManIndijaBritansko ozemlje v Indijskem oceanuIrakIranIslandijaItalijaJerseyJam" +
-	"ajkaJordanijaJaponskaKenijaKirgizistanKambodžaKiribatiKomoriSaint Kitts in Nevis" +
-	"Severna KorejaJužna KorejaKuvajtKajmanski otokiKazahstanLaosLibanonSaint LuciaLi" +
-	"htenštajnŠrilankaLiberijaLesotoLitvaLuksemburgLatvijaLibijaMarokoMonakoMoldavija" +
-	"Črna goraSaint MartinMadagaskarMarshallovi otokiMakedonijaMaliMjanmar (Burma)Mon" +
-	"golijaPosebno administrativno območje LR Kitajske MacaoSeverni Marianski otokiMa" +
-	"rtinikMavretanijaMontserratMaltaMauritiusMaldiviMalaviMehikaMalezijaMozambikNami" +
-	"bijaNova KaledonijaNigerNorfolški otokNigerijaNikaragvaNizozemskaNorveškaNepalNa" +
-	"uruNiueNova ZelandijaOmanPanamaPeruFrancoska PolinezijaPapua Nova GvinejaFilipin" +
-	"iPakistanPoljskaSaint Pierre in MiquelonPitcairnPortorikoPalestinsko ozemljePort" +
-	"ugalskaPalauParagvajKatarOstala oceanijaReunionRomunijaSrbijaRusijaRuandaSaudova" +
-	" ArabijaSalomonovi otokiSejšeliSudanŠvedskaSingapurSveta HelenaSlovenijaSvalbard" +
-	" in Jan MayenSlovaškaSierra LeoneSan MarinoSenegalSomalijaSurinamJužni SudanSao " +
-	"Tome in PrincipeSalvadorSint MaartenSirijaSvaziTristan da CunhaOtočji Turks in C" +
-	"aicosČadFrancosko južno ozemljeTogoTajskaTadžikistanTokelauVzhodni TimorTurkmeni" +
-	"stanTunizijaTongaTurčijaTrinidad in TobagoTuvaluTajvanTanzanijaUkrajinaUgandaDru" +
-	"ga ameriška ozemlja v Tihem oceanuZdružene države AmerikeUrugvajUzbekistanVatika" +
-	"nSaint Vincent in GrenadineVenezuelaBritanski Deviški otokiAmeriški Deviški otok" +
-	"iVietnamVanuatuWallis in FutunaSamoaKosovoJemenMayotteJužnoafriška republikaZamb" +
-	"ijaZimbabveNeznano ali neveljavno območjeSvetAfrikaSeverna AmerikaJužna AmerikaO" +
-	"ceanijaZahodna AfrikaSrednja AmerikaVzhodna AfrikaSeverna AfrikaSrednja AfrikaJu" +
-	"žna AfrikaAmerikesevernoameriška celinaKaribiVzhodna AzijaJužna AzijaJugovzhodna" +
-	" AzijaJužna EvropaAvstralija in Nova ZelandijaMelanezijamikronezijska regijaPoli" +
-	"nezijaAzijaOsrednja AzijaZahodna AzijaEvropaVzhodna EvropaSeverna EvropaZahodna " +
-	"EvropaLatinska Amerika"
+	"ski otokiMikronezijaFerski otokiFrancijaGabonZdruženo kraljestvoGrenadaGruzijaFr" +
+	"ancoska GvajanaGuernseyGanaGibraltarGrenlandijaGambijaGvinejaGvadalupeEkvatorial" +
+	"na GvinejaGrčijaJužna Georgia in Južni Sandwichevi otokiGvatemalaGuamGvineja Bis" +
+	"sauGvajanaPosebno administrativno območje LR Kitajske Hong KongHeardov otok in M" +
+	"cDonaldovi otokiHondurasHrvaškaHaitiMadžarskaKanarski otokiIndonezijaIrskaIzrael" +
+	"Otok ManIndijaBritansko ozemlje v Indijskem oceanuIrakIranIslandijaItalijaJersey" +
+	"JamajkaJordanijaJaponskaKenijaKirgizistanKambodžaKiribatiKomoriSaint Kitts in Ne" +
+	"visSeverna KorejaJužna KorejaKuvajtKajmanski otokiKazahstanLaosLibanonSaint Luci" +
+	"aLihtenštajnŠrilankaLiberijaLesotoLitvaLuksemburgLatvijaLibijaMarokoMonakoMoldav" +
+	"ijaČrna goraSaint MartinMadagaskarMarshallovi otokiMakedonijaMaliMjanmar (Burma)" +
+	"MongolijaPosebno administrativno območje LR Kitajske MacaoSeverni Marianski otok" +
+	"iMartinikMavretanijaMontserratMaltaMauritiusMaldiviMalaviMehikaMalezijaMozambikN" +
+	"amibijaNova KaledonijaNigerNorfolški otokNigerijaNikaragvaNizozemskaNorveškaNepa" +
+	"lNauruNiueNova ZelandijaOmanPanamaPeruFrancoska PolinezijaPapua Nova GvinejaFili" +
+	"piniPakistanPoljskaSaint Pierre in MiquelonPitcairnPortorikoPalestinsko ozemljeP" +
+	"ortugalskaPalauParagvajKatarOstala oceanijaReunionRomunijaSrbijaRusijaRuandaSaud" +
+	"ova ArabijaSalomonovi otokiSejšeliSudanŠvedskaSingapurSveta HelenaSlovenijaSvalb" +
+	"ard in Jan MayenSlovaškaSierra LeoneSan MarinoSenegalSomalijaSurinamJužni SudanS" +
+	"ao Tome in PrincipeSalvadorSint MaartenSirijaSvaziTristan da CunhaOtočji Turks i" +
+	"n CaicosČadFrancosko južno ozemljeTogoTajskaTadžikistanTokelauVzhodni TimorTurkm" +
+	"enistanTunizijaTongaTurčijaTrinidad in TobagoTuvaluTajvanTanzanijaUkrajinaUganda" +
+	"Druga ameriška ozemlja v Tihem oceanuZdružene države AmerikeUrugvajUzbekistanVat" +
+	"ikanSaint Vincent in GrenadineVenezuelaBritanski Deviški otokiAmeriški Deviški o" +
+	"tokiVietnamVanuatuWallis in FutunaSamoaKosovoJemenMayotteJužnoafriška republikaZ" +
+	"ambijaZimbabveNeznano ali neveljavno območjeSvetAfrikaSeverna AmerikaJužna Ameri" +
+	"kaOceanijaZahodna AfrikaSrednja AmerikaVzhodna AfrikaSeverna AfrikaSrednja Afrik" +
+	"aJužna AfrikaAmerikesevernoameriška celinaKaribiVzhodna AzijaJužna AzijaJugovzho" +
+	"dna AzijaJužna EvropaAvstralija in Nova ZelandijaMelanezijamikronezijska regijaP" +
+	"olinezijaAzijaOsrednja AzijaZahodna AzijaEvropaVzhodna EvropaSeverna EvropaZahod" +
+	"na EvropaLatinska Amerika"
 
 var slRegionIdx = []uint16{ // 291 entries
 	0x0, 0xe, 0x14, 0x2d, 0x37, 0x49, 0x50, 0x58, 0x60, 0x71, 0x77, 0x81,
@@ -30577,25 +29450,25 @@
 	0x178, 0x17f, 0x189, 0x18f, 0x195, 0x1a3, 0x1c0, 0x1db, 0x1ee, 0x1f4, 0x208, 0x215,
 	0x21a, 0x221, 0x229, 0x232, 0x241, 0x24a, 0x24e, 0x25f, 0x267, 0x275, 0x27a, 0x281,
 	0x289, 0x295, 0x29d, 0x2a3, 0x2ab, 0x2c1, 0x2ca, 0x2da, 0x2e1, 0x2e9, 0x2ee, 0x2fc,
-	0x304, 0x30c, 0x314, 0x322, 0x328, 0x32e, 0x33f, 0x34a, 0x356, 0x35e, 0x363, 0x373,
-	0x37a, 0x381, 0x392, 0x39a, 0x39e, 0x3a7, 0x3b2, 0x3b9, 0x3c0, 0x3c9, 0x3dd, 0x3e4,
-	0x40e, 0x417, 0x41b, 0x429, 0x430, 0x466, 0x487, 0x48f, 0x497, 0x49c, 0x4a6, 0x4b4,
-	0x4be, 0x4c3, 0x4c9, 0x4d1, 0x4d7, 0x4fb, 0x4ff, 0x503, 0x50c, 0x513, 0x519, 0x520,
-	0x529, 0x531, 0x537, 0x542, 0x54b, 0x553, 0x559, 0x56d, 0x57b, 0x588, 0x58e, 0x59d,
-	0x5a6, 0x5aa, 0x5b1, 0x5bc, 0x5c8, 0x5d1, 0x5d9, 0x5df, 0x5e4, 0x5ee, 0x5f5, 0x5fb,
-	0x601, 0x607, 0x610, 0x61a, 0x626, 0x630, 0x641, 0x64b, 0x64f, 0x65e, 0x667, 0x699,
-	0x6b0, 0x6b8, 0x6c3, 0x6cd, 0x6d2, 0x6db, 0x6e2, 0x6e8, 0x6ee, 0x6f6, 0x6fe, 0x706,
-	0x715, 0x71a, 0x729, 0x731, 0x73a, 0x744, 0x74d, 0x752, 0x757, 0x75b, 0x769, 0x76d,
-	0x773, 0x777, 0x78b, 0x79d, 0x7a5, 0x7ad, 0x7b4, 0x7cc, 0x7d4, 0x7dd, 0x7f0, 0x7fb,
-	0x800, 0x808, 0x80d, 0x81c, 0x823, 0x82b, 0x831, 0x837, 0x83d, 0x84c, 0x85c, 0x864,
-	0x869, 0x871, 0x879, 0x885, 0x88e, 0x8a3, 0x8ac, 0x8b8, 0x8c2, 0x8c9, 0x8d1, 0x8d8,
-	0x8e4, 0x8f8, 0x900, 0x90c, 0x912, 0x917, 0x927, 0x93e, 0x942, 0x95a, 0x95e, 0x964,
-	0x970, 0x977, 0x984, 0x990, 0x998, 0x99d, 0x9a5, 0x9b7, 0x9bd, 0x9c3, 0x9cc, 0x9d4,
-	0x9da, 0xa00, 0xa19, 0xa20, 0xa2a, 0xa31, 0xa4b, 0xa54, 0xa6c, 0xa84, 0xa8b, 0xa92,
-	0xaa2, 0xaa7, 0xaad, 0xab2, 0xab9, 0xad1, 0xad8, 0xae0, 0xaff, 0xb03, 0xb09, 0xb18,
-	0xb26, 0xb2e, 0xb3c, 0xb4b, 0xb59, 0xb67, 0xb75, 0xb82, 0xb89, 0xba0, 0xba6, 0xbb3,
-	0xbbf, 0xbd0, 0xbdd, 0xbf9, 0xc03, 0xc17, 0xc21, 0xc26, 0xc34, 0xc41, 0xc47, 0xc55,
-	0xc63, 0xc71, 0xc81,
+	0x304, 0x30c, 0x314, 0x322, 0x328, 0x32e, 0x33f, 0x34a, 0x356, 0x35e, 0x363, 0x377,
+	0x37e, 0x385, 0x396, 0x39e, 0x3a2, 0x3ab, 0x3b6, 0x3bd, 0x3c4, 0x3cd, 0x3e1, 0x3e8,
+	0x412, 0x41b, 0x41f, 0x42d, 0x434, 0x46a, 0x48b, 0x493, 0x49b, 0x4a0, 0x4aa, 0x4b8,
+	0x4c2, 0x4c7, 0x4cd, 0x4d5, 0x4db, 0x4ff, 0x503, 0x507, 0x510, 0x517, 0x51d, 0x524,
+	0x52d, 0x535, 0x53b, 0x546, 0x54f, 0x557, 0x55d, 0x571, 0x57f, 0x58c, 0x592, 0x5a1,
+	0x5aa, 0x5ae, 0x5b5, 0x5c0, 0x5cc, 0x5d5, 0x5dd, 0x5e3, 0x5e8, 0x5f2, 0x5f9, 0x5ff,
+	0x605, 0x60b, 0x614, 0x61e, 0x62a, 0x634, 0x645, 0x64f, 0x653, 0x662, 0x66b, 0x69d,
+	0x6b4, 0x6bc, 0x6c7, 0x6d1, 0x6d6, 0x6df, 0x6e6, 0x6ec, 0x6f2, 0x6fa, 0x702, 0x70a,
+	0x719, 0x71e, 0x72d, 0x735, 0x73e, 0x748, 0x751, 0x756, 0x75b, 0x75f, 0x76d, 0x771,
+	0x777, 0x77b, 0x78f, 0x7a1, 0x7a9, 0x7b1, 0x7b8, 0x7d0, 0x7d8, 0x7e1, 0x7f4, 0x7ff,
+	0x804, 0x80c, 0x811, 0x820, 0x827, 0x82f, 0x835, 0x83b, 0x841, 0x850, 0x860, 0x868,
+	0x86d, 0x875, 0x87d, 0x889, 0x892, 0x8a7, 0x8b0, 0x8bc, 0x8c6, 0x8cd, 0x8d5, 0x8dc,
+	0x8e8, 0x8fc, 0x904, 0x910, 0x916, 0x91b, 0x92b, 0x942, 0x946, 0x95e, 0x962, 0x968,
+	0x974, 0x97b, 0x988, 0x994, 0x99c, 0x9a1, 0x9a9, 0x9bb, 0x9c1, 0x9c7, 0x9d0, 0x9d8,
+	0x9de, 0xa04, 0xa1d, 0xa24, 0xa2e, 0xa35, 0xa4f, 0xa58, 0xa70, 0xa88, 0xa8f, 0xa96,
+	0xaa6, 0xaab, 0xab1, 0xab6, 0xabd, 0xad5, 0xadc, 0xae4, 0xb03, 0xb07, 0xb0d, 0xb1c,
+	0xb2a, 0xb32, 0xb40, 0xb4f, 0xb5d, 0xb6b, 0xb79, 0xb86, 0xb8d, 0xba4, 0xbaa, 0xbb7,
+	0xbc3, 0xbd4, 0xbe1, 0xbfd, 0xc07, 0xc1b, 0xc25, 0xc2a, 0xc38, 0xc45, 0xc4b, 0xc59,
+	0xc67, 0xc75, 0xc85,
 }
 
 const sqRegionStr = "" +
@@ -30735,6 +29608,75 @@
 	0x16e3, 0x16fe, 0x171d,
 }
 
+const srLatnRegionStr = "" +
+	"Ostrvo AsensionAndoraUjedinjeni Arapski EmiratiAvganistanAntigva i BarbudaAngvil" +
+	"aAlbanijaJermenijaHolandski AntiliAngolaAntarktikArgentinaAmerička SamoaAustrija" +
+	"AustralijaArubaOlandska ostrvaAzerbejdžanBosna i HercegovinaBarbadosBangladešBel" +
+	"gijaBurkina FasoBugarskaBahreinBurundiBeninSveti BartolomejBermudaBrunejBolivija" +
+	"Karipska HolandijaBrazilBahamiButanOstrvo BuveBocvanaBelorusijaBelizeKanadaKokos" +
+	" (Keling) OstrvaKongo - KinšasaCentralnoafrička RepublikaKongo - BrazavilŠvajcar" +
+	"skaObala SlonovačeKukova OstrvaČileKamerunKinaKolumbijaOstrvo KlipertonKostarika" +
+	"KubaZelenortska OstrvaKurasaoBožićno ostrvoKiparČeškaNemačkaDijego GarsijaDžibut" +
+	"iDanskaDominikaDominikanska RepublikaAlžirSeuta i MeliljaEkvadorEstonijaEgipatZa" +
+	"padna SaharaEritrejaŠpanijaEtiopijaEvropska UnijaFinskaFidžiFoklandska ostrvaMik" +
+	"ronezijaFarska OstrvaFrancuskaGabonVelika BritanijaGrenadaGruzijaFrancuska Gvaja" +
+	"naGurnsiGanaGibraltarGrenlandGambijaGvinejaGvadelupeEkvatorijalna GvinejaGrčkaJu" +
+	"žna Džordžija i Južna Sendvič OstrvaGvatemalaGuamGvineja-BisaoGvajanaHong Kong S" +
+	". A. R. KinaOstrva Herd i MekdonaldHondurasHrvatskaHaitiMađarskaKanarska ostrvaI" +
+	"ndonezijaIrskaIzraelOstrvo ManIndijaBritanska teritorija u Indijskom okeanuIrakI" +
+	"ranIslandItalijaDžersiJamajkaJordanJapanKenijaKirgistanKambodžaKiribatiKomorska " +
+	"OstrvaSent Kits i NevisSeverna KorejaJužna KorejaKuvajtKajmanska OstrvaKazahstan" +
+	"LaosLibanSveta LucijaLihtenštajnŠri LankaLiberijaLesotoLitvanijaLuksemburgLetoni" +
+	"jaLibijaMarokoMonakoMoldavijaCrna GoraSent MartinMadagaskarMaršalska OstrvaMaked" +
+	"onijaMaliMijanmar (Burma)MongolijaSAR Makao (Kina)Severna Marijanska OstrvaMarti" +
+	"nikMauritanijaMonseratMaltaMauricijusMaldiviMalaviMeksikoMalezijaMozambikNamibij" +
+	"aNova KaledonijaNigerNorfolk OstrvoNigerijaNikaragvaHolandijaNorveškaNepalNauruN" +
+	"iueNovi ZelandOmanPanamaPeruFrancuska PolinezijaPapua Nova GvinejaFilipiniPakist" +
+	"anPoljskaSen Pjer i MikelonPitkernPortorikoPalestinske teritorijePortugalPalauPa" +
+	"ragvajKatarOkeanija (udaljena ostrva)ReinionRumunijaSrbijaRusijaRuandaSaudijska " +
+	"ArabijaSolomonska OstrvaSejšeliSudanŠvedskaSingapurSveta JelenaSlovenijaSvalbard" +
+	" i Jan MajenSlovačkaSijera LeoneSan MarinoSenegalSomalijaSurinamJužni SudanSao T" +
+	"ome i PrincipeSalvadorSveti MartinSirijaSvazilendTristan da KunjaOstrva Turks i " +
+	"KaikosČadFrancuske Južne TeritorijeTogoTajlandTadžikistanTokelauIstočni TimorTur" +
+	"kmenistanTunisTongaTurskaTrinidad i TobagoTuvaluTajvanTanzanijaUkrajinaUgandaUda" +
+	"ljena ostrva SADSjedinjene Američke DržaveUrugvajUzbekistanVatikanSent Vinsent i" +
+	" GrenadiniVenecuelaBritanska Devičanska OstrvaAmerička Devičanska OstrvaVijetnam" +
+	"VanuatuValis i FutunaSamoaKosovoJemenMajotJužnoafrička RepublikaZambijaZimbabveN" +
+	"epoznat regionsvetAfrikaSevernoamerički kontinentJužna AmerikaOkeanijaZapadna Af" +
+	"rikaCentralna AmerikaIstočna AfrikaSeverna AfrikaCentralna AfrikaJužna AfrikaSev" +
+	"erna i Južna AmerikaSeverna AmerikaKaribiIstočna AzijaJužna AzijaJugoistočna Azi" +
+	"jaJužna EvropaAustralija i Novi ZelandMelanezijaMikronezijski regionPolinezijaAz" +
+	"ijaCentralna AzijaZapadna AzijaEvropaIstočna EvropaSeverna EvropaZapadna EvropaL" +
+	"atinska Amerika"
+
+var srLatnRegionIdx = []uint16{ // 291 entries
+	0x0, 0xf, 0x15, 0x2f, 0x39, 0x4a, 0x51, 0x59, 0x62, 0x72, 0x78, 0x81,
+	0x8a, 0x99, 0xa1, 0xab, 0xb0, 0xbf, 0xcb, 0xde, 0xe6, 0xf0, 0xf7, 0x103,
+	0x10b, 0x112, 0x119, 0x11e, 0x12e, 0x135, 0x13b, 0x143, 0x155, 0x15b, 0x161, 0x166,
+	0x171, 0x178, 0x182, 0x188, 0x18e, 0x1a3, 0x1b3, 0x1ce, 0x1de, 0x1e9, 0x1f9, 0x206,
+	0x20b, 0x212, 0x216, 0x21f, 0x22f, 0x238, 0x23c, 0x24e, 0x255, 0x265, 0x26a, 0x271,
+	0x279, 0x287, 0x28f, 0x295, 0x29d, 0x2b3, 0x2b9, 0x2c8, 0x2cf, 0x2d7, 0x2dd, 0x2eb,
+	0x2f3, 0x2fb, 0x303, 0x311, 0x317, 0x31d, 0x32e, 0x339, 0x346, 0x34f, 0x354, 0x364,
+	0x36b, 0x372, 0x383, 0x389, 0x38d, 0x396, 0x39e, 0x3a5, 0x3ac, 0x3b5, 0x3ca, 0x3d0,
+	0x3fb, 0x404, 0x408, 0x415, 0x41c, 0x433, 0x44a, 0x452, 0x45a, 0x45f, 0x468, 0x477,
+	0x481, 0x486, 0x48c, 0x496, 0x49c, 0x4c3, 0x4c7, 0x4cb, 0x4d1, 0x4d8, 0x4df, 0x4e6,
+	0x4ec, 0x4f1, 0x4f7, 0x500, 0x509, 0x511, 0x520, 0x531, 0x53f, 0x54c, 0x552, 0x562,
+	0x56b, 0x56f, 0x574, 0x580, 0x58c, 0x596, 0x59e, 0x5a4, 0x5ad, 0x5b7, 0x5bf, 0x5c5,
+	0x5cb, 0x5d1, 0x5da, 0x5e3, 0x5ee, 0x5f8, 0x609, 0x613, 0x617, 0x627, 0x630, 0x640,
+	0x659, 0x661, 0x66c, 0x674, 0x679, 0x683, 0x68a, 0x690, 0x697, 0x69f, 0x6a7, 0x6af,
+	0x6be, 0x6c3, 0x6d1, 0x6d9, 0x6e2, 0x6eb, 0x6f4, 0x6f9, 0x6fe, 0x702, 0x70d, 0x711,
+	0x717, 0x71b, 0x72f, 0x741, 0x749, 0x751, 0x758, 0x76a, 0x771, 0x77a, 0x790, 0x798,
+	0x79d, 0x7a5, 0x7aa, 0x7c4, 0x7cb, 0x7d3, 0x7d9, 0x7df, 0x7e5, 0x7f6, 0x807, 0x80f,
+	0x814, 0x81c, 0x824, 0x830, 0x839, 0x84d, 0x856, 0x862, 0x86c, 0x873, 0x87b, 0x882,
+	0x88e, 0x8a1, 0x8a9, 0x8b5, 0x8bb, 0x8c4, 0x8d4, 0x8e9, 0x8ed, 0x908, 0x90c, 0x913,
+	0x91f, 0x926, 0x934, 0x940, 0x945, 0x94a, 0x950, 0x961, 0x967, 0x96d, 0x976, 0x97e,
+	0x984, 0x997, 0x9b3, 0x9ba, 0x9c4, 0x9cb, 0x9e3, 0x9ec, 0xa08, 0xa24, 0xa2c, 0xa33,
+	0xa41, 0xa46, 0xa4c, 0xa51, 0xa56, 0xa6e, 0xa75, 0xa7d, 0xa8c, 0xa90, 0xa96, 0xab0,
+	0xabe, 0xac6, 0xad4, 0xae5, 0xaf4, 0xb02, 0xb12, 0xb1f, 0xb37, 0xb46, 0xb4c, 0xb5a,
+	0xb66, 0xb78, 0xb85, 0xb9d, 0xba7, 0xbbb, 0xbc5, 0xbca, 0xbd9, 0xbe6, 0xbec, 0xbfb,
+	0xc09, 0xc17, 0xc27,
+}
+
 const svRegionStr = "" +
 	"AscensionAndorraFörenade ArabemiratenAfghanistanAntigua och BarbudaAnguillaAlban" +
 	"ienArmenienNederländska AntillernaAngolaAntarktisArgentinaAmerikanska SamoaÖster" +
@@ -31219,67 +30161,67 @@
 }
 
 const urRegionStr = "" +
-	"اسکینسیئن آئلینڈانڈورامتحدہ عرب اماراتافغانستانانٹیگوا اور باربوداانگوئیلاالبانی" +
-	"ہآرمینیانیدرلینڈز انٹیلیزانگولاانٹارکٹیکاارجنٹیناامریکی ساموآآسٹریاآسٹریلیااروبا" +
-	"آلینڈ آئلینڈزآذربائجانبوسنیا اور ہرزیگوویناباربادوسبنگلہ دیشبیلجیمبرکینا فاسوبلغ" +
-	"اریہبحرینبرونڈیبیننسینٹ برتھلیمیبرمودابرونئیبولیویاکریبیائی نیدرلینڈزبرازیلیبہام" +
-	"اسبھوٹانبؤویٹ آئلینڈبوتسوانابیلاروسبیلائزکینیڈاکوکوس (کیلنگ) جزائرکانگو - کنشاسا" +
-	"وسط افریقی جمہوریہکانگو - برازاویلےسوئٹزر لینڈکوٹ ڈی آئیوریکک آئلینڈزچلیکیمرونچی" +
-	"نکولمبیاکلپّرٹن آئلینڈکوسٹا ریکاکیوباکیپ ورڈیکیوراکاؤکرسمس آئلینڈقبرصچیک جمہوریہ" +
-	"جرمنیڈائجو گارسیاجبوتیڈنمارکڈومنیکاڈومنیکن جمہوریہالجیریاسیئوٹا اور میلیلاایکواڈ" +
-	"وراسٹونیامصرمغربی صحارااریٹیریاہسپانیہایتھوپیایوروپی یونینفن لینڈفجیفاکلینڈ جزائ" +
-	"رمائکرونیشیافروئی آئلینڈزفرانسگیبونسلطنت متحدہغرناطہجارجیافرینچ گیاناگوئرنسیگھان" +
-	"اجبل الطارقگرین لینڈگامبیاگنیگواڈیلوپاستوائی گیانایونانجنوبی جارجیا اور جنوبی سی" +
-	"نڈوچ جزائرگواٹے مالاگوآمگنی بساؤگیاناہانگ کانگ SAR چینہیئرڈ آئلینڈ اور میکڈونالڈ" +
-	" آئلینڈزہونڈاروسکروشیاہیتیہنگریکینری آئلینڈزانڈونیشیاآئرلینڈاسرائیلآئل آف مینبھا" +
-	"رتبرطانوی ہندوستانی سمندری خطہعراقایرانآئس لینڈاٹلیجرسیجمائیکااردنجاپانکینیاکرغز" +
-	"ستانکمبوڈیاکریباتیکوموروسسینٹ کٹس اور نیویسشمالی کوریاجنوبی کوریاکویتکیمین آئلین" +
-	"ڈزقزاخستانلاؤسلبنانسینٹ لوسیالیشٹنسٹائنسری لنکالائبیریالیسوتھولتھوانیالگژمبرگلٹو" +
-	"یالیبیامراقشموناکومالدووامونٹے نیگروسینٹ مارٹنمڈغاسکرمارشل آئلینڈزمقدونیہمالیمیا" +
-	"نمار (برما)منگولیامکاؤ SAR چینشمالی ماریانا آئلینڈزمارٹینکموریطانیہمونٹسیراٹمالٹ" +
-	"اماریشسمالدیپملاویمیکسیکوملیشیاموزمبیقنامیبیانیو کلیڈونیانائجرنار فاک آئلینڈنائج" +
-	"یریانکاراگووانیدر لینڈزناروےنیپالنؤرونیئونیوزی ینڈعمانپنامہپیروفرانسیسی پولینیشی" +
-	"اپاپوآ نیو گنیفلپائنیپاکستانپولینڈسینٹ پیئر اور میکلیئونپٹکائرن جزائرپیورٹو ریکو" +
-	"فلسطینی خطےپرتگالپلاؤپیراگوئےقطربیرونی اوشیانیاری یونینرومانیاسربیاروسیروانڈاسعو" +
-	"دی عربسولومن آئلینڈزسشلیزسوڈانسویڈنسنگاپورسینٹ ہیلیناسلووینیاسوالبرڈ اور جان مای" +
-	"نسلوواکیہسیئر لیونسان مارینوسینیگلصومالیہسورینامجنوبی سوڈانساؤ ٹوم اور پرنسپےال " +
-	"سلواڈورسنٹ مارٹنشامسوازی لینڈٹرسٹن ڈا کیونہاترکس اور کیکاؤس جزائرچاڈفرانسیسی جنو" +
-	"بی خطےٹوگوتھائی لینڈتاجکستانٹوکیلاؤتیمور لیسٹترکمانستانتیونیسیاٹونگاترکیترینیداد" +
-	" اور ٹوباگوٹووالوتائیوانتنزانیہیوکرینیوگانڈاامریکہ سے باہر کے چھوٹے جزائزریاستہا" +
-	"ئے متحدہیوروگوئےازبکستانواٹیکن سٹیسینٹ ونسنٹ اور گرینیڈائنزوینزوئیلابرٹش ورجن آئ" +
-	"لینڈزامریکی ورجن آئلینڈزویتناموینوآٹوویلیز اور فیوٹیوناساموآکوسووویمنمایوٹجنوبی " +
-	"افریقہزامبیازمبابوےنامعلوم علاقہدنیاافریقہشمالی امریکہجنوبی امریکہاوشیانیامغربی " +
-	"افریقہوسطی امریکہمشرقی افریقہشمالی افریقہوسطی افریقہجنوبی افریقہ کے علاقہامیریکا" +
-	"زشمالی امریکہ کا علاقہکریبیائیمشرقی ایشیاجنوبی ایشیاجنوب مشرقی ایشیاجنوبی یورپآس" +
-	"ٹریلیشیامالینیشیامائکرونیشیائی علاقہپولینیشیاایشیاوسطی ایشیامغربی ایشیایورپمشرقی" +
-	" یورپشمالی یورپمغربی یورپلاطینی امریکہ"
+	"اسینشن آئلینڈانڈورامتحدہ عرب اماراتافغانستانانٹیگوا اور باربوداانگوئیلاالبانیہآر" +
+	"مینیانیدرلینڈز انٹیلیزانگولاانٹارکٹیکاارجنٹیناامریکی ساموآآسٹریاآسٹریلیااروباآلی" +
+	"نڈ آئلینڈزآذربائجانبوسنیا اور ہرزیگووینابارباڈوسبنگلہ دیشبیلجیمبرکینا فاسوبلغاری" +
+	"ہبحرینبرونڈیبیننسینٹ برتھلیمیبرمودابرونئیبولیویاکریبیائی نیدرلینڈزبرازیلبہاماسبھ" +
+	"وٹانبؤویٹ آئلینڈبوتسوانابیلاروسبیلائزکینیڈاکوکوس (کیلنگ) جزائرکانگو - کنشاساوسط " +
+	"افریقی جمہوریہکانگو - برازاویلےسوئٹزر لینڈکوٹ ڈی آئیوریکک آئلینڈزچلیکیمرونچینکول" +
+	"مبیاکلپرٹن آئلینڈکوسٹا ریکاکیوباکیپ ورڈیکیوراکاؤکرسمس آئلینڈقبرصچیک جمہوریہجرمنی" +
+	"ڈائجو گارسیاجبوتیڈنمارکڈومنیکاڈومنیکن جمہوریہالجیریاسیئوٹا اور میلیلاایکواڈوراسٹ" +
+	"ونیامصرمغربی صحارااریٹیریاہسپانیہایتھوپیایوروپی یونینفن لینڈفجیفاکلینڈ جزائرمائک" +
+	"رونیشیافیرو آئلینڈزفرانسگیبونسلطنت متحدہگریناڈاجارجیافرینچ گیاناگوئرنسیگھاناجبل " +
+	"الطارقگرین لینڈگامبیاگنیگواڈیلوپاستوائی گیانایونانجنوبی جارجیا اور جنوبی سینڈوچ " +
+	"جزائرگواٹے مالاگوآمگنی بساؤگیاناہانگ کانگ SAR چینہیئرڈ آئلینڈ اور میکڈونالڈ آئلی" +
+	"نڈزہونڈاروسکروشیاہیتیہنگریکینری آئلینڈزانڈونیشیاآئرلینڈاسرائیلآئل آف مینبھارتبرط" +
+	"انوی ہندوستانی سمندری خطہعراقایرانآئس لینڈاٹلیجرسیجمائیکااردنجاپانکینیاکرغزستانک" +
+	"مبوڈیاکریباتیکوموروسسینٹ کٹس اور نیویسشمالی کوریاجنوبی کوریاکویتکیمین آئلینڈزقزا" +
+	"خستانلاؤسلبنانسینٹ لوسیالیشٹنسٹائنسری لنکالائبیریالیسوتھولتھوانیالگژمبرگلٹویالیب" +
+	"یامراقشموناکومالدووامونٹے نیگروسینٹ مارٹنمڈغاسکرمارشل آئلینڈزمقدونیہمالیمیانمار " +
+	"(برما)منگولیامکاؤ SAR چینشمالی ماریانا آئلینڈزمارٹینکموریطانیہمونٹسیراٹمالٹاماری" +
+	"شسمالدیپملاویمیکسیکوملیشیاموزمبیقنامیبیانیو کلیڈونیانائجرنارفوک آئلینڈنائجیریانک" +
+	"اراگووانیدر لینڈزناروےنیپالنؤرونیئونیوزی ینڈعمانپنامہپیروفرانسیسی پولینیشیاپاپوآ" +
+	" نیو گنیفلپائنیپاکستانپولینڈسینٹ پیئر اور میکلیئونپٹکائرن جزائرپیورٹو ریکوفلسطین" +
+	"ی خطےپرتگالپلاؤپیراگوئےقطربیرونی اوشیانیاری یونینرومانیاسربیاروسروانڈاسعودی عربس" +
+	"ولومن آئلینڈزسشلیزسوڈانسویڈنسنگاپورسینٹ ہیلیناسلووینیاسوالبرڈ اور جان ماینسلوواک" +
+	"یہسیئر لیونسان مارینوسینیگلصومالیہسورینامجنوبی سوڈانساؤ ٹوم اور پرنسپےال سلواڈور" +
+	"سنٹ مارٹنشامسوازی لینڈٹرسٹن ڈا کیونہاترکس اور کیکاؤس جزائرچاڈفرانسیسی جنوبی خطےٹ" +
+	"وگوتھائی لینڈتاجکستانٹوکیلاؤتیمور لیسٹترکمانستانتیونیسیاٹونگاترکیترینیداد اور ٹو" +
+	"باگوٹووالوتائیوانتنزانیہیوکرینیوگانڈاامریکہ سے باہر کے چھوٹے جزائزریاستہائے متحد" +
+	"ہیوروگوئےازبکستانواٹیکن سٹیسینٹ ونسنٹ اور گرینیڈائنزوینزوئیلابرٹش ورجن آئلینڈزام" +
+	"ریکی ورجن آئلینڈزویتناموینوآٹوویلیز اور فیوٹیوناساموآکوسووویمنمایوٹجنوبی افریقہز" +
+	"امبیازمبابوےنامعلوم علاقہدنیاافریقہشمالی امریکہجنوبی امریکہاوشیانیامغربی افریقہو" +
+	"سطی امریکہمشرقی افریقہشمالی افریقہوسطی افریقہجنوبی افریقہ کے علاقہامیریکازشمالی " +
+	"امریکہ کا علاقہکریبیائیمشرقی ایشیاجنوبی ایشیاجنوب مشرقی ایشیاجنوبی یورپآسٹریلیشی" +
+	"امالینیشیامائکرونیشیائی علاقہپولینیشیاایشیاوسطی ایشیامغربی ایشیایورپمشرقی یورپشم" +
+	"الی یورپمغربی یورپلاطینی امریکہ"
 
 var urRegionIdx = []uint16{ // 291 entries
-	0x0, 0x1f, 0x2b, 0x49, 0x5b, 0x7f, 0x8f, 0x9d, 0xab, 0xcc, 0xd8, 0xec,
-	0xfc, 0x113, 0x11f, 0x12f, 0x139, 0x152, 0x164, 0x18c, 0x19c, 0x1ad, 0x1b9, 0x1ce,
-	0x1dc, 0x1e6, 0x1f2, 0x1fa, 0x213, 0x21f, 0x22b, 0x239, 0x25c, 0x26a, 0x276, 0x282,
-	0x299, 0x2a9, 0x2b7, 0x2c3, 0x2cf, 0x2f1, 0x30a, 0x32c, 0x34b, 0x360, 0x378, 0x38b,
-	0x391, 0x39d, 0x3a3, 0x3b1, 0x3cc, 0x3df, 0x3e9, 0x3f8, 0x408, 0x41f, 0x427, 0x43c,
-	0x446, 0x45d, 0x467, 0x473, 0x481, 0x49e, 0x4ac, 0x4cc, 0x4dc, 0x4ea, 0x4f0, 0x505,
-	0x515, 0x523, 0x533, 0x54a, 0x557, 0x55d, 0x576, 0x58c, 0x5a5, 0x5af, 0x5b9, 0x5ce,
-	0x5da, 0x5e6, 0x5fb, 0x609, 0x613, 0x626, 0x637, 0x643, 0x649, 0x659, 0x672, 0x67c,
-	0x6bd, 0x6d0, 0x6d8, 0x6e7, 0x6f1, 0x70d, 0x74d, 0x75d, 0x769, 0x771, 0x77b, 0x794,
-	0x7a6, 0x7b4, 0x7c2, 0x7d4, 0x7de, 0x813, 0x81b, 0x825, 0x834, 0x83c, 0x844, 0x852,
-	0x85a, 0x864, 0x86e, 0x87e, 0x88c, 0x89a, 0x8a8, 0x8c9, 0x8de, 0x8f3, 0x8fb, 0x914,
-	0x924, 0x92c, 0x936, 0x949, 0x95d, 0x96c, 0x97c, 0x98a, 0x99a, 0x9a8, 0x9b2, 0x9bc,
-	0x9c6, 0x9d2, 0x9e0, 0x9f5, 0xa08, 0xa16, 0xa2f, 0xa3d, 0xa45, 0xa5e, 0xa6c, 0xa7f,
-	0xaa7, 0xab5, 0xac7, 0xad9, 0xae3, 0xaef, 0xafb, 0xb05, 0xb13, 0xb1f, 0xb2d, 0xb3b,
-	0xb52, 0xb5c, 0xb76, 0xb86, 0xb98, 0xbab, 0xbb5, 0xbbf, 0xbc7, 0xbcf, 0xbe0, 0xbe8,
-	0xbf2, 0xbfa, 0xc1d, 0xc35, 0xc43, 0xc51, 0xc5d, 0xc86, 0xc9f, 0xcb4, 0xcc9, 0xcd5,
-	0xcdd, 0xced, 0xcf3, 0xd10, 0xd1f, 0xd2d, 0xd37, 0xd3f, 0xd4b, 0xd5c, 0xd77, 0xd81,
-	0xd8b, 0xd95, 0xda3, 0xdb8, 0xdc8, 0xded, 0xdfd, 0xe0e, 0xe21, 0xe2d, 0xe3b, 0xe49,
-	0xe5e, 0xe7f, 0xe92, 0xea3, 0xea9, 0xebc, 0xed8, 0xeff, 0xf05, 0xf27, 0xf2f, 0xf42,
-	0xf52, 0xf60, 0xf73, 0xf87, 0xf97, 0xfa1, 0xfa9, 0xfcd, 0xfd9, 0xfe7, 0xff5, 0x1001,
-	0x100f, 0x1044, 0x1061, 0x1071, 0x1081, 0x1094, 0x10c3, 0x10d5, 0x10f5, 0x1119, 0x1125, 0x1133,
-	0x1155, 0x115f, 0x116b, 0x1171, 0x117b, 0x1192, 0x119e, 0x11ac, 0x11c5, 0x11cd, 0x11d9, 0x11f0,
-	0x1207, 0x1217, 0x122e, 0x1243, 0x125a, 0x1271, 0x1286, 0x12ad, 0x12bd, 0x12e4, 0x12f4, 0x1309,
-	0x131e, 0x133c, 0x134f, 0x1363, 0x1375, 0x139a, 0x13ac, 0x13b6, 0x13c9, 0x13de, 0x13e6, 0x13f9,
-	0x140c, 0x141f, 0x1438,
+	0x0, 0x19, 0x25, 0x43, 0x55, 0x79, 0x89, 0x97, 0xa5, 0xc6, 0xd2, 0xe6,
+	0xf6, 0x10d, 0x119, 0x129, 0x133, 0x14c, 0x15e, 0x186, 0x196, 0x1a7, 0x1b3, 0x1c8,
+	0x1d6, 0x1e0, 0x1ec, 0x1f4, 0x20d, 0x219, 0x225, 0x233, 0x256, 0x262, 0x26e, 0x27a,
+	0x291, 0x2a1, 0x2af, 0x2bb, 0x2c7, 0x2e9, 0x302, 0x324, 0x343, 0x358, 0x370, 0x383,
+	0x389, 0x395, 0x39b, 0x3a9, 0x3c2, 0x3d5, 0x3df, 0x3ee, 0x3fe, 0x415, 0x41d, 0x432,
+	0x43c, 0x453, 0x45d, 0x469, 0x477, 0x494, 0x4a2, 0x4c2, 0x4d2, 0x4e0, 0x4e6, 0x4fb,
+	0x50b, 0x519, 0x529, 0x540, 0x54d, 0x553, 0x56c, 0x582, 0x599, 0x5a3, 0x5ad, 0x5c2,
+	0x5d0, 0x5dc, 0x5f1, 0x5ff, 0x609, 0x61c, 0x62d, 0x639, 0x63f, 0x64f, 0x668, 0x672,
+	0x6b3, 0x6c6, 0x6ce, 0x6dd, 0x6e7, 0x703, 0x743, 0x753, 0x75f, 0x767, 0x771, 0x78a,
+	0x79c, 0x7aa, 0x7b8, 0x7ca, 0x7d4, 0x809, 0x811, 0x81b, 0x82a, 0x832, 0x83a, 0x848,
+	0x850, 0x85a, 0x864, 0x874, 0x882, 0x890, 0x89e, 0x8bf, 0x8d4, 0x8e9, 0x8f1, 0x90a,
+	0x91a, 0x922, 0x92c, 0x93f, 0x953, 0x962, 0x972, 0x980, 0x990, 0x99e, 0x9a8, 0x9b2,
+	0x9bc, 0x9c8, 0x9d6, 0x9eb, 0x9fe, 0xa0c, 0xa25, 0xa33, 0xa3b, 0xa54, 0xa62, 0xa75,
+	0xa9d, 0xaab, 0xabd, 0xacf, 0xad9, 0xae5, 0xaf1, 0xafb, 0xb09, 0xb15, 0xb23, 0xb31,
+	0xb48, 0xb52, 0xb6b, 0xb7b, 0xb8d, 0xba0, 0xbaa, 0xbb4, 0xbbc, 0xbc4, 0xbd5, 0xbdd,
+	0xbe7, 0xbef, 0xc12, 0xc2a, 0xc38, 0xc46, 0xc52, 0xc7b, 0xc94, 0xca9, 0xcbe, 0xcca,
+	0xcd2, 0xce2, 0xce8, 0xd05, 0xd14, 0xd22, 0xd2c, 0xd32, 0xd3e, 0xd4f, 0xd6a, 0xd74,
+	0xd7e, 0xd88, 0xd96, 0xdab, 0xdbb, 0xde0, 0xdf0, 0xe01, 0xe14, 0xe20, 0xe2e, 0xe3c,
+	0xe51, 0xe72, 0xe85, 0xe96, 0xe9c, 0xeaf, 0xecb, 0xef2, 0xef8, 0xf1a, 0xf22, 0xf35,
+	0xf45, 0xf53, 0xf66, 0xf7a, 0xf8a, 0xf94, 0xf9c, 0xfc0, 0xfcc, 0xfda, 0xfe8, 0xff4,
+	0x1002, 0x1037, 0x1054, 0x1064, 0x1074, 0x1087, 0x10b6, 0x10c8, 0x10e8, 0x110c, 0x1118, 0x1126,
+	0x1148, 0x1152, 0x115e, 0x1164, 0x116e, 0x1185, 0x1191, 0x119f, 0x11b8, 0x11c0, 0x11cc, 0x11e3,
+	0x11fa, 0x120a, 0x1221, 0x1236, 0x124d, 0x1264, 0x1279, 0x12a0, 0x12b0, 0x12d7, 0x12e7, 0x12fc,
+	0x1311, 0x132f, 0x1342, 0x1356, 0x1368, 0x138d, 0x139f, 0x13a9, 0x13bc, 0x13d1, 0x13d9, 0x13ec,
+	0x13ff, 0x1412, 0x142b,
 }
 
 const uzRegionStr = "" +
@@ -31421,90 +30363,90 @@
 
 const zhRegionStr = "" +
 	"阿森松岛安道尔阿拉伯联合酋长国阿富汗安提瓜和巴布达安圭拉阿尔巴尼亚亚美尼亚荷属安的列斯群岛安哥拉南极洲阿根廷美属萨摩亚奥地利澳大利亚阿鲁巴奥兰群岛阿塞拜疆波斯尼" +
-	"亚和黑塞哥维那巴巴多斯孟加拉国比利时布基纳法索保加利亚巴林布隆迪贝宁圣巴泰勒米百慕大文莱玻利维亚荷兰加勒比区巴西巴哈马不丹布维特岛博茨瓦纳白俄罗斯伯利兹加拿大科" +
-	"科斯(基林)群岛刚果(金)中非共和国刚果(布)瑞士科特迪瓦库克群岛智利喀麦隆中国哥伦比亚克利珀顿岛哥斯达黎加古巴佛得角库拉索圣诞岛塞浦路斯捷克共和国德国迪戈加西" +
-	"亚岛吉布提丹麦多米尼克多米尼加共和国阿尔及利亚休达及梅利利亚厄瓜多尔爱沙尼亚埃及西撒哈拉厄立特里亚西班牙埃塞俄比亚欧盟芬兰斐济福克兰群岛密克罗尼西亚法罗群岛法国" +
-	"加蓬英国格林纳达格鲁吉亚法属圭亚那根西岛加纳直布罗陀格陵兰冈比亚几内亚瓜德罗普赤道几内亚希腊南乔治亚岛和南桑威齐群岛危地马拉关岛几内亚比绍圭亚那中国香港特别行政" +
-	"区赫德岛和麦克唐纳群岛洪都拉斯克罗地亚海地匈牙利加纳利群岛印度尼西亚爱尔兰以色列曼岛印度英属印度洋领地伊拉克伊朗冰岛意大利泽西岛牙买加约旦日本肯尼亚吉尔吉斯斯坦" +
-	"柬埔寨基里巴斯科摩罗圣基茨和尼维斯朝鲜韩国科威特开曼群岛哈萨克斯坦老挝黎巴嫩圣卢西亚列支敦士登斯里兰卡利比里亚莱索托立陶宛卢森堡拉脱维亚利比亚摩洛哥摩纳哥摩尔多" +
-	"瓦黑山共和国法属圣马丁马达加斯加马绍尔群岛马其顿马里缅甸蒙古中国澳门特别行政区北马里亚纳群岛马提尼克毛里塔尼亚蒙特塞拉特马耳他毛里求斯马尔代夫马拉维墨西哥马来西" +
-	"亚莫桑比克纳米比亚新喀里多尼亚尼日尔诺福克岛尼日利亚尼加拉瓜荷兰挪威尼泊尔瑙鲁纽埃新西兰阿曼巴拿马秘鲁法属波利尼西亚巴布亚新几内亚菲律宾巴基斯坦波兰圣皮埃尔和密" +
-	"克隆群岛皮特凯恩群岛波多黎各巴勒斯坦领土葡萄牙帕劳巴拉圭卡塔尔大洋洲边远群岛留尼汪罗马尼亚塞尔维亚俄罗斯卢旺达沙特阿拉伯所罗门群岛塞舌尔苏丹瑞典新加坡圣赫勒拿斯" +
-	"洛文尼亚斯瓦尔巴特和扬马延斯洛伐克塞拉利昂圣马力诺塞内加尔索马里苏里南南苏丹圣多美和普林西比萨尔瓦多荷属圣马丁叙利亚斯威士兰特里斯坦-达库尼亚群岛特克斯和凯科斯" +
-	"群岛乍得法属南部领地多哥泰国塔吉克斯坦托克劳东帝汶土库曼斯坦突尼斯汤加土耳其特立尼达和多巴哥图瓦卢台湾坦桑尼亚乌克兰乌干达美国本土外小岛屿美国乌拉圭乌兹别克斯坦" +
-	"梵蒂冈圣文森特和格林纳丁斯委内瑞拉英属维京群岛美属维京群岛越南瓦努阿图瓦利斯和富图纳萨摩亚科索沃也门马约特南非赞比亚津巴布韦未知地区世界非洲北美洲南美洲大洋洲西" +
-	"非中美洲东非北非中非南部非洲美洲美洲北部加勒比地区东亚南亚东南亚南欧澳大拉西亚美拉尼西亚密克罗尼西亚地区玻利尼西亚亚洲中亚西亚欧洲东欧北欧西欧拉丁美洲"
+	"亚和黑塞哥维那巴巴多斯孟加拉国比利时布基纳法索保加利亚巴林布隆迪贝宁圣巴泰勒米百慕大文莱玻利维亚荷兰加勒比区巴西巴哈马不丹布维岛博茨瓦纳白俄罗斯伯利兹加拿大科科" +
+	"斯(基林)群岛刚果(金)中非共和国刚果(布)瑞士科特迪瓦库克群岛智利喀麦隆中国哥伦比亚克利珀顿岛哥斯达黎加古巴佛得角库拉索圣诞岛塞浦路斯捷克共和国德国迪戈加西亚" +
+	"岛吉布提丹麦多米尼克多米尼加共和国阿尔及利亚休达及梅利利亚厄瓜多尔爱沙尼亚埃及西撒哈拉厄立特里亚西班牙埃塞俄比亚欧盟芬兰斐济福克兰群岛密克罗尼西亚法罗群岛法国加" +
+	"蓬英国格林纳达格鲁吉亚法属圭亚那根西岛加纳直布罗陀格陵兰冈比亚几内亚瓜德罗普赤道几内亚希腊南乔治亚岛和南桑威齐群岛危地马拉关岛几内亚比绍圭亚那中国香港特别行政区" +
+	"赫德岛和麦克唐纳群岛洪都拉斯克罗地亚海地匈牙利加纳利群岛印度尼西亚爱尔兰以色列曼岛印度英属印度洋领地伊拉克伊朗冰岛意大利泽西岛牙买加约旦日本肯尼亚吉尔吉斯斯坦柬" +
+	"埔寨基里巴斯科摩罗圣基茨和尼维斯朝鲜韩国科威特开曼群岛哈萨克斯坦老挝黎巴嫩圣卢西亚列支敦士登斯里兰卡利比里亚莱索托立陶宛卢森堡拉脱维亚利比亚摩洛哥摩纳哥摩尔多瓦" +
+	"黑山法属圣马丁马达加斯加马绍尔群岛马其顿马里缅甸蒙古中国澳门特别行政区北马里亚纳群岛马提尼克毛里塔尼亚蒙特塞拉特马耳他毛里求斯马尔代夫马拉维墨西哥马来西亚莫桑比" +
+	"克纳米比亚新喀里多尼亚尼日尔诺福克岛尼日利亚尼加拉瓜荷兰挪威尼泊尔瑙鲁纽埃新西兰阿曼巴拿马秘鲁法属波利尼西亚巴布亚新几内亚菲律宾巴基斯坦波兰圣皮埃尔和密克隆群岛" +
+	"皮特凯恩群岛波多黎各巴勒斯坦领土葡萄牙帕劳巴拉圭卡塔尔大洋洲边远群岛留尼汪罗马尼亚塞尔维亚俄罗斯卢旺达沙特阿拉伯所罗门群岛塞舌尔苏丹瑞典新加坡圣赫勒拿斯洛文尼亚" +
+	"斯瓦尔巴特和扬马延斯洛伐克塞拉利昂圣马力诺塞内加尔索马里苏里南南苏丹圣多美和普林西比萨尔瓦多荷属圣马丁叙利亚斯威士兰特里斯坦-达库尼亚群岛特克斯和凯科斯群岛乍得" +
+	"法属南部领地多哥泰国塔吉克斯坦托克劳东帝汶土库曼斯坦突尼斯汤加土耳其特立尼达和多巴哥图瓦卢台湾坦桑尼亚乌克兰乌干达美国本土外小岛屿美国乌拉圭乌兹别克斯坦梵蒂冈圣" +
+	"文森特和格林纳丁斯委内瑞拉英属维京群岛美属维京群岛越南瓦努阿图瓦利斯和富图纳萨摩亚科索沃也门马约特南非赞比亚津巴布韦未知地区世界非洲北美洲南美洲大洋洲西非中美洲" +
+	"东非北非中非南部非洲美洲美洲北部加勒比地区东亚南亚东南亚南欧澳大拉西亚美拉尼西亚密克罗尼西亚地区玻利尼西亚亚洲中亚西亚欧洲东欧北欧西欧拉丁美洲"
 
 var zhRegionIdx = []uint16{ // 291 entries
 	0x0, 0xc, 0x15, 0x2d, 0x36, 0x4b, 0x54, 0x63, 0x6f, 0x87, 0x90, 0x99,
 	0xa2, 0xb1, 0xba, 0xc6, 0xcf, 0xdb, 0xe7, 0x105, 0x111, 0x11d, 0x126, 0x135,
 	0x141, 0x147, 0x150, 0x156, 0x165, 0x16e, 0x174, 0x180, 0x192, 0x198, 0x1a1, 0x1a7,
-	0x1b3, 0x1bf, 0x1cb, 0x1d4, 0x1dd, 0x1f8, 0x207, 0x216, 0x225, 0x22b, 0x237, 0x243,
-	0x249, 0x252, 0x258, 0x264, 0x273, 0x282, 0x288, 0x291, 0x29a, 0x2a3, 0x2af, 0x2be,
-	0x2c4, 0x2d6, 0x2df, 0x2e5, 0x2f1, 0x306, 0x315, 0x32a, 0x336, 0x342, 0x348, 0x354,
-	0x363, 0x36c, 0x37b, 0x381, 0x387, 0x38d, 0x39c, 0x3ae, 0x3ba, 0x3c0, 0x3c6, 0x3cc,
-	0x3d8, 0x3e4, 0x3f3, 0x3fc, 0x402, 0x40e, 0x417, 0x420, 0x429, 0x435, 0x444, 0x44a,
-	0x46e, 0x47a, 0x480, 0x48f, 0x498, 0x4b3, 0x4d1, 0x4dd, 0x4e9, 0x4ef, 0x4f8, 0x507,
-	0x516, 0x51f, 0x528, 0x52e, 0x534, 0x549, 0x552, 0x558, 0x55e, 0x567, 0x570, 0x579,
-	0x57f, 0x585, 0x58e, 0x5a0, 0x5a9, 0x5b5, 0x5be, 0x5d3, 0x5d9, 0x5df, 0x5e8, 0x5f4,
-	0x603, 0x609, 0x612, 0x61e, 0x62d, 0x639, 0x645, 0x64e, 0x657, 0x660, 0x66c, 0x675,
-	0x67e, 0x687, 0x693, 0x6a2, 0x6b1, 0x6c0, 0x6cf, 0x6d8, 0x6de, 0x6e4, 0x6ea, 0x705,
-	0x71a, 0x726, 0x735, 0x744, 0x74d, 0x759, 0x765, 0x76e, 0x777, 0x783, 0x78f, 0x79b,
-	0x7ad, 0x7b6, 0x7c2, 0x7ce, 0x7da, 0x7e0, 0x7e6, 0x7ef, 0x7f5, 0x7fb, 0x804, 0x80a,
-	0x813, 0x819, 0x82e, 0x843, 0x84c, 0x858, 0x85e, 0x87c, 0x88e, 0x89a, 0x8ac, 0x8b5,
-	0x8bb, 0x8c4, 0x8cd, 0x8e2, 0x8eb, 0x8f7, 0x903, 0x90c, 0x915, 0x924, 0x933, 0x93c,
-	0x942, 0x948, 0x951, 0x95d, 0x96c, 0x987, 0x993, 0x99f, 0x9ab, 0x9b7, 0x9c0, 0x9c9,
-	0x9d2, 0x9ea, 0x9f6, 0xa05, 0xa0e, 0xa1a, 0xa39, 0xa54, 0xa5a, 0xa6c, 0xa72, 0xa78,
-	0xa87, 0xa90, 0xa99, 0xaa8, 0xab1, 0xab7, 0xac0, 0xad8, 0xae1, 0xae7, 0xaf3, 0xafc,
-	0xb05, 0xb1d, 0xb23, 0xb2c, 0xb3e, 0xb47, 0xb65, 0xb71, 0xb83, 0xb95, 0xb9b, 0xba7,
-	0xbbc, 0xbc5, 0xbce, 0xbd4, 0xbdd, 0xbe3, 0xbec, 0xbf8, 0xc04, 0xc0a, 0xc10, 0xc19,
-	0xc22, 0xc2b, 0xc31, 0xc3a, 0xc40, 0xc46, 0xc4c, 0xc58, 0xc5e, 0xc6a, 0xc79, 0xc7f,
-	0xc85, 0xc8e, 0xc94, 0xca3, 0xcb2, 0xcca, 0xcd9, 0xcdf, 0xce5, 0xceb, 0xcf1, 0xcf7,
-	0xcfd, 0xd03, 0xd0f,
+	0x1b0, 0x1bc, 0x1c8, 0x1d1, 0x1da, 0x1f5, 0x204, 0x213, 0x222, 0x228, 0x234, 0x240,
+	0x246, 0x24f, 0x255, 0x261, 0x270, 0x27f, 0x285, 0x28e, 0x297, 0x2a0, 0x2ac, 0x2bb,
+	0x2c1, 0x2d3, 0x2dc, 0x2e2, 0x2ee, 0x303, 0x312, 0x327, 0x333, 0x33f, 0x345, 0x351,
+	0x360, 0x369, 0x378, 0x37e, 0x384, 0x38a, 0x399, 0x3ab, 0x3b7, 0x3bd, 0x3c3, 0x3c9,
+	0x3d5, 0x3e1, 0x3f0, 0x3f9, 0x3ff, 0x40b, 0x414, 0x41d, 0x426, 0x432, 0x441, 0x447,
+	0x46b, 0x477, 0x47d, 0x48c, 0x495, 0x4b0, 0x4ce, 0x4da, 0x4e6, 0x4ec, 0x4f5, 0x504,
+	0x513, 0x51c, 0x525, 0x52b, 0x531, 0x546, 0x54f, 0x555, 0x55b, 0x564, 0x56d, 0x576,
+	0x57c, 0x582, 0x58b, 0x59d, 0x5a6, 0x5b2, 0x5bb, 0x5d0, 0x5d6, 0x5dc, 0x5e5, 0x5f1,
+	0x600, 0x606, 0x60f, 0x61b, 0x62a, 0x636, 0x642, 0x64b, 0x654, 0x65d, 0x669, 0x672,
+	0x67b, 0x684, 0x690, 0x696, 0x6a5, 0x6b4, 0x6c3, 0x6cc, 0x6d2, 0x6d8, 0x6de, 0x6f9,
+	0x70e, 0x71a, 0x729, 0x738, 0x741, 0x74d, 0x759, 0x762, 0x76b, 0x777, 0x783, 0x78f,
+	0x7a1, 0x7aa, 0x7b6, 0x7c2, 0x7ce, 0x7d4, 0x7da, 0x7e3, 0x7e9, 0x7ef, 0x7f8, 0x7fe,
+	0x807, 0x80d, 0x822, 0x837, 0x840, 0x84c, 0x852, 0x870, 0x882, 0x88e, 0x8a0, 0x8a9,
+	0x8af, 0x8b8, 0x8c1, 0x8d6, 0x8df, 0x8eb, 0x8f7, 0x900, 0x909, 0x918, 0x927, 0x930,
+	0x936, 0x93c, 0x945, 0x951, 0x960, 0x97b, 0x987, 0x993, 0x99f, 0x9ab, 0x9b4, 0x9bd,
+	0x9c6, 0x9de, 0x9ea, 0x9f9, 0xa02, 0xa0e, 0xa2d, 0xa48, 0xa4e, 0xa60, 0xa66, 0xa6c,
+	0xa7b, 0xa84, 0xa8d, 0xa9c, 0xaa5, 0xaab, 0xab4, 0xacc, 0xad5, 0xadb, 0xae7, 0xaf0,
+	0xaf9, 0xb11, 0xb17, 0xb20, 0xb32, 0xb3b, 0xb59, 0xb65, 0xb77, 0xb89, 0xb8f, 0xb9b,
+	0xbb0, 0xbb9, 0xbc2, 0xbc8, 0xbd1, 0xbd7, 0xbe0, 0xbec, 0xbf8, 0xbfe, 0xc04, 0xc0d,
+	0xc16, 0xc1f, 0xc25, 0xc2e, 0xc34, 0xc3a, 0xc40, 0xc4c, 0xc52, 0xc5e, 0xc6d, 0xc73,
+	0xc79, 0xc82, 0xc88, 0xc97, 0xca6, 0xcbe, 0xccd, 0xcd3, 0xcd9, 0xcdf, 0xce5, 0xceb,
+	0xcf1, 0xcf7, 0xd03,
 }
 
 const zhHantRegionStr = "" +
-	"阿森松島安道爾阿拉伯聯合大公國阿富汗安地卡及巴布達安圭拉島阿爾巴尼亞亞美尼亞荷屬安地列斯安哥拉南極洲阿根廷美屬薩摩亞群島奧地利澳洲阿路巴奧蘭群島亞塞拜然波士尼亞" +
-	"與赫塞格維納巴貝多孟加拉比利時布吉納法索保加利亞巴林蒲隆地貝南聖巴瑟米百慕達汶萊玻利維亞荷蘭加勒比區巴西巴哈馬不丹布威島波札那白俄羅斯貝里斯加拿大可可斯群島剛果" +
-	"(金夏沙)中非共和國剛果(布拉薩)瑞士象牙海岸庫克群島智利喀麥隆中華人民共和國哥倫比亞克里派頓島哥斯大黎加古巴維德角庫拉索聖誕島賽普勒斯捷克共和國德國迪亞哥加西" +
-	"亞島吉布地丹麥多米尼克多明尼加共和國阿爾及利亞休達與梅利利亞厄瓜多愛沙尼亞埃及西撒哈拉厄利垂亞西班牙衣索比亞歐盟芬蘭斐濟福克蘭群島密克羅尼西亞群島法羅群島法國加" +
-	"彭英國格瑞那達喬治亞共和國法屬圭亞那根西島迦納直布羅陀格陵蘭甘比亞幾內亞瓜地洛普赤道幾內亞希臘南喬治亞與南三明治群島瓜地馬拉關島幾內亞比紹蓋亞那中華人民共和國香" +
-	"港特別行政區赫德島和麥克唐納群島宏都拉斯克羅埃西亞海地匈牙利加那利群島印尼愛爾蘭以色列曼島印度英屬印度洋領土伊拉克伊朗冰島義大利澤西島牙買加約旦日本肯亞吉爾吉斯" +
-	"柬埔寨吉里巴斯葛摩聖克里斯多福及尼維斯北韓南韓科威特開曼群島哈薩克寮國黎巴嫩聖露西亞列支敦斯登斯里蘭卡賴比瑞亞賴索托立陶宛盧森堡拉脫維亞利比亞摩洛哥摩納哥摩爾多" +
-	"瓦蒙特內哥羅法屬聖馬丁馬達加斯加馬紹爾群島馬其頓馬利緬甸蒙古中華人民共和國澳門特別行政區北馬里亞納群島馬丁尼克島茅利塔尼亞蒙哲臘馬爾他模里西斯馬爾地夫馬拉威墨西" +
-	"哥馬來西亞莫三比克納米比亞新喀里多尼亞群島尼日諾福克島奈及利亞尼加拉瓜荷蘭挪威尼泊爾諾魯紐埃島紐西蘭阿曼王國巴拿馬秘魯法屬玻里尼西亞巴布亞紐幾內亞菲律賓巴基斯坦" +
-	"波蘭聖皮埃爾和密克隆群島皮特肯群島波多黎各巴勒斯坦自治區葡萄牙帛琉巴拉圭卡達大洋洲邊疆群島留尼旺羅馬尼亞塞爾維亞俄羅斯盧安達沙烏地阿拉伯索羅門群島塞席爾蘇丹瑞典" +
-	"新加坡聖赫勒拿島斯洛維尼亞冷岸及央麥恩群島斯洛伐克獅子山聖馬利諾塞內加爾索馬利亞蘇利南南蘇丹聖多美及普林西比薩爾瓦多荷屬聖馬丁敘利亞史瓦濟蘭特里斯坦達庫尼亞群島" +
-	"土克斯及開科斯群島查德法屬南方屬地多哥共和國泰國塔吉克托克勞群島東帝汶土庫曼突尼西亞東加土耳其千里達及托巴哥吐瓦魯台灣坦尚尼亞烏克蘭烏干達美國本土外小島嶼美國烏" +
-	"拉圭烏茲別克梵蒂岡聖文森及格瑞那丁委內瑞拉英屬維京群島美屬維京群島越南萬那杜瓦利斯和富圖納群島薩摩亞群島科索沃葉門馬約特南非尚比亞辛巴威未知區域世界非洲北美洲南" +
-	"美洲大洋洲西非中美東非北非中非非洲南部美洲北美加勒比海東亞南亞東南亞南歐澳洲與紐西蘭美拉尼西亞密克羅尼西亞玻里尼西亞亞洲中亞西亞歐洲東歐北歐西歐拉丁美洲"
+	"阿森松島安道爾阿拉伯聯合大公國阿富汗安地卡及巴布達安圭拉阿爾巴尼亞亞美尼亞荷屬安地列斯安哥拉南極洲阿根廷美屬薩摩亞奧地利澳洲荷屬阿魯巴奧蘭群島亞塞拜然波士尼亞與" +
+	"赫塞哥維納巴貝多孟加拉比利時布吉納法索保加利亞巴林蒲隆地貝南聖巴瑟米百慕達汶萊玻利維亞荷蘭加勒比區巴西巴哈馬不丹布威島波札那白俄羅斯貝里斯加拿大科科斯(基林)群" +
+	"島剛果(金夏沙)中非共和國剛果(布拉薩)瑞士象牙海岸庫克群島智利喀麥隆中華人民共和國哥倫比亞克里派頓島哥斯大黎加古巴維德角庫拉索聖誕島賽普勒斯捷克共和國德國迪亞" +
+	"哥加西亞島吉布地丹麥多米尼克多明尼加共和國阿爾及利亞休達與梅利利亞厄瓜多愛沙尼亞埃及西撒哈拉厄利垂亞西班牙衣索比亞歐盟芬蘭斐濟福克蘭群島密克羅尼西亞群島法羅群島" +
+	"法國加彭英國格瑞那達喬治亞共和國法屬圭亞那根西島迦納直布羅陀格陵蘭甘比亞幾內亞瓜地洛普赤道幾內亞希臘南喬治亞與南三明治群島瓜地馬拉關島幾內亞比索蓋亞那中華人民共" +
+	"和國香港特別行政區赫德及麥當勞群島宏都拉斯克羅埃西亞海地匈牙利加那利群島印尼愛爾蘭以色列曼島印度英屬印度洋領地伊拉克伊朗冰島義大利澤西島牙買加約旦日本肯亞吉爾吉" +
+	"斯柬埔寨吉里巴斯葛摩聖克里斯多福及尼維斯北韓南韓科威特開曼群島哈薩克寮國黎巴嫩聖露西亞列支敦斯登斯里蘭卡賴比瑞亞賴索托立陶宛盧森堡拉脫維亞利比亞摩洛哥摩納哥摩爾" +
+	"多瓦蒙特內哥羅法屬聖馬丁馬達加斯加馬紹爾群島馬其頓馬利緬甸蒙古中華人民共和國澳門特別行政區北馬里亞納群島馬丁尼克島茅利塔尼亞蒙哲臘馬爾他模里西斯馬爾地夫馬拉威墨" +
+	"西哥馬來西亞莫三比克納米比亞新喀里多尼亞尼日諾福克島奈及利亞尼加拉瓜荷蘭挪威尼泊爾諾魯紐埃島紐西蘭阿曼王國巴拿馬秘魯法屬玻里尼西亞巴布亞紐幾內亞菲律賓巴基斯坦波" +
+	"蘭聖皮埃爾和密克隆群島皮特肯群島波多黎各巴勒斯坦自治區葡萄牙帛琉巴拉圭卡達大洋洲邊疆群島留尼旺羅馬尼亞塞爾維亞俄羅斯盧安達沙烏地阿拉伯索羅門群島塞席爾蘇丹瑞典新" +
+	"加坡聖赫勒拿島斯洛維尼亞冷岸及央麥恩群島斯洛伐克獅子山聖馬利諾塞內加爾索馬利亞蘇利南南蘇丹聖多美普林西比薩爾瓦多荷屬聖馬丁敘利亞史瓦濟蘭特里斯坦達庫尼亞群島英屬" +
+	"土克凱可群島查德法屬南方屬地多哥泰國塔吉克托克勞群島東帝汶土庫曼突尼西亞東加土耳其千里達及托巴哥吐瓦魯台灣坦尚尼亞烏克蘭烏干達美國本土外小島嶼美國烏拉圭烏茲別克" +
+	"梵蒂岡聖文森及格瑞那丁委內瑞拉英屬維京群島美屬維京群島越南萬那杜瓦利斯和富圖納群島薩摩亞群島科索沃葉門馬約特南非尚比亞辛巴威未知區域世界非洲北美洲南美洲大洋洲西" +
+	"非中美東非北非中非非洲南部美洲北美加勒比海東亞南亞東南亞南歐澳洲與紐西蘭美拉尼西亞密克羅尼西亞玻里尼西亞亞洲中亞西亞歐洲東歐北歐西歐拉丁美洲"
 
 var zhHantRegionIdx = []uint16{ // 291 entries
-	0x0, 0xc, 0x15, 0x2d, 0x36, 0x4b, 0x57, 0x66, 0x72, 0x84, 0x8d, 0x96,
-	0x9f, 0xb4, 0xbd, 0xc3, 0xcc, 0xd8, 0xe4, 0x102, 0x10b, 0x114, 0x11d, 0x12c,
-	0x138, 0x13e, 0x147, 0x14d, 0x159, 0x162, 0x168, 0x174, 0x186, 0x18c, 0x195, 0x19b,
-	0x1a4, 0x1ad, 0x1b9, 0x1c2, 0x1cb, 0x1da, 0x1ef, 0x1fe, 0x213, 0x219, 0x225, 0x231,
-	0x237, 0x240, 0x255, 0x261, 0x270, 0x27f, 0x285, 0x28e, 0x297, 0x2a0, 0x2ac, 0x2bb,
-	0x2c1, 0x2d6, 0x2df, 0x2e5, 0x2f1, 0x306, 0x315, 0x32a, 0x333, 0x33f, 0x345, 0x351,
-	0x35d, 0x366, 0x372, 0x378, 0x37e, 0x384, 0x393, 0x3ab, 0x3b7, 0x3bd, 0x3c3, 0x3c9,
-	0x3d5, 0x3e7, 0x3f6, 0x3ff, 0x405, 0x411, 0x41a, 0x423, 0x42c, 0x438, 0x447, 0x44d,
-	0x46e, 0x47a, 0x480, 0x48f, 0x498, 0x4c2, 0x4e0, 0x4ec, 0x4fb, 0x501, 0x50a, 0x519,
-	0x51f, 0x528, 0x531, 0x537, 0x53d, 0x552, 0x55b, 0x561, 0x567, 0x570, 0x579, 0x582,
-	0x588, 0x58e, 0x594, 0x5a0, 0x5a9, 0x5b5, 0x5bb, 0x5d9, 0x5df, 0x5e5, 0x5ee, 0x5fa,
-	0x603, 0x609, 0x612, 0x61e, 0x62d, 0x639, 0x645, 0x64e, 0x657, 0x660, 0x66c, 0x675,
-	0x67e, 0x687, 0x693, 0x6a2, 0x6b1, 0x6c0, 0x6cf, 0x6d8, 0x6de, 0x6e4, 0x6ea, 0x714,
-	0x729, 0x738, 0x747, 0x750, 0x759, 0x765, 0x771, 0x77a, 0x783, 0x78f, 0x79b, 0x7a7,
-	0x7bf, 0x7c5, 0x7d1, 0x7dd, 0x7e9, 0x7ef, 0x7f5, 0x7fe, 0x804, 0x80d, 0x816, 0x822,
-	0x82b, 0x831, 0x846, 0x85b, 0x864, 0x870, 0x876, 0x894, 0x8a3, 0x8af, 0x8c4, 0x8cd,
-	0x8d3, 0x8dc, 0x8e2, 0x8f7, 0x900, 0x90c, 0x918, 0x921, 0x92a, 0x93c, 0x94b, 0x954,
-	0x95a, 0x960, 0x969, 0x978, 0x987, 0x99f, 0x9ab, 0x9b4, 0x9c0, 0x9cc, 0x9d8, 0x9e1,
-	0x9ea, 0xa02, 0xa0e, 0xa1d, 0xa26, 0xa32, 0xa50, 0xa6b, 0xa71, 0xa83, 0xa92, 0xa98,
-	0xaa1, 0xab0, 0xab9, 0xac2, 0xace, 0xad4, 0xadd, 0xaf2, 0xafb, 0xb01, 0xb0d, 0xb16,
-	0xb1f, 0xb37, 0xb3d, 0xb46, 0xb52, 0xb5b, 0xb73, 0xb7f, 0xb91, 0xba3, 0xba9, 0xbb2,
-	0xbcd, 0xbdc, 0xbe5, 0xbeb, 0xbf4, 0xbfa, 0xc03, 0xc0c, 0xc18, 0xc1e, 0xc24, 0xc2d,
-	0xc36, 0xc3f, 0xc45, 0xc4b, 0xc51, 0xc57, 0xc5d, 0xc69, 0xc6f, 0xc75, 0xc81, 0xc87,
-	0xc8d, 0xc96, 0xc9c, 0xcae, 0xcbd, 0xccf, 0xcde, 0xce4, 0xcea, 0xcf0, 0xcf6, 0xcfc,
-	0xd02, 0xd08, 0xd14,
+	0x0, 0xc, 0x15, 0x2d, 0x36, 0x4b, 0x54, 0x63, 0x6f, 0x81, 0x8a, 0x93,
+	0x9c, 0xab, 0xb4, 0xba, 0xc9, 0xd5, 0xe1, 0xff, 0x108, 0x111, 0x11a, 0x129,
+	0x135, 0x13b, 0x144, 0x14a, 0x156, 0x15f, 0x165, 0x171, 0x183, 0x189, 0x192, 0x198,
+	0x1a1, 0x1aa, 0x1b6, 0x1bf, 0x1c8, 0x1e3, 0x1f8, 0x207, 0x21c, 0x222, 0x22e, 0x23a,
+	0x240, 0x249, 0x25e, 0x26a, 0x279, 0x288, 0x28e, 0x297, 0x2a0, 0x2a9, 0x2b5, 0x2c4,
+	0x2ca, 0x2df, 0x2e8, 0x2ee, 0x2fa, 0x30f, 0x31e, 0x333, 0x33c, 0x348, 0x34e, 0x35a,
+	0x366, 0x36f, 0x37b, 0x381, 0x387, 0x38d, 0x39c, 0x3b4, 0x3c0, 0x3c6, 0x3cc, 0x3d2,
+	0x3de, 0x3f0, 0x3ff, 0x408, 0x40e, 0x41a, 0x423, 0x42c, 0x435, 0x441, 0x450, 0x456,
+	0x477, 0x483, 0x489, 0x498, 0x4a1, 0x4cb, 0x4e3, 0x4ef, 0x4fe, 0x504, 0x50d, 0x51c,
+	0x522, 0x52b, 0x534, 0x53a, 0x540, 0x555, 0x55e, 0x564, 0x56a, 0x573, 0x57c, 0x585,
+	0x58b, 0x591, 0x597, 0x5a3, 0x5ac, 0x5b8, 0x5be, 0x5dc, 0x5e2, 0x5e8, 0x5f1, 0x5fd,
+	0x606, 0x60c, 0x615, 0x621, 0x630, 0x63c, 0x648, 0x651, 0x65a, 0x663, 0x66f, 0x678,
+	0x681, 0x68a, 0x696, 0x6a5, 0x6b4, 0x6c3, 0x6d2, 0x6db, 0x6e1, 0x6e7, 0x6ed, 0x717,
+	0x72c, 0x73b, 0x74a, 0x753, 0x75c, 0x768, 0x774, 0x77d, 0x786, 0x792, 0x79e, 0x7aa,
+	0x7bc, 0x7c2, 0x7ce, 0x7da, 0x7e6, 0x7ec, 0x7f2, 0x7fb, 0x801, 0x80a, 0x813, 0x81f,
+	0x828, 0x82e, 0x843, 0x858, 0x861, 0x86d, 0x873, 0x891, 0x8a0, 0x8ac, 0x8c1, 0x8ca,
+	0x8d0, 0x8d9, 0x8df, 0x8f4, 0x8fd, 0x909, 0x915, 0x91e, 0x927, 0x939, 0x948, 0x951,
+	0x957, 0x95d, 0x966, 0x975, 0x984, 0x99c, 0x9a8, 0x9b1, 0x9bd, 0x9c9, 0x9d5, 0x9de,
+	0x9e7, 0x9fc, 0xa08, 0xa17, 0xa20, 0xa2c, 0xa4a, 0xa62, 0xa68, 0xa7a, 0xa80, 0xa86,
+	0xa8f, 0xa9e, 0xaa7, 0xab0, 0xabc, 0xac2, 0xacb, 0xae0, 0xae9, 0xaef, 0xafb, 0xb04,
+	0xb0d, 0xb25, 0xb2b, 0xb34, 0xb40, 0xb49, 0xb61, 0xb6d, 0xb7f, 0xb91, 0xb97, 0xba0,
+	0xbbb, 0xbca, 0xbd3, 0xbd9, 0xbe2, 0xbe8, 0xbf1, 0xbfa, 0xc06, 0xc0c, 0xc12, 0xc1b,
+	0xc24, 0xc2d, 0xc33, 0xc39, 0xc3f, 0xc45, 0xc4b, 0xc57, 0xc5d, 0xc63, 0xc6f, 0xc75,
+	0xc7b, 0xc84, 0xc8a, 0xc9c, 0xcab, 0xcbd, 0xccc, 0xcd2, 0xcd8, 0xcde, 0xce4, 0xcea,
+	0xcf0, 0xcf6, 0xd02,
 }
 
 const zuRegionStr = "" +
@@ -31582,22 +30524,21 @@
 	0xdde, 0xdee, 0xdfd,
 }
 
-// Total size for region: 795869 bytes (795 KB)
+// Total size for region: 787475 bytes (787 KB)
 
-const numSupported = 220
+const numSupported = 210
 const supported = "" +
-	"af|agq|ak|am|ar|ar-AE|ar-EG|as|asa|ast|az|az-Cyrl|bas|be|bem|bez|bg|bm|bn|bn-IN|" +
-	"bo|bo-IN|br|brx|bs|bs-Cyrl|ca|cgg|chr|cs|cy|da|dav|de|de-CH|dje|dsb|dua|dyo|dz|" +
-	"ebu|ee|el|en|en-AU|en-GB|eo|es|es-419|es-CL|es-MX|et|eu|ewo|fa|fa-AF|ff|fi|fil|" +
-	"fo|fr|fr-CA|fur|fy|ga|gd|gl|gsw|gu|guz|gv|ha|haw|he|hi|hr|hsb|hu|hy|id|ig|ii|is|" +
-	"it|ja|jgo|jmc|ka|kab|kam|kde|kea|khq|ki|kk|kkj|kl|kln|km|kn|ko|kok|ks|ksb|ksf|" +
-	"ksh|kw|ky|lag|lb|lg|lkt|ln|lo|lt|lu|luo|luy|lv|mas|mer|mfe|mg|mgh|mgo|mk|ml|mn|" +
-	"mr|ms|mt|mua|my|naq|nd|ne|ne-IN|nl|nl-BE|nmg|nn|nnh|no|nus|nyn|om|or|os|pa|" +
-	"pa-Arab|pl|ps|pt|pt-PT|qu|rm|rn|ro|rof|ru|ru-UA|rw|rwk|sah|saq|sbp|se|se-FI|seh|" +
-	"ses|sg|shi|shi-Latn|si|sk|sl|smn|sn|so|sq|sr|sr-Latn|sv|sv-FI|sw|swc|ta|te|teo|" +
-	"th|ti|to|tr|twq|tzm|ug|uk|ur|ur-IN|uz|uz-Arab|uz-Cyrl|vai|vai-Latn|vi|vun|wae|" +
-	"xog|yav|yi|yo|yo-BJ|zgh|zh|zh-Hans-HK|zh-Hans-MO|zh-Hans-SG|zh-Hant|zh-Hant-HK|" +
-	"zu|"
+	"af|agq|ak|am|ar|ar-EG|as|asa|ast|az|az-Cyrl|bas|be|bem|bez|bg|bm|bn|bo|bo-IN|br|" +
+	"brx|bs|bs-Cyrl|ca|cgg|chr|cs|cy|da|dav|de|de-CH|dje|dsb|dua|dyo|dz|ebu|ee|el|en|" +
+	"en-AU|eo|es|es-CL|es-MX|et|eu|ewo|fa|fa-AF|ff|fi|fil|fo|fr|fr-CA|fur|fy|ga|gd|" +
+	"gl|gsw|gu|guz|gv|ha|haw|he|hi|hr|hsb|hu|hy|id|ig|ii|is|it|ja|jgo|jmc|ka|kab|kam|" +
+	"kde|kea|khq|ki|kk|kkj|kl|kln|km|kn|ko|kok|ks|ksb|ksf|ksh|kw|ky|lag|lb|lg|lkt|ln|" +
+	"lo|lt|lu|luo|luy|lv|mas|mer|mfe|mg|mgh|mgo|mk|ml|mn|mr|ms|mt|mua|my|naq|nd|ne|" +
+	"nl|nmg|nn|nnh|no|nus|nyn|om|or|os|pa|pa-Arab|pl|ps|pt|pt-PT|qu|rm|rn|ro|rof|ru|" +
+	"rw|rwk|sah|saq|sbp|se|se-FI|seh|ses|sg|shi|shi-Latn|si|sk|sl|smn|sn|so|sq|sr|" +
+	"sr-Latn|sv|sv-FI|sw|sw-CD|ta|te|teo|th|ti|to|tr|twq|tzm|ug|uk|ur|ur-IN|uz|" +
+	"uz-Arab|uz-Cyrl|vai|vai-Latn|vi|vun|wae|xog|yav|yi|yo|yo-BJ|zgh|zh|zh-Hant|" +
+	"zh-Hant-HK|zu|"
 
 // Dictionary entries of frequent languages
 var (
@@ -31673,24 +30614,12 @@
 		header{enScriptStr, enScriptIdx},
 		header{enRegionStr, enRegionIdx},
 	}
-	enGB = Dictionary{ // en-GB
-		&en,
-		header{enGBLangStr, enGBLangIdx},
-		header{enGBScriptStr, enGBScriptIdx},
-		header{enGBRegionStr, enGBRegionIdx},
-	}
 	es = Dictionary{ // es
 		nil,
 		header{esLangStr, esLangIdx},
 		header{esScriptStr, esScriptIdx},
 		header{esRegionStr, esRegionIdx},
 	}
-	es419 = Dictionary{ // es-419
-		&es,
-		header{es419LangStr, es419LangIdx},
-		header{es419ScriptStr, es419ScriptIdx},
-		header{es419RegionStr, es419RegionIdx},
-	}
 	et = Dictionary{ // et
 		nil,
 		header{etLangStr, etLangIdx},
@@ -31961,6 +30890,12 @@
 		header{srScriptStr, srScriptIdx},
 		header{srRegionStr, srRegionIdx},
 	}
+	srLatn = Dictionary{ // sr-Latn
+		nil,
+		header{srLatnLangStr, srLatnLangIdx},
+		header{srLatnScriptStr, srLatnScriptIdx},
+		header{srLatnRegionStr, srLatnRegionIdx},
+	}
 	sv = Dictionary{ // sv
 		nil,
 		header{svLangStr, svLangIdx},
@@ -32041,13 +30976,13 @@
 	}
 )
 
-// Total size for 78 entries: 9984 bytes (9 KB)
+// Total size for 79 entries: 10112 bytes (10 KB)
 
-// Number of keys: 212
+// Number of keys: 211
 var (
 	selfIndex = tagIndex{
 		"afakamarasazbebgbmbnbobrbscacscydadedzeeeleneoeseteufafffifofrfygagdglgugvhahehihrhuhyidigiiisitjakakikkklkmknkokskwkylblglnloltlulvmgmkmlmnmrmsmtmyndnenlnnnoomorospaplpsptqurmrnrorurwsesgsiskslsnsosqsrsvswtatethtitotrugukuruzviyiyozhzu",
-		"agqasaastbasbembezbrxcggchrdavdjedsbduadyoebuewofilfurgswguzhawhsbjgojmckabkamkdekeakhqkkjklnkokksbksfkshlaglktluoluymasmermfemghmgomuanaqnnhnusnynrofrwksahsaqsbpsehsesshismnswcteotwqtzmvaivunwaexogyavzgh",
+		"agqasaastbasbembezbrxcggchrdavdjedsbduadyoebuewofilfurgswguzhawhsbjgojmckabkamkdekeakhqkkjklnkokksbksfkshlaglktluoluymasmermfemghmgomuanaqnnhnusnynrofrwksahsaqsbpsehsesshismnteotwqtzmvaivunwaexogyavzgh",
 		"",
 	}
 	selfTagsLong = []string{"ar-001", "az-Cyrl", "bs-Cyrl", "de-AT", "de-CH", "en-AU", "en-CA", "en-GB", "en-US", "es-419", "es-ES", "es-MX", "fr-CA", "fr-CH", "nl-BE", "pa-Arab", "pt-BR", "pt-PT", "ro-MD", "shi-Latn", "sr-Latn", "uz-Arab", "uz-Cyrl", "vai-Latn", "zh-Hans", "zh-Hant"}
@@ -32058,48 +30993,48 @@
 		"AfrikaansAkanአማርኛالعربيةঅসমীয়াazərbaycanбеларускаябългарскиbamanakanবাংলাབོད་སྐ" +
 			"ད་brezhonegbosanskicatalàčeštinaCymraegdanskDeutschརྫོང་ཁeʋegbeΕλληνικάEnglishes" +
 			"perantoespañoleestieuskaraفارسیPulaarsuomiføroysktfrançaisWest-FryskGaeilgeGàidh" +
-			"liggalegoગુજરાતીGaelgHausaעבריתहिंदीhrvatskimagyarհայերենBahasa IndonesiaIgboꆈꌠꉙ" +
-			"íslenskaitaliano日本語ქართულიGikuyuқазақ тіліkalaallisutខ្មែរಕನ್ನಡ한국어کٲشُرkernewekк" +
-			"ыргызчаLëtzebuergeschLugandalingálaລາວlietuviųTshilubalatviešuMalagasyмакедонски" +
-			"മലയാളംмонголमराठीBahasa MelayuMaltiဗမာisiNdebeleनेपालीNederlandsnynorsknorsk bok" +
-			"målOromooଓଡ଼ିଆиронਪੰਜਾਬੀpolskiپښتوportuguêsRunasimirumantschIkirundiromânăрусски" +
-			"йKinyarwandadavvisámegiellaSängöසිංහලslovenčinaslovenščinachiShonaSoomaalishqipс" +
-			"рпскиsvenskaKiswahiliதமிழ்తెలుగుไทยትግርኛlea fakatongaTürkçeئۇيغۇرچەукраїнськаاردو" +
-			"oʻzbekchaTiếng ViệtייִדישÈdè Yorùbá中文isiZuluAghemKipareasturianuƁàsàaIchibembaHi" +
-			"benaबड़ोRukigaᏣᎳᎩKitaitaZarmaciinedolnoserbšćinaduálájoolaKĩembuewondoFilipinofu" +
-			"rlanSchwiizertüütschEkegusiiʻŌlelo HawaiʻihornjoserbšćinaNdaꞌaKimachameTaqbaylit" +
-			"KikambaChimakondekabuverdianuKoyra ciinikakɔKalenjinकोंकणीKishambaarikpaKölschKɨ" +
-			"laangiLakȟólʼiyapiDholuoLuluhiaMaaKĩmĩrũkreol morisienMakuametaʼMUNDAŊKhoekhoego" +
-			"wabShwóŋò ngiembɔɔnThok NathRunyankoreKihoromboKiruwaсаха тылаKisampurIshisangus" +
-			"enaKoyraboro senniⵜⴰⵎⴰⵣⵉⵖⵜanarâškielâKiswahili ya KongoKitesoTasawaq senniTamazi" +
-			"ɣtꕙꔤKyivunjoWalserOlusoganuasueⵜⴰⵎⴰⵣⵉⵖⵜالعربية الرسمية الحديثةАзәрбајҹанбосански" +
-			"Österreichisches DeutschSchweizer HochdeutschAustralian EnglishCanadian EnglishB" +
-			"ritish EnglishAmerican Englishespañol de Américaespañol de Españaespañol de Méxi" +
-			"cofrançais canadienfrançais suisseVlaamsپنجابیportuguês do Brasilportuguês europ" +
-			"eumoldoveneascătamazightSrpskohrvatskiاوزبیکЎзбекVai简体中文繁體中文",
-		[]uint16{ // 213 entries
+			"liggalegoગુજરાતીGaelgHausaעבריתहिन्दीhrvatskimagyarհայերենBahasa IndonesiaIgboꆈꌠ" +
+			"ꉙíslenskaitaliano日本語ქართულიGikuyuқазақ тіліkalaallisutខ្មែរಕನ್ನಡ한국어کٲشُرkernewek" +
+			"кыргызчаLëtzebuergeschLugandalingálaລາວlietuviųTshilubalatviešuMalagasyмакедонск" +
+			"иമലയാളംмонголमराठीBahasa MelayuMaltiဗမာisiNdebeleनेपालीNederlandsnynorsknorsk bo" +
+			"kmålOromooଓଡ଼ିଆиронਪੰਜਾਬੀpolskiپښتوportuguêsRunasimirumantschIkirundiromânăрусск" +
+			"ийKinyarwandadavvisámegiellaSängöසිංහලslovenčinaslovenščinachiShonaSoomaalishqip" +
+			"српскиsvenskaKiswahiliதமிழ்తెలుగుไทยትግርኛlea fakatongaTürkçeئۇيغۇرچەукраїнськаارد" +
+			"وoʻzbekchaTiếng ViệtייִדישÈdè Yorùbá中文isiZuluAghemKipareasturianuƁàsàaIchibembaH" +
+			"ibenaबड़ोRukigaᏣᎳᎩKitaitaZarmaciinedolnoserbšćinaduálájoolaKĩembuewondoFilipinof" +
+			"urlanSchwiizertüütschEkegusiiʻŌlelo HawaiʻihornjoserbšćinaNdaꞌaKimachameTaqbayli" +
+			"tKikambaChimakondekabuverdianuKoyra ciinikakɔKalenjinकोंकणीKishambaarikpaKölschK" +
+			"ɨlaangiLakȟólʼiyapiDholuoLuluhiaMaaKĩmĩrũkreol morisienMakuametaʼMUNDAŊKhoekhoeg" +
+			"owabShwóŋò ngiembɔɔnThok NathRunyankoreKihoromboKiruwaсаха тылаKisampurIshisangu" +
+			"senaKoyraboro senniⵜⴰⵎⴰⵣⵉⵖⵜanarâškielâKitesoTasawaq senniTamaziɣtꕙꔤKyivunjoWalse" +
+			"rOlusoganuasueⵜⴰⵎⴰⵣⵉⵖⵜالعربية الرسمية الحديثةАзәрбајҹанбосанскиÖsterreichisches " +
+			"DeutschSchweizer HochdeutschAustralian EnglishCanadian EnglishBritish EnglishAme" +
+			"rican Englishespañol latinoamericanoespañol de Españaespañol de Méxicofrançais c" +
+			"anadienfrançais suisseVlaamsپنجابیportuguês do Brasilportuguês europeumoldovenea" +
+			"scătamazightSrpskohrvatskiاوزبیکЎзбекVai简体中文繁體中文",
+		[]uint16{ // 212 entries
 			0x0, 0x9, 0xd, 0x19, 0x27, 0x3c, 0x47, 0x5b, 0x6d, 0x76, 0x85, 0x9d,
 			0xa6, 0xae, 0xb5, 0xbe, 0xc5, 0xca, 0xd1, 0xe3, 0xea, 0xfa, 0x101, 0x10a,
 			0x112, 0x117, 0x11e, 0x128, 0x12e, 0x133, 0x13c, 0x145, 0x14f, 0x156, 0x15f, 0x165,
-			0x17a, 0x17f, 0x184, 0x18e, 0x19d, 0x1a5, 0x1ab, 0x1b9, 0x1c9, 0x1cd, 0x1d6, 0x1df,
-			0x1e7, 0x1f0, 0x205, 0x20b, 0x21e, 0x229, 0x238, 0x247, 0x250, 0x25a, 0x262, 0x272,
-			0x281, 0x288, 0x290, 0x299, 0x2a2, 0x2aa, 0x2b3, 0x2bb, 0x2cf, 0x2e1, 0x2ed, 0x2fc,
-			0x309, 0x30e, 0x317, 0x321, 0x333, 0x33d, 0x344, 0x351, 0x357, 0x366, 0x36e, 0x380,
-			0x386, 0x38e, 0x398, 0x3a0, 0x3a9, 0x3b1, 0x3b9, 0x3c7, 0x3d2, 0x3e2, 0x3e9, 0x3f8,
-			0x403, 0x410, 0x418, 0x420, 0x425, 0x431, 0x438, 0x441, 0x450, 0x462, 0x46b, 0x477,
-			0x484, 0x48c, 0x49c, 0x4b0, 0x4b8, 0x4c2, 0x4d0, 0x4dc, 0x4ea, 0x4f0, 0x4f7, 0x4fc,
-			0x502, 0x50b, 0x513, 0x51c, 0x522, 0x52e, 0x534, 0x53d, 0x544, 0x54e, 0x55e, 0x565,
-			0x56a, 0x571, 0x577, 0x57f, 0x585, 0x597, 0x59f, 0x5b0, 0x5c1, 0x5c8, 0x5d1, 0x5da,
-			0x5e1, 0x5eb, 0x5f7, 0x602, 0x607, 0x60f, 0x621, 0x62a, 0x62f, 0x636, 0x63f, 0x64e,
-			0x654, 0x65b, 0x65e, 0x667, 0x675, 0x67a, 0x680, 0x687, 0x694, 0x6a9, 0x6b2, 0x6bc,
-			0x6c5, 0x6cb, 0x6dc, 0x6e4, 0x6ed, 0x6f1, 0x700, 0x718, 0x726, 0x738, 0x73e, 0x74b,
-			0x754, 0x75a, 0x762, 0x768, 0x76f, 0x775, 0x78d, 0x7b9, 0x7cd, 0x7dd, 0x7f6, 0x80b,
-			0x81d, 0x82d, 0x83c, 0x84c, 0x860, 0x873, 0x886, 0x898, 0x8a8, 0x8ae, 0x8ba, 0x8ce,
-			0x8e0, 0x8ee, 0x8f7, 0x905, 0x911, 0x91b, 0x91e, 0x92a, 0x936,
+			0x17a, 0x17f, 0x184, 0x18e, 0x1a0, 0x1a8, 0x1ae, 0x1bc, 0x1cc, 0x1d0, 0x1d9, 0x1e2,
+			0x1ea, 0x1f3, 0x208, 0x20e, 0x221, 0x22c, 0x23b, 0x24a, 0x253, 0x25d, 0x265, 0x275,
+			0x284, 0x28b, 0x293, 0x29c, 0x2a5, 0x2ad, 0x2b6, 0x2be, 0x2d2, 0x2e4, 0x2f0, 0x2ff,
+			0x30c, 0x311, 0x31a, 0x324, 0x336, 0x340, 0x347, 0x354, 0x35a, 0x369, 0x371, 0x383,
+			0x389, 0x391, 0x39b, 0x3a3, 0x3ac, 0x3b4, 0x3bc, 0x3ca, 0x3d5, 0x3e5, 0x3ec, 0x3fb,
+			0x406, 0x413, 0x41b, 0x423, 0x428, 0x434, 0x43b, 0x444, 0x453, 0x465, 0x46e, 0x47a,
+			0x487, 0x48f, 0x49f, 0x4b3, 0x4bb, 0x4c5, 0x4d3, 0x4df, 0x4ed, 0x4f3, 0x4fa, 0x4ff,
+			0x505, 0x50e, 0x516, 0x51f, 0x525, 0x531, 0x537, 0x540, 0x547, 0x551, 0x561, 0x568,
+			0x56d, 0x574, 0x57a, 0x582, 0x588, 0x59a, 0x5a2, 0x5b3, 0x5c4, 0x5cb, 0x5d4, 0x5dd,
+			0x5e4, 0x5ee, 0x5fa, 0x605, 0x60a, 0x612, 0x624, 0x62d, 0x632, 0x639, 0x642, 0x651,
+			0x657, 0x65e, 0x661, 0x66a, 0x678, 0x67d, 0x683, 0x68a, 0x697, 0x6ac, 0x6b5, 0x6bf,
+			0x6c8, 0x6ce, 0x6df, 0x6e7, 0x6f0, 0x6f4, 0x703, 0x71b, 0x729, 0x72f, 0x73c, 0x745,
+			0x74b, 0x753, 0x759, 0x760, 0x766, 0x77e, 0x7aa, 0x7be, 0x7ce, 0x7e7, 0x7fc, 0x80e,
+			0x81e, 0x82d, 0x83d, 0x855, 0x868, 0x87b, 0x88d, 0x89d, 0x8a3, 0x8af, 0x8c3, 0x8d5,
+			0x8e3, 0x8ec, 0x8fa, 0x906, 0x910, 0x913, 0x91f, 0x92b,
 		},
 	},
 }
 
-// Total size for self: 3906 bytes (3 KB)
+// Total size for self: 3890 bytes (3 KB)
 
-// TOTAL 1883101 Bytes (1883 KB)
+// TOTAL 1854356 Bytes (1854 KB)
diff --git a/go/src/golang.org/x/text/doc.go b/go/src/golang.org/x/text/doc.go
new file mode 100644
index 0000000..9d65bfb
--- /dev/null
+++ b/go/src/golang.org/x/text/doc.go
@@ -0,0 +1,12 @@
+// Copyright 2015 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.
+
+//go:generate go run gen.go
+
+// text is a repository of text-related packages, such as character encodings,
+// text transformations, and locale-specific text handling.
+package text
+
+// TODO: more documentation on general concepts, such as Transformers, use
+// of normalization, etc.
diff --git a/go/src/golang.org/x/text/encoding/charmap/charmap.go b/go/src/golang.org/x/text/encoding/charmap/charmap.go
index 1bacf03..caf466e 100644
--- a/go/src/golang.org/x/text/encoding/charmap/charmap.go
+++ b/go/src/golang.org/x/text/encoding/charmap/charmap.go
@@ -9,9 +9,59 @@
 import (
 	"unicode/utf8"
 
+	"golang.org/x/text/encoding"
+	"golang.org/x/text/encoding/internal"
+	"golang.org/x/text/encoding/internal/identifier"
 	"golang.org/x/text/transform"
 )
 
+// These encodings vary only in the way clients should interpret them. Their
+// coded character set is identical and a single implementation can be shared.
+var (
+	// ISO8859_6E is the ISO 8859-6E encoding.
+	ISO8859_6E encoding.Encoding = &iso8859_6E
+
+	// ISO8859_6I is the ISO 8859-6I encoding.
+	ISO8859_6I encoding.Encoding = &iso8859_6I
+
+	// ISO8859_8E is the ISO 8859-8E encoding.
+	ISO8859_8E encoding.Encoding = &iso8859_8E
+
+	// ISO8859_8I is the ISO 8859-8I encoding.
+	ISO8859_8I encoding.Encoding = &iso8859_8I
+
+	iso8859_6E = internal.Encoding{
+		ISO8859_6,
+		"ISO-8859-6E",
+		identifier.ISO88596E,
+	}
+
+	iso8859_6I = internal.Encoding{
+		ISO8859_6,
+		"ISO-8859-6I",
+		identifier.ISO88596I,
+	}
+
+	iso8859_8E = internal.Encoding{
+		ISO8859_8,
+		"ISO-8859-8E",
+		identifier.ISO88598E,
+	}
+
+	iso8859_8I = internal.Encoding{
+		ISO8859_8,
+		"ISO-8859-8I",
+		identifier.ISO88598I,
+	}
+)
+
+// All is a list of all defined encodings in this package.
+var All = listAll
+
+// TODO: implement these encodings, in order of importance.
+// ASCII, ISO8859_1:       Rather common. Close to Windows 1252.
+// ISO8859_9:              Close to Windows 1254.
+
 // utf8Enc holds a rune's UTF-8 encoding in data[:len].
 type utf8Enc struct {
 	len  uint8
@@ -22,6 +72,8 @@
 type charmap struct {
 	// name is the encoding's name.
 	name string
+	// mib is the encoding type of this encoder.
+	mib identifier.MIB
 	// asciiSuperset states whether the encoding is a superset of ASCII.
 	asciiSuperset bool
 	// low is the lower bound of the encoded byte for a non-ASCII rune. If
@@ -49,6 +101,10 @@
 	return m.name
 }
 
+func (m *charmap) ID() (mib identifier.MIB, other string) {
+	return m.mib, ""
+}
+
 // charmapDecoder implements transform.Transformer by decoding to UTF-8.
 type charmapDecoder struct {
 	transform.NopResetter
diff --git a/go/src/golang.org/x/text/encoding/charmap/maketables.go b/go/src/golang.org/x/text/encoding/charmap/maketables.go
index c6d6c09..fc87c21 100644
--- a/go/src/golang.org/x/text/encoding/charmap/maketables.go
+++ b/go/src/golang.org/x/text/encoding/charmap/maketables.go
@@ -29,6 +29,7 @@
 
 var encodings = []struct {
 	name        string
+	mib         string
 	comment     string
 	varName     string
 	replacement byte
@@ -36,6 +37,7 @@
 }{
 	{
 		"IBM Code Page 437",
+		"PC8CodePage437",
 		"",
 		"CodePage437",
 		encoding.ASCIISub,
@@ -47,6 +49,7 @@
 	},
 	{
 		"IBM Code Page 866",
+		"IBM866",
 		"",
 		"CodePage866",
 		encoding.ASCIISub,
@@ -54,6 +57,7 @@
 	},
 	{
 		"ISO 8859-2",
+		"ISOLatin2",
 		"",
 		"ISO8859_2",
 		encoding.ASCIISub,
@@ -61,6 +65,7 @@
 	},
 	{
 		"ISO 8859-3",
+		"ISOLatin3",
 		"",
 		"ISO8859_3",
 		encoding.ASCIISub,
@@ -68,6 +73,7 @@
 	},
 	{
 		"ISO 8859-4",
+		"ISOLatin4",
 		"",
 		"ISO8859_4",
 		encoding.ASCIISub,
@@ -75,6 +81,7 @@
 	},
 	{
 		"ISO 8859-5",
+		"ISOLatinCyrillic",
 		"",
 		"ISO8859_5",
 		encoding.ASCIISub,
@@ -82,13 +89,15 @@
 	},
 	{
 		"ISO 8859-6",
+		"ISOLatinArabic",
 		"",
-		"ISO8859_6",
+		"ISO8859_6,ISO8859_6E,ISO8859_6I",
 		encoding.ASCIISub,
 		"http://encoding.spec.whatwg.org/index-iso-8859-6.txt",
 	},
 	{
 		"ISO 8859-7",
+		"ISOLatinGreek",
 		"",
 		"ISO8859_7",
 		encoding.ASCIISub,
@@ -96,13 +105,15 @@
 	},
 	{
 		"ISO 8859-8",
+		"ISOLatinHebrew",
 		"",
-		"ISO8859_8",
+		"ISO8859_8,ISO8859_8E,ISO8859_8I",
 		encoding.ASCIISub,
 		"http://encoding.spec.whatwg.org/index-iso-8859-8.txt",
 	},
 	{
 		"ISO 8859-10",
+		"ISOLatin6",
 		"",
 		"ISO8859_10",
 		encoding.ASCIISub,
@@ -110,6 +121,7 @@
 	},
 	{
 		"ISO 8859-13",
+		"ISO885913",
 		"",
 		"ISO8859_13",
 		encoding.ASCIISub,
@@ -117,6 +129,7 @@
 	},
 	{
 		"ISO 8859-14",
+		"ISO885914",
 		"",
 		"ISO8859_14",
 		encoding.ASCIISub,
@@ -124,6 +137,7 @@
 	},
 	{
 		"ISO 8859-15",
+		"ISO885915",
 		"",
 		"ISO8859_15",
 		encoding.ASCIISub,
@@ -131,6 +145,7 @@
 	},
 	{
 		"ISO 8859-16",
+		"ISO885916",
 		"",
 		"ISO8859_16",
 		encoding.ASCIISub,
@@ -138,6 +153,7 @@
 	},
 	{
 		"KOI8-R",
+		"KOI8R",
 		"",
 		"KOI8R",
 		encoding.ASCIISub,
@@ -145,6 +161,7 @@
 	},
 	{
 		"KOI8-U",
+		"KOI8U",
 		"",
 		"KOI8U",
 		encoding.ASCIISub,
@@ -152,6 +169,7 @@
 	},
 	{
 		"Macintosh",
+		"Macintosh",
 		"",
 		"Macintosh",
 		encoding.ASCIISub,
@@ -159,6 +177,7 @@
 	},
 	{
 		"Macintosh Cyrillic",
+		"MacintoshCyrillic",
 		"",
 		"MacintoshCyrillic",
 		encoding.ASCIISub,
@@ -166,6 +185,7 @@
 	},
 	{
 		"Windows 874",
+		"Windows874",
 		"",
 		"Windows874",
 		encoding.ASCIISub,
@@ -173,6 +193,7 @@
 	},
 	{
 		"Windows 1250",
+		"Windows1250",
 		"",
 		"Windows1250",
 		encoding.ASCIISub,
@@ -180,6 +201,7 @@
 	},
 	{
 		"Windows 1251",
+		"Windows1251",
 		"",
 		"Windows1251",
 		encoding.ASCIISub,
@@ -187,6 +209,7 @@
 	},
 	{
 		"Windows 1252",
+		"Windows1252",
 		"",
 		"Windows1252",
 		encoding.ASCIISub,
@@ -194,6 +217,7 @@
 	},
 	{
 		"Windows 1253",
+		"Windows1253",
 		"",
 		"Windows1253",
 		encoding.ASCIISub,
@@ -201,6 +225,7 @@
 	},
 	{
 		"Windows 1254",
+		"Windows1254",
 		"",
 		"Windows1254",
 		encoding.ASCIISub,
@@ -208,6 +233,7 @@
 	},
 	{
 		"Windows 1255",
+		"Windows1255",
 		"",
 		"Windows1255",
 		encoding.ASCIISub,
@@ -215,6 +241,7 @@
 	},
 	{
 		"Windows 1256",
+		"Windows1256",
 		"",
 		"Windows1256",
 		encoding.ASCIISub,
@@ -222,6 +249,7 @@
 	},
 	{
 		"Windows 1257",
+		"Windows1257",
 		"",
 		"Windows1257",
 		encoding.ASCIISub,
@@ -229,6 +257,7 @@
 	},
 	{
 		"Windows 1258",
+		"Windows1258",
 		"",
 		"Windows1258",
 		encoding.ASCIISub,
@@ -236,6 +265,7 @@
 	},
 	{
 		"X-User-Defined",
+		"XUserDefined",
 		"It is defined at http://encoding.spec.whatwg.org/#x-user-defined",
 		"XUserDefined",
 		encoding.ASCIISub,
@@ -295,11 +325,20 @@
 }
 
 func main() {
+	mibs := map[string]bool{}
+	all := []string{}
+
 	buf := make([]byte, 8)
 	fmt.Printf("// generated by go run maketables.go; DO NOT EDIT\n\n")
 	fmt.Printf("package charmap\n\n")
-	fmt.Printf("import \"golang.org/x/text/encoding\"\n\n")
+	fmt.Printf("import (\n")
+	fmt.Printf("\t\"golang.org/x/text/encoding\"\n")
+	fmt.Printf("\t\"golang.org/x/text/encoding/internal/identifier\"\n")
+	fmt.Printf(")\n\n")
 	for _, e := range encodings {
+		varNames := strings.Split(e.varName, ",")
+		all = append(all, varNames...)
+		varName := varNames[0]
 		if strings.HasPrefix(e.mapping, "http://encoding.spec.whatwg.org/") {
 			e.mapping = getWHATWG(e.mapping)
 		}
@@ -309,16 +348,20 @@
 			low = 0x80
 		}
 		lvn := 1
-		if strings.HasPrefix(e.varName, "ISO") || strings.HasPrefix(e.varName, "KOI") {
+		if strings.HasPrefix(varName, "ISO") || strings.HasPrefix(varName, "KOI") {
 			lvn = 3
 		}
-		lowerVarName := strings.ToLower(e.varName[:lvn]) + e.varName[lvn:]
-		fmt.Printf("// %s is the %s encoding.\n", e.varName, e.name)
+		lowerVarName := strings.ToLower(varName[:lvn]) + varName[lvn:]
+		fmt.Printf("// %s is the %s encoding.\n", varName, e.name)
 		if e.comment != "" {
 			fmt.Printf("//\n// %s\n", e.comment)
 		}
 		fmt.Printf("var %s encoding.Encoding = &%s\n\nvar %s = charmap{\nname: %q,\n",
-			e.varName, lowerVarName, lowerVarName, e.name)
+			varName, lowerVarName, lowerVarName, e.name)
+		if mibs[e.mib] {
+			log.Fatalf("MIB type %q declared multiple times.", e.mib)
+		}
+		fmt.Printf("mib: identifier.%s,\n", e.mib)
 		fmt.Printf("asciiSuperset: %t,\n", asciiSuperset)
 		fmt.Printf("low: 0x%02x,\n", low)
 		fmt.Printf("replacement: 0x%02x,\n", e.replacement)
@@ -361,6 +404,8 @@
 		}
 		fmt.Printf("},\n}\n")
 	}
+	// TODO: add proper line breaking.
+	fmt.Printf("var listAll = []encoding.Encoding{\n%s,\n}\n\n", strings.Join(all, ",\n"))
 }
 
 type byRune []uint32
diff --git a/go/src/golang.org/x/text/encoding/charmap/tables.go b/go/src/golang.org/x/text/encoding/charmap/tables.go
index c1a709f..9500728 100644
--- a/go/src/golang.org/x/text/encoding/charmap/tables.go
+++ b/go/src/golang.org/x/text/encoding/charmap/tables.go
@@ -2,13 +2,17 @@
 
 package charmap
 
-import "golang.org/x/text/encoding"
+import (
+	"golang.org/x/text/encoding"
+	"golang.org/x/text/encoding/internal/identifier"
+)
 
 // CodePage437 is the IBM Code Page 437 encoding.
 var CodePage437 encoding.Encoding = &codePage437
 
 var codePage437 = charmap{
 	name:          "IBM Code Page 437",
+	mib:           identifier.PC8CodePage437,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -183,6 +187,7 @@
 
 var codePage866 = charmap{
 	name:          "IBM Code Page 866",
+	mib:           identifier.IBM866,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -357,6 +362,7 @@
 
 var iso8859_2 = charmap{
 	name:          "ISO 8859-2",
+	mib:           identifier.ISOLatin2,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -531,6 +537,7 @@
 
 var iso8859_3 = charmap{
 	name:          "ISO 8859-3",
+	mib:           identifier.ISOLatin3,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -705,6 +712,7 @@
 
 var iso8859_4 = charmap{
 	name:          "ISO 8859-4",
+	mib:           identifier.ISOLatin4,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -879,6 +887,7 @@
 
 var iso8859_5 = charmap{
 	name:          "ISO 8859-5",
+	mib:           identifier.ISOLatinCyrillic,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -1053,6 +1062,7 @@
 
 var iso8859_6 = charmap{
 	name:          "ISO 8859-6",
+	mib:           identifier.ISOLatinArabic,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -1227,6 +1237,7 @@
 
 var iso8859_7 = charmap{
 	name:          "ISO 8859-7",
+	mib:           identifier.ISOLatinGreek,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -1401,6 +1412,7 @@
 
 var iso8859_8 = charmap{
 	name:          "ISO 8859-8",
+	mib:           identifier.ISOLatinHebrew,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -1575,6 +1587,7 @@
 
 var iso8859_10 = charmap{
 	name:          "ISO 8859-10",
+	mib:           identifier.ISOLatin6,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -1749,6 +1762,7 @@
 
 var iso8859_13 = charmap{
 	name:          "ISO 8859-13",
+	mib:           identifier.ISO885913,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -1923,6 +1937,7 @@
 
 var iso8859_14 = charmap{
 	name:          "ISO 8859-14",
+	mib:           identifier.ISO885914,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -2097,6 +2112,7 @@
 
 var iso8859_15 = charmap{
 	name:          "ISO 8859-15",
+	mib:           identifier.ISO885915,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -2271,6 +2287,7 @@
 
 var iso8859_16 = charmap{
 	name:          "ISO 8859-16",
+	mib:           identifier.ISO885916,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -2445,6 +2462,7 @@
 
 var koi8R = charmap{
 	name:          "KOI8-R",
+	mib:           identifier.KOI8R,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -2619,6 +2637,7 @@
 
 var koi8U = charmap{
 	name:          "KOI8-U",
+	mib:           identifier.KOI8U,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -2793,6 +2812,7 @@
 
 var macintosh = charmap{
 	name:          "Macintosh",
+	mib:           identifier.Macintosh,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -2967,6 +2987,7 @@
 
 var macintoshCyrillic = charmap{
 	name:          "Macintosh Cyrillic",
+	mib:           identifier.MacintoshCyrillic,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -3141,6 +3162,7 @@
 
 var windows874 = charmap{
 	name:          "Windows 874",
+	mib:           identifier.Windows874,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -3315,6 +3337,7 @@
 
 var windows1250 = charmap{
 	name:          "Windows 1250",
+	mib:           identifier.Windows1250,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -3489,6 +3512,7 @@
 
 var windows1251 = charmap{
 	name:          "Windows 1251",
+	mib:           identifier.Windows1251,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -3663,6 +3687,7 @@
 
 var windows1252 = charmap{
 	name:          "Windows 1252",
+	mib:           identifier.Windows1252,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -3837,6 +3862,7 @@
 
 var windows1253 = charmap{
 	name:          "Windows 1253",
+	mib:           identifier.Windows1253,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -4011,6 +4037,7 @@
 
 var windows1254 = charmap{
 	name:          "Windows 1254",
+	mib:           identifier.Windows1254,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -4185,6 +4212,7 @@
 
 var windows1255 = charmap{
 	name:          "Windows 1255",
+	mib:           identifier.Windows1255,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -4359,6 +4387,7 @@
 
 var windows1256 = charmap{
 	name:          "Windows 1256",
+	mib:           identifier.Windows1256,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -4533,6 +4562,7 @@
 
 var windows1257 = charmap{
 	name:          "Windows 1257",
+	mib:           identifier.Windows1257,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -4707,6 +4737,7 @@
 
 var windows1258 = charmap{
 	name:          "Windows 1258",
+	mib:           identifier.Windows1258,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -4883,6 +4914,7 @@
 
 var xUserDefined = charmap{
 	name:          "X-User-Defined",
+	mib:           identifier.XUserDefined,
 	asciiSuperset: true,
 	low:           0x80,
 	replacement:   0x1a,
@@ -5051,3 +5083,34 @@
 		0xf800f7f8, 0xf900f7f9, 0xfa00f7fa, 0xfb00f7fb, 0xfc00f7fc, 0xfd00f7fd, 0xfe00f7fe, 0xff00f7ff,
 	},
 }
+var listAll = []encoding.Encoding{
+	CodePage437,
+	CodePage866,
+	ISO8859_2,
+	ISO8859_3,
+	ISO8859_4,
+	ISO8859_5,
+	ISO8859_6, ISO8859_6E, ISO8859_6I,
+	ISO8859_7,
+	ISO8859_8, ISO8859_8E, ISO8859_8I,
+	ISO8859_10,
+	ISO8859_13,
+	ISO8859_14,
+	ISO8859_15,
+	ISO8859_16,
+	KOI8R,
+	KOI8U,
+	Macintosh,
+	MacintoshCyrillic,
+	Windows874,
+	Windows1250,
+	Windows1251,
+	Windows1252,
+	Windows1253,
+	Windows1254,
+	Windows1255,
+	Windows1256,
+	Windows1257,
+	Windows1258,
+	XUserDefined,
+}
diff --git a/go/src/golang.org/x/text/encoding/encoding_test.go b/go/src/golang.org/x/text/encoding/encoding_test.go
index ac3ff4c..5cdf290 100644
--- a/go/src/golang.org/x/text/encoding/encoding_test.go
+++ b/go/src/golang.org/x/text/encoding/encoding_test.go
@@ -32,6 +32,7 @@
 var basicTestCases = []struct {
 	e         encoding.Encoding
 	encPrefix string
+	encSuffix string
 	encoded   string
 	utf8      string
 }{
@@ -192,7 +193,7 @@
 		utf8:    "\x57\u00e4\U0001d565",
 	},
 	{
-		e:         unicode.UTF16(unicode.BigEndian, unicode.ExpectBOM),
+		e:         utf16BEEB,
 		encPrefix: "\xfe\xff",
 		encoded:   "\x00\x57\x00\xe4\xd8\x35\xdd\x65",
 		utf8:      "\x57\u00e4\U0001d565",
@@ -203,7 +204,7 @@
 		utf8:    "\x57\u00e4\U0001d565",
 	},
 	{
-		e:         unicode.UTF16(unicode.LittleEndian, unicode.ExpectBOM),
+		e:         utf16LEEB,
 		encPrefix: "\xff\xfe",
 		encoded:   "\x57\x00\xe4\x00\x35\xd8\x65\xdd",
 		utf8:      "\x57\u00e4\U0001d565",
@@ -298,15 +299,17 @@
 		utf8: "月日は百代の過客にして、行かふ年も又旅人也。",
 	},
 	{
-		e: japanese.ISO2022JP,
-		encoded: "\x1b(I\x21\x36\x5f\x1b(B " +
-			"0208: \x1b$B\x21\x21\x21\x22\x21\x5f\x21\x60\x21\x7d\x21\x7e\x22\x21\x22\x22\x74\x26",
+		e:         japanese.ISO2022JP,
+		encSuffix: "\x1b\x28\x42",
+		encoded: "\x1b\x28\x49\x21\x36\x5f\x1b\x28\x42 " +
+			"0208: \x1b\x24\x42\x21\x21\x21\x22\x21\x5f\x21\x60\x21\x7d\x21\x7e\x22\x21\x22\x22\x74\x26",
 		utf8: "。カ゚ " +
 			"0208: \u3000\u3001\u00d7\u00f7\u25ce\u25c7\u25c6\u25a1\u7199",
 	},
 	{
 		e:         japanese.ISO2022JP,
 		encPrefix: "\x1b\x24\x42",
+		encSuffix: "\x1b\x28\x42",
 		encoded: "\x37\x6e\x46\x7c\x24\x4f\x49\x34\x42\x65\x24\x4e\x32\x61\x35\x52" +
 			"\x24\x4b\x24\x37\x24\x46\x21\x22\x39\x54\x24\x2b\x24\x55\x47\x2f" +
 			"\x24\x62\x4b\x74\x4e\x39\x3f\x4d\x4c\x69\x21\x23",
@@ -349,39 +352,39 @@
 	for _, tc := range basicTestCases {
 		for _, direction := range []string{"Decode", "Encode"} {
 			newTransformer, want, src := (func() transform.Transformer)(nil), "", ""
-			wPrefix, sPrefix := "", ""
+			wPrefix, sPrefix, wSuffix, sSuffix := "", "", "", ""
 			if direction == "Decode" {
 				newTransformer, want, src = tc.e.NewDecoder, tc.utf8, tc.encoded
-				wPrefix, sPrefix = "", tc.encPrefix
+				wPrefix, sPrefix, wSuffix, sSuffix = "", tc.encPrefix, "", tc.encSuffix
 			} else {
 				newTransformer, want, src = tc.e.NewEncoder, tc.encoded, tc.utf8
-				wPrefix, sPrefix = tc.encPrefix, ""
+				wPrefix, sPrefix, wSuffix, sSuffix = tc.encPrefix, "", tc.encSuffix, ""
 			}
 
-			dst := make([]byte, len(wPrefix)+len(want))
-			nDst, nSrc, err := newTransformer().Transform(dst, []byte(sPrefix+src), true)
+			dst := make([]byte, len(wPrefix)+len(want)+len(wSuffix))
+			nDst, nSrc, err := newTransformer().Transform(dst, []byte(sPrefix+src+sSuffix), true)
 			if err != nil {
 				t.Errorf("%v: %s: %v", tc.e, direction, err)
 				continue
 			}
-			if nDst != len(wPrefix)+len(want) {
+			if nDst != len(wPrefix)+len(want)+len(wSuffix) {
 				t.Errorf("%v: %s: nDst got %d, want %d",
-					tc.e, direction, nDst, len(wPrefix)+len(want))
+					tc.e, direction, nDst, len(wPrefix)+len(want)+len(wSuffix))
 				continue
 			}
-			if nSrc != len(sPrefix)+len(src) {
+			if nSrc != len(sPrefix)+len(src)+len(sSuffix) {
 				t.Errorf("%v: %s: nSrc got %d, want %d",
-					tc.e, direction, nSrc, len(sPrefix)+len(src))
+					tc.e, direction, nSrc, len(sPrefix)+len(src)+len(sSuffix))
 				continue
 			}
-			if got := string(dst); got != wPrefix+want {
+			if got := string(dst); got != wPrefix+want+wSuffix {
 				t.Errorf("%v: %s:\ngot  %q\nwant %q",
-					tc.e, direction, got, wPrefix+want)
+					tc.e, direction, got, wPrefix+want+wSuffix)
 				continue
 			}
 
 			for _, n := range []int{0, 1, 2, 10, 123, 4567} {
-				input := sPrefix + strings.Repeat(src, n)
+				input := sPrefix + strings.Repeat(src, n) + sSuffix
 				sr := strings.NewReader(input)
 				g, err := ioutil.ReadAll(transform.NewReader(sr, newTransformer()))
 				if err != nil {
@@ -393,7 +396,7 @@
 					// regardless of whatever wPrefix is.
 					continue
 				}
-				got1, want1 := string(g), wPrefix+strings.Repeat(want, n)
+				got1, want1 := string(g), wPrefix+strings.Repeat(want, n)+wSuffix
 				if got1 != want1 {
 					t.Errorf("%v: %s: ReadAll: n=%d\ngot  %q\nwant %q",
 						tc.e, direction, n, trim(got1), trim(want1))
@@ -655,13 +658,271 @@
 	}
 }
 
-// TODO: UTF-16-specific tests:
-// - inputs with multiple U+FEFF and U+FFFE runes. These should not be replaced
-//   by U+FFFD.
-// - malformed input: an odd number of bytes (and atEOF), or unmatched
-//   surrogates. These should be replaced with U+FFFD.
+var (
+	utf16LEIB = unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM) // UTF-16LE (atypical interpretation)
+	utf16LEUB = unicode.UTF16(unicode.LittleEndian, unicode.UseBOM)    // UTF-16, LE
+	utf16LEEB = unicode.UTF16(unicode.LittleEndian, unicode.ExpectBOM) // UTF-16, LE, Expect
+	utf16BEIB = unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM)    // UTF-16BE (atypical interpretation)
+	utf16BEUB = unicode.UTF16(unicode.BigEndian, unicode.UseBOM)       // UTF-16 default
+	utf16BEEB = unicode.UTF16(unicode.BigEndian, unicode.ExpectBOM)    // UTF-16 Expect
+)
 
-var utf16LEIB = unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM)
+func TestUTF16(t *testing.T) {
+	testCases := []struct {
+		desc    string
+		src     string
+		notEOF  bool // the inverse of atEOF
+		sizeDst int
+		want    string
+		nSrc    int
+		err     error
+		t       transform.Transformer
+	}{{
+		desc:    "utf-16 dec: BOM determines encoding BE (RFC 2781:3.3)",
+		src:     "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61",
+		sizeDst: 100,
+		want:    "\U00012345=Ra",
+		nSrc:    12,
+		t:       utf16BEUB.NewDecoder(),
+	}, {
+		desc:    "utf-16 dec: BOM determines encoding LE (RFC 2781:3.3)",
+		src:     "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00",
+		sizeDst: 100,
+		want:    "\U00012345=Ra",
+		nSrc:    12,
+		t:       utf16LEUB.NewDecoder(),
+	}, {
+		desc:    "utf-16 dec: BOM determines encoding LE, change default (RFC 2781:3.3)",
+		src:     "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00",
+		sizeDst: 100,
+		want:    "\U00012345=Ra",
+		nSrc:    12,
+		t:       utf16BEUB.NewDecoder(),
+	}, {
+		desc:    "utf-16 dec: Fail on missing BOM when required",
+		src:     "\x08\xD8\x45\xDF\x3D\x00\xFF\xFE\xFE\xFF\x00\x52\x00\x61",
+		sizeDst: 100,
+		want:    "",
+		nSrc:    0,
+		err:     unicode.ErrMissingBOM,
+		t:       utf16BEEB.NewDecoder(),
+	}, {
+		desc:    "utf-16 dec: SHOULD interpret text as big-endian when BOM not present (RFC 2781:4.3)",
+		src:     "\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61",
+		sizeDst: 100,
+		want:    "\U00012345=Ra",
+		nSrc:    10,
+		t:       utf16BEUB.NewDecoder(),
+	}, {
+		// This is an error according to RFC 2781. But errors in RFC 2781 are
+		// open to interpretations, so I guess this is fine.
+		desc:    "utf-16le dec: incorrect BOM is an error (RFC 2781:4.1)",
+		src:     "\xFE\xFF\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00",
+		sizeDst: 100,
+		want:    "\uFFFE\U00012345=Ra",
+		nSrc:    12,
+		t:       utf16LEIB.NewDecoder(),
+	}, {
+		desc:    "utf-16 enc: SHOULD write BOM (RFC 2781:3.3)",
+		src:     "\U00012345=Ra",
+		sizeDst: 100,
+		want:    "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00",
+		nSrc:    7,
+		t:       utf16LEUB.NewEncoder(),
+	}, {
+		desc:    "utf-16 enc: SHOULD write BOM (RFC 2781:3.3)",
+		src:     "\U00012345=Ra",
+		sizeDst: 100,
+		want:    "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61",
+		nSrc:    7,
+		t:       utf16BEUB.NewEncoder(),
+	}, {
+		desc:    "utf-16le enc: MUST NOT write BOM (RFC 2781:3.3)",
+		src:     "\U00012345=Ra",
+		sizeDst: 100,
+		want:    "\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00",
+		nSrc:    7,
+		t:       utf16LEIB.NewEncoder(),
+	}, {
+		desc:    "utf-16be dec: incorrect UTF-16: odd bytes",
+		src:     "\x00",
+		sizeDst: 100,
+		want:    "\uFFFD",
+		nSrc:    1,
+		t:       utf16BEIB.NewDecoder(),
+	}, {
+		desc:    "utf-16be dec: unpaired surrogate, odd bytes",
+		src:     "\xD8\x45\x00",
+		sizeDst: 100,
+		want:    "\uFFFD\uFFFD",
+		nSrc:    3,
+		t:       utf16BEIB.NewDecoder(),
+	}, {
+		desc:    "utf-16be dec: unpaired low surrogate + valid text",
+		src:     "\xD8\x45\x00a",
+		sizeDst: 100,
+		want:    "\uFFFDa",
+		nSrc:    4,
+		t:       utf16BEIB.NewDecoder(),
+	}, {
+		desc:    "utf-16be dec: unpaired low surrogate + valid text + single byte",
+		src:     "\xD8\x45\x00ab",
+		sizeDst: 100,
+		want:    "\uFFFDa\uFFFD",
+		nSrc:    5,
+		t:       utf16BEIB.NewDecoder(),
+	}, {
+		desc:    "utf-16le dec: unpaired high surrogate",
+		src:     "\x00\x00\x00\xDC\x12\xD8",
+		sizeDst: 100,
+		want:    "\x00\uFFFD\uFFFD",
+		nSrc:    6,
+		t:       utf16LEIB.NewDecoder(),
+	}, {
+		desc:    "utf-16be dec: two unpaired low surrogates",
+		src:     "\xD8\x45\xD8\x12",
+		sizeDst: 100,
+		want:    "\uFFFD\uFFFD",
+		nSrc:    4,
+		t:       utf16BEIB.NewDecoder(),
+	}, {
+		desc:    "utf-16be dec: short dst",
+		src:     "\x00a",
+		sizeDst: 0,
+		want:    "",
+		nSrc:    0,
+		t:       utf16BEIB.NewDecoder(),
+		err:     transform.ErrShortDst,
+	}, {
+		desc:    "utf-16be dec: short dst surrogate",
+		src:     "\xD8\xF5\xDC\x12",
+		sizeDst: 3,
+		want:    "",
+		nSrc:    0,
+		t:       utf16BEIB.NewDecoder(),
+		err:     transform.ErrShortDst,
+	}, {
+		desc:    "utf-16be dec: short dst trailing byte",
+		src:     "\x00",
+		sizeDst: 2,
+		want:    "",
+		nSrc:    0,
+		t:       utf16BEIB.NewDecoder(),
+		err:     transform.ErrShortDst,
+	}, {
+		desc:    "utf-16be dec: short src",
+		src:     "\x00",
+		notEOF:  true,
+		sizeDst: 3,
+		want:    "",
+		nSrc:    0,
+		t:       utf16BEIB.NewDecoder(),
+		err:     transform.ErrShortSrc,
+	}, {
+		desc:    "utf-16 enc",
+		src:     "\U00012345=Ra",
+		sizeDst: 100,
+		want:    "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61",
+		nSrc:    7,
+		t:       utf16BEUB.NewEncoder(),
+	}, {
+		desc:    "utf-16 enc: short dst normal",
+		src:     "\U00012345=Ra",
+		sizeDst: 9,
+		want:    "\xD8\x08\xDF\x45\x00\x3D\x00\x52",
+		nSrc:    6,
+		t:       utf16BEIB.NewEncoder(),
+		err:     transform.ErrShortDst,
+	}, {
+		desc:    "utf-16 enc: short dst surrogate",
+		src:     "\U00012345=Ra",
+		sizeDst: 3,
+		want:    "",
+		nSrc:    0,
+		t:       utf16BEIB.NewEncoder(),
+		err:     transform.ErrShortDst,
+	}, {
+		desc:    "utf-16 enc: short src",
+		src:     "\U00012345=Ra\xC1",
+		notEOF:  true,
+		sizeDst: 100,
+		want:    "\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61",
+		nSrc:    7,
+		t:       utf16BEIB.NewEncoder(),
+		err:     transform.ErrShortSrc,
+	}, {
+		desc:    "utf-16be dec: don't change byte order mid-stream",
+		src:     "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\xFF\xFE\x00\x52\x00\x61",
+		sizeDst: 100,
+		want:    "\U00012345=\ufffeRa",
+		nSrc:    14,
+		t:       utf16BEUB.NewDecoder(),
+	}, {
+		desc:    "utf-16le dec: don't change byte order mid-stream",
+		src:     "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\xFF\xFE\xFE\xFF\x52\x00\x61\x00",
+		sizeDst: 100,
+		want:    "\U00012345=\ufeff\ufffeRa",
+		nSrc:    16,
+		t:       utf16LEUB.NewDecoder(),
+	}}
+	for i, tc := range testCases {
+		b := make([]byte, tc.sizeDst)
+		nDst, nSrc, err := tc.t.Transform(b, []byte(tc.src), !tc.notEOF)
+		if err != tc.err {
+			t.Errorf("%d:%s: error was %v; want %v", i, tc.desc, err, tc.err)
+		}
+		if got := string(b[:nDst]); got != tc.want {
+			t.Errorf("%d:%s: result was %q: want %q", i, tc.desc, got, tc.want)
+		}
+		if nSrc != tc.nSrc {
+			t.Errorf("%d:%s: nSrc was %d; want %d", i, tc.desc, nSrc, tc.nSrc)
+		}
+	}
+}
+
+func TestBOMOverride(t *testing.T) {
+	dec := unicode.BOMOverride(charmap.CodePage437.NewDecoder())
+	dst := make([]byte, 100)
+	for i, tc := range []struct {
+		src   string
+		atEOF bool
+		dst   string
+		nSrc  int
+		err   error
+	}{
+		0:  {"H\x82ll\x93", true, "Héllô", 5, nil},
+		1:  {"\uFEFFHéllö", true, "Héllö", 10, nil},
+		2:  {"\xFE\xFF\x00H\x00e\x00l\x00l\x00o", true, "Hello", 12, nil},
+		3:  {"\xFF\xFEH\x00e\x00l\x00l\x00o\x00", true, "Hello", 12, nil},
+		4:  {"\uFEFF", true, "", 3, nil},
+		5:  {"\xFE\xFF", true, "", 2, nil},
+		6:  {"\xFF\xFE", true, "", 2, nil},
+		7:  {"\xEF\xBB", true, "\u2229\u2557", 2, nil},
+		8:  {"\xEF", true, "\u2229", 1, nil},
+		9:  {"", true, "", 0, nil},
+		10: {"\xFE", true, "\u220e", 1, nil},
+		11: {"\xFF", true, "\u00a0", 1, nil},
+		12: {"\xEF\xBB", false, "", 0, transform.ErrShortSrc},
+		13: {"\xEF", false, "", 0, transform.ErrShortSrc},
+		14: {"", false, "", 0, transform.ErrShortSrc},
+		15: {"\xFE", false, "", 0, transform.ErrShortSrc},
+		16: {"\xFF", false, "", 0, transform.ErrShortSrc},
+		17: {"\xFF\xFE", false, "", 0, transform.ErrShortSrc},
+	} {
+		dec.Reset()
+		nDst, nSrc, err := dec.Transform(dst, []byte(tc.src), tc.atEOF)
+		got := string(dst[:nDst])
+		if nSrc != tc.nSrc {
+			t.Errorf("%d: nSrc: got %d; want %d", i, nSrc, tc.nSrc)
+		}
+		if got != tc.dst {
+			t.Errorf("%d: got %+q; want %+q", i, got, tc.dst)
+		}
+		if err != tc.err {
+			t.Errorf("%d: error: got %v; want %v", i, err, tc.err)
+		}
+	}
+}
 
 // testdataFiles are files in testdata/*.txt.
 var testdataFiles = []struct {
diff --git a/go/src/golang.org/x/text/encoding/htmlindex/gen.go b/go/src/golang.org/x/text/encoding/htmlindex/gen.go
new file mode 100644
index 0000000..850a3a7
--- /dev/null
+++ b/go/src/golang.org/x/text/encoding/htmlindex/gen.go
@@ -0,0 +1,166 @@
+// Copyright 2015 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.
+
+// +build ignore
+
+package main
+
+import (
+	"bytes"
+	"encoding/json"
+	"fmt"
+	"log"
+	"strings"
+
+	"golang.org/x/text/internal/gen"
+)
+
+type group struct {
+	Encodings []struct {
+		Labels []string
+		Name   string
+	}
+}
+
+func main() {
+	gen.Init()
+
+	r := gen.Open("http://www.w3.org/TR", "w3", "encoding/indexes/encodings.json")
+	var groups []group
+	if err := json.NewDecoder(r).Decode(&groups); err != nil {
+		log.Fatalf("Error reading encodings.json: %v", err)
+	}
+
+	w := &bytes.Buffer{}
+	fmt.Fprintln(w, "type htmlEncoding byte")
+	fmt.Fprintln(w, "const (")
+	for i, g := range groups {
+		for _, e := range g.Encodings {
+			name := consts[e.Name]
+			if name == "" {
+				log.Fatalf("No const defined for %s.", e.Name)
+			}
+			if i == 0 {
+				fmt.Fprintf(w, "%s htmlEncoding = iota\n", name)
+			} else {
+				fmt.Fprintf(w, "%s\n", name)
+			}
+		}
+	}
+	fmt.Fprintln(w, "numEncodings")
+	fmt.Fprint(w, ")\n\n")
+
+	fmt.Fprintln(w, "var canonical = [numEncodings]string{")
+	for _, g := range groups {
+		for _, e := range g.Encodings {
+			fmt.Fprintf(w, "%q,\n", e.Name)
+		}
+	}
+	fmt.Fprint(w, "}\n\n")
+
+	fmt.Fprintln(w, "var nameMap = map[string]htmlEncoding{")
+	for _, g := range groups {
+		for _, e := range g.Encodings {
+			for _, l := range e.Labels {
+				fmt.Fprintf(w, "%q: %s,\n", l, consts[e.Name])
+			}
+		}
+	}
+	fmt.Fprint(w, "}\n\n")
+
+	var tags []string
+	fmt.Fprintln(w, "var localeMap = []htmlEncoding{")
+	for _, loc := range locales {
+		tags = append(tags, loc.tag)
+		fmt.Fprintf(w, "%s, // %s \n", consts[loc.name], loc.tag)
+	}
+	fmt.Fprint(w, "}\n\n")
+
+	fmt.Fprintf(w, "const locales = %q\n", strings.Join(tags, " "))
+
+	gen.WriteGoFile("tables.go", "htmlindex", w.Bytes())
+}
+
+// consts maps canonical encoding name to internal constant.
+var consts = map[string]string{
+	"utf-8":          "utf8",
+	"ibm866":         "ibm866",
+	"iso-8859-2":     "iso8859_2",
+	"iso-8859-3":     "iso8859_3",
+	"iso-8859-4":     "iso8859_4",
+	"iso-8859-5":     "iso8859_5",
+	"iso-8859-6":     "iso8859_6",
+	"iso-8859-7":     "iso8859_7",
+	"iso-8859-8":     "iso8859_8",
+	"iso-8859-8-i":   "iso8859_8I",
+	"iso-8859-10":    "iso8859_10",
+	"iso-8859-13":    "iso8859_13",
+	"iso-8859-14":    "iso8859_14",
+	"iso-8859-15":    "iso8859_15",
+	"iso-8859-16":    "iso8859_16",
+	"koi8-r":         "koi8r",
+	"koi8-u":         "koi8u",
+	"macintosh":      "macintosh",
+	"windows-874":    "windows874",
+	"windows-1250":   "windows1250",
+	"windows-1251":   "windows1251",
+	"windows-1252":   "windows1252",
+	"windows-1253":   "windows1253",
+	"windows-1254":   "windows1254",
+	"windows-1255":   "windows1255",
+	"windows-1256":   "windows1256",
+	"windows-1257":   "windows1257",
+	"windows-1258":   "windows1258",
+	"x-mac-cyrillic": "macintoshCyrillic",
+	"gb18030":        "gb18030",
+	"hz-gb-2312":     "hzgb2312",
+	"big5":           "big5",
+	"euc-jp":         "eucjp",
+	"iso-2022-jp":    "iso2022jp",
+	"shift_jis":      "shiftJIS",
+	"euc-kr":         "euckr",
+	"replacement":    "replacement",
+	"utf-16be":       "utf16be",
+	"utf-16le":       "utf16le",
+	"x-user-defined": "xUserDefined",
+}
+
+// locales is taken from
+// https://html.spec.whatwg.org/multipage/syntax.html#encoding-sniffing-algorithm.
+var locales = []struct{ tag, name string }{
+	{"und", "windows-1252"}, // The default value.
+	{"ar", "windows-1256"},
+	{"ba", "windows-1251"},
+	{"be", "windows-1251"},
+	{"bg", "windows-1251"},
+	{"cs", "windows-1250"},
+	{"el", "iso-8859-7"},
+	{"et", "windows-1257"},
+	{"fa", "windows-1256"},
+	{"he", "windows-1255"},
+	{"hr", "windows-1250"},
+	{"hu", "iso-8859-2"},
+	{"ja", "shift_jis"},
+	{"kk", "windows-1251"},
+	{"ko", "euc-kr"},
+	{"ku", "windows-1254"},
+	{"ky", "windows-1251"},
+	{"lt", "windows-1257"},
+	{"lv", "windows-1257"},
+	{"mk", "windows-1251"},
+	{"pl", "iso-8859-2"},
+	{"ru", "windows-1251"},
+	{"sah", "windows-1251"},
+	{"sk", "windows-1250"},
+	{"sl", "iso-8859-2"},
+	{"sr", "windows-1251"},
+	{"tg", "windows-1251"},
+	{"th", "windows-874"},
+	{"tr", "windows-1254"},
+	{"tt", "windows-1251"},
+	{"uk", "windows-1251"},
+	{"vi", "windows-1258"},
+	{"zh-hans", "gb18030"},
+	{"zh-hant", "big5"},
+}
diff --git a/go/src/golang.org/x/text/encoding/htmlindex/htmlindex.go b/go/src/golang.org/x/text/encoding/htmlindex/htmlindex.go
new file mode 100644
index 0000000..70f2ac4
--- /dev/null
+++ b/go/src/golang.org/x/text/encoding/htmlindex/htmlindex.go
@@ -0,0 +1,86 @@
+// Copyright 2015 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.
+
+//go:generate go run gen.go
+
+// Package htmlindex maps character set encoding names to Encodings as
+// recommended by the W3C for use in HTML 5. See http://www.w3.org/TR/encoding.
+package htmlindex
+
+// TODO: perhaps have a "bare" version of the index (used by this package) that
+// is not pre-loaded with all encodings. Global variables in encodings prevent
+// the linker from being able to purge unneeded tables. This means that
+// referencing all encodings, as this package does for the default index, links
+// in all encodings unconditionally.
+//
+// This issue can be solved by either solving the linking issue (see
+// https://github.com/golang/go/issues/6330) or refactoring the encoding tables
+// (e.g. moving the tables to internal packages that do not use global
+// variables).
+
+// TODO: allow canonicalizing names
+
+import (
+	"errors"
+	"strings"
+	"sync"
+
+	"golang.org/x/text/encoding"
+	"golang.org/x/text/encoding/internal/identifier"
+	"golang.org/x/text/language"
+)
+
+var (
+	errInvalidName = errors.New("htmlindex: invalid encoding name")
+	errUnknown     = errors.New("htmlindex: unknown Encoding")
+	errUnsupported = errors.New("htmlindex: this encoding is not supported")
+)
+
+var (
+	matcherOnce sync.Once
+	matcher     language.Matcher
+)
+
+// LanguageDefault returns the canonical name of the default encoding for a
+// given language.
+func LanguageDefault(tag language.Tag) string {
+	matcherOnce.Do(func() {
+		tags := []language.Tag{}
+		for _, t := range strings.Split(locales, " ") {
+			tags = append(tags, language.MustParse(t))
+		}
+		matcher = language.NewMatcher(tags)
+	})
+	_, i, _ := matcher.Match(tag)
+	return canonical[localeMap[i]] // Default is Windows-1252.
+}
+
+// Get returns an Encoding for one of the names listed in
+// http://www.w3.org/TR/encoding using the Default Index. Matching is case-
+// insensitive.
+func Get(name string) (encoding.Encoding, error) {
+	x, ok := nameMap[strings.ToLower(strings.TrimSpace(name))]
+	if !ok {
+		return nil, errInvalidName
+	}
+	return encodings[x], nil
+}
+
+// Name reports the canonical name of the given Encoding. It will return
+// an error if e is not associated with a supported encoding scheme.
+func Name(e encoding.Encoding) (string, error) {
+	id, ok := e.(identifier.Interface)
+	if !ok {
+		return "", errUnknown
+	}
+	mib, _ := id.ID()
+	if mib == 0 {
+		return "", errUnknown
+	}
+	v, ok := mibMap[mib]
+	if !ok {
+		return "", errUnsupported
+	}
+	return canonical[v], nil
+}
diff --git a/go/src/golang.org/x/text/encoding/htmlindex/htmlindex_test.go b/go/src/golang.org/x/text/encoding/htmlindex/htmlindex_test.go
new file mode 100644
index 0000000..7d83c85
--- /dev/null
+++ b/go/src/golang.org/x/text/encoding/htmlindex/htmlindex_test.go
@@ -0,0 +1,127 @@
+// Copyright 2015 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 htmlindex
+
+import (
+	"testing"
+
+	"golang.org/x/text/encoding"
+	"golang.org/x/text/encoding/charmap"
+	"golang.org/x/text/encoding/unicode"
+	"golang.org/x/text/language"
+)
+
+func TestGet(t *testing.T) {
+	for i, tc := range []struct {
+		name      string
+		canonical string
+		err       error
+	}{
+		{"utf-8", "utf-8", nil},
+		{"  utf-8  ", "utf-8", nil},
+		{"  l5  ", "windows-1254", nil},
+		{"latin5 ", "windows-1254", nil},
+		{"latin 5", "", errInvalidName},
+		{"latin-5", "", errInvalidName},
+	} {
+		enc, err := Get(tc.name)
+		if err != tc.err {
+			t.Errorf("%d: error was %v; want %v", i, err, tc.err)
+		}
+		if err != nil {
+			continue
+		}
+		if got, err := Name(enc); got != tc.canonical {
+			t.Errorf("%d: Name(Get(%q)) = %q; want %q (%v)", i, tc.name, got, tc.canonical, err)
+		}
+	}
+}
+
+func TestName(t *testing.T) {
+	for i, tc := range []struct {
+		desc string
+		enc  encoding.Encoding
+		name string
+		err  error
+	}{{
+		"defined encoding",
+		charmap.ISO8859_2,
+		"iso-8859-2",
+		nil,
+	}, {
+		"defined Unicode encoding",
+		unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM),
+		"utf-16be",
+		nil,
+	}, {
+		"undefined Unicode encoding in HTML standard",
+		unicode.UTF16(unicode.BigEndian, unicode.UseBOM),
+		"",
+		errUnsupported,
+	}, {
+		"undefined other encoding in HTML standard",
+		charmap.CodePage437,
+		"",
+		errUnsupported,
+	}, {
+		"unknown encoding",
+		encoding.Nop,
+		"",
+		errUnknown,
+	}} {
+		name, err := Name(tc.enc)
+		if name != tc.name || err != tc.err {
+			t.Errorf("%d:%s: got %q, %v; want %q, %v", i, tc.desc, name, err, tc.name, tc.err)
+		}
+	}
+}
+
+func TestLanguageDefault(t *testing.T) {
+	for _, tc := range []struct{ tag, want string }{
+		{"und", "windows-1252"}, // The default value.
+		{"ar", "windows-1256"},
+		{"ba", "windows-1251"},
+		{"be", "windows-1251"},
+		{"bg", "windows-1251"},
+		{"cs", "windows-1250"},
+		{"el", "iso-8859-7"},
+		{"et", "windows-1257"},
+		{"fa", "windows-1256"},
+		{"he", "windows-1255"},
+		{"hr", "windows-1250"},
+		{"hu", "iso-8859-2"},
+		{"ja", "shift_jis"},
+		{"kk", "windows-1251"},
+		{"ko", "euc-kr"},
+		{"ku", "windows-1254"},
+		{"ky", "windows-1251"},
+		{"lt", "windows-1257"},
+		{"lv", "windows-1257"},
+		{"mk", "windows-1251"},
+		{"pl", "iso-8859-2"},
+		{"ru", "windows-1251"},
+		{"sah", "windows-1251"},
+		{"sk", "windows-1250"},
+		{"sl", "iso-8859-2"},
+		{"sr", "windows-1251"},
+		{"tg", "windows-1251"},
+		{"th", "windows-874"},
+		{"tr", "windows-1254"},
+		{"tt", "windows-1251"},
+		{"uk", "windows-1251"},
+		{"vi", "windows-1258"},
+		{"zh-hans", "gb18030"},
+		{"zh-hant", "big5"},
+		// Variants and close approximates of the above.
+		{"ar_EG", "windows-1256"},
+		{"bs", "windows-1250"}, // Bosnian Latin maps to Croatian.
+		// Use default fallback in case of miss.
+		{"nl", "windows-1252"},
+	} {
+		if got := LanguageDefault(language.MustParse(tc.tag)); got != tc.want {
+			t.Errorf("LanguageDefault(%s) = %s; want %s", tc.tag, got, tc.want)
+		}
+	}
+}
diff --git a/go/src/golang.org/x/text/encoding/htmlindex/map.go b/go/src/golang.org/x/text/encoding/htmlindex/map.go
new file mode 100644
index 0000000..95e7bbe
--- /dev/null
+++ b/go/src/golang.org/x/text/encoding/htmlindex/map.go
@@ -0,0 +1,106 @@
+// Copyright 2015 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 htmlindex
+
+import (
+	"golang.org/x/text/encoding"
+	"golang.org/x/text/encoding/charmap"
+	"golang.org/x/text/encoding/internal"
+	"golang.org/x/text/encoding/internal/identifier"
+	"golang.org/x/text/encoding/japanese"
+	"golang.org/x/text/encoding/korean"
+	"golang.org/x/text/encoding/simplifiedchinese"
+	"golang.org/x/text/encoding/traditionalchinese"
+	"golang.org/x/text/encoding/unicode"
+)
+
+// mibMap maps a MIB identifier to an htmlEncoding index.
+var mibMap = map[identifier.MIB]htmlEncoding{
+	identifier.UTF8:              utf8,
+	identifier.UTF16BE:           utf16be,
+	identifier.UTF16LE:           utf16le,
+	identifier.IBM866:            ibm866,
+	identifier.ISOLatin2:         iso8859_2,
+	identifier.ISOLatin3:         iso8859_3,
+	identifier.ISOLatin4:         iso8859_4,
+	identifier.ISOLatinCyrillic:  iso8859_5,
+	identifier.ISOLatinArabic:    iso8859_6,
+	identifier.ISOLatinGreek:     iso8859_7,
+	identifier.ISOLatinHebrew:    iso8859_8,
+	identifier.ISO88598I:         iso8859_8I,
+	identifier.ISOLatin6:         iso8859_10,
+	identifier.ISO885913:         iso8859_13,
+	identifier.ISO885914:         iso8859_14,
+	identifier.ISO885915:         iso8859_15,
+	identifier.ISO885916:         iso8859_16,
+	identifier.KOI8R:             koi8r,
+	identifier.KOI8U:             koi8u,
+	identifier.Macintosh:         macintosh,
+	identifier.MacintoshCyrillic: macintoshCyrillic,
+	identifier.Windows874:        windows874,
+	identifier.Windows1250:       windows1250,
+	identifier.Windows1251:       windows1251,
+	identifier.Windows1252:       windows1252,
+	identifier.Windows1253:       windows1253,
+	identifier.Windows1254:       windows1254,
+	identifier.Windows1255:       windows1255,
+	identifier.Windows1256:       windows1256,
+	identifier.Windows1257:       windows1257,
+	identifier.Windows1258:       windows1258,
+	identifier.XUserDefined:      xUserDefined,
+	identifier.GB18030:           gb18030,
+	identifier.HZGB2312:          hzgb2312,
+	identifier.Big5:              big5,
+	identifier.EUCPkdFmtJapanese: eucjp,
+	identifier.ISO2022JP:         iso2022jp,
+	identifier.ShiftJIS:          shiftJIS,
+	identifier.EUCKR:             euckr,
+}
+
+// encodings maps the internal htmlEncoding to an Encoding.
+// TODO: consider using a reusable index in encoding/internal.
+var encodings = [numEncodings]encoding.Encoding{
+	// TODO: replace with proper UTF-8 encoding.
+	utf8:              &internal.Encoding{encoding.Nop, "UTF-8", identifier.UTF8},
+	ibm866:            charmap.CodePage866,
+	iso8859_2:         charmap.ISO8859_2,
+	iso8859_3:         charmap.ISO8859_3,
+	iso8859_4:         charmap.ISO8859_4,
+	iso8859_5:         charmap.ISO8859_5,
+	iso8859_6:         charmap.ISO8859_6,
+	iso8859_7:         charmap.ISO8859_7,
+	iso8859_8:         charmap.ISO8859_8,
+	iso8859_8I:        charmap.ISO8859_8I,
+	iso8859_10:        charmap.ISO8859_10,
+	iso8859_13:        charmap.ISO8859_13,
+	iso8859_14:        charmap.ISO8859_14,
+	iso8859_15:        charmap.ISO8859_15,
+	iso8859_16:        charmap.ISO8859_16,
+	koi8r:             charmap.KOI8R,
+	koi8u:             charmap.KOI8U,
+	macintosh:         charmap.Macintosh,
+	windows874:        charmap.Windows874,
+	windows1250:       charmap.Windows1250,
+	windows1251:       charmap.Windows1251,
+	windows1252:       charmap.Windows1252,
+	windows1253:       charmap.Windows1253,
+	windows1254:       charmap.Windows1254,
+	windows1255:       charmap.Windows1255,
+	windows1256:       charmap.Windows1256,
+	windows1257:       charmap.Windows1257,
+	windows1258:       charmap.Windows1258,
+	macintoshCyrillic: charmap.MacintoshCyrillic,
+	gb18030:           simplifiedchinese.GB18030,
+	hzgb2312:          simplifiedchinese.HZGB2312,
+	big5:              traditionalchinese.Big5,
+	eucjp:             japanese.EUCJP,
+	iso2022jp:         japanese.ISO2022JP,
+	shiftJIS:          japanese.ShiftJIS,
+	euckr:             korean.EUCKR,
+	replacement:       encoding.Replacement,
+	utf16be:           unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM),
+	utf16le:           unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM),
+	xUserDefined:      charmap.XUserDefined,
+}
diff --git a/go/src/golang.org/x/text/encoding/htmlindex/tables.go b/go/src/golang.org/x/text/encoding/htmlindex/tables.go
new file mode 100644
index 0000000..88c0fcc
--- /dev/null
+++ b/go/src/golang.org/x/text/encoding/htmlindex/tables.go
@@ -0,0 +1,350 @@
+// This file was generated by go generate; DO NOT EDIT
+
+package htmlindex
+
+type htmlEncoding byte
+
+const (
+	utf8 htmlEncoding = iota
+	ibm866
+	iso8859_2
+	iso8859_3
+	iso8859_4
+	iso8859_5
+	iso8859_6
+	iso8859_7
+	iso8859_8
+	iso8859_8I
+	iso8859_10
+	iso8859_13
+	iso8859_14
+	iso8859_15
+	iso8859_16
+	koi8r
+	koi8u
+	macintosh
+	windows874
+	windows1250
+	windows1251
+	windows1252
+	windows1253
+	windows1254
+	windows1255
+	windows1256
+	windows1257
+	windows1258
+	macintoshCyrillic
+	gb18030
+	hzgb2312
+	big5
+	eucjp
+	iso2022jp
+	shiftJIS
+	euckr
+	replacement
+	utf16be
+	utf16le
+	xUserDefined
+	numEncodings
+)
+
+var canonical = [numEncodings]string{
+	"utf-8",
+	"ibm866",
+	"iso-8859-2",
+	"iso-8859-3",
+	"iso-8859-4",
+	"iso-8859-5",
+	"iso-8859-6",
+	"iso-8859-7",
+	"iso-8859-8",
+	"iso-8859-8-i",
+	"iso-8859-10",
+	"iso-8859-13",
+	"iso-8859-14",
+	"iso-8859-15",
+	"iso-8859-16",
+	"koi8-r",
+	"koi8-u",
+	"macintosh",
+	"windows-874",
+	"windows-1250",
+	"windows-1251",
+	"windows-1252",
+	"windows-1253",
+	"windows-1254",
+	"windows-1255",
+	"windows-1256",
+	"windows-1257",
+	"windows-1258",
+	"x-mac-cyrillic",
+	"gb18030",
+	"hz-gb-2312",
+	"big5",
+	"euc-jp",
+	"iso-2022-jp",
+	"shift_jis",
+	"euc-kr",
+	"replacement",
+	"utf-16be",
+	"utf-16le",
+	"x-user-defined",
+}
+
+var nameMap = map[string]htmlEncoding{
+	"unicode-1-1-utf-8":   utf8,
+	"utf-8":               utf8,
+	"utf8":                utf8,
+	"866":                 ibm866,
+	"cp866":               ibm866,
+	"csibm866":            ibm866,
+	"ibm866":              ibm866,
+	"csisolatin2":         iso8859_2,
+	"iso-8859-2":          iso8859_2,
+	"iso-ir-101":          iso8859_2,
+	"iso8859-2":           iso8859_2,
+	"iso88592":            iso8859_2,
+	"iso_8859-2":          iso8859_2,
+	"iso_8859-2:1987":     iso8859_2,
+	"l2":                  iso8859_2,
+	"latin2":              iso8859_2,
+	"csisolatin3":         iso8859_3,
+	"iso-8859-3":          iso8859_3,
+	"iso-ir-109":          iso8859_3,
+	"iso8859-3":           iso8859_3,
+	"iso88593":            iso8859_3,
+	"iso_8859-3":          iso8859_3,
+	"iso_8859-3:1988":     iso8859_3,
+	"l3":                  iso8859_3,
+	"latin3":              iso8859_3,
+	"csisolatin4":         iso8859_4,
+	"iso-8859-4":          iso8859_4,
+	"iso-ir-110":          iso8859_4,
+	"iso8859-4":           iso8859_4,
+	"iso88594":            iso8859_4,
+	"iso_8859-4":          iso8859_4,
+	"iso_8859-4:1988":     iso8859_4,
+	"l4":                  iso8859_4,
+	"latin4":              iso8859_4,
+	"csisolatincyrillic":  iso8859_5,
+	"cyrillic":            iso8859_5,
+	"iso-8859-5":          iso8859_5,
+	"iso-ir-144":          iso8859_5,
+	"iso8859-5":           iso8859_5,
+	"iso88595":            iso8859_5,
+	"iso_8859-5":          iso8859_5,
+	"iso_8859-5:1988":     iso8859_5,
+	"arabic":              iso8859_6,
+	"asmo-708":            iso8859_6,
+	"csiso88596e":         iso8859_6,
+	"csiso88596i":         iso8859_6,
+	"csisolatinarabic":    iso8859_6,
+	"ecma-114":            iso8859_6,
+	"iso-8859-6":          iso8859_6,
+	"iso-8859-6-e":        iso8859_6,
+	"iso-8859-6-i":        iso8859_6,
+	"iso-ir-127":          iso8859_6,
+	"iso8859-6":           iso8859_6,
+	"iso88596":            iso8859_6,
+	"iso_8859-6":          iso8859_6,
+	"iso_8859-6:1987":     iso8859_6,
+	"csisolatingreek":     iso8859_7,
+	"ecma-118":            iso8859_7,
+	"elot_928":            iso8859_7,
+	"greek":               iso8859_7,
+	"greek8":              iso8859_7,
+	"iso-8859-7":          iso8859_7,
+	"iso-ir-126":          iso8859_7,
+	"iso8859-7":           iso8859_7,
+	"iso88597":            iso8859_7,
+	"iso_8859-7":          iso8859_7,
+	"iso_8859-7:1987":     iso8859_7,
+	"sun_eu_greek":        iso8859_7,
+	"csiso88598e":         iso8859_8,
+	"csisolatinhebrew":    iso8859_8,
+	"hebrew":              iso8859_8,
+	"iso-8859-8":          iso8859_8,
+	"iso-8859-8-e":        iso8859_8,
+	"iso-ir-138":          iso8859_8,
+	"iso8859-8":           iso8859_8,
+	"iso88598":            iso8859_8,
+	"iso_8859-8":          iso8859_8,
+	"iso_8859-8:1988":     iso8859_8,
+	"visual":              iso8859_8,
+	"csiso88598i":         iso8859_8I,
+	"iso-8859-8-i":        iso8859_8I,
+	"logical":             iso8859_8I,
+	"csisolatin6":         iso8859_10,
+	"iso-8859-10":         iso8859_10,
+	"iso-ir-157":          iso8859_10,
+	"iso8859-10":          iso8859_10,
+	"iso885910":           iso8859_10,
+	"l6":                  iso8859_10,
+	"latin6":              iso8859_10,
+	"iso-8859-13":         iso8859_13,
+	"iso8859-13":          iso8859_13,
+	"iso885913":           iso8859_13,
+	"iso-8859-14":         iso8859_14,
+	"iso8859-14":          iso8859_14,
+	"iso885914":           iso8859_14,
+	"csisolatin9":         iso8859_15,
+	"iso-8859-15":         iso8859_15,
+	"iso8859-15":          iso8859_15,
+	"iso885915":           iso8859_15,
+	"iso_8859-15":         iso8859_15,
+	"l9":                  iso8859_15,
+	"iso-8859-16":         iso8859_16,
+	"cskoi8r":             koi8r,
+	"koi":                 koi8r,
+	"koi8":                koi8r,
+	"koi8-r":              koi8r,
+	"koi8_r":              koi8r,
+	"koi8-u":              koi8u,
+	"csmacintosh":         macintosh,
+	"mac":                 macintosh,
+	"macintosh":           macintosh,
+	"x-mac-roman":         macintosh,
+	"dos-874":             windows874,
+	"iso-8859-11":         windows874,
+	"iso8859-11":          windows874,
+	"iso885911":           windows874,
+	"tis-620":             windows874,
+	"windows-874":         windows874,
+	"cp1250":              windows1250,
+	"windows-1250":        windows1250,
+	"x-cp1250":            windows1250,
+	"cp1251":              windows1251,
+	"windows-1251":        windows1251,
+	"x-cp1251":            windows1251,
+	"ansi_x3.4-1968":      windows1252,
+	"ascii":               windows1252,
+	"cp1252":              windows1252,
+	"cp819":               windows1252,
+	"csisolatin1":         windows1252,
+	"ibm819":              windows1252,
+	"iso-8859-1":          windows1252,
+	"iso-ir-100":          windows1252,
+	"iso8859-1":           windows1252,
+	"iso88591":            windows1252,
+	"iso_8859-1":          windows1252,
+	"iso_8859-1:1987":     windows1252,
+	"l1":                  windows1252,
+	"latin1":              windows1252,
+	"us-ascii":            windows1252,
+	"windows-1252":        windows1252,
+	"x-cp1252":            windows1252,
+	"cp1253":              windows1253,
+	"windows-1253":        windows1253,
+	"x-cp1253":            windows1253,
+	"cp1254":              windows1254,
+	"csisolatin5":         windows1254,
+	"iso-8859-9":          windows1254,
+	"iso-ir-148":          windows1254,
+	"iso8859-9":           windows1254,
+	"iso88599":            windows1254,
+	"iso_8859-9":          windows1254,
+	"iso_8859-9:1989":     windows1254,
+	"l5":                  windows1254,
+	"latin5":              windows1254,
+	"windows-1254":        windows1254,
+	"x-cp1254":            windows1254,
+	"cp1255":              windows1255,
+	"windows-1255":        windows1255,
+	"x-cp1255":            windows1255,
+	"cp1256":              windows1256,
+	"windows-1256":        windows1256,
+	"x-cp1256":            windows1256,
+	"cp1257":              windows1257,
+	"windows-1257":        windows1257,
+	"x-cp1257":            windows1257,
+	"cp1258":              windows1258,
+	"windows-1258":        windows1258,
+	"x-cp1258":            windows1258,
+	"x-mac-cyrillic":      macintoshCyrillic,
+	"x-mac-ukrainian":     macintoshCyrillic,
+	"chinese":             gb18030,
+	"csgb2312":            gb18030,
+	"csiso58gb231280":     gb18030,
+	"gb18030":             gb18030,
+	"gb2312":              gb18030,
+	"gb_2312":             gb18030,
+	"gb_2312-80":          gb18030,
+	"gbk":                 gb18030,
+	"iso-ir-58":           gb18030,
+	"x-gbk":               gb18030,
+	"hz-gb-2312":          hzgb2312,
+	"big5":                big5,
+	"big5-hkscs":          big5,
+	"cn-big5":             big5,
+	"csbig5":              big5,
+	"x-x-big5":            big5,
+	"cseucpkdfmtjapanese": eucjp,
+	"euc-jp":              eucjp,
+	"x-euc-jp":            eucjp,
+	"csiso2022jp":         iso2022jp,
+	"iso-2022-jp":         iso2022jp,
+	"csshiftjis":          shiftJIS,
+	"ms_kanji":            shiftJIS,
+	"shift-jis":           shiftJIS,
+	"shift_jis":           shiftJIS,
+	"sjis":                shiftJIS,
+	"windows-31j":         shiftJIS,
+	"x-sjis":              shiftJIS,
+	"cseuckr":             euckr,
+	"csksc56011987":       euckr,
+	"euc-kr":              euckr,
+	"iso-ir-149":          euckr,
+	"korean":              euckr,
+	"ks_c_5601-1987":      euckr,
+	"ks_c_5601-1989":      euckr,
+	"ksc5601":             euckr,
+	"ksc_5601":            euckr,
+	"windows-949":         euckr,
+	"csiso2022kr":         replacement,
+	"iso-2022-cn":         replacement,
+	"iso-2022-cn-ext":     replacement,
+	"iso-2022-kr":         replacement,
+	"utf-16be":            utf16be,
+	"utf-16":              utf16le,
+	"utf-16le":            utf16le,
+	"x-user-defined":      xUserDefined,
+}
+
+var localeMap = []htmlEncoding{
+	windows1252, // und
+	windows1256, // ar
+	windows1251, // ba
+	windows1251, // be
+	windows1251, // bg
+	windows1250, // cs
+	iso8859_7,   // el
+	windows1257, // et
+	windows1256, // fa
+	windows1255, // he
+	windows1250, // hr
+	iso8859_2,   // hu
+	shiftJIS,    // ja
+	windows1251, // kk
+	euckr,       // ko
+	windows1254, // ku
+	windows1251, // ky
+	windows1257, // lt
+	windows1257, // lv
+	windows1251, // mk
+	iso8859_2,   // pl
+	windows1251, // ru
+	windows1251, // sah
+	windows1250, // sk
+	iso8859_2,   // sl
+	windows1251, // sr
+	windows1251, // tg
+	windows874,  // th
+	windows1254, // tr
+	windows1251, // tt
+	windows1251, // uk
+	windows1258, // vi
+	gb18030,     // zh-hans
+	big5,        // zh-hant
+}
+
+const locales = "und ar ba be bg cs el et fa he hr hu ja kk ko ku ky lt lv mk pl ru sah sk sl sr tg th tr tt uk vi zh-hans zh-hant"
diff --git a/go/src/golang.org/x/text/encoding/ianaindex/example_test.go b/go/src/golang.org/x/text/encoding/ianaindex/example_test.go
new file mode 100644
index 0000000..b305732
--- /dev/null
+++ b/go/src/golang.org/x/text/encoding/ianaindex/example_test.go
@@ -0,0 +1,26 @@
+// Copyright 2015 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 ianaindex_test
+
+import (
+	"fmt"
+
+	"golang.org/x/text/encoding/charmap"
+	"golang.org/x/text/encoding/ianaindex"
+)
+
+func ExampleIndex() {
+	fmt.Println(ianaindex.MIME.Name(charmap.ISO8859_7))
+
+	fmt.Println(ianaindex.IANA.Name(charmap.ISO8859_7))
+
+	e, _ := ianaindex.IANA.Get("cp437")
+	fmt.Println(ianaindex.IANA.Name(e))
+
+	// TODO: Output:
+	// ISO-8859-7
+	// ISO8859_7:1987
+	// IBM437
+}
diff --git a/go/src/golang.org/x/text/encoding/ianaindex/ianaindex.go b/go/src/golang.org/x/text/encoding/ianaindex/ianaindex.go
new file mode 100644
index 0000000..da899e0
--- /dev/null
+++ b/go/src/golang.org/x/text/encoding/ianaindex/ianaindex.go
@@ -0,0 +1,64 @@
+// Copyright 2015 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 ianaindex maps names to Encodings as specified by the IANA registry.
+// This includes both the MIME and IANA names.
+//
+// See http://www.iana.org/assignments/character-sets/character-sets.xhtml for
+// more details.
+package ianaindex
+
+import (
+	"golang.org/x/text/encoding"
+)
+
+// TODO: allow users to specify their own aliases?
+// TODO: allow users to specify their own indexes?
+// TODO: allow canonicalizing names
+
+// NOTE: only use these top-level variables if we can get the linker to drop
+// the indexes when they are not used. Make them a function or perhaps only
+// support MIME otherwise.
+
+var (
+	// MIME is an index to map MIME names. It does not support aliases.
+	MIME *Index
+
+	// IANA is an index that supports all names and aliases using IANA names as
+	// the canonical identifier.
+	IANA *Index
+)
+
+// Index maps names registered by IANA to Encodings.
+type Index struct {
+}
+
+// Get returns an Encoding for IANA-registered names. Matching is
+// case-insensitive.
+func (x *Index) Get(name string) (encoding.Encoding, error) {
+	panic("TODO: implement")
+}
+
+// Name reports the canonical name of the given Encoding. It will return an
+// error if the e is not associated with a known encoding scheme.
+func (x *Index) Name(e encoding.Encoding) (string, error) {
+	panic("TODO: implement")
+}
+
+// TODO: the coverage of this index is rather spotty. Allowing users to set
+// encodings would allow:
+// - users to increase coverage
+// - allow a partially loaded set of encodings in case the user doesn't need to
+//   them all.
+// - write an OS-specific wrapper for supported encodings and set them.
+// The exact definition of Set depends a bit on if and how we want to let users
+// write their own Encoding implementations. Also, it is not possible yet to
+// only partially load the encodings without doing some refactoring. Until this
+// is solved, we might as well not support Set.
+// // Set sets the e to be used for the encoding scheme identified by name. Only
+// // canonical names may be used. An empty name assigns e to its internally
+// // associated encoding scheme.
+// func (x *Index) Set(name string, e encoding.Encoding) error {
+// 	panic("TODO: implement")
+// }
diff --git a/go/src/golang.org/x/text/encoding/internal/identifier/gen.go b/go/src/golang.org/x/text/encoding/internal/identifier/gen.go
new file mode 100644
index 0000000..0c8eba7
--- /dev/null
+++ b/go/src/golang.org/x/text/encoding/internal/identifier/gen.go
@@ -0,0 +1,137 @@
+// Copyright 2015 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.
+
+// +build ignore
+
+package main
+
+import (
+	"bytes"
+	"encoding/xml"
+	"fmt"
+	"io"
+	"log"
+	"strings"
+
+	"golang.org/x/text/internal/gen"
+)
+
+type registry struct {
+	XMLName  xml.Name `xml:"registry"`
+	Updated  string   `xml:"updated"`
+	Registry []struct {
+		ID     string `xml:"id,attr"`
+		Record []struct {
+			Name string `xml:"name"`
+			Xref []struct {
+				Type string `xml:"type,attr"`
+				Data string `xml:"data,attr"`
+			} `xml:"xref"`
+			Desc struct {
+				Data string `xml:",innerxml"`
+				// Any []struct {
+				// 	Data string `xml:",chardata"`
+				// } `xml:",any"`
+				// Data string `xml:",chardata"`
+			} `xml:"description,"`
+			MIB   string   `xml:"value"`
+			Alias []string `xml:"alias"`
+			MIME  string   `xml:"preferred_alias"`
+		} `xml:"record"`
+	} `xml:"registry"`
+}
+
+func main() {
+	r := gen.OpenIANAFile("assignments/character-sets/character-sets.xml")
+	reg := &registry{}
+	if err := xml.NewDecoder(r).Decode(&reg); err != nil && err != io.EOF {
+		log.Fatalf("Error decoding charset registry: %v", err)
+	}
+	if len(reg.Registry) == 0 || reg.Registry[0].ID != "character-sets-1" {
+		log.Fatalf("Unexpected ID %s", reg.Registry[0].ID)
+	}
+
+	w := &bytes.Buffer{}
+	fmt.Fprintf(w, "const (\n")
+	for _, rec := range reg.Registry[0].Record {
+		constName := ""
+		for _, a := range rec.Alias {
+			if strings.HasPrefix(a, "cs") && strings.IndexByte(a, '-') == -1 {
+				// Some of the constant definitions have comments in them. Strip those.
+				constName = strings.Title(strings.SplitN(a[2:], "\n", 2)[0])
+			}
+		}
+		if constName == "" {
+			switch rec.MIB {
+			case "2085":
+				constName = "HZGB2312" // Not listed as alias for some reason.
+			default:
+				log.Fatalf("No cs alias defined for %s.", rec.MIB)
+			}
+		}
+		if rec.MIME != "" {
+			rec.MIME = fmt.Sprintf(" (MIME: %s)", rec.MIME)
+		}
+		fmt.Fprintf(w, "// %s is the MIB identifier with IANA name %s%s.\n//\n", constName, rec.Name, rec.MIME)
+		if len(rec.Desc.Data) > 0 {
+			fmt.Fprint(w, "// ")
+			d := xml.NewDecoder(strings.NewReader(rec.Desc.Data))
+			inElem := true
+			attr := ""
+			for {
+				t, err := d.Token()
+				if err != nil {
+					if err != io.EOF {
+						log.Fatal(err)
+					}
+					break
+				}
+				switch x := t.(type) {
+				case xml.CharData:
+					attr = "" // Don't need attribute info.
+					a := bytes.Split([]byte(x), []byte("\n"))
+					for i, b := range a {
+						if b = bytes.TrimSpace(b); len(b) != 0 {
+							if !inElem && i > 0 {
+								fmt.Fprint(w, "\n// ")
+							}
+							inElem = false
+							fmt.Fprintf(w, "%s ", string(b))
+						}
+					}
+				case xml.StartElement:
+					if x.Name.Local == "xref" {
+						inElem = true
+						use := false
+						for _, a := range x.Attr {
+							if a.Name.Local == "type" {
+								use = use || a.Value != "person"
+							}
+							if a.Name.Local == "data" && use {
+								attr = a.Value + " "
+							}
+						}
+					}
+				case xml.EndElement:
+					inElem = false
+					fmt.Fprint(w, attr)
+				}
+			}
+			fmt.Fprint(w, "\n")
+		}
+		for _, x := range rec.Xref {
+			switch x.Type {
+			case "rfc":
+				fmt.Fprintf(w, "// Reference: %s\n", strings.ToUpper(x.Data))
+			case "uri":
+				fmt.Fprintf(w, "// Reference: %s\n", x.Data)
+			}
+		}
+		fmt.Fprintf(w, "%s MIB = %s\n", constName, rec.MIB)
+		fmt.Fprintln(w)
+	}
+	fmt.Fprintln(w, ")")
+
+	gen.WriteGoFile("mib.go", "identifier", w.Bytes())
+}
diff --git a/go/src/golang.org/x/text/encoding/internal/identifier/identifier.go b/go/src/golang.org/x/text/encoding/internal/identifier/identifier.go
new file mode 100644
index 0000000..cfb1354
--- /dev/null
+++ b/go/src/golang.org/x/text/encoding/internal/identifier/identifier.go
@@ -0,0 +1,80 @@
+// Copyright 2015 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.
+
+//go:generate go run gen.go
+
+// Package identifier defines the contract between implementations of Encoding
+// and Index by defining identifiers that uniquely identify standardized coded
+// character sets (CCS) and character encoding schemes (CES), which we will
+// together refer to as encodings, for which Encoding implementations provide
+// converters to and from UTF-8. This package is typically only of concern to
+// implementers of Indexes and Encodings.
+//
+// One part of the identifier is the MIB code, which is defined by IANA and
+// uniquely identifies a CCS or CES. Each code is associated with data that
+// references authorities, official documentation as well as aliases and MIME
+// names.
+//
+// Not all CESs are covered by the IANA registry. The "other" string that is
+// returned by ID can be used to identify other character sets or versions of
+// existing ones.
+//
+// It is recommended that each package that provides a set of Encodings provide
+// the All and Common variables to reference all supported encodings and
+// commonly used subset. This allows Index implementations to include all
+// available encodings without explicitly referencing or knowing about them.
+package identifier
+
+// Note: this package is internal, but could be made public if there is a need
+// for writing third-party Indexes and Encodings.
+
+// References:
+// - http://source.icu-project.org/repos/icu/icu/trunk/source/data/mappings/convrtrs.txt
+// - http://www.iana.org/assignments/character-sets/character-sets.xhtml
+// - http://www.iana.org/assignments/ianacharset-mib/ianacharset-mib
+// - http://www.ietf.org/rfc/rfc2978.txt
+// - http://www.unicode.org/reports/tr22/
+// - http://www.w3.org/TR/encoding/
+// - http://www.w3.org/TR/encoding/indexes/encodings.json
+// - https://encoding.spec.whatwg.org/
+// - https://tools.ietf.org/html/rfc6657#section-5
+
+// Interface can be implemented by Encodings to define the CCS or CES for which
+// it implements conversions.
+type Interface interface {
+	// ID returns an encoding identifier. Exactly one of the mib and other
+	// values should be non-zero.
+	//
+	// In the usual case it is only necessary to indicate the MIB code. The
+	// other string can be used to specify encodings for which there is no MIB,
+	// such as "x-mac-dingbat".
+	//
+	// The other string may only contain the characters a-z, A-Z, 0-9, - and _.
+	ID() (mib MIB, other string)
+
+	// NOTE: the restrictions on the encoding are to allow extending the syntax
+	// with additional information such as versions, vendors and other variants.
+}
+
+// A MIB identifies an encoding. It is derived from the IANA MIB codes and adds
+// some identifiers for some encodings that are not covered by the IANA
+// standard.
+//
+// See http://www.iana.org/assignments/ianacharset-mib.
+type MIB uint16
+
+// These additional MIB types are not defined in IANA. They are added because
+// they are common and defined within the text repo.
+const (
+	// Unofficial marks the start of encodings not registered by IANA.
+	Unofficial MIB = 10000 + iota
+
+	// TODO: add Replacement?
+
+	// XUserDefined is the code for x-user-defined.
+	XUserDefined
+
+	// MacintoshCyrillic is the code for x-mac-cyrillic.
+	MacintoshCyrillic
+)
diff --git a/go/src/golang.org/x/text/encoding/internal/identifier/mib.go b/go/src/golang.org/x/text/encoding/internal/identifier/mib.go
new file mode 100644
index 0000000..915abfa
--- /dev/null
+++ b/go/src/golang.org/x/text/encoding/internal/identifier/mib.go
@@ -0,0 +1,1621 @@
+// This file was generated by go generate; DO NOT EDIT
+
+package identifier
+
+const (
+	// ASCII is the MIB identifier with IANA name US-ASCII (MIME: US-ASCII).
+	//
+	// ANSI X3.4-1986
+	// Reference: RFC2046
+	ASCII MIB = 3
+
+	// ISOLatin1 is the MIB identifier with IANA name ISO_8859-1:1987 (MIME: ISO-8859-1).
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISOLatin1 MIB = 4
+
+	// ISOLatin2 is the MIB identifier with IANA name ISO_8859-2:1987 (MIME: ISO-8859-2).
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISOLatin2 MIB = 5
+
+	// ISOLatin3 is the MIB identifier with IANA name ISO_8859-3:1988 (MIME: ISO-8859-3).
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISOLatin3 MIB = 6
+
+	// ISOLatin4 is the MIB identifier with IANA name ISO_8859-4:1988 (MIME: ISO-8859-4).
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISOLatin4 MIB = 7
+
+	// ISOLatinCyrillic is the MIB identifier with IANA name ISO_8859-5:1988 (MIME: ISO-8859-5).
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISOLatinCyrillic MIB = 8
+
+	// ISOLatinArabic is the MIB identifier with IANA name ISO_8859-6:1987 (MIME: ISO-8859-6).
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISOLatinArabic MIB = 9
+
+	// ISOLatinGreek is the MIB identifier with IANA name ISO_8859-7:1987 (MIME: ISO-8859-7).
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1947
+	// Reference: RFC1345
+	ISOLatinGreek MIB = 10
+
+	// ISOLatinHebrew is the MIB identifier with IANA name ISO_8859-8:1988 (MIME: ISO-8859-8).
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISOLatinHebrew MIB = 11
+
+	// ISOLatin5 is the MIB identifier with IANA name ISO_8859-9:1989 (MIME: ISO-8859-9).
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISOLatin5 MIB = 12
+
+	// ISOLatin6 is the MIB identifier with IANA name ISO-8859-10 (MIME: ISO-8859-10).
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISOLatin6 MIB = 13
+
+	// ISOTextComm is the MIB identifier with IANA name ISO_6937-2-add.
+	//
+	// ISO-IR: International Register of Escape Sequences and ISO 6937-2:1983
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISOTextComm MIB = 14
+
+	// HalfWidthKatakana is the MIB identifier with IANA name JIS_X0201.
+	//
+	// JIS X 0201-1976.   One byte only, this is equivalent to
+	// JIS/Roman (similar to ASCII) plus eight-bit half-width
+	// Katakana
+	// Reference: RFC1345
+	HalfWidthKatakana MIB = 15
+
+	// JISEncoding is the MIB identifier with IANA name JIS_Encoding.
+	//
+	// JIS X 0202-1991.  Uses ISO 2022 escape sequences to
+	// shift code sets as documented in JIS X 0202-1991.
+	JISEncoding MIB = 16
+
+	// ShiftJIS is the MIB identifier with IANA name Shift_JIS (MIME: Shift_JIS).
+	//
+	// This charset is an extension of csHalfWidthKatakana by
+	// adding graphic characters in JIS X 0208.  The CCS's are
+	// JIS X0201:1997 and JIS X0208:1997.  The
+	// complete definition is shown in Appendix 1 of JIS
+	// X0208:1997.
+	// This charset can be used for the top-level media type "text".
+	ShiftJIS MIB = 17
+
+	// EUCPkdFmtJapanese is the MIB identifier with IANA name Extended_UNIX_Code_Packed_Format_for_Japanese (MIME: EUC-JP).
+	//
+	// Standardized by OSF, UNIX International, and UNIX Systems
+	// Laboratories Pacific.  Uses ISO 2022 rules to select
+	// code set 0: US-ASCII (a single 7-bit byte set)
+	// code set 1: JIS X0208-1990 (a double 8-bit byte set)
+	// restricted to A0-FF in both bytes
+	// code set 2: Half Width Katakana (a single 7-bit byte set)
+	// requiring SS2 as the character prefix
+	// code set 3: JIS X0212-1990 (a double 7-bit byte set)
+	// restricted to A0-FF in both bytes
+	// requiring SS3 as the character prefix
+	EUCPkdFmtJapanese MIB = 18
+
+	// EUCFixWidJapanese is the MIB identifier with IANA name Extended_UNIX_Code_Fixed_Width_for_Japanese.
+	//
+	// Used in Japan.  Each character is 2 octets.
+	// code set 0: US-ASCII (a single 7-bit byte set)
+	// 1st byte = 00
+	// 2nd byte = 20-7E
+	// code set 1: JIS X0208-1990 (a double 7-bit byte set)
+	// restricted  to A0-FF in both bytes
+	// code set 2: Half Width Katakana (a single 7-bit byte set)
+	// 1st byte = 00
+	// 2nd byte = A0-FF
+	// code set 3: JIS X0212-1990 (a double 7-bit byte set)
+	// restricted to A0-FF in
+	// the first byte
+	// and 21-7E in the second byte
+	EUCFixWidJapanese MIB = 19
+
+	// ISO4UnitedKingdom is the MIB identifier with IANA name BS_4730.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO4UnitedKingdom MIB = 20
+
+	// ISO11SwedishForNames is the MIB identifier with IANA name SEN_850200_C.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO11SwedishForNames MIB = 21
+
+	// ISO15Italian is the MIB identifier with IANA name IT.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO15Italian MIB = 22
+
+	// ISO17Spanish is the MIB identifier with IANA name ES.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO17Spanish MIB = 23
+
+	// ISO21German is the MIB identifier with IANA name DIN_66003.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO21German MIB = 24
+
+	// ISO60Norwegian1 is the MIB identifier with IANA name NS_4551-1.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO60Norwegian1 MIB = 25
+
+	// ISO69French is the MIB identifier with IANA name NF_Z_62-010.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO69French MIB = 26
+
+	// ISO10646UTF1 is the MIB identifier with IANA name ISO-10646-UTF-1.
+	//
+	// Universal Transfer Format (1), this is the multibyte
+	// encoding, that subsets ASCII-7. It does not have byte
+	// ordering issues.
+	ISO10646UTF1 MIB = 27
+
+	// ISO646basic1983 is the MIB identifier with IANA name ISO_646.basic:1983.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO646basic1983 MIB = 28
+
+	// INVARIANT is the MIB identifier with IANA name INVARIANT.
+	//
+	// Reference: RFC1345
+	INVARIANT MIB = 29
+
+	// ISO2IntlRefVersion is the MIB identifier with IANA name ISO_646.irv:1983.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO2IntlRefVersion MIB = 30
+
+	// NATSSEFI is the MIB identifier with IANA name NATS-SEFI.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	NATSSEFI MIB = 31
+
+	// NATSSEFIADD is the MIB identifier with IANA name NATS-SEFI-ADD.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	NATSSEFIADD MIB = 32
+
+	// NATSDANO is the MIB identifier with IANA name NATS-DANO.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	NATSDANO MIB = 33
+
+	// NATSDANOADD is the MIB identifier with IANA name NATS-DANO-ADD.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	NATSDANOADD MIB = 34
+
+	// ISO10Swedish is the MIB identifier with IANA name SEN_850200_B.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO10Swedish MIB = 35
+
+	// KSC56011987 is the MIB identifier with IANA name KS_C_5601-1987.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	KSC56011987 MIB = 36
+
+	// ISO2022KR is the MIB identifier with IANA name ISO-2022-KR (MIME: ISO-2022-KR).
+	//
+	// rfc1557 (see also KS_C_5601-1987)
+	// Reference: RFC1557
+	ISO2022KR MIB = 37
+
+	// EUCKR is the MIB identifier with IANA name EUC-KR (MIME: EUC-KR).
+	//
+	// rfc1557 (see also KS_C_5861-1992)
+	// Reference: RFC1557
+	EUCKR MIB = 38
+
+	// ISO2022JP is the MIB identifier with IANA name ISO-2022-JP (MIME: ISO-2022-JP).
+	//
+	// rfc1468 (see also rfc2237 )
+	// Reference: RFC1468
+	ISO2022JP MIB = 39
+
+	// ISO2022JP2 is the MIB identifier with IANA name ISO-2022-JP-2 (MIME: ISO-2022-JP-2).
+	//
+	// rfc1554
+	// Reference: RFC1554
+	ISO2022JP2 MIB = 40
+
+	// ISO13JISC6220jp is the MIB identifier with IANA name JIS_C6220-1969-jp.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO13JISC6220jp MIB = 41
+
+	// ISO14JISC6220ro is the MIB identifier with IANA name JIS_C6220-1969-ro.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO14JISC6220ro MIB = 42
+
+	// ISO16Portuguese is the MIB identifier with IANA name PT.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO16Portuguese MIB = 43
+
+	// ISO18Greek7Old is the MIB identifier with IANA name greek7-old.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO18Greek7Old MIB = 44
+
+	// ISO19LatinGreek is the MIB identifier with IANA name latin-greek.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO19LatinGreek MIB = 45
+
+	// ISO25French is the MIB identifier with IANA name NF_Z_62-010_(1973).
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO25French MIB = 46
+
+	// ISO27LatinGreek1 is the MIB identifier with IANA name Latin-greek-1.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO27LatinGreek1 MIB = 47
+
+	// ISO5427Cyrillic is the MIB identifier with IANA name ISO_5427.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO5427Cyrillic MIB = 48
+
+	// ISO42JISC62261978 is the MIB identifier with IANA name JIS_C6226-1978.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO42JISC62261978 MIB = 49
+
+	// ISO47BSViewdata is the MIB identifier with IANA name BS_viewdata.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO47BSViewdata MIB = 50
+
+	// ISO49INIS is the MIB identifier with IANA name INIS.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO49INIS MIB = 51
+
+	// ISO50INIS8 is the MIB identifier with IANA name INIS-8.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO50INIS8 MIB = 52
+
+	// ISO51INISCyrillic is the MIB identifier with IANA name INIS-cyrillic.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO51INISCyrillic MIB = 53
+
+	// ISO54271981 is the MIB identifier with IANA name ISO_5427:1981.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO54271981 MIB = 54
+
+	// ISO5428Greek is the MIB identifier with IANA name ISO_5428:1980.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO5428Greek MIB = 55
+
+	// ISO57GB1988 is the MIB identifier with IANA name GB_1988-80.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO57GB1988 MIB = 56
+
+	// ISO58GB231280 is the MIB identifier with IANA name GB_2312-80.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO58GB231280 MIB = 57
+
+	// ISO61Norwegian2 is the MIB identifier with IANA name NS_4551-2.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO61Norwegian2 MIB = 58
+
+	// ISO70VideotexSupp1 is the MIB identifier with IANA name videotex-suppl.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO70VideotexSupp1 MIB = 59
+
+	// ISO84Portuguese2 is the MIB identifier with IANA name PT2.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO84Portuguese2 MIB = 60
+
+	// ISO85Spanish2 is the MIB identifier with IANA name ES2.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO85Spanish2 MIB = 61
+
+	// ISO86Hungarian is the MIB identifier with IANA name MSZ_7795.3.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO86Hungarian MIB = 62
+
+	// ISO87JISX0208 is the MIB identifier with IANA name JIS_C6226-1983.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO87JISX0208 MIB = 63
+
+	// ISO88Greek7 is the MIB identifier with IANA name greek7.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO88Greek7 MIB = 64
+
+	// ISO89ASMO449 is the MIB identifier with IANA name ASMO_449.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO89ASMO449 MIB = 65
+
+	// ISO90 is the MIB identifier with IANA name iso-ir-90.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO90 MIB = 66
+
+	// ISO91JISC62291984a is the MIB identifier with IANA name JIS_C6229-1984-a.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO91JISC62291984a MIB = 67
+
+	// ISO92JISC62991984b is the MIB identifier with IANA name JIS_C6229-1984-b.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO92JISC62991984b MIB = 68
+
+	// ISO93JIS62291984badd is the MIB identifier with IANA name JIS_C6229-1984-b-add.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO93JIS62291984badd MIB = 69
+
+	// ISO94JIS62291984hand is the MIB identifier with IANA name JIS_C6229-1984-hand.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO94JIS62291984hand MIB = 70
+
+	// ISO95JIS62291984handadd is the MIB identifier with IANA name JIS_C6229-1984-hand-add.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO95JIS62291984handadd MIB = 71
+
+	// ISO96JISC62291984kana is the MIB identifier with IANA name JIS_C6229-1984-kana.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO96JISC62291984kana MIB = 72
+
+	// ISO2033 is the MIB identifier with IANA name ISO_2033-1983.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO2033 MIB = 73
+
+	// ISO99NAPLPS is the MIB identifier with IANA name ANSI_X3.110-1983.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO99NAPLPS MIB = 74
+
+	// ISO102T617bit is the MIB identifier with IANA name T.61-7bit.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO102T617bit MIB = 75
+
+	// ISO103T618bit is the MIB identifier with IANA name T.61-8bit.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO103T618bit MIB = 76
+
+	// ISO111ECMACyrillic is the MIB identifier with IANA name ECMA-cyrillic.
+	//
+	// ISO registry
+	// (formerly ECMA
+	// registry )
+	ISO111ECMACyrillic MIB = 77
+
+	// ISO121Canadian1 is the MIB identifier with IANA name CSA_Z243.4-1985-1.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO121Canadian1 MIB = 78
+
+	// ISO122Canadian2 is the MIB identifier with IANA name CSA_Z243.4-1985-2.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO122Canadian2 MIB = 79
+
+	// ISO123CSAZ24341985gr is the MIB identifier with IANA name CSA_Z243.4-1985-gr.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO123CSAZ24341985gr MIB = 80
+
+	// ISO88596E is the MIB identifier with IANA name ISO_8859-6-E (MIME: ISO-8859-6-E).
+	//
+	// rfc1556
+	// Reference: RFC1556
+	ISO88596E MIB = 81
+
+	// ISO88596I is the MIB identifier with IANA name ISO_8859-6-I (MIME: ISO-8859-6-I).
+	//
+	// rfc1556
+	// Reference: RFC1556
+	ISO88596I MIB = 82
+
+	// ISO128T101G2 is the MIB identifier with IANA name T.101-G2.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO128T101G2 MIB = 83
+
+	// ISO88598E is the MIB identifier with IANA name ISO_8859-8-E (MIME: ISO-8859-8-E).
+	//
+	// rfc1556
+	// Reference: RFC1556
+	ISO88598E MIB = 84
+
+	// ISO88598I is the MIB identifier with IANA name ISO_8859-8-I (MIME: ISO-8859-8-I).
+	//
+	// rfc1556
+	// Reference: RFC1556
+	ISO88598I MIB = 85
+
+	// ISO139CSN369103 is the MIB identifier with IANA name CSN_369103.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO139CSN369103 MIB = 86
+
+	// ISO141JUSIB1002 is the MIB identifier with IANA name JUS_I.B1.002.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO141JUSIB1002 MIB = 87
+
+	// ISO143IECP271 is the MIB identifier with IANA name IEC_P27-1.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO143IECP271 MIB = 88
+
+	// ISO146Serbian is the MIB identifier with IANA name JUS_I.B1.003-serb.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO146Serbian MIB = 89
+
+	// ISO147Macedonian is the MIB identifier with IANA name JUS_I.B1.003-mac.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO147Macedonian MIB = 90
+
+	// ISO150GreekCCITT is the MIB identifier with IANA name greek-ccitt.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO150GreekCCITT MIB = 91
+
+	// ISO151Cuba is the MIB identifier with IANA name NC_NC00-10:81.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO151Cuba MIB = 92
+
+	// ISO6937Add is the MIB identifier with IANA name ISO_6937-2-25.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO6937Add MIB = 93
+
+	// ISO153GOST1976874 is the MIB identifier with IANA name GOST_19768-74.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO153GOST1976874 MIB = 94
+
+	// ISO8859Supp is the MIB identifier with IANA name ISO_8859-supp.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO8859Supp MIB = 95
+
+	// ISO10367Box is the MIB identifier with IANA name ISO_10367-box.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO10367Box MIB = 96
+
+	// ISO158Lap is the MIB identifier with IANA name latin-lap.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO158Lap MIB = 97
+
+	// ISO159JISX02121990 is the MIB identifier with IANA name JIS_X0212-1990.
+	//
+	// ISO-IR: International Register of Escape Sequences
+	// Note: The current registration authority is IPSJ/ITSCJ, Japan.
+	// Reference: RFC1345
+	ISO159JISX02121990 MIB = 98
+
+	// ISO646Danish is the MIB identifier with IANA name DS_2089.
+	//
+	// Danish Standard, DS 2089, February 1974
+	// Reference: RFC1345
+	ISO646Danish MIB = 99
+
+	// USDK is the MIB identifier with IANA name us-dk.
+	//
+	// Reference: RFC1345
+	USDK MIB = 100
+
+	// DKUS is the MIB identifier with IANA name dk-us.
+	//
+	// Reference: RFC1345
+	DKUS MIB = 101
+
+	// KSC5636 is the MIB identifier with IANA name KSC5636.
+	//
+	// Reference: RFC1345
+	KSC5636 MIB = 102
+
+	// Unicode11UTF7 is the MIB identifier with IANA name UNICODE-1-1-UTF-7.
+	//
+	// rfc1642
+	// Reference: RFC1642
+	Unicode11UTF7 MIB = 103
+
+	// ISO2022CN is the MIB identifier with IANA name ISO-2022-CN.
+	//
+	// rfc1922
+	// Reference: RFC1922
+	ISO2022CN MIB = 104
+
+	// ISO2022CNEXT is the MIB identifier with IANA name ISO-2022-CN-EXT.
+	//
+	// rfc1922
+	// Reference: RFC1922
+	ISO2022CNEXT MIB = 105
+
+	// UTF8 is the MIB identifier with IANA name UTF-8.
+	//
+	// rfc3629
+	// Reference: RFC3629
+	UTF8 MIB = 106
+
+	// ISO885913 is the MIB identifier with IANA name ISO-8859-13.
+	//
+	// ISO See http://www.iana.org/assignments/charset-reg/ISO-8859-13 http://www.iana.org/assignments/charset-reg/ISO-8859-13
+	ISO885913 MIB = 109
+
+	// ISO885914 is the MIB identifier with IANA name ISO-8859-14.
+	//
+	// ISO See http://www.iana.org/assignments/charset-reg/ISO-8859-14
+	ISO885914 MIB = 110
+
+	// ISO885915 is the MIB identifier with IANA name ISO-8859-15.
+	//
+	// ISO
+	// Please see: http://www.iana.org/assignments/charset-reg/ISO-8859-15
+	ISO885915 MIB = 111
+
+	// ISO885916 is the MIB identifier with IANA name ISO-8859-16.
+	//
+	// ISO
+	ISO885916 MIB = 112
+
+	// GBK is the MIB identifier with IANA name GBK.
+	//
+	// Chinese IT Standardization Technical Committee
+	// Please see: http://www.iana.org/assignments/charset-reg/GBK
+	GBK MIB = 113
+
+	// GB18030 is the MIB identifier with IANA name GB18030.
+	//
+	// Chinese IT Standardization Technical Committee
+	// Please see: http://www.iana.org/assignments/charset-reg/GB18030
+	GB18030 MIB = 114
+
+	// OSDEBCDICDF0415 is the MIB identifier with IANA name OSD_EBCDIC_DF04_15.
+	//
+	// Fujitsu-Siemens standard mainframe EBCDIC encoding
+	// Please see: http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-15
+	OSDEBCDICDF0415 MIB = 115
+
+	// OSDEBCDICDF03IRV is the MIB identifier with IANA name OSD_EBCDIC_DF03_IRV.
+	//
+	// Fujitsu-Siemens standard mainframe EBCDIC encoding
+	// Please see: http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF03-IRV
+	OSDEBCDICDF03IRV MIB = 116
+
+	// OSDEBCDICDF041 is the MIB identifier with IANA name OSD_EBCDIC_DF04_1.
+	//
+	// Fujitsu-Siemens standard mainframe EBCDIC encoding
+	// Please see: http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-1
+	OSDEBCDICDF041 MIB = 117
+
+	// ISO115481 is the MIB identifier with IANA name ISO-11548-1.
+	//
+	// See http://www.iana.org/assignments/charset-reg/ISO-11548-1
+	ISO115481 MIB = 118
+
+	// KZ1048 is the MIB identifier with IANA name KZ-1048.
+	//
+	// See http://www.iana.org/assignments/charset-reg/KZ-1048
+	KZ1048 MIB = 119
+
+	// Unicode is the MIB identifier with IANA name ISO-10646-UCS-2.
+	//
+	// the 2-octet Basic Multilingual Plane, aka Unicode
+	// this needs to specify network byte order: the standard
+	// does not specify (it is a 16-bit integer space)
+	Unicode MIB = 1000
+
+	// UCS4 is the MIB identifier with IANA name ISO-10646-UCS-4.
+	//
+	// the full code space. (same comment about byte order,
+	// these are 31-bit numbers.
+	UCS4 MIB = 1001
+
+	// UnicodeASCII is the MIB identifier with IANA name ISO-10646-UCS-Basic.
+	//
+	// ASCII subset of Unicode.  Basic Latin = collection 1
+	// See ISO 10646, Appendix A
+	UnicodeASCII MIB = 1002
+
+	// UnicodeLatin1 is the MIB identifier with IANA name ISO-10646-Unicode-Latin1.
+	//
+	// ISO Latin-1 subset of Unicode. Basic Latin and Latin-1
+	// Supplement  = collections 1 and 2.  See ISO 10646,
+	// Appendix A.  See rfc1815 .
+	UnicodeLatin1 MIB = 1003
+
+	// UnicodeJapanese is the MIB identifier with IANA name ISO-10646-J-1.
+	//
+	// ISO 10646 Japanese, see rfc1815 .
+	UnicodeJapanese MIB = 1004
+
+	// UnicodeIBM1261 is the MIB identifier with IANA name ISO-Unicode-IBM-1261.
+	//
+	// IBM Latin-2, -3, -5, Extended Presentation Set, GCSGID: 1261
+	UnicodeIBM1261 MIB = 1005
+
+	// UnicodeIBM1268 is the MIB identifier with IANA name ISO-Unicode-IBM-1268.
+	//
+	// IBM Latin-4 Extended Presentation Set, GCSGID: 1268
+	UnicodeIBM1268 MIB = 1006
+
+	// UnicodeIBM1276 is the MIB identifier with IANA name ISO-Unicode-IBM-1276.
+	//
+	// IBM Cyrillic Greek Extended Presentation Set, GCSGID: 1276
+	UnicodeIBM1276 MIB = 1007
+
+	// UnicodeIBM1264 is the MIB identifier with IANA name ISO-Unicode-IBM-1264.
+	//
+	// IBM Arabic Presentation Set, GCSGID: 1264
+	UnicodeIBM1264 MIB = 1008
+
+	// UnicodeIBM1265 is the MIB identifier with IANA name ISO-Unicode-IBM-1265.
+	//
+	// IBM Hebrew Presentation Set, GCSGID: 1265
+	UnicodeIBM1265 MIB = 1009
+
+	// Unicode11 is the MIB identifier with IANA name UNICODE-1-1.
+	//
+	// rfc1641
+	// Reference: RFC1641
+	Unicode11 MIB = 1010
+
+	// SCSU is the MIB identifier with IANA name SCSU.
+	//
+	// SCSU See http://www.iana.org/assignments/charset-reg/SCSU
+	SCSU MIB = 1011
+
+	// UTF7 is the MIB identifier with IANA name UTF-7.
+	//
+	// rfc2152
+	// Reference: RFC2152
+	UTF7 MIB = 1012
+
+	// UTF16BE is the MIB identifier with IANA name UTF-16BE.
+	//
+	// rfc2781
+	// Reference: RFC2781
+	UTF16BE MIB = 1013
+
+	// UTF16LE is the MIB identifier with IANA name UTF-16LE.
+	//
+	// rfc2781
+	// Reference: RFC2781
+	UTF16LE MIB = 1014
+
+	// UTF16 is the MIB identifier with IANA name UTF-16.
+	//
+	// rfc2781
+	// Reference: RFC2781
+	UTF16 MIB = 1015
+
+	// CESU8 is the MIB identifier with IANA name CESU-8.
+	//
+	// http://www.unicode.org/unicode/reports/tr26
+	CESU8 MIB = 1016
+
+	// UTF32 is the MIB identifier with IANA name UTF-32.
+	//
+	// http://www.unicode.org/unicode/reports/tr19/
+	UTF32 MIB = 1017
+
+	// UTF32BE is the MIB identifier with IANA name UTF-32BE.
+	//
+	// http://www.unicode.org/unicode/reports/tr19/
+	UTF32BE MIB = 1018
+
+	// UTF32LE is the MIB identifier with IANA name UTF-32LE.
+	//
+	// http://www.unicode.org/unicode/reports/tr19/
+	UTF32LE MIB = 1019
+
+	// BOCU1 is the MIB identifier with IANA name BOCU-1.
+	//
+	// http://www.unicode.org/notes/tn6/
+	BOCU1 MIB = 1020
+
+	// Windows30Latin1 is the MIB identifier with IANA name ISO-8859-1-Windows-3.0-Latin-1.
+	//
+	// Extended ISO 8859-1 Latin-1 for Windows 3.0.
+	// PCL Symbol Set id: 9U
+	Windows30Latin1 MIB = 2000
+
+	// Windows31Latin1 is the MIB identifier with IANA name ISO-8859-1-Windows-3.1-Latin-1.
+	//
+	// Extended ISO 8859-1 Latin-1 for Windows 3.1.
+	// PCL Symbol Set id: 19U
+	Windows31Latin1 MIB = 2001
+
+	// Windows31Latin2 is the MIB identifier with IANA name ISO-8859-2-Windows-Latin-2.
+	//
+	// Extended ISO 8859-2.  Latin-2 for Windows 3.1.
+	// PCL Symbol Set id: 9E
+	Windows31Latin2 MIB = 2002
+
+	// Windows31Latin5 is the MIB identifier with IANA name ISO-8859-9-Windows-Latin-5.
+	//
+	// Extended ISO 8859-9.  Latin-5 for Windows 3.1
+	// PCL Symbol Set id: 5T
+	Windows31Latin5 MIB = 2003
+
+	// HPRoman8 is the MIB identifier with IANA name hp-roman8.
+	//
+	// LaserJet IIP Printer User's Manual,
+	// HP part no 33471-90901, Hewlet-Packard, June 1989.
+	// Reference: RFC1345
+	HPRoman8 MIB = 2004
+
+	// AdobeStandardEncoding is the MIB identifier with IANA name Adobe-Standard-Encoding.
+	//
+	// PostScript Language Reference Manual
+	// PCL Symbol Set id: 10J
+	AdobeStandardEncoding MIB = 2005
+
+	// VenturaUS is the MIB identifier with IANA name Ventura-US.
+	//
+	// Ventura US.  ASCII plus characters typically used in
+	// publishing, like pilcrow, copyright, registered, trade mark,
+	// section, dagger, and double dagger in the range A0 (hex)
+	// to FF (hex).
+	// PCL Symbol Set id: 14J
+	VenturaUS MIB = 2006
+
+	// VenturaInternational is the MIB identifier with IANA name Ventura-International.
+	//
+	// Ventura International.  ASCII plus coded characters similar
+	// to Roman8.
+	// PCL Symbol Set id: 13J
+	VenturaInternational MIB = 2007
+
+	// DECMCS is the MIB identifier with IANA name DEC-MCS.
+	//
+	// VAX/VMS User's Manual,
+	// Order Number: AI-Y517A-TE, April 1986.
+	// Reference: RFC1345
+	DECMCS MIB = 2008
+
+	// PC850Multilingual is the MIB identifier with IANA name IBM850.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	PC850Multilingual MIB = 2009
+
+	// PC8DanishNorwegian is the MIB identifier with IANA name PC8-Danish-Norwegian.
+	//
+	// PC Danish Norwegian
+	// 8-bit PC set for Danish Norwegian
+	// PCL Symbol Set id: 11U
+	PC8DanishNorwegian MIB = 2012
+
+	// PC862LatinHebrew is the MIB identifier with IANA name IBM862.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	PC862LatinHebrew MIB = 2013
+
+	// PC8Turkish is the MIB identifier with IANA name PC8-Turkish.
+	//
+	// PC Latin Turkish.  PCL Symbol Set id: 9T
+	PC8Turkish MIB = 2014
+
+	// IBMSymbols is the MIB identifier with IANA name IBM-Symbols.
+	//
+	// Presentation Set, CPGID: 259
+	IBMSymbols MIB = 2015
+
+	// IBMThai is the MIB identifier with IANA name IBM-Thai.
+	//
+	// Presentation Set, CPGID: 838
+	IBMThai MIB = 2016
+
+	// HPLegal is the MIB identifier with IANA name HP-Legal.
+	//
+	// PCL 5 Comparison Guide, Hewlett-Packard,
+	// HP part number 5961-0510, October 1992
+	// PCL Symbol Set id: 1U
+	HPLegal MIB = 2017
+
+	// HPPiFont is the MIB identifier with IANA name HP-Pi-font.
+	//
+	// PCL 5 Comparison Guide, Hewlett-Packard,
+	// HP part number 5961-0510, October 1992
+	// PCL Symbol Set id: 15U
+	HPPiFont MIB = 2018
+
+	// HPMath8 is the MIB identifier with IANA name HP-Math8.
+	//
+	// PCL 5 Comparison Guide, Hewlett-Packard,
+	// HP part number 5961-0510, October 1992
+	// PCL Symbol Set id: 8M
+	HPMath8 MIB = 2019
+
+	// HPPSMath is the MIB identifier with IANA name Adobe-Symbol-Encoding.
+	//
+	// PostScript Language Reference Manual
+	// PCL Symbol Set id: 5M
+	HPPSMath MIB = 2020
+
+	// HPDesktop is the MIB identifier with IANA name HP-DeskTop.
+	//
+	// PCL 5 Comparison Guide, Hewlett-Packard,
+	// HP part number 5961-0510, October 1992
+	// PCL Symbol Set id: 7J
+	HPDesktop MIB = 2021
+
+	// VenturaMath is the MIB identifier with IANA name Ventura-Math.
+	//
+	// PCL 5 Comparison Guide, Hewlett-Packard,
+	// HP part number 5961-0510, October 1992
+	// PCL Symbol Set id: 6M
+	VenturaMath MIB = 2022
+
+	// MicrosoftPublishing is the MIB identifier with IANA name Microsoft-Publishing.
+	//
+	// PCL 5 Comparison Guide, Hewlett-Packard,
+	// HP part number 5961-0510, October 1992
+	// PCL Symbol Set id: 6J
+	MicrosoftPublishing MIB = 2023
+
+	// Windows31J is the MIB identifier with IANA name Windows-31J.
+	//
+	// Windows Japanese.  A further extension of Shift_JIS
+	// to include NEC special characters (Row 13), NEC
+	// selection of IBM extensions (Rows 89 to 92), and IBM
+	// extensions (Rows 115 to 119).  The CCS's are
+	// JIS X0201:1997, JIS X0208:1997, and these extensions.
+	// This charset can be used for the top-level media type "text",
+	// but it is of limited or specialized use (see rfc2278 ).
+	// PCL Symbol Set id: 19K
+	Windows31J MIB = 2024
+
+	// GB2312 is the MIB identifier with IANA name GB2312 (MIME: GB2312).
+	//
+	// Chinese for People's Republic of China (PRC) mixed one byte,
+	// two byte set:
+	// 20-7E = one byte ASCII
+	// A1-FE = two byte PRC Kanji
+	// See GB 2312-80
+	// PCL Symbol Set Id: 18C
+	GB2312 MIB = 2025
+
+	// Big5 is the MIB identifier with IANA name Big5 (MIME: Big5).
+	//
+	// Chinese for Taiwan Multi-byte set.
+	// PCL Symbol Set Id: 18T
+	Big5 MIB = 2026
+
+	// Macintosh is the MIB identifier with IANA name macintosh.
+	//
+	// The Unicode Standard ver1.0, ISBN 0-201-56788-1, Oct 1991
+	// Reference: RFC1345
+	Macintosh MIB = 2027
+
+	// IBM037 is the MIB identifier with IANA name IBM037.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM037 MIB = 2028
+
+	// IBM038 is the MIB identifier with IANA name IBM038.
+	//
+	// IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+	// Reference: RFC1345
+	IBM038 MIB = 2029
+
+	// IBM273 is the MIB identifier with IANA name IBM273.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM273 MIB = 2030
+
+	// IBM274 is the MIB identifier with IANA name IBM274.
+	//
+	// IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+	// Reference: RFC1345
+	IBM274 MIB = 2031
+
+	// IBM275 is the MIB identifier with IANA name IBM275.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM275 MIB = 2032
+
+	// IBM277 is the MIB identifier with IANA name IBM277.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM277 MIB = 2033
+
+	// IBM278 is the MIB identifier with IANA name IBM278.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM278 MIB = 2034
+
+	// IBM280 is the MIB identifier with IANA name IBM280.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM280 MIB = 2035
+
+	// IBM281 is the MIB identifier with IANA name IBM281.
+	//
+	// IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+	// Reference: RFC1345
+	IBM281 MIB = 2036
+
+	// IBM284 is the MIB identifier with IANA name IBM284.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM284 MIB = 2037
+
+	// IBM285 is the MIB identifier with IANA name IBM285.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM285 MIB = 2038
+
+	// IBM290 is the MIB identifier with IANA name IBM290.
+	//
+	// IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+	// Reference: RFC1345
+	IBM290 MIB = 2039
+
+	// IBM297 is the MIB identifier with IANA name IBM297.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM297 MIB = 2040
+
+	// IBM420 is the MIB identifier with IANA name IBM420.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990,
+	// IBM NLS RM p 11-11
+	// Reference: RFC1345
+	IBM420 MIB = 2041
+
+	// IBM423 is the MIB identifier with IANA name IBM423.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM423 MIB = 2042
+
+	// IBM424 is the MIB identifier with IANA name IBM424.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM424 MIB = 2043
+
+	// PC8CodePage437 is the MIB identifier with IANA name IBM437.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	PC8CodePage437 MIB = 2011
+
+	// IBM500 is the MIB identifier with IANA name IBM500.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM500 MIB = 2044
+
+	// IBM851 is the MIB identifier with IANA name IBM851.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM851 MIB = 2045
+
+	// PCp852 is the MIB identifier with IANA name IBM852.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	PCp852 MIB = 2010
+
+	// IBM855 is the MIB identifier with IANA name IBM855.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM855 MIB = 2046
+
+	// IBM857 is the MIB identifier with IANA name IBM857.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM857 MIB = 2047
+
+	// IBM860 is the MIB identifier with IANA name IBM860.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM860 MIB = 2048
+
+	// IBM861 is the MIB identifier with IANA name IBM861.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM861 MIB = 2049
+
+	// IBM863 is the MIB identifier with IANA name IBM863.
+	//
+	// IBM Keyboard layouts and code pages, PN 07G4586 June 1991
+	// Reference: RFC1345
+	IBM863 MIB = 2050
+
+	// IBM864 is the MIB identifier with IANA name IBM864.
+	//
+	// IBM Keyboard layouts and code pages, PN 07G4586 June 1991
+	// Reference: RFC1345
+	IBM864 MIB = 2051
+
+	// IBM865 is the MIB identifier with IANA name IBM865.
+	//
+	// IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987)
+	// Reference: RFC1345
+	IBM865 MIB = 2052
+
+	// IBM868 is the MIB identifier with IANA name IBM868.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM868 MIB = 2053
+
+	// IBM869 is the MIB identifier with IANA name IBM869.
+	//
+	// IBM Keyboard layouts and code pages, PN 07G4586 June 1991
+	// Reference: RFC1345
+	IBM869 MIB = 2054
+
+	// IBM870 is the MIB identifier with IANA name IBM870.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM870 MIB = 2055
+
+	// IBM871 is the MIB identifier with IANA name IBM871.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM871 MIB = 2056
+
+	// IBM880 is the MIB identifier with IANA name IBM880.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM880 MIB = 2057
+
+	// IBM891 is the MIB identifier with IANA name IBM891.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM891 MIB = 2058
+
+	// IBM903 is the MIB identifier with IANA name IBM903.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM903 MIB = 2059
+
+	// IBBM904 is the MIB identifier with IANA name IBM904.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBBM904 MIB = 2060
+
+	// IBM905 is the MIB identifier with IANA name IBM905.
+	//
+	// IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+	// Reference: RFC1345
+	IBM905 MIB = 2061
+
+	// IBM918 is the MIB identifier with IANA name IBM918.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM918 MIB = 2062
+
+	// IBM1026 is the MIB identifier with IANA name IBM1026.
+	//
+	// IBM NLS RM Vol2 SE09-8002-01, March 1990
+	// Reference: RFC1345
+	IBM1026 MIB = 2063
+
+	// IBMEBCDICATDE is the MIB identifier with IANA name EBCDIC-AT-DE.
+	//
+	// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+	// Reference: RFC1345
+	IBMEBCDICATDE MIB = 2064
+
+	// EBCDICATDEA is the MIB identifier with IANA name EBCDIC-AT-DE-A.
+	//
+	// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+	// Reference: RFC1345
+	EBCDICATDEA MIB = 2065
+
+	// EBCDICCAFR is the MIB identifier with IANA name EBCDIC-CA-FR.
+	//
+	// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+	// Reference: RFC1345
+	EBCDICCAFR MIB = 2066
+
+	// EBCDICDKNO is the MIB identifier with IANA name EBCDIC-DK-NO.
+	//
+	// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+	// Reference: RFC1345
+	EBCDICDKNO MIB = 2067
+
+	// EBCDICDKNOA is the MIB identifier with IANA name EBCDIC-DK-NO-A.
+	//
+	// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+	// Reference: RFC1345
+	EBCDICDKNOA MIB = 2068
+
+	// EBCDICFISE is the MIB identifier with IANA name EBCDIC-FI-SE.
+	//
+	// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+	// Reference: RFC1345
+	EBCDICFISE MIB = 2069
+
+	// EBCDICFISEA is the MIB identifier with IANA name EBCDIC-FI-SE-A.
+	//
+	// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+	// Reference: RFC1345
+	EBCDICFISEA MIB = 2070
+
+	// EBCDICFR is the MIB identifier with IANA name EBCDIC-FR.
+	//
+	// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+	// Reference: RFC1345
+	EBCDICFR MIB = 2071
+
+	// EBCDICIT is the MIB identifier with IANA name EBCDIC-IT.
+	//
+	// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+	// Reference: RFC1345
+	EBCDICIT MIB = 2072
+
+	// EBCDICPT is the MIB identifier with IANA name EBCDIC-PT.
+	//
+	// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+	// Reference: RFC1345
+	EBCDICPT MIB = 2073
+
+	// EBCDICES is the MIB identifier with IANA name EBCDIC-ES.
+	//
+	// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+	// Reference: RFC1345
+	EBCDICES MIB = 2074
+
+	// EBCDICESA is the MIB identifier with IANA name EBCDIC-ES-A.
+	//
+	// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+	// Reference: RFC1345
+	EBCDICESA MIB = 2075
+
+	// EBCDICESS is the MIB identifier with IANA name EBCDIC-ES-S.
+	//
+	// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+	// Reference: RFC1345
+	EBCDICESS MIB = 2076
+
+	// EBCDICUK is the MIB identifier with IANA name EBCDIC-UK.
+	//
+	// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+	// Reference: RFC1345
+	EBCDICUK MIB = 2077
+
+	// EBCDICUS is the MIB identifier with IANA name EBCDIC-US.
+	//
+	// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+	// Reference: RFC1345
+	EBCDICUS MIB = 2078
+
+	// Unknown8BiT is the MIB identifier with IANA name UNKNOWN-8BIT.
+	//
+	// Reference: RFC1428
+	Unknown8BiT MIB = 2079
+
+	// Mnemonic is the MIB identifier with IANA name MNEMONIC.
+	//
+	// rfc1345 , also known as "mnemonic+ascii+38"
+	// Reference: RFC1345
+	Mnemonic MIB = 2080
+
+	// Mnem is the MIB identifier with IANA name MNEM.
+	//
+	// rfc1345 , also known as "mnemonic+ascii+8200"
+	// Reference: RFC1345
+	Mnem MIB = 2081
+
+	// VISCII is the MIB identifier with IANA name VISCII.
+	//
+	// rfc1456
+	// Reference: RFC1456
+	VISCII MIB = 2082
+
+	// VIQR is the MIB identifier with IANA name VIQR.
+	//
+	// rfc1456
+	// Reference: RFC1456
+	VIQR MIB = 2083
+
+	// KOI8R is the MIB identifier with IANA name KOI8-R (MIME: KOI8-R).
+	//
+	// rfc1489 , based on GOST-19768-74, ISO-6937/8,
+	// INIS-Cyrillic, ISO-5427.
+	// Reference: RFC1489
+	KOI8R MIB = 2084
+
+	// HZGB2312 is the MIB identifier with IANA name HZ-GB-2312.
+	//
+	// rfc1842 , rfc1843 rfc1843 rfc1842
+	HZGB2312 MIB = 2085
+
+	// IBM866 is the MIB identifier with IANA name IBM866.
+	//
+	// IBM NLDG Volume 2 (SE09-8002-03) August 1994
+	IBM866 MIB = 2086
+
+	// PC775Baltic is the MIB identifier with IANA name IBM775.
+	//
+	// HP PCL 5 Comparison Guide (P/N 5021-0329) pp B-13, 1996
+	PC775Baltic MIB = 2087
+
+	// KOI8U is the MIB identifier with IANA name KOI8-U.
+	//
+	// rfc2319
+	// Reference: RFC2319
+	KOI8U MIB = 2088
+
+	// IBM00858 is the MIB identifier with IANA name IBM00858.
+	//
+	// IBM See http://www.iana.org/assignments/charset-reg/IBM00858
+	IBM00858 MIB = 2089
+
+	// IBM00924 is the MIB identifier with IANA name IBM00924.
+	//
+	// IBM See http://www.iana.org/assignments/charset-reg/IBM00924
+	IBM00924 MIB = 2090
+
+	// IBM01140 is the MIB identifier with IANA name IBM01140.
+	//
+	// IBM See http://www.iana.org/assignments/charset-reg/IBM01140
+	IBM01140 MIB = 2091
+
+	// IBM01141 is the MIB identifier with IANA name IBM01141.
+	//
+	// IBM See http://www.iana.org/assignments/charset-reg/IBM01141
+	IBM01141 MIB = 2092
+
+	// IBM01142 is the MIB identifier with IANA name IBM01142.
+	//
+	// IBM See http://www.iana.org/assignments/charset-reg/IBM01142
+	IBM01142 MIB = 2093
+
+	// IBM01143 is the MIB identifier with IANA name IBM01143.
+	//
+	// IBM See http://www.iana.org/assignments/charset-reg/IBM01143
+	IBM01143 MIB = 2094
+
+	// IBM01144 is the MIB identifier with IANA name IBM01144.
+	//
+	// IBM See http://www.iana.org/assignments/charset-reg/IBM01144
+	IBM01144 MIB = 2095
+
+	// IBM01145 is the MIB identifier with IANA name IBM01145.
+	//
+	// IBM See http://www.iana.org/assignments/charset-reg/IBM01145
+	IBM01145 MIB = 2096
+
+	// IBM01146 is the MIB identifier with IANA name IBM01146.
+	//
+	// IBM See http://www.iana.org/assignments/charset-reg/IBM01146
+	IBM01146 MIB = 2097
+
+	// IBM01147 is the MIB identifier with IANA name IBM01147.
+	//
+	// IBM See http://www.iana.org/assignments/charset-reg/IBM01147
+	IBM01147 MIB = 2098
+
+	// IBM01148 is the MIB identifier with IANA name IBM01148.
+	//
+	// IBM See http://www.iana.org/assignments/charset-reg/IBM01148
+	IBM01148 MIB = 2099
+
+	// IBM01149 is the MIB identifier with IANA name IBM01149.
+	//
+	// IBM See http://www.iana.org/assignments/charset-reg/IBM01149
+	IBM01149 MIB = 2100
+
+	// Big5HKSCS is the MIB identifier with IANA name Big5-HKSCS.
+	//
+	// See http://www.iana.org/assignments/charset-reg/Big5-HKSCS
+	Big5HKSCS MIB = 2101
+
+	// IBM1047 is the MIB identifier with IANA name IBM1047.
+	//
+	// IBM1047 (EBCDIC Latin 1/Open Systems) http://www-1.ibm.com/servers/eserver/iseries/software/globalization/pdf/cp01047z.pdf
+	IBM1047 MIB = 2102
+
+	// PTCP154 is the MIB identifier with IANA name PTCP154.
+	//
+	// See http://www.iana.org/assignments/charset-reg/PTCP154
+	PTCP154 MIB = 2103
+
+	// Amiga1251 is the MIB identifier with IANA name Amiga-1251.
+	//
+	// See http://www.amiga.ultranet.ru/Amiga-1251.html
+	Amiga1251 MIB = 2104
+
+	// KOI7switched is the MIB identifier with IANA name KOI7-switched.
+	//
+	// See http://www.iana.org/assignments/charset-reg/KOI7-switched
+	KOI7switched MIB = 2105
+
+	// BRF is the MIB identifier with IANA name BRF.
+	//
+	// See http://www.iana.org/assignments/charset-reg/BRF
+	BRF MIB = 2106
+
+	// TSCII is the MIB identifier with IANA name TSCII.
+	//
+	// See http://www.iana.org/assignments/charset-reg/TSCII
+	TSCII MIB = 2107
+
+	// CP51932 is the MIB identifier with IANA name CP51932.
+	//
+	// See http://www.iana.org/assignments/charset-reg/CP51932
+	CP51932 MIB = 2108
+
+	// Windows874 is the MIB identifier with IANA name windows-874.
+	//
+	// See http://www.iana.org/assignments/charset-reg/windows-874
+	Windows874 MIB = 2109
+
+	// Windows1250 is the MIB identifier with IANA name windows-1250.
+	//
+	// Microsoft http://www.iana.org/assignments/charset-reg/windows-1250
+	Windows1250 MIB = 2250
+
+	// Windows1251 is the MIB identifier with IANA name windows-1251.
+	//
+	// Microsoft http://www.iana.org/assignments/charset-reg/windows-1251
+	Windows1251 MIB = 2251
+
+	// Windows1252 is the MIB identifier with IANA name windows-1252.
+	//
+	// Microsoft http://www.iana.org/assignments/charset-reg/windows-1252
+	Windows1252 MIB = 2252
+
+	// Windows1253 is the MIB identifier with IANA name windows-1253.
+	//
+	// Microsoft http://www.iana.org/assignments/charset-reg/windows-1253
+	Windows1253 MIB = 2253
+
+	// Windows1254 is the MIB identifier with IANA name windows-1254.
+	//
+	// Microsoft http://www.iana.org/assignments/charset-reg/windows-1254
+	Windows1254 MIB = 2254
+
+	// Windows1255 is the MIB identifier with IANA name windows-1255.
+	//
+	// Microsoft http://www.iana.org/assignments/charset-reg/windows-1255
+	Windows1255 MIB = 2255
+
+	// Windows1256 is the MIB identifier with IANA name windows-1256.
+	//
+	// Microsoft http://www.iana.org/assignments/charset-reg/windows-1256
+	Windows1256 MIB = 2256
+
+	// Windows1257 is the MIB identifier with IANA name windows-1257.
+	//
+	// Microsoft http://www.iana.org/assignments/charset-reg/windows-1257
+	Windows1257 MIB = 2257
+
+	// Windows1258 is the MIB identifier with IANA name windows-1258.
+	//
+	// Microsoft http://www.iana.org/assignments/charset-reg/windows-1258
+	Windows1258 MIB = 2258
+
+	// TIS620 is the MIB identifier with IANA name TIS-620.
+	//
+	// Thai Industrial Standards Institute (TISI)
+	TIS620 MIB = 2259
+
+	// CP50220 is the MIB identifier with IANA name CP50220.
+	//
+	// See http://www.iana.org/assignments/charset-reg/CP50220
+	CP50220 MIB = 2260
+)
diff --git a/go/src/golang.org/x/text/encoding/internal/internal.go b/go/src/golang.org/x/text/encoding/internal/internal.go
new file mode 100644
index 0000000..63bf16c
--- /dev/null
+++ b/go/src/golang.org/x/text/encoding/internal/internal.go
@@ -0,0 +1,60 @@
+// Copyright 2015 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 internal contains code that is shared among encoding implementations.
+package internal
+
+import (
+	"golang.org/x/text/encoding"
+	"golang.org/x/text/encoding/internal/identifier"
+	"golang.org/x/text/transform"
+)
+
+// Encoding is an implementation of the Encoding interface that adds the String
+// and ID methods to an existing encoding.
+type Encoding struct {
+	encoding.Encoding
+	Name string
+	MIB  identifier.MIB
+}
+
+// _ verifies that Encoding implements identifier.Interface.
+var _ identifier.Interface = (*Encoding)(nil)
+
+func (e *Encoding) String() string {
+	return e.Name
+}
+
+func (e *Encoding) ID() (mib identifier.MIB, other string) {
+	return e.MIB, ""
+}
+
+// SimpleEncoding is an Encoding that combines two Transformers.
+type SimpleEncoding struct {
+	Decoder transform.Transformer
+	Encoder transform.Transformer
+}
+
+func (e *SimpleEncoding) NewDecoder() transform.Transformer {
+	return e.Decoder
+}
+
+func (e *SimpleEncoding) NewEncoder() transform.Transformer {
+	return e.Encoder
+}
+
+// FuncEncoding is an Encoding that combines two functions returning a new
+// Transformer.
+type FuncEncoding struct {
+	Decoder func() transform.Transformer
+	Encoder func() transform.Transformer
+}
+
+func (e FuncEncoding) NewDecoder() transform.Transformer {
+	return e.Decoder()
+}
+
+func (e FuncEncoding) NewEncoder() transform.Transformer {
+	return e.Encoder()
+}
diff --git a/go/src/golang.org/x/text/encoding/japanese/all.go b/go/src/golang.org/x/text/encoding/japanese/all.go
new file mode 100644
index 0000000..6cfa8de
--- /dev/null
+++ b/go/src/golang.org/x/text/encoding/japanese/all.go
@@ -0,0 +1,12 @@
+// Copyright 2015 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 japanese
+
+import (
+	"golang.org/x/text/encoding"
+)
+
+// All is a list of all defined encodings in this package.
+var All = []encoding.Encoding{EUCJP, ISO2022JP, ShiftJIS}
diff --git a/go/src/golang.org/x/text/encoding/japanese/eucjp.go b/go/src/golang.org/x/text/encoding/japanese/eucjp.go
index dfca30e..c2d5f19 100644
--- a/go/src/golang.org/x/text/encoding/japanese/eucjp.go
+++ b/go/src/golang.org/x/text/encoding/japanese/eucjp.go
@@ -9,24 +9,18 @@
 	"unicode/utf8"
 
 	"golang.org/x/text/encoding"
+	"golang.org/x/text/encoding/internal"
+	"golang.org/x/text/encoding/internal/identifier"
 	"golang.org/x/text/transform"
 )
 
 // EUCJP is the EUC-JP encoding.
-var EUCJP encoding.Encoding = eucJP{}
+var EUCJP encoding.Encoding = &eucJP
 
-type eucJP struct{}
-
-func (eucJP) NewDecoder() transform.Transformer {
-	return eucJPDecoder{}
-}
-
-func (eucJP) NewEncoder() transform.Transformer {
-	return eucJPEncoder{}
-}
-
-func (eucJP) String() string {
-	return "EUC-JP"
+var eucJP = internal.Encoding{
+	&internal.SimpleEncoding{eucJPDecoder{}, eucJPEncoder{}},
+	"EUC-JP",
+	identifier.EUCPkdFmtJapanese,
 }
 
 var errInvalidEUCJP = errors.New("japanese: invalid EUC-JP encoding")
diff --git a/go/src/golang.org/x/text/encoding/japanese/iso2022jp.go b/go/src/golang.org/x/text/encoding/japanese/iso2022jp.go
index c13a721..2722235 100644
--- a/go/src/golang.org/x/text/encoding/japanese/iso2022jp.go
+++ b/go/src/golang.org/x/text/encoding/japanese/iso2022jp.go
@@ -9,26 +9,28 @@
 	"unicode/utf8"
 
 	"golang.org/x/text/encoding"
+	"golang.org/x/text/encoding/internal"
+	"golang.org/x/text/encoding/internal/identifier"
 	"golang.org/x/text/transform"
 )
 
 // ISO2022JP is the ISO-2022-JP encoding.
-var ISO2022JP encoding.Encoding = iso2022JP{}
+var ISO2022JP encoding.Encoding = &iso2022JP
 
-type iso2022JP struct{}
+var iso2022JP = internal.Encoding{
+	internal.FuncEncoding{iso2022JPNewDecoder, iso2022JPNewEncoder},
+	"ISO-2022-JP",
+	identifier.ISO2022JP,
+}
 
-func (iso2022JP) NewDecoder() transform.Transformer {
+func iso2022JPNewDecoder() transform.Transformer {
 	return new(iso2022JPDecoder)
 }
 
-func (iso2022JP) NewEncoder() transform.Transformer {
+func iso2022JPNewEncoder() transform.Transformer {
 	return new(iso2022JPEncoder)
 }
 
-func (iso2022JP) String() string {
-	return "ISO-2022-JP"
-}
-
 var errInvalidISO2022JP = errors.New("japanese: invalid ISO-2022-JP encoding")
 
 const (
@@ -267,5 +269,16 @@
 		nDst++
 		continue
 	}
+	if atEOF && err == nil && *e != asciiState {
+		if nDst+3 > len(dst) {
+			err = transform.ErrShortDst
+		} else {
+			*e = asciiState
+			dst[nDst+0] = asciiEsc
+			dst[nDst+1] = '('
+			dst[nDst+2] = 'B'
+			nDst += 3
+		}
+	}
 	return nDst, nSrc, err
 }
diff --git a/go/src/golang.org/x/text/encoding/japanese/shiftjis.go b/go/src/golang.org/x/text/encoding/japanese/shiftjis.go
index 7d4ae79..70022bd 100644
--- a/go/src/golang.org/x/text/encoding/japanese/shiftjis.go
+++ b/go/src/golang.org/x/text/encoding/japanese/shiftjis.go
@@ -9,25 +9,19 @@
 	"unicode/utf8"
 
 	"golang.org/x/text/encoding"
+	"golang.org/x/text/encoding/internal"
+	"golang.org/x/text/encoding/internal/identifier"
 	"golang.org/x/text/transform"
 )
 
 // ShiftJIS is the Shift JIS encoding, also known as Code Page 932 and
 // Windows-31J.
-var ShiftJIS encoding.Encoding = shiftJIS{}
+var ShiftJIS encoding.Encoding = &shiftJIS
 
-type shiftJIS struct{}
-
-func (shiftJIS) NewDecoder() transform.Transformer {
-	return shiftJISDecoder{}
-}
-
-func (shiftJIS) NewEncoder() transform.Transformer {
-	return shiftJISEncoder{}
-}
-
-func (shiftJIS) String() string {
-	return "Shift JIS"
+var shiftJIS = internal.Encoding{
+	&internal.SimpleEncoding{shiftJISDecoder{}, shiftJISEncoder{}},
+	"Shift JIS",
+	identifier.ShiftJIS,
 }
 
 var errInvalidShiftJIS = errors.New("japanese: invalid Shift JIS encoding")
diff --git a/go/src/golang.org/x/text/encoding/korean/euckr.go b/go/src/golang.org/x/text/encoding/korean/euckr.go
index 671a35d..ebed63c 100644
--- a/go/src/golang.org/x/text/encoding/korean/euckr.go
+++ b/go/src/golang.org/x/text/encoding/korean/euckr.go
@@ -9,24 +9,21 @@
 	"unicode/utf8"
 
 	"golang.org/x/text/encoding"
+	"golang.org/x/text/encoding/internal"
+	"golang.org/x/text/encoding/internal/identifier"
 	"golang.org/x/text/transform"
 )
 
+// All is a list of all defined encodings in this package.
+var All = []encoding.Encoding{EUCKR}
+
 // EUCKR is the EUC-KR encoding, also known as Code Page 949.
-var EUCKR encoding.Encoding = eucKR{}
+var EUCKR encoding.Encoding = &eucKR
 
-type eucKR struct{}
-
-func (eucKR) NewDecoder() transform.Transformer {
-	return eucKRDecoder{}
-}
-
-func (eucKR) NewEncoder() transform.Transformer {
-	return eucKREncoder{}
-}
-
-func (eucKR) String() string {
-	return "EUC-KR"
+var eucKR = internal.Encoding{
+	&internal.SimpleEncoding{eucKRDecoder{}, eucKREncoder{}},
+	"EUC-KR",
+	identifier.EUCKR,
 }
 
 var errInvalidEUCKR = errors.New("korean: invalid EUC-KR encoding")
diff --git a/go/src/golang.org/x/text/encoding/simplifiedchinese/all.go b/go/src/golang.org/x/text/encoding/simplifiedchinese/all.go
new file mode 100644
index 0000000..5ecc526
--- /dev/null
+++ b/go/src/golang.org/x/text/encoding/simplifiedchinese/all.go
@@ -0,0 +1,12 @@
+// Copyright 2015 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 simplifiedchinese
+
+import (
+	"golang.org/x/text/encoding"
+)
+
+// All is a list of all defined encodings in this package.
+var All = []encoding.Encoding{GB18030, GBK, HZGB2312}
diff --git a/go/src/golang.org/x/text/encoding/simplifiedchinese/gbk.go b/go/src/golang.org/x/text/encoding/simplifiedchinese/gbk.go
index 41b1b6d..bff5714 100644
--- a/go/src/golang.org/x/text/encoding/simplifiedchinese/gbk.go
+++ b/go/src/golang.org/x/text/encoding/simplifiedchinese/gbk.go
@@ -9,34 +9,35 @@
 	"unicode/utf8"
 
 	"golang.org/x/text/encoding"
+	"golang.org/x/text/encoding/internal"
+	"golang.org/x/text/encoding/internal/identifier"
 	"golang.org/x/text/transform"
 )
 
 var (
 	// GB18030 is the GB18030 encoding.
-	GB18030 encoding.Encoding = gbk{gb18030: true}
+	GB18030 encoding.Encoding = &gbk18030
 	// GBK is the GBK encoding. It encodes an extension of the GB2312 character set
 	// and is also known as Code Page 936.
-	GBK encoding.Encoding = gbk{gb18030: false}
+	GBK encoding.Encoding = &gbk
 )
 
-type gbk struct {
-	gb18030 bool
+var gbk = internal.Encoding{
+	&internal.SimpleEncoding{
+		gbkDecoder{gb18030: false},
+		gbkEncoder{gb18030: false},
+	},
+	"GBK",
+	identifier.GBK,
 }
 
-func (g gbk) NewDecoder() transform.Transformer {
-	return gbkDecoder{gb18030: g.gb18030}
-}
-
-func (g gbk) NewEncoder() transform.Transformer {
-	return gbkEncoder{gb18030: g.gb18030}
-}
-
-func (g gbk) String() string {
-	if g.gb18030 {
-		return "GB18030"
-	}
-	return "GBK"
+var gbk18030 = internal.Encoding{
+	&internal.SimpleEncoding{
+		gbkDecoder{gb18030: true},
+		gbkEncoder{gb18030: true},
+	},
+	"GB18030",
+	identifier.GB18030,
 }
 
 var (
diff --git a/go/src/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go b/go/src/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go
index 4a91e32..e42af96 100644
--- a/go/src/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go
+++ b/go/src/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go
@@ -9,26 +9,28 @@
 	"unicode/utf8"
 
 	"golang.org/x/text/encoding"
+	"golang.org/x/text/encoding/internal"
+	"golang.org/x/text/encoding/internal/identifier"
 	"golang.org/x/text/transform"
 )
 
 // HZGB2312 is the HZ-GB2312 encoding.
-var HZGB2312 encoding.Encoding = hzGB2312{}
+var HZGB2312 encoding.Encoding = &hzGB2312
 
-type hzGB2312 struct{}
+var hzGB2312 = internal.Encoding{
+	internal.FuncEncoding{hzGB2312NewDecoder, hzGB2312NewEncoder},
+	"HZ-GB2312",
+	identifier.HZGB2312,
+}
 
-func (hzGB2312) NewDecoder() transform.Transformer {
+func hzGB2312NewDecoder() transform.Transformer {
 	return new(hzGB2312Decoder)
 }
 
-func (hzGB2312) NewEncoder() transform.Transformer {
+func hzGB2312NewEncoder() transform.Transformer {
 	return new(hzGB2312Encoder)
 }
 
-func (hzGB2312) String() string {
-	return "HZ-GB2312"
-}
-
 var errInvalidHZGB2312 = errors.New("simplifiedchinese: invalid HZ-GB2312 encoding")
 
 const (
diff --git a/go/src/golang.org/x/text/encoding/traditionalchinese/big5.go b/go/src/golang.org/x/text/encoding/traditionalchinese/big5.go
index ddd657f..d184cfb 100644
--- a/go/src/golang.org/x/text/encoding/traditionalchinese/big5.go
+++ b/go/src/golang.org/x/text/encoding/traditionalchinese/big5.go
@@ -9,24 +9,21 @@
 	"unicode/utf8"
 
 	"golang.org/x/text/encoding"
+	"golang.org/x/text/encoding/internal"
+	"golang.org/x/text/encoding/internal/identifier"
 	"golang.org/x/text/transform"
 )
 
+// All is a list of all defined encodings in this package.
+var All = []encoding.Encoding{Big5}
+
 // Big5 is the Big5 encoding, also known as Code Page 950.
-var Big5 encoding.Encoding = big5{}
+var Big5 encoding.Encoding = &big5
 
-type big5 struct{}
-
-func (big5) NewDecoder() transform.Transformer {
-	return big5Decoder{}
-}
-
-func (big5) NewEncoder() transform.Transformer {
-	return big5Encoder{}
-}
-
-func (big5) String() string {
-	return "Big5"
+var big5 = internal.Encoding{
+	&internal.SimpleEncoding{big5Decoder{}, big5Encoder{}},
+	"Big5",
+	identifier.Big5,
 }
 
 var errInvalidBig5 = errors.New("traditionalchinese: invalid Big5 encoding")
diff --git a/go/src/golang.org/x/text/encoding/unicode/override.go b/go/src/golang.org/x/text/encoding/unicode/override.go
new file mode 100644
index 0000000..35d62fc
--- /dev/null
+++ b/go/src/golang.org/x/text/encoding/unicode/override.go
@@ -0,0 +1,82 @@
+// Copyright 2015 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 unicode
+
+import (
+	"golang.org/x/text/transform"
+)
+
+// BOMOverride returns a new decoder transformer that is identical to fallback,
+// except that the presence of a Byte Order Mark at the start of the input
+// causes it to switch to the corresponding Unicode decoding. It will only
+// consider BOMs for UTF-8, UTF-16BE, and UTF-16LE.
+//
+// This differs from using ExpectBOM by allowing a BOM to switch to UTF-8, not
+// just UTF-16 variants, and allowing falling back to any encoding scheme.
+//
+// This technique is recommended by the W3C for use in HTML 5: "For
+// compatibility with deployed content, the byte order mark (also known as BOM)
+// is considered more authoritative than anything else."
+// http://www.w3.org/TR/encoding/#specification-hooks
+//
+// Using BOMOverride is mostly intended for use cases where the first characters
+// of a fallback encoding are known to not be a BOM, for example, for valid HTML
+// and most encodings.
+func BOMOverride(fallback transform.Transformer) transform.Transformer {
+	// TODO: possibly allow a variadic argument of unicode encodings to allow
+	// specifying details of which fallbacks are supported as well as
+	// specifying the details of the implementations. This would also allow for
+	// support for UTF-32, which should not be supported by default.
+	return &bomOverride{fallback: fallback}
+}
+
+type bomOverride struct {
+	fallback transform.Transformer
+	current  transform.Transformer
+}
+
+func (d *bomOverride) Reset() {
+	d.current = nil
+	d.fallback.Reset()
+}
+
+var (
+	// TODO: we could use decode functions here, instead of allocating a new
+	// decoder on every NewDecoder as IgnoreBOM decoders can be stateless.
+	utf16le = UTF16(LittleEndian, IgnoreBOM)
+	utf16be = UTF16(BigEndian, IgnoreBOM)
+)
+
+const utf8BOM = "\ufeff"
+
+func (d *bomOverride) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+	if d.current != nil {
+		return d.current.Transform(dst, src, atEOF)
+	}
+	if len(src) < 3 && !atEOF {
+		return 0, 0, transform.ErrShortSrc
+	}
+	d.current = d.fallback
+	bomSize := 0
+	if len(src) >= 2 {
+		if src[0] == 0xFF && src[1] == 0xFE {
+			d.current = utf16le.NewDecoder()
+			bomSize = 2
+		} else if src[0] == 0xFE && src[1] == 0xFF {
+			d.current = utf16be.NewDecoder()
+			bomSize = 2
+		} else if len(src) >= 3 &&
+			src[0] == utf8BOM[0] &&
+			src[1] == utf8BOM[1] &&
+			src[2] == utf8BOM[2] {
+			d.current = transform.Nop
+			bomSize = 3
+		}
+	}
+	if bomSize < len(src) {
+		nDst, nSrc, err = d.current.Transform(dst, src[bomSize:], atEOF)
+	}
+	return nDst, nSrc + bomSize, err
+}
diff --git a/go/src/golang.org/x/text/encoding/unicode/unicode.go b/go/src/golang.org/x/text/encoding/unicode/unicode.go
index aa484dc..17468f2 100644
--- a/go/src/golang.org/x/text/encoding/unicode/unicode.go
+++ b/go/src/golang.org/x/text/encoding/unicode/unicode.go
@@ -11,27 +11,39 @@
 	"unicode/utf8"
 
 	"golang.org/x/text/encoding"
+	"golang.org/x/text/encoding/internal/identifier"
 	"golang.org/x/text/transform"
 )
 
+// TODO: I think the Transformers really should return errors on unmatched
+// surrogate pairs and odd numbers of bytes. This is not required by RFC 2781,
+// which leaves it open, but is suggested by WhatWG. It will allow for all error
+// modes as defined by WhatWG: fatal, HTML and Replacement. This would require
+// the introduction of some kind of error type for conveying the erroneous code
+// point.
+
+// TODO:
+// - Define UTF-8 (mostly for BOM handling.)
+// - Define UTF-32?
+
 // UTF16 returns a UTF-16 Encoding for the given default endianness and byte
 // order mark (BOM) policy.
 //
 // When decoding from UTF-16 to UTF-8, if the BOMPolicy is IgnoreBOM then
 // neither BOMs U+FEFF nor noncharacters U+FFFE in the input stream will affect
 // the endianness used for decoding, and will instead be output as their
-// standard UTF-8 encodings: "\xef\xbb\xbf" and "\xef\xbf\xbe". If the
-// BOMPolicy is ExpectBOM then the input stream is expected to start with a
-// BOM, and the transformation will return early with an ErrMissingBOM error if
-// it does not. That starting BOM is not written to the UTF-8 output. Instead,
-// it overrides the default endianness e for the remainder of the
+// standard UTF-8 encodings: "\xef\xbb\xbf" and "\xef\xbf\xbe". If the BOMPolicy
+// is UseBOM or ExpectBOM a staring BOM is not written to the UTF-8 output.
+// Instead, it overrides the default endianness e for the remainder of the
 // transformation. Any subsequent BOMs U+FEFF or noncharacters U+FFFE will not
 // affect the endianness used, and will instead be output as their standard
-// UTF-8 encodings.
+// UTF-8 encodings. For UseBOM, if there is no starting BOM, it will proceed
+// with the default Endianness. For ExpectBOM, in that case, the transformation
+// will return early with an ErrMissingBOM error.
 //
 // When encoding from UTF-8 to UTF-16, a BOM will be inserted at the start of
-// the output if the BOMPolicy is ExpectBOM. Otherwise, a BOM will not be
-// inserted. The UTF-8 input does not need to contain a BOM.
+// the output if the BOMPolicy is UseBOM or ExpectBOM. Otherwise, a BOM will not
+// be inserted. The UTF-8 input does not need to contain a BOM.
 //
 // There is no concept of a 'native' endianness. If the UTF-16 data is produced
 // and consumed in a greater context that implies a certain endianness, use
@@ -42,18 +54,73 @@
 // BOM should not be used" and ExpectBOM corresponds to "A particular
 // protocol... may require use of the BOM".
 func UTF16(e Endianness, b BOMPolicy) encoding.Encoding {
-	return utf16Encoding{e, b}
+	return utf16Encoding{config{e, b}, mibValue[e][b&bomMask]}
 }
 
+// mibValue maps Endianness and BOMPolicy settings to MIB constants. Note that
+// some configurations map to the same MIB identifier. RFC 2781 has requirements
+// and recommendations. Some of the "configurations" are merely recommendations,
+// so multiple configurations could match.
+var mibValue = map[Endianness][numBOMValues]identifier.MIB{
+	BigEndian: [numBOMValues]identifier.MIB{
+		IgnoreBOM: identifier.UTF16BE,
+		UseBOM:    identifier.UTF16, // BigEnding default is preferred by RFC 2781.
+		// TODO: acceptBOM | strictBOM would map to UTF16BE as well.
+	},
+	LittleEndian: [numBOMValues]identifier.MIB{
+		IgnoreBOM: identifier.UTF16LE,
+		UseBOM:    identifier.UTF16, // LittleEndian default is allowed and preferred on Windows.
+		// TODO: acceptBOM | strictBOM would map to UTF16LE as well.
+	},
+	// ExpectBOM is not widely used and has no valid MIB identifier.
+}
+
+// All lists a configuration for each IANA-defined UTF-16 variant.
+var All = []encoding.Encoding{
+	UTF16(BigEndian, UseBOM),
+	UTF16(BigEndian, IgnoreBOM),
+	UTF16(LittleEndian, IgnoreBOM),
+}
+
+// TODO: also include UTF-8
+
 // BOMPolicy is a UTF-16 encoding's byte order mark policy.
-type BOMPolicy bool
+type BOMPolicy uint8
 
 const (
+	writeBOM   BOMPolicy = 0x01
+	acceptBOM  BOMPolicy = 0x02
+	requireBOM BOMPolicy = 0x04
+	bomMask    BOMPolicy = 0x07
+
+	// HACK: numBOMValues == 8 triggers a bug in the 1.4 compiler (cannot have a
+	// map of an array of length 8 of a type that is also used as a key or value
+	// in another map). See golang.org/issue/11354.
+	// TODO: consider changing this value back to 8 if the use of 1.4.* has
+	// been minimized.
+	numBOMValues = 8 + 1
+
 	// IgnoreBOM means to ignore any byte order marks.
-	IgnoreBOM BOMPolicy = false
-	// ExpectBOM means that the UTF-16 form is expected to start with a
-	// byte order mark.
-	ExpectBOM BOMPolicy = true
+	IgnoreBOM BOMPolicy = 0
+	// Common and RFC 2781-compliant interpretation for UTF-16BE/LE.
+
+	// UseBOM means that the UTF-16 form may start with a byte order mark, which
+	// will be used to override the default encoding.
+	UseBOM BOMPolicy = writeBOM | acceptBOM
+	// Common and RFC 2781-compliant interpretation for UTF-16.
+
+	// ExpectBOM means that the UTF-16 form must start with a byte order mark,
+	// which will be used to override the default encoding.
+	ExpectBOM BOMPolicy = writeBOM | acceptBOM | requireBOM
+	// Used in Java as Unicode (not to be confused with Java's UTF-16) and
+	// ICU's UTF-16,version=1. Not compliant with RFC 2781.
+
+	// TODO (maybe): strictBOM: BOM must match Endianness. This would allow:
+	// - UTF-16(B|L)E,version=1: writeBOM | acceptBOM | requireBOM | strictBOM
+	//    (UnicodeBig and UnicodeLittle in Java)
+	// - RFC 2781-compliant, but less common interpretation for UTF-16(B|L)E:
+	//    acceptBOM | strictBOM (e.g. assigned to CheckBOM).
+	// This addition would be consistent with supporting ExpectBOM.
 )
 
 // Endianness is a UTF-16 encoding's default endianness.
@@ -71,15 +138,19 @@
 var ErrMissingBOM = errors.New("encoding: missing byte order mark")
 
 type utf16Encoding struct {
+	config
+	mib identifier.MIB
+}
+
+type config struct {
 	endianness Endianness
 	bomPolicy  BOMPolicy
 }
 
 func (u utf16Encoding) NewDecoder() transform.Transformer {
 	return &utf16Decoder{
-		endianness:       u.endianness,
-		initialBOMPolicy: u.bomPolicy,
-		currentBOMPolicy: u.bomPolicy,
+		initial: u.config,
+		current: u.config,
 	}
 }
 
@@ -91,63 +162,88 @@
 	}
 }
 
+func (u utf16Encoding) ID() (mib identifier.MIB, other string) {
+	return u.mib, ""
+}
+
 func (u utf16Encoding) String() string {
-	e, b := "B", "Ignore"
+	e, b := "B", ""
 	if u.endianness == LittleEndian {
 		e = "L"
 	}
-	if u.bomPolicy == ExpectBOM {
+	switch u.bomPolicy {
+	case ExpectBOM:
 		b = "Expect"
+	case UseBOM:
+		b = "Use"
+	case IgnoreBOM:
+		b = "Ignore"
 	}
 	return "UTF-16" + e + "E (" + b + " BOM)"
 }
 
 type utf16Decoder struct {
-	endianness       Endianness
-	initialBOMPolicy BOMPolicy
-	currentBOMPolicy BOMPolicy
+	initial config
+	current config
 }
 
 func (u *utf16Decoder) Reset() {
-	u.currentBOMPolicy = u.initialBOMPolicy
+	u.current = u.initial
 }
 
 func (u *utf16Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
-	if u.currentBOMPolicy == ExpectBOM {
+	if u.current.bomPolicy&acceptBOM != 0 {
 		if len(src) < 2 {
 			return 0, 0, transform.ErrShortSrc
 		}
 		switch {
 		case src[0] == 0xfe && src[1] == 0xff:
-			u.endianness = BigEndian
+			u.current.endianness = BigEndian
+			nSrc = 2
 		case src[0] == 0xff && src[1] == 0xfe:
-			u.endianness = LittleEndian
+			u.current.endianness = LittleEndian
+			nSrc = 2
 		default:
-			return 0, 0, ErrMissingBOM
+			if u.current.bomPolicy&requireBOM != 0 {
+				return 0, 0, ErrMissingBOM
+			}
 		}
-		u.currentBOMPolicy = IgnoreBOM
-		nSrc = 2
+		u.current.bomPolicy = IgnoreBOM
 	}
 
-	for nSrc+1 < len(src) {
-		x := uint16(src[nSrc+0])<<8 | uint16(src[nSrc+1])
-		if u.endianness == LittleEndian {
-			x = x>>8 | x<<8
-		}
-		r, sSize := rune(x), 2
-		if utf16.IsSurrogate(r) {
-			if nSrc+3 >= len(src) {
-				break
-			}
-			x = uint16(src[nSrc+2])<<8 | uint16(src[nSrc+3])
-			if u.endianness == LittleEndian {
+	var r rune
+	var dSize, sSize int
+	for nSrc < len(src) {
+		if nSrc+1 < len(src) {
+			x := uint16(src[nSrc+0])<<8 | uint16(src[nSrc+1])
+			if u.current.endianness == LittleEndian {
 				x = x>>8 | x<<8
 			}
-			r, sSize = utf16.DecodeRune(r, rune(x)), 4
-		}
-		dSize := utf8.RuneLen(r)
-		if dSize < 0 {
-			r, dSize = utf8.RuneError, 3
+			r, sSize = rune(x), 2
+			if utf16.IsSurrogate(r) {
+				if nSrc+3 < len(src) {
+					x = uint16(src[nSrc+2])<<8 | uint16(src[nSrc+3])
+					if u.current.endianness == LittleEndian {
+						x = x>>8 | x<<8
+					}
+					// Save for next iteration if it is not a high surrogate.
+					if isHighSurrogate(rune(x)) {
+						r, sSize = utf16.DecodeRune(r, rune(x)), 4
+					}
+				} else if !atEOF {
+					err = transform.ErrShortSrc
+					break
+				}
+			}
+			if dSize = utf8.RuneLen(r); dSize < 0 {
+				r, dSize = utf8.RuneError, 3
+			}
+		} else if atEOF {
+			// Single trailing byte.
+			r, dSize, sSize = utf8.RuneError, 3, 1
+		} else {
+			err = transform.ErrShortSrc
+			break
 		}
 		if nDst+dSize > len(dst) {
 			err = transform.ErrShortDst
@@ -156,13 +252,13 @@
 		nDst += utf8.EncodeRune(dst[nDst:], r)
 		nSrc += sSize
 	}
-
-	if err == nil && nSrc != len(src) {
-		err = transform.ErrShortSrc
-	}
 	return nDst, nSrc, err
 }
 
+func isHighSurrogate(r rune) bool {
+	return 0xDC00 <= r && r <= 0xDFFF
+}
+
 type utf16Encoder struct {
 	endianness       Endianness
 	initialBOMPolicy BOMPolicy
@@ -174,7 +270,7 @@
 }
 
 func (u *utf16Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
-	if u.currentBOMPolicy == ExpectBOM {
+	if u.currentBOMPolicy&writeBOM != 0 {
 		if len(dst) < 2 {
 			return 0, 0, transform.ErrShortDst
 		}
diff --git a/go/src/golang.org/x/text/gen.go b/go/src/golang.org/x/text/gen.go
new file mode 100644
index 0000000..273934b
--- /dev/null
+++ b/go/src/golang.org/x/text/gen.go
@@ -0,0 +1,152 @@
+// Copyright 2015 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.
+
+// +build ignore
+
+// gen runs go generate on Unicode- and CLDR-related package in the text
+// repositories, taking into account dependencies and versions.
+package main
+
+import (
+	"bytes"
+	"flag"
+	"fmt"
+	"os"
+	"os/exec"
+	"path/filepath"
+	"runtime"
+	"strings"
+	"sync"
+	"unicode"
+
+	"golang.org/x/text/internal/gen"
+)
+
+var (
+	verbose     = flag.Bool("v", false, "verbose output")
+	force       = flag.Bool("force", false, "ignore failing dependencies")
+	excludeList = flag.String("exclude", "",
+		"comma-separated list of packages to exclude")
+
+	// The user can specify a selection of packages to build on the command line.
+	args []string
+)
+
+func exclude(pkg string) bool {
+	if len(args) > 0 {
+		return !contains(args, pkg)
+	}
+	return contains(strings.Split(*excludeList, ","), pkg)
+}
+
+// TODO:
+// - Better version handling.
+// - Generate tables for the core unicode package?
+// - Add generation for encodings. This requires some retooling here and there.
+// - Running repo-wide "long" tests.
+
+var vprintf = fmt.Printf
+
+func main() {
+	gen.Init()
+	args = flag.Args()
+	if !*verbose {
+		// Set vprintf to a no-op.
+		vprintf = func(string, ...interface{}) (int, error) { return 0, nil }
+	}
+
+	if gen.UnicodeVersion() != unicode.Version {
+		fmt.Printf("Requested Unicode version %s; core unicode version is %s.\n",
+			gen.UnicodeVersion,
+			unicode.Version)
+		// TODO: use collate to compare. Simple comparison will work, though,
+		// until Unicode reaches version 10. To avoid circular dependencies, we
+		// could use the NumericWeighter without using package collate using a
+		// trivial Weighter implementation.
+		if gen.UnicodeVersion() < unicode.Version && !*force {
+			os.Exit(2)
+		}
+	}
+	var (
+		cldr     = generate("cldr")
+		language = generate("language", cldr)
+		norm     = generate("unicode/norm")
+		_        = generate("unicode/rangetable")
+		_        = generate("width")
+		_        = generate("display", cldr, language)
+		_        = generate("cases", norm)
+		_        = generate("collate", norm, cldr, language)
+		_        = generate("search", norm, cldr, language)
+	)
+	all.Wait()
+
+	if hasErrors {
+		fmt.Println("FAIL")
+		os.Exit(1)
+	}
+	vprintf("SUCCESS\n")
+}
+
+var (
+	all       sync.WaitGroup
+	hasErrors bool
+)
+
+type dependency struct {
+	sync.WaitGroup
+	hasErrors bool
+}
+
+func generate(pkg string, deps ...*dependency) *dependency {
+	var wg dependency
+	if exclude(pkg) {
+		return &wg
+	}
+	wg.Add(1)
+	all.Add(1)
+	go func() {
+		defer wg.Done()
+		defer all.Done()
+		// Wait for dependencies to finish.
+		for _, d := range deps {
+			d.Wait()
+			if d.hasErrors && !*force {
+				fmt.Printf("--- ABORT: %s\n", pkg)
+				wg.hasErrors = true
+				return
+			}
+		}
+		vprintf("=== GENERATE %s\n", pkg)
+		args := []string{"generate"}
+		if *verbose {
+			args = append(args, "-v")
+		}
+		args = append(args, "./"+pkg)
+		cmd := exec.Command(filepath.Join(runtime.GOROOT(), "bin", "go"), args...)
+		w := &bytes.Buffer{}
+		cmd.Stderr = w
+		cmd.Stdout = w
+		if err := cmd.Run(); err != nil {
+			fmt.Printf("--- FAIL: %s:\n\t%v\n\tError: %v\n", pkg, indent(w), err)
+			hasErrors = true
+			wg.hasErrors = true
+			return
+		}
+		vprintf("--- SUCCESS: %s\n\t%v\n", pkg, indent(w))
+	}()
+	return &wg
+}
+
+func contains(a []string, s string) bool {
+	for _, e := range a {
+		if s == e {
+			return true
+		}
+	}
+	return false
+}
+
+func indent(b *bytes.Buffer) string {
+	return strings.Replace(strings.TrimSpace(b.String()), "\n", "\n\t", -1)
+}
diff --git a/go/src/golang.org/x/text/internal/colltab/colltab.go b/go/src/golang.org/x/text/internal/colltab/colltab.go
new file mode 100644
index 0000000..e1ad888
--- /dev/null
+++ b/go/src/golang.org/x/text/internal/colltab/colltab.go
@@ -0,0 +1,105 @@
+// Copyright 2015 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 colltab contains functionality related to collation tables.
+// It is only to be used by the collate and search packages.
+package colltab
+
+import (
+	"sort"
+
+	"golang.org/x/text/language"
+)
+
+// MatchLang finds the index of t in tags, using a matching algorithm used for
+// collation and search. tags[0] must be language.Und, the remaining tags should
+// be sorted alphabetically.
+//
+// Language matching for collation and search is different from the matching
+// defined by language.Matcher: the (inferred) base language must be an exact
+// match for the relevant fields. For example, "gsw" should not match "de".
+// Also the parent relation is different, as a parent may have a different
+// script. So usually the parent of zh-Hant is und, whereas for MatchLang it is
+// zh.
+func MatchLang(t language.Tag, tags []language.Tag) int {
+	// Canonicalize the values, including collapsing macro languages.
+	t, _ = language.All.Canonicalize(t)
+
+	base, conf := t.Base()
+	// Estimate the base language, but only use high-confidence values.
+	if conf < language.High {
+		// The root locale supports "search" and "standard". We assume that any
+		// implementation will only use one of both.
+		return 0
+	}
+
+	// Maximize base and script and normalize the tag.
+	if _, s, r := t.Raw(); (r != language.Region{}) {
+		p, _ := language.Raw.Compose(base, s, r)
+		// Taking the parent forces the script to be maximized.
+		p = p.Parent()
+		// Add back region and extensions.
+		t, _ = language.Raw.Compose(p, r, t.Extensions())
+	} else {
+		// Set the maximized base language.
+		t, _ = language.Raw.Compose(base, s, t.Extensions())
+	}
+
+	// Find start index of the language tag.
+	start := 1 + sort.Search(len(tags)-1, func(i int) bool {
+		b, _, _ := tags[i+1].Raw()
+		return base.String() <= b.String()
+	})
+	if start < len(tags) {
+		if b, _, _ := tags[start].Raw(); b != base {
+			return 0
+		}
+	}
+
+	// Besides the base language, script and region, only the collation type and
+	// the custom variant defined in the 'u' extension are used to distinguish a
+	// locale.
+	// Strip all variants and extensions and add back the custom variant.
+	tdef, _ := language.Raw.Compose(t.Raw())
+	tdef, _ = tdef.SetTypeForKey("va", t.TypeForKey("va"))
+
+	// First search for a specialized collation type, if present.
+	try := []language.Tag{tdef}
+	if co := t.TypeForKey("co"); co != "" {
+		tco, _ := tdef.SetTypeForKey("co", co)
+		try = []language.Tag{tco, tdef}
+	}
+
+	for _, tx := range try {
+		for ; tx != language.Und; tx = parent(tx) {
+			for i, t := range tags[start:] {
+				if b, _, _ := t.Raw(); b != base {
+					break
+				}
+				if tx == t {
+					return start + i
+				}
+			}
+		}
+	}
+	return 0
+}
+
+// parent computes the structural parent. This means inheritance may change
+// script. So, unlike the CLDR parent, parent(zh-Hant) == zh.
+func parent(t language.Tag) language.Tag {
+	if t.TypeForKey("va") != "" {
+		t, _ = t.SetTypeForKey("va", "")
+		return t
+	}
+	result := language.Und
+	if b, s, r := t.Raw(); (r != language.Region{}) {
+		result, _ = language.Raw.Compose(b, s, t.Extensions())
+	} else if (s != language.Script{}) {
+		result, _ = language.Raw.Compose(b, t.Extensions())
+	} else if (b != language.Base{}) {
+		result, _ = language.Raw.Compose(t.Extensions())
+	}
+	return result
+}
diff --git a/go/src/golang.org/x/text/internal/colltab/colltab_test.go b/go/src/golang.org/x/text/internal/colltab/colltab_test.go
new file mode 100644
index 0000000..177ec7b
--- /dev/null
+++ b/go/src/golang.org/x/text/internal/colltab/colltab_test.go
@@ -0,0 +1,56 @@
+package colltab
+
+import (
+	"testing"
+
+	"golang.org/x/text/language"
+)
+
+func TestMatchLang(t *testing.T) {
+	tags := []language.Tag{
+		0:  language.Und,
+		1:  language.MustParse("bs"),
+		2:  language.German,
+		3:  language.English,
+		4:  language.AmericanEnglish,
+		5:  language.MustParse("en-US-u-va-posix"),
+		6:  language.Portuguese,
+		7:  language.Serbian,
+		8:  language.MustParse("sr-Latn"),
+		9:  language.Chinese,
+		10: language.SimplifiedChinese, // Cannot match.
+		11: language.TraditionalChinese,
+	}
+	for i, tc := range []struct {
+		x int
+		t language.Tag
+	}{
+		{0, language.Und},
+		{0, language.Persian}, // Default to first element when no match.
+		{3, language.English},
+		{4, language.AmericanEnglish},
+		{5, language.MustParse("en-US-u-va-posix")},   // Ext. variant match.
+		{4, language.MustParse("en-US-u-va-noposix")}, // Ext. variant mismatch.
+		{3, language.MustParse("en-UK-u-va-noposix")}, // Ext. variant mismatch.
+		{7, language.Serbian},
+		{0, language.Croatian},             // Don't match to close language!
+		{0, language.MustParse("gsw")},     // Don't match to close language!
+		{1, language.MustParse("bs-Cyrl")}, // Odd, but correct.
+		{1, language.MustParse("bs-Latn")}, // Estimated script drops.
+		{8, language.MustParse("sr-Latn")},
+		{9, language.Chinese},
+		{10, language.SimplifiedChinese}, // Default script drops.
+		{11, language.TraditionalChinese},
+		{11, language.MustParse("und-TW")},     // Infer script and language.
+		{11, language.MustParse("und-HK")},     // Infer script and language.
+		{6, language.MustParse("und-BR")},      // Infer script and language.
+		{6, language.MustParse("und-PT")},      // Infer script and language.
+		{2, language.MustParse("und-Latn-DE")}, // Infer language.
+		{0, language.MustParse("und-Jpan-BR")}, // Infers "ja", so no match.
+		{0, language.MustParse("zu")},          // No match past index.
+	} {
+		if x := MatchLang(tc.t, tags); x != tc.x {
+			t.Errorf("%d: MatchLang(%q, tags) = %d; want %d", i, tc.t, x, tc.x)
+		}
+	}
+}
diff --git a/go/src/golang.org/x/text/internal/colltab/contract.go b/go/src/golang.org/x/text/internal/colltab/contract.go
new file mode 100644
index 0000000..54b9795
--- /dev/null
+++ b/go/src/golang.org/x/text/internal/colltab/contract.go
@@ -0,0 +1,145 @@
+// 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 colltab
+
+import "unicode/utf8"
+
+// For a description of contractTrieSet, see text/collate/build/contract.go.
+
+type contractTrieSet []struct{ l, h, n, i uint8 }
+
+// ctScanner is used to match a trie to an input sequence.
+// A contraction may match a non-contiguous sequence of bytes in an input string.
+// For example, if there is a contraction for <a, combining_ring>, it should match
+// the sequence <a, combining_cedilla, combining_ring>, as combining_cedilla does
+// not block combining_ring.
+// ctScanner does not automatically skip over non-blocking non-starters, but rather
+// retains the state of the last match and leaves it up to the user to continue
+// the match at the appropriate points.
+type ctScanner struct {
+	states contractTrieSet
+	s      []byte
+	n      int
+	index  int
+	pindex int
+	done   bool
+}
+
+type ctScannerString struct {
+	states contractTrieSet
+	s      string
+	n      int
+	index  int
+	pindex int
+	done   bool
+}
+
+func (t contractTrieSet) scanner(index, n int, b []byte) ctScanner {
+	return ctScanner{s: b, states: t[index:], n: n}
+}
+
+func (t contractTrieSet) scannerString(index, n int, str string) ctScannerString {
+	return ctScannerString{s: str, states: t[index:], n: n}
+}
+
+// result returns the offset i and bytes consumed p so far.  If no suffix
+// matched, i and p will be 0.
+func (s *ctScanner) result() (i, p int) {
+	return s.index, s.pindex
+}
+
+func (s *ctScannerString) result() (i, p int) {
+	return s.index, s.pindex
+}
+
+const (
+	final   = 0
+	noIndex = 0xFF
+)
+
+// scan matches the longest suffix at the current location in the input
+// and returns the number of bytes consumed.
+func (s *ctScanner) scan(p int) int {
+	pr := p // the p at the rune start
+	str := s.s
+	states, n := s.states, s.n
+	for i := 0; i < n && p < len(str); {
+		e := states[i]
+		c := str[p]
+		// TODO: a significant number of contractions are of a form that
+		// cannot match discontiguous UTF-8 in a normalized string. We could let
+		// a negative value of e.n mean that we can set s.done = true and avoid
+		// the need for additional matches.
+		if c >= e.l {
+			if e.l == c {
+				p++
+				if e.i != noIndex {
+					s.index = int(e.i)
+					s.pindex = p
+				}
+				if e.n != final {
+					i, states, n = 0, states[int(e.h)+n:], int(e.n)
+					if p >= len(str) || utf8.RuneStart(str[p]) {
+						s.states, s.n, pr = states, n, p
+					}
+				} else {
+					s.done = true
+					return p
+				}
+				continue
+			} else if e.n == final && c <= e.h {
+				p++
+				s.done = true
+				s.index = int(c-e.l) + int(e.i)
+				s.pindex = p
+				return p
+			}
+		}
+		i++
+	}
+	return pr
+}
+
+// scan is a verbatim copy of ctScanner.scan.
+func (s *ctScannerString) scan(p int) int {
+	pr := p // the p at the rune start
+	str := s.s
+	states, n := s.states, s.n
+	for i := 0; i < n && p < len(str); {
+		e := states[i]
+		c := str[p]
+		// TODO: a significant number of contractions are of a form that
+		// cannot match discontiguous UTF-8 in a normalized string. We could let
+		// a negative value of e.n mean that we can set s.done = true and avoid
+		// the need for additional matches.
+		if c >= e.l {
+			if e.l == c {
+				p++
+				if e.i != noIndex {
+					s.index = int(e.i)
+					s.pindex = p
+				}
+				if e.n != final {
+					i, states, n = 0, states[int(e.h)+n:], int(e.n)
+					if p >= len(str) || utf8.RuneStart(str[p]) {
+						s.states, s.n, pr = states, n, p
+					}
+				} else {
+					s.done = true
+					return p
+				}
+				continue
+			} else if e.n == final && c <= e.h {
+				p++
+				s.done = true
+				s.index = int(c-e.l) + int(e.i)
+				s.pindex = p
+				return p
+			}
+		}
+		i++
+	}
+	return pr
+}
diff --git a/go/src/golang.org/x/text/internal/colltab/contract_test.go b/go/src/golang.org/x/text/internal/colltab/contract_test.go
new file mode 100644
index 0000000..c37c020
--- /dev/null
+++ b/go/src/golang.org/x/text/internal/colltab/contract_test.go
@@ -0,0 +1,135 @@
+// 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 colltab
+
+import (
+	"testing"
+)
+
+type lookupStrings struct {
+	str    string
+	offset int
+	n      int // bytes consumed from input
+}
+
+var lookupTests = []struct {
+	lookup []lookupStrings
+	n      int
+	tries  contractTrieSet
+}{
+	{
+		[]lookupStrings{
+			{"abc", 1, 3},
+			{"a", 0, 0},
+			{"b", 0, 0},
+			{"c", 0, 0},
+			{"d", 0, 0},
+		},
+		1,
+		contractTrieSet{
+			{'a', 0, 1, 0xFF},
+			{'b', 0, 1, 0xFF},
+			{'c', 'c', 0, 1},
+		},
+	},
+	{
+		[]lookupStrings{
+			{"abc", 1, 3},
+			{"abd", 2, 3},
+			{"abe", 3, 3},
+			{"a", 0, 0},
+			{"ab", 0, 0},
+			{"d", 0, 0},
+			{"f", 0, 0},
+		},
+		1,
+		contractTrieSet{
+			{'a', 0, 1, 0xFF},
+			{'b', 0, 1, 0xFF},
+			{'c', 'e', 0, 1},
+		},
+	},
+	{
+		[]lookupStrings{
+			{"abc", 1, 3},
+			{"ab", 2, 2},
+			{"a", 3, 1},
+			{"abcd", 1, 3},
+			{"abe", 2, 2},
+		},
+		1,
+		contractTrieSet{
+			{'a', 0, 1, 3},
+			{'b', 0, 1, 2},
+			{'c', 'c', 0, 1},
+		},
+	},
+	{
+		[]lookupStrings{
+			{"abc", 1, 3},
+			{"abd", 2, 3},
+			{"ab", 3, 2},
+			{"ac", 4, 2},
+			{"a", 5, 1},
+			{"b", 6, 1},
+			{"ba", 6, 1},
+		},
+		2,
+		contractTrieSet{
+			{'b', 'b', 0, 6},
+			{'a', 0, 2, 5},
+			{'c', 'c', 0, 4},
+			{'b', 0, 1, 3},
+			{'c', 'd', 0, 1},
+		},
+	},
+	{
+		[]lookupStrings{
+			{"bcde", 2, 4},
+			{"bc", 7, 2},
+			{"ab", 6, 2},
+			{"bcd", 5, 3},
+			{"abcd", 1, 4},
+			{"abc", 4, 3},
+			{"bcdf", 3, 4},
+		},
+		2,
+		contractTrieSet{
+			{'b', 3, 1, 0xFF},
+			{'a', 0, 1, 0xFF},
+			{'b', 0, 1, 6},
+			{'c', 0, 1, 4},
+			{'d', 'd', 0, 1},
+			{'c', 0, 1, 7},
+			{'d', 0, 1, 5},
+			{'e', 'f', 0, 2},
+		},
+	},
+}
+
+func lookup(c *contractTrieSet, nnode int, s []uint8) (i, n int) {
+	scan := c.scanner(0, nnode, s)
+	scan.scan(0)
+	return scan.result()
+}
+
+func TestLookupContraction(t *testing.T) {
+	for i, tt := range lookupTests {
+		cts := contractTrieSet(tt.tries)
+		for j, lu := range tt.lookup {
+			str := lu.str
+			for _, s := range []string{str, str + "X"} {
+				const msg = "%d:%d: %s of %q %v; want %v"
+				offset, n := lookup(&cts, tt.n, []byte(s))
+				if offset != lu.offset {
+					t.Errorf(msg, i, j, "offset", s, offset, lu.offset)
+				}
+				if n != lu.n {
+					t.Errorf(msg, i, j, "bytes consumed", s, n, len(str))
+				}
+			}
+		}
+	}
+}
diff --git a/go/src/golang.org/x/text/internal/colltab/iter.go b/go/src/golang.org/x/text/internal/colltab/iter.go
new file mode 100644
index 0000000..2e40a88
--- /dev/null
+++ b/go/src/golang.org/x/text/internal/colltab/iter.go
@@ -0,0 +1,179 @@
+// Copyright 2015 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 colltab
+
+import (
+	"golang.org/x/text/collate/colltab"
+)
+
+// An Iter incrementally converts chunks of the input text to collation
+// elements, while ensuring that the collation elements are in normalized order
+// (that is, they are in the order as if the input text were normalized first).
+type Iter struct {
+	Weighter colltab.Weighter
+	Elems    []colltab.Elem
+	// N is the number of elements in Elems that will not be reordered on
+	// subsequent iterations, N <= len(Elems).
+	N int
+
+	bytes []byte
+	str   string
+	// Because the Elems buffer may contain collation elements that are needed
+	// for look-ahead, we need two positions in the text (bytes or str): one for
+	// the end position in the text for the current iteration and one for the
+	// start of the next call to appendNext.
+	pEnd  int // end position in text corresponding to N.
+	pNext int // pEnd <= pNext.
+}
+
+// Reset sets the position in the current input text to p and discards any
+// results obtained so far.
+func (i *Iter) Reset(p int) {
+	i.Elems = i.Elems[:0]
+	i.N = 0
+	i.pEnd = p
+	i.pNext = p
+}
+
+// Len returns the length of the input text.
+func (i *Iter) Len() int {
+	if i.bytes != nil {
+		return len(i.bytes)
+	}
+	return len(i.str)
+}
+
+// Discard removes the collation elements up to N.
+func (i *Iter) Discard() {
+	// TODO: change this such that only modifiers following starters will have
+	// to be copied.
+	i.Elems = i.Elems[:copy(i.Elems, i.Elems[i.N:])]
+	i.N = 0
+}
+
+// End returns the end position of the input text for which Next has returned
+// results.
+func (i *Iter) End() int {
+	return i.pEnd
+}
+
+// SetInput resets i to input s.
+func (i *Iter) SetInput(s []byte) {
+	i.bytes = s
+	i.str = ""
+	i.Reset(0)
+}
+
+// SetInputString resets i to input s.
+func (i *Iter) SetInputString(s string) {
+	i.str = s
+	i.bytes = nil
+	i.Reset(0)
+}
+
+func (i *Iter) done() bool {
+	return i.pNext >= len(i.str) && i.pNext >= len(i.bytes)
+}
+
+func (i *Iter) appendNext() bool {
+	if i.done() {
+		return false
+	}
+	var sz int
+	if i.bytes == nil {
+		i.Elems, sz = i.Weighter.AppendNextString(i.Elems, i.str[i.pNext:])
+	} else {
+		i.Elems, sz = i.Weighter.AppendNext(i.Elems, i.bytes[i.pNext:])
+	}
+	i.pNext += sz
+	return true
+}
+
+// Next appends Elems to the internal array. On each iteration, it will either
+// add starters or modifiers. In the majority of cases, an Elem with a primary
+// value > 0 will have a CCC of 0. The CCC values of collation elements are also
+// used to detect if the input string was not normalized and to adjust the
+// result accordingly.
+func (i *Iter) Next() bool {
+	if i.N == len(i.Elems) && !i.appendNext() {
+		return false
+	}
+
+	// Check if the current segment starts with a starter.
+	prevCCC := i.Elems[len(i.Elems)-1].CCC()
+	if prevCCC == 0 {
+		i.N = len(i.Elems)
+		i.pEnd = i.pNext
+		return true
+	} else if i.Elems[i.N].CCC() == 0 {
+		// set i.N to only cover part of i.Elems for which prevCCC == 0 and
+		// use rest for the next call to next.
+		for i.N++; i.N < len(i.Elems) && i.Elems[i.N].CCC() == 0; i.N++ {
+		}
+		i.pEnd = i.pNext
+		return true
+	}
+
+	// The current (partial) segment starts with modifiers. We need to collect
+	// all successive modifiers to ensure that they are normalized.
+	for {
+		p := len(i.Elems)
+		i.pEnd = i.pNext
+		if !i.appendNext() {
+			break
+		}
+
+		if ccc := i.Elems[p].CCC(); ccc == 0 || len(i.Elems)-i.N > maxCombiningCharacters {
+			// Leave the starter for the next iteration. This ensures that we
+			// do not return sequences of collation elements that cross two
+			// segments.
+			//
+			// TODO: handle large number of combining characters by fully
+			// normalizing the input segment before iteration. This ensures
+			// results are consistent across the text repo.
+			i.N = p
+			return true
+		} else if ccc < prevCCC {
+			i.doNorm(p, ccc) // should be rare, never occurs for NFD and FCC.
+		} else {
+			prevCCC = ccc
+		}
+	}
+
+	done := len(i.Elems) != i.N
+	i.N = len(i.Elems)
+	return done
+}
+
+// nextNoNorm is the same as next, but does not "normalize" the collation
+// elements.
+func (i *Iter) nextNoNorm() bool {
+	// TODO: remove this function. Using this instead of next does not seem
+	// to improve performance in any significant way. We retain this until
+	// later for evaluation purposes.
+	if i.done() {
+		return false
+	}
+	i.appendNext()
+	i.N = len(i.Elems)
+	return true
+}
+
+const maxCombiningCharacters = 30
+
+// doNorm reorders the collation elements in i.Elems.
+// It assumes that blocks of collation elements added with appendNext
+// either start and end with the same CCC or start with CCC == 0.
+// This allows for a single insertion point for the entire block.
+// The correctness of this assumption is verified in builder.go.
+func (i *Iter) doNorm(p int, ccc uint8) {
+	n := len(i.Elems)
+	k := p
+	for p--; p > i.N && ccc < i.Elems[p-1].CCC(); p-- {
+	}
+	i.Elems = append(i.Elems, i.Elems[p:k]...)
+	copy(i.Elems[p:], i.Elems[k:])
+	i.Elems = i.Elems[:n]
+}
diff --git a/go/src/golang.org/x/text/internal/colltab/iter_test.go b/go/src/golang.org/x/text/internal/colltab/iter_test.go
new file mode 100644
index 0000000..05164ab
--- /dev/null
+++ b/go/src/golang.org/x/text/internal/colltab/iter_test.go
@@ -0,0 +1,77 @@
+// Copyright 2015 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 colltab
+
+import (
+	"testing"
+
+	"golang.org/x/text/collate/colltab"
+)
+
+const (
+	defaultSecondary = 0x20
+)
+
+func makeCE(w []int) colltab.Elem {
+	ce, err := colltab.MakeElem(w[0], w[1], w[2], uint8(w[3]))
+	if err != nil {
+		panic(err)
+	}
+	return ce
+}
+
+func TestDoNorm(t *testing.T) {
+	const div = -1 // The insertion point of the next block.
+	tests := []struct {
+		in, out []int
+	}{{
+		in:  []int{4, div, 3},
+		out: []int{3, 4},
+	}, {
+		in:  []int{4, div, 3, 3, 3},
+		out: []int{3, 3, 3, 4},
+	}, {
+		in:  []int{0, 4, div, 3},
+		out: []int{0, 3, 4},
+	}, {
+		in:  []int{0, 0, 4, 5, div, 3, 3},
+		out: []int{0, 0, 3, 3, 4, 5},
+	}, {
+		in:  []int{0, 0, 1, 4, 5, div, 3, 3},
+		out: []int{0, 0, 1, 3, 3, 4, 5},
+	}, {
+		in:  []int{0, 0, 1, 4, 5, div, 4, 4},
+		out: []int{0, 0, 1, 4, 4, 4, 5},
+	},
+	}
+	for j, tt := range tests {
+		i := Iter{}
+		var w, p int
+		for k, cc := range tt.in {
+
+			if cc == div {
+				w = 100
+				p = k
+				continue
+			}
+			i.Elems = append(i.Elems, makeCE([]int{w, defaultSecondary, 2, cc}))
+		}
+		i.doNorm(p, i.Elems[p].CCC())
+		if len(i.Elems) != len(tt.out) {
+			t.Errorf("%d: length was %d; want %d", j, len(i.Elems), len(tt.out))
+		}
+		prevCCC := uint8(0)
+		for k, ce := range i.Elems {
+			if int(ce.CCC()) != tt.out[k] {
+				t.Errorf("%d:%d: unexpected CCC. Was %d; want %d", j, k, ce.CCC(), tt.out[k])
+			}
+			if k > 0 && ce.CCC() == prevCCC && i.Elems[k-1].Primary() > ce.Primary() {
+				t.Errorf("%d:%d: normalization crossed across CCC boundary.", j, k)
+			}
+		}
+	}
+
+	// Combining rune overflow is tested in search/pattern_test.go.
+}
diff --git a/go/src/golang.org/x/text/internal/gen/gen.go b/go/src/golang.org/x/text/internal/gen/gen.go
new file mode 100644
index 0000000..e63dafe
--- /dev/null
+++ b/go/src/golang.org/x/text/internal/gen/gen.go
@@ -0,0 +1,199 @@
+// Copyright 2015 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 gen contains common code for the various code generation tools in the
+// text repository. Its usage ensures consistency between tools.
+//
+// This package defines command line flags that are common to most generation
+// tools. The flags allow for specifying specific Unicode and CLDR versions
+// in the public Unicode data repository (http://www.unicode.org/Public).
+//
+// A local Unicode data mirror can be set through the flag -local or the
+// environment variable UNICODE_DIR. The former takes precedence. The local
+// directory should follow the same structure as the public repository.
+//
+// IANA data can also optionally be mirrored by putting it in the iana directory
+// rooted at the top of the local mirror. Beware, though, that IANA data is not
+// versioned. So it is up to the developer to use the right version.
+package gen
+
+import (
+	"flag"
+	"fmt"
+	"go/format"
+	"io"
+	"log"
+	"net/http"
+	"os"
+	"path"
+	"path/filepath"
+	"unicode"
+
+	"golang.org/x/text/cldr"
+)
+
+var (
+	url = flag.String("url",
+		"http://www.unicode.org/Public",
+		"URL of Unicode database directory")
+	iana = flag.String("iana",
+		"http://www.iana.org",
+		"URL of the IANA repository")
+	unicodeVersion = flag.String("unicode",
+		getEnv("UNICODE_VERSION", unicode.Version),
+		"unicode version to use")
+	cldrVersion = flag.String("cldr",
+		getEnv("CLDR_VERSION", cldr.Version),
+		"cldr version to use")
+	// Allow an environment variable to specify the local directory.
+	// go generate doesn't allow specifying arguments; this is a useful
+	// alternative to specifying a local mirror.
+	localDir = flag.String("local",
+		os.Getenv("UNICODE_DIR"),
+		"directory containing local data files; for debugging only.")
+)
+
+func getEnv(name, def string) string {
+	if v := os.Getenv(name); v != "" {
+		return v
+	}
+	return def
+}
+
+// Init performs common initialization for a gen command. It parses the flags
+// and sets up the standard logging parameters.
+func Init() {
+	log.SetPrefix("")
+	log.SetFlags(log.Lshortfile)
+	flag.Parse()
+}
+
+const header = `// This file was generated by go generate; DO NOT EDIT
+
+package %s
+
+`
+
+// UnicodeVersion reports the requested Unicode version.
+func UnicodeVersion() string {
+	return *unicodeVersion
+}
+
+// UnicodeVersion reports the requested CLDR version.
+func CLDRVersion() string {
+	return *cldrVersion
+}
+
+// IsLocal reports whether the user specified a local directory.
+func IsLocal() bool {
+	return *localDir != ""
+}
+
+// OpenUCDFile opens the requested UCD file. The file is specified relative to
+// the public Unicode root directory. It will call log.Fatal if there are any
+// errors.
+func OpenUCDFile(file string) io.ReadCloser {
+	return openUnicode(path.Join(*unicodeVersion, "ucd", file))
+}
+
+// OpenCLDRCoreZip opens the CLDR core zip file. It will call log.Fatal if there
+// are any errors.
+func OpenCLDRCoreZip() io.ReadCloser {
+	return OpenUnicodeFile("cldr", *cldrVersion, "core.zip")
+}
+
+// OpenUnicodeFile opens the requested file of the requested category from the
+// root of the Unicode data archive. The file is specified relative to the
+// public Unicode root directory. If version is "", it will use the default
+// Unicode version. It will call log.Fatal if there are any errors.
+func OpenUnicodeFile(category, version, file string) io.ReadCloser {
+	if version == "" {
+		version = UnicodeVersion()
+	}
+	return openUnicode(path.Join(category, version, file))
+}
+
+// OpenIANAFile opens the requested IANA file. The file is specified relative
+// to the IANA root, which is typically either http://www.iana.org or the
+// iana directory in the local mirror. It will call log.Fatal if there are any
+// errors.
+func OpenIANAFile(path string) io.ReadCloser {
+	return Open(*iana, "iana", path)
+}
+
+// Open opens subdir/path if a local directory is specified and the file exists,
+// where subdir is a directory relative to the local root, or fetches it from
+// urlRoot/path otherwise. It will call log.Fatal if there are any errors.
+func Open(urlRoot, subdir, path string) io.ReadCloser {
+	if *localDir != "" {
+		path = filepath.FromSlash(path)
+		if f, err := os.Open(filepath.Join(*localDir, subdir, path)); err == nil {
+			return f
+		}
+	}
+	return get(urlRoot, path)
+}
+
+func openUnicode(path string) io.ReadCloser {
+	if *localDir != "" {
+		path = filepath.FromSlash(path)
+		f, err := os.Open(filepath.Join(*localDir, path))
+		if err != nil {
+			log.Fatal(err)
+		}
+		return f
+	}
+	return get(*url, path)
+}
+
+func get(root, path string) io.ReadCloser {
+	url := root + "/" + path
+	resp, err := http.Get(url)
+	if err != nil {
+		log.Fatalf("HTTP GET: %v", err)
+	}
+	if resp.StatusCode != 200 {
+		log.Fatalf("Bad GET status for %q: %q", url, resp.Status)
+	}
+	return resp.Body
+}
+
+// TODO: use Write*Version in all applicable packages.
+
+// WriteUnicodeVersion writes a constant for the Unicode version from which the
+// tables are generated.
+func WriteUnicodeVersion(w io.Writer) {
+	fmt.Fprintf(w, "// UnicodeVersion is the Unicode version from which the tables in this package are derived.\n")
+	fmt.Fprintf(w, "const UnicodeVersion = %q\n\n", UnicodeVersion())
+}
+
+// WriteCLDRVersion writes a constant for the CLDR version from which the
+// tables are generated.
+func WriteCLDRVersion(w io.Writer) {
+	fmt.Fprintf(w, "// CLDRVersion is the CLDR version from which the tables in this package are derived.\n")
+	fmt.Fprintf(w, "const CLDRVersion = %q\n\n", CLDRVersion())
+}
+
+// WriteGoFiles prepends a standard file comment and package statement to the
+// given bytes, applies gofmt, and writes them to a file with the given name.
+// It will call log.Fatal if there are any errors.
+func WriteGoFile(filename, pkg string, b []byte) {
+	w, err := os.Create(filename)
+	if err != nil {
+		log.Fatalf("Could not create file %s: %v", filename, err)
+	}
+	defer w.Close()
+	src := []byte(fmt.Sprintf(header, pkg))
+	src = append(src, b...)
+	formatted, err := format.Source(src)
+	if err != nil {
+		// Print the generated code even in case of an error so that the
+		// returned error can be meaningfully interpreted.
+		w.Write(src)
+		log.Fatalf("Error formatting file %s: %v", filename, err)
+	}
+	if _, err := w.Write(formatted); err != nil {
+		log.Fatalf("Error writing file %s: %v", filename, err)
+	}
+}
diff --git a/go/src/golang.org/x/text/internal/testtext/codesize.go b/go/src/golang.org/x/text/internal/testtext/codesize.go
new file mode 100644
index 0000000..5fc5eae
--- /dev/null
+++ b/go/src/golang.org/x/text/internal/testtext/codesize.go
@@ -0,0 +1,53 @@
+// Copyright 2015 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 testtext
+
+import (
+	"bytes"
+	"fmt"
+	"io/ioutil"
+	"os"
+	"os/exec"
+	"path/filepath"
+	"runtime"
+)
+
+// CodeSize builds the given code sample and returns the binary size or en error
+// if an error occurred. The code sample typically will look like this:
+//     package main
+//     import "golang.org/x/text/somepackage"
+//     func main() {
+//         somepackage.Func() // reference Func to cause it to be linked in.
+//     }
+// See dict_test.go in the display package for an example.
+func CodeSize(s string) (int, error) {
+	// Write the file.
+	tmpdir, err := ioutil.TempDir(os.TempDir(), "testtext")
+	if err != nil {
+		return 0, fmt.Errorf("testtext: failed to create tmpdir: %v", err)
+	}
+	defer os.RemoveAll(tmpdir)
+	filename := filepath.Join(tmpdir, "main.go")
+	if err := ioutil.WriteFile(filename, []byte(s), 0644); err != nil {
+		return 0, fmt.Errorf("testtext: failed to write main.go: %v", err)
+	}
+
+	// Build the binary.
+	w := &bytes.Buffer{}
+	cmd := exec.Command(filepath.Join(runtime.GOROOT(), "bin", "go"), "build", "-o", "main")
+	cmd.Dir = tmpdir
+	cmd.Stderr = w
+	cmd.Stdout = w
+	if err := cmd.Run(); err != nil {
+		return 0, fmt.Errorf("testtext: failed to execute command: %v\nmain.go:\n%vErrors:%s", err, s, w)
+	}
+
+	// Determine the size.
+	fi, err := os.Stat(filepath.Join(tmpdir, "main"))
+	if err != nil {
+		return 0, fmt.Errorf("testtext: failed to get file info: %v", err)
+	}
+	return int(fi.Size()), nil
+}
diff --git a/go/src/golang.org/x/text/internal/testtext/text.go b/go/src/golang.org/x/text/internal/testtext/text.go
new file mode 100644
index 0000000..6974f80
--- /dev/null
+++ b/go/src/golang.org/x/text/internal/testtext/text.go
@@ -0,0 +1,105 @@
+// Copyright 2015 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 testtext contains test data that is of common use to the text
+// repository.
+package testtext
+
+const (
+
+	// ASCII is an ASCII string containing all letters in the English alphabet.
+	ASCII = "The quick brown fox jumps over the lazy dog. " +
+		"The quick brown fox jumps over the lazy dog. " +
+		"The quick brown fox jumps over the lazy dog. " +
+		"The quick brown fox jumps over the lazy dog. " +
+		"The quick brown fox jumps over the lazy dog. " +
+		"The quick brown fox jumps over the lazy dog. " +
+		"The quick brown fox jumps over the lazy dog. " +
+		"The quick brown fox jumps over the lazy dog. " +
+		"The quick brown fox jumps over the lazy dog. " +
+		"The quick brown fox jumps over the lazy dog. "
+
+	// Vietnamese is a snippet from http://creativecommons.org/licenses/by-sa/3.0/vn/
+	Vietnamese = `Với các điều kiện sau: Ghi nhận công của tác giả. 
+Nếu bạn sử dụng, chuyển đổi, hoặc xây dựng dự án từ 
+nội dung được chia sẻ này, bạn phải áp dụng giấy phép này hoặc 
+một giấy phép khác có các điều khoản tương tự như giấy phép này
+cho dự án của bạn. Hiểu rằng: Miễn — Bất kỳ các điều kiện nào
+trên đây cũng có thể được miễn bỏ nếu bạn được sự cho phép của
+người sở hữu bản quyền. Phạm vi công chúng — Khi tác phẩm hoặc
+bất kỳ chương nào của tác phẩm đã trong vùng dành cho công
+chúng theo quy định của pháp luật thì tình trạng của nó không 
+bị ảnh hưởng bởi giấy phép trong bất kỳ trường hợp nào.`
+
+	// Russian is a snippet from http://creativecommons.org/licenses/by-sa/1.0/deed.ru
+	Russian = `При обязательном соблюдении следующих условий:
+Attribution — Вы должны атрибутировать произведение (указывать
+автора и источник) в порядке, предусмотренном автором или
+лицензиаром (но только так, чтобы никоим образом не подразумевалось,
+что они поддерживают вас или использование вами данного произведения).
+Υπό τις ακόλουθες προϋποθέσεις:`
+
+	// Greek is a snippet from http://creativecommons.org/licenses/by-sa/3.0/gr/
+	Greek = `Αναφορά Δημιουργού — Θα πρέπει να κάνετε την αναφορά στο έργο με τον
+τρόπο που έχει οριστεί από το δημιουργό ή το χορηγούντο την άδεια
+(χωρίς όμως να εννοείται με οποιονδήποτε τρόπο ότι εγκρίνουν εσάς ή
+τη χρήση του έργου από εσάς). Παρόμοια Διανομή — Εάν αλλοιώσετε,
+τροποποιήσετε ή δημιουργήσετε περαιτέρω βασισμένοι στο έργο θα
+μπορείτε να διανέμετε το έργο που θα προκύψει μόνο με την ίδια ή
+παρόμοια άδεια.`
+
+	// Arabic is a snippet from http://creativecommons.org/licenses/by-sa/3.0/deed.ar
+	Arabic = `بموجب الشروط التالية نسب المصنف — يجب عليك أن
+تنسب العمل بالطريقة التي تحددها المؤلف أو المرخص (ولكن ليس بأي حال من
+الأحوال أن توحي وتقترح بتحول أو استخدامك للعمل).
+المشاركة على قدم المساواة — إذا كنت يعدل ، والتغيير ، أو الاستفادة
+من هذا العمل ، قد ينتج عن توزيع العمل إلا في ظل تشابه او تطابق فى واحد
+لهذا الترخيص.`
+
+	// Hebrew is a snippet from http://creativecommons.org/licenses/by-sa/1.0/il/
+	Hebrew = `בכפוף לתנאים הבאים: ייחוס — עליך לייחס את היצירה (לתת קרדיט) באופן
+המצויין על-ידי היוצר או מעניק הרישיון (אך לא בשום אופן המרמז על כך
+שהם תומכים בך או בשימוש שלך ביצירה). שיתוף זהה — אם תחליט/י לשנות,
+לעבד או ליצור יצירה נגזרת בהסתמך על יצירה זו, תוכל/י להפיץ את יצירתך
+החדשה רק תחת אותו הרישיון או רישיון דומה לרישיון זה.`
+
+	TwoByteUTF8 = Russian + Greek + Arabic + Hebrew
+
+	// Thai is a snippet from http://creativecommons.org/licenses/by-sa/3.0/th/
+	Thai = `ภายใต้เงื่อนไข ดังต่อไปนี้ : แสดงที่มา — คุณต้องแสดงที่
+มาของงานดังกล่าว ตามรูปแบบที่ผู้สร้างสรรค์หรือผู้อนุญาตกำหนด (แต่
+ไม่ใช่ในลักษณะที่ว่า พวกเขาสนับสนุนคุณหรือสนับสนุนการที่
+คุณนำงานไปใช้) อนุญาตแบบเดียวกัน — หากคุณดัดแปลง เปลี่ยนรูป หรื
+อต่อเติมงานนี้ คุณต้องใช้สัญญาอนุญาตแบบเดียวกันหรือแบบที่เหมื
+อนกับสัญญาอนุญาตที่ใช้กับงานนี้เท่านั้น`
+
+	ThreeByteUTF8 = Thai
+
+	// Japanese is a snippet from http://creativecommons.org/licenses/by-sa/2.0/jp/
+	Japanese = `あなたの従うべき条件は以下の通りです。
+表示 — あなたは原著作者のクレジットを表示しなければなりません。
+継承 — もしあなたがこの作品を改変、変形または加工した場合、
+あなたはその結果生じた作品をこの作品と同一の許諾条件の下でのみ
+頒布することができます。`
+
+	// Chinese is a snippet from http://creativecommons.org/licenses/by-sa/2.5/cn/
+	Chinese = `您可以自由: 复制、发行、展览、表演、放映、
+广播或通过信息网络传播本作品 创作演绎作品
+对本作品进行商业性使用 惟须遵守下列条件:
+署名 — 您必须按照作者或者许可人指定的方式对作品进行署名。
+相同方式共享 — 如果您改变、转换本作品或者以本作品为基础进行创作,
+您只能采用与本协议相同的许可协议发布基于本作品的演绎作品。`
+
+	// Korean is a snippet from http://creativecommons.org/licenses/by-sa/2.0/kr/
+	Korean = `다음과 같은 조건을 따라야 합니다: 저작자표시
+— 저작자나 이용허락자가 정한 방법으로 저작물의
+원저작자를 표시하여야 합니다(그러나 원저작자가 이용자나 이용자의
+이용을 보증하거나 추천한다는 의미로 표시해서는 안됩니다). 
+동일조건변경허락 — 이 저작물을 이용하여 만든 이차적 저작물에는 본
+라이선스와 동일한 라이선스를 적용해야 합니다.`
+
+	CJK = Chinese + Japanese + Korean
+
+	All = ASCII + Vietnamese + TwoByteUTF8 + ThreeByteUTF8 + CJK
+)
diff --git a/go/src/golang.org/x/text/language/common.go b/go/src/golang.org/x/text/language/common.go
index 2544055..4b02b79 100644
--- a/go/src/golang.org/x/text/language/common.go
+++ b/go/src/golang.org/x/text/language/common.go
@@ -1,7 +1,4 @@
-// Generated by running
-//		maketables -url=http://www.unicode.org/Public/cldr/26/core.zip -iana=http://www.iana.org/assignments/language-subtag-registry -tld=http://www.iana.org/domains/root/db
-// automatically with go generate.
-// DO NOT EDIT
+// This file was generated by go generate; DO NOT EDIT
 
 package language
 
diff --git a/go/src/golang.org/x/text/language/coverage.go b/go/src/golang.org/x/text/language/coverage.go
index 964f443..9905c50 100644
--- a/go/src/golang.org/x/text/language/coverage.go
+++ b/go/src/golang.org/x/text/language/coverage.go
@@ -25,6 +25,9 @@
 
 	// Regions returns the list of supported regions.
 	Regions() []Region
+
+	// Currencies returns the list of supported currencies.
+	Currencies() []Currency
 }
 
 var (
@@ -34,14 +37,14 @@
 )
 
 // TODO:
-// - Support Currencies, Variants, numbering systems.
+// - Support Variants, numbering systems.
 // - CLDR coverage levels.
 // - Set of common tags defined in this package.
 
 type allSubtags struct{}
 
 // Regions returns the list of supported regions. As all regions are in a
-// consecutive range, it simply returns an array of numbers in increasing order.
+// consecutive range, it simply returns a slice of numbers in increasing order.
 // The "undefined" region is not returned.
 func (s allSubtags) Regions() []Region {
 	reg := make([]Region, numRegions)
@@ -52,7 +55,7 @@
 }
 
 // Scripts returns the list of supported scripts. As all scripts are in a
-// consecutive range, it simply returns an array of numbers in increasing order.
+// consecutive range, it simply returns a slice of numbers in increasing order.
 // The "undefined" script is not returned.
 func (s allSubtags) Scripts() []Script {
 	scr := make([]Script, numScripts)
@@ -85,6 +88,17 @@
 	return base
 }
 
+// Currencies returns the list of supported currencies. As all currencies are in
+// a consecutive range, it simply returns a slice of numbers in increasing
+// order. The "undefined" currency is not returned.
+func (s allSubtags) Currencies() []Currency {
+	cur := make([]Currency, numCurrencies)
+	for i := range cur {
+		cur[i] = Currency{currencyID(i + 1)}
+	}
+	return cur
+}
+
 // Tags always returns nil.
 func (s allSubtags) Tags() []Tag {
 	return nil
@@ -96,10 +110,11 @@
 // convenient way to do this. Moreover, packages using NewCoverage, instead of
 // their own implementation, will not break if later new slice types are added.
 type coverage struct {
-	tags    func() []Tag
-	bases   func() []Base
-	scripts func() []Script
-	regions func() []Region
+	tags       func() []Tag
+	bases      func() []Base
+	scripts    func() []Script
+	regions    func() []Region
+	currencies func() []Currency
 }
 
 func (s *coverage) Tags() []Tag {
@@ -163,6 +178,13 @@
 	return s.regions()
 }
 
+func (s *coverage) Currencies() []Currency {
+	if s.currencies == nil {
+		return nil
+	}
+	return s.currencies()
+}
+
 // NewCoverage returns a Coverage for the given lists. It is typically used by
 // packages providing internationalization services to define their level of
 // coverage. A list may be of type []T or func() []T, where T is either Tag,
@@ -181,6 +203,8 @@
 			s.regions = v
 		case func() []Tag:
 			s.tags = v
+		case func() []Currency:
+			s.currencies = v
 		case []Base:
 			s.bases = func() []Base { return v }
 		case []Script:
@@ -189,6 +213,8 @@
 			s.regions = func() []Region { return v }
 		case []Tag:
 			s.tags = func() []Tag { return v }
+		case []Currency:
+			s.currencies = func() []Currency { return v }
 		default:
 			panic(fmt.Sprintf("language: unsupported set type %T", v))
 		}
diff --git a/go/src/golang.org/x/text/language/coverage_test.go b/go/src/golang.org/x/text/language/coverage_test.go
index e2b37a3..43a5f59 100644
--- a/go/src/golang.org/x/text/language/coverage_test.go
+++ b/go/src/golang.org/x/text/language/coverage_test.go
@@ -11,13 +11,14 @@
 )
 
 func TestSupported(t *testing.T) {
-	// To prove the results are correct for a type,  we test that the number of
+	// To prove the results are correct for a type, we test that the number of
 	// results is identical to the number of results on record, that all results
 	// are distinct and that all results are valid.
 	tests := map[string]int{
 		"BaseLanguages": numLanguages,
 		"Scripts":       numScripts,
 		"Regions":       numRegions,
+		"Currencies":    numCurrencies,
 		"Tags":          0,
 	}
 	sup := reflect.ValueOf(Supported)
diff --git a/go/src/golang.org/x/text/language/examples_test.go b/go/src/golang.org/x/text/language/examples_test.go
index 42ad07d..9294e4f 100644
--- a/go/src/golang.org/x/text/language/examples_test.go
+++ b/go/src/golang.org/x/text/language/examples_test.go
@@ -198,7 +198,7 @@
 	}
 	p("zh-CN")
 
-	// Australian English inherits from British English.
+	// Australian English inherits from World English.
 	p("en-AU")
 
 	// If the tag has a different maximized script from its parent, a tag with
@@ -221,7 +221,7 @@
 
 	// Output:
 	// parent(zh-CN): zh
-	// parent(en-AU): en-GB
+	// parent(en-AU): en-001
 	// parent(zh-HK): zh-Hant
 	// parent(zh-Hant): und
 	// parent(de-1994-u-co-phonebk): de
@@ -255,7 +255,7 @@
 	fmt.Println(m.Match(language.Make("en-AU")))
 
 	// Default to the first tag passed to the Matcher if there is no match.
-	fmt.Println(m.Match(language.Make("zu")))
+	fmt.Println(m.Match(language.Make("ar")))
 
 	// Get the default tag.
 	fmt.Println(m.Match())
@@ -279,8 +279,8 @@
 	fmt.Println(m.Match(language.Portuguese))
 
 	// Pick the first value passed to Match in case of a tie.
-	fmt.Println(m.Match(language.Dutch, language.Make("en-AU"), language.Make("af-NA")))
-	fmt.Println(m.Match(language.Dutch, language.Make("af-NA"), language.Make("en-AU")))
+	fmt.Println(m.Match(language.Dutch, language.Make("fr-BE"), language.Make("af-NA")))
+	fmt.Println(m.Match(language.Dutch, language.Make("af-NA"), language.Make("fr-BE")))
 
 	fmt.Println("----")
 
@@ -303,7 +303,7 @@
 	// hr 6 High
 	// ----
 	// pt-BR 4 High
-	// en-GB 1 High
+	// fr 2 High
 	// af 3 High
 	// ----
 	// iw 9 Exact
diff --git a/go/src/golang.org/x/text/language/language.go b/go/src/golang.org/x/text/language/language.go
index 100efd2..dedbb93 100644
--- a/go/src/golang.org/x/text/language/language.go
+++ b/go/src/golang.org/x/text/language/language.go
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+//go:generate go run maketables.go gen_common.go -output tables.go
+
 // Package language implements BCP 47 language tags and related functionality.
 //
 // The Tag type, which is used to represent language tags, is agnostic to the
@@ -21,8 +23,6 @@
 // implemented, and the API is subject to change.
 package language // import "golang.org/x/text/language"
 
-//go:generate go run maketables.go gen_common.go -output tables.go
-
 import (
 	"errors"
 	"fmt"
diff --git a/go/src/golang.org/x/text/language/language_test.go b/go/src/golang.org/x/text/language/language_test.go
index 67fb425..fcf5c2b 100644
--- a/go/src/golang.org/x/text/language/language_test.go
+++ b/go/src/golang.org/x/text/language/language_test.go
@@ -694,21 +694,21 @@
 		// extra
 		{"nl-Cyrl", "und"},
 
-		// World english inherits from en-GB.
-		{"en-150", "en-GB"},
-		{"en-AU", "en-GB"},
-		{"en-BE", "en-GB"},
-		{"en-GG", "en-GB"},
-		{"en-GI", "en-GB"},
-		{"en-HK", "en-GB"},
-		{"en-IE", "en-GB"},
-		{"en-IM", "en-GB"},
-		{"en-IN", "en-GB"},
-		{"en-JE", "en-GB"},
-		{"en-MT", "en-GB"},
-		{"en-NZ", "en-GB"},
-		{"en-PK", "en-GB"},
-		{"en-SG", "en-GB"},
+		// World english inherits from en-001.
+		{"en-150", "en-001"},
+		{"en-AU", "en-001"},
+		{"en-BE", "en-001"},
+		{"en-GG", "en-001"},
+		{"en-GI", "en-001"},
+		{"en-HK", "en-001"},
+		{"en-IE", "en-001"},
+		{"en-IM", "en-001"},
+		{"en-IN", "en-001"},
+		{"en-JE", "en-001"},
+		{"en-MT", "en-001"},
+		{"en-NZ", "en-001"},
+		{"en-PK", "en-001"},
+		{"en-SG", "en-001"},
 
 		// Spanish in Latin-American countries have es-419 as parent.
 		{"es-AR", "es-419"},
diff --git a/go/src/golang.org/x/text/language/maketables.go b/go/src/golang.org/x/text/language/maketables.go
index 97a9a12..432b6b1 100644
--- a/go/src/golang.org/x/text/language/maketables.go
+++ b/go/src/golang.org/x/text/language/maketables.go
@@ -14,40 +14,26 @@
 	"bytes"
 	"flag"
 	"fmt"
-	"golang.org/x/text/cldr"
 	"hash"
 	"hash/fnv"
 	"io"
 	"io/ioutil"
 	"log"
 	"math"
-	"net/http"
-	"os"
-	"os/exec"
-	"path"
 	"reflect"
 	"regexp"
 	"sort"
 	"strconv"
 	"strings"
+
+	"golang.org/x/text/cldr"
+	"golang.org/x/text/internal/gen"
 )
 
 var (
-	url = flag.String("cldr",
-		"http://www.unicode.org/Public/cldr/"+cldr.Version+"/core.zip",
-		"URL of CLDR archive.")
-	iana = flag.String("iana",
-		"http://www.iana.org/assignments/language-subtag-registry",
-		"URL of IANA language subtag registry.")
-	tld = flag.String("tld",
-		"http://www.iana.org/domains/root/db",
-		"URL of IANA Root Zone Database")
 	test = flag.Bool("test",
 		false,
 		"test existing tables; can be used to compare web data with package data.")
-	localFiles = flag.String("local",
-		"",
-		"directory containing local data files; for debugging only.")
 	outputFile = flag.String("output",
 		"tables.go",
 		"output file for generated tables")
@@ -352,27 +338,8 @@
 
 type index uint
 
-func openReader(url string) io.ReadCloser {
-	if *localFiles != "" {
-		if !path.IsAbs(*localFiles) {
-			pwd, _ := os.Getwd()
-			*localFiles = path.Join(pwd, *localFiles)
-		}
-		url = "file://" + path.Join(*localFiles, path.Base(url))
-	}
-	t := &http.Transport{}
-	t.RegisterProtocol("file", http.NewFileTransport(http.Dir("/")))
-	c := &http.Client{Transport: t}
-	resp, err := c.Get(url)
-	failOnError(err)
-	if resp.StatusCode != 200 {
-		log.Fatalf(`bad GET status for "%s": %s`, url, resp.Status)
-	}
-	return resp.Body
-}
-
 func newBuilder(w io.Writer) *builder {
-	r := openReader(*url)
+	r := gen.OpenCLDRCoreZip()
 	defer r.Close()
 	d := &cldr.Decoder{}
 	d.SetDirFilter("supplemental")
@@ -390,7 +357,7 @@
 }
 
 func (b *builder) parseRegistry() {
-	r := openReader(*iana)
+	r := gen.OpenIANAFile("assignments/language-subtag-registry")
 	defer r.Close()
 	b.registry = make(map[string]*ianaEntry)
 
@@ -529,9 +496,9 @@
 	fmt.Fprintf(b.w, `var %s = [%d]%s{`, name, v.Len(), tn)
 	for i := 0; i < v.Len(); i++ {
 		if t.Kind() == reflect.Struct {
-			line := fmt.Sprintf("\n\t%#v, ", v.Index(i).Interface())
-			line = strings.Replace(line, "main.", "", 1)
-			fmt.Fprintf(b.w, line)
+			line := fmt.Sprintf("%#v, ", v.Index(i).Interface())
+			line = line[strings.IndexByte(line, '{'):]
+			fmt.Fprintf(b.w, "\n\t%s", line)
 		} else {
 			if i%12 == 0 {
 				fmt.Fprintf(b.w, "\n\t")
@@ -752,6 +719,7 @@
 	b.writeConst("numLanguages", len(b.lang.slice())+len(b.langNoIndex.slice()))
 	b.writeConst("numScripts", len(b.script.slice()))
 	b.writeConst("numRegions", len(b.region.slice()))
+	b.writeConst("numCurrencies", len(b.currency.slice()))
 
 	// Add dummy codes at the start of each list to represent "unspecified".
 	b.lang.add("---")
@@ -1001,7 +969,7 @@
 	}
 
 	// Is the region a valid ccTLD?
-	r := openReader(*tld)
+	r := gen.OpenIANAFile("domains/root/db")
 	defer r.Close()
 
 	buf, err := ioutil.ReadAll(r)
@@ -1722,59 +1690,33 @@
 	b.writeSliceAddSize("parents", n*2, parents)
 }
 
-var (
-	header = `// Generated by running
-//		maketables -url=%s -iana=%s -tld=%s
-// automatically with go generate.
-// DO NOT EDIT
-
-package language
-`
-
-	version = `
+const version = `
 // Version is the version of CLDR used to generate the data in this package.
 const Version = %q
 `
-)
 
 func rewriteCommon() {
 	// Generate common.go
 	src, err := ioutil.ReadFile("gen_common.go")
 	failOnError(err)
-	const toDelete = "// +build ignore\n\npackage main\n"
+	const toDelete = "// +build ignore\n\npackage main\n\n"
 	i := bytes.Index(src, []byte(toDelete))
 	if i < 0 {
 		log.Fatalf("could not find %q in gen_common.go", toDelete)
 	}
 	w := &bytes.Buffer{}
-	fmt.Fprintf(w, header, *url, *iana, *tld)
 	w.Write(src[i+len(toDelete):])
-	failOnError(ioutil.WriteFile("common.go", w.Bytes(), 0644))
+	gen.WriteGoFile("common.go", "language", w.Bytes())
 }
 
 func main() {
-	flag.Parse()
+	gen.Init()
 
 	rewriteCommon()
 
-	// Pipe output to gofmt -s.
-	gofmt := exec.Command("gofmt", "-s")
-	f, err := os.Create(*outputFile)
-	failOnError(err)
-	defer f.Close()
-	gofmt.Stdout = f
-	gofmt.Stderr = os.Stderr
-
-	fd, err := gofmt.StdinPipe()
-	failOnError(err)
-	defer fd.Close()
-	w := bufio.NewWriter(fd)
-	defer w.Flush()
-
-	failOnError(gofmt.Start())
+	w := &bytes.Buffer{}
 
 	b := newBuilder(w)
-	fmt.Fprintf(w, header, *url, *iana, *tld)
 	fmt.Fprintf(w, version, cldr.Version)
 
 	b.parseIndices()
@@ -1792,4 +1734,5 @@
 	b.writeParents()
 
 	fmt.Fprintf(w, "\n// Size: %.1fK (%d bytes); Check: %X\n", float32(b.size)/1024, b.size, b.hash32.Sum32())
+	gen.WriteGoFile("tables.go", "language", w.Bytes())
 }
diff --git a/go/src/golang.org/x/text/language/match_test.go b/go/src/golang.org/x/text/language/match_test.go
index 5691729..717179b 100644
--- a/go/src/golang.org/x/text/language/match_test.go
+++ b/go/src/golang.org/x/text/language/match_test.go
@@ -200,7 +200,7 @@
 		tag    string
 		d      uint8
 	}{
-		{"en-GB", "en-AU", 1},
+		{"en-001", "en-AU", 1},
 		{"pt-PT", "pt-AO", 1},
 		{"pt", "pt-AO", 2},
 		{"en-AU", "en-GB", 255},
diff --git a/go/src/golang.org/x/text/language/tables.go b/go/src/golang.org/x/text/language/tables.go
index 2cc7434..bcaf80a 100644
--- a/go/src/golang.org/x/text/language/tables.go
+++ b/go/src/golang.org/x/text/language/tables.go
@@ -1,123 +1,122 @@
-// Generated by running
-//		maketables -url=http://www.unicode.org/Public/cldr/26/core.zip -iana=http://www.iana.org/assignments/language-subtag-registry -tld=http://www.iana.org/domains/root/db
-// automatically with go generate.
-// DO NOT EDIT
+// This file was generated by go generate; DO NOT EDIT
 
 package language
 
 // Version is the version of CLDR used to generate the data in this package.
-const Version = "26"
+const Version = "27.0.1"
 
-const numLanguages = 8620
+const numLanguages = 8632
 
-const numScripts = 217
+const numScripts = 223
 
 const numRegions = 354
 
+const numCurrencies = 296
+
 type fromTo struct {
 	from uint16
 	to   uint16
 }
 
-const nonCanonicalUnd = 624
+const nonCanonicalUnd = 633
 const (
-	_af  = 9
-	_am  = 15
-	_ar  = 19
-	_az  = 33
-	_bg  = 53
-	_bn  = 71
-	_ca  = 93
-	_cs  = 116
-	_da  = 123
-	_de  = 127
-	_el  = 147
-	_en  = 148
-	_es  = 150
-	_et  = 152
-	_fa  = 157
-	_fi  = 161
-	_fil = 162
-	_fr  = 167
-	_gu  = 201
-	_he  = 213
-	_hi  = 214
-	_hr  = 226
-	_hu  = 230
-	_hy  = 231
-	_id  = 235
-	_is  = 245
-	_it  = 246
-	_ja  = 250
-	_ka  = 259
-	_kk  = 288
-	_km  = 292
-	_kn  = 294
-	_ko  = 295
-	_ky  = 318
-	_lo  = 342
-	_lt  = 346
-	_lv  = 353
-	_mk  = 381
-	_ml  = 382
-	_mn  = 383
-	_mo  = 386
-	_mr  = 390
-	_ms  = 394
-	_mul = 398
-	_my  = 404
-	_nb  = 413
-	_ne  = 418
-	_nl  = 427
-	_no  = 431
-	_pa  = 451
-	_pl  = 467
-	_pt  = 475
-	_ro  = 495
-	_ru  = 499
-	_sh  = 528
-	_si  = 531
-	_sk  = 533
-	_sl  = 535
-	_sq  = 548
-	_sr  = 549
-	_sv  = 561
-	_sw  = 562
-	_ta  = 570
-	_te  = 577
-	_th  = 582
-	_tl  = 593
-	_tn  = 596
-	_tr  = 599
-	_uk  = 621
-	_ur  = 627
-	_uz  = 628
-	_vi  = 633
-	_zh  = 678
-	_zu  = 680
-	_jbo = 6807
-	_ami = 1003
-	_bnn = 1710
-	_hak = 210
-	_tlh = 13820
-	_lb  = 325
-	_nv  = 440
-	_pwn = 11408
-	_tao = 13541
-	_tay = 13551
-	_tsu = 14015
-	_nn  = 429
-	_sfb = 12982
-	_vgt = 15054
-	_sgg = 13013
-	_cmn = 2360
-	_nan = 410
-	_hsn = 228
+	_af  = 10
+	_am  = 16
+	_ar  = 20
+	_az  = 34
+	_bg  = 54
+	_bn  = 72
+	_ca  = 94
+	_cs  = 118
+	_da  = 125
+	_de  = 130
+	_el  = 150
+	_en  = 151
+	_es  = 153
+	_et  = 155
+	_fa  = 160
+	_fi  = 164
+	_fil = 165
+	_fr  = 170
+	_gu  = 205
+	_he  = 217
+	_hi  = 218
+	_hr  = 230
+	_hu  = 234
+	_hy  = 235
+	_id  = 240
+	_is  = 250
+	_it  = 251
+	_ja  = 255
+	_ka  = 264
+	_kk  = 294
+	_km  = 298
+	_kn  = 300
+	_ko  = 301
+	_ky  = 324
+	_lo  = 348
+	_lt  = 352
+	_lv  = 359
+	_mk  = 387
+	_ml  = 388
+	_mn  = 389
+	_mo  = 392
+	_mr  = 396
+	_ms  = 400
+	_mul = 404
+	_my  = 411
+	_nb  = 420
+	_ne  = 425
+	_nl  = 434
+	_no  = 438
+	_pa  = 459
+	_pl  = 475
+	_pt  = 483
+	_ro  = 503
+	_ru  = 507
+	_sh  = 536
+	_si  = 539
+	_sk  = 541
+	_sl  = 543
+	_sq  = 556
+	_sr  = 557
+	_sv  = 569
+	_sw  = 570
+	_ta  = 578
+	_te  = 585
+	_th  = 590
+	_tl  = 601
+	_tn  = 604
+	_tr  = 608
+	_uk  = 630
+	_ur  = 636
+	_uz  = 637
+	_vi  = 642
+	_zh  = 689
+	_zu  = 691
+	_jbo = 6818
+	_ami = 1014
+	_bnn = 1721
+	_hak = 214
+	_tlh = 13831
+	_lb  = 331
+	_nv  = 447
+	_pwn = 11419
+	_tao = 13552
+	_tay = 13562
+	_tsu = 14026
+	_nn  = 436
+	_sfb = 12993
+	_vgt = 15065
+	_sgg = 13024
+	_cmn = 2371
+	_nan = 417
+	_hsn = 232
 )
 
-const langPrivateStart = 11499
+const langPrivateStart = 11510
 
-const langPrivateEnd = 12018
+const langPrivateEnd = 12029
 
 // lang holds an alphabetically sorted list of ISO-639 language identifiers.
 // All entries are 4 bytes. The index of the identifier (divided by 4) is the language tag.
@@ -126,60 +125,61 @@
 //       the second and third letter of the 3-letter ISO code.
 //     - otherwise: a 0 and a by 2 bits right-shifted index into altLangISO3.
 // For 3-byte language identifiers the 4th byte is 0.
-// Size: 2752 bytes
+// Size: 2796 bytes
 var lang string = "" +
-	"---\x00aaarabbkabr\x00ace\x00ach\x00ady\x00aeveaeb\x00affrag" +
-	"q\x00akkaakk\x00aln\x00alt\x00ammhamo\x00anrgaoz\x00arraarc" +
-	"\x00arn\x00aro\x00arq\x00ary\x00arz\x00assmasa\x00ast\x00atj" +
-	"\x00avvaawa\x00ayymazzeazb\x00baakbal\x00ban\x00bap\x00bar" +
-	"\x00bas\x00bax\x00bbc\x00bbj\x00bci\x00beelbem\x00bew\x00bez" +
-	"\x00bfd\x00bfq\x00bft\x00bfy\x00bgulbgc\x00bgx\x00bhihbhb" +
-	"\x00bhi\x00bhk\x00bho\x00biisbik\x00bin\x00bjj\x00bjn\x00bkm" +
-	"\x00bku\x00blt\x00bmambmq\x00bnenboodbpy\x00bqi\x00bqv\x00br" +
-	"rebra\x00brh\x00brx\x00bsosbsq\x00bss\x00bto\x00btv\x00bua" +
-	"\x00buc\x00bug\x00bum\x00bvb\x00byn\x00byv\x00bze\x00caatcch" +
-	"\x00ccp\x00ceheceb\x00cgg\x00chhachk\x00chm\x00chp\x00chr" +
-	"\x00cja\x00cjm\x00ckb\x00cooscop\x00cps\x00crrecrj\x00crk" +
-	"\x00crl\x00crm\x00crs\x00csescsb\x00csw\x00ctd\x00cuhucvhvcy" +
-	"ymdaandar\x00dav\x00dcc\x00deeuden\x00dgr\x00dje\x00dnj\x00d" +
-	"oi\x00dsb\x00dtm\x00dtp\x00dua\x00dvivdyo\x00dyu\x00dzzoebu" +
-	"\x00eeweefi\x00egl\x00egy\x00eky\x00elllenngeopoes\x00\x05es" +
-	"u\x00etstett\x00euusewo\x00ext\x00faasfan\x00ffulffm\x00fiin" +
-	"fil\x00fit\x00fjijfoaofon\x00frrafrc\x00frp\x00frr\x00frs" +
-	"\x00fud\x00fuq\x00fur\x00fuv\x00fyrygalegaa\x00gag\x00gan" +
-	"\x00gbm\x00gbz\x00gcr\x00gdlagez\x00ggn\x00gil\x00gjk\x00gju" +
-	"\x00gllgglk\x00gnrngom\x00gon\x00gor\x00gos\x00got\x00grc" +
-	"\x00grt\x00gsw\x00guujgub\x00guc\x00gur\x00guz\x00gvlvgvr" +
-	"\x00gwi\x00haauhak\x00haw\x00haz\x00heebhiinhif\x00hil\x00hm" +
-	"d\x00hnd\x00hne\x00hnj\x00hnn\x00hno\x00homohoc\x00hoj\x00hr" +
-	"rvhsb\x00hsn\x00htathuunhyyehzerianaibb\x00idndieleigboiiiii" +
-	"kpkikt\x00ilo\x00inndinh\x00iodoisslittaiukuiw\x00\x03izh" +
-	"\x00japnjam\x00jgo\x00ji\x00\x06jmc\x00jml\x00jut\x00jvavjwa" +
-	"vkaatkaa\x00kab\x00kaj\x00kam\x00kao\x00kbd\x00kcg\x00kck" +
-	"\x00kde\x00kdt\x00kea\x00ken\x00kfo\x00kfr\x00kfy\x00kgonkge" +
-	"\x00kgp\x00kha\x00khb\x00khn\x00khq\x00kht\x00khw\x00kiikkiu" +
-	"\x00kjuakjg\x00kkazkkj\x00klalkln\x00kmhmkmb\x00knankoorkoi" +
-	"\x00kok\x00kos\x00kpe\x00kraukrc\x00kri\x00krj\x00krl\x00kru" +
-	"\x00ksasksb\x00ksf\x00ksh\x00kuurkum\x00kvomkvr\x00kvx\x00kw" +
-	"\x00\x01kxm\x00kxp\x00kyirlaatlab\x00lad\x00lag\x00lah\x00la" +
-	"j\x00lbtzlbe\x00lbw\x00lcp\x00lep\x00lez\x00lgugliimlif\x00l" +
-	"ij\x00lis\x00ljp\x00lki\x00lkt\x00lmn\x00lmo\x00lninloaolol" +
-	"\x00loz\x00lrc\x00ltitltg\x00luublua\x00luo\x00luy\x00luz" +
-	"\x00lvavlwl\x00lzh\x00lzz\x00mad\x00maf\x00mag\x00mai\x00mak" +
-	"\x00man\x00mas\x00maz\x00mdf\x00mdh\x00mdr\x00men\x00mer\x00" +
-	"mfa\x00mfe\x00mglgmgh\x00mgo\x00mgp\x00mgy\x00mhahmirimin" +
-	"\x00mis\x00mkkdmlalmnonmni\x00mnw\x00moolmoe\x00moh\x00mos" +
-	"\x00mrarmrd\x00mrj\x00mru\x00mssamtltmtr\x00mua\x00mul\x00mv" +
-	"y\x00mwk\x00mwr\x00mwv\x00mxc\x00myyamyv\x00myx\x00myz\x00mz" +
-	"n\x00naaunan\x00nap\x00naq\x00nbobnch\x00nddendc\x00nds\x00n" +
-	"eepnew\x00ngdongl\x00nhe\x00nhw\x00nij\x00niu\x00njo\x00nlld" +
-	"nmg\x00nnnonnh\x00noornod\x00noe\x00non\x00nqo\x00nrblnsk" +
-	"\x00nso\x00nus\x00nvavnxq\x00nyyanym\x00nyn\x00occiojjiomrmo" +
-	"rriosssotk\x00paanpag\x00pal\x00pam\x00pap\x00pau\x00pcd\x00" +
-	"pcm\x00pdc\x00pdt\x00peo\x00pfl\x00phn\x00pilipka\x00pko\x00" +
-	"plolpms\x00pnt\x00pon\x00pra\x00prd\x00prg\x00psusptorpuu" +
-	"\x00quuequc\x00qug\x00raj\x00rcf\x00rej\x00rgn\x00ria\x00rif" +
-	"\x00rjs\x00rkt\x00rmohrmf\x00rmo\x00rmt\x00rmu\x00rnunrng" +
+	"---\x00aaarabbkabr\x00ace\x00ach\x00ada\x00ady\x00aeveaeb" +
+	"\x00affragq\x00akkaakk\x00aln\x00alt\x00ammhamo\x00anrgaoz" +
+	"\x00arraarc\x00arn\x00aro\x00arq\x00ary\x00arz\x00assmasa" +
+	"\x00ast\x00atj\x00avvaawa\x00ayymazzeazb\x00baakbal\x00ban" +
+	"\x00bap\x00bar\x00bas\x00bax\x00bbc\x00bbj\x00bci\x00beelbem" +
+	"\x00bew\x00bez\x00bfd\x00bfq\x00bft\x00bfy\x00bgulbgc\x00bgx" +
+	"\x00bhihbhb\x00bhi\x00bhk\x00bho\x00biisbik\x00bin\x00bjj" +
+	"\x00bjn\x00bkm\x00bku\x00blt\x00bmambmq\x00bnenboodbpy\x00bq" +
+	"i\x00bqv\x00brrebra\x00brh\x00brx\x00bsosbsq\x00bss\x00bto" +
+	"\x00btv\x00bua\x00buc\x00bug\x00bum\x00bvb\x00byn\x00byv\x00" +
+	"bze\x00caatcch\x00ccp\x00ceheceb\x00cgg\x00chhachk\x00chm" +
+	"\x00cho\x00chp\x00chr\x00cja\x00cjm\x00ckb\x00cooscop\x00cps" +
+	"\x00crrecrj\x00crk\x00crl\x00crm\x00crs\x00csescsb\x00csw" +
+	"\x00ctd\x00cuhucvhvcyymdaandak\x00dar\x00dav\x00dcc\x00deeud" +
+	"en\x00dgr\x00dje\x00dnj\x00doi\x00dsb\x00dtm\x00dtp\x00dua" +
+	"\x00dvivdyo\x00dyu\x00dzzoebu\x00eeweefi\x00egl\x00egy\x00ek" +
+	"y\x00elllenngeopoes\x00\x05esu\x00etstett\x00euusewo\x00ext" +
+	"\x00faasfan\x00ffulffm\x00fiinfil\x00fit\x00fjijfoaofon\x00f" +
+	"rrafrc\x00frp\x00frr\x00frs\x00fud\x00fuq\x00fur\x00fuv\x00f" +
+	"yrygalegaa\x00gag\x00gan\x00gay\x00gbm\x00gbz\x00gcr\x00gdla" +
+	"gez\x00ggn\x00gil\x00gjk\x00gju\x00gllgglk\x00gnrngom\x00gon" +
+	"\x00gor\x00gos\x00got\x00grc\x00grt\x00gsw\x00guujgub\x00guc" +
+	"\x00gur\x00guz\x00gvlvgvr\x00gwi\x00haauhak\x00haw\x00haz" +
+	"\x00heebhiinhif\x00hil\x00hmd\x00hnd\x00hne\x00hnj\x00hnn" +
+	"\x00hno\x00homohoc\x00hoj\x00hrrvhsb\x00hsn\x00htathuunhyyeh" +
+	"zerianaiba\x00ibb\x00idndieleigboiiiiikpkikt\x00ilo\x00inndi" +
+	"nh\x00iodoisslittaiukuiw\x00\x03izh\x00japnjam\x00jgo\x00ji" +
+	"\x00\x06jmc\x00jml\x00jut\x00jvavjwavkaatkaa\x00kab\x00kac" +
+	"\x00kaj\x00kam\x00kao\x00kbd\x00kcg\x00kck\x00kde\x00kdt\x00" +
+	"kea\x00ken\x00kfo\x00kfr\x00kfy\x00kgonkge\x00kgp\x00kha\x00" +
+	"khb\x00khn\x00khq\x00kht\x00khw\x00kiikkiu\x00kjuakjg\x00kka" +
+	"zkkj\x00klalkln\x00kmhmkmb\x00knankoorkoi\x00kok\x00kos\x00k" +
+	"pe\x00kraukrc\x00kri\x00krj\x00krl\x00kru\x00ksasksb\x00ksf" +
+	"\x00ksh\x00kuurkum\x00kvomkvr\x00kvx\x00kw\x00\x01kxm\x00kxp" +
+	"\x00kyirlaatlab\x00lad\x00lag\x00lah\x00laj\x00lbtzlbe\x00lb" +
+	"w\x00lcp\x00lep\x00lez\x00lgugliimlif\x00lij\x00lis\x00ljp" +
+	"\x00lki\x00lkt\x00lmn\x00lmo\x00lninloaolol\x00loz\x00lrc" +
+	"\x00ltitltg\x00luublua\x00luo\x00luy\x00luz\x00lvavlwl\x00lz" +
+	"h\x00lzz\x00mad\x00maf\x00mag\x00mai\x00mak\x00man\x00mas" +
+	"\x00maz\x00mdf\x00mdh\x00mdr\x00men\x00mer\x00mfa\x00mfe\x00" +
+	"mglgmgh\x00mgo\x00mgp\x00mgy\x00mhahmirimin\x00mis\x00mkkdml" +
+	"almnonmni\x00mnw\x00moolmoe\x00moh\x00mos\x00mrarmrd\x00mrj" +
+	"\x00mru\x00mssamtltmtr\x00mua\x00mul\x00mus\x00mvy\x00mwk" +
+	"\x00mwr\x00mwv\x00mxc\x00myyamyv\x00myx\x00myz\x00mzn\x00naa" +
+	"unan\x00nap\x00naq\x00nbobnch\x00nddendc\x00nds\x00neepnew" +
+	"\x00ngdongl\x00nhe\x00nhw\x00nij\x00niu\x00njo\x00nlldnmg" +
+	"\x00nnnonnh\x00noornod\x00noe\x00non\x00nqo\x00nrblnsk\x00ns" +
+	"o\x00nus\x00nvavnxq\x00nyyanym\x00nyn\x00nzi\x00occiojjiomrm" +
+	"orriosssotk\x00paanpag\x00pal\x00pam\x00pap\x00pau\x00pcd" +
+	"\x00pcm\x00pdc\x00pdt\x00peo\x00pfl\x00phn\x00pilipka\x00pko" +
+	"\x00plolpms\x00pnt\x00pon\x00pra\x00prd\x00prg\x00psusptorpu" +
+	"u\x00quuequc\x00qug\x00raj\x00rcf\x00rej\x00rgn\x00ria\x00ri" +
+	"f\x00rjs\x00rkt\x00rmohrmf\x00rmo\x00rmt\x00rmu\x00rnunrng" +
 	"\x00roonrob\x00rof\x00rtm\x00ruusrue\x00rug\x00rw\x00\x04rwk" +
 	"\x00ryu\x00saansaf\x00sah\x00saq\x00sas\x00sat\x00saz\x00sbp" +
 	"\x00scrdsck\x00scn\x00sco\x00scs\x00sdndsdc\x00semesef\x00se" +
@@ -190,26 +190,26 @@
 	"s\x00svweswwaswb\x00swc\x00swv\x00sxn\x00syl\x00syr\x00szl" +
 	"\x00taamtaj\x00tbw\x00tcy\x00tdd\x00tdg\x00tdh\x00teeltem" +
 	"\x00teo\x00tet\x00tggkthhathl\x00thq\x00thr\x00tiirtig\x00ti" +
-	"v\x00tkuktkl\x00tkr\x00tkt\x00tlgltly\x00tmh\x00tnsntoontpi" +
-	"\x00trurtru\x00trv\x00tssotsd\x00tsf\x00tsg\x00tsj\x00ttattt" +
-	"j\x00tts\x00ttt\x00tum\x00tvl\x00twwitwq\x00tyahtyv\x00tzm" +
-	"\x00udm\x00ugiguga\x00ukkruli\x00umb\x00und\x00unr\x00unx" +
-	"\x00urrduzzbvai\x00veenvec\x00vep\x00viievic\x00vls\x00vmf" +
-	"\x00vmw\x00voolvro\x00vun\x00walnwae\x00wal\x00war\x00wbq" +
-	"\x00wbr\x00wls\x00woolwtm\x00wuu\x00xav\x00xcr\x00xhhoxlc" +
-	"\x00xld\x00xmf\x00xmn\x00xmr\x00xna\x00xnr\x00xog\x00xpr\x00" +
-	"xsa\x00xsr\x00yao\x00yap\x00yav\x00ybb\x00yiidyooryrl\x00yua" +
-	"\x00zahazbl\x00zdj\x00zea\x00zgh\x00zhhozmi\x00zuulzxx\x00zz" +
-	"a\x00\xff\xff\xff\xff"
+	"v\x00tkuktkl\x00tkr\x00tkt\x00tlgltly\x00tmh\x00tnsntoontog" +
+	"\x00tpi\x00trurtru\x00trv\x00tssotsd\x00tsf\x00tsg\x00tsj" +
+	"\x00ttatttj\x00tts\x00ttt\x00tum\x00tvl\x00twwitwq\x00tyahty" +
+	"v\x00tzm\x00udm\x00ugiguga\x00ukkruli\x00umb\x00und\x00unr" +
+	"\x00unx\x00urrduzzbvai\x00veenvec\x00vep\x00viievic\x00vls" +
+	"\x00vmf\x00vmw\x00voolvot\x00vro\x00vun\x00walnwae\x00wal" +
+	"\x00war\x00wbp\x00wbq\x00wbr\x00wls\x00woolwtm\x00wuu\x00xav" +
+	"\x00xcr\x00xhhoxlc\x00xld\x00xmf\x00xmn\x00xmr\x00xna\x00xnr" +
+	"\x00xog\x00xpr\x00xsa\x00xsr\x00yao\x00yap\x00yav\x00ybb\x00" +
+	"yiidyooryrl\x00yua\x00zahazbl\x00zdj\x00zea\x00zgh\x00zhhozm" +
+	"i\x00zuulzxx\x00zza\x00\xff\xff\xff\xff"
 
-const langNoIndexOffset = 683
+const langNoIndexOffset = 694
 
 // langNoIndex is a bit vector of all 3-letter language codes that are not used as an index
 // in lookup tables. The language ids for these language codes are derived directly
 // from the letters and are not consecutive.
 // Size: 2197 bytes, 2197 elements
 var langNoIndex = [2197]uint8{
-	255, 253, 253, 254, 239, 247, 191, 210, 251, 255, 254, 250,
+	255, 253, 253, 254, 239, 247, 191, 210, 251, 191, 254, 250,
 	183, 29, 60, 87, 111, 151, 115, 248, 255, 239, 255, 112,
 	191, 3, 255, 255, 207, 5, 133, 98, 233, 191, 253, 255,
 	255, 247, 253, 119, 191, 255, 255, 255, 255, 255, 255, 227,
@@ -223,14 +223,14 @@
 	251, 47, 255, 255, 251, 238, 255, 189, 219, 255, 223, 247,
 	255, 250, 253, 255, 126, 175, 123, 254, 127, 255, 255, 254,
 	255, 255, 223, 255, 255, 223, 251, 255, 253, 252, 251, 255,
-	255, 255, 255, 247, 127, 191, 249, 213, 165, 119, 64, 255,
+	255, 255, 255, 247, 127, 191, 253, 213, 165, 119, 64, 255,
 	156, 193, 65, 44, 8, 36, 65, 0, 80, 64, 0, 128,
-	251, 90, 242, 159, 180, 66, 65, 150, 155, 20, 136, 246,
+	251, 74, 242, 159, 180, 66, 65, 150, 155, 20, 136, 246,
 	123, 231, 23, 86, 85, 125, 14, 28, 55, 113, 243, 239,
 	151, 255, 93, 56, 100, 8, 0, 16, 188, 135, 175, 223,
 	255, 247, 115, 53, 62, 135, 199, 223, 255, 0, 129, 0,
 	176, 5, 128, 0, 0, 0, 0, 3, 64, 0, 64, 146,
-	33, 208, 255, 93, 253, 222, 254, 94, 0, 0, 2, 100,
+	33, 208, 191, 93, 253, 222, 254, 94, 0, 0, 2, 100,
 	141, 25, 193, 223, 121, 34, 0, 0, 0, 223, 109, 220,
 	38, 229, 217, 243, 254, 255, 253, 203, 159, 20, 1, 12,
 	134, 0, 209, 0, 240, 197, 103, 95, 86, 137, 94, 183,
@@ -251,10 +251,10 @@
 	8, 17, 134, 64, 0, 0, 0, 0, 64, 0, 6, 85,
 	2, 16, 8, 4, 0, 0, 0, 96, 59, 131, 17, 0,
 	128, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 190, 223, 255, 255, 191, 223, 199, 131, 130,
+	0, 0, 0, 190, 223, 255, 254, 191, 223, 199, 131, 130,
 	192, 255, 223, 39, 207, 95, 231, 1, 16, 32, 178, 197,
 	164, 69, 37, 155, 3, 207, 240, 223, 3, 196, 0, 16,
-	1, 14, 0, 227, 146, 84, 219, 56, 241, 127, 247, 109,
+	1, 14, 1, 227, 146, 84, 219, 56, 241, 127, 247, 109,
 	249, 255, 28, 125, 4, 8, 0, 1, 33, 18, 108, 95,
 	221, 15, 133, 79, 64, 64, 0, 4, 249, 253, 253, 212,
 	232, 19, 244, 39, 163, 13, 0, 0, 32, 123, 57, 2,
@@ -265,24 +265,24 @@
 	5, 155, 221, 110, 3, 0, 17, 0, 0, 0, 64, 5,
 	181, 182, 128, 8, 4, 0, 4, 81, 226, 255, 253, 63,
 	5, 9, 8, 5, 64, 0, 0, 0, 0, 16, 0, 0,
-	8, 0, 0, 0, 0, 161, 2, 100, 229, 72, 20, 137,
+	8, 0, 0, 0, 0, 161, 2, 96, 229, 72, 20, 137,
 	32, 192, 71, 128, 7, 0, 0, 0, 204, 80, 64, 36,
 	133, 71, 132, 64, 32, 16, 0, 32, 2, 80, 136, 17,
-	0, 209, 44, 238, 80, 3, 29, 17, 105, 6, 89, 233,
+	0, 209, 108, 238, 80, 3, 29, 17, 105, 6, 89, 233,
 	51, 8, 0, 32, 5, 64, 16, 0, 0, 0, 80, 68,
 	150, 73, 214, 93, 167, 129, 69, 151, 251, 0, 16, 0,
 	8, 0, 128, 0, 64, 69, 0, 1, 2, 0, 1, 64,
 	128, 0, 4, 8, 248, 235, 246, 57, 196, 153, 22, 0,
 	0, 12, 4, 1, 32, 32, 221, 162, 1, 0, 0, 0,
-	18, 4, 0, 0, 4, 16, 240, 157, 149, 19, 0, 128,
+	18, 4, 0, 0, 4, 16, 240, 157, 149, 19, 4, 128,
 	0, 0, 208, 18, 64, 0, 16, 176, 16, 98, 76, 210,
 	2, 1, 10, 0, 70, 4, 0, 8, 2, 0, 32, 192,
 	0, 128, 6, 0, 8, 0, 0, 0, 0, 240, 216, 111,
 	21, 2, 8, 0, 0, 1, 0, 0, 0, 0, 16, 1,
-	0, 16, 0, 0, 0, 252, 133, 227, 221, 255, 255, 255,
+	0, 16, 0, 0, 0, 248, 133, 227, 221, 255, 255, 255,
 	187, 255, 127, 251, 255, 252, 254, 223, 255, 255, 255, 246,
 	251, 254, 247, 31, 255, 179, 237, 255, 219, 237, 255, 254,
-	127, 254, 223, 255, 255, 255, 247, 255, 253, 255, 255, 255,
+	255, 254, 223, 255, 255, 255, 247, 255, 253, 255, 255, 255,
 	253, 255, 223, 175, 156, 255, 251, 255, 255, 255, 255, 255,
 	239, 210, 187, 223, 245, 255, 255, 255, 255, 255, 254, 239,
 	253, 255, 255, 247, 253, 255, 255, 255, 239, 219, 255, 255,
@@ -299,15 +299,15 @@
 	255, 255, 127, 255, 255, 255, 239, 255, 189, 255, 255, 251,
 	255, 251, 255, 222, 118, 189, 255, 247, 255, 255, 247, 255,
 	255, 223, 243, 191, 239, 255, 255, 255, 255, 127, 127, 222,
-	247, 191, 239, 247, 255, 251, 191, 223, 253, 254, 255, 255,
+	247, 187, 239, 247, 255, 251, 191, 223, 253, 254, 255, 255,
 	254, 255, 95, 125, 127, 255, 255, 255, 229, 252, 255, 253,
 	127, 127, 255, 158, 174, 255, 238, 255, 127, 247, 123, 2,
 	130, 4, 255, 247, 255, 191, 215, 239, 254, 223, 247, 254,
 	226, 142, 231, 255, 247, 255, 86, 189, 205, 255, 251, 255,
 	255, 223, 239, 255, 229, 223, 125, 15, 167, 81, 4, 68,
-	19, 208, 85, 175, 166, 253, 185, 255, 67, 93, 91, 255,
-	255, 191, 63, 32, 20, 0, 87, 81, 130, 101, 245, 72,
-	226, 255, 252, 223, 64, 5, 197, 5, 0, 34, 0, 116,
+	19, 208, 93, 175, 166, 253, 185, 255, 67, 93, 91, 255,
+	255, 191, 63, 32, 20, 0, 87, 81, 130, 101, 245, 73,
+	226, 255, 252, 223, 0, 5, 197, 5, 0, 34, 0, 116,
 	105, 16, 8, 4, 65, 0, 1, 6, 0, 0, 0, 0,
 	0, 81, 96, 5, 4, 1, 0, 0, 6, 1, 32, 0,
 	24, 1, 146, 177, 253, 103, 75, 6, 149, 2, 87, 237,
@@ -316,7 +316,7 @@
 	19, 49, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0,
 	0, 10, 16, 0, 1, 64, 0, 240, 91, 244, 190, 125,
 	186, 207, 247, 175, 66, 4, 132, 65, 176, 255, 121, 122,
-	4, 0, 0, 65, 45, 20, 37, 119, 237, 241, 191, 239,
+	4, 0, 0, 73, 45, 20, 37, 119, 237, 241, 191, 239,
 	63, 0, 0, 2, 198, 160, 30, 252, 187, 255, 253, 251,
 	183, 253, 245, 255, 253, 252, 213, 237, 71, 244, 127, 16,
 	1, 1, 132, 109, 255, 247, 221, 249, 95, 5, 134, 239,
@@ -334,7 +334,7 @@
 	163, 1, 80, 0, 0, 131, 17, 64, 0, 0, 0, 240,
 	221, 123, 126, 2, 170, 16, 93, 216, 82, 0, 128, 32,
 	0, 0, 0, 0, 64, 16, 2, 2, 9, 0, 16, 2,
-	0, 97, 90, 157, 49, 0, 0, 0, 1, 80, 2, 32,
+	16, 97, 90, 157, 49, 0, 0, 0, 1, 80, 2, 32,
 	0, 0, 1, 0, 66, 0, 0, 0, 0, 31, 223, 242,
 	253, 255, 253, 63, 159, 24, 207, 188, 191, 175, 95, 254,
 	123, 75, 64, 16, 225, 253, 175, 253, 183, 247, 255, 243,
@@ -342,14 +342,14 @@
 	238, 29, 251, 219, 239, 223, 255, 253, 126, 190, 87, 255,
 	111, 129, 118, 31, 212, 119, 245, 253, 255, 255, 235, 254,
 	191, 95, 87, 27, 235, 95, 80, 24, 2, 254, 255, 157,
-	21, 151, 21, 15, 117, 68, 125, 129, 130, 241, 215, 126,
+	21, 151, 21, 15, 117, 196, 125, 129, 130, 241, 215, 126,
 	255, 255, 255, 239, 255, 253, 221, 222, 188, 253, 246, 95,
 	122, 31, 64, 152, 2, 255, 227, 255, 243, 214, 242, 255,
 	251, 223, 125, 80, 30, 21, 123, 180, 245, 190, 255, 255,
-	243, 247, 255, 247, 127, 255, 255, 254, 219, 247, 215, 249,
+	243, 247, 255, 247, 127, 255, 255, 190, 219, 247, 215, 249,
 	239, 47, 128, 191, 197, 255, 255, 243, 151, 157, 255, 255,
 	247, 207, 253, 191, 222, 127, 6, 29, 87, 255, 248, 218,
-	93, 199, 125, 22, 185, 234, 105, 160, 26, 32, 0, 48,
+	93, 207, 125, 22, 185, 234, 105, 160, 26, 32, 0, 48,
 	2, 4, 36, 72, 4, 0, 0, 64, 212, 2, 4, 0,
 	0, 4, 0, 4, 0, 32, 1, 6, 80, 0, 8, 0,
 	0, 0, 36, 0, 4, 0, 16, 140, 88, 213, 13, 15,
@@ -360,11 +360,11 @@
 	111, 147, 0, 1, 0, 0, 0, 0, 0, 0, 0, 128,
 	128, 37, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0,
 	128, 134, 194, 2, 0, 0, 0, 1, 223, 24, 0, 0,
-	2, 240, 253, 121, 59, 0, 37, 0, 0, 0, 10, 0,
+	2, 240, 253, 121, 59, 0, 37, 0, 0, 0, 2, 0,
 	0, 0, 0, 0, 0, 64, 0, 0, 3, 0, 9, 32,
 	0, 0, 1, 0, 0, 129, 0, 0, 0, 0, 1, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 239,
-	247, 253, 207, 126, 162, 17, 16, 0, 0, 146, 1, 68,
+	247, 253, 207, 126, 160, 17, 16, 0, 0, 146, 1, 68,
 	205, 249, 94, 0, 1, 0, 48, 20, 4, 85, 16, 1,
 	4, 246, 63, 122, 5, 4, 0, 176, 128, 0, 85, 85,
 	151, 124, 159, 113, 204, 120, 213, 67, 245, 87, 103, 20,
@@ -380,7 +380,7 @@
 	78, 74, 8, 80, 40, 48, 224, 128, 16, 32, 36, 0,
 	255, 63, 223, 103, 254, 1, 6, 136, 10, 64, 22, 1,
 	1, 21, 43, 62, 1, 0, 0, 16, 144, 105, 69, 2,
-	2, 0, 225, 191, 191, 3, 0, 0, 16, 212, 167, 209,
+	2, 1, 225, 191, 191, 3, 0, 0, 16, 212, 167, 209,
 	84, 158, 68, 223, 253, 143, 102, 179, 85, 32, 212, 195,
 	216, 48, 61, 128, 0, 0, 0, 76, 212, 16, 197, 132,
 	110, 80, 0, 34, 80, 126, 191, 219, 7, 0, 32, 16,
@@ -404,244 +404,265 @@
 // altLangIndex is used to convert indexes in altLangISO3 to langIDs.
 // Size: 12 bytes, 6 elements
 var altLangIndex = [6]uint16{
-	315, 528, 248, 502, 150, 253,
+	321, 536, 253, 510, 153, 258,
 }
 
 // langAliasMap maps langIDs to their suggested replacements.
-// Size: 484 bytes, 121 elements
-var langAliasMap = [121]fromTo{
-	{from: 0xf2, to: 0xeb},
-	{from: 0xf8, to: 0xd5},
-	{from: 0xfd, to: 0x29d},
-	{from: 0x102, to: 0x101},
-	{from: 0x182, to: 0x1ef},
-	{from: 0x19d, to: 0x1af},
-	{from: 0x210, to: 0x225},
-	{from: 0x251, to: 0xa2},
-	{from: 0x265, to: 0xb},
-	{from: 0x3a9, to: 0x1c2a},
-	{from: 0x3ca, to: 0x224},
-	{from: 0x3db, to: 0x224},
-	{from: 0x466, to: 0x13},
-	{from: 0x471, to: 0xe7},
-	{from: 0x52c, to: 0x20},
-	{from: 0x532, to: 0x2714},
-	{from: 0x53e, to: 0x21},
-	{from: 0x55f, to: 0x9a},
-	{from: 0x585, to: 0x24},
-	{from: 0x58e, to: 0x3e},
-	{from: 0x63c, to: 0xc5c},
-	{from: 0x768, to: 0x194},
-	{from: 0x7af, to: 0x15f},
-	{from: 0x7b6, to: 0x55},
-	{from: 0x837, to: 0x309b},
-	{from: 0x8b1, to: 0x2a6},
-	{from: 0x8ee, to: 0x23d3},
-	{from: 0x8f7, to: 0x93c},
-	{from: 0x914, to: 0x238},
-	{from: 0x935, to: 0x3fa2},
-	{from: 0x938, to: 0x2a6},
-	{from: 0xa32, to: 0x6e},
-	{from: 0xa81, to: 0x74},
-	{from: 0xb41, to: 0x84},
-	{from: 0xb50, to: 0x191},
-	{from: 0xb71, to: 0xb74},
-	{from: 0xb77, to: 0x2aa},
-	{from: 0xc58, to: 0x1dd3},
-	{from: 0xc67, to: 0x2c13},
-	{from: 0xcb2, to: 0x1ab},
-	{from: 0xe49, to: 0x98},
-	{from: 0xe7d, to: 0x16a},
-	{from: 0xf19, to: 0xef},
-	{from: 0xff2, to: 0xb},
-	{from: 0x119d, to: 0xa7},
-	{from: 0x11e9, to: 0x9f},
-	{from: 0x1298, to: 0xb14},
-	{from: 0x129c, to: 0x1bf},
-	{from: 0x12ab, to: 0x143e},
-	{from: 0x12f9, to: 0x103},
-	{from: 0x12fc, to: 0x7f},
-	{from: 0x13e3, to: 0xc2},
-	{from: 0x1441, to: 0x93},
-	{from: 0x1491, to: 0xc0},
-	{from: 0x14f3, to: 0x129d},
-	{from: 0x1582, to: 0x152f},
-	{from: 0x158f, to: 0x166c},
-	{from: 0x1603, to: 0x229},
-	{from: 0x16f2, to: 0x1a7a},
-	{from: 0x17ed, to: 0x2929},
-	{from: 0x1803, to: 0xf5},
-	{from: 0x18d3, to: 0xf7},
-	{from: 0x18ff, to: 0x128e},
-	{from: 0x1db6, to: 0x1e56},
-	{from: 0x1dd3, to: 0x17f},
-	{from: 0x1e5c, to: 0x136},
-	{from: 0x1e67, to: 0x12c},
-	{from: 0x1e6b, to: 0x113},
-	{from: 0x1e72, to: 0x129},
-	{from: 0x1eae, to: 0x138},
-	{from: 0x1fdb, to: 0x6a3},
-	{from: 0x20fb, to: 0x30de},
-	{from: 0x21eb, to: 0x161},
-	{from: 0x225d, to: 0x17d},
-	{from: 0x2269, to: 0x17a},
-	{from: 0x2273, to: 0x18a},
-	{from: 0x22c9, to: 0x8d4},
-	{from: 0x2322, to: 0x65},
-	{from: 0x23b7, to: 0x16a},
-	{from: 0x2442, to: 0x242d},
-	{from: 0x2472, to: 0x1e0},
-	{from: 0x24de, to: 0x242d},
-	{from: 0x268d, to: 0x1a2},
-	{from: 0x2893, to: 0x1be},
-	{from: 0x2975, to: 0x1c0},
-	{from: 0x2a75, to: 0x1da},
-	{from: 0x2a8c, to: 0x310},
-	{from: 0x2ac0, to: 0x9d},
-	{from: 0x2ac1, to: 0x9d},
-	{from: 0x2b78, to: 0x174},
-	{from: 0x2b9a, to: 0x143},
-	{from: 0x2bde, to: 0x1ffb},
-	{from: 0x2c68, to: 0x2c50},
-	{from: 0x2f0c, to: 0x1dd},
-	{from: 0x30df, to: 0x3107},
-	{from: 0x31a3, to: 0x1ef},
-	{from: 0x3267, to: 0x1649},
-	{from: 0x335f, to: 0x215},
-	{from: 0x33d1, to: 0x123},
-	{from: 0x33ef, to: 0x201},
-	{from: 0x3476, to: 0x232},
-	{from: 0x35a8, to: 0x48},
-	{from: 0x35ab, to: 0x2fa1},
-	{from: 0x35e5, to: 0x371f},
-	{from: 0x360b, to: 0x3d39},
-	{from: 0x362e, to: 0x2c13},
-	{from: 0x36d5, to: 0x253},
-	{from: 0x38c7, to: 0xb0a},
-	{from: 0x3a12, to: 0x274},
-	{from: 0x3d36, to: 0x7a},
-	{from: 0x4037, to: 0x2ec},
-	{from: 0x40f1, to: 0x12b},
-	{from: 0x4146, to: 0x80},
-	{from: 0x4228, to: 0x309b},
-	{from: 0x425c, to: 0x29d},
-	{from: 0x4343, to: 0x2182},
-	{from: 0x4389, to: 0x4627},
-	{from: 0x4427, to: 0x4419},
-	{from: 0x44b7, to: 0x44be},
-	{from: 0x468f, to: 0x18a},
-	{from: 0x4720, to: 0x2a1},
+// Size: 556 bytes, 139 elements
+var langAliasMap = [139]fromTo{
+	{from: 0xf7, to: 0xf0},
+	{from: 0xfd, to: 0xd9},
+	{from: 0x102, to: 0x2a8},
+	{from: 0x107, to: 0x106},
+	{from: 0x188, to: 0x1f7},
+	{from: 0x1a4, to: 0x1b6},
+	{from: 0x218, to: 0x22d},
+	{from: 0x259, to: 0xa5},
+	{from: 0x265, to: 0x243},
+	{from: 0x26e, to: 0xc},
+	{from: 0x2c2, to: 0x2c8},
+	{from: 0x313, to: 0x8f},
+	{from: 0x3b4, to: 0x1c35},
+	{from: 0x3d5, to: 0x22c},
+	{from: 0x3e6, to: 0x22c},
+	{from: 0x471, to: 0x14},
+	{from: 0x47c, to: 0xeb},
+	{from: 0x4c2, to: 0x1f25},
+	{from: 0x537, to: 0x21},
+	{from: 0x53d, to: 0x271f},
+	{from: 0x549, to: 0x22},
+	{from: 0x56a, to: 0x9d},
+	{from: 0x590, to: 0x25},
+	{from: 0x599, to: 0x3f},
+	{from: 0x647, to: 0xc67},
+	{from: 0x773, to: 0x19b},
+	{from: 0x7ba, to: 0x165},
+	{from: 0x7c1, to: 0x56},
+	{from: 0x842, to: 0x30a6},
+	{from: 0x8bc, to: 0x2b1},
+	{from: 0x8f9, to: 0x23de},
+	{from: 0x902, to: 0x947},
+	{from: 0x91f, to: 0x240},
+	{from: 0x940, to: 0x3fad},
+	{from: 0x943, to: 0x2b1},
+	{from: 0xa3d, to: 0x70},
+	{from: 0xa8c, to: 0x76},
+	{from: 0xb4c, to: 0x87},
+	{from: 0xb5b, to: 0x198},
+	{from: 0xb7c, to: 0xb7f},
+	{from: 0xb82, to: 0x2b5},
+	{from: 0xc63, to: 0x1dde},
+	{from: 0xc72, to: 0x2c1e},
+	{from: 0xcbd, to: 0x1b2},
+	{from: 0xe54, to: 0x9b},
+	{from: 0xe88, to: 0x170},
+	{from: 0xf24, to: 0xf4},
+	{from: 0xffd, to: 0xc},
+	{from: 0x11a8, to: 0xaa},
+	{from: 0x11f4, to: 0xa2},
+	{from: 0x12a3, to: 0xb1f},
+	{from: 0x12a7, to: 0x1c7},
+	{from: 0x12b6, to: 0x1449},
+	{from: 0x1304, to: 0x108},
+	{from: 0x1307, to: 0x82},
+	{from: 0x1327, to: 0x3a33},
+	{from: 0x13ee, to: 0xc6},
+	{from: 0x144c, to: 0x96},
+	{from: 0x1484, to: 0x277c},
+	{from: 0x149c, to: 0xc4},
+	{from: 0x14fe, to: 0x12a8},
+	{from: 0x158d, to: 0x153a},
+	{from: 0x159a, to: 0x1677},
+	{from: 0x160e, to: 0x231},
+	{from: 0x16fd, to: 0x1a85},
+	{from: 0x17f8, to: 0x2934},
+	{from: 0x180e, to: 0xfa},
+	{from: 0x18de, to: 0xfc},
+	{from: 0x190a, to: 0x1299},
+	{from: 0x1dc1, to: 0x1e61},
+	{from: 0x1dde, to: 0x185},
+	{from: 0x1e67, to: 0x13c},
+	{from: 0x1e72, to: 0x132},
+	{from: 0x1e76, to: 0x119},
+	{from: 0x1e7d, to: 0x12f},
+	{from: 0x1e93, to: 0x1f6f},
+	{from: 0x1eb9, to: 0x13e},
+	{from: 0x1f6a, to: 0x4222},
+	{from: 0x1f78, to: 0x3707},
+	{from: 0x1fe6, to: 0x6ae},
+	{from: 0x209a, to: 0x2faa},
+	{from: 0x2106, to: 0x30e9},
+	{from: 0x21f6, to: 0x167},
+	{from: 0x2268, to: 0x183},
+	{from: 0x2274, to: 0x180},
+	{from: 0x227e, to: 0x190},
+	{from: 0x22d4, to: 0x8df},
+	{from: 0x232d, to: 0x66},
+	{from: 0x23c2, to: 0x170},
+	{from: 0x244d, to: 0x2438},
+	{from: 0x247d, to: 0x1e8},
+	{from: 0x24ab, to: 0x3a33},
+	{from: 0x24e9, to: 0x2438},
+	{from: 0x2673, to: 0x25bb},
+	{from: 0x2698, to: 0x1a9},
+	{from: 0x289e, to: 0x1c6},
+	{from: 0x2980, to: 0x1c8},
+	{from: 0x29c3, to: 0x3a33},
+	{from: 0x2a80, to: 0x1e2},
+	{from: 0x2a97, to: 0x31b},
+	{from: 0x2acb, to: 0xa0},
+	{from: 0x2acc, to: 0xa0},
+	{from: 0x2b83, to: 0x17a},
+	{from: 0x2b9e, to: 0x2b19},
+	{from: 0x2ba5, to: 0x149},
+	{from: 0x2be9, to: 0x2006},
+	{from: 0x2c73, to: 0x2c5b},
+	{from: 0x2f17, to: 0x1e5},
+	{from: 0x30ea, to: 0x3112},
+	{from: 0x31ae, to: 0x1f7},
+	{from: 0x3272, to: 0x1654},
+	{from: 0x336a, to: 0x21d},
+	{from: 0x33dc, to: 0x129},
+	{from: 0x33fa, to: 0x209},
+	{from: 0x3481, to: 0x23a},
+	{from: 0x35af, to: 0x2a1f},
+	{from: 0x35b3, to: 0x49},
+	{from: 0x35b6, to: 0x2fac},
+	{from: 0x35f0, to: 0x372a},
+	{from: 0x3616, to: 0x3d44},
+	{from: 0x3639, to: 0x2c1e},
+	{from: 0x36e0, to: 0x25b},
+	{from: 0x38d2, to: 0xb15},
+	{from: 0x38fc, to: 0xe7e},
+	{from: 0x3a1d, to: 0x27d},
+	{from: 0x3d41, to: 0x7c},
+	{from: 0x4042, to: 0x2f7},
+	{from: 0x40fc, to: 0x131},
+	{from: 0x414f, to: 0x344f},
+	{from: 0x4151, to: 0x83},
+	{from: 0x4233, to: 0x30a6},
+	{from: 0x4267, to: 0x2a8},
+	{from: 0x434e, to: 0x218d},
+	{from: 0x4361, to: 0x2460},
+	{from: 0x4394, to: 0x4632},
+	{from: 0x4432, to: 0x4424},
+	{from: 0x44c2, to: 0x44c9},
+	{from: 0x469a, to: 0x190},
+	{from: 0x472b, to: 0x2ac},
 }
 
-// Size: 121 bytes, 121 elements
-var langAliasTypes = [121]langAliasType{
-	0, 0, 0, 0, 0, 1, 2, 2, 1, 1, 2, 1,
-	1, 2, 1, 0, 1, 2, 1, 1, 0, 2, 1, 1,
-	0, 2, 0, 0, 1, 0, 1, 1, 2, 1, 1, 1,
-	1, 0, 0, 2, 1, 1, 1, 1, 2, 1, 0, 1,
-	1, 2, 2, 1, 2, 1, 1, 1, 1, 1, 0, 0,
-	2, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0,
-	1, 2, 2, 2, 0, 1, 1, 0, 1, 0, 1, 1,
-	1, 1, 0, 2, 1, 1, 1, 0, 0, 1, 1, 2,
-	0, 2, 1, 1, 1, 2, 0, 0, 0, 0, 1, 1,
-	1, 2, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1,
-	1,
+// Size: 139 bytes, 139 elements
+var langAliasTypes = [139]langAliasType{
+	0, 0, 0, 0, 0, 1, 2, 2, 0, 1, 0, 0,
+	1, 2, 1, 1, 2, 0, 1, 0, 1, 2, 1, 1,
+	0, 2, 1, 1, 0, 2, 0, 0, 1, 0, 1, 1,
+	2, 1, 1, 1, 1, 0, 0, 2, 1, 1, 1, 1,
+	2, 1, 0, 1, 1, 2, 2, 0, 1, 2, 0, 1,
+	1, 1, 1, 1, 0, 0, 2, 1, 0, 0, 1, 1,
+	1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 2,
+	2, 2, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1,
+	1, 0, 1, 0, 2, 1, 1, 0, 1, 0, 0, 1,
+	1, 2, 0, 2, 1, 1, 1, 0, 2, 0, 0, 0,
+	0, 1, 1, 0, 1, 2, 0, 1, 0, 1, 0, 1,
+	0, 0, 0, 0, 1, 1, 1,
 }
 
 const (
-	_Latn = 75
-	_Hani = 46
-	_Hans = 48
-	_Hant = 49
-	_Qaaa = 119
-	_Qaai = 127
-	_Qabx = 168
-	_Zinh = 212
-	_Zyyy = 216
-	_Zzzz = 217
+	_Latn = 79
+	_Hani = 48
+	_Hans = 50
+	_Hant = 51
+	_Qaaa = 125
+	_Qaai = 133
+	_Qabx = 174
+	_Zinh = 218
+	_Zyyy = 222
+	_Zzzz = 223
 )
 
 // script is an alphabetically sorted list of ISO 15924 codes. The index
 // of the script in the string, divided by 4, is the internal scriptID.
-// Size: 892 bytes
+// Size: 916 bytes
 var script string = "" +
-	"----AfakAghbAhomArabArmiArmnAvstBaliBamuBassBatkBengBlisBopo" +
-	"BrahBraiBugiBuhdCakmCansCariChamCherCirtCoptCprtCyrlCyrsDeva" +
-	"DsrtDuplEgydEgyhEgypElbaEthiGeokGeorGlagGothGranGrekGujrGuru" +
-	"HangHaniHanoHansHantHatrHebrHiraHluwHmngHrktHungIndsItalJava" +
-	"JpanJurcKaliKanaKharKhmrKhojKndaKoreKpelKthiLanaLaooLatfLatg" +
-	"LatnLepcLimbLinaLinbLisuLomaLyciLydiMahjMandManiMayaMendMerc" +
-	"MeroMlymModiMongMoonMrooMteiMultMymrNarbNbatNkgbNkooNshuOgam" +
-	"OlckOrkhOryaOsmaPalmPaucPermPhagPhliPhlpPhlvPhnxPlrdPrtiQaaa" +
-	"QaabQaacQaadQaaeQaafQaagQaahQaaiQaajQaakQaalQaamQaanQaaoQaap" +
-	"QaaqQaarQaasQaatQaauQaavQaawQaaxQaayQaazQabaQabbQabcQabdQabe" +
-	"QabfQabgQabhQabiQabjQabkQablQabmQabnQaboQabpQabqQabrQabsQabt" +
-	"QabuQabvQabwQabxRjngRoroRunrSamrSaraSarbSaurSgnwShawShrdSidd" +
-	"SindSinhSoraSundSyloSyrcSyreSyrjSyrnTagbTakrTaleTaluTamlTang" +
-	"TavtTeluTengTfngTglgThaaThaiTibtTirhUgarVaiiVispWaraWoleXpeo" +
-	"XsuxYiiiZinhZmthZsymZxxxZyyyZzzz\xff\xff\xff\xff"
+	"----AdlmAfakAghbAhomArabAranArmiArmnAvstBaliBamuBassBatkBeng" +
+	"BlisBopoBrahBraiBugiBuhdCakmCansCariChamCherCirtCoptCprtCyrl" +
+	"CyrsDevaDsrtDuplEgydEgyhEgypElbaEthiGeokGeorGlagGothGranGrek" +
+	"GujrGuruHangHaniHanoHansHantHatrHebrHiraHluwHmngHrktHungInds" +
+	"ItalJavaJpanJurcKaliKanaKharKhmrKhojKitlKitsKndaKoreKpelKthi" +
+	"LanaLaooLatfLatgLatnLepcLimbLinaLinbLisuLomaLyciLydiMahjMand" +
+	"ManiMarcMayaMendMercMeroMlymModiMongMoonMrooMteiMultMymrNarb" +
+	"NbatNkgbNkooNshuOgamOlckOrkhOryaOsgeOsmaPalmPaucPermPhagPhli" +
+	"PhlpPhlvPhnxPlrdPrtiQaaaQaabQaacQaadQaaeQaafQaagQaahQaaiQaaj" +
+	"QaakQaalQaamQaanQaaoQaapQaaqQaarQaasQaatQaauQaavQaawQaaxQaay" +
+	"QaazQabaQabbQabcQabdQabeQabfQabgQabhQabiQabjQabkQablQabmQabn" +
+	"QaboQabpQabqQabrQabsQabtQabuQabvQabwQabxRjngRoroRunrSamrSara" +
+	"SarbSaurSgnwShawShrdSiddSindSinhSoraSundSyloSyrcSyreSyrjSyrn" +
+	"TagbTakrTaleTaluTamlTangTavtTeluTengTfngTglgThaaThaiTibtTirh" +
+	"UgarVaiiVispWaraWoleXpeoXsuxYiiiZinhZmthZsymZxxxZyyyZzzz\xff" +
+	"\xff\xff\xff"
 
 // suppressScript is an index from langID to the dominant script for that language,
 // if it exists.  If a script is given, it should be suppressed from the language tag.
-// Size: 683 bytes, 683 elements
-var suppressScript = [683]uint8{
-	0, 0, 27, 0, 0, 0, 0, 0, 0, 75, 0, 0,
-	0, 0, 0, 36, 0, 0, 0, 4, 0, 0, 0, 0,
-	0, 0, 12, 0, 0, 0, 0, 0, 75, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0,
-	0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
-	0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0,
-	0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0,
-	0, 0, 75, 75, 0, 0, 0, 75, 0, 0, 0, 0,
-	0, 75, 0, 0, 0, 200, 0, 0, 202, 0, 0, 0,
-	0, 0, 0, 42, 75, 75, 75, 0, 75, 0, 75, 0,
-	0, 4, 0, 0, 0, 75, 0, 0, 75, 75, 0, 75,
-	0, 0, 75, 75, 0, 0, 0, 0, 75, 75, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0,
-	75, 0, 0, 0, 0, 0, 0, 0, 75, 43, 0, 0,
-	0, 0, 75, 0, 0, 0, 0, 0, 0, 51, 29, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 75,
-	0, 75, 75, 6, 0, 0, 0, 75, 0, 0, 0, 0,
-	0, 0, 75, 0, 0, 75, 75, 0, 51, 0, 60, 0,
-	0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0,
+// Size: 694 bytes, 694 elements
+var suppressScript = [694]uint8{
+	0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 79, 0,
+	0, 0, 0, 0, 38, 0, 0, 0, 5, 0, 0, 0,
+	0, 0, 0, 14, 0, 0, 0, 0, 0, 79, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
+	0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	14, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0,
+	0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0,
+	0, 0, 0, 0, 79, 79, 0, 0, 0, 0, 79, 0,
+	0, 0, 0, 0, 79, 0, 0, 0, 206, 0, 0, 208,
+	0, 0, 0, 0, 0, 0, 44, 79, 79, 79, 0, 79,
+	0, 79, 0, 0, 5, 0, 0, 0, 79, 0, 0, 79,
+	79, 0, 79, 0, 0, 79, 79, 0, 0, 0, 0, 79,
+	79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 79, 0, 79, 0, 0, 0, 0, 0, 0, 0,
+	79, 45, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0,
+	0, 53, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 79, 79, 0, 79, 79, 8, 0, 0, 0, 0,
+	79, 0, 0, 0, 0, 0, 0, 79, 0, 0, 79, 79,
+	0, 53, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0,
+	40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	27, 0, 75, 0, 65, 0, 67, 68, 0, 29, 0, 0,
+	0, 0, 0, 0, 0, 0, 29, 0, 79, 0, 67, 0,
+	71, 72, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0,
-	0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 75, 72, 0, 0, 0, 75, 0,
-	0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0,
-	29, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0,
-	75, 0, 0, 0, 0, 75, 0, 0, 0, 27, 91, 0,
-	0, 0, 75, 0, 0, 0, 29, 0, 0, 0, 75, 75,
-	0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0,
-	0, 75, 0, 0, 0, 75, 0, 75, 0, 75, 29, 0,
-	0, 0, 0, 0, 0, 75, 0, 75, 0, 75, 0, 75,
-	0, 0, 0, 102, 75, 0, 75, 0, 0, 0, 75, 0,
-	0, 0, 0, 75, 107, 0, 0, 44, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75,
-	0, 0, 0, 0, 0, 0, 4, 75, 0, 75, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0,
-	0, 75, 0, 75, 0, 0, 0, 27, 0, 0, 75, 0,
+	0, 79, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,
+	76, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 79,
+	0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
+	0, 0, 79, 0, 0, 0, 79, 0, 0, 0, 0, 79,
+	0, 0, 0, 29, 96, 0, 0, 0, 79, 0, 0, 0,
+	31, 0, 0, 0, 79, 79, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 103, 0, 0, 0, 0, 79, 0, 0, 0,
+	79, 0, 79, 0, 79, 31, 0, 0, 0, 0, 0, 0,
+	79, 0, 79, 0, 79, 0, 79, 0, 0, 0, 107, 79,
+	0, 79, 0, 0, 0, 79, 0, 0, 0, 0, 0, 79,
+	112, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0,
+	0, 0, 5, 79, 0, 79, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 79, 0, 0, 0, 0, 79, 0, 79,
+	0, 0, 0, 29, 0, 0, 79, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0,
-	0, 0, 0, 181, 0, 75, 0, 75, 0, 0, 75, 0,
-	0, 0, 0, 0, 0, 0, 75, 0, 75, 0, 0, 0,
-	0, 0, 75, 0, 75, 0, 0, 0, 0, 75, 75, 0,
-	0, 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, 0,
-	0, 196, 75, 0, 0, 0, 201, 0, 0, 0, 36, 0,
-	0, 0, 75, 0, 0, 75, 0, 75, 75, 75, 75, 75,
-	0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	75, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0,
-	0, 0, 0, 4, 0, 0, 75, 0, 0, 75, 0, 0,
+	0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 187,
+	0, 79, 0, 79, 0, 0, 79, 0, 0, 0, 0, 0,
+	0, 0, 79, 0, 79, 0, 0, 0, 0, 0, 79, 0,
+	79, 0, 0, 0, 0, 79, 79, 0, 0, 0, 0, 0,
+	0, 0, 199, 0, 0, 0, 0, 0, 0, 202, 79, 0,
+	0, 0, 207, 0, 0, 0, 38, 0, 0, 0, 79, 0,
+	0, 79, 0, 79, 79, 79, 0, 79, 79, 0, 0, 79,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0,
+	0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
+	5, 0, 0, 79, 0, 0, 79, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0,
-	0, 0, 13, 0, 0, 0, 0, 0, 75, 0, 0,
+	0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
+	0, 15, 0, 0, 0, 0, 0, 79, 0, 0,
 }
 
 const (
@@ -848,15 +869,15 @@
 	49491, 50004, 50517, 51030, 51543, 52056, 52569, 53090,
 }
 
-// Size: 1273 bytes
+// Size: 1311 bytes
 var variantIndex = map[string]uint8{
 	"1606nict": 0x0,
 	"1694acad": 0x1,
 	"1901":     0x2,
 	"1959acad": 0x3,
-	"1994":     0x3d,
+	"1994":     0x3f,
 	"1996":     0x4,
-	"alalc97":  0x3f,
+	"alalc97":  0x41,
 	"aluku":    0x5,
 	"arevela":  0x6,
 	"arevmda":  0x7,
@@ -865,62 +886,64 @@
 	"barla":    0xa,
 	"bauddha":  0xb,
 	"biscayan": 0xc,
-	"biske":    0x38,
+	"biske":    0x3a,
 	"bohoric":  0xd,
 	"boont":    0xe,
 	"dajnko":   0xf,
 	"ekavsk":   0x10,
 	"emodeng":  0x11,
-	"fonipa":   0x40,
-	"fonupa":   0x41,
-	"fonxsamp": 0x42,
+	"fonipa":   0x42,
+	"fonupa":   0x43,
+	"fonxsamp": 0x44,
 	"hepburn":  0x12,
-	"heploc":   0x3e,
+	"heploc":   0x40,
 	"hognorsk": 0x13,
 	"ijekavsk": 0x14,
 	"itihasa":  0x15,
 	"jauer":    0x16,
 	"jyutping": 0x17,
 	"kkcor":    0x18,
-	"kscor":    0x19,
-	"laukika":  0x1a,
-	"lipaw":    0x39,
-	"luna1918": 0x1b,
-	"metelko":  0x1c,
-	"monoton":  0x1d,
-	"ndyuka":   0x1e,
-	"nedis":    0x1f,
-	"njiva":    0x3a,
-	"nulik":    0x20,
-	"osojs":    0x3b,
-	"pamaka":   0x21,
-	"petr1708": 0x22,
-	"pinyin":   0x23,
-	"polyton":  0x24,
-	"puter":    0x25,
-	"rigik":    0x26,
-	"rozaj":    0x27,
-	"rumgr":    0x28,
-	"scotland": 0x29,
-	"scouse":   0x2a,
-	"solba":    0x3c,
-	"sotav":    0x2b,
-	"surmiran": 0x2c,
-	"sursilv":  0x2d,
-	"sutsilv":  0x2e,
-	"tarask":   0x2f,
-	"uccor":    0x30,
-	"ucrcor":   0x31,
-	"ulster":   0x32,
-	"unifon":   0x33,
-	"vaidika":  0x34,
-	"valencia": 0x35,
-	"vallader": 0x36,
-	"wadegile": 0x37,
+	"kociewie": 0x19,
+	"kscor":    0x1a,
+	"laukika":  0x1b,
+	"lipaw":    0x3b,
+	"luna1918": 0x1c,
+	"metelko":  0x1d,
+	"monoton":  0x1e,
+	"ndyuka":   0x1f,
+	"nedis":    0x20,
+	"njiva":    0x3c,
+	"nulik":    0x21,
+	"osojs":    0x3d,
+	"oxendict": 0x22,
+	"pamaka":   0x23,
+	"petr1708": 0x24,
+	"pinyin":   0x25,
+	"polyton":  0x26,
+	"puter":    0x27,
+	"rigik":    0x28,
+	"rozaj":    0x29,
+	"rumgr":    0x2a,
+	"scotland": 0x2b,
+	"scouse":   0x2c,
+	"solba":    0x3e,
+	"sotav":    0x2d,
+	"surmiran": 0x2e,
+	"sursilv":  0x2f,
+	"sutsilv":  0x30,
+	"tarask":   0x31,
+	"uccor":    0x32,
+	"ucrcor":   0x33,
+	"ulster":   0x34,
+	"unifon":   0x35,
+	"vaidika":  0x36,
+	"valencia": 0x37,
+	"vallader": 0x38,
+	"wadegile": 0x39,
 }
 
 // variantNumSpecialized is the number of specialized variants in variants.
-const variantNumSpecialized = 63
+const variantNumSpecialized = 65
 const (
 	_XTS = 279
 	_XXX = 281
@@ -969,220 +992,226 @@
 
 // likelyScript is a lookup table, indexed by scriptID, for the most likely
 // languages and regions given a script.
-// Size: 876 bytes, 219 elements
-var likelyScript = [219]likelyLangRegion{
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x14a, region: 0x104},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x13, region: 0x6a},
-	{lang: 0x14, region: 0x9a},
-	{lang: 0xe7, region: 0x27},
-	{lang: 0x7, region: 0x9a},
-	{lang: 0x25, region: 0x93},
-	{lang: 0x29, region: 0x51},
-	{lang: 0x51, region: 0xb2},
-	{lang: 0x2a, region: 0x93},
-	{lang: 0x47, region: 0x34},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x2a6, region: 0x12c},
-	{lang: 0x1d1, region: 0x97},
-	{lang: 0xa7, region: 0x76},
-	{lang: 0x57, region: 0x93},
-	{lang: 0x43, region: 0xe5},
-	{lang: 0x5f, region: 0x34},
-	{lang: 0x6e, region: 0x48},
-	{lang: 0x28c, region: 0x129},
-	{lang: 0x69, region: 0x13b},
-	{lang: 0x67, region: 0x132},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x6c, region: 0x6a},
-	{lang: 0xc6, region: 0x5c},
-	{lang: 0x1f3, region: 0x104},
-	{lang: 0x0, region: 0x0},
-	{lang: 0xd6, region: 0x97},
-	{lang: 0x0, region: 0x0},
-	{lang: 0xa7, region: 0x76},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x91, region: 0x6a},
-	{lang: 0x224, region: 0x26},
-	{lang: 0xf, region: 0x6e},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x103, region: 0x7b},
-	{lang: 0x78, region: 0x37},
-	{lang: 0xc5, region: 0x12e},
-	{lang: 0x1f9, region: 0x97},
-	{lang: 0x93, region: 0x85},
-	{lang: 0xc9, region: 0x97},
-	{lang: 0x1c3, region: 0x97},
-	{lang: 0x127, region: 0xa9},
-	{lang: 0x2a6, region: 0x52},
-	{lang: 0xdd, region: 0xe5},
-	{lang: 0x2a6, region: 0x52},
-	{lang: 0x2a6, region: 0x12c},
-	{lang: 0x0, region: 0x0},
-	{lang: 0xd5, region: 0x95},
-	{lang: 0xfa, region: 0xa0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0xdc, region: 0xad},
+// Size: 900 bytes, 225 elements
+var likelyScript = [225]likelyLangRegion{
 	{lang: 0x0, region: 0x0},
 	{lang: 0x0, region: 0x0},
 	{lang: 0x0, region: 0x0},
-	{lang: 0x99, region: 0x9c},
-	{lang: 0x101, region: 0x93},
-	{lang: 0xfa, region: 0xa0},
+	{lang: 0x150, region: 0x104},
 	{lang: 0x0, region: 0x0},
-	{lang: 0x92, region: 0xc2},
-	{lang: 0xfa, region: 0xa0},
-	{lang: 0x1d7, region: 0xe6},
-	{lang: 0x124, region: 0xa4},
-	{lang: 0x206, region: 0x97},
-	{lang: 0x126, region: 0x97},
-	{lang: 0x127, region: 0xa9},
+	{lang: 0x14, region: 0x6a},
 	{lang: 0x0, region: 0x0},
-	{lang: 0x38, region: 0x97},
-	{lang: 0x1b0, region: 0x121},
-	{lang: 0x156, region: 0xad},
+	{lang: 0x15, region: 0x9a},
+	{lang: 0xeb, region: 0x27},
+	{lang: 0x8, region: 0x9a},
+	{lang: 0x26, region: 0x93},
+	{lang: 0x2a, region: 0x51},
+	{lang: 0x52, region: 0xb2},
+	{lang: 0x2b, region: 0x93},
+	{lang: 0x48, region: 0x34},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x2b1, region: 0x12c},
+	{lang: 0x1d9, region: 0x97},
+	{lang: 0xaa, region: 0x76},
+	{lang: 0x58, region: 0x93},
+	{lang: 0x44, region: 0xe5},
+	{lang: 0x60, region: 0x34},
+	{lang: 0x70, region: 0x48},
+	{lang: 0x297, region: 0x129},
+	{lang: 0x6b, region: 0x13b},
+	{lang: 0x69, region: 0x132},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x6e, region: 0x6a},
+	{lang: 0xca, region: 0x5c},
+	{lang: 0x1fb, region: 0x104},
+	{lang: 0x0, region: 0x0},
+	{lang: 0xda, region: 0x97},
+	{lang: 0x0, region: 0x0},
+	{lang: 0xaa, region: 0x76},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x94, region: 0x6a},
+	{lang: 0x22c, region: 0x26},
+	{lang: 0x10, region: 0x6e},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x108, region: 0x7b},
+	{lang: 0x7a, region: 0x37},
+	{lang: 0xc9, region: 0x12e},
+	{lang: 0x201, region: 0x97},
+	{lang: 0x96, region: 0x85},
+	{lang: 0xcd, region: 0x97},
+	{lang: 0x1cb, region: 0x97},
+	{lang: 0x12d, region: 0xa9},
+	{lang: 0x2b1, region: 0x52},
+	{lang: 0xe1, region: 0xe5},
+	{lang: 0x2b1, region: 0x52},
+	{lang: 0x2b1, region: 0x12c},
+	{lang: 0x0, region: 0x0},
+	{lang: 0xd9, region: 0x95},
+	{lang: 0xff, region: 0xa0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0xe0, region: 0xad},
 	{lang: 0x0, region: 0x0},
 	{lang: 0x0, region: 0x0},
 	{lang: 0x0, region: 0x0},
-	{lang: 0x149, region: 0x97},
-	{lang: 0x14d, region: 0x97},
-	{lang: 0x140, region: 0x85},
-	{lang: 0xc6, region: 0x85},
-	{lang: 0x14f, region: 0x52},
+	{lang: 0x9c, region: 0x9c},
+	{lang: 0x106, region: 0x93},
+	{lang: 0xff, region: 0xa0},
 	{lang: 0x0, region: 0x0},
-	{lang: 0x28e, region: 0x129},
-	{lang: 0x28f, region: 0x129},
-	{lang: 0xd6, region: 0x97},
-	{lang: 0x197, region: 0x9a},
-	{lang: 0x291, region: 0x52},
+	{lang: 0x95, region: 0xc2},
+	{lang: 0xff, region: 0xa0},
+	{lang: 0x1df, region: 0xe6},
+	{lang: 0x12a, region: 0xa4},
+	{lang: 0x20e, region: 0x97},
 	{lang: 0x0, region: 0x0},
-	{lang: 0x170, region: 0x110},
-	{lang: 0x292, region: 0x109},
-	{lang: 0x292, region: 0x109},
-	{lang: 0x17e, region: 0x97},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x12c, region: 0x97},
+	{lang: 0x12d, region: 0xa9},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x39, region: 0x97},
+	{lang: 0x1b7, region: 0x121},
+	{lang: 0x15c, region: 0xad},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x14f, region: 0x97},
+	{lang: 0x153, region: 0x97},
+	{lang: 0x146, region: 0x85},
+	{lang: 0xca, region: 0x85},
+	{lang: 0x155, region: 0x52},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x299, region: 0x129},
+	{lang: 0x29a, region: 0x129},
+	{lang: 0xda, region: 0x97},
+	{lang: 0x19e, region: 0x9a},
+	{lang: 0x29c, region: 0x52},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x176, region: 0x110},
+	{lang: 0x29d, region: 0x109},
+	{lang: 0x29d, region: 0x109},
+	{lang: 0x184, region: 0x97},
+	{lang: 0x18c, region: 0x97},
+	{lang: 0x185, region: 0x52},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x18f, region: 0x34},
 	{lang: 0x186, region: 0x97},
-	{lang: 0x17f, region: 0x52},
 	{lang: 0x0, region: 0x0},
-	{lang: 0x189, region: 0x34},
-	{lang: 0x180, region: 0x97},
+	{lang: 0x19b, region: 0xc2},
+	{lang: 0x29e, region: 0x106},
+	{lang: 0x15, region: 0x9f},
 	{lang: 0x0, region: 0x0},
-	{lang: 0x194, region: 0xc2},
-	{lang: 0x293, region: 0x106},
-	{lang: 0x14, region: 0x9f},
+	{lang: 0x170, region: 0x82},
 	{lang: 0x0, region: 0x0},
-	{lang: 0x16a, region: 0x82},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x20e, region: 0x94},
-	{lang: 0x1fe, region: 0x97},
-	{lang: 0x1c2, region: 0xc3},
-	{lang: 0x1c0, region: 0x97},
-	{lang: 0x222, region: 0x113},
-	{lang: 0x14, region: 0x11a},
-	{lang: 0x77, region: 0xc2},
-	{lang: 0x138, region: 0x104},
-	{lang: 0x163, region: 0x52},
-	{lang: 0x1c5, region: 0x9a},
-	{lang: 0x1c5, region: 0x52},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x1cf, region: 0xae},
-	{lang: 0xd9, region: 0x52},
-	{lang: 0x296, region: 0x9a},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x1e2, region: 0x93},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x1b2, region: 0x10a},
-	{lang: 0x21e, region: 0x95},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x297, region: 0x15b},
-	{lang: 0x1ff, region: 0x97},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x94, region: 0x79},
-	{lang: 0x1f9, region: 0x97},
-	{lang: 0x1f9, region: 0x97},
+	{lang: 0x216, region: 0x94},
 	{lang: 0x206, region: 0x97},
-	{lang: 0x213, region: 0xb1},
-	{lang: 0x226, region: 0x97},
-	{lang: 0x22e, region: 0x93},
-	{lang: 0x237, region: 0x34},
-	{lang: 0x238, region: 0x99},
+	{lang: 0x1ca, region: 0xc3},
+	{lang: 0x1c8, region: 0x97},
 	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x23c, region: 0xe5},
-	{lang: 0x84, region: 0x97},
-	{lang: 0x23e, region: 0x52},
-	{lang: 0x117, region: 0x52},
-	{lang: 0x23a, region: 0x97},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x44, region: 0x13b},
-	{lang: 0x241, region: 0x97},
-	{lang: 0x0, region: 0x0},
-	{lang: 0x2a5, region: 0xb8},
-	{lang: 0xa2, region: 0xe5},
-	{lang: 0x89, region: 0xcb},
-	{lang: 0x246, region: 0x121},
-	{lang: 0x48, region: 0x52},
-	{lang: 0x168, region: 0x97},
-	{lang: 0x26c, region: 0x11a},
-	{lang: 0x275, region: 0xb2},
-	{lang: 0x0, region: 0x0},
-	{lang: 0xe0, region: 0x97},
-	{lang: 0x0, region: 0x0},
+	{lang: 0x22a, region: 0x113},
+	{lang: 0x15, region: 0x11a},
+	{lang: 0x79, region: 0xc2},
+	{lang: 0x13e, region: 0x104},
+	{lang: 0x169, region: 0x52},
 	{lang: 0x1cd, region: 0x9a},
-	{lang: 0xc, region: 0x99},
-	{lang: 0xee, region: 0x52},
+	{lang: 0x1cd, region: 0x52},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x1d7, region: 0xae},
+	{lang: 0xdd, region: 0x52},
+	{lang: 0x2a1, region: 0x9a},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x1ea, region: 0x93},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x1b9, region: 0x10a},
+	{lang: 0x226, region: 0x95},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x2a2, region: 0x15b},
+	{lang: 0x207, region: 0x97},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x97, region: 0x79},
+	{lang: 0x201, region: 0x97},
+	{lang: 0x201, region: 0x97},
+	{lang: 0x20e, region: 0x97},
+	{lang: 0x21b, region: 0xb1},
+	{lang: 0x22e, region: 0x97},
+	{lang: 0x236, region: 0x93},
+	{lang: 0x23f, region: 0x34},
+	{lang: 0x240, region: 0x99},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x244, region: 0xe5},
+	{lang: 0x87, region: 0x97},
+	{lang: 0x246, region: 0x52},
+	{lang: 0x11d, region: 0x52},
+	{lang: 0x242, region: 0x97},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x45, region: 0x13b},
+	{lang: 0x249, region: 0x97},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x2b0, region: 0xb8},
+	{lang: 0xa5, region: 0xe5},
+	{lang: 0x8c, region: 0xcb},
+	{lang: 0x24e, region: 0x121},
+	{lang: 0x49, region: 0x52},
+	{lang: 0x16e, region: 0x97},
+	{lang: 0x275, region: 0x11a},
+	{lang: 0x27e, region: 0xb2},
+	{lang: 0x0, region: 0x0},
+	{lang: 0xe4, region: 0x97},
+	{lang: 0x0, region: 0x0},
+	{lang: 0x1d5, region: 0x9a},
+	{lang: 0xd, region: 0x99},
+	{lang: 0xf3, region: 0x52},
 	{lang: 0x0, region: 0x0},
 	{lang: 0x0, region: 0x0},
 	{lang: 0x0, region: 0x0},
@@ -1202,788 +1231,799 @@
 // scripts and regions given incomplete information. If more entries exist for a
 // given language, region and script are the index and size respectively
 // of the list in likelyLangList.
-// Size: 2732 bytes, 683 elements
-var likelyLang = [683]likelyScriptRegion{
-	{region: 0x132, script: 0x4b, flags: 0x0},
-	{region: 0x6e, script: 0x4b, flags: 0x0},
-	{region: 0x7b, script: 0x1b, flags: 0x0},
-	{region: 0x7e, script: 0x4b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x12f, script: 0x4b, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x9a, script: 0x7, flags: 0x0},
-	{region: 0x126, script: 0x4, flags: 0x0},
-	{region: 0x15e, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0x7e, script: 0x4b, flags: 0x0},
-	{region: 0x99, script: 0xd2, flags: 0x0},
-	{region: 0x14a, script: 0x4b, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x6e, script: 0x24, flags: 0x0},
-	{region: 0xd4, script: 0x4b, flags: 0x0},
+// Size: 2776 bytes, 694 elements
+var likelyLang = [694]likelyScriptRegion{
+	{region: 0x132, script: 0x4f, flags: 0x0},
+	{region: 0x6e, script: 0x4f, flags: 0x0},
+	{region: 0x7b, script: 0x1d, flags: 0x0},
+	{region: 0x7e, script: 0x4f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x12f, script: 0x4f, flags: 0x0},
+	{region: 0x7e, script: 0x4f, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0x9a, script: 0x9, flags: 0x0},
+	{region: 0x126, script: 0x5, flags: 0x0},
+	{region: 0x15e, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0x7e, script: 0x4f, flags: 0x0},
+	{region: 0x99, script: 0xd8, flags: 0x0},
+	{region: 0x14a, script: 0x4f, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0x6e, script: 0x26, flags: 0x0},
+	{region: 0xd4, script: 0x4f, flags: 0x0},
 	{region: 0x0, script: 0x0, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x6a, script: 0x4, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x6a, script: 0x5, flags: 0x0},
 	{region: 0x0, script: 0x3, flags: 0x1},
-	{region: 0x50, script: 0x4b, flags: 0x0},
-	{region: 0x3e, script: 0x4b, flags: 0x0},
-	{region: 0x66, script: 0x4, flags: 0x0},
-	{region: 0xb8, script: 0x4, flags: 0x0},
-	{region: 0x6a, script: 0x4, flags: 0x0},
-	{region: 0x97, script: 0xc, flags: 0x0},
-	{region: 0x12d, script: 0x4b, flags: 0x0},
-	{region: 0x6d, script: 0x4b, flags: 0x0},
-	{region: 0x48, script: 0x4b, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x3e, script: 0x4b, flags: 0x0},
+	{region: 0x50, script: 0x4f, flags: 0x0},
+	{region: 0x3e, script: 0x4f, flags: 0x0},
+	{region: 0x66, script: 0x5, flags: 0x0},
+	{region: 0xb8, script: 0x5, flags: 0x0},
+	{region: 0x6a, script: 0x5, flags: 0x0},
+	{region: 0x97, script: 0xe, flags: 0x0},
+	{region: 0x12d, script: 0x4f, flags: 0x0},
+	{region: 0x6d, script: 0x4f, flags: 0x0},
+	{region: 0x48, script: 0x4f, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x3e, script: 0x4f, flags: 0x0},
 	{region: 0x3, script: 0x4, flags: 0x1},
-	{region: 0x9a, script: 0x4, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0xe6, script: 0x4, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0x2d, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x9, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0x4e, script: 0x4b, flags: 0x0},
-	{region: 0x46, script: 0x1b, flags: 0x0},
-	{region: 0x15f, script: 0x4b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x12d, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0xc1, flags: 0x0},
-	{region: 0xe6, script: 0x4, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x37, script: 0x1b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x129, script: 0x2a, flags: 0x0},
-	{region: 0x97, script: 0x46, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x13c, script: 0x4b, flags: 0x0},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
-	{region: 0xd4, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
-	{region: 0x13b, script: 0xc3, flags: 0x0},
-	{region: 0xc1, script: 0x4b, flags: 0x0},
-	{region: 0xc1, script: 0x4b, flags: 0x0},
-	{region: 0x34, script: 0xc, flags: 0x0},
-	{region: 0x52, script: 0xca, flags: 0x0},
-	{region: 0x97, script: 0xc, flags: 0x0},
-	{region: 0x9a, script: 0x4, flags: 0x0},
-	{region: 0x4e, script: 0x4b, flags: 0x0},
-	{region: 0x76, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0xe6, script: 0x4, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x32, script: 0x4b, flags: 0x0},
-	{region: 0xb2, script: 0xa, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
-	{region: 0xe6, script: 0x1d, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x15c, script: 0x4b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0x84, script: 0x4b, flags: 0x0},
-	{region: 0x6c, script: 0x24, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0xc1, script: 0x4b, flags: 0x0},
-	{region: 0x6d, script: 0x4b, flags: 0x0},
-	{region: 0xd4, script: 0x4b, flags: 0x0},
+	{region: 0x9a, script: 0x5, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0xe6, script: 0x5, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0x2d, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0xb, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0x4e, script: 0x4f, flags: 0x0},
+	{region: 0x46, script: 0x1d, flags: 0x0},
+	{region: 0x15f, script: 0x4f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x12d, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0xc7, flags: 0x0},
+	{region: 0xe6, script: 0x5, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x37, script: 0x1d, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x129, script: 0x2c, flags: 0x0},
+	{region: 0x97, script: 0x4a, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x13c, script: 0x4f, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
+	{region: 0xd4, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
+	{region: 0x13b, script: 0xc9, flags: 0x0},
+	{region: 0xc1, script: 0x4f, flags: 0x0},
+	{region: 0xc1, script: 0x4f, flags: 0x0},
+	{region: 0x34, script: 0xe, flags: 0x0},
+	{region: 0x52, script: 0xd0, flags: 0x0},
+	{region: 0x97, script: 0xe, flags: 0x0},
+	{region: 0x9a, script: 0x5, flags: 0x0},
+	{region: 0x4e, script: 0x4f, flags: 0x0},
+	{region: 0x76, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0xe6, script: 0x5, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x32, script: 0x4f, flags: 0x0},
+	{region: 0xb2, script: 0xc, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
+	{region: 0xe6, script: 0x1f, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0x15c, script: 0x4f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0x84, script: 0x4f, flags: 0x0},
+	{region: 0x6c, script: 0x26, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0xc1, script: 0x4f, flags: 0x0},
+	{region: 0x6d, script: 0x4f, flags: 0x0},
+	{region: 0xd4, script: 0x4f, flags: 0x0},
 	{region: 0x7, script: 0x2, flags: 0x1},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
-	{region: 0x12f, script: 0x4b, flags: 0x0},
-	{region: 0x88, script: 0x4b, flags: 0x0},
-	{region: 0x73, script: 0x4b, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x48, script: 0x4b, flags: 0x0},
-	{region: 0x132, script: 0x17, flags: 0x0},
-	{region: 0xa4, script: 0x4, flags: 0x0},
-	{region: 0x13b, script: 0x16, flags: 0x0},
-	{region: 0x99, script: 0x4, flags: 0x0},
-	{region: 0x76, script: 0x4b, flags: 0x0},
-	{region: 0x6a, script: 0x19, flags: 0x0},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
-	{region: 0x48, script: 0x14, flags: 0x0},
-	{region: 0x48, script: 0x14, flags: 0x0},
-	{region: 0x48, script: 0x14, flags: 0x0},
-	{region: 0x48, script: 0x14, flags: 0x0},
-	{region: 0x48, script: 0x14, flags: 0x0},
-	{region: 0x108, script: 0x4b, flags: 0x0},
-	{region: 0x5d, script: 0x4b, flags: 0x0},
-	{region: 0xe7, script: 0x4b, flags: 0x0},
-	{region: 0x48, script: 0x14, flags: 0x0},
-	{region: 0xc2, script: 0x6e, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
+	{region: 0x12f, script: 0x4f, flags: 0x0},
+	{region: 0x88, script: 0x4f, flags: 0x0},
+	{region: 0x73, script: 0x4f, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0x132, script: 0x4f, flags: 0x0},
+	{region: 0x48, script: 0x4f, flags: 0x0},
+	{region: 0x132, script: 0x19, flags: 0x0},
+	{region: 0xa4, script: 0x5, flags: 0x0},
+	{region: 0x13b, script: 0x18, flags: 0x0},
+	{region: 0x99, script: 0x5, flags: 0x0},
+	{region: 0x76, script: 0x4f, flags: 0x0},
+	{region: 0x6a, script: 0x1b, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
+	{region: 0x48, script: 0x16, flags: 0x0},
+	{region: 0x48, script: 0x16, flags: 0x0},
+	{region: 0x48, script: 0x16, flags: 0x0},
+	{region: 0x48, script: 0x16, flags: 0x0},
+	{region: 0x48, script: 0x16, flags: 0x0},
+	{region: 0x108, script: 0x4f, flags: 0x0},
+	{region: 0x5d, script: 0x4f, flags: 0x0},
+	{region: 0xe7, script: 0x4f, flags: 0x0},
+	{region: 0x48, script: 0x16, flags: 0x0},
+	{region: 0xc2, script: 0x74, flags: 0x0},
 	{region: 0x9, script: 0x2, flags: 0x1},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x79, script: 0x4b, flags: 0x0},
-	{region: 0x62, script: 0x4b, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0xa2, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x4, flags: 0x0},
-	{region: 0x5f, script: 0x4b, flags: 0x0},
-	{region: 0x48, script: 0x4b, flags: 0x0},
-	{region: 0x48, script: 0x4b, flags: 0x0},
-	{region: 0xd2, script: 0x4b, flags: 0x0},
-	{region: 0x4e, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x4, flags: 0x0},
-	{region: 0x5f, script: 0x4b, flags: 0x0},
-	{region: 0xc1, script: 0x4b, flags: 0x0},
-	{region: 0xce, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0xcb, script: 0xc8, flags: 0x0},
-	{region: 0x112, script: 0x4b, flags: 0x0},
-	{region: 0x36, script: 0x4b, flags: 0x0},
-	{region: 0x42, script: 0xca, flags: 0x0},
-	{region: 0xa2, script: 0x4b, flags: 0x0},
-	{region: 0x7e, script: 0x4b, flags: 0x0},
-	{region: 0xd4, script: 0x4b, flags: 0x0},
-	{region: 0x9c, script: 0x4b, flags: 0x0},
-	{region: 0x6a, script: 0x22, flags: 0x0},
-	{region: 0xc2, script: 0x3e, flags: 0x0},
-	{region: 0x85, script: 0x2a, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0x79, script: 0x4f, flags: 0x0},
+	{region: 0x62, script: 0x4f, flags: 0x0},
+	{region: 0x132, script: 0x4f, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0xa2, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x5, flags: 0x0},
+	{region: 0x5f, script: 0x4f, flags: 0x0},
+	{region: 0x48, script: 0x4f, flags: 0x0},
+	{region: 0x48, script: 0x4f, flags: 0x0},
+	{region: 0xd2, script: 0x4f, flags: 0x0},
+	{region: 0x4e, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x5, flags: 0x0},
+	{region: 0x5f, script: 0x4f, flags: 0x0},
+	{region: 0xc1, script: 0x4f, flags: 0x0},
+	{region: 0xce, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0xcb, script: 0xce, flags: 0x0},
+	{region: 0x112, script: 0x4f, flags: 0x0},
+	{region: 0x36, script: 0x4f, flags: 0x0},
+	{region: 0x42, script: 0xd0, flags: 0x0},
+	{region: 0xa2, script: 0x4f, flags: 0x0},
+	{region: 0x7e, script: 0x4f, flags: 0x0},
+	{region: 0xd4, script: 0x4f, flags: 0x0},
+	{region: 0x9c, script: 0x4f, flags: 0x0},
+	{region: 0x6a, script: 0x24, flags: 0x0},
+	{region: 0xc2, script: 0x40, flags: 0x0},
+	{region: 0x85, script: 0x2c, flags: 0x0},
 	{region: 0xb, script: 0x2, flags: 0x1},
-	{region: 0x1, script: 0x4b, flags: 0x0},
-	{region: 0x6d, script: 0x4b, flags: 0x0},
-	{region: 0x132, script: 0x4b, flags: 0x0},
-	{region: 0x69, script: 0x4b, flags: 0x0},
-	{region: 0x9c, script: 0x3a, flags: 0x0},
-	{region: 0x6d, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0x6d, script: 0x4b, flags: 0x0},
-	{region: 0x9a, script: 0x4, flags: 0x0},
-	{region: 0x84, script: 0x4b, flags: 0x0},
-	{region: 0x112, script: 0x4b, flags: 0x0},
-	{region: 0xc1, script: 0x4b, flags: 0x0},
-	{region: 0x70, script: 0x4b, flags: 0x0},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
-	{region: 0x10a, script: 0x4b, flags: 0x0},
-	{region: 0x71, script: 0x4b, flags: 0x0},
-	{region: 0x74, script: 0x4b, flags: 0x0},
-	{region: 0x3a, script: 0x4b, flags: 0x0},
-	{region: 0x76, script: 0x4b, flags: 0x0},
-	{region: 0x132, script: 0x4b, flags: 0x0},
-	{region: 0x76, script: 0x4b, flags: 0x0},
-	{region: 0x5f, script: 0x4b, flags: 0x0},
-	{region: 0x5f, script: 0x4b, flags: 0x0},
-	{region: 0x13d, script: 0x4b, flags: 0x0},
-	{region: 0xd2, script: 0x4b, flags: 0x0},
-	{region: 0x9c, script: 0x4b, flags: 0x0},
-	{region: 0xd4, script: 0x4b, flags: 0x0},
-	{region: 0xd7, script: 0x4b, flags: 0x0},
-	{region: 0x94, script: 0x4b, flags: 0x0},
-	{region: 0x7e, script: 0x4b, flags: 0x0},
-	{region: 0xba, script: 0x4b, flags: 0x0},
-	{region: 0x52, script: 0x30, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x9a, script: 0x4, flags: 0x0},
-	{region: 0x7c, script: 0x4b, flags: 0x0},
-	{region: 0x79, script: 0x4b, flags: 0x0},
-	{region: 0x6e, script: 0x24, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0xa5, script: 0x4b, flags: 0x0},
-	{region: 0xe6, script: 0x4, flags: 0x0},
-	{region: 0xe6, script: 0x4, flags: 0x0},
-	{region: 0x6d, script: 0x4b, flags: 0x0},
-	{region: 0x9a, script: 0x4, flags: 0x0},
-	{region: 0xef, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x97, script: 0xc4, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0xd7, script: 0x4b, flags: 0x0},
-	{region: 0x12e, script: 0x28, flags: 0x0},
+	{region: 0x1, script: 0x4f, flags: 0x0},
+	{region: 0x6d, script: 0x4f, flags: 0x0},
+	{region: 0x132, script: 0x4f, flags: 0x0},
+	{region: 0x69, script: 0x4f, flags: 0x0},
+	{region: 0x9c, script: 0x3c, flags: 0x0},
+	{region: 0x6d, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0x6d, script: 0x4f, flags: 0x0},
+	{region: 0x9a, script: 0x5, flags: 0x0},
+	{region: 0x84, script: 0x4f, flags: 0x0},
+	{region: 0x112, script: 0x4f, flags: 0x0},
+	{region: 0xc1, script: 0x4f, flags: 0x0},
+	{region: 0x70, script: 0x4f, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
+	{region: 0x10a, script: 0x4f, flags: 0x0},
+	{region: 0x71, script: 0x4f, flags: 0x0},
+	{region: 0x74, script: 0x4f, flags: 0x0},
+	{region: 0x3a, script: 0x4f, flags: 0x0},
+	{region: 0x76, script: 0x4f, flags: 0x0},
+	{region: 0x132, script: 0x4f, flags: 0x0},
+	{region: 0x76, script: 0x4f, flags: 0x0},
+	{region: 0x5f, script: 0x4f, flags: 0x0},
+	{region: 0x5f, script: 0x4f, flags: 0x0},
+	{region: 0x13d, script: 0x4f, flags: 0x0},
+	{region: 0xd2, script: 0x4f, flags: 0x0},
+	{region: 0x9c, script: 0x4f, flags: 0x0},
+	{region: 0xd4, script: 0x4f, flags: 0x0},
+	{region: 0xd7, script: 0x4f, flags: 0x0},
+	{region: 0x94, script: 0x4f, flags: 0x0},
+	{region: 0x7e, script: 0x4f, flags: 0x0},
+	{region: 0xba, script: 0x4f, flags: 0x0},
+	{region: 0x52, script: 0x32, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x9a, script: 0x5, flags: 0x0},
+	{region: 0x7c, script: 0x4f, flags: 0x0},
+	{region: 0x79, script: 0x4f, flags: 0x0},
+	{region: 0x6e, script: 0x26, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0xa5, script: 0x4f, flags: 0x0},
+	{region: 0xe6, script: 0x5, flags: 0x0},
+	{region: 0xe6, script: 0x5, flags: 0x0},
+	{region: 0x6d, script: 0x4f, flags: 0x0},
+	{region: 0x9a, script: 0x5, flags: 0x0},
+	{region: 0xef, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x97, script: 0xca, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0xd7, script: 0x4f, flags: 0x0},
+	{region: 0x12e, script: 0x2a, flags: 0x0},
 	{region: 0xd, script: 0x2, flags: 0x1},
-	{region: 0x97, script: 0xc, flags: 0x0},
-	{region: 0x4d, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x2b, flags: 0x0},
-	{region: 0x40, script: 0x4b, flags: 0x0},
-	{region: 0x53, script: 0x4b, flags: 0x0},
-	{region: 0x7e, script: 0x4b, flags: 0x0},
-	{region: 0xa2, script: 0x4b, flags: 0x0},
-	{region: 0x96, script: 0x4b, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0x48, script: 0x4b, flags: 0x0},
+	{region: 0x97, script: 0xe, flags: 0x0},
+	{region: 0x4d, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x2d, flags: 0x0},
+	{region: 0x40, script: 0x4f, flags: 0x0},
+	{region: 0x53, script: 0x4f, flags: 0x0},
+	{region: 0x7e, script: 0x4f, flags: 0x0},
+	{region: 0xa2, script: 0x4f, flags: 0x0},
+	{region: 0x96, script: 0x4f, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0x48, script: 0x4f, flags: 0x0},
 	{region: 0xf, script: 0x3, flags: 0x1},
-	{region: 0x52, script: 0x30, flags: 0x0},
-	{region: 0x132, script: 0x4b, flags: 0x0},
-	{region: 0x23, script: 0x4, flags: 0x0},
-	{region: 0x95, script: 0x33, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x71, script: 0x1d, flags: 0x0},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
-	{region: 0x52, script: 0x75, flags: 0x0},
-	{region: 0xe6, script: 0x4, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0xad, script: 0x36, flags: 0x0},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
-	{region: 0xe6, script: 0x4, flags: 0x0},
-	{region: 0xe4, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x8e, script: 0x4b, flags: 0x0},
-	{region: 0x5f, script: 0x4b, flags: 0x0},
-	{region: 0x52, script: 0x30, flags: 0x0},
-	{region: 0x8f, script: 0x4b, flags: 0x0},
-	{region: 0x90, script: 0x4b, flags: 0x0},
-	{region: 0x27, script: 0x6, flags: 0x0},
+	{region: 0x52, script: 0x32, flags: 0x0},
+	{region: 0x132, script: 0x4f, flags: 0x0},
+	{region: 0x23, script: 0x5, flags: 0x0},
+	{region: 0x95, script: 0x35, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x71, script: 0x1f, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
+	{region: 0x52, script: 0x7b, flags: 0x0},
+	{region: 0xe6, script: 0x5, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0xad, script: 0x38, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
+	{region: 0xe6, script: 0x5, flags: 0x0},
+	{region: 0xe4, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x8e, script: 0x4f, flags: 0x0},
+	{region: 0x5f, script: 0x4f, flags: 0x0},
+	{region: 0x52, script: 0x32, flags: 0x0},
+	{region: 0x8f, script: 0x4f, flags: 0x0},
+	{region: 0x90, script: 0x4f, flags: 0x0},
+	{region: 0x27, script: 0x8, flags: 0x0},
+	{region: 0xd0, script: 0x4f, flags: 0x0},
+	{region: 0x76, script: 0x4f, flags: 0x0},
+	{region: 0xce, script: 0x4f, flags: 0x0},
+	{region: 0xd4, script: 0x4f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
 	{region: 0x0, script: 0x0, flags: 0x0},
-	{region: 0x76, script: 0x4b, flags: 0x0},
-	{region: 0xd4, script: 0x4b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
+	{region: 0xd4, script: 0x4f, flags: 0x0},
+	{region: 0x52, script: 0xd9, flags: 0x0},
+	{region: 0x132, script: 0x4f, flags: 0x0},
+	{region: 0x48, script: 0x4f, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
 	{region: 0x0, script: 0x0, flags: 0x0},
-	{region: 0xd4, script: 0x4b, flags: 0x0},
-	{region: 0x52, script: 0xd3, flags: 0x0},
-	{region: 0x132, script: 0x4b, flags: 0x0},
-	{region: 0x48, script: 0x4b, flags: 0x0},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x0, script: 0x0, flags: 0x0},
-	{region: 0x9b, script: 0x4b, flags: 0x0},
-	{region: 0x9c, script: 0x4b, flags: 0x0},
-	{region: 0x48, script: 0x14, flags: 0x0},
-	{region: 0x95, script: 0x33, flags: 0x0},
-	{region: 0x104, script: 0x4b, flags: 0x0},
-	{region: 0xa0, script: 0x3c, flags: 0x0},
-	{region: 0x9e, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0x12e, script: 0x33, flags: 0x0},
-	{region: 0x12d, script: 0x4b, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0x62, script: 0x4b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x7b, script: 0x26, flags: 0x0},
-	{region: 0x134, script: 0x1b, flags: 0x0},
-	{region: 0x66, script: 0x4b, flags: 0x0},
-	{region: 0xd4, script: 0x4b, flags: 0x0},
-	{region: 0xa2, script: 0x4b, flags: 0x0},
-	{region: 0xc1, script: 0x4b, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0xd4, script: 0x4b, flags: 0x0},
-	{region: 0x161, script: 0x4b, flags: 0x0},
-	{region: 0x12d, script: 0x4b, flags: 0x0},
-	{region: 0x121, script: 0xc9, flags: 0x0},
-	{region: 0x59, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0x4e, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x4a, script: 0x4b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x40, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x4b, flags: 0x0},
-	{region: 0x52, script: 0xc0, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0xc1, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x62, flags: 0x0},
-	{region: 0xe6, script: 0x4, flags: 0x0},
-	{region: 0xa2, script: 0x4b, flags: 0x0},
-	{region: 0x129, script: 0x4b, flags: 0x0},
-	{region: 0xd0, script: 0x4b, flags: 0x0},
-	{region: 0xad, script: 0x48, flags: 0x0},
+	{region: 0x9b, script: 0x4f, flags: 0x0},
+	{region: 0x9c, script: 0x4f, flags: 0x0},
+	{region: 0x48, script: 0x16, flags: 0x0},
+	{region: 0x95, script: 0x35, flags: 0x0},
+	{region: 0x104, script: 0x4f, flags: 0x0},
+	{region: 0xa0, script: 0x3e, flags: 0x0},
+	{region: 0x9e, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0x12e, script: 0x35, flags: 0x0},
+	{region: 0x12d, script: 0x4f, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0x62, script: 0x4f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x7b, script: 0x28, flags: 0x0},
+	{region: 0x134, script: 0x1d, flags: 0x0},
+	{region: 0x66, script: 0x4f, flags: 0x0},
+	{region: 0xc2, script: 0x4f, flags: 0x0},
+	{region: 0xd4, script: 0x4f, flags: 0x0},
+	{region: 0xa2, script: 0x4f, flags: 0x0},
+	{region: 0xc1, script: 0x4f, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0xd4, script: 0x4f, flags: 0x0},
+	{region: 0x161, script: 0x4f, flags: 0x0},
+	{region: 0x12d, script: 0x4f, flags: 0x0},
+	{region: 0x121, script: 0xcf, flags: 0x0},
+	{region: 0x59, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0x4e, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x4a, script: 0x4f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x40, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x4f, flags: 0x0},
+	{region: 0x52, script: 0xc6, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0xc1, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x67, flags: 0x0},
+	{region: 0xe6, script: 0x5, flags: 0x0},
+	{region: 0xa2, script: 0x4f, flags: 0x0},
+	{region: 0x129, script: 0x4f, flags: 0x0},
+	{region: 0xd0, script: 0x4f, flags: 0x0},
+	{region: 0xad, script: 0x4c, flags: 0x0},
 	{region: 0x12, script: 0x6, flags: 0x1},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0x80, script: 0x4b, flags: 0x0},
-	{region: 0xa2, script: 0x4b, flags: 0x0},
-	{region: 0xa4, script: 0x41, flags: 0x0},
-	{region: 0x29, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x43, flags: 0x0},
-	{region: 0xa9, script: 0x44, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x73, script: 0x4b, flags: 0x0},
-	{region: 0xb2, script: 0x4b, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0x80, script: 0x4f, flags: 0x0},
+	{region: 0xa2, script: 0x4f, flags: 0x0},
+	{region: 0xa4, script: 0x43, flags: 0x0},
+	{region: 0x29, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x47, flags: 0x0},
+	{region: 0xa9, script: 0x48, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x73, script: 0x4f, flags: 0x0},
+	{region: 0xb2, script: 0x4f, flags: 0x0},
 	{region: 0x0, script: 0x0, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x110, script: 0x4b, flags: 0x0},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
-	{region: 0x104, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x97, script: 0x4, flags: 0x0},
-	{region: 0x12d, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0x5f, script: 0x4b, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0x110, script: 0x4f, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
+	{region: 0x104, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x97, script: 0x5, flags: 0x0},
+	{region: 0x12d, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0x5f, script: 0x4f, flags: 0x0},
 	{region: 0x18, script: 0x3, flags: 0x1},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0xe6, script: 0x4, flags: 0x0},
-	{region: 0x79, script: 0x4b, flags: 0x0},
-	{region: 0x121, script: 0xc9, flags: 0x0},
-	{region: 0xe6, script: 0x4, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0xe6, script: 0x5, flags: 0x0},
+	{region: 0x79, script: 0x4f, flags: 0x0},
+	{region: 0x121, script: 0xcf, flags: 0x0},
+	{region: 0xe6, script: 0x5, flags: 0x0},
 	{region: 0x1b, script: 0x5, flags: 0x1},
-	{region: 0x135, script: 0x4b, flags: 0x0},
-	{region: 0x85, script: 0x4e, flags: 0x0},
-	{region: 0x95, script: 0x33, flags: 0x0},
-	{region: 0x12d, script: 0x4b, flags: 0x0},
-	{region: 0xe6, script: 0x4, flags: 0x0},
-	{region: 0x12f, script: 0x4b, flags: 0x0},
-	{region: 0xb5, script: 0x4b, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x52, script: 0xc9, flags: 0x0},
-	{region: 0x97, script: 0x4c, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x12f, script: 0x4b, flags: 0x0},
-	{region: 0xd7, script: 0x4b, flags: 0x0},
+	{region: 0x135, script: 0x4f, flags: 0x0},
+	{region: 0x85, script: 0x52, flags: 0x0},
+	{region: 0x95, script: 0x35, flags: 0x0},
+	{region: 0x12d, script: 0x4f, flags: 0x0},
+	{region: 0xe6, script: 0x5, flags: 0x0},
+	{region: 0x12f, script: 0x4f, flags: 0x0},
+	{region: 0xb5, script: 0x4f, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x52, script: 0xcf, flags: 0x0},
+	{region: 0x97, script: 0x50, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0x12f, script: 0x4f, flags: 0x0},
+	{region: 0xd7, script: 0x4f, flags: 0x0},
 	{region: 0x20, script: 0x2, flags: 0x1},
-	{region: 0x9c, script: 0x4b, flags: 0x0},
-	{region: 0x52, script: 0x50, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x9a, script: 0x4, flags: 0x0},
-	{region: 0x132, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0xc4, flags: 0x0},
-	{region: 0x9c, script: 0x4b, flags: 0x0},
-	{region: 0x4a, script: 0x4b, flags: 0x0},
-	{region: 0xad, script: 0x48, flags: 0x0},
-	{region: 0x4a, script: 0x4b, flags: 0x0},
-	{region: 0x15f, script: 0x4b, flags: 0x0},
-	{region: 0x9a, script: 0x4, flags: 0x0},
-	{region: 0xb4, script: 0x4b, flags: 0x0},
-	{region: 0xb6, script: 0x4b, flags: 0x0},
-	{region: 0x4a, script: 0x4b, flags: 0x0},
-	{region: 0x4a, script: 0x4b, flags: 0x0},
-	{region: 0xa2, script: 0x4b, flags: 0x0},
-	{region: 0xa2, script: 0x4b, flags: 0x0},
-	{region: 0x9a, script: 0x4, flags: 0x0},
-	{region: 0xb6, script: 0x4b, flags: 0x0},
-	{region: 0x121, script: 0xc9, flags: 0x0},
-	{region: 0x52, script: 0x30, flags: 0x0},
-	{region: 0x129, script: 0x4b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
+	{region: 0x9c, script: 0x4f, flags: 0x0},
+	{region: 0x52, script: 0x54, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x9a, script: 0x5, flags: 0x0},
+	{region: 0x132, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0xca, flags: 0x0},
+	{region: 0x9c, script: 0x4f, flags: 0x0},
+	{region: 0x4a, script: 0x4f, flags: 0x0},
+	{region: 0xad, script: 0x4c, flags: 0x0},
+	{region: 0x4a, script: 0x4f, flags: 0x0},
+	{region: 0x15f, script: 0x4f, flags: 0x0},
+	{region: 0x9a, script: 0x5, flags: 0x0},
+	{region: 0xb4, script: 0x4f, flags: 0x0},
+	{region: 0xb6, script: 0x4f, flags: 0x0},
+	{region: 0x4a, script: 0x4f, flags: 0x0},
+	{region: 0x4a, script: 0x4f, flags: 0x0},
+	{region: 0xa2, script: 0x4f, flags: 0x0},
+	{region: 0xa2, script: 0x4f, flags: 0x0},
+	{region: 0x9a, script: 0x5, flags: 0x0},
+	{region: 0xb6, script: 0x4f, flags: 0x0},
+	{region: 0x121, script: 0xcf, flags: 0x0},
+	{region: 0x52, script: 0x32, flags: 0x0},
+	{region: 0x129, script: 0x4f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
 	{region: 0x22, script: 0x3, flags: 0x1},
-	{region: 0xa2, script: 0x4b, flags: 0x0},
-	{region: 0xcd, script: 0x4b, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x110, script: 0x4b, flags: 0x0},
-	{region: 0xa2, script: 0x4b, flags: 0x0},
-	{region: 0x121, script: 0x4, flags: 0x0},
-	{region: 0xca, script: 0x4b, flags: 0x0},
-	{region: 0xbd, script: 0x4b, flags: 0x0},
-	{region: 0xcf, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0x12d, script: 0x4b, flags: 0x0},
-	{region: 0xbe, script: 0x4b, flags: 0x0},
-	{region: 0xde, script: 0x4b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
+	{region: 0xa2, script: 0x4f, flags: 0x0},
+	{region: 0xcd, script: 0x4f, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x110, script: 0x4f, flags: 0x0},
+	{region: 0xa2, script: 0x4f, flags: 0x0},
+	{region: 0x121, script: 0x5, flags: 0x0},
+	{region: 0xca, script: 0x4f, flags: 0x0},
+	{region: 0xbd, script: 0x4f, flags: 0x0},
+	{region: 0xcf, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0x12d, script: 0x4f, flags: 0x0},
+	{region: 0xbe, script: 0x4f, flags: 0x0},
+	{region: 0xde, script: 0x4f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
 	{region: 0x0, script: 0x0, flags: 0x0},
-	{region: 0xc0, script: 0x1b, flags: 0x0},
-	{region: 0x97, script: 0x5b, flags: 0x0},
+	{region: 0xc0, script: 0x1d, flags: 0x0},
+	{region: 0x97, script: 0x60, flags: 0x0},
 	{region: 0x25, script: 0x3, flags: 0x1},
-	{region: 0x97, script: 0xc, flags: 0x0},
-	{region: 0xc2, script: 0x62, flags: 0x0},
+	{region: 0x97, script: 0xe, flags: 0x0},
+	{region: 0xc2, script: 0x67, flags: 0x0},
 	{region: 0x0, script: 0x0, flags: 0x0},
-	{region: 0x48, script: 0x4b, flags: 0x0},
-	{region: 0x48, script: 0x4b, flags: 0x0},
-	{region: 0x36, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x34, script: 0x5f, flags: 0x0},
+	{region: 0x48, script: 0x4f, flags: 0x0},
+	{region: 0x48, script: 0x4f, flags: 0x0},
+	{region: 0x36, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0x34, script: 0x64, flags: 0x0},
 	{region: 0x28, script: 0x3, flags: 0x1},
-	{region: 0xc9, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
+	{region: 0xc9, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
 	{region: 0x0, script: 0x0, flags: 0x0},
-	{region: 0xe6, script: 0x4, flags: 0x0},
-	{region: 0xc1, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x161, script: 0x4b, flags: 0x0},
-	{region: 0xc2, script: 0x62, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x12f, script: 0x4b, flags: 0x0},
-	{region: 0x9a, script: 0x55, flags: 0x0},
-	{region: 0x9a, script: 0x4, flags: 0x0},
-	{region: 0xdb, script: 0x4b, flags: 0x0},
-	{region: 0x52, script: 0x30, flags: 0x0},
-	{region: 0x9c, script: 0x4b, flags: 0x0},
-	{region: 0xd0, script: 0x4b, flags: 0x0},
-	{region: 0xd8, script: 0x4b, flags: 0x0},
-	{region: 0xcd, script: 0x4b, flags: 0x0},
-	{region: 0x161, script: 0x4b, flags: 0x0},
-	{region: 0xcf, script: 0x4b, flags: 0x0},
-	{region: 0x5f, script: 0x4b, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0xd0, script: 0x4b, flags: 0x0},
-	{region: 0xcf, script: 0x4b, flags: 0x0},
-	{region: 0xcd, script: 0x4b, flags: 0x0},
-	{region: 0xcd, script: 0x4b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0xdd, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x4b, flags: 0x0},
-	{region: 0xd7, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0xd8, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0xd8, script: 0x4b, flags: 0x0},
-	{region: 0x121, script: 0x47, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x10a, script: 0xab, flags: 0x0},
-	{region: 0x82, script: 0x66, flags: 0x0},
-	{region: 0x15e, script: 0x4b, flags: 0x0},
-	{region: 0x48, script: 0x14, flags: 0x0},
-	{region: 0x15e, script: 0x4b, flags: 0x0},
-	{region: 0x109, script: 0x4b, flags: 0x0},
-	{region: 0x132, script: 0x4b, flags: 0x0},
-	{region: 0x52, script: 0x4b, flags: 0x0},
-	{region: 0xcc, script: 0x4b, flags: 0x0},
-	{region: 0x12d, script: 0x4b, flags: 0x0},
-	{region: 0x12f, script: 0x4b, flags: 0x0},
-	{region: 0x76, script: 0x4b, flags: 0x0},
+	{region: 0x132, script: 0x4f, flags: 0x0},
+	{region: 0xe6, script: 0x5, flags: 0x0},
+	{region: 0xc1, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x161, script: 0x4f, flags: 0x0},
+	{region: 0xc2, script: 0x67, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0x12f, script: 0x4f, flags: 0x0},
+	{region: 0x9a, script: 0x59, flags: 0x0},
+	{region: 0x9a, script: 0x5, flags: 0x0},
+	{region: 0xdb, script: 0x4f, flags: 0x0},
+	{region: 0x52, script: 0x32, flags: 0x0},
+	{region: 0x9c, script: 0x4f, flags: 0x0},
+	{region: 0xd0, script: 0x4f, flags: 0x0},
+	{region: 0xd8, script: 0x4f, flags: 0x0},
+	{region: 0xcd, script: 0x4f, flags: 0x0},
+	{region: 0x161, script: 0x4f, flags: 0x0},
+	{region: 0xcf, script: 0x4f, flags: 0x0},
+	{region: 0x5f, script: 0x4f, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0xd0, script: 0x4f, flags: 0x0},
+	{region: 0xcf, script: 0x4f, flags: 0x0},
+	{region: 0xcd, script: 0x4f, flags: 0x0},
+	{region: 0xcd, script: 0x4f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0xdd, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x4f, flags: 0x0},
+	{region: 0xd7, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0xd8, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0xd8, script: 0x4f, flags: 0x0},
+	{region: 0x121, script: 0x4b, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x10a, script: 0xb1, flags: 0x0},
+	{region: 0x82, script: 0x6b, flags: 0x0},
+	{region: 0x15e, script: 0x4f, flags: 0x0},
+	{region: 0x48, script: 0x16, flags: 0x0},
+	{region: 0x15e, script: 0x4f, flags: 0x0},
+	{region: 0x109, script: 0x4f, flags: 0x0},
+	{region: 0x132, script: 0x4f, flags: 0x0},
+	{region: 0x52, script: 0x4f, flags: 0x0},
+	{region: 0xcc, script: 0x4f, flags: 0x0},
+	{region: 0x12d, script: 0x4f, flags: 0x0},
+	{region: 0x12f, script: 0x4f, flags: 0x0},
+	{region: 0x7e, script: 0x4f, flags: 0x0},
+	{region: 0x76, script: 0x4f, flags: 0x0},
 	{region: 0x0, script: 0x0, flags: 0x0},
-	{region: 0x6e, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x6b, flags: 0x0},
-	{region: 0x7b, script: 0x1b, flags: 0x0},
-	{region: 0xc3, script: 0x6a, flags: 0x0},
+	{region: 0x6e, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x70, flags: 0x0},
+	{region: 0x7b, script: 0x1d, flags: 0x0},
+	{region: 0xc3, script: 0x6f, flags: 0x0},
 	{region: 0x2b, script: 0x3, flags: 0x1},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
 	{region: 0x2e, script: 0x2, flags: 0x1},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
-	{region: 0x2f, script: 0x4b, flags: 0x0},
-	{region: 0xee, script: 0x4b, flags: 0x0},
-	{region: 0x76, script: 0x4b, flags: 0x0},
-	{region: 0xd4, script: 0x4b, flags: 0x0},
-	{region: 0x132, script: 0x4b, flags: 0x0},
-	{region: 0x48, script: 0x4b, flags: 0x0},
-	{region: 0x9a, script: 0xd1, flags: 0x0},
-	{region: 0x5f, script: 0x4b, flags: 0x0},
-	{region: 0xae, script: 0x74, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
+	{region: 0x2f, script: 0x4f, flags: 0x0},
+	{region: 0xee, script: 0x4f, flags: 0x0},
+	{region: 0x76, script: 0x4f, flags: 0x0},
+	{region: 0xd4, script: 0x4f, flags: 0x0},
+	{region: 0x132, script: 0x4f, flags: 0x0},
+	{region: 0x48, script: 0x4f, flags: 0x0},
+	{region: 0x9a, script: 0xd7, flags: 0x0},
+	{region: 0x5f, script: 0x4f, flags: 0x0},
+	{region: 0xae, script: 0x7a, flags: 0x0},
 	{region: 0x0, script: 0x0, flags: 0x0},
-	{region: 0x97, script: 0xf, flags: 0x0},
-	{region: 0xa2, script: 0x4b, flags: 0x0},
-	{region: 0xe7, script: 0x4b, flags: 0x0},
-	{region: 0x9c, script: 0x4b, flags: 0x0},
-	{region: 0x85, script: 0x2a, flags: 0x0},
-	{region: 0x73, script: 0x4b, flags: 0x0},
-	{region: 0xe6, script: 0x40, flags: 0x0},
-	{region: 0x9a, script: 0x4, flags: 0x0},
-	{region: 0x1, script: 0x4b, flags: 0x0},
-	{region: 0x23, script: 0x4, flags: 0x0},
-	{region: 0x40, script: 0x4b, flags: 0x0},
-	{region: 0x78, script: 0x4b, flags: 0x0},
-	{region: 0xe2, script: 0x4b, flags: 0x0},
-	{region: 0x87, script: 0x4b, flags: 0x0},
-	{region: 0x68, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x4b, flags: 0x0},
-	{region: 0x100, script: 0x4b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x9c, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x4b, flags: 0x0},
+	{region: 0x97, script: 0x11, flags: 0x0},
+	{region: 0xa2, script: 0x4f, flags: 0x0},
+	{region: 0xe7, script: 0x4f, flags: 0x0},
+	{region: 0x9c, script: 0x4f, flags: 0x0},
+	{region: 0x85, script: 0x2c, flags: 0x0},
+	{region: 0x73, script: 0x4f, flags: 0x0},
+	{region: 0xe6, script: 0x42, flags: 0x0},
+	{region: 0x9a, script: 0x5, flags: 0x0},
+	{region: 0x1, script: 0x4f, flags: 0x0},
+	{region: 0x23, script: 0x5, flags: 0x0},
+	{region: 0x40, script: 0x4f, flags: 0x0},
+	{region: 0x78, script: 0x4f, flags: 0x0},
+	{region: 0xe2, script: 0x4f, flags: 0x0},
+	{region: 0x87, script: 0x4f, flags: 0x0},
+	{region: 0x68, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x4f, flags: 0x0},
+	{region: 0x100, script: 0x4f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x9c, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x4f, flags: 0x0},
 	{region: 0x30, script: 0x2, flags: 0x1},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0x34, script: 0xc, flags: 0x0},
-	{region: 0x4d, script: 0x4b, flags: 0x0},
-	{region: 0x70, script: 0x4b, flags: 0x0},
-	{region: 0x4d, script: 0x4b, flags: 0x0},
-	{region: 0x9a, script: 0x4, flags: 0x0},
-	{region: 0x10a, script: 0x4b, flags: 0x0},
-	{region: 0x39, script: 0x4b, flags: 0x0},
-	{region: 0xcf, script: 0x4b, flags: 0x0},
-	{region: 0x102, script: 0x4b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x12d, script: 0x4b, flags: 0x0},
-	{region: 0x71, script: 0x4b, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x12e, script: 0x1b, flags: 0x0},
-	{region: 0x107, script: 0x4b, flags: 0x0},
-	{region: 0x105, script: 0x4b, flags: 0x0},
-	{region: 0x12d, script: 0x4b, flags: 0x0},
-	{region: 0xa0, script: 0x3f, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x7e, script: 0x4b, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0xa2, script: 0x4b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0xaf, flags: 0x0},
-	{region: 0x12d, script: 0x4b, flags: 0x0},
-	{region: 0x9c, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x9c, script: 0x4b, flags: 0x0},
-	{region: 0x79, script: 0x4b, flags: 0x0},
-	{region: 0x48, script: 0x4b, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0x34, script: 0xe, flags: 0x0},
+	{region: 0x4d, script: 0x4f, flags: 0x0},
+	{region: 0x70, script: 0x4f, flags: 0x0},
+	{region: 0x4d, script: 0x4f, flags: 0x0},
+	{region: 0x9a, script: 0x5, flags: 0x0},
+	{region: 0x10a, script: 0x4f, flags: 0x0},
+	{region: 0x39, script: 0x4f, flags: 0x0},
+	{region: 0xcf, script: 0x4f, flags: 0x0},
+	{region: 0x102, script: 0x4f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x12d, script: 0x4f, flags: 0x0},
+	{region: 0x71, script: 0x4f, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0x12e, script: 0x1d, flags: 0x0},
+	{region: 0x107, script: 0x4f, flags: 0x0},
+	{region: 0x105, script: 0x4f, flags: 0x0},
+	{region: 0x12d, script: 0x4f, flags: 0x0},
+	{region: 0xa0, script: 0x41, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x7e, script: 0x4f, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0xa2, script: 0x4f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0xb5, flags: 0x0},
+	{region: 0x12d, script: 0x4f, flags: 0x0},
+	{region: 0x9c, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x9c, script: 0x4f, flags: 0x0},
+	{region: 0x79, script: 0x4f, flags: 0x0},
+	{region: 0x48, script: 0x4f, flags: 0x0},
 	{region: 0x32, script: 0x4, flags: 0x1},
-	{region: 0x9c, script: 0x4b, flags: 0x0},
-	{region: 0xd8, script: 0x4b, flags: 0x0},
-	{region: 0x4e, script: 0x4b, flags: 0x0},
-	{region: 0xcf, script: 0x4b, flags: 0x0},
-	{region: 0xcd, script: 0x4b, flags: 0x0},
-	{region: 0xc1, script: 0x4b, flags: 0x0},
-	{region: 0x4b, script: 0x4b, flags: 0x0},
-	{region: 0x94, script: 0x68, flags: 0x0},
-	{region: 0xb4, script: 0x4b, flags: 0x0},
+	{region: 0x9c, script: 0x4f, flags: 0x0},
+	{region: 0xd8, script: 0x4f, flags: 0x0},
+	{region: 0x4e, script: 0x4f, flags: 0x0},
+	{region: 0xcf, script: 0x4f, flags: 0x0},
+	{region: 0xcd, script: 0x4f, flags: 0x0},
+	{region: 0xc1, script: 0x4f, flags: 0x0},
+	{region: 0x4b, script: 0x4f, flags: 0x0},
+	{region: 0x94, script: 0x6d, flags: 0x0},
+	{region: 0xb4, script: 0x4f, flags: 0x0},
 	{region: 0x0, script: 0x0, flags: 0x0},
-	{region: 0xb8, script: 0xc6, flags: 0x0},
-	{region: 0xc2, script: 0x62, flags: 0x0},
-	{region: 0xb1, script: 0xb5, flags: 0x0},
-	{region: 0x6e, script: 0x4b, flags: 0x0},
-	{region: 0x10f, script: 0x4b, flags: 0x0},
-	{region: 0xe6, script: 0x4, flags: 0x0},
-	{region: 0x10d, script: 0x4b, flags: 0x0},
-	{region: 0xe7, script: 0x4b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x13f, script: 0x4b, flags: 0x0},
-	{region: 0x10a, script: 0x4b, flags: 0x0},
-	{region: 0x10a, script: 0x4b, flags: 0x0},
-	{region: 0x70, script: 0x4b, flags: 0x0},
-	{region: 0x95, script: 0xac, flags: 0x0},
-	{region: 0x70, script: 0x4b, flags: 0x0},
-	{region: 0x161, script: 0x4b, flags: 0x0},
-	{region: 0xc1, script: 0x4b, flags: 0x0},
-	{region: 0x113, script: 0x4b, flags: 0x0},
-	{region: 0x121, script: 0xc9, flags: 0x0},
-	{region: 0x26, script: 0x4b, flags: 0x0},
+	{region: 0xb8, script: 0xcc, flags: 0x0},
+	{region: 0xc2, script: 0x67, flags: 0x0},
+	{region: 0xb1, script: 0xbb, flags: 0x0},
+	{region: 0x6e, script: 0x4f, flags: 0x0},
+	{region: 0x10f, script: 0x4f, flags: 0x0},
+	{region: 0xe6, script: 0x5, flags: 0x0},
+	{region: 0x10d, script: 0x4f, flags: 0x0},
+	{region: 0xe7, script: 0x4f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x13f, script: 0x4f, flags: 0x0},
+	{region: 0x10a, script: 0x4f, flags: 0x0},
+	{region: 0x10a, script: 0x4f, flags: 0x0},
+	{region: 0x70, script: 0x4f, flags: 0x0},
+	{region: 0x95, script: 0xb2, flags: 0x0},
+	{region: 0x70, script: 0x4f, flags: 0x0},
+	{region: 0x161, script: 0x4f, flags: 0x0},
+	{region: 0xc1, script: 0x4f, flags: 0x0},
+	{region: 0x113, script: 0x4f, flags: 0x0},
+	{region: 0x121, script: 0xcf, flags: 0x0},
+	{region: 0x26, script: 0x4f, flags: 0x0},
 	{region: 0x36, script: 0x5, flags: 0x1},
-	{region: 0x97, script: 0xb6, flags: 0x0},
-	{region: 0x114, script: 0x4b, flags: 0x0},
-	{region: 0x112, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x15e, script: 0x4b, flags: 0x0},
-	{region: 0x6c, script: 0x4b, flags: 0x0},
-	{region: 0x15e, script: 0x4b, flags: 0x0},
-	{region: 0x5f, script: 0x4b, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x12d, script: 0x4b, flags: 0x0},
-	{region: 0x82, script: 0x4b, flags: 0x0},
-	{region: 0x10a, script: 0x4b, flags: 0x0},
-	{region: 0x12d, script: 0x4b, flags: 0x0},
-	{region: 0x15c, script: 0x4, flags: 0x0},
-	{region: 0x4a, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x93, script: 0x4b, flags: 0x0},
-	{region: 0x34, script: 0xc, flags: 0x0},
-	{region: 0x99, script: 0xb9, flags: 0x0},
-	{region: 0xe7, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0xc1, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x43, flags: 0x0},
-	{region: 0x52, script: 0xbf, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0x97, script: 0xc4, flags: 0x0},
-	{region: 0x110, script: 0x4b, flags: 0x0},
-	{region: 0x12f, script: 0x4b, flags: 0x0},
-	{region: 0x124, script: 0x4b, flags: 0x0},
+	{region: 0x97, script: 0xbc, flags: 0x0},
+	{region: 0x114, script: 0x4f, flags: 0x0},
+	{region: 0x112, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x15e, script: 0x4f, flags: 0x0},
+	{region: 0x6c, script: 0x4f, flags: 0x0},
+	{region: 0x15e, script: 0x4f, flags: 0x0},
+	{region: 0x5f, script: 0x4f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x12d, script: 0x4f, flags: 0x0},
+	{region: 0x82, script: 0x4f, flags: 0x0},
+	{region: 0x10a, script: 0x4f, flags: 0x0},
+	{region: 0x12d, script: 0x4f, flags: 0x0},
+	{region: 0x15c, script: 0x5, flags: 0x0},
+	{region: 0x4a, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x93, script: 0x4f, flags: 0x0},
+	{region: 0x34, script: 0xe, flags: 0x0},
+	{region: 0x99, script: 0xbf, flags: 0x0},
+	{region: 0xe7, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0xc7, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x47, flags: 0x0},
+	{region: 0x52, script: 0xc5, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0x97, script: 0xca, flags: 0x0},
+	{region: 0x110, script: 0x4f, flags: 0x0},
+	{region: 0x12f, script: 0x4f, flags: 0x0},
+	{region: 0x124, script: 0x4f, flags: 0x0},
 	{region: 0x3b, script: 0x3, flags: 0x1},
-	{region: 0x121, script: 0xc9, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0x6e, script: 0x24, flags: 0x0},
-	{region: 0x6c, script: 0x24, flags: 0x0},
-	{region: 0xd4, script: 0x4b, flags: 0x0},
-	{region: 0x125, script: 0x4b, flags: 0x0},
-	{region: 0x123, script: 0x4b, flags: 0x0},
-	{region: 0x31, script: 0x4b, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
-	{region: 0x31, script: 0x4b, flags: 0x0},
-	{region: 0xd2, script: 0x4b, flags: 0x0},
-	{region: 0x15e, script: 0x4b, flags: 0x0},
-	{region: 0x127, script: 0x4b, flags: 0x0},
-	{region: 0xe4, script: 0x4b, flags: 0x0},
-	{region: 0x129, script: 0x4b, flags: 0x0},
-	{region: 0x129, script: 0x4b, flags: 0x0},
-	{region: 0x12c, script: 0x4b, flags: 0x0},
-	{region: 0x15e, script: 0x4b, flags: 0x0},
-	{region: 0x85, script: 0x2a, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
-	{region: 0x42, script: 0xca, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x12f, script: 0x4b, flags: 0x0},
-	{region: 0x121, script: 0xc9, flags: 0x0},
-	{region: 0x31, script: 0x4b, flags: 0x0},
-	{region: 0xcc, script: 0x4b, flags: 0x0},
-	{region: 0x12b, script: 0x4b, flags: 0x0},
+	{region: 0x121, script: 0xcf, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0x6e, script: 0x26, flags: 0x0},
+	{region: 0x6c, script: 0x26, flags: 0x0},
+	{region: 0xd4, script: 0x4f, flags: 0x0},
+	{region: 0x125, script: 0x4f, flags: 0x0},
+	{region: 0x123, script: 0x4f, flags: 0x0},
+	{region: 0x31, script: 0x4f, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
+	{region: 0x31, script: 0x4f, flags: 0x0},
+	{region: 0xd2, script: 0x4f, flags: 0x0},
+	{region: 0x15e, script: 0x4f, flags: 0x0},
+	{region: 0x127, script: 0x4f, flags: 0x0},
+	{region: 0xcc, script: 0x4f, flags: 0x0},
+	{region: 0xe4, script: 0x4f, flags: 0x0},
+	{region: 0x129, script: 0x4f, flags: 0x0},
+	{region: 0x129, script: 0x4f, flags: 0x0},
+	{region: 0x12c, script: 0x4f, flags: 0x0},
+	{region: 0x15e, script: 0x4f, flags: 0x0},
+	{region: 0x85, script: 0x2c, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
+	{region: 0x42, script: 0xd0, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0x12f, script: 0x4f, flags: 0x0},
+	{region: 0x121, script: 0xcf, flags: 0x0},
+	{region: 0x31, script: 0x4f, flags: 0x0},
+	{region: 0xcc, script: 0x4f, flags: 0x0},
+	{region: 0x12b, script: 0x4f, flags: 0x0},
 	{region: 0x0, script: 0x0, flags: 0x0},
-	{region: 0xd2, script: 0x4b, flags: 0x0},
-	{region: 0xe3, script: 0x4b, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0xb8, script: 0x4b, flags: 0x0},
-	{region: 0x104, script: 0x1b, flags: 0x0},
+	{region: 0xd2, script: 0x4f, flags: 0x0},
+	{region: 0xe3, script: 0x4f, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0xb8, script: 0x4f, flags: 0x0},
+	{region: 0x104, script: 0x1d, flags: 0x0},
 	{region: 0x3e, script: 0x4, flags: 0x1},
-	{region: 0x11a, script: 0xcc, flags: 0x0},
-	{region: 0x12e, script: 0x1b, flags: 0x0},
-	{region: 0x73, script: 0x4b, flags: 0x0},
-	{region: 0x29, script: 0x4b, flags: 0x0},
+	{region: 0x11a, script: 0xd2, flags: 0x0},
+	{region: 0x12e, script: 0x1d, flags: 0x0},
+	{region: 0x73, script: 0x4f, flags: 0x0},
+	{region: 0x29, script: 0x4f, flags: 0x0},
 	{region: 0x0, script: 0x0, flags: 0x0},
 	{region: 0x42, script: 0x3, flags: 0x1},
-	{region: 0x97, script: 0xc, flags: 0x0},
-	{region: 0xe6, script: 0x4, flags: 0x0},
+	{region: 0x97, script: 0xe, flags: 0x0},
+	{region: 0xe6, script: 0x5, flags: 0x0},
 	{region: 0x45, script: 0x4, flags: 0x1},
-	{region: 0xb2, script: 0xcd, flags: 0x0},
-	{region: 0x15e, script: 0x4b, flags: 0x0},
-	{region: 0x9c, script: 0x4b, flags: 0x0},
-	{region: 0x104, script: 0x4b, flags: 0x0},
-	{region: 0x13b, script: 0x4b, flags: 0x0},
-	{region: 0x119, script: 0x4b, flags: 0x0},
-	{region: 0x35, script: 0x4b, flags: 0x0},
-	{region: 0x5f, script: 0x4b, flags: 0x0},
-	{region: 0xcf, script: 0x4b, flags: 0x0},
-	{region: 0x1, script: 0x4b, flags: 0x0},
-	{region: 0x69, script: 0x4b, flags: 0x0},
-	{region: 0x12d, script: 0x4b, flags: 0x0},
-	{region: 0x35, script: 0x4b, flags: 0x0},
-	{region: 0x4d, script: 0x4b, flags: 0x0},
-	{region: 0x6e, script: 0x24, flags: 0x0},
-	{region: 0xe5, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0xc4, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x13d, script: 0x4b, flags: 0x0},
-	{region: 0x112, script: 0x4b, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x52, script: 0x30, flags: 0x0},
-	{region: 0x40, script: 0x4b, flags: 0x0},
-	{region: 0x129, script: 0x15, flags: 0x0},
-	{region: 0x15e, script: 0x4b, flags: 0x0},
-	{region: 0x129, script: 0x52, flags: 0x0},
-	{region: 0x129, script: 0x53, flags: 0x0},
-	{region: 0x7b, script: 0x26, flags: 0x0},
-	{region: 0x52, script: 0x56, flags: 0x0},
-	{region: 0x109, script: 0x59, flags: 0x0},
-	{region: 0x106, script: 0x63, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x0},
-	{region: 0x12f, script: 0x4b, flags: 0x0},
-	{region: 0x9a, script: 0x76, flags: 0x0},
-	{region: 0x15b, script: 0xae, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0xcf, script: 0x4b, flags: 0x0},
-	{region: 0x73, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4b, flags: 0x0},
-	{region: 0x1, script: 0x33, flags: 0x0},
-	{region: 0xd4, script: 0x4b, flags: 0x0},
-	{region: 0x40, script: 0x4b, flags: 0x0},
-	{region: 0xcd, script: 0x4b, flags: 0x0},
-	{region: 0x52, script: 0x4b, flags: 0x0},
+	{region: 0xb2, script: 0xd3, flags: 0x0},
+	{region: 0x15e, script: 0x4f, flags: 0x0},
+	{region: 0x9c, script: 0x4f, flags: 0x0},
+	{region: 0x104, script: 0x4f, flags: 0x0},
+	{region: 0x13b, script: 0x4f, flags: 0x0},
+	{region: 0x119, script: 0x4f, flags: 0x0},
+	{region: 0x35, script: 0x4f, flags: 0x0},
+	{region: 0x5f, script: 0x4f, flags: 0x0},
+	{region: 0xcf, script: 0x4f, flags: 0x0},
+	{region: 0x1, script: 0x4f, flags: 0x0},
+	{region: 0x104, script: 0x4f, flags: 0x0},
+	{region: 0x69, script: 0x4f, flags: 0x0},
+	{region: 0x12d, script: 0x4f, flags: 0x0},
+	{region: 0x35, script: 0x4f, flags: 0x0},
+	{region: 0x4d, script: 0x4f, flags: 0x0},
+	{region: 0x6e, script: 0x26, flags: 0x0},
+	{region: 0xe5, script: 0x4f, flags: 0x0},
+	{region: 0x2e, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0xca, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x13d, script: 0x4f, flags: 0x0},
+	{region: 0x112, script: 0x4f, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x52, script: 0x32, flags: 0x0},
+	{region: 0x40, script: 0x4f, flags: 0x0},
+	{region: 0x129, script: 0x17, flags: 0x0},
+	{region: 0x15e, script: 0x4f, flags: 0x0},
+	{region: 0x129, script: 0x56, flags: 0x0},
+	{region: 0x129, script: 0x57, flags: 0x0},
+	{region: 0x7b, script: 0x28, flags: 0x0},
+	{region: 0x52, script: 0x5a, flags: 0x0},
+	{region: 0x109, script: 0x5e, flags: 0x0},
+	{region: 0x106, script: 0x68, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x0},
+	{region: 0x12f, script: 0x4f, flags: 0x0},
+	{region: 0x9a, script: 0x7c, flags: 0x0},
+	{region: 0x15b, script: 0xb4, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0xcf, script: 0x4f, flags: 0x0},
+	{region: 0x73, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x4f, flags: 0x0},
+	{region: 0x1, script: 0x35, flags: 0x0},
+	{region: 0xd4, script: 0x4f, flags: 0x0},
+	{region: 0x40, script: 0x4f, flags: 0x0},
+	{region: 0xcd, script: 0x4f, flags: 0x0},
+	{region: 0x52, script: 0x4f, flags: 0x0},
 	{region: 0x0, script: 0x0, flags: 0x0},
-	{region: 0xa6, script: 0x4, flags: 0x0},
-	{region: 0xd7, script: 0x4b, flags: 0x0},
-	{region: 0xb8, script: 0xc6, flags: 0x0},
+	{region: 0xa6, script: 0x5, flags: 0x0},
+	{region: 0xd7, script: 0x4f, flags: 0x0},
+	{region: 0xb8, script: 0xcc, flags: 0x0},
 	{region: 0x49, script: 0x13, flags: 0x1},
-	{region: 0xce, script: 0x4b, flags: 0x0},
-	{region: 0x15e, script: 0x4b, flags: 0x0},
+	{region: 0xce, script: 0x4f, flags: 0x0},
+	{region: 0x15e, script: 0x4f, flags: 0x0},
 	{region: 0x0, script: 0x0, flags: 0x0},
-	{region: 0x129, script: 0x4b, flags: 0x0},
+	{region: 0x129, script: 0x4f, flags: 0x0},
 }
 
 // likelyLangList holds lists info associated with likelyLang.
 // Size: 368 bytes, 92 elements
 var likelyLangList = [92]likelyScriptRegion{
-	{region: 0x9a, script: 0x5, flags: 0x0},
-	{region: 0x9f, script: 0x64, flags: 0x2},
-	{region: 0x11a, script: 0x6d, flags: 0x2},
-	{region: 0x31, script: 0x4b, flags: 0x0},
-	{region: 0x9a, script: 0x4, flags: 0x4},
-	{region: 0x104, script: 0x1b, flags: 0x4},
-	{region: 0x9a, script: 0x4, flags: 0x2},
-	{region: 0x97, script: 0xc, flags: 0x0},
-	{region: 0x34, script: 0x13, flags: 0x2},
-	{region: 0x104, script: 0x1b, flags: 0x0},
-	{region: 0x37, script: 0x27, flags: 0x2},
-	{region: 0x132, script: 0x4b, flags: 0x0},
-	{region: 0x79, script: 0xb1, flags: 0x2},
-	{region: 0x5c, script: 0x1a, flags: 0x0},
-	{region: 0x85, script: 0x4f, flags: 0x2},
-	{region: 0xd4, script: 0x4b, flags: 0x0},
-	{region: 0x51, script: 0x4, flags: 0x4},
-	{region: 0x109, script: 0x4, flags: 0x4},
-	{region: 0xac, script: 0x1b, flags: 0x0},
-	{region: 0x23, script: 0x4, flags: 0x4},
-	{region: 0x52, script: 0x4, flags: 0x4},
-	{region: 0x9a, script: 0x4, flags: 0x4},
-	{region: 0xc3, script: 0x4, flags: 0x4},
-	{region: 0x52, script: 0x4, flags: 0x2},
-	{region: 0x129, script: 0x4b, flags: 0x0},
-	{region: 0xae, script: 0x4, flags: 0x4},
-	{region: 0x99, script: 0x4, flags: 0x2},
-	{region: 0xa3, script: 0x1b, flags: 0x0},
-	{region: 0x52, script: 0x4, flags: 0x4},
-	{region: 0x129, script: 0x4b, flags: 0x4},
-	{region: 0x52, script: 0x4, flags: 0x2},
-	{region: 0x129, script: 0x4b, flags: 0x2},
-	{region: 0xd9, script: 0x1d, flags: 0x0},
-	{region: 0x97, script: 0x4d, flags: 0x2},
-	{region: 0x81, script: 0x4b, flags: 0x0},
-	{region: 0x82, script: 0x66, flags: 0x4},
-	{region: 0x82, script: 0x66, flags: 0x2},
-	{region: 0xc3, script: 0x1b, flags: 0x0},
-	{region: 0x52, script: 0x5d, flags: 0x4},
-	{region: 0x52, script: 0x5d, flags: 0x2},
-	{region: 0xce, script: 0x4b, flags: 0x0},
-	{region: 0x49, script: 0x4, flags: 0x4},
-	{region: 0x93, script: 0x4, flags: 0x4},
-	{region: 0x97, script: 0x2c, flags: 0x0},
-	{region: 0xe6, script: 0x4, flags: 0x4},
-	{region: 0xe6, script: 0x4, flags: 0x2},
-	{region: 0x9a, script: 0x71, flags: 0x0},
-	{region: 0x52, script: 0x72, flags: 0x2},
-	{region: 0xb8, script: 0xc6, flags: 0x0},
-	{region: 0xd7, script: 0x4b, flags: 0x4},
-	{region: 0xe6, script: 0x4, flags: 0x0},
-	{region: 0x97, script: 0x1d, flags: 0x2},
-	{region: 0x97, script: 0x42, flags: 0x2},
-	{region: 0x97, script: 0xb4, flags: 0x2},
-	{region: 0x103, script: 0x1b, flags: 0x0},
-	{region: 0xbb, script: 0x4b, flags: 0x4},
-	{region: 0x102, script: 0x4b, flags: 0x4},
-	{region: 0x104, script: 0x4b, flags: 0x4},
-	{region: 0x129, script: 0x4b, flags: 0x4},
-	{region: 0x122, script: 0x1b, flags: 0x0},
-	{region: 0xe6, script: 0x4, flags: 0x4},
-	{region: 0xe6, script: 0x4, flags: 0x2},
-	{region: 0x52, script: 0x4, flags: 0x0},
-	{region: 0xac, script: 0x1b, flags: 0x4},
-	{region: 0xc3, script: 0x1b, flags: 0x4},
-	{region: 0xac, script: 0x1b, flags: 0x2},
-	{region: 0x97, script: 0xc, flags: 0x0},
-	{region: 0xd9, script: 0x1d, flags: 0x4},
-	{region: 0xd9, script: 0x1d, flags: 0x2},
-	{region: 0x134, script: 0x4b, flags: 0x0},
-	{region: 0x23, script: 0x4, flags: 0x4},
-	{region: 0x52, script: 0x1b, flags: 0x4},
-	{region: 0x23, script: 0x4, flags: 0x2},
-	{region: 0x52, script: 0x30, flags: 0x0},
-	{region: 0x2e, script: 0x31, flags: 0x4},
-	{region: 0x3d, script: 0x31, flags: 0x4},
-	{region: 0x79, script: 0x31, flags: 0x4},
-	{region: 0x7c, script: 0x31, flags: 0x4},
-	{region: 0x8b, script: 0x31, flags: 0x4},
-	{region: 0x93, script: 0x31, flags: 0x4},
-	{region: 0xc4, script: 0x31, flags: 0x4},
-	{region: 0xce, script: 0x31, flags: 0x4},
-	{region: 0xe0, script: 0x31, flags: 0x4},
-	{region: 0xe3, script: 0x31, flags: 0x4},
-	{region: 0xe5, script: 0x31, flags: 0x4},
-	{region: 0x114, script: 0x31, flags: 0x4},
-	{region: 0x121, script: 0x31, flags: 0x4},
-	{region: 0x12c, script: 0x31, flags: 0x4},
-	{region: 0x132, script: 0x31, flags: 0x4},
-	{region: 0x13b, script: 0x31, flags: 0x4},
-	{region: 0x12c, script: 0xe, flags: 0x2},
-	{region: 0x12c, script: 0x31, flags: 0x2},
+	{region: 0x9a, script: 0x7, flags: 0x0},
+	{region: 0x9f, script: 0x69, flags: 0x2},
+	{region: 0x11a, script: 0x73, flags: 0x2},
+	{region: 0x31, script: 0x4f, flags: 0x0},
+	{region: 0x9a, script: 0x5, flags: 0x4},
+	{region: 0x104, script: 0x1d, flags: 0x4},
+	{region: 0x9a, script: 0x5, flags: 0x2},
+	{region: 0x97, script: 0xe, flags: 0x0},
+	{region: 0x34, script: 0x15, flags: 0x2},
+	{region: 0x104, script: 0x1d, flags: 0x0},
+	{region: 0x37, script: 0x29, flags: 0x2},
+	{region: 0x132, script: 0x4f, flags: 0x0},
+	{region: 0x79, script: 0xb7, flags: 0x2},
+	{region: 0x5c, script: 0x1c, flags: 0x0},
+	{region: 0x85, script: 0x53, flags: 0x2},
+	{region: 0xd4, script: 0x4f, flags: 0x0},
+	{region: 0x51, script: 0x5, flags: 0x4},
+	{region: 0x109, script: 0x5, flags: 0x4},
+	{region: 0xac, script: 0x1d, flags: 0x0},
+	{region: 0x23, script: 0x5, flags: 0x4},
+	{region: 0x52, script: 0x5, flags: 0x4},
+	{region: 0x9a, script: 0x5, flags: 0x4},
+	{region: 0xc3, script: 0x5, flags: 0x4},
+	{region: 0x52, script: 0x5, flags: 0x2},
+	{region: 0x129, script: 0x4f, flags: 0x0},
+	{region: 0xae, script: 0x5, flags: 0x4},
+	{region: 0x99, script: 0x5, flags: 0x2},
+	{region: 0xa3, script: 0x1d, flags: 0x0},
+	{region: 0x52, script: 0x5, flags: 0x4},
+	{region: 0x129, script: 0x4f, flags: 0x4},
+	{region: 0x52, script: 0x5, flags: 0x2},
+	{region: 0x129, script: 0x4f, flags: 0x2},
+	{region: 0xd9, script: 0x1f, flags: 0x0},
+	{region: 0x97, script: 0x51, flags: 0x2},
+	{region: 0x81, script: 0x4f, flags: 0x0},
+	{region: 0x82, script: 0x6b, flags: 0x4},
+	{region: 0x82, script: 0x6b, flags: 0x2},
+	{region: 0xc3, script: 0x1d, flags: 0x0},
+	{region: 0x52, script: 0x62, flags: 0x4},
+	{region: 0x52, script: 0x62, flags: 0x2},
+	{region: 0xce, script: 0x4f, flags: 0x0},
+	{region: 0x49, script: 0x5, flags: 0x4},
+	{region: 0x93, script: 0x5, flags: 0x4},
+	{region: 0x97, script: 0x2e, flags: 0x0},
+	{region: 0xe6, script: 0x5, flags: 0x4},
+	{region: 0xe6, script: 0x5, flags: 0x2},
+	{region: 0x9a, script: 0x77, flags: 0x0},
+	{region: 0x52, script: 0x78, flags: 0x2},
+	{region: 0xb8, script: 0xcc, flags: 0x0},
+	{region: 0xd7, script: 0x4f, flags: 0x4},
+	{region: 0xe6, script: 0x5, flags: 0x0},
+	{region: 0x97, script: 0x1f, flags: 0x2},
+	{region: 0x97, script: 0x44, flags: 0x2},
+	{region: 0x97, script: 0xba, flags: 0x2},
+	{region: 0x103, script: 0x1d, flags: 0x0},
+	{region: 0xbb, script: 0x4f, flags: 0x4},
+	{region: 0x102, script: 0x4f, flags: 0x4},
+	{region: 0x104, script: 0x4f, flags: 0x4},
+	{region: 0x129, script: 0x4f, flags: 0x4},
+	{region: 0x122, script: 0x1d, flags: 0x0},
+	{region: 0xe6, script: 0x5, flags: 0x4},
+	{region: 0xe6, script: 0x5, flags: 0x2},
+	{region: 0x52, script: 0x5, flags: 0x0},
+	{region: 0xac, script: 0x1d, flags: 0x4},
+	{region: 0xc3, script: 0x1d, flags: 0x4},
+	{region: 0xac, script: 0x1d, flags: 0x2},
+	{region: 0x97, script: 0xe, flags: 0x0},
+	{region: 0xd9, script: 0x1f, flags: 0x4},
+	{region: 0xd9, script: 0x1f, flags: 0x2},
+	{region: 0x134, script: 0x4f, flags: 0x0},
+	{region: 0x23, script: 0x5, flags: 0x4},
+	{region: 0x52, script: 0x1d, flags: 0x4},
+	{region: 0x23, script: 0x5, flags: 0x2},
+	{region: 0x52, script: 0x32, flags: 0x0},
+	{region: 0x2e, script: 0x33, flags: 0x4},
+	{region: 0x3d, script: 0x33, flags: 0x4},
+	{region: 0x79, script: 0x33, flags: 0x4},
+	{region: 0x7c, script: 0x33, flags: 0x4},
+	{region: 0x8b, script: 0x33, flags: 0x4},
+	{region: 0x93, script: 0x33, flags: 0x4},
+	{region: 0xc4, script: 0x33, flags: 0x4},
+	{region: 0xce, script: 0x33, flags: 0x4},
+	{region: 0xe0, script: 0x33, flags: 0x4},
+	{region: 0xe3, script: 0x33, flags: 0x4},
+	{region: 0xe5, script: 0x33, flags: 0x4},
+	{region: 0x114, script: 0x33, flags: 0x4},
+	{region: 0x121, script: 0x33, flags: 0x4},
+	{region: 0x12c, script: 0x33, flags: 0x4},
+	{region: 0x132, script: 0x33, flags: 0x4},
+	{region: 0x13b, script: 0x33, flags: 0x4},
+	{region: 0x12c, script: 0x10, flags: 0x2},
+	{region: 0x12c, script: 0x33, flags: 0x2},
 }
 
 type likelyLangScript struct {
@@ -2032,215 +2072,215 @@
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x5d, script: 0x4b, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
+	{lang: 0x5e, script: 0x4f, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
 	{lang: 0x0, script: 0x2, flags: 0x1},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x2, script: 0x2, flags: 0x1},
 	{lang: 0x4, script: 0x2, flags: 0x1},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x1db, script: 0x4b, flags: 0x0},
-	{lang: 0x0, script: 0x4b, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0x21a, script: 0x4b, flags: 0x0},
-	{lang: 0x7f, script: 0x4b, flags: 0x0},
+	{lang: 0x1e3, script: 0x4f, flags: 0x0},
+	{lang: 0x0, script: 0x4f, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
+	{lang: 0x222, script: 0x4f, flags: 0x0},
+	{lang: 0x82, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x1ab, script: 0x4b, flags: 0x0},
-	{lang: 0x231, script: 0x4b, flags: 0x0},
-	{lang: 0x21, script: 0x4b, flags: 0x0},
+	{lang: 0x1b2, script: 0x4f, flags: 0x0},
+	{lang: 0x239, script: 0x4f, flags: 0x0},
+	{lang: 0x22, script: 0x4f, flags: 0x0},
 	{lang: 0x6, script: 0x2, flags: 0x1},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x47, script: 0xc, flags: 0x0},
-	{lang: 0x1ab, script: 0x4b, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
+	{lang: 0x48, script: 0xe, flags: 0x0},
+	{lang: 0x1b2, script: 0x4f, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x36, script: 0x1d, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
+	{lang: 0x1f5, script: 0x4f, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x190, script: 0x4f, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
+	{lang: 0x1cf, script: 0x4f, flags: 0x0},
+	{lang: 0x1e3, script: 0x4f, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x8, script: 0x2, flags: 0x1},
-	{lang: 0x13, script: 0x4, flags: 0x0},
-	{lang: 0x1ed, script: 0x4b, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x18a, script: 0x4b, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0x1c7, script: 0x4b, flags: 0x0},
-	{lang: 0x1db, script: 0x4b, flags: 0x0},
+	{lang: 0x0, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0xa, script: 0x2, flags: 0x1},
+	{lang: 0x2e, script: 0x1d, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x4b, flags: 0x0},
+	{lang: 0x2a8, script: 0x35, flags: 0x2},
+	{lang: 0x190, script: 0x5, flags: 0x2},
+	{lang: 0x23a, script: 0x4f, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x82, script: 0x4f, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x2d, script: 0x1b, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x29d, script: 0x33, flags: 0x2},
-	{lang: 0x18a, script: 0x4, flags: 0x2},
-	{lang: 0x232, script: 0x4b, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x7f, script: 0x4b, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0xc, script: 0x4, flags: 0x1},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0x0, script: 0x4b, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0xa, script: 0x4, flags: 0x1},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
+	{lang: 0x0, script: 0x4f, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0x1db, script: 0x4b, flags: 0x0},
-	{lang: 0x1c7, script: 0x4b, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
+	{lang: 0x1e3, script: 0x4f, flags: 0x0},
+	{lang: 0x1cf, script: 0x4f, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0xe, script: 0x2, flags: 0x1},
+	{lang: 0x76, script: 0x4f, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x82, script: 0x4f, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x1, script: 0x4f, flags: 0x0},
+	{lang: 0x7d, script: 0x4f, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x10, script: 0x2, flags: 0x1},
-	{lang: 0x74, script: 0x4b, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x7f, script: 0x4b, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x1, script: 0x4b, flags: 0x0},
-	{lang: 0x7b, script: 0x4b, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
+	{lang: 0x9b, script: 0x4f, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
+	{lang: 0x252, script: 0x26, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
 	{lang: 0x12, script: 0x2, flags: 0x1},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0x98, script: 0x4b, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
-	{lang: 0x24a, script: 0x24, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0xa4, script: 0x4f, flags: 0x0},
+	{lang: 0xdb, script: 0x1f, flags: 0x2},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0xa8, script: 0x4f, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
 	{lang: 0x14, script: 0x2, flags: 0x1},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0xa1, script: 0x4b, flags: 0x0},
-	{lang: 0xd7, script: 0x1d, flags: 0x2},
+	{lang: 0x16, script: 0x3, flags: 0x1},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x64, script: 0x4b, flags: 0x0},
-	{lang: 0xa5, script: 0x4b, flags: 0x0},
+	{lang: 0xc, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
+	{lang: 0x128, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x16, script: 0x2, flags: 0x1},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
+	{lang: 0x19, script: 0x2, flags: 0x1},
+	{lang: 0x0, script: 0x4f, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x18, script: 0x3, flags: 0x1},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
+	{lang: 0x1e3, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0xb, script: 0x4b, flags: 0x0},
+	{lang: 0x2b1, script: 0x33, flags: 0x0},
+	{lang: 0x0, script: 0x4f, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
+	{lang: 0xe6, script: 0x4f, flags: 0x0},
+	{lang: 0xe9, script: 0x4f, flags: 0x0},
+	{lang: 0xea, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x122, script: 0x4b, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
+	{lang: 0x1b, script: 0x2, flags: 0x1},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0x1b, script: 0x3, flags: 0x1},
-	{lang: 0x0, script: 0x4b, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
+	{lang: 0xd9, script: 0x35, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x1db, script: 0x4b, flags: 0x0},
+	{lang: 0x1d, script: 0x3, flags: 0x1},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x2a6, script: 0x31, flags: 0x0},
-	{lang: 0x0, script: 0x4b, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0xe2, script: 0x4b, flags: 0x0},
-	{lang: 0xe5, script: 0x4b, flags: 0x0},
-	{lang: 0xe6, script: 0x4b, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0x1e, script: 0x2, flags: 0x1},
-	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
 	{lang: 0x20, script: 0x2, flags: 0x1},
+	{lang: 0xfa, script: 0x4f, flags: 0x0},
+	{lang: 0xfb, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
+	{lang: 0xff, script: 0x3e, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x23a, script: 0x4f, flags: 0x0},
+	{lang: 0x144, script: 0x1d, flags: 0x0},
 	{lang: 0x22, script: 0x3, flags: 0x1},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
 	{lang: 0x25, script: 0x2, flags: 0x1},
-	{lang: 0xf5, script: 0x4b, flags: 0x0},
-	{lang: 0xf6, script: 0x4b, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x12d, script: 0x48, flags: 0x0},
+	{lang: 0x12d, script: 0x48, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x1fb, script: 0x1d, flags: 0x0},
+	{lang: 0x27, script: 0x2, flags: 0x1},
+	{lang: 0x14, script: 0x5, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x82, script: 0x4f, flags: 0x0},
+	{lang: 0x21b, script: 0xbb, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x234, script: 0x4f, flags: 0x0},
+	{lang: 0x160, script: 0x4f, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x167, script: 0x4f, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
+	{lang: 0x29, script: 0x2, flags: 0x1},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x2b, script: 0x2, flags: 0x1},
+	{lang: 0x22d, script: 0x4f, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x17a, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
-	{lang: 0xfa, script: 0x3c, flags: 0x0},
+	{lang: 0x2d, script: 0x2, flags: 0x1},
+	{lang: 0x46, script: 0x4f, flags: 0x0},
+	{lang: 0x2f, script: 0x2, flags: 0x1},
+	{lang: 0x31, script: 0x2, flags: 0x1},
+	{lang: 0x33, script: 0x2, flags: 0x1},
 	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x35, script: 0x2, flags: 0x1},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x13e, script: 0x1b, flags: 0x0},
-	{lang: 0x27, script: 0x3, flags: 0x1},
+	{lang: 0x191, script: 0x4f, flags: 0x0},
+	{lang: 0x37, script: 0x3, flags: 0x1},
+	{lang: 0x8c, script: 0xce, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x2a, script: 0x2, flags: 0x1},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
+	{lang: 0x190, script: 0x4f, flags: 0x0},
+	{lang: 0x1e3, script: 0x4f, flags: 0x0},
+	{lang: 0xa, script: 0x4f, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0xd5, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x127, script: 0x44, flags: 0x0},
-	{lang: 0x127, script: 0x44, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
+	{lang: 0xd5, script: 0x5, flags: 0x2},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x2c, script: 0x2, flags: 0x1},
-	{lang: 0x2e, script: 0x2, flags: 0x1},
-	{lang: 0x30, script: 0x2, flags: 0x1},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x7f, script: 0x4b, flags: 0x0},
-	{lang: 0x213, script: 0xb5, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x22c, script: 0x4b, flags: 0x0},
-	{lang: 0x15a, script: 0x4b, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x161, script: 0x4b, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
-	{lang: 0x32, script: 0x2, flags: 0x1},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x34, script: 0x2, flags: 0x1},
-	{lang: 0x225, script: 0x4b, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x174, script: 0x4b, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x36, script: 0x2, flags: 0x1},
-	{lang: 0x45, script: 0x4b, flags: 0x0},
-	{lang: 0x194, script: 0x62, flags: 0x0},
-	{lang: 0x38, script: 0x2, flags: 0x1},
-	{lang: 0x3a, script: 0x2, flags: 0x1},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x3c, script: 0x2, flags: 0x1},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x18b, script: 0x4b, flags: 0x0},
-	{lang: 0x3e, script: 0x3, flags: 0x1},
-	{lang: 0x89, script: 0xc8, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0x18a, script: 0x4b, flags: 0x0},
-	{lang: 0x1db, script: 0x4b, flags: 0x0},
-	{lang: 0x9, script: 0x4b, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0xd1, script: 0x4b, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0xd1, script: 0x4, flags: 0x2},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0x1ab, script: 0x4b, flags: 0x0},
-	{lang: 0x19d, script: 0x4b, flags: 0x0},
-	{lang: 0x1a2, script: 0x1d, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
+	{lang: 0x1b2, script: 0x4f, flags: 0x0},
+	{lang: 0x1a4, script: 0x4f, flags: 0x0},
+	{lang: 0x1a9, script: 0x1f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x256, script: 0x4b, flags: 0x0},
-	{lang: 0xa2, script: 0x4b, flags: 0x0},
-	{lang: 0x41, script: 0x3, flags: 0x1},
-	{lang: 0x44, script: 0x2, flags: 0x1},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x25f, script: 0x4f, flags: 0x0},
+	{lang: 0xa5, script: 0x4f, flags: 0x0},
+	{lang: 0x3a, script: 0x3, flags: 0x1},
+	{lang: 0x3d, script: 0x2, flags: 0x1},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
-	{lang: 0x1db, script: 0x4b, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
+	{lang: 0x1e3, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x1c8, script: 0x4b, flags: 0x0},
-	{lang: 0xc0, script: 0x4b, flags: 0x0},
+	{lang: 0x1d0, script: 0x4f, flags: 0x0},
+	{lang: 0xc4, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
@@ -2255,209 +2295,202 @@
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x46, script: 0x2, flags: 0x1},
-	{lang: 0x225, script: 0x1b, flags: 0x0},
-	{lang: 0x48, script: 0x2, flags: 0x1},
-	{lang: 0x1f6, script: 0x4b, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
+	{lang: 0x3f, script: 0x2, flags: 0x1},
+	{lang: 0x22d, script: 0x1d, flags: 0x0},
+	{lang: 0x41, script: 0x2, flags: 0x1},
+	{lang: 0x1fe, script: 0x4f, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
-	{lang: 0x4a, script: 0x2, flags: 0x1},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
+	{lang: 0x43, script: 0x2, flags: 0x1},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x217, script: 0x4b, flags: 0x0},
-	{lang: 0x19d, script: 0x4b, flags: 0x0},
+	{lang: 0x21f, script: 0x4f, flags: 0x0},
+	{lang: 0x1a4, script: 0x4f, flags: 0x0},
+	{lang: 0x45, script: 0x2, flags: 0x1},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0xfb, script: 0x4f, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x22a, script: 0x4f, flags: 0x0},
+	{lang: 0x1b2, script: 0x4f, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x1e3, script: 0x4f, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x47, script: 0x2, flags: 0x1},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x49, script: 0x3, flags: 0x1},
 	{lang: 0x4c, script: 0x2, flags: 0x1},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0xf6, script: 0x4b, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x222, script: 0x4b, flags: 0x0},
-	{lang: 0x1ab, script: 0x4b, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x1db, script: 0x4b, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x256, script: 0x4f, flags: 0x0},
+	{lang: 0x1e3, script: 0x4f, flags: 0x0},
+	{lang: 0x255, script: 0x4f, flags: 0x0},
 	{lang: 0x4e, script: 0x2, flags: 0x1},
+	{lang: 0x25d, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
 	{lang: 0x50, script: 0x3, flags: 0x1},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x26d, script: 0x4f, flags: 0x0},
 	{lang: 0x53, script: 0x2, flags: 0x1},
-	{lang: 0x24e, script: 0x4b, flags: 0x0},
-	{lang: 0x1db, script: 0x4b, flags: 0x0},
-	{lang: 0x24d, script: 0x4b, flags: 0x0},
-	{lang: 0x55, script: 0x2, flags: 0x1},
-	{lang: 0x255, script: 0x4b, flags: 0x0},
+	{lang: 0x23a, script: 0x4f, flags: 0x0},
+	{lang: 0x55, script: 0x3, flags: 0x1},
+	{lang: 0x23a, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x57, script: 0x3, flags: 0x1},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x264, script: 0x4b, flags: 0x0},
+	{lang: 0x2a8, script: 0x35, flags: 0x2},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
+	{lang: 0x27d, script: 0x4f, flags: 0x0},
+	{lang: 0xfb, script: 0x4f, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x99, script: 0x4f, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x282, script: 0x4f, flags: 0x0},
+	{lang: 0x3e, script: 0x4f, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x222, script: 0x4f, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x58, script: 0x2, flags: 0x1},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
 	{lang: 0x5a, script: 0x2, flags: 0x1},
-	{lang: 0x232, script: 0x4b, flags: 0x0},
-	{lang: 0x5c, script: 0x3, flags: 0x1},
-	{lang: 0x232, script: 0x4b, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x29d, script: 0x33, flags: 0x2},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0x274, script: 0x4b, flags: 0x0},
-	{lang: 0xf6, script: 0x4b, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x96, script: 0x4b, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x279, script: 0x4b, flags: 0x0},
-	{lang: 0x3d, script: 0x4b, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x21a, script: 0x4b, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x5f, script: 0x2, flags: 0x1},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
-	{lang: 0x61, script: 0x2, flags: 0x1},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
-	{lang: 0x0, script: 0x0, flags: 0x0},
+	{lang: 0x228, script: 0x4f, flags: 0x0},
 	{lang: 0x0, script: 0x0, flags: 0x0},
 }
 
 // likelyRegionList holds lists info associated with likelyRegion.
-// Size: 396 bytes, 99 elements
-var likelyRegionList = [99]likelyLangScript{
-	{lang: 0x9d, script: 0x4, flags: 0x0},
-	{lang: 0x24d, script: 0x4b, flags: 0x0},
-	{lang: 0x224, script: 0x4b, flags: 0x0},
-	{lang: 0x17d, script: 0x1b, flags: 0x0},
-	{lang: 0xe7, script: 0x6, flags: 0x0},
-	{lang: 0x136, script: 0x4b, flags: 0x0},
-	{lang: 0x50, script: 0x4b, flags: 0x0},
-	{lang: 0x225, script: 0x1b, flags: 0x0},
-	{lang: 0x35, script: 0x1b, flags: 0x0},
-	{lang: 0x257, script: 0x4b, flags: 0x0},
-	{lang: 0x8c, script: 0xca, flags: 0x0},
-	{lang: 0x1a2, script: 0x1d, flags: 0x0},
-	{lang: 0x2a6, script: 0x30, flags: 0x0},
-	{lang: 0x26b, script: 0x4, flags: 0x0},
-	{lang: 0x2a1, script: 0x4b, flags: 0x0},
-	{lang: 0x148, script: 0xc9, flags: 0x0},
-	{lang: 0x93, script: 0x2a, flags: 0x0},
-	{lang: 0x257, script: 0x4b, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0xf, script: 0x24, flags: 0x0},
-	{lang: 0x94, script: 0x4b, flags: 0x0},
-	{lang: 0x132, script: 0x4, flags: 0x2},
-	{lang: 0x29d, script: 0x33, flags: 0x2},
-	{lang: 0x103, script: 0x26, flags: 0x0},
-	{lang: 0x2, script: 0x1b, flags: 0x0},
-	{lang: 0x136, script: 0x4b, flags: 0x0},
-	{lang: 0x93, script: 0x2a, flags: 0x0},
-	{lang: 0x17d, script: 0x1b, flags: 0x0},
-	{lang: 0x257, script: 0x4b, flags: 0x0},
-	{lang: 0xeb, script: 0x4b, flags: 0x0},
-	{lang: 0x18a, script: 0x4, flags: 0x0},
-	{lang: 0xd5, script: 0x33, flags: 0x0},
-	{lang: 0x1ef, script: 0x4b, flags: 0x0},
-	{lang: 0xd6, script: 0x1d, flags: 0x0},
-	{lang: 0x273, script: 0x4, flags: 0x0},
-	{lang: 0x11a, script: 0x62, flags: 0x0},
-	{lang: 0x9d, script: 0x4, flags: 0x0},
-	{lang: 0x24d, script: 0x4b, flags: 0x0},
-	{lang: 0x124, script: 0x41, flags: 0x0},
-	{lang: 0x68, script: 0x4, flags: 0x0},
-	{lang: 0x10d, script: 0xc9, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x1f3, script: 0x1b, flags: 0x0},
-	{lang: 0x7f, script: 0x4b, flags: 0x0},
-	{lang: 0x156, script: 0x48, flags: 0x0},
-	{lang: 0x10d, script: 0xc9, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x1ef, script: 0x4b, flags: 0x0},
-	{lang: 0x26d, script: 0x1b, flags: 0x0},
-	{lang: 0x17d, script: 0x1b, flags: 0x0},
-	{lang: 0x224, script: 0x4b, flags: 0x0},
-	{lang: 0x17f, script: 0x1b, flags: 0x0},
-	{lang: 0x120, script: 0x4, flags: 0x0},
-	{lang: 0x2a6, script: 0x31, flags: 0x0},
-	{lang: 0x1db, script: 0x4b, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x173, script: 0x4b, flags: 0x0},
-	{lang: 0x273, script: 0x4, flags: 0x0},
-	{lang: 0x3c, script: 0x1d, flags: 0x0},
-	{lang: 0x273, script: 0x4, flags: 0x0},
-	{lang: 0x273, script: 0x4, flags: 0x0},
-	{lang: 0x54, script: 0x1d, flags: 0x0},
-	{lang: 0x1d3, script: 0x4b, flags: 0x0},
-	{lang: 0x2d, script: 0x1b, flags: 0x0},
-	{lang: 0x1ef, script: 0x4b, flags: 0x0},
-	{lang: 0x35, script: 0x1b, flags: 0x0},
-	{lang: 0x1f3, script: 0x1b, flags: 0x0},
-	{lang: 0x130, script: 0x4b, flags: 0x0},
-	{lang: 0x231, script: 0x4b, flags: 0x0},
-	{lang: 0x29d, script: 0x33, flags: 0x0},
-	{lang: 0x215, script: 0x4b, flags: 0x0},
-	{lang: 0x26d, script: 0x1b, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x246, script: 0xc9, flags: 0x0},
-	{lang: 0x172, script: 0x4, flags: 0x0},
-	{lang: 0x181, script: 0x62, flags: 0x0},
-	{lang: 0x245, script: 0x1b, flags: 0x0},
-	{lang: 0x9d, script: 0x4, flags: 0x0},
-	{lang: 0x13, script: 0x4, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x257, script: 0x4b, flags: 0x0},
-	{lang: 0x109, script: 0x1b, flags: 0x0},
-	{lang: 0x37, script: 0x2a, flags: 0x0},
-	{lang: 0x2a6, script: 0x31, flags: 0x0},
-	{lang: 0x259, script: 0x4b, flags: 0x0},
-	{lang: 0x26d, script: 0x1b, flags: 0x0},
-	{lang: 0x29d, script: 0x33, flags: 0x0},
-	{lang: 0x1d3, script: 0x4b, flags: 0x0},
-	{lang: 0x224, script: 0x4b, flags: 0x0},
-	{lang: 0x225, script: 0x1b, flags: 0x0},
-	{lang: 0xa7, script: 0x4b, flags: 0x0},
-	{lang: 0x233, script: 0x4, flags: 0x0},
+// Size: 368 bytes, 92 elements
+var likelyRegionList = [92]likelyLangScript{
+	{lang: 0xa0, script: 0x5, flags: 0x0},
+	{lang: 0x255, script: 0x4f, flags: 0x0},
+	{lang: 0x22c, script: 0x4f, flags: 0x0},
+	{lang: 0x183, script: 0x1d, flags: 0x0},
+	{lang: 0xeb, script: 0x8, flags: 0x0},
+	{lang: 0x13c, script: 0x4f, flags: 0x0},
+	{lang: 0x51, script: 0x4f, flags: 0x0},
+	{lang: 0x22d, script: 0x1d, flags: 0x0},
+	{lang: 0x8f, script: 0xd0, flags: 0x0},
+	{lang: 0x1a9, script: 0x1f, flags: 0x0},
+	{lang: 0x2b1, script: 0x32, flags: 0x0},
+	{lang: 0x274, script: 0x5, flags: 0x0},
+	{lang: 0x2ac, script: 0x4f, flags: 0x0},
+	{lang: 0x14e, script: 0xcf, flags: 0x0},
+	{lang: 0x96, script: 0x2c, flags: 0x0},
+	{lang: 0x260, script: 0x4f, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x10, script: 0x26, flags: 0x0},
+	{lang: 0x97, script: 0x4f, flags: 0x0},
+	{lang: 0x138, script: 0x5, flags: 0x2},
+	{lang: 0x2a8, script: 0x35, flags: 0x2},
+	{lang: 0x108, script: 0x28, flags: 0x0},
+	{lang: 0x2, script: 0x1d, flags: 0x0},
+	{lang: 0x13c, script: 0x4f, flags: 0x0},
+	{lang: 0x96, script: 0x2c, flags: 0x0},
+	{lang: 0x183, script: 0x1d, flags: 0x0},
+	{lang: 0xf0, script: 0x4f, flags: 0x0},
+	{lang: 0x190, script: 0x5, flags: 0x0},
+	{lang: 0xda, script: 0x1f, flags: 0x0},
+	{lang: 0x27c, script: 0x5, flags: 0x0},
+	{lang: 0x120, script: 0x67, flags: 0x0},
+	{lang: 0xa0, script: 0x5, flags: 0x0},
+	{lang: 0x255, script: 0x4f, flags: 0x0},
+	{lang: 0x12a, script: 0x43, flags: 0x0},
+	{lang: 0x6a, script: 0x5, flags: 0x0},
+	{lang: 0x113, script: 0xcf, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x15c, script: 0x4c, flags: 0x0},
+	{lang: 0x113, script: 0xcf, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x1f7, script: 0x4f, flags: 0x0},
+	{lang: 0x276, script: 0x1d, flags: 0x0},
+	{lang: 0x183, script: 0x1d, flags: 0x0},
+	{lang: 0x22c, script: 0x4f, flags: 0x0},
+	{lang: 0x19b, script: 0x67, flags: 0x0},
+	{lang: 0x10b, script: 0x4f, flags: 0x0},
+	{lang: 0x185, script: 0x1d, flags: 0x0},
+	{lang: 0x126, script: 0x5, flags: 0x0},
+	{lang: 0x2b1, script: 0x33, flags: 0x0},
+	{lang: 0x1e3, script: 0x4f, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x179, script: 0x4f, flags: 0x0},
+	{lang: 0x27c, script: 0x5, flags: 0x0},
+	{lang: 0x3d, script: 0x1f, flags: 0x0},
+	{lang: 0x27c, script: 0x5, flags: 0x0},
+	{lang: 0x27c, script: 0x5, flags: 0x0},
+	{lang: 0x55, script: 0x1f, flags: 0x0},
+	{lang: 0x1db, script: 0x4f, flags: 0x0},
+	{lang: 0x2e, script: 0x1d, flags: 0x0},
+	{lang: 0x1f7, script: 0x4f, flags: 0x0},
+	{lang: 0x36, script: 0x1d, flags: 0x0},
+	{lang: 0x1fb, script: 0x1d, flags: 0x0},
+	{lang: 0x136, script: 0x4f, flags: 0x0},
+	{lang: 0x239, script: 0x4f, flags: 0x0},
+	{lang: 0x2a8, script: 0x35, flags: 0x0},
+	{lang: 0x21d, script: 0x4f, flags: 0x0},
+	{lang: 0x276, script: 0x1d, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x24e, script: 0xcf, flags: 0x0},
+	{lang: 0x178, script: 0x5, flags: 0x0},
+	{lang: 0x187, script: 0x67, flags: 0x0},
+	{lang: 0x24d, script: 0x1d, flags: 0x0},
+	{lang: 0xa0, script: 0x5, flags: 0x0},
+	{lang: 0x14, script: 0x5, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x260, script: 0x4f, flags: 0x0},
+	{lang: 0x10f, script: 0x1d, flags: 0x0},
+	{lang: 0x38, script: 0x2c, flags: 0x0},
+	{lang: 0x2b1, script: 0x33, flags: 0x0},
+	{lang: 0x262, script: 0x4f, flags: 0x0},
+	{lang: 0x276, script: 0x1d, flags: 0x0},
+	{lang: 0x2a8, script: 0x35, flags: 0x0},
+	{lang: 0x1db, script: 0x4f, flags: 0x0},
+	{lang: 0x22c, script: 0x4f, flags: 0x0},
+	{lang: 0x22d, script: 0x1d, flags: 0x0},
+	{lang: 0xaa, script: 0x4f, flags: 0x0},
+	{lang: 0x23b, script: 0x5, flags: 0x0},
 }
 
 type likelyTag struct {
@@ -2469,37 +2502,37 @@
 // Size: 192 bytes, 32 elements
 var likelyRegionGroup = [32]likelyTag{
 	{lang: 0x0, region: 0x0, script: 0x0},
-	{lang: 0x94, region: 0xd4, script: 0x4b},
-	{lang: 0x94, region: 0x132, script: 0x4b},
-	{lang: 0x1db, region: 0x40, script: 0x4b},
-	{lang: 0x94, region: 0x2e, script: 0x4b},
-	{lang: 0x94, region: 0xd4, script: 0x4b},
-	{lang: 0x96, region: 0xcd, script: 0x4b},
-	{lang: 0x94, region: 0xa2, script: 0x4b},
-	{lang: 0x13, region: 0x6a, script: 0x4},
-	{lang: 0x232, region: 0x4a, script: 0x4b},
-	{lang: 0x94, region: 0x15e, script: 0x4b},
-	{lang: 0x94, region: 0x132, script: 0x4b},
-	{lang: 0x94, region: 0x132, script: 0x4b},
-	{lang: 0x96, region: 0x58, script: 0x4b},
-	{lang: 0x2a6, region: 0x52, script: 0x30},
-	{lang: 0xd6, region: 0x97, script: 0x1d},
-	{lang: 0xeb, region: 0x93, script: 0x4b},
-	{lang: 0xf6, region: 0x9c, script: 0x4b},
-	{lang: 0x94, region: 0x2e, script: 0x4b},
-	{lang: 0x94, region: 0xe4, script: 0x4b},
-	{lang: 0x94, region: 0xa5, script: 0x4b},
-	{lang: 0x21a, region: 0x13f, script: 0x4b},
-	{lang: 0x2a6, region: 0x52, script: 0x30},
-	{lang: 0x274, region: 0x134, script: 0x4b},
-	{lang: 0x13, region: 0x106, script: 0x4},
-	{lang: 0x1f3, region: 0x104, script: 0x1b},
-	{lang: 0x1f3, region: 0x104, script: 0x1b},
-	{lang: 0x94, region: 0x79, script: 0x4b},
-	{lang: 0x7f, region: 0x5f, script: 0x4b},
-	{lang: 0x96, region: 0x1e, script: 0x4b},
-	{lang: 0x94, region: 0x98, script: 0x4b},
-	{lang: 0x94, region: 0x79, script: 0x4b},
+	{lang: 0x97, region: 0xd4, script: 0x4f},
+	{lang: 0x97, region: 0x132, script: 0x4f},
+	{lang: 0x1e3, region: 0x40, script: 0x4f},
+	{lang: 0x97, region: 0x2e, script: 0x4f},
+	{lang: 0x97, region: 0xd4, script: 0x4f},
+	{lang: 0x99, region: 0xcd, script: 0x4f},
+	{lang: 0x23a, region: 0x12d, script: 0x4f},
+	{lang: 0x14, region: 0x6a, script: 0x5},
+	{lang: 0x23a, region: 0x4a, script: 0x4f},
+	{lang: 0x97, region: 0x15e, script: 0x4f},
+	{lang: 0x97, region: 0x132, script: 0x4f},
+	{lang: 0x97, region: 0x132, script: 0x4f},
+	{lang: 0x99, region: 0x58, script: 0x4f},
+	{lang: 0x2b1, region: 0x52, script: 0x32},
+	{lang: 0xda, region: 0x97, script: 0x1f},
+	{lang: 0xf0, region: 0x93, script: 0x4f},
+	{lang: 0xfb, region: 0x9c, script: 0x4f},
+	{lang: 0x97, region: 0x2e, script: 0x4f},
+	{lang: 0x97, region: 0xe4, script: 0x4f},
+	{lang: 0x97, region: 0x88, script: 0x4f},
+	{lang: 0x222, region: 0x13f, script: 0x4f},
+	{lang: 0x2b1, region: 0x52, script: 0x32},
+	{lang: 0x27d, region: 0x134, script: 0x4f},
+	{lang: 0x14, region: 0x106, script: 0x5},
+	{lang: 0x1fb, region: 0x104, script: 0x1d},
+	{lang: 0x1fb, region: 0x104, script: 0x1d},
+	{lang: 0x97, region: 0x79, script: 0x4f},
+	{lang: 0x82, region: 0x5f, script: 0x4f},
+	{lang: 0x99, region: 0x1e, script: 0x4f},
+	{lang: 0x97, region: 0x98, script: 0x4f},
+	{lang: 0x97, region: 0x79, script: 0x4f},
 }
 
 type mutualIntelligibility struct {
@@ -2519,136 +2552,135 @@
 // matchLang holds pairs of langIDs of base languages that are typically
 // mutually intelligible. Each pair is associated with a confidence and
 // whether the intelligibility goes one or both ways.
-// Size: 708 bytes, 118 elements
-var matchLang = [118]mutualIntelligibility{
-	{want: 0x225, have: 0x50, conf: 0x2, oneway: false},
-	{want: 0x210, have: 0xe2, conf: 0x2, oneway: false},
-	{want: 0x225, have: 0xe2, conf: 0x2, oneway: false},
-	{want: 0x210, have: 0x225, conf: 0x2, oneway: false},
-	{want: 0x1ad, have: 0x1af, conf: 0x2, oneway: false},
-	{want: 0xe2, have: 0x50, conf: 0x2, oneway: false},
-	{want: 0x210, have: 0x50, conf: 0x2, oneway: false},
-	{want: 0x22b, have: 0x1, conf: 0x2, oneway: false},
-	{want: 0xc8, have: 0x7f, conf: 0x2, oneway: true},
-	{want: 0x145, have: 0x7f, conf: 0x2, oneway: true},
-	{want: 0x1ad, have: 0x19d, conf: 0x2, oneway: false},
-	{want: 0x18a, have: 0xeb, conf: 0x2, oneway: false},
-	{want: 0x7b, have: 0x19d, conf: 0x2, oneway: false},
-	{want: 0x7b, have: 0x1af, conf: 0x2, oneway: false},
-	{want: 0x6a, have: 0x13, conf: 0x0, oneway: true},
-	{want: 0x6b, have: 0xa7, conf: 0x0, oneway: true},
-	{want: 0x73, have: 0xa7, conf: 0x0, oneway: true},
-	{want: 0x7a, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x8e, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x95, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x98, have: 0xa1, conf: 0x0, oneway: true},
-	{want: 0x9a, have: 0x96, conf: 0x0, oneway: true},
-	{want: 0xa5, have: 0x7b, conf: 0x0, oneway: true},
-	{want: 0xb0, have: 0x1ab, conf: 0x0, oneway: true},
-	{want: 0xb1, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0xb2, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0xb8, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0xbe, have: 0x96, conf: 0x0, oneway: true},
-	{want: 0xc0, have: 0x96, conf: 0x0, oneway: true},
-	{want: 0xc9, have: 0xd6, conf: 0x0, oneway: true},
-	{want: 0xd1, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0xd3, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0xe5, have: 0xa7, conf: 0x0, oneway: true},
-	{want: 0xe7, have: 0x1f3, conf: 0x0, oneway: true},
-	{want: 0xe9, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0xed, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0xf5, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x101, have: 0xeb, conf: 0x0, oneway: true},
-	{want: 0x103, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x113, have: 0xa7, conf: 0x0, oneway: true},
-	{want: 0x120, have: 0x1f3, conf: 0x0, oneway: true},
-	{want: 0x124, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x126, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x12e, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x136, have: 0x257, conf: 0x0, oneway: true},
-	{want: 0x13e, have: 0x1f3, conf: 0x0, oneway: true},
-	{want: 0x13f, have: 0xf6, conf: 0x0, oneway: true},
-	{want: 0x14b, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x155, have: 0xa7, conf: 0x0, oneway: true},
-	{want: 0x156, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x158, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x15d, have: 0xa7, conf: 0x0, oneway: true},
-	{want: 0x173, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x174, have: 0xa7, conf: 0x0, oneway: true},
-	{want: 0x17a, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x17d, have: 0x35, conf: 0x0, oneway: true},
-	{want: 0x17e, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x17f, have: 0x1f3, conf: 0x0, oneway: true},
-	{want: 0x186, have: 0xd6, conf: 0x0, oneway: true},
-	{want: 0x18a, have: 0xeb, conf: 0x0, oneway: true},
-	{want: 0x18b, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x194, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x1a2, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x1ad, have: 0x19d, conf: 0x0, oneway: true},
-	{want: 0x1b6, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x1ba, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x1bc, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x1bd, have: 0xa7, conf: 0x0, oneway: true},
-	{want: 0x1bf, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x1c0, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x1c3, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x1ca, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x1da, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x1dd, have: 0x96, conf: 0x0, oneway: true},
-	{want: 0x1e8, have: 0x7f, conf: 0x0, oneway: true},
-	{want: 0x1ed, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x1f6, have: 0xa7, conf: 0x0, oneway: true},
-	{want: 0x1f9, have: 0xd6, conf: 0x0, oneway: true},
-	{want: 0x206, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x213, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x220, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x222, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x224, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x22c, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x22e, have: 0xeb, conf: 0x0, oneway: true},
-	{want: 0x232, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x23a, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x241, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x245, have: 0x1f3, conf: 0x0, oneway: true},
-	{want: 0x24a, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x24d, have: 0x1f3, conf: 0x0, oneway: true},
-	{want: 0x35fc, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x254, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x255, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x25f, have: 0x1f3, conf: 0x0, oneway: true},
-	{want: 0x263, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x26b, have: 0x2a6, conf: 0x0, oneway: true},
-	{want: 0x273, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x274, have: 0x1f3, conf: 0x0, oneway: true},
-	{want: 0x288, have: 0xa7, conf: 0x0, oneway: true},
-	{want: 0x28d, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x29d, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x29e, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x2a8, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x2, have: 0x1f3, conf: 0x0, oneway: true},
-	{want: 0x5, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x9, have: 0x1ab, conf: 0x0, oneway: true},
-	{want: 0xb, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0xf, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x20, have: 0x96, conf: 0x0, oneway: true},
-	{want: 0x21, have: 0x1f3, conf: 0x0, oneway: true},
-	{want: 0x2d, have: 0x1f3, conf: 0x0, oneway: true},
-	{want: 0x2e, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x38, have: 0xd6, conf: 0x0, oneway: true},
-	{want: 0x47, have: 0x94, conf: 0x0, oneway: true},
-	{want: 0x4c, have: 0xa7, conf: 0x0, oneway: true},
-	{want: 0x61, have: 0xa2, conf: 0x0, oneway: true},
-	{want: 0x67, have: 0x94, conf: 0x0, oneway: true},
+// Size: 702 bytes, 117 elements
+var matchLang = [117]mutualIntelligibility{
+	{want: 0x1b6, have: 0x1a4, conf: 0x2, oneway: false},
+	{want: 0xe6, have: 0x51, conf: 0x2, oneway: false},
+	{want: 0x218, have: 0x51, conf: 0x2, oneway: false},
+	{want: 0x22d, have: 0x51, conf: 0x2, oneway: false},
+	{want: 0x218, have: 0xe6, conf: 0x2, oneway: false},
+	{want: 0x22d, have: 0xe6, conf: 0x2, oneway: false},
+	{want: 0x218, have: 0x22d, conf: 0x2, oneway: false},
+	{want: 0x233, have: 0x1, conf: 0x2, oneway: false},
+	{want: 0xcc, have: 0x82, conf: 0x2, oneway: true},
+	{want: 0x14b, have: 0x82, conf: 0x2, oneway: true},
+	{want: 0x13c, have: 0x6c, conf: 0x2, oneway: false},
+	{want: 0x7d, have: 0x1b6, conf: 0x2, oneway: false},
+	{want: 0x7d, have: 0x1a4, conf: 0x2, oneway: false},
+	{want: 0x6c, have: 0x14, conf: 0x2, oneway: true},
+	{want: 0x6d, have: 0xaa, conf: 0x2, oneway: true},
+	{want: 0x75, have: 0xaa, conf: 0x2, oneway: true},
+	{want: 0x7c, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x91, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x98, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x9b, have: 0xa4, conf: 0x2, oneway: true},
+	{want: 0x9d, have: 0x99, conf: 0x2, oneway: true},
+	{want: 0xa8, have: 0x7d, conf: 0x2, oneway: true},
+	{want: 0xb3, have: 0x1b2, conf: 0x2, oneway: true},
+	{want: 0xb4, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0xb5, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0xbc, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0xc2, have: 0x99, conf: 0x2, oneway: true},
+	{want: 0xc4, have: 0x99, conf: 0x2, oneway: true},
+	{want: 0xcd, have: 0xda, conf: 0x2, oneway: true},
+	{want: 0xd5, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0xd7, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0xe9, have: 0xaa, conf: 0x2, oneway: true},
+	{want: 0xeb, have: 0x1fb, conf: 0x2, oneway: true},
+	{want: 0xed, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0xf2, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0xfa, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x106, have: 0xf0, conf: 0x2, oneway: true},
+	{want: 0x108, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x119, have: 0xaa, conf: 0x2, oneway: true},
+	{want: 0x126, have: 0x1fb, conf: 0x2, oneway: true},
+	{want: 0x12a, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x12c, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x134, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x13c, have: 0x260, conf: 0x2, oneway: true},
+	{want: 0x144, have: 0x1fb, conf: 0x2, oneway: true},
+	{want: 0x145, have: 0xfb, conf: 0x2, oneway: true},
+	{want: 0x151, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x15b, have: 0xaa, conf: 0x2, oneway: true},
+	{want: 0x15c, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x15e, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x163, have: 0xaa, conf: 0x2, oneway: true},
+	{want: 0x179, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x17a, have: 0xaa, conf: 0x2, oneway: true},
+	{want: 0x180, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x183, have: 0x36, conf: 0x2, oneway: true},
+	{want: 0x184, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x185, have: 0x1fb, conf: 0x2, oneway: true},
+	{want: 0x18c, have: 0xda, conf: 0x2, oneway: true},
+	{want: 0x190, have: 0xf0, conf: 0x2, oneway: true},
+	{want: 0x191, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x19b, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x1a9, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x1b4, have: 0x1a4, conf: 0x2, oneway: false},
+	{want: 0x1b4, have: 0x1b6, conf: 0x2, oneway: true},
+	{want: 0x1bd, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x1c1, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x1c3, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x1c5, have: 0xaa, conf: 0x2, oneway: true},
+	{want: 0x1c7, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x1c8, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x1cb, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x1d2, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x1e2, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x1e5, have: 0x99, conf: 0x2, oneway: true},
+	{want: 0x1f0, have: 0x82, conf: 0x2, oneway: true},
+	{want: 0x1f5, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x1fe, have: 0xaa, conf: 0x2, oneway: true},
+	{want: 0x201, have: 0xda, conf: 0x2, oneway: true},
+	{want: 0x20e, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x21b, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x228, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x22a, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x22c, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x234, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x236, have: 0xf0, conf: 0x2, oneway: true},
+	{want: 0x23a, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x242, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x249, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x24d, have: 0x1fb, conf: 0x2, oneway: true},
+	{want: 0x252, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x255, have: 0x1fb, conf: 0x2, oneway: true},
+	{want: 0x3607, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x25c, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x25d, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x268, have: 0x1fb, conf: 0x2, oneway: true},
+	{want: 0x26c, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x274, have: 0x2b1, conf: 0x2, oneway: true},
+	{want: 0x27c, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x27d, have: 0x1fb, conf: 0x2, oneway: true},
+	{want: 0x293, have: 0xaa, conf: 0x2, oneway: true},
+	{want: 0x298, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x2a8, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x2a9, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x2b3, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x5, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x2, have: 0x1fb, conf: 0x2, oneway: true},
+	{want: 0xa, have: 0x1b2, conf: 0x2, oneway: true},
+	{want: 0xc, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x21, have: 0x99, conf: 0x2, oneway: true},
+	{want: 0x22, have: 0x1fb, conf: 0x2, oneway: true},
+	{want: 0x2e, have: 0x1fb, conf: 0x2, oneway: true},
+	{want: 0x2f, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x39, have: 0xda, conf: 0x2, oneway: true},
+	{want: 0x48, have: 0x97, conf: 0x2, oneway: true},
+	{want: 0x4d, have: 0xaa, conf: 0x2, oneway: true},
+	{want: 0x62, have: 0xa5, conf: 0x2, oneway: true},
+	{want: 0x69, have: 0x97, conf: 0x2, oneway: true},
 }
 
 // matchScript holds pairs of scriptIDs where readers of one script
 // can typically also read the other. Each is associated with a confidence.
 // Size: 24 bytes, 4 elements
 var matchScript = [4]scriptIntelligibility{
-	{lang: 0x225, want: 0x4b, have: 0x1b, conf: 0x2},
-	{lang: 0x225, want: 0x1b, have: 0x4b, conf: 0x2},
-	{lang: 0x0, want: 0x30, have: 0x31, conf: 0x1},
-	{lang: 0x0, want: 0x31, have: 0x30, conf: 0x1},
+	{lang: 0x22d, want: 0x4f, have: 0x1d, conf: 0x2},
+	{lang: 0x22d, want: 0x1d, have: 0x4f, conf: 0x2},
+	{lang: 0x0, want: 0x32, have: 0x33, conf: 0x1},
+	{lang: 0x0, want: 0x33, have: 0x32, conf: 0x1},
 }
 
 // Size: 128 bytes, 32 elements
@@ -2730,13 +2762,12 @@
 	fromRegion []uint16
 }
 
-// Size: 382 bytes, 5 elements
-var parents = [5]parentRel{
-	{lang: 0x94, script: 0x0, maxScript: 0x4b, toRegion: 0x1, fromRegion: []uint16{0x24, 0x25, 0x33, 0x3c, 0x41, 0x45, 0x47, 0x49, 0x4f, 0x51, 0x5b, 0x63, 0x6c, 0x71, 0x73, 0x79, 0x7a, 0x7e, 0x81, 0x8a, 0x9e, 0xa2, 0xa5, 0xa7, 0xab, 0xaf, 0xb2, 0xb3, 0xbd, 0xc8, 0xca, 0xcc, 0xce, 0xd0, 0xd3, 0xd4, 0xdb, 0xdd, 0xe4, 0xe5, 0xe9, 0xee, 0x105, 0x107, 0x108, 0x109, 0x110, 0x115, 0x119, 0x11b, 0x11d, 0x123, 0x127, 0x12a, 0x12b, 0x12d, 0x12f, 0x136, 0x13c, 0x13f, 0x15e, 0x15f, 0x161}},
-	{lang: 0x94, script: 0x0, maxScript: 0x4b, toRegion: 0x79, fromRegion: []uint16{0x1a, 0x2e, 0x35, 0x60, 0x72, 0x7d, 0x7f, 0x8b, 0x94, 0x96, 0x97, 0x98, 0x9d, 0xc4, 0xc9, 0xde, 0xe6, 0x10b, 0x10c, 0x139}},
-	{lang: 0x96, script: 0x0, maxScript: 0x4b, toRegion: 0x1e, fromRegion: []uint16{0x2b, 0x3e, 0x50, 0x53, 0x55, 0x58, 0x64, 0x68, 0x87, 0x8d, 0xcd, 0xd6, 0xe0, 0xe2, 0xea, 0xef, 0x118, 0x132, 0x133, 0x138}},
-	{lang: 0x1db, script: 0x0, maxScript: 0x4b, toRegion: 0xec, fromRegion: []uint16{0x29, 0x59, 0x89, 0xc4, 0xcf, 0x116, 0x124}},
-	{lang: 0x2a6, script: 0x31, maxScript: 0x31, toRegion: 0x8b, fromRegion: []uint16{0xc4}},
+// Size: 352 bytes, 4 elements
+var parents = [4]parentRel{
+	{lang: 0x97, script: 0x0, maxScript: 0x4f, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x24, 0x25, 0x2e, 0x33, 0x35, 0x3c, 0x41, 0x45, 0x47, 0x48, 0x49, 0x4f, 0x51, 0x5b, 0x60, 0x63, 0x6c, 0x71, 0x72, 0x73, 0x79, 0x7a, 0x7d, 0x7e, 0x7f, 0x81, 0x8a, 0x8b, 0x94, 0x96, 0x97, 0x98, 0x9d, 0x9e, 0xa2, 0xa5, 0xa7, 0xab, 0xaf, 0xb2, 0xb3, 0xbd, 0xc4, 0xc8, 0xc9, 0xca, 0xcc, 0xce, 0xd0, 0xd3, 0xd4, 0xdb, 0xdd, 0xde, 0xe4, 0xe5, 0xe6, 0xe9, 0xee, 0x105, 0x107, 0x108, 0x109, 0x10b, 0x10c, 0x110, 0x115, 0x119, 0x11b, 0x11d, 0x123, 0x127, 0x12a, 0x12b, 0x12d, 0x12f, 0x136, 0x139, 0x13c, 0x13f, 0x15e, 0x15f, 0x161}},
+	{lang: 0x99, script: 0x0, maxScript: 0x4f, toRegion: 0x1e, fromRegion: []uint16{0x2b, 0x3e, 0x50, 0x53, 0x55, 0x58, 0x64, 0x68, 0x87, 0x8d, 0xcd, 0xd6, 0xe0, 0xe2, 0xea, 0xef, 0x118, 0x132, 0x133, 0x138}},
+	{lang: 0x1e3, script: 0x0, maxScript: 0x4f, toRegion: 0xec, fromRegion: []uint16{0x29, 0x59, 0x89, 0xc4, 0xcf, 0x116, 0x124}},
+	{lang: 0x2b1, script: 0x33, maxScript: 0x33, toRegion: 0x8b, fromRegion: []uint16{0xc4}},
 }
 
-// Size: 20.4K (20840 bytes); Check: EDA1C496
+// Size: 20.6K (21051 bytes); Check: AC4585D5
diff --git a/go/src/golang.org/x/text/language/tags.go b/go/src/golang.org/x/text/language/tags.go
index 22b52b5..6ccfd7d 100644
--- a/go/src/golang.org/x/text/language/tags.go
+++ b/go/src/golang.org/x/text/language/tags.go
@@ -135,6 +135,7 @@
 	Slovenian            Tag = Tag{lang: _sl}                //  sl
 	Albanian             Tag = Tag{lang: _sq}                //  sq
 	Serbian              Tag = Tag{lang: _sr}                //  sr
+	SerbianLatin         Tag = Tag{lang: _sr, script: _Latn} //  sr-Latn
 	Swedish              Tag = Tag{lang: _sv}                //  sv
 	Swahili              Tag = Tag{lang: _sw}                //  sw
 	Tamil                Tag = Tag{lang: _ta}                //  ta
diff --git a/go/src/golang.org/x/text/runes/cond.go b/go/src/golang.org/x/text/runes/cond.go
new file mode 100644
index 0000000..ae7a921
--- /dev/null
+++ b/go/src/golang.org/x/text/runes/cond.go
@@ -0,0 +1,126 @@
+// Copyright 2015 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 runes
+
+import (
+	"unicode/utf8"
+
+	"golang.org/x/text/transform"
+)
+
+// Note: below we pass invalid UTF-8 to the tIn and tNotIn transformers as is.
+// This is done for various reasons:
+// - To retain the semantics of the Nop transformer: if input is passed to a Nop
+//   one would expect it to be unchanged.
+// - It would be very expensive to pass a converted RuneError to a transformer:
+//   a transformer might need more source bytes after RuneError, meaning that
+//   the only way to pass it safely is to create a new buffer and manage the
+//   intermingling of RuneErrors and normal input.
+// - Many transformers leave ill-formed UTF-8 as is, so this is not
+//   inconsistent. Generally ill-formed UTF-8 is only replaced if it is a
+//   logical consequence of the operation (as for Map) or if it otherwise would
+//   pose security concerns (as for Remove).
+// - An alternative would be to return an error on ill-formed UTF-8, but this
+//   would be inconsistent with other operations.
+
+// If returns a transformer that applies tIn to consecutive runes for which
+// s.Contains(r) and tNotIn to consecutive runes for which !s.Contains(r). Reset
+// is called on tIn and tNotIn at the start of each run. A Nop transformer will
+// substitute a nil value passed to tIn or tNotIn. Invalid UTF-8 is translated
+// to RuneError to determine which transformer to apply, but is passed as is to
+// the respective transformer.
+func If(s Set, tIn, tNotIn transform.Transformer) Transformer {
+	if tIn == nil && tNotIn == nil {
+		return Transformer{transform.Nop}
+	}
+	if tIn == nil {
+		tIn = transform.Nop
+	}
+	if tNotIn == nil {
+		tNotIn = transform.Nop
+	}
+	a := &cond{
+		tIn:    tIn,
+		tNotIn: tNotIn,
+		f:      s.Contains,
+	}
+	a.Reset()
+	return Transformer{a}
+}
+
+type cond struct {
+	tIn, tNotIn transform.Transformer
+	f           func(rune) bool
+	check       func(rune) bool       // current check to perform
+	t           transform.Transformer // current transformer to use
+}
+
+// Reset implements transform.Transformer.
+func (t *cond) Reset() {
+	t.check = t.is
+	t.t = t.tIn
+	t.t.Reset() // notIn will be reset on first usage.
+}
+
+func (t *cond) is(r rune) bool {
+	if t.f(r) {
+		return true
+	}
+	t.check = t.isNot
+	t.t = t.tNotIn
+	t.tNotIn.Reset()
+	return false
+}
+
+func (t *cond) isNot(r rune) bool {
+	if !t.f(r) {
+		return true
+	}
+	t.check = t.is
+	t.t = t.tIn
+	t.tIn.Reset()
+	return false
+}
+
+func (t *cond) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+	p := 0
+	for nSrc < len(src) && err == nil {
+		// Don't process too much at a time, as the work might be wasted if the
+		// destination buffer isn't large enough to hold the result or a
+		// transform returns an error early.
+		const maxChunk = 4096
+		max := len(src)
+		if n := nSrc + maxChunk; n < len(src) {
+			max = n
+		}
+		atEnd := false
+		size := 0
+		current := t.t
+		for ; p < max; p += size {
+			var r rune
+			r, size = utf8.DecodeRune(src[p:])
+			if r == utf8.RuneError && size == 1 {
+				if !atEOF && !utf8.FullRune(src[p:]) {
+					err = transform.ErrShortSrc
+					break
+				}
+			}
+			if !t.check(r) {
+				// The next rune will be the start of a new run.
+				atEnd = true
+				break
+			}
+		}
+		nDst2, nSrc2, err2 := current.Transform(dst[nDst:], src[nSrc:p], atEnd || (atEOF && p == len(src)))
+		nDst += nDst2
+		nSrc += nSrc2
+		if err2 != nil {
+			return nDst, nSrc, err2
+		}
+		// At this point either err != nil or t.check will pass for the rune at p.
+		p = nSrc + size
+	}
+	return nDst, nSrc, err
+}
diff --git a/go/src/golang.org/x/text/runes/cond_test.go b/go/src/golang.org/x/text/runes/cond_test.go
new file mode 100644
index 0000000..175bd2b
--- /dev/null
+++ b/go/src/golang.org/x/text/runes/cond_test.go
@@ -0,0 +1,233 @@
+// Copyright 2015 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 runes
+
+import (
+	"strings"
+	"testing"
+	"unicode"
+
+	"golang.org/x/text/cases"
+	"golang.org/x/text/language"
+	"golang.org/x/text/transform"
+)
+
+var (
+	toUpper = cases.Upper(language.Und)
+	toLower = cases.Lower(language.Und)
+)
+
+func TestPredicate(t *testing.T) {
+	testConditional(t, func(rt *unicode.RangeTable, t, f transform.Transformer) transform.Transformer {
+		return If(Predicate(func(r rune) bool {
+			return unicode.Is(rt, r)
+		}), t, f)
+	})
+}
+
+func TestIn(t *testing.T) {
+	testConditional(t, func(rt *unicode.RangeTable, t, f transform.Transformer) transform.Transformer {
+		return If(In(rt), t, f)
+	})
+}
+
+func TestNotIn(t *testing.T) {
+	testConditional(t, func(rt *unicode.RangeTable, t, f transform.Transformer) transform.Transformer {
+		return If(NotIn(rt), f, t)
+	})
+}
+
+func testConditional(t *testing.T, f func(rt *unicode.RangeTable, t, f transform.Transformer) transform.Transformer) {
+	lower := f(unicode.Latin, toLower, toLower)
+
+	for i, tt := range []transformTest{{
+		desc:    "empty",
+		szDst:   large,
+		atEOF:   true,
+		in:      "",
+		out:     "",
+		outFull: "",
+		t:       lower,
+	}, {
+		desc:    "small",
+		szDst:   1,
+		atEOF:   true,
+		in:      "B",
+		out:     "b",
+		outFull: "b",
+		t:       lower,
+	}, {
+		desc:    "short dst",
+		szDst:   2,
+		atEOF:   true,
+		in:      "AAA",
+		out:     "aa",
+		outFull: "aaa",
+		err:     transform.ErrShortDst,
+		t:       lower,
+	}, {
+		desc:    "short dst writing error",
+		szDst:   1,
+		atEOF:   false,
+		in:      "A\x80",
+		out:     "a",
+		outFull: "a\x80",
+		err:     transform.ErrShortDst,
+		t:       lower,
+	}, {
+		desc:    "short dst writing incomplete rune",
+		szDst:   2,
+		atEOF:   true,
+		in:      "Σ\xc0",
+		out:     "Σ",
+		outFull: "Σ\xc0",
+		err:     transform.ErrShortDst,
+		t:       f(unicode.Latin, toLower, nil),
+	}, {
+		desc:    "short dst, longer",
+		szDst:   5,
+		atEOF:   true,
+		in:      "Hellø",
+		out:     "Hell",
+		outFull: "Hellø",
+		err:     transform.ErrShortDst,
+		// idem is used to test short buffers by forcing processing of full-rune increments.
+		t: f(unicode.Latin, Map(idem), nil),
+	}, {
+		desc:    "short dst, longer, writing error",
+		szDst:   6,
+		atEOF:   false,
+		in:      "\x80Hello\x80",
+		out:     "\x80Hello",
+		outFull: "\x80Hello\x80",
+		err:     transform.ErrShortDst,
+		t:       f(unicode.Latin, Map(idem), nil),
+	}, {
+		desc:    "short src",
+		szDst:   2,
+		atEOF:   false,
+		in:      "A\xc0",
+		out:     "a",
+		outFull: "a\xc0",
+		err:     transform.ErrShortSrc,
+		t:       lower,
+	}, {
+		desc:    "invalid input, atEOF",
+		szDst:   large,
+		atEOF:   true,
+		in:      "\x80",
+		out:     "\x80",
+		outFull: "\x80",
+		t:       lower,
+	}, {
+		desc:    "invalid input, !atEOF",
+		szDst:   large,
+		atEOF:   false,
+		in:      "\x80",
+		out:     "\x80",
+		outFull: "\x80",
+		t:       lower,
+	}, {
+		desc:    "invalid input, incomplete rune atEOF",
+		szDst:   large,
+		atEOF:   true,
+		in:      "\xc0",
+		out:     "\xc0",
+		outFull: "\xc0",
+		t:       lower,
+	}, {
+		desc:    "nop",
+		szDst:   large,
+		atEOF:   true,
+		in:      "Hello World!",
+		out:     "Hello World!",
+		outFull: "Hello World!",
+		t:       f(unicode.Latin, nil, nil),
+	}, {
+		desc:    "nop in",
+		szDst:   large,
+		atEOF:   true,
+		in:      "THIS IS α ΤΕΣΤ",
+		out:     "this is α ΤΕΣΤ",
+		outFull: "this is α ΤΕΣΤ",
+		t:       f(unicode.Greek, nil, toLower),
+	}, {
+		desc:    "nop not in",
+		szDst:   large,
+		atEOF:   true,
+		in:      "THIS IS α ΤΕΣΤ",
+		out:     "this is α ΤΕΣΤ",
+		outFull: "this is α ΤΕΣΤ",
+		t:       f(unicode.Latin, toLower, nil),
+	}, {
+		desc:    "pass atEOF is true when at end",
+		szDst:   large,
+		atEOF:   true,
+		in:      "hello",
+		out:     "HELLO",
+		outFull: "HELLO",
+		t:       f(unicode.Latin, upperAtEOF{}, nil),
+	}, {
+		desc:    "pass atEOF is true when at end of segment",
+		szDst:   large,
+		atEOF:   true,
+		in:      "hello ",
+		out:     "HELLO ",
+		outFull: "HELLO ",
+		t:       f(unicode.Latin, upperAtEOF{}, nil),
+	}, {
+		desc:    "don't pass atEOF is true when atEOF is false",
+		szDst:   large,
+		atEOF:   false,
+		in:      "hello",
+		out:     "",
+		outFull: "HELLO",
+		t:       f(unicode.Latin, upperAtEOF{}, nil),
+		err:     transform.ErrShortSrc,
+	}, {
+		desc:    "large input ASCII",
+		szDst:   12000,
+		atEOF:   false,
+		in:      strings.Repeat("HELLO", 2000),
+		out:     strings.Repeat("hello", 2000),
+		outFull: strings.Repeat("hello", 2000),
+		t:       lower,
+		err:     nil,
+	}, {
+		desc:    "large input non-ASCII",
+		szDst:   12000,
+		atEOF:   false,
+		in:      strings.Repeat("\u3333", 2000),
+		out:     strings.Repeat("\u3333", 2000),
+		outFull: strings.Repeat("\u3333", 2000),
+		t:       lower,
+		err:     nil,
+	}} {
+		tt.check(t, i)
+	}
+}
+
+// upperAtEOF is a strange Transformer that converts text to uppercase, but only
+// if atEOF is true.
+type upperAtEOF struct{ transform.NopResetter }
+
+func (upperAtEOF) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+	if !atEOF {
+		return 0, 0, transform.ErrShortSrc
+	}
+	return toUpper.Transform(dst, src, atEOF)
+}
+
+func BenchmarkConditional(b *testing.B) {
+	dst := make([]byte, len(input))
+	src := []byte(input)
+
+	r := If(In(unicode.Hangul), transform.Nop, transform.Nop)
+	b.ResetTimer()
+
+	for i := 0; i < b.N; i++ {
+		r.Transform(dst, src, true)
+	}
+}
diff --git a/go/src/golang.org/x/text/runes/example_test.go b/go/src/golang.org/x/text/runes/example_test.go
new file mode 100644
index 0000000..a60bfd9
--- /dev/null
+++ b/go/src/golang.org/x/text/runes/example_test.go
@@ -0,0 +1,60 @@
+// Copyright 2014 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 runes_test
+
+import (
+	"fmt"
+	"unicode"
+
+	"golang.org/x/text/runes"
+	"golang.org/x/text/transform"
+	"golang.org/x/text/unicode/norm"
+	"golang.org/x/text/width"
+)
+
+func ExampleRemove() {
+	t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC)
+	s, _, _ := transform.String(t, "résumé")
+	fmt.Println(s)
+
+	// Output:
+	// resume
+}
+
+func ExampleMap() {
+	replaceHyphens := runes.Map(func(r rune) rune {
+		if unicode.Is(unicode.Hyphen, r) {
+			return '|'
+		}
+		return r
+	})
+	s, _, _ := transform.String(replaceHyphens, "a-b‐c⸗d﹣e")
+	fmt.Println(s)
+
+	// Output:
+	// a|b|c|d|e
+}
+
+func ExampleIn() {
+	// Convert Latin characters to their canonical form, while keeping other
+	// width distinctions.
+	t := runes.If(runes.In(unicode.Latin), width.Fold, nil)
+	s, _, _ := transform.String(t, "アルアノリウ tech / アルアノリウ tech")
+	fmt.Println(s)
+
+	// Output:
+	// アルアノリウ tech / アルアノリウ tech
+}
+
+func ExampleIf() {
+	// Widen everything but ASCII.
+	isASCII := func(r rune) bool { return r <= unicode.MaxASCII }
+	t := runes.If(runes.Predicate(isASCII), nil, width.Widen)
+	s, _, _ := transform.String(t, "アルアノリウ tech / 中國 / 5₩")
+	fmt.Println(s)
+
+	// Output:
+	// アルアノリウ tech / 中國 / 5₩
+}
diff --git a/go/src/golang.org/x/text/runes/runes.go b/go/src/golang.org/x/text/runes/runes.go
new file mode 100644
index 0000000..464964b
--- /dev/null
+++ b/go/src/golang.org/x/text/runes/runes.go
@@ -0,0 +1,223 @@
+// Copyright 2014 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 runes provide transforms for UTF-8 encoded text.
+package runes
+
+import (
+	"unicode"
+	"unicode/utf8"
+
+	"golang.org/x/text/transform"
+)
+
+// A Set is a collection of runes.
+type Set interface {
+	// Contains returns true if r is contained in the set.
+	Contains(r rune) bool
+}
+
+type setFunc func(rune) bool
+
+func (s setFunc) Contains(r rune) bool {
+	return s(r)
+}
+
+// Note: using funcs here instead of wrapping types result in cleaner
+// documentation and a smaller API.
+
+// In creates a Set with a Contains method that returns true for all runes in
+// the given RangeTable.
+func In(rt *unicode.RangeTable) Set {
+	return setFunc(func(r rune) bool { return unicode.Is(rt, r) })
+}
+
+// In creates a Set with a Contains method that returns true for all runes not
+// in the given RangeTable.
+func NotIn(rt *unicode.RangeTable) Set {
+	return setFunc(func(r rune) bool { return !unicode.Is(rt, r) })
+}
+
+// Predicate creates a Set with a Contains method that returns f(r).
+func Predicate(f func(rune) bool) Set {
+	return setFunc(f)
+}
+
+// Transformer implements the transform.Transformer interface.
+type Transformer struct {
+	transform.Transformer
+}
+
+// Bytes returns a new byte slice with the result of converting b using t.  It
+// calls Reset on t. It returns nil if any error was found. This can only happen
+// if an error-producing Transformer is passed to If.
+func (t Transformer) Bytes(b []byte) []byte {
+	b, _, err := transform.Bytes(t, b)
+	if err != nil {
+		return nil
+	}
+	return b
+}
+
+// String returns a string with the result of converting s using t. It calls
+// Reset on t. It returns the empty string if any error was found. This can only
+// happen if an error-producing Transformer is passed to If.
+func (t Transformer) String(s string) string {
+	s, _, err := transform.String(t, s)
+	if err != nil {
+		return ""
+	}
+	return s
+}
+
+// TODO:
+// - Copy: copying strings and bytes in whole-rune units.
+// - Validation (maybe)
+// - Well-formed-ness (maybe)
+
+const runeErrorString = string(utf8.RuneError)
+
+// Remove returns a Transformer that removes runes r for which s.Contains(r).
+// Illegal input bytes are replaced by RuneError before being passed to f.
+func Remove(s Set) Transformer {
+	if f, ok := s.(setFunc); ok {
+		// This little trick cuts the running time of BenchmarkRemove for sets
+		// created by Predicate roughly in half.
+		// TODO: special-case RangeTables as well.
+		return Transformer{remove(f)}
+	}
+	return Transformer{remove(s.Contains)}
+}
+
+// TODO: remove transform.RemoveFunc.
+
+type remove func(r rune) bool
+
+func (remove) Reset() {}
+
+// Transform implements transform.Transformer.
+func (t remove) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+	for r, size := rune(0), 0; nSrc < len(src); {
+		if r = rune(src[nSrc]); r < utf8.RuneSelf {
+			size = 1
+		} else {
+			r, size = utf8.DecodeRune(src[nSrc:])
+
+			if size == 1 {
+				// Invalid rune.
+				if !atEOF && !utf8.FullRune(src[nSrc:]) {
+					err = transform.ErrShortSrc
+					break
+				}
+				// We replace illegal bytes with RuneError. Not doing so might
+				// otherwise turn a sequence of invalid UTF-8 into valid UTF-8.
+				// The resulting byte sequence may subsequently contain runes
+				// for which t(r) is true that were passed unnoticed.
+				if !t(utf8.RuneError) {
+					if nDst+3 > len(dst) {
+						err = transform.ErrShortDst
+						break
+					}
+					dst[nDst+0] = runeErrorString[0]
+					dst[nDst+1] = runeErrorString[1]
+					dst[nDst+2] = runeErrorString[2]
+					nDst += 3
+				}
+				nSrc++
+				continue
+			}
+		}
+
+		if t(r) {
+			nSrc += size
+			continue
+		}
+		if nDst+size > len(dst) {
+			err = transform.ErrShortDst
+			break
+		}
+		for i := 0; i < size; i++ {
+			dst[nDst] = src[nSrc]
+			nDst++
+			nSrc++
+		}
+	}
+	return
+}
+
+// Map returns a Transformer that maps the runes in the input using the given
+// mapping. Illegal bytes in the input are converted to utf8.RuneError before
+// being passed to the mapping func.
+func Map(mapping func(rune) rune) Transformer {
+	return Transformer{mapper(mapping)}
+}
+
+type mapper func(rune) rune
+
+func (mapper) Reset() {}
+
+// Transform implements transform.Transformer.
+func (t mapper) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+	var replacement rune
+	var b [utf8.UTFMax]byte
+
+	for r, size := rune(0), 0; nSrc < len(src); {
+		if r = rune(src[nSrc]); r < utf8.RuneSelf {
+			if replacement = t(r); replacement < utf8.RuneSelf {
+				if nDst == len(dst) {
+					err = transform.ErrShortDst
+					break
+				}
+				dst[nDst] = byte(replacement)
+				nDst++
+				nSrc++
+				continue
+			}
+			size = 1
+		} else if r, size = utf8.DecodeRune(src[nSrc:]); size == 1 {
+			// Invalid rune.
+			if !atEOF && !utf8.FullRune(src[nSrc:]) {
+				err = transform.ErrShortSrc
+				break
+			}
+
+			if replacement = t(utf8.RuneError); replacement == utf8.RuneError {
+				if nDst+3 > len(dst) {
+					err = transform.ErrShortDst
+					break
+				}
+				dst[nDst+0] = runeErrorString[0]
+				dst[nDst+1] = runeErrorString[1]
+				dst[nDst+2] = runeErrorString[2]
+				nDst += 3
+				nSrc++
+				continue
+			}
+		} else if replacement = t(r); replacement == r {
+			if nDst+size > len(dst) {
+				err = transform.ErrShortDst
+				break
+			}
+			for i := 0; i < size; i++ {
+				dst[nDst] = src[nSrc]
+				nDst++
+				nSrc++
+			}
+			continue
+		}
+
+		n := utf8.EncodeRune(b[:], replacement)
+
+		if nDst+n > len(dst) {
+			err = transform.ErrShortDst
+			break
+		}
+		for i := 0; i < n; i++ {
+			dst[nDst] = b[i]
+			nDst++
+		}
+		nSrc += size
+	}
+	return
+}
diff --git a/go/src/golang.org/x/text/runes/runes_test.go b/go/src/golang.org/x/text/runes/runes_test.go
new file mode 100644
index 0000000..4fbc333
--- /dev/null
+++ b/go/src/golang.org/x/text/runes/runes_test.go
@@ -0,0 +1,451 @@
+// Copyright 2015 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 runes
+
+import (
+	"strings"
+	"testing"
+	"unicode/utf8"
+
+	"golang.org/x/text/transform"
+)
+
+type transformTest struct {
+	desc    string
+	szDst   int
+	atEOF   bool
+	repl    string
+	in      string
+	out     string // result string of first call to Transform
+	outFull string // transform of entire input string
+	err     error
+
+	t transform.Transformer
+}
+
+const large = 10240
+
+func (tt *transformTest) check(t *testing.T, i int) {
+	if tt.t == nil {
+		return
+	}
+	dst := make([]byte, tt.szDst)
+	src := []byte(tt.in)
+	nDst, nSrc, err := tt.t.Transform(dst, src, tt.atEOF)
+	if err != tt.err {
+		t.Errorf("%d:%s:error: got %v; want %v", i, tt.desc, err, tt.err)
+	}
+	if got := string(dst[:nDst]); got != tt.out {
+		t.Errorf("%d:%s:out: got %q; want %q", i, tt.desc, got, tt.out)
+	}
+
+	// Calls tt.t.Transform for the remainder of the input. We use this to test
+	// the nSrc return value.
+	out := make([]byte, large)
+	n := copy(out, dst[:nDst])
+	nDst, _, _ = tt.t.Transform(out[n:], src[nSrc:], true)
+	if got, want := string(out[:n+nDst]), tt.outFull; got != want {
+		t.Errorf("%d:%s:outFull: got %q; want %q", i, tt.desc, got, want)
+	}
+}
+
+func idem(r rune) rune { return r }
+
+func TestMap(t *testing.T) {
+	runes := []rune{'a', 'ç', '中', '\U00012345', 'a'}
+	// Default mapper used for this test.
+	rotate := Map(func(r rune) rune {
+		for i, m := range runes {
+			if m == r {
+				return runes[i+1]
+			}
+		}
+		return r
+	})
+
+	for i, tt := range []transformTest{{
+		desc:    "empty",
+		szDst:   large,
+		atEOF:   true,
+		in:      "",
+		out:     "",
+		outFull: "",
+		t:       rotate,
+	}, {
+		desc:    "no change",
+		szDst:   1,
+		atEOF:   true,
+		in:      "b",
+		out:     "b",
+		outFull: "b",
+		t:       rotate,
+	}, {
+		desc:    "short dst",
+		szDst:   2,
+		atEOF:   true,
+		in:      "aaaa",
+		out:     "ç",
+		outFull: "çççç",
+		err:     transform.ErrShortDst,
+		t:       rotate,
+	}, {
+		desc:    "short dst ascii, no change",
+		szDst:   2,
+		atEOF:   true,
+		in:      "bbb",
+		out:     "bb",
+		outFull: "bbb",
+		err:     transform.ErrShortDst,
+		t:       rotate,
+	}, {
+		desc:    "short dst writing error",
+		szDst:   2,
+		atEOF:   false,
+		in:      "a\x80",
+		out:     "ç",
+		outFull: "ç\ufffd",
+		err:     transform.ErrShortDst,
+		t:       rotate,
+	}, {
+		desc:    "short dst writing incomplete rune",
+		szDst:   2,
+		atEOF:   true,
+		in:      "a\xc0",
+		out:     "ç",
+		outFull: "ç\ufffd",
+		err:     transform.ErrShortDst,
+		t:       rotate,
+	}, {
+		desc:    "short dst, longer",
+		szDst:   5,
+		atEOF:   true,
+		in:      "Hellø",
+		out:     "Hell",
+		outFull: "Hellø",
+		err:     transform.ErrShortDst,
+		t:       rotate,
+	}, {
+		desc:    "short dst, single",
+		szDst:   1,
+		atEOF:   false,
+		in:      "ø",
+		out:     "",
+		outFull: "ø",
+		err:     transform.ErrShortDst,
+		t:       Map(idem),
+	}, {
+		desc:    "short dst, longer, writing error",
+		szDst:   8,
+		atEOF:   false,
+		in:      "\x80Hello\x80",
+		out:     "\ufffdHello",
+		outFull: "\ufffdHello\ufffd",
+		err:     transform.ErrShortDst,
+		t:       rotate,
+	}, {
+		desc:    "short src",
+		szDst:   2,
+		atEOF:   false,
+		in:      "a\xc0",
+		out:     "ç",
+		outFull: "ç\ufffd",
+		err:     transform.ErrShortSrc,
+		t:       rotate,
+	}, {
+		desc:    "invalid input, atEOF",
+		szDst:   large,
+		atEOF:   true,
+		in:      "\x80",
+		out:     "\ufffd",
+		outFull: "\ufffd",
+		t:       rotate,
+	}, {
+		desc:    "invalid input, !atEOF",
+		szDst:   large,
+		atEOF:   false,
+		in:      "\x80",
+		out:     "\ufffd",
+		outFull: "\ufffd",
+		t:       rotate,
+	}, {
+		desc:    "invalid input, incomplete rune atEOF",
+		szDst:   large,
+		atEOF:   true,
+		in:      "\xc0",
+		out:     "\ufffd",
+		outFull: "\ufffd",
+		t:       rotate,
+	}, {
+		desc:    "misc correct",
+		szDst:   large,
+		atEOF:   true,
+		in:      "a\U00012345 ç!",
+		out:     "ça 中!",
+		outFull: "ça 中!",
+		t:       rotate,
+	}, {
+		desc:    "misc correct and invalid",
+		szDst:   large,
+		atEOF:   true,
+		in:      "Hello\x80 w\x80orl\xc0d!\xc0",
+		out:     "Hello\ufffd w\ufffdorl\ufffdd!\ufffd",
+		outFull: "Hello\ufffd w\ufffdorl\ufffdd!\ufffd",
+		t:       rotate,
+	}, {
+		desc:    "misc correct and invalid, short src",
+		szDst:   large,
+		atEOF:   false,
+		in:      "Hello\x80 w\x80orl\xc0d!\xc0",
+		out:     "Hello\ufffd w\ufffdorl\ufffdd!",
+		outFull: "Hello\ufffd w\ufffdorl\ufffdd!\ufffd",
+		err:     transform.ErrShortSrc,
+		t:       rotate,
+	}, {
+		desc:    "misc correct and invalid, short src, replacing RuneError",
+		szDst:   large,
+		atEOF:   false,
+		in:      "Hel\ufffdlo\x80 w\x80orl\xc0d!\xc0",
+		out:     "Hel?lo? w?orl?d!",
+		outFull: "Hel?lo? w?orl?d!?",
+		err:     transform.ErrShortSrc,
+		t: Map(func(r rune) rune {
+			if r == utf8.RuneError {
+				return '?'
+			}
+			return r
+		}),
+	}} {
+		tt.check(t, i)
+	}
+}
+
+func TestRemove(t *testing.T) {
+	remove := Remove(Predicate(func(r rune) bool {
+		return strings.ContainsRune("aeiou\u0300\uFF24\U00012345", r)
+	}))
+
+	for i, tt := range []transformTest{
+		0: {
+			szDst:   large,
+			atEOF:   true,
+			in:      "",
+			out:     "",
+			outFull: "",
+			t:       remove,
+		},
+		1: {
+			szDst:   0,
+			atEOF:   true,
+			in:      "aaaa",
+			out:     "",
+			outFull: "",
+			t:       remove,
+		},
+		2: {
+			szDst:   1,
+			atEOF:   true,
+			in:      "aaaa",
+			out:     "",
+			outFull: "",
+			t:       remove,
+		},
+		3: {
+			szDst:   1,
+			atEOF:   true,
+			in:      "baaaa",
+			out:     "b",
+			outFull: "b",
+			t:       remove,
+		},
+		4: {
+			szDst:   2,
+			atEOF:   true,
+			in:      "açaaa",
+			out:     "ç",
+			outFull: "ç",
+			t:       remove,
+		},
+		5: {
+			szDst:   2,
+			atEOF:   true,
+			in:      "aaaç",
+			out:     "ç",
+			outFull: "ç",
+			t:       remove,
+		},
+		6: {
+			szDst:   2,
+			atEOF:   false,
+			in:      "a\x80",
+			out:     "",
+			outFull: "\ufffd",
+			err:     transform.ErrShortDst,
+			t:       remove,
+		},
+		7: {
+			szDst:   1,
+			atEOF:   true,
+			in:      "a\xc0",
+			out:     "",
+			outFull: "\ufffd",
+			err:     transform.ErrShortDst,
+			t:       remove,
+		},
+		8: {
+			szDst:   1,
+			atEOF:   false,
+			in:      "a\xc0",
+			out:     "",
+			outFull: "\ufffd",
+			err:     transform.ErrShortSrc,
+			t:       remove,
+		},
+		9: {
+			szDst:   large,
+			atEOF:   true,
+			in:      "\x80",
+			out:     "\ufffd",
+			outFull: "\ufffd",
+			t:       remove,
+		},
+		10: {
+			szDst:   large,
+			atEOF:   false,
+			in:      "\x80",
+			out:     "\ufffd",
+			outFull: "\ufffd",
+			t:       remove,
+		},
+		11: {
+			szDst:   large,
+			atEOF:   true,
+			in:      "\xc0",
+			out:     "\ufffd",
+			outFull: "\ufffd",
+			t:       remove,
+		},
+		12: {
+			szDst:   large,
+			atEOF:   true,
+			in:      "Hello \U00012345world!",
+			out:     "Hll wrld!",
+			outFull: "Hll wrld!",
+			t:       remove,
+		},
+		13: {
+			szDst:   large,
+			atEOF:   true,
+			in:      "Hello\x80 w\x80orl\xc0d!\xc0",
+			out:     "Hll\ufffd w\ufffdrl\ufffdd!\ufffd",
+			outFull: "Hll\ufffd w\ufffdrl\ufffdd!\ufffd",
+			t:       remove,
+		},
+		14: {
+			szDst:   large,
+			atEOF:   false,
+			in:      "Hello\x80 w\x80orl\xc0d!\xc0",
+			out:     "Hll\ufffd w\ufffdrl\ufffdd!",
+			outFull: "Hll\ufffd w\ufffdrl\ufffdd!\ufffd",
+			err:     transform.ErrShortSrc,
+			t:       remove,
+		},
+		15: {
+			szDst:   large,
+			atEOF:   false,
+			in:      "Hel\ufffdlo\x80 w\x80orl\xc0d!\xc0",
+			out:     "Hello world!",
+			outFull: "Hello world!",
+			err:     transform.ErrShortSrc,
+			t:       Remove(Predicate(func(r rune) bool { return r == utf8.RuneError })),
+		},
+		16: {
+			szDst:   4,
+			atEOF:   true,
+			in:      "Hellø",
+			out:     "Hll",
+			outFull: "Hllø",
+			err:     transform.ErrShortDst,
+			t:       remove,
+		},
+		17: {
+			szDst:   4,
+			atEOF:   false,
+			in:      "Hellø",
+			out:     "Hll",
+			outFull: "Hllø",
+			err:     transform.ErrShortDst,
+			t:       remove,
+		},
+		18: {
+			szDst:   8,
+			atEOF:   false,
+			in:      "\x80Hello\uFF24\x80",
+			out:     "\ufffdHll",
+			outFull: "\ufffdHll\ufffd",
+			err:     transform.ErrShortDst,
+			t:       remove,
+		},
+	} {
+		tt.check(t, i)
+	}
+}
+
+func TestMapAlloc(t *testing.T) {
+	if n := testing.AllocsPerRun(3, func() {
+		Map(idem).Transform(nil, nil, false)
+	}); n > 0 {
+		t.Errorf("got %f; want 0", n)
+	}
+}
+
+func rmNop(r rune) bool { return false }
+
+func TestRemoveAlloc(t *testing.T) {
+	if n := testing.AllocsPerRun(3, func() {
+		Remove(Predicate(rmNop)).Transform(nil, nil, false)
+	}); n > 0 {
+		t.Errorf("got %f; want 0", n)
+	}
+}
+
+func BenchmarkRemove(b *testing.B) {
+	dst := make([]byte, len(input))
+	src := []byte(input)
+
+	r := Remove(Predicate(func(r rune) bool { return r == 'e' }))
+	b.ResetTimer()
+
+	for i := 0; i < b.N; i++ {
+		r.Transform(dst, src, true)
+	}
+}
+
+func BenchmarkMapAll(b *testing.B) {
+	dst := make([]byte, 2*len(input))
+	src := []byte(input)
+
+	r := Map(func(r rune) rune { return 'a' })
+	b.ResetTimer()
+
+	for i := 0; i < b.N; i++ {
+		r.Transform(dst, src, true)
+	}
+}
+
+func BenchmarkMapNone(b *testing.B) {
+	dst := make([]byte, 2*len(input))
+	src := []byte(input)
+
+	r := Map(func(r rune) rune { return r })
+	b.ResetTimer()
+
+	for i := 0; i < b.N; i++ {
+		r.Transform(dst, src, true)
+	}
+}
+
+var (
+	input = strings.Repeat("Thé qüick brøwn føx jumps øver the lazy døg. ", 100)
+)
diff --git a/go/src/golang.org/x/text/search/index.go b/go/src/golang.org/x/text/search/index.go
new file mode 100644
index 0000000..64820ad
--- /dev/null
+++ b/go/src/golang.org/x/text/search/index.go
@@ -0,0 +1,47 @@
+// Copyright 2015 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.
+
+// Note: this file is identical to the file text/collate/index.go. Both files
+// will be removed when the new colltab package is finished and in use.
+
+package search
+
+// tableIndex holds information for constructing a table
+// for a certain locale based on the main table.
+type tableIndex struct {
+	lookupOffset uint32
+	valuesOffset uint32
+}
+
+func (t tableIndex) TrieIndex() []uint16 {
+	return mainLookup[:]
+}
+
+func (t tableIndex) TrieValues() []uint32 {
+	return mainValues[:]
+}
+
+func (t tableIndex) FirstBlockOffsets() (lookup, value uint16) {
+	return uint16(t.lookupOffset), uint16(t.valuesOffset)
+}
+
+func (t tableIndex) ExpandElems() []uint32 {
+	return mainExpandElem[:]
+}
+
+func (t tableIndex) ContractTries() []struct{ l, h, n, i uint8 } {
+	return mainCTEntries[:]
+}
+
+func (t tableIndex) ContractElems() []uint32 {
+	return mainContractElem[:]
+}
+
+func (t tableIndex) MaxContractLen() int {
+	return 18 // TODO: generate
+}
+
+func (t tableIndex) VariableTop() uint32 {
+	return varTop
+}
diff --git a/go/src/golang.org/x/text/search/pattern.go b/go/src/golang.org/x/text/search/pattern.go
new file mode 100644
index 0000000..439d1d7
--- /dev/null
+++ b/go/src/golang.org/x/text/search/pattern.go
@@ -0,0 +1,156 @@
+// Copyright 2015 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 search
+
+import (
+	"golang.org/x/text/collate/colltab"
+	newcolltab "golang.org/x/text/internal/colltab"
+)
+
+// TODO: handle variable primary weights?
+
+func (p *Pattern) deleteEmptyElements() {
+	k := 0
+	for _, e := range p.ce {
+		if !isIgnorable(p.m, e) {
+			p.ce[k] = e
+			k++
+		}
+	}
+	p.ce = p.ce[:k]
+}
+
+func isIgnorable(m *Matcher, e colltab.Elem) bool {
+	if e.Primary() > 0 {
+		return false
+	}
+	if e.Secondary() > 0 {
+		if !m.ignoreDiacritics {
+			return false
+		}
+		// Primary value is 0 and ignoreDiacritics is true. In this case we
+		// ignore the tertiary element, as it only pertains to the modifier.
+		return true
+	}
+	// TODO: further distinguish once we have the new implementation.
+	if !(m.ignoreWidth || m.ignoreCase) && e.Tertiary() > 0 {
+		return false
+	}
+	// TODO: we ignore the Quaternary level for now.
+	return true
+}
+
+// TODO: Use a Boyer-Moore-like algorithm (probably Sunday) for searching.
+
+func (p *Pattern) forwardSearch(it *newcolltab.Iter) (start, end int) {
+	for start := 0; it.Next(); it.Reset(start) {
+		nextStart := it.End()
+		if end := p.searchOnce(it); end != -1 {
+			return start, end
+		}
+		start = nextStart
+	}
+	return -1, -1
+}
+
+func (p *Pattern) anchoredForwardSearch(it *newcolltab.Iter) (start, end int) {
+	if it.Next() {
+		if end := p.searchOnce(it); end != -1 {
+			return 0, end
+		}
+	}
+	return -1, -1
+}
+
+// next advances to the next weight in a pattern. f must return one of the
+// weights of a collation element. next will advance to the first non-zero
+// weight and return this weight and true if it exists, or 0, false otherwise.
+func (p *Pattern) next(i *int, f func(colltab.Elem) int) (weight int, ok bool) {
+	for *i < len(p.ce) {
+		v := f(p.ce[*i])
+		*i++
+		if v != 0 {
+			// Skip successive ignorable values.
+			for ; *i < len(p.ce) && f(p.ce[*i]) == 0; *i++ {
+			}
+			return v, true
+		}
+	}
+	return 0, false
+}
+
+// TODO: remove this function once Elem is internal and Tertiary returns int.
+func tertiary(e colltab.Elem) int {
+	return int(e.Tertiary())
+}
+
+// searchOnce tries to match the pattern s.p at the text position i. s.buf needs
+// to be filled with collation elements of the first segment, where n is the
+// number of source bytes consumed for this segment. It will return the end
+// position of the match or -1.
+func (p *Pattern) searchOnce(it *newcolltab.Iter) (end int) {
+	var pLevel [4]int
+
+	m := p.m
+	for {
+		k := 0
+		for ; k < it.N; k++ {
+			if v := it.Elems[k].Primary(); v > 0 {
+				if w, ok := p.next(&pLevel[0], colltab.Elem.Primary); !ok || v != w {
+					return -1
+				}
+			}
+
+			if !m.ignoreDiacritics {
+				if v := it.Elems[k].Secondary(); v > 0 {
+					if w, ok := p.next(&pLevel[1], colltab.Elem.Secondary); !ok || v != w {
+						return -1
+					}
+				}
+			} else if it.Elems[k].Primary() == 0 {
+				// We ignore tertiary values of collation elements of the
+				// secondary level.
+				continue
+			}
+
+			// TODO: distinguish between case and width. This will be easier to
+			// implement after we moved to the new collation implementation.
+			if !m.ignoreWidth && !m.ignoreCase {
+				if v := it.Elems[k].Tertiary(); v > 0 {
+					if w, ok := p.next(&pLevel[2], tertiary); !ok || int(v) != w {
+						return -1
+					}
+				}
+			}
+			// TODO: check quaternary weight
+		}
+		it.Discard() // Remove the current segment from the buffer.
+
+		// Check for completion.
+		switch {
+		// If any of these cases match, we are not at the end.
+		case pLevel[0] < len(p.ce):
+		case !m.ignoreDiacritics && pLevel[1] < len(p.ce):
+		case !(m.ignoreWidth || m.ignoreCase) && pLevel[2] < len(p.ce):
+		default:
+			// At this point, both the segment and pattern has matched fully.
+			// However, the segment may still be have trailing modifiers.
+			// This can be verified by another call to next.
+			end = it.End()
+			if it.Next() && it.Elems[0].Primary() == 0 {
+				if !m.ignoreDiacritics {
+					return -1
+				}
+				end = it.End()
+			}
+			return end
+		}
+
+		// Fill the buffer with the next batch of collation elements.
+		if !it.Next() {
+			return -1
+		}
+	}
+}
diff --git a/go/src/golang.org/x/text/search/pattern_test.go b/go/src/golang.org/x/text/search/pattern_test.go
new file mode 100644
index 0000000..931fa65
--- /dev/null
+++ b/go/src/golang.org/x/text/search/pattern_test.go
@@ -0,0 +1,357 @@
+// Copyright 2015 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 search
+
+import (
+	"reflect"
+	"strings"
+	"testing"
+
+	"golang.org/x/text/language"
+)
+
+func TestCompile(t *testing.T) {
+	for i, tc := range []struct {
+		desc    string
+		pattern string
+		options []Option
+		n       int
+	}{{
+		desc:    "empty",
+		pattern: "",
+		n:       0,
+	}, {
+		desc:    "single",
+		pattern: "a",
+		n:       1,
+	}, {
+		desc:    "keep modifier",
+		pattern: "a\u0300", // U+0300: COMBINING GRAVE ACCENT
+		n:       2,
+	}, {
+		desc:    "remove modifier",
+		pattern: "a\u0300", // U+0300: COMBINING GRAVE ACCENT
+		options: []Option{IgnoreDiacritics},
+		n:       1,
+	}, {
+		desc:    "single with double collation element",
+		pattern: "ä",
+		n:       2,
+	}, {
+		desc:    "leading variable",
+		pattern: " a",
+		n:       2,
+	}, {
+		desc:    "trailing variable",
+		pattern: "aa ",
+		n:       3,
+	}, {
+		desc:    "leading and trailing variable",
+		pattern: " äb ",
+		n:       5,
+	}, {
+		desc:    "keep interior variable",
+		pattern: " ä b ",
+		n:       6,
+	}, {
+		desc:    "keep interior variables",
+		pattern: " b  ä ",
+		n:       7,
+	}, {
+		desc:    "remove ignoreables (zero-weights across the board)",
+		pattern: "\u009Db\u009Dä\u009D", // U+009D: OPERATING SYSTEM COMMAND
+		n:       3,
+	}} {
+		m := New(language.Und, tc.options...)
+		p := m.CompileString(tc.pattern)
+		if len(p.ce) != tc.n {
+			t.Errorf("%d:%s: Compile(%+q): got %d; want %d", i, tc.desc, tc.pattern, len(p.ce), tc.n)
+		}
+	}
+}
+
+func TestNorm(t *testing.T) {
+	// U+0300: COMBINING GRAVE ACCENT (CCC=230)
+	// U+031B: COMBINING HORN (CCC=216)
+	for _, tc := range []struct {
+		desc string
+		a    string
+		b    string
+		want bool // a and b compile into the same pattern?
+	}{{
+		"simple",
+		"eee\u0300\u031b",
+		"eee\u031b\u0300",
+		true,
+	}, {
+		"large number of modifiers in pattern",
+		strings.Repeat("\u0300", 29) + "\u0318",
+		"\u0318" + strings.Repeat("\u0300", 29),
+		true,
+	}, {
+		"modifier overflow in pattern",
+		strings.Repeat("\u0300", 30) + "\u0318",
+		"\u0318" + strings.Repeat("\u0300", 30),
+		false,
+	}} {
+		m := New(language.Und)
+		a := m.CompileString(tc.a)
+		b := m.CompileString(tc.b)
+		if got := reflect.DeepEqual(a, b); got != tc.want {
+			t.Errorf("Compile(a) == Compile(b) == %v; want %v", got, tc.want)
+		}
+	}
+}
+
+func TestForwardSearch(t *testing.T) {
+	for i, tc := range []struct {
+		desc    string
+		tag     string
+		options []Option
+		pattern string
+		text    string
+		want    []int
+	}{{
+		// The semantics of an empty search is to match nothing.
+		// TODO: change this to be in line with strings.Index? It is quite a
+		// different beast, so not sure yet.
+
+		desc:    "empty pattern and text",
+		tag:     "und",
+		pattern: "",
+		text:    "",
+		want:    nil, // TODO: consider: []int{0, 0},
+	}, {
+		desc:    "non-empty pattern and empty text",
+		tag:     "und",
+		pattern: " ",
+		text:    "",
+		want:    nil,
+	}, {
+		desc:    "empty pattern and non-empty text",
+		tag:     "und",
+		pattern: "",
+		text:    "abc",
+		want:    nil, // TODO: consider: []int{0, 0, 1, 1, 2, 2, 3, 3},
+	}, {
+		// Variable-only patterns. We don't support variables at the moment,
+		// but verify that, given this, the behavior is indeed as expected.
+
+		desc:    "exact match of variable",
+		tag:     "und",
+		pattern: " ",
+		text:    " ",
+		want:    []int{0, 1},
+	}, {
+		desc:    "variables not handled by default",
+		tag:     "und",
+		pattern: "- ",
+		text:    " -",
+		want:    nil, // Would be (1, 2) for a median match with variable}.
+	}, {
+		desc:    "multiple subsequent identical variables",
+		tag:     "und",
+		pattern: " ",
+		text:    "    ",
+		want:    []int{0, 1, 1, 2, 2, 3, 3, 4},
+	}, {
+		desc:    "text with variables",
+		tag:     "und",
+		options: []Option{IgnoreDiacritics},
+		pattern: "abc",
+		text:    "3 abc 3",
+		want:    []int{2, 5},
+	}, {
+		desc:    "pattern with interior variables",
+		tag:     "und",
+		options: []Option{IgnoreDiacritics},
+		pattern: "a b c",
+		text:    "3 a b c abc a  b  c 3",
+		want:    []int{2, 7}, // Would have 3 matches using variable.
+
+		// TODO: Different variable handling settings.
+	}, {
+		// Options.
+
+		desc:    "match all levels",
+		tag:     "und",
+		pattern: "Abc",
+		text:    "abcAbcABCÁbcábc",
+		want:    []int{3, 6},
+	}, {
+		desc:    "ignore diacritics in text",
+		tag:     "und",
+		options: []Option{IgnoreDiacritics},
+		pattern: "Abc",
+		text:    "Ábc",
+		want:    []int{0, 4},
+	}, {
+		desc:    "ignore diacritics in pattern",
+		tag:     "und",
+		options: []Option{IgnoreDiacritics},
+		pattern: "Ábc",
+		text:    "Abc",
+		want:    []int{0, 3},
+	}, {
+		desc:    "ignore diacritics",
+		tag:     "und",
+		options: []Option{IgnoreDiacritics},
+		pattern: "Abc",
+		text:    "abcAbcABCÁbcábc",
+		want:    []int{3, 6, 9, 13},
+	}, {
+		desc:    "ignore case",
+		tag:     "und",
+		options: []Option{IgnoreCase},
+		pattern: "Abc",
+		text:    "abcAbcABCÁbcábc",
+		want:    []int{0, 3, 3, 6, 6, 9},
+	}, {
+		desc:    "ignore case and diacritics",
+		tag:     "und",
+		options: []Option{IgnoreCase, IgnoreDiacritics},
+		pattern: "Abc",
+		text:    "abcAbcABCÁbcábc",
+		want:    []int{0, 3, 3, 6, 6, 9, 9, 13, 13, 17},
+	}, {
+		desc:    "ignore width to fullwidth",
+		tag:     "und",
+		options: []Option{IgnoreWidth},
+		pattern: "abc",
+		text:    "123 \uFF41\uFF42\uFF43 123", // U+FF41-3: FULLWIDTH LATIN SMALL LETTER A-C
+		want:    []int{4, 13},
+	}, {
+		// TODO: distinguish between case and width.
+		desc:    "don't ignore width to fullwidth, ignoring only case",
+		tag:     "und",
+		options: []Option{IgnoreCase},
+		pattern: "abc",
+		text:    "123 \uFF41\uFF42\uFF43 123", // U+FF41-3: FULLWIDTH LATIN SMALL LETTER A-C
+		want:    []int{4, 13},
+	}, {
+		desc:    "ignore width to fullwidth and diacritics",
+		tag:     "und",
+		options: []Option{IgnoreWidth, IgnoreDiacritics},
+		pattern: "abc",
+		text:    "123 \uFF41\uFF42\uFF43 123", // U+FF41-3: FULLWIDTH LATIN SMALL LETTER A-C
+		want:    []int{4, 13},
+	}, {
+		desc:    "whole grapheme, single rune",
+		tag:     "und",
+		pattern: "eee",
+		text:    "123 eeé 123",
+		want:    nil,
+	}, {
+		// Note: rules on when to apply contractions may, for certain languages,
+		// differ between search and collation. For example, "ch" is not
+		// considered a contraction for the purpose of searching in Spanish.
+		// Therefore, be careful picking this test.
+		desc:    "whole grapheme, contractions",
+		tag:     "da",
+		pattern: "aba",
+		// Fails at the primary level, because "aa" is a contraction.
+		text: "123 abaa 123",
+		want: []int{},
+	}, {
+		desc:    "whole grapheme, trailing modifier",
+		tag:     "und",
+		pattern: "eee",
+		text:    "123 eee\u0300 123", // U+0300: COMBINING GRAVE ACCENT
+		want:    nil,
+	}, {
+		// Language-specific matching.
+
+		desc:    "",
+		tag:     "da",
+		options: []Option{IgnoreCase},
+		pattern: "Århus",
+		text:    "AarhusÅrhus  Århus  ",
+		want:    []int{0, 6, 6, 12, 14, 20},
+	}, {
+		desc:    "",
+		tag:     "da",
+		options: []Option{IgnoreCase},
+		pattern: "Aarhus",
+		text:    "Århus Aarhus",
+		want:    []int{0, 6, 7, 13},
+	}, {
+		desc:    "",
+		tag:     "en", // Å does not match A for English.
+		options: []Option{IgnoreCase},
+		pattern: "Aarhus",
+		text:    "Århus",
+		want:    nil,
+	}, {
+		desc:    "ignore modifier in text",
+		options: []Option{IgnoreDiacritics},
+		tag:     "und",
+		pattern: "eee",
+		text:    "123 eee\u0300 123", // U+0300: COMBINING GRAVE ACCENT
+		want:    []int{4, 9},         // Matches on grapheme boundary.
+	}, {
+		desc:    "ignore multiple modifiers in text",
+		options: []Option{IgnoreDiacritics},
+		tag:     "und",
+		pattern: "eee",
+		text:    "123 eee\u0300\u0300 123", // U+0300: COMBINING GRAVE ACCENT
+		want:    []int{4, 11},              // Matches on grapheme boundary.
+	}, {
+		desc:    "ignore modifier in pattern",
+		options: []Option{IgnoreDiacritics},
+		tag:     "und",
+		pattern: "eee\u0300", // U+0300: COMBINING GRAVE ACCENT
+		text:    "123 eee 123",
+		want:    []int{4, 7},
+	}, {
+		desc:    "ignore multiple modifiers in pattern",
+		options: []Option{IgnoreDiacritics},
+		tag:     "und",
+		pattern: "eee\u0300\u0300", // U+0300: COMBINING GRAVE ACCENT
+		text:    "123 eee 123",
+		want:    []int{4, 7},
+	}, {
+		desc: "match non-normalized pattern",
+		tag:  "und",
+		// U+0300: COMBINING GRAVE ACCENT (CCC=230)
+		// U+031B: COMBINING HORN (CCC=216)
+		pattern: "eee\u0300\u031b",
+		text:    "123 eee\u031b\u0300 123",
+		want:    []int{4, 11},
+	}, {
+		desc: "match non-normalized text",
+		tag:  "und",
+		// U+0300: COMBINING GRAVE ACCENT (CCC=230)
+		// U+031B: COMBINING HORN (CCC=216)
+		pattern: "eee\u031b\u0300",
+		text:    "123 eee\u0300\u031b 123",
+		want:    []int{4, 11},
+	}} {
+		m := New(language.MustParse(tc.tag), tc.options...)
+		p := m.CompileString(tc.pattern)
+		for j := 0; j < len(tc.text); {
+			start, end := p.IndexString(tc.text[j:])
+			if start == -1 && end == -1 {
+				j++
+				continue
+			}
+			start += j
+			end += j
+			j = end
+			if len(tc.want) == 0 {
+				t.Errorf("%d:%s: found unexpected result [%d %d]", i, tc.desc, start, end)
+				break
+			}
+			if tc.want[0] != start || tc.want[1] != end {
+				t.Errorf("%d:%s: got [%d %d]; want %v", i, tc.desc, start, end, tc.want[:2])
+				tc.want = tc.want[2:]
+				break
+			}
+			tc.want = tc.want[2:]
+		}
+		if len(tc.want) != 0 {
+			t.Errorf("%d:%s: %d extra results", i, tc.desc, len(tc.want)/2)
+		}
+	}
+}
diff --git a/go/src/golang.org/x/text/search/search.go b/go/src/golang.org/x/text/search/search.go
new file mode 100644
index 0000000..a5e1cca
--- /dev/null
+++ b/go/src/golang.org/x/text/search/search.go
@@ -0,0 +1,238 @@
+// Copyright 2015 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.
+
+//go:generate go run ../collate/maketables.go -cldr=23 -unicode=6.2.0 -types=search,searchjl -package=search
+
+// Package search provides language-specific search and string matching.
+//
+// Natural language matching can be intricate. For example, Danish will insist
+// "Århus" and "Aarhus" are the same name and Turkish will match I to ı (note
+// the lack of a dot) in a case-insensitive match. This package handles such
+// language-specific details.
+//
+// Text passed to any of the calls in this message does not need to be
+// normalized.
+package search
+
+import (
+	"strings"
+
+	"golang.org/x/text/collate/colltab"
+	newcolltab "golang.org/x/text/internal/colltab"
+	"golang.org/x/text/language"
+)
+
+// An Option configures a Matcher.
+type Option func(*Matcher)
+
+var (
+	// WholeWord restricts matches to complete words. The default is to match at
+	// the character level.
+	WholeWord Option = nil
+
+	// Exact requires that two strings are their exact equivalent. For example
+	// å would not match aa in Danish. It overrides any of the ignore options.
+	Exact Option = nil
+
+	// Loose causes case, diacritics and width to be ignored.
+	Loose Option = loose
+
+	// IgnoreCase enables case-insensitive search.
+	IgnoreCase Option = ignoreCase
+
+	// IgnoreDiacritics causes diacritics to be ignored ("ö" == "o").
+	IgnoreDiacritics Option = ignoreDiacritics
+
+	// IgnoreWidth equates narrow with wide variants.
+	IgnoreWidth Option = ignoreWidth
+)
+
+func ignoreDiacritics(m *Matcher) { m.ignoreDiacritics = true }
+func ignoreCase(m *Matcher)       { m.ignoreCase = true }
+func ignoreWidth(m *Matcher)      { m.ignoreWidth = true }
+func loose(m *Matcher) {
+	ignoreDiacritics(m)
+	ignoreCase(m)
+	ignoreWidth(m)
+}
+
+var (
+	// Supported lists the languages for which search differs from its parent.
+	Supported language.Coverage
+
+	tags []language.Tag
+)
+
+func init() {
+	ids := strings.Split(availableLocales, ",")
+	tags = make([]language.Tag, len(ids))
+	for i, s := range ids {
+		tags[i] = language.Raw.MustParse(s)
+	}
+	Supported = language.NewCoverage(tags)
+}
+
+// New returns a new Matcher for the given language and options.
+func New(t language.Tag, opts ...Option) *Matcher {
+	m := &Matcher{
+		w: colltab.Init(locales[newcolltab.MatchLang(t, tags)]),
+	}
+	for _, f := range opts {
+		f(m)
+	}
+	return m
+}
+
+// A Matcher implements language-specific string matching.
+type Matcher struct {
+	w                colltab.Weighter
+	ignoreCase       bool
+	ignoreWidth      bool
+	ignoreDiacritics bool
+}
+
+// An IndexOption specifies how the Index methods of Pattern or Matcher should
+// match the input.
+type IndexOption byte
+
+const (
+	// Anchor restricts the search to the start (or end for Backwards) of the
+	// text.
+	Anchor IndexOption = 1 << iota
+
+	// Backwards starts the search from the end of the text.
+	Backwards
+
+	anchorBackwards = Anchor | Backwards
+)
+
+// Index reports the start and end position of the first occurrence of pat in b
+// or -1, -1 if pat is not present.
+func (m *Matcher) Index(b, pat []byte, opts ...IndexOption) (start, end int) {
+	// TODO: implement optimized version that does not use a pattern.
+	return m.Compile(pat).Index(b, opts...)
+}
+
+// IndexString reports the start and end position of the first occurrence of pat
+// in s or -1, -1 if pat is not present.
+func (m *Matcher) IndexString(s, pat string, opts ...IndexOption) (start, end int) {
+	// TODO: implement optimized version that does not use a pattern.
+	return m.CompileString(pat).IndexString(s, opts...)
+}
+
+// Equal reports whether a and b are equivalent.
+func (m *Matcher) Equal(a, b []byte) bool {
+	_, end := m.Index(a, b, Anchor)
+	return end == len(a)
+}
+
+// EqualString reports whether a and b are equivalent.
+func (m *Matcher) EqualString(a, b string) bool {
+	_, end := m.IndexString(a, b, Anchor)
+	return end == len(a)
+}
+
+// Compile compiles and returns a pattern that can be used for faster searching.
+func (m *Matcher) Compile(b []byte) *Pattern {
+	p := &Pattern{m: m}
+	iter := newcolltab.Iter{Weighter: m.w}
+	for iter.SetInput(b); iter.Next(); {
+	}
+	p.ce = iter.Elems
+	p.deleteEmptyElements()
+	return p
+}
+
+// CompileString compiles and returns a pattern that can be used for faster
+// searching.
+func (m *Matcher) CompileString(s string) *Pattern {
+	p := &Pattern{m: m}
+	iter := newcolltab.Iter{Weighter: m.w}
+	for iter.SetInputString(s); iter.Next(); {
+	}
+	p.ce = iter.Elems
+	p.deleteEmptyElements()
+	return p
+}
+
+// A Pattern is a compiled search string. It is safe for concurrent use.
+type Pattern struct {
+	m  *Matcher
+	ce []colltab.Elem
+}
+
+// Design note (TODO remove):
+// The cost of retrieving collation elements for each rune, which is used for
+// search as well, is not trivial. Also, algorithms like Boyer-Moore and
+// Sunday require some additional precomputing.
+
+// Index reports the start and end position of the first occurrence of p in b
+// or -1, -1 if p is not present.
+func (p *Pattern) Index(b []byte, opts ...IndexOption) (start, end int) {
+	// Pick a large enough buffer such that we likely do not need to allocate
+	// and small enough to not cause too much overhead initializing.
+	var buf [8]colltab.Elem
+
+	it := &newcolltab.Iter{
+		Weighter: p.m.w,
+		Elems:    buf[:0],
+	}
+	it.SetInput(b)
+
+	var optMask IndexOption
+	for _, o := range opts {
+		optMask |= o
+	}
+
+	switch optMask {
+	case 0:
+		return p.forwardSearch(it)
+	case Anchor:
+		return p.anchoredForwardSearch(it)
+	case Backwards, anchorBackwards:
+		panic("TODO: implement")
+	default:
+		panic("unrecognized option")
+	}
+}
+
+// IndexString reports the start and end position of the first occurrence of p
+// in s or -1, -1 if p is not present.
+func (p *Pattern) IndexString(s string, opts ...IndexOption) (start, end int) {
+	// Pick a large enough buffer such that we likely do not need to allocate
+	// and small enough to not cause too much overhead initializing.
+	var buf [8]colltab.Elem
+
+	it := &newcolltab.Iter{
+		Weighter: p.m.w,
+		Elems:    buf[:0],
+	}
+	it.SetInputString(s)
+
+	var optMask IndexOption
+	for _, o := range opts {
+		optMask |= o
+	}
+
+	switch optMask {
+	case 0:
+		return p.forwardSearch(it)
+	case Anchor:
+		return p.anchoredForwardSearch(it)
+	case Backwards, anchorBackwards:
+		panic("TODO: implement")
+	default:
+		panic("unrecognized option")
+	}
+}
+
+// TODO:
+// - Maybe IndexAll methods (probably not necessary).
+// - Some way to match patterns in a Reader (a bit tricky).
+// - Some fold transformer that folds text to comparable text, based on the
+//   search options. This is a common technique, though very different from the
+//   collation-based design of this package. It has a somewhat different use
+//   case, so probably makes sense to support both. Should probably be in a
+//   different package, though, as it uses completely different kind of tables
+//   (based on norm, cases, width and range tables.)
diff --git a/go/src/golang.org/x/text/search/tables.go b/go/src/golang.org/x/text/search/tables.go
new file mode 100644
index 0000000..09beb8b
--- /dev/null
+++ b/go/src/golang.org/x/text/search/tables.go
@@ -0,0 +1,12448 @@
+// This file was generated by go generate; DO NOT EDIT
+
+package search
+
+// UnicodeVersion is the Unicode version from which the tables in this package are derived.
+const UnicodeVersion = "6.2.0"
+
+// CLDRVersion is the CLDR version from which the tables in this package are derived.
+const CLDRVersion = "23"
+
+var availableLocales = "und,az,bs,ca,cs,da,de,en,en-US,es,fi,fo,fr,he,hr,is,kl,ko,ko-u-co-searchjl,nb,nn,se,sk,sr-Latn,sv,tr"
+
+const varTop = 0x30e
+
+var locales = [...]tableIndex{
+	{ // und
+		lookupOffset: 0x28,
+		valuesOffset: 0x1f6,
+	},
+	{ // az
+		lookupOffset: 0x1d,
+		valuesOffset: 0x1b4,
+	},
+	{ // bs
+		lookupOffset: 0x15,
+		valuesOffset: 0x0,
+	},
+	{ // ca
+		lookupOffset: 0x20,
+		valuesOffset: 0x1d8,
+	},
+	{ // cs
+		lookupOffset: 0x22,
+		valuesOffset: 0x1dc,
+	},
+	{ // da
+		lookupOffset: 0x25,
+		valuesOffset: 0x1e6,
+	},
+	{ // de
+		lookupOffset: 0x27,
+		valuesOffset: 0x1f0,
+	},
+	{ // en
+		lookupOffset: 0x28,
+		valuesOffset: 0x1f6,
+	},
+	{ // en-US
+		lookupOffset: 0x28,
+		valuesOffset: 0x1f6,
+	},
+	{ // es
+		lookupOffset: 0x29,
+		valuesOffset: 0x1f8,
+	},
+	{ // fi
+		lookupOffset: 0x2f,
+		valuesOffset: 0x1fb,
+	},
+	{ // fo
+		lookupOffset: 0x25,
+		valuesOffset: 0x1e6,
+	},
+	{ // fr
+		lookupOffset: 0x28,
+		valuesOffset: 0x1f6,
+	},
+	{ // he
+		lookupOffset: 0x31,
+		valuesOffset: 0x20b,
+	},
+	{ // hr
+		lookupOffset: 0x33,
+		valuesOffset: 0x210,
+	},
+	{ // is
+		lookupOffset: 0x35,
+		valuesOffset: 0x217,
+	},
+	{ // kl
+		lookupOffset: 0x36,
+		valuesOffset: 0x221,
+	},
+	{ // ko
+		lookupOffset: 0x38,
+		valuesOffset: 0x1f6,
+	},
+	{ // ko-u-co-searchjl
+		lookupOffset: 0x3b,
+		valuesOffset: 0x0,
+	},
+	{ // nb
+		lookupOffset: 0x25,
+		valuesOffset: 0x22f,
+	},
+	{ // nn
+		lookupOffset: 0x25,
+		valuesOffset: 0x22f,
+	},
+	{ // se
+		lookupOffset: 0x3e,
+		valuesOffset: 0x231,
+	},
+	{ // sk
+		lookupOffset: 0x40,
+		valuesOffset: 0x23d,
+	},
+	{ // sr-Latn
+		lookupOffset: 0x15,
+		valuesOffset: 0x0,
+	},
+	{ // sv
+		lookupOffset: 0x42,
+		valuesOffset: 0x244,
+	},
+	{ // tr
+		lookupOffset: 0x48,
+		valuesOffset: 0x24c,
+	},
+}
+
+// mainExpandElem: 10841 entries, 43364 bytes
+var mainExpandElem = [10841]uint32{
+	// Block 0, offset 0x0
+	0x00000002, 0xAE604702, 0xAE603202, 0x00000002, 0xA000A51A, 0xA000BA1A,
+	0x00000002, 0xA000A91A, 0xA000BA1A, 0x00000002, 0xA000AD1A, 0xA000BA1A,
+	0x00000002, 0xA000B21A, 0xA000BA1A, 0x00000002, 0xA000B61A, 0xA000BA1A,
+	0x00000002, 0xA000BA1A, 0xA000D11A, 0x00000004, 0x0003F484, 0x0029CE84,
+	0x0029CC84, 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, 0x0029CE84,
+	0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, 0x0029D084, 0x0003F69F,
+	0x00000004, 0x0003F484, 0x0029CE84, 0x0029D284, 0x0003F69F, 0x00000004,
+	0x0003F484, 0x0029CE84, 0x0029D484, 0x0003F69F, 0x00000004, 0x0003F484,
+	0x0029CE84, 0x0029D684, 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84,
+	0x0029D884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, 0x0029DA84,
+	0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84,
+	// Block 1, offset 0x40
+	0x0029DC84, 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, 0x0029DE84,
+	0x0003F69F, 0x00000004, 0x0003F484, 0x0029D084, 0x0029CC84, 0x0003F69F,
+	0x00000004, 0x0003F484, 0x0062AC84, 0x0063A884, 0x0003F69F, 0x00000004,
+	0x0003F484, 0x0062B084, 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484,
+	0x0062B284, 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062B684,
+	0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062B884, 0x0063A884,
+	0x0003F69F, 0x00000004, 0x0003F484, 0x0062BA84, 0x0063A884, 0x0003F69F,
+	0x00000004, 0x0003F484, 0x0062BE84, 0x0063A884, 0x0003F69F, 0x00000004,
+	0x0003F484, 0x0062C284, 0x0063A884, 0x0003F69F, 0x00000007, 0x0003F484,
+	0x0062C284, 0x0063B884, 0x0062C484, 0x0063B084, 0x00646A84, 0x0003F69F,
+	0x00000006, 0x0003F484, 0x0062C284, 0x0063B884,
+	// Block 2, offset 0x80
+	0x0062D084, 0x0063C284, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062C484,
+	0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062C484, 0x0063C284,
+	0x0003F69F, 0x00000004, 0x0003F484, 0x0062C884, 0x0063A884, 0x0003F69F,
+	0x00000004, 0x0003F484, 0x0062CA84, 0x0063A884, 0x0003F69F, 0x00000004,
+	0x0003F484, 0x0062CC84, 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484,
+	0x0062CE84, 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062D084,
+	0x0063A884, 0x0003F69F, 0x00000004, 0x00050E84, 0x00050E84, 0x00050E84,
+	0x00050E9F, 0x00000002, 0x40062C20, 0xAE603202, 0x00000002, 0x40062C20,
+	0xAE603502, 0x00000002, 0x40062C20, 0xAE604502, 0x00000002, 0x40063620,
+	0xAE603202, 0x00000002, 0x40063620, 0xAE603502, 0x00000002, 0x40063620,
+	0xAE604502, 0x00000002, 0x40063820, 0xAE603202,
+	// Block 3, offset 0xc0
+	0x00000002, 0x40063820, 0xAE603502, 0x00000002, 0x40063820, 0xAE604502,
+	0x00000002, 0x40084420, 0xA0105402, 0x00000002, 0x40084620, 0xA0105402,
+	0x00000002, 0x40084C20, 0xA0105402, 0x00000002, 0x4008B820, 0xA0105402,
+	0x00000002, 0x4008BC20, 0xA0105402, 0x00000002, 0x4008C020, 0xA0105402,
+	0x00000002, 0x40091E20, 0xA0105402, 0x00000002, 0x40092620, 0xA0105402,
+	0x00000002, 0x40092A20, 0xA0105402, 0x00000002, 0x40094020, 0xA0105402,
+	0x00000002, 0x40094220, 0xA0105402, 0x00000002, 0x40094420, 0xA0105402,
+	0x00000002, 0x40097820, 0xA0105402, 0x00000002, 0x40097A20, 0xA0105402,
+	0x00000004, 0x00098484, 0x00098484, 0x00098484, 0x0009849F, 0x00000002,
+	0x40099E20, 0xA0105402, 0x00000002, 0x4009AA20, 0xA0105402, 0x00000002,
+	0x4009AC20, 0xA0105402, 0x00000002, 0x4009B020,
+	// Block 4, offset 0x100
+	0xA0105402, 0x00000002, 0x4009B820, 0xA0105402, 0x00000002, 0x4009DE20,
+	0xA0105402, 0x00000002, 0x4009E220, 0xA0105402, 0x00000002, 0x4009E420,
+	0xA0105402, 0x00000002, 0x4009F420, 0xA0105402, 0x00000002, 0x4009F620,
+	0xA0105402, 0x00000002, 0x4009F820, 0xA0105402, 0x00000002, 0x4009FA20,
+	0xA0105402, 0x00000002, 0x4009FC20, 0xA0105402, 0x00000002, 0x4009FE20,
+	0xA0105402, 0x00000002, 0x400A0020, 0xA0105402, 0x00000002, 0x400A0220,
+	0xA0105402, 0x00000002, 0x400A0820, 0xA0105402, 0x00000002, 0x400A0A20,
+	0xA0105402, 0x00000002, 0x400A0C20, 0xA0105402, 0x00000002, 0x400A0E20,
+	0xA0105402, 0x00000002, 0x400A1E20, 0xA0105402, 0x00000002, 0x400A2020,
+	0xA0105402, 0x00000002, 0x400A4020, 0xA0105402, 0x00000002, 0x400A4C20,
+	0xA0105402, 0x00000002, 0x400A4E20, 0xA0105402,
+	// Block 5, offset 0x140
+	0x00000002, 0x400A5220, 0xA0105402, 0x00000002, 0x400A5820, 0xA0105402,
+	0x00000002, 0x400A5A20, 0xA0105402, 0x00000002, 0x400A5C20, 0xA0105402,
+	0x00000002, 0x400A5E20, 0xA0105402, 0x00000002, 0x40164620, 0xA0105402,
+	0x00000002, 0x4027CE20, 0xA0012802, 0x00000002, 0x4027D020, 0xA0012802,
+	0x00000002, 0x4027D420, 0xA0812802, 0x00000002, 0x4027D820, 0xA0812802,
+	0x00000002, 0x4029CC20, 0xA0013F02, 0x00000002, 0x4029CC20, 0xA0014002,
+	0x00000002, 0x4029CC20, 0xA0014202, 0x00000002, 0x4029CC20, 0xA0014402,
+	0x00000002, 0x4029CC20, 0xA0014502, 0x00000002, 0x4029CC20, 0xA0014602,
+	0x00000002, 0x4029CC20, 0xA0014702, 0x00000002, 0x4029CC20, 0xA0014802,
+	0x00000002, 0x4029CC20, 0xA0014902, 0x00000002, 0x4029CC20, 0xA0014A02,
+	0x00000002, 0x4029CC20, 0xA0014B02, 0x00000002,
+	// Block 6, offset 0x180
+	0x4029CC20, 0xA0014B02, 0x00000002, 0x4029CC20, 0xA0014C02, 0x00000002,
+	0x4029CC20, 0xA0014D02, 0x00000002, 0x4029CC20, 0xA0014E02, 0x00000002,
+	0x4029CC20, 0xA0014F02, 0x00000002, 0x4029CC20, 0xA0015002, 0x00000002,
+	0x4029CC20, 0xA0015102, 0x00000002, 0x4029CC20, 0xA0015202, 0x00000002,
+	0x4029CC20, 0xA0015302, 0x00000002, 0x4029CC20, 0xA0015402, 0x00000002,
+	0x4029CC20, 0xA0015502, 0x00000002, 0x4029CC20, 0xA0015602, 0x00000002,
+	0x0029CC84, 0xA0015604, 0x00000002, 0x4029CC20, 0xA0015702, 0x00000002,
+	0x4029CC20, 0xA0015802, 0x00000002, 0x4029CC20, 0xA0015902, 0x00000002,
+	0x4029CC20, 0xA0015A02, 0x00000002, 0x4029CC20, 0xA0015B02, 0x00000002,
+	0x4029CC20, 0xA0015C02, 0x00000002, 0x4029CC20, 0xA0015D02, 0x00000002,
+	0x4029CC20, 0xA0015E02, 0x00000002, 0x4029CC20,
+	// Block 7, offset 0x1c0
+	0xA0015F02, 0x00000002, 0x4029CC20, 0xA0016002, 0x00000002, 0x4029CC20,
+	0xA0016102, 0x00000002, 0x4029CC20, 0xA0016202, 0x00000002, 0x4029CC20,
+	0xA0016302, 0x00000002, 0x4029CC20, 0xA0016402, 0x00000002, 0x4029CC20,
+	0xA0016502, 0x00000002, 0x4029CC20, 0xA0016602, 0x00000002, 0x4029CC20,
+	0xA0016802, 0x00000002, 0x4029CC20, 0xA0017202, 0x00000002, 0x4029CC20,
+	0xA0017302, 0x00000002, 0x4029CC20, 0xA0017402, 0x00000003, 0x0029CC9E,
+	0x0009589E, 0x0029D29E, 0x00000002, 0x4029CE20, 0xA0013F02, 0x00000002,
+	0x4029CE20, 0xA0014002, 0x00000002, 0x4029CE20, 0xA0014102, 0x00000002,
+	0x4029CE20, 0xA0014202, 0x00000002, 0x4029CE20, 0xA0014302, 0x00000002,
+	0x4029CE20, 0xA0014402, 0x00000002, 0x4029CE20, 0xA0014502, 0x00000002,
+	0x4029CE20, 0xA0014602, 0x00000002, 0x4029CE20,
+	// Block 8, offset 0x200
+	0xA0014702, 0x00000002, 0x4029CE20, 0xA0014802, 0x00000002, 0x4029CE20,
+	0xA0014902, 0x00000002, 0x4029CE20, 0xA0014A02, 0x00000002, 0x4029CE20,
+	0xA0014B02, 0x00000002, 0x4029CE20, 0xA0014B02, 0x00000002, 0x4029CE20,
+	0xA0014B02, 0x00000002, 0x4029CE20, 0xA0014C02, 0x00000002, 0x4029CE20,
+	0xA0014D02, 0x00000002, 0x4029CE20, 0xA0014E02, 0x00000002, 0x4029CE20,
+	0xA0014F02, 0x00000002, 0x4029CE20, 0xA0015002, 0x00000002, 0x4029CE20,
+	0xA0015102, 0x00000002, 0x4029CE20, 0xA0015102, 0x00000002, 0x4029CE20,
+	0xA0015202, 0x00000002, 0x4029CE20, 0xA0015302, 0x00000002, 0x4029CE20,
+	0xA0015402, 0x00000002, 0x4029CE20, 0xA0015502, 0x00000002, 0x4029CE20,
+	0xA0015602, 0x00000002, 0x0029CE84, 0xA0015604, 0x00000002, 0x4029CE20,
+	0xA0015702, 0x00000002, 0x4029CE20, 0xA0015802,
+	// Block 9, offset 0x240
+	0x00000002, 0x4029CE20, 0xA0015902, 0x00000002, 0x4029CE20, 0xA0015A02,
+	0x00000002, 0x4029CE20, 0xA0015B02, 0x00000002, 0x4029CE20, 0xA0015C02,
+	0x00000002, 0x4029CE20, 0xA0015D02, 0x00000002, 0x4029CE20, 0xA0015E02,
+	0x00000002, 0x4029CE20, 0xA0015F02, 0x00000002, 0x4029CE20, 0xA0016002,
+	0x00000002, 0x4029CE20, 0xA0016102, 0x00000002, 0x4029CE20, 0xA0016202,
+	0x00000002, 0x4029CE20, 0xA0016302, 0x00000002, 0x4029CE20, 0xA0016402,
+	0x00000002, 0x4029CE20, 0xA0016502, 0x00000002, 0x4029CE20, 0xA0016602,
+	0x00000002, 0x4029CE20, 0xA0016702, 0x00000002, 0x4029CE20, 0xA0016802,
+	0x00000002, 0x4029CE20, 0xA0016802, 0x00000002, 0x4029CE20, 0xA0016802,
+	0x00000002, 0x4029CE20, 0xA0016802, 0x00000002, 0x4029CE20, 0xA0016A02,
+	0x00000002, 0x4029CE20, 0xA0016B02, 0x00000002,
+	// Block 10, offset 0x280
+	0x4029CE20, 0xA0016C02, 0x00000002, 0x4029CE20, 0xA0016C02, 0x00000002,
+	0x4029CE20, 0xA0016C02, 0x00000002, 0x4029CE20, 0xA0016C02, 0x00000002,
+	0x4029CE20, 0xA0016C02, 0x00000002, 0x4029CE20, 0xA0016C02, 0x00000002,
+	0x4029CE20, 0xA0016D02, 0x00000002, 0x4029CE20, 0xA0016E02, 0x00000002,
+	0x4029CE20, 0xA0016F02, 0x00000002, 0x4029CE20, 0xA0017002, 0x00000002,
+	0x4029CE20, 0xA0017102, 0x00000002, 0x4029CE20, 0xA0017202, 0x00000002,
+	0x4029CE20, 0xA0017302, 0x00000002, 0x4029CE20, 0xA0017402, 0x00000002,
+	0x4029CE20, 0xA0017502, 0x00000002, 0x4029CE20, 0xA0017602, 0x00000002,
+	0x4029CE20, 0xA0017702, 0x00000004, 0x0029CE9E, 0x0009589E, 0x0029CE9E,
+	0x0029CC9E, 0x00000003, 0x0029CE9E, 0x0009589E, 0x0029D09E, 0x00000003,
+	0x0029CE9E, 0x0009589E, 0x0029D29E, 0x00000003,
+	// Block 11, offset 0x2c0
+	0x0029CE9E, 0x0009589E, 0x0029D49E, 0x00000003, 0x0029CE9E, 0x0009589E,
+	0x0029D69E, 0x00000003, 0x0029CE9E, 0x0009589E, 0x0029D89E, 0x00000003,
+	0x0029CE9E, 0x0009589E, 0x0029DA9E, 0x00000003, 0x0029CE9E, 0x0009589E,
+	0x0029DC9E, 0x00000003, 0x0029CE9E, 0x0009589E, 0x0029DE9E, 0x00000002,
+	0x0029CE86, 0x0029CC86, 0x00000002, 0x0029CE86, 0x0029CC86, 0x00000002,
+	0x0029CE86, 0x0029CC86, 0x00000002, 0x0029CE86, 0x0029CC86, 0x00000002,
+	0x0029CE86, 0x0029CC86, 0x00000002, 0x0029CE86, 0x0029CE86, 0x00000002,
+	0x0029CE86, 0x0029D086, 0x00000002, 0x0029CE86, 0x0029D286, 0x00000002,
+	0x0029CE86, 0x0029D486, 0x00000002, 0x0029CE86, 0x0029D686, 0x00000002,
+	0x0029CE86, 0x0029D886, 0x00000002, 0x0029CE86, 0x0029DA86, 0x00000002,
+	0x0029CE86, 0x0029DC86, 0x00000002, 0x0029CE86,
+	// Block 12, offset 0x300
+	0x0029DE86, 0x00000002, 0x4029D020, 0xA0013F02, 0x00000002, 0x4029D020,
+	0xA0014002, 0x00000002, 0x4029D020, 0xA0014102, 0x00000002, 0x4029D020,
+	0xA0014202, 0x00000002, 0x4029D020, 0xA0014302, 0x00000002, 0x4029D020,
+	0xA0014402, 0x00000002, 0x4029D020, 0xA0014502, 0x00000002, 0x4029D020,
+	0xA0014602, 0x00000002, 0x4029D020, 0xA0014702, 0x00000002, 0x4029D020,
+	0xA0014802, 0x00000002, 0x4029D020, 0xA0014902, 0x00000002, 0x4029D020,
+	0xA0014A02, 0x00000002, 0x4029D020, 0xA0014B02, 0x00000002, 0x4029D020,
+	0xA0014B02, 0x00000002, 0x4029D020, 0xA0014B02, 0x00000002, 0x4029D020,
+	0xA0014C02, 0x00000002, 0x4029D020, 0xA0014D02, 0x00000002, 0x4029D020,
+	0xA0014E02, 0x00000002, 0x4029D020, 0xA0014F02, 0x00000002, 0x4029D020,
+	0xA0015002, 0x00000002, 0x4029D020, 0xA0015102,
+	// Block 13, offset 0x340
+	0x00000002, 0x4029D020, 0xA0015202, 0x00000002, 0x4029D020, 0xA0015302,
+	0x00000002, 0x4029D020, 0xA0015402, 0x00000002, 0x4029D020, 0xA0015502,
+	0x00000002, 0x4029D020, 0xA0015602, 0x00000002, 0x0029D084, 0xA0015604,
+	0x00000002, 0x4029D020, 0xA0015702, 0x00000002, 0x4029D020, 0xA0015802,
+	0x00000002, 0x4029D020, 0xA0015902, 0x00000002, 0x4029D020, 0xA0015A02,
+	0x00000002, 0x4029D020, 0xA0015B02, 0x00000002, 0x4029D020, 0xA0015C02,
+	0x00000002, 0x4029D020, 0xA0015D02, 0x00000002, 0x4029D020, 0xA0015E02,
+	0x00000002, 0x4029D020, 0xA0015F02, 0x00000002, 0x4029D020, 0xA0016002,
+	0x00000002, 0x4029D020, 0xA0016102, 0x00000002, 0x4029D020, 0xA0016202,
+	0x00000002, 0x4029D020, 0xA0016302, 0x00000002, 0x4029D020, 0xA0016402,
+	0x00000002, 0x4029D020, 0xA0016502, 0x00000002,
+	// Block 14, offset 0x380
+	0x4029D020, 0xA0016602, 0x00000002, 0x4029D020, 0xA0016702, 0x00000002,
+	0x4029D020, 0xA0016802, 0x00000002, 0x4029D020, 0xA0016802, 0x00000002,
+	0x4029D020, 0xA0016802, 0x00000002, 0x4029D020, 0xA0016802, 0x00000002,
+	0x4029D020, 0xA0016B02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002,
+	0x4029D020, 0xA0016C02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002,
+	0x4029D020, 0xA0016C02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002,
+	0x4029D020, 0xA0016C02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002,
+	0x4029D020, 0xA0016C02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002,
+	0x4029D020, 0xA0016E02, 0x00000002, 0x4029D020, 0xA0016F02, 0x00000002,
+	0x4029D020, 0xA0017002, 0x00000002, 0x4029D020, 0xA0017102, 0x00000002,
+	0x4029D020, 0xA0017202, 0x00000002, 0x4029D020,
+	// Block 15, offset 0x3c0
+	0xA0017302, 0x00000002, 0x4029D020, 0xA0017402, 0x00000002, 0x4029D020,
+	0xA0017502, 0x00000002, 0x4029D020, 0xA0017602, 0x00000002, 0x4029D020,
+	0xA0017702, 0x00000003, 0x0029D09E, 0x0009589E, 0x0029D29E, 0x00000003,
+	0x0029D09E, 0x0009589E, 0x0029D69E, 0x00000002, 0x0029D086, 0x0029CC86,
+	0x00000002, 0x0029D086, 0x0029CC86, 0x00000002, 0x4029D220, 0xA0013F02,
+	0x00000002, 0x4029D220, 0xA0014002, 0x00000002, 0x4029D220, 0xA0014102,
+	0x00000002, 0x4029D220, 0xA0014202, 0x00000002, 0x4029D220, 0xA0014302,
+	0x00000002, 0x4029D220, 0xA0014402, 0x00000002, 0x4029D220, 0xA0014502,
+	0x00000002, 0x4029D220, 0xA0014602, 0x00000002, 0x4029D220, 0xA0014702,
+	0x00000002, 0x4029D220, 0xA0014802, 0x00000002, 0x4029D220, 0xA0014902,
+	0x00000002, 0x4029D220, 0xA0014A02, 0x00000002,
+	// Block 16, offset 0x400
+	0x4029D220, 0xA0014B02, 0x00000002, 0x4029D220, 0xA0014B02, 0x00000002,
+	0x4029D220, 0xA0014B02, 0x00000002, 0x4029D220, 0xA0014C02, 0x00000002,
+	0x4029D220, 0xA0014D02, 0x00000002, 0x4029D220, 0xA0014E02, 0x00000002,
+	0x4029D220, 0xA0014F02, 0x00000002, 0x4029D220, 0xA0015002, 0x00000002,
+	0x4029D220, 0xA0015102, 0x00000002, 0x4029D220, 0xA0015202, 0x00000002,
+	0x4029D220, 0xA0015302, 0x00000002, 0x4029D220, 0xA0015402, 0x00000002,
+	0x4029D220, 0xA0015502, 0x00000002, 0x4029D220, 0xA0015602, 0x00000002,
+	0x0029D284, 0xA0015604, 0x00000002, 0x4029D220, 0xA0015702, 0x00000002,
+	0x4029D220, 0xA0015802, 0x00000002, 0x4029D220, 0xA0015902, 0x00000002,
+	0x4029D220, 0xA0015A02, 0x00000002, 0x4029D220, 0xA0015B02, 0x00000002,
+	0x4029D220, 0xA0015C02, 0x00000002, 0x4029D220,
+	// Block 17, offset 0x440
+	0xA0015D02, 0x00000002, 0x4029D220, 0xA0015E02, 0x00000002, 0x4029D220,
+	0xA0015F02, 0x00000002, 0x4029D220, 0xA0016002, 0x00000002, 0x4029D220,
+	0xA0016102, 0x00000002, 0x4029D220, 0xA0016202, 0x00000002, 0x4029D220,
+	0xA0016302, 0x00000002, 0x4029D220, 0xA0016402, 0x00000002, 0x4029D220,
+	0xA0016502, 0x00000002, 0x4029D220, 0xA0016602, 0x00000002, 0x4029D220,
+	0xA0016702, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220,
+	0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220,
+	0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220,
+	0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220,
+	0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220,
+	0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02,
+	// Block 18, offset 0x480
+	0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02,
+	0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220, 0xA0016E02,
+	0x00000002, 0x4029D220, 0xA0016F02, 0x00000002, 0x4029D220, 0xA0017002,
+	0x00000002, 0x4029D220, 0xA0017102, 0x00000002, 0x4029D220, 0xA0017202,
+	0x00000002, 0x4029D220, 0xA0017302, 0x00000002, 0x4029D220, 0xA0017402,
+	0x00000002, 0x4029D220, 0xA0017502, 0x00000002, 0x4029D220, 0xA0017602,
+	0x00000002, 0x4029D220, 0xA0017702, 0x00000003, 0x0029D29E, 0x0009589E,
+	0x0029D49E, 0x00000003, 0x0029D29E, 0x0009589E, 0x0029D69E, 0x00000003,
+	0x0029D29E, 0x0009589E, 0x0029DC9E, 0x00000002, 0x0029D286, 0x0029CC86,
+	0x00000002, 0x4029D420, 0xA0013F02, 0x00000002, 0x4029D420, 0xA0014002,
+	0x00000002, 0x4029D420, 0xA0014102, 0x00000002,
+	// Block 19, offset 0x4c0
+	0x4029D420, 0xA0014202, 0x00000002, 0x4029D420, 0xA0014302, 0x00000002,
+	0x4029D420, 0xA0014402, 0x00000002, 0x4029D420, 0xA0014502, 0x00000002,
+	0x4029D420, 0xA0014602, 0x00000002, 0x4029D420, 0xA0014702, 0x00000002,
+	0x4029D420, 0xA0014802, 0x00000002, 0x4029D420, 0xA0014902, 0x00000002,
+	0x4029D420, 0xA0014A02, 0x00000002, 0x4029D420, 0xA0014B02, 0x00000002,
+	0x4029D420, 0xA0014C02, 0x00000002, 0x4029D420, 0xA0014D02, 0x00000002,
+	0x4029D420, 0xA0014E02, 0x00000002, 0x4029D420, 0xA0014F02, 0x00000002,
+	0x4029D420, 0xA0015002, 0x00000002, 0x4029D420, 0xA0015102, 0x00000002,
+	0x4029D420, 0xA0015202, 0x00000002, 0x4029D420, 0xA0015302, 0x00000002,
+	0x4029D420, 0xA0015402, 0x00000002, 0x4029D420, 0xA0015502, 0x00000002,
+	0x4029D420, 0xA0015602, 0x00000002, 0x0029D484,
+	// Block 20, offset 0x500
+	0xA0015604, 0x00000002, 0x4029D420, 0xA0015702, 0x00000002, 0x4029D420,
+	0xA0015802, 0x00000002, 0x4029D420, 0xA0015902, 0x00000002, 0x4029D420,
+	0xA0015A02, 0x00000002, 0x4029D420, 0xA0015B02, 0x00000002, 0x4029D420,
+	0xA0015C02, 0x00000002, 0x4029D420, 0xA0015D02, 0x00000002, 0x4029D420,
+	0xA0015E02, 0x00000002, 0x4029D420, 0xA0015F02, 0x00000002, 0x4029D420,
+	0xA0016002, 0x00000002, 0x4029D420, 0xA0016102, 0x00000002, 0x4029D420,
+	0xA0016202, 0x00000002, 0x4029D420, 0xA0016302, 0x00000002, 0x4029D420,
+	0xA0016402, 0x00000002, 0x4029D420, 0xA0016502, 0x00000002, 0x4029D420,
+	0xA0016602, 0x00000002, 0x4029D420, 0xA0016702, 0x00000002, 0x4029D420,
+	0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420,
+	0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,
+	// Block 21, offset 0x540
+	0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,
+	0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,
+	0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,
+	0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,
+	0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,
+	0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0017002,
+	0x00000002, 0x4029D420, 0xA0017102, 0x00000002, 0x4029D420, 0xA0017202,
+	0x00000002, 0x4029D420, 0xA0017302, 0x00000002, 0x4029D420, 0xA0017402,
+	0x00000002, 0x4029D420, 0xA0017502, 0x00000002, 0x4029D420, 0xA0017602,
+	0x00000002, 0x4029D420, 0xA0017702, 0x00000003, 0x0029D49E, 0x0009589E,
+	0x0029D69E, 0x00000002, 0x0029D486, 0x0029CC86,
+	// Block 22, offset 0x580
+	0x00000002, 0x4029D620, 0xA0013F02, 0x00000002, 0x4029D620, 0xA0014002,
+	0x00000002, 0x4029D620, 0xA0014102, 0x00000002, 0x4029D620, 0xA0014202,
+	0x00000002, 0x4029D620, 0xA0014302, 0x00000002, 0x4029D620, 0xA0014402,
+	0x00000002, 0x4029D620, 0xA0014502, 0x00000002, 0x4029D620, 0xA0014602,
+	0x00000002, 0x4029D620, 0xA0014702, 0x00000002, 0x4029D620, 0xA0014802,
+	0x00000002, 0x4029D620, 0xA0014902, 0x00000002, 0x4029D620, 0xA0014A02,
+	0x00000002, 0x4029D620, 0xA0014B02, 0x00000002, 0x4029D620, 0xA0014C02,
+	0x00000002, 0x4029D620, 0xA0014D02, 0x00000002, 0x4029D620, 0xA0014E02,
+	0x00000002, 0x4029D620, 0xA0014F02, 0x00000002, 0x4029D620, 0xA0015002,
+	0x00000002, 0x4029D620, 0xA0015102, 0x00000002, 0x4029D620, 0xA0015202,
+	0x00000002, 0x4029D620, 0xA0015302, 0x00000002,
+	// Block 23, offset 0x5c0
+	0x4029D620, 0xA0015402, 0x00000002, 0x4029D620, 0xA0015502, 0x00000002,
+	0x4029D620, 0xA0015602, 0x00000002, 0x0029D684, 0xA0015604, 0x00000002,
+	0x4029D620, 0xA0015702, 0x00000002, 0x4029D620, 0xA0015802, 0x00000002,
+	0x4029D620, 0xA0015902, 0x00000002, 0x4029D620, 0xA0015A02, 0x00000002,
+	0x4029D620, 0xA0015B02, 0x00000002, 0x4029D620, 0xA0015C02, 0x00000002,
+	0x4029D620, 0xA0015D02, 0x00000002, 0x4029D620, 0xA0015E02, 0x00000002,
+	0x4029D620, 0xA0015F02, 0x00000002, 0x4029D620, 0xA0016002, 0x00000002,
+	0x4029D620, 0xA0016102, 0x00000002, 0x4029D620, 0xA0016202, 0x00000002,
+	0x4029D620, 0xA0016302, 0x00000002, 0x4029D620, 0xA0016402, 0x00000002,
+	0x4029D620, 0xA0016502, 0x00000002, 0x4029D620, 0xA0016602, 0x00000002,
+	0x4029D620, 0xA0016702, 0x00000002, 0x4029D620,
+	// Block 24, offset 0x600
+	0xA0016802, 0x00000002, 0x4029D620, 0xA0016802, 0x00000002, 0x4029D620,
+	0xA0016802, 0x00000002, 0x4029D620, 0xA0016802, 0x00000002, 0x4029D620,
+	0xA0016802, 0x00000002, 0x4029D620, 0xA0016A02, 0x00000002, 0x4029D620,
+	0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620,
+	0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620,
+	0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620,
+	0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620,
+	0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620,
+	0xA0016C02, 0x00000002, 0x4029D620, 0xA0017202, 0x00000002, 0x4029D620,
+	0xA0017302, 0x00000002, 0x4029D620, 0xA0017402, 0x00000002, 0x4029D620,
+	0xA0017502, 0x00000002, 0x4029D620, 0xA0017702,
+	// Block 25, offset 0x640
+	0x00000003, 0x0029D69E, 0x0009589E, 0x0029D89E, 0x00000003, 0x0029D69E,
+	0x0009589E, 0x0029DC9E, 0x00000002, 0x0029D686, 0x0029CC86, 0x00000002,
+	0x4029D820, 0xA0013F02, 0x00000002, 0x4029D820, 0xA0014002, 0x00000002,
+	0x4029D820, 0xA0014102, 0x00000002, 0x4029D820, 0xA0014202, 0x00000002,
+	0x4029D820, 0xA0014302, 0x00000002, 0x4029D820, 0xA0014402, 0x00000002,
+	0x4029D820, 0xA0014502, 0x00000002, 0x4029D820, 0xA0014602, 0x00000002,
+	0x4029D820, 0xA0014702, 0x00000002, 0x4029D820, 0xA0014802, 0x00000002,
+	0x4029D820, 0xA0014902, 0x00000002, 0x4029D820, 0xA0014A02, 0x00000002,
+	0x4029D820, 0xA0014B02, 0x00000002, 0x4029D820, 0xA0014C02, 0x00000002,
+	0x4029D820, 0xA0014D02, 0x00000002, 0x4029D820, 0xA0014E02, 0x00000002,
+	0x4029D820, 0xA0014F02, 0x00000002, 0x4029D820,
+	// Block 26, offset 0x680
+	0xA0015002, 0x00000002, 0x4029D820, 0xA0015102, 0x00000002, 0x4029D820,
+	0xA0015202, 0x00000002, 0x4029D820, 0xA0015302, 0x00000002, 0x4029D820,
+	0xA0015402, 0x00000002, 0x4029D820, 0xA0015502, 0x00000002, 0x4029D820,
+	0xA0015602, 0x00000002, 0x0029D884, 0xA0015604, 0x00000002, 0x4029D820,
+	0xA0015702, 0x00000002, 0x4029D820, 0xA0015802, 0x00000002, 0x4029D820,
+	0xA0015902, 0x00000002, 0x4029D820, 0xA0015A02, 0x00000002, 0x4029D820,
+	0xA0015B02, 0x00000002, 0x4029D820, 0xA0015C02, 0x00000002, 0x4029D820,
+	0xA0015D02, 0x00000002, 0x4029D820, 0xA0015E02, 0x00000002, 0x4029D820,
+	0xA0015F02, 0x00000002, 0x4029D820, 0xA0016002, 0x00000002, 0x4029D820,
+	0xA0016102, 0x00000002, 0x4029D820, 0xA0016202, 0x00000002, 0x4029D820,
+	0xA0016302, 0x00000002, 0x4029D820, 0xA0016402,
+	// Block 27, offset 0x6c0
+	0x00000002, 0x4029D820, 0xA0016502, 0x00000002, 0x4029D820, 0xA0016602,
+	0x00000002, 0x4029D820, 0xA0016702, 0x00000002, 0x4029D820, 0xA0016902,
+	0x00000002, 0x4029D820, 0xA0016C02, 0x00000002, 0x4029D820, 0xA0016C02,
+	0x00000002, 0x4029D820, 0xA0016C02, 0x00000002, 0x4029D820, 0xA0016C02,
+	0x00000002, 0x4029D820, 0xA0016C02, 0x00000002, 0x4029D820, 0xA0016C02,
+	0x00000002, 0x4029D820, 0xA0016C02, 0x00000002, 0x4029D820, 0xA0017202,
+	0x00000002, 0x4029D820, 0xA0017302, 0x00000002, 0x4029D820, 0xA0017402,
+	0x00000002, 0x4029D820, 0xA0017502, 0x00000002, 0x4029D820, 0xA0017702,
+	0x00000002, 0x0029D886, 0x0029CC86, 0x00000002, 0x4029DA20, 0xA0013F02,
+	0x00000002, 0x4029DA20, 0xA0014002, 0x00000002, 0x4029DA20, 0xA0014102,
+	0x00000002, 0x4029DA20, 0xA0014202, 0x00000002,
+	// Block 28, offset 0x700
+	0x4029DA20, 0xA0014302, 0x00000002, 0x4029DA20, 0xA0014402, 0x00000002,
+	0x4029DA20, 0xA0014502, 0x00000002, 0x4029DA20, 0xA0014602, 0x00000002,
+	0x4029DA20, 0xA0014702, 0x00000002, 0x4029DA20, 0xA0014802, 0x00000002,
+	0x4029DA20, 0xA0014902, 0x00000002, 0x4029DA20, 0xA0014A02, 0x00000002,
+	0x4029DA20, 0xA0014B02, 0x00000002, 0x4029DA20, 0xA0014C02, 0x00000002,
+	0x4029DA20, 0xA0014D02, 0x00000002, 0x4029DA20, 0xA0014E02, 0x00000002,
+	0x4029DA20, 0xA0014F02, 0x00000002, 0x4029DA20, 0xA0015002, 0x00000002,
+	0x4029DA20, 0xA0015102, 0x00000002, 0x4029DA20, 0xA0015202, 0x00000002,
+	0x4029DA20, 0xA0015302, 0x00000002, 0x4029DA20, 0xA0015402, 0x00000002,
+	0x4029DA20, 0xA0015502, 0x00000002, 0x4029DA20, 0xA0015602, 0x00000002,
+	0x0029DA84, 0xA0015604, 0x00000002, 0x4029DA20,
+	// Block 29, offset 0x740
+	0xA0015702, 0x00000002, 0x4029DA20, 0xA0015802, 0x00000002, 0x4029DA20,
+	0xA0015902, 0x00000002, 0x4029DA20, 0xA0015A02, 0x00000002, 0x4029DA20,
+	0xA0015B02, 0x00000002, 0x4029DA20, 0xA0015C02, 0x00000002, 0x4029DA20,
+	0xA0015D02, 0x00000002, 0x4029DA20, 0xA0015E02, 0x00000002, 0x4029DA20,
+	0xA0015F02, 0x00000002, 0x4029DA20, 0xA0016002, 0x00000002, 0x4029DA20,
+	0xA0016102, 0x00000002, 0x4029DA20, 0xA0016202, 0x00000002, 0x4029DA20,
+	0xA0016302, 0x00000002, 0x4029DA20, 0xA0016402, 0x00000002, 0x4029DA20,
+	0xA0016502, 0x00000002, 0x4029DA20, 0xA0016602, 0x00000002, 0x4029DA20,
+	0xA0016702, 0x00000002, 0x4029DA20, 0xA0016C02, 0x00000002, 0x4029DA20,
+	0xA0016C02, 0x00000002, 0x4029DA20, 0xA0016C02, 0x00000002, 0x4029DA20,
+	0xA0016C02, 0x00000002, 0x4029DA20, 0xA0016C02,
+	// Block 30, offset 0x780
+	0x00000002, 0x4029DA20, 0xA0016C02, 0x00000002, 0x4029DA20, 0xA0016C02,
+	0x00000002, 0x4029DA20, 0xA0016C02, 0x00000002, 0x4029DA20, 0xA0017202,
+	0x00000002, 0x4029DA20, 0xA0017302, 0x00000002, 0x4029DA20, 0xA0017402,
+	0x00000002, 0x4029DA20, 0xA0017502, 0x00000002, 0x4029DA20, 0xA0017702,
+	0x00000003, 0x0029DA9E, 0x0009589E, 0x0029DC9E, 0x00000002, 0x0029DA86,
+	0x0029CC86, 0x00000002, 0x4029DC20, 0xA0013F02, 0x00000002, 0x4029DC20,
+	0xA0014002, 0x00000002, 0x4029DC20, 0xA0014102, 0x00000002, 0x4029DC20,
+	0xA0014202, 0x00000002, 0x4029DC20, 0xA0014302, 0x00000002, 0x4029DC20,
+	0xA0014402, 0x00000002, 0x4029DC20, 0xA0014502, 0x00000002, 0x4029DC20,
+	0xA0014602, 0x00000002, 0x4029DC20, 0xA0014702, 0x00000002, 0x4029DC20,
+	0xA0014802, 0x00000002, 0x4029DC20, 0xA0014902,
+	// Block 31, offset 0x7c0
+	0x00000002, 0x4029DC20, 0xA0014A02, 0x00000002, 0x4029DC20, 0xA0014B02,
+	0x00000002, 0x4029DC20, 0xA0014C02, 0x00000002, 0x4029DC20, 0xA0014D02,
+	0x00000002, 0x4029DC20, 0xA0014E02, 0x00000002, 0x4029DC20, 0xA0014F02,
+	0x00000002, 0x4029DC20, 0xA0015002, 0x00000002, 0x4029DC20, 0xA0015102,
+	0x00000002, 0x4029DC20, 0xA0015202, 0x00000002, 0x4029DC20, 0xA0015302,
+	0x00000002, 0x4029DC20, 0xA0015402, 0x00000002, 0x4029DC20, 0xA0015502,
+	0x00000002, 0x4029DC20, 0xA0015602, 0x00000002, 0x0029DC84, 0xA0015604,
+	0x00000002, 0x4029DC20, 0xA0015702, 0x00000002, 0x4029DC20, 0xA0015802,
+	0x00000002, 0x4029DC20, 0xA0015902, 0x00000002, 0x4029DC20, 0xA0015A02,
+	0x00000002, 0x4029DC20, 0xA0015B02, 0x00000002, 0x4029DC20, 0xA0015C02,
+	0x00000002, 0x4029DC20, 0xA0015D02, 0x00000002,
+	// Block 32, offset 0x800
+	0x4029DC20, 0xA0015E02, 0x00000002, 0x4029DC20, 0xA0015F02, 0x00000002,
+	0x4029DC20, 0xA0016002, 0x00000002, 0x4029DC20, 0xA0016102, 0x00000002,
+	0x4029DC20, 0xA0016202, 0x00000002, 0x4029DC20, 0xA0016302, 0x00000002,
+	0x4029DC20, 0xA0016402, 0x00000002, 0x4029DC20, 0xA0016502, 0x00000002,
+	0x4029DC20, 0xA0016602, 0x00000002, 0x4029DC20, 0xA0016702, 0x00000002,
+	0x4029DC20, 0xA0016C02, 0x00000002, 0x4029DC20, 0xA0016C02, 0x00000002,
+	0x4029DC20, 0xA0016C02, 0x00000002, 0x4029DC20, 0xA0016C02, 0x00000002,
+	0x4029DC20, 0xA0016C02, 0x00000002, 0x4029DC20, 0xA0016C02, 0x00000002,
+	0x4029DC20, 0xA0016C02, 0x00000002, 0x4029DC20, 0xA0017202, 0x00000002,
+	0x4029DC20, 0xA0017302, 0x00000002, 0x4029DC20, 0xA0017402, 0x00000002,
+	0x4029DC20, 0xA0017502, 0x00000002, 0x4029DC20,
+	// Block 33, offset 0x840
+	0xA0017702, 0x00000002, 0x0029DC86, 0x0029CC86, 0x00000002, 0x4029DE20,
+	0xA0013F02, 0x00000002, 0x4029DE20, 0xA0014002, 0x00000002, 0x4029DE20,
+	0xA0014102, 0x00000002, 0x4029DE20, 0xA0014202, 0x00000002, 0x4029DE20,
+	0xA0014302, 0x00000002, 0x4029DE20, 0xA0014402, 0x00000002, 0x4029DE20,
+	0xA0014502, 0x00000002, 0x4029DE20, 0xA0014602, 0x00000002, 0x4029DE20,
+	0xA0014702, 0x00000002, 0x4029DE20, 0xA0014802, 0x00000002, 0x4029DE20,
+	0xA0014902, 0x00000002, 0x4029DE20, 0xA0014A02, 0x00000002, 0x4029DE20,
+	0xA0014B02, 0x00000002, 0x4029DE20, 0xA0014C02, 0x00000002, 0x4029DE20,
+	0xA0014D02, 0x00000002, 0x4029DE20, 0xA0014E02, 0x00000002, 0x4029DE20,
+	0xA0014F02, 0x00000002, 0x4029DE20, 0xA0015002, 0x00000002, 0x4029DE20,
+	0xA0015102, 0x00000002, 0x4029DE20, 0xA0015202,
+	// Block 34, offset 0x880
+	0x00000002, 0x4029DE20, 0xA0015302, 0x00000002, 0x4029DE20, 0xA0015402,
+	0x00000002, 0x4029DE20, 0xA0015502, 0x00000002, 0x4029DE20, 0xA0015602,
+	0x00000002, 0x0029DE84, 0xA0015604, 0x00000002, 0x4029DE20, 0xA0015702,
+	0x00000002, 0x4029DE20, 0xA0015802, 0x00000002, 0x4029DE20, 0xA0015902,
+	0x00000002, 0x4029DE20, 0xA0015A02, 0x00000002, 0x4029DE20, 0xA0015B02,
+	0x00000002, 0x4029DE20, 0xA0015C02, 0x00000002, 0x4029DE20, 0xA0015D02,
+	0x00000002, 0x4029DE20, 0xA0015E02, 0x00000002, 0x4029DE20, 0xA0015F02,
+	0x00000002, 0x4029DE20, 0xA0016002, 0x00000002, 0x4029DE20, 0xA0016102,
+	0x00000002, 0x4029DE20, 0xA0016202, 0x00000002, 0x4029DE20, 0xA0016302,
+	0x00000002, 0x4029DE20, 0xA0016402, 0x00000002, 0x4029DE20, 0xA0016502,
+	0x00000002, 0x4029DE20, 0xA0016602, 0x00000002,
+	// Block 35, offset 0x8c0
+	0x4029DE20, 0xA0016702, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002,
+	0x4029DE20, 0xA0016C02, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002,
+	0x4029DE20, 0xA0016C02, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002,
+	0x4029DE20, 0xA0016C02, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002,
+	0x4029DE20, 0xA0016C02, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002,
+	0x4029DE20, 0xA0017202, 0x00000002, 0x4029DE20, 0xA0017302, 0x00000002,
+	0x4029DE20, 0xA0017402, 0x00000002, 0x4029DE20, 0xA0017502, 0x00000002,
+	0x4029DE20, 0xA0017702, 0x00000002, 0x402BDE20, 0xAE603202, 0x00000002,
+	0x002BDE88, 0xAE603202, 0x00000002, 0x402BDE20, 0xAE603502, 0x00000002,
+	0x002BDE88, 0xAE603502, 0x00000002, 0x402BDE20, 0xAE603702, 0x00000002,
+	0x002BDE88, 0xAE603702, 0x00000003, 0x402BDE20,
+	// Block 36, offset 0x900
+	0xAE603702, 0xAE603202, 0x00000003, 0x002BDE88, 0xAE603702, 0xAE603202,
+	0x00000003, 0x402BDE20, 0xAE603702, 0xAE603502, 0x00000003, 0x002BDE88,
+	0xAE603702, 0xAE603502, 0x00000003, 0x402BDE20, 0xAE603702, 0xAE604E02,
+	0x00000003, 0x002BDE88, 0xAE603702, 0xAE604E02, 0x00000003, 0x402BDE20,
+	0xAE603702, 0xAE606402, 0x00000003, 0x002BDE88, 0xAE603702, 0xAE606402,
+	0x00000002, 0x402BDE20, 0xAE603C02, 0x00000002, 0x002BDE88, 0xAE603C02,
+	0x00000003, 0x402BDE20, 0xAE603C02, 0xAE603202, 0x00000003, 0x002BDE88,
+	0xAE603C02, 0xAE603202, 0x00000003, 0x402BDE20, 0xAE603C02, 0xAE603502,
+	0x00000003, 0x002BDE88, 0xAE603C02, 0xAE603502, 0x00000003, 0x402BDE20,
+	0xAE603C02, 0xAE604E02, 0x00000003, 0x002BDE88, 0xAE603C02, 0xAE604E02,
+	0x00000003, 0x402BDE20, 0xAE603C02, 0xAE606402,
+	// Block 37, offset 0x940
+	0x00000003, 0x002BDE88, 0xAE603C02, 0xAE606402, 0x00000002, 0x402BDE20,
+	0xAE604102, 0x00000002, 0x002BDE88, 0xAE604102, 0x00000002, 0x402BDE20,
+	0xAE604302, 0x00000002, 0x002BDE88, 0xAE604302, 0x00000003, 0x402BDE20,
+	0xAE604302, 0xAE603202, 0x00000003, 0x002BDE88, 0xAE604302, 0xAE603202,
+	0x00000002, 0x402BDE20, 0xAE604702, 0x00000002, 0x002BDE88, 0xAE604702,
+	0x00000003, 0x402BDE20, 0xAE604702, 0xAE605B02, 0x00000003, 0x002BDE88,
+	0xAE604702, 0xAE605B02, 0x00000002, 0x402BDE20, 0xAE604E02, 0x00000002,
+	0x002BDE88, 0xAE604E02, 0x00000002, 0x402BDE20, 0xAE605202, 0x00000002,
+	0x002BDE88, 0xAE605202, 0x00000003, 0x402BDE20, 0xAE605202, 0xAE605B02,
+	0x00000003, 0x002BDE88, 0xAE605202, 0xAE605B02, 0x00000002, 0x402BDE20,
+	0xACA05902, 0x00000002, 0x002BDE88, 0xACA05902,
+	// Block 38, offset 0x980
+	0x00000002, 0x402BDE20, 0xAE605B02, 0x00000002, 0x002BDE88, 0xAE605B02,
+	0x00000002, 0x402BDE20, 0xAE606402, 0x00000002, 0x002BDE88, 0xAE606402,
+	0x00000002, 0x402BDE20, 0xAE606502, 0x00000002, 0x002BDE88, 0xAE606502,
+	0x00000002, 0x402BDE20, 0xAE606702, 0x00000002, 0x002BDE88, 0xAE606702,
+	0x00000002, 0x402BDE20, 0xADC07002, 0x00000002, 0x002BDE88, 0xADC07002,
+	0x00000003, 0x402BDE20, 0xADC07002, 0xAE603702, 0x00000003, 0x002BDE88,
+	0xADC07002, 0xAE603702, 0x00000003, 0x402BDE20, 0xADC07002, 0xAE603C02,
+	0x00000003, 0x002BDE88, 0xADC07002, 0xAE603C02, 0x00000002, 0x402BDE20,
+	0xADC07602, 0x00000002, 0x002BDE88, 0xADC07602, 0x00000002, 0x84E615EF,
+	0xAE613904, 0x00000004, 0x002BDE9C, 0x0002E49C, 0x002E829C, 0x0002E49C,
+	0x00000003, 0x002BDE84, 0x0004E284, 0x002C3A84,
+	// Block 39, offset 0x9c0
+	0x00000003, 0x002BDE84, 0x0004E284, 0x002FE684, 0x00000003, 0x002BDE8A,
+	0x0004E284, 0x002FE68A, 0x00000003, 0x002BDE9D, 0x0009569C, 0x002E829C,
+	0x00000002, 0x002BDE84, 0x002BDE84, 0x00000002, 0x002BDE8A, 0x002BDE8A,
+	0x00000002, 0x002BDE9D, 0x002C0A9D, 0x00000003, 0x002BDE84, 0xA0013904,
+	0x002C9884, 0x00000003, 0x84E615EF, 0xAE613904, 0x84E6164C, 0x00000003,
+	0x002BDE8A, 0xA0013904, 0x002C988A, 0x00000003, 0x002BDE94, 0xA0013914,
+	0x002C9894, 0x00000004, 0x002BDE84, 0xA0013904, 0x002C9884, 0xAE603202,
+	0x00000004, 0x002BDE8A, 0xA0013904, 0x002C988A, 0xAE603202, 0x00000004,
+	0x002BDE84, 0xA0013904, 0x002C9884, 0xAE605B02, 0x00000004, 0x002BDE8A,
+	0xA0013904, 0x002C988A, 0xAE605B02, 0x00000002, 0x84E615EF, 0x84E61771,
+	0x00000002, 0x002BDE84, 0x002EE284, 0x00000002,
+	// Block 40, offset 0xa00
+	0x002BDE8A, 0x002EE28A, 0x00000002, 0x002BDE84, 0x00306C84, 0x00000002,
+	0x002BDE8A, 0x00306C8A, 0x00000002, 0x84E615EF, 0x84E6185F, 0x00000002,
+	0x002BDE84, 0x0030BE84, 0x00000002, 0x002BDE8A, 0x0030BE8A, 0x00000003,
+	0x002BDE84, 0xA0013904, 0x0030BE84, 0x00000003, 0x002BDE8A, 0xA0013904,
+	0x0030BE8A, 0x00000002, 0x002BDE84, 0x00310084, 0x00000002, 0x002BDE8A,
+	0x0031008A, 0x00000002, 0x402C0A20, 0xAE605202, 0x00000002, 0x002C0A88,
+	0xAE605202, 0x00000002, 0x402C0A20, 0xADC07002, 0x00000002, 0x002C0A88,
+	0xADC07002, 0x00000002, 0x402C0A20, 0xADC07B02, 0x00000002, 0x002C0A88,
+	0xADC07B02, 0x00000003, 0x002C0A9C, 0x002BDE9C, 0x002F7A9C, 0x00000002,
+	0x402C3A20, 0xAE603202, 0x00000002, 0x002C3A88, 0xAE603202, 0x00000002,
+	0x402C3A20, 0xAE603C02, 0x00000002, 0x002C3A88,
+	// Block 41, offset 0xa40
+	0xAE603C02, 0x00000002, 0x402C3A20, 0xAE604102, 0x00000002, 0x002C3A88,
+	0xAE604102, 0x00000002, 0x402C3A20, 0xAE605202, 0x00000002, 0x002C3A88,
+	0xAE605202, 0x00000002, 0x402C3A20, 0xACA05602, 0x00000002, 0x84E6161D,
+	0xAE605604, 0x00000002, 0x002C3A88, 0xACA05602, 0x00000003, 0x402C3A20,
+	0xACA05602, 0xAE603202, 0x00000003, 0x002C3A88, 0xACA05602, 0xAE603202,
+	0x00000003, 0x002C3A84, 0x0004E284, 0x002EE284, 0x00000003, 0x002C3A84,
+	0x0004E284, 0x00306C84, 0x00000004, 0x002C3A9D, 0x0009569C, 0x002DFE9C,
+	0x002D229C, 0x00000003, 0x002C3A9C, 0x002BDE9C, 0x002E229C, 0x00000002,
+	0x002C3A9D, 0x002E229D, 0x00000003, 0x002C3A9C, 0x002E829C, 0x0029D09C,
+	0x00000003, 0x002C3A9C, 0x002E829C, 0x0029D29C, 0x00000003, 0x002C3A9D,
+	0x002EE29C, 0x0002E49C, 0x00000004, 0x002C3A9D,
+	// Block 42, offset 0xa80
+	0x002EE29D, 0x002EE29D, 0x002E229D, 0x00000002, 0x402C6220, 0xAE604102,
+	0x00000002, 0x002C6288, 0xAE604102, 0x00000002, 0x402C6220, 0xAE605202,
+	0x00000002, 0x002C6288, 0xAE605202, 0x00000002, 0x402C6220, 0xACA05602,
+	0x00000002, 0x002C6288, 0xACA05602, 0x00000002, 0x402C6220, 0xADC07002,
+	0x00000002, 0x002C6288, 0xADC07002, 0x00000002, 0x402C6220, 0xADC07802,
+	0x00000002, 0x002C6288, 0xADC07802, 0x00000002, 0x402C6220, 0xADC07B02,
+	0x00000002, 0x002C6288, 0xADC07B02, 0x00000002, 0x402C6220, 0xA0007D02,
+	0x00000002, 0x002C6288, 0xA0007D02, 0x00000002, 0x002C6284, 0xA0013904,
+	0x00000002, 0x84E61631, 0xAE613904, 0x00000002, 0x002C628A, 0xA0013904,
+	0x00000002, 0x84E61631, 0xAE613A04, 0x00000002, 0x002C6284, 0xA0013A04,
+	0x00000002, 0x002C628A, 0xA0013A04, 0x00000002,
+	// Block 43, offset 0xac0
+	0x002C6284, 0x002C0A84, 0x00000003, 0x002C629C, 0x002E829C, 0x0029D09C,
+	0x00000003, 0x002C629C, 0x002E829C, 0x0029D29C, 0x00000002, 0x002C6284,
+	0x00312A84, 0x00000003, 0x002C6284, 0x00312A84, 0xA0004104, 0x00000003,
+	0x002C628A, 0x00312A84, 0xA0004104, 0x00000003, 0x002C628A, 0x00312A8A,
+	0xA0004104, 0x00000002, 0x002C6284, 0x00315084, 0x00000002, 0x002C6284,
+	0x00316484, 0x00000002, 0x402C9820, 0xAE603202, 0x00000002, 0x002C9888,
+	0xAE603202, 0x00000002, 0x402C9820, 0xAE603502, 0x00000002, 0x002C9888,
+	0xAE603502, 0x00000002, 0x402C9820, 0xAE603702, 0x00000002, 0x002C9888,
+	0xAE603702, 0x00000002, 0x402C9820, 0xAE603C02, 0x00000002, 0x002C9888,
+	0xAE603C02, 0x00000003, 0x402C9820, 0xAE603C02, 0xAE603202, 0x00000003,
+	0x002C9888, 0xAE603C02, 0xAE603202, 0x00000003,
+	// Block 44, offset 0xb00
+	0x402C9820, 0xAE603C02, 0xAE603502, 0x00000003, 0x002C9888, 0xAE603C02,
+	0xAE603502, 0x00000003, 0x402C9820, 0xAE603C02, 0xAE604E02, 0x00000003,
+	0x002C9888, 0xAE603C02, 0xAE604E02, 0x00000003, 0x402C9820, 0xAE603C02,
+	0xAE606402, 0x00000003, 0x002C9888, 0xAE603C02, 0xAE606402, 0x00000002,
+	0x402C9820, 0xAE604102, 0x00000002, 0x002C9888, 0xAE604102, 0x00000002,
+	0x402C9820, 0xAE604702, 0x00000002, 0x002C9888, 0xAE604702, 0x00000002,
+	0x402C9820, 0xAE604E02, 0x00000002, 0x002C9888, 0xAE604E02, 0x00000002,
+	0x402C9820, 0xAE605202, 0x00000002, 0x002C9888, 0xAE605202, 0x00000002,
+	0x402C9820, 0xACA05602, 0x00000002, 0x002C9888, 0xACA05602, 0x00000003,
+	0x402C9820, 0xACA05602, 0xAE603702, 0x00000003, 0x002C9888, 0xACA05602,
+	0xAE603702, 0x00000002, 0x402C9820, 0xACA05902,
+	// Block 45, offset 0xb40
+	0x00000002, 0x002C9888, 0xACA05902, 0x00000002, 0x402C9820, 0xAE605B02,
+	0x00000002, 0x002C9888, 0xAE605B02, 0x00000003, 0x402C9820, 0xAE605B02,
+	0xAE603202, 0x00000003, 0x002C9888, 0xAE605B02, 0xAE603202, 0x00000003,
+	0x402C9820, 0xAE605B02, 0xAE603502, 0x00000003, 0x002C9888, 0xAE605B02,
+	0xAE603502, 0x00000002, 0x402C9820, 0xAE606402, 0x00000002, 0x002C9888,
+	0xAE606402, 0x00000002, 0x402C9820, 0xAE606502, 0x00000002, 0x002C9888,
+	0xAE606502, 0x00000002, 0x402C9820, 0xAE606702, 0x00000002, 0x002C9888,
+	0xAE606702, 0x00000002, 0x402C9820, 0xADC07002, 0x00000002, 0x002C9888,
+	0xADC07002, 0x00000003, 0x402C9820, 0xADC07002, 0xAE603C02, 0x00000003,
+	0x002C9888, 0xADC07002, 0xAE603C02, 0x00000002, 0x402C9820, 0xADC07802,
+	0x00000002, 0x002C9888, 0xADC07802, 0x00000002,
+	// Block 46, offset 0xb80
+	0x402C9820, 0xADC07A02, 0x00000002, 0x002C9888, 0xADC07A02, 0x00000003,
+	0x002C989C, 0x002F7A9C, 0x002D229C, 0x00000002, 0x402D0820, 0xAE605202,
+	0x00000002, 0x002D0888, 0xAE605202, 0x00000002, 0x002D0884, 0xA0013A04,
+	0x00000002, 0x002D088A, 0xA0013A04, 0x00000003, 0x002D088A, 0x002BDE8A,
+	0x0030F68A, 0x00000003, 0x002D0884, 0x002D0884, 0x002D9A84, 0x00000003,
+	0x002D0884, 0x002D0884, 0x002E2284, 0x00000002, 0x002D0884, 0x002EDA84,
+	0x00000004, 0x002D089D, 0x002F7A9D, 0x002C989D, 0x002C989D, 0x00000002,
+	0x402D2220, 0xAE603202, 0x00000002, 0x002D2288, 0xAE603202, 0x00000002,
+	0x402D2220, 0xAE603702, 0x00000002, 0x002D2288, 0xAE603702, 0x00000002,
+	0x402D2220, 0xAE603C02, 0x00000002, 0x002D2288, 0xAE603C02, 0x00000002,
+	0x402D2220, 0xAE604102, 0x00000002, 0x002D2288,
+	// Block 47, offset 0xbc0
+	0xAE604102, 0x00000002, 0x402D2220, 0xAE605202, 0x00000002, 0x002D2288,
+	0xAE605202, 0x00000002, 0x402D2220, 0xACA05602, 0x00000002, 0x002D2288,
+	0xACA05602, 0x00000002, 0x402D2220, 0xAE605B02, 0x00000002, 0x002D2288,
+	0xAE605B02, 0x00000002, 0x002D2284, 0xA0006104, 0x00000002, 0x002D228A,
+	0xA0006104, 0x00000002, 0x002D2284, 0xA0013A04, 0x00000002, 0x002D228A,
+	0xA0013A04, 0x00000003, 0x002D229C, 0x002BDE9C, 0x002E229C, 0x00000003,
+	0x002D229D, 0x002D689D, 0x00312A9C, 0x00000003, 0x002D229D, 0x002F2C9D,
+	0x002BDE9C, 0x00000002, 0x402D6820, 0xAE603C02, 0x00000002, 0x002D6888,
+	0xAE603C02, 0x00000002, 0x402D6820, 0xAE604102, 0x00000002, 0x002D6888,
+	0xAE604102, 0x00000002, 0x402D6820, 0xAE604702, 0x00000002, 0x002D6888,
+	0xAE604702, 0x00000002, 0x402D6820, 0xAE605202,
+	// Block 48, offset 0xc00
+	0x00000002, 0x002D6888, 0xAE605202, 0x00000002, 0x402D6820, 0xACA05602,
+	0x00000002, 0x002D6888, 0xACA05602, 0x00000002, 0x402D6820, 0xADC07002,
+	0x00000002, 0x002D6888, 0xADC07002, 0x00000002, 0x402D6820, 0xADC07902,
+	0x00000002, 0x002D6888, 0xADC07902, 0x00000002, 0x402D6820, 0xADC07B02,
+	0x00000002, 0x402D6820, 0xA0007D02, 0x00000002, 0x002D6888, 0xA0007D02,
+	0x00000003, 0x002D689C, 0x002F2C9D, 0x002BDE9C, 0x00000002, 0x402D9A20,
+	0xAE603202, 0x00000002, 0x002D9A88, 0xAE603202, 0x00000002, 0x402D9A20,
+	0xAE603502, 0x00000002, 0x002D9A88, 0xAE603502, 0x00000002, 0x402D9A20,
+	0xAE603702, 0x00000002, 0x002D9A88, 0xAE603702, 0x00000002, 0x402D9A20,
+	0xAE603C02, 0x00000002, 0x002D9A88, 0xAE603C02, 0x00000002, 0x402D9A20,
+	0xAE604102, 0x00000002, 0x002D9A88, 0xAE604102,
+	// Block 49, offset 0xc40
+	0x00000002, 0x402D9A20, 0xAE604702, 0x00000002, 0x002D9A88, 0xAE604702,
+	0x00000003, 0x402D9A20, 0xAE604702, 0xAE603202, 0x00000003, 0x002D9A88,
+	0xAE604702, 0xAE603202, 0x00000002, 0x402D9A20, 0xAE604E02, 0x00000002,
+	0x002D9A88, 0xAE604E02, 0x00000002, 0x002D9A88, 0xAE605202, 0x00000002,
+	0x402D9A20, 0xACA05902, 0x00000002, 0x002D9A88, 0xACA05902, 0x00000002,
+	0x402D9A20, 0xAE605B02, 0x00000002, 0x002D9A88, 0xAE605B02, 0x00000002,
+	0x402D9A20, 0xAE606402, 0x00000002, 0x002D9A88, 0xAE606402, 0x00000002,
+	0x402D9A20, 0xAE606502, 0x00000002, 0x002D9A88, 0xAE606502, 0x00000002,
+	0x402D9A20, 0xAE606702, 0x00000002, 0x002D9A88, 0xAE606702, 0x00000002,
+	0x402D9A20, 0xADC07002, 0x00000002, 0x002D9A88, 0xADC07002, 0x00000002,
+	0x402D9A20, 0xADC07A02, 0x00000002, 0x002D9A88,
+	// Block 50, offset 0xc80
+	0xADC07A02, 0x00000002, 0x002D9A9D, 0x002C3A9D, 0x00000002, 0x002D9A9D,
+	0x002C629D, 0x00000002, 0x402DCC20, 0xAE603C02, 0x00000002, 0x002DCC88,
+	0xAE603C02, 0x00000002, 0x402DCC20, 0xAE604102, 0x00000002, 0x402DFE20,
+	0xAE603202, 0x00000002, 0x002DFE88, 0xAE603202, 0x00000002, 0x402DFE20,
+	0xAE604102, 0x00000002, 0x002DFE88, 0xAE604102, 0x00000002, 0x402DFE20,
+	0xACA05602, 0x00000002, 0x002DFE88, 0xACA05602, 0x00000002, 0x002DFE84,
+	0xA0006104, 0x00000002, 0x002DFE8A, 0xA0006104, 0x00000002, 0x402DFE20,
+	0xADC07002, 0x00000002, 0x002DFE88, 0xADC07002, 0x00000002, 0x402DFE20,
+	0xADC07B02, 0x00000002, 0x002DFE88, 0xADC07B02, 0x00000004, 0x002DFE9C,
+	0x002C3A9C, 0x002BDE9C, 0x002E229C, 0x00000003, 0x002DFE9C, 0x002D689D,
+	0x00312A9C, 0x00000003, 0x002DFE9C, 0x002E829C,
+	// Block 51, offset 0xcc0
+	0x0029D09C, 0x00000003, 0x002DFE9C, 0x002E829C, 0x0029D29C, 0x00000003,
+	0x002DFE9C, 0x002F2C9D, 0x002BDE9C, 0x00000002, 0x402E2220, 0xAE603202,
+	0x00000002, 0x002E2288, 0xAE603202, 0x00000002, 0x402E2220, 0xAE604102,
+	0x00000002, 0x002E2288, 0xAE604102, 0x00000002, 0x402E2220, 0xACA05602,
+	0x00000002, 0x002E2288, 0xACA05602, 0x00000002, 0x402E2220, 0xADC07002,
+	0x00000002, 0x002E2288, 0xADC07002, 0x00000003, 0x402E2220, 0xADC07002,
+	0xAE605B02, 0x00000003, 0x002E2288, 0xADC07002, 0xAE605B02, 0x00000002,
+	0x402E2220, 0xADC07802, 0x00000002, 0x002E2288, 0xADC07802, 0x00000002,
+	0x402E2220, 0xADC07B02, 0x00000002, 0x002E2288, 0xADC07B02, 0x00000002,
+	0x402E2220, 0xA0007D02, 0x00000002, 0x002E2288, 0xA0007D02, 0x00000002,
+	0x402E2220, 0xA0013902, 0x00000002, 0x402E2220,
+	// Block 52, offset 0xd00
+	0xA0013902, 0x00000002, 0x002E2288, 0xA0013902, 0x00000002, 0x002E2288,
+	0xA0013902, 0x00000002, 0x002E2284, 0x002E2284, 0x00000002, 0x002E228A,
+	0x002E228A, 0x00000003, 0x002E229C, 0x002EE29C, 0x002D229C, 0x00000002,
+	0x002E2284, 0x002FE684, 0x00000003, 0x002E229D, 0x00302C9D, 0x002C629D,
+	0x00000002, 0x002E2284, 0x00312A84, 0x00000002, 0x402E8220, 0xAE603202,
+	0x00000002, 0x002E8288, 0xAE603202, 0x00000002, 0x402E8220, 0xAE605202,
+	0x00000002, 0x002E8288, 0xAE605202, 0x00000002, 0x402E8220, 0xADC07002,
+	0x00000002, 0x002E8288, 0xADC07002, 0x00000003, 0x002E829C, 0x0009569C,
+	0x002FE69C, 0x00000004, 0x002E829C, 0x0009569C, 0x002FE69C, 0x0029D09C,
+	0x00000003, 0x002E829D, 0x002D689D, 0x00312A9C, 0x00000003, 0x002E829C,
+	0x002D9A9C, 0x002E229C, 0x00000003, 0x002E829C,
+	// Block 53, offset 0xd40
+	0x002E829C, 0x0029D09C, 0x00000003, 0x002E829C, 0x002E829C, 0x0029D29C,
+	0x00000003, 0x002E829C, 0x002EE29C, 0x002E229C, 0x00000003, 0x002E829D,
+	0x002F2C9D, 0x002BDE9C, 0x00000002, 0x402E9E20, 0xAE603202, 0x00000002,
+	0x002E9E88, 0xAE603202, 0x00000002, 0x402E9E20, 0xAE603502, 0x00000002,
+	0x002E9E88, 0xAE603502, 0x00000002, 0x402E9E20, 0xAE604102, 0x00000002,
+	0x002E9E88, 0xAE604102, 0x00000002, 0x402E9E20, 0xAE604E02, 0x00000002,
+	0x002E9E88, 0xAE604E02, 0x00000002, 0x402E9E20, 0xAE605202, 0x00000002,
+	0x002E9E88, 0xAE605202, 0x00000002, 0x402E9E20, 0xACA05602, 0x00000002,
+	0x002E9E88, 0xACA05602, 0x00000002, 0x002E9E84, 0xA0006104, 0x00000002,
+	0x002E9E8A, 0xA0006104, 0x00000002, 0x402E9E20, 0xADC07002, 0x00000002,
+	0x002E9E88, 0xADC07002, 0x00000002, 0x402E9E20,
+	// Block 54, offset 0xd80
+	0xADC07802, 0x00000002, 0x002E9E88, 0xADC07802, 0x00000002, 0x402E9E20,
+	0xADC07B02, 0x00000002, 0x002E9E88, 0xADC07B02, 0x00000003, 0x002E9E9D,
+	0x002C989D, 0x0030E29D, 0x00000002, 0x002E9E9D, 0x002D229D, 0x00000002,
+	0x402EE220, 0xAE603202, 0x00000002, 0x002EE288, 0xAE603202, 0x00000002,
+	0x402EE220, 0xAE603502, 0x00000002, 0x002EE288, 0xAE603502, 0x00000002,
+	0x402EE220, 0xAE603702, 0x00000002, 0x002EE288, 0xAE603702, 0x00000002,
+	0x402EE220, 0xAE603C02, 0x00000002, 0x002EE288, 0xAE603C02, 0x00000003,
+	0x402EE220, 0xAE603C02, 0xAE603202, 0x00000003, 0x002EE288, 0xAE603C02,
+	0xAE603202, 0x00000003, 0x402EE220, 0xAE603C02, 0xAE603502, 0x00000003,
+	0x002EE288, 0xAE603C02, 0xAE603502, 0x00000003, 0x402EE220, 0xAE603C02,
+	0xAE604E02, 0x00000003, 0x002EE288, 0xAE603C02,
+	// Block 55, offset 0xdc0
+	0xAE604E02, 0x00000003, 0x402EE220, 0xAE603C02, 0xAE606402, 0x00000003,
+	0x002EE288, 0xAE603C02, 0xAE606402, 0x00000002, 0x402EE220, 0xAE604102,
+	0x00000002, 0x002EE288, 0xAE604102, 0x00000002, 0x402EE220, 0xAE604702,
+	0x00000002, 0x002EE288, 0xAE604702, 0x00000003, 0x402EE220, 0xAE604702,
+	0xAE605B02, 0x00000003, 0x002EE288, 0xAE604702, 0xAE605B02, 0x00000002,
+	0x402EE220, 0xAE604D02, 0x00000002, 0x002EE288, 0xAE604D02, 0x00000002,
+	0x402EE220, 0xAE604E02, 0x00000002, 0x002EE288, 0xAE604E02, 0x00000003,
+	0x402EE220, 0xAE604E02, 0xAE603202, 0x00000003, 0x002EE288, 0xAE604E02,
+	0xAE603202, 0x00000003, 0x402EE220, 0xAE604E02, 0xAE604702, 0x00000003,
+	0x002EE288, 0xAE604E02, 0xAE604702, 0x00000003, 0x402EE220, 0xAE604E02,
+	0xAE605B02, 0x00000003, 0x002EE288, 0xAE604E02,
+	// Block 56, offset 0xe00
+	0xAE605B02, 0x00000002, 0x402EE220, 0xAE605202, 0x00000002, 0x002EE288,
+	0xAE605202, 0x00000003, 0x402EE220, 0xAE605202, 0xAE605B02, 0x00000003,
+	0x002EE288, 0xAE605202, 0xAE605B02, 0x00000002, 0x402EE220, 0xA0005402,
+	0x00000002, 0x002EE288, 0xA0005402, 0x00000003, 0x402EE220, 0xA0005402,
+	0xAE603202, 0x00000003, 0x002EE288, 0xA0005402, 0xAE603202, 0x00000002,
+	0x402EE220, 0xACA05902, 0x00000002, 0x002EE288, 0xACA05902, 0x00000003,
+	0x402EE220, 0xACA05902, 0xAE605B02, 0x00000003, 0x002EE288, 0xACA05902,
+	0xAE605B02, 0x00000002, 0x402EE220, 0xAE605B02, 0x00000002, 0x002EE288,
+	0xAE605B02, 0x00000003, 0x402EE220, 0xAE605B02, 0xAE603202, 0x00000003,
+	0x002EE288, 0xAE605B02, 0xAE603202, 0x00000003, 0x402EE220, 0xAE605B02,
+	0xAE603502, 0x00000003, 0x002EE288, 0xAE605B02,
+	// Block 57, offset 0xe40
+	0xAE603502, 0x00000002, 0x402EE220, 0xAE606402, 0x00000002, 0x002EE288,
+	0xAE606402, 0x00000002, 0x402EE220, 0xAE606502, 0x00000002, 0x002EE288,
+	0xAE606502, 0x00000002, 0x402EE220, 0xAE606702, 0x00000002, 0x002EE288,
+	0xAE606702, 0x00000002, 0x402EE220, 0xAD806802, 0x00000002, 0x002EE288,
+	0xAD806802, 0x00000003, 0x402EE220, 0xAD806802, 0xAE603202, 0x00000003,
+	0x002EE288, 0xAD806802, 0xAE603202, 0x00000003, 0x402EE220, 0xAD806802,
+	0xAE603502, 0x00000003, 0x002EE288, 0xAD806802, 0xAE603502, 0x00000003,
+	0x402EE220, 0xAD806802, 0xAE604E02, 0x00000003, 0x002EE288, 0xAD806802,
+	0xAE604E02, 0x00000003, 0x402EE220, 0xAD806802, 0xAE606402, 0x00000003,
+	0x002EE288, 0xAD806802, 0xAE606402, 0x00000003, 0x402EE220, 0xAD806802,
+	0xADC07002, 0x00000003, 0x002EE288, 0xAD806802,
+	// Block 58, offset 0xe80
+	0xADC07002, 0x00000002, 0x402EE220, 0xADC07002, 0x00000002, 0x002EE288,
+	0xADC07002, 0x00000003, 0x402EE220, 0xADC07002, 0xAE603C02, 0x00000003,
+	0x002EE288, 0xADC07002, 0xAE603C02, 0x00000003, 0x002EE284, 0xA0013904,
+	0x002C9884, 0x00000003, 0x002EE28A, 0xA0013904, 0x002C988A, 0x00000003,
+	0x002EE294, 0xA0013914, 0x002C9894, 0x00000002, 0x002EE29D, 0x002DFE9D,
+	0x00000002, 0x002EE284, 0x002EE284, 0x00000002, 0x002EE28A, 0x002EE28A,
+	0x00000002, 0x402F2C20, 0xAE603202, 0x00000002, 0x002F2C88, 0xAE603202,
+	0x00000002, 0x402F2C20, 0xAE605202, 0x00000002, 0x002F2C88, 0xAE605202,
+	0x00000004, 0x002F2C9C, 0x0002E49C, 0x002E829C, 0x0002E49C, 0x00000002,
+	0x002F2C9D, 0x002BDE9D, 0x00000003, 0x002F2C9D, 0x002F2C9D, 0x002E829D,
+	0x00000003, 0x002F2C9D, 0x002F2C9D, 0x0030BE9D,
+	// Block 59, offset 0xec0
+	0x00000003, 0x002F2C9D, 0x00302C9D, 0x002C989D, 0x00000002, 0x002F5684,
+	0x002F2C84, 0x00000002, 0x402F7A20, 0xAE603202, 0x00000002, 0x002F7A88,
+	0xAE603202, 0x00000002, 0x402F7A20, 0xAE604102, 0x00000002, 0x002F7A88,
+	0xAE604102, 0x00000002, 0x402F7A20, 0xAE605202, 0x00000002, 0x002F7A88,
+	0xAE605202, 0x00000002, 0x402F7A20, 0xACA05602, 0x00000002, 0x002F7A88,
+	0xACA05602, 0x00000002, 0x002F7A84, 0xA0006104, 0x00000002, 0x002F7A8A,
+	0xA0006104, 0x00000002, 0x402F7A20, 0xAE606502, 0x00000002, 0x002F7A88,
+	0xAE606502, 0x00000002, 0x402F7A20, 0xAE606702, 0x00000002, 0x002F7A88,
+	0xAE606702, 0x00000002, 0x402F7A20, 0xADC07002, 0x00000002, 0x002F7A88,
+	0xADC07002, 0x00000003, 0x402F7A20, 0xADC07002, 0xAE605B02, 0x00000003,
+	0x002F7A88, 0xADC07002, 0xAE605B02, 0x00000002,
+	// Block 60, offset 0xf00
+	0x402F7A20, 0xADC07B02, 0x00000002, 0x002F7A88, 0xADC07B02, 0x00000002,
+	0x002F7A84, 0xA0013A04, 0x00000002, 0x002F7A8A, 0xA0013A04, 0x00000003,
+	0x002F7A9C, 0x002BDE9C, 0x002C629C, 0x00000005, 0x002F7A9C, 0x002BDE9C,
+	0x002C629C, 0x0009569C, 0x002FE69C, 0x00000006, 0x002F7A9C, 0x002BDE9C,
+	0x002C629C, 0x0009569C, 0x002FE69C, 0x0029D09C, 0x00000002, 0x402FE620,
+	0xAE603202, 0x00000002, 0x002FE688, 0xAE603202, 0x00000003, 0x402FE620,
+	0xAE603202, 0xAE605202, 0x00000003, 0x002FE688, 0xAE603202, 0xAE605202,
+	0x00000002, 0x402FE620, 0xAE603C02, 0x00000002, 0x002FE688, 0xAE603C02,
+	0x00000002, 0x402FE620, 0xAE604102, 0x00000002, 0x002FE688, 0xAE604102,
+	0x00000003, 0x402FE620, 0xAE604102, 0xAE605202, 0x00000003, 0x002FE688,
+	0xAE604102, 0xAE605202, 0x00000002, 0x402FE620,
+	// Block 61, offset 0xf40
+	0xAE605202, 0x00000002, 0x002FE688, 0xAE605202, 0x00000002, 0x402FE620,
+	0xACA05602, 0x00000002, 0x002FE688, 0xACA05602, 0x00000002, 0x002FE684,
+	0xA0006104, 0x00000002, 0x002FE68A, 0xA0006104, 0x00000002, 0x402FE620,
+	0xADC07002, 0x00000002, 0x002FE688, 0xADC07002, 0x00000003, 0x402FE620,
+	0xADC07002, 0xAE605202, 0x00000003, 0x002FE688, 0xADC07002, 0xAE605202,
+	0x00000002, 0x402FE620, 0xADC07702, 0x00000002, 0x002FE688, 0xADC07702,
+	0x00000002, 0x002FE684, 0xA0013A04, 0x00000002, 0x84E617F3, 0xAE613A04,
+	0x00000002, 0x002FE684, 0xA0013A04, 0x00000002, 0x002FE68A, 0xA0013A04,
+	0x00000003, 0x002FE684, 0xA0013A04, 0xAE605202, 0x00000002, 0x002FE69D,
+	0x002BDE9D, 0x00000003, 0x002FE69D, 0x002EE29D, 0x002FE69D, 0x00000003,
+	0x002FE684, 0xA0013904, 0x002FE684, 0x00000003,
+	// Block 62, offset 0xf80
+	0x002FE68A, 0xA0013904, 0x002FE68A, 0x00000003, 0x002FE684, 0xA0013A04,
+	0x00302C84, 0x00000002, 0x40302C20, 0xAE604102, 0x00000002, 0x00302C88,
+	0xAE604102, 0x00000002, 0x40302C20, 0xAE604702, 0x00000002, 0x40302C20,
+	0xAE605202, 0x00000002, 0x00302C88, 0xAE605202, 0x00000002, 0x40302C20,
+	0xACA05602, 0x00000002, 0x00302C88, 0xACA05602, 0x00000002, 0x40302C20,
+	0xADC07002, 0x00000002, 0x00302C88, 0xADC07002, 0x00000002, 0x40302C20,
+	0xADC07702, 0x00000002, 0x00302C88, 0xADC07702, 0x00000002, 0x40302C20,
+	0xADC07802, 0x00000002, 0x00302C88, 0xADC07802, 0x00000002, 0x40302C20,
+	0xADC07B02, 0x00000002, 0x00302C88, 0xADC07B02, 0x00000002, 0x00302C84,
+	0xA0013A04, 0x00000002, 0x00302C8A, 0xA0013A04, 0x00000002, 0x00302C84,
+	0x002C5684, 0x00000003, 0x00302C8A, 0x002C988A,
+	// Block 63, offset 0xfc0
+	0x002E228A, 0x00000003, 0x00302C84, 0xA0013904, 0x002D6884, 0x00000003,
+	0x00302C9D, 0x002D689D, 0x00312A9C, 0x00000002, 0x00302C84, 0x002FE684,
+	0x00000002, 0x00302C84, 0x002FE684, 0x00000002, 0x00302C84, 0x00300884,
+	0x00000002, 0x00302C84, 0x00312A84, 0x00000002, 0x00302C8A, 0x00312A84,
+	0x00000002, 0x40306C20, 0xAE603202, 0x00000002, 0x00306C88, 0xAE603202,
+	0x00000002, 0x40306C20, 0xAE603502, 0x00000002, 0x00306C88, 0xAE603502,
+	0x00000002, 0x40306C20, 0xAE603702, 0x00000002, 0x00306C88, 0xAE603702,
+	0x00000002, 0x40306C20, 0xAE603C02, 0x00000002, 0x00306C88, 0xAE603C02,
+	0x00000002, 0x40306C20, 0xAE604102, 0x00000002, 0x00306C88, 0xAE604102,
+	0x00000002, 0x40306C20, 0xAE604302, 0x00000002, 0x00306C88, 0xAE604302,
+	0x00000002, 0x40306C20, 0xAE604702, 0x00000002,
+	// Block 64, offset 0x1000
+	0x00306C88, 0xAE604702, 0x00000003, 0x40306C20, 0xAE604702, 0xAE603202,
+	0x00000003, 0x00306C88, 0xAE604702, 0xAE603202, 0x00000003, 0x40306C20,
+	0xAE604702, 0xAE603502, 0x00000003, 0x00306C88, 0xAE604702, 0xAE603502,
+	0x00000003, 0x40306C20, 0xAE604702, 0xAE604102, 0x00000003, 0x00306C88,
+	0xAE604702, 0xAE604102, 0x00000003, 0x40306C20, 0xAE604702, 0xAE605B02,
+	0x00000003, 0x00306C88, 0xAE604702, 0xAE605B02, 0x00000002, 0x40306C20,
+	0xAE604D02, 0x00000002, 0x00306C88, 0xAE604D02, 0x00000002, 0x40306C20,
+	0xAE604E02, 0x00000002, 0x00306C88, 0xAE604E02, 0x00000003, 0x40306C20,
+	0xAE604E02, 0xAE603202, 0x00000003, 0x00306C88, 0xAE604E02, 0xAE603202,
+	0x00000002, 0x40306C20, 0xACA05902, 0x00000002, 0x00306C88, 0xACA05902,
+	0x00000002, 0x40306C20, 0xAE605B02, 0x00000002,
+	// Block 65, offset 0x1040
+	0x00306C88, 0xAE605B02, 0x00000003, 0x40306C20, 0xAE605B02, 0xAE604702,
+	0x00000003, 0x00306C88, 0xAE605B02, 0xAE604702, 0x00000002, 0x40306C20,
+	0xAE606402, 0x00000002, 0x00306C88, 0xAE606402, 0x00000002, 0x40306C20,
+	0xAE606502, 0x00000002, 0x00306C88, 0xAE606502, 0x00000002, 0x40306C20,
+	0xAE606702, 0x00000002, 0x00306C88, 0xAE606702, 0x00000002, 0x40306C20,
+	0xAD806802, 0x00000002, 0x00306C88, 0xAD806802, 0x00000003, 0x40306C20,
+	0xAD806802, 0xAE603202, 0x00000003, 0x00306C88, 0xAD806802, 0xAE603202,
+	0x00000003, 0x40306C20, 0xAD806802, 0xAE603502, 0x00000003, 0x00306C88,
+	0xAD806802, 0xAE603502, 0x00000003, 0x40306C20, 0xAD806802, 0xAE604E02,
+	0x00000003, 0x00306C88, 0xAD806802, 0xAE604E02, 0x00000003, 0x40306C20,
+	0xAD806802, 0xAE606402, 0x00000003, 0x00306C88,
+	// Block 66, offset 0x1080
+	0xAD806802, 0xAE606402, 0x00000003, 0x40306C20, 0xAD806802, 0xADC07002,
+	0x00000003, 0x00306C88, 0xAD806802, 0xADC07002, 0x00000002, 0x40306C20,
+	0xADC07002, 0x00000002, 0x00306C88, 0xADC07002, 0x00000002, 0x40306C20,
+	0xADC07502, 0x00000002, 0x00306C88, 0xADC07502, 0x00000002, 0x40306C20,
+	0xADC07802, 0x00000002, 0x00306C88, 0xADC07802, 0x00000002, 0x40306C20,
+	0xADC07A02, 0x00000002, 0x00306C88, 0xADC07A02, 0x00000003, 0x00306C9D,
+	0x002F2C9D, 0x0002BA9C, 0x00000002, 0x4030BE20, 0xAE604E02, 0x00000002,
+	0x0030BE88, 0xAE604E02, 0x00000002, 0x4030BE20, 0xADC07002, 0x00000002,
+	0x0030BE88, 0xADC07002, 0x00000003, 0x0030BE9D, 0x0009569C, 0x002E829C,
+	0x00000004, 0x0030BE84, 0x002D9A84, 0x002D9A84, 0x002D9A9F, 0x00000004,
+	0x0030BE8A, 0x002D9A8A, 0x002D9A8A, 0x002D9A9F,
+	// Block 67, offset 0x10c0
+	0x00000002, 0x0030BE9D, 0x002FE69D, 0x00000002, 0x0030BE84, 0x00310084,
+	0x00000002, 0x0030BE8A, 0x0031008A, 0x00000002, 0x4030E220, 0xAE603202,
+	0x00000002, 0x0030E288, 0xAE603202, 0x00000002, 0x4030E220, 0xAE603502,
+	0x00000002, 0x0030E288, 0xAE603502, 0x00000002, 0x4030E220, 0xAE603C02,
+	0x00000002, 0x0030E288, 0xAE603C02, 0x00000002, 0x4030E220, 0xAE604302,
+	0x00000002, 0x4030E220, 0xAE604702, 0x00000002, 0x0030E288, 0xAE604702,
+	0x00000002, 0x4030E220, 0xAE605202, 0x00000002, 0x0030E288, 0xAE605202,
+	0x00000002, 0x4030E220, 0xADC07002, 0x00000002, 0x0030E288, 0xADC07002,
+	0x00000002, 0x0030E29D, 0x002C3A9D, 0x00000002, 0x4030F620, 0xAE604702,
+	0x00000002, 0x0030F688, 0xAE604702, 0x00000002, 0x4030F620, 0xAE605202,
+	0x00000002, 0x0030F688, 0xAE605202, 0x00000002,
+	// Block 68, offset 0x1100
+	0x40310020, 0xAE603202, 0x00000002, 0x00310088, 0xAE603202, 0x00000002,
+	0x40310020, 0xAE603502, 0x00000002, 0x00310088, 0xAE603502, 0x00000002,
+	0x40310020, 0xAE603C02, 0x00000002, 0x00310088, 0xAE603C02, 0x00000002,
+	0x40310020, 0xAE604302, 0x00000002, 0x40310020, 0xAE604702, 0x00000002,
+	0x00310088, 0xAE604702, 0x00000002, 0x40310020, 0xAE604E02, 0x00000002,
+	0x00310088, 0xAE604E02, 0x00000002, 0x40310020, 0xAE605202, 0x00000002,
+	0x00310088, 0xAE605202, 0x00000002, 0x40310020, 0xAE605B02, 0x00000002,
+	0x00310088, 0xAE605B02, 0x00000002, 0x40310020, 0xAE606402, 0x00000002,
+	0x00310088, 0xAE606402, 0x00000002, 0x40310020, 0xADC07002, 0x00000002,
+	0x00310088, 0xADC07002, 0x00000002, 0x40312A20, 0xAE603202, 0x00000002,
+	0x00312A88, 0xAE603202, 0x00000002, 0x40312A20,
+	// Block 69, offset 0x1140
+	0xAE603C02, 0x00000002, 0x00312A88, 0xAE603C02, 0x00000002, 0x40312A20,
+	0xAE604102, 0x00000002, 0x00312A88, 0xAE604102, 0x00000002, 0x40312A20,
+	0xAE605202, 0x00000002, 0x00312A88, 0xAE605202, 0x00000002, 0x40312A20,
+	0xADC07002, 0x00000002, 0x00312A88, 0xADC07002, 0x00000002, 0x40312A20,
+	0xADC07B02, 0x00000002, 0x00312A88, 0xADC07B02, 0x00000002, 0x00312A84,
+	0x0030E284, 0x00000002, 0x40316420, 0xAE604102, 0x00000002, 0x00316488,
+	0xAE604102, 0x00000002, 0x40325220, 0xAE602202, 0x00000002, 0x00325288,
+	0xAE602202, 0x00000003, 0x40325220, 0xAE602202, 0xAE603202, 0x00000003,
+	0x00325288, 0xAE602202, 0xAE603202, 0x00000004, 0x40325220, 0xAE602202,
+	0xAE603202, 0xAF007F02, 0x00000004, 0x00325288, 0xAE602202, 0xAE603202,
+	0xAF007F02, 0x00000003, 0x40325220, 0xAE602202,
+	// Block 70, offset 0x1180
+	0xAE603502, 0x00000003, 0x00325288, 0xAE602202, 0xAE603502, 0x00000004,
+	0x40325220, 0xAE602202, 0xAE603502, 0xAF007F02, 0x00000004, 0x00325288,
+	0xAE602202, 0xAE603502, 0xAF007F02, 0x00000003, 0x40325220, 0xAE602202,
+	0xAE604502, 0x00000003, 0x00325288, 0xAE602202, 0xAE604502, 0x00000004,
+	0x40325220, 0xAE602202, 0xAE604502, 0xAF007F02, 0x00000004, 0x00325288,
+	0xAE602202, 0xAE604502, 0xAF007F02, 0x00000003, 0x40325220, 0xAE602202,
+	0xAF007F02, 0x00000003, 0x00325288, 0xAE602202, 0xAF007F02, 0x00000002,
+	0x40325220, 0xAE602A02, 0x00000002, 0x00325288, 0xAE602A02, 0x00000003,
+	0x40325220, 0xAE602A02, 0xAE603202, 0x00000003, 0x00325288, 0xAE602A02,
+	0xAE603202, 0x00000004, 0x40325220, 0xAE602A02, 0xAE603202, 0xAF007F02,
+	0x00000004, 0x00325288, 0xAE602A02, 0xAE603202,
+	// Block 71, offset 0x11c0
+	0xAF007F02, 0x00000003, 0x40325220, 0xAE602A02, 0xAE603502, 0x00000003,
+	0x00325288, 0xAE602A02, 0xAE603502, 0x00000004, 0x40325220, 0xAE602A02,
+	0xAE603502, 0xAF007F02, 0x00000004, 0x00325288, 0xAE602A02, 0xAE603502,
+	0xAF007F02, 0x00000003, 0x40325220, 0xAE602A02, 0xAE604502, 0x00000003,
+	0x00325288, 0xAE602A02, 0xAE604502, 0x00000004, 0x40325220, 0xAE602A02,
+	0xAE604502, 0xAF007F02, 0x00000004, 0x00325288, 0xAE602A02, 0xAE604502,
+	0xAF007F02, 0x00000003, 0x40325220, 0xAE602A02, 0xAF007F02, 0x00000003,
+	0x00325288, 0xAE602A02, 0xAF007F02, 0x00000002, 0x40325220, 0xAE603202,
+	0x00000002, 0x00325288, 0xAE603202, 0x00000003, 0x40325220, 0xAE603202,
+	0xAF007F02, 0x00000002, 0x40325220, 0xAE603502, 0x00000002, 0x00325288,
+	0xAE603502, 0x00000003, 0x40325220, 0xAE603502,
+	// Block 72, offset 0x1200
+	0xAF007F02, 0x00000002, 0x40325220, 0xAE603702, 0x00000002, 0x00325288,
+	0xAE603702, 0x00000002, 0x40325220, 0xAE604502, 0x00000003, 0x40325220,
+	0xAE604502, 0xAF007F02, 0x00000002, 0x40325220, 0xAE605B02, 0x00000002,
+	0x00325288, 0xAE605B02, 0x00000002, 0x40325220, 0xAF007F02, 0x00000002,
+	0x00325288, 0xAF007F02, 0x00000002, 0x40325C20, 0xAE602202, 0x00000002,
+	0x00325C88, 0xAE602202, 0x00000003, 0x40325C20, 0xAE602202, 0xAE603202,
+	0x00000003, 0x00325C88, 0xAE602202, 0xAE603202, 0x00000003, 0x40325C20,
+	0xAE602202, 0xAE603502, 0x00000003, 0x00325C88, 0xAE602202, 0xAE603502,
+	0x00000002, 0x40325C20, 0xAE602A02, 0x00000002, 0x00325C88, 0xAE602A02,
+	0x00000003, 0x40325C20, 0xAE602A02, 0xAE603202, 0x00000003, 0x00325C88,
+	0xAE602A02, 0xAE603202, 0x00000003, 0x40325C20,
+	// Block 73, offset 0x1240
+	0xAE602A02, 0xAE603502, 0x00000003, 0x00325C88, 0xAE602A02, 0xAE603502,
+	0x00000002, 0x40325C20, 0xAE603202, 0x00000002, 0x00325C88, 0xAE603202,
+	0x00000002, 0x40325C20, 0xAE603502, 0x00000002, 0x00325C88, 0xAE603502,
+	0x00000002, 0x40326820, 0xAE602202, 0x00000002, 0x00326888, 0xAE602202,
+	0x00000003, 0x40326820, 0xAE602202, 0xAE603202, 0x00000003, 0x00326888,
+	0xAE602202, 0xAE603202, 0x00000004, 0x40326820, 0xAE602202, 0xAE603202,
+	0xAF007F02, 0x00000004, 0x00326888, 0xAE602202, 0xAE603202, 0xAF007F02,
+	0x00000003, 0x40326820, 0xAE602202, 0xAE603502, 0x00000003, 0x00326888,
+	0xAE602202, 0xAE603502, 0x00000004, 0x40326820, 0xAE602202, 0xAE603502,
+	0xAF007F02, 0x00000004, 0x00326888, 0xAE602202, 0xAE603502, 0xAF007F02,
+	0x00000003, 0x40326820, 0xAE602202, 0xAE604502,
+	// Block 74, offset 0x1280
+	0x00000003, 0x00326888, 0xAE602202, 0xAE604502, 0x00000004, 0x40326820,
+	0xAE602202, 0xAE604502, 0xAF007F02, 0x00000004, 0x00326888, 0xAE602202,
+	0xAE604502, 0xAF007F02, 0x00000003, 0x40326820, 0xAE602202, 0xAF007F02,
+	0x00000003, 0x00326888, 0xAE602202, 0xAF007F02, 0x00000002, 0x40326820,
+	0xAE602A02, 0x00000002, 0x00326888, 0xAE602A02, 0x00000003, 0x40326820,
+	0xAE602A02, 0xAE603202, 0x00000003, 0x00326888, 0xAE602A02, 0xAE603202,
+	0x00000004, 0x40326820, 0xAE602A02, 0xAE603202, 0xAF007F02, 0x00000004,
+	0x00326888, 0xAE602A02, 0xAE603202, 0xAF007F02, 0x00000003, 0x40326820,
+	0xAE602A02, 0xAE603502, 0x00000003, 0x00326888, 0xAE602A02, 0xAE603502,
+	0x00000004, 0x40326820, 0xAE602A02, 0xAE603502, 0xAF007F02, 0x00000004,
+	0x00326888, 0xAE602A02, 0xAE603502, 0xAF007F02,
+	// Block 75, offset 0x12c0
+	0x00000003, 0x40326820, 0xAE602A02, 0xAE604502, 0x00000003, 0x00326888,
+	0xAE602A02, 0xAE604502, 0x00000004, 0x40326820, 0xAE602A02, 0xAE604502,
+	0xAF007F02, 0x00000004, 0x00326888, 0xAE602A02, 0xAE604502, 0xAF007F02,
+	0x00000003, 0x40326820, 0xAE602A02, 0xAF007F02, 0x00000003, 0x00326888,
+	0xAE602A02, 0xAF007F02, 0x00000002, 0x40326820, 0xAE603202, 0x00000002,
+	0x00326888, 0xAE603202, 0x00000003, 0x40326820, 0xAE603202, 0xAF007F02,
+	0x00000002, 0x40326820, 0xAE603502, 0x00000002, 0x00326888, 0xAE603502,
+	0x00000003, 0x40326820, 0xAE603502, 0xAF007F02, 0x00000002, 0x40326820,
+	0xAE604502, 0x00000003, 0x40326820, 0xAE604502, 0xAF007F02, 0x00000002,
+	0x40326820, 0xAF007F02, 0x00000002, 0x00326888, 0xAF007F02, 0x00000002,
+	0x40326C20, 0xAE602202, 0x00000002, 0x00326C88,
+	// Block 76, offset 0x1300
+	0xAE602202, 0x00000003, 0x40326C20, 0xAE602202, 0xAE603202, 0x00000003,
+	0x00326C88, 0xAE602202, 0xAE603202, 0x00000003, 0x40326C20, 0xAE602202,
+	0xAE603502, 0x00000003, 0x00326C88, 0xAE602202, 0xAE603502, 0x00000003,
+	0x40326C20, 0xAE602202, 0xAE604502, 0x00000003, 0x00326C88, 0xAE602202,
+	0xAE604502, 0x00000002, 0x40326C20, 0xAE602A02, 0x00000002, 0x00326C88,
+	0xAE602A02, 0x00000003, 0x40326C20, 0xAE602A02, 0xAE603202, 0x00000003,
+	0x00326C88, 0xAE602A02, 0xAE603202, 0x00000003, 0x40326C20, 0xAE602A02,
+	0xAE603502, 0x00000003, 0x00326C88, 0xAE602A02, 0xAE603502, 0x00000003,
+	0x40326C20, 0xAE602A02, 0xAE604502, 0x00000003, 0x00326C88, 0xAE602A02,
+	0xAE604502, 0x00000002, 0x40326C20, 0xAE603202, 0x00000002, 0x00326C88,
+	0xAE603202, 0x00000002, 0x40326C20, 0xAE603502,
+	// Block 77, offset 0x1340
+	0x00000002, 0x00326C88, 0xAE603502, 0x00000002, 0x40326C20, 0xAE603702,
+	0x00000002, 0x00326C88, 0xAE603702, 0x00000002, 0x40326C20, 0xAE604502,
+	0x00000002, 0x40326C20, 0xAE604702, 0x00000002, 0x00326C88, 0xAE604702,
+	0x00000003, 0x40326C20, 0xAE604702, 0xAE603202, 0x00000003, 0x40326C20,
+	0xAE604702, 0xAE603502, 0x00000003, 0x40326C20, 0xAE604702, 0xAE604502,
+	0x00000002, 0x40326C20, 0xAE605B02, 0x00000002, 0x00326C88, 0xAE605B02,
+	0x00000003, 0x00327084, 0x00325284, 0x00326C84, 0x00000003, 0x0032708A,
+	0x00325284, 0x00326C84, 0x00000002, 0x40327C20, 0xAE602202, 0x00000002,
+	0x00327C88, 0xAE602202, 0x00000003, 0x40327C20, 0xAE602202, 0xAE603202,
+	0x00000003, 0x00327C88, 0xAE602202, 0xAE603202, 0x00000003, 0x40327C20,
+	0xAE602202, 0xAE603502, 0x00000003, 0x00327C88,
+	// Block 78, offset 0x1380
+	0xAE602202, 0xAE603502, 0x00000002, 0x40327C20, 0xAE602A02, 0x00000002,
+	0x00327C88, 0xAE602A02, 0x00000003, 0x40327C20, 0xAE602A02, 0xAE603202,
+	0x00000003, 0x00327C88, 0xAE602A02, 0xAE603202, 0x00000003, 0x40327C20,
+	0xAE602A02, 0xAE603502, 0x00000003, 0x00327C88, 0xAE602A02, 0xAE603502,
+	0x00000002, 0x40327C20, 0xAE603202, 0x00000002, 0x00327C88, 0xAE603202,
+	0x00000002, 0x40327C20, 0xAE603502, 0x00000002, 0x00327C88, 0xAE603502,
+	0x00000002, 0x40328820, 0xAE602202, 0x00000002, 0x40328820, 0xAE602A02,
+	0x00000002, 0x00328888, 0xAE602A02, 0x00000002, 0x40329820, 0xAE602202,
+	0x00000003, 0x40329820, 0xAE602202, 0xAE603202, 0x00000003, 0x40329820,
+	0xAE602202, 0xAE603502, 0x00000003, 0x40329820, 0xAE602202, 0xAE604502,
+	0x00000002, 0x40329820, 0xAE602A02, 0x00000002,
+	// Block 79, offset 0x13c0
+	0x00329888, 0xAE602A02, 0x00000003, 0x40329820, 0xAE602A02, 0xAE603202,
+	0x00000003, 0x00329888, 0xAE602A02, 0xAE603202, 0x00000003, 0x40329820,
+	0xAE602A02, 0xAE603502, 0x00000003, 0x00329888, 0xAE602A02, 0xAE603502,
+	0x00000003, 0x40329820, 0xAE602A02, 0xAE604502, 0x00000003, 0x00329888,
+	0xAE602A02, 0xAE604502, 0x00000002, 0x40329820, 0xAE603202, 0x00000002,
+	0x00329888, 0xAE603202, 0x00000002, 0x40329820, 0xAE603502, 0x00000002,
+	0x00329888, 0xAE603502, 0x00000002, 0x40329820, 0xAE603702, 0x00000002,
+	0x00329888, 0xAE603702, 0x00000002, 0x40329820, 0xAE604502, 0x00000002,
+	0x40329820, 0xAE604702, 0x00000002, 0x00329888, 0xAE604702, 0x00000003,
+	0x40329820, 0xAE604702, 0xAE603202, 0x00000003, 0x40329820, 0xAE604702,
+	0xAE603502, 0x00000003, 0x40329820, 0xAE604702,
+	// Block 80, offset 0x1400
+	0xAE604502, 0x00000002, 0x40329820, 0xAE605B02, 0x00000002, 0x00329888,
+	0xAE605B02, 0x00000002, 0x4032A220, 0xAE602202, 0x00000002, 0x0032A288,
+	0xAE602202, 0x00000003, 0x4032A220, 0xAE602202, 0xAE603202, 0x00000003,
+	0x0032A288, 0xAE602202, 0xAE603202, 0x00000004, 0x4032A220, 0xAE602202,
+	0xAE603202, 0xAF007F02, 0x00000004, 0x0032A288, 0xAE602202, 0xAE603202,
+	0xAF007F02, 0x00000003, 0x4032A220, 0xAE602202, 0xAE603502, 0x00000003,
+	0x0032A288, 0xAE602202, 0xAE603502, 0x00000004, 0x4032A220, 0xAE602202,
+	0xAE603502, 0xAF007F02, 0x00000004, 0x0032A288, 0xAE602202, 0xAE603502,
+	0xAF007F02, 0x00000003, 0x4032A220, 0xAE602202, 0xAE604502, 0x00000003,
+	0x0032A288, 0xAE602202, 0xAE604502, 0x00000004, 0x4032A220, 0xAE602202,
+	0xAE604502, 0xAF007F02, 0x00000004, 0x0032A288,
+	// Block 81, offset 0x1440
+	0xAE602202, 0xAE604502, 0xAF007F02, 0x00000003, 0x4032A220, 0xAE602202,
+	0xAF007F02, 0x00000003, 0x0032A288, 0xAE602202, 0xAF007F02, 0x00000002,
+	0x4032A220, 0xAE602A02, 0x00000002, 0x0032A288, 0xAE602A02, 0x00000003,
+	0x4032A220, 0xAE602A02, 0xAE603202, 0x00000003, 0x0032A288, 0xAE602A02,
+	0xAE603202, 0x00000004, 0x4032A220, 0xAE602A02, 0xAE603202, 0xAF007F02,
+	0x00000004, 0x0032A288, 0xAE602A02, 0xAE603202, 0xAF007F02, 0x00000003,
+	0x4032A220, 0xAE602A02, 0xAE603502, 0x00000003, 0x0032A288, 0xAE602A02,
+	0xAE603502, 0x00000004, 0x4032A220, 0xAE602A02, 0xAE603502, 0xAF007F02,
+	0x00000004, 0x0032A288, 0xAE602A02, 0xAE603502, 0xAF007F02, 0x00000003,
+	0x4032A220, 0xAE602A02, 0xAE604502, 0x00000003, 0x0032A288, 0xAE602A02,
+	0xAE604502, 0x00000004, 0x4032A220, 0xAE602A02,
+	// Block 82, offset 0x1480
+	0xAE604502, 0xAF007F02, 0x00000004, 0x0032A288, 0xAE602A02, 0xAE604502,
+	0xAF007F02, 0x00000003, 0x4032A220, 0xAE602A02, 0xAF007F02, 0x00000003,
+	0x0032A288, 0xAE602A02, 0xAF007F02, 0x00000002, 0x4032A220, 0xAE603202,
+	0x00000002, 0x0032A288, 0xAE603202, 0x00000003, 0x4032A220, 0xAE603202,
+	0xAF007F02, 0x00000002, 0x4032A220, 0xAE603502, 0x00000002, 0x0032A288,
+	0xAE603502, 0x00000003, 0x4032A220, 0xAE603502, 0xAF007F02, 0x00000002,
+	0x4032A220, 0xAE604502, 0x00000003, 0x4032A220, 0xAE604502, 0xAF007F02,
+	0x00000002, 0x4032A220, 0xAF007F02, 0x00000002, 0x0032A288, 0xAF007F02,
+	0x00000003, 0x0032C084, 0x0032AA84, 0x0032BE84, 0x00000002, 0x00336284,
+	0xA0013A04, 0x00000002, 0x0033628A, 0xA0013A04, 0x00000002, 0x4033B220,
+	0xAE603502, 0x00000002, 0x0033B288, 0xAE603502,
+	// Block 83, offset 0x14c0
+	0x00000002, 0x4033B220, 0xAE604702, 0x00000002, 0x0033B288, 0xAE604702,
+	0x00000002, 0x4033CA20, 0xAE603702, 0x00000002, 0x0033CA88, 0xAE603702,
+	0x00000002, 0x40341420, 0xAE603502, 0x00000002, 0x00341488, 0xAE603502,
+	0x00000002, 0x40341420, 0xAE605B02, 0x00000002, 0x00341488, 0xAE605B02,
+	0x00000002, 0x84E61A9D, 0x84E61AA6, 0x00000002, 0x40357220, 0xAE605B02,
+	0x00000002, 0x00357288, 0xAE605B02, 0x00000002, 0x40389020, 0xA1108C02,
+	0x00000002, 0x40389020, 0xA1208D02, 0x00000002, 0x40389020, 0xA1509202,
+	0x00000002, 0x40389220, 0xA1509202, 0x00000002, 0x40389220, 0xA1709502,
+	0x00000002, 0x40389420, 0xA1509202, 0x00000002, 0x40389620, 0xA1509202,
+	0x00000002, 0x40389820, 0xA1509202, 0x00000002, 0x40389A20, 0xA1308E02,
+	0x00000002, 0x40389A20, 0xA1509202, 0x00000002,
+	// Block 84, offset 0x1500
+	0x00389A84, 0x00389A84, 0x00000002, 0x00389A84, 0x0038A284, 0x00000002,
+	0x40389C20, 0xA1509202, 0x00000002, 0x4038A020, 0xA1509202, 0x00000002,
+	0x4038A220, 0xA0E08902, 0x00000002, 0x4038A220, 0xA1509202, 0x00000002,
+	0x0038A284, 0x0038A284, 0x00000003, 0x0038A284, 0x0038A284, 0xA1108C02,
+	0x00000002, 0x4038A420, 0xA1509202, 0x00000002, 0x0038A499, 0xA1509202,
+	0x00000002, 0x4038A420, 0xA1709502, 0x00000002, 0x4038A620, 0xA1509202,
+	0x00000002, 0x4038A820, 0xA1509202, 0x00000002, 0x4038AA20, 0xA1509202,
+	0x00000002, 0x4038AC20, 0xA1509202, 0x00000002, 0x4038B020, 0xA1509202,
+	0x00000002, 0x0038B099, 0xA1509202, 0x00000002, 0x4038B020, 0xA1709502,
+	0x00000002, 0x4038B220, 0xA1509202, 0x00000002, 0x4038B420, 0xA1509202,
+	0x00000002, 0x4038B620, 0xA1509202, 0x00000002,
+	// Block 85, offset 0x1540
+	0x4038B820, 0xA1909002, 0x00000002, 0x4038B820, 0xA1809102, 0x00000002,
+	0x4038B820, 0xA1509202, 0x00000003, 0x4038B820, 0xA1509202, 0xA1909002,
+	0x00000003, 0x4038B820, 0xA1509202, 0xA1809102, 0x00000002, 0x4038BA20,
+	0xA1509202, 0x00000002, 0x00391C84, 0xA0013A04, 0x00000002, 0x00393099,
+	0x00393899, 0x00000002, 0x0039309A, 0x0039389A, 0x00000002, 0x00393097,
+	0x00396497, 0x00000002, 0x0039309A, 0x0039649A, 0x00000002, 0x00393097,
+	0x00397297, 0x00000002, 0x0039309A, 0x0039729A, 0x00000002, 0x00393097,
+	0x00397497, 0x00000002, 0x00393099, 0x0039A499, 0x00000002, 0x00393099,
+	0x0039A699, 0x00000002, 0x00393097, 0x003A4E97, 0x00000002, 0x00393098,
+	0x003A4E98, 0x00000002, 0x00393099, 0x003A4E99, 0x00000002, 0x0039309A,
+	0x003A4E9A, 0x00000002, 0x00393099, 0x003A5699,
+	// Block 86, offset 0x1580
+	0x00000002, 0x00393097, 0x003A6897, 0x00000002, 0x00393098, 0x003A6898,
+	0x00000002, 0x00393099, 0x003A7299, 0x00000002, 0x0039309A, 0x003A729A,
+	0x00000002, 0x00393099, 0x003A7499, 0x00000002, 0x0039309A, 0x003A749A,
+	0x00000002, 0x00393099, 0x003A7A99, 0x00000002, 0x0039309A, 0x003A7A9A,
+	0x00000002, 0x00393099, 0x003A7C99, 0x00000002, 0x0039309A, 0x003A7C9A,
+	0x00000002, 0x00393099, 0x003A7E99, 0x00000002, 0x0039309A, 0x003A7E9A,
+	0x00000002, 0x00393097, 0x003A8E97, 0x00000002, 0x00393099, 0x003A8E99,
+	0x00000002, 0x00393099, 0x003A8E99, 0x00000002, 0x0039309A, 0x003A8E9A,
+	0x00000002, 0x0039309A, 0x003A8E9A, 0x00000002, 0x00393099, 0x003A9099,
+	0x00000002, 0x0039309A, 0x003A909A, 0x00000002, 0x00393097, 0x003A9897,
+	0x00000002, 0x00393099, 0x003A9899, 0x00000002,
+	// Block 87, offset 0x15c0
+	0x0039309A, 0x003A989A, 0x00000004, 0x0039389A, 0x003A1A9A, 0x00393C9A,
+	0x0039A49A, 0x00000004, 0x0039389A, 0x003A409A, 0x003A409A, 0x003A689A,
+	0x00000003, 0x00393C99, 0x00397299, 0x003A9099, 0x00000003, 0x00393C99,
+	0x00397499, 0x003A9099, 0x00000003, 0x00395697, 0x00396497, 0x003A4E97,
+	0x00000003, 0x00395699, 0x00396499, 0x003A8E99, 0x00000003, 0x00395699,
+	0x00396499, 0x003A9099, 0x00000003, 0x00395697, 0x00397297, 0x00396497,
+	0x00000003, 0x00395699, 0x00397299, 0x00396499, 0x00000003, 0x00395697,
+	0x00397297, 0x003A4E97, 0x00000003, 0x00395697, 0x00397497, 0x003A4E97,
+	0x00000003, 0x00395699, 0x00397499, 0x003A8E99, 0x00000003, 0x00395699,
+	0x00397499, 0x003A9099, 0x00000003, 0x00395697, 0x003A4E97, 0x00396497,
+	0x00000003, 0x00395697, 0x003A4E97, 0x00397297,
+	// Block 88, offset 0x1600
+	0x00000003, 0x00395697, 0x003A4E97, 0x00397497, 0x00000003, 0x00395699,
+	0x003A4E99, 0x003A8E99, 0x00000003, 0x00395699, 0x003A4E99, 0x003A9099,
+	0x00000003, 0x00396499, 0x00397299, 0x003A8E99, 0x00000003, 0x00396499,
+	0x00397299, 0x003A9099, 0x00000008, 0x0039649A, 0x003A409A, 0x0002129A,
+	0x0039649A, 0x003A409A, 0x0039389A, 0x003A409A, 0x003A689A, 0x00000003,
+	0x00396497, 0x003A4E97, 0x00397297, 0x00000003, 0x00396499, 0x003A4E99,
+	0x00397299, 0x00000003, 0x00396499, 0x003A4E99, 0x003A8E99, 0x00000003,
+	0x00396499, 0x003A4E99, 0x003A9099, 0x00000003, 0x00397299, 0x00396499,
+	0x003A9099, 0x00000003, 0x00397299, 0x003A4E99, 0x003A8E99, 0x00000003,
+	0x00397299, 0x003A4E99, 0x003A9099, 0x00000004, 0x0039A49A, 0x0039C69A,
+	0x003A749A, 0x003A409A, 0x00000003, 0x0039C697,
+	// Block 89, offset 0x1640
+	0x00396497, 0x00397297, 0x00000003, 0x0039C699, 0x00396499, 0x003A8E99,
+	0x00000003, 0x0039C697, 0x00397297, 0x00396497, 0x00000003, 0x0039C699,
+	0x00397499, 0x003A8E99, 0x00000003, 0x0039C699, 0x00397499, 0x003A9099,
+	0x00000003, 0x0039C697, 0x003A4E97, 0x00396497, 0x00000003, 0x0039C697,
+	0x003A4E97, 0x00397297, 0x00000003, 0x0039C699, 0x003A4E99, 0x00397299,
+	0x00000003, 0x0039C697, 0x003A4E97, 0x003A4E97, 0x00000003, 0x0039C699,
+	0x003A4E99, 0x003A4E99, 0x00000003, 0x0039C899, 0x00396499, 0x003A9099,
+	0x00000003, 0x0039C897, 0x00397297, 0x003A4E97, 0x00000003, 0x0039C899,
+	0x00397299, 0x003A4E99, 0x00000003, 0x0039C899, 0x00397299, 0x003A9099,
+	0x00000003, 0x0039C897, 0x003A4E97, 0x00397497, 0x00000003, 0x0039C899,
+	0x003A4E99, 0x00397499, 0x00000003, 0x0039C897,
+	// Block 90, offset 0x1680
+	0x003A4E97, 0x003A4E97, 0x00000003, 0x0039C899, 0x003A4E99, 0x003A4E99,
+	0x00000003, 0x0039DC97, 0x00397297, 0x00397297, 0x00000003, 0x0039DC99,
+	0x00397299, 0x00397299, 0x00000003, 0x0039DC99, 0x00397299, 0x003A9099,
+	0x00000004, 0x0039DC9A, 0x003A409A, 0x0039EE9A, 0x003A4E9A, 0x00000003,
+	0x0039DC9A, 0x003A409A, 0x003A8E9A, 0x00000012, 0x0039DC9A, 0x003A409A,
+	0x003A8E9A, 0x0002129A, 0x0039389A, 0x003A409A, 0x003A409A, 0x003A689A,
+	0x0002129A, 0x0039EE9A, 0x003A409A, 0x003A909A, 0x003A689A, 0x0002129A,
+	0x003A749A, 0x0039C69A, 0x003A409A, 0x003A4E9A, 0x00000003, 0x0039DC9A,
+	0x003A409A, 0x003AAA9A, 0x00000003, 0x0039DC97, 0x003A4E97, 0x003A4E97,
+	0x00000003, 0x0039DC99, 0x003A4E99, 0x003A4E99, 0x00000003, 0x0039DE99,
+	0x00397299, 0x003A8E99, 0x00000003, 0x0039DE99,
+	// Block 91, offset 0x16c0
+	0x00397299, 0x003A9099, 0x00000003, 0x0039DE97, 0x00397497, 0x003A4E97,
+	0x00000003, 0x0039DE99, 0x00397499, 0x003A4E99, 0x00000003, 0x0039E697,
+	0x003A4E97, 0x00397297, 0x00000003, 0x0039E699, 0x003A4E99, 0x00397299,
+	0x00000003, 0x0039E697, 0x003A4E97, 0x003A4E97, 0x00000003, 0x0039E699,
+	0x003A4E99, 0x003A9099, 0x00000003, 0x0039EE97, 0x00396497, 0x003A4E97,
+	0x00000003, 0x0039EE99, 0x00396499, 0x003A4E99, 0x00000004, 0x0039EE9A,
+	0x003A409A, 0x003A909A, 0x003A689A, 0x00000003, 0x0039EE97, 0x003A4E97,
+	0x003A4E97, 0x00000003, 0x0039EE99, 0x003A4E99, 0x003A4E99, 0x00000003,
+	0x0039EE99, 0x003A4E99, 0x003A8E99, 0x00000003, 0x0039EE99, 0x003A4E99,
+	0x003A9099, 0x00000003, 0x0039F099, 0x003A4E99, 0x003A4E99, 0x00000003,
+	0x0039F099, 0x003A4E99, 0x003A8E99, 0x00000003,
+	// Block 92, offset 0x1700
+	0x0039F099, 0x003A4E99, 0x003A9099, 0x00000003, 0x0039FC97, 0x00397497,
+	0x003A4E97, 0x00000003, 0x0039FC99, 0x00397499, 0x003A4E99, 0x00000003,
+	0x0039FC99, 0x003A4E99, 0x003A9099, 0x00000003, 0x003A129A, 0x003A409A,
+	0x003AAA9A, 0x00000003, 0x003A1297, 0x003A4E97, 0x00397297, 0x00000003,
+	0x003A1299, 0x003A4E99, 0x00397299, 0x00000003, 0x003A1299, 0x003A4E99,
+	0x003A4E99, 0x00000003, 0x003A1299, 0x003A4E99, 0x003A9099, 0x00000003,
+	0x003A1A97, 0x003A4E97, 0x003A4E97, 0x00000003, 0x003A1A99, 0x003A4E99,
+	0x003A4E99, 0x00000003, 0x003A1A99, 0x003A4E99, 0x003A9099, 0x00000002,
+	0x003A4099, 0x00391E99, 0x00000002, 0x003A409A, 0x00391E9A, 0x00000002,
+	0x003A4099, 0x00392099, 0x00000002, 0x003A409A, 0x0039209A, 0x00000002,
+	0x003A4099, 0x00392899, 0x00000002, 0x003A409A,
+	// Block 93, offset 0x1740
+	0x0039289A, 0x00000003, 0x003A4097, 0x00396497, 0x00396497, 0x00000003,
+	0x003A4099, 0x00396499, 0x00396499, 0x00000003, 0x003A4097, 0x00396497,
+	0x003A4E97, 0x00000003, 0x003A4099, 0x00396499, 0x003A4E99, 0x00000003,
+	0x003A4099, 0x00396499, 0x003A9099, 0x00000003, 0x003A4097, 0x00397297,
+	0x003A4E97, 0x00000003, 0x003A4099, 0x00397299, 0x003A4E99, 0x00000003,
+	0x003A4099, 0x00397299, 0x003A8E99, 0x00000003, 0x003A4099, 0x00397299,
+	0x003A9099, 0x00000003, 0x003A4097, 0x00397497, 0x003A4E97, 0x00000003,
+	0x003A4099, 0x00397499, 0x003A4E99, 0x00000003, 0x003A4097, 0x003A4E97,
+	0x00397297, 0x00000003, 0x003A4099, 0x003A4E99, 0x00397299, 0x00000003,
+	0x003A4099, 0x003A4E99, 0x003A9099, 0x00000002, 0x003A4E84, 0xA0013A04,
+	0x00000003, 0x003A4E97, 0x00396497, 0x00397297,
+	// Block 94, offset 0x1780
+	0x00000003, 0x003A4E97, 0x00396497, 0x00397497, 0x00000003, 0x003A4E97,
+	0x00396497, 0x003A4E97, 0x00000003, 0x003A4E99, 0x00396499, 0x003A9099,
+	0x00000003, 0x003A4E97, 0x00397297, 0x00396497, 0x00000003, 0x003A4E97,
+	0x00397297, 0x003A4E97, 0x00000004, 0x003A4E9A, 0x0039729A, 0x003A4E9A,
+	0x0039889A, 0x00000003, 0x003A4E99, 0x00397299, 0x003A9099, 0x00000003,
+	0x003A4E97, 0x00397497, 0x00396497, 0x00000003, 0x003A4E97, 0x00397497,
+	0x003A4E97, 0x00000003, 0x003A4E99, 0x00397499, 0x003A9099, 0x00000003,
+	0x003A4E99, 0x003A4E99, 0x003A9099, 0x00000003, 0x003A5697, 0x00396497,
+	0x00397297, 0x00000003, 0x003A5699, 0x00396499, 0x00397299, 0x00000003,
+	0x003A5697, 0x00396497, 0x003A4E97, 0x00000003, 0x003A5699, 0x00396499,
+	0x003A4E99, 0x00000003, 0x003A5699, 0x00396499,
+	// Block 95, offset 0x17c0
+	0x003A8E99, 0x00000003, 0x003A5699, 0x00396499, 0x003A9099, 0x00000003,
+	0x003A5697, 0x00397297, 0x003A4E97, 0x00000003, 0x003A5699, 0x00397299,
+	0x003A8E99, 0x00000003, 0x003A5699, 0x00397299, 0x003A9099, 0x00000003,
+	0x003A5699, 0x003A4E99, 0x003A8E99, 0x00000003, 0x003A5699, 0x003A4E99,
+	0x003A9099, 0x00000003, 0x003A6897, 0x003A4E97, 0x00396497, 0x00000003,
+	0x003A6897, 0x003A4E97, 0x003A4E97, 0x00000002, 0x403A6C20, 0xAE60BE02,
+	0x00000002, 0x403A7220, 0xAE60BE02, 0x00000004, 0x003A749A, 0x0039C69A,
+	0x003A409A, 0x003A4E9A, 0x00000003, 0x003A9099, 0x00396499, 0x003A9099,
+	0x00000003, 0x003A9099, 0x00397299, 0x003A9099, 0x00000003, 0x003A9097,
+	0x003A4E97, 0x003A4E97, 0x00000003, 0x003A9099, 0x003A4E99, 0x003A4E99,
+	0x00000003, 0x003A9099, 0x003A4E99, 0x003A9099,
+	// Block 96, offset 0x1800
+	0x00000002, 0x403AAA20, 0xAE60BE02, 0x00000002, 0x003AB284, 0xA0013C04,
+	0x00000002, 0x003AB484, 0xA0013A04, 0x00000002, 0x003AB484, 0xA0013C04,
+	0x00000002, 0x003AB884, 0xA0013C04, 0x00000002, 0x003AC484, 0xA0013A04,
+	0x00000002, 0x003AD884, 0xA0013A04, 0x00000002, 0x003B9484, 0xA0013904,
+	0x00000002, 0x003B9684, 0xA0013904, 0x00000002, 0x003B9A84, 0xA0013904,
+	0x00000002, 0x403FEC20, 0xA070F102, 0x00000002, 0x403FEE20, 0xA070F102,
+	0x00000002, 0x403FF020, 0xA070F102, 0x00000002, 0x403FFC20, 0xA070F102,
+	0x00000002, 0x40400A20, 0xA070F102, 0x00000002, 0x40400E20, 0xA070F102,
+	0x00000002, 0x40401A20, 0xA070F102, 0x00000002, 0x40401E20, 0xA070F102,
+	0x00000002, 0x40402820, 0xA070F102, 0x00000002, 0x40402C20, 0xA070F102,
+	0x00000002, 0x40403020, 0xA070F102, 0x00000002,
+	// Block 97, offset 0x1840
+	0x4040B020, 0xA070F102, 0x00000002, 0x4040B220, 0xA070F102, 0x00000002,
+	0x0040B684, 0x0040F884, 0x00000002, 0x4040CA20, 0xA070F102, 0x00000002,
+	0x40411620, 0xA070F102, 0x00000002, 0x40411E20, 0xA070F102, 0x00000002,
+	0x40412020, 0xA070F102, 0x00000002, 0x40412A20, 0xA070F102, 0x00000002,
+	0x40414620, 0xA070F102, 0x00000002, 0x40415420, 0xA070F102, 0x00000002,
+	0x40422A20, 0xA070F102, 0x00000002, 0x40422C20, 0xA070F102, 0x00000002,
+	0x00442284, 0x00449084, 0x00000002, 0x00443E84, 0x00449084, 0x00000002,
+	0x00444884, 0x00449084, 0x00000002, 0x00445884, 0x00449084, 0x00000002,
+	0x00445884, 0x00449084, 0x00000002, 0x00445A84, 0x00449084, 0x00000002,
+	0x00446684, 0x00449084, 0x00000002, 0x4046AA20, 0xA070F102, 0x00000002,
+	0x4046AC20, 0xA070F102, 0x00000002, 0x4046BE20,
+	// Block 98, offset 0x1880
+	0xA070F102, 0x00000002, 0x40491020, 0x40498420, 0x00000002, 0x40491020,
+	0x40498620, 0x00000002, 0x40491020, 0x40498820, 0x00000002, 0x40491020,
+	0x40498A20, 0x00000002, 0x40491020, 0x40498C20, 0x00000002, 0x40491220,
+	0x40498420, 0x00000002, 0x40491220, 0x40498620, 0x00000002, 0x40491220,
+	0x40498820, 0x00000002, 0x40491220, 0x40498A20, 0x00000002, 0x40491220,
+	0x40498C20, 0x00000002, 0x40491420, 0x40498420, 0x00000002, 0x40491420,
+	0x40498620, 0x00000002, 0x40491420, 0x40498820, 0x00000002, 0x40491420,
+	0x40498A20, 0x00000002, 0x40491420, 0x40498C20, 0x00000002, 0x40491620,
+	0x40498420, 0x00000002, 0x40491620, 0x40498620, 0x00000002, 0x40491620,
+	0x40498820, 0x00000002, 0x40491620, 0x40498A20, 0x00000002, 0x40491620,
+	0x40498C20, 0x00000002, 0x40491820, 0x40498420,
+	// Block 99, offset 0x18c0
+	0x00000002, 0x40491820, 0x40498620, 0x00000002, 0x40491820, 0x40498820,
+	0x00000002, 0x40491820, 0x40498A20, 0x00000002, 0x40491820, 0x40498C20,
+	0x00000002, 0x40491A20, 0x40498420, 0x00000002, 0x40491A20, 0x40498620,
+	0x00000002, 0x40491A20, 0x40498820, 0x00000002, 0x40491A20, 0x40498A20,
+	0x00000002, 0x40491A20, 0x40498C20, 0x00000002, 0x40491C20, 0x40498420,
+	0x00000002, 0x40491C20, 0x40498620, 0x00000002, 0x40491C20, 0x40498820,
+	0x00000002, 0x40491C20, 0x40498A20, 0x00000002, 0x40491C20, 0x40498C20,
+	0x00000002, 0x40491E20, 0x40498420, 0x00000002, 0x40491E20, 0x40498620,
+	0x00000002, 0x40491E20, 0x40498820, 0x00000002, 0x40491E20, 0x40498A20,
+	0x00000002, 0x40491E20, 0x40498C20, 0x00000002, 0x40492020, 0x40498420,
+	0x00000002, 0x40492020, 0x40498620, 0x00000002,
+	// Block 100, offset 0x1900
+	0x40492020, 0x40498820, 0x00000002, 0x40492020, 0x40498A20, 0x00000002,
+	0x40492020, 0x40498C20, 0x00000002, 0x40492220, 0x40498420, 0x00000002,
+	0x40492220, 0x40498620, 0x00000002, 0x40492220, 0x40498820, 0x00000002,
+	0x40492220, 0x40498A20, 0x00000002, 0x40492220, 0x40498C20, 0x00000002,
+	0x40492420, 0x40498420, 0x00000002, 0x40492420, 0x40498620, 0x00000002,
+	0x40492420, 0x40498820, 0x00000002, 0x40492420, 0x40498A20, 0x00000002,
+	0x40492420, 0x40498C20, 0x00000002, 0x40492620, 0x40498420, 0x00000002,
+	0x40492620, 0x40498620, 0x00000002, 0x40492620, 0x40498820, 0x00000002,
+	0x40492620, 0x40498A20, 0x00000002, 0x40492620, 0x40498C20, 0x00000002,
+	0x40492820, 0x40498420, 0x00000002, 0x40492820, 0x40498620, 0x00000002,
+	0x40492820, 0x40498820, 0x00000002, 0x40492820,
+	// Block 101, offset 0x1940
+	0x40498A20, 0x00000002, 0x40492820, 0x40498C20, 0x00000002, 0x40492A20,
+	0x40498420, 0x00000002, 0x40492A20, 0x40498620, 0x00000002, 0x40492A20,
+	0x40498820, 0x00000002, 0x40492A20, 0x40498A20, 0x00000002, 0x40492A20,
+	0x40498C20, 0x00000002, 0x40492C20, 0x40498420, 0x00000002, 0x40492C20,
+	0x40498620, 0x00000002, 0x40492C20, 0x40498820, 0x00000002, 0x40492C20,
+	0x40498A20, 0x00000002, 0x40492C20, 0x40498C20, 0x00000002, 0x40492E20,
+	0x40498420, 0x00000002, 0x40492E20, 0x40498620, 0x00000002, 0x40492E20,
+	0x40498820, 0x00000002, 0x40492E20, 0x40498A20, 0x00000002, 0x40492E20,
+	0x40498C20, 0x00000002, 0x40493020, 0x40498420, 0x00000002, 0x40493020,
+	0x40498620, 0x00000002, 0x40493020, 0x40498820, 0x00000002, 0x40493020,
+	0x40498A20, 0x00000002, 0x40493020, 0x40498C20,
+	// Block 102, offset 0x1980
+	0x00000002, 0x40493220, 0x40498420, 0x00000002, 0x40493220, 0x40498620,
+	0x00000002, 0x40493220, 0x40498820, 0x00000002, 0x40493220, 0x40498A20,
+	0x00000002, 0x40493220, 0x40498C20, 0x00000002, 0x40493420, 0x40498420,
+	0x00000002, 0x40493420, 0x40498620, 0x00000002, 0x40493420, 0x40498820,
+	0x00000002, 0x40493420, 0x40498A20, 0x00000002, 0x40493420, 0x40498C20,
+	0x00000002, 0x40493620, 0x40498420, 0x00000002, 0x40493620, 0x40498620,
+	0x00000002, 0x40493620, 0x40498820, 0x00000002, 0x40493620, 0x40498A20,
+	0x00000002, 0x40493620, 0x40498C20, 0x00000002, 0x40493820, 0x40498420,
+	0x00000002, 0x40493820, 0x40498620, 0x00000002, 0x40493820, 0x40498820,
+	0x00000002, 0x40493820, 0x40498A20, 0x00000002, 0x40493820, 0x40498C20,
+	0x00000002, 0x40493A20, 0x40498420, 0x00000002,
+	// Block 103, offset 0x19c0
+	0x40493A20, 0x40498620, 0x00000002, 0x40493A20, 0x40498820, 0x00000002,
+	0x40493A20, 0x40498A20, 0x00000002, 0x40493A20, 0x40498C20, 0x00000002,
+	0x40493C20, 0x40498420, 0x00000002, 0x40493C20, 0x40498620, 0x00000002,
+	0x40493C20, 0x40498820, 0x00000002, 0x40493C20, 0x40498A20, 0x00000002,
+	0x40493C20, 0x40498C20, 0x00000002, 0x40493E20, 0x40498420, 0x00000002,
+	0x40493E20, 0x40498620, 0x00000002, 0x40493E20, 0x40498820, 0x00000002,
+	0x40493E20, 0x40498A20, 0x00000002, 0x40493E20, 0x40498C20, 0x00000002,
+	0x40494020, 0x40498420, 0x00000002, 0x40494020, 0x40498620, 0x00000002,
+	0x40494020, 0x40498820, 0x00000002, 0x40494020, 0x40498A20, 0x00000002,
+	0x40494020, 0x40498C20, 0x00000002, 0x40494220, 0x40498420, 0x00000002,
+	0x40494220, 0x40498620, 0x00000002, 0x40494220,
+	// Block 104, offset 0x1a00
+	0x40498820, 0x00000002, 0x40494220, 0x40498A20, 0x00000002, 0x40494220,
+	0x40498C20, 0x00000002, 0x40494420, 0x40498420, 0x00000002, 0x40494420,
+	0x40498620, 0x00000002, 0x40494420, 0x40498820, 0x00000002, 0x40494420,
+	0x40498A20, 0x00000002, 0x40494420, 0x40498C20, 0x00000002, 0x40494620,
+	0x40498420, 0x00000002, 0x40494620, 0x40498620, 0x00000002, 0x40494620,
+	0x40498820, 0x00000002, 0x40494620, 0x40498A20, 0x00000002, 0x40494620,
+	0x40498C20, 0x00000002, 0x40494820, 0x40498420, 0x00000002, 0x40494820,
+	0x40498620, 0x00000002, 0x40494820, 0x40498820, 0x00000002, 0x40494820,
+	0x40498A20, 0x00000002, 0x40494820, 0x40498C20, 0x00000002, 0x40494A20,
+	0x40498420, 0x00000002, 0x40494A20, 0x40498620, 0x00000002, 0x40494A20,
+	0x40498820, 0x00000002, 0x40494A20, 0x40498A20,
+	// Block 105, offset 0x1a40
+	0x00000002, 0x40494A20, 0x40498C20, 0x00000002, 0x40494C20, 0x40498420,
+	0x00000002, 0x40494C20, 0x40498620, 0x00000002, 0x40494C20, 0x40498820,
+	0x00000002, 0x40494C20, 0x40498A20, 0x00000002, 0x40494C20, 0x40498C20,
+	0x00000002, 0x40494E20, 0x40498420, 0x00000002, 0x40494E20, 0x40498620,
+	0x00000002, 0x40494E20, 0x40498820, 0x00000002, 0x40494E20, 0x40498A20,
+	0x00000002, 0x40494E20, 0x40498C20, 0x00000002, 0x40495020, 0x40498420,
+	0x00000002, 0x40495020, 0x40498620, 0x00000002, 0x40495020, 0x40498820,
+	0x00000002, 0x40495020, 0x40498A20, 0x00000002, 0x40495020, 0x40498C20,
+	0x00000002, 0x40495220, 0x40498420, 0x00000002, 0x40495220, 0x40498620,
+	0x00000002, 0x40495220, 0x40498820, 0x00000002, 0x40495220, 0x40498A20,
+	0x00000002, 0x40495220, 0x40498C20, 0x00000002,
+	// Block 106, offset 0x1a80
+	0x40495420, 0x40498420, 0x00000002, 0x40495420, 0x40498620, 0x00000002,
+	0x40495420, 0x40498820, 0x00000002, 0x40495420, 0x40498A20, 0x00000002,
+	0x40495420, 0x40498C20, 0x00000002, 0x40495620, 0x40498420, 0x00000002,
+	0x40495620, 0x40498620, 0x00000002, 0x40495620, 0x40498820, 0x00000002,
+	0x40495620, 0x40498A20, 0x00000002, 0x40495620, 0x40498C20, 0x00000002,
+	0x40495820, 0x40498420, 0x00000002, 0x40495820, 0x40498620, 0x00000002,
+	0x40495820, 0x40498820, 0x00000002, 0x40495820, 0x40498A20, 0x00000002,
+	0x40495820, 0x40498C20, 0x00000002, 0x40495A20, 0x40498420, 0x00000002,
+	0x40495A20, 0x40498620, 0x00000002, 0x40495A20, 0x40498820, 0x00000002,
+	0x40495A20, 0x40498A20, 0x00000002, 0x40495A20, 0x40498C20, 0x00000002,
+	0x40495C20, 0x40498420, 0x00000002, 0x40495C20,
+	// Block 107, offset 0x1ac0
+	0x40498620, 0x00000002, 0x40495C20, 0x40498820, 0x00000002, 0x40495C20,
+	0x40498A20, 0x00000002, 0x40495C20, 0x40498C20, 0x00000002, 0x40495E20,
+	0x40498420, 0x00000002, 0x40495E20, 0x40498620, 0x00000002, 0x40495E20,
+	0x40498820, 0x00000002, 0x40495E20, 0x40498A20, 0x00000002, 0x40495E20,
+	0x40498C20, 0x00000002, 0x40496020, 0x40498420, 0x00000002, 0x40496020,
+	0x40498620, 0x00000002, 0x40496020, 0x40498820, 0x00000002, 0x40496020,
+	0x40498A20, 0x00000002, 0x40496020, 0x40498C20, 0x00000002, 0x40496220,
+	0x40498420, 0x00000002, 0x40496220, 0x40498620, 0x00000002, 0x40496220,
+	0x40498820, 0x00000002, 0x40496220, 0x40498A20, 0x00000002, 0x40496220,
+	0x40498C20, 0x00000002, 0x40496420, 0x40498420, 0x00000002, 0x40496420,
+	0x40498620, 0x00000002, 0x40496420, 0x40498820,
+	// Block 108, offset 0x1b00
+	0x00000002, 0x40496420, 0x40498A20, 0x00000002, 0x40496420, 0x40498C20,
+	0x00000002, 0x40496620, 0x40498420, 0x00000002, 0x40496620, 0x40498620,
+	0x00000002, 0x40496620, 0x40498820, 0x00000002, 0x40496620, 0x40498A20,
+	0x00000002, 0x40496620, 0x40498C20, 0x00000002, 0x40496820, 0x40498420,
+	0x00000002, 0x40496820, 0x40498620, 0x00000002, 0x40496820, 0x40498820,
+	0x00000002, 0x40496820, 0x40498A20, 0x00000002, 0x40496820, 0x40498C20,
+	0x00000002, 0x40496A20, 0x40498420, 0x00000002, 0x40496A20, 0x40498620,
+	0x00000002, 0x40496A20, 0x40498820, 0x00000002, 0x40496A20, 0x40498A20,
+	0x00000002, 0x40496A20, 0x40498C20, 0x00000002, 0x40499020, 0x4049E620,
+	0x00000002, 0x40499020, 0x4049E820, 0x00000002, 0x40499020, 0x4049EA20,
+	0x00000002, 0x40499020, 0x4049EC20, 0x00000002,
+	// Block 109, offset 0x1b40
+	0x40499020, 0x4049EE20, 0x00000002, 0x40499220, 0x4049E620, 0x00000002,
+	0x40499220, 0x4049E820, 0x00000002, 0x40499220, 0x4049EA20, 0x00000002,
+	0x40499220, 0x4049EC20, 0x00000002, 0x40499220, 0x4049EE20, 0x00000002,
+	0x40499420, 0x4049E620, 0x00000002, 0x40499420, 0x4049E820, 0x00000002,
+	0x40499420, 0x4049EA20, 0x00000002, 0x40499420, 0x4049EC20, 0x00000002,
+	0x40499420, 0x4049EE20, 0x00000002, 0x40499620, 0x4049E620, 0x00000002,
+	0x40499620, 0x4049E820, 0x00000002, 0x40499620, 0x4049EA20, 0x00000002,
+	0x40499620, 0x4049EC20, 0x00000002, 0x40499620, 0x4049EE20, 0x00000002,
+	0x40499820, 0x4049E620, 0x00000002, 0x40499820, 0x4049E820, 0x00000002,
+	0x40499820, 0x4049EA20, 0x00000002, 0x40499820, 0x4049EC20, 0x00000002,
+	0x40499820, 0x4049EE20, 0x00000002, 0x40499A20,
+	// Block 110, offset 0x1b80
+	0x4049E620, 0x00000002, 0x40499A20, 0x4049E820, 0x00000002, 0x40499A20,
+	0x4049EA20, 0x00000002, 0x40499A20, 0x4049EC20, 0x00000002, 0x40499A20,
+	0x4049EE20, 0x00000002, 0x40499C20, 0x4049E620, 0x00000002, 0x40499C20,
+	0x4049E820, 0x00000002, 0x40499C20, 0x4049EA20, 0x00000002, 0x40499C20,
+	0x4049EC20, 0x00000002, 0x40499C20, 0x4049EE20, 0x00000002, 0x40499E20,
+	0x4049E620, 0x00000002, 0x40499E20, 0x4049E820, 0x00000002, 0x40499E20,
+	0x4049EA20, 0x00000002, 0x40499E20, 0x4049EC20, 0x00000002, 0x40499E20,
+	0x4049EE20, 0x00000002, 0x4049A020, 0x4049E620, 0x00000002, 0x4049A020,
+	0x4049E820, 0x00000002, 0x4049A020, 0x4049EA20, 0x00000002, 0x4049A020,
+	0x4049EC20, 0x00000002, 0x4049A020, 0x4049EE20, 0x00000002, 0x4049A220,
+	0x4049E620, 0x00000002, 0x4049A220, 0x4049E820,
+	// Block 111, offset 0x1bc0
+	0x00000002, 0x4049A220, 0x4049EA20, 0x00000002, 0x4049A220, 0x4049EC20,
+	0x00000002, 0x4049A220, 0x4049EE20, 0x00000002, 0x4049A420, 0x4049E620,
+	0x00000002, 0x4049A420, 0x4049E820, 0x00000002, 0x4049A420, 0x4049EA20,
+	0x00000002, 0x4049A420, 0x4049EC20, 0x00000002, 0x4049A420, 0x4049EE20,
+	0x00000002, 0x4049A620, 0x4049E620, 0x00000002, 0x4049A620, 0x4049E820,
+	0x00000002, 0x4049A620, 0x4049EA20, 0x00000002, 0x4049A620, 0x4049EC20,
+	0x00000002, 0x4049A620, 0x4049EE20, 0x00000002, 0x4049A820, 0x4049E620,
+	0x00000002, 0x4049A820, 0x4049E820, 0x00000002, 0x4049A820, 0x4049EA20,
+	0x00000002, 0x4049A820, 0x4049EC20, 0x00000002, 0x4049A820, 0x4049EE20,
+	0x00000002, 0x4049AA20, 0x4049E620, 0x00000002, 0x4049AA20, 0x4049E820,
+	0x00000002, 0x4049AA20, 0x4049EA20, 0x00000002,
+	// Block 112, offset 0x1c00
+	0x4049AA20, 0x4049EC20, 0x00000002, 0x4049AA20, 0x4049EE20, 0x00000002,
+	0x4049AC20, 0x4049E620, 0x00000002, 0x4049AC20, 0x4049E820, 0x00000002,
+	0x4049AC20, 0x4049EA20, 0x00000002, 0x4049AC20, 0x4049EC20, 0x00000002,
+	0x4049AC20, 0x4049EE20, 0x00000002, 0x4049AE20, 0x4049E620, 0x00000002,
+	0x4049AE20, 0x4049E820, 0x00000002, 0x4049AE20, 0x4049EA20, 0x00000002,
+	0x4049AE20, 0x4049EC20, 0x00000002, 0x4049AE20, 0x4049EE20, 0x00000002,
+	0x4049B020, 0x4049E620, 0x00000002, 0x4049B020, 0x4049E820, 0x00000002,
+	0x4049B020, 0x4049EA20, 0x00000002, 0x4049B020, 0x4049EC20, 0x00000002,
+	0x4049B020, 0x4049EE20, 0x00000002, 0x4049B220, 0x4049E620, 0x00000002,
+	0x4049B220, 0x4049E820, 0x00000002, 0x4049B220, 0x4049EA20, 0x00000002,
+	0x4049B220, 0x4049EC20, 0x00000002, 0x4049B220,
+	// Block 113, offset 0x1c40
+	0x4049EE20, 0x00000002, 0x4049B420, 0x4049E620, 0x00000002, 0x4049B420,
+	0x4049E820, 0x00000002, 0x4049B420, 0x4049EA20, 0x00000002, 0x4049B420,
+	0x4049EC20, 0x00000002, 0x4049B420, 0x4049EE20, 0x00000002, 0x4049B620,
+	0x4049E620, 0x00000002, 0x4049B620, 0x4049E820, 0x00000002, 0x4049B620,
+	0x4049EA20, 0x00000002, 0x4049B620, 0x4049EC20, 0x00000002, 0x4049B620,
+	0x4049EE20, 0x00000002, 0x4049B820, 0x4049E620, 0x00000002, 0x4049B820,
+	0x4049E820, 0x00000002, 0x4049B820, 0x4049EA20, 0x00000002, 0x4049B820,
+	0x4049EC20, 0x00000002, 0x4049B820, 0x4049EE20, 0x00000002, 0x4049BA20,
+	0x4049E620, 0x00000002, 0x4049BA20, 0x4049E820, 0x00000002, 0x4049BA20,
+	0x4049EA20, 0x00000002, 0x4049BA20, 0x4049EC20, 0x00000002, 0x4049BA20,
+	0x4049EE20, 0x00000002, 0x4049BC20, 0x4049E620,
+	// Block 114, offset 0x1c80
+	0x00000002, 0x4049BC20, 0x4049E820, 0x00000002, 0x4049BC20, 0x4049EA20,
+	0x00000002, 0x4049BC20, 0x4049EC20, 0x00000002, 0x4049BC20, 0x4049EE20,
+	0x00000002, 0x4049BE20, 0x4049E620, 0x00000002, 0x4049BE20, 0x4049E820,
+	0x00000002, 0x4049BE20, 0x4049EA20, 0x00000002, 0x4049BE20, 0x4049EC20,
+	0x00000002, 0x4049BE20, 0x4049EE20, 0x00000002, 0x4049C020, 0x4049E620,
+	0x00000002, 0x4049C020, 0x4049E820, 0x00000002, 0x4049C020, 0x4049EA20,
+	0x00000002, 0x4049C020, 0x4049EC20, 0x00000002, 0x4049C020, 0x4049EE20,
+	0x00000002, 0x4049C220, 0x4049E620, 0x00000002, 0x4049C220, 0x4049E820,
+	0x00000002, 0x4049C220, 0x4049EA20, 0x00000002, 0x4049C220, 0x4049EC20,
+	0x00000002, 0x4049C220, 0x4049EE20, 0x00000003, 0x0049C484, 0x0049AC84,
+	0x4049E620, 0x00000003, 0x0049C484, 0x0049AC84,
+	// Block 115, offset 0x1cc0
+	0x4049E820, 0x00000003, 0x0049C484, 0x0049AC84, 0x4049EA20, 0x00000003,
+	0x0049C484, 0x0049AC84, 0x4049EC20, 0x00000003, 0x0049C484, 0x0049AC84,
+	0x4049EE20, 0x00000003, 0x0049C484, 0x0049BA84, 0x4049E620, 0x00000003,
+	0x0049C484, 0x0049BA84, 0x4049E820, 0x00000003, 0x0049C484, 0x0049BA84,
+	0x4049EA20, 0x00000003, 0x0049C484, 0x0049BA84, 0x4049EC20, 0x00000003,
+	0x0049C484, 0x0049BA84, 0x4049EE20, 0x00000002, 0x4049C420, 0x4049E620,
+	0x00000002, 0x4049C420, 0x4049E820, 0x00000002, 0x4049C420, 0x4049EA20,
+	0x00000002, 0x4049C420, 0x4049EC20, 0x00000002, 0x4049C420, 0x4049EE20,
+	0x00000002, 0x4049C620, 0x4049E620, 0x00000002, 0x4049C620, 0x4049E820,
+	0x00000002, 0x4049C620, 0x4049EA20, 0x00000002, 0x4049C620, 0x4049EC20,
+	0x00000002, 0x4049C620, 0x4049EE20, 0x00000002,
+	// Block 116, offset 0x1d00
+	0x4049C820, 0x4049E620, 0x00000002, 0x4049C820, 0x4049E820, 0x00000002,
+	0x4049C820, 0x4049EA20, 0x00000002, 0x4049C820, 0x4049EC20, 0x00000002,
+	0x4049C820, 0x4049EE20, 0x00000002, 0x4049F020, 0x404A5A20, 0x00000002,
+	0x4049F020, 0x404A5C20, 0x00000002, 0x4049F020, 0x404A6220, 0x00000002,
+	0x4049F020, 0x404A6620, 0x00000002, 0x4049F020, 0x404A6820, 0x00000002,
+	0x4049F220, 0x404A5A20, 0x00000002, 0x4049F220, 0x404A5C20, 0x00000002,
+	0x4049F220, 0x404A6220, 0x00000002, 0x4049F220, 0x404A6620, 0x00000002,
+	0x4049F220, 0x404A6820, 0x00000002, 0x4049F420, 0x404A5A20, 0x00000002,
+	0x4049F420, 0x404A5C20, 0x00000002, 0x4049F420, 0x404A6220, 0x00000002,
+	0x4049F420, 0x404A6620, 0x00000002, 0x4049F420, 0x404A6820, 0x00000002,
+	0x4049F620, 0x404A5A20, 0x00000002, 0x4049F620,
+	// Block 117, offset 0x1d40
+	0x404A5C20, 0x00000002, 0x4049F620, 0x404A6220, 0x00000002, 0x4049F620,
+	0x404A6620, 0x00000002, 0x4049F620, 0x404A6820, 0x00000002, 0x4049F820,
+	0x404A5A20, 0x00000002, 0x4049F820, 0x404A5C20, 0x00000002, 0x4049F820,
+	0x404A6220, 0x00000002, 0x4049F820, 0x404A6620, 0x00000002, 0x4049F820,
+	0x404A6820, 0x00000002, 0x4049FA20, 0x404A5A20, 0x00000002, 0x4049FA20,
+	0x404A5C20, 0x00000002, 0x4049FA20, 0x404A6220, 0x00000002, 0x4049FA20,
+	0x404A6620, 0x00000002, 0x4049FA20, 0x404A6820, 0x00000002, 0x4049FC20,
+	0x404A5A20, 0x00000002, 0x4049FC20, 0x404A5C20, 0x00000002, 0x4049FC20,
+	0x404A6220, 0x00000002, 0x4049FC20, 0x404A6620, 0x00000002, 0x4049FC20,
+	0x404A6820, 0x00000002, 0x4049FE20, 0x404A5A20, 0x00000002, 0x4049FE20,
+	0x404A5C20, 0x00000002, 0x4049FE20, 0x404A6220,
+	// Block 118, offset 0x1d80
+	0x00000002, 0x4049FE20, 0x404A6620, 0x00000002, 0x4049FE20, 0x404A6820,
+	0x00000002, 0x404A0020, 0x404A5A20, 0x00000002, 0x404A0020, 0x404A5C20,
+	0x00000002, 0x404A0020, 0x404A6220, 0x00000002, 0x404A0020, 0x404A6620,
+	0x00000002, 0x404A0020, 0x404A6820, 0x00000002, 0x404A0220, 0x404A5A20,
+	0x00000002, 0x404A0220, 0x404A5C20, 0x00000002, 0x404A0220, 0x404A6220,
+	0x00000002, 0x404A0220, 0x404A6620, 0x00000002, 0x404A0220, 0x404A6820,
+	0x00000002, 0x404A0420, 0x404A5A20, 0x00000002, 0x404A0420, 0x404A5C20,
+	0x00000002, 0x404A0420, 0x404A6220, 0x00000002, 0x404A0420, 0x404A6620,
+	0x00000002, 0x404A0420, 0x404A6820, 0x00000002, 0x404A0620, 0x404A5A20,
+	0x00000002, 0x404A0620, 0x404A5C20, 0x00000002, 0x404A0620, 0x404A6220,
+	0x00000002, 0x404A0620, 0x404A6620, 0x00000002,
+	// Block 119, offset 0x1dc0
+	0x404A0620, 0x404A6820, 0x00000002, 0x404A0820, 0x404A5A20, 0x00000002,
+	0x404A0820, 0x404A5C20, 0x00000002, 0x404A0820, 0x404A6220, 0x00000002,
+	0x404A0820, 0x404A6620, 0x00000002, 0x404A0820, 0x404A6820, 0x00000002,
+	0x404A0A20, 0x404A5A20, 0x00000002, 0x404A0A20, 0x404A5C20, 0x00000002,
+	0x404A0A20, 0x404A6220, 0x00000002, 0x404A0A20, 0x404A6620, 0x00000002,
+	0x404A0A20, 0x404A6820, 0x00000002, 0x404A0C20, 0x404A5A20, 0x00000002,
+	0x404A0C20, 0x404A5C20, 0x00000002, 0x404A0C20, 0x404A6220, 0x00000002,
+	0x404A0C20, 0x404A6620, 0x00000002, 0x404A0C20, 0x404A6820, 0x00000002,
+	0x404A0E20, 0x404A5A20, 0x00000002, 0x404A0E20, 0x404A5C20, 0x00000002,
+	0x404A0E20, 0x404A6220, 0x00000002, 0x404A0E20, 0x404A6620, 0x00000002,
+	0x404A0E20, 0x404A6820, 0x00000002, 0x404A1020,
+	// Block 120, offset 0x1e00
+	0x404A5A20, 0x00000002, 0x404A1020, 0x404A5C20, 0x00000002, 0x404A1020,
+	0x404A6220, 0x00000002, 0x404A1020, 0x404A6620, 0x00000002, 0x404A1020,
+	0x404A6820, 0x00000002, 0x404A1220, 0x404A5A20, 0x00000002, 0x404A1220,
+	0x404A5C20, 0x00000002, 0x404A1220, 0x404A6220, 0x00000002, 0x404A1220,
+	0x404A6620, 0x00000002, 0x404A1220, 0x404A6820, 0x00000002, 0x404A1420,
+	0x404A5A20, 0x00000002, 0x404A1420, 0x404A5C20, 0x00000002, 0x404A1420,
+	0x404A6220, 0x00000002, 0x404A1420, 0x404A6620, 0x00000002, 0x404A1420,
+	0x404A6820, 0x00000002, 0x404A1620, 0x404A5A20, 0x00000002, 0x404A1620,
+	0x404A5C20, 0x00000002, 0x404A1620, 0x404A6220, 0x00000002, 0x404A1620,
+	0x404A6620, 0x00000002, 0x404A1620, 0x404A6820, 0x00000002, 0x404A1820,
+	0x404A5A20, 0x00000002, 0x404A1820, 0x404A5C20,
+	// Block 121, offset 0x1e40
+	0x00000002, 0x404A1820, 0x404A6220, 0x00000002, 0x404A1820, 0x404A6620,
+	0x00000002, 0x404A1820, 0x404A6820, 0x00000002, 0x404A1A20, 0x404A5A20,
+	0x00000002, 0x404A1A20, 0x404A5C20, 0x00000002, 0x404A1A20, 0x404A6220,
+	0x00000002, 0x404A1A20, 0x404A6620, 0x00000002, 0x404A1A20, 0x404A6820,
+	0x00000002, 0x404A1C20, 0x404A5A20, 0x00000002, 0x404A1C20, 0x404A5C20,
+	0x00000002, 0x404A1C20, 0x404A6220, 0x00000002, 0x404A1C20, 0x404A6620,
+	0x00000002, 0x404A1C20, 0x404A6820, 0x00000002, 0x404A1E20, 0x404A5A20,
+	0x00000002, 0x404A1E20, 0x404A5C20, 0x00000002, 0x404A1E20, 0x404A6220,
+	0x00000002, 0x404A1E20, 0x404A6620, 0x00000002, 0x404A1E20, 0x404A6820,
+	0x00000002, 0x404A2020, 0x404A5A20, 0x00000002, 0x404A2020, 0x404A5C20,
+	0x00000002, 0x404A2020, 0x404A6220, 0x00000002,
+	// Block 122, offset 0x1e80
+	0x404A2020, 0x404A6620, 0x00000002, 0x404A2020, 0x404A6820, 0x00000002,
+	0x404A2220, 0x404A5A20, 0x00000002, 0x404A2220, 0x404A5C20, 0x00000002,
+	0x404A2220, 0x404A6220, 0x00000002, 0x404A2220, 0x404A6620, 0x00000002,
+	0x404A2220, 0x404A6820, 0x00000002, 0x404A2420, 0x404A5A20, 0x00000002,
+	0x404A2420, 0x404A5C20, 0x00000002, 0x404A2420, 0x404A6220, 0x00000002,
+	0x404A2420, 0x404A6620, 0x00000002, 0x404A2420, 0x404A6820, 0x00000002,
+	0x404A2620, 0x404A5A20, 0x00000002, 0x404A2620, 0x404A5C20, 0x00000002,
+	0x404A2620, 0x404A6220, 0x00000002, 0x404A2620, 0x404A6620, 0x00000002,
+	0x404A2620, 0x404A6820, 0x00000002, 0x404A2820, 0x404A5A20, 0x00000002,
+	0x404A2820, 0x404A5C20, 0x00000002, 0x404A2820, 0x404A6220, 0x00000002,
+	0x404A2820, 0x404A6620, 0x00000002, 0x404A2820,
+	// Block 123, offset 0x1ec0
+	0x404A6820, 0x00000002, 0x404A2A20, 0x404A5A20, 0x00000002, 0x404A2A20,
+	0x404A5C20, 0x00000002, 0x404A2A20, 0x404A6220, 0x00000002, 0x404A2A20,
+	0x404A6620, 0x00000002, 0x404A2A20, 0x404A6820, 0x00000002, 0x404A2C20,
+	0x404A5A20, 0x00000002, 0x404A2C20, 0x404A5C20, 0x00000002, 0x404A2C20,
+	0x404A6220, 0x00000002, 0x404A2C20, 0x404A6620, 0x00000002, 0x404A2C20,
+	0x404A6820, 0x00000002, 0x404A2E20, 0x404A5A20, 0x00000002, 0x404A2E20,
+	0x404A5C20, 0x00000002, 0x404A2E20, 0x404A6220, 0x00000002, 0x404A2E20,
+	0x404A6620, 0x00000002, 0x404A2E20, 0x404A6820, 0x00000002, 0x404A3020,
+	0x404A5A20, 0x00000002, 0x404A3020, 0x404A5C20, 0x00000002, 0x404A3020,
+	0x404A6220, 0x00000002, 0x404A3020, 0x404A6620, 0x00000002, 0x404A3020,
+	0x404A6820, 0x00000002, 0x404A3220, 0x404A5A20,
+	// Block 124, offset 0x1f00
+	0x00000002, 0x404A3220, 0x404A5C20, 0x00000002, 0x404A3220, 0x404A6220,
+	0x00000002, 0x404A3220, 0x404A6620, 0x00000002, 0x404A3220, 0x404A6820,
+	0x00000002, 0x404A3420, 0x404A5A20, 0x00000002, 0x404A3420, 0x404A5C20,
+	0x00000002, 0x404A3420, 0x404A6220, 0x00000002, 0x404A3420, 0x404A6620,
+	0x00000002, 0x404A3420, 0x404A6820, 0x00000002, 0x404A3620, 0x404A5A20,
+	0x00000002, 0x404A3620, 0x404A5C20, 0x00000002, 0x404A3620, 0x404A6220,
+	0x00000002, 0x404A3620, 0x404A6620, 0x00000002, 0x404A3620, 0x404A6820,
+	0x00000002, 0x404A3820, 0x404A5A20, 0x00000002, 0x404A3820, 0x404A5C20,
+	0x00000002, 0x404A3820, 0x404A6220, 0x00000002, 0x404A3820, 0x404A6620,
+	0x00000002, 0x404A3820, 0x404A6820, 0x00000002, 0x404A3A20, 0x404A5A20,
+	0x00000002, 0x404A3A20, 0x404A5C20, 0x00000002,
+	// Block 125, offset 0x1f40
+	0x404A3A20, 0x404A6220, 0x00000002, 0x404A3A20, 0x404A6620, 0x00000002,
+	0x404A3A20, 0x404A6820, 0x00000002, 0x404A3C20, 0x404A5A20, 0x00000002,
+	0x404A3C20, 0x404A5C20, 0x00000002, 0x404A3C20, 0x404A6220, 0x00000002,
+	0x404A3C20, 0x404A6620, 0x00000002, 0x404A3C20, 0x404A6820, 0x00000002,
+	0x404A3E20, 0x404A5A20, 0x00000002, 0x404A3E20, 0x404A5C20, 0x00000002,
+	0x404A3E20, 0x404A6220, 0x00000002, 0x404A3E20, 0x404A6620, 0x00000002,
+	0x404A3E20, 0x404A6820, 0x00000002, 0x404A4020, 0x404A5A20, 0x00000002,
+	0x404A4020, 0x404A5C20, 0x00000002, 0x404A4020, 0x404A6220, 0x00000002,
+	0x404A4020, 0x404A6620, 0x00000002, 0x404A4020, 0x404A6820, 0x00000002,
+	0x404A4220, 0x404A5A20, 0x00000002, 0x404A4220, 0x404A5C20, 0x00000002,
+	0x404A4220, 0x404A6220, 0x00000002, 0x404A4220,
+	// Block 126, offset 0x1f80
+	0x404A6620, 0x00000002, 0x404A4220, 0x404A6820, 0x00000002, 0x404A4420,
+	0x404A5A20, 0x00000002, 0x404A4420, 0x404A5C20, 0x00000002, 0x404A4420,
+	0x404A6220, 0x00000002, 0x404A4420, 0x404A6620, 0x00000002, 0x404A4420,
+	0x404A6820, 0x00000002, 0x404A4620, 0x404A5A20, 0x00000002, 0x404A4620,
+	0x404A5C20, 0x00000002, 0x404A4620, 0x404A6220, 0x00000002, 0x404A4620,
+	0x404A6620, 0x00000002, 0x404A4620, 0x404A6820, 0x00000002, 0x404A4820,
+	0x404A5A20, 0x00000002, 0x404A4820, 0x404A5C20, 0x00000002, 0x404A4820,
+	0x404A6220, 0x00000002, 0x404A4820, 0x404A6620, 0x00000002, 0x404A4820,
+	0x404A6820, 0x00000002, 0x404A4A20, 0x404A5A20, 0x00000002, 0x404A4A20,
+	0x404A5C20, 0x00000002, 0x404A4A20, 0x404A6220, 0x00000002, 0x404A4A20,
+	0x404A6620, 0x00000002, 0x404A4A20, 0x404A6820,
+	// Block 127, offset 0x1fc0
+	0x00000002, 0x404A4C20, 0x404A5A20, 0x00000002, 0x404A4C20, 0x404A5C20,
+	0x00000002, 0x404A4C20, 0x404A6220, 0x00000002, 0x404A4C20, 0x404A6620,
+	0x00000002, 0x404A4C20, 0x404A6820, 0x00000002, 0x404A4E20, 0x404A5A20,
+	0x00000002, 0x404A4E20, 0x404A5C20, 0x00000002, 0x404A4E20, 0x404A6220,
+	0x00000002, 0x404A4E20, 0x404A6620, 0x00000002, 0x404A4E20, 0x404A6820,
+	0x00000002, 0x404A7620, 0x404AF820, 0x00000002, 0x404A7820, 0x404AF820,
+	0x00000002, 0x404A8020, 0x404B0020, 0x00000002, 0x404A8220, 0x404B0020,
+	0x00000002, 0x404AA020, 0x404B0020, 0x00000002, 0x404AA220, 0x404B0020,
+	0x00000002, 0x404AB020, 0x404B0020, 0x00000002, 0x404AB220, 0x404B0020,
+	0x00000002, 0x404AC020, 0x404B0020, 0x00000002, 0x404AC220, 0x404B0020,
+	0x00000002, 0x404AD020, 0x404B0020, 0x00000002,
+	// Block 128, offset 0x2000
+	0x404AD220, 0x404B0020, 0x00000002, 0x004AD684, 0xA0013A04, 0x00000002,
+	0x004AE684, 0xA0013A04, 0x00000002, 0x004AE884, 0xA0013A04, 0x00000002,
+	0x004AEA84, 0xA0013A04, 0x00000002, 0x404AEA20, 0x8281258D, 0x00000002,
+	0x404AEA20, 0x82812591, 0x00000002, 0x404AF020, 0x8281258D, 0x00000002,
+	0x404AF020, 0x82812591, 0x00000003, 0x004B0284, 0x004B3084, 0xA000F304,
+	0x00000003, 0x004EA684, 0x004F1484, 0x004EA684, 0x00000002, 0x0050AE84,
+	0x0050DA84, 0x00000003, 0x0050AE84, 0x0050DA84, 0x0050F084, 0x00000003,
+	0x00514E84, 0x00519A84, 0x00514E84, 0x00000002, 0x005ADA84, 0xA0013904,
+	0x00000002, 0x005ADC84, 0xA0013904, 0x00000002, 0x005ADC84, 0xA0013A04,
+	0x00000002, 0x005ADE84, 0xA0013904, 0x00000002, 0x005ADE84, 0x005ADE84,
+	0x00000002, 0x005AE084, 0xA0013904, 0x00000002,
+	// Block 129, offset 0x2040
+	0x005AE084, 0xA0013A04, 0x00000002, 0x005AE084, 0xA0013C04, 0x00000002,
+	0x005AE084, 0xA0013D04, 0x00000002, 0x005AE884, 0xA0013904, 0x00000002,
+	0x005AE884, 0xA0013A04, 0x00000002, 0x005AE884, 0xA0013C04, 0x00000002,
+	0x005AE884, 0xA0013D04, 0x00000002, 0x005AEC84, 0xA0013904, 0x00000002,
+	0x005AEE84, 0xA0013904, 0x00000002, 0x005AEE84, 0xA0013A04, 0x00000002,
+	0x005AEE84, 0xA0013C04, 0x00000002, 0x005AF084, 0xA0013904, 0x00000002,
+	0x005AF084, 0xA0013A04, 0x00000002, 0x005AF284, 0xA0013904, 0x00000002,
+	0x005AF484, 0xA0013904, 0x00000002, 0x005AF684, 0xA0013904, 0x00000002,
+	0x005AF684, 0x005B0884, 0x00000002, 0x005AFA84, 0xA0013904, 0x00000002,
+	0x005AFE84, 0xA0013904, 0x00000002, 0x005AFE84, 0xA0013A04, 0x00000002,
+	0x005AFE84, 0xA0013C04, 0x00000002, 0x005AFE84,
+	// Block 130, offset 0x2080
+	0xA0013D04, 0x00000002, 0x005AFE84, 0xA0013E04, 0x00000002, 0x005B0084,
+	0xA0013904, 0x00000002, 0x005B0084, 0xA0013A04, 0x00000002, 0x005B0284,
+	0xA0013904, 0x00000002, 0x005B0284, 0xA0013A04, 0x00000002, 0x005B0684,
+	0xA0013904, 0x00000002, 0x005B0684, 0xA0013A04, 0x00000004, 0x005B0684,
+	0xA0013904, 0x005B0684, 0xA0013904, 0x00000002, 0x005B0884, 0xA0013904,
+	0x00000002, 0x005B0A84, 0xA0013904, 0x00000002, 0x005B2484, 0xA0013904,
+	0x00000002, 0x005B2484, 0xA0013A04, 0x00000002, 0x005B2684, 0xA0013904,
+	0x00000002, 0x005B2A84, 0xA0013904, 0x00000002, 0x005B3084, 0xA0013904,
+	0x00000002, 0x005B3284, 0xA0013904, 0x00000002, 0x005B3484, 0xA0013904,
+	0x00000002, 0x005B3684, 0xA0013904, 0x00000002, 0x005B3884, 0xA0013904,
+	0x00000002, 0x005B3A84, 0xA0013904, 0x00000002,
+	// Block 131, offset 0x20c0
+	0x005B3E84, 0xA0013904, 0x00000002, 0x005B4084, 0xA0013904, 0x00000002,
+	0x005B4284, 0xA0013904, 0x00000002, 0x005B4484, 0xA0013904, 0x00000002,
+	0x005B4684, 0xA0013904, 0x00000002, 0x005B4884, 0xA0013904, 0x00000002,
+	0x005B5284, 0xA0013904, 0x00000002, 0x005B5484, 0xA0013904, 0x00000002,
+	0x005B5684, 0xA0013904, 0x00000002, 0x005B5884, 0xA0013904, 0x00000002,
+	0x005B5C84, 0xA0013904, 0x00000002, 0x005B6484, 0xA0013904, 0x00000002,
+	0x005B6684, 0xA0013904, 0x00000002, 0x005B6884, 0xA0013904, 0x00000002,
+	0x005B6A84, 0xA0013904, 0x00000002, 0x005B6C84, 0xA0013904, 0x00000002,
+	0x005B7484, 0xA0013904, 0x00000002, 0x005B7684, 0xA0013904, 0x00000002,
+	0x005B7884, 0xA0013904, 0x00000002, 0x005B7A84, 0xA0013904, 0x00000002,
+	0x005B9884, 0x005D9684, 0x00000002, 0x005BBC84,
+	// Block 132, offset 0x2100
+	0x005D9684, 0x00000002, 0x005BE684, 0x005D9684, 0x00000002, 0x005C0E84,
+	0x005D9884, 0x00000002, 0x005C2484, 0x005D9684, 0x00000002, 0x005C3084,
+	0x005D9884, 0x00000002, 0x005C3484, 0x005D9884, 0x00000002, 0x005C4084,
+	0x005D9684, 0x00000002, 0x005C8A84, 0x005D9684, 0x00000002, 0x005CE884,
+	0x005D9684, 0x00000002, 0x005D1684, 0x005D9684, 0x00000002, 0x005D2284,
+	0x005D9884, 0x00000002, 0x005D3084, 0x005D9684, 0x00000004, 0x0062C486,
+	0x0063C286, 0x0062C286, 0x0063CE86, 0x00000005, 0x0062C886, 0x0063A886,
+	0x00648286, 0x0062AC86, 0x0063B886, 0x00000003, 0x0065769C, 0x0027D69C,
+	0x0065CA9C, 0x00000005, 0x0065769C, 0x0065AA9C, 0xA001291C, 0x0027D69C,
+	0x00659E9C, 0x00000004, 0x0065769C, 0x0065CA9C, 0x0065AE9C, 0x0065769C,
+	0x00000005, 0x0065769C, 0x0065D89C, 0x0065B09C,
+	// Block 133, offset 0x2140
+	0xA001291C, 0x0065769C, 0x00000005, 0x0065789C, 0x0065A29C, 0x0065D89C,
+	0x0065869C, 0xA001281C, 0x00000003, 0x0065789C, 0x0065D89C, 0x0065989C,
+	0x00000002, 0x00657A8E, 0xA0812802, 0x00000002, 0x00657A91, 0xA0812802,
+	0x00000003, 0x00657A9C, 0x0065809C, 0x0065D89C, 0x00000004, 0x00657E9C,
+	0x0027D69C, 0x0065829C, 0x0027D69C, 0x00000006, 0x00657E9C, 0x0065909C,
+	0x0065869C, 0x0027D69C, 0x00659E9C, 0xA001281C, 0x00000003, 0x0065809C,
+	0x0027D69C, 0x0065B89C, 0x00000003, 0x0065809C, 0x0065D89C, 0x0065909C,
+	0x00000002, 0x0065828E, 0xA0812802, 0x00000002, 0x00658291, 0xA0812802,
+	0x00000003, 0x0065829C, 0x0065789C, 0x0065C89C, 0x00000004, 0x0065829C,
+	0x0065C69C, 0x00659A9C, 0x00659E9C, 0x00000004, 0x0065829C, 0x0065CE9C,
+	0x0065C89C, 0x0027D69C, 0x00000004, 0x0065829C,
+	// Block 134, offset 0x2180
+	0xA001281C, 0x0065CE9C, 0x0065D89C, 0x00000004, 0x0065829C, 0xA001281C,
+	0x0065D89C, 0x0065B49C, 0x00000002, 0x0065848E, 0xA0812802, 0x00000002,
+	0x00658491, 0xA0812802, 0x00000004, 0x0065849C, 0xA001281C, 0x0065829C,
+	0xA001281C, 0x00000004, 0x0065849C, 0xA001281C, 0x0065A29C, 0x0027D69C,
+	0x00000004, 0x0065849C, 0x0065C09C, 0x0065C89C, 0x0027D69C, 0x00000006,
+	0x0065849C, 0xA001281C, 0x0065CA9C, 0x0065969C, 0xA001281C, 0x0027D69C,
+	0x00000006, 0x0065849C, 0x0065CE9C, 0x0065869C, 0xA001281C, 0x0065C69C,
+	0x0065B89C, 0x00000006, 0x0065849C, 0x0065CE9C, 0x0065BA9C, 0x0027D69C,
+	0x00659E9C, 0x0065CA9C, 0x00000005, 0x0065849C, 0x0065CE9C, 0x0065D09C,
+	0x00659A9C, 0x00659E9C, 0x00000002, 0x0065868E, 0xA0812802, 0x00000002,
+	0x00658691, 0xA0812802, 0x00000004, 0x0065869C,
+	// Block 135, offset 0x21c0
+	0xA001281C, 0x0065C69C, 0x0065B89C, 0x00000006, 0x0065869C, 0xA001281C,
+	0x0065C69C, 0x0065B89C, 0x00659E9C, 0x0065D89C, 0x00000006, 0x0065869C,
+	0x0065CA9C, 0x0065929C, 0xA001281C, 0x0065789C, 0x0065CE9C, 0x00000004,
+	0x0065869C, 0x0065CE9C, 0x0027D69C, 0x0065A69C, 0x00000002, 0x0065888E,
+	0xA0812802, 0x00000002, 0x00658891, 0xA0812802, 0x00000003, 0x0065889C,
+	0x0027D69C, 0x0065909C, 0x00000002, 0x00658A8E, 0xA0812802, 0x00000002,
+	0x00658A91, 0xA0812802, 0x00000004, 0x00658A9C, 0x0027D69C, 0x0065B29C,
+	0xA001291C, 0x00000003, 0x00658A9C, 0x0065CA9C, 0x0065A09C, 0x00000002,
+	0x00658C8E, 0xA0812802, 0x00000002, 0x00658C91, 0xA0812802, 0x00000004,
+	0x00658C9C, 0x0065789C, 0x0065869C, 0x0065CA9C, 0x00000005, 0x00658C9C,
+	0x0065D89C, 0x0065989C, 0x0027D69C, 0x0065B89C,
+	// Block 136, offset 0x2200
+	0x00000002, 0x00658E8E, 0xA0812802, 0x00000002, 0x00658E91, 0xA0812802,
+	0x00000002, 0x00658E84, 0x0065BA84, 0x00000005, 0x00658E9C, 0x0065C89C,
+	0x0065D89C, 0x0065869C, 0xA001281C, 0x00000002, 0x0065908E, 0xA0812802,
+	0x00000002, 0x00659091, 0xA0812802, 0x00000002, 0x0065928E, 0xA0812802,
+	0x00000002, 0x00659291, 0xA0812802, 0x00000003, 0x0065929C, 0x0065D89C,
+	0x0065989C, 0x00000003, 0x0065929C, 0x0065D89C, 0x00659E9C, 0x00000002,
+	0x0065948E, 0xA0812802, 0x00000002, 0x00659491, 0xA0812802, 0x00000002,
+	0x0065968E, 0xA0812802, 0x00000002, 0x00659691, 0xA0812802, 0x00000004,
+	0x0065969C, 0xA001281C, 0x0027D69C, 0x0065909C, 0x00000002, 0x0065988E,
+	0xA0812802, 0x00000002, 0x00659891, 0xA0812802, 0x00000002, 0x00659A8E,
+	0xA0812802, 0x00000002, 0x00659A91, 0xA0812802,
+	// Block 137, offset 0x2240
+	0x00000002, 0x00659C8E, 0xA0812802, 0x00000002, 0x00659C91, 0xA0812802,
+	0x00000003, 0x00659C9C, 0xA001281C, 0x00658E9C, 0x00000002, 0x00659E8E,
+	0xA0812802, 0x00000002, 0x00659E91, 0xA0812802, 0x00000003, 0x00659E9C,
+	0xA001281C, 0x0065CA9C, 0x00000003, 0x0065A89C, 0x00659A9C, 0x00659E9C,
+	0x00000002, 0x0065AA8E, 0xA0812802, 0x00000002, 0x0065AA91, 0xA0812802,
+	0x00000002, 0x0065AA8E, 0xA0812902, 0x00000002, 0x0065AA91, 0xA0812902,
+	0x00000006, 0x0065AA9C, 0xA001291C, 0x0027D69C, 0x0065929C, 0x0065D89C,
+	0x00659E9C, 0x00000004, 0x0065AA9C, 0xA001291C, 0x0027D69C, 0x00659A9C,
+	0x00000005, 0x0065AA9C, 0xA001281C, 0x0027D69C, 0x0065CC9C, 0x0065CA9C,
+	0x00000003, 0x0065AA9C, 0x0065789C, 0x00659A9C, 0x00000002, 0x0065AC8E,
+	0xA0812802, 0x00000002, 0x0065AC91, 0xA0812802,
+	// Block 138, offset 0x2280
+	0x00000002, 0x0065AC8E, 0xA0812902, 0x00000002, 0x0065AC91, 0xA0812902,
+	0x00000006, 0x0065AC9C, 0xA001291C, 0x0065769C, 0x0065909C, 0x00659E9C,
+	0x0065CA9C, 0x00000004, 0x0065AC9C, 0xA001291C, 0x0065869C, 0x0065CA9C,
+	0x00000003, 0x0065AC9C, 0xA001291C, 0x00658A9C, 0x00000003, 0x0065AC9C,
+	0xA001281C, 0x0065CA9C, 0x00000002, 0x0065AE8E, 0xA0812802, 0x00000002,
+	0x0065AE91, 0xA0812802, 0x00000002, 0x0065AE8E, 0xA0812902, 0x00000002,
+	0x0065AE91, 0xA0812902, 0x00000006, 0x0065AE9C, 0x0065769C, 0x0065C69C,
+	0x00659A9C, 0x00659E9C, 0xA001281C, 0x00000004, 0x0065AE9C, 0x0065789C,
+	0x0027D69C, 0x00659E9C, 0x00000006, 0x0065AE9C, 0xA001281C, 0x00659A9C,
+	0x00658E9C, 0x00657E9C, 0x0065CA9C, 0x00000003, 0x0065AE9C, 0x0065C69C,
+	0x0065D89C, 0x00000002, 0x0065B08E, 0xA0812802,
+	// Block 139, offset 0x22c0
+	0x00000002, 0x0065B091, 0xA0812802, 0x00000002, 0x0065B08E, 0xA0812902,
+	0x00000002, 0x0065B091, 0xA0812902, 0x00000005, 0x0065B09C, 0xA001291C,
+	0x0027D69C, 0x00658E9C, 0xA001281C, 0x00000004, 0x0065B09C, 0xA001281C,
+	0x0027D69C, 0x0065969C, 0x00000005, 0x0065B09C, 0x0065869C, 0x0065969C,
+	0x0027D69C, 0x0065CA9C, 0x00000003, 0x0065B09C, 0xA001291C, 0x0065949C,
+	0x00000004, 0x0065B09C, 0xA001291C, 0x0065A29C, 0x0065AC9C, 0x00000003,
+	0x0065B09C, 0x0065CA9C, 0x00659A9C, 0x00000004, 0x0065B09C, 0xA001291C,
+	0x0065D89C, 0x0065909C, 0x00000002, 0x0065B28E, 0xA0812802, 0x00000002,
+	0x0065B291, 0xA0812802, 0x00000002, 0x0065B28E, 0xA0812902, 0x00000002,
+	0x0065B291, 0xA0812902, 0x00000003, 0x0065B29C, 0x0027D69C, 0x0065CA9C,
+	0x00000003, 0x0065B29C, 0x0027D69C, 0x0065D89C,
+	// Block 140, offset 0x2300
+	0x00000005, 0x0065B29C, 0xA001291C, 0x0065789C, 0x0065D89C, 0x00659E9C,
+	0x00000004, 0x0065B29C, 0xA001281C, 0x0065CA9C, 0x00659E9C, 0x00000005,
+	0x0065B29C, 0xA001291C, 0x0065D89C, 0x00659E9C, 0xA001281C, 0x00000004,
+	0x0065B49C, 0x0065789C, 0x0065869C, 0x0065CE9C, 0x00000003, 0x0065B49C,
+	0x0065789C, 0x0065CA9C, 0x00000002, 0x0065B484, 0x00659084, 0x00000003,
+	0x0065B49C, 0x00659A9C, 0x0065AA9C, 0x00000003, 0x0065B49C, 0x0065CA9C,
+	0x0065869C, 0x00000005, 0x0065B49C, 0x0065D89C, 0x00658E9C, 0x0065C49C,
+	0x0065D89C, 0x00000004, 0x0065B69C, 0x0065869C, 0x0065CE9C, 0x0065D89C,
+	0x00000006, 0x0065B69C, 0x0065C89C, 0x0065AA9C, 0xA001281C, 0x0027D69C,
+	0x0065CA9C, 0x00000004, 0x0065BA9C, 0x0027D69C, 0x00659E9C, 0x0065CA9C,
+	0x00000003, 0x0065BA9C, 0x0065829C, 0xA001281C,
+	// Block 141, offset 0x2340
+	0x00000005, 0x0065BA9C, 0x0065829C, 0xA001281C, 0x00659E9C, 0x0065D89C,
+	0x00000004, 0x0065BE9C, 0x0027D69C, 0x00659E9C, 0xA001281C, 0x00000003,
+	0x0065BE9C, 0x0027D69C, 0x0065CA9C, 0x00000003, 0x0065C09C, 0x0065769C,
+	0x0065D89C, 0x00000004, 0x0065C89C, 0x00659A9C, 0x00659E9C, 0x0065CA9C,
+	0x00000005, 0x0065CA9C, 0x0027D69C, 0x0065AE9C, 0xA001281C, 0x0065CA9C,
+	0x00000004, 0x0065CA9C, 0x0065AC9C, 0xA001291C, 0x0027D69C, 0x00000006,
+	0x0065CC9C, 0x0065D89C, 0x00659E9C, 0x0065889C, 0xA001281C, 0x0065D89C,
+	0x00000002, 0x0065D091, 0xA0812802, 0x00000003, 0x0065D09C, 0x00659A9C,
+	0x00659E9C, 0x00000002, 0x0065D291, 0xA0812802, 0x00000002, 0x0065D491,
+	0xA0812802, 0x00000002, 0x0065D691, 0xA0812802, 0x00000002, 0x0065DA84,
+	0xA0013A04, 0x00000002, 0x0065EC84, 0xA0013A04,
+	// Block 142, offset 0x2380
+	0x00000002, 0x0065F684, 0xA0013A04, 0x00000002, 0x00660684, 0xA0013A04,
+	0x00000002, 0x00661284, 0xA0013A04, 0x00000002, 0x00661484, 0xA0013A04,
+	0x00000002, 0x00661C84, 0xA0013A04, 0x00000002, 0x00661E84, 0xA0013A04,
+	0x00000002, 0x00662284, 0xA0013A04, 0x00000002, 0x00663884, 0xA0013A04,
+	0x00000002, 0x00663896, 0xA0013A16, 0x00000002, 0x00663A84, 0xA0013A04,
+	0x00000002, 0x00663A84, 0xA0013C04, 0x00000002, 0x0075C284, 0xA0013904,
+	0x00000002, 0x00862084, 0xA0013904, 0x00000002, 0x00862284, 0xA0013904,
+	0x00000002, 0x00862484, 0xA0013904, 0x00000002, 0x00862684, 0xA0013904,
+	0x00000002, 0x00862884, 0xA0013904, 0x00000002, 0x00862A84, 0xA0013904,
+	0x00000002, 0x00862C84, 0xA0013904, 0x00000002, 0x00862C84, 0xA0013A04,
+	0x00000002, 0x00862E84, 0xA0013904, 0x00000002,
+	// Block 143, offset 0x23c0
+	0x00863084, 0xA0013904, 0x00000002, 0x00863284, 0xA0013904, 0x00000002,
+	0x00863284, 0xA0013A04, 0x00000002, 0x00863484, 0xA0013904, 0x00000002,
+	0x00863484, 0xA0013A04, 0x00000002, 0x00863684, 0xA0013904, 0x00000002,
+	0x00863684, 0xA0013A04, 0x00000002, 0x00863884, 0xA0013904, 0x00000002,
+	0x00863A84, 0xA0013904, 0x00000002, 0x00863C84, 0xA0013904, 0x00000002,
+	0x00863E84, 0xA0013904, 0x00000002, 0x00863E84, 0xA0013A04, 0x00000002,
+	0x00863E84, 0xA0013C04, 0x00000002, 0x00864084, 0xA0013904, 0x00000002,
+	0x00864284, 0xA0013904, 0x00000002, 0x00864484, 0xA0013904, 0x00000002,
+	0x00864684, 0xA0013904, 0x00000002, 0x00864684, 0xA0013A04, 0x00000002,
+	0x00864884, 0xA0013904, 0x00000002, 0x00864884, 0xA0013A04, 0x00000002,
+	0x00864A84, 0xA0013904, 0x00000002, 0x00864C84,
+	// Block 144, offset 0x2400
+	0xA0013904, 0x00000002, 0x029C6C84, 0xA0013904, 0x00000002, 0x029CB284,
+	0xA0013904, 0x00000002, 0x02A30484, 0xA0013904, 0x00000002, 0x02A3C084,
+	0xA0013904, 0x00000002, 0x02A40084, 0xA0013904, 0x00000002, 0x02A6B884,
+	0xA0013904, 0x00000002, 0x02A6D284, 0xA0013904, 0x00000002, 0x02A70484,
+	0xA0013904, 0x00000002, 0x02B81E84, 0xA0013904, 0x00000002, 0x02B81E84,
+	0xA0013A04, 0x00000002, 0x02B84484, 0xA0013904, 0x00000002, 0x02B84684,
+	0xA0013904, 0x00000002, 0x02BEA084, 0xA0013904, 0x00000002, 0x02BF8684,
+	0xA0013904, 0x00000002, 0x02CBCA84, 0xA0013904, 0x00000002, 0x02CE1084,
+	0xA0013904, 0x00000004, 0x02D0549C, 0x02BE1E9C, 0x029E349C, 0x02F27C9C,
+	0x00000002, 0x02D6F484, 0xA0013904, 0x00000002, 0x02E45684, 0xA0013904,
+	0x00000002, 0x02E4B684, 0xA0013904, 0x00000002,
+	// Block 145, offset 0x2440
+	0x02E71684, 0xA0013904, 0x00000002, 0x02EB1684, 0xA0013904, 0x00000002,
+	0x02EDDC84, 0xA0013904, 0x00000002, 0x02F27484, 0xA0013904, 0x00000002,
+	0x02F5F284, 0xA0013904, 0x00000002, 0x02FEA484, 0xA0013904, 0x00000002,
+	0x02FEA684, 0xA0013904, 0x00000002, 0x02FEA684, 0xA0013A04, 0x00000002,
+	0x02FF1484, 0xA0013904, 0x00000002, 0x02FF1484, 0xA0013A04, 0x00000002,
+	0x0300FE84, 0xA0013904, 0x00000002, 0x03011284, 0xA0013904, 0x00000002,
+	0x0303F884, 0xA0013904, 0x00000002, 0x0304F284, 0xA0013904, 0x00000002,
+	0x0304F284, 0xA0013A04, 0x00000002, 0x0313A484, 0xA0013904, 0x00000002,
+	0x031B6684, 0xA0013904, 0x00000002, 0x031F6C84, 0xA0013904, 0x00000002,
+	0x031F6C84, 0xA0013A04, 0x00000002, 0x03212284, 0xA0013904, 0x00000002,
+	0x032C3884, 0xA0013904, 0x00000002, 0x032DD084,
+	// Block 146, offset 0x2480
+	0xA0013904, 0x00000002, 0x0331C084, 0xA0013904, 0x00000002, 0x03332C84,
+	0xA0013904, 0x00000002, 0x03355084, 0xA0013904, 0x00000002, 0x03367884,
+	0xA0013904, 0x00000002, 0x033CEA84, 0xA0013904, 0x00000002, 0x033E9484,
+	0xA0013904, 0x00000002, 0x033EA484, 0xA0013904, 0x00000002, 0x033F1A84,
+	0xA0013904, 0x00000002, 0x033F3884, 0xA0013904, 0x00000002, 0x033F3884,
+	0xA0013A04, 0x00000002, 0xA000AD18, 0xA000BA18, 0x00000002, 0xA000B218,
+	0xA000BA18, 0x00000002, 0xA000B618, 0xA000BA18, 0x00000003, 0x0003F484,
+	0x002D9A8A, 0x0003F69F, 0x00000003, 0x0003F484, 0x002F5684, 0x0003F69F,
+	0x00000003, 0x0003F484, 0x002F568A, 0x0003F69F, 0x00000003, 0x0003F484,
+	0x0030F684, 0x0003F69F, 0x00000003, 0x0003F484, 0x0030F68A, 0x0003F69F,
+	0x00000002, 0x002C0A9D, 0x002F569C, 0x00000002,
+	// Block 147, offset 0x24c0
+	0x402C3C20, 0xAE603202, 0x00000002, 0x002C3C83, 0xAE603202, 0x00000002,
+	0x402D6A20, 0xAE604702, 0x00000002, 0x002D6A83, 0xAE604702, 0x00000002,
+	0x402D6A20, 0xAE605202, 0x00000002, 0x002D6A83, 0xAE605202, 0x00000002,
+	0x002D9883, 0xAE603202, 0x00000002, 0x002D9883, 0xAE603502, 0x00000002,
+	0x002D9883, 0xAE603702, 0x00000002, 0x002D9883, 0xAE603C02, 0x00000002,
+	0x002D9883, 0xAE604102, 0x00000002, 0x002D9883, 0xAE604702, 0x00000003,
+	0x002D9883, 0xAE604702, 0xAE603202, 0x00000002, 0x002D9883, 0xAE604E02,
+	0x00000002, 0x002D9883, 0xACA05902, 0x00000002, 0x002D9883, 0xAE605B02,
+	0x00000002, 0x002D9883, 0xAE606402, 0x00000002, 0x002D9883, 0xAE606502,
+	0x00000002, 0x002D9883, 0xAE606702, 0x00000002, 0x002D9883, 0xADC07002,
+	0x00000002, 0x002D9883, 0xADC07A02, 0x00000002,
+	// Block 148, offset 0x2500
+	0x002D9A8A, 0x002D9A9F, 0x00000003, 0x002D9A8A, 0x002D9A8A, 0x002D9A9F,
+	0x00000002, 0x002D9A8A, 0x002DCC8A, 0x00000002, 0x002D9A9D, 0x00306C9D,
+	0x00000002, 0x002D9A8A, 0x0030BE9F, 0x00000002, 0x002D9A84, 0x0030F69F,
+	0x00000002, 0x002D9A8A, 0x0030F69F, 0x00000002, 0x002E229C, 0x0030F69C,
+	0x00000002, 0x402EE420, 0xAE604E02, 0x00000002, 0x002EE483, 0xAE604E02,
+	0x00000002, 0x402EE420, 0xAE605B02, 0x00000002, 0x002EE483, 0xAE605B02,
+	0x00000002, 0x40306E20, 0xAE603202, 0x00000002, 0x00306E83, 0xAE603202,
+	0x00000002, 0x40306E20, 0xAE603502, 0x00000002, 0x00306E83, 0xAE603502,
+	0x00000002, 0x40306E20, 0xAE604102, 0x00000002, 0x00306E83, 0xAE604102,
+	0x00000002, 0x40306E20, 0xAE605B02, 0x00000002, 0x00306E83, 0xAE605B02,
+	0x00000002, 0x0030BE8A, 0x002D9A9F, 0x00000003,
+	// Block 149, offset 0x2540
+	0x0030BE8A, 0x002D9A8A, 0x002D9A9F, 0x00000002, 0x0030F684, 0x002D9A9F,
+	0x00000002, 0x0030F68A, 0x002D9A9F, 0x00000003, 0x0030F684, 0x002D9A84,
+	0x002D9A9F, 0x00000003, 0x0030F68A, 0x002D9A8A, 0x002D9A9F, 0x00000002,
+	0x00393C99, 0x003A8E99, 0x00000002, 0x00393C9A, 0x003A8E9A, 0x00000002,
+	0x00395699, 0x003A8E99, 0x00000002, 0x0039569A, 0x003A8E9A, 0x00000002,
+	0x00395899, 0x003A8E99, 0x00000002, 0x0039589A, 0x003A8E9A, 0x00000002,
+	0x00396499, 0x003A8E99, 0x00000002, 0x0039649A, 0x003A8E9A, 0x00000002,
+	0x00397299, 0x003A8E99, 0x00000002, 0x0039729A, 0x003A8E9A, 0x00000002,
+	0x00397499, 0x003A8E99, 0x00000002, 0x0039749A, 0x003A8E9A, 0x00000002,
+	0x0039C699, 0x003A8E99, 0x00000002, 0x0039C69A, 0x003A8E9A, 0x00000002,
+	0x0039C899, 0x003A8E99, 0x00000002, 0x0039C89A,
+	// Block 150, offset 0x2580
+	0x003A8E9A, 0x00000002, 0x0039DC99, 0x003A8E99, 0x00000002, 0x0039DC9A,
+	0x003A8E9A, 0x00000002, 0x0039DE99, 0x003A8E99, 0x00000002, 0x0039DE9A,
+	0x003A8E9A, 0x00000002, 0x0039E699, 0x003A8E99, 0x00000002, 0x0039E69A,
+	0x003A8E9A, 0x00000002, 0x0039EE99, 0x003A8E99, 0x00000002, 0x0039EE9A,
+	0x003A8E9A, 0x00000002, 0x0039F099, 0x003A8E99, 0x00000002, 0x0039F09A,
+	0x003A8E9A, 0x00000002, 0x0039FC99, 0x003A8E99, 0x00000002, 0x0039FC9A,
+	0x003A8E9A, 0x00000002, 0x003A1299, 0x003A8E99, 0x00000002, 0x003A129A,
+	0x003A8E9A, 0x00000002, 0x003A1A99, 0x003A8E99, 0x00000002, 0x003A1A9A,
+	0x003A8E9A, 0x00000002, 0x003A4099, 0x003A8E99, 0x00000002, 0x003A409A,
+	0x003A8E9A, 0x00000002, 0x003A4E9A, 0x003A8E9A, 0x00000002, 0x003A5699,
+	0x003A8E99, 0x00000002, 0x003A569A, 0x003A8E9A,
+	// Block 151, offset 0x25c0
+	0x00000002, 0x003A689A, 0x003A8E9A, 0x00000002, 0x003A8E99, 0xA000D119,
+	0x00000002, 0x003A8E9A, 0xA000D11A, 0x00000002, 0x003A9099, 0x003A8E99,
+	0x00000002, 0x003A909A, 0x003A8E9A, 0x00000002, 0x4062AC20, 0x4062AC20,
+	0x00000002, 0x4062AC20, 0x4062BE20, 0x00000002, 0x4062B020, 0x4062C420,
+	0x00000002, 0x4062B020, 0x4062D020, 0x00000002, 0x4062B220, 0x4062B220,
+	0x00000002, 0x4062B620, 0x4062AC20, 0x00000002, 0x4062B620, 0x4062B820,
+	0x00000002, 0x4062B620, 0x4062BA20, 0x00000002, 0x4062B620, 0x4062BE20,
+	0x00000002, 0x4062B620, 0x4062CC20, 0x00000002, 0x4062B620, 0x4062CE20,
+	0x00000002, 0x4062B620, 0x4062D020, 0x00000002, 0x4062BA20, 0x4062BA20,
+	0x00000002, 0x4062BA20, 0x4062BE20, 0x00000002, 0x4062BE20, 0x4062BE20,
+	0x00000002, 0x4062C420, 0x4062C420, 0x00000002,
+	// Block 152, offset 0x2600
+	0x4063A820, 0x4063D020, 0x00000002, 0x4063AC20, 0x4063D020, 0x00000002,
+	0x4063B020, 0x4063D020, 0x00000002, 0x4063B420, 0x4063D020, 0x00000002,
+	0x4063B820, 0x4063A820, 0x00000003, 0x4063B820, 0x4063A820, 0x4063D020,
+	0x00000002, 0x4063B820, 0x4063D020, 0x00000002, 0x4063C220, 0x4063CE20,
+	0x00000003, 0x4063C220, 0x4063CE20, 0x4063D020, 0x00000002, 0x4063C220,
+	0x4063D020, 0x00000002, 0x402BE020, 0xAE603702, 0x00000002, 0x002BE083,
+	0xAE603702, 0x00000002, 0x402BE020, 0xAE603C02, 0x00000002, 0x002BE083,
+	0xAE603C02, 0x00000002, 0x402BE020, 0xAE604302, 0x00000002, 0x002BE083,
+	0xAE604302, 0x00000002, 0x402C9A20, 0xAE603C02, 0x00000002, 0x002C9A83,
+	0xAE603C02, 0x00000002, 0x402C9A20, 0xAE605B02, 0x00000002, 0x002C9A83,
+	0xAE605B02, 0x00000002, 0x402D9C20, 0xAE604702,
+	// Block 153, offset 0x2640
+	0x00000002, 0x002D9C83, 0xAE604702, 0x00000002, 0x402EE420, 0xAE603C02,
+	0x00000002, 0x002EE483, 0xAE603C02, 0x00000002, 0x402EE420, 0xAD806802,
+	0x00000002, 0x002EE483, 0xAD806802, 0x00000002, 0x402FE820, 0xAE605202,
+	0x00000002, 0x002FE883, 0xAE605202, 0x00000002, 0x40306E20, 0xAE604702,
+	0x00000002, 0x00306E83, 0xAE604702, 0x00000002, 0x40306E20, 0xAE604E02,
+	0x00000002, 0x00306E83, 0xAE604E02, 0x00000002, 0x40306E20, 0xAD806802,
+	0x00000002, 0x00306E83, 0xAD806802, 0x00000002, 0x002C6294, 0xA0013914,
+	0x00000002, 0x00302C83, 0x402D6820, 0x00000002, 0x00302C89, 0x002D6888,
+	0x00000002, 0x40310021, 0xAE603202, 0x00000002, 0x003100A3, 0xAE603202,
+	0x00000002, 0x40310021, 0xAE603502, 0x00000002, 0x003100A3, 0xAE603502,
+	0x00000002, 0x40310021, 0xAE604102, 0x00000002,
+	// Block 154, offset 0x2680
+	0x003100A3, 0xAE604102, 0x00000002, 0x40310021, 0xAE605B02, 0x00000002,
+	0x003100A3, 0xAE605B02, 0x00000002, 0x40320C20, 0xAE603202, 0x00000002,
+	0x00320C83, 0xAE603202, 0x00000002, 0x40320C20, 0xAE605B02, 0x00000002,
+	0x00320C83, 0xAE605B02, 0x00000002, 0x40320C21, 0xAE605B02, 0x00000002,
+	0x00320CA3, 0xAE605B02, 0x00000002, 0x40320E20, 0xAE603202, 0x00000002,
+	0x00320E83, 0xAE603202, 0x00000002, 0x40320E21, 0xAE604E02, 0x00000002,
+	0x00320EA3, 0xAE604E02, 0x00000002, 0x40320E21, 0xAE605B02, 0x00000002,
+	0x00320EA3, 0xAE605B02, 0x00000002, 0x40321020, 0xAE603202, 0x00000002,
+	0x00321083, 0xAE603202, 0x00000002, 0x402BDE21, 0x002C9888, 0x00000002,
+	0x002BDEA3, 0x002C9888, 0x00000003, 0x402BDE21, 0x002C9888, 0xAE605B02,
+	0x00000003, 0x002BDEA3, 0x002C9888, 0xAE605B02,
+	// Block 155, offset 0x26c0
+	0x00000002, 0x402EE221, 0x002C9888, 0x00000002, 0x002EE2A3, 0x002C9888,
+	0x00000003, 0x402EE221, 0x002C9888, 0xAE604E02, 0x00000003, 0x002EE2A3,
+	0x002C9888, 0xAE604E02, 0x00000003, 0x402EE221, 0x002C9888, 0xAE605B02,
+	0x00000003, 0x002EE2A3, 0x002C9888, 0xAE605B02, 0x00000002, 0x40306C21,
+	0x002C9888, 0x00000002, 0x00306CA3, 0x002C9888, 0x00000003, 0x40306C21,
+	0x002C9888, 0xAE603202, 0x00000003, 0x00306CA3, 0x002C9888, 0xAE603202,
+	0x00000003, 0x40306C21, 0x002C9888, 0xAE603502, 0x00000003, 0x00306CA3,
+	0x002C9888, 0xAE603502, 0x00000003, 0x40306C21, 0x002C9888, 0xAE604102,
+	0x00000003, 0x00306CA3, 0x002C9888, 0xAE604102, 0x00000003, 0x40306C21,
+	0x002C9888, 0xAE605B02, 0x00000003, 0x00306CA3, 0x002C9888, 0xAE605B02,
+	0x00000003, 0x0003F484, 0x0030E284, 0x0003F69F,
+	// Block 156, offset 0x2700
+	0x00000003, 0x0003F484, 0x0030E28A, 0x0003F69F, 0x00000002, 0x002DFE9C,
+	0x0030E29D, 0x00000002, 0x002E829C, 0x0030E29D, 0x00000002, 0x002E829D,
+	0x0030E29D, 0x00000002, 0x002E9E9C, 0x0030E29D, 0x00000002, 0x002F2C9C,
+	0x0030E29D, 0x00000002, 0x40302C21, 0x402D6820, 0x00000002, 0x00302CA3,
+	0x402D6820, 0x00000002, 0x4030BE21, 0xAE603202, 0x00000002, 0x0030BEA3,
+	0xAE603202, 0x00000002, 0x4030BE21, 0xAE603502, 0x00000002, 0x0030BEA3,
+	0xAE603502, 0x00000002, 0x4030BE21, 0xAE603C02, 0x00000002, 0x0030BEA3,
+	0xAE603C02, 0x00000002, 0x4030BE21, 0xAE604302, 0x00000002, 0x4030BE21,
+	0xAE604702, 0x00000002, 0x0030BEA3, 0xAE604702, 0x00000002, 0x4030BE21,
+	0xAE605202, 0x00000002, 0x0030BEA3, 0xAE605202, 0x00000002, 0x4030BE21,
+	0xADC07002, 0x00000002, 0x0030BEA3, 0xADC07002,
+	// Block 157, offset 0x2740
+	0x00000002, 0x0030E29D, 0x002C0A9C, 0x00000002, 0x0030E29D, 0x002C3A9D,
+	0x00000002, 0x0030E28C, 0x00312A8C, 0x00000002, 0x40320E20, 0xAE605B02,
+	0x00000002, 0x00320E83, 0xAE605B02, 0x00000002, 0x40320E21, 0xAE603202,
+	0x00000002, 0x00320EA3, 0xAE603202, 0x00000002, 0x40321020, 0xAE605B02,
+	0x00000002, 0x00321083, 0xAE605B02, 0x00000002, 0x40321021, 0xAE603202,
+	0x00000002, 0x003210A3, 0xAE603202, 0x00000002, 0x40321023, 0xAE603202,
+	0x00000002, 0x003210E3, 0xAE603202, 0x00000002, 0x40321023, 0xAE603C02,
+	0x00000002, 0x003210E3, 0xAE603C02, 0x00000002, 0x40321023, 0xAE604702,
+	0x00000002, 0x003210E3, 0xAE604702, 0x00000002, 0x40321023, 0xAE605B02,
+	0x00000002, 0x003210E3, 0xAE605B02, 0x00000002, 0x40321023, 0xAD806802,
+	0x00000002, 0x003210E3, 0xAD806802, 0x00000002,
+	// Block 158, offset 0x2780
+	0x0032769C, 0x0030E29D, 0x00000002, 0x402C3E20, 0xACA05602, 0x00000002,
+	0x002C3E83, 0xACA05602, 0x00000002, 0x402C0820, 0xAE603702, 0x00000002,
+	0x002C0883, 0xAE603702, 0x00000002, 0x402C0820, 0xAE603C02, 0x00000002,
+	0x002C0883, 0xAE603C02, 0x00000002, 0x402D0620, 0xAE603C02, 0x00000002,
+	0x002D0683, 0xAE603C02, 0x00000002, 0x402D0620, 0xAE605B02, 0x00000002,
+	0x002D0683, 0xAE605B02, 0x00000002, 0x402DCA20, 0xAE604702, 0x00000002,
+	0x002DCA83, 0xAE604702, 0x00000002, 0x402F2A20, 0xAE603C02, 0x00000002,
+	0x002F2A83, 0xAE603C02, 0x00000002, 0x402F2A20, 0xAE604E02, 0x00000002,
+	0x002F2A83, 0xAE604E02, 0x00000002, 0x402F2A20, 0xAE605B02, 0x00000002,
+	0x002F2A83, 0xAE605B02, 0x00000002, 0x402F2A20, 0xAD806802, 0x00000002,
+	0x002F2A83, 0xAD806802, 0x00000002, 0x4030BC20,
+	// Block 159, offset 0x27c0
+	0xAE604702, 0x00000002, 0x0030BC83, 0xAE604702, 0x00000002, 0x4030BC20,
+	0xAE604E02, 0x00000002, 0x0030BC83, 0xAE604E02, 0x00000002, 0x4030BC20,
+	0xAD806802, 0x00000002, 0x0030BC83, 0xAD806802, 0x00000002, 0x40320E20,
+	0xAE604E02, 0x00000002, 0x00320E83, 0xAE604E02, 0x00000002, 0x4062AC20,
+	0x4062B020, 0x00000002, 0x4062AC20, 0x4062B220, 0x00000002, 0x4062AC20,
+	0x4062B620, 0x00000002, 0x4062AC20, 0x4062BA20, 0x00000003, 0x4062AC20,
+	0x4062BE20, 0x4062AC20, 0x00000002, 0x4062AC20, 0x4062C820, 0x00000002,
+	0x4062AC20, 0x4062CA20, 0x00000002, 0x4062AC20, 0x4062D020, 0x00000002,
+	0x4062B020, 0x4062AC20, 0x00000002, 0x4062B020, 0x4062B020, 0x00000002,
+	0x4062B020, 0x4062B220, 0x00000002, 0x4062B020, 0x4062BA20, 0x00000002,
+	0x4062B020, 0x4062BE20, 0x00000002, 0x4062B020,
+	// Block 160, offset 0x2800
+	0x4062CC20, 0x00000002, 0x4062B220, 0x4062AC20, 0x00000002, 0x4062B220,
+	0x4062B620, 0x00000003, 0x4062B620, 0x4062AC20, 0x4062BE20, 0x00000002,
+	0x4062B620, 0x4062B020, 0x00000002, 0x4062B620, 0x4062B220, 0x00000003,
+	0x4062B620, 0x4062B220, 0x4062D020, 0x00000002, 0x4062B620, 0x4062B620,
+	0x00000003, 0x4062B620, 0x4062B820, 0x4062AC20, 0x00000003, 0x4062B620,
+	0x4062B820, 0x4062BE20, 0x00000003, 0x4062B620, 0x4062BA20, 0x4062BE20,
+	0x00000003, 0x4062B620, 0x4062BA20, 0x4062C220, 0x00000003, 0x4062B620,
+	0x4062BA20, 0x4062D020, 0x00000003, 0x4062B620, 0x4062BE20, 0x4062BE20,
+	0x00000002, 0x4062B620, 0x4062C220, 0x00000002, 0x4062B620, 0x4062CA20,
+	0x00000002, 0x4062B820, 0x4062AC20, 0x00000002, 0x4062B820, 0x4062B620,
+	0x00000002, 0x4062B820, 0x4062BA20, 0x00000002,
+	// Block 161, offset 0x2840
+	0x4062B820, 0x4062BE20, 0x00000003, 0x4062B820, 0x4062BE20, 0x4062BE20,
+	0x00000002, 0x4062B820, 0x4062C220, 0x00000002, 0x4062B820, 0x4062C820,
+	0x00000002, 0x4062B820, 0x4062D020, 0x00000002, 0x4062BA20, 0x4062AC20,
+	0x00000002, 0x4062BA20, 0x4062B020, 0x00000002, 0x4062BA20, 0x4062B220,
+	0x00000002, 0x4062BA20, 0x4062B620, 0x00000003, 0x4062BA20, 0x4062BA20,
+	0x4062C220, 0x00000003, 0x4062BA20, 0x4062BE20, 0x4062AC20, 0x00000003,
+	0x4062BA20, 0x4062BE20, 0x4062B220, 0x00000003, 0x4062BA20, 0x4062BE20,
+	0x4062BA20, 0x00000003, 0x4062BA20, 0x4062BE20, 0x4062BE20, 0x00000003,
+	0x4062BA20, 0x4062BE20, 0x4062C420, 0x00000002, 0x4062BA20, 0x4062C220,
+	0x00000002, 0x4062BA20, 0x4062C420, 0x00000002, 0x4062BA20, 0x4062C820,
+	0x00000002, 0x4062BA20, 0x4062CC20, 0x00000002,
+	// Block 162, offset 0x2880
+	0x4062BA20, 0x4062CE20, 0x00000002, 0x4062BA20, 0x4062D020, 0x00000002,
+	0x4062BE20, 0x4062AC20, 0x00000002, 0x4062BE20, 0x4062B020, 0x00000002,
+	0x4062BE20, 0x4062B220, 0x00000002, 0x4062BE20, 0x4062B620, 0x00000002,
+	0x4062BE20, 0x4062B820, 0x00000002, 0x4062BE20, 0x4062BA20, 0x00000003,
+	0x4062BE20, 0x4062BA20, 0x4062AC20, 0x00000003, 0x4062BE20, 0x4062BE20,
+	0x4062BE20, 0x00000002, 0x4062BE20, 0x4062C220, 0x00000002, 0x4062BE20,
+	0x4062C420, 0x00000002, 0x4062BE20, 0x4062C820, 0x00000002, 0x4062BE20,
+	0x4062CA20, 0x00000002, 0x4062BE20, 0x4062CC20, 0x00000002, 0x4062BE20,
+	0x4062CE20, 0x00000002, 0x4062BE20, 0x4062D020, 0x00000002, 0x4062C220,
+	0x4062AC20, 0x00000003, 0x4062C220, 0x4062AC20, 0x4062AC20, 0x00000002,
+	0x4062C220, 0x4062B220, 0x00000002, 0x4062C220,
+	// Block 163, offset 0x28c0
+	0x4062B820, 0x00000002, 0x4062C220, 0x4062BA20, 0x00000002, 0x4062C220,
+	0x4062BE20, 0x00000002, 0x4062C220, 0x4062C220, 0x00000002, 0x4062C220,
+	0x4062C420, 0x00000002, 0x4062C220, 0x4062C820, 0x00000002, 0x4062C220,
+	0x4062CA20, 0x00000002, 0x4062C220, 0x4062CC20, 0x00000002, 0x4062C220,
+	0x4062CE20, 0x00000002, 0x4062C420, 0x4062C220, 0x00000002, 0x4062C820,
+	0x4062CA20, 0x00000002, 0x4062C820, 0x4062D020, 0x00000002, 0x4062CE20,
+	0x4062BA20, 0x00000002, 0x4062CE20, 0x4062C220, 0x00000002, 0x4062D020,
+	0x4062B020, 0x00000002, 0x4062D020, 0x4062B620, 0x00000002, 0x4062D020,
+	0x4062B820, 0x00000002, 0x4062D020, 0x4062BA20, 0x00000002, 0x4062D020,
+	0x4062D020, 0x00000002, 0x4063A820, 0x4063B820, 0x00000002, 0x4063A820,
+	0x4063C220, 0x00000002, 0x4063A820, 0x4063CC20,
+	// Block 164, offset 0x2900
+	0x00000002, 0x4063AC20, 0x4063B820, 0x00000002, 0x4063AC20, 0x4063C020,
+	0x00000002, 0x4063AC20, 0x4063C220, 0x00000002, 0x4063B020, 0x4063B820,
+	0x00000002, 0x4063B020, 0x4063C220, 0x00000002, 0x4063B020, 0x4063CC20,
+	0x00000002, 0x4063B420, 0x4063AC20, 0x00000002, 0x4063B420, 0x4063B820,
+	0x00000002, 0x4063B420, 0x4063C220, 0x00000002, 0x4063B820, 0x4063AC20,
+	0x00000003, 0x4063B820, 0x4063AC20, 0x4063D020, 0x00000002, 0x4063B820,
+	0x4063B020, 0x00000003, 0x4063B820, 0x4063B020, 0x4063D020, 0x00000003,
+	0x4063B820, 0x4063B420, 0x4063D020, 0x00000002, 0x4063B820, 0x4063B820,
+	0x00000002, 0x4063B820, 0x4063C220, 0x00000002, 0x4063C020, 0x4063AC20,
+	0x00000003, 0x4063C020, 0x4063AC20, 0x4063D020, 0x00000002, 0x4063C020,
+	0x4063B420, 0x00000002, 0x4063C020, 0x4063B820,
+	// Block 165, offset 0x2940
+	0x00000002, 0x4063C020, 0x4063D020, 0x00000002, 0x4063C220, 0x4063A820,
+	0x00000003, 0x4063C220, 0x4063A820, 0x4063D020, 0x00000003, 0x4063C220,
+	0x4063B020, 0x4063CC20, 0x00000003, 0x4063C220, 0x4063B420, 0x4063D020,
+	0x00000002, 0x4063C220, 0x4063C220, 0x00000002, 0x4063CA20, 0x4063A820,
+	0x00000002, 0x4063CA20, 0x4063B020, 0x00000003, 0x4063CA20, 0x4063B020,
+	0x4063D020, 0x00000002, 0x4063CA20, 0x4063B420, 0x00000003, 0x4063CA20,
+	0x4063B420, 0x4063D020, 0x00000002, 0x4063CA20, 0x4063C220, 0x00000002,
+	0x4063CA20, 0x4063D020, 0x00000002, 0x4063CC20, 0x4063C220, 0x00000002,
+	0x4063CC20, 0x4063CC20, 0x00000002, 0x4063CE20, 0x4063C220, 0x00000002,
+	0x4063D020, 0x4063A820, 0x00000002, 0x4063D020, 0x4063AC20, 0x00000002,
+	0x4063D020, 0x4063B820, 0x00000002, 0x4063D020,
+	// Block 166, offset 0x2980
+	0x4063C220, 0x00000002, 0x4063D020, 0x4063CC20, 0x00000002, 0x0062AC86,
+	0x0063A886, 0x00000002, 0x0062B086, 0x0063A886, 0x00000002, 0x0062B286,
+	0x0063A886, 0x00000002, 0x0062B686, 0x0063A886, 0x00000002, 0x0062B886,
+	0x0063A886, 0x00000002, 0x0062BA86, 0x0063A886, 0x00000002, 0x0062BE86,
+	0x0063A886, 0x00000002, 0x0062C286, 0x0063A886, 0x00000002, 0x0062C286,
+	0x0063C286, 0x00000002, 0x0062C486, 0x0063A886, 0x00000002, 0x0062C886,
+	0x0063A886, 0x00000002, 0x0062CA86, 0x0063A886, 0x00000002, 0x0062CC86,
+	0x0063A886, 0x00000002, 0x0062CE86, 0x0063A886, 0x00000002, 0x0062D086,
+	0x0063A886, 0x00000002, 0x40302A20, 0xAE605202, 0x00000002, 0x00302A83,
+	0xAE605202, 0x00000002, 0x40320820, 0xAE603202, 0x00000002, 0x00320883,
+	0xAE603202, 0x00000002, 0x40320A20, 0xAE603202,
+	// Block 167, offset 0x29c0
+	0x00000002, 0x00320A83, 0xAE603202, 0x00000002, 0x40320A20, 0xAE605B02,
+	0x00000002, 0x00320A83, 0xAE605B02, 0x00000002, 0x40320E21, 0xAE603702,
+	0x00000002, 0x00320EA3, 0xAE603702, 0x00000002, 0x40320E21, 0xAE603C02,
+	0x00000002, 0x00320EA3, 0xAE603C02, 0x00000002, 0x40321022, 0xAE603202,
+	0x00000002, 0x003210C3, 0xAE603202, 0x00000002, 0x40321022, 0xAE604702,
+	0x00000002, 0x003210C3, 0xAE604702, 0x00000002, 0x40321022, 0xAE605B02,
+	0x00000002, 0x003210C3, 0xAE605B02, 0x00000002, 0x40321022, 0xAD806802,
+	0x00000002, 0x003210C3, 0xAD806802, 0x00000002, 0x40321023, 0xAE603502,
+	0x00000002, 0x003210E3, 0xAE603502, 0x00000002, 0x40321023, 0xAE604E02,
+	0x00000002, 0x003210E3, 0xAE604E02, 0x00000002, 0x40321023, 0xAE606402,
+	0x00000002, 0x003210E3, 0xAE606402, 0x00000002,
+	// Block 168, offset 0x2a00
+	0x40321023, 0xADC07002, 0x00000002, 0x003210E3, 0xADC07002, 0x00000002,
+	0x40321024, 0xAE605B02, 0x00000002, 0x00321103, 0xAE605B02, 0x00000002,
+	0x402BE220, 0xAE605B02, 0x00000002, 0x002BE283, 0xAE605B02, 0x00000002,
+	0x402EE620, 0xAE603202, 0x00000002, 0x002EE683, 0xAE603202, 0x00000002,
+	0x402EE620, 0xAE603502, 0x00000002, 0x002EE683, 0xAE603502, 0x00000002,
+	0x402EE620, 0xAE604E02, 0x00000002, 0x002EE683, 0xAE604E02, 0x00000002,
+	0x402EE620, 0xAE606402, 0x00000002, 0x002EE683, 0xAE606402, 0x00000002,
+	0x402EE620, 0xADC07002, 0x00000002, 0x002EE683, 0xADC07002, 0x00000002,
+	0x0030BE83, 0xAE604E02, 0x00000002, 0x0030BE83, 0xADC07002, 0x00000002,
+	0x40321020, 0xAE604E02, 0x00000002, 0x00321083, 0xAE604E02, 0x00000002,
+	0x40321024, 0xAE603202, 0x00000002, 0x00321103,
+	// Block 169, offset 0x2a40
+	0xAE603202, 0x00000002, 0x40321024, 0xAE603502, 0x00000002, 0x00321103,
+	0xAE603502, 0x00000002, 0x40321024, 0xAE604E02, 0x00000002, 0x00321103,
+	0xAE604E02, 0x00000002, 0x40321024, 0xAE606402, 0x00000002, 0x00321103,
+	0xAE606402, 0x00000002, 0x40321024, 0xADC07002, 0x00000002, 0x00321103,
+	0xADC07002,
+}
+
+// mainContractElem: 1125 entries, 4500 bytes
+var mainContractElem = [1125]uint32{
+	// Block 0, offset 0x0
+	0x402E2220, 0xE0000CFB, 0xE0000CFB, 0x002E2288, 0xE0000D01, 0xE0000D01,
+	0x40332220, 0x40332A20, 0x40333220, 0x00332288, 0x00332A88, 0x00333288,
+	0x40333A20, 0x40334220, 0x00333A88, 0x00334288, 0x40336220, 0x4033A220,
+	0x4033A220, 0x00336288, 0x0033A288, 0x0033A288, 0x4033B220, 0x4033BA20,
+	0x0033B288, 0x0033BA88, 0x4033CA20, 0x4033D420, 0x0033CA88, 0x0033D488,
+	0x4033E420, 0x4033F220, 0x0033E488, 0x0033F288, 0x40341420, 0x40343E20,
+	0x40342420, 0x00341488, 0x00343E88, 0x00342488, 0x40342C20, 0x40343620,
+	0x00342C88, 0x00343688, 0x4034EE20, 0x4034F620, 0x0034EE88, 0x0034F688,
+	0x4034FE20, 0x40350620, 0x0034FE88, 0x00350688, 0x40345020, 0x40356A20,
+	0x40356A20, 0x00345088, 0x00356A88, 0x00356A88, 0x40357220, 0x40357A20,
+	0x40358220, 0x40358A20, 0x00357288, 0x00357A88,
+	// Block 1, offset 0x40
+	0x00358288, 0x00358A88, 0x40361820, 0x40362220, 0x00361888, 0x00362288,
+	0x40367E20, 0x40368620, 0x00367E88, 0x00368688, 0x4036A820, 0x4036B020,
+	0x0036A888, 0x0036B088, 0x40371420, 0x40371C20, 0x00371488, 0x00371C88,
+	0x40393820, 0x40391E20, 0x40392020, 0x40392820, 0x403A7420, 0x40392620,
+	0x403A9020, 0x40393020, 0x4040F020, 0x4040F420, 0x4040F620, 0x40426E20,
+	0x40427220, 0x40427020, 0x40427420, 0x40429020, 0x40429420, 0x4042D020,
+	0x4042D620, 0x4042DA20, 0x4042D220, 0x4042D820, 0x40435E20, 0x40436220,
+	0x4043E020, 0x4043E220, 0x4043F020, 0x4043F820, 0x4043F620, 0x4043F220,
+	0x4043F420, 0x4043F620, 0x4043F820, 0x40448220, 0x40448820, 0x40448C20,
+	0x40448420, 0x40448A20, 0x40451E20, 0x40452620, 0x40452020, 0x40452420,
+	0x40452820, 0x40452420, 0x40452620, 0x40498420,
+	// Block 2, offset 0x80
+	0xE0001881, 0xE0001890, 0xE000189F, 0xE00018AE, 0xE00018BD, 0xE00018CC,
+	0xE00018DB, 0xE00018EA, 0xE00018F9, 0xE0001908, 0xE0001917, 0xE0001926,
+	0xE0001935, 0xE0001944, 0xE0001953, 0xE0001962, 0xE0001971, 0xE0001980,
+	0xE000198F, 0xE000199E, 0xE00019AD, 0xE00019BC, 0xE00019CB, 0xE00019DA,
+	0xE00019E9, 0xE00019F8, 0xE0001A07, 0xE0001A16, 0xE0001A25, 0xE0001A34,
+	0xE0001A43, 0xE0001A52, 0xE0001A61, 0xE0001A70, 0xE0001A7F, 0xE0001A8E,
+	0xE0001A9D, 0xE0001AAC, 0xE0001ABB, 0xE0001ACA, 0xE0001AD9, 0xE0001AE8,
+	0xE0001AF7, 0xE0001B06, 0xE0001B15, 0xE0001B24, 0x40498620, 0xE0001884,
+	0xE0001893, 0xE00018A2, 0xE00018B1, 0xE00018C0, 0xE00018CF, 0xE00018DE,
+	0xE00018ED, 0xE00018FC, 0xE000190B, 0xE000191A, 0xE0001929, 0xE0001938,
+	0xE0001947, 0xE0001956, 0xE0001965, 0xE0001974,
+	// Block 3, offset 0xc0
+	0xE0001983, 0xE0001992, 0xE00019A1, 0xE00019B0, 0xE00019BF, 0xE00019CE,
+	0xE00019DD, 0xE00019EC, 0xE00019FB, 0xE0001A0A, 0xE0001A19, 0xE0001A28,
+	0xE0001A37, 0xE0001A46, 0xE0001A55, 0xE0001A64, 0xE0001A73, 0xE0001A82,
+	0xE0001A91, 0xE0001AA0, 0xE0001AAF, 0xE0001ABE, 0xE0001ACD, 0xE0001ADC,
+	0xE0001AEB, 0xE0001AFA, 0xE0001B09, 0xE0001B18, 0xE0001B27, 0x40498820,
+	0xE0001887, 0xE0001896, 0xE00018A5, 0xE00018B4, 0xE00018C3, 0xE00018D2,
+	0xE00018E1, 0xE00018F0, 0xE00018FF, 0xE000190E, 0xE000191D, 0xE000192C,
+	0xE000193B, 0xE000194A, 0xE0001959, 0xE0001968, 0xE0001977, 0xE0001986,
+	0xE0001995, 0xE00019A4, 0xE00019B3, 0xE00019C2, 0xE00019D1, 0xE00019E0,
+	0xE00019EF, 0xE00019FE, 0xE0001A0D, 0xE0001A1C, 0xE0001A2B, 0xE0001A3A,
+	0xE0001A49, 0xE0001A58, 0xE0001A67, 0xE0001A76,
+	// Block 4, offset 0x100
+	0xE0001A85, 0xE0001A94, 0xE0001AA3, 0xE0001AB2, 0xE0001AC1, 0xE0001AD0,
+	0xE0001ADF, 0xE0001AEE, 0xE0001AFD, 0xE0001B0C, 0xE0001B1B, 0xE0001B2A,
+	0x40498A20, 0xE000188A, 0xE0001899, 0xE00018A8, 0xE00018B7, 0xE00018C6,
+	0xE00018D5, 0xE00018E4, 0xE00018F3, 0xE0001902, 0xE0001911, 0xE0001920,
+	0xE000192F, 0xE000193E, 0xE000194D, 0xE000195C, 0xE000196B, 0xE000197A,
+	0xE0001989, 0xE0001998, 0xE00019A7, 0xE00019B6, 0xE00019C5, 0xE00019D4,
+	0xE00019E3, 0xE00019F2, 0xE0001A01, 0xE0001A10, 0xE0001A1F, 0xE0001A2E,
+	0xE0001A3D, 0xE0001A4C, 0xE0001A5B, 0xE0001A6A, 0xE0001A79, 0xE0001A88,
+	0xE0001A97, 0xE0001AA6, 0xE0001AB5, 0xE0001AC4, 0xE0001AD3, 0xE0001AE2,
+	0xE0001AF1, 0xE0001B00, 0xE0001B0F, 0xE0001B1E, 0xE0001B2D, 0x40498C20,
+	0xE000188D, 0xE000189C, 0xE00018AB, 0xE00018BA,
+	// Block 5, offset 0x140
+	0xE00018C9, 0xE00018D8, 0xE00018E7, 0xE00018F6, 0xE0001905, 0xE0001914,
+	0xE0001923, 0xE0001932, 0xE0001941, 0xE0001950, 0xE000195F, 0xE000196E,
+	0xE000197D, 0xE000198C, 0xE000199B, 0xE00019AA, 0xE00019B9, 0xE00019C8,
+	0xE00019D7, 0xE00019E6, 0xE00019F5, 0xE0001A04, 0xE0001A13, 0xE0001A22,
+	0xE0001A31, 0xE0001A40, 0xE0001A4F, 0xE0001A5E, 0xE0001A6D, 0xE0001A7C,
+	0xE0001A8B, 0xE0001A9A, 0xE0001AA9, 0xE0001AB8, 0xE0001AC7, 0xE0001AD6,
+	0xE0001AE5, 0xE0001AF4, 0xE0001B03, 0xE0001B12, 0xE0001B21, 0xE0001B30,
+	0xA0010502, 0x40497420, 0x4049E620, 0xE0001B42, 0xE0001B51, 0xE0001B60,
+	0xE0001B6F, 0xE0001B7E, 0xE0001B9C, 0xE0001BBA, 0xE0001BC9, 0xE0001BD8,
+	0xE0001BE7, 0xE0001BF6, 0xE0001C05, 0xE0001C14, 0xE0001C23, 0xE0001C32,
+	0xE0001C41, 0xE0001C50, 0xE0001C5F, 0xE0001C6E,
+	// Block 6, offset 0x180
+	0xE0001C7D, 0xE0001C8C, 0xE0001C9B, 0xE0001CAA, 0xE0001B8D, 0xE0001CE1,
+	0xE0001CF0, 0xE0001CFF, 0xE0001CB9, 0xE0001CCD, 0xE0001B33, 0xE0001BAB,
+	0x4049E820, 0xE0001B45, 0xE0001B54, 0xE0001B63, 0xE0001B72, 0xE0001B81,
+	0xE0001B9F, 0xE0001BBD, 0xE0001BCC, 0xE0001BDB, 0xE0001BEA, 0xE0001BF9,
+	0xE0001C08, 0xE0001C17, 0xE0001C26, 0xE0001C35, 0xE0001C44, 0xE0001C53,
+	0xE0001C62, 0xE0001C71, 0xE0001C80, 0xE0001C8F, 0xE0001C9E, 0xE0001CAD,
+	0xE0001B90, 0xE0001CE4, 0xE0001CF3, 0xE0001D02, 0xE0001CBD, 0xE0001CD1,
+	0xE0001B36, 0xE0001BAE, 0x4049EA20, 0xE0001B48, 0xE0001B57, 0xE0001B66,
+	0xE0001B75, 0xE0001B84, 0xE0001BA2, 0xE0001BC0, 0xE0001BCF, 0xE0001BDE,
+	0xE0001BED, 0xE0001BFC, 0xE0001C0B, 0xE0001C1A, 0xE0001C29, 0xE0001C38,
+	0xE0001C47, 0xE0001C56, 0xE0001C65, 0xE0001C74,
+	// Block 7, offset 0x1c0
+	0xE0001C83, 0xE0001C92, 0xE0001CA1, 0xE0001CB0, 0xE0001B93, 0xE0001CE7,
+	0xE0001CF6, 0xE0001D05, 0xE0001CC1, 0xE0001CD5, 0xE0001B39, 0xE0001BB1,
+	0x4049EC20, 0xE0001B4B, 0xE0001B5A, 0xE0001B69, 0xE0001B78, 0xE0001B87,
+	0xE0001BA5, 0xE0001BC3, 0xE0001BD2, 0xE0001BE1, 0xE0001BF0, 0xE0001BFF,
+	0xE0001C0E, 0xE0001C1D, 0xE0001C2C, 0xE0001C3B, 0xE0001C4A, 0xE0001C59,
+	0xE0001C68, 0xE0001C77, 0xE0001C86, 0xE0001C95, 0xE0001CA4, 0xE0001CB3,
+	0xE0001B96, 0xE0001CEA, 0xE0001CF9, 0xE0001D08, 0xE0001CC5, 0xE0001CD9,
+	0xE0001B3C, 0xE0001BB4, 0x4049EE20, 0xE0001B4E, 0xE0001B5D, 0xE0001B6C,
+	0xE0001B7B, 0xE0001B8A, 0xE0001BA8, 0xE0001BC6, 0xE0001BD5, 0xE0001BE4,
+	0xE0001BF3, 0xE0001C02, 0xE0001C11, 0xE0001C20, 0xE0001C2F, 0xE0001C3E,
+	0xE0001C4D, 0xE0001C5C, 0xE0001C6B, 0xE0001C7A,
+	// Block 8, offset 0x200
+	0xE0001C89, 0xE0001C98, 0xE0001CA7, 0xE0001CB6, 0xE0001B99, 0xE0001CED,
+	0xE0001CFC, 0xE0001D0B, 0xE0001CC9, 0xE0001CDD, 0xE0001B3F, 0xE0001BB7,
+	0xA0010B02, 0x4049D220, 0x404A5A20, 0xE0001D0E, 0xE0001D1D, 0xE0001D2C,
+	0xE0001D3B, 0xE0001D4A, 0xE0001D59, 0xE0001D68, 0xE0001D77, 0xE0001D86,
+	0xE0001D95, 0xE0001DA4, 0xE0001DB3, 0xE0001DC2, 0xE0001DD1, 0xE0001DE0,
+	0xE0001DEF, 0xE0001DFE, 0xE0001E0D, 0xE0001E1C, 0xE0001E2B, 0xE0001E3A,
+	0xE0001E49, 0xE0001E58, 0xE0001E67, 0xE0001E76, 0xE0001E85, 0xE0001E94,
+	0xE0001EA3, 0xE0001EB2, 0xE0001EC1, 0xE0001ED0, 0xE0001EDF, 0xE0001EEE,
+	0xE0001EFD, 0xE0001F0C, 0xE0001F1B, 0xE0001F2A, 0xE0001F39, 0xE0001F48,
+	0xE0001F57, 0xE0001F66, 0xE0001F75, 0xE0001F84, 0xE0001F93, 0xE0001FA2,
+	0xE0001FB1, 0xE0001FC0, 0xE0001FCF, 0x404A5C20,
+	// Block 9, offset 0x240
+	0xE0001D11, 0xE0001D20, 0xE0001D2F, 0xE0001D3E, 0xE0001D4D, 0xE0001D5C,
+	0xE0001D6B, 0xE0001D7A, 0xE0001D89, 0xE0001D98, 0xE0001DA7, 0xE0001DB6,
+	0xE0001DC5, 0xE0001DD4, 0xE0001DE3, 0xE0001DF2, 0xE0001E01, 0xE0001E10,
+	0xE0001E1F, 0xE0001E2E, 0xE0001E3D, 0xE0001E4C, 0xE0001E5B, 0xE0001E6A,
+	0xE0001E79, 0xE0001E88, 0xE0001E97, 0xE0001EA6, 0xE0001EB5, 0xE0001EC4,
+	0xE0001ED3, 0xE0001EE2, 0xE0001EF1, 0xE0001F00, 0xE0001F0F, 0xE0001F1E,
+	0xE0001F2D, 0xE0001F3C, 0xE0001F4B, 0xE0001F5A, 0xE0001F69, 0xE0001F78,
+	0xE0001F87, 0xE0001F96, 0xE0001FA5, 0xE0001FB4, 0xE0001FC3, 0xE0001FD2,
+	0x404A6220, 0xE0001D14, 0xE0001D23, 0xE0001D32, 0xE0001D41, 0xE0001D50,
+	0xE0001D5F, 0xE0001D6E, 0xE0001D7D, 0xE0001D8C, 0xE0001D9B, 0xE0001DAA,
+	0xE0001DB9, 0xE0001DC8, 0xE0001DD7, 0xE0001DE6,
+	// Block 10, offset 0x280
+	0xE0001DF5, 0xE0001E04, 0xE0001E13, 0xE0001E22, 0xE0001E31, 0xE0001E40,
+	0xE0001E4F, 0xE0001E5E, 0xE0001E6D, 0xE0001E7C, 0xE0001E8B, 0xE0001E9A,
+	0xE0001EA9, 0xE0001EB8, 0xE0001EC7, 0xE0001ED6, 0xE0001EE5, 0xE0001EF4,
+	0xE0001F03, 0xE0001F12, 0xE0001F21, 0xE0001F30, 0xE0001F3F, 0xE0001F4E,
+	0xE0001F5D, 0xE0001F6C, 0xE0001F7B, 0xE0001F8A, 0xE0001F99, 0xE0001FA8,
+	0xE0001FB7, 0xE0001FC6, 0xE0001FD5, 0x404A6620, 0xE0001D17, 0xE0001D26,
+	0xE0001D35, 0xE0001D44, 0xE0001D53, 0xE0001D62, 0xE0001D71, 0xE0001D80,
+	0xE0001D8F, 0xE0001D9E, 0xE0001DAD, 0xE0001DBC, 0xE0001DCB, 0xE0001DDA,
+	0xE0001DE9, 0xE0001DF8, 0xE0001E07, 0xE0001E16, 0xE0001E25, 0xE0001E34,
+	0xE0001E43, 0xE0001E52, 0xE0001E61, 0xE0001E70, 0xE0001E7F, 0xE0001E8E,
+	0xE0001E9D, 0xE0001EAC, 0xE0001EBB, 0xE0001ECA,
+	// Block 11, offset 0x2c0
+	0xE0001ED9, 0xE0001EE8, 0xE0001EF7, 0xE0001F06, 0xE0001F15, 0xE0001F24,
+	0xE0001F33, 0xE0001F42, 0xE0001F51, 0xE0001F60, 0xE0001F6F, 0xE0001F7E,
+	0xE0001F8D, 0xE0001F9C, 0xE0001FAB, 0xE0001FBA, 0xE0001FC9, 0xE0001FD8,
+	0x404A6820, 0xE0001D1A, 0xE0001D29, 0xE0001D38, 0xE0001D47, 0xE0001D56,
+	0xE0001D65, 0xE0001D74, 0xE0001D83, 0xE0001D92, 0xE0001DA1, 0xE0001DB0,
+	0xE0001DBF, 0xE0001DCE, 0xE0001DDD, 0xE0001DEC, 0xE0001DFB, 0xE0001E0A,
+	0xE0001E19, 0xE0001E28, 0xE0001E37, 0xE0001E46, 0xE0001E55, 0xE0001E64,
+	0xE0001E73, 0xE0001E82, 0xE0001E91, 0xE0001EA0, 0xE0001EAF, 0xE0001EBE,
+	0xE0001ECD, 0xE0001EDC, 0xE0001EEB, 0xE0001EFA, 0xE0001F09, 0xE0001F18,
+	0xE0001F27, 0xE0001F36, 0xE0001F45, 0xE0001F54, 0xE0001F63, 0xE0001F72,
+	0xE0001F81, 0xE0001F90, 0xE0001F9F, 0xE0001FAE,
+	// Block 12, offset 0x300
+	0xE0001FBD, 0xE0001FCC, 0xE0001FDB, 0x404AEA20, 0xE000200E, 0xE0002011,
+	0x404B2620, 0x404B2420, 0x404B2620, 0x404AF020, 0xE0002014, 0xE0002017,
+	0x404B2A20, 0x404B2820, 0x404B2A20, 0x8281258B, 0x8281258D, 0x82812591,
+	0x8281258F, 0x404ECA20, 0x404ECC20, 0x404F9C20, 0x404F9620, 0x404F9E20,
+	0x404F9820, 0x40522620, 0x40522820, 0x40522A20, 0x40522C20, 0x40522E20,
+	0x40523020, 0x40523220, 0x40523420, 0x40523620, 0x40523820, 0x40523E20,
+	0x40524020, 0x40529C20, 0x40529E20, 0x4052A020, 0x4052A220, 0x4052A420,
+	0x4052A820, 0x4052A620, 0x4052AA20, 0x4052AC20, 0x4052AE20, 0x40094220,
+	0x40094420, 0x402C3A20, 0x402C3C20, 0x002C3A88, 0x002C3C83, 0x402D2220,
+	0x402D2420, 0x002D2288, 0x002D2483, 0x002D9883, 0x002D9A83, 0x402EE220,
+	0x402EE420, 0x002EE288, 0x002EE483, 0x402FE620,
+	// Block 13, offset 0x340
+	0x402FE820, 0x002FE688, 0x002FE883, 0x40306C20, 0x40306E20, 0x00306C88,
+	0x00306E83, 0x40393820, 0x40393A21, 0x40393A22, 0x40393A23, 0x403A7420,
+	0x403A7621, 0x403A9020, 0x403A9221, 0x402E2220, 0x402E2420, 0x402E2420,
+	0x002E2288, 0x002E2483, 0x002E2483, 0x402BDE20, 0x402BE020, 0x002BDE88,
+	0x002BE083, 0x402C6220, 0x402C6420, 0x002C6288, 0x002C6483, 0x402C9820,
+	0x402C9A20, 0x402C9C20, 0x002C9888, 0x002C9A83, 0x002C9C83, 0x402D9A20,
+	0x402D9C20, 0x002D9A88, 0x002D9C83, 0x402E9E20, 0x402EA020, 0x002E9E88,
+	0x002EA083, 0x402F7A20, 0x402F7C20, 0x002F7A88, 0x002F7C83, 0x40302C20,
+	0x40302E20, 0x00302C88, 0x00302E83, 0x40306C20, 0x40306E20, 0x40307020,
+	0x00306C88, 0x00306E83, 0x00307083, 0x40310020, 0x40310220, 0x00310088,
+	0x00310283, 0x40312A20, 0x40312C20, 0x00312A88,
+	// Block 14, offset 0x380
+	0x00312C83, 0x40306C20, 0x40310021, 0x40310022, 0x00306C88, 0x003100A3,
+	0x003100C3, 0x402BDE20, 0x40320C21, 0x40321020, 0x00321084, 0x002BDE88,
+	0x00320CA3, 0x00321083, 0x00321086, 0x00321085, 0x402C9820, 0x40320C22,
+	0x002C9888, 0x00320CC3, 0x402EE220, 0x40320E21, 0x40320E22, 0x002EE288,
+	0x00320EA3, 0x00320EC3, 0x402BDE20, 0xE00026B2, 0x002BDE88, 0xE00026B5,
+	0x402EE220, 0xE00026C0, 0x002EE288, 0xE00026C3, 0x40306C20, 0xE00026D6,
+	0x00306C88, 0xE00026D9, 0x402BDE20, 0x40320E20, 0x40320C20, 0x002BDE88,
+	0x00320E83, 0x00320C83, 0x402EE220, 0x40321023, 0x40321020, 0x40321022,
+	0x002EE288, 0x003210E3, 0x00321083, 0x003210C3, 0x402C3A20, 0x402C3E20,
+	0x402C3C20, 0x002C3A88, 0x002C3E83, 0x002C3C83, 0x402C6220, 0x402C6420,
+	0x402C6420, 0x002C6288, 0x002C6486, 0x002C6484,
+	// Block 15, offset 0x3c0
+	0x002C6486, 0x002C6484, 0x402E2220, 0xE0000CFB, 0xE0000CFB, 0x402E2420,
+	0x002E2288, 0xE0000D01, 0xE0000D01, 0x002E2486, 0x002E2484, 0x002E9E88,
+	0x002EA086, 0x002EA084, 0x402BDE20, 0x402C0820, 0x40320C21, 0x40321020,
+	0x002BDE88, 0x002C0883, 0x00320CA3, 0x00321083, 0x402C9820, 0x402D0620,
+	0x002C9888, 0x002D0683, 0x402D9A20, 0x402DCA20, 0x002D9A88, 0x002DCA83,
+	0x402EE220, 0x402F2A20, 0x40320E20, 0x002EE288, 0x002F2A83, 0x00320E83,
+	0x40306C20, 0x4030BC20, 0x00306C88, 0x0030BC83, 0x40310020, 0x40312820,
+	0x00310088, 0x00312883, 0x002DFE88, 0x002F56A3, 0x402BDE20, 0x40320C21,
+	0x40321020, 0x002BDE88, 0x00320CA3, 0x00321083, 0x4062AC20, 0x4062AC21,
+	0x4062B220, 0x4062B221, 0x4062BA20, 0x4062BA21, 0x4062BE20, 0x4062BE21,
+	0x4062C420, 0x4062C421, 0x402BDE20, 0x40320C21,
+	// Block 16, offset 0x400
+	0x40321020, 0x40321021, 0x002BDE88, 0x00320CA3, 0x00321083, 0x003210A4,
+	0x003210A3, 0x402BDE20, 0x402C0820, 0x40320E21, 0x40320C21, 0x40320E20,
+	0x40320C20, 0x002BDE88, 0x002C0883, 0x00320EA3, 0x00320CA3, 0x00320E83,
+	0x00320C83, 0x402C3A20, 0x402C5C20, 0x002C3A88, 0x002C5C83, 0x402C5E20,
+	0x402C6020, 0x002C5E83, 0x002C6083, 0x402D2220, 0x402D6420, 0x002D2288,
+	0x002D6483, 0x402DFE20, 0x402E2020, 0x002DFE88, 0x002E2083, 0x402E9E20,
+	0x402EE021, 0x402EE022, 0x002E9E88, 0x002EE0A3, 0x002EE0C3, 0x402FE620,
+	0x40302A20, 0x002FE688, 0x00302A83, 0x40312A20, 0x40320620, 0x00312A88,
+	0x00320683, 0x402EE220, 0x40321023, 0x40321022, 0x40321020, 0x40321021,
+	0x40321024, 0x002EE288, 0x003210E3, 0x003210C3, 0x00321083, 0x003210A3,
+	0x00321103, 0x402BDE20, 0x402BE020, 0x402BE220,
+	// Block 17, offset 0x440
+	0x002BDE88, 0x002BE083, 0x002BE283, 0x402E2220, 0xE0000CFB, 0x402E2420,
+	0x402E2620, 0xE0000CFB, 0x002E2288, 0xE0000D01, 0x002E2483, 0x002E2683,
+	0xE0000D01, 0x402EE220, 0x402EE420, 0x402EE620, 0x002EE288, 0x002EE483,
+	0x002EE683, 0x402F7A20, 0x402F7C20, 0x402F7E20, 0x002F7A88, 0x002F7C83,
+	0x002F7E83, 0x402C9820, 0x40320E22, 0x002C9888, 0x00320EC3, 0x402EE220,
+	0x40321024, 0x40321020, 0x40321022, 0x002EE288, 0x00321103, 0x00321083,
+	0x003210C3,
+}
+
+// mainValues: 37888 entries, 151552 bytes
+// Block 2 is the null block.
+var mainValues = [37888]uint32{
+	// Block 0x0, offset 0x0
+	0x0000: 0xa0000000, 0x0001: 0xa0000000, 0x0002: 0xa0000000, 0x0003: 0xa0000000,
+	0x0004: 0xa0000000, 0x0005: 0xa0000000, 0x0006: 0xa0000000, 0x0007: 0xa0000000,
+	0x0008: 0xa0000000, 0x0009: 0x40020020, 0x000a: 0x40020220, 0x000b: 0x40020420,
+	0x000c: 0x40020620, 0x000d: 0x40020820, 0x000e: 0xa0000000, 0x000f: 0xa0000000,
+	0x0010: 0xa0000000, 0x0011: 0xa0000000, 0x0012: 0xa0000000, 0x0013: 0xa0000000,
+	0x0014: 0xa0000000, 0x0015: 0xa0000000, 0x0016: 0xa0000000, 0x0017: 0xa0000000,
+	0x0018: 0xa0000000, 0x0019: 0xa0000000, 0x001a: 0xa0000000, 0x001b: 0xa0000000,
+	0x001c: 0xa0000000, 0x001d: 0xa0000000, 0x001e: 0xa0000000, 0x001f: 0xa0000000,
+	0x0020: 0x40021220, 0x0021: 0x4002ba20, 0x0022: 0x4003e020, 0x0023: 0x4004ea20,
+	0x0024: 0x4027de20, 0x0025: 0x4004ec20, 0x0026: 0x4004e620, 0x0027: 0x4003d220,
+	0x0028: 0x4003f420, 0x0029: 0x4003f620, 0x002a: 0x4004d820, 0x002b: 0x40093820,
+	0x002c: 0x40024020, 0x002d: 0x40021a20, 0x002e: 0x4002e420, 0x002f: 0x4004e220,
+	0x0030: 0x4029cc20, 0x0031: 0x4029ce20, 0x0032: 0x4029d020, 0x0033: 0x4029d220,
+	0x0034: 0x4029d420, 0x0035: 0x4029d620, 0x0036: 0x4029d820, 0x0037: 0x4029da20,
+	0x0038: 0x4029dc20, 0x0039: 0x4029de20, 0x003a: 0x40026c20, 0x003b: 0x40026220,
+	0x003c: 0x40094020, 0x003d: 0x40094220, 0x003e: 0x40094420, 0x003f: 0x4002c420,
+	// Block 0x1, offset 0x40
+	0x0040: 0x4004d620, 0x0041: 0x002bde88, 0x0042: 0x002c0a88, 0x0043: 0x002c3a88,
+	0x0044: 0x002c6288, 0x0045: 0x002c9888, 0x0046: 0x002d0888, 0x0047: 0x002d2288,
+	0x0048: 0x002d6888, 0x0049: 0x002d9a88, 0x004a: 0x002dcc88, 0x004b: 0x002dfe88,
+	0x004c: 0xc0030002, 0x004d: 0x002e8288, 0x004e: 0x002e9e88, 0x004f: 0x002ee288,
+	0x0050: 0x002f2c88, 0x0051: 0x002f5688, 0x0052: 0x002f7a88, 0x0053: 0x002fe688,
+	0x0054: 0x00302c88, 0x0055: 0x00306c88, 0x0056: 0x0030be88, 0x0057: 0x0030e288,
+	0x0058: 0x0030f688, 0x0059: 0x00310088, 0x005a: 0x00312a88, 0x005b: 0x4003f820,
+	0x005c: 0x4004e420, 0x005d: 0x4003fa20, 0x005e: 0x40062420, 0x005f: 0x40021620,
+	0x0060: 0x40061e20, 0x0061: 0x402bde20, 0x0062: 0x402c0a20, 0x0063: 0x402c3a20,
+	0x0064: 0x402c6220, 0x0065: 0x402c9820, 0x0066: 0x402d0820, 0x0067: 0x402d2220,
+	0x0068: 0x402d6820, 0x0069: 0x402d9a20, 0x006a: 0x402dcc20, 0x006b: 0x402dfe20,
+	0x006c: 0xc0000002, 0x006d: 0x402e8220, 0x006e: 0x402e9e20, 0x006f: 0x402ee220,
+	0x0070: 0x402f2c20, 0x0071: 0x402f5620, 0x0072: 0x402f7a20, 0x0073: 0x402fe620,
+	0x0074: 0x40302c20, 0x0075: 0x40306c20, 0x0076: 0x4030be20, 0x0077: 0x4030e220,
+	0x0078: 0x4030f620, 0x0079: 0x40310020, 0x007a: 0x40312a20, 0x007b: 0x4003fc20,
+	0x007c: 0x40094820, 0x007d: 0x4003fe20, 0x007e: 0x40094c20, 0x007f: 0xa0000000,
+	// Block 0x2, offset 0x80
+	// Block 0x3, offset 0xc0
+	0x00c0: 0xa0000000, 0x00c1: 0xa0000000, 0x00c2: 0xa0000000, 0x00c3: 0xa0000000,
+	0x00c4: 0xa0000000, 0x00c5: 0x40020a20, 0x00c6: 0xa0000000, 0x00c7: 0xa0000000,
+	0x00c8: 0xa0000000, 0x00c9: 0xa0000000, 0x00ca: 0xa0000000, 0x00cb: 0xa0000000,
+	0x00cc: 0xa0000000, 0x00cd: 0xa0000000, 0x00ce: 0xa0000000, 0x00cf: 0xa0000000,
+	0x00d0: 0xa0000000, 0x00d1: 0xa0000000, 0x00d2: 0xa0000000, 0x00d3: 0xa0000000,
+	0x00d4: 0xa0000000, 0x00d5: 0xa0000000, 0x00d6: 0xa0000000, 0x00d7: 0xa0000000,
+	0x00d8: 0xa0000000, 0x00d9: 0xa0000000, 0x00da: 0xa0000000, 0x00db: 0xa0000000,
+	0x00dc: 0xa0000000, 0x00dd: 0xa0000000, 0x00de: 0xa0000000, 0x00df: 0xa0000000,
+	0x00e0: 0x0002129b, 0x00e1: 0x4002bc20, 0x00e2: 0x4027dc20, 0x00e3: 0x4027e020,
+	0x00e4: 0x4027da20, 0x00e5: 0x4027e220, 0x00e6: 0x40094a20, 0x00e7: 0x4004ce20,
+	0x00e8: 0x40062c20, 0x00e9: 0x40081820, 0x00ea: 0x002bde94, 0x00eb: 0x4003f020,
+	0x00ec: 0x40094620, 0x00ed: 0xa0000000, 0x00ee: 0x40081a20, 0x00ef: 0x40062620,
+	0x00f0: 0x40070420, 0x00f1: 0x40093a20, 0x00f2: 0x0029d094, 0x00f3: 0x0029d294,
+	0x00f4: 0x40062020, 0x00f5: 0x00327684, 0x00f6: 0x4004d220, 0x00f7: 0x40030620,
+	0x00f8: 0x40063220, 0x00f9: 0x0029ce94, 0x00fa: 0x002ee294, 0x00fb: 0x4003f220,
+	0x00fc: 0xe00002bf, 0x00fd: 0xe00002b7, 0x00fe: 0xe00004a7, 0x00ff: 0x4002c620,
+	// Block 0x4, offset 0x100
+	0x0100: 0xe00008f5, 0x0101: 0xe00008ef, 0x0102: 0xe0000921, 0x0103: 0xe0000969,
+	0x0104: 0xe000095b, 0x0105: 0xe000094d, 0x0106: 0xe00009dd, 0x0107: 0xe0000a53,
+	0x0108: 0xe0000ae8, 0x0109: 0xe0000ae2, 0x010a: 0xe0000af4, 0x010b: 0xe0000b20,
+	0x010c: 0xe0000c2b, 0x010d: 0xe0000c25, 0x010e: 0xe0000c37, 0x010f: 0xe0000c43,
+	0x0110: 0xe0000ab3, 0x0111: 0xe0000d63, 0x0112: 0xe0000d9a, 0x0113: 0xe0000d94,
+	0x0114: 0xe0000da6, 0x0115: 0xe0000de6, 0x0116: 0xe0000dd2, 0x0117: 0x40093e20,
+	0x0118: 0xe0000e12, 0x0119: 0xe0000fe1, 0x011a: 0xe0000fdb, 0x011b: 0xe0000fed,
+	0x011c: 0xe0000fff, 0x011d: 0xe0001102, 0x011e: 0x00318888, 0x011f: 0xe0000f7b,
+	0x0120: 0xe00008f2, 0x0121: 0xe00008ec, 0x0122: 0xe000091e, 0x0123: 0xe0000966,
+	0x0124: 0xe0000958, 0x0125: 0xe000094a, 0x0126: 0xe00009d5, 0x0127: 0xe0000a4d,
+	0x0128: 0xe0000ae5, 0x0129: 0xe0000adf, 0x012a: 0xe0000af1, 0x012b: 0xe0000b1d,
+	0x012c: 0xe0000c28, 0x012d: 0xe0000c22, 0x012e: 0xe0000c34, 0x012f: 0xe0000c40,
+	0x0130: 0xe0000aad, 0x0131: 0xe0000d60, 0x0132: 0xe0000d97, 0x0133: 0xe0000d91,
+	0x0134: 0xe0000da3, 0x0135: 0xe0000de3, 0x0136: 0xe0000dcf, 0x0137: 0x40093c20,
+	0x0138: 0xe0000e0f, 0x0139: 0xe0000fde, 0x013a: 0xe0000fd8, 0x013b: 0xe0000fea,
+	0x013c: 0xe0000ffc, 0x013d: 0xe00010ff, 0x013e: 0x40318820, 0x013f: 0xe0001114,
+	// Block 0x5, offset 0x140
+	0x0140: 0xe0000983, 0x0141: 0xe0000980, 0x0142: 0xe00008fb, 0x0143: 0xe00008f8,
+	0x0144: 0xe000097d, 0x0145: 0xe000097a, 0x0146: 0xe0000a38, 0x0147: 0xe0000a35,
+	0x0148: 0xe0000a3e, 0x0149: 0xe0000a3b, 0x014a: 0xe0000a4a, 0x014b: 0xe0000a47,
+	0x014c: 0xe0000a44, 0x014d: 0xe0000a41, 0x014e: 0xe0000a86, 0x014f: 0xe0000a83,
+	0x0150: 0xe0000aaa, 0x0151: 0xe0000aa7, 0x0152: 0xe0000b46, 0x0153: 0xe0000b43,
+	0x0154: 0xe0000aee, 0x0155: 0xe0000aeb, 0x0156: 0xe0000b2c, 0x0157: 0xe0000b29,
+	0x0158: 0xe0000b40, 0x0159: 0xe0000b3d, 0x015a: 0xe0000b1a, 0x015b: 0xe0000b17,
+	0x015c: 0xe0000bb8, 0x015d: 0xe0000bb5, 0x015e: 0xe0000bb2, 0x015f: 0xe0000baf,
+	0x0160: 0xe0000bc4, 0x0161: 0xe0000bc1, 0x0162: 0xe0000bca, 0x0163: 0xe0000bc7,
+	0x0164: 0xe0000bee, 0x0165: 0xe0000beb, 0x0166: 0xe0000c1b, 0x0167: 0xe0000c18,
+	0x0168: 0xe0000c51, 0x0169: 0xe0000c4e, 0x016a: 0xe0000c60, 0x016b: 0xe0000c5d,
+	0x016c: 0xe0000c31, 0x016d: 0xe0000c2e, 0x016e: 0xe0000c5a, 0x016f: 0xe0000c57,
+	0x0170: 0xe0000c54, 0x0171: 0x402da220, 0x0172: 0xf0000a0a, 0x0173: 0xf0000404,
+	0x0174: 0xe0000c8a, 0x0175: 0xe0000c87, 0x0176: 0xe0000c9f, 0x0177: 0xe0000c9c,
+	0x0178: 0x402f7220, 0x0179: 0xe0000ccc, 0x017a: 0xe0000cc9, 0x017b: 0xe0000cd8,
+	0x017c: 0xe0000cd5, 0x017d: 0xe0000cd2, 0x017e: 0xe0000ccf, 0x017f: 0xe0000d04,
+	// Block 0x6, offset 0x180
+	0x0180: 0xe0000cfe, 0x0181: 0xe0000cf8, 0x0182: 0xe0000cf5, 0x0183: 0xe0000d51,
+	0x0184: 0xe0000d4e, 0x0185: 0xe0000d6f, 0x0186: 0xe0000d6c, 0x0187: 0xe0000d5d,
+	0x0188: 0xe0000d5a, 0x0189: 0xf0000404, 0x018a: 0x002eda88, 0x018b: 0x402eda20,
+	0x018c: 0xe0000e2e, 0x018d: 0xe0000e2b, 0x018e: 0xe0000da0, 0x018f: 0xe0000d9d,
+	0x0190: 0xe0000de0, 0x0191: 0xe0000ddd, 0x0192: 0xe0000e93, 0x0193: 0xe0000e8f,
+	0x0194: 0xe0000eca, 0x0195: 0xe0000ec7, 0x0196: 0xe0000edc, 0x0197: 0xe0000ed9,
+	0x0198: 0xe0000ed0, 0x0199: 0xe0000ecd, 0x019a: 0xe0000f1f, 0x019b: 0xe0000f1c,
+	0x019c: 0xe0000f2d, 0x019d: 0xe0000f2a, 0x019e: 0xe0000f47, 0x019f: 0xe0000f44,
+	0x01a0: 0xe0000f33, 0x01a1: 0xe0000f30, 0x01a2: 0xe0000f99, 0x01a3: 0xe0000f96,
+	0x01a4: 0xe0000f8a, 0x01a5: 0xe0000f87, 0x01a6: 0x00303688, 0x01a7: 0x40303620,
+	0x01a8: 0xe000102b, 0x01a9: 0xe0001028, 0x01aa: 0xe000103f, 0x01ab: 0xe000103c,
+	0x01ac: 0xe0000fe7, 0x01ad: 0xe0000fe4, 0x01ae: 0xe0000ff9, 0x01af: 0xe0000ff6,
+	0x01b0: 0xe0001025, 0x01b1: 0xe0001022, 0x01b2: 0xe0001039, 0x01b3: 0xe0001036,
+	0x01b4: 0xe00010d8, 0x01b5: 0xe00010d5, 0x01b6: 0xe000110e, 0x01b7: 0xe000110b,
+	0x01b8: 0xe0001117, 0x01b9: 0xe000113b, 0x01ba: 0xe0001138, 0x01bb: 0xe000114d,
+	0x01bc: 0xe000114a, 0x01bd: 0xe0001147, 0x01be: 0xe0001144, 0x01bf: 0xe0000f64,
+	// Block 0x7, offset 0x1c0
+	0x01c0: 0x402c1a20, 0x01c1: 0x002c2a88, 0x01c2: 0x002c3288, 0x01c3: 0x402c3220,
+	0x01c4: 0x0031c488, 0x01c5: 0x4031c420, 0x01c6: 0x002efa88, 0x01c7: 0x002c4e88,
+	0x01c8: 0x402c4e20, 0x01c9: 0x002c7288, 0x01ca: 0x002c7a88, 0x01cb: 0x002c8488,
+	0x01cc: 0x402c8420, 0x01cd: 0xe000115c, 0x01ce: 0x002cae88, 0x01cf: 0x002cb888,
+	0x01d0: 0x002cc288, 0x01d1: 0x002d1688, 0x01d2: 0x402d1620, 0x01d3: 0x002d4488,
+	0x01d4: 0x002d5888, 0x01d5: 0x402d7820, 0x01d6: 0x002dc288, 0x01d7: 0x002db688,
+	0x01d8: 0x002e0a88, 0x01d9: 0x402e0a20, 0x01da: 0x402e3820, 0x01db: 0x402e7220,
+	0x01dc: 0x0030a088, 0x01dd: 0x002eb488, 0x01de: 0x402ebc20, 0x01df: 0x002f1088,
+	0x01e0: 0xe0000e56, 0x01e1: 0xe0000e53, 0x01e2: 0x002d6088, 0x01e3: 0x402d6020,
+	0x01e4: 0x002f3e88, 0x01e5: 0x402f3e20, 0x01e6: 0x002f8288, 0x01e7: 0x0031b488,
+	0x01e8: 0x4031b420, 0x01e9: 0x00300888, 0x01ea: 0x40301220, 0x01eb: 0x40304220,
+	0x01ec: 0x00304a88, 0x01ed: 0x40304a20, 0x01ee: 0x00305288, 0x01ef: 0xe000105f,
+	0x01f0: 0xe000105c, 0x01f1: 0x0030b488, 0x01f2: 0x0030cc88, 0x01f3: 0x00311888,
+	0x01f4: 0x40311820, 0x01f5: 0x00313488, 0x01f6: 0x40313420, 0x01f7: 0x00316488,
+	0x01f8: 0x00316e88, 0x01f9: 0x40316e20, 0x01fa: 0x40317820, 0x01fb: 0x4031a620,
+	0x01fc: 0x0031bc88, 0x01fd: 0x4031bc20, 0x01fe: 0xe0000fc9, 0x01ff: 0x40319420,
+	// Block 0x8, offset 0x200
+	0x0200: 0x40321220, 0x0201: 0x40321a20, 0x0202: 0x40322220, 0x0203: 0x40322a20,
+	0x0204: 0xe0000ad5, 0x0205: 0xe0000ad1, 0x0206: 0xe0000acd, 0x0207: 0xf0000a0a,
+	0x0208: 0xf000040a, 0x0209: 0xf0000404, 0x020a: 0xf0000a0a, 0x020b: 0xf000040a,
+	0x020c: 0xf0000404, 0x020d: 0xe0000947, 0x020e: 0xe0000944, 0x020f: 0xe0000c3d,
+	0x0210: 0xe0000c3a, 0x0211: 0xe0000dcc, 0x0212: 0xe0000dc9, 0x0213: 0xe0000ff3,
+	0x0214: 0xe0000ff0, 0x0215: 0xe000101e, 0x0216: 0xe000101a, 0x0217: 0xe0001006,
+	0x0218: 0xe0001002, 0x0219: 0xe0001016, 0x021a: 0xe0001012, 0x021b: 0xe000100e,
+	0x021c: 0xe000100a, 0x021d: 0x402cae20, 0x021e: 0xe0000962, 0x021f: 0xe000095e,
+	0x0220: 0xe0000976, 0x0221: 0xe0000972, 0x0222: 0xe00009f4, 0x0223: 0xe00009ef,
+	0x0224: 0x002d3a88, 0x0225: 0x402d3a20, 0x0226: 0xe0000bbe, 0x0227: 0xe0000bbb,
+	0x0228: 0xe0000c99, 0x0229: 0xe0000c96, 0x022a: 0xe0000e20, 0x022b: 0xe0000e1d,
+	0x022c: 0xe0000e27, 0x022d: 0xe0000e23, 0x022e: 0xe0001162, 0x022f: 0xe000115f,
+	0x0230: 0xe0000c8d, 0x0231: 0xf0000a0a, 0x0232: 0xf000040a, 0x0233: 0xf0000404,
+	0x0234: 0xe0000bac, 0x0235: 0xe0000ba9, 0x0236: 0x002d7888, 0x0237: 0x00319488,
+	0x0238: 0xe0000d57, 0x0239: 0xe0000d54, 0x023a: 0xe0000954, 0x023b: 0xe0000950,
+	0x023c: 0xe00009ea, 0x023d: 0xe00009e5, 0x023e: 0xe0000e19, 0x023f: 0xe0000e15,
+	// Block 0x9, offset 0x240
+	0x0240: 0xe000098f, 0x0241: 0xe000098c, 0x0242: 0xe0000995, 0x0243: 0xe0000992,
+	0x0244: 0xe0000b62, 0x0245: 0xe0000b5f, 0x0246: 0xe0000b68, 0x0247: 0xe0000b65,
+	0x0248: 0xe0000c6c, 0x0249: 0xe0000c69, 0x024a: 0xe0000c72, 0x024b: 0xe0000c6f,
+	0x024c: 0xe0000e4a, 0x024d: 0xe0000e47, 0x024e: 0xe0000e50, 0x024f: 0xe0000e4d,
+	0x0250: 0xe0000ee8, 0x0251: 0xe0000ee5, 0x0252: 0xe0000eee, 0x0253: 0xe0000eeb,
+	0x0254: 0xe0001053, 0x0255: 0xe0001050, 0x0256: 0xe0001059, 0x0257: 0xe0001056,
+	0x0258: 0xe0000f61, 0x0259: 0xe0000f5e, 0x025a: 0xe0000fa5, 0x025b: 0xe0000fa2,
+	0x025c: 0x00312288, 0x025d: 0x40312220, 0x025e: 0xe0000bf4, 0x025f: 0xe0000bf1,
+	0x0260: 0x002ebc88, 0x0261: 0x402c8c20, 0x0262: 0x002f2288, 0x0263: 0x402f2220,
+	0x0264: 0x00314088, 0x0265: 0x40314020, 0x0266: 0xe000096f, 0x0267: 0xe000096c,
+	0x0268: 0xe0000b32, 0x0269: 0xe0000b2f, 0x026a: 0xe0000dd9, 0x026b: 0xe0000dd5,
+	0x026c: 0xe0000dfd, 0x026d: 0xe0000df9, 0x026e: 0xe0000e04, 0x026f: 0xe0000e01,
+	0x0270: 0xe0000e0b, 0x0271: 0xe0000e07, 0x0272: 0xe0001129, 0x0273: 0xe0001126,
+	0x0274: 0x402e5e20, 0x0275: 0x402ed020, 0x0276: 0x40305a20, 0x0277: 0x402dd420,
+	0x0278: 0xe0000abf, 0x0279: 0xe0000ec4, 0x027a: 0x002be888, 0x027b: 0x002c4488,
+	0x027c: 0x402c4420, 0x027d: 0x002e3888, 0x027e: 0x00303e88, 0x027f: 0x402ffc20,
+	// Block 0xa, offset 0x280
+	0x0280: 0x40315820, 0x0281: 0x0031d488, 0x0282: 0x4031d420, 0x0283: 0x002c1a88,
+	0x0284: 0x00307c88, 0x0285: 0x0030da88, 0x0286: 0x002ca288, 0x0287: 0x402ca220,
+	0x0288: 0x002dde88, 0x0289: 0x402dde20, 0x028a: 0x002f6a88, 0x028b: 0x402f6a20,
+	0x028c: 0x002f8e88, 0x028d: 0x402f8e20, 0x028e: 0x00311088, 0x028f: 0x40311020,
+	0x0290: 0x402bf020, 0x0291: 0x402bf820, 0x0292: 0x402c0220, 0x0293: 0x402c2a20,
+	0x0294: 0x402efa20, 0x0295: 0x402c5620, 0x0296: 0x402c7220, 0x0297: 0x402c7a20,
+	0x0298: 0x402ccc20, 0x0299: 0x402cb820, 0x029a: 0x402cd420, 0x029b: 0x402cc220,
+	0x029c: 0x402cdc20, 0x029d: 0x402ce820, 0x029e: 0x402cf020, 0x029f: 0x402dee20,
+	0x02a0: 0x402d4420, 0x02a1: 0x402d2a20, 0x02a2: 0x402d3220, 0x02a3: 0x402d5820,
+	0x02a4: 0x402d0020, 0x02a5: 0x40308820, 0x02a6: 0x402d8020, 0x02a7: 0x402d8e20,
+	0x02a8: 0x402db620, 0x02a9: 0x402dc220, 0x02aa: 0x402daa20, 0x02ab: 0x402e4220,
+	0x02ac: 0x402e4a20, 0x02ad: 0x402e5420, 0x02ae: 0x402e6820, 0x02af: 0x4030a020,
+	0x02b0: 0x4030ac20, 0x02b1: 0x402e9020, 0x02b2: 0x402eb420, 0x02b3: 0x402ec820,
+	0x02b4: 0x402ea620, 0x02b5: 0x402f1020, 0x02b6: 0x402eee20, 0x02b7: 0x402f1a20,
+	0x02b8: 0x402f4c20, 0x02b9: 0x402f9820, 0x02ba: 0x402fa220, 0x02bb: 0x402fac20,
+	0x02bc: 0x402fb620, 0x02bd: 0x402fbe20, 0x02be: 0x402fc620, 0x02bf: 0x402fd020,
+	// Block 0xb, offset 0x2c0
+	0x02c0: 0x402f8220, 0x02c1: 0x402fd820, 0x02c2: 0x402ff420, 0x02c3: 0x40300820,
+	0x02c4: 0x402df620, 0x02c5: 0x40301a20, 0x02c6: 0x40302420, 0x02c7: 0x40306420,
+	0x02c8: 0x40305220, 0x02c9: 0x40307c20, 0x02ca: 0x4030b420, 0x02cb: 0x4030cc20,
+	0x02cc: 0x4030da20, 0x02cd: 0x4030ee20, 0x02ce: 0x402e7a20, 0x02cf: 0x40310820,
+	0x02d0: 0x40314820, 0x02d1: 0x40315020, 0x02d2: 0x40316420, 0x02d3: 0x40318020,
+	0x02d4: 0x4031cc20, 0x02d5: 0x4031e820, 0x02d6: 0x40320a20, 0x02d7: 0x40323220,
+	0x02d8: 0x40323a20, 0x02d9: 0x402c1220, 0x02da: 0x402cf820, 0x02db: 0x402d4c20,
+	0x02dc: 0x402d7020, 0x02dd: 0x402de620, 0x02de: 0x402e1a20, 0x02df: 0x402e2a20,
+	0x02e0: 0x402f6220, 0x02e1: 0x4031fa20, 0x02e2: 0x40320220, 0x02e3: 0xe0000aca,
+	0x02e4: 0xe0000adc, 0x02e5: 0xe0000ad9, 0x02e6: 0xe0000fcc, 0x02e7: 0xe0000fcf,
+	0x02e8: 0xe0000fba, 0x02e9: 0xe0000ba1, 0x02ea: 0xe0000d11, 0x02eb: 0xe0000d18,
+	0x02ec: 0x40324220, 0x02ed: 0x40324a20, 0x02ee: 0x40309020, 0x02ef: 0x40309820,
+	0x02f0: 0x002d6894, 0x02f1: 0x002d8094, 0x02f2: 0x002dcc94, 0x02f3: 0x002f7a94,
+	0x02f4: 0x002f9894, 0x02f5: 0x002fac94, 0x02f6: 0x002fd894, 0x02f7: 0x0030e294,
+	0x02f8: 0x00310094, 0x02f9: 0x40064020, 0x02fa: 0x40064420, 0x02fb: 0x402d9620,
+	0x02fc: 0x4031de20, 0x02fd: 0x402d9820, 0x02fe: 0x4031e220, 0x02ff: 0x4031f020,
+	// Block 0xc, offset 0x300
+	0x0300: 0x4031dc20, 0x0301: 0x4031f220, 0x0302: 0x40064620, 0x0303: 0x40064820,
+	0x0304: 0x40064a20, 0x0305: 0x40064c20, 0x0306: 0x40064e20, 0x0307: 0x40065020,
+	0x0308: 0x40065220, 0x0309: 0x40065420, 0x030a: 0x40065620, 0x030b: 0x40065820,
+	0x030c: 0x40065a20, 0x030d: 0x40065c20, 0x030e: 0x40065e20, 0x030f: 0x40066020,
+	0x0310: 0x4027b220, 0x0311: 0x4027b420, 0x0312: 0x40066220, 0x0313: 0x40066420,
+	0x0314: 0x40066620, 0x0315: 0x40066820, 0x0316: 0x40066a20, 0x0317: 0x40066c20,
+	0x0318: 0x40062820, 0x0319: 0x40062a20, 0x031a: 0x40062e20, 0x031b: 0x40063420,
+	0x031c: 0x40062220, 0x031d: 0x40063020, 0x031e: 0x40066e20, 0x031f: 0x40067020,
+	0x0320: 0x002d5894, 0x0321: 0x002e2294, 0x0322: 0x002fe694, 0x0323: 0x0030f694,
+	0x0324: 0x0031e894, 0x0325: 0x40067220, 0x0326: 0x40067420, 0x0327: 0x40067620,
+	0x0328: 0x40067820, 0x0329: 0x40067a20, 0x032a: 0x40067c20, 0x032b: 0x40067e20,
+	0x032c: 0x40068020, 0x032d: 0x40068220, 0x032e: 0x4031e020, 0x032f: 0x40068420,
+	0x0330: 0x40068620, 0x0331: 0x40068820, 0x0332: 0x40068a20, 0x0333: 0x40068c20,
+	0x0334: 0x40068e20, 0x0335: 0x40069020, 0x0336: 0x40069220, 0x0337: 0x40069420,
+	0x0338: 0x40069620, 0x0339: 0x40069820, 0x033a: 0x40069a20, 0x033b: 0x40069c20,
+	0x033c: 0x40069e20, 0x033d: 0x4006a020, 0x033e: 0x4006a220, 0x033f: 0x4006a420,
+	// Block 0xd, offset 0x340
+	0x0340: 0xae603502, 0x0341: 0xae603202, 0x0342: 0xae603c02, 0x0343: 0xae604e02,
+	0x0344: 0xae605b02, 0x0345: 0xae606302, 0x0346: 0xae603702, 0x0347: 0xae605202,
+	0x0348: 0xae604702, 0x0349: 0xae606402, 0x034a: 0xae604302, 0x034b: 0xae604d02,
+	0x034c: 0xae604102, 0x034d: 0xae605f02, 0x034e: 0xae605f02, 0x034f: 0xae606502,
+	0x0350: 0xae606602, 0x0351: 0xae606702, 0x0352: 0xae605f02, 0x0353: 0xae602202,
+	0x0354: 0xae602a02, 0x0355: 0xae805f02, 0x0356: 0xadc06002, 0x0357: 0xadc06002,
+	0x0358: 0xadc06002, 0x0359: 0xadc06002, 0x035a: 0xae805f02, 0x035b: 0xad806802,
+	0x035c: 0xadc06002, 0x035d: 0xadc06002, 0x035e: 0xadc06002, 0x035f: 0xadc06002,
+	0x0360: 0xadc06002, 0x0361: 0xaca06e02, 0x0362: 0xaca06f02, 0x0363: 0xadc07002,
+	0x0364: 0xadc07502, 0x0365: 0xadc07602, 0x0366: 0xadc07702, 0x0367: 0xaca05602,
+	0x0368: 0xaca05902, 0x0369: 0xadc06002, 0x036a: 0xadc06002, 0x036b: 0xadc06002,
+	0x036c: 0xadc06002, 0x036d: 0xadc07802, 0x036e: 0xadc07902, 0x036f: 0xadc06002,
+	0x0370: 0xadc07a02, 0x0371: 0xadc07b02, 0x0372: 0xadc02102, 0x0373: 0xadc06002,
+	0x0374: 0xa0107c02, 0x0375: 0xa0107d02, 0x0376: 0xa0106102, 0x0377: 0xa0106102,
+	0x0378: 0xa0105402, 0x0379: 0xadc07e02, 0x037a: 0xadc06002, 0x037b: 0xadc06002,
+	0x037c: 0xadc06002, 0x037d: 0xae605f02, 0x037e: 0xae605f02, 0x037f: 0xae605f02,
+	// Block 0xe, offset 0x380
+	0x0380: 0xae603502, 0x0381: 0xae603202, 0x0382: 0xae604502, 0x0383: 0xae602202,
+	0x0384: 0xe0000000, 0x0385: 0xaf007f02, 0x0386: 0xae605f02, 0x0387: 0xadc06002,
+	0x0388: 0xadc06002, 0x0389: 0xadc06002, 0x038a: 0xae605f02, 0x038b: 0xae605f02,
+	0x038c: 0xae605f02, 0x038d: 0xadc06002, 0x038e: 0xadc06002, 0x038f: 0xa0000000,
+	0x0390: 0xae605f02, 0x0391: 0xae605f02, 0x0392: 0xae605f02, 0x0393: 0xadc06002,
+	0x0394: 0xadc06002, 0x0395: 0xadc06002, 0x0396: 0xadc06002, 0x0397: 0xae605f02,
+	0x0398: 0xae808002, 0x0399: 0xadc06002, 0x039a: 0xadc06002, 0x039b: 0xae605f02,
+	0x039c: 0xae906002, 0x039d: 0xaea05f02, 0x039e: 0xaea05f02, 0x039f: 0xae906002,
+	0x03a0: 0xaea08102, 0x03a1: 0xaea08202, 0x03a2: 0xae906002, 0x03a3: 0x84e615ef,
+	0x03a4: 0x84e6164c, 0x03a5: 0x84e616cd, 0x03a6: 0x84e61771, 0x03a7: 0x84e61836,
+	0x03a8: 0x84e6161d, 0x03a9: 0x84e61631, 0x03aa: 0x84e616b4, 0x03ab: 0x84e61741,
+	0x03ac: 0x84e617bd, 0x03ad: 0x84e61816, 0x03ae: 0x84e6185f, 0x03af: 0x84e6187b,
+	0x03b0: 0x00326688, 0x03b1: 0x40326620, 0x03b2: 0x0032a688, 0x03b3: 0x4032a620,
+	0x03b4: 0x40064020, 0x03b5: 0x40064220, 0x03b6: 0x00326088, 0x03b7: 0x40326020,
+	0x03ba: 0x00326c84, 0x03bb: 0x40329220,
+	0x03bc: 0x40329020, 0x03bd: 0x40329420, 0x03be: 0x40026220,
+	// Block 0xf, offset 0x3c0
+	0x03c4: 0x40062020, 0x03c5: 0xe00000ab, 0x03c6: 0xe00011f0, 0x03c7: 0x40030620,
+	0x03c8: 0xe0001249, 0x03c9: 0xe00012dd, 0x03ca: 0xe000133a,
+	0x03cc: 0xe000139b, 0x03ce: 0xe00013dd, 0x03cf: 0xe0001492,
+	0x03d0: 0xe0001352, 0x03d1: 0x00325288, 0x03d2: 0x00325488, 0x03d3: 0x00325688,
+	0x03d4: 0x00325a88, 0x03d5: 0x00325c88, 0x03d6: 0x00326488, 0x03d7: 0x00326888,
+	0x03d8: 0x00326a88, 0x03d9: 0x00326c88, 0x03da: 0x00327088, 0x03db: 0x00327288,
+	0x03dc: 0x00327688, 0x03dd: 0x00327888, 0x03de: 0x00327a88, 0x03df: 0x00327c88,
+	0x03e0: 0x00327e88, 0x03e1: 0x00328888, 0x03e3: 0x00328e88,
+	0x03e4: 0x00329688, 0x03e5: 0x00329888, 0x03e6: 0x00329a88, 0x03e7: 0x00329c88,
+	0x03e8: 0x00329e88, 0x03e9: 0x0032a288, 0x03ea: 0xe000134f, 0x03eb: 0xe00013f2,
+	0x03ec: 0xe00011ed, 0x03ed: 0xe0001246, 0x03ee: 0xe00012da, 0x03ef: 0xe0001337,
+	0x03f0: 0xe00013f5, 0x03f1: 0x40325220, 0x03f2: 0x40325420, 0x03f3: 0x40325620,
+	0x03f4: 0x40325a20, 0x03f5: 0x40325c20, 0x03f6: 0x40326420, 0x03f7: 0x40326820,
+	0x03f8: 0x40326a20, 0x03f9: 0x40326c20, 0x03fa: 0x40327020, 0x03fb: 0x40327220,
+	0x03fc: 0x40327620, 0x03fd: 0x40327820, 0x03fe: 0x40327a20, 0x03ff: 0x40327c20,
+	// Block 0x10, offset 0x400
+	0x0400: 0x40327e20, 0x0401: 0x40328820, 0x0402: 0x00328e99, 0x0403: 0x40328e20,
+	0x0404: 0x40329620, 0x0405: 0x40329820, 0x0406: 0x40329a20, 0x0407: 0x40329c20,
+	0x0408: 0x40329e20, 0x0409: 0x4032a220, 0x040a: 0xe000134c, 0x040b: 0xe00013ef,
+	0x040c: 0xe0001398, 0x040d: 0xe00013da, 0x040e: 0xe000148f, 0x040f: 0xe0001368,
+	0x0410: 0x00325484, 0x0411: 0x00326a84, 0x0412: 0x0032988a, 0x0413: 0xf000020a,
+	0x0414: 0xf000020a, 0x0415: 0x00329a84, 0x0416: 0x00327e84, 0x0417: 0xe0001364,
+	0x0418: 0x00328688, 0x0419: 0x40328620, 0x041a: 0x00326288, 0x041b: 0x40326220,
+	0x041c: 0x00325e88, 0x041d: 0x40325e20, 0x041e: 0x00328488, 0x041f: 0x40328420,
+	0x0420: 0x0032a488, 0x0421: 0x4032a420, 0x0422: 0x0032e888, 0x0423: 0x4032e820,
+	0x0424: 0x0032f288, 0x0425: 0x4032f220, 0x0426: 0x0032f488, 0x0427: 0x4032f420,
+	0x0428: 0x0032fa88, 0x0429: 0x4032fa20, 0x042a: 0x00330888, 0x042b: 0x40330820,
+	0x042c: 0x00330e88, 0x042d: 0x40330e20, 0x042e: 0x00331688, 0x042f: 0x40331620,
+	0x0430: 0x00327084, 0x0431: 0x00328884, 0x0432: 0x00328e84, 0x0433: 0x40326e20,
+	0x0434: 0x00326a8a, 0x0435: 0x00325c84, 0x0436: 0x40092e20, 0x0437: 0x0032a888,
+	0x0438: 0x4032a820, 0x0439: 0x00328e8a, 0x043a: 0x00328288, 0x043b: 0x40328220,
+	0x043c: 0x40328c20, 0x043d: 0x00329288, 0x043e: 0x00329088, 0x043f: 0x00329488,
+	// Block 0x11, offset 0x440
+	0x0440: 0xe00014bd, 0x0441: 0xe00014c3, 0x0442: 0x00339688, 0x0443: 0x0033a288,
+	0x0444: 0x0033c288, 0x0445: 0x0033fc88, 0x0446: 0xc02a0071, 0x0447: 0x00343688,
+	0x0448: 0x00344688, 0x0449: 0x00349a88, 0x044a: 0x0034e488, 0x044b: 0x00356288,
+	0x044c: 0x00356a88, 0x044d: 0xe00014cf, 0x044e: 0x00357a88, 0x044f: 0x00365488,
+	0x0450: 0xc0090041, 0x0451: 0x00335288, 0x0452: 0x00335a88, 0x0453: 0xc0130092,
+	0x0454: 0x00338a88, 0x0455: 0xc01800d1, 0x0456: 0xc01c0071, 0x0457: 0xc0200071,
+	0x0458: 0xc0250041, 0x0459: 0x00343e88, 0x045a: 0xc0370092, 0x045b: 0x00348488,
+	0x045c: 0x0034a888, 0x045d: 0x0034ba88, 0x045e: 0xc02e0071, 0x045f: 0x00350e88,
+	0x0460: 0x00352888, 0x0461: 0x00353a88, 0x0462: 0x00354c88, 0x0463: 0xc03e00f1,
+	0x0464: 0x0035ac88, 0x0465: 0x0035b488, 0x0466: 0x00360288, 0x0467: 0xc0440071,
+	0x0468: 0x00365c88, 0x0469: 0x00366688, 0x046a: 0x00367488, 0x046b: 0xc0480071,
+	0x046c: 0x00368e88, 0x046d: 0xc04c0071, 0x046e: 0x0036b888, 0x046f: 0x0036c488,
+	0x0470: 0xc0060041, 0x0471: 0x40335220, 0x0472: 0x40335a20, 0x0473: 0xc0100092,
+	0x0474: 0x40338a20, 0x0475: 0xc01600d1, 0x0476: 0xc01a0071, 0x0477: 0xc01e0071,
+	0x0478: 0xc0220041, 0x0479: 0x40343e20, 0x047a: 0xc0340092, 0x047b: 0x40348420,
+	0x047c: 0x4034a820, 0x047d: 0x4034ba20, 0x047e: 0xc02c0071, 0x047f: 0x40350e20,
+	// Block 0x12, offset 0x480
+	0x0480: 0x40352820, 0x0481: 0x40353a20, 0x0482: 0x40354c20, 0x0483: 0xc03a00f1,
+	0x0484: 0x4035ac20, 0x0485: 0x4035b420, 0x0486: 0x40360220, 0x0487: 0xc0420071,
+	0x0488: 0x40365c20, 0x0489: 0x40366620, 0x048a: 0x40367420, 0x048b: 0xc0460071,
+	0x048c: 0x40368e20, 0x048d: 0xc04a0071, 0x048e: 0x4036b820, 0x048f: 0x4036c420,
+	0x0490: 0xe00014ba, 0x0491: 0xe00014c0, 0x0492: 0x40339620, 0x0493: 0x4033a220,
+	0x0494: 0x4033c220, 0x0495: 0x4033fc20, 0x0496: 0xc0280071, 0x0497: 0x40343620,
+	0x0498: 0x40344620, 0x0499: 0x40349a20, 0x049a: 0x4034e420, 0x049b: 0x40356220,
+	0x049c: 0x40356a20, 0x049d: 0xe00014cc, 0x049e: 0x40357a20, 0x049f: 0x40365420,
+	0x04a0: 0x0035e088, 0x04a1: 0x4035e020, 0x04a2: 0x00369e88, 0x04a3: 0x40369e20,
+	0x04a4: 0x0036ce88, 0x04a5: 0x4036ce20, 0x04a6: 0x0036d688, 0x04a7: 0x4036d620,
+	0x04a8: 0x0036ea88, 0x04a9: 0x4036ea20, 0x04aa: 0x0036e088, 0x04ab: 0x4036e020,
+	0x04ac: 0x0036f488, 0x04ad: 0x4036f420, 0x04ae: 0x0036fc88, 0x04af: 0x4036fc20,
+	0x04b0: 0x00370488, 0x04b1: 0x40370420, 0x04b2: 0x00370c88, 0x04b3: 0x40370c20,
+	0x04b4: 0xc0500131, 0x04b5: 0xc04e0131, 0x04b6: 0x00371c88, 0x04b7: 0x40371c20,
+	0x04b8: 0x0035a488, 0x04b9: 0x4035a420, 0x04ba: 0x0035fa88, 0x04bb: 0x4035fa20,
+	0x04bc: 0x0035f288, 0x04bd: 0x4035f220, 0x04be: 0x0035e888, 0x04bf: 0x4035e820,
+	// Block 0x13, offset 0x4c0
+	0x04c0: 0x00352088, 0x04c1: 0x40352020, 0x04c2: 0x40070620, 0x04c3: 0xae608302,
+	0x04c4: 0xae605f02, 0x04c5: 0xae602a02, 0x04c6: 0xae602202, 0x04c7: 0xae605f02,
+	0x04c8: 0xa0000000, 0x04c9: 0xa0000000, 0x04ca: 0x00341c88, 0x04cb: 0x40341c20,
+	0x04cc: 0x00369688, 0x04cd: 0x40369620, 0x04ce: 0x00353088, 0x04cf: 0x40353020,
+	0x04d0: 0xe00014b7, 0x04d1: 0xe00014b4, 0x04d2: 0x00336a88, 0x04d3: 0x40336a20,
+	0x04d4: 0x00337a88, 0x04d5: 0x40337a20, 0x04d6: 0x0033dc88, 0x04d7: 0x4033dc20,
+	0x04d8: 0x0033aa88, 0x04d9: 0x4033aa20, 0x04da: 0x00345888, 0x04db: 0x40345820,
+	0x04dc: 0x00347888, 0x04dd: 0x40347820, 0x04de: 0x00347088, 0x04df: 0x40347020,
+	0x04e0: 0x00346888, 0x04e1: 0x40346820, 0x04e2: 0x0034ca88, 0x04e3: 0x4034ca20,
+	0x04e4: 0x0034dc88, 0x04e5: 0x4034dc20, 0x04e6: 0x00351888, 0x04e7: 0x40351820,
+	0x04e8: 0x00372688, 0x04e9: 0x40372620, 0x04ea: 0x00354488, 0x04eb: 0x40354420,
+	0x04ec: 0x00355888, 0x04ed: 0x40355820, 0x04ee: 0x00359288, 0x04ef: 0x40359220,
+	0x04f0: 0x00359a88, 0x04f1: 0x40359a20, 0x04f2: 0x0035cc88, 0x04f3: 0x4035cc20,
+	0x04f4: 0x00360e88, 0x04f5: 0x40360e20, 0x04f6: 0x00362a88, 0x04f7: 0x40362a20,
+	0x04f8: 0x00363a88, 0x04f9: 0x40363a20, 0x04fa: 0x0035d488, 0x04fb: 0x4035d420,
+	0x04fc: 0x00364488, 0x04fd: 0x40364420, 0x04fe: 0x00364c88, 0x04ff: 0x40364c20,
+	// Block 0x14, offset 0x500
+	0x0500: 0x00373088, 0x0501: 0xe00014c9, 0x0502: 0xe00014c6, 0x0503: 0x00346088,
+	0x0504: 0x40346020, 0x0505: 0x00348e88, 0x0506: 0x40348e20, 0x0507: 0x0034d288,
+	0x0508: 0x4034d220, 0x0509: 0x0034c288, 0x050a: 0x4034c220, 0x050b: 0x00363288,
+	0x050c: 0x40363220, 0x050d: 0x0034b088, 0x050e: 0x4034b020, 0x050f: 0x40373020,
+	0x0510: 0x00332a88, 0x0511: 0x40332a20, 0x0512: 0x00333288, 0x0513: 0x40333220,
+	0x0514: 0x00334a88, 0x0515: 0x40334a20, 0x0516: 0x0033ba88, 0x0517: 0x4033ba20,
+	0x0518: 0xc00e0071, 0x0519: 0xc00c0071, 0x051a: 0x00334288, 0x051b: 0x40334220,
+	0x051c: 0x0033d488, 0x051d: 0x4033d420, 0x051e: 0x0033f288, 0x051f: 0x4033f220,
+	0x0520: 0x00340688, 0x0521: 0x40340620, 0x0522: 0xe00014d5, 0x0523: 0xe00014d2,
+	0x0524: 0x00342488, 0x0525: 0x40342420, 0x0526: 0x0034f688, 0x0527: 0x4034f620,
+	0x0528: 0xc0320071, 0x0529: 0xc0300071, 0x052a: 0x00350688, 0x052b: 0x40350620,
+	0x052c: 0x0036b088, 0x052d: 0x4036b020, 0x052e: 0xe00014de, 0x052f: 0xe00014db,
+	0x0530: 0x00358288, 0x0531: 0x40358220, 0x0532: 0x00358a88, 0x0533: 0x40358a20,
+	0x0534: 0x00362288, 0x0535: 0x40362220, 0x0536: 0x00338288, 0x0537: 0x40338220,
+	0x0538: 0x00368688, 0x0539: 0x40368620, 0x053a: 0x00337288, 0x053b: 0x40337220,
+	0x053c: 0x0035bc88, 0x053d: 0x4035bc20, 0x053e: 0x0035c488, 0x053f: 0x4035c420,
+	// Block 0x15, offset 0x540
+	0x0540: 0x00339288, 0x0541: 0x40339220, 0x0542: 0x0033a088, 0x0543: 0x4033a020,
+	0x0544: 0x0033ee88, 0x0545: 0x4033ee20, 0x0546: 0x00341088, 0x0547: 0x40341020,
+	0x0548: 0x0034a488, 0x0549: 0x4034a420, 0x054a: 0x0034ec88, 0x054b: 0x4034ec20,
+	0x054c: 0x00354288, 0x054d: 0x40354220, 0x054e: 0x00355688, 0x054f: 0x40355620,
+	0x0550: 0x0033f088, 0x0551: 0x4033f020, 0x0552: 0x00349688, 0x0553: 0x40349620,
+	0x0554: 0x0034a688, 0x0555: 0x4034a620, 0x0556: 0x00353888, 0x0557: 0x40353820,
+	0x0558: 0x0036cc88, 0x0559: 0x4036cc20, 0x055a: 0x00348288, 0x055b: 0x40348220,
+	0x055c: 0x00372e88, 0x055d: 0x40372e20, 0x055e: 0x00348088, 0x055f: 0x40348020,
+	0x0560: 0x00349888, 0x0561: 0x40349820, 0x0562: 0x0034da88, 0x0563: 0x4034da20,
+	0x0564: 0x00351688, 0x0565: 0x40351620, 0x0566: 0x0035dc88, 0x0567: 0x4035dc20,
+	0x0571: 0x00384288, 0x0572: 0x00384488, 0x0573: 0x00384688,
+	0x0574: 0x00384888, 0x0575: 0x00384a88, 0x0576: 0x00384c88, 0x0577: 0x00384e88,
+	0x0578: 0x00385088, 0x0579: 0x00385288, 0x057a: 0x00385488, 0x057b: 0x00385688,
+	0x057c: 0x00385888, 0x057d: 0x00385a88, 0x057e: 0x00385c88, 0x057f: 0x00385e88,
+	// Block 0x16, offset 0x580
+	0x0580: 0x00386088, 0x0581: 0x00386288, 0x0582: 0x00386488, 0x0583: 0x00386688,
+	0x0584: 0x00386888, 0x0585: 0x00386a88, 0x0586: 0x00386c88, 0x0587: 0x00386e88,
+	0x0588: 0x00387088, 0x0589: 0x00387288, 0x058a: 0x00387488, 0x058b: 0x00387688,
+	0x058c: 0x00387888, 0x058d: 0x00387a88, 0x058e: 0x00387c88, 0x058f: 0x00387e88,
+	0x0590: 0x00388088, 0x0591: 0x00388288, 0x0592: 0x00388488, 0x0593: 0x00388688,
+	0x0594: 0x00388888, 0x0595: 0x00388a88, 0x0596: 0x00388c88,
+	0x0599: 0x40388e20, 0x059a: 0x40054e20, 0x059b: 0x40055020,
+	0x059c: 0x4002be20, 0x059d: 0x40024620, 0x059e: 0x4002ca20, 0x059f: 0x40055220,
+	0x05a1: 0x40384220, 0x05a2: 0x40384420, 0x05a3: 0x40384620,
+	0x05a4: 0x40384820, 0x05a5: 0x40384a20, 0x05a6: 0x40384c20, 0x05a7: 0x40384e20,
+	0x05a8: 0x40385020, 0x05a9: 0x40385220, 0x05aa: 0x40385420, 0x05ab: 0x40385620,
+	0x05ac: 0x40385820, 0x05ad: 0x40385a20, 0x05ae: 0x40385c20, 0x05af: 0x40385e20,
+	0x05b0: 0x40386020, 0x05b1: 0x40386220, 0x05b2: 0x40386420, 0x05b3: 0x40386620,
+	0x05b4: 0x40386820, 0x05b5: 0x40386a20, 0x05b6: 0x40386c20, 0x05b7: 0x40386e20,
+	0x05b8: 0x40387020, 0x05b9: 0x40387220, 0x05ba: 0x40387420, 0x05bb: 0x40387620,
+	0x05bc: 0x40387820, 0x05bd: 0x40387a20, 0x05be: 0x40387c20, 0x05bf: 0x40387e20,
+	// Block 0x17, offset 0x5c0
+	0x05c0: 0x40388020, 0x05c1: 0x40388220, 0x05c2: 0x40388420, 0x05c3: 0x40388620,
+	0x05c4: 0x40388820, 0x05c5: 0x40388a20, 0x05c6: 0x40388c20, 0x05c7: 0xf0000404,
+	0x05c9: 0x40026e20, 0x05ca: 0x40021c20,
+	0x05cf: 0x4027e420,
+	0x05d1: 0xadc00000, 0x05d2: 0xae600000, 0x05d3: 0xae600000,
+	0x05d4: 0xae600000, 0x05d5: 0xae600000, 0x05d6: 0xadc00000, 0x05d7: 0xae600000,
+	0x05d8: 0xae600000, 0x05d9: 0xae600000, 0x05da: 0xade00000, 0x05db: 0xadc00000,
+	0x05dc: 0xae600000, 0x05dd: 0xae600000, 0x05de: 0xae600000, 0x05df: 0xae600000,
+	0x05e0: 0xae600000, 0x05e1: 0xae600000, 0x05e2: 0xadc00000, 0x05e3: 0xadc00000,
+	0x05e4: 0xadc00000, 0x05e5: 0xadc00000, 0x05e6: 0xadc00000, 0x05e7: 0xadc00000,
+	0x05e8: 0xae600000, 0x05e9: 0xae600000, 0x05ea: 0xadc00000, 0x05eb: 0xae600000,
+	0x05ec: 0xae600000, 0x05ed: 0xade00000, 0x05ee: 0xae400000, 0x05ef: 0xae600000,
+	0x05f0: 0xa0a08502, 0x05f1: 0xa0b08602, 0x05f2: 0xa0c08702, 0x05f3: 0xa0d08802,
+	0x05f4: 0xa0e08902, 0x05f5: 0xa0f08a02, 0x05f6: 0xa1008b02, 0x05f7: 0xa1108c02,
+	0x05f8: 0xa1208d02, 0x05f9: 0xa1308e02, 0x05fa: 0xa1308e02, 0x05fb: 0xa1408f02,
+	0x05fc: 0xa1509202, 0x05fd: 0xa1600000, 0x05fe: 0x40055420, 0x05ff: 0xa1709502,
+	// Block 0x18, offset 0x600
+	0x0600: 0x40055620, 0x0601: 0xa1809102, 0x0602: 0xa1909002, 0x0603: 0x40055820,
+	0x0604: 0xae600000, 0x0605: 0xadc00000, 0x0606: 0x40055a20, 0x0607: 0xa1208d02,
+	0x0610: 0x40389020, 0x0611: 0x40389220, 0x0612: 0x40389420, 0x0613: 0x40389620,
+	0x0614: 0x40389820, 0x0615: 0x40389a20, 0x0616: 0x40389c20, 0x0617: 0x40389e20,
+	0x0618: 0x4038a020, 0x0619: 0x4038a220, 0x061a: 0x0038a499, 0x061b: 0x4038a420,
+	0x061c: 0x4038a620, 0x061d: 0x0038a899, 0x061e: 0x4038a820, 0x061f: 0x0038aa99,
+	0x0620: 0x4038aa20, 0x0621: 0x4038ac20, 0x0622: 0x4038ae20, 0x0623: 0x0038b099,
+	0x0624: 0x4038b020, 0x0625: 0x0038b299, 0x0626: 0x4038b220, 0x0627: 0x4038b420,
+	0x0628: 0x4038b620, 0x0629: 0x4038b820, 0x062a: 0x4038ba20,
+	0x0630: 0xe00014ff, 0x0631: 0xe0001502, 0x0632: 0xe0001511, 0x0633: 0x40055c20,
+	0x0634: 0x40055e20,
+	// Block 0x19, offset 0x640
+	0x0640: 0xa0000000, 0x0641: 0xa0000000, 0x0642: 0xa0000000, 0x0643: 0xa0000000,
+	0x0644: 0xa0000000, 0x0646: 0x40096620, 0x0647: 0x40096a20,
+	0x0648: 0x40070820, 0x0649: 0x4004f220, 0x064a: 0x4004f620, 0x064b: 0x4027e620,
+	0x064c: 0x40024820, 0x064d: 0x40024a20, 0x064e: 0x40070e20, 0x064f: 0x40071020,
+	0x0650: 0xae600000, 0x0651: 0xae600000, 0x0652: 0xae600000, 0x0653: 0xae600000,
+	0x0654: 0xae600000, 0x0655: 0xae600000, 0x0656: 0xae600000, 0x0657: 0xae600000,
+	0x0658: 0xa1e00000, 0x0659: 0xa1f00000, 0x065a: 0xa2000000, 0x065b: 0x40026420,
+	0x065e: 0x40027020, 0x065f: 0x4002cc20,
+	0x0660: 0x403aa220, 0x0661: 0x40391c20, 0x0662: 0x40391e20, 0x0663: 0x40392020,
+	0x0664: 0x40392620, 0x0665: 0x40392820, 0x0666: 0x40393020, 0x0667: 0xc0520151,
+	0x0668: 0x40393c20, 0x0669: 0x40395420, 0x066a: 0x40395620, 0x066b: 0x40395820,
+	0x066c: 0x40396420, 0x066d: 0x40397220, 0x066e: 0x40397420, 0x066f: 0x40398820,
+	0x0670: 0x40398a20, 0x0671: 0x4039a420, 0x0672: 0x4039a620, 0x0673: 0x4039c620,
+	0x0674: 0x4039c820, 0x0675: 0x4039dc20, 0x0676: 0x4039de20, 0x0677: 0x4039e620,
+	0x0678: 0x4039e820, 0x0679: 0x4039ee20, 0x067a: 0x4039f020, 0x067b: 0x403a3820,
+	0x067c: 0x403a3a20, 0x067d: 0x403a9c20, 0x067e: 0x403a9e20, 0x067f: 0x403aa020,
+	// Block 0x1a, offset 0x680
+	0x0680: 0xa0000000, 0x0681: 0x4039fc20, 0x0682: 0x403a1220, 0x0683: 0x403a1a20,
+	0x0684: 0x403a4020, 0x0685: 0x403a4e20, 0x0686: 0x403a5620, 0x0687: 0x403a6820,
+	0x0688: 0xc0560171, 0x0689: 0x403a8e20, 0x068a: 0xc0580171, 0x068b: 0xa1b0a202,
+	0x068c: 0xa1c0a502, 0x068d: 0xa1d0a902, 0x068e: 0xa1e0ad02, 0x068f: 0xa1f0b202,
+	0x0690: 0xa200b602, 0x0691: 0xa210ba02, 0x0692: 0xa220bc02, 0x0693: 0xae60bd02,
+	0x0694: 0xae60be02, 0x0695: 0xadc0bf02, 0x0696: 0xadc0c102, 0x0697: 0xae60c202,
+	0x0698: 0xae60c302, 0x0699: 0xae60c402, 0x069a: 0xae60c502, 0x069b: 0xae60c602,
+	0x069c: 0xadc0c702, 0x069d: 0xae60c802, 0x069e: 0xae60c902, 0x069f: 0xadc0c002,
+	0x06a0: 0xe000015e, 0x06a1: 0xe00001e6, 0x06a2: 0xe0000301, 0x06a3: 0xe00003db,
+	0x06a4: 0xe00004b6, 0x06a5: 0xe0000580, 0x06a6: 0xe000064b, 0x06a7: 0xe00006f3,
+	0x06a8: 0xe000079f, 0x06a9: 0xe0000844, 0x06aa: 0x4004ee20, 0x06ab: 0x40024c20,
+	0x06ac: 0x40024e20, 0x06ad: 0x4004de20, 0x06ae: 0x40393a20, 0x06af: 0x403a1020,
+	0x06b0: 0xa230d102, 0x06b1: 0x40392420, 0x06b2: 0x40392220, 0x06b3: 0x40392a20,
+	0x06b4: 0x00391c84, 0x06b5: 0xf0000404, 0x06b6: 0xf0000404, 0x06b7: 0xf0000404,
+	0x06b8: 0xf0000404, 0x06b9: 0x40395a20, 0x06ba: 0x40395c20, 0x06bb: 0x40393e20,
+	0x06bc: 0x40395e20, 0x06bd: 0x40396020, 0x06be: 0x40394020, 0x06bf: 0x40396220,
+	// Block 0x1b, offset 0x6c0
+	0x06c0: 0x40394220, 0x06c1: 0x40397620, 0x06c2: 0x40397820, 0x06c3: 0x40396620,
+	0x06c4: 0x40396820, 0x06c5: 0x40397a20, 0x06c6: 0x40396a20, 0x06c7: 0x40396e20,
+	0x06c8: 0x40398c20, 0x06c9: 0x40398e20, 0x06ca: 0x40399020, 0x06cb: 0x40399220,
+	0x06cc: 0x40399420, 0x06cd: 0x40399620, 0x06ce: 0x40399820, 0x06cf: 0x40399a20,
+	0x06d0: 0x40399c20, 0x06d1: 0x4039a820, 0x06d2: 0x4039aa20, 0x06d3: 0x4039ac20,
+	0x06d4: 0x4039ae20, 0x06d5: 0x4039b020, 0x06d6: 0x4039b220, 0x06d7: 0x4039b420,
+	0x06d8: 0x4039b620, 0x06d9: 0x4039b820, 0x06da: 0x4039ca20, 0x06db: 0x4039cc20,
+	0x06dc: 0x4039ce20, 0x06dd: 0x4039e020, 0x06de: 0x4039e220, 0x06df: 0x4039ea20,
+	0x06e0: 0x4039f220, 0x06e1: 0x4039fe20, 0x06e2: 0x403a0020, 0x06e3: 0x403a0220,
+	0x06e4: 0x403a0420, 0x06e5: 0x403a0820, 0x06e6: 0x403a0a20, 0x06e7: 0x403a1420,
+	0x06e8: 0x403a1620, 0x06e9: 0x403a1c20, 0x06ea: 0x403a1e20, 0x06eb: 0x403a2020,
+	0x06ec: 0x403a2220, 0x06ed: 0x403a2620, 0x06ee: 0x403a2820, 0x06ef: 0x403a2a20,
+	0x06f0: 0x403a2c20, 0x06f1: 0x403a2e20, 0x06f2: 0x403a3020, 0x06f3: 0x403a3220,
+	0x06f4: 0x403a3420, 0x06f5: 0x403a4220, 0x06f6: 0x403a4420, 0x06f7: 0x403a4620,
+	0x06f8: 0x403a4820, 0x06f9: 0x403a6020, 0x06fa: 0x403a5820, 0x06fb: 0x403a5a20,
+	0x06fc: 0x403a5c20, 0x06fd: 0x403a5e20, 0x06fe: 0x403a6a20, 0x06ff: 0x40396c20,
+	// Block 0x1c, offset 0x700
+	0x0700: 0xe00017e4, 0x0701: 0x403a6c20, 0x0702: 0xe00017e1, 0x0703: 0x403a6e20,
+	0x0704: 0x403a7620, 0x0705: 0x403a7820, 0x0706: 0x403a7a20, 0x0707: 0x403a7c20,
+	0x0708: 0x403a7e20, 0x0709: 0x403a8020, 0x070a: 0x403a8220, 0x070b: 0x403a8420,
+	0x070c: 0x403a9220, 0x070d: 0x403a9420, 0x070e: 0x403a9620, 0x070f: 0x403a8620,
+	0x0710: 0x403a9820, 0x0711: 0x403a9a20, 0x0712: 0x403aaa20, 0x0713: 0xe0001800,
+	0x0714: 0x4002e820, 0x0715: 0x403a7220, 0x0716: 0xae600000, 0x0717: 0xae600000,
+	0x0718: 0xae600000, 0x0719: 0xae600000, 0x071a: 0xae600000, 0x071b: 0xae600000,
+	0x071c: 0xae600000, 0x071d: 0xa0000000, 0x071e: 0x40071220, 0x071f: 0xae600000,
+	0x0720: 0xae600000, 0x0721: 0xae600000, 0x0722: 0xae600000, 0x0723: 0xadc00000,
+	0x0724: 0xae600000, 0x0725: 0x003a7484, 0x0726: 0x003a9084, 0x0727: 0xae600000,
+	0x0728: 0xae600000, 0x0729: 0x40071420, 0x072a: 0xadc00000, 0x072b: 0xae600000,
+	0x072c: 0xae600000, 0x072d: 0xadc00000, 0x072e: 0x40399e20, 0x072f: 0x4039ba20,
+	0x0730: 0xe0000161, 0x0731: 0xe00001e9, 0x0732: 0xe0000304, 0x0733: 0xe00003de,
+	0x0734: 0xe00004b9, 0x0735: 0xe0000583, 0x0736: 0xe000064e, 0x0737: 0xe00006f6,
+	0x0738: 0xe00007a2, 0x0739: 0xe0000847, 0x073a: 0x4039d020, 0x073b: 0x4039e420,
+	0x073c: 0x4039f420, 0x073d: 0xe0001553, 0x073e: 0xe0001779, 0x073f: 0x403a7020,
+	// Block 0x1d, offset 0x740
+	0x0740: 0x40035c20, 0x0741: 0x4002ea20, 0x0742: 0x4002ec20, 0x0743: 0x40027220,
+	0x0744: 0x40027420, 0x0745: 0x40027620, 0x0746: 0x40027820, 0x0747: 0x40027a20,
+	0x0748: 0x40027c20, 0x0749: 0x4002ce20, 0x074a: 0x40056020, 0x074b: 0x40056220,
+	0x074c: 0x40056420, 0x074d: 0x40056620, 0x074f: 0xa0000000,
+	0x0750: 0x403ab020, 0x0751: 0xa240d202, 0x0752: 0x403ab220, 0x0753: 0x403ab420,
+	0x0754: 0xe0001806, 0x0755: 0x403ab820, 0x0756: 0x403ab620, 0x0757: 0x403aba20,
+	0x0758: 0x403abc20, 0x0759: 0x403abe20, 0x075a: 0x403ac220, 0x075b: 0x403ac420,
+	0x075c: 0xe000180f, 0x075d: 0x403ac620, 0x075e: 0x403ac820, 0x075f: 0x403aca20,
+	0x0760: 0x403ace20, 0x0761: 0x403ad020, 0x0762: 0x403ad220, 0x0763: 0x403ad420,
+	0x0764: 0x003ad499, 0x0765: 0x403ad620, 0x0766: 0x403ad820, 0x0767: 0xe0001812,
+	0x0768: 0x403adc20, 0x0769: 0x403ade20, 0x076a: 0x403ae020, 0x076b: 0x403ae220,
+	0x076c: 0x403ae420, 0x076d: 0xe0001803, 0x076e: 0xe0001809, 0x076f: 0xe000180c,
+	0x0770: 0xae60d302, 0x0771: 0xadc0d402, 0x0772: 0xae60d502, 0x0773: 0xae60d602,
+	0x0774: 0xadc0d702, 0x0775: 0xae60d802, 0x0776: 0xae60d902, 0x0777: 0xadc0da02,
+	0x0778: 0xadc0db02, 0x0779: 0xadc0dc02, 0x077a: 0xae60dd02, 0x077b: 0xadc0de02,
+	0x077c: 0xadc0df02, 0x077d: 0xae60e002, 0x077e: 0xadc0e102, 0x077f: 0xae60e202,
+	// Block 0x1e, offset 0x780
+	0x0780: 0xae600000, 0x0781: 0xae605f02, 0x0782: 0xadc06002, 0x0783: 0xae600000,
+	0x0784: 0xadc00000, 0x0785: 0xae605f02, 0x0786: 0xadc06002, 0x0787: 0xae600000,
+	0x0788: 0xadc00000, 0x0789: 0xae600000, 0x078a: 0xae600000,
+	0x078d: 0x403ac020, 0x078e: 0x403acc20, 0x078f: 0x403ada20,
+	0x0790: 0x40394420, 0x0791: 0x40394620, 0x0792: 0x40394820, 0x0793: 0x40394a20,
+	0x0794: 0x40394c20, 0x0795: 0x40394e20, 0x0796: 0x40395220, 0x0797: 0x40397c20,
+	0x0798: 0x40397e20, 0x0799: 0x4039a020, 0x079a: 0x4039a220, 0x079b: 0x4039bc20,
+	0x079c: 0x4039d220, 0x079d: 0x4039f620, 0x079e: 0x4039f820, 0x079f: 0x4039fa20,
+	0x07a0: 0x403a0c20, 0x07a1: 0x403a0e20, 0x07a2: 0x403a3620, 0x07a3: 0x403a3c20,
+	0x07a4: 0x403a3e20, 0x07a5: 0x403a5020, 0x07a6: 0x403a5220, 0x07a7: 0x403a6220,
+	0x07a8: 0x403a6420, 0x07a9: 0x403a6620, 0x07aa: 0x403a4a20, 0x07ab: 0x4039be20,
+	0x07ac: 0x4039c020, 0x07ad: 0x4039d420, 0x07ae: 0x40398020, 0x07af: 0x40398220,
+	0x07b0: 0x4039d620, 0x07b1: 0x4039c220, 0x07b2: 0x40398420, 0x07b3: 0x40392c20,
+	0x07b4: 0x40392e20, 0x07b5: 0x403aa420, 0x07b6: 0x403aa620, 0x07b7: 0x403aa820,
+	0x07b8: 0x403a8820, 0x07b9: 0x403a8a20, 0x07ba: 0x403aac20, 0x07bb: 0x403aae20,
+	0x07bc: 0x40398620, 0x07bd: 0x4039d820, 0x07be: 0x4039da20, 0x07bf: 0x403a2420,
+	// Block 0x1f, offset 0x7c0
+	0x07c0: 0x403b1820, 0x07c1: 0x403b1e20, 0x07c2: 0x403b2020, 0x07c3: 0x403b2220,
+	0x07c4: 0x403b2620, 0x07c5: 0x403b2820, 0x07c6: 0x403b2a20, 0x07c7: 0x403b2c20,
+	0x07c8: 0x403b3220, 0x07c9: 0x403b3620, 0x07ca: 0x403b3820, 0x07cb: 0x403b3a20,
+	0x07cc: 0x403b3e20, 0x07cd: 0x403b4620, 0x07ce: 0x403b4820, 0x07cf: 0x403b4c20,
+	0x07d0: 0x403b4e20, 0x07d1: 0x403b5620, 0x07d2: 0x403b5820, 0x07d3: 0x403b5a20,
+	0x07d4: 0x403b5c20, 0x07d5: 0x403b5e20, 0x07d6: 0x403b6020, 0x07d7: 0x403b6220,
+	0x07d8: 0x403b4020, 0x07d9: 0x403b1a20, 0x07da: 0x403b1c20, 0x07db: 0x403b3c20,
+	0x07dc: 0x403b2420, 0x07dd: 0x403b5020, 0x07de: 0x403b5220, 0x07df: 0x403b5420,
+	0x07e0: 0x403b4220, 0x07e1: 0x403b4420, 0x07e2: 0x403b2e20, 0x07e3: 0x403b3020,
+	0x07e4: 0x403b4a20, 0x07e5: 0x403b3420, 0x07e6: 0x403b6620, 0x07e7: 0x403b6820,
+	0x07e8: 0x403b6a20, 0x07e9: 0x403b6c20, 0x07ea: 0x403b6e20, 0x07eb: 0x403b7020,
+	0x07ec: 0x403b7220, 0x07ed: 0x403b7420, 0x07ee: 0x403b7620, 0x07ef: 0x403b7820,
+	0x07f0: 0x403b7a20, 0x07f1: 0x403b6420,
+	// Block 0x20, offset 0x800
+	0x0800: 0xe0000164, 0x0801: 0xe00001ef, 0x0802: 0xe000030a, 0x0803: 0xe00003e4,
+	0x0804: 0xe00004bf, 0x0805: 0xe0000589, 0x0806: 0xe0000654, 0x0807: 0xe00006fc,
+	0x0808: 0xe00007a8, 0x0809: 0xe000084d, 0x080a: 0x403b7c20, 0x080b: 0x403b7e20,
+	0x080c: 0x403b8020, 0x080d: 0x403b8220, 0x080e: 0x403b8420, 0x080f: 0x403b8620,
+	0x0810: 0x403b8820, 0x0811: 0x403b8a20, 0x0812: 0x403b8c20, 0x0813: 0x403b8e20,
+	0x0814: 0x403b9020, 0x0815: 0x403b9220, 0x0816: 0x403b9420, 0x0817: 0x403b9620,
+	0x0818: 0x403b9820, 0x0819: 0x403b9a20, 0x081a: 0x403b9c20, 0x081b: 0x403b9e20,
+	0x081c: 0x403ba020, 0x081d: 0x403ba220, 0x081e: 0x403ba420, 0x081f: 0x403ba620,
+	0x0820: 0x403ba820, 0x0821: 0x403baa20, 0x0822: 0x403bac20, 0x0823: 0x403bae20,
+	0x0824: 0x403bb020, 0x0825: 0x403bb220, 0x0826: 0x403bb420, 0x0827: 0x403bb620,
+	0x0828: 0xe0001815, 0x0829: 0xe0001818, 0x082a: 0xe000181b, 0x082b: 0xae60e302,
+	0x082c: 0xae60e402, 0x082d: 0xae60e502, 0x082e: 0xae60e602, 0x082f: 0xae60e702,
+	0x0830: 0xae60e802, 0x0831: 0xae60e902, 0x0832: 0xadc0ea02, 0x0833: 0xae60eb02,
+	0x0834: 0x403bb820, 0x0835: 0x403bba20, 0x0836: 0x40073820, 0x0837: 0x40035e20,
+	0x0838: 0x40025020, 0x0839: 0x4002c020, 0x083a: 0xa0000000,
+	// Block 0x21, offset 0x840
+	0x0840: 0x4038e820, 0x0841: 0x4038ea20, 0x0842: 0x4038ec20, 0x0843: 0x4038ee20,
+	0x0844: 0x4038f020, 0x0845: 0x4038f220, 0x0846: 0x4038f420, 0x0847: 0x4038f620,
+	0x0848: 0x4038f820, 0x0849: 0x4038fa20, 0x084a: 0x4038fc20, 0x084b: 0x4038fe20,
+	0x084c: 0x40390020, 0x084d: 0x40390220, 0x084e: 0x40390420, 0x084f: 0x40390620,
+	0x0850: 0x40390820, 0x0851: 0x40390a20, 0x0852: 0x40390c20, 0x0853: 0x40390e20,
+	0x0854: 0x40391020, 0x0855: 0x40391220, 0x0856: 0x82e61c8a, 0x0857: 0x82e61c8b,
+	0x0858: 0xae609f02, 0x0859: 0xae60a002, 0x085a: 0x40391820, 0x085b: 0x82e61c8d,
+	0x085c: 0xae609702, 0x085d: 0xae609702, 0x085e: 0xae609802, 0x085f: 0xae609802,
+	0x0860: 0xae609802, 0x0861: 0xae609902, 0x0862: 0xae609902, 0x0863: 0xae609902,
+	0x0864: 0xa0009a02, 0x0865: 0xae609a02, 0x0866: 0xae609b02, 0x0867: 0xae609b02,
+	0x0868: 0xa0009c02, 0x0869: 0xae609c02, 0x086a: 0xae609c02, 0x086b: 0xae609d02,
+	0x086c: 0xae609e02, 0x086d: 0xae60a102,
+	0x0870: 0x40027e20, 0x0871: 0x40028020, 0x0872: 0x40028220, 0x0873: 0x40028420,
+	0x0874: 0x40028620, 0x0875: 0x40028820, 0x0876: 0x40028a20, 0x0877: 0x40028c20,
+	0x0878: 0x40028e20, 0x0879: 0x40029020, 0x087a: 0x40029220, 0x087b: 0x40029420,
+	0x087c: 0x40029620, 0x087d: 0x40029820, 0x087e: 0x40029a20,
+	// Block 0x22, offset 0x880
+	0x0880: 0x403ae620, 0x0881: 0x403ae820, 0x0882: 0x403aea20, 0x0883: 0x403aec20,
+	0x0884: 0x403aee20, 0x0885: 0x403af020, 0x0886: 0x403af220, 0x0887: 0x403af420,
+	0x0888: 0x403af620, 0x0889: 0x403af820, 0x088a: 0x403afa20, 0x088b: 0x403afc20,
+	0x088c: 0x403afe20, 0x088d: 0x403b0020, 0x088e: 0x403b0220, 0x088f: 0x403b0420,
+	0x0890: 0x403b0620, 0x0891: 0x403b0820, 0x0892: 0x403b0a20, 0x0893: 0x403b0c20,
+	0x0894: 0x403b0e20, 0x0895: 0x403b1020, 0x0896: 0x403b1220, 0x0897: 0x403b1420,
+	0x0898: 0x403b1620, 0x0899: 0xadc06002, 0x089a: 0xadc06002, 0x089b: 0xadc06002,
+	0x089e: 0x40056820,
+	// Block 0x23, offset 0x8c0
+	0x08e0: 0x40395020, 0x08e2: 0x40397020, 0x08e3: 0x4039ec20,
+	0x08e4: 0x403a0620, 0x08e5: 0x403a1820, 0x08e6: 0x403a4c20, 0x08e7: 0x403a5420,
+	0x08e8: 0x40393220, 0x08e9: 0x40393420, 0x08ea: 0x4039c420, 0x08eb: 0x403a8c20,
+	0x08ec: 0x40393620,
+	// Block 0x24, offset 0x900
+	0x0924: 0xae60af02, 0x0925: 0xae60b402, 0x0926: 0xadc0b802, 0x0927: 0xae60a402,
+	0x0928: 0xae60a802, 0x0929: 0xadc0ac02, 0x092a: 0xae600000, 0x092b: 0xae600000,
+	0x092c: 0xae600000, 0x092d: 0xadc00000, 0x092e: 0xadc00000, 0x092f: 0xadc00000,
+	0x0930: 0xa1b0a302, 0x0931: 0xa1c0a702, 0x0932: 0xa1d0ab02, 0x0933: 0xae600000,
+	0x0934: 0xae60b002, 0x0935: 0xae60b102, 0x0936: 0xadc0b902, 0x0937: 0xae60ca02,
+	0x0938: 0xae60cb02, 0x0939: 0xadc0cf02, 0x093a: 0xadc0d002, 0x093b: 0xae60cd02,
+	0x093c: 0xae60ce02, 0x093d: 0xae60cc02, 0x093e: 0xae60b502,
+	// Block 0x25, offset 0x940
+	0x0940: 0xa000f202, 0x0941: 0xa000f202, 0x0942: 0xa000f302, 0x0943: 0xa000f402,
+	0x0944: 0x403fbc20, 0x0945: 0x403fbe20, 0x0946: 0x403fc020, 0x0947: 0x403fcc20,
+	0x0948: 0x403fce20, 0x0949: 0x403fd020, 0x094a: 0x403fd220, 0x094b: 0x403fd420,
+	0x094c: 0x403fd820, 0x094d: 0x403fdc20, 0x094e: 0x403fde20, 0x094f: 0x403fe020,
+	0x0950: 0x403fe220, 0x0951: 0x403fe420, 0x0952: 0x403fe620, 0x0953: 0x403fe820,
+	0x0954: 0x403fea20, 0x0955: 0x403fec20, 0x0956: 0x403fee20, 0x0957: 0x403ff020,
+	0x0958: 0x403ff420, 0x0959: 0x403ff620, 0x095a: 0x403ff820, 0x095b: 0x403ffa20,
+	0x095c: 0x403ffc20, 0x095d: 0x40400220, 0x095e: 0x40400420, 0x095f: 0x40400620,
+	0x0960: 0x40400820, 0x0961: 0x40400a20, 0x0962: 0x40400e20, 0x0963: 0x40401020,
+	0x0964: 0x40401220, 0x0965: 0x40401420, 0x0966: 0x40401620, 0x0967: 0x40401820,
+	0x0968: 0x40401a20, 0x0969: 0xe0001830, 0x096a: 0x40401c20, 0x096b: 0x40401e20,
+	0x096c: 0x40402020, 0x096d: 0x40402420, 0x096e: 0x40402620, 0x096f: 0x40402820,
+	0x0970: 0x40402c20, 0x0971: 0xe0001839, 0x0972: 0x40402e20, 0x0973: 0x40403020,
+	0x0974: 0xe000183c, 0x0975: 0x40403220, 0x0976: 0x40403420, 0x0977: 0x40403620,
+	0x0978: 0x40403820, 0x0979: 0x40403a20, 0x097a: 0x40404c20, 0x097b: 0x40404e20,
+	0x097c: 0xa070f102, 0x097d: 0x40403c20, 0x097e: 0x40404a20, 0x097f: 0x40405620,
+	// Block 0x26, offset 0x980
+	0x0980: 0x40405820, 0x0981: 0x40405a20, 0x0982: 0x40405c20, 0x0983: 0x40405e20,
+	0x0984: 0x40406020, 0x0985: 0x40406620, 0x0986: 0x40406a20, 0x0987: 0x40406c20,
+	0x0988: 0x40407020, 0x0989: 0x40407220, 0x098a: 0x40407420, 0x098b: 0x40407620,
+	0x098c: 0x40407820, 0x098d: 0x8209203d, 0x098e: 0x40406e20, 0x098f: 0x40405020,
+	0x0990: 0x403fb820, 0x0991: 0xae600000, 0x0992: 0xadc00000, 0x0993: 0xae603502,
+	0x0994: 0xae603202, 0x0995: 0x40406820, 0x0996: 0x40405220, 0x0997: 0x40405420,
+	0x0998: 0xe000181e, 0x0999: 0xe0001821, 0x099a: 0xe0001824, 0x099b: 0xe0001827,
+	0x099c: 0xe000182a, 0x099d: 0xe000182d, 0x099e: 0xe0001833, 0x099f: 0xe0001836,
+	0x09a0: 0x403fd620, 0x09a1: 0x403fda20, 0x09a2: 0x40406220, 0x09a3: 0x40406420,
+	0x09a4: 0x40030c20, 0x09a5: 0x40030e20, 0x09a6: 0xe000016a, 0x09a7: 0xe00001f8,
+	0x09a8: 0xe0000313, 0x09a9: 0xe00003ed, 0x09aa: 0xe00004c8, 0x09ab: 0xe0000592,
+	0x09ac: 0xe000065d, 0x09ad: 0xe0000705, 0x09ae: 0xe00007b1, 0x09af: 0xe0000856,
+	0x09b0: 0x40056c20, 0x09b1: 0x4027b620, 0x09b2: 0x403fba20, 0x09b3: 0x403fc220,
+	0x09b4: 0x403fc420, 0x09b5: 0x403fc620, 0x09b6: 0x403fc820, 0x09b7: 0x403fca20,
+	0x09b9: 0x403ffe20, 0x09ba: 0x40402a20, 0x09bb: 0x403ff220,
+	0x09bc: 0x40400020, 0x09bd: 0x40403e20, 0x09be: 0x40400c20, 0x09bf: 0x40402220,
+	// Block 0x27, offset 0x9c0
+	0x09c1: 0xa000f202, 0x09c2: 0xa000f302, 0x09c3: 0xa000f402,
+	0x09c5: 0x40407c20, 0x09c6: 0x40407e20, 0x09c7: 0x40408020,
+	0x09c8: 0x40408220, 0x09c9: 0x40408420, 0x09ca: 0x40408620, 0x09cb: 0x40408820,
+	0x09cc: 0x40408c20, 0x09cf: 0x40409020,
+	0x09d0: 0x40409220, 0x09d3: 0x40409420,
+	0x09d4: 0x40409620, 0x09d5: 0x40409820, 0x09d6: 0x40409a20, 0x09d7: 0x40409c20,
+	0x09d8: 0x40409e20, 0x09d9: 0x4040a020, 0x09da: 0x4040a220, 0x09db: 0x4040a420,
+	0x09dc: 0x4040a620, 0x09dd: 0x4040a820, 0x09de: 0x4040aa20, 0x09df: 0x4040ac20,
+	0x09e0: 0x4040ae20, 0x09e1: 0x4040b020, 0x09e2: 0x4040b220, 0x09e3: 0x4040b420,
+	0x09e4: 0x4040b620, 0x09e5: 0x4040b820, 0x09e6: 0x4040ba20, 0x09e7: 0x4040bc20,
+	0x09e8: 0x4040be20, 0x09ea: 0x4040c020, 0x09eb: 0x4040c220,
+	0x09ec: 0x4040c420, 0x09ed: 0x4040c620, 0x09ee: 0x4040c820, 0x09ef: 0x4040ca20,
+	0x09f0: 0x4040cc20, 0x09f2: 0x4040d020,
+	0x09f6: 0x4040d420, 0x09f7: 0x4040d620,
+	0x09f8: 0x4040d820, 0x09f9: 0x4040da20,
+	0x09fc: 0xa070f102, 0x09fd: 0x4040dc20, 0x09fe: 0x4040de20, 0x09ff: 0x4040e020,
+	// Block 0x28, offset 0xa00
+	0x0a00: 0x4040e220, 0x0a01: 0x4040e420, 0x0a02: 0x4040e620, 0x0a03: 0x4040e820,
+	0x0a04: 0x4040ea20, 0x0a07: 0xc05a0191,
+	0x0a08: 0x4040f220, 0x0a0b: 0x4040f420,
+	0x0a0c: 0x4040f620, 0x0a0d: 0x8209207c, 0x0a0e: 0xe0001845,
+	0x0a17: 0x4040fa20,
+	0x0a1c: 0xe000183f, 0x0a1d: 0xe0001842, 0x0a1f: 0xe0001848,
+	0x0a20: 0x40408a20, 0x0a21: 0x40408e20, 0x0a22: 0x4040ec20, 0x0a23: 0x4040ee20,
+	0x0a26: 0xe000016d, 0x0a27: 0xe00001fb,
+	0x0a28: 0xe0000316, 0x0a29: 0xe00003f0, 0x0a2a: 0xe00004cb, 0x0a2b: 0xe0000595,
+	0x0a2c: 0xe0000660, 0x0a2d: 0xe0000708, 0x0a2e: 0xe00007b4, 0x0a2f: 0xe0000859,
+	0x0a30: 0x4040ce20, 0x0a31: 0x4040d220, 0x0a32: 0x4027e820, 0x0a33: 0x4027ea20,
+	0x0a34: 0x40283020, 0x0a35: 0x40283220, 0x0a36: 0x40283420, 0x0a37: 0x40283620,
+	0x0a38: 0x40283820, 0x0a39: 0x40283a20, 0x0a3a: 0x40073a20, 0x0a3b: 0x4027ec20,
+	// Block 0x29, offset 0xa40
+	0x0a41: 0xa000f202, 0x0a42: 0xa000f302, 0x0a43: 0xa000f402,
+	0x0a45: 0x40410620, 0x0a46: 0x40410820, 0x0a47: 0x40411020,
+	0x0a48: 0x40411220, 0x0a49: 0x40410020, 0x0a4a: 0x40410220,
+	0x0a4f: 0x40411420,
+	0x0a50: 0x40410a20, 0x0a53: 0x40410420,
+	0x0a54: 0x40410c20, 0x0a55: 0x40411c20, 0x0a56: 0x40411e20, 0x0a57: 0x40412020,
+	0x0a58: 0x40412220, 0x0a59: 0x40412420, 0x0a5a: 0x40412620, 0x0a5b: 0x40412820,
+	0x0a5c: 0x40412a20, 0x0a5d: 0x40412c20, 0x0a5e: 0x40412e20, 0x0a5f: 0x40413020,
+	0x0a60: 0x40413220, 0x0a61: 0x40413420, 0x0a62: 0x40413620, 0x0a63: 0x40413820,
+	0x0a64: 0x40413a20, 0x0a65: 0x40413c20, 0x0a66: 0x40413e20, 0x0a67: 0x40414020,
+	0x0a68: 0x40414220, 0x0a6a: 0x40414420, 0x0a6b: 0x40414620,
+	0x0a6c: 0x40414820, 0x0a6d: 0x40414a20, 0x0a6e: 0x40414c20, 0x0a6f: 0x40414e20,
+	0x0a70: 0x40415220, 0x0a72: 0x40415420, 0x0a73: 0xe000185a,
+	0x0a75: 0x40415620, 0x0a76: 0xe000184b,
+	0x0a78: 0x40411620, 0x0a79: 0x40411820,
+	0x0a7c: 0xa070f102, 0x0a7e: 0x40415a20, 0x0a7f: 0x40415c20,
+	// Block 0x2a, offset 0xa80
+	0x0a80: 0x40415e20, 0x0a81: 0x40416020, 0x0a82: 0x40416220,
+	0x0a87: 0x40416420,
+	0x0a88: 0x40416620, 0x0a8b: 0x40416820,
+	0x0a8c: 0x40416a20, 0x0a8d: 0x820920b6,
+	0x0a91: 0x40411a20,
+	0x0a99: 0xe000184e, 0x0a9a: 0xe0001851, 0x0a9b: 0xe0001854,
+	0x0a9c: 0x40415820, 0x0a9e: 0xe0001857,
+	0x0aa6: 0xe0000170, 0x0aa7: 0xe00001fe,
+	0x0aa8: 0xe0000319, 0x0aa9: 0xe00003f3, 0x0aaa: 0xe00004ce, 0x0aab: 0xe0000598,
+	0x0aac: 0xe0000663, 0x0aad: 0xe000070b, 0x0aae: 0xe00007b7, 0x0aaf: 0xe000085c,
+	0x0ab0: 0xa000f502, 0x0ab1: 0xa000f602, 0x0ab2: 0x40410e20, 0x0ab3: 0x4040fe20,
+	0x0ab4: 0x4040fc20, 0x0ab5: 0x40415020,
+	// Block 0x2b, offset 0xac0
+	0x0ac1: 0xa000f202, 0x0ac2: 0xa000f302, 0x0ac3: 0xa000f402,
+	0x0ac5: 0x40417020, 0x0ac6: 0x40417220, 0x0ac7: 0x40417420,
+	0x0ac8: 0x40417620, 0x0ac9: 0x40417820, 0x0aca: 0x40417a20, 0x0acb: 0x40417c20,
+	0x0acc: 0x40418020, 0x0acd: 0x40418420, 0x0acf: 0x40418620,
+	0x0ad0: 0x40418820, 0x0ad1: 0x40418a20, 0x0ad3: 0x40418c20,
+	0x0ad4: 0x40418e20, 0x0ad5: 0x40419020, 0x0ad6: 0x40419220, 0x0ad7: 0x40419420,
+	0x0ad8: 0x40419620, 0x0ad9: 0x40419820, 0x0ada: 0x40419a20, 0x0adb: 0x40419c20,
+	0x0adc: 0x40419e20, 0x0add: 0x4041a020, 0x0ade: 0x4041a220, 0x0adf: 0x4041a420,
+	0x0ae0: 0x4041a620, 0x0ae1: 0x4041a820, 0x0ae2: 0x4041aa20, 0x0ae3: 0x4041ac20,
+	0x0ae4: 0x4041ae20, 0x0ae5: 0x4041b020, 0x0ae6: 0x4041b220, 0x0ae7: 0x4041b420,
+	0x0ae8: 0x4041b620, 0x0aea: 0x4041b820, 0x0aeb: 0x4041ba20,
+	0x0aec: 0x4041bc20, 0x0aed: 0x4041be20, 0x0aee: 0x4041c020, 0x0aef: 0x4041c220,
+	0x0af0: 0x4041c420, 0x0af2: 0x4041c620, 0x0af3: 0x4041d220,
+	0x0af5: 0x4041c820, 0x0af6: 0x4041ca20, 0x0af7: 0x4041cc20,
+	0x0af8: 0x4041ce20, 0x0af9: 0x4041d020,
+	0x0afc: 0xa070f102, 0x0afd: 0x4041d420, 0x0afe: 0x4041d620, 0x0aff: 0x4041d820,
+	// Block 0x2c, offset 0xb00
+	0x0b00: 0x4041da20, 0x0b01: 0x4041dc20, 0x0b02: 0x4041de20, 0x0b03: 0x4041e020,
+	0x0b04: 0x4041e220, 0x0b05: 0x4041e820, 0x0b07: 0x4041ea20,
+	0x0b08: 0x4041ec20, 0x0b09: 0x4041ee20, 0x0b0b: 0x4041f020,
+	0x0b0c: 0x4041f220, 0x0b0d: 0x820920fa,
+	0x0b10: 0x40416e20,
+	0x0b20: 0x40417e20, 0x0b21: 0x40418220, 0x0b22: 0x4041e420, 0x0b23: 0x4041e620,
+	0x0b26: 0xe0000173, 0x0b27: 0xe0000201,
+	0x0b28: 0xe000031c, 0x0b29: 0xe00003f6, 0x0b2a: 0xe00004d1, 0x0b2b: 0xe000059b,
+	0x0b2c: 0xe0000666, 0x0b2d: 0xe000070e, 0x0b2e: 0xe00007ba, 0x0b2f: 0xe000085f,
+	0x0b30: 0x40057420, 0x0b31: 0x4027ee20,
+	// Block 0x2d, offset 0xb40
+	0x0b41: 0xa000f202, 0x0b42: 0xa000f302, 0x0b43: 0xa000f402,
+	0x0b45: 0x4041f620, 0x0b46: 0x4041f820, 0x0b47: 0x4041fa20,
+	0x0b48: 0x4041fc20, 0x0b49: 0x4041fe20, 0x0b4a: 0x40420020, 0x0b4b: 0x40420220,
+	0x0b4c: 0x40420620, 0x0b4f: 0x40420a20,
+	0x0b50: 0x40420c20, 0x0b53: 0x40420e20,
+	0x0b54: 0x40421020, 0x0b55: 0x40421220, 0x0b56: 0x40421420, 0x0b57: 0x40421620,
+	0x0b58: 0x40421820, 0x0b59: 0x40421a20, 0x0b5a: 0x40421c20, 0x0b5b: 0x40421e20,
+	0x0b5c: 0x40422020, 0x0b5d: 0x40422220, 0x0b5e: 0x40422420, 0x0b5f: 0x40422620,
+	0x0b60: 0x40422820, 0x0b61: 0x40422a20, 0x0b62: 0x40422c20, 0x0b63: 0x40422e20,
+	0x0b64: 0x40423020, 0x0b65: 0x40423220, 0x0b66: 0x40423420, 0x0b67: 0x40423620,
+	0x0b68: 0x40423820, 0x0b6a: 0x40423a20, 0x0b6b: 0x40423c20,
+	0x0b6c: 0x40423e20, 0x0b6d: 0x40424020, 0x0b6e: 0x40424220, 0x0b6f: 0x40424420,
+	0x0b70: 0x40424820, 0x0b72: 0x40424a20, 0x0b73: 0x40424c20,
+	0x0b75: 0x40424e20, 0x0b76: 0x40425220, 0x0b77: 0x40425420,
+	0x0b78: 0x40425620, 0x0b79: 0x40425820,
+	0x0b7c: 0xa070f102, 0x0b7d: 0x40425a20, 0x0b7e: 0x40425c20, 0x0b7f: 0x40425e20,
+	// Block 0x2e, offset 0xb80
+	0x0b80: 0x40426020, 0x0b81: 0x40426220, 0x0b82: 0x40426420, 0x0b83: 0x40426620,
+	0x0b84: 0x40426820, 0x0b87: 0xc05d01e1,
+	0x0b88: 0x40427020, 0x0b8b: 0x40427220,
+	0x0b8c: 0x40427420, 0x0b8d: 0x8209213b,
+	0x0b96: 0x40427820, 0x0b97: 0x40427a20,
+	0x0b9c: 0xe000185d, 0x0b9d: 0xe0001860, 0x0b9f: 0x40424620,
+	0x0ba0: 0x40420420, 0x0ba1: 0x40420820, 0x0ba2: 0x40426a20, 0x0ba3: 0x40426c20,
+	0x0ba6: 0xe0000176, 0x0ba7: 0xe0000204,
+	0x0ba8: 0xe000031f, 0x0ba9: 0xe00003f9, 0x0baa: 0xe00004d4, 0x0bab: 0xe000059e,
+	0x0bac: 0xe0000669, 0x0bad: 0xe0000711, 0x0bae: 0xe00007bd, 0x0baf: 0xe0000862,
+	0x0bb0: 0x40073c20, 0x0bb1: 0x40425020, 0x0bb2: 0x40283c20, 0x0bb3: 0x40283e20,
+	0x0bb4: 0x40284020, 0x0bb5: 0x40284220, 0x0bb6: 0x40284420, 0x0bb7: 0x40284620,
+	// Block 0x2f, offset 0xbc0
+	0x0bc2: 0xa000f302, 0x0bc3: 0x40429620,
+	0x0bc5: 0x40427e20, 0x0bc6: 0x40428020, 0x0bc7: 0x40428220,
+	0x0bc8: 0x40428420, 0x0bc9: 0x40428620, 0x0bca: 0x40428820,
+	0x0bce: 0x40428a20, 0x0bcf: 0x40428c20,
+	0x0bd0: 0x40428e20, 0x0bd2: 0xc0610231, 0x0bd3: 0x40429220,
+	0x0bd4: 0x40429420, 0x0bd5: 0x40429820,
+	0x0bd9: 0x40429a20, 0x0bda: 0x40429c20,
+	0x0bdc: 0x4042bc20, 0x0bde: 0x40429e20, 0x0bdf: 0x4042a020,
+	0x0be3: 0x4042a220,
+	0x0be4: 0x4042a420,
+	0x0be8: 0x4042a620, 0x0be9: 0x4042ba20, 0x0bea: 0x4042a820,
+	0x0bee: 0x4042aa20, 0x0bef: 0x4042ac20,
+	0x0bf0: 0x4042ae20, 0x0bf1: 0x4042b820, 0x0bf2: 0x4042b020, 0x0bf3: 0x4042b620,
+	0x0bf4: 0x4042b420, 0x0bf5: 0x4042b220, 0x0bf6: 0x4042be20, 0x0bf7: 0x4042c020,
+	0x0bf8: 0x4042c220, 0x0bf9: 0x4042c420,
+	0x0bfe: 0x4042c620, 0x0bff: 0x4042c820,
+	// Block 0x30, offset 0xc00
+	0x0c00: 0x4042ca20, 0x0c01: 0x4042cc20, 0x0c02: 0x4042ce20,
+	0x0c06: 0xc0630261, 0x0c07: 0xc06602b1,
+	0x0c08: 0x4042d420, 0x0c0a: 0x4042d620, 0x0c0b: 0x4042d820,
+	0x0c0c: 0x4042da20, 0x0c0d: 0x8209216e,
+	0x0c10: 0x40427c20,
+	0x0c17: 0x4042de20,
+	0x0c26: 0xe0000179, 0x0c27: 0xe0000207,
+	0x0c28: 0xe0000322, 0x0c29: 0xe00003fc, 0x0c2a: 0xe00004d7, 0x0c2b: 0xe00005a1,
+	0x0c2c: 0xe000066c, 0x0c2d: 0xe0000714, 0x0c2e: 0xe00007c0, 0x0c2f: 0xe0000865,
+	0x0c30: 0x40285420, 0x0c31: 0x40285620, 0x0c32: 0x40285820, 0x0c33: 0x40073e20,
+	0x0c34: 0x40074020, 0x0c35: 0x40074220, 0x0c36: 0x40074420, 0x0c37: 0x40074620,
+	0x0c38: 0x40074820, 0x0c39: 0x4027f220, 0x0c3a: 0x40074a20,
+	// Block 0x31, offset 0xc40
+	0x0c41: 0xa000f202, 0x0c42: 0xa000f302, 0x0c43: 0xa000f402,
+	0x0c45: 0x4042e020, 0x0c46: 0x4042e220, 0x0c47: 0x4042e420,
+	0x0c48: 0x4042e620, 0x0c49: 0x4042e820, 0x0c4a: 0x4042ea20, 0x0c4b: 0x4042ec20,
+	0x0c4c: 0x4042f020, 0x0c4e: 0x4042f420, 0x0c4f: 0x4042f620,
+	0x0c50: 0x4042f820, 0x0c52: 0x4042fa20, 0x0c53: 0x4042fc20,
+	0x0c54: 0x4042fe20, 0x0c55: 0x40430020, 0x0c56: 0x40430220, 0x0c57: 0x40430420,
+	0x0c58: 0x40430620, 0x0c59: 0x40430820, 0x0c5a: 0x40430a20, 0x0c5b: 0x40430e20,
+	0x0c5c: 0x40431020, 0x0c5d: 0x40431420, 0x0c5e: 0x40431620, 0x0c5f: 0x40431820,
+	0x0c60: 0x40431a20, 0x0c61: 0x40431c20, 0x0c62: 0x40431e20, 0x0c63: 0x40432020,
+	0x0c64: 0x40432220, 0x0c65: 0x40432420, 0x0c66: 0x40432620, 0x0c67: 0x40432820,
+	0x0c68: 0x40432a20, 0x0c6a: 0x40432c20, 0x0c6b: 0x40432e20,
+	0x0c6c: 0x40433020, 0x0c6d: 0x40433220, 0x0c6e: 0x40433420, 0x0c6f: 0x40433620,
+	0x0c70: 0x40433820, 0x0c71: 0x40433a20, 0x0c72: 0x40433c20, 0x0c73: 0x40434820,
+	0x0c75: 0x40433e20, 0x0c76: 0x40434020, 0x0c77: 0x40434220,
+	0x0c78: 0x40434420, 0x0c79: 0x40434620,
+	0x0c7d: 0x40434a20, 0x0c7e: 0x40434c20, 0x0c7f: 0x40434e20,
+	// Block 0x32, offset 0xc80
+	0x0c80: 0x40435020, 0x0c81: 0x40435220, 0x0c82: 0x40435420, 0x0c83: 0x40435620,
+	0x0c84: 0x40435820, 0x0c86: 0xc06802e1, 0x0c87: 0x40436020,
+	0x0c88: 0x40436220, 0x0c8a: 0x40436420, 0x0c8b: 0x40436620,
+	0x0c8c: 0x40436820, 0x0c8d: 0x820921b5,
+	0x0c95: 0x825421b6, 0x0c96: 0x825b21b7,
+	0x0c98: 0x40430c20, 0x0c99: 0x40431220,
+	0x0ca0: 0x4042ee20, 0x0ca1: 0x4042f220, 0x0ca2: 0x40435a20, 0x0ca3: 0x40435c20,
+	0x0ca6: 0xe000017c, 0x0ca7: 0xe000020a,
+	0x0ca8: 0xe0000325, 0x0ca9: 0xe00003ff, 0x0caa: 0xe00004da, 0x0cab: 0xe00005a4,
+	0x0cac: 0xe000066f, 0x0cad: 0xe0000717, 0x0cae: 0xe00007c3, 0x0caf: 0xe0000868,
+	0x0cb8: 0xe000017f, 0x0cb9: 0xe000020d, 0x0cba: 0xe0000328, 0x0cbb: 0xe0000402,
+	0x0cbc: 0xe0000210, 0x0cbd: 0xe000032b, 0x0cbe: 0xe0000405, 0x0cbf: 0x40074c20,
+	// Block 0x33, offset 0xcc0
+	0x0cc2: 0xa000f302, 0x0cc3: 0xa000f402,
+	0x0cc5: 0x40437020, 0x0cc6: 0x40437220, 0x0cc7: 0x40437420,
+	0x0cc8: 0x40437620, 0x0cc9: 0x40437820, 0x0cca: 0x40437a20, 0x0ccb: 0x40437c20,
+	0x0ccc: 0x40438020, 0x0cce: 0x40438420, 0x0ccf: 0x40438620,
+	0x0cd0: 0x40438820, 0x0cd2: 0x40438a20, 0x0cd3: 0x40438c20,
+	0x0cd4: 0x40438e20, 0x0cd5: 0x40439020, 0x0cd6: 0x40439220, 0x0cd7: 0x40439420,
+	0x0cd8: 0x40439620, 0x0cd9: 0x40439820, 0x0cda: 0x40439a20, 0x0cdb: 0x40439c20,
+	0x0cdc: 0x40439e20, 0x0cdd: 0x4043a020, 0x0cde: 0x4043a220, 0x0cdf: 0x4043a420,
+	0x0ce0: 0x4043a620, 0x0ce1: 0x4043a820, 0x0ce2: 0x4043aa20, 0x0ce3: 0x4043ac20,
+	0x0ce4: 0x4043ae20, 0x0ce5: 0x4043b020, 0x0ce6: 0x4043b220, 0x0ce7: 0x4043b420,
+	0x0ce8: 0x4043b620, 0x0cea: 0x4043b820, 0x0ceb: 0x4043ba20,
+	0x0cec: 0x4043bc20, 0x0ced: 0x4043be20, 0x0cee: 0x4043c020, 0x0cef: 0x4043c220,
+	0x0cf0: 0x4043c420, 0x0cf1: 0x4043c620, 0x0cf2: 0x4043c820, 0x0cf3: 0x4043d420,
+	0x0cf5: 0x4043ca20, 0x0cf6: 0x4043cc20, 0x0cf7: 0x4043ce20,
+	0x0cf8: 0x4043d020, 0x0cf9: 0x4043d220,
+	0x0cfc: 0xa070f102, 0x0cfd: 0x4043d820, 0x0cfe: 0x4043de20, 0x0cff: 0xc06a0311,
+	// Block 0x34, offset 0xd00
+	0x0d00: 0x4043e220, 0x0d01: 0x4043e420, 0x0d02: 0x4043e620, 0x0d03: 0x4043e820,
+	0x0d04: 0x4043ea20, 0x0d06: 0xc06c0341, 0x0d07: 0x4043f220,
+	0x0d08: 0x4043f420, 0x0d0a: 0xc0710311, 0x0d0b: 0x4043f820,
+	0x0d0c: 0x4043fa20, 0x0d0d: 0x820921fe,
+	0x0d15: 0x4043fe20, 0x0d16: 0x40440020,
+	0x0d1e: 0x4043d620,
+	0x0d20: 0x40437e20, 0x0d21: 0x40438220, 0x0d22: 0x4043ec20, 0x0d23: 0x4043ee20,
+	0x0d26: 0xe0000182, 0x0d27: 0xe0000213,
+	0x0d28: 0xe000032e, 0x0d29: 0xe0000408, 0x0d2a: 0xe00004dd, 0x0d2b: 0xe00005a7,
+	0x0d2c: 0xe0000672, 0x0d2d: 0xe000071a, 0x0d2e: 0xe00007c6, 0x0d2f: 0xe000086b,
+	0x0d31: 0x4043da20, 0x0d32: 0x4043dc20,
+	// Block 0x35, offset 0xd40
+	0x0d42: 0xa000f302, 0x0d43: 0xa000f402,
+	0x0d45: 0x40440220, 0x0d46: 0x40440420, 0x0d47: 0x40440620,
+	0x0d48: 0x40440820, 0x0d49: 0x40440a20, 0x0d4a: 0x40440c20, 0x0d4b: 0x40440e20,
+	0x0d4c: 0x40441220, 0x0d4e: 0x40441620, 0x0d4f: 0x40441820,
+	0x0d50: 0x40441a20, 0x0d52: 0x40441c20, 0x0d53: 0x40441e20,
+	0x0d54: 0x40442020, 0x0d55: 0x40442220, 0x0d56: 0x40442420, 0x0d57: 0x40442620,
+	0x0d58: 0x40442820, 0x0d59: 0x40442a20, 0x0d5a: 0x40442c20, 0x0d5b: 0x40442e20,
+	0x0d5c: 0x40443020, 0x0d5d: 0x40443220, 0x0d5e: 0x40443420, 0x0d5f: 0x40443620,
+	0x0d60: 0x40443820, 0x0d61: 0x40443a20, 0x0d62: 0x40443c20, 0x0d63: 0x40443e20,
+	0x0d64: 0x40444020, 0x0d65: 0x40444220, 0x0d66: 0x40444420, 0x0d67: 0x40444620,
+	0x0d68: 0x40444820, 0x0d69: 0x40444a20, 0x0d6a: 0x40444c20, 0x0d6b: 0x40444e20,
+	0x0d6c: 0x40445020, 0x0d6d: 0x40445220, 0x0d6e: 0x40445420, 0x0d6f: 0x40445620,
+	0x0d70: 0x40445820, 0x0d71: 0x40446a20, 0x0d72: 0x40445a20, 0x0d73: 0x40446620,
+	0x0d74: 0x40446820, 0x0d75: 0x40445c20, 0x0d76: 0x40445e20, 0x0d77: 0x40446020,
+	0x0d78: 0x40446220, 0x0d79: 0x40446420, 0x0d7a: 0x40446c20,
+	0x0d7d: 0x40446e20, 0x0d7e: 0x40447020, 0x0d7f: 0x40447220,
+	// Block 0x36, offset 0xd80
+	0x0d80: 0x40447420, 0x0d81: 0x40447620, 0x0d82: 0x40447820, 0x0d83: 0x40447a20,
+	0x0d84: 0x40447c20, 0x0d86: 0xc07303b1, 0x0d87: 0xc0760401,
+	0x0d88: 0x40448620, 0x0d8a: 0x40448820, 0x0d8b: 0x40448a20,
+	0x0d8c: 0x40448c20, 0x0d8d: 0x82092248, 0x0d8e: 0xe000186c,
+	0x0d97: 0x40448e20,
+	0x0da0: 0x40441020, 0x0da1: 0x40441420, 0x0da2: 0x40447e20, 0x0da3: 0x40448020,
+	0x0da6: 0xe0000185, 0x0da7: 0xe0000216,
+	0x0da8: 0xe0000331, 0x0da9: 0xe000040b, 0x0daa: 0xe00004e0, 0x0dab: 0xe00005aa,
+	0x0dac: 0xe0000675, 0x0dad: 0xe000071d, 0x0dae: 0xe00007c9, 0x0daf: 0xe000086e,
+	0x0db0: 0x40285a20, 0x0db1: 0x40285c20, 0x0db2: 0x40285e20, 0x0db3: 0x40286020,
+	0x0db4: 0x40286220, 0x0db5: 0x40286420,
+	0x0db9: 0x40074e20, 0x0dba: 0xe0001866, 0x0dbb: 0xe0001869,
+	0x0dbc: 0xe000186f, 0x0dbd: 0xe0001872, 0x0dbe: 0xe0001875, 0x0dbf: 0xe0001863,
+	// Block 0x37, offset 0xdc0
+	0x0dc2: 0xa000f302, 0x0dc3: 0xa000f402,
+	0x0dc5: 0x40449220, 0x0dc6: 0x40449420, 0x0dc7: 0x40449620,
+	0x0dc8: 0x40449820, 0x0dc9: 0x40449a20, 0x0dca: 0x40449c20, 0x0dcb: 0x40449e20,
+	0x0dcc: 0x4044a020, 0x0dcd: 0x4044a220, 0x0dce: 0x4044a420, 0x0dcf: 0x4044a620,
+	0x0dd0: 0x4044a820, 0x0dd1: 0x4044aa20, 0x0dd2: 0x4044ac20, 0x0dd3: 0x4044ae20,
+	0x0dd4: 0x4044b020, 0x0dd5: 0x4044b220, 0x0dd6: 0x4044b420,
+	0x0dda: 0x4044b620, 0x0ddb: 0x4044b820,
+	0x0ddc: 0x4044ba20, 0x0ddd: 0x4044bc20, 0x0dde: 0x4044be20, 0x0ddf: 0x4044c020,
+	0x0de0: 0x4044c220, 0x0de1: 0x4044c420, 0x0de2: 0x4044c620, 0x0de3: 0x4044c820,
+	0x0de4: 0x4044ca20, 0x0de5: 0x4044cc20, 0x0de6: 0x4044ce20, 0x0de7: 0x4044d020,
+	0x0de8: 0x4044d220, 0x0de9: 0x4044d420, 0x0dea: 0x4044d620, 0x0deb: 0x4044d820,
+	0x0dec: 0x4044da20, 0x0ded: 0x4044dc20, 0x0dee: 0x4044de20, 0x0def: 0x4044e020,
+	0x0df0: 0x4044e220, 0x0df1: 0x4044e420, 0x0df3: 0x4044e620,
+	0x0df4: 0x4044e820, 0x0df5: 0x4044ea20, 0x0df6: 0x4044ec20, 0x0df7: 0x4044ee20,
+	0x0df8: 0x4044f020, 0x0df9: 0x4044f220, 0x0dfa: 0x4044f420, 0x0dfb: 0x4044f620,
+	0x0dfd: 0x4044f820,
+	// Block 0x38, offset 0xe00
+	0x0e00: 0x4044fa20, 0x0e01: 0x4044fc20, 0x0e02: 0x4044fe20, 0x0e03: 0x40450020,
+	0x0e04: 0x40450220, 0x0e05: 0x40450420, 0x0e06: 0x40450620,
+	0x0e0a: 0x82092295,
+	0x0e0f: 0x40450820,
+	0x0e10: 0x40450a20, 0x0e11: 0x40450c20, 0x0e12: 0x40450e20, 0x0e13: 0x40451020,
+	0x0e14: 0x40451220, 0x0e16: 0x40451420,
+	0x0e18: 0x40451620, 0x0e19: 0xc0780431, 0x0e1a: 0x40452020, 0x0e1b: 0x40452220,
+	0x0e1c: 0xc07d04b1, 0x0e1d: 0x40452620, 0x0e1e: 0x40452820, 0x0e1f: 0x40451a20,
+	0x0e32: 0x40451820, 0x0e33: 0x40451c20,
+	0x0e34: 0x40057620,
+	// Block 0x39, offset 0xe40
+	0x0e41: 0x40491020, 0x0e42: 0x40491220, 0x0e43: 0x40491420,
+	0x0e44: 0x40491620, 0x0e45: 0x40491820, 0x0e46: 0x40491a20, 0x0e47: 0x40491c20,
+	0x0e48: 0x40491e20, 0x0e49: 0x40492020, 0x0e4a: 0x40492220, 0x0e4b: 0x40492420,
+	0x0e4c: 0x40492620, 0x0e4d: 0x40492820, 0x0e4e: 0x40492a20, 0x0e4f: 0x40492c20,
+	0x0e50: 0x40492e20, 0x0e51: 0x40493020, 0x0e52: 0x40493220, 0x0e53: 0x40493420,
+	0x0e54: 0x40493620, 0x0e55: 0x40493820, 0x0e56: 0x40493a20, 0x0e57: 0x40493c20,
+	0x0e58: 0x40493e20, 0x0e59: 0x40494020, 0x0e5a: 0x40494220, 0x0e5b: 0x40494420,
+	0x0e5c: 0x40494620, 0x0e5d: 0x40494820, 0x0e5e: 0x40494a20, 0x0e5f: 0x40494c20,
+	0x0e60: 0x40494e20, 0x0e61: 0x40495020, 0x0e62: 0x40495220, 0x0e63: 0x40495420,
+	0x0e64: 0x40495620, 0x0e65: 0x40495820, 0x0e66: 0x40495a20, 0x0e67: 0x40495c20,
+	0x0e68: 0x40495e20, 0x0e69: 0x40496020, 0x0e6a: 0x40496220, 0x0e6b: 0x40496420,
+	0x0e6c: 0x40496620, 0x0e6d: 0x40496820, 0x0e6e: 0x40496a20, 0x0e6f: 0x40496c20,
+	0x0e70: 0x40496e20, 0x0e71: 0x40497020, 0x0e72: 0x40497220, 0x0e73: 0x40497420,
+	0x0e74: 0x40497620, 0x0e75: 0x40497820, 0x0e76: 0x40497a20, 0x0e77: 0x40497c20,
+	0x0e78: 0x826724bf, 0x0e79: 0x826724c0, 0x0e7a: 0x820924c1,
+	0x0e7f: 0x4027f420,
+	// Block 0x3a, offset 0xe80
+	0x0e80: 0xc07f04e1, 0x0e81: 0xc0ae04e1, 0x0e82: 0xc0dd04e1, 0x0e83: 0xc10c04e1,
+	0x0e84: 0xc13b04e1, 0x0e85: 0x40498e20, 0x0e86: 0x4027b820, 0x0e87: 0xa000ff02,
+	0x0e88: 0xa6b10002, 0x0e89: 0xa6b10102, 0x0e8a: 0xa6b10202, 0x0e8b: 0xa6b10302,
+	0x0e8c: 0xa0010402, 0x0e8d: 0xc16a0511, 0x0e8e: 0xa000fe02, 0x0e8f: 0x40057820,
+	0x0e90: 0xe000019a, 0x0e91: 0xe000022e, 0x0e92: 0xe0000346, 0x0e93: 0xe0000420,
+	0x0e94: 0xe00004f5, 0x0e95: 0xe00005bf, 0x0e96: 0xe000068a, 0x0e97: 0xe0000732,
+	0x0e98: 0xe00007de, 0x0e99: 0xe0000883, 0x0e9a: 0x40057a20, 0x0e9b: 0x40057c20,
+	// Block 0x3b, offset 0xec0
+	0x0ec1: 0x40499220, 0x0ec2: 0x40499420,
+	0x0ec4: 0x40499620, 0x0ec7: 0x40499820,
+	0x0ec8: 0x40499a20, 0x0eca: 0x40499e20,
+	0x0ecd: 0x4049a220,
+	0x0ed4: 0x4049a420, 0x0ed5: 0x4049a620, 0x0ed6: 0x4049a820, 0x0ed7: 0x4049aa20,
+	0x0ed9: 0x4049ac20, 0x0eda: 0x4049ae20, 0x0edb: 0x4049b020,
+	0x0edc: 0x4049b220, 0x0edd: 0x4049b420, 0x0ede: 0x4049b620, 0x0edf: 0x4049b820,
+	0x0ee1: 0x4049ba20, 0x0ee2: 0x4049bc20, 0x0ee3: 0x4049be20,
+	0x0ee5: 0x4049c020, 0x0ee7: 0x4049c220,
+	0x0eea: 0x40499c20, 0x0eeb: 0x4049c420,
+	0x0eed: 0x4049c620, 0x0eee: 0x4049c820, 0x0eef: 0x4049ca20,
+	0x0ef0: 0x4049cc20, 0x0ef1: 0x4049ce20, 0x0ef2: 0x4049d020, 0x0ef3: 0x4049d220,
+	0x0ef4: 0x4049d420, 0x0ef5: 0x4049d620, 0x0ef6: 0x4049d820, 0x0ef7: 0x4049da20,
+	0x0ef8: 0x827624ee, 0x0ef9: 0x827624ef, 0x0efb: 0x4049e020,
+	0x0efc: 0x4049e220, 0x0efd: 0x4049e420,
+	// Block 0x3c, offset 0xf00
+	0x0f00: 0xc16c0541, 0x0f01: 0xc18c0541, 0x0f02: 0xc1ac0541, 0x0f03: 0xc1cc0541,
+	0x0f04: 0xc1ec0541, 0x0f06: 0x4027ba20,
+	0x0f08: 0xa7a10602, 0x0f09: 0xa7a10702, 0x0f0a: 0xa7a10802, 0x0f0b: 0xa7a10902,
+	0x0f0c: 0xa0010a02, 0x0f0d: 0xc20c0641,
+	0x0f10: 0xe000019d, 0x0f11: 0xe0000231, 0x0f12: 0xe0000349, 0x0f13: 0xe0000423,
+	0x0f14: 0xe00004f8, 0x0f15: 0xe00005c2, 0x0f16: 0xe000068d, 0x0f17: 0xe0000735,
+	0x0f18: 0xe00007e1, 0x0f19: 0xe0000886,
+	0x0f1c: 0xf0000404, 0x0f1d: 0xf0000404, 0x0f1e: 0x40499020, 0x0f1f: 0x4049a020,
+	// Block 0x3d, offset 0xf40
+	0x0f40: 0xe000201a, 0x0f41: 0x40075e20, 0x0f42: 0x40076020, 0x0f43: 0x40076220,
+	0x0f44: 0x40058220, 0x0f45: 0x40058420, 0x0f46: 0x40058620, 0x0f47: 0x40058820,
+	0x0f48: 0x40058a20, 0x0f49: 0x40058c20, 0x0f4a: 0x40058e20, 0x0f4b: 0x40059420,
+	0x0f4c: 0x0005949b, 0x0f4d: 0x40059620, 0x0f4e: 0x40059820, 0x0f4f: 0x40059a20,
+	0x0f50: 0x40059c20, 0x0f51: 0x40059e20, 0x0f52: 0x4005a020, 0x0f53: 0x40076420,
+	0x0f54: 0x4002aa20, 0x0f55: 0x40076620, 0x0f56: 0x40076820, 0x0f57: 0x40076a20,
+	0x0f58: 0xadc00000, 0x0f59: 0xadc00000, 0x0f5a: 0x40076c20, 0x0f5b: 0x40076e20,
+	0x0f5c: 0x40077020, 0x0f5d: 0x40077220, 0x0f5e: 0x40077420, 0x0f5f: 0x40077620,
+	0x0f60: 0xe00001a0, 0x0f61: 0xe0000234, 0x0f62: 0xe000034c, 0x0f63: 0xe0000426,
+	0x0f64: 0xe00004fb, 0x0f65: 0xe00005c5, 0x0f66: 0xe0000690, 0x0f67: 0xe0000738,
+	0x0f68: 0xe00007e4, 0x0f69: 0xe0000889, 0x0f6a: 0xe0000237, 0x0f6b: 0xe000034f,
+	0x0f6c: 0xe0000429, 0x0f6d: 0xe00004fe, 0x0f6e: 0xe00005c8, 0x0f6f: 0xe0000693,
+	0x0f70: 0xe000073b, 0x0f71: 0xe00007e7, 0x0f72: 0xe000088c, 0x0f73: 0xe00001a3,
+	0x0f74: 0x40077820, 0x0f75: 0xadc00000, 0x0f76: 0x40077a20, 0x0f77: 0xadc00000,
+	0x0f78: 0x40077c20, 0x0f79: 0xad810e02, 0x0f7a: 0x40040020, 0x0f7b: 0x40040220,
+	0x0f7c: 0x40040420, 0x0f7d: 0x40040620, 0x0f7e: 0xa0000000, 0x0f7f: 0xa0000000,
+	// Block 0x3e, offset 0xf80
+	0x0f80: 0x404a7620, 0x0f81: 0x404a7c20, 0x0f82: 0x404a8020, 0x0f83: 0xe0001fe4,
+	0x0f84: 0x404a8420, 0x0f85: 0x404a8820, 0x0f86: 0x404a8c20, 0x0f87: 0x404a9020,
+	0x0f89: 0x404a9420, 0x0f8a: 0x404a9820, 0x0f8b: 0x404a9c20,
+	0x0f8c: 0x404aa020, 0x0f8d: 0xe0001fea, 0x0f8e: 0x404aa420, 0x0f8f: 0x404aa820,
+	0x0f90: 0x404aac20, 0x0f91: 0x404ab020, 0x0f92: 0xe0001ff0, 0x0f93: 0x404ab420,
+	0x0f94: 0x404ab820, 0x0f95: 0x404abc20, 0x0f96: 0x404ac020, 0x0f97: 0xe0001ff6,
+	0x0f98: 0x404ac420, 0x0f99: 0x404ac820, 0x0f9a: 0x404acc20, 0x0f9b: 0x404ad020,
+	0x0f9c: 0xe0001ffc, 0x0f9d: 0x404ad420, 0x0f9e: 0x404ad820, 0x0f9f: 0x404adc20,
+	0x0fa0: 0x404ae020, 0x0fa1: 0x404ae420, 0x0fa2: 0x404ae820, 0x0fa3: 0x404aee20,
+	0x0fa4: 0x404af220, 0x0fa5: 0x404af620, 0x0fa6: 0x404afa20, 0x0fa7: 0x404afe20,
+	0x0fa8: 0x404b0220, 0x0fa9: 0xe0001fde, 0x0faa: 0xe0002008, 0x0fab: 0x404a7a20,
+	0x0fac: 0x404aec20,
+	0x0fb1: 0xc30f0751, 0x0fb2: 0x8282258c, 0x0fb3: 0x8281258d,
+	0x0fb4: 0x82842590, 0x0fb5: 0x82812591, 0x0fb6: 0x404b2420, 0x0fb7: 0x404b2620,
+	0x0fb8: 0x404b2820, 0x0fb9: 0x404b2a20, 0x0fba: 0x82822596, 0x0fbb: 0x82822597,
+	0x0fbc: 0x82822598, 0x0fbd: 0x82822599, 0x0fbe: 0xa000f302, 0x0fbf: 0xa000f402,
+	// Block 0x3f, offset 0xfc0
+	0x0fc0: 0x8282258e, 0x0fc1: 0x8281258f, 0x0fc2: 0xae600000, 0x0fc3: 0xae600000,
+	0x0fc4: 0x8209259a, 0x0fc5: 0x4005a220, 0x0fc6: 0xae600000, 0x0fc7: 0xae600000,
+	0x0fc8: 0x404b0620, 0x0fc9: 0x404b0a20, 0x0fca: 0x404b1220, 0x0fcb: 0x404b1420,
+	0x0fcc: 0x404b0e20, 0x0fcd: 0x404b0820, 0x0fce: 0x404b0c20, 0x0fcf: 0x404b1020,
+	0x0fd0: 0x404a7820, 0x0fd1: 0x404a7e20, 0x0fd2: 0x404a8220, 0x0fd3: 0xe0001fe7,
+	0x0fd4: 0x404a8620, 0x0fd5: 0x404a8a20, 0x0fd6: 0x404a8e20, 0x0fd7: 0x404a9220,
+	0x0fd9: 0x404a9620, 0x0fda: 0x404a9a20, 0x0fdb: 0x404a9e20,
+	0x0fdc: 0x404aa220, 0x0fdd: 0xe0001fed, 0x0fde: 0x404aa620, 0x0fdf: 0x404aaa20,
+	0x0fe0: 0x404aae20, 0x0fe1: 0x404ab220, 0x0fe2: 0xe0001ff3, 0x0fe3: 0x404ab620,
+	0x0fe4: 0x404aba20, 0x0fe5: 0x404abe20, 0x0fe6: 0x404ac220, 0x0fe7: 0xe0001ff9,
+	0x0fe8: 0x404ac620, 0x0fe9: 0x404aca20, 0x0fea: 0x404ace20, 0x0feb: 0x404ad220,
+	0x0fec: 0xe0001fff, 0x0fed: 0x404ad620, 0x0fee: 0x404ada20, 0x0fef: 0x404ade20,
+	0x0ff0: 0x404ae220, 0x0ff1: 0x404ae620, 0x0ff2: 0xc30306a1, 0x0ff3: 0xc30906a1,
+	0x0ff4: 0x404af420, 0x0ff5: 0x404af820, 0x0ff6: 0x404afc20, 0x0ff7: 0x404b0020,
+	0x0ff8: 0x404b0420, 0x0ff9: 0xe0001fe1, 0x0ffa: 0xe0002002, 0x0ffb: 0xe0002005,
+	0x0ffc: 0xe000200b, 0x0ffe: 0x40077e20, 0x0fff: 0x40078020,
+	// Block 0x40, offset 0x1000
+	0x1000: 0x40078220, 0x1001: 0x40078420, 0x1002: 0x40078620, 0x1003: 0x40078820,
+	0x1004: 0x40078a20, 0x1005: 0x40078c20, 0x1006: 0xadc00000, 0x1007: 0x40078e20,
+	0x1008: 0x40079020, 0x1009: 0x40079220, 0x100a: 0x40079420, 0x100b: 0x40079620,
+	0x100c: 0x40079820, 0x100e: 0x40079a20, 0x100f: 0x40079c20,
+	0x1010: 0x40059020, 0x1011: 0x40059220, 0x1012: 0x4005a420, 0x1013: 0x4005a620,
+	0x1014: 0x4005a820, 0x1015: 0x40079e20, 0x1016: 0x4007a020, 0x1017: 0x4007a220,
+	0x1018: 0x4007a420, 0x1019: 0x4005aa20, 0x101a: 0x4005ac20,
+	// Block 0x41, offset 0x1040
+	0x1040: 0x404e1420, 0x1041: 0x404e1820, 0x1042: 0x404e1c20, 0x1043: 0x404e2220,
+	0x1044: 0x404e2420, 0x1045: 0x404e2820, 0x1046: 0x404e2e20, 0x1047: 0x404e3220,
+	0x1048: 0x404e3a20, 0x1049: 0x404e4220, 0x104a: 0x404e4820, 0x104b: 0x404e4a20,
+	0x104c: 0x404e4e20, 0x104d: 0x404e5220, 0x104e: 0x404e5620, 0x104f: 0x404e5a20,
+	0x1050: 0x404e5e20, 0x1051: 0x404e6020, 0x1052: 0x404e6220, 0x1053: 0x404e6620,
+	0x1054: 0x404e6a20, 0x1055: 0x404e7220, 0x1056: 0x404e7420, 0x1057: 0x404e7e20,
+	0x1058: 0x404e8220, 0x1059: 0x404e8420, 0x105a: 0x404e8820, 0x105b: 0x404e8c20,
+	0x105c: 0x404e9420, 0x105d: 0x404e9820, 0x105e: 0x404ea620, 0x105f: 0x404eaa20,
+	0x1060: 0x404eb620, 0x1061: 0x404ec220, 0x1062: 0x404ec420, 0x1063: 0x404ec620,
+	0x1064: 0x404ec820, 0x1065: 0xc31307b1, 0x1066: 0x404ecc20, 0x1067: 0x404ed620,
+	0x1068: 0x404ed820, 0x1069: 0x404eda20, 0x106a: 0x404edc20, 0x106b: 0x004ede84,
+	0x106c: 0x404ede20, 0x106d: 0x404ee620, 0x106e: 0x404eea20, 0x106f: 0x404eee20,
+	0x1070: 0x404ef420, 0x1071: 0x404efe20, 0x1072: 0x404f0620, 0x1073: 0x404eec20,
+	0x1074: 0x404f0a20, 0x1075: 0x404f0220, 0x1076: 0xa000f302, 0x1077: 0xa0711202,
+	0x1078: 0xa000f402, 0x1079: 0x8209278a, 0x107a: 0x8209278b, 0x107b: 0x404e8a20,
+	0x107c: 0x404e9220, 0x107d: 0x404e9a20, 0x107e: 0x404eb020, 0x107f: 0xe000201e,
+	// Block 0x42, offset 0x1080
+	0x1080: 0xe00001ac, 0x1081: 0xe0000240, 0x1082: 0xe0000358, 0x1083: 0xe0000432,
+	0x1084: 0xe0000507, 0x1085: 0xe00005d1, 0x1086: 0xe000069c, 0x1087: 0xe0000744,
+	0x1088: 0xe00007f0, 0x1089: 0xe0000895, 0x108a: 0x40032220, 0x108b: 0x40032420,
+	0x108c: 0x4005b420, 0x108d: 0x4005b620, 0x108e: 0x4005b820, 0x108f: 0x4005ba20,
+	0x1090: 0x404ea020, 0x1091: 0x404ea220, 0x1092: 0x404ece20, 0x1093: 0x404ed020,
+	0x1094: 0x404ed220, 0x1095: 0x404ed420, 0x1096: 0x404ef620, 0x1097: 0x404ef820,
+	0x1098: 0x404efa20, 0x1099: 0x404efc20, 0x109a: 0x404e2620, 0x109b: 0x404e3c20,
+	0x109c: 0x404eb820, 0x109d: 0x404eba20, 0x109e: 0x404e7020, 0x109f: 0x404e8620,
+	0x10a0: 0x404e9620, 0x10a1: 0x404e4020, 0x10a2: 0x404f0c20, 0x10a3: 0x404f1820,
+	0x10a4: 0x404f1a20, 0x10a5: 0x404ea420, 0x10a6: 0x404ec020, 0x10a7: 0x404f0e20,
+	0x10a8: 0x404f1020, 0x10a9: 0x404f1c20, 0x10aa: 0x404f1e20, 0x10ab: 0x404f2020,
+	0x10ac: 0x404f2220, 0x10ad: 0x404f2420, 0x10ae: 0x404e5c20, 0x10af: 0x404ebc20,
+	0x10b0: 0x404ebe20, 0x10b1: 0x404ee820, 0x10b2: 0x404ee220, 0x10b3: 0x404ef020,
+	0x10b4: 0x404ef220, 0x10b5: 0x404e1620, 0x10b6: 0x404e1a20, 0x10b7: 0x404e1e20,
+	0x10b8: 0x404e2a20, 0x10b9: 0x404e3620, 0x10ba: 0x404e4420, 0x10bb: 0x404e6420,
+	0x10bc: 0x404e6c20, 0x10bd: 0x404e7620, 0x10be: 0x404e7820, 0x10bf: 0x404e8020,
+	// Block 0x43, offset 0x10c0
+	0x10c0: 0x404e9e20, 0x10c1: 0x404eac20, 0x10c2: 0x404e9c20, 0x10c3: 0x404ee020,
+	0x10c4: 0x404f0020, 0x10c5: 0x404f0420, 0x10c6: 0x404f1220, 0x10c7: 0x404f2620,
+	0x10c8: 0x404f2a20, 0x10c9: 0x404f2e20, 0x10ca: 0x404f3020, 0x10cb: 0x404f2820,
+	0x10cc: 0x404f2c20, 0x10cd: 0xadc11302, 0x10ce: 0x404e7c20, 0x10cf: 0x404f3220,
+	0x10d0: 0xe00001af, 0x10d1: 0xe0000243, 0x10d2: 0xe000035b, 0x10d3: 0xe0000435,
+	0x10d4: 0xe000050a, 0x10d5: 0xe00005d4, 0x10d6: 0xe000069f, 0x10d7: 0xe0000747,
+	0x10d8: 0xe00007f3, 0x10d9: 0xe0000898, 0x10da: 0x404f3420, 0x10db: 0x404f3620,
+	0x10dc: 0x404ee420, 0x10dd: 0x404f0820, 0x10de: 0x4007a820, 0x10df: 0x4007aa20,
+	0x10e0: 0x00379888, 0x10e1: 0x00379c88, 0x10e2: 0x0037a088, 0x10e3: 0x0037a488,
+	0x10e4: 0x0037a888, 0x10e5: 0x0037ac88, 0x10e6: 0x0037b088, 0x10e7: 0x0037b888,
+	0x10e8: 0x0037bc88, 0x10e9: 0x0037c088, 0x10ea: 0x0037c488, 0x10eb: 0x0037c888,
+	0x10ec: 0x0037cc88, 0x10ed: 0x0037d488, 0x10ee: 0x0037d888, 0x10ef: 0x0037dc88,
+	0x10f0: 0x0037e088, 0x10f1: 0x0037e488, 0x10f2: 0x0037e888, 0x10f3: 0x0037f088,
+	0x10f4: 0x0037f488, 0x10f5: 0x0037f888, 0x10f6: 0x0037fc88, 0x10f7: 0x00380088,
+	0x10f8: 0x00380488, 0x10f9: 0x00380888, 0x10fa: 0x00380c88, 0x10fb: 0x00381088,
+	0x10fc: 0x00381488, 0x10fd: 0x00381888, 0x10fe: 0x00381c88, 0x10ff: 0x00382488,
+	// Block 0x44, offset 0x1100
+	0x1100: 0x00382888, 0x1101: 0x0037b488, 0x1102: 0x0037d088, 0x1103: 0x0037ec88,
+	0x1104: 0x00382088, 0x1105: 0x00382c88, 0x1107: 0x00383288,
+	0x110d: 0x00383c88,
+	0x1110: 0x40379620, 0x1111: 0x40379a20, 0x1112: 0x40379e20, 0x1113: 0x4037a220,
+	0x1114: 0x4037a620, 0x1115: 0x4037aa20, 0x1116: 0x4037ae20, 0x1117: 0x4037b620,
+	0x1118: 0x4037ba20, 0x1119: 0x4037be20, 0x111a: 0x4037c220, 0x111b: 0x4037c620,
+	0x111c: 0x4037ca20, 0x111d: 0x4037d220, 0x111e: 0x4037d620, 0x111f: 0x4037da20,
+	0x1120: 0x4037de20, 0x1121: 0x4037e220, 0x1122: 0x4037e620, 0x1123: 0x4037ee20,
+	0x1124: 0x4037f220, 0x1125: 0x4037f620, 0x1126: 0x4037fa20, 0x1127: 0x4037fe20,
+	0x1128: 0x40380220, 0x1129: 0x40380620, 0x112a: 0x40380a20, 0x112b: 0x40380e20,
+	0x112c: 0x40381220, 0x112d: 0x40381620, 0x112e: 0x40381a20, 0x112f: 0x40382220,
+	0x1130: 0x40382620, 0x1131: 0x4037b220, 0x1132: 0x4037ce20, 0x1133: 0x4037ea20,
+	0x1134: 0x40381e20, 0x1135: 0x40382a20, 0x1136: 0x40382e20, 0x1137: 0x40383020,
+	0x1138: 0x40383420, 0x1139: 0x40383620, 0x113a: 0x40383820, 0x113b: 0x40036020,
+	0x113c: 0x0037ca94, 0x113d: 0x40383a20, 0x113e: 0x40383e20, 0x113f: 0x40384020,
+	// Block 0x45, offset 0x1140
+	0x1140: 0x4062ac20, 0x1141: 0x4062ae20, 0x1142: 0x4062b020, 0x1143: 0x4062b220,
+	0x1144: 0x4062b420, 0x1145: 0x4062b620, 0x1146: 0x4062b820, 0x1147: 0x4062ba20,
+	0x1148: 0x4062bc20, 0x1149: 0x4062be20, 0x114a: 0x4062c020, 0x114b: 0x4062c220,
+	0x114c: 0x4062c420, 0x114d: 0x4062c620, 0x114e: 0x4062c820, 0x114f: 0x4062ca20,
+	0x1150: 0x4062cc20, 0x1151: 0x4062ce20, 0x1152: 0x4062d020, 0x1153: 0x4062d220,
+	0x1154: 0x4062d420, 0x1155: 0x4062d620, 0x1156: 0x4062d820, 0x1157: 0x4062da20,
+	0x1158: 0x4062dc20, 0x1159: 0x4062de20, 0x115a: 0x4062e020, 0x115b: 0x4062e220,
+	0x115c: 0x4062e420, 0x115d: 0x4062e620, 0x115e: 0x4062e820, 0x115f: 0x4062ea20,
+	0x1160: 0x4062ec20, 0x1161: 0x4062ee20, 0x1162: 0x4062f020, 0x1163: 0x4062f220,
+	0x1164: 0x4062f420, 0x1165: 0x4062f620, 0x1166: 0x4062f820, 0x1167: 0x4062fa20,
+	0x1168: 0x4062fc20, 0x1169: 0x4062fe20, 0x116a: 0x40630020, 0x116b: 0x40630220,
+	0x116c: 0x40630420, 0x116d: 0x40630620, 0x116e: 0x40630820, 0x116f: 0x40630a20,
+	0x1170: 0x40630c20, 0x1171: 0x40630e20, 0x1172: 0x40631020, 0x1173: 0x40631220,
+	0x1174: 0x40631420, 0x1175: 0x40631620, 0x1176: 0x40631820, 0x1177: 0x40631a20,
+	0x1178: 0x40631c20, 0x1179: 0x40631e20, 0x117a: 0x40632020, 0x117b: 0x40632220,
+	0x117c: 0x40632420, 0x117d: 0x40632620, 0x117e: 0x40632820, 0x117f: 0x40632a20,
+	// Block 0x46, offset 0x1180
+	0x1180: 0x40632c20, 0x1181: 0x40632e20, 0x1182: 0x40633020, 0x1183: 0x40633220,
+	0x1184: 0x40633420, 0x1185: 0x40633620, 0x1186: 0x40633820, 0x1187: 0x40633a20,
+	0x1188: 0x40633c20, 0x1189: 0x40633e20, 0x118a: 0x40634020, 0x118b: 0x40634220,
+	0x118c: 0x40634420, 0x118d: 0x40634620, 0x118e: 0x40634820, 0x118f: 0x40634a20,
+	0x1190: 0x40634c20, 0x1191: 0x40634e20, 0x1192: 0x40635020, 0x1193: 0x40635220,
+	0x1194: 0x40635420, 0x1195: 0x40635620, 0x1196: 0x40635820, 0x1197: 0x40635a20,
+	0x1198: 0x40635c20, 0x1199: 0x40635e20, 0x119a: 0x40636020, 0x119b: 0x40636220,
+	0x119c: 0x40636420, 0x119d: 0x40636620, 0x119e: 0x40636820, 0x119f: 0x4063a420,
+	0x11a0: 0x4063a620, 0x11a1: 0x4063a820, 0x11a2: 0x4063aa20, 0x11a3: 0x4063ac20,
+	0x11a4: 0x4063ae20, 0x11a5: 0x4063b020, 0x11a6: 0x4063b220, 0x11a7: 0x4063b420,
+	0x11a8: 0x4063b620, 0x11a9: 0x4063b820, 0x11aa: 0x4063ba20, 0x11ab: 0x4063bc20,
+	0x11ac: 0x4063be20, 0x11ad: 0x4063c020, 0x11ae: 0x4063c220, 0x11af: 0x4063c420,
+	0x11b0: 0x4063c620, 0x11b1: 0x4063c820, 0x11b2: 0x4063ca20, 0x11b3: 0x4063cc20,
+	0x11b4: 0x4063ce20, 0x11b5: 0x4063d020, 0x11b6: 0x4063d220, 0x11b7: 0x4063d420,
+	0x11b8: 0x4063d620, 0x11b9: 0x4063d820, 0x11ba: 0x4063da20, 0x11bb: 0x4063dc20,
+	0x11bc: 0x4063de20, 0x11bd: 0x4063e020, 0x11be: 0x4063e220, 0x11bf: 0x4063e420,
+	// Block 0x47, offset 0x11c0
+	0x11c0: 0x4063e620, 0x11c1: 0x4063e820, 0x11c2: 0x4063ea20, 0x11c3: 0x4063ec20,
+	0x11c4: 0x4063ee20, 0x11c5: 0x4063f020, 0x11c6: 0x4063f220, 0x11c7: 0x4063f420,
+	0x11c8: 0x4063f620, 0x11c9: 0x4063f820, 0x11ca: 0x4063fa20, 0x11cb: 0x4063fc20,
+	0x11cc: 0x4063fe20, 0x11cd: 0x40640020, 0x11ce: 0x40640220, 0x11cf: 0x40640420,
+	0x11d0: 0x40640620, 0x11d1: 0x40640820, 0x11d2: 0x40640a20, 0x11d3: 0x40640c20,
+	0x11d4: 0x40640e20, 0x11d5: 0x40641020, 0x11d6: 0x40641220, 0x11d7: 0x40641420,
+	0x11d8: 0x40641620, 0x11d9: 0x40641820, 0x11da: 0x40641a20, 0x11db: 0x40641c20,
+	0x11dc: 0x40641e20, 0x11dd: 0x40642020, 0x11de: 0x40642220, 0x11df: 0x40642420,
+	0x11e0: 0x40642620, 0x11e1: 0x40642820, 0x11e2: 0x40642a20, 0x11e3: 0x40642c20,
+	0x11e4: 0x40642e20, 0x11e5: 0x40643020, 0x11e6: 0x40643220, 0x11e7: 0x40643420,
+	0x11e8: 0x40646420, 0x11e9: 0x40646620, 0x11ea: 0x40646820, 0x11eb: 0x40646a20,
+	0x11ec: 0x40646c20, 0x11ed: 0x40646e20, 0x11ee: 0x40647020, 0x11ef: 0x40647220,
+	0x11f0: 0x40647420, 0x11f1: 0x40647620, 0x11f2: 0x40647820, 0x11f3: 0x40647a20,
+	0x11f4: 0x40647c20, 0x11f5: 0x40647e20, 0x11f6: 0x40648020, 0x11f7: 0x40648220,
+	0x11f8: 0x40648420, 0x11f9: 0x40648620, 0x11fa: 0x40648820, 0x11fb: 0x40648a20,
+	0x11fc: 0x40648c20, 0x11fd: 0x40648e20, 0x11fe: 0x40649020, 0x11ff: 0x40649220,
+	// Block 0x48, offset 0x1200
+	0x1200: 0x40649420, 0x1201: 0x40649620, 0x1202: 0x40649820, 0x1203: 0x40649a20,
+	0x1204: 0x40649c20, 0x1205: 0x40649e20, 0x1206: 0x4064a020, 0x1207: 0x4064a220,
+	0x1208: 0x4064a420, 0x1209: 0x4064a620, 0x120a: 0x4064a820, 0x120b: 0x4064aa20,
+	0x120c: 0x4064ac20, 0x120d: 0x4064ae20, 0x120e: 0x4064b020, 0x120f: 0x4064b220,
+	0x1210: 0x4064b420, 0x1211: 0x4064b620, 0x1212: 0x4064b820, 0x1213: 0x4064ba20,
+	0x1214: 0x4064bc20, 0x1215: 0x4064be20, 0x1216: 0x4064c020, 0x1217: 0x4064c220,
+	0x1218: 0x4064c420, 0x1219: 0x4064c620, 0x121a: 0x4064c820, 0x121b: 0x4064ca20,
+	0x121c: 0x4064cc20, 0x121d: 0x4064ce20, 0x121e: 0x4064d020, 0x121f: 0x4064d220,
+	0x1220: 0x4064d420, 0x1221: 0x4064d620, 0x1222: 0x4064d820, 0x1223: 0x4064da20,
+	0x1224: 0x4064dc20, 0x1225: 0x4064de20, 0x1226: 0x4064e020, 0x1227: 0x4064e220,
+	0x1228: 0x4064e420, 0x1229: 0x4064e620, 0x122a: 0x4064e820, 0x122b: 0x4064ea20,
+	0x122c: 0x4064ec20, 0x122d: 0x4064ee20, 0x122e: 0x4064f020, 0x122f: 0x4064f220,
+	0x1230: 0x4064f420, 0x1231: 0x4064f620, 0x1232: 0x4064f820, 0x1233: 0x4064fa20,
+	0x1234: 0x4064fc20, 0x1235: 0x4064fe20, 0x1236: 0x40650020, 0x1237: 0x40650220,
+	0x1238: 0x40650420, 0x1239: 0x40650620, 0x123a: 0x40650820, 0x123b: 0x40650a20,
+	0x123c: 0x40650c20, 0x123d: 0x40650e20, 0x123e: 0x40651020, 0x123f: 0x40651220,
+	// Block 0x49, offset 0x1240
+	0x1240: 0x403c2e20, 0x1241: 0x403c3020, 0x1242: 0x403c3220, 0x1243: 0x403c3420,
+	0x1244: 0x403c3620, 0x1245: 0x403c3820, 0x1246: 0x403c3a20, 0x1247: 0x403c3c20,
+	0x1248: 0x403c3e20, 0x1249: 0x403c4020, 0x124a: 0x403c4220, 0x124b: 0x403c4420,
+	0x124c: 0x403c4620, 0x124d: 0x403c4820, 0x124e: 0x403c4a20, 0x124f: 0x403c4c20,
+	0x1250: 0x403c5020, 0x1251: 0x403c5220, 0x1252: 0x403c5420, 0x1253: 0x403c5620,
+	0x1254: 0x403c5820, 0x1255: 0x403c5a20, 0x1256: 0x403c5c20, 0x1257: 0x403c5e20,
+	0x1258: 0x403c6020, 0x1259: 0x403c6220, 0x125a: 0x403c6420, 0x125b: 0x403c6620,
+	0x125c: 0x403c6820, 0x125d: 0x403c6a20, 0x125e: 0x403c6c20, 0x125f: 0x403c6e20,
+	0x1260: 0x403c7a20, 0x1261: 0x403c7c20, 0x1262: 0x403c7e20, 0x1263: 0x403c8020,
+	0x1264: 0x403c8220, 0x1265: 0x403c8420, 0x1266: 0x403c8620, 0x1267: 0x403c8820,
+	0x1268: 0x403c8a20, 0x1269: 0x403c8c20, 0x126a: 0x403c8e20, 0x126b: 0x403c9020,
+	0x126c: 0x403c9220, 0x126d: 0x403c9420, 0x126e: 0x403c9620, 0x126f: 0x403c9820,
+	0x1270: 0x403c9c20, 0x1271: 0x403c9e20, 0x1272: 0x403ca020, 0x1273: 0x403ca220,
+	0x1274: 0x403ca420, 0x1275: 0x403ca620, 0x1276: 0x403ca820, 0x1277: 0x403caa20,
+	0x1278: 0x403cba20, 0x1279: 0x403cbc20, 0x127a: 0x403cbe20, 0x127b: 0x403cc020,
+	0x127c: 0x403cc220, 0x127d: 0x403cc420, 0x127e: 0x403cc620, 0x127f: 0x403cc820,
+	// Block 0x4a, offset 0x1280
+	0x1280: 0x403ccc20, 0x1281: 0x403cce20, 0x1282: 0x403cd020, 0x1283: 0x403cd220,
+	0x1284: 0x403cd420, 0x1285: 0x403cd620, 0x1286: 0x403cd820, 0x1287: 0x403cda20,
+	0x1288: 0x403cdc20, 0x128a: 0x403cde20, 0x128b: 0x403ce020,
+	0x128c: 0x403ce220, 0x128d: 0x403ce420,
+	0x1290: 0x403ce620, 0x1291: 0x403ce820, 0x1292: 0x403cea20, 0x1293: 0x403cec20,
+	0x1294: 0x403cee20, 0x1295: 0x403cf020, 0x1296: 0x403cf220,
+	0x1298: 0x403cf420, 0x129a: 0x403cf620, 0x129b: 0x403cf820,
+	0x129c: 0x403cfa20, 0x129d: 0x403cfc20,
+	0x12a0: 0x403cfe20, 0x12a1: 0x403d0020, 0x12a2: 0x403d0220, 0x12a3: 0x403d0420,
+	0x12a4: 0x403d0620, 0x12a5: 0x403d0820, 0x12a6: 0x403d0a20, 0x12a7: 0x403d0c20,
+	0x12a8: 0x403d1820, 0x12a9: 0x403d1a20, 0x12aa: 0x403d1c20, 0x12ab: 0x403d1e20,
+	0x12ac: 0x403d2020, 0x12ad: 0x403d2220, 0x12ae: 0x403d2420, 0x12af: 0x403d2620,
+	0x12b0: 0x403d2820, 0x12b1: 0x403d2a20, 0x12b2: 0x403d2c20, 0x12b3: 0x403d2e20,
+	0x12b4: 0x403d3020, 0x12b5: 0x403d3220, 0x12b6: 0x403d3420, 0x12b7: 0x403d3620,
+	0x12b8: 0x403d3a20, 0x12b9: 0x403d3c20, 0x12ba: 0x403d3e20, 0x12bb: 0x403d4020,
+	0x12bc: 0x403d4220, 0x12bd: 0x403d4420, 0x12be: 0x403d4620, 0x12bf: 0x403d4820,
+	// Block 0x4b, offset 0x12c0
+	0x12c0: 0x403d4c20, 0x12c1: 0x403d4e20, 0x12c2: 0x403d5020, 0x12c3: 0x403d5220,
+	0x12c4: 0x403d5420, 0x12c5: 0x403d5620, 0x12c6: 0x403d5820, 0x12c7: 0x403d5a20,
+	0x12c8: 0x403d5c20, 0x12ca: 0x403d5e20, 0x12cb: 0x403d6020,
+	0x12cc: 0x403d6220, 0x12cd: 0x403d6420,
+	0x12d0: 0x403d6620, 0x12d1: 0x403d6820, 0x12d2: 0x403d6a20, 0x12d3: 0x403d6c20,
+	0x12d4: 0x403d6e20, 0x12d5: 0x403d7020, 0x12d6: 0x403d7220, 0x12d7: 0x403d7420,
+	0x12d8: 0x403d7820, 0x12d9: 0x403d7a20, 0x12da: 0x403d7c20, 0x12db: 0x403d7e20,
+	0x12dc: 0x403d8020, 0x12dd: 0x403d8220, 0x12de: 0x403d8420, 0x12df: 0x403d8620,
+	0x12e0: 0x403d8a20, 0x12e1: 0x403d8c20, 0x12e2: 0x403d8e20, 0x12e3: 0x403d9020,
+	0x12e4: 0x403d9220, 0x12e5: 0x403d9420, 0x12e6: 0x403d9620, 0x12e7: 0x403d9820,
+	0x12e8: 0x403d9c20, 0x12e9: 0x403d9e20, 0x12ea: 0x403da020, 0x12eb: 0x403da220,
+	0x12ec: 0x403da420, 0x12ed: 0x403da620, 0x12ee: 0x403da820, 0x12ef: 0x403daa20,
+	0x12f0: 0x403dac20, 0x12f2: 0x403dae20, 0x12f3: 0x403db020,
+	0x12f4: 0x403db220, 0x12f5: 0x403db420,
+	0x12f8: 0x403db620, 0x12f9: 0x403db820, 0x12fa: 0x403dba20, 0x12fb: 0x403dbc20,
+	0x12fc: 0x403dbe20, 0x12fd: 0x403dc020, 0x12fe: 0x403dc220,
+	// Block 0x4c, offset 0x1300
+	0x1300: 0x403dc420, 0x1302: 0x403dc620, 0x1303: 0x403dc820,
+	0x1304: 0x403dca20, 0x1305: 0x403dcc20,
+	0x1308: 0x403dce20, 0x1309: 0x403dd020, 0x130a: 0x403dd220, 0x130b: 0x403dd420,
+	0x130c: 0x403dd620, 0x130d: 0x403dd820, 0x130e: 0x403dda20, 0x130f: 0x403ddc20,
+	0x1310: 0x403dde20, 0x1311: 0x403de020, 0x1312: 0x403de220, 0x1313: 0x403de420,
+	0x1314: 0x403de620, 0x1315: 0x403de820, 0x1316: 0x403dea20,
+	0x1318: 0x403dec20, 0x1319: 0x403dee20, 0x131a: 0x403df020, 0x131b: 0x403df220,
+	0x131c: 0x403df420, 0x131d: 0x403df620, 0x131e: 0x403df820, 0x131f: 0x403dfa20,
+	0x1320: 0x403e0a20, 0x1321: 0x403e0c20, 0x1322: 0x403e0e20, 0x1323: 0x403e1020,
+	0x1324: 0x403e1220, 0x1325: 0x403e1420, 0x1326: 0x403e1620, 0x1327: 0x403e1820,
+	0x1328: 0x403e1a20, 0x1329: 0x403e1c20, 0x132a: 0x403e1e20, 0x132b: 0x403e2020,
+	0x132c: 0x403e2220, 0x132d: 0x403e2420, 0x132e: 0x403e2620, 0x132f: 0x403e2820,
+	0x1330: 0x403e2a20, 0x1331: 0x403e2c20, 0x1332: 0x403e2e20, 0x1333: 0x403e3020,
+	0x1334: 0x403e3220, 0x1335: 0x403e3420, 0x1336: 0x403e3620, 0x1337: 0x403e3820,
+	0x1338: 0x403e4820, 0x1339: 0x403e4a20, 0x133a: 0x403e4c20, 0x133b: 0x403e4e20,
+	0x133c: 0x403e5020, 0x133d: 0x403e5220, 0x133e: 0x403e5420, 0x133f: 0x403e5620,
+	// Block 0x4d, offset 0x1340
+	0x1340: 0x403e5a20, 0x1341: 0x403e5c20, 0x1342: 0x403e5e20, 0x1343: 0x403e6020,
+	0x1344: 0x403e6220, 0x1345: 0x403e6420, 0x1346: 0x403e6620, 0x1347: 0x403e6820,
+	0x1348: 0x403e6c20, 0x1349: 0x403e6e20, 0x134a: 0x403e7020, 0x134b: 0x403e7220,
+	0x134c: 0x403e7420, 0x134d: 0x403e7620, 0x134e: 0x403e7820, 0x134f: 0x403e7a20,
+	0x1350: 0x403e7c20, 0x1352: 0x403e7e20, 0x1353: 0x403e8020,
+	0x1354: 0x403e8220, 0x1355: 0x403e8420,
+	0x1358: 0x403e8620, 0x1359: 0x403e8820, 0x135a: 0x403e8a20, 0x135b: 0x403e8c20,
+	0x135c: 0x403e8e20, 0x135d: 0x403e9020, 0x135e: 0x403e9220, 0x135f: 0x403e9420,
+	0x1360: 0x403e9e20, 0x1361: 0x403ea020, 0x1362: 0x403ea220, 0x1363: 0x403ea420,
+	0x1364: 0x403ea620, 0x1365: 0x403ea820, 0x1366: 0x403eaa20, 0x1367: 0x403eac20,
+	0x1368: 0x403eb020, 0x1369: 0x403eb220, 0x136a: 0x403eb420, 0x136b: 0x403eb620,
+	0x136c: 0x403eb820, 0x136d: 0x403eba20, 0x136e: 0x403ebc20, 0x136f: 0x403ebe20,
+	0x1370: 0x403ed020, 0x1371: 0x403ed220, 0x1372: 0x403ed420, 0x1373: 0x403ed620,
+	0x1374: 0x403ed820, 0x1375: 0x403eda20, 0x1376: 0x403edc20, 0x1377: 0x403ede20,
+	0x1378: 0x403ee220, 0x1379: 0x403ee420, 0x137a: 0x403ee620, 0x137b: 0x403ee820,
+	0x137c: 0x403eea20, 0x137d: 0x403eec20, 0x137e: 0x403eee20, 0x137f: 0x403ef020,
+	// Block 0x4e, offset 0x1380
+	0x1380: 0x403f0020, 0x1381: 0x403f0220, 0x1382: 0x403f0420, 0x1383: 0x403f0620,
+	0x1384: 0x403f0820, 0x1385: 0x403f0a20, 0x1386: 0x403f0c20, 0x1387: 0x403f0e20,
+	0x1388: 0x403f1020, 0x1389: 0x403f1220, 0x138a: 0x403f1420, 0x138b: 0x403f1620,
+	0x138c: 0x403f1820, 0x138d: 0x403f1a20, 0x138e: 0x403f1c20, 0x138f: 0x403f1e20,
+	0x1390: 0x403f2820, 0x1391: 0x403f2a20, 0x1392: 0x403f2c20, 0x1393: 0x403f2e20,
+	0x1394: 0x403f3020, 0x1395: 0x403f3220, 0x1396: 0x403f3420, 0x1397: 0x403f3620,
+	0x1398: 0x403f4220, 0x1399: 0x403f4420, 0x139a: 0x403f4620,
+	0x139d: 0xae60ee02, 0x139e: 0xae60ed02, 0x139f: 0xae60ec02,
+	0x13a0: 0x40036220, 0x13a1: 0x40029c20, 0x13a2: 0x4002ee20, 0x13a3: 0x40029e20,
+	0x13a4: 0x4002a020, 0x13a5: 0x4002a220, 0x13a6: 0x4002a420, 0x13a7: 0x4002d020,
+	0x13a8: 0x40036420, 0x13a9: 0xe00001f2, 0x13aa: 0xe000030d, 0x13ab: 0xe00003e7,
+	0x13ac: 0xe00004c2, 0x13ad: 0xe000058c, 0x13ae: 0xe0000657, 0x13af: 0xe00006ff,
+	0x13b0: 0xe00007ab, 0x13b1: 0xe0000850, 0x13b2: 0x40286620, 0x13b3: 0x40286820,
+	0x13b4: 0x40286a20, 0x13b5: 0x40286c20, 0x13b6: 0x40286e20, 0x13b7: 0x40287020,
+	0x13b8: 0x40287220, 0x13b9: 0x40287420, 0x13ba: 0x40287620, 0x13bb: 0x40287820,
+	0x13bc: 0x40287a20,
+	// Block 0x4f, offset 0x13c0
+	0x13c0: 0x403c7020, 0x13c1: 0x403c7220, 0x13c2: 0x403c7420, 0x13c3: 0x403c7620,
+	0x13c4: 0x403d0e20, 0x13c5: 0x403d1020, 0x13c6: 0x403d1220, 0x13c7: 0x403d1420,
+	0x13c8: 0x403f2020, 0x13c9: 0x403f2220, 0x13ca: 0x403f2420, 0x13cb: 0x403f2620,
+	0x13cc: 0x403f3820, 0x13cd: 0x403f3a20, 0x13ce: 0x403f3c20, 0x13cf: 0x403f3e20,
+	0x13d0: 0x4006a620, 0x13d1: 0x4006a820, 0x13d2: 0x4006aa20, 0x13d3: 0x4006ac20,
+	0x13d4: 0x4006ae20, 0x13d5: 0x4006b020, 0x13d6: 0x4006b220, 0x13d7: 0x4006b420,
+	0x13d8: 0x4006b620, 0x13d9: 0x4006b820,
+	0x13e0: 0x40547620, 0x13e1: 0x40547820, 0x13e2: 0x40547a20, 0x13e3: 0x40547c20,
+	0x13e4: 0x40547e20, 0x13e5: 0x40548020, 0x13e6: 0x40548220, 0x13e7: 0x40548420,
+	0x13e8: 0x40548620, 0x13e9: 0x40548820, 0x13ea: 0x40548a20, 0x13eb: 0x40548c20,
+	0x13ec: 0x40548e20, 0x13ed: 0x40549020, 0x13ee: 0x40549220, 0x13ef: 0x40549420,
+	0x13f0: 0x40549620, 0x13f1: 0x40549820, 0x13f2: 0x40549a20, 0x13f3: 0x40549c20,
+	0x13f4: 0x40549e20, 0x13f5: 0x4054a020, 0x13f6: 0x4054a220, 0x13f7: 0x4054a420,
+	0x13f8: 0x4054a620, 0x13f9: 0x4054a820, 0x13fa: 0x4054aa20, 0x13fb: 0x4054ac20,
+	0x13fc: 0x4054ae20, 0x13fd: 0x4054b020, 0x13fe: 0x4054b220, 0x13ff: 0x4054b420,
+	// Block 0x50, offset 0x1400
+	0x1400: 0x4054b620, 0x1401: 0x4054b820, 0x1402: 0x4054ba20, 0x1403: 0x4054bc20,
+	0x1404: 0x4054be20, 0x1405: 0x4054c020, 0x1406: 0x4054c220, 0x1407: 0x4054c420,
+	0x1408: 0x4054c620, 0x1409: 0x4054c820, 0x140a: 0x4054ca20, 0x140b: 0x4054cc20,
+	0x140c: 0x4054ce20, 0x140d: 0x4054d020, 0x140e: 0x4054d220, 0x140f: 0x4054d420,
+	0x1410: 0x4054d620, 0x1411: 0x4054d820, 0x1412: 0x4054da20, 0x1413: 0x4054dc20,
+	0x1414: 0x4054de20, 0x1415: 0x4054e020, 0x1416: 0x4054e220, 0x1417: 0x4054e420,
+	0x1418: 0x4054e620, 0x1419: 0x4054e820, 0x141a: 0x4054ea20, 0x141b: 0x4054ec20,
+	0x141c: 0x4054ee20, 0x141d: 0x4054f020, 0x141e: 0x4054f220, 0x141f: 0x4054f420,
+	0x1420: 0x4054f620, 0x1421: 0x4054f820, 0x1422: 0x4054fa20, 0x1423: 0x4054fc20,
+	0x1424: 0x4054fe20, 0x1425: 0x40550020, 0x1426: 0x40550220, 0x1427: 0x40550420,
+	0x1428: 0x40550620, 0x1429: 0x40550820, 0x142a: 0x40550a20, 0x142b: 0x40550c20,
+	0x142c: 0x40550e20, 0x142d: 0x40551020, 0x142e: 0x40551220, 0x142f: 0x40551420,
+	0x1430: 0x40551620, 0x1431: 0x40551820, 0x1432: 0x40551a20, 0x1433: 0x40551c20,
+	0x1434: 0x40551e20,
+	// Block 0x51, offset 0x1440
+	0x1440: 0x40021e20, 0x1441: 0x40552020, 0x1442: 0x40552220, 0x1443: 0x40552420,
+	0x1444: 0x40552620, 0x1445: 0x40552820, 0x1446: 0x40552a20, 0x1447: 0x40552c20,
+	0x1448: 0x40552e20, 0x1449: 0x40553020, 0x144a: 0x40553220, 0x144b: 0x40553420,
+	0x144c: 0x40553620, 0x144d: 0x40553820, 0x144e: 0x40553a20, 0x144f: 0x40553c20,
+	0x1450: 0x40553e20, 0x1451: 0x40554020, 0x1452: 0x40554220, 0x1453: 0x40554420,
+	0x1454: 0x40554620, 0x1455: 0x40554820, 0x1456: 0x40554a20, 0x1457: 0x40554c20,
+	0x1458: 0x40554e20, 0x1459: 0x40555020, 0x145a: 0x40555220, 0x145b: 0x40555420,
+	0x145c: 0x40555620, 0x145d: 0x40555820, 0x145e: 0x40555a20, 0x145f: 0x40555c20,
+	0x1460: 0x40555e20, 0x1461: 0x40556020, 0x1462: 0x40556220, 0x1463: 0x40556420,
+	0x1464: 0x40556620, 0x1465: 0x40556820, 0x1466: 0x40556a20, 0x1467: 0x40556c20,
+	0x1468: 0x40556e20, 0x1469: 0x40557020, 0x146a: 0x40557220, 0x146b: 0x40557420,
+	0x146c: 0x40557620, 0x146d: 0x40557820, 0x146e: 0x40557a20, 0x146f: 0x40557c20,
+	0x1470: 0x40557e20, 0x1471: 0x40558020, 0x1472: 0x40558220, 0x1473: 0x40558420,
+	0x1474: 0x40558620, 0x1475: 0x40558820, 0x1476: 0x40558a20, 0x1477: 0x40558c20,
+	0x1478: 0x40558e20, 0x1479: 0x40559020, 0x147a: 0x40559220, 0x147b: 0x40559420,
+	0x147c: 0x40559620, 0x147d: 0x40559820, 0x147e: 0x40559a20, 0x147f: 0x40559c20,
+	// Block 0x52, offset 0x1480
+	0x1480: 0x40559e20, 0x1481: 0x4055a020, 0x1482: 0x4055a220, 0x1483: 0x4055a420,
+	0x1484: 0x4055a620, 0x1485: 0x4055a820, 0x1486: 0x4055aa20, 0x1487: 0x4055ac20,
+	0x1488: 0x4055ae20, 0x1489: 0x4055b020, 0x148a: 0x4055b220, 0x148b: 0x4055b420,
+	0x148c: 0x4055b620, 0x148d: 0x4055b820, 0x148e: 0x4055ba20, 0x148f: 0x4055bc20,
+	0x1490: 0x4055be20, 0x1491: 0x4055c020, 0x1492: 0x4055c220, 0x1493: 0x4055c420,
+	0x1494: 0x4055c620, 0x1495: 0x4055c820, 0x1496: 0x4055ca20, 0x1497: 0x4055cc20,
+	0x1498: 0x4055ce20, 0x1499: 0x4055d020, 0x149a: 0x4055d220, 0x149b: 0x4055d420,
+	0x149c: 0x4055d620, 0x149d: 0x4055d820, 0x149e: 0x4055da20, 0x149f: 0x4055dc20,
+	0x14a0: 0x4055de20, 0x14a1: 0x4055e020, 0x14a2: 0x4055e220, 0x14a3: 0x4055e420,
+	0x14a4: 0x4055e620, 0x14a5: 0x4055e820, 0x14a6: 0x4055ea20, 0x14a7: 0x4055ec20,
+	0x14a8: 0x4055ee20, 0x14a9: 0x4055f020, 0x14aa: 0x4055f220, 0x14ab: 0x4055f420,
+	0x14ac: 0x4055f620, 0x14ad: 0x4055f820, 0x14ae: 0x4055fa20, 0x14af: 0x4055fc20,
+	0x14b0: 0x4055fe20, 0x14b1: 0x40560020, 0x14b2: 0x40560220, 0x14b3: 0x40560420,
+	0x14b4: 0x40560620, 0x14b5: 0x40560820, 0x14b6: 0x40560a20, 0x14b7: 0x40560c20,
+	0x14b8: 0x40560e20, 0x14b9: 0x40561020, 0x14ba: 0x40561220, 0x14bb: 0x40561420,
+	0x14bc: 0x40561620, 0x14bd: 0x40561820, 0x14be: 0x40561a20, 0x14bf: 0x40561c20,
+	// Block 0x53, offset 0x14c0
+	0x14c0: 0x40561e20, 0x14c1: 0x40562020, 0x14c2: 0x40562220, 0x14c3: 0x40562420,
+	0x14c4: 0x40562620, 0x14c5: 0x40562820, 0x14c6: 0x40562a20, 0x14c7: 0x40562c20,
+	0x14c8: 0x40562e20, 0x14c9: 0x40563020, 0x14ca: 0x40563220, 0x14cb: 0x40563420,
+	0x14cc: 0x40563620, 0x14cd: 0x40563820, 0x14ce: 0x40563a20, 0x14cf: 0x40563c20,
+	0x14d0: 0x40563e20, 0x14d1: 0x40564020, 0x14d2: 0x40564220, 0x14d3: 0x40564420,
+	0x14d4: 0x40564620, 0x14d5: 0x40564820, 0x14d6: 0x40564a20, 0x14d7: 0x40564c20,
+	0x14d8: 0x40564e20, 0x14d9: 0x40565020, 0x14da: 0x40565220, 0x14db: 0x40565420,
+	0x14dc: 0x40565620, 0x14dd: 0x40565820, 0x14de: 0x40565a20, 0x14df: 0x40565c20,
+	0x14e0: 0x40565e20, 0x14e1: 0x40566020, 0x14e2: 0x40566220, 0x14e3: 0x40566420,
+	0x14e4: 0x40566620, 0x14e5: 0x40566820, 0x14e6: 0x40566a20, 0x14e7: 0x40566c20,
+	0x14e8: 0x40566e20, 0x14e9: 0x40567020, 0x14ea: 0x40567220, 0x14eb: 0x40567420,
+	0x14ec: 0x40567620, 0x14ed: 0x40567820, 0x14ee: 0x40567a20, 0x14ef: 0x40567c20,
+	0x14f0: 0x40567e20, 0x14f1: 0x40568020, 0x14f2: 0x40568220, 0x14f3: 0x40568420,
+	0x14f4: 0x40568620, 0x14f5: 0x40568820, 0x14f6: 0x40568a20, 0x14f7: 0x40568c20,
+	0x14f8: 0x40568e20, 0x14f9: 0x40569020, 0x14fa: 0x40569220, 0x14fb: 0x40569420,
+	0x14fc: 0x40569620, 0x14fd: 0x40569820, 0x14fe: 0x40569a20, 0x14ff: 0x40569c20,
+	// Block 0x54, offset 0x1500
+	0x1500: 0x40569e20, 0x1501: 0x4056a020, 0x1502: 0x4056a220, 0x1503: 0x4056a420,
+	0x1504: 0x4056a620, 0x1505: 0x4056a820, 0x1506: 0x4056aa20, 0x1507: 0x4056ac20,
+	0x1508: 0x4056ae20, 0x1509: 0x4056b020, 0x150a: 0x4056b220, 0x150b: 0x4056b420,
+	0x150c: 0x4056b620, 0x150d: 0x4056b820, 0x150e: 0x4056ba20, 0x150f: 0x4056bc20,
+	0x1510: 0x4056be20, 0x1511: 0x4056c020, 0x1512: 0x4056c220, 0x1513: 0x4056c420,
+	0x1514: 0x4056c620, 0x1515: 0x4056c820, 0x1516: 0x4056ca20, 0x1517: 0x4056cc20,
+	0x1518: 0x4056ce20, 0x1519: 0x4056d020, 0x151a: 0x4056d220, 0x151b: 0x4056d420,
+	0x151c: 0x4056d620, 0x151d: 0x4056d820, 0x151e: 0x4056da20, 0x151f: 0x4056dc20,
+	0x1520: 0x4056de20, 0x1521: 0x4056e020, 0x1522: 0x4056e220, 0x1523: 0x4056e420,
+	0x1524: 0x4056e620, 0x1525: 0x4056e820, 0x1526: 0x4056ea20, 0x1527: 0x4056ec20,
+	0x1528: 0x4056ee20, 0x1529: 0x4056f020, 0x152a: 0x4056f220, 0x152b: 0x4056f420,
+	0x152c: 0x4056f620, 0x152d: 0x4056f820, 0x152e: 0x4056fa20, 0x152f: 0x4056fc20,
+	0x1530: 0x4056fe20, 0x1531: 0x40570020, 0x1532: 0x40570220, 0x1533: 0x40570420,
+	0x1534: 0x40570620, 0x1535: 0x40570820, 0x1536: 0x40570a20, 0x1537: 0x40570c20,
+	0x1538: 0x40570e20, 0x1539: 0x40571020, 0x153a: 0x40571220, 0x153b: 0x40571420,
+	0x153c: 0x40571620, 0x153d: 0x40571820, 0x153e: 0x40571a20, 0x153f: 0x40571c20,
+	// Block 0x55, offset 0x1540
+	0x1540: 0x40571e20, 0x1541: 0x40572020, 0x1542: 0x40572220, 0x1543: 0x40572420,
+	0x1544: 0x40572620, 0x1545: 0x40572820, 0x1546: 0x40572a20, 0x1547: 0x40572c20,
+	0x1548: 0x40572e20, 0x1549: 0x40573020, 0x154a: 0x40573220, 0x154b: 0x40573420,
+	0x154c: 0x40573620, 0x154d: 0x40573820, 0x154e: 0x40573a20, 0x154f: 0x40573c20,
+	0x1550: 0x40573e20, 0x1551: 0x40574020, 0x1552: 0x40574220, 0x1553: 0x40574420,
+	0x1554: 0x40574620, 0x1555: 0x40574820, 0x1556: 0x40574a20, 0x1557: 0x40574c20,
+	0x1558: 0x40574e20, 0x1559: 0x40575020, 0x155a: 0x40575220, 0x155b: 0x40575420,
+	0x155c: 0x40575620, 0x155d: 0x40575820, 0x155e: 0x40575a20, 0x155f: 0x40575c20,
+	0x1560: 0x40575e20, 0x1561: 0x40576020, 0x1562: 0x40576220, 0x1563: 0x40576420,
+	0x1564: 0x40576620, 0x1565: 0x40576820, 0x1566: 0x40576a20, 0x1567: 0x40576c20,
+	0x1568: 0x40576e20, 0x1569: 0x40577020, 0x156a: 0x40577220, 0x156b: 0x40577420,
+	0x156c: 0x40577620, 0x156d: 0x40577820, 0x156e: 0x40577a20, 0x156f: 0x40577c20,
+	0x1570: 0x40577e20, 0x1571: 0x40578020, 0x1572: 0x40578220, 0x1573: 0x40578420,
+	0x1574: 0x40578620, 0x1575: 0x40578820, 0x1576: 0x40578a20, 0x1577: 0x40578c20,
+	0x1578: 0x40578e20, 0x1579: 0x40579020, 0x157a: 0x40579220, 0x157b: 0x40579420,
+	0x157c: 0x40579620, 0x157d: 0x40579820, 0x157e: 0x40579a20, 0x157f: 0x40579c20,
+	// Block 0x56, offset 0x1580
+	0x1580: 0x40579e20, 0x1581: 0x4057a020, 0x1582: 0x4057a220, 0x1583: 0x4057a420,
+	0x1584: 0x4057a620, 0x1585: 0x4057a820, 0x1586: 0x4057aa20, 0x1587: 0x4057ac20,
+	0x1588: 0x4057ae20, 0x1589: 0x4057b020, 0x158a: 0x4057b220, 0x158b: 0x4057b420,
+	0x158c: 0x4057b620, 0x158d: 0x4057b820, 0x158e: 0x4057ba20, 0x158f: 0x4057bc20,
+	0x1590: 0x4057be20, 0x1591: 0x4057c020, 0x1592: 0x4057c220, 0x1593: 0x4057c420,
+	0x1594: 0x4057c620, 0x1595: 0x4057c820, 0x1596: 0x4057ca20, 0x1597: 0x4057cc20,
+	0x1598: 0x4057ce20, 0x1599: 0x4057d020, 0x159a: 0x4057d220, 0x159b: 0x4057d420,
+	0x159c: 0x4057d620, 0x159d: 0x4057d820, 0x159e: 0x4057da20, 0x159f: 0x4057dc20,
+	0x15a0: 0x4057de20, 0x15a1: 0x4057e020, 0x15a2: 0x4057e220, 0x15a3: 0x4057e420,
+	0x15a4: 0x4057e620, 0x15a5: 0x4057e820, 0x15a6: 0x4057ea20, 0x15a7: 0x4057ec20,
+	0x15a8: 0x4057ee20, 0x15a9: 0x4057f020, 0x15aa: 0x4057f220, 0x15ab: 0x4057f420,
+	0x15ac: 0x4057f620, 0x15ad: 0x4057f820, 0x15ae: 0x4057fa20, 0x15af: 0x4057fc20,
+	0x15b0: 0x4057fe20, 0x15b1: 0x40580020, 0x15b2: 0x40580220, 0x15b3: 0x40580420,
+	0x15b4: 0x40580620, 0x15b5: 0x40580820, 0x15b6: 0x40580a20, 0x15b7: 0x40580c20,
+	0x15b8: 0x40580e20, 0x15b9: 0x40581020, 0x15ba: 0x40581220, 0x15bb: 0x40581420,
+	0x15bc: 0x40587a20, 0x15bd: 0x40581620, 0x15be: 0x40581a20, 0x15bf: 0x40581c20,
+	// Block 0x57, offset 0x15c0
+	0x15c0: 0x40581e20, 0x15c1: 0x40582020, 0x15c2: 0x40582220, 0x15c3: 0x40582420,
+	0x15c4: 0x40582620, 0x15c5: 0x40582820, 0x15c6: 0x40582a20, 0x15c7: 0x40582c20,
+	0x15c8: 0x40582e20, 0x15c9: 0x40583020, 0x15ca: 0x40583220, 0x15cb: 0x40583420,
+	0x15cc: 0x40583620, 0x15cd: 0x40583820, 0x15ce: 0x40583c20, 0x15cf: 0x40583e20,
+	0x15d0: 0x40584020, 0x15d1: 0x40584220, 0x15d2: 0x40584420, 0x15d3: 0x40584620,
+	0x15d4: 0x40584820, 0x15d5: 0x40584a20, 0x15d6: 0x40585820, 0x15d7: 0x40585a20,
+	0x15d8: 0x40585c20, 0x15d9: 0x40585e20, 0x15da: 0x40586020, 0x15db: 0x40586220,
+	0x15dc: 0x40586420, 0x15dd: 0x40586620, 0x15de: 0x40586820, 0x15df: 0x40586a20,
+	0x15e0: 0x40586c20, 0x15e1: 0x40586e20, 0x15e2: 0x40587020, 0x15e3: 0x40587220,
+	0x15e4: 0x40587420, 0x15e5: 0x40587620, 0x15e6: 0x40587820, 0x15e7: 0x40587c20,
+	0x15e8: 0x40587e20, 0x15e9: 0x40588020, 0x15ea: 0x40588220, 0x15eb: 0x40588420,
+	0x15ec: 0x40588620, 0x15ed: 0x40588820, 0x15ee: 0x40588a20, 0x15ef: 0x40588c20,
+	0x15f0: 0x40588e20, 0x15f1: 0x40589020, 0x15f2: 0x40589220, 0x15f3: 0x40589420,
+	0x15f4: 0x40589620, 0x15f5: 0x40589820, 0x15f6: 0x40589a20, 0x15f7: 0x40589c20,
+	0x15f8: 0x40589e20, 0x15f9: 0x4058a020, 0x15fa: 0x4058a220, 0x15fb: 0x4058a420,
+	0x15fc: 0x4058a620, 0x15fd: 0x4058a820, 0x15fe: 0x4058aa20, 0x15ff: 0x4058ac20,
+	// Block 0x58, offset 0x1600
+	0x1600: 0x4058ae20, 0x1601: 0x4058b020, 0x1602: 0x4058b220, 0x1603: 0x4058b420,
+	0x1604: 0x4058b620, 0x1605: 0x4058b820, 0x1606: 0x4058ba20, 0x1607: 0x4058bc20,
+	0x1608: 0x4058be20, 0x1609: 0x4058c020, 0x160a: 0x4058c220, 0x160b: 0x4058c420,
+	0x160c: 0x4058c620, 0x160d: 0x4058c820, 0x160e: 0x4058ca20, 0x160f: 0x4058cc20,
+	0x1610: 0x4058ce20, 0x1611: 0x4058d020, 0x1612: 0x4058d220, 0x1613: 0x4058d420,
+	0x1614: 0x4058d620, 0x1615: 0x4058d820, 0x1616: 0x4058da20, 0x1617: 0x4058dc20,
+	0x1618: 0x4058de20, 0x1619: 0x4058e020, 0x161a: 0x4058e220, 0x161b: 0x4058e420,
+	0x161c: 0x4058e620, 0x161d: 0x4058e820, 0x161e: 0x4058ea20, 0x161f: 0x4058ec20,
+	0x1620: 0x4058ee20, 0x1621: 0x4058f020, 0x1622: 0x4058f220, 0x1623: 0x4058f420,
+	0x1624: 0x4058f620, 0x1625: 0x4058f820, 0x1626: 0x4058fa20, 0x1627: 0x4058fc20,
+	0x1628: 0x4058fe20, 0x1629: 0x40590020, 0x162a: 0x40590220, 0x162b: 0x40590420,
+	0x162c: 0x40590620, 0x162d: 0x40590820, 0x162e: 0x40590a20, 0x162f: 0x40590c20,
+	0x1630: 0x40590e20, 0x1631: 0x40591020, 0x1632: 0x40591220, 0x1633: 0x40591420,
+	0x1634: 0x40591620, 0x1635: 0x40591820, 0x1636: 0x40591a20, 0x1637: 0x40591c20,
+	0x1638: 0x40591e20, 0x1639: 0x40592020, 0x163a: 0x40592220, 0x163b: 0x40592420,
+	0x163c: 0x40592620, 0x163d: 0x40592820, 0x163e: 0x40592a20, 0x163f: 0x40592c20,
+	// Block 0x59, offset 0x1640
+	0x1640: 0x40592e20, 0x1641: 0x40593020, 0x1642: 0x40593220, 0x1643: 0x40593420,
+	0x1644: 0x40593620, 0x1645: 0x40593820, 0x1646: 0x40593a20, 0x1647: 0x40593c20,
+	0x1648: 0x40593e20, 0x1649: 0x40594020, 0x164a: 0x40594220, 0x164b: 0x40594420,
+	0x164c: 0x40594620, 0x164d: 0x40594820, 0x164e: 0x40594a20, 0x164f: 0x40594c20,
+	0x1650: 0x40594e20, 0x1651: 0x40595020, 0x1652: 0x40595220, 0x1653: 0x40595420,
+	0x1654: 0x40595620, 0x1655: 0x40595820, 0x1656: 0x40595a20, 0x1657: 0x40595c20,
+	0x1658: 0x40595e20, 0x1659: 0x40596020, 0x165a: 0x40596220, 0x165b: 0x40596420,
+	0x165c: 0x40596620, 0x165d: 0x40596820, 0x165e: 0x40596a20, 0x165f: 0x40596c20,
+	0x1660: 0x40596e20, 0x1661: 0x40597020, 0x1662: 0x40597220, 0x1663: 0x40597420,
+	0x1664: 0x40597620, 0x1665: 0x40597820, 0x1666: 0x40597a20, 0x1667: 0x40597c20,
+	0x1668: 0x40597e20, 0x1669: 0x40598020, 0x166a: 0x40598220, 0x166b: 0x40598420,
+	0x166c: 0x40598620, 0x166d: 0x40598820, 0x166e: 0x40598a20, 0x166f: 0x40598c20,
+	0x1670: 0x40598e20, 0x1671: 0x40599020, 0x1672: 0x40599220, 0x1673: 0x40599420,
+	0x1674: 0x40599620, 0x1675: 0x40599820, 0x1676: 0x40599a20, 0x1677: 0x40599c20,
+	0x1678: 0x40599e20, 0x1679: 0x4059a020, 0x167a: 0x4059a220, 0x167b: 0x4059a420,
+	0x167c: 0x4059a620, 0x167d: 0x4059a820, 0x167e: 0x4059aa20, 0x167f: 0x4059ac20,
+	// Block 0x5a, offset 0x1680
+	0x1680: 0x4059ae20, 0x1681: 0x4059b020, 0x1682: 0x4059b220, 0x1683: 0x4059b420,
+	0x1684: 0x4059b620, 0x1685: 0x4059b820, 0x1686: 0x4059ba20, 0x1687: 0x4059bc20,
+	0x1688: 0x4059be20, 0x1689: 0x4059c020, 0x168a: 0x4059c220, 0x168b: 0x4059c420,
+	0x168c: 0x4059c620, 0x168d: 0x4059c820, 0x168e: 0x4059ca20, 0x168f: 0x4059cc20,
+	0x1690: 0x4059ce20, 0x1691: 0x4059d020, 0x1692: 0x4059d220, 0x1693: 0x4059d420,
+	0x1694: 0x4059d620, 0x1695: 0x4059d820, 0x1696: 0x4059da20, 0x1697: 0x4059dc20,
+	0x1698: 0x4059de20, 0x1699: 0x4059e020, 0x169a: 0x4059e220, 0x169b: 0x4059e420,
+	0x169c: 0x4059e620, 0x169d: 0x4059e820, 0x169e: 0x4059ea20, 0x169f: 0x4059ec20,
+	0x16a0: 0x4059ee20, 0x16a1: 0x4059f020, 0x16a2: 0x4059f220, 0x16a3: 0x4059f420,
+	0x16a4: 0x4059f620, 0x16a5: 0x4059f820, 0x16a6: 0x4059fa20, 0x16a7: 0x4059fc20,
+	0x16a8: 0x4059fe20, 0x16a9: 0x405a0020, 0x16aa: 0x405a0220, 0x16ab: 0x405a0420,
+	0x16ac: 0x405a0620, 0x16ad: 0x4005d420, 0x16ae: 0x4002f420, 0x16af: 0x40581820,
+	0x16b0: 0x40583a20, 0x16b1: 0x40584c20, 0x16b2: 0x40584e20, 0x16b3: 0x40585020,
+	0x16b4: 0x40585220, 0x16b5: 0x40585420, 0x16b6: 0x40585620, 0x16b7: 0x405a0820,
+	0x16b8: 0x405a0a20, 0x16b9: 0x405a0c20, 0x16ba: 0x405a0e20, 0x16bb: 0x405a1020,
+	0x16bc: 0x405a1220, 0x16bd: 0x405a1420, 0x16be: 0x405a1620, 0x16bf: 0x405a1820,
+	// Block 0x5b, offset 0x16c0
+	0x16c0: 0x00021284, 0x16c1: 0x405aa620, 0x16c2: 0x405aa820, 0x16c3: 0x405aaa20,
+	0x16c4: 0x405aac20, 0x16c5: 0x405aae20, 0x16c6: 0x405ab020, 0x16c7: 0x405ab220,
+	0x16c8: 0x405ab420, 0x16c9: 0x405ab620, 0x16ca: 0x405ab820, 0x16cb: 0x405aba20,
+	0x16cc: 0x405abc20, 0x16cd: 0x405abe20, 0x16ce: 0x405ac020, 0x16cf: 0x405ac220,
+	0x16d0: 0x405ac420, 0x16d1: 0x405ac620, 0x16d2: 0x405ac820, 0x16d3: 0x405aca20,
+	0x16d4: 0x405acc20, 0x16d5: 0x405ace20, 0x16d6: 0x405ad020, 0x16d7: 0x405ad220,
+	0x16d8: 0x405ad420, 0x16d9: 0x405ad620, 0x16da: 0x405ad820, 0x16db: 0x40040820,
+	0x16dc: 0x40040a20,
+	0x16e0: 0x405ada20, 0x16e1: 0xe000202d, 0x16e2: 0x405adc20, 0x16e3: 0x405b1420,
+	0x16e4: 0xe0002030, 0x16e5: 0xe0002033, 0x16e6: 0x405ade20, 0x16e7: 0xe0002036,
+	0x16e8: 0x405ae020, 0x16e9: 0xe000203c, 0x16ea: 0x405b1020, 0x16eb: 0x405b1220,
+	0x16ec: 0xe000203f, 0x16ed: 0xe0002042, 0x16ee: 0xe0002045, 0x16ef: 0x405ae220,
+	0x16f0: 0x405ae420, 0x16f1: 0x405ae620, 0x16f2: 0x405ae820, 0x16f3: 0xe0002048,
+	0x16f4: 0xe000204b, 0x16f5: 0xe000204e, 0x16f6: 0xe0002051, 0x16f7: 0x405aea20,
+	0x16f8: 0x405b1a20, 0x16f9: 0x405aec20, 0x16fa: 0x405aee20, 0x16fb: 0xe0002057,
+	0x16fc: 0xe000205a, 0x16fd: 0xe000205d, 0x16fe: 0x405af020, 0x16ff: 0xe0002060,
+	// Block 0x5c, offset 0x1700
+	0x1700: 0xe0002063, 0x1701: 0x405af220, 0x1702: 0xe0002066, 0x1703: 0x405af420,
+	0x1704: 0xe0002069, 0x1705: 0x405af620, 0x1706: 0xe000206c, 0x1707: 0x405af820,
+	0x1708: 0x405afa20, 0x1709: 0x405afc20, 0x170a: 0x405afe20, 0x170b: 0xe0002075,
+	0x170c: 0xe000207b, 0x170d: 0xe000207e, 0x170e: 0xe0002081, 0x170f: 0x405b0020,
+	0x1710: 0xe0002084, 0x1711: 0xe0002087, 0x1712: 0x405b0220, 0x1713: 0xe000208a,
+	0x1714: 0xe000208d, 0x1715: 0xe0002072, 0x1716: 0x405b0420, 0x1717: 0x405b0620,
+	0x1718: 0xe0002090, 0x1719: 0xe0002093, 0x171a: 0x405b0820, 0x171b: 0xe000209b,
+	0x171c: 0x405b0a20, 0x171d: 0xe000209e, 0x171e: 0x405b0c20, 0x171f: 0x405b0e20,
+	0x1720: 0x405b1620, 0x1721: 0x405b1e20, 0x1722: 0x405b2020, 0x1723: 0x405b1820,
+	0x1724: 0x405b1c20, 0x1725: 0x405b2220, 0x1726: 0x405b2420, 0x1727: 0xe00020a1,
+	0x1728: 0xe00020a4, 0x1729: 0xe0002054, 0x172a: 0xe0002078, 0x172b: 0x4002b220,
+	0x172c: 0x4002b420, 0x172d: 0x4002b620, 0x172e: 0xe000206f, 0x172f: 0xe0002096,
+	0x1730: 0xe0002039,
+	// Block 0x5d, offset 0x1740
+	0x1740: 0x404c7620, 0x1741: 0x404c7820, 0x1742: 0x404c7a20, 0x1743: 0x404c7c20,
+	0x1744: 0x404c7e20, 0x1745: 0x404c8020, 0x1746: 0x404c8220, 0x1747: 0x404c8420,
+	0x1748: 0x404c8620, 0x1749: 0x404c8820, 0x174a: 0x404c8a20, 0x174b: 0x404c8c20,
+	0x174c: 0x404c8e20, 0x174e: 0x404c9020, 0x174f: 0x404c9220,
+	0x1750: 0x404c9420, 0x1751: 0x404c9620, 0x1752: 0x404c9820, 0x1753: 0x404c9a20,
+	0x1754: 0x8209264e,
+	0x1760: 0x404c9e20, 0x1761: 0x404ca020, 0x1762: 0x404ca220, 0x1763: 0x404ca420,
+	0x1764: 0x404ca620, 0x1765: 0x404ca820, 0x1766: 0x404caa20, 0x1767: 0x404cac20,
+	0x1768: 0x404cae20, 0x1769: 0x404cb020, 0x176a: 0x404cb220, 0x176b: 0x404cb420,
+	0x176c: 0x404cb620, 0x176d: 0x404cb820, 0x176e: 0x404cba20, 0x176f: 0x404cbc20,
+	0x1770: 0x404cbe20, 0x1771: 0x404cc020, 0x1772: 0x404cc220, 0x1773: 0x404cc420,
+	0x1774: 0x82092663, 0x1775: 0x40031c20, 0x1776: 0x40031e20,
+	// Block 0x5e, offset 0x1780
+	0x1780: 0x404cc820, 0x1781: 0x404cca20, 0x1782: 0x404ccc20, 0x1783: 0x404cce20,
+	0x1784: 0x404cd020, 0x1785: 0x404cd220, 0x1786: 0x404cd420, 0x1787: 0x404cd620,
+	0x1788: 0x404cd820, 0x1789: 0x404cda20, 0x178a: 0x404cdc20, 0x178b: 0x404cde20,
+	0x178c: 0x404ce020, 0x178d: 0x404ce220, 0x178e: 0x404ce420, 0x178f: 0x404ce620,
+	0x1790: 0x404ce820, 0x1791: 0x404cea20, 0x1792: 0x404cec20, 0x1793: 0x404cee20,
+	0x17a0: 0x404cf020, 0x17a1: 0x404cf220, 0x17a2: 0x404cf420, 0x17a3: 0x404cf620,
+	0x17a4: 0x404cf820, 0x17a5: 0x404cfa20, 0x17a6: 0x404cfc20, 0x17a7: 0x404cfe20,
+	0x17a8: 0x404d0020, 0x17a9: 0x404d0220, 0x17aa: 0x404d0420, 0x17ab: 0x404d0620,
+	0x17ac: 0x404d0820, 0x17ae: 0x404d0a20, 0x17af: 0x404d0c20,
+	0x17b0: 0x404d0e20, 0x17b2: 0x404d1020, 0x17b3: 0x404d1220,
+	// Block 0x5f, offset 0x17c0
+	0x17c0: 0x404fa420, 0x17c1: 0x404fa620, 0x17c2: 0x404fa820, 0x17c3: 0x404faa20,
+	0x17c4: 0x404fac20, 0x17c5: 0x404fae20, 0x17c6: 0x404fb020, 0x17c7: 0x404fb220,
+	0x17c8: 0x404fb420, 0x17c9: 0x404fb620, 0x17ca: 0x404fb820, 0x17cb: 0x404fba20,
+	0x17cc: 0x404fbc20, 0x17cd: 0x404fbe20, 0x17ce: 0x404fc020, 0x17cf: 0x404fc220,
+	0x17d0: 0x404fc420, 0x17d1: 0x404fc620, 0x17d2: 0x404fc820, 0x17d3: 0x404fca20,
+	0x17d4: 0x404fcc20, 0x17d5: 0x404fce20, 0x17d6: 0x404fd020, 0x17d7: 0x404fd220,
+	0x17d8: 0x404fd420, 0x17d9: 0x404fd620, 0x17da: 0x404fd820, 0x17db: 0x404fda20,
+	0x17dc: 0x404fdc20, 0x17dd: 0x404fde20, 0x17de: 0x404fe020, 0x17df: 0x404fe220,
+	0x17e0: 0x404fe420, 0x17e1: 0x404fe620, 0x17e2: 0x404fe820, 0x17e3: 0x404fec20,
+	0x17e4: 0x404fee20, 0x17e5: 0x404ff020, 0x17e6: 0x404ff220, 0x17e7: 0x404ff420,
+	0x17e8: 0x404ff620, 0x17e9: 0x404ff820, 0x17ea: 0x404ffa20, 0x17eb: 0x404ffc20,
+	0x17ec: 0x404ffe20, 0x17ed: 0x40500020, 0x17ee: 0x40500220, 0x17ef: 0x40500420,
+	0x17f0: 0x40500620, 0x17f1: 0x40500820, 0x17f2: 0x40500a20, 0x17f3: 0x40500c20,
+	0x17f4: 0xa0000000, 0x17f5: 0xa0000000, 0x17f6: 0x40500e20, 0x17f7: 0x40501020,
+	0x17f8: 0x40501220, 0x17f9: 0x40501420, 0x17fa: 0x40501620, 0x17fb: 0x40501820,
+	0x17fc: 0x40501a20, 0x17fd: 0x40501c20, 0x17fe: 0x40501e20, 0x17ff: 0x40502020,
+	// Block 0x60, offset 0x1800
+	0x1800: 0x40502220, 0x1801: 0x40502420, 0x1802: 0x40502620, 0x1803: 0x40502820,
+	0x1804: 0x40502a20, 0x1805: 0x40502c20, 0x1806: 0xa000f302, 0x1807: 0xa000f402,
+	0x1808: 0xa0011402, 0x1809: 0xa0011502, 0x180a: 0xa0011602, 0x180b: 0xa0005f02,
+	0x180c: 0xa0005f02, 0x180d: 0xa0005f02, 0x180e: 0xa0005f02, 0x180f: 0xa0005f02,
+	0x1810: 0xa0005f02, 0x1811: 0xa0005f02, 0x1812: 0x82092817, 0x1813: 0xa0000000,
+	0x1814: 0x40032620, 0x1815: 0x40032820, 0x1816: 0x4002ac20, 0x1817: 0x4027bc20,
+	0x1818: 0x4005bc20, 0x1819: 0x4005be20, 0x181a: 0x4005c020, 0x181b: 0x4027f620,
+	0x181c: 0x404fea20, 0x181d: 0xae605f02,
+	0x1820: 0xe00001b5, 0x1821: 0xe0000249, 0x1822: 0xe0000361, 0x1823: 0xe000043b,
+	0x1824: 0xe0000510, 0x1825: 0xe00005da, 0x1826: 0xe00006a5, 0x1827: 0xe000074d,
+	0x1828: 0xe00007f9, 0x1829: 0xe000089e,
+	0x1830: 0xe00001b8, 0x1831: 0xe000024c, 0x1832: 0xe0000364, 0x1833: 0xe000043e,
+	0x1834: 0xe0000513, 0x1835: 0xe00005dd, 0x1836: 0xe00006a8, 0x1837: 0xe0000750,
+	0x1838: 0xe00007fc, 0x1839: 0xe00008a1,
+	// Block 0x61, offset 0x1840
+	0x1840: 0x40056a20, 0x1841: 0x4002e620, 0x1842: 0x40025220, 0x1843: 0x4002f020,
+	0x1844: 0x4002a620, 0x1845: 0x4002a820, 0x1846: 0x40022220, 0x1847: 0x40022420,
+	0x1848: 0x40025420, 0x1849: 0x4002f220, 0x184a: 0xa0000000, 0x184b: 0xa0000000,
+	0x184c: 0xa0000000, 0x184d: 0xa0000000, 0x184e: 0x40020c20,
+	0x1850: 0xe00001c7, 0x1851: 0xe000025b, 0x1852: 0xe0000373, 0x1853: 0xe000044d,
+	0x1854: 0xe0000522, 0x1855: 0xe00005ec, 0x1856: 0xe00006b7, 0x1857: 0xe000075f,
+	0x1858: 0xe000080b, 0x1859: 0xe00008b0,
+	0x1860: 0x40533820, 0x1861: 0x40533c20, 0x1862: 0x40534220, 0x1863: 0x40534e20,
+	0x1864: 0x40535220, 0x1865: 0x40535820, 0x1866: 0x40535c20, 0x1867: 0x40536220,
+	0x1868: 0x40536420, 0x1869: 0x40536620, 0x186a: 0x40537020, 0x186b: 0x40537420,
+	0x186c: 0x40537a20, 0x186d: 0x40537e20, 0x186e: 0x40538820, 0x186f: 0x40538c20,
+	0x1870: 0x40538e20, 0x1871: 0x40539020, 0x1872: 0x40539e20, 0x1873: 0x4053a420,
+	0x1874: 0x4053aa20, 0x1875: 0x4053b420, 0x1876: 0x4053bc20, 0x1877: 0x4053c220,
+	0x1878: 0x4053c620, 0x1879: 0x4053ca20, 0x187a: 0x4053d020, 0x187b: 0x4053da20,
+	0x187c: 0x4053dc20, 0x187d: 0x4053e220, 0x187e: 0x4053ea20, 0x187f: 0x4053f020,
+	// Block 0x62, offset 0x1880
+	0x1880: 0x4053f220, 0x1881: 0x4053f420, 0x1882: 0x4053f620, 0x1883: 0x40533620,
+	0x1884: 0x40533e20, 0x1885: 0x40534420, 0x1886: 0x40535020, 0x1887: 0x40535420,
+	0x1888: 0x40535a20, 0x1889: 0x40535e20, 0x188a: 0x40536820, 0x188b: 0x40537220,
+	0x188c: 0x40537620, 0x188d: 0x40537c20, 0x188e: 0x40538020, 0x188f: 0x40538a20,
+	0x1890: 0x4053a020, 0x1891: 0x4053a620, 0x1892: 0x4053ac20, 0x1893: 0x4053b620,
+	0x1894: 0x4053de20, 0x1895: 0x4053be20, 0x1896: 0x4053c820, 0x1897: 0x4053d220,
+	0x1898: 0x4053e620, 0x1899: 0x4053ec20, 0x189a: 0x4053f820, 0x189b: 0x4053fa20,
+	0x189c: 0x4053b020, 0x189d: 0x40534020, 0x189e: 0x40534620, 0x189f: 0x40534c20,
+	0x18a0: 0x40536020, 0x18a1: 0x40535620, 0x18a2: 0x40536a20, 0x18a3: 0x4053d420,
+	0x18a4: 0x40538220, 0x18a5: 0x40538620, 0x18a6: 0x40537820, 0x18a7: 0x40539220,
+	0x18a8: 0x4053a220, 0x18a9: 0x4053a820, 0x18aa: 0x4053b820, 0x18ab: 0x4053cc20,
+	0x18ac: 0x4053e820, 0x18ad: 0x4053ee20, 0x18ae: 0x4053e020, 0x18af: 0x4053e420,
+	0x18b0: 0x4053fc20, 0x18b1: 0x4053ae20, 0x18b2: 0x4053c020, 0x18b3: 0x40534820,
+	0x18b4: 0x4053d620, 0x18b5: 0x4053c420, 0x18b6: 0x4053ce20, 0x18b7: 0x4053ba20,
+	// Block 0x63, offset 0x18c0
+	0x18c0: 0x40532820, 0x18c1: 0x40532a20, 0x18c2: 0x40532c20, 0x18c3: 0x40532e20,
+	0x18c4: 0x40533020, 0x18c5: 0x40533220, 0x18c6: 0x40533420, 0x18c7: 0x40533a20,
+	0x18c8: 0x40534a20, 0x18c9: 0x4053d820, 0x18ca: 0x40536c20, 0x18cb: 0x4053b220,
+	0x18cc: 0x4053fe20, 0x18cd: 0x40540220, 0x18ce: 0x40540420, 0x18cf: 0x40540820,
+	0x18d0: 0x40540a20, 0x18d1: 0x40541020, 0x18d2: 0x40541420, 0x18d3: 0x40541620,
+	0x18d4: 0x40541a20, 0x18d5: 0x40541e20, 0x18d6: 0x40542220, 0x18d7: 0x40542420,
+	0x18d8: 0x40540c20, 0x18d9: 0x40542020, 0x18da: 0x40538420, 0x18db: 0x40536e20,
+	0x18dc: 0x40539420, 0x18dd: 0x40539620, 0x18de: 0x40540020, 0x18df: 0x40540620,
+	0x18e0: 0x40540e20, 0x18e1: 0x40541220, 0x18e2: 0x40539820, 0x18e3: 0x40541c20,
+	0x18e4: 0x40539a20, 0x18e5: 0x40539c20, 0x18e6: 0x40542620, 0x18e7: 0x40542820,
+	0x18e8: 0x40541820, 0x18e9: 0x82e42a16, 0x18ea: 0x40542a20,
+	0x18f0: 0x405a1a20, 0x18f1: 0x405a1c20, 0x18f2: 0x405a1e20, 0x18f3: 0x405a2020,
+	0x18f4: 0x405a2220, 0x18f5: 0x405a2420, 0x18f6: 0x405a2620, 0x18f7: 0x405a2820,
+	0x18f8: 0x405a2a20, 0x18f9: 0x405a2c20, 0x18fa: 0x405a2e20, 0x18fb: 0x405a3020,
+	0x18fc: 0x405a3220, 0x18fd: 0x405a3420, 0x18fe: 0x405a3620, 0x18ff: 0x405a3820,
+	// Block 0x64, offset 0x1900
+	0x1900: 0x405a3a20, 0x1901: 0x405a3c20, 0x1902: 0x405a3e20, 0x1903: 0x405a4020,
+	0x1904: 0x405a4220, 0x1905: 0x405a4420, 0x1906: 0x405a4620, 0x1907: 0x405a4820,
+	0x1908: 0x405a4a20, 0x1909: 0x405a4c20, 0x190a: 0x405a4e20, 0x190b: 0x405a5020,
+	0x190c: 0x405a5220, 0x190d: 0x405a5420, 0x190e: 0x405a5620, 0x190f: 0x405a5820,
+	0x1910: 0x405a5a20, 0x1911: 0x405a5c20, 0x1912: 0x405a5e20, 0x1913: 0x405a6020,
+	0x1914: 0x405a6220, 0x1915: 0x405a6420, 0x1916: 0x405a6620, 0x1917: 0x405a6820,
+	0x1918: 0x405a6a20, 0x1919: 0x405a6c20, 0x191a: 0x405a6e20, 0x191b: 0x405a7020,
+	0x191c: 0x405a7220, 0x191d: 0x405a7420, 0x191e: 0x405a7620, 0x191f: 0x405a7820,
+	0x1920: 0x405a7a20, 0x1921: 0x405a7c20, 0x1922: 0x405a7e20, 0x1923: 0x405a8020,
+	0x1924: 0x405a8220, 0x1925: 0x405a8420, 0x1926: 0x405a8620, 0x1927: 0x405a8820,
+	0x1928: 0x405a8a20, 0x1929: 0x405a8c20, 0x192a: 0x405a8e20, 0x192b: 0x405a9020,
+	0x192c: 0x405a9220, 0x192d: 0x405a9420, 0x192e: 0x405a9620, 0x192f: 0x405a9820,
+	0x1930: 0x405a9a20, 0x1931: 0x405a9c20, 0x1932: 0x405a9e20, 0x1933: 0x405aa020,
+	0x1934: 0x405aa220, 0x1935: 0x405aa420,
+	// Block 0x65, offset 0x1940
+	0x1940: 0x404c1220, 0x1941: 0x404c1420, 0x1942: 0x404c1620, 0x1943: 0x404c1820,
+	0x1944: 0x404c1a20, 0x1945: 0x404c1c20, 0x1946: 0x404c1e20, 0x1947: 0x404c2020,
+	0x1948: 0x404c2220, 0x1949: 0x404c2420, 0x194a: 0x404c2620, 0x194b: 0x404c2820,
+	0x194c: 0x404c2a20, 0x194d: 0x404c2c20, 0x194e: 0x404c2e20, 0x194f: 0x404c3020,
+	0x1950: 0x404c3220, 0x1951: 0x404c3420, 0x1952: 0x404c3620, 0x1953: 0x404c3820,
+	0x1954: 0x404c3a20, 0x1955: 0x404c3c20, 0x1956: 0x404c3e20, 0x1957: 0x404c4020,
+	0x1958: 0x404c4220, 0x1959: 0x404c4420, 0x195a: 0x404c4620, 0x195b: 0x404c4820,
+	0x195c: 0x404c4a20,
+	0x1960: 0x404c4c20, 0x1961: 0x404c4e20, 0x1962: 0x404c5020, 0x1963: 0x404c5220,
+	0x1964: 0x404c5420, 0x1965: 0x404c5620, 0x1966: 0x404c5820, 0x1967: 0x404c5a20,
+	0x1968: 0x404c5c20, 0x1969: 0x404c5e20, 0x196a: 0x404c6020, 0x196b: 0x404c6220,
+	0x1970: 0x404c6420, 0x1971: 0x404c6620, 0x1972: 0x404c6820, 0x1973: 0x404c6a20,
+	0x1974: 0x404c6c20, 0x1975: 0x404c6e20, 0x1976: 0x404c7020, 0x1977: 0x404c7220,
+	0x1978: 0x404c7420, 0x1979: 0xade11f02, 0x197a: 0xae612002, 0x197b: 0xadc12102,
+	// Block 0x66, offset 0x1980
+	0x1980: 0x4007a620,
+	0x1984: 0x4002c220, 0x1985: 0x4002d220, 0x1986: 0xe000018e, 0x1987: 0xe000021f,
+	0x1988: 0xe000033a, 0x1989: 0xe0000414, 0x198a: 0xe00004e9, 0x198b: 0xe00005b3,
+	0x198c: 0xe000067e, 0x198d: 0xe0000726, 0x198e: 0xe00007d2, 0x198f: 0xe0000877,
+	0x1990: 0x40503020, 0x1991: 0x40503220, 0x1992: 0x40503420, 0x1993: 0x40503620,
+	0x1994: 0x40503820, 0x1995: 0x40503a20, 0x1996: 0x40503c20, 0x1997: 0x40503e20,
+	0x1998: 0x40504020, 0x1999: 0x40504220, 0x199a: 0x40504420, 0x199b: 0x40504620,
+	0x199c: 0x40504820, 0x199d: 0x40504a20, 0x199e: 0x40504c20, 0x199f: 0x40504e20,
+	0x19a0: 0x40505020, 0x19a1: 0x40505220, 0x19a2: 0x40505420, 0x19a3: 0x40505620,
+	0x19a4: 0x40505820, 0x19a5: 0x40505a20, 0x19a6: 0x40505c20, 0x19a7: 0x40505e20,
+	0x19a8: 0x40506020, 0x19a9: 0x40506220, 0x19aa: 0x40506420, 0x19ab: 0x40506620,
+	0x19ac: 0x40506820, 0x19ad: 0x40506a20,
+	0x19b0: 0x40506c20, 0x19b1: 0x40506e20, 0x19b2: 0x40507020, 0x19b3: 0x40507220,
+	0x19b4: 0x40507420,
+	// Block 0x67, offset 0x19c0
+	0x19c0: 0x40507620, 0x19c1: 0x40507820, 0x19c2: 0x40507a20, 0x19c3: 0x40507c20,
+	0x19c4: 0x40507e20, 0x19c5: 0x40508020, 0x19c6: 0x40508220, 0x19c7: 0x40508420,
+	0x19c8: 0x40508620, 0x19c9: 0x40508820, 0x19ca: 0x40508a20, 0x19cb: 0x40508c20,
+	0x19cc: 0x40508e20, 0x19cd: 0x40509020, 0x19ce: 0x40509220, 0x19cf: 0x40509420,
+	0x19d0: 0x40509620, 0x19d1: 0x40509820, 0x19d2: 0x40509a20, 0x19d3: 0x40509c20,
+	0x19d4: 0x40509e20, 0x19d5: 0x4050a020, 0x19d6: 0x4050a220, 0x19d7: 0x4050a420,
+	0x19d8: 0x4050a620, 0x19d9: 0x4050a820, 0x19da: 0x4050aa20, 0x19db: 0x4050ac20,
+	0x19dc: 0x4050ae20, 0x19dd: 0x4050b020, 0x19de: 0x4050b220, 0x19df: 0x4050b420,
+	0x19e0: 0x4050b620, 0x19e1: 0x4050b820, 0x19e2: 0x4050ba20, 0x19e3: 0x4050bc20,
+	0x19e4: 0x4050be20, 0x19e5: 0x4050c020, 0x19e6: 0x4050c220, 0x19e7: 0x4050c420,
+	0x19e8: 0x4050c620, 0x19e9: 0x4050c820, 0x19ea: 0x4050ca20, 0x19eb: 0x4050cc20,
+	0x19f0: 0x4050ce20, 0x19f1: 0x4050d020, 0x19f2: 0x4050d220, 0x19f3: 0x4050d420,
+	0x19f4: 0x4050d620, 0x19f5: 0x4050d820, 0x19f6: 0x4050da20, 0x19f7: 0x4050dc20,
+	0x19f8: 0x4050de20, 0x19f9: 0x4050e020, 0x19fa: 0x4050e220, 0x19fb: 0x4050e420,
+	0x19fc: 0x4050e620, 0x19fd: 0x4050e820, 0x19fe: 0x4050ea20, 0x19ff: 0x4050ec20,
+	// Block 0x68, offset 0x1a00
+	0x1a00: 0x4050ee20, 0x1a01: 0x4050f020, 0x1a02: 0x4050f220, 0x1a03: 0x4050f420,
+	0x1a04: 0x4050f620, 0x1a05: 0x4050f820, 0x1a06: 0x4050fa20, 0x1a07: 0x4050fc20,
+	0x1a08: 0x4050fe20, 0x1a09: 0x40510020,
+	0x1a10: 0xe0000191, 0x1a11: 0xe0000222, 0x1a12: 0xe000033d, 0x1a13: 0xe0000417,
+	0x1a14: 0xe00004ec, 0x1a15: 0xe00005b6, 0x1a16: 0xe0000681, 0x1a17: 0xe0000729,
+	0x1a18: 0xe00007d5, 0x1a19: 0xe000087a, 0x1a1a: 0xe0000225,
+	0x1a1e: 0xe0002022, 0x1a1f: 0xe0002025,
+	0x1a20: 0x4007b220, 0x1a21: 0x4007b420, 0x1a22: 0x4007b620, 0x1a23: 0x4007b820,
+	0x1a24: 0x4007ba20, 0x1a25: 0x4007bc20, 0x1a26: 0x4007be20, 0x1a27: 0x4007c020,
+	0x1a28: 0x4007c220, 0x1a29: 0x4007c420, 0x1a2a: 0x4007c620, 0x1a2b: 0x4007c820,
+	0x1a2c: 0x4007ca20, 0x1a2d: 0x4007cc20, 0x1a2e: 0x4007ce20, 0x1a2f: 0x4007d020,
+	0x1a30: 0x4007d220, 0x1a31: 0x4007d420, 0x1a32: 0x4007d620, 0x1a33: 0x4007d820,
+	0x1a34: 0x4007da20, 0x1a35: 0x4007dc20, 0x1a36: 0x4007de20, 0x1a37: 0x4007e020,
+	0x1a38: 0x4007e220, 0x1a39: 0x4007e420, 0x1a3a: 0x4007e620, 0x1a3b: 0x4007e820,
+	0x1a3c: 0x4007ea20, 0x1a3d: 0x4007ec20, 0x1a3e: 0x4007ee20, 0x1a3f: 0x4007f020,
+	// Block 0x69, offset 0x1a40
+	0x1a40: 0x404d1420, 0x1a41: 0x404d1620, 0x1a42: 0x404d1820, 0x1a43: 0x404d1a20,
+	0x1a44: 0x404d1c20, 0x1a45: 0x404d1e20, 0x1a46: 0x404d2020, 0x1a47: 0x404d2220,
+	0x1a48: 0x404d2420, 0x1a49: 0x404d2620, 0x1a4a: 0x404d2820, 0x1a4b: 0x404d2a20,
+	0x1a4c: 0x404d2c20, 0x1a4d: 0x404d2e20, 0x1a4e: 0x404d3020, 0x1a4f: 0x404d3220,
+	0x1a50: 0x404d3420, 0x1a51: 0x404d3620, 0x1a52: 0x404d3820, 0x1a53: 0x404d3a20,
+	0x1a54: 0x404d3c20, 0x1a55: 0x404d3e20, 0x1a56: 0x404d4020, 0x1a57: 0x82e626a1,
+	0x1a58: 0x82dc26a2, 0x1a59: 0x404d4620, 0x1a5a: 0x404d4820, 0x1a5b: 0x404d4a20,
+	0x1a5e: 0x40036620, 0x1a5f: 0x40036820,
+	0x1a60: 0x40510220, 0x1a61: 0x40510420, 0x1a62: 0x40510620, 0x1a63: 0x40510820,
+	0x1a64: 0x40510a20, 0x1a65: 0x40510c20, 0x1a66: 0x40510e20, 0x1a67: 0x40511020,
+	0x1a68: 0x40511220, 0x1a69: 0x40511420, 0x1a6a: 0x40511620, 0x1a6b: 0x40511820,
+	0x1a6c: 0x40511a20, 0x1a6d: 0x40511c20, 0x1a6e: 0x40511e20, 0x1a6f: 0x40512020,
+	0x1a70: 0x40512220, 0x1a71: 0x40512420, 0x1a72: 0x40512620, 0x1a73: 0x40512820,
+	0x1a74: 0x40512a20, 0x1a75: 0x40512c20, 0x1a76: 0x40512e20, 0x1a77: 0x40513020,
+	0x1a78: 0x40513220, 0x1a79: 0x40513420, 0x1a7a: 0x40513620, 0x1a7b: 0x40513820,
+	0x1a7c: 0x40513a20, 0x1a7d: 0x40513c20, 0x1a7e: 0x40513e20, 0x1a7f: 0x40514020,
+	// Block 0x6a, offset 0x1a80
+	0x1a80: 0x40514220, 0x1a81: 0x40514420, 0x1a82: 0x40514620, 0x1a83: 0x40514820,
+	0x1a84: 0x40514a20, 0x1a85: 0x40514c20, 0x1a86: 0x40514e20, 0x1a87: 0x40515020,
+	0x1a88: 0x40515220, 0x1a89: 0x40515420, 0x1a8a: 0x40515620, 0x1a8b: 0x40515820,
+	0x1a8c: 0x40515a20, 0x1a8d: 0x40516c20, 0x1a8e: 0x40516e20, 0x1a8f: 0x40517020,
+	0x1a90: 0x40517220, 0x1a91: 0x40517420, 0x1a92: 0x40517620, 0x1a93: 0x40515c20,
+	0x1a94: 0xe0002029, 0x1a95: 0x40516020, 0x1a96: 0x40516220, 0x1a97: 0x40516420,
+	0x1a98: 0x00510e84, 0x1a99: 0x00510e84, 0x1a9a: 0x00513884, 0x1a9b: 0x00513884,
+	0x1a9c: 0x40516620, 0x1a9d: 0x40516820, 0x1a9e: 0x40516a20,
+	0x1aa0: 0x820928cd, 0x1aa1: 0x40517820, 0x1aa2: 0x40517c20, 0x1aa3: 0x40517e20,
+	0x1aa4: 0x00517e84, 0x1aa5: 0x40518020, 0x1aa6: 0x40518220, 0x1aa7: 0x40518420,
+	0x1aa8: 0x40518620, 0x1aa9: 0x40518820, 0x1aaa: 0x40518a20, 0x1aab: 0x40515e20,
+	0x1aac: 0x40517a20, 0x1aad: 0x40519820, 0x1aae: 0x40518c20, 0x1aaf: 0x40518e20,
+	0x1ab0: 0x40519220, 0x1ab1: 0x40519420, 0x1ab2: 0x40519620, 0x1ab3: 0x40519020,
+	0x1ab4: 0xa000f302, 0x1ab5: 0xae611702, 0x1ab6: 0xae611802, 0x1ab7: 0xae611902,
+	0x1ab8: 0xae611a02, 0x1ab9: 0xae611b02, 0x1aba: 0xae611c02, 0x1abb: 0xae611d02,
+	0x1abc: 0xae611e02, 0x1abf: 0xadc00000,
+	// Block 0x6b, offset 0x1ac0
+	0x1ac0: 0xe0000194, 0x1ac1: 0xe0000228, 0x1ac2: 0xe0000340, 0x1ac3: 0xe000041a,
+	0x1ac4: 0xe00004ef, 0x1ac5: 0xe00005b9, 0x1ac6: 0xe0000684, 0x1ac7: 0xe000072c,
+	0x1ac8: 0xe00007d8, 0x1ac9: 0xe000087d,
+	0x1ad0: 0xe0000197, 0x1ad1: 0xe000022b, 0x1ad2: 0xe0000343, 0x1ad3: 0xe000041d,
+	0x1ad4: 0xe00004f2, 0x1ad5: 0xe00005bc, 0x1ad6: 0xe0000687, 0x1ad7: 0xe000072f,
+	0x1ad8: 0xe00007db, 0x1ad9: 0xe0000880,
+	0x1ae0: 0x4005c220, 0x1ae1: 0x4005c420, 0x1ae2: 0x4005c620, 0x1ae3: 0x4005c820,
+	0x1ae4: 0x4005ca20, 0x1ae5: 0x4005cc20, 0x1ae6: 0x4005ce20, 0x1ae7: 0x4027be20,
+	0x1ae8: 0x40032a20, 0x1ae9: 0x40032c20, 0x1aea: 0x40032e20, 0x1aeb: 0x40033020,
+	0x1aec: 0x4005d020, 0x1aed: 0x4005d220,
+	// Block 0x6c, offset 0x1b00
+	0x1b00: 0xa000f202, 0x1b01: 0xa000f202, 0x1b02: 0xa000f302, 0x1b03: 0xa000f702,
+	0x1b04: 0xa000f402, 0x1b05: 0xc3190821, 0x1b06: 0x40522820, 0x1b07: 0xc31b0821,
+	0x1b08: 0x40522c20, 0x1b09: 0xc31d0821, 0x1b0a: 0x40523020, 0x1b0b: 0xc31f0821,
+	0x1b0c: 0x40523420, 0x1b0d: 0xc3210821, 0x1b0e: 0x40523820, 0x1b0f: 0x40523a20,
+	0x1b10: 0x40523c20, 0x1b11: 0xc3230821, 0x1b12: 0x40524020, 0x1b13: 0x40524220,
+	0x1b14: 0x40524820, 0x1b15: 0x40524a20, 0x1b16: 0x40524c20, 0x1b17: 0x40524e20,
+	0x1b18: 0x40525020, 0x1b19: 0x40525220, 0x1b1a: 0x40525420, 0x1b1b: 0x40525620,
+	0x1b1c: 0x40525820, 0x1b1d: 0x40525a20, 0x1b1e: 0x40525c20, 0x1b1f: 0x40525e20,
+	0x1b20: 0x40526020, 0x1b21: 0x40526220, 0x1b22: 0x40526420, 0x1b23: 0x40526820,
+	0x1b24: 0x40526a20, 0x1b25: 0x40526c20, 0x1b26: 0x40526e20, 0x1b27: 0x40527020,
+	0x1b28: 0x40527420, 0x1b29: 0x40527620, 0x1b2a: 0x40527820, 0x1b2b: 0x40527a20,
+	0x1b2c: 0x40527c20, 0x1b2d: 0x40527e20, 0x1b2e: 0x40528020, 0x1b2f: 0x40528220,
+	0x1b30: 0x40528620, 0x1b31: 0x40528820, 0x1b32: 0x40528a20, 0x1b33: 0x40529020,
+	0x1b34: 0xa070f102, 0x1b35: 0x40529220, 0x1b36: 0x40529420, 0x1b37: 0x40529620,
+	0x1b38: 0x40529820, 0x1b39: 0x40529a20, 0x1b3a: 0xc3250821, 0x1b3b: 0x40529e20,
+	0x1b3c: 0xc3270821, 0x1b3d: 0x4052a220, 0x1b3e: 0xc3290821, 0x1b3f: 0xc32b0821,
+	// Block 0x6d, offset 0x1b40
+	0x1b40: 0x4052a820, 0x1b41: 0x4052aa20, 0x1b42: 0xc32d0821, 0x1b43: 0x4052ae20,
+	0x1b44: 0x82092958, 0x1b45: 0x40524420, 0x1b46: 0x40524620, 0x1b47: 0x40526620,
+	0x1b48: 0x40527220, 0x1b49: 0x40528420, 0x1b4a: 0x40528c20, 0x1b4b: 0x40528e20,
+	0x1b50: 0xe00001be, 0x1b51: 0xe0000252, 0x1b52: 0xe000036a, 0x1b53: 0xe0000444,
+	0x1b54: 0xe0000519, 0x1b55: 0xe00005e3, 0x1b56: 0xe00006ae, 0x1b57: 0xe0000756,
+	0x1b58: 0xe0000802, 0x1b59: 0xe00008a7, 0x1b5a: 0x40036a20, 0x1b5b: 0x40036c20,
+	0x1b5c: 0x4002f620, 0x1b5d: 0x4002ae20, 0x1b5e: 0x40033220, 0x1b5f: 0x40033420,
+	0x1b60: 0x40022020, 0x1b61: 0x4007f220, 0x1b62: 0x4007f420, 0x1b63: 0x4007f620,
+	0x1b64: 0x4007f820, 0x1b65: 0x4007fa20, 0x1b66: 0x4007fc20, 0x1b67: 0x4007fe20,
+	0x1b68: 0x40080020, 0x1b69: 0x40080220, 0x1b6a: 0x40080420, 0x1b6b: 0xae600000,
+	0x1b6c: 0xadc00000, 0x1b6d: 0xae600000, 0x1b6e: 0xae600000, 0x1b6f: 0xae600000,
+	0x1b70: 0xae600000, 0x1b71: 0xae600000, 0x1b72: 0xae600000, 0x1b73: 0xae600000,
+	0x1b74: 0x40080620, 0x1b75: 0x40080820, 0x1b76: 0x40080a20, 0x1b77: 0x40080c20,
+	0x1b78: 0x40080e20, 0x1b79: 0x40081020, 0x1b7a: 0x40081220, 0x1b7b: 0x40081420,
+	0x1b7c: 0x40081620,
+	// Block 0x6e, offset 0x1b80
+	0x1b80: 0xa000f302, 0x1b81: 0xa000f902, 0x1b82: 0xa000f402, 0x1b83: 0x4047d420,
+	0x1b84: 0x4047d620, 0x1b85: 0x4047d820, 0x1b86: 0x4047da20, 0x1b87: 0x4047dc20,
+	0x1b88: 0x4047de20, 0x1b89: 0x4047e020, 0x1b8a: 0x4047e220, 0x1b8b: 0x4047e620,
+	0x1b8c: 0x4047e820, 0x1b8d: 0x4047ea20, 0x1b8e: 0x4047ec20, 0x1b8f: 0x4047ee20,
+	0x1b90: 0x4047f020, 0x1b91: 0x4047f220, 0x1b92: 0x4047f420, 0x1b93: 0x4047f620,
+	0x1b94: 0x4047f820, 0x1b95: 0x4047fa20, 0x1b96: 0x4047fc20, 0x1b97: 0x4047fe20,
+	0x1b98: 0x40480020, 0x1b99: 0x40480420, 0x1b9a: 0x40480820, 0x1b9b: 0x40480c20,
+	0x1b9c: 0x40481220, 0x1b9d: 0x40481820, 0x1b9e: 0x40481c20, 0x1b9f: 0x40481e20,
+	0x1ba0: 0x40482220, 0x1ba1: 0x40480a20, 0x1ba2: 0x40480e20, 0x1ba3: 0x40481420,
+	0x1ba4: 0x40482420, 0x1ba5: 0x40482620, 0x1ba6: 0x40482820, 0x1ba7: 0x40482a20,
+	0x1ba8: 0x40482c20, 0x1ba9: 0x40482e20, 0x1baa: 0x82092418, 0x1bab: 0x82092419,
+	0x1bac: 0x40480620, 0x1bad: 0x40481a20, 0x1bae: 0x4047e420, 0x1baf: 0x40482020,
+	0x1bb0: 0xe00001c4, 0x1bb1: 0xe0000258, 0x1bb2: 0xe0000370, 0x1bb3: 0xe000044a,
+	0x1bb4: 0xe000051f, 0x1bb5: 0xe00005e9, 0x1bb6: 0xe00006b4, 0x1bb7: 0xe000075c,
+	0x1bb8: 0xe0000808, 0x1bb9: 0xe00008ad, 0x1bba: 0x0047d484, 0x1bbb: 0x40481020,
+	0x1bbc: 0x40481620, 0x1bbd: 0x40480220, 0x1bbe: 0x0047e299, 0x1bbf: 0x00480499,
+	// Block 0x6f, offset 0x1bc0
+	0x1bc0: 0x404d4c20, 0x1bc1: 0x004d4c84, 0x1bc2: 0x404d4e20, 0x1bc3: 0x004d4e84,
+	0x1bc4: 0x004d4e84, 0x1bc5: 0x404d5020, 0x1bc6: 0x004d5084, 0x1bc7: 0x404d5220,
+	0x1bc8: 0x004d5284, 0x1bc9: 0x404d5420, 0x1bca: 0x004d5484, 0x1bcb: 0x404d5620,
+	0x1bcc: 0x004d5684, 0x1bcd: 0x004d5684, 0x1bce: 0x404d5820, 0x1bcf: 0x004d5884,
+	0x1bd0: 0x404d5a20, 0x1bd1: 0x404d5c20, 0x1bd2: 0x404d5e20, 0x1bd3: 0x004d5e84,
+	0x1bd4: 0x404d6020, 0x1bd5: 0x004d6084, 0x1bd6: 0x404d6220, 0x1bd7: 0x004d6284,
+	0x1bd8: 0x404d6420, 0x1bd9: 0x004d6484, 0x1bda: 0x004d6484, 0x1bdb: 0x404d6620,
+	0x1bdc: 0x004d6684, 0x1bdd: 0x404d6820, 0x1bde: 0x404d6a20, 0x1bdf: 0x004d6a84,
+	0x1be0: 0x404d6c20, 0x1be1: 0x404d6e20, 0x1be2: 0x404d7020, 0x1be3: 0x404d7220,
+	0x1be4: 0x404d7420, 0x1be5: 0x404d7620, 0x1be6: 0xa070f102, 0x1be7: 0x404d7820,
+	0x1be8: 0x004d7884, 0x1be9: 0x404d7a20, 0x1bea: 0x404d7c20, 0x1beb: 0x004d7c84,
+	0x1bec: 0x404d7e20, 0x1bed: 0x004d7e84, 0x1bee: 0x404d8020, 0x1bef: 0x004d8084,
+	0x1bf0: 0x404d8220, 0x1bf1: 0x404d8420, 0x1bf2: 0x820926c3, 0x1bf3: 0x820926c4,
+	0x1bfc: 0x4005ec20, 0x1bfd: 0x4005ee20, 0x1bfe: 0x4005f020, 0x1bff: 0x4005f220,
+	// Block 0x70, offset 0x1c00
+	0x1c00: 0x404b3620, 0x1c01: 0x404b3820, 0x1c02: 0x404b3a20, 0x1c03: 0x404b3c20,
+	0x1c04: 0x404b3e20, 0x1c05: 0x404b4020, 0x1c06: 0x404b4220, 0x1c07: 0x404b4420,
+	0x1c08: 0x404b4620, 0x1c09: 0x404b4820, 0x1c0a: 0x404b5020, 0x1c0b: 0x404b5220,
+	0x1c0c: 0x404b5420, 0x1c0d: 0x404b5620, 0x1c0e: 0x404b5820, 0x1c0f: 0x404b5a20,
+	0x1c10: 0x404b5c20, 0x1c11: 0x404b5e20, 0x1c12: 0x404b6020, 0x1c13: 0x404b6220,
+	0x1c14: 0x404b6420, 0x1c15: 0x404b6620, 0x1c16: 0x404b6820, 0x1c17: 0x404b6a20,
+	0x1c18: 0x404b6c20, 0x1c19: 0x404b6e20, 0x1c1a: 0x404b7020, 0x1c1b: 0x404b7420,
+	0x1c1c: 0x404b7820, 0x1c1d: 0x404b7a20, 0x1c1e: 0x404b7c20, 0x1c1f: 0x404b7e20,
+	0x1c20: 0x404b8020, 0x1c21: 0x404b8220, 0x1c22: 0x404b8420, 0x1c23: 0x404b8620,
+	0x1c24: 0x404b7220, 0x1c25: 0x404b7620, 0x1c26: 0x404b8a20, 0x1c27: 0x404b8c20,
+	0x1c28: 0x404b8e20, 0x1c29: 0x404b9020, 0x1c2a: 0x404b9220, 0x1c2b: 0x404b9420,
+	0x1c2c: 0x404b9620, 0x1c2d: 0x404b9820, 0x1c2e: 0x404b9a20, 0x1c2f: 0x404b9c20,
+	0x1c30: 0x404b9e20, 0x1c31: 0x404ba020, 0x1c32: 0x404ba220, 0x1c33: 0x404ba420,
+	0x1c34: 0x404ba620, 0x1c35: 0x404ba820, 0x1c36: 0x404b8820, 0x1c37: 0xa070f102,
+	0x1c3b: 0x40031420,
+	0x1c3c: 0x40031620, 0x1c3d: 0x4005ae20, 0x1c3e: 0x4005b020, 0x1c3f: 0x4005b220,
+	// Block 0x71, offset 0x1c40
+	0x1c40: 0xe00001a6, 0x1c41: 0xe000023a, 0x1c42: 0xe0000352, 0x1c43: 0xe000042c,
+	0x1c44: 0xe0000501, 0x1c45: 0xe00005cb, 0x1c46: 0xe0000696, 0x1c47: 0xe000073e,
+	0x1c48: 0xe00007ea, 0x1c49: 0xe000088f,
+	0x1c4d: 0x404b4a20, 0x1c4e: 0x404b4c20, 0x1c4f: 0x404b4e20,
+	0x1c50: 0xe00001ca, 0x1c51: 0xe000025e, 0x1c52: 0xe0000376, 0x1c53: 0xe0000450,
+	0x1c54: 0xe0000525, 0x1c55: 0xe00005ef, 0x1c56: 0xe00006ba, 0x1c57: 0xe0000762,
+	0x1c58: 0xe000080e, 0x1c59: 0xe00008b3, 0x1c5a: 0x40542e20, 0x1c5b: 0x40543020,
+	0x1c5c: 0x40543220, 0x1c5d: 0x40543420, 0x1c5e: 0x40543620, 0x1c5f: 0x40543820,
+	0x1c60: 0x40543a20, 0x1c61: 0x40543c20, 0x1c62: 0x40543e20, 0x1c63: 0x40544020,
+	0x1c64: 0x40544220, 0x1c65: 0x40544420, 0x1c66: 0x40544620, 0x1c67: 0x40544820,
+	0x1c68: 0x40544a20, 0x1c69: 0x40544c20, 0x1c6a: 0x40544e20, 0x1c6b: 0x40545020,
+	0x1c6c: 0x40545220, 0x1c6d: 0x40545420, 0x1c6e: 0x40545620, 0x1c6f: 0x40545820,
+	0x1c70: 0x40545a20, 0x1c71: 0x40545c20, 0x1c72: 0x40545e20, 0x1c73: 0x40546020,
+	0x1c74: 0x40546220, 0x1c75: 0x40546420, 0x1c76: 0x40546620, 0x1c77: 0x40546820,
+	0x1c78: 0x40546a20, 0x1c79: 0x40546c20, 0x1c7a: 0x40546e20, 0x1c7b: 0x40547020,
+	0x1c7c: 0x40547220, 0x1c7d: 0x40547420, 0x1c7e: 0x40035820, 0x1c7f: 0x40035a20,
+	// Block 0x72, offset 0x1c80
+	0x1c80: 0x4005d620, 0x1c81: 0x4005d820, 0x1c82: 0x4005da20, 0x1c83: 0x4005dc20,
+	0x1c84: 0x4005de20, 0x1c85: 0x4005e020, 0x1c86: 0x4005e220, 0x1c87: 0x4005e420,
+	0x1c90: 0xae600000, 0x1c91: 0xae600000, 0x1c92: 0xae600000, 0x1c93: 0xa0000000,
+	0x1c94: 0xa0100000, 0x1c95: 0xadc00000, 0x1c96: 0xadc00000, 0x1c97: 0xadc00000,
+	0x1c98: 0xadc00000, 0x1c99: 0xadc00000, 0x1c9a: 0xae600000, 0x1c9b: 0xae600000,
+	0x1c9c: 0xadc00000, 0x1c9d: 0xadc00000, 0x1c9e: 0xadc00000, 0x1c9f: 0xadc00000,
+	0x1ca0: 0xae600000, 0x1ca1: 0xa0000000, 0x1ca2: 0xa0100000, 0x1ca3: 0xa0100000,
+	0x1ca4: 0xa0100000, 0x1ca5: 0xa0100000, 0x1ca6: 0xa0100000, 0x1ca7: 0xa0100000,
+	0x1ca8: 0xa0100000, 0x1ca9: 0x40404020, 0x1caa: 0x00404084, 0x1cab: 0x00404084,
+	0x1cac: 0x00404084, 0x1cad: 0xadc0f302, 0x1cae: 0x00404084, 0x1caf: 0x00404084,
+	0x1cb0: 0x00404084, 0x1cb1: 0x00404084, 0x1cb2: 0xa000f402, 0x1cb3: 0xa000f402,
+	0x1cb4: 0xae600000, 0x1cb5: 0x40404220, 0x1cb6: 0x40404420,
+	// Block 0x73, offset 0x1cc0
+	0x1cc0: 0x402be620, 0x1cc1: 0x402bec20, 0x1cc2: 0x402bee20, 0x1cc3: 0x402c2420,
+	0x1cc4: 0x402c4220, 0x1cc5: 0x402c6a20, 0x1cc6: 0x402c6c20, 0x1cc7: 0x402ca020,
+	0x1cc8: 0x402ce620, 0x1cc9: 0x402db420, 0x1cca: 0x402ddc20, 0x1ccb: 0x402e0620,
+	0x1ccc: 0x402e3420, 0x1ccd: 0x402e8a20, 0x1cce: 0x402eb020, 0x1ccf: 0x402eea20,
+	0x1cd0: 0x402f0220, 0x1cd1: 0x402eec20, 0x1cd2: 0x402f0420, 0x1cd3: 0x402ef820,
+	0x1cd4: 0x402ef620, 0x1cd5: 0x402f2a20, 0x1cd6: 0x402f0a20, 0x1cd7: 0x402f0c20,
+	0x1cd8: 0x402f3420, 0x1cd9: 0x402f8c20, 0x1cda: 0x402fa020, 0x1cdb: 0x40303420,
+	0x1cdc: 0x40307420, 0x1cdd: 0x40307620, 0x1cde: 0x40307820, 0x1cdf: 0x4030aa20,
+	0x1ce0: 0x4030c620, 0x1ce1: 0x4030ea20, 0x1ce2: 0x40313220, 0x1ce3: 0x40316c20,
+	0x1ce4: 0x4031f420, 0x1ce5: 0x4031f620, 0x1ce6: 0x40325820, 0x1ce7: 0x40327420,
+	0x1ce8: 0x40328020, 0x1ce9: 0x40328a20, 0x1cea: 0x4032a020, 0x1ceb: 0x40348c20,
+	0x1cec: 0x002bde9d, 0x1ced: 0xe00009e1, 0x1cee: 0x002c0a9d, 0x1cef: 0x402c2220,
+	0x1cf0: 0x002c629d, 0x1cf1: 0x002c989d, 0x1cf2: 0x002cae9d, 0x1cf3: 0x002d229d,
+	0x1cf4: 0x002d689d, 0x1cf5: 0x002d9a9d, 0x1cf6: 0x002dcc9d, 0x1cf7: 0x002dfe9d,
+	0x1cf8: 0x002e229d, 0x1cf9: 0x002e829d, 0x1cfa: 0x002e9e9d, 0x1cfb: 0x402eae20,
+	0x1cfc: 0x002ee29d, 0x1cfd: 0x002f229d, 0x1cfe: 0x002f2c9d, 0x1cff: 0x002f7a9d,
+	// Block 0x74, offset 0x1d00
+	0x1d00: 0x00302c9d, 0x1d01: 0x00306c9d, 0x1d02: 0x0030e29d, 0x1d03: 0x002bde94,
+	0x1d04: 0x002bf094, 0x1d05: 0x002bf894, 0x1d06: 0x002bee94, 0x1d07: 0x002c0a94,
+	0x1d08: 0x002c6294, 0x1d09: 0x002c9894, 0x1d0a: 0x002cb894, 0x1d0b: 0x002cc294,
+	0x1d0c: 0x002ce694, 0x1d0d: 0x002d2294, 0x1d0e: 0x002db494, 0x1d0f: 0x002dfe94,
+	0x1d10: 0x002e8294, 0x1d11: 0x002eda94, 0x1d12: 0x002ee294, 0x1d13: 0x002efa94,
+	0x1d14: 0x002f0a94, 0x1d15: 0x002f0c94, 0x1d16: 0x002f2c94, 0x1d17: 0x00302c94,
+	0x1d18: 0x00306c94, 0x1d19: 0x00307694, 0x1d1a: 0x0030a094, 0x1d1b: 0x0030be94,
+	0x1d1c: 0x0031f694, 0x1d1d: 0x00325494, 0x1d1e: 0x00325694, 0x1d1f: 0x00325a94,
+	0x1d20: 0x00329a94, 0x1d21: 0x00329c94, 0x1d22: 0x002d9a95, 0x1d23: 0x002f7a95,
+	0x1d24: 0x00306c95, 0x1d25: 0x0030be95, 0x1d26: 0x00325495, 0x1d27: 0x00325695,
+	0x1d28: 0x00328895, 0x1d29: 0x00329a95, 0x1d2a: 0x00329c95, 0x1d2b: 0x40307a20,
+	0x1d2c: 0x402c2620, 0x1d2d: 0x402c6e20, 0x1d2e: 0x402d1220, 0x1d2f: 0x402e8c20,
+	0x1d30: 0x402eb220, 0x1d31: 0x402f3a20, 0x1d32: 0x402f9620, 0x1d33: 0x402fce20,
+	0x1d34: 0x402ff020, 0x1d35: 0x40304020, 0x1d36: 0x40313c20, 0x1d37: 0x402d5420,
+	0x1d38: 0x0034ba94, 0x1d39: 0xe0000bd9, 0x1d3a: 0xe0000fc1, 0x1d3b: 0x402dbe20,
+	0x1d3c: 0x402dca20, 0x1d3d: 0x402f3620, 0x1d3e: 0x40308420, 0x1d3f: 0x4030bc20,
+	// Block 0x75, offset 0x1d40
+	0x1d40: 0x402c2820, 0x1d41: 0x402c7020, 0x1d42: 0x402d1420, 0x1d43: 0x402d4220,
+	0x1d44: 0x402e0820, 0x1d45: 0x402e5220, 0x1d46: 0x402e8e20, 0x1d47: 0x402ec620,
+	0x1d48: 0x402f3c20, 0x1d49: 0x402faa20, 0x1d4a: 0x402ff220, 0x1d4b: 0x40301020,
+	0x1d4c: 0x4030ca20, 0x1d4d: 0x4030fe20, 0x1d4e: 0x40313e20, 0x1d4f: 0x402bea20,
+	0x1d50: 0x402c0020, 0x1d51: 0x402c8220, 0x1d52: 0x402caa20, 0x1d53: 0x402cca20,
+	0x1d54: 0x402ce420, 0x1d55: 0x402cc020, 0x1d56: 0x402dc020, 0x1d57: 0x402f0620,
+	0x1d58: 0x40302220, 0x1d59: 0x40308620, 0x1d5a: 0x40317620, 0x1d5b: 0x002c0294,
+	0x1d5c: 0x002c3a94, 0x1d5d: 0x002c5694, 0x1d5e: 0xf0001414, 0x1d5f: 0x002cdc94,
+	0x1d60: 0x002d0894, 0x1d61: 0x002dee94, 0x1d62: 0x002d2a94, 0x1d63: 0x00308894,
+	0x1d64: 0x002db694, 0x1d65: 0x002dc294, 0x1d66: 0x002daa94, 0x1d67: 0x002dbe94,
+	0x1d68: 0x002de694, 0x1d69: 0x002e5494, 0x1d6a: 0x002e5294, 0x1d6b: 0x002e2a94,
+	0x1d6c: 0x002e9094, 0x1d6d: 0x0030ac94, 0x1d6e: 0x002eb494, 0x1d6f: 0x002ec894,
+	0x1d70: 0x002ea694, 0x1d71: 0x002f1094, 0x1d72: 0x002f4c94, 0x1d73: 0x002ff494,
+	0x1d74: 0x00300894, 0x1d75: 0x00304294, 0x1d76: 0x00307c94, 0x1d77: 0x0030b494,
+	0x1d78: 0x00307494, 0x1d79: 0x0030cc94, 0x1d7a: 0x0030da94, 0x1d7b: 0x00312a94,
+	0x1d7c: 0x00314894, 0x1d7d: 0x00315094, 0x1d7e: 0x00316494, 0x1d7f: 0x00326a94,
+	// Block 0x76, offset 0x1d80
+	0x1d80: 0xae605f02, 0x1d81: 0xae605f02, 0x1d82: 0xadc06002, 0x1d83: 0xae605f02,
+	0x1d84: 0xae605f02, 0x1d85: 0xae605f02, 0x1d86: 0xae605f02, 0x1d87: 0xae605f02,
+	0x1d88: 0xae605f02, 0x1d89: 0xae605f02, 0x1d8a: 0x84dc17bd, 0x1d8b: 0xae605f02,
+	0x1d8c: 0xae605f02, 0x1d8d: 0xaea05f02, 0x1d8e: 0xad605f02, 0x1d8f: 0xadc06002,
+	0x1d90: 0xaca06002, 0x1d91: 0xae605f02, 0x1d92: 0x84e618d1, 0x1d93: 0xe00009b4,
+	0x1d94: 0xe00009d9, 0x1d95: 0xe00009f9, 0x1d96: 0xe0000a08, 0x1d97: 0xe0000a50,
+	0x1d98: 0xe0000ab6, 0x1d99: 0xe0000ab0, 0x1d9a: 0x84e61691, 0x1d9b: 0x84e61699,
+	0x1d9c: 0x84e616ff, 0x1d9d: 0x84e61711, 0x1d9e: 0x84e61715, 0x1d9f: 0x84e61745,
+	0x1da0: 0x84e6174f, 0x1da1: 0x84e61753, 0x1da2: 0x84e617c1, 0x1da3: 0x84e617c5,
+	0x1da4: 0x84e617f3, 0x1da5: 0xe0000f67, 0x1da6: 0x84e61895,
+	0x1dbc: 0xae906002, 0x1dbd: 0xadc06002, 0x1dbe: 0xae605f02, 0x1dbf: 0xadc06002,
+	// Block 0x77, offset 0x1dc0
+	0x1dc0: 0xe00009b1, 0x1dc1: 0xe00009ae, 0x1dc2: 0xe0000a22, 0x1dc3: 0xe0000a1f,
+	0x1dc4: 0xe0000a28, 0x1dc5: 0xe0000a25, 0x1dc6: 0xe0000a2e, 0x1dc7: 0xe0000a2b,
+	0x1dc8: 0xe0000a5a, 0x1dc9: 0xe0000a56, 0x1dca: 0xe0000a8c, 0x1dcb: 0xe0000a89,
+	0x1dcc: 0xe0000a98, 0x1dcd: 0xe0000a95, 0x1dce: 0xe0000aa4, 0x1dcf: 0xe0000aa1,
+	0x1dd0: 0xe0000a92, 0x1dd1: 0xe0000a8f, 0x1dd2: 0xe0000a9e, 0x1dd3: 0xe0000a9b,
+	0x1dd4: 0xe0000b55, 0x1dd5: 0xe0000b51, 0x1dd6: 0xe0000b4d, 0x1dd7: 0xe0000b49,
+	0x1dd8: 0xe0000b7c, 0x1dd9: 0xe0000b79, 0x1dda: 0xe0000b82, 0x1ddb: 0xe0000b7f,
+	0x1ddc: 0xe0000b39, 0x1ddd: 0xe0000b35, 0x1dde: 0xe0000b8c, 0x1ddf: 0xe0000b89,
+	0x1de0: 0xe0000bd0, 0x1de1: 0xe0000bcd, 0x1de2: 0xe0000c00, 0x1de3: 0xe0000bfd,
+	0x1de4: 0xe0000c0c, 0x1de5: 0xe0000c09, 0x1de6: 0xe0000bfa, 0x1de7: 0xe0000bf7,
+	0x1de8: 0xe0000c06, 0x1de9: 0xe0000c03, 0x1dea: 0xe0000c12, 0x1deb: 0xe0000c0f,
+	0x1dec: 0xe0000c7e, 0x1ded: 0xe0000c7b, 0x1dee: 0xe0000c4a, 0x1def: 0xe0000c46,
+	0x1df0: 0xe0000c93, 0x1df1: 0xe0000c90, 0x1df2: 0xe0000cab, 0x1df3: 0xe0000ca8,
+	0x1df4: 0xe0000cb1, 0x1df5: 0xe0000cae, 0x1df6: 0xe0000cde, 0x1df7: 0xe0000cdb,
+	0x1df8: 0xe0000ce5, 0x1df9: 0xe0000ce1, 0x1dfa: 0xe0000cf2, 0x1dfb: 0xe0000cef,
+	0x1dfc: 0xe0000cec, 0x1dfd: 0xe0000ce9, 0x1dfe: 0xe0000d1e, 0x1dff: 0xe0000d1b,
+	// Block 0x78, offset 0x1e00
+	0x1e00: 0xe0000d24, 0x1e01: 0xe0000d21, 0x1e02: 0xe0000d2a, 0x1e03: 0xe0000d27,
+	0x1e04: 0xe0000d69, 0x1e05: 0xe0000d66, 0x1e06: 0xe0000d7b, 0x1e07: 0xe0000d78,
+	0x1e08: 0xe0000d87, 0x1e09: 0xe0000d84, 0x1e0a: 0xe0000d81, 0x1e0b: 0xe0000d7e,
+	0x1e0c: 0xe0000ded, 0x1e0d: 0xe0000de9, 0x1e0e: 0xe0000df5, 0x1e0f: 0xe0000df1,
+	0x1e10: 0xe0000e3d, 0x1e11: 0xe0000e39, 0x1e12: 0xe0000e35, 0x1e13: 0xe0000e31,
+	0x1e14: 0xe0000ea7, 0x1e15: 0xe0000ea4, 0x1e16: 0xe0000ead, 0x1e17: 0xe0000eaa,
+	0x1e18: 0xe0000ed6, 0x1e19: 0xe0000ed3, 0x1e1a: 0xe0000ef4, 0x1e1b: 0xe0000ef1,
+	0x1e1c: 0xe0000efb, 0x1e1d: 0xe0000ef7, 0x1e1e: 0xe0000f02, 0x1e1f: 0xe0000eff,
+	0x1e20: 0xe0000f41, 0x1e21: 0xe0000f3e, 0x1e22: 0xe0000f53, 0x1e23: 0xe0000f50,
+	0x1e24: 0xe0000f26, 0x1e25: 0xe0000f22, 0x1e26: 0xe0000f3a, 0x1e27: 0xe0000f36,
+	0x1e28: 0xe0000f5a, 0x1e29: 0xe0000f56, 0x1e2a: 0xe0000f93, 0x1e2b: 0xe0000f90,
+	0x1e2c: 0xe0000f9f, 0x1e2d: 0xe0000f9c, 0x1e2e: 0xe0000fb1, 0x1e2f: 0xe0000fae,
+	0x1e30: 0xe0000fab, 0x1e31: 0xe0000fa8, 0x1e32: 0xe0001093, 0x1e33: 0xe0001090,
+	0x1e34: 0xe000109f, 0x1e35: 0xe000109c, 0x1e36: 0xe0001099, 0x1e37: 0xe0001096,
+	0x1e38: 0xe0001032, 0x1e39: 0xe000102e, 0x1e3a: 0xe0001046, 0x1e3b: 0xe0001042,
+	0x1e3c: 0xe00010a9, 0x1e3d: 0xe00010a6, 0x1e3e: 0xe00010af, 0x1e3f: 0xe00010ac,
+	// Block 0x79, offset 0x1e40
+	0x1e40: 0xe00010d2, 0x1e41: 0xe00010cf, 0x1e42: 0xe00010cc, 0x1e43: 0xe00010c9,
+	0x1e44: 0xe00010e1, 0x1e45: 0xe00010de, 0x1e46: 0xe00010e7, 0x1e47: 0xe00010e4,
+	0x1e48: 0xe00010ed, 0x1e49: 0xe00010ea, 0x1e4a: 0xe00010fc, 0x1e4b: 0xe00010f9,
+	0x1e4c: 0xe00010f6, 0x1e4d: 0xe00010f3, 0x1e4e: 0xe0001123, 0x1e4f: 0xe0001120,
+	0x1e50: 0xe0001141, 0x1e51: 0xe000113e, 0x1e52: 0xe0001153, 0x1e53: 0xe0001150,
+	0x1e54: 0xe0001159, 0x1e55: 0xe0001156, 0x1e56: 0xe0000c15, 0x1e57: 0xe0000f8d,
+	0x1e58: 0xe00010db, 0x1e59: 0xe0001111, 0x1e5a: 0xf0000404, 0x1e5b: 0xe0000f70,
+	0x1e5c: 0x40300420, 0x1e5d: 0x40300620, 0x1e5e: 0xe0000f7f, 0x1e5f: 0x402c9620,
+	0x1e60: 0xe000099b, 0x1e61: 0xe0000998, 0x1e62: 0xe0000989, 0x1e63: 0xe0000986,
+	0x1e64: 0xe0000928, 0x1e65: 0xe0000924, 0x1e66: 0xe0000930, 0x1e67: 0xe000092c,
+	0x1e68: 0xe0000940, 0x1e69: 0xe000093c, 0x1e6a: 0xe0000938, 0x1e6b: 0xe0000934,
+	0x1e6c: 0xe00009aa, 0x1e6d: 0xe00009a6, 0x1e6e: 0xe0000902, 0x1e6f: 0xe00008fe,
+	0x1e70: 0xe000090a, 0x1e71: 0xe0000906, 0x1e72: 0xe000091a, 0x1e73: 0xe0000916,
+	0x1e74: 0xe0000912, 0x1e75: 0xe000090e, 0x1e76: 0xe00009a2, 0x1e77: 0xe000099e,
+	0x1e78: 0xe0000b6e, 0x1e79: 0xe0000b6b, 0x1e7a: 0xe0000b5c, 0x1e7b: 0xe0000b59,
+	0x1e7c: 0xe0000b26, 0x1e7d: 0xe0000b23, 0x1e7e: 0xe0000afb, 0x1e7f: 0xe0000af7,
+	// Block 0x7a, offset 0x1e80
+	0x1e80: 0xe0000b03, 0x1e81: 0xe0000aff, 0x1e82: 0xe0000b13, 0x1e83: 0xe0000b0f,
+	0x1e84: 0xe0000b0b, 0x1e85: 0xe0000b07, 0x1e86: 0xe0000b75, 0x1e87: 0xe0000b71,
+	0x1e88: 0xe0000c66, 0x1e89: 0xe0000c63, 0x1e8a: 0xe0000c78, 0x1e8b: 0xe0000c75,
+	0x1e8c: 0xe0000e84, 0x1e8d: 0xe0000e81, 0x1e8e: 0xe0000e44, 0x1e8f: 0xe0000e41,
+	0x1e90: 0xe0000dad, 0x1e91: 0xe0000da9, 0x1e92: 0xe0000db5, 0x1e93: 0xe0000db1,
+	0x1e94: 0xe0000dc5, 0x1e95: 0xe0000dc1, 0x1e96: 0xe0000dbd, 0x1e97: 0xe0000db9,
+	0x1e98: 0xe0000e8b, 0x1e99: 0xe0000e87, 0x1e9a: 0xe0000e5d, 0x1e9b: 0xe0000e59,
+	0x1e9c: 0xe0000e65, 0x1e9d: 0xe0000e61, 0x1e9e: 0xe0000e75, 0x1e9f: 0xe0000e71,
+	0x1ea0: 0xe0000e6d, 0x1ea1: 0xe0000e69, 0x1ea2: 0xe0000e7d, 0x1ea3: 0xe0000e79,
+	0x1ea4: 0xe000108d, 0x1ea5: 0xe000108a, 0x1ea6: 0xe000104d, 0x1ea7: 0xe000104a,
+	0x1ea8: 0xe0001066, 0x1ea9: 0xe0001062, 0x1eaa: 0xe000106e, 0x1eab: 0xe000106a,
+	0x1eac: 0xe000107e, 0x1ead: 0xe000107a, 0x1eae: 0xe0001076, 0x1eaf: 0xe0001072,
+	0x1eb0: 0xe0001086, 0x1eb1: 0xe0001082, 0x1eb2: 0xe0001108, 0x1eb3: 0xe0001105,
+	0x1eb4: 0xe0001135, 0x1eb5: 0xe0001132, 0x1eb6: 0xe000112f, 0x1eb7: 0xe000112c,
+	0x1eb8: 0xe000111d, 0x1eb9: 0xe000111a, 0x1eba: 0xe0000d0a, 0x1ebb: 0xe0000d07,
+	0x1ebc: 0x0030d888, 0x1ebd: 0x4030d820, 0x1ebe: 0x00312088, 0x1ebf: 0x40312020,
+	// Block 0x7b, offset 0x1ec0
+	0x1ec0: 0xe0001165, 0x1ec1: 0xe00011a9, 0x1ec2: 0xe000117d, 0x1ec3: 0xe00011c1,
+	0x1ec4: 0xe000116b, 0x1ec5: 0xe00011af, 0x1ec6: 0xe000118f, 0x1ec7: 0xe00011d3,
+	0x1ec8: 0xe0001168, 0x1ec9: 0xe00011ac, 0x1eca: 0xe0001181, 0x1ecb: 0xe00011c5,
+	0x1ecc: 0xe000116f, 0x1ecd: 0xe00011b3, 0x1ece: 0xe0001193, 0x1ecf: 0xe00011d7,
+	0x1ed0: 0xe000121a, 0x1ed1: 0xe0001230, 0x1ed2: 0xe0001228, 0x1ed3: 0xe000123e,
+	0x1ed4: 0xe0001220, 0x1ed5: 0xe0001236,
+	0x1ed8: 0xe000121d, 0x1ed9: 0xe0001233, 0x1eda: 0xe000122c, 0x1edb: 0xe0001242,
+	0x1edc: 0xe0001224, 0x1edd: 0xe000123a,
+	0x1ee0: 0xe0001252, 0x1ee1: 0xe0001296, 0x1ee2: 0xe000126a, 0x1ee3: 0xe00012ae,
+	0x1ee4: 0xe0001258, 0x1ee5: 0xe000129c, 0x1ee6: 0xe000127c, 0x1ee7: 0xe00012c0,
+	0x1ee8: 0xe0001255, 0x1ee9: 0xe0001299, 0x1eea: 0xe000126e, 0x1eeb: 0xe00012b2,
+	0x1eec: 0xe000125c, 0x1eed: 0xe00012a0, 0x1eee: 0xe0001280, 0x1eef: 0xe00012c4,
+	0x1ef0: 0xe00012fb, 0x1ef1: 0xe0001319, 0x1ef2: 0xe0001309, 0x1ef3: 0xe0001327,
+	0x1ef4: 0xe0001301, 0x1ef5: 0xe000131f, 0x1ef6: 0xe0001311, 0x1ef7: 0xe000132f,
+	0x1ef8: 0xe00012fe, 0x1ef9: 0xe000131c, 0x1efa: 0xe000130d, 0x1efb: 0xe000132b,
+	0x1efc: 0xe0001305, 0x1efd: 0xe0001323, 0x1efe: 0xe0001315, 0x1eff: 0xe0001333,
+	// Block 0x7c, offset 0x1f00
+	0x1f00: 0xe000136c, 0x1f01: 0xe0001382, 0x1f02: 0xe000137a, 0x1f03: 0xe0001390,
+	0x1f04: 0xe0001372, 0x1f05: 0xe0001388,
+	0x1f08: 0xe000136f, 0x1f09: 0xe0001385, 0x1f0a: 0xe000137e, 0x1f0b: 0xe0001394,
+	0x1f0c: 0xe0001376, 0x1f0d: 0xe000138c,
+	0x1f10: 0xe00013ad, 0x1f11: 0xe00013bc, 0x1f12: 0xe00013b4, 0x1f13: 0xe00013ca,
+	0x1f14: 0xe00013b0, 0x1f15: 0xe00013c2, 0x1f16: 0xe00013b8, 0x1f17: 0xe00013d2,
+	0x1f19: 0xe00013bf, 0x1f1b: 0xe00013ce,
+	0x1f1d: 0xe00013c6, 0x1f1f: 0xe00013d6,
+	0x1f20: 0xe0001407, 0x1f21: 0xe000144b, 0x1f22: 0xe000141f, 0x1f23: 0xe0001463,
+	0x1f24: 0xe000140d, 0x1f25: 0xe0001451, 0x1f26: 0xe0001431, 0x1f27: 0xe0001475,
+	0x1f28: 0xe000140a, 0x1f29: 0xe000144e, 0x1f2a: 0xe0001423, 0x1f2b: 0xe0001467,
+	0x1f2c: 0xe0001411, 0x1f2d: 0xe0001455, 0x1f2e: 0xe0001435, 0x1f2f: 0xe0001479,
+	0x1f30: 0xe00011f7, 0x1f31: 0xe00011ed, 0x1f32: 0xe000124c, 0x1f33: 0xe0001246,
+	0x1f34: 0xe00012e4, 0x1f35: 0xe00012da, 0x1f36: 0xe000133d, 0x1f37: 0xe0001337,
+	0x1f38: 0xe000139e, 0x1f39: 0xe0001398, 0x1f3a: 0xe00013e0, 0x1f3b: 0xe00013da,
+	0x1f3c: 0xe0001499, 0x1f3d: 0xe000148f,
+	// Block 0x7d, offset 0x1f40
+	0x1f40: 0xe00011a1, 0x1f41: 0xe00011e5, 0x1f42: 0xe0001185, 0x1f43: 0xe00011c9,
+	0x1f44: 0xe0001173, 0x1f45: 0xe00011b7, 0x1f46: 0xe0001197, 0x1f47: 0xe00011db,
+	0x1f48: 0xe00011a5, 0x1f49: 0xe00011e9, 0x1f4a: 0xe000118a, 0x1f4b: 0xe00011ce,
+	0x1f4c: 0xe0001178, 0x1f4d: 0xe00011bc, 0x1f4e: 0xe000119c, 0x1f4f: 0xe00011e0,
+	0x1f50: 0xe000128e, 0x1f51: 0xe00012d2, 0x1f52: 0xe0001272, 0x1f53: 0xe00012b6,
+	0x1f54: 0xe0001260, 0x1f55: 0xe00012a4, 0x1f56: 0xe0001284, 0x1f57: 0xe00012c8,
+	0x1f58: 0xe0001292, 0x1f59: 0xe00012d6, 0x1f5a: 0xe0001277, 0x1f5b: 0xe00012bb,
+	0x1f5c: 0xe0001265, 0x1f5d: 0xe00012a9, 0x1f5e: 0xe0001289, 0x1f5f: 0xe00012cd,
+	0x1f60: 0xe0001443, 0x1f61: 0xe0001487, 0x1f62: 0xe0001427, 0x1f63: 0xe000146b,
+	0x1f64: 0xe0001415, 0x1f65: 0xe0001459, 0x1f66: 0xe0001439, 0x1f67: 0xe000147d,
+	0x1f68: 0xe0001447, 0x1f69: 0xe000148b, 0x1f6a: 0xe000142c, 0x1f6b: 0xe0001470,
+	0x1f6c: 0xe000141a, 0x1f6d: 0xe000145e, 0x1f6e: 0xe000143e, 0x1f6f: 0xe0001482,
+	0x1f70: 0xe0001201, 0x1f71: 0xe000120e, 0x1f72: 0xe00011fd, 0x1f73: 0xe0001214,
+	0x1f74: 0xe00011f3, 0x1f76: 0xe0001207, 0x1f77: 0xe000120a,
+	0x1f78: 0xe0001204, 0x1f79: 0xe0001211, 0x1f7a: 0xe00011fa, 0x1f7b: 0xe00011f0,
+	0x1f7c: 0xe0001217, 0x1f7d: 0x40063620, 0x1f7e: 0x40326c20, 0x1f7f: 0x40063620,
+	// Block 0x7e, offset 0x1f80
+	0x1f80: 0x40063a20, 0x1f81: 0xe00000b1, 0x1f82: 0xe00012ea, 0x1f83: 0xe00012f5,
+	0x1f84: 0xe00012e0, 0x1f86: 0xe00012ee, 0x1f87: 0xe00012f1,
+	0x1f88: 0xe000124f, 0x1f89: 0xe0001249, 0x1f8a: 0xe00012e7, 0x1f8b: 0xe00012dd,
+	0x1f8c: 0xe00012f8, 0x1f8d: 0xe00000b7, 0x1f8e: 0xe00000b4, 0x1f8f: 0xe00000ba,
+	0x1f90: 0xe0001343, 0x1f91: 0xe000135e, 0x1f92: 0xe0001356, 0x1f93: 0xe0001352,
+	0x1f96: 0xe0001349, 0x1f97: 0xe000135a,
+	0x1f98: 0xe0001346, 0x1f99: 0xe0001361, 0x1f9a: 0xe0001340, 0x1f9b: 0xe000133a,
+	0x1f9d: 0xe00000c0, 0x1f9e: 0xe00000bd, 0x1f9f: 0xe00000c3,
+	0x1fa0: 0xe00013e6, 0x1fa1: 0xe0001401, 0x1fa2: 0xe00013f9, 0x1fa3: 0xe00013f5,
+	0x1fa4: 0xe00013a4, 0x1fa5: 0xe00013a7, 0x1fa6: 0xe00013ec, 0x1fa7: 0xe00013fd,
+	0x1fa8: 0xe00013e9, 0x1fa9: 0xe0001404, 0x1faa: 0xe00013e3, 0x1fab: 0xe00013dd,
+	0x1fac: 0xe00013aa, 0x1fad: 0xe00000ae, 0x1fae: 0xe00000ab, 0x1faf: 0x40061e20,
+	0x1fb2: 0xe000149f, 0x1fb3: 0xe00014aa,
+	0x1fb4: 0xe0001495, 0x1fb6: 0xe00014a3, 0x1fb7: 0xe00014a6,
+	0x1fb8: 0xe00013a1, 0x1fb9: 0xe000139b, 0x1fba: 0xe000149c, 0x1fbb: 0xe0001492,
+	0x1fbc: 0xe00014ad, 0x1fbd: 0x40062020, 0x1fbe: 0x40063820,
+	// Block 0x7f, offset 0x1fc0
+	0x1fc0: 0x00021284, 0x1fc1: 0x00021284, 0x1fc2: 0x00021284, 0x1fc3: 0x00021284,
+	0x1fc4: 0x00021284, 0x1fc5: 0x00021284, 0x1fc6: 0x00021284, 0x1fc7: 0x0002129b,
+	0x1fc8: 0x00021284, 0x1fc9: 0x00021284, 0x1fca: 0x00021284, 0x1fcb: 0xa0000000,
+	0x1fcc: 0xa0000000, 0x1fcd: 0xa0000000, 0x1fce: 0xa0000000, 0x1fcf: 0xa0000000,
+	0x1fd0: 0x40022620, 0x1fd1: 0x0002269b, 0x1fd2: 0x40022820, 0x1fd3: 0x40022a20,
+	0x1fd4: 0x40022c20, 0x1fd5: 0x40022e20, 0x1fd6: 0x4004c420, 0x1fd7: 0x40021820,
+	0x1fd8: 0x4003d420, 0x1fd9: 0x4003d620, 0x1fda: 0x4003d820, 0x1fdb: 0x4003da20,
+	0x1fdc: 0x4003e220, 0x1fdd: 0x4003e420, 0x1fde: 0x4003e620, 0x1fdf: 0x4003e820,
+	0x1fe0: 0x4004f820, 0x1fe1: 0x4004fa20, 0x1fe2: 0x40050220, 0x1fe3: 0x40050420,
+	0x1fe4: 0x0002e484, 0x1fe5: 0xf0001f04, 0x1fe6: 0xf0000404, 0x1fe7: 0x40050620,
+	0x1fe8: 0x40020e20, 0x1fe9: 0x40021020, 0x1fea: 0xa0000000, 0x1feb: 0xa0000000,
+	0x1fec: 0xa0000000, 0x1fed: 0xa0000000, 0x1fee: 0xa0000000, 0x1fef: 0x0002129b,
+	0x1ff0: 0x4004f020, 0x1ff1: 0x4004f420, 0x1ff2: 0x40050e20, 0x1ff3: 0xf0001f04,
+	0x1ff4: 0xf0000404, 0x1ff5: 0x40051020, 0x1ff6: 0xf0001f04, 0x1ff7: 0xf0000404,
+	0x1ff8: 0x40051620, 0x1ff9: 0x4003dc20, 0x1ffa: 0x4003de20, 0x1ffb: 0x40051820,
+	0x1ffc: 0xf0001f04, 0x1ffd: 0x4002e020, 0x1ffe: 0x40021420, 0x1fff: 0x40051a20,
+	// Block 0x80, offset 0x2000
+	0x2000: 0x40051e20, 0x2001: 0x40052220, 0x2002: 0x40052420, 0x2003: 0x40050820,
+	0x2004: 0x40095820, 0x2005: 0x40040c20, 0x2006: 0x40040e20, 0x2007: 0xf0001f04,
+	0x2008: 0xf0001f04, 0x2009: 0xf0001f04, 0x200a: 0x4004e820, 0x200b: 0x4004d420,
+	0x200c: 0x40050a20, 0x200d: 0x40050c20, 0x200e: 0x4004da20, 0x200f: 0x40026620,
+	0x2010: 0x40052020, 0x2011: 0x4004dc20, 0x2012: 0x40095020, 0x2013: 0x40023420,
+	0x2014: 0x40051c20, 0x2015: 0x40039c20, 0x2016: 0x40039e20, 0x2017: 0xe00000a6,
+	0x2018: 0x4003a020, 0x2019: 0x4003a220, 0x201a: 0x4003a420, 0x201b: 0x4003a620,
+	0x201c: 0x4003a820, 0x201d: 0x4003aa20, 0x201e: 0x4003ac20, 0x201f: 0x00021284,
+	0x2020: 0xa0000000, 0x2021: 0xa0000000, 0x2022: 0xa0000000, 0x2023: 0xa0000000,
+	0x2024: 0xa0000000,
+	0x202a: 0xa0000000, 0x202b: 0xa0000000,
+	0x202c: 0xa0000000, 0x202d: 0xa0000000, 0x202e: 0xa0000000, 0x202f: 0xa0000000,
+	0x2030: 0x0029cc94, 0x2031: 0x002d9a94,
+	0x2034: 0x0029d494, 0x2035: 0x0029d694, 0x2036: 0x0029d894, 0x2037: 0x0029da94,
+	0x2038: 0x0029dc94, 0x2039: 0x0029de94, 0x203a: 0x00093894, 0x203b: 0x00094e94,
+	0x203c: 0x00094294, 0x203d: 0x0003f494, 0x203e: 0x0003f694, 0x203f: 0x002e9e94,
+	// Block 0x81, offset 0x2040
+	0x2040: 0x0029cc95, 0x2041: 0x0029ce95, 0x2042: 0x0029d095, 0x2043: 0x0029d295,
+	0x2044: 0x0029d495, 0x2045: 0x0029d695, 0x2046: 0x0029d895, 0x2047: 0x0029da95,
+	0x2048: 0x0029dc95, 0x2049: 0x0029de95, 0x204a: 0x00093895, 0x204b: 0x00094e95,
+	0x204c: 0x00094295, 0x204d: 0x0003f495, 0x204e: 0x0003f695,
+	0x2050: 0x002bde95, 0x2051: 0x002c9895, 0x2052: 0x002ee295, 0x2053: 0x0030f695,
+	0x2054: 0x002cb895, 0x2055: 0x002d6895, 0x2056: 0x002dfe95, 0x2057: 0x002e2295,
+	0x2058: 0x002e8295, 0x2059: 0x002e9e95, 0x205a: 0x002f2c95, 0x205b: 0x002fe695,
+	0x205c: 0x00302c95,
+	0x2060: 0x4027f820, 0x2061: 0x4027fa20, 0x2062: 0x4027fc20, 0x2063: 0x4027fe20,
+	0x2064: 0x40280020, 0x2065: 0x40280220, 0x2066: 0x40280420, 0x2067: 0x40280620,
+	0x2068: 0x40282c20, 0x2069: 0x40280820, 0x206a: 0x40280a20, 0x206b: 0x40280c20,
+	0x206c: 0x40280e20, 0x206d: 0x40281020, 0x206e: 0x40281220, 0x206f: 0x40281420,
+	0x2070: 0x40281620, 0x2071: 0x40281820, 0x2072: 0x40281a20, 0x2073: 0x40281c20,
+	0x2074: 0x40281e20, 0x2075: 0x40282020, 0x2076: 0x40282220, 0x2077: 0x40282420,
+	0x2078: 0x40282620, 0x2079: 0x40282820, 0x207a: 0x40282a20,
+	// Block 0x82, offset 0x2080
+	0x2090: 0xae612a02, 0x2091: 0xae612b02, 0x2092: 0xa0112c02, 0x2093: 0xa0112c02,
+	0x2094: 0xae612d02, 0x2095: 0xae612e02, 0x2096: 0xae612f02, 0x2097: 0xae613002,
+	0x2098: 0xa0106102, 0x2099: 0xa0106102, 0x209a: 0xa0106102, 0x209b: 0xae613102,
+	0x209c: 0xae613202, 0x209d: 0xa0006202, 0x209e: 0xa0006202, 0x209f: 0xa0006202,
+	0x20a0: 0xa0006202, 0x20a1: 0xae613302, 0x20a2: 0xa0006202, 0x20a3: 0xa0006202,
+	0x20a4: 0xa0006202, 0x20a5: 0xa0106102, 0x20a6: 0xa0113402, 0x20a7: 0xae613502,
+	0x20a8: 0xadc13602, 0x20a9: 0xae613702, 0x20aa: 0xa0106102, 0x20ab: 0xa0106102,
+	0x20ac: 0xadc06002, 0x20ad: 0xadc06002, 0x20ae: 0xadc06002, 0x20af: 0xadc06002,
+	0x20b0: 0xae605f02,
+	// Block 0x83, offset 0x20c0
+	0x20c0: 0xe00009bc, 0x20c1: 0xe00009c0, 0x20c2: 0x002c3a8b, 0x20c3: 0xf0000a04,
+	0x20c4: 0x40081c20, 0x20c5: 0xe0000a5e, 0x20c6: 0xe0000a62, 0x20c7: 0x002cc28a,
+	0x20c8: 0x40081e20, 0x20c9: 0xf0000a04, 0x20ca: 0x002d2285, 0x20cb: 0x002d688b,
+	0x20cc: 0x002d688b, 0x20cd: 0x002d688b, 0x20ce: 0x002d6885, 0x20cf: 0xf0000202,
+	0x20d0: 0x002d9a8b, 0x20d1: 0x002d9a8b, 0x20d2: 0x002e228b, 0x20d3: 0x002e2285,
+	0x20d4: 0x40082020, 0x20d5: 0x002e9e8b, 0x20d6: 0xf000040a, 0x20d7: 0x40082220,
+	0x20d8: 0x40082420, 0x20d9: 0x002f2c8b, 0x20da: 0x002f568b, 0x20db: 0x002f7a8b,
+	0x20dc: 0x002f7a8b, 0x20dd: 0x002f7a8b, 0x20de: 0x40082620, 0x20df: 0x40082820,
+	0x20e0: 0xf0001414, 0x20e1: 0xe0000fbd, 0x20e2: 0xf0001414, 0x20e3: 0x40082a20,
+	0x20e4: 0x00312a8b, 0x20e5: 0x40082c20, 0x20e6: 0x0032a288, 0x20e7: 0x40082e20,
+	0x20e8: 0x00312a8b, 0x20e9: 0x40083020, 0x20ea: 0x002dfe88, 0x20eb: 0xe000094d,
+	0x20ec: 0x002c0a8b, 0x20ed: 0x002c3a8b, 0x20ee: 0x40083220, 0x20ef: 0x002c9885,
+	0x20f0: 0x002c988b, 0x20f1: 0x002d088b, 0x20f2: 0x002d1e88, 0x20f3: 0x002e828b,
+	0x20f4: 0x002ee285, 0x20f5: 0x00389084, 0x20f6: 0x00389284, 0x20f7: 0x00389484,
+	0x20f8: 0x00389684, 0x20f9: 0x002d9a85, 0x20fa: 0x40083420, 0x20fb: 0xe0000b95,
+	0x20fc: 0x00327e85, 0x20fd: 0x00325685, 0x20fe: 0x0032568b, 0x20ff: 0x00327e8b,
+	// Block 0x84, offset 0x2100
+	0x2100: 0x00093685, 0x2101: 0x40083620, 0x2102: 0x40083820, 0x2103: 0x40083a20,
+	0x2104: 0x40083c20, 0x2105: 0x002c628b, 0x2106: 0x002c6285, 0x2107: 0x002c9885,
+	0x2108: 0x002d9a85, 0x2109: 0x002dcc85, 0x210a: 0x40083e20, 0x210b: 0x400a6e20,
+	0x210c: 0x40084020, 0x210d: 0xe00009c4, 0x210e: 0x402d1e20, 0x210f: 0x40084220,
+	0x2110: 0xe00002cb, 0x2111: 0xe00002d3, 0x2112: 0xe00002b2, 0x2113: 0xe00002bb,
+	0x2114: 0xe00003cd, 0x2115: 0xe00002c3, 0x2116: 0xe00003d1, 0x2117: 0xe00004ab,
+	0x2118: 0xe0000579, 0x2119: 0xe00002c7, 0x211a: 0xe0000640, 0x211b: 0xe00002cf,
+	0x211c: 0xe00004af, 0x211d: 0xe0000644, 0x211e: 0xe0000798, 0x211f: 0xf0001e1e,
+	0x2120: 0x002d9a8a, 0x2121: 0xf0001f0a, 0x2122: 0xf0000a0a, 0x2123: 0xf0001f0a,
+	0x2124: 0x0030be8a, 0x2125: 0xf0001f0a, 0x2126: 0xf0000a0a, 0x2127: 0xe00010bb,
+	0x2128: 0xf0001f0a, 0x2129: 0x0030f68a, 0x212a: 0xf0001f0a, 0x212b: 0xf0000a0a,
+	0x212c: 0x002e228a, 0x212d: 0x002c3a8a, 0x212e: 0x002c628a, 0x212f: 0x002e828a,
+	0x2130: 0x002d9a84, 0x2131: 0xf0001f04, 0x2132: 0xf0000404, 0x2133: 0xf0001f04,
+	0x2134: 0x0030be84, 0x2135: 0xf0001f04, 0x2136: 0xf0000404, 0x2137: 0xe00010b6,
+	0x2138: 0xf0001f04, 0x2139: 0x0030f684, 0x213a: 0xf0001f04, 0x213b: 0xf0000404,
+	0x213c: 0x002e2284, 0x213d: 0x002c3a84, 0x213e: 0x002c6284, 0x213f: 0x002e8284,
+	// Block 0x85, offset 0x2140
+	0x2140: 0x40287c20, 0x2141: 0x40287e20, 0x2142: 0x40288020, 0x2143: 0x002c5e88,
+	0x2144: 0x402c5e20, 0x2145: 0xe00006c9, 0x2146: 0x40288220, 0x2147: 0x40288420,
+	0x2148: 0x40288620, 0x2149: 0xe00001e2,
+	0x2150: 0x40084420, 0x2151: 0x40084820, 0x2152: 0x40084620, 0x2153: 0x40084a20,
+	0x2154: 0x40084c20, 0x2155: 0x40084e20, 0x2156: 0x40085020, 0x2157: 0x40085220,
+	0x2158: 0x40085420, 0x2159: 0x40085620, 0x215a: 0xe00000c6, 0x215b: 0xe00000c9,
+	0x215c: 0x40085820, 0x215d: 0x40085a20, 0x215e: 0x40085c20, 0x215f: 0x40085e20,
+	0x2160: 0x40086020, 0x2161: 0x40086220, 0x2162: 0x40086420, 0x2163: 0x40086620,
+	0x2164: 0x40086820, 0x2165: 0x40086a20, 0x2166: 0x40086c20, 0x2167: 0x40086e20,
+	0x2168: 0x40087020, 0x2169: 0x40087220, 0x216a: 0x40087420, 0x216b: 0x40087620,
+	0x216c: 0x40087820, 0x216d: 0x40087a20, 0x216e: 0xe00000cc, 0x216f: 0x40087c20,
+	0x2170: 0x40087e20, 0x2171: 0x40088020, 0x2172: 0x40088220, 0x2173: 0x40088420,
+	0x2174: 0x40088620, 0x2175: 0x40088820, 0x2176: 0x40088a20, 0x2177: 0x40088c20,
+	0x2178: 0x40088e20, 0x2179: 0x40089020, 0x217a: 0x40089220, 0x217b: 0x40089420,
+	0x217c: 0x40089620, 0x217d: 0x40089820, 0x217e: 0x40089a20, 0x217f: 0x40089c20,
+	// Block 0x86, offset 0x2180
+	0x2180: 0x40089e20, 0x2181: 0x4008a020, 0x2182: 0x4008a220, 0x2183: 0x4008a420,
+	0x2184: 0x4008a620, 0x2185: 0x4008a820, 0x2186: 0x4008aa20, 0x2187: 0x4008ac20,
+	0x2188: 0x4008ae20, 0x2189: 0x4008b020, 0x218a: 0x4008b220, 0x218b: 0x4008b420,
+	0x218c: 0x4008b620, 0x218d: 0xe00000cf, 0x218e: 0xe00000d5, 0x218f: 0xe00000d2,
+	0x2190: 0x4008b820, 0x2191: 0x4008ba20, 0x2192: 0x4008bc20, 0x2193: 0x4008be20,
+	0x2194: 0x4008c020, 0x2195: 0x4008c220, 0x2196: 0x4008c420, 0x2197: 0x4008c620,
+	0x2198: 0x4008c820, 0x2199: 0x4008ca20, 0x219a: 0x4008cc20, 0x219b: 0x4008ce20,
+	0x219c: 0x4008d020, 0x219d: 0x4008d220, 0x219e: 0x4008d420, 0x219f: 0x4008d620,
+	0x21a0: 0x4008d820, 0x21a1: 0x4008da20, 0x21a2: 0x4008dc20, 0x21a3: 0x4008de20,
+	0x21a4: 0x4008e020, 0x21a5: 0x4008e220, 0x21a6: 0x4008e420, 0x21a7: 0x4008e620,
+	0x21a8: 0x4008e820, 0x21a9: 0x4008ea20, 0x21aa: 0x4008ec20, 0x21ab: 0x4008ee20,
+	0x21ac: 0x4008f020, 0x21ad: 0x4008f220, 0x21ae: 0x4008f420, 0x21af: 0x4008f620,
+	0x21b0: 0x4008f820, 0x21b1: 0x4008fa20, 0x21b2: 0x4008fc20, 0x21b3: 0x4008fe20,
+	0x21b4: 0x40090020, 0x21b5: 0x40090220, 0x21b6: 0x40090420, 0x21b7: 0x40090620,
+	0x21b8: 0x40090820, 0x21b9: 0x40090a20, 0x21ba: 0x40090c20, 0x21bb: 0x40090e20,
+	0x21bc: 0x40091020, 0x21bd: 0x40091220, 0x21be: 0x40091420, 0x21bf: 0x40091620,
+	// Block 0x87, offset 0x21c0
+	0x21c0: 0x40091820, 0x21c1: 0x40091a20, 0x21c2: 0x40091c20, 0x21c3: 0x40091e20,
+	0x21c4: 0xe00000d8, 0x21c5: 0x40092020, 0x21c6: 0x40092220, 0x21c7: 0x40092420,
+	0x21c8: 0x40092620, 0x21c9: 0xe00000db, 0x21ca: 0x40092820, 0x21cb: 0x40092a20,
+	0x21cc: 0xe00000de, 0x21cd: 0x40092c20, 0x21ce: 0x40093020, 0x21cf: 0x40093220,
+	0x21d0: 0x40093420, 0x21d1: 0x40093620, 0x21d2: 0x40094e20, 0x21d3: 0x40095220,
+	0x21d4: 0x40095420, 0x21d5: 0x40095620, 0x21d6: 0x40095a20, 0x21d7: 0x40095c20,
+	0x21d8: 0x40095e20, 0x21d9: 0x40096020, 0x21da: 0x40096220, 0x21db: 0x40096420,
+	0x21dc: 0x40096820, 0x21dd: 0x40096c20, 0x21de: 0x40096e20, 0x21df: 0x40097020,
+	0x21e0: 0x40097220, 0x21e1: 0x40097420, 0x21e2: 0x40097620, 0x21e3: 0x40097820,
+	0x21e4: 0xe00000ea, 0x21e5: 0x40097a20, 0x21e6: 0xe00000ed, 0x21e7: 0x40097c20,
+	0x21e8: 0x40097e20, 0x21e9: 0x40098020, 0x21ea: 0x40098220, 0x21eb: 0x40098420,
+	0x21ec: 0xf0001f04, 0x21ed: 0xf0000404, 0x21ee: 0x40098620, 0x21ef: 0xf0001f04,
+	0x21f0: 0xf0000404, 0x21f1: 0x40098820, 0x21f2: 0x40098a20, 0x21f3: 0x40098c20,
+	0x21f4: 0x40098e20, 0x21f5: 0x40099020, 0x21f6: 0x40099220, 0x21f7: 0x40099420,
+	0x21f8: 0x40099620, 0x21f9: 0x40099820, 0x21fa: 0x40099a20, 0x21fb: 0x40099c20,
+	0x21fc: 0x40099e20, 0x21fd: 0x4009a020, 0x21fe: 0x4009a220, 0x21ff: 0x4009a420,
+	// Block 0x88, offset 0x2200
+	0x2200: 0x4009a620, 0x2201: 0xe00000f5, 0x2202: 0x4009a820, 0x2203: 0x4009aa20,
+	0x2204: 0xe00000f8, 0x2205: 0x4009ac20, 0x2206: 0x4009ae20, 0x2207: 0xe00000fb,
+	0x2208: 0x4009b020, 0x2209: 0xe00000fe, 0x220a: 0x4009b220, 0x220b: 0x4009b420,
+	0x220c: 0x4009b620, 0x220d: 0x4009b820, 0x220e: 0x4009ba20, 0x220f: 0x4009bc20,
+	0x2210: 0x4009be20, 0x2211: 0x4009c020, 0x2212: 0x4009c220, 0x2213: 0x4009c420,
+	0x2214: 0x4009c620, 0x2215: 0x4009c820, 0x2216: 0x4009ca20, 0x2217: 0x4009cc20,
+	0x2218: 0x4009ce20, 0x2219: 0x4009d020, 0x221a: 0x4009d220, 0x221b: 0x4009d420,
+	0x221c: 0x4009d620, 0x221d: 0x4009d820, 0x221e: 0x4009da20, 0x221f: 0x4009dc20,
+	0x2220: 0xe00000e4, 0x2221: 0x4009de20, 0x2222: 0xe0000104, 0x2223: 0x4009e020,
+	0x2224: 0x4009e220, 0x2225: 0x4009e420, 0x2226: 0x4009e620, 0x2227: 0x4009e820,
+	0x2228: 0x4009ea20, 0x2229: 0x4009ec20, 0x222a: 0x4009ee20, 0x222b: 0x4009f020,
+	0x222c: 0x4009f220, 0x222d: 0xe0000101, 0x222e: 0xe00000e1, 0x222f: 0xe00000e7,
+	0x2230: 0xe0000107, 0x2231: 0xe000010a, 0x2232: 0x4009f420, 0x2233: 0x4009f620,
+	0x2234: 0xe000010d, 0x2235: 0xe0000110, 0x2236: 0x4009f820, 0x2237: 0x4009fa20,
+	0x2238: 0xe0000113, 0x2239: 0xe0000116, 0x223a: 0x4009fc20, 0x223b: 0x4009fe20,
+	0x223c: 0x400a0020, 0x223d: 0x400a0220, 0x223e: 0x400a0420, 0x223f: 0x400a0620,
+	// Block 0x89, offset 0x2240
+	0x2240: 0xe0000119, 0x2241: 0xe000011c, 0x2242: 0x400a0820, 0x2243: 0x400a0a20,
+	0x2244: 0xe0000125, 0x2245: 0xe0000128, 0x2246: 0x400a0c20, 0x2247: 0x400a0e20,
+	0x2248: 0xe000012b, 0x2249: 0xe000012e, 0x224a: 0x400a1020, 0x224b: 0x400a1220,
+	0x224c: 0x400a1420, 0x224d: 0x400a1620, 0x224e: 0x400a1820, 0x224f: 0x400a1a20,
+	0x2250: 0x400a1c20, 0x2251: 0x400a1e20, 0x2252: 0x400a2020, 0x2253: 0x400a2220,
+	0x2254: 0x400a2420, 0x2255: 0x400a2620, 0x2256: 0x400a2820, 0x2257: 0x400a2a20,
+	0x2258: 0x400a2c20, 0x2259: 0x400a2e20, 0x225a: 0x400a3020, 0x225b: 0x400a3220,
+	0x225c: 0x400a3420, 0x225d: 0x400a3620, 0x225e: 0x400a3820, 0x225f: 0x400a3a20,
+	0x2260: 0x400a3c20, 0x2261: 0x400a3e20, 0x2262: 0x400a4020, 0x2263: 0x400a4220,
+	0x2264: 0x400a4420, 0x2265: 0x400a4620, 0x2266: 0x400a4820, 0x2267: 0x400a4a20,
+	0x2268: 0x400a4c20, 0x2269: 0x400a4e20, 0x226a: 0x400a5020, 0x226b: 0x400a5220,
+	0x226c: 0xe0000137, 0x226d: 0xe000013a, 0x226e: 0xe000013d, 0x226f: 0xe0000140,
+	0x2270: 0x400a5420, 0x2271: 0x400a5620, 0x2272: 0x400a5820, 0x2273: 0x400a5a20,
+	0x2274: 0x400a5c20, 0x2275: 0x400a5e20, 0x2276: 0x400a6020, 0x2277: 0x400a6220,
+	0x2278: 0x400a6420, 0x2279: 0x400a6620, 0x227a: 0x400a6820, 0x227b: 0x400a6a20,
+	0x227c: 0x400a6c20, 0x227d: 0x400a7020, 0x227e: 0x400a7220, 0x227f: 0x400a7420,
+	// Block 0x8a, offset 0x2280
+	0x2280: 0x400a7620, 0x2281: 0x400a7820, 0x2282: 0x400a7a20, 0x2283: 0x400a7c20,
+	0x2284: 0x400a7e20, 0x2285: 0x400a8020, 0x2286: 0x400a8220, 0x2287: 0x400a8420,
+	0x2288: 0x400a8620, 0x2289: 0x400a8820, 0x228a: 0x400a8a20, 0x228b: 0x400a8c20,
+	0x228c: 0x400a8e20, 0x228d: 0x400a9020, 0x228e: 0x400a9220, 0x228f: 0x400a9420,
+	0x2290: 0x400a9620, 0x2291: 0x400a9820, 0x2292: 0x400a9a20, 0x2293: 0x400a9c20,
+	0x2294: 0x400a9e20, 0x2295: 0x400aa020, 0x2296: 0x400aa220, 0x2297: 0x400aa420,
+	0x2298: 0x400aa620, 0x2299: 0x400aa820, 0x229a: 0x400aaa20, 0x229b: 0x400aac20,
+	0x229c: 0x400aae20, 0x229d: 0x400ab020, 0x229e: 0x400ab220, 0x229f: 0x400ab420,
+	0x22a0: 0xe000011f, 0x22a1: 0xe0000122, 0x22a2: 0xe0000131, 0x22a3: 0xe0000134,
+	0x22a4: 0x400ab620, 0x22a5: 0x400ab820, 0x22a6: 0x400aba20, 0x22a7: 0x400abc20,
+	0x22a8: 0x400abe20, 0x22a9: 0x400ac020, 0x22aa: 0xe0000143, 0x22ab: 0xe0000146,
+	0x22ac: 0xe0000149, 0x22ad: 0xe000014c, 0x22ae: 0x400ac220, 0x22af: 0x400ac420,
+	0x22b0: 0x400ac620, 0x22b1: 0x400ac820, 0x22b2: 0x400aca20, 0x22b3: 0x400acc20,
+	0x22b4: 0x400ace20, 0x22b5: 0x400ad020, 0x22b6: 0x400ad220, 0x22b7: 0x400ad420,
+	0x22b8: 0x400ad620, 0x22b9: 0x400ad820, 0x22ba: 0x400ada20, 0x22bb: 0x400adc20,
+	0x22bc: 0x400ade20, 0x22bd: 0x400ae020, 0x22be: 0x400ae220, 0x22bf: 0x400ae420,
+	// Block 0x8b, offset 0x22c0
+	0x22c0: 0x400ae620, 0x22c1: 0x400ae820, 0x22c2: 0x400aea20, 0x22c3: 0x400aec20,
+	0x22c4: 0x400aee20, 0x22c5: 0x400af020, 0x22c6: 0x400af220, 0x22c7: 0x400af420,
+	0x22c8: 0x400af620, 0x22c9: 0x400af820, 0x22ca: 0x400afa20, 0x22cb: 0x400afc20,
+	0x22cc: 0x400afe20, 0x22cd: 0x400b0020, 0x22ce: 0x400b0220, 0x22cf: 0x400b0420,
+	0x22d0: 0x400b0620, 0x22d1: 0x400b0820, 0x22d2: 0x400b0a20, 0x22d3: 0x400b0c20,
+	0x22d4: 0x400b0e20, 0x22d5: 0x400b1020, 0x22d6: 0x400b1220, 0x22d7: 0x400b1420,
+	0x22d8: 0x400b1620, 0x22d9: 0x400b1820, 0x22da: 0x400b1a20, 0x22db: 0x400b1c20,
+	0x22dc: 0x400b1e20, 0x22dd: 0x400b2020, 0x22de: 0x400b2220, 0x22df: 0x400b2420,
+	0x22e0: 0x400b2620, 0x22e1: 0x400b2820, 0x22e2: 0x400b2a20, 0x22e3: 0x400b2c20,
+	0x22e4: 0x400b2e20, 0x22e5: 0x400b3020, 0x22e6: 0x400b3220, 0x22e7: 0x400b3420,
+	0x22e8: 0x400b3620, 0x22e9: 0x40049c20, 0x22ea: 0x40049e20, 0x22eb: 0x400b3820,
+	0x22ec: 0x400b3a20, 0x22ed: 0x400b3c20, 0x22ee: 0x400b3e20, 0x22ef: 0x400b4020,
+	0x22f0: 0x400b4220, 0x22f1: 0x400b4420, 0x22f2: 0x400b4620, 0x22f3: 0x400b4820,
+	0x22f4: 0x400b4a20, 0x22f5: 0x400b4c20, 0x22f6: 0x400b4e20, 0x22f7: 0x400b5020,
+	0x22f8: 0x400b5220, 0x22f9: 0x400b5420, 0x22fa: 0x400b5620, 0x22fb: 0x400b5820,
+	0x22fc: 0x400b5a20, 0x22fd: 0x400b5c20, 0x22fe: 0x400b5e20, 0x22ff: 0x400b6020,
+	// Block 0x8c, offset 0x2300
+	0x2300: 0x400b6220, 0x2301: 0x400b6420, 0x2302: 0x400b6620, 0x2303: 0x400b6820,
+	0x2304: 0x400b6a20, 0x2305: 0x400b6c20, 0x2306: 0x400b6e20, 0x2307: 0x400b7020,
+	0x2308: 0x400b7220, 0x2309: 0x400b7420, 0x230a: 0x400b7620, 0x230b: 0x400b7820,
+	0x230c: 0x400b7a20, 0x230d: 0x400b7c20, 0x230e: 0x400b7e20, 0x230f: 0x400b8020,
+	0x2310: 0x400b8220, 0x2311: 0x400b8420, 0x2312: 0x400b8620, 0x2313: 0x400b8820,
+	0x2314: 0x400b8a20, 0x2315: 0x400b8c20, 0x2316: 0x400b8e20, 0x2317: 0x400b9020,
+	0x2318: 0x400b9220, 0x2319: 0x400b9420, 0x231a: 0x400b9620, 0x231b: 0x400b9820,
+	0x231c: 0x400b9a20, 0x231d: 0x400b9c20, 0x231e: 0x400b9e20, 0x231f: 0x400ba020,
+	0x2320: 0x400ba220, 0x2321: 0x400ba420, 0x2322: 0x400ba620, 0x2323: 0x400ba820,
+	0x2324: 0x400baa20, 0x2325: 0x400bac20, 0x2326: 0x400bae20, 0x2327: 0x400bb020,
+	0x2328: 0x400bb220, 0x2329: 0x400bb420, 0x232a: 0x400bb620, 0x232b: 0x400bb820,
+	0x232c: 0x400bba20, 0x232d: 0x400bbc20, 0x232e: 0x400bbe20, 0x232f: 0x400bc020,
+	0x2330: 0x400bc220, 0x2331: 0x400bc420, 0x2332: 0x400bc620, 0x2333: 0x400bc820,
+	0x2334: 0x400bca20, 0x2335: 0x400bcc20, 0x2336: 0x400bce20, 0x2337: 0x400bd020,
+	0x2338: 0x400bd220, 0x2339: 0x400bd420, 0x233a: 0x400bd620, 0x233b: 0x400bd820,
+	0x233c: 0x400bda20, 0x233d: 0x400bdc20, 0x233e: 0x400bde20, 0x233f: 0x400be020,
+	// Block 0x8d, offset 0x2340
+	0x2340: 0x400be220, 0x2341: 0x400be420, 0x2342: 0x400be620, 0x2343: 0x400be820,
+	0x2344: 0x400bea20, 0x2345: 0x400bec20, 0x2346: 0x400bee20, 0x2347: 0x400bf020,
+	0x2348: 0x400bf220, 0x2349: 0x400bf420, 0x234a: 0x400bf620, 0x234b: 0x400bf820,
+	0x234c: 0x400bfa20, 0x234d: 0x400bfc20, 0x234e: 0x400bfe20, 0x234f: 0x400c0020,
+	0x2350: 0x400c0220, 0x2351: 0x400c0420, 0x2352: 0x400c0620, 0x2353: 0x400c0820,
+	0x2354: 0x400c0a20, 0x2355: 0x400c0c20, 0x2356: 0x400c0e20, 0x2357: 0x400c1020,
+	0x2358: 0x400c1220, 0x2359: 0x400c1420, 0x235a: 0x400c1620, 0x235b: 0x400c1820,
+	0x235c: 0x400c1a20, 0x235d: 0x400c1c20, 0x235e: 0x400c1e20, 0x235f: 0x400c2020,
+	0x2360: 0x400c2220, 0x2361: 0x400c2420, 0x2362: 0x400c2620, 0x2363: 0x400c2820,
+	0x2364: 0x400c2a20, 0x2365: 0x400c2c20, 0x2366: 0x400c2e20, 0x2367: 0x400c3020,
+	0x2368: 0x400c3220, 0x2369: 0x400c3420, 0x236a: 0x400c3620, 0x236b: 0x400c3820,
+	0x236c: 0x400c3a20, 0x236d: 0x400c3c20, 0x236e: 0x400c3e20, 0x236f: 0x400c4020,
+	0x2370: 0x400c4220, 0x2371: 0x400c4420, 0x2372: 0x400c4620, 0x2373: 0x400c4820,
+	0x2374: 0x400c4a20, 0x2375: 0x400c4c20, 0x2376: 0x400c4e20, 0x2377: 0x400c5020,
+	0x2378: 0x400c5220, 0x2379: 0x400c5420, 0x237a: 0x400c5620, 0x237b: 0x400c5820,
+	0x237c: 0x400c5a20, 0x237d: 0x400c5c20, 0x237e: 0x400c5e20, 0x237f: 0x400c6020,
+	// Block 0x8e, offset 0x2380
+	0x2380: 0x400c6220, 0x2381: 0x400c6420, 0x2382: 0x400c6620, 0x2383: 0x400c6820,
+	0x2384: 0x400c6a20, 0x2385: 0x400c6c20, 0x2386: 0x400c6e20, 0x2387: 0x400c7020,
+	0x2388: 0x400c7220, 0x2389: 0x400c7420, 0x238a: 0x400c7620, 0x238b: 0x400c7820,
+	0x238c: 0x400c7a20, 0x238d: 0x400c7c20, 0x238e: 0x400c7e20, 0x238f: 0x400c8020,
+	0x2390: 0x400c8220, 0x2391: 0x400c8420, 0x2392: 0x400c8620, 0x2393: 0x400c8820,
+	0x2394: 0x400c8a20, 0x2395: 0x400c8c20, 0x2396: 0x400c8e20, 0x2397: 0x400c9020,
+	0x2398: 0x400c9220, 0x2399: 0x400c9420, 0x239a: 0x400c9620, 0x239b: 0x400c9820,
+	0x239c: 0x400c9a20, 0x239d: 0x400c9c20, 0x239e: 0x400c9e20, 0x239f: 0x400ca020,
+	0x23a0: 0x400ca220, 0x23a1: 0x400ca420, 0x23a2: 0x400ca620, 0x23a3: 0x400ca820,
+	0x23a4: 0x400caa20, 0x23a5: 0x400cac20, 0x23a6: 0x400cae20, 0x23a7: 0x400cb020,
+	0x23a8: 0x400cb220, 0x23a9: 0x400cb420, 0x23aa: 0x400cb620, 0x23ab: 0x400cb820,
+	0x23ac: 0x400cba20, 0x23ad: 0x400cbc20, 0x23ae: 0x400cbe20, 0x23af: 0x400cc020,
+	0x23b0: 0x400cc220, 0x23b1: 0x400cc420, 0x23b2: 0x400cc620, 0x23b3: 0x400cc820,
+	// Block 0x8f, offset 0x23c0
+	0x23c0: 0x400cca20, 0x23c1: 0x400ccc20, 0x23c2: 0x400cce20, 0x23c3: 0x400cd020,
+	0x23c4: 0x400cd220, 0x23c5: 0x400cd420, 0x23c6: 0x400cd620, 0x23c7: 0x400cd820,
+	0x23c8: 0x400cda20, 0x23c9: 0x400cdc20, 0x23ca: 0x400cde20, 0x23cb: 0x400ce020,
+	0x23cc: 0x400ce220, 0x23cd: 0x400ce420, 0x23ce: 0x400ce620, 0x23cf: 0x400ce820,
+	0x23d0: 0x400cea20, 0x23d1: 0x400cec20, 0x23d2: 0x400cee20, 0x23d3: 0x400cf020,
+	0x23d4: 0x400cf220, 0x23d5: 0x400cf420, 0x23d6: 0x400cf620, 0x23d7: 0x400cf820,
+	0x23d8: 0x400cfa20, 0x23d9: 0x400cfc20, 0x23da: 0x400cfe20, 0x23db: 0x400d0020,
+	0x23dc: 0x400d0220, 0x23dd: 0x400d0420, 0x23de: 0x400d0620, 0x23df: 0x400d0820,
+	0x23e0: 0x400d0a20, 0x23e1: 0x400d0c20, 0x23e2: 0x400d0e20, 0x23e3: 0x400d1020,
+	0x23e4: 0x400d1220, 0x23e5: 0x400d1420, 0x23e6: 0x400d1620,
+	// Block 0x90, offset 0x2400
+	0x2400: 0x400d1820, 0x2401: 0x400d1a20, 0x2402: 0x400d1c20, 0x2403: 0x400d1e20,
+	0x2404: 0x400d2020, 0x2405: 0x400d2220, 0x2406: 0x400d2420, 0x2407: 0x400d2620,
+	0x2408: 0x400d2820, 0x2409: 0x400d2a20, 0x240a: 0x400d2c20,
+	0x2420: 0x0029ce86, 0x2421: 0x0029d086, 0x2422: 0x0029d286, 0x2423: 0x0029d486,
+	0x2424: 0x0029d686, 0x2425: 0x0029d886, 0x2426: 0x0029da86, 0x2427: 0x0029dc86,
+	0x2428: 0x0029de86, 0x2429: 0xf0000606, 0x242a: 0xf0000606, 0x242b: 0xf0000606,
+	0x242c: 0xf0000606, 0x242d: 0xf0000606, 0x242e: 0xf0000606, 0x242f: 0xf0000606,
+	0x2430: 0xf0000606, 0x2431: 0xf0000606, 0x2432: 0xf0000606, 0x2433: 0xf0000606,
+	0x2434: 0xf0000404, 0x2435: 0xf0000404, 0x2436: 0xf0000404, 0x2437: 0xf0000404,
+	0x2438: 0xf0000404, 0x2439: 0xf0000404, 0x243a: 0xf0000404, 0x243b: 0xf0000404,
+	0x243c: 0xf0000404, 0x243d: 0xe0000015, 0x243e: 0xe000001a, 0x243f: 0xe000001f,
+	// Block 0x91, offset 0x2440
+	0x2440: 0xe0000024, 0x2441: 0xe0000029, 0x2442: 0xe000002e, 0x2443: 0xe0000033,
+	0x2444: 0xe0000038, 0x2445: 0xe000003d, 0x2446: 0xe0000042, 0x2447: 0xe0000047,
+	0x2448: 0xf0001f04, 0x2449: 0xf0001f04, 0x244a: 0xf0001f04, 0x244b: 0xf0001f04,
+	0x244c: 0xf0001f04, 0x244d: 0xf0001f04, 0x244e: 0xf0001f04, 0x244f: 0xf0001f04,
+	0x2450: 0xf0001f04, 0x2451: 0xf0000404, 0x2452: 0xf0000404, 0x2453: 0xf0000404,
+	0x2454: 0xf0000404, 0x2455: 0xf0000404, 0x2456: 0xf0000404, 0x2457: 0xf0000404,
+	0x2458: 0xf0000404, 0x2459: 0xf0000404, 0x245a: 0xf0000404, 0x245b: 0xf0000404,
+	0x245c: 0xf0000404, 0x245d: 0xf0000404, 0x245e: 0xf0000404, 0x245f: 0xf0000404,
+	0x2460: 0xf0000404, 0x2461: 0xf0000404, 0x2462: 0xf0000404, 0x2463: 0xf0000404,
+	0x2464: 0xf0000404, 0x2465: 0xf0000404, 0x2466: 0xf0000404, 0x2467: 0xf0000404,
+	0x2468: 0xf0000404, 0x2469: 0xf0000404, 0x246a: 0xf0000404, 0x246b: 0xf0000404,
+	0x246c: 0xf0000404, 0x246d: 0xf0000404, 0x246e: 0xf0000404, 0x246f: 0xf0000404,
+	0x2470: 0xf0000404, 0x2471: 0xf0000404, 0x2472: 0xf0000404, 0x2473: 0xf0000404,
+	0x2474: 0xf0000404, 0x2475: 0xf0000404, 0x2476: 0x002bde8c, 0x2477: 0x002c0a8c,
+	0x2478: 0x002c3a8c, 0x2479: 0x002c628c, 0x247a: 0x002c988c, 0x247b: 0x002d088c,
+	0x247c: 0x002d228c, 0x247d: 0x002d688c, 0x247e: 0x002d9a8c, 0x247f: 0x002dcc8c,
+	// Block 0x92, offset 0x2480
+	0x2480: 0x002dfe8c, 0x2481: 0x002e228c, 0x2482: 0x002e828c, 0x2483: 0x002e9e8c,
+	0x2484: 0x002ee28c, 0x2485: 0x002f2c8c, 0x2486: 0x002f568c, 0x2487: 0x002f7a8c,
+	0x2488: 0x002fe68c, 0x2489: 0x00302c8c, 0x248a: 0x00306c8c, 0x248b: 0x0030be8c,
+	0x248c: 0x0030e28c, 0x248d: 0x0030f68c, 0x248e: 0x0031008c, 0x248f: 0x00312a8c,
+	0x2490: 0x002bde86, 0x2491: 0x002c0a86, 0x2492: 0x002c3a86, 0x2493: 0x002c6286,
+	0x2494: 0x002c9886, 0x2495: 0x002d0886, 0x2496: 0x002d2286, 0x2497: 0x002d6886,
+	0x2498: 0x002d9a86, 0x2499: 0x002dcc86, 0x249a: 0x002dfe86, 0x249b: 0x002e2286,
+	0x249c: 0x002e8286, 0x249d: 0x002e9e86, 0x249e: 0x002ee286, 0x249f: 0x002f2c86,
+	0x24a0: 0x002f5686, 0x24a1: 0x002f7a86, 0x24a2: 0x002fe686, 0x24a3: 0x00302c86,
+	0x24a4: 0x00306c86, 0x24a5: 0x0030be86, 0x24a6: 0x0030e286, 0x24a7: 0x0030f686,
+	0x24a8: 0x00310086, 0x24a9: 0x00312a86, 0x24aa: 0x0029cc86, 0x24ab: 0xe00002e6,
+	0x24ac: 0xe00002e9, 0x24ad: 0xe00002ec, 0x24ae: 0xe00002ef, 0x24af: 0xe00002f2,
+	0x24b0: 0xe00002f5, 0x24b1: 0xe00002f8, 0x24b2: 0xe00002fb, 0x24b3: 0xe00002fe,
+	0x24b4: 0xe00003d5, 0x24b5: 0x0029ce86, 0x24b6: 0x0029d086, 0x24b7: 0x0029d286,
+	0x24b8: 0x0029d486, 0x24b9: 0x0029d686, 0x24ba: 0x0029d886, 0x24bb: 0x0029da86,
+	0x24bc: 0x0029dc86, 0x24bd: 0x0029de86, 0x24be: 0xe00002d7, 0x24bf: 0x0029cc86,
+	// Block 0x93, offset 0x24c0
+	0x24c0: 0x400d2e20, 0x24c1: 0x400d3020, 0x24c2: 0x400d3220, 0x24c3: 0x400d3420,
+	0x24c4: 0x400d3620, 0x24c5: 0x400d3820, 0x24c6: 0x400d3a20, 0x24c7: 0x400d3c20,
+	0x24c8: 0x400d3e20, 0x24c9: 0x400d4020, 0x24ca: 0x400d4220, 0x24cb: 0x400d4420,
+	0x24cc: 0x400d4620, 0x24cd: 0x400d4820, 0x24ce: 0x400d4a20, 0x24cf: 0x400d4c20,
+	0x24d0: 0x400d4e20, 0x24d1: 0x400d5020, 0x24d2: 0x400d5220, 0x24d3: 0x400d5420,
+	0x24d4: 0x400d5620, 0x24d5: 0x400d5820, 0x24d6: 0x400d5a20, 0x24d7: 0x400d5c20,
+	0x24d8: 0x400d5e20, 0x24d9: 0x400d6020, 0x24da: 0x400d6220, 0x24db: 0x400d6420,
+	0x24dc: 0x400d6620, 0x24dd: 0x400d6820, 0x24de: 0x400d6a20, 0x24df: 0x400d6c20,
+	0x24e0: 0x400d6e20, 0x24e1: 0x400d7020, 0x24e2: 0x400d7220, 0x24e3: 0x400d7420,
+	0x24e4: 0x400d7620, 0x24e5: 0x400d7820, 0x24e6: 0x400d7a20, 0x24e7: 0x400d7c20,
+	0x24e8: 0x400d7e20, 0x24e9: 0x400d8020, 0x24ea: 0x400d8220, 0x24eb: 0x400d8420,
+	0x24ec: 0x400d8620, 0x24ed: 0x400d8820, 0x24ee: 0x400d8a20, 0x24ef: 0x400d8c20,
+	0x24f0: 0x400d8e20, 0x24f1: 0x400d9020, 0x24f2: 0x400d9220, 0x24f3: 0x400d9420,
+	0x24f4: 0x400d9620, 0x24f5: 0x400d9820, 0x24f6: 0x400d9a20, 0x24f7: 0x400d9c20,
+	0x24f8: 0x400d9e20, 0x24f9: 0x400da020, 0x24fa: 0x400da220, 0x24fb: 0x400da420,
+	0x24fc: 0x400da620, 0x24fd: 0x400da820, 0x24fe: 0x400daa20, 0x24ff: 0x400dac20,
+	// Block 0x94, offset 0x2500
+	0x2500: 0x400dae20, 0x2501: 0x400db020, 0x2502: 0x400db220, 0x2503: 0x400db420,
+	0x2504: 0x400db620, 0x2505: 0x400db820, 0x2506: 0x400dba20, 0x2507: 0x400dbc20,
+	0x2508: 0x400dbe20, 0x2509: 0x400dc020, 0x250a: 0x400dc220, 0x250b: 0x400dc420,
+	0x250c: 0x400dc620, 0x250d: 0x400dc820, 0x250e: 0x400dca20, 0x250f: 0x400dcc20,
+	0x2510: 0x400dce20, 0x2511: 0x400dd020, 0x2512: 0x400dd220, 0x2513: 0x400dd420,
+	0x2514: 0x400dd620, 0x2515: 0x400dd820, 0x2516: 0x400dda20, 0x2517: 0x400ddc20,
+	0x2518: 0x400dde20, 0x2519: 0x400de020, 0x251a: 0x400de220, 0x251b: 0x400de420,
+	0x251c: 0x400de620, 0x251d: 0x400de820, 0x251e: 0x400dea20, 0x251f: 0x400dec20,
+	0x2520: 0x400dee20, 0x2521: 0x400df020, 0x2522: 0x400df220, 0x2523: 0x400df420,
+	0x2524: 0x400df620, 0x2525: 0x400df820, 0x2526: 0x400dfa20, 0x2527: 0x400dfc20,
+	0x2528: 0x400dfe20, 0x2529: 0x400e0020, 0x252a: 0x400e0220, 0x252b: 0x400e0420,
+	0x252c: 0x400e0620, 0x252d: 0x400e0820, 0x252e: 0x400e0a20, 0x252f: 0x400e0c20,
+	0x2530: 0x400e0e20, 0x2531: 0x400e1020, 0x2532: 0x400e1220, 0x2533: 0x400e1420,
+	0x2534: 0x400e1620, 0x2535: 0x400e1820, 0x2536: 0x400e1a20, 0x2537: 0x400e1c20,
+	0x2538: 0x400e1e20, 0x2539: 0x400e2020, 0x253a: 0x400e2220, 0x253b: 0x400e2420,
+	0x253c: 0x400e2620, 0x253d: 0x400e2820, 0x253e: 0x400e2a20, 0x253f: 0x400e2c20,
+	// Block 0x95, offset 0x2540
+	0x2540: 0x400e2e20, 0x2541: 0x400e3020, 0x2542: 0x400e3220, 0x2543: 0x400e3420,
+	0x2544: 0x400e3620, 0x2545: 0x400e3820, 0x2546: 0x400e3a20, 0x2547: 0x400e3c20,
+	0x2548: 0x400e3e20, 0x2549: 0x400e4020, 0x254a: 0x400e4220, 0x254b: 0x400e4420,
+	0x254c: 0x400e4620, 0x254d: 0x400e4820, 0x254e: 0x400e4a20, 0x254f: 0x400e4c20,
+	0x2550: 0x400e4e20, 0x2551: 0x400e5020, 0x2552: 0x400e5220, 0x2553: 0x400e5420,
+	0x2554: 0x400e5620, 0x2555: 0x400e5820, 0x2556: 0x400e5a20, 0x2557: 0x400e5c20,
+	0x2558: 0x400e5e20, 0x2559: 0x400e6020, 0x255a: 0x400e6220, 0x255b: 0x400e6420,
+	0x255c: 0x400e6620, 0x255d: 0x400e6820, 0x255e: 0x400e6a20, 0x255f: 0x400e6c20,
+	0x2560: 0x400e6e20, 0x2561: 0x400e7020, 0x2562: 0x400e7220, 0x2563: 0x400e7420,
+	0x2564: 0x400e7620, 0x2565: 0x400e7820, 0x2566: 0x400e7a20, 0x2567: 0x400e7c20,
+	0x2568: 0x400e7e20, 0x2569: 0x400e8020, 0x256a: 0x400e8220, 0x256b: 0x400e8420,
+	0x256c: 0x400e8620, 0x256d: 0x400e8820, 0x256e: 0x400e8a20, 0x256f: 0x400e8c20,
+	0x2570: 0x400e8e20, 0x2571: 0x400e9020, 0x2572: 0x400e9220, 0x2573: 0x400e9420,
+	0x2574: 0x400e9620, 0x2575: 0x400e9820, 0x2576: 0x400e9a20, 0x2577: 0x400e9c20,
+	0x2578: 0x400e9e20, 0x2579: 0x400ea020, 0x257a: 0x400ea220, 0x257b: 0x400ea420,
+	0x257c: 0x400ea620, 0x257d: 0x400ea820, 0x257e: 0x400eaa20, 0x257f: 0x400eac20,
+	// Block 0x96, offset 0x2580
+	0x2580: 0x400eae20, 0x2581: 0x400eb020, 0x2582: 0x400eb220, 0x2583: 0x400eb420,
+	0x2584: 0x400eb620, 0x2585: 0x400eb820, 0x2586: 0x400eba20, 0x2587: 0x400ebc20,
+	0x2588: 0x400ebe20, 0x2589: 0x400ec020, 0x258a: 0x400ec220, 0x258b: 0x400ec420,
+	0x258c: 0x400ec620, 0x258d: 0x400ec820, 0x258e: 0x400eca20, 0x258f: 0x400ecc20,
+	0x2590: 0x400ece20, 0x2591: 0x400ed020, 0x2592: 0x400ed220, 0x2593: 0x400ed420,
+	0x2594: 0x400ed620, 0x2595: 0x400ed820, 0x2596: 0x400eda20, 0x2597: 0x400edc20,
+	0x2598: 0x400ede20, 0x2599: 0x400ee020, 0x259a: 0x400ee220, 0x259b: 0x400ee420,
+	0x259c: 0x400ee620, 0x259d: 0x400ee820, 0x259e: 0x400eea20, 0x259f: 0x400eec20,
+	0x25a0: 0x400eee20, 0x25a1: 0x400ef020, 0x25a2: 0x400ef220, 0x25a3: 0x400ef420,
+	0x25a4: 0x400ef620, 0x25a5: 0x400ef820, 0x25a6: 0x400efa20, 0x25a7: 0x400efc20,
+	0x25a8: 0x400efe20, 0x25a9: 0x400f0020, 0x25aa: 0x400f0220, 0x25ab: 0x400f0420,
+	0x25ac: 0x400f0620, 0x25ad: 0x400f0820, 0x25ae: 0x400f0a20, 0x25af: 0x400f0c20,
+	0x25b0: 0x400f0e20, 0x25b1: 0x400f1020, 0x25b2: 0x400f1220, 0x25b3: 0x400f1420,
+	0x25b4: 0x400f1620, 0x25b5: 0x400f1820, 0x25b6: 0x400f1a20, 0x25b7: 0x400f1c20,
+	0x25b8: 0x400f1e20, 0x25b9: 0x400f2020, 0x25ba: 0x400f2220, 0x25bb: 0x400f2420,
+	0x25bc: 0x400f2620, 0x25bd: 0x400f2820, 0x25be: 0x400f2a20, 0x25bf: 0x400f2c20,
+	// Block 0x97, offset 0x25c0
+	0x25c0: 0x400f2e20, 0x25c1: 0x400f3020, 0x25c2: 0x400f3220, 0x25c3: 0x400f3420,
+	0x25c4: 0x400f3620, 0x25c5: 0x400f3820, 0x25c6: 0x400f3a20, 0x25c7: 0x400f3c20,
+	0x25c8: 0x400f3e20, 0x25c9: 0x400f4020, 0x25ca: 0x400f4220, 0x25cb: 0x400f4420,
+	0x25cc: 0x400f4620, 0x25cd: 0x400f4820, 0x25ce: 0x400f4a20, 0x25cf: 0x400f4c20,
+	0x25d0: 0x400f4e20, 0x25d1: 0x400f5020, 0x25d2: 0x400f5220, 0x25d3: 0x400f5420,
+	0x25d4: 0x400f5620, 0x25d5: 0x400f5820, 0x25d6: 0x400f5a20, 0x25d7: 0x400f5c20,
+	0x25d8: 0x400f5e20, 0x25d9: 0x400f6020, 0x25da: 0x400f6220, 0x25db: 0x400f6420,
+	0x25dc: 0x400f6620, 0x25dd: 0x400f6820, 0x25de: 0x400f6a20, 0x25df: 0x400f6c20,
+	0x25e0: 0x400f6e20, 0x25e1: 0x400f7020, 0x25e2: 0x400f7220, 0x25e3: 0x400f7420,
+	0x25e4: 0x400f7620, 0x25e5: 0x400f7820, 0x25e6: 0x400f7a20, 0x25e7: 0x400f7c20,
+	0x25e8: 0x400f7e20, 0x25e9: 0x400f8020, 0x25ea: 0x400f8220, 0x25eb: 0x400f8420,
+	0x25ec: 0x400f8620, 0x25ed: 0x400f8820, 0x25ee: 0x400f8a20, 0x25ef: 0x400f8c20,
+	0x25f0: 0x40195220, 0x25f1: 0x40195420, 0x25f2: 0x40195620, 0x25f3: 0x40195820,
+	0x25f4: 0x40195a20, 0x25f5: 0x40195c20, 0x25f6: 0x40195e20, 0x25f7: 0x40196020,
+	0x25f8: 0x400f8e20, 0x25f9: 0x400f9020, 0x25fa: 0x400f9220, 0x25fb: 0x400f9420,
+	0x25fc: 0x400f9620, 0x25fd: 0x400f9820, 0x25fe: 0x400f9a20, 0x25ff: 0x400f9c20,
+	// Block 0x98, offset 0x2600
+	0x2600: 0x400f9e20, 0x2601: 0x400fa020, 0x2602: 0x400fa220, 0x2603: 0x400fa420,
+	0x2604: 0x400fa620, 0x2605: 0x400fa820, 0x2606: 0x400faa20, 0x2607: 0x400fac20,
+	0x2608: 0x400fae20, 0x2609: 0x400fb020, 0x260a: 0x400fb220, 0x260b: 0x400fb420,
+	0x260c: 0x400fb620, 0x260d: 0x400fb820, 0x260e: 0x400fba20, 0x260f: 0x400fbc20,
+	0x2610: 0x400fbe20, 0x2611: 0x400fc020, 0x2612: 0x400fc220, 0x2613: 0x400fc420,
+	0x2614: 0x400fc620, 0x2615: 0x400fc820, 0x2616: 0x400fca20, 0x2617: 0x400fcc20,
+	0x2618: 0x400fce20, 0x2619: 0x400fd020, 0x261a: 0x400fd220, 0x261b: 0x400fd420,
+	0x261c: 0x400fd620, 0x261d: 0x400fd820, 0x261e: 0x400fda20, 0x261f: 0x400fdc20,
+	0x2620: 0x400fde20, 0x2621: 0x400fe020, 0x2622: 0x400fe220, 0x2623: 0x400fe420,
+	0x2624: 0x400fe620, 0x2625: 0x400fe820, 0x2626: 0x400fea20, 0x2627: 0x400fec20,
+	0x2628: 0x400fee20, 0x2629: 0x400ff020, 0x262a: 0x400ff220, 0x262b: 0x400ff420,
+	0x262c: 0x400ff620, 0x262d: 0x401dde20, 0x262e: 0x401de020, 0x262f: 0x401de220,
+	0x2630: 0x400ff820, 0x2631: 0x400ffa20, 0x2632: 0x400ffc20, 0x2633: 0x400ffe20,
+	0x2634: 0x40100020, 0x2635: 0x40100220, 0x2636: 0x40100420, 0x2637: 0x40100620,
+	0x2638: 0x40100820, 0x2639: 0x40100a20, 0x263a: 0x40100c20, 0x263b: 0x40100e20,
+	0x263c: 0x40101020, 0x263d: 0x40101220, 0x263e: 0x40101420, 0x263f: 0x40101620,
+	// Block 0x99, offset 0x2640
+	0x2640: 0x40101820, 0x2641: 0x40101a20, 0x2642: 0x40101c20, 0x2643: 0x40101e20,
+	0x2644: 0x40102020, 0x2645: 0x40102220, 0x2646: 0x40102420, 0x2647: 0x40102620,
+	0x2648: 0x40102820, 0x2649: 0x40102a20, 0x264a: 0x40194620, 0x264b: 0x40194820,
+	0x264c: 0x40194a20, 0x264d: 0x40194c20, 0x264e: 0x40194e20, 0x264f: 0x40195020,
+	0x2650: 0x40102c20, 0x2651: 0x40102e20, 0x2652: 0x40103020, 0x2653: 0x40103220,
+	0x2654: 0x40103420, 0x2655: 0x40103620, 0x2656: 0x40103820, 0x2657: 0x40103a20,
+	0x2658: 0x40103c20, 0x2659: 0x40103e20, 0x265a: 0x40104020, 0x265b: 0x40104220,
+	0x265c: 0x40104420, 0x265d: 0x40104620, 0x265e: 0x40104820, 0x265f: 0x40104a20,
+	0x2660: 0x40104c20, 0x2661: 0x40104e20, 0x2662: 0x40105020, 0x2663: 0x40105220,
+	0x2664: 0x40105420, 0x2665: 0x40105620, 0x2666: 0x40105820, 0x2667: 0x40105a20,
+	0x2668: 0x40105c20, 0x2669: 0x40105e20, 0x266a: 0x40106020, 0x266b: 0x40106220,
+	0x266c: 0x40106420, 0x266d: 0x40106620, 0x266e: 0x40106820, 0x266f: 0x40106a20,
+	0x2670: 0x40106c20, 0x2671: 0x40106e20, 0x2672: 0x40107020, 0x2673: 0x40107220,
+	0x2674: 0x40107420, 0x2675: 0x40107620, 0x2676: 0x40107820, 0x2677: 0x40107a20,
+	0x2678: 0x40107c20, 0x2679: 0x40107e20, 0x267a: 0x40108020, 0x267b: 0x40108220,
+	0x267c: 0x40108420, 0x267d: 0x40108620, 0x267e: 0x40108820, 0x267f: 0x40108a20,
+	// Block 0x9a, offset 0x2680
+	0x2680: 0x40108c20, 0x2681: 0x40108e20, 0x2682: 0x40109020, 0x2683: 0x40109220,
+	0x2684: 0x40109420, 0x2685: 0x40109620, 0x2686: 0x40109820, 0x2687: 0x40109a20,
+	0x2688: 0x40109c20, 0x2689: 0x40109e20, 0x268a: 0x4010a020, 0x268b: 0x4010a220,
+	0x268c: 0x4010a420, 0x268d: 0x4010a620, 0x268e: 0x4010a820, 0x268f: 0x4010aa20,
+	0x2690: 0x4010ac20, 0x2691: 0x4010ae20, 0x2692: 0x4010b020, 0x2693: 0x4010b220,
+	0x2694: 0x4010b420, 0x2695: 0x4010b620, 0x2696: 0x4010b820, 0x2697: 0x4010ba20,
+	0x2698: 0x4010bc20, 0x2699: 0x4010be20, 0x269a: 0x4010c020, 0x269b: 0x4010c220,
+	0x269c: 0x4010c420, 0x269d: 0x4010c620, 0x269e: 0x4010c820, 0x269f: 0x4010ca20,
+	0x26a0: 0x4010cc20, 0x26a1: 0x4010ce20, 0x26a2: 0x4010d020, 0x26a3: 0x4010d220,
+	0x26a4: 0x4010d420, 0x26a5: 0x4010d620, 0x26a6: 0x4010d820, 0x26a7: 0x4010da20,
+	0x26a8: 0x4010dc20, 0x26a9: 0x4010de20, 0x26aa: 0x4010e020, 0x26ab: 0x4010e220,
+	0x26ac: 0x4010e420, 0x26ad: 0x4010e620, 0x26ae: 0x4010e820, 0x26af: 0x4010ea20,
+	0x26b0: 0x4010ec20, 0x26b1: 0x4010ee20, 0x26b2: 0x4010f020, 0x26b3: 0x4010f220,
+	0x26b4: 0x4010f420, 0x26b5: 0x4010f620, 0x26b6: 0x4010f820, 0x26b7: 0x4010fa20,
+	0x26b8: 0x4010fc20, 0x26b9: 0x4010fe20, 0x26ba: 0x40110020, 0x26bb: 0x40110220,
+	0x26bc: 0x40110420, 0x26bd: 0x40110620, 0x26be: 0x40110820, 0x26bf: 0x40110a20,
+	// Block 0x9b, offset 0x26c0
+	0x26c1: 0x40114020, 0x26c2: 0x40114220, 0x26c3: 0x40114420,
+	0x26c4: 0x40114620, 0x26c5: 0x40114820, 0x26c6: 0x40114a20, 0x26c7: 0x40114c20,
+	0x26c8: 0x40114e20, 0x26c9: 0x40115020, 0x26ca: 0x40115220, 0x26cb: 0x40115420,
+	0x26cc: 0x40115620, 0x26cd: 0x40115820, 0x26ce: 0x40115a20, 0x26cf: 0x40115c20,
+	0x26d0: 0x40115e20, 0x26d1: 0x40116020, 0x26d2: 0x40116220, 0x26d3: 0x40116420,
+	0x26d4: 0x40116620, 0x26d5: 0x40116820, 0x26d6: 0x40116a20, 0x26d7: 0x40116c20,
+	0x26d8: 0x40116e20, 0x26d9: 0x40117020, 0x26da: 0x40117220, 0x26db: 0x40117420,
+	0x26dc: 0x40117620, 0x26dd: 0x40117820, 0x26de: 0x40117a20, 0x26df: 0x40117c20,
+	0x26e0: 0x40117e20, 0x26e1: 0x40118020, 0x26e2: 0x40118220, 0x26e3: 0x40118420,
+	0x26e4: 0x40118620, 0x26e5: 0x40118820, 0x26e6: 0x40118a20, 0x26e7: 0x40118c20,
+	0x26e8: 0x40118e20, 0x26e9: 0x40119020, 0x26ea: 0x40119220, 0x26eb: 0x40119420,
+	0x26ec: 0x40119620, 0x26ed: 0x40119820, 0x26ee: 0x40119a20, 0x26ef: 0x40119c20,
+	0x26f0: 0x40119e20, 0x26f1: 0x4011a020, 0x26f2: 0x4011a220, 0x26f3: 0x4011a420,
+	0x26f4: 0x4011a620, 0x26f5: 0x4011a820, 0x26f6: 0x4011aa20, 0x26f7: 0x4011ac20,
+	0x26f8: 0x4011ae20, 0x26f9: 0x4011b020, 0x26fa: 0x4011b220, 0x26fb: 0x4011b420,
+	0x26fc: 0x4011b620, 0x26fd: 0x4011b820, 0x26fe: 0x4011ba20, 0x26ff: 0x4011bc20,
+	// Block 0x9c, offset 0x2700
+	0x2700: 0x4011be20, 0x2701: 0x4011c020, 0x2702: 0x4011c220, 0x2703: 0x4011c420,
+	0x2704: 0x4011c620, 0x2705: 0x4011c820, 0x2706: 0x4011ca20, 0x2707: 0x4011cc20,
+	0x2708: 0x4011ce20, 0x2709: 0x4011d020, 0x270a: 0x4011d220, 0x270b: 0x4011d420,
+	0x270c: 0x4011d620, 0x270d: 0x4011d820, 0x270e: 0x4011da20, 0x270f: 0x4011dc20,
+	0x2710: 0x4011de20, 0x2711: 0x4011e020, 0x2712: 0x4011e220, 0x2713: 0x4011e420,
+	0x2714: 0x4011e620, 0x2715: 0x4011e820, 0x2716: 0x4011ea20, 0x2717: 0x4011ec20,
+	0x2718: 0x4011ee20, 0x2719: 0x4011f020, 0x271a: 0x4011f220, 0x271b: 0x4011f420,
+	0x271c: 0x4011f620, 0x271d: 0x4011f820, 0x271e: 0x4011fa20, 0x271f: 0x4011fc20,
+	0x2720: 0x4011fe20, 0x2721: 0x40120020, 0x2722: 0x40120220, 0x2723: 0x40120420,
+	0x2724: 0x40120620, 0x2725: 0x40120820, 0x2726: 0x40120a20, 0x2727: 0x40120c20,
+	0x2728: 0x40045820, 0x2729: 0x40045a20, 0x272a: 0x40045c20, 0x272b: 0x40045e20,
+	0x272c: 0x40046020, 0x272d: 0x40046220, 0x272e: 0x40046420, 0x272f: 0x40046620,
+	0x2730: 0x40046820, 0x2731: 0x40046a20, 0x2732: 0x40046c20, 0x2733: 0x40046e20,
+	0x2734: 0x40047020, 0x2735: 0x40047220, 0x2736: 0x0029ce86, 0x2737: 0x0029d086,
+	0x2738: 0x0029d286, 0x2739: 0x0029d486, 0x273a: 0x0029d686, 0x273b: 0x0029d886,
+	0x273c: 0x0029da86, 0x273d: 0x0029dc86, 0x273e: 0x0029de86, 0x273f: 0xe00002da,
+	// Block 0x9d, offset 0x2740
+	0x2740: 0x0029ce86, 0x2741: 0x0029d086, 0x2742: 0x0029d286, 0x2743: 0x0029d486,
+	0x2744: 0x0029d686, 0x2745: 0x0029d886, 0x2746: 0x0029da86, 0x2747: 0x0029dc86,
+	0x2748: 0x0029de86, 0x2749: 0xe00002dd, 0x274a: 0x0029ce86, 0x274b: 0x0029d086,
+	0x274c: 0x0029d286, 0x274d: 0x0029d486, 0x274e: 0x0029d686, 0x274f: 0x0029d886,
+	0x2750: 0x0029da86, 0x2751: 0x0029dc86, 0x2752: 0x0029de86, 0x2753: 0xe00002e0,
+	0x2754: 0x40120e20, 0x2755: 0x40121020, 0x2756: 0x40121220, 0x2757: 0x40121420,
+	0x2758: 0x40121620, 0x2759: 0x40121820, 0x275a: 0x40121a20, 0x275b: 0x40121c20,
+	0x275c: 0x40121e20, 0x275d: 0x40122020, 0x275e: 0x40122220, 0x275f: 0x40122420,
+	0x2760: 0x40122620, 0x2761: 0x40122820, 0x2762: 0x40122a20, 0x2763: 0x40122c20,
+	0x2764: 0x40122e20, 0x2765: 0x40123020, 0x2766: 0x40123220, 0x2767: 0x40123420,
+	0x2768: 0x40123620, 0x2769: 0x40123820, 0x276a: 0x40123a20, 0x276b: 0x40123c20,
+	0x276c: 0x40123e20, 0x276d: 0x40124020, 0x276e: 0x40124220, 0x276f: 0x40124420,
+	0x2770: 0x40124620, 0x2771: 0x40124820, 0x2772: 0x40124a20, 0x2773: 0x40124c20,
+	0x2774: 0x40124e20, 0x2775: 0x40125020, 0x2776: 0x40125220, 0x2777: 0x40125420,
+	0x2778: 0x40125620, 0x2779: 0x40125820, 0x277a: 0x40125a20, 0x277b: 0x40125c20,
+	0x277c: 0x40125e20, 0x277d: 0x40126020, 0x277e: 0x40126220, 0x277f: 0x40126420,
+	// Block 0x9e, offset 0x2780
+	0x2780: 0x40126620, 0x2781: 0x40126820, 0x2782: 0x40126a20, 0x2783: 0x40126c20,
+	0x2784: 0x40126e20, 0x2785: 0x40044020, 0x2786: 0x40044220, 0x2787: 0x40127020,
+	0x2788: 0x40127220, 0x2789: 0x40127420, 0x278a: 0x40127620, 0x278b: 0x40127820,
+	0x278c: 0x40127a20, 0x278d: 0x40127c20, 0x278e: 0x40127e20, 0x278f: 0x40128020,
+	0x2790: 0x40128220, 0x2791: 0x40128420, 0x2792: 0x40128620, 0x2793: 0x40128820,
+	0x2794: 0x40128a20, 0x2795: 0x40128c20, 0x2796: 0x40128e20, 0x2797: 0x40129020,
+	0x2798: 0x40129220, 0x2799: 0x40129420, 0x279a: 0x40129620, 0x279b: 0x40129820,
+	0x279c: 0x40129a20, 0x279d: 0x40129c20, 0x279e: 0x40129e20, 0x279f: 0x4012a020,
+	0x27a0: 0x4012a220, 0x27a1: 0x4012a420, 0x27a2: 0x4012a620, 0x27a3: 0x4012a820,
+	0x27a4: 0x4012aa20, 0x27a5: 0x4012ac20, 0x27a6: 0x40044420, 0x27a7: 0x40044620,
+	0x27a8: 0x40044820, 0x27a9: 0x40044a20, 0x27aa: 0x40044c20, 0x27ab: 0x40044e20,
+	0x27ac: 0x40045020, 0x27ad: 0x40045220, 0x27ae: 0x40045420, 0x27af: 0x40045620,
+	0x27b0: 0x4012ae20, 0x27b1: 0x4012b020, 0x27b2: 0x4012b220, 0x27b3: 0x4012b420,
+	0x27b4: 0x4012b620, 0x27b5: 0x4012b820, 0x27b6: 0x4012ba20, 0x27b7: 0x4012bc20,
+	0x27b8: 0x4012be20, 0x27b9: 0x4012c020, 0x27ba: 0x4012c220, 0x27bb: 0x4012c420,
+	0x27bc: 0x4012c620, 0x27bd: 0x4012c820, 0x27be: 0x4012ca20, 0x27bf: 0x4012cc20,
+	// Block 0x9f, offset 0x27c0
+	0x27c0: 0x40174620, 0x27c1: 0x40174820, 0x27c2: 0x40174a20, 0x27c3: 0x40174c20,
+	0x27c4: 0x40174e20, 0x27c5: 0x40175020, 0x27c6: 0x40175220, 0x27c7: 0x40175420,
+	0x27c8: 0x40175620, 0x27c9: 0x40175820, 0x27ca: 0x40175a20, 0x27cb: 0x40175c20,
+	0x27cc: 0x40175e20, 0x27cd: 0x40176020, 0x27ce: 0x40176220, 0x27cf: 0x40176420,
+	0x27d0: 0x40176620, 0x27d1: 0x40176820, 0x27d2: 0x40176a20, 0x27d3: 0x40176c20,
+	0x27d4: 0x40176e20, 0x27d5: 0x40177020, 0x27d6: 0x40177220, 0x27d7: 0x40177420,
+	0x27d8: 0x40177620, 0x27d9: 0x40177820, 0x27da: 0x40177a20, 0x27db: 0x40177c20,
+	0x27dc: 0x40177e20, 0x27dd: 0x40178020, 0x27de: 0x40178220, 0x27df: 0x40178420,
+	0x27e0: 0x40178620, 0x27e1: 0x40178820, 0x27e2: 0x40178a20, 0x27e3: 0x40178c20,
+	0x27e4: 0x40178e20, 0x27e5: 0x40179020, 0x27e6: 0x40179220, 0x27e7: 0x40179420,
+	0x27e8: 0x40179620, 0x27e9: 0x40179820, 0x27ea: 0x40179a20, 0x27eb: 0x40179c20,
+	0x27ec: 0x40179e20, 0x27ed: 0x4017a020, 0x27ee: 0x4017a220, 0x27ef: 0x4017a420,
+	0x27f0: 0x4017a620, 0x27f1: 0x4017a820, 0x27f2: 0x4017aa20, 0x27f3: 0x4017ac20,
+	0x27f4: 0x4017ae20, 0x27f5: 0x4017b020, 0x27f6: 0x4017b220, 0x27f7: 0x4017b420,
+	0x27f8: 0x4017b620, 0x27f9: 0x4017b820, 0x27fa: 0x4017ba20, 0x27fb: 0x4017bc20,
+	0x27fc: 0x4017be20, 0x27fd: 0x4017c020, 0x27fe: 0x4017c220, 0x27ff: 0x4017c420,
+	// Block 0xa0, offset 0x2800
+	0x2800: 0x4017c620, 0x2801: 0x4017c820, 0x2802: 0x4017ca20, 0x2803: 0x4017cc20,
+	0x2804: 0x4017ce20, 0x2805: 0x4017d020, 0x2806: 0x4017d220, 0x2807: 0x4017d420,
+	0x2808: 0x4017d620, 0x2809: 0x4017d820, 0x280a: 0x4017da20, 0x280b: 0x4017dc20,
+	0x280c: 0x4017de20, 0x280d: 0x4017e020, 0x280e: 0x4017e220, 0x280f: 0x4017e420,
+	0x2810: 0x4017e620, 0x2811: 0x4017e820, 0x2812: 0x4017ea20, 0x2813: 0x4017ec20,
+	0x2814: 0x4017ee20, 0x2815: 0x4017f020, 0x2816: 0x4017f220, 0x2817: 0x4017f420,
+	0x2818: 0x4017f620, 0x2819: 0x4017f820, 0x281a: 0x4017fa20, 0x281b: 0x4017fc20,
+	0x281c: 0x4017fe20, 0x281d: 0x40180020, 0x281e: 0x40180220, 0x281f: 0x40180420,
+	0x2820: 0x40180620, 0x2821: 0x40180820, 0x2822: 0x40180a20, 0x2823: 0x40180c20,
+	0x2824: 0x40180e20, 0x2825: 0x40181020, 0x2826: 0x40181220, 0x2827: 0x40181420,
+	0x2828: 0x40181620, 0x2829: 0x40181820, 0x282a: 0x40181a20, 0x282b: 0x40181c20,
+	0x282c: 0x40181e20, 0x282d: 0x40182020, 0x282e: 0x40182220, 0x282f: 0x40182420,
+	0x2830: 0x40182620, 0x2831: 0x40182820, 0x2832: 0x40182a20, 0x2833: 0x40182c20,
+	0x2834: 0x40182e20, 0x2835: 0x40183020, 0x2836: 0x40183220, 0x2837: 0x40183420,
+	0x2838: 0x40183620, 0x2839: 0x40183820, 0x283a: 0x40183a20, 0x283b: 0x40183c20,
+	0x283c: 0x40183e20, 0x283d: 0x40184020, 0x283e: 0x40184220, 0x283f: 0x40184420,
+	// Block 0xa1, offset 0x2840
+	0x2840: 0x40184620, 0x2841: 0x40184820, 0x2842: 0x40184a20, 0x2843: 0x40184c20,
+	0x2844: 0x40184e20, 0x2845: 0x40185020, 0x2846: 0x40185220, 0x2847: 0x40185420,
+	0x2848: 0x40185620, 0x2849: 0x40185820, 0x284a: 0x40185a20, 0x284b: 0x40185c20,
+	0x284c: 0x40185e20, 0x284d: 0x40186020, 0x284e: 0x40186220, 0x284f: 0x40186420,
+	0x2850: 0x40186620, 0x2851: 0x40186820, 0x2852: 0x40186a20, 0x2853: 0x40186c20,
+	0x2854: 0x40186e20, 0x2855: 0x40187020, 0x2856: 0x40187220, 0x2857: 0x40187420,
+	0x2858: 0x40187620, 0x2859: 0x40187820, 0x285a: 0x40187a20, 0x285b: 0x40187c20,
+	0x285c: 0x40187e20, 0x285d: 0x40188020, 0x285e: 0x40188220, 0x285f: 0x40188420,
+	0x2860: 0x40188620, 0x2861: 0x40188820, 0x2862: 0x40188a20, 0x2863: 0x40188c20,
+	0x2864: 0x40188e20, 0x2865: 0x40189020, 0x2866: 0x40189220, 0x2867: 0x40189420,
+	0x2868: 0x40189620, 0x2869: 0x40189820, 0x286a: 0x40189a20, 0x286b: 0x40189c20,
+	0x286c: 0x40189e20, 0x286d: 0x4018a020, 0x286e: 0x4018a220, 0x286f: 0x4018a420,
+	0x2870: 0x4018a620, 0x2871: 0x4018a820, 0x2872: 0x4018aa20, 0x2873: 0x4018ac20,
+	0x2874: 0x4018ae20, 0x2875: 0x4018b020, 0x2876: 0x4018b220, 0x2877: 0x4018b420,
+	0x2878: 0x4018b620, 0x2879: 0x4018b820, 0x287a: 0x4018ba20, 0x287b: 0x4018bc20,
+	0x287c: 0x4018be20, 0x287d: 0x4018c020, 0x287e: 0x4018c220, 0x287f: 0x4018c420,
+	// Block 0xa2, offset 0x2880
+	0x2880: 0x4018c620, 0x2881: 0x4018c820, 0x2882: 0x4018ca20, 0x2883: 0x4018cc20,
+	0x2884: 0x4018ce20, 0x2885: 0x4018d020, 0x2886: 0x4018d220, 0x2887: 0x4018d420,
+	0x2888: 0x4018d620, 0x2889: 0x4018d820, 0x288a: 0x4018da20, 0x288b: 0x4018dc20,
+	0x288c: 0x4018de20, 0x288d: 0x4018e020, 0x288e: 0x4018e220, 0x288f: 0x4018e420,
+	0x2890: 0x4018e620, 0x2891: 0x4018e820, 0x2892: 0x4018ea20, 0x2893: 0x4018ec20,
+	0x2894: 0x4018ee20, 0x2895: 0x4018f020, 0x2896: 0x4018f220, 0x2897: 0x4018f420,
+	0x2898: 0x4018f620, 0x2899: 0x4018f820, 0x289a: 0x4018fa20, 0x289b: 0x4018fc20,
+	0x289c: 0x4018fe20, 0x289d: 0x40190020, 0x289e: 0x40190220, 0x289f: 0x40190420,
+	0x28a0: 0x40190620, 0x28a1: 0x40190820, 0x28a2: 0x40190a20, 0x28a3: 0x40190c20,
+	0x28a4: 0x40190e20, 0x28a5: 0x40191020, 0x28a6: 0x40191220, 0x28a7: 0x40191420,
+	0x28a8: 0x40191620, 0x28a9: 0x40191820, 0x28aa: 0x40191a20, 0x28ab: 0x40191c20,
+	0x28ac: 0x40191e20, 0x28ad: 0x40192020, 0x28ae: 0x40192220, 0x28af: 0x40192420,
+	0x28b0: 0x40192620, 0x28b1: 0x40192820, 0x28b2: 0x40192a20, 0x28b3: 0x40192c20,
+	0x28b4: 0x40192e20, 0x28b5: 0x40193020, 0x28b6: 0x40193220, 0x28b7: 0x40193420,
+	0x28b8: 0x40193620, 0x28b9: 0x40193820, 0x28ba: 0x40193a20, 0x28bb: 0x40193c20,
+	0x28bc: 0x40193e20, 0x28bd: 0x40194020, 0x28be: 0x40194220, 0x28bf: 0x40194420,
+	// Block 0xa3, offset 0x28c0
+	0x28c0: 0x4012ce20, 0x28c1: 0x4012d020, 0x28c2: 0x4012d220, 0x28c3: 0x4012d420,
+	0x28c4: 0x4012d620, 0x28c5: 0x4012d820, 0x28c6: 0x4012da20, 0x28c7: 0x4012dc20,
+	0x28c8: 0x4012de20, 0x28c9: 0x4012e020, 0x28ca: 0x4012e220, 0x28cb: 0x4012e420,
+	0x28cc: 0x4012e620, 0x28cd: 0x4012e820, 0x28ce: 0x4012ea20, 0x28cf: 0x4012ec20,
+	0x28d0: 0x4012ee20, 0x28d1: 0x4012f020, 0x28d2: 0x4012f220, 0x28d3: 0x4012f420,
+	0x28d4: 0x4012f620, 0x28d5: 0x4012f820, 0x28d6: 0x4012fa20, 0x28d7: 0x4012fc20,
+	0x28d8: 0x4012fe20, 0x28d9: 0x40130020, 0x28da: 0x40130220, 0x28db: 0x40130420,
+	0x28dc: 0x40130620, 0x28dd: 0x40130820, 0x28de: 0x40130a20, 0x28df: 0x40130c20,
+	0x28e0: 0x40130e20, 0x28e1: 0x40131020, 0x28e2: 0x40131220, 0x28e3: 0x40131420,
+	0x28e4: 0x40131620, 0x28e5: 0x40131820, 0x28e6: 0x40131a20, 0x28e7: 0x40131c20,
+	0x28e8: 0x40131e20, 0x28e9: 0x40132020, 0x28ea: 0x40132220, 0x28eb: 0x40132420,
+	0x28ec: 0x40132620, 0x28ed: 0x40132820, 0x28ee: 0x40132a20, 0x28ef: 0x40132c20,
+	0x28f0: 0x40132e20, 0x28f1: 0x40133020, 0x28f2: 0x40133220, 0x28f3: 0x40133420,
+	0x28f4: 0x40133620, 0x28f5: 0x40133820, 0x28f6: 0x40133a20, 0x28f7: 0x40133c20,
+	0x28f8: 0x40133e20, 0x28f9: 0x40134020, 0x28fa: 0x40134220, 0x28fb: 0x40134420,
+	0x28fc: 0x40134620, 0x28fd: 0x40134820, 0x28fe: 0x40134a20, 0x28ff: 0x40134c20,
+	// Block 0xa4, offset 0x2900
+	0x2900: 0x40134e20, 0x2901: 0x40135020, 0x2902: 0x40135220, 0x2903: 0x40135420,
+	0x2904: 0x40135620, 0x2905: 0x40135820, 0x2906: 0x40135a20, 0x2907: 0x40135c20,
+	0x2908: 0x40135e20, 0x2909: 0x40136020, 0x290a: 0x40136220, 0x290b: 0x40136420,
+	0x290c: 0x40136620, 0x290d: 0x40136820, 0x290e: 0x40136a20, 0x290f: 0x40136c20,
+	0x2910: 0x40136e20, 0x2911: 0x40137020, 0x2912: 0x40137220, 0x2913: 0x40137420,
+	0x2914: 0x40137620, 0x2915: 0x40137820, 0x2916: 0x40137a20, 0x2917: 0x40137c20,
+	0x2918: 0x40137e20, 0x2919: 0x40138020, 0x291a: 0x40138220, 0x291b: 0x40138420,
+	0x291c: 0x40138620, 0x291d: 0x40138820, 0x291e: 0x40138a20, 0x291f: 0x40138c20,
+	0x2920: 0x40138e20, 0x2921: 0x40139020, 0x2922: 0x40139220, 0x2923: 0x40139420,
+	0x2924: 0x40139620, 0x2925: 0x40139820, 0x2926: 0x40139a20, 0x2927: 0x40139c20,
+	0x2928: 0x40139e20, 0x2929: 0x4013a020, 0x292a: 0x4013a220, 0x292b: 0x4013a420,
+	0x292c: 0x4013a620, 0x292d: 0x4013a820, 0x292e: 0x4013aa20, 0x292f: 0x4013ac20,
+	0x2930: 0x4013ae20, 0x2931: 0x4013b020, 0x2932: 0x4013b220, 0x2933: 0x4013b420,
+	0x2934: 0x4013b620, 0x2935: 0x4013b820, 0x2936: 0x4013ba20, 0x2937: 0x4013bc20,
+	0x2938: 0x4013be20, 0x2939: 0x4013c020, 0x293a: 0x4013c220, 0x293b: 0x4013c420,
+	0x293c: 0x4013c620, 0x293d: 0x4013c820, 0x293e: 0x4013ca20, 0x293f: 0x4013cc20,
+	// Block 0xa5, offset 0x2940
+	0x2940: 0x4013ce20, 0x2941: 0x4013d020, 0x2942: 0x4013d220, 0x2943: 0x40041420,
+	0x2944: 0x40041620, 0x2945: 0x40041820, 0x2946: 0x40041a20, 0x2947: 0x40041c20,
+	0x2948: 0x40041e20, 0x2949: 0x40042020, 0x294a: 0x40042220, 0x294b: 0x40042420,
+	0x294c: 0x40042620, 0x294d: 0x40042820, 0x294e: 0x40042a20, 0x294f: 0x40042c20,
+	0x2950: 0x40042e20, 0x2951: 0x40043020, 0x2952: 0x40043220, 0x2953: 0x40043420,
+	0x2954: 0x40043620, 0x2955: 0x40043820, 0x2956: 0x40043a20, 0x2957: 0x40043c20,
+	0x2958: 0x40043e20, 0x2959: 0x4013d420, 0x295a: 0x4013d620, 0x295b: 0x4013d820,
+	0x295c: 0x4013da20, 0x295d: 0x4013dc20, 0x295e: 0x4013de20, 0x295f: 0x4013e020,
+	0x2960: 0x4013e220, 0x2961: 0x4013e420, 0x2962: 0x4013e620, 0x2963: 0x4013e820,
+	0x2964: 0x4013ea20, 0x2965: 0x4013ec20, 0x2966: 0x4013ee20, 0x2967: 0x4013f020,
+	0x2968: 0x4013f220, 0x2969: 0x4013f420, 0x296a: 0x4013f620, 0x296b: 0x4013f820,
+	0x296c: 0x4013fa20, 0x296d: 0x4013fc20, 0x296e: 0x4013fe20, 0x296f: 0x40140020,
+	0x2970: 0x40140220, 0x2971: 0x40140420, 0x2972: 0x40140620, 0x2973: 0x40140820,
+	0x2974: 0x40140a20, 0x2975: 0x40140c20, 0x2976: 0x40140e20, 0x2977: 0x40141020,
+	0x2978: 0x40141220, 0x2979: 0x40141420, 0x297a: 0x40141620, 0x297b: 0x40141820,
+	0x297c: 0x40141a20, 0x297d: 0x40141c20, 0x297e: 0x40141e20, 0x297f: 0x40142020,
+	// Block 0xa6, offset 0x2980
+	0x2980: 0x40142220, 0x2981: 0x40142420, 0x2982: 0x40142620, 0x2983: 0x40142820,
+	0x2984: 0x40142a20, 0x2985: 0x40142c20, 0x2986: 0x40142e20, 0x2987: 0x40143020,
+	0x2988: 0x40143220, 0x2989: 0x40143420, 0x298a: 0x40143620, 0x298b: 0x40143820,
+	0x298c: 0x40143a20, 0x298d: 0x40143c20, 0x298e: 0x40143e20, 0x298f: 0x40144020,
+	0x2990: 0x40144220, 0x2991: 0x40144420, 0x2992: 0x40144620, 0x2993: 0x40144820,
+	0x2994: 0x40144a20, 0x2995: 0x40144c20, 0x2996: 0x40144e20, 0x2997: 0x40145020,
+	0x2998: 0x4004c620, 0x2999: 0x4004c820, 0x299a: 0x4004ca20, 0x299b: 0x4004cc20,
+	0x299c: 0x40145220, 0x299d: 0x40145420, 0x299e: 0x40145620, 0x299f: 0x40145820,
+	0x29a0: 0x40145a20, 0x29a1: 0x40145c20, 0x29a2: 0x40145e20, 0x29a3: 0x40146020,
+	0x29a4: 0x40146220, 0x29a5: 0x40146420, 0x29a6: 0x40146620, 0x29a7: 0x40146820,
+	0x29a8: 0x40146a20, 0x29a9: 0x40146c20, 0x29aa: 0x40146e20, 0x29ab: 0x40147020,
+	0x29ac: 0x40147220, 0x29ad: 0x40147420, 0x29ae: 0x40147620, 0x29af: 0x40147820,
+	0x29b0: 0x40147a20, 0x29b1: 0x40147c20, 0x29b2: 0x40147e20, 0x29b3: 0x40148020,
+	0x29b4: 0x40148220, 0x29b5: 0x40148420, 0x29b6: 0x40148620, 0x29b7: 0x40148820,
+	0x29b8: 0x40148a20, 0x29b9: 0x40148c20, 0x29ba: 0x40148e20, 0x29bb: 0x40149020,
+	0x29bc: 0x40041020, 0x29bd: 0x40041220, 0x29be: 0x40149220, 0x29bf: 0x40149420,
+	// Block 0xa7, offset 0x29c0
+	0x29c0: 0x40149620, 0x29c1: 0x40149820, 0x29c2: 0x40149a20, 0x29c3: 0x40149c20,
+	0x29c4: 0x40149e20, 0x29c5: 0x4014a020, 0x29c6: 0x4014a220, 0x29c7: 0x4014a420,
+	0x29c8: 0x4014a620, 0x29c9: 0x4014a820, 0x29ca: 0x4014aa20, 0x29cb: 0x4014ac20,
+	0x29cc: 0xe00000f0, 0x29cd: 0x4014ae20, 0x29ce: 0x4014b020, 0x29cf: 0x4014b220,
+	0x29d0: 0x4014b420, 0x29d1: 0x4014b620, 0x29d2: 0x4014b820, 0x29d3: 0x4014ba20,
+	0x29d4: 0x4014bc20, 0x29d5: 0x4014be20, 0x29d6: 0x4014c020, 0x29d7: 0x4014c220,
+	0x29d8: 0x4014c420, 0x29d9: 0x4014c620, 0x29da: 0x4014c820, 0x29db: 0x4014ca20,
+	0x29dc: 0x4014cc20, 0x29dd: 0x4014ce20, 0x29de: 0x4014d020, 0x29df: 0x4014d220,
+	0x29e0: 0x4014d420, 0x29e1: 0x4014d620, 0x29e2: 0x4014d820, 0x29e3: 0x4014da20,
+	0x29e4: 0x4014dc20, 0x29e5: 0x4014de20, 0x29e6: 0x4014e020, 0x29e7: 0x4014e220,
+	0x29e8: 0x4014e420, 0x29e9: 0x4014e620, 0x29ea: 0x4014e820, 0x29eb: 0x4014ea20,
+	0x29ec: 0x4014ec20, 0x29ed: 0x4014ee20, 0x29ee: 0x4014f020, 0x29ef: 0x4014f220,
+	0x29f0: 0x4014f420, 0x29f1: 0x4014f620, 0x29f2: 0x4014f820, 0x29f3: 0x4014fa20,
+	0x29f4: 0x4014fc20, 0x29f5: 0x4014fe20, 0x29f6: 0x40150020, 0x29f7: 0x40150220,
+	0x29f8: 0x40150420, 0x29f9: 0x40150620, 0x29fa: 0x40150820, 0x29fb: 0x40150a20,
+	0x29fc: 0x40150c20, 0x29fd: 0x40150e20, 0x29fe: 0x40151020, 0x29ff: 0x40151220,
+	// Block 0xa8, offset 0x2a00
+	0x2a00: 0x40151420, 0x2a01: 0x40151620, 0x2a02: 0x40151820, 0x2a03: 0x40151a20,
+	0x2a04: 0x40151c20, 0x2a05: 0x40151e20, 0x2a06: 0x40152020, 0x2a07: 0x40152220,
+	0x2a08: 0x40152420, 0x2a09: 0x40152620, 0x2a0a: 0x40152820, 0x2a0b: 0x40152a20,
+	0x2a0c: 0x40152c20, 0x2a0d: 0x40152e20, 0x2a0e: 0x40153020, 0x2a0f: 0x40153220,
+	0x2a10: 0x40153420, 0x2a11: 0x40153620, 0x2a12: 0x40153820, 0x2a13: 0x40153a20,
+	0x2a14: 0x40153c20, 0x2a15: 0x40153e20, 0x2a16: 0x40154020, 0x2a17: 0x40154220,
+	0x2a18: 0x40154420, 0x2a19: 0x40154620, 0x2a1a: 0x40154820, 0x2a1b: 0x40154a20,
+	0x2a1c: 0x40154c20, 0x2a1d: 0x40154e20, 0x2a1e: 0x40155020, 0x2a1f: 0x40155220,
+	0x2a20: 0x40155420, 0x2a21: 0x40155620, 0x2a22: 0x40155820, 0x2a23: 0x40155a20,
+	0x2a24: 0x40155c20, 0x2a25: 0x40155e20, 0x2a26: 0x40156020, 0x2a27: 0x40156220,
+	0x2a28: 0x40156420, 0x2a29: 0x40156620, 0x2a2a: 0x40156820, 0x2a2b: 0x40156a20,
+	0x2a2c: 0x40156c20, 0x2a2d: 0x40156e20, 0x2a2e: 0x40157020, 0x2a2f: 0x40157220,
+	0x2a30: 0x40157420, 0x2a31: 0x40157620, 0x2a32: 0x40157820, 0x2a33: 0x40157a20,
+	0x2a34: 0xf0000404, 0x2a35: 0xf0001f04, 0x2a36: 0xf0000404, 0x2a37: 0x40157c20,
+	0x2a38: 0x40157e20, 0x2a39: 0x40158020, 0x2a3a: 0x40158220, 0x2a3b: 0x40158420,
+	0x2a3c: 0x40158620, 0x2a3d: 0x40158820, 0x2a3e: 0x40158a20, 0x2a3f: 0x40158c20,
+	// Block 0xa9, offset 0x2a40
+	0x2a40: 0x40158e20, 0x2a41: 0x40159020, 0x2a42: 0x40159220, 0x2a43: 0x40159420,
+	0x2a44: 0x40159620, 0x2a45: 0x40159820, 0x2a46: 0x40159a20, 0x2a47: 0x40159c20,
+	0x2a48: 0x40159e20, 0x2a49: 0x4015a020, 0x2a4a: 0x4015a220, 0x2a4b: 0x4015a420,
+	0x2a4c: 0x4015a620, 0x2a4d: 0x4015a820, 0x2a4e: 0x4015aa20, 0x2a4f: 0x4015ac20,
+	0x2a50: 0x4015ae20, 0x2a51: 0x4015b020, 0x2a52: 0x4015b220, 0x2a53: 0x4015b420,
+	0x2a54: 0x4015b620, 0x2a55: 0x4015b820, 0x2a56: 0x4015ba20, 0x2a57: 0x4015bc20,
+	0x2a58: 0x4015be20, 0x2a59: 0x4015c020, 0x2a5a: 0x4015c220, 0x2a5b: 0x4015c420,
+	0x2a5c: 0x4015c620, 0x2a5d: 0x4015c820, 0x2a5e: 0x4015ca20, 0x2a5f: 0x4015cc20,
+	0x2a60: 0x4015ce20, 0x2a61: 0x4015d020, 0x2a62: 0x4015d220, 0x2a63: 0x4015d420,
+	0x2a64: 0x4015d620, 0x2a65: 0x4015d820, 0x2a66: 0x4015da20, 0x2a67: 0x4015dc20,
+	0x2a68: 0x4015de20, 0x2a69: 0x4015e020, 0x2a6a: 0x4015e220, 0x2a6b: 0x4015e420,
+	0x2a6c: 0x4015e620, 0x2a6d: 0x4015e820, 0x2a6e: 0x4015ea20, 0x2a6f: 0x4015ec20,
+	0x2a70: 0x4015ee20, 0x2a71: 0x4015f020, 0x2a72: 0x4015f220, 0x2a73: 0x4015f420,
+	0x2a74: 0x4015f620, 0x2a75: 0x4015f820, 0x2a76: 0x4015fa20, 0x2a77: 0x4015fc20,
+	0x2a78: 0x4015fe20, 0x2a79: 0x40160020, 0x2a7a: 0x40160220, 0x2a7b: 0x40160420,
+	0x2a7c: 0x40160620, 0x2a7d: 0x40160820, 0x2a7e: 0x40160a20, 0x2a7f: 0x40160c20,
+	// Block 0xaa, offset 0x2a80
+	0x2a80: 0x40160e20, 0x2a81: 0x40161020, 0x2a82: 0x40161220, 0x2a83: 0x40161420,
+	0x2a84: 0x40161620, 0x2a85: 0x40161820, 0x2a86: 0x40161a20, 0x2a87: 0x40161c20,
+	0x2a88: 0x40161e20, 0x2a89: 0x40162020, 0x2a8a: 0x40162220, 0x2a8b: 0x40162420,
+	0x2a8c: 0x40162620, 0x2a8d: 0x40162820, 0x2a8e: 0x40162a20, 0x2a8f: 0x40162c20,
+	0x2a90: 0x40162e20, 0x2a91: 0x40163020, 0x2a92: 0x40163220, 0x2a93: 0x40163420,
+	0x2a94: 0x40163620, 0x2a95: 0x40163820, 0x2a96: 0x40163a20, 0x2a97: 0x40163c20,
+	0x2a98: 0x40163e20, 0x2a99: 0x40164020, 0x2a9a: 0x40164220, 0x2a9b: 0x40164420,
+	0x2a9c: 0xe000014f, 0x2a9d: 0x40164620, 0x2a9e: 0x40164820, 0x2a9f: 0x40164a20,
+	0x2aa0: 0x40164c20, 0x2aa1: 0x40164e20, 0x2aa2: 0x40165020, 0x2aa3: 0x40165220,
+	0x2aa4: 0x40165420, 0x2aa5: 0x40165620, 0x2aa6: 0x40165820, 0x2aa7: 0x40165a20,
+	0x2aa8: 0x40165c20, 0x2aa9: 0x40165e20, 0x2aaa: 0x40166020, 0x2aab: 0x40166220,
+	0x2aac: 0x40166420, 0x2aad: 0x40166620, 0x2aae: 0x40166820, 0x2aaf: 0x40166a20,
+	0x2ab0: 0x40166c20, 0x2ab1: 0x40166e20, 0x2ab2: 0x40167020, 0x2ab3: 0x40167220,
+	0x2ab4: 0x40167420, 0x2ab5: 0x40167620, 0x2ab6: 0x40167820, 0x2ab7: 0x40167a20,
+	0x2ab8: 0x40167c20, 0x2ab9: 0x40167e20, 0x2aba: 0x40168020, 0x2abb: 0x40168220,
+	0x2abc: 0x40168420, 0x2abd: 0x40168620, 0x2abe: 0x40168820, 0x2abf: 0x40168a20,
+	// Block 0xab, offset 0x2ac0
+	0x2ac0: 0x40168c20, 0x2ac1: 0x40168e20, 0x2ac2: 0x40169020, 0x2ac3: 0x40169220,
+	0x2ac4: 0x40169420, 0x2ac5: 0x40169620, 0x2ac6: 0x40169820, 0x2ac7: 0x40169a20,
+	0x2ac8: 0x40169c20, 0x2ac9: 0x40169e20, 0x2aca: 0x4016a020, 0x2acb: 0x4016a220,
+	0x2acc: 0x4016a420, 0x2acd: 0x4016a620, 0x2ace: 0x4016a820, 0x2acf: 0x4016aa20,
+	0x2ad0: 0x4016ac20, 0x2ad1: 0x4016ae20, 0x2ad2: 0x4016b020, 0x2ad3: 0x4016b220,
+	0x2ad4: 0x4016b420, 0x2ad5: 0x4016b620, 0x2ad6: 0x4016b820, 0x2ad7: 0x4016ba20,
+	0x2ad8: 0x4016bc20, 0x2ad9: 0x4016be20, 0x2ada: 0x4016c020, 0x2adb: 0x4016c220,
+	0x2adc: 0x4016c420, 0x2add: 0x4016c620, 0x2ade: 0x4016c820, 0x2adf: 0x4016ca20,
+	0x2ae0: 0x4016cc20, 0x2ae1: 0x4016ce20, 0x2ae2: 0x4016d020, 0x2ae3: 0x4016d220,
+	0x2ae4: 0x4016d420, 0x2ae5: 0x4016d620, 0x2ae6: 0x4016d820, 0x2ae7: 0x4016da20,
+	0x2ae8: 0x4016dc20, 0x2ae9: 0x4016de20, 0x2aea: 0x4016e020, 0x2aeb: 0x4016e220,
+	0x2aec: 0x4016e420, 0x2aed: 0x4016e620, 0x2aee: 0x4016e820, 0x2aef: 0x4016ea20,
+	0x2af0: 0x4016ec20, 0x2af1: 0x4016ee20, 0x2af2: 0x4016f020, 0x2af3: 0x4016f220,
+	0x2af4: 0x4016f420, 0x2af5: 0x4016f620, 0x2af6: 0x4016f820, 0x2af7: 0x4016fa20,
+	0x2af8: 0x4016fc20, 0x2af9: 0x4016fe20, 0x2afa: 0x40170020, 0x2afb: 0x40170220,
+	0x2afc: 0x40170420, 0x2afd: 0x40170620, 0x2afe: 0x40170820, 0x2aff: 0x40170a20,
+	// Block 0xac, offset 0x2b00
+	0x2b00: 0x40170c20, 0x2b01: 0x40170e20, 0x2b02: 0x40171020, 0x2b03: 0x40171220,
+	0x2b04: 0x40171420, 0x2b05: 0x40171620, 0x2b06: 0x40171820, 0x2b07: 0x40171a20,
+	0x2b08: 0x40171c20, 0x2b09: 0x40171e20, 0x2b0a: 0x40172020, 0x2b0b: 0x40172220,
+	0x2b0c: 0x40172420,
+	0x2b10: 0x40172620, 0x2b11: 0x40172820, 0x2b12: 0x40172a20, 0x2b13: 0x40172c20,
+	0x2b14: 0x40172e20, 0x2b15: 0x40173020, 0x2b16: 0x40173220, 0x2b17: 0x40173420,
+	0x2b18: 0x40173620, 0x2b19: 0x40173820,
+	// Block 0xad, offset 0x2b40
+	0x2b40: 0x00373888, 0x2b41: 0x00373a88, 0x2b42: 0x00373c88, 0x2b43: 0x00373e88,
+	0x2b44: 0x00374088, 0x2b45: 0x00374288, 0x2b46: 0x00374488, 0x2b47: 0x00374688,
+	0x2b48: 0x00374888, 0x2b49: 0x00374a88, 0x2b4a: 0x00374c88, 0x2b4b: 0x00374e88,
+	0x2b4c: 0x00375088, 0x2b4d: 0x00375288, 0x2b4e: 0x00375488, 0x2b4f: 0x00375688,
+	0x2b50: 0x00375888, 0x2b51: 0x00375a88, 0x2b52: 0x00375c88, 0x2b53: 0x00375e88,
+	0x2b54: 0x00376088, 0x2b55: 0x00376288, 0x2b56: 0x00376488, 0x2b57: 0x00376688,
+	0x2b58: 0x00376888, 0x2b59: 0x00376a88, 0x2b5a: 0x00376c88, 0x2b5b: 0x00376e88,
+	0x2b5c: 0x00377088, 0x2b5d: 0x00377288, 0x2b5e: 0x00377488, 0x2b5f: 0x00377688,
+	0x2b60: 0x00377888, 0x2b61: 0x00377a88, 0x2b62: 0x00377c88, 0x2b63: 0x00377e88,
+	0x2b64: 0x00378088, 0x2b65: 0x00378288, 0x2b66: 0x00378488, 0x2b67: 0x00378688,
+	0x2b68: 0x00378888, 0x2b69: 0x00378a88, 0x2b6a: 0x00378c88, 0x2b6b: 0x00378e88,
+	0x2b6c: 0x00379088, 0x2b6d: 0x00379288, 0x2b6e: 0x00379488,
+	0x2b70: 0x40373820, 0x2b71: 0x40373a20, 0x2b72: 0x40373c20, 0x2b73: 0x40373e20,
+	0x2b74: 0x40374020, 0x2b75: 0x40374220, 0x2b76: 0x40374420, 0x2b77: 0x40374620,
+	0x2b78: 0x40374820, 0x2b79: 0x40374a20, 0x2b7a: 0x40374c20, 0x2b7b: 0x40374e20,
+	0x2b7c: 0x40375020, 0x2b7d: 0x40375220, 0x2b7e: 0x40375420, 0x2b7f: 0x40375620,
+	// Block 0xae, offset 0x2b80
+	0x2b80: 0x40375820, 0x2b81: 0x40375a20, 0x2b82: 0x40375c20, 0x2b83: 0x40375e20,
+	0x2b84: 0x40376020, 0x2b85: 0x40376220, 0x2b86: 0x40376420, 0x2b87: 0x40376620,
+	0x2b88: 0x40376820, 0x2b89: 0x40376a20, 0x2b8a: 0x40376c20, 0x2b8b: 0x40376e20,
+	0x2b8c: 0x40377020, 0x2b8d: 0x40377220, 0x2b8e: 0x40377420, 0x2b8f: 0x40377620,
+	0x2b90: 0x40377820, 0x2b91: 0x40377a20, 0x2b92: 0x40377c20, 0x2b93: 0x40377e20,
+	0x2b94: 0x40378020, 0x2b95: 0x40378220, 0x2b96: 0x40378420, 0x2b97: 0x40378620,
+	0x2b98: 0x40378820, 0x2b99: 0x40378a20, 0x2b9a: 0x40378c20, 0x2b9b: 0x40378e20,
+	0x2b9c: 0x40379020, 0x2b9d: 0x40379220, 0x2b9e: 0x40379420,
+	0x2ba0: 0x002e4088, 0x2ba1: 0x402e4020, 0x2ba2: 0x002e4288, 0x2ba3: 0x002f3688,
+	0x2ba4: 0x002fbe88, 0x2ba5: 0x402be820, 0x2ba6: 0x40303e20, 0x2ba7: 0x002d8888,
+	0x2ba8: 0x402d8820, 0x2ba9: 0x002e1288, 0x2baa: 0x402e1220, 0x2bab: 0x00316088,
+	0x2bac: 0x40316020, 0x2bad: 0x002bf888, 0x2bae: 0x002e9088, 0x2baf: 0x002bf088,
+	0x2bb0: 0x002c0288, 0x2bb1: 0x4030d420, 0x2bb2: 0x0030ec88, 0x2bb3: 0x4030ec20,
+	0x2bb4: 0x4030d620, 0x2bb5: 0x002d8a88, 0x2bb6: 0x402d8a20, 0x2bb7: 0x402f5420,
+	0x2bb8: 0x402cac20, 0x2bb9: 0x402fb420, 0x2bba: 0x402f0e20, 0x2bbb: 0x402cb620,
+	0x2bbc: 0x002dcc95, 0x2bbd: 0x0030be9d, 0x2bbe: 0x002ffc88, 0x2bbf: 0x00315888,
+	// Block 0xaf, offset 0x2bc0
+	0x2bc0: 0x0032aa88, 0x2bc1: 0x4032aa20, 0x2bc2: 0x0032ac88, 0x2bc3: 0x4032ac20,
+	0x2bc4: 0x0032ae88, 0x2bc5: 0x4032ae20, 0x2bc6: 0x0032b088, 0x2bc7: 0x4032b020,
+	0x2bc8: 0x0032b288, 0x2bc9: 0x4032b220, 0x2bca: 0x0032b688, 0x2bcb: 0x4032b620,
+	0x2bcc: 0x0032b888, 0x2bcd: 0x4032b820, 0x2bce: 0x0032ba88, 0x2bcf: 0x4032ba20,
+	0x2bd0: 0x0032bc88, 0x2bd1: 0x4032bc20, 0x2bd2: 0x0032be88, 0x2bd3: 0x4032be20,
+	0x2bd4: 0x0032c088, 0x2bd5: 0x4032c020, 0x2bd6: 0x0032c488, 0x2bd7: 0x4032c420,
+	0x2bd8: 0x0032c688, 0x2bd9: 0x4032c620, 0x2bda: 0x0032c888, 0x2bdb: 0x4032c820,
+	0x2bdc: 0x0032ce88, 0x2bdd: 0x4032ce20, 0x2bde: 0x0032d088, 0x2bdf: 0x4032d020,
+	0x2be0: 0x0032d288, 0x2be1: 0x4032d220, 0x2be2: 0x0032d488, 0x2be3: 0x4032d420,
+	0x2be4: 0x0032d688, 0x2be5: 0x4032d620, 0x2be6: 0x0032d888, 0x2be7: 0x4032d820,
+	0x2be8: 0x0032da88, 0x2be9: 0x4032da20, 0x2bea: 0x0032dc88, 0x2beb: 0x4032dc20,
+	0x2bec: 0x0032de88, 0x2bed: 0x4032de20, 0x2bee: 0x0032e088, 0x2bef: 0x4032e020,
+	0x2bf0: 0x0032e288, 0x2bf1: 0x4032e220, 0x2bf2: 0x00331888, 0x2bf3: 0x40331820,
+	0x2bf4: 0x00331a88, 0x2bf5: 0x40331a20, 0x2bf6: 0x0032b488, 0x2bf7: 0x4032b420,
+	0x2bf8: 0x0032c288, 0x2bf9: 0x4032c220, 0x2bfa: 0x0032ca88, 0x2bfb: 0x4032ca20,
+	0x2bfc: 0x0032cc88, 0x2bfd: 0x4032cc20, 0x2bfe: 0x0032e488, 0x2bff: 0x4032e420,
+	// Block 0xb0, offset 0x2c00
+	0x2c00: 0x0032e688, 0x2c01: 0x4032e620, 0x2c02: 0x0032ec88, 0x2c03: 0x4032ec20,
+	0x2c04: 0x0032ee88, 0x2c05: 0x4032ee20, 0x2c06: 0x0032f088, 0x2c07: 0x4032f020,
+	0x2c08: 0x0032f888, 0x2c09: 0x4032f820, 0x2c0a: 0x0032fc88, 0x2c0b: 0x4032fc20,
+	0x2c0c: 0x0032fe88, 0x2c0d: 0x4032fe20, 0x2c0e: 0x00330088, 0x2c0f: 0x40330020,
+	0x2c10: 0x00330288, 0x2c11: 0x40330220, 0x2c12: 0x00330488, 0x2c13: 0x40330420,
+	0x2c14: 0x00330688, 0x2c15: 0x40330620, 0x2c16: 0x00330c88, 0x2c17: 0x40330c20,
+	0x2c18: 0x00331088, 0x2c19: 0x40331020, 0x2c1a: 0x00331288, 0x2c1b: 0x40331220,
+	0x2c1c: 0x00331488, 0x2c1d: 0x40331420, 0x2c1e: 0x00331c88, 0x2c1f: 0x40331c20,
+	0x2c20: 0x00331e88, 0x2c21: 0x40331e20, 0x2c22: 0x00332088, 0x2c23: 0x40332020,
+	0x2c24: 0xe00014b0, 0x2c25: 0x40173a20, 0x2c26: 0x40173c20, 0x2c27: 0x40173e20,
+	0x2c28: 0x40174020, 0x2c29: 0x40174220, 0x2c2a: 0x40174420, 0x2c2b: 0x0032ea88,
+	0x2c2c: 0x4032ea20, 0x2c2d: 0x00330a88, 0x2c2e: 0x40330a20, 0x2c2f: 0xae605f02,
+	0x2c30: 0xae602a02, 0x2c31: 0xae602202, 0x2c32: 0x0032f688, 0x2c33: 0x4032f620,
+	0x2c39: 0x4002f820, 0x2c3a: 0x4002d420, 0x2c3b: 0x4002d620,
+	0x2c3c: 0x4003b620, 0x2c3d: 0x4028b420, 0x2c3e: 0x4002fa20, 0x2c3f: 0x4003b820,
+	// Block 0xb1, offset 0x2c40
+	0x2c40: 0x40379820, 0x2c41: 0x40379c20, 0x2c42: 0x4037a020, 0x2c43: 0x4037a420,
+	0x2c44: 0x4037a820, 0x2c45: 0x4037ac20, 0x2c46: 0x4037b020, 0x2c47: 0x4037b820,
+	0x2c48: 0x4037bc20, 0x2c49: 0x4037c020, 0x2c4a: 0x4037c420, 0x2c4b: 0x4037c820,
+	0x2c4c: 0x4037cc20, 0x2c4d: 0x4037d420, 0x2c4e: 0x4037d820, 0x2c4f: 0x4037dc20,
+	0x2c50: 0x4037e020, 0x2c51: 0x4037e420, 0x2c52: 0x4037e820, 0x2c53: 0x4037f020,
+	0x2c54: 0x4037f420, 0x2c55: 0x4037f820, 0x2c56: 0x4037fc20, 0x2c57: 0x40380020,
+	0x2c58: 0x40380420, 0x2c59: 0x40380820, 0x2c5a: 0x40380c20, 0x2c5b: 0x40381020,
+	0x2c5c: 0x40381420, 0x2c5d: 0x40381820, 0x2c5e: 0x40381c20, 0x2c5f: 0x40382420,
+	0x2c60: 0x40382820, 0x2c61: 0x4037b420, 0x2c62: 0x4037d020, 0x2c63: 0x4037ec20,
+	0x2c64: 0x40382020, 0x2c65: 0x40382c20, 0x2c67: 0x40383220,
+	0x2c6d: 0x40383c20,
+	0x2c70: 0x403bbc20, 0x2c71: 0x403bbe20, 0x2c72: 0x403bc020, 0x2c73: 0x403bc220,
+	0x2c74: 0x403bc420, 0x2c75: 0x403bc620, 0x2c76: 0x403bc820, 0x2c77: 0x403bca20,
+	0x2c78: 0x403bcc20, 0x2c79: 0x403bce20, 0x2c7a: 0x403bd020, 0x2c7b: 0x403bd220,
+	0x2c7c: 0x403bd620, 0x2c7d: 0x403bd820, 0x2c7e: 0x403bda20, 0x2c7f: 0x403bdc20,
+	// Block 0xb2, offset 0x2c80
+	0x2c80: 0x403bde20, 0x2c81: 0x403be020, 0x2c82: 0x403be220, 0x2c83: 0x403be420,
+	0x2c84: 0x403be620, 0x2c85: 0x403be820, 0x2c86: 0x403bea20, 0x2c87: 0x403bec20,
+	0x2c88: 0x403bee20, 0x2c89: 0x403bf020, 0x2c8a: 0x403bf220, 0x2c8b: 0x403bf420,
+	0x2c8c: 0x403bf620, 0x2c8d: 0x403bf820, 0x2c8e: 0x403bfa20, 0x2c8f: 0x403bfc20,
+	0x2c90: 0x403bfe20, 0x2c91: 0x403c0020, 0x2c92: 0x403c0220, 0x2c93: 0x403c0420,
+	0x2c94: 0x403c0820, 0x2c95: 0x403c0a20, 0x2c96: 0x403c0c20, 0x2c97: 0x403c0e20,
+	0x2c98: 0x403c1020, 0x2c99: 0x403c1220, 0x2c9a: 0x403c1420, 0x2c9b: 0x403c1620,
+	0x2c9c: 0x403c1820, 0x2c9d: 0x403c1a20, 0x2c9e: 0x403c1c20, 0x2c9f: 0x403c1e20,
+	0x2ca0: 0x403c2020, 0x2ca1: 0x403c2220, 0x2ca2: 0x403c2420, 0x2ca3: 0x403c2620,
+	0x2ca4: 0x403c2820, 0x2ca5: 0x403c2a20, 0x2ca6: 0x403bd420, 0x2ca7: 0x403c0620,
+	0x2caf: 0x403c2c20,
+	0x2cb0: 0x4005e620,
+	0x2cbf: 0xa0900000,
+	// Block 0xb3, offset 0x2cc0
+	0x2cc0: 0x403c4e20, 0x2cc1: 0x403c7820, 0x2cc2: 0x403c9a20, 0x2cc3: 0x403cac20,
+	0x2cc4: 0x403cca20, 0x2cc5: 0x403d1620, 0x2cc6: 0x403d3820, 0x2cc7: 0x403d4a20,
+	0x2cc8: 0x403d7620, 0x2cc9: 0x403d8820, 0x2cca: 0x403d9a20, 0x2ccb: 0x403dfc20,
+	0x2ccc: 0x403e3a20, 0x2ccd: 0x403e5820, 0x2cce: 0x403e6a20, 0x2ccf: 0x403eae20,
+	0x2cd0: 0x403ec020, 0x2cd1: 0x403ee020, 0x2cd2: 0x403f4020, 0x2cd3: 0x403e9620,
+	0x2cd4: 0x403e9820, 0x2cd5: 0x403e9a20, 0x2cd6: 0x403e9c20,
+	0x2ce0: 0x403f4820, 0x2ce1: 0x403f4a20, 0x2ce2: 0x403f4c20, 0x2ce3: 0x403f4e20,
+	0x2ce4: 0x403f5020, 0x2ce5: 0x403f5220, 0x2ce6: 0x403f5420,
+	0x2ce8: 0x403f5620, 0x2ce9: 0x403f5820, 0x2cea: 0x403f5a20, 0x2ceb: 0x403f5c20,
+	0x2cec: 0x403f5e20, 0x2ced: 0x403f6020, 0x2cee: 0x403f6220,
+	0x2cf0: 0x403f6420, 0x2cf1: 0x403f6620, 0x2cf2: 0x403f6820, 0x2cf3: 0x403f6a20,
+	0x2cf4: 0x403f6c20, 0x2cf5: 0x403f6e20, 0x2cf6: 0x403f7020,
+	0x2cf8: 0x403f7220, 0x2cf9: 0x403f7420, 0x2cfa: 0x403f7620, 0x2cfb: 0x403f7820,
+	0x2cfc: 0x403f7a20, 0x2cfd: 0x403f7c20, 0x2cfe: 0x403f7e20,
+	// Block 0xb4, offset 0x2d00
+	0x2d00: 0x403f8020, 0x2d01: 0x403f8220, 0x2d02: 0x403f8420, 0x2d03: 0x403f8620,
+	0x2d04: 0x403f8820, 0x2d05: 0x403f8a20, 0x2d06: 0x403f8c20,
+	0x2d08: 0x403f8e20, 0x2d09: 0x403f9020, 0x2d0a: 0x403f9220, 0x2d0b: 0x403f9420,
+	0x2d0c: 0x403f9620, 0x2d0d: 0x403f9820, 0x2d0e: 0x403f9a20,
+	0x2d10: 0x403f9c20, 0x2d11: 0x403f9e20, 0x2d12: 0x403fa020, 0x2d13: 0x403fa220,
+	0x2d14: 0x403fa420, 0x2d15: 0x403fa620, 0x2d16: 0x403fa820,
+	0x2d18: 0x403faa20, 0x2d19: 0x403fac20, 0x2d1a: 0x403fae20, 0x2d1b: 0x403fb020,
+	0x2d1c: 0x403fb220, 0x2d1d: 0x403fb420, 0x2d1e: 0x403fb620,
+	0x2d20: 0x84e619a9, 0x2d21: 0x84e619ad, 0x2d22: 0x84e619b1, 0x2d23: 0x84e619c5,
+	0x2d24: 0x84e619e5, 0x2d25: 0x84e619f2, 0x2d26: 0x84e61a28, 0x2d27: 0x84e61a42,
+	0x2d28: 0x84e61a54, 0x2d29: 0x84e61a5d, 0x2d2a: 0x84e61a77, 0x2d2b: 0x84e61a87,
+	0x2d2c: 0x84e61a94, 0x2d2d: 0x84e61a9d, 0x2d2e: 0x84e61aa6, 0x2d2f: 0x84e61ada,
+	0x2d30: 0x84e61b01, 0x2d31: 0x84e61b0c, 0x2d32: 0x84e61b2e, 0x2d33: 0x84e61b33,
+	0x2d34: 0x84e61b86, 0x2d35: 0xe00014d8, 0x2d36: 0x84e61991, 0x2d37: 0x84e619d9,
+	0x2d38: 0x84e61a27, 0x2d39: 0x84e61ad1, 0x2d3a: 0x84e61b4f, 0x2d3b: 0x84e61b5c,
+	0x2d3c: 0x84e61b61, 0x2d3d: 0x84e61b6b, 0x2d3e: 0x84e61b70, 0x2d3f: 0x84e61b7a,
+	// Block 0xb5, offset 0x2d40
+	0x2d40: 0x40052620, 0x2d41: 0x40052820, 0x2d42: 0x40047420, 0x2d43: 0x40047620,
+	0x2d44: 0x40047820, 0x2d45: 0x40047a20, 0x2d46: 0x40052a20, 0x2d47: 0x40052c20,
+	0x2d48: 0x40052e20, 0x2d49: 0x40047c20, 0x2d4a: 0x40047e20, 0x2d4b: 0x40053020,
+	0x2d4c: 0x40048020, 0x2d4d: 0x40048220, 0x2d4e: 0x40053220, 0x2d4f: 0x40053420,
+	0x2d50: 0x40053620, 0x2d51: 0x40053820, 0x2d52: 0x40053a20, 0x2d53: 0x40053c20,
+	0x2d54: 0x40053e20, 0x2d55: 0x40054020, 0x2d56: 0x40054220, 0x2d57: 0x40023620,
+	0x2d58: 0x4002e220, 0x2d59: 0x4003ba20, 0x2d5a: 0x40054420, 0x2d5b: 0x40054620,
+	0x2d5c: 0x40048420, 0x2d5d: 0x40048620, 0x2d5e: 0x40054820, 0x2d5f: 0x40054a20,
+	0x2d60: 0x40048820, 0x2d61: 0x40048a20, 0x2d62: 0x40048c20, 0x2d63: 0x40048e20,
+	0x2d64: 0x40049020, 0x2d65: 0x40049220, 0x2d66: 0x40049420, 0x2d67: 0x40049620,
+	0x2d68: 0x40049820, 0x2d69: 0x40049a20, 0x2d6a: 0x4003ae20, 0x2d6b: 0x4003b020,
+	0x2d6c: 0x4003b220, 0x2d6d: 0x4003b420, 0x2d6e: 0x4002c820, 0x2d6f: 0x40367020,
+	0x2d70: 0x4002fc20, 0x2d71: 0x40030820, 0x2d72: 0x40024420, 0x2d73: 0x40030a20,
+	0x2d74: 0x40024220, 0x2d75: 0x40026820, 0x2d76: 0x4004fc20, 0x2d77: 0x4004fe20,
+	0x2d78: 0x40050020, 0x2d79: 0x4004d020, 0x2d7a: 0x40023020, 0x2d7b: 0x40023220,
+	// Block 0xb6, offset 0x2d80
+	0x2d80: 0xe0002401, 0x2d81: 0xe0002416, 0x2d82: 0x029cb684, 0x2d83: 0x029cb484,
+	0x2d84: 0xe0002404, 0x2d85: 0x029d7684, 0x2d86: 0xe0002407, 0x2d87: 0xe000240a,
+	0x2d88: 0xe000240d, 0x2d89: 0x02a40484, 0x2d8a: 0xe0002410, 0x2d8b: 0xe0002413,
+	0x2d8c: 0xe0002419, 0x2d8d: 0xe000241c, 0x2d8e: 0xe000241f, 0x2d8f: 0x02b84684,
+	0x2d90: 0x02b84484, 0x2d91: 0xe0002422, 0x2d92: 0x02bbe684, 0x2d93: 0x02bcf484,
+	0x2d94: 0x02bea284, 0x2d95: 0xe0002425, 0x2d96: 0x02bf8884, 0x2d97: 0xe0002428,
+	0x2d98: 0x02c49884, 0x2d99: 0x02ca6a84, 0x2d9b: 0x02cbc284,
+	0x2d9c: 0xe000242b, 0x2d9d: 0xe000242e, 0x2d9e: 0xe0002436, 0x2d9f: 0x02d79a84,
+	0x2da0: 0x02d82284, 0x2da1: 0x02d86a84, 0x2da2: 0x02d87484, 0x2da3: 0x02e0d884,
+	0x2da4: 0x02e45684, 0x2da5: 0xe0002439, 0x2da6: 0x029c5884, 0x2da7: 0xe000243c,
+	0x2da8: 0x02e55a84, 0x2da9: 0xe000243f, 0x2daa: 0xe0002442, 0x2dab: 0xe0002445,
+	0x2dac: 0xe0002448, 0x2dad: 0x02f27684, 0x2dae: 0xe000244b, 0x2daf: 0x02f9f284,
+	0x2db0: 0x02fd3e84, 0x2db1: 0x02fea684, 0x2db2: 0x02fea484, 0x2db3: 0xe0002451,
+	0x2db4: 0xe0002454, 0x2db5: 0xe000244e, 0x2db6: 0xe0002457, 0x2db7: 0xe000245a,
+	0x2db8: 0x02ff1684, 0x2db9: 0x03000484, 0x2dba: 0x03010084, 0x2dbb: 0xe000245d,
+	0x2dbc: 0xe0002460, 0x2dbd: 0xe0002463, 0x2dbe: 0x0304f284, 0x2dbf: 0xe0002466,
+	// Block 0xb7, offset 0x2dc0
+	0x2dc0: 0xe0002469, 0x2dc1: 0x030c9c84, 0x2dc2: 0x0310c884, 0x2dc3: 0x03130084,
+	0x2dc4: 0x0312fe84, 0x2dc5: 0x03138284, 0x2dc6: 0x0313a484, 0x2dc7: 0xe000246c,
+	0x2dc8: 0x03174084, 0x2dc9: 0x031a3a84, 0x2dca: 0xe000246f, 0x2dcb: 0x031ecc84,
+	0x2dcc: 0x031f6c84, 0x2dcd: 0xe0002472, 0x2dce: 0xe0002475, 0x2dcf: 0xe0002478,
+	0x2dd0: 0x03290a84, 0x2dd1: 0x032aee84, 0x2dd2: 0x032af084, 0x2dd3: 0x032afe84,
+	0x2dd4: 0x032bd084, 0x2dd5: 0xe000247b, 0x2dd6: 0x032c3a84, 0x2dd7: 0xe000247e,
+	0x2dd8: 0x032ea484, 0x2dd9: 0x032fcc84, 0x2dda: 0x0330ea84, 0x2ddb: 0x03319c84,
+	0x2ddc: 0x0331bc84, 0x2ddd: 0x0331be84, 0x2dde: 0xe0002481, 0x2ddf: 0x0331c084,
+	0x2de0: 0x0332c684, 0x2de1: 0xe0002484, 0x2de2: 0x0334d884, 0x2de3: 0xe0002487,
+	0x2de4: 0xe000248a, 0x2de5: 0x0338f884, 0x2de6: 0x033c3e84, 0x2de7: 0xe000248d,
+	0x2de8: 0x033d4c84, 0x2de9: 0x033d8884, 0x2dea: 0x033dfc84, 0x2deb: 0xe0002490,
+	0x2dec: 0x033ea084, 0x2ded: 0xe0002493, 0x2dee: 0x033efe84, 0x2def: 0xe0002496,
+	0x2df0: 0x033f3284, 0x2df1: 0xe0002499, 0x2df2: 0xe000249c, 0x2df3: 0x033f3e84,
+	// Block 0xb8, offset 0x2e00
+	0x2e00: 0x029c0084, 0x2e01: 0x029c5084, 0x2e02: 0x029c6c84, 0x2e03: 0x029c7e84,
+	0x2e04: 0x029cb284, 0x2e05: 0x029d0a84, 0x2e06: 0x029d1884, 0x2e07: 0x029d4084,
+	0x2e08: 0x029d7484, 0x2e09: 0x02a27e84, 0x2e0a: 0x02a2ca84, 0x2e0b: 0x02a2d684,
+	0x2e0c: 0x02a30484, 0x2e0d: 0x02a32c84, 0x2e0e: 0x02a35684, 0x2e0f: 0x02a3c084,
+	0x2e10: 0x02a3ea84, 0x2e11: 0x02a40084, 0x2e12: 0x02a53684, 0x2e13: 0x02a5f284,
+	0x2e14: 0x02a62a84, 0x2e15: 0x02a63484, 0x2e16: 0x02a67084, 0x2e17: 0x02a68284,
+	0x2e18: 0x02a6b884, 0x2e19: 0x02a6d284, 0x2e1a: 0x02a70484, 0x2e1b: 0x02a76c84,
+	0x2e1c: 0x02a79084, 0x2e1d: 0x02a7c684, 0x2e1e: 0x02adae84, 0x2e1f: 0x02ae3e84,
+	0x2e20: 0x02b1d684, 0x2e21: 0x02b20484, 0x2e22: 0x02b21484, 0x2e23: 0x02b22a84,
+	0x2e24: 0x02b24e84, 0x2e25: 0x02b2e684, 0x2e26: 0x02b6a084, 0x2e27: 0x02b70084,
+	0x2e28: 0x02b7f084, 0x2e29: 0x02b81e84, 0x2e2a: 0x02b84484, 0x2e2b: 0x02b87084,
+	0x2e2c: 0x02b8dc84, 0x2e2d: 0x02b8e284, 0x2e2e: 0x02bbb684, 0x2e2f: 0x02bbca84,
+	0x2e30: 0x02bbe284, 0x2e31: 0x02bbfc84, 0x2e32: 0x02bce484, 0x2e33: 0x02bcf484,
+	0x2e34: 0x02bcfe84, 0x2e35: 0x02bde884, 0x2e36: 0x02bdfc84, 0x2e37: 0x02be1684,
+	0x2e38: 0x02be2684, 0x2e39: 0x02bea084, 0x2e3a: 0x02bec284, 0x2e3b: 0x02bee684,
+	0x2e3c: 0x02bf8684, 0x2e3d: 0x02c41084, 0x2e3e: 0x02c46c84, 0x2e3f: 0x02c49684,
+	// Block 0xb9, offset 0x2e40
+	0x2e40: 0x02ca5e84, 0x2e41: 0x02ca6884, 0x2e42: 0x02cb0e84, 0x2e43: 0x02cb2e84,
+	0x2e44: 0x02cb4884, 0x2e45: 0x02cb7284, 0x2e46: 0x02cbc084, 0x2e47: 0x02cbca84,
+	0x2e48: 0x02cde084, 0x2e49: 0x02ce1084, 0x2e4a: 0x02ce5084, 0x2e4b: 0x02d64084,
+	0x2e4c: 0x02d6c484, 0x2e4d: 0x02d6f284, 0x2e4e: 0x02d76684, 0x2e4f: 0x02d79684,
+	0x2e50: 0x02d7a884, 0x2e51: 0x02d7b684, 0x2e52: 0x02d81e84, 0x2e53: 0x02d82884,
+	0x2e54: 0x02d86884, 0x2e55: 0x02e0d684, 0x2e56: 0x02e45484, 0x2e57: 0x02e46c84,
+	0x2e58: 0x02e47684, 0x2e59: 0x02e47e84, 0x2e5a: 0x02e48e84, 0x2e5b: 0x02e4b284,
+	0x2e5c: 0x02e4b684, 0x2e5d: 0x02e55884, 0x2e5e: 0x02e70884, 0x2e5f: 0x02e71284,
+	0x2e60: 0x02e9b884, 0x2e61: 0x02e9cc84, 0x2e62: 0x02ea3084, 0x2e63: 0x02ea3e84,
+	0x2e64: 0x02ea5084, 0x2e65: 0x02ea6084, 0x2e66: 0x02eb1684, 0x2e67: 0x02eb2484,
+	0x2e68: 0x02ecec84, 0x2e69: 0x02ecfa84, 0x2e6a: 0x02ed5c84, 0x2e6b: 0x02ed7e84,
+	0x2e6c: 0x02eddc84, 0x2e6d: 0x02efb684, 0x2e6e: 0x02efc484, 0x2e6f: 0x02efe684,
+	0x2e70: 0x02f27484, 0x2e71: 0x02f37084, 0x2e72: 0x02f37c84, 0x2e73: 0x02f4e884,
+	0x2e74: 0x02f59684, 0x2e75: 0x02f5f284, 0x2e76: 0x02f8e684, 0x2e77: 0x02f9f084,
+	0x2e78: 0x02fe6c84, 0x2e79: 0x02fea284, 0x2e7a: 0x02ff1484, 0x2e7b: 0x02ff7a84,
+	0x2e7c: 0x03000284, 0x2e7d: 0x03001884, 0x2e7e: 0x03002484, 0x2e7f: 0x03006684,
+	// Block 0xba, offset 0x2e80
+	0x2e80: 0x0300fe84, 0x2e81: 0x03011284, 0x2e82: 0x0303c684, 0x2e83: 0x0303d484,
+	0x2e84: 0x0303e684, 0x2e85: 0x0303f884, 0x2e86: 0x03041884, 0x2e87: 0x03043684,
+	0x2e88: 0x03043e84, 0x2e89: 0x0304dc84, 0x2e8a: 0x0304e484, 0x2e8b: 0x0304f084,
+	0x2e8c: 0x030c9a84, 0x2e8d: 0x030cd684, 0x2e8e: 0x03108084, 0x2e8f: 0x03109884,
+	0x2e90: 0x0310c684, 0x2e91: 0x0312fc84, 0x2e92: 0x03131684, 0x2e93: 0x0313a484,
+	0x2e94: 0x03140084, 0x2e95: 0x03186e84, 0x2e96: 0x03188c84, 0x2e97: 0x0318aa84,
+	0x2e98: 0x0318f084, 0x2e99: 0x03193a84, 0x2e9a: 0x031ac884, 0x2e9b: 0x031ae084,
+	0x2e9c: 0x031b6684, 0x2e9d: 0x031d5684, 0x2e9e: 0x031d9484, 0x2e9f: 0x031f3684,
+	0x2ea0: 0x031f6084, 0x2ea1: 0x031f6a84, 0x2ea2: 0x03212284, 0x2ea3: 0x03229284,
+	0x2ea4: 0x03238c84, 0x2ea5: 0x03239884, 0x2ea6: 0x0323a284, 0x2ea7: 0x032aee84,
+	0x2ea8: 0x032b0084, 0x2ea9: 0x032c3884, 0x2eaa: 0x032d6c84, 0x2eab: 0x032d7284,
+	0x2eac: 0x032dd084, 0x2ead: 0x032ea284, 0x2eae: 0x032ebc84, 0x2eaf: 0x032ec484,
+	0x2eb0: 0x032ed284, 0x2eb1: 0x032f9684, 0x2eb2: 0x032fda84, 0x2eb3: 0x032fe684,
+	0x2eb4: 0x03300284, 0x2eb5: 0x03315084, 0x2eb6: 0x0331b684, 0x2eb7: 0x0331be84,
+	0x2eb8: 0x03332c84, 0x2eb9: 0x03333284, 0x2eba: 0x03335884, 0x2ebb: 0x03355084,
+	0x2ebc: 0x0335b084, 0x2ebd: 0x0335be84, 0x2ebe: 0x03364a84, 0x2ebf: 0x03365e84,
+	// Block 0xbb, offset 0x2ec0
+	0x2ec0: 0x03366484, 0x2ec1: 0x03367884, 0x2ec2: 0x0336b484, 0x2ec3: 0x0339ca84,
+	0x2ec4: 0x033cea84, 0x2ec5: 0x033cfe84, 0x2ec6: 0x033d4a84, 0x2ec7: 0x033d7684,
+	0x2ec8: 0x033d8684, 0x2ec9: 0x033d9a84, 0x2eca: 0x033da284, 0x2ecb: 0x033df284,
+	0x2ecc: 0x033dfa84, 0x2ecd: 0x033e1c84, 0x2ece: 0x033e2684, 0x2ecf: 0x033e4084,
+	0x2ed0: 0x033e7684, 0x2ed1: 0x033e9484, 0x2ed2: 0x033ea484, 0x2ed3: 0x033f1a84,
+	0x2ed4: 0x033f3884, 0x2ed5: 0x033f4084,
+	0x2ef0: 0x40273a20, 0x2ef1: 0x40273c20, 0x2ef2: 0x40273e20, 0x2ef3: 0x40274020,
+	0x2ef4: 0x40274220, 0x2ef5: 0x40274420, 0x2ef6: 0x40274620, 0x2ef7: 0x40274820,
+	0x2ef8: 0x40274a20, 0x2ef9: 0x40274c20, 0x2efa: 0x40274e20, 0x2efb: 0x40275020,
+	// Block 0xbc, offset 0x2f00
+	0x2f00: 0x00021283, 0x2f01: 0x40025c20, 0x2f02: 0x40030420, 0x2f03: 0x40051220,
+	0x2f04: 0x40279a20, 0x2f05: 0x4027ca20, 0x2f06: 0xe0002206, 0x2f07: 0xe00001d3,
+	0x2f08: 0x40049c20, 0x2f09: 0x40049e20, 0x2f0a: 0x4004a020, 0x2f0b: 0x4004a220,
+	0x2f0c: 0x4004a420, 0x2f0d: 0x4004a620, 0x2f0e: 0x4004a820, 0x2f0f: 0x4004aa20,
+	0x2f10: 0x4004ac20, 0x2f11: 0x4004ae20, 0x2f12: 0x40279c20, 0x2f13: 0x40279e20,
+	0x2f14: 0x4004b020, 0x2f15: 0x4004b220, 0x2f16: 0x4004b420, 0x2f17: 0x4004b620,
+	0x2f18: 0x4004b820, 0x2f19: 0x4004ba20, 0x2f1a: 0x4004bc20, 0x2f1b: 0x4004be20,
+	0x2f1c: 0x40023820, 0x2f1d: 0x4003ea20, 0x2f1e: 0x4003ec20, 0x2f1f: 0x4003ee20,
+	0x2f20: 0x4027a020, 0x2f21: 0xe0000267, 0x2f22: 0xe000037f, 0x2f23: 0xe0000459,
+	0x2f24: 0xe000052e, 0x2f25: 0xe00005f8, 0x2f26: 0xe00006c3, 0x2f27: 0xe000076b,
+	0x2f28: 0xe0000817, 0x2f29: 0xe00008bc, 0x2f2a: 0xada12202, 0x2f2b: 0xae412302,
+	0x2f2c: 0xae812402, 0x2f2d: 0xade12502, 0x2f2e: 0xae012602, 0x2f2f: 0xae012702,
+	0x2f30: 0x40023a20, 0x2f31: 0x4027ce20, 0x2f32: 0xe0000152, 0x2f33: 0x4027d020,
+	0x2f34: 0xe0000155, 0x2f35: 0x4027d220, 0x2f36: 0x00279c84, 0x2f37: 0x4027a220,
+	0x2f38: 0x02a68284, 0x2f39: 0x02a68884, 0x2f3a: 0x02a68a84, 0x2f3b: 0x4027cc20,
+	0x2f3c: 0xe000231a, 0x2f3d: 0x40051420, 0x2f3e: 0x4027a420, 0x2f3f: 0x4027a620,
+	// Block 0xbd, offset 0x2f40
+	0x2f41: 0x0065768d, 0x2f42: 0x0065768e, 0x2f43: 0x0065788d,
+	0x2f44: 0x0065788e, 0x2f45: 0x00657a8d, 0x2f46: 0x00657a8e, 0x2f47: 0x00657e8d,
+	0x2f48: 0x00657e8e, 0x2f49: 0x0065808d, 0x2f4a: 0x0065808e, 0x2f4b: 0x0065828e,
+	0x2f4c: 0xe000216a, 0x2f4d: 0x0065848e, 0x2f4e: 0xe0002188, 0x2f4f: 0x0065868e,
+	0x2f50: 0xe00021b8, 0x2f51: 0x0065888e, 0x2f52: 0xe00021d6, 0x2f53: 0x00658a8e,
+	0x2f54: 0xe00021e0, 0x2f55: 0x00658c8e, 0x2f56: 0xe00021ef, 0x2f57: 0x00658e8e,
+	0x2f58: 0xe0002200, 0x2f59: 0x0065908e, 0x2f5a: 0xe000220f, 0x2f5b: 0x0065928e,
+	0x2f5c: 0xe0002215, 0x2f5d: 0x0065948e, 0x2f5e: 0xe0002223, 0x2f5f: 0x0065968e,
+	0x2f60: 0xe0002229, 0x2f61: 0x0065988e, 0x2f62: 0xe0002234, 0x2f63: 0x00659a8d,
+	0x2f64: 0x00659a8e, 0x2f65: 0xe000223a, 0x2f66: 0x00659c8e, 0x2f67: 0xe0002240,
+	0x2f68: 0x00659e8e, 0x2f69: 0xe000224a, 0x2f6a: 0x0065a08e, 0x2f6b: 0x0065a28e,
+	0x2f6c: 0x0065a48e, 0x2f6d: 0x0065a68e, 0x2f6e: 0x0065a88e, 0x2f6f: 0x0065aa8e,
+	0x2f70: 0xe0002258, 0x2f71: 0xe000225e, 0x2f72: 0x0065ac8e, 0x2f73: 0xe000227a,
+	0x2f74: 0xe0002280, 0x2f75: 0x0065ae8e, 0x2f76: 0xe000229a, 0x2f77: 0xe00022a0,
+	0x2f78: 0x0065b08e, 0x2f79: 0xe00022bd, 0x2f7a: 0xe00022c3, 0x2f7b: 0x0065b28e,
+	0x2f7c: 0xe00022ec, 0x2f7d: 0xe00022f2, 0x2f7e: 0x0065b48e, 0x2f7f: 0x0065b68e,
+	// Block 0xbe, offset 0x2f80
+	0x2f80: 0x0065b88e, 0x2f81: 0x0065ba8e, 0x2f82: 0x0065bc8e, 0x2f83: 0x0065be8d,
+	0x2f84: 0x0065be8e, 0x2f85: 0x0065c08d, 0x2f86: 0x0065c08e, 0x2f87: 0x0065c48d,
+	0x2f88: 0x0065c48e, 0x2f89: 0x0065c68e, 0x2f8a: 0x0065c88e, 0x2f8b: 0x0065ca8e,
+	0x2f8c: 0x0065cc8e, 0x2f8d: 0x0065ce8e, 0x2f8e: 0x0065d08d, 0x2f8f: 0x0065d08e,
+	0x2f90: 0x0065d28e, 0x2f91: 0x0065d48e, 0x2f92: 0x0065d68e, 0x2f93: 0x0065d88e,
+	0x2f94: 0xe000214c, 0x2f95: 0x0065828d, 0x2f96: 0x0065888d,
+	0x2f99: 0xa0812802, 0x2f9a: 0xa0812902, 0x2f9b: 0x40063c20,
+	0x2f9c: 0x40063e20, 0x2f9d: 0x4027d420, 0x2f9e: 0xe0000158, 0x2f9f: 0xf0001616,
+	0x2fa0: 0x40023c20, 0x2fa1: 0x0065768f, 0x2fa2: 0x00657691, 0x2fa3: 0x0065788f,
+	0x2fa4: 0x00657891, 0x2fa5: 0x00657a8f, 0x2fa6: 0x00657a91, 0x2fa7: 0x00657e8f,
+	0x2fa8: 0x00657e91, 0x2fa9: 0x0065808f, 0x2faa: 0x00658091, 0x2fab: 0x00658291,
+	0x2fac: 0xe000216d, 0x2fad: 0x00658491, 0x2fae: 0xe000218b, 0x2faf: 0x00658691,
+	0x2fb0: 0xe00021bb, 0x2fb1: 0x00658891, 0x2fb2: 0xe00021d9, 0x2fb3: 0x00658a91,
+	0x2fb4: 0xe00021e3, 0x2fb5: 0x00658c91, 0x2fb6: 0xe00021f2, 0x2fb7: 0x00658e91,
+	0x2fb8: 0xe0002203, 0x2fb9: 0x00659091, 0x2fba: 0xe0002212, 0x2fbb: 0x00659291,
+	0x2fbc: 0xe0002218, 0x2fbd: 0x00659491, 0x2fbe: 0xe0002226, 0x2fbf: 0x00659691,
+	// Block 0xbf, offset 0x2fc0
+	0x2fc0: 0xe000222c, 0x2fc1: 0x00659891, 0x2fc2: 0xe0002237, 0x2fc3: 0x00659a8f,
+	0x2fc4: 0x00659a91, 0x2fc5: 0xe000223d, 0x2fc6: 0x00659c91, 0x2fc7: 0xe0002243,
+	0x2fc8: 0x00659e91, 0x2fc9: 0xe000224d, 0x2fca: 0x0065a091, 0x2fcb: 0x0065a291,
+	0x2fcc: 0x0065a491, 0x2fcd: 0x0065a691, 0x2fce: 0x0065a891, 0x2fcf: 0x0065aa91,
+	0x2fd0: 0xe000225b, 0x2fd1: 0xe0002261, 0x2fd2: 0x0065ac91, 0x2fd3: 0xe000227d,
+	0x2fd4: 0xe0002283, 0x2fd5: 0x0065ae91, 0x2fd6: 0xe000229d, 0x2fd7: 0xe00022a3,
+	0x2fd8: 0x0065b091, 0x2fd9: 0xe00022c0, 0x2fda: 0xe00022c6, 0x2fdb: 0x0065b291,
+	0x2fdc: 0xe00022ef, 0x2fdd: 0xe00022f5, 0x2fde: 0x0065b491, 0x2fdf: 0x0065b691,
+	0x2fe0: 0x0065b891, 0x2fe1: 0x0065ba91, 0x2fe2: 0x0065bc91, 0x2fe3: 0x0065be8f,
+	0x2fe4: 0x0065be91, 0x2fe5: 0x0065c08f, 0x2fe6: 0x0065c091, 0x2fe7: 0x0065c48f,
+	0x2fe8: 0x0065c491, 0x2fe9: 0x0065c691, 0x2fea: 0x0065c891, 0x2feb: 0x0065ca91,
+	0x2fec: 0x0065cc91, 0x2fed: 0x0065ce91, 0x2fee: 0x0065d08f, 0x2fef: 0x0065d091,
+	0x2ff0: 0x0065d291, 0x2ff1: 0x0065d491, 0x2ff2: 0x0065d691, 0x2ff3: 0x0065d891,
+	0x2ff4: 0xe000214f, 0x2ff5: 0x0065828f, 0x2ff6: 0x0065888f, 0x2ff7: 0xe000236a,
+	0x2ff8: 0xe0002371, 0x2ff9: 0xe0002374, 0x2ffa: 0xe0002377, 0x2ffb: 0x40023e20,
+	0x2ffc: 0x4027d620, 0x2ffd: 0x4027d820, 0x2ffe: 0xe000015b, 0x2fff: 0xf0001616,
+	// Block 0xc0, offset 0x3000
+	0x3005: 0x4065da20, 0x3006: 0x4065dc20, 0x3007: 0x4065de20,
+	0x3008: 0x4065e020, 0x3009: 0x4065e420, 0x300a: 0x4065e620, 0x300b: 0x4065e820,
+	0x300c: 0x4065ea20, 0x300d: 0x4065ec20, 0x300e: 0x4065ee20, 0x300f: 0x4065f420,
+	0x3010: 0x4065f620, 0x3011: 0x4065f820, 0x3012: 0x4065fa20, 0x3013: 0x4065fe20,
+	0x3014: 0x40660020, 0x3015: 0x40660220, 0x3016: 0x40660420, 0x3017: 0x40660620,
+	0x3018: 0x40660820, 0x3019: 0x40660a20, 0x301a: 0x40661220, 0x301b: 0x40661420,
+	0x301c: 0x40661820, 0x301d: 0x40661a20, 0x301e: 0x40661e20, 0x301f: 0x40662020,
+	0x3020: 0x40662220, 0x3021: 0x40662420, 0x3022: 0x40662620, 0x3023: 0x40662820,
+	0x3024: 0x40662a20, 0x3025: 0x40662e20, 0x3026: 0x40663620, 0x3027: 0x40663820,
+	0x3028: 0x40663a20, 0x3029: 0x40663c20, 0x302a: 0x4065e220, 0x302b: 0x4065f020,
+	0x302c: 0x4065fc20, 0x302d: 0x40663e20,
+	0x3031: 0x0062ac84, 0x3032: 0x0062ae84, 0x3033: 0x00646884,
+	0x3034: 0x0062b084, 0x3035: 0x00646c84, 0x3036: 0x00646e84, 0x3037: 0x0062b284,
+	0x3038: 0x0062b484, 0x3039: 0x0062b684, 0x303a: 0x00647484, 0x303b: 0x00647684,
+	0x303c: 0x00647884, 0x303d: 0x00647a84, 0x303e: 0x00647c84, 0x303f: 0x00647e84,
+	// Block 0xc1, offset 0x3040
+	0x3040: 0x0062e084, 0x3041: 0x0062b884, 0x3042: 0x0062ba84, 0x3043: 0x0062bc84,
+	0x3044: 0x0062ee84, 0x3045: 0x0062be84, 0x3046: 0x0062c084, 0x3047: 0x0062c284,
+	0x3048: 0x0062c484, 0x3049: 0x0062c684, 0x304a: 0x0062c884, 0x304b: 0x0062ca84,
+	0x304c: 0x0062cc84, 0x304d: 0x0062ce84, 0x304e: 0x0062d084, 0x304f: 0x0063a884,
+	0x3050: 0x0063aa84, 0x3051: 0x0063ac84, 0x3052: 0x0063ae84, 0x3053: 0x0063b084,
+	0x3054: 0x0063b284, 0x3055: 0x0063b484, 0x3056: 0x0063b684, 0x3057: 0x0063b884,
+	0x3058: 0x0063ba84, 0x3059: 0x0063bc84, 0x305a: 0x0063be84, 0x305b: 0x0063c084,
+	0x305c: 0x0063c284, 0x305d: 0x0063c484, 0x305e: 0x0063c684, 0x305f: 0x0063c884,
+	0x3060: 0x0063ca84, 0x3061: 0x0063cc84, 0x3062: 0x0063ce84, 0x3063: 0x0063d084,
+	0x3064: 0x0063a684, 0x3065: 0x0062d484, 0x3066: 0x0062d684, 0x3067: 0x0064a284,
+	0x3068: 0x0064a484, 0x3069: 0x0064ac84, 0x306a: 0x0064b084, 0x306b: 0x0064ba84,
+	0x306c: 0x0064c284, 0x306d: 0x0064c684, 0x306e: 0x0062e484, 0x306f: 0x0064ce84,
+	0x3070: 0x0064d284, 0x3071: 0x0062e684, 0x3072: 0x0062e884, 0x3073: 0x0062ec84,
+	0x3074: 0x0062f084, 0x3075: 0x0062f284, 0x3076: 0x0062fa84, 0x3077: 0x0062fe84,
+	0x3078: 0x00630284, 0x3079: 0x00630484, 0x307a: 0x00630684, 0x307b: 0x00630884,
+	0x307c: 0x00630a84, 0x307d: 0x00631084, 0x307e: 0x00631884, 0x307f: 0x00632c84,
+	// Block 0xc2, offset 0x3080
+	0x3080: 0x00633a84, 0x3081: 0x00634484, 0x3082: 0x0064f684, 0x3083: 0x0064f884,
+	0x3084: 0x00635a84, 0x3085: 0x00635c84, 0x3086: 0x00635e84, 0x3087: 0x0063ee84,
+	0x3088: 0x0063f084, 0x3089: 0x0063f684, 0x308a: 0x00640884, 0x308b: 0x00640a84,
+	0x308c: 0x00640e84, 0x308d: 0x00642284, 0x308e: 0x00642884,
+	0x3090: 0x4027a820, 0x3091: 0x4027aa20, 0x3092: 0x029c0094, 0x3093: 0x029d1894,
+	0x3094: 0x029c1294, 0x3095: 0x02adb694, 0x3096: 0x029c1494, 0x3097: 0x029c5a94,
+	0x3098: 0x029c1694, 0x3099: 0x02ea6494, 0x309a: 0x029cb294, 0x309b: 0x029c3294,
+	0x309c: 0x029c0294, 0x309d: 0x02b25294, 0x309e: 0x02ae6094, 0x309f: 0x029d7494,
+	0x30a0: 0xe000237a, 0x30a1: 0xe0002383, 0x30a2: 0xe0002380, 0x30a3: 0xe000237d,
+	0x30a4: 0x40661c20, 0x30a5: 0xe000238c, 0x30a6: 0x40661620, 0x30a7: 0xe0002389,
+	0x30a8: 0xe000239e, 0x30a9: 0xe0002386, 0x30aa: 0xe0002395, 0x30ab: 0xe000239b,
+	0x30ac: 0x40663420, 0x30ad: 0x4065f220, 0x30ae: 0xe000238f, 0x30af: 0xe0002392,
+	0x30b0: 0x40663020, 0x30b1: 0x40663220, 0x30b2: 0x40662c20, 0x30b3: 0xe0002398,
+	0x30b4: 0x0065dc99, 0x30b5: 0x0065e699, 0x30b6: 0x0065ee99, 0x30b7: 0x0065f499,
+	0x30b8: 0x40660c20, 0x30b9: 0x40660e20, 0x30ba: 0x40661020,
+	// Block 0xc3, offset 0x30c0
+	0x30c0: 0x40275220, 0x30c1: 0x40275420, 0x30c2: 0x40275620, 0x30c3: 0x40275820,
+	0x30c4: 0x40275a20, 0x30c5: 0x40275c20, 0x30c6: 0x40275e20, 0x30c7: 0x40276020,
+	0x30c8: 0x40276220, 0x30c9: 0x40276420, 0x30ca: 0x40276620, 0x30cb: 0x40276820,
+	0x30cc: 0x40276a20, 0x30cd: 0x40276c20, 0x30ce: 0x40276e20, 0x30cf: 0x40277020,
+	0x30d0: 0x40277220, 0x30d1: 0x40277420, 0x30d2: 0x40277620, 0x30d3: 0x40277820,
+	0x30d4: 0x40277a20, 0x30d5: 0x40277c20, 0x30d6: 0x40277e20, 0x30d7: 0x40278020,
+	0x30d8: 0x40278220, 0x30d9: 0x40278420, 0x30da: 0x40278620, 0x30db: 0x40278820,
+	0x30dc: 0x40278a20, 0x30dd: 0x40278c20, 0x30de: 0x40278e20, 0x30df: 0x40279020,
+	0x30e0: 0x40279220, 0x30e1: 0x40279420, 0x30e2: 0x40279620, 0x30e3: 0x40279820,
+	0x30f0: 0x0065868f, 0x30f1: 0x00658e8f, 0x30f2: 0x0065908f, 0x30f3: 0x00659e8f,
+	0x30f4: 0x0065a48f, 0x30f5: 0x0065aa8f, 0x30f6: 0x0065ac8f, 0x30f7: 0x0065ae8f,
+	0x30f8: 0x0065b08f, 0x30f9: 0x0065b28f, 0x30fa: 0x0065b88f, 0x30fb: 0x0065c68f,
+	0x30fc: 0x0065c88f, 0x30fd: 0x0065ca8f, 0x30fe: 0x0065cc8f, 0x30ff: 0x0065ce8f,
+	// Block 0xc4, offset 0x3100
+	0x3100: 0xf0000404, 0x3101: 0xf0000404, 0x3102: 0xf0000404, 0x3103: 0xf0000404,
+	0x3104: 0xf0000404, 0x3105: 0xf0000404, 0x3106: 0xf0000404, 0x3107: 0xf0000404,
+	0x3108: 0xf0000404, 0x3109: 0xf0000404, 0x310a: 0xf0000404, 0x310b: 0xf0000404,
+	0x310c: 0xf0000404, 0x310d: 0xf0000404, 0x310e: 0xe000004c, 0x310f: 0xe0000051,
+	0x3110: 0xe0000056, 0x3111: 0xe000005b, 0x3112: 0xe0000060, 0x3113: 0xe0000065,
+	0x3114: 0xe000006a, 0x3115: 0xe000006f, 0x3116: 0xe0000083, 0x3117: 0xe000008d,
+	0x3118: 0xe0000092, 0x3119: 0xe0000097, 0x311a: 0xe000009c, 0x311b: 0xe00000a1,
+	0x311c: 0xe0000088, 0x311d: 0xe0000074, 0x311e: 0xe000007c,
+	0x3120: 0xf0000404, 0x3121: 0xf0000404, 0x3122: 0xf0000404, 0x3123: 0xf0000404,
+	0x3124: 0xf0000404, 0x3125: 0xf0000404, 0x3126: 0xf0000404, 0x3127: 0xf0000404,
+	0x3128: 0xf0000404, 0x3129: 0xf0000404, 0x312a: 0xf0000404, 0x312b: 0xf0000404,
+	0x312c: 0xf0000404, 0x312d: 0xf0000404, 0x312e: 0xf0000404, 0x312f: 0xf0000404,
+	0x3130: 0xf0000404, 0x3131: 0xf0000404, 0x3132: 0xf0000404, 0x3133: 0xf0000404,
+	0x3134: 0xf0000404, 0x3135: 0xf0000404, 0x3136: 0xf0000404, 0x3137: 0xf0000404,
+	0x3138: 0xf0000404, 0x3139: 0xf0000404, 0x313a: 0xf0000404, 0x313b: 0xf0000404,
+	0x313c: 0xf0000404, 0x313d: 0xf0000404, 0x313e: 0xf0000404, 0x313f: 0xf0000404,
+	// Block 0xc5, offset 0x3140
+	0x3140: 0xf0000404, 0x3141: 0xf0000404, 0x3142: 0xf0000404, 0x3143: 0xf0000404,
+	0x3144: 0x02aa9e86, 0x3145: 0x02bcf886, 0x3146: 0x02cb0e86, 0x3147: 0x02f71e86,
+	0x3148: 0xe00002e3, 0x3149: 0xe00003d8, 0x314a: 0xe00004b3, 0x314b: 0xe000057d,
+	0x314c: 0xe0000648, 0x314d: 0xe00006f0, 0x314e: 0xe000079c, 0x314f: 0xe0000841,
+	0x3150: 0xe0000ec0, 0x3151: 0xf0000606, 0x3152: 0xf0000606, 0x3153: 0xf0000606,
+	0x3154: 0xf0000606, 0x3155: 0xf0000606, 0x3156: 0xf0000606, 0x3157: 0xf0000606,
+	0x3158: 0xf0000606, 0x3159: 0xf0000606, 0x315a: 0xf0000606, 0x315b: 0xf0000606,
+	0x315c: 0xf0000606, 0x315d: 0xf0000606, 0x315e: 0xf0000606, 0x315f: 0xf0000606,
+	0x3160: 0x0062ac86, 0x3161: 0x0062b086, 0x3162: 0x0062b286, 0x3163: 0x0062b686,
+	0x3164: 0x0062b886, 0x3165: 0x0062ba86, 0x3166: 0x0062be86, 0x3167: 0x0062c286,
+	0x3168: 0x0062c486, 0x3169: 0x0062c886, 0x316a: 0x0062ca86, 0x316b: 0x0062cc86,
+	0x316c: 0x0062ce86, 0x316d: 0x0062d086, 0x316e: 0xf0000606, 0x316f: 0xf0000606,
+	0x3170: 0xf0000606, 0x3171: 0xf0000606, 0x3172: 0xf0000606, 0x3173: 0xf0000606,
+	0x3174: 0xf0000606, 0x3175: 0xf0000606, 0x3176: 0xf0000606, 0x3177: 0xf0000606,
+	0x3178: 0xf0000606, 0x3179: 0xf0000606, 0x317a: 0xf0000606, 0x317b: 0xf0000606,
+	0x317c: 0xe0002127, 0x317d: 0xe0002122, 0x317e: 0xf0000606, 0x317f: 0x4027ac20,
+	// Block 0xc6, offset 0x3180
+	0x3180: 0x029c0086, 0x3181: 0x029d1886, 0x3182: 0x029c1286, 0x3183: 0x02adb686,
+	0x3184: 0x029d2886, 0x3185: 0x02a2da86, 0x3186: 0x029c0686, 0x3187: 0x02a2d686,
+	0x3188: 0x029cba86, 0x3189: 0x02a68286, 0x318a: 0x02ce1086, 0x318b: 0x02e0d686,
+	0x318c: 0x02d86886, 0x318d: 0x02ce5086, 0x318e: 0x0323a286, 0x318f: 0x02ae3e86,
+	0x3190: 0x02cbca86, 0x3191: 0x02d05486, 0x3192: 0x02ce1286, 0x3193: 0x02f27c86,
+	0x3194: 0x02a81a86, 0x3195: 0x02e4f286, 0x3196: 0x03194286, 0x3197: 0x02f2ba86,
+	0x3198: 0x02a56886, 0x3199: 0x02f3b086, 0x319a: 0x02ea6e86, 0x319b: 0x02b2e686,
+	0x319c: 0x0320d286, 0x319d: 0x02a25486, 0x319e: 0x02a6e086, 0x319f: 0x02d9d086,
+	0x31a0: 0x03300a86, 0x31a1: 0x029e2286, 0x31a2: 0x02a33286, 0x31a3: 0x02d6c686,
+	0x31a4: 0x029c1486, 0x31a5: 0x029c5a86, 0x31a6: 0x029c1686, 0x31a7: 0x02bbcc86,
+	0x31a8: 0x02a7e686, 0x31a9: 0x02a67686, 0x31aa: 0x02b72e86, 0x31ab: 0x02b6cc86,
+	0x31ac: 0x02edc686, 0x31ad: 0x029e0286, 0x31ae: 0x03198e86, 0x31af: 0x02a6a886,
+	0x31b0: 0x02b23886, 0x31b1: 0xf0000606, 0x31b2: 0xf0000606, 0x31b3: 0xf0000606,
+	0x31b4: 0xf0000606, 0x31b5: 0xf0000606, 0x31b6: 0xf0000606, 0x31b7: 0xf0000606,
+	0x31b8: 0xf0000606, 0x31b9: 0xf0000606, 0x31ba: 0xf0000606, 0x31bb: 0xf0000606,
+	0x31bc: 0xf0000606, 0x31bd: 0xf0000606, 0x31be: 0xf0000606, 0x31bf: 0xf0000606,
+	// Block 0xc7, offset 0x31c0
+	0x31c0: 0xf0001f04, 0x31c1: 0xf0001f04, 0x31c2: 0xf0001f04, 0x31c3: 0xf0001f04,
+	0x31c4: 0xf0001f04, 0x31c5: 0xf0001f04, 0x31c6: 0xf0001f04, 0x31c7: 0xf0001f04,
+	0x31c8: 0xf0001f04, 0x31c9: 0xf0000404, 0x31ca: 0xf0000404, 0x31cb: 0xf0000404,
+	0x31cc: 0xf0001c1d, 0x31cd: 0xe0000b85, 0x31ce: 0xf0001d1c, 0x31cf: 0xe0000d14,
+	0x31d0: 0x00657693, 0x31d1: 0x00657893, 0x31d2: 0x00657a93, 0x31d3: 0x00657e93,
+	0x31d4: 0x00658093, 0x31d5: 0x00658293, 0x31d6: 0x00658493, 0x31d7: 0x00658693,
+	0x31d8: 0x00658893, 0x31d9: 0x00658a93, 0x31da: 0x00658c93, 0x31db: 0x00658e93,
+	0x31dc: 0x00659093, 0x31dd: 0x00659293, 0x31de: 0x00659493, 0x31df: 0x00659693,
+	0x31e0: 0x00659893, 0x31e1: 0x00659a93, 0x31e2: 0x00659c93, 0x31e3: 0x00659e93,
+	0x31e4: 0x0065a093, 0x31e5: 0x0065a293, 0x31e6: 0x0065a493, 0x31e7: 0x0065a693,
+	0x31e8: 0x0065a893, 0x31e9: 0x0065aa93, 0x31ea: 0x0065ac93, 0x31eb: 0x0065ae93,
+	0x31ec: 0x0065b093, 0x31ed: 0x0065b293, 0x31ee: 0x0065b493, 0x31ef: 0x0065b693,
+	0x31f0: 0x0065b893, 0x31f1: 0x0065ba93, 0x31f2: 0x0065bc93, 0x31f3: 0x0065be93,
+	0x31f4: 0x0065c093, 0x31f5: 0x0065c493, 0x31f6: 0x0065c693, 0x31f7: 0x0065c893,
+	0x31f8: 0x0065ca93, 0x31f9: 0x0065cc93, 0x31fa: 0x0065ce93, 0x31fb: 0x0065d093,
+	0x31fc: 0x0065d293, 0x31fd: 0x0065d493, 0x31fe: 0x0065d693,
+	// Block 0xc8, offset 0x3200
+	0x3200: 0xe0002131, 0x3201: 0xe0002137, 0x3202: 0xe000213c, 0x3203: 0xe000212d,
+	0x3204: 0xe0002142, 0x3205: 0xe0002148, 0x3206: 0xe0002152, 0x3207: 0xe000215b,
+	0x3208: 0xe0002156, 0x3209: 0xe0002166, 0x320a: 0xe0002162, 0x320b: 0xe0002170,
+	0x320c: 0xe0002174, 0x320d: 0xe0002179, 0x320e: 0xe000217e, 0x320f: 0xe0002183,
+	0x3210: 0xe000218e, 0x3211: 0xe0002193, 0x3212: 0xe0002198, 0x3213: 0xe000219d,
+	0x3214: 0xf0001c1c, 0x3215: 0xe00021a4, 0x3216: 0xe00021ab, 0x3217: 0xe00021b2,
+	0x3218: 0xe00021be, 0x3219: 0xe00021c3, 0x321a: 0xe00021ca, 0x321b: 0xe00021d1,
+	0x321c: 0xe00021dc, 0x321d: 0xe00021eb, 0x321e: 0xe00021e6, 0x321f: 0xe00021f5,
+	0x3220: 0xe00021fa, 0x3221: 0xe0002209, 0x3222: 0xe000221b, 0x3223: 0xe000221f,
+	0x3224: 0xe000222f, 0x3225: 0xe0002246, 0x3226: 0xe0002250, 0x3227: 0xf0001c1c,
+	0x3228: 0xf0001c1c, 0x3229: 0xe0002254, 0x322a: 0xe0002276, 0x322b: 0xe0002264,
+	0x322c: 0xe000226b, 0x322d: 0xe0002270, 0x322e: 0xe0002286, 0x322f: 0xe000228d,
+	0x3230: 0xe0002292, 0x3231: 0xe0002296, 0x3232: 0xe00022a6, 0x3233: 0xe00022ad,
+	0x3234: 0xe00022b2, 0x3235: 0xe00022b9, 0x3236: 0xe00022d4, 0x3237: 0xe00022da,
+	0x3238: 0xe00022de, 0x3239: 0xe00022e3, 0x323a: 0xe00022e7, 0x323b: 0xe00022c9,
+	0x323c: 0xe00022cf, 0x323d: 0xe0002300, 0x323e: 0xe0002306, 0x323f: 0xf0001c1c,
+	// Block 0xc9, offset 0x3240
+	0x3240: 0xe000230b, 0x3241: 0xe00022f8, 0x3242: 0xe00022fc, 0x3243: 0xe0002311,
+	0x3244: 0xe0002316, 0x3245: 0xe000231d, 0x3246: 0xe0002321, 0x3247: 0xe0002325,
+	0x3248: 0xe000232b, 0x3249: 0xf0001c1c, 0x324a: 0xe0002330, 0x324b: 0xe000233c,
+	0x324c: 0xe0002340, 0x324d: 0xe0002337, 0x324e: 0xe0002346, 0x324f: 0xe000234b,
+	0x3250: 0xe000234f, 0x3251: 0xe0002353, 0x3252: 0xf0001c1c, 0x3253: 0xe000235e,
+	0x3254: 0xe0002358, 0x3255: 0xf0001c1c, 0x3256: 0xe0002363, 0x3257: 0xe000236d,
+	0x3258: 0xf0001f04, 0x3259: 0xf0001f04, 0x325a: 0xf0001f04, 0x325b: 0xf0001f04,
+	0x325c: 0xf0001f04, 0x325d: 0xf0001f04, 0x325e: 0xf0001f04, 0x325f: 0xf0001f04,
+	0x3260: 0xf0001f04, 0x3261: 0xf0001f04, 0x3262: 0xf0000404, 0x3263: 0xf0000404,
+	0x3264: 0xf0000404, 0x3265: 0xf0000404, 0x3266: 0xf0000404, 0x3267: 0xf0000404,
+	0x3268: 0xf0000404, 0x3269: 0xf0000404, 0x326a: 0xf0000404, 0x326b: 0xf0000404,
+	0x326c: 0xf0000404, 0x326d: 0xf0000404, 0x326e: 0xf0000404, 0x326f: 0xf0000404,
+	0x3270: 0xf0000404, 0x3271: 0xe0000c1e, 0x3272: 0xf0001c1c, 0x3273: 0xf0001d1d,
+	0x3274: 0xe0000a31, 0x3275: 0xf0001d1c, 0x3276: 0xf0001c1c, 0x3277: 0xf0001c1c,
+	0x3278: 0xe0000ac2, 0x3279: 0xe0000ac6, 0x327a: 0xf0001d1d, 0x327b: 0xf0001c1c,
+	0x327c: 0xf0001c1c, 0x327d: 0xf0001c1c, 0x327e: 0xf0001c1c, 0x327f: 0xe0002431,
+	// Block 0xca, offset 0x3280
+	0x3280: 0xf0001d1c, 0x3281: 0xf0001d1c, 0x3282: 0xf0001d1c, 0x3283: 0xf0001d1c,
+	0x3284: 0xf0001d1c, 0x3285: 0xf0001d1d, 0x3286: 0xf0001d1d, 0x3287: 0xf0001d1d,
+	0x3288: 0xe0000a6b, 0x3289: 0xe0000cb4, 0x328a: 0xf0001d1c, 0x328b: 0xf0001d1c,
+	0x328c: 0xf0001d1c, 0x328d: 0xf0001c1c, 0x328e: 0xf0001c1c, 0x328f: 0xf0001c1c,
+	0x3290: 0xf0001c1d, 0x3291: 0xe0000cb9, 0x3292: 0xe0000d36, 0x3293: 0xe0000be3,
+	0x3294: 0xe0000fc5, 0x3295: 0xf0001c1c, 0x3296: 0xf0001c1c, 0x3297: 0xf0001c1c,
+	0x3298: 0xf0001c1c, 0x3299: 0xf0001c1c, 0x329a: 0xf0001c1c, 0x329b: 0xf0001c1c,
+	0x329c: 0xf0001c1c, 0x329d: 0xf0001c1c, 0x329e: 0xf0001c1c, 0x329f: 0xe0000d3e,
+	0x32a0: 0xe0000a72, 0x32a1: 0xf0001c1c, 0x32a2: 0xe0000cbd, 0x32a3: 0xe0000d42,
+	0x32a4: 0xe0000a76, 0x32a5: 0xf0001c1c, 0x32a6: 0xe0000cc1, 0x32a7: 0xe0000d2d,
+	0x32a8: 0xe0000d31, 0x32a9: 0xf0001c1d, 0x32aa: 0xe0000cc5, 0x32ab: 0xe0000d4a,
+	0x32ac: 0xe0000be7, 0x32ad: 0xe0000f0b, 0x32ae: 0xe0000f0f, 0x32af: 0xe0000f15,
+	0x32b0: 0xf0001c1c, 0x32b1: 0xf0001c1c, 0x32b2: 0xf0001c1c, 0x32b3: 0xf0001c1c,
+	0x32b4: 0xf0001d1c, 0x32b5: 0xf0001d1c, 0x32b6: 0xf0001d1c, 0x32b7: 0xf0001d1c,
+	0x32b8: 0xf0001d1c, 0x32b9: 0xf0001d1d, 0x32ba: 0xf0001d1c, 0x32bb: 0xf0001d1c,
+	0x32bc: 0xf0001d1c, 0x32bd: 0xf0001d1c, 0x32be: 0xf0001d1c, 0x32bf: 0xf0001d1d,
+	// Block 0xcb, offset 0x32c0
+	0x32c0: 0xf0001d1c, 0x32c1: 0xf0001d1d, 0x32c2: 0xe00009b7, 0x32c3: 0xf0001c1d,
+	0x32c4: 0xf0001c1c, 0x32c5: 0xf0001c1c, 0x32c6: 0xe0000a66, 0x32c7: 0xe0000a7a,
+	0x32c8: 0xf0001d1c, 0x32c9: 0xf0001c1d, 0x32ca: 0xf0001c1c, 0x32cb: 0xf0001d1d,
+	0x32cc: 0xf0001c1c, 0x32cd: 0xf0001d1d, 0x32ce: 0xf0001d1d, 0x32cf: 0xf0001c1c,
+	0x32d0: 0xf0001c1c, 0x32d1: 0xf0001c1c, 0x32d2: 0xe0000d0d, 0x32d3: 0xf0001c1c,
+	0x32d4: 0xf0001c1c, 0x32d5: 0xe0000d3a, 0x32d6: 0xe0000d46, 0x32d7: 0xf0001d1d,
+	0x32d8: 0xe0000eb0, 0x32d9: 0xe0000eb8, 0x32da: 0xf0001d1d, 0x32db: 0xf0001c1c,
+	0x32dc: 0xf0001c1d, 0x32dd: 0xf0001c1d, 0x32de: 0xe00010b2, 0x32df: 0xe00009c8,
+	0x32e0: 0xf0001f04, 0x32e1: 0xf0001f04, 0x32e2: 0xf0001f04, 0x32e3: 0xf0001f04,
+	0x32e4: 0xf0001f04, 0x32e5: 0xf0001f04, 0x32e6: 0xf0001f04, 0x32e7: 0xf0001f04,
+	0x32e8: 0xf0001f04, 0x32e9: 0xf0000404, 0x32ea: 0xf0000404, 0x32eb: 0xf0000404,
+	0x32ec: 0xf0000404, 0x32ed: 0xf0000404, 0x32ee: 0xf0000404, 0x32ef: 0xf0000404,
+	0x32f0: 0xf0000404, 0x32f1: 0xf0000404, 0x32f2: 0xf0000404, 0x32f3: 0xf0000404,
+	0x32f4: 0xf0000404, 0x32f5: 0xf0000404, 0x32f6: 0xf0000404, 0x32f7: 0xf0000404,
+	0x32f8: 0xf0000404, 0x32f9: 0xf0000404, 0x32fa: 0xf0000404, 0x32fb: 0xf0000404,
+	0x32fc: 0xf0000404, 0x32fd: 0xf0000404, 0x32fe: 0xf0000404, 0x32ff: 0xe0000bdf,
+	// Block 0xcc, offset 0x3300
+	0x3300: 0x40196220, 0x3301: 0x40196420, 0x3302: 0x40196620, 0x3303: 0x40196820,
+	0x3304: 0x40196a20, 0x3305: 0x40196c20, 0x3306: 0x40196e20, 0x3307: 0x40197020,
+	0x3308: 0x40197220, 0x3309: 0x40197420, 0x330a: 0x40197620, 0x330b: 0x40197820,
+	0x330c: 0x40197a20, 0x330d: 0x40197c20, 0x330e: 0x40197e20, 0x330f: 0x40198020,
+	0x3310: 0x40198220, 0x3311: 0x40198420, 0x3312: 0x40198620, 0x3313: 0x40198820,
+	0x3314: 0x40198a20, 0x3315: 0x40198c20, 0x3316: 0x40198e20, 0x3317: 0x40199020,
+	0x3318: 0x40199220, 0x3319: 0x40199420, 0x331a: 0x40199620, 0x331b: 0x40199820,
+	0x331c: 0x40199a20, 0x331d: 0x40199c20, 0x331e: 0x40199e20, 0x331f: 0x4019a020,
+	0x3320: 0x4019a220, 0x3321: 0x4019a420, 0x3322: 0x4019a620, 0x3323: 0x4019a820,
+	0x3324: 0x4019aa20, 0x3325: 0x4019ac20, 0x3326: 0x4019ae20, 0x3327: 0x4019b020,
+	0x3328: 0x4019b220, 0x3329: 0x4019b420, 0x332a: 0x4019b620, 0x332b: 0x4019b820,
+	0x332c: 0x4019ba20, 0x332d: 0x4019bc20, 0x332e: 0x4019be20, 0x332f: 0x4019c020,
+	0x3330: 0x4019c220, 0x3331: 0x4019c420, 0x3332: 0x4019c620, 0x3333: 0x4019c820,
+	0x3334: 0x4019ca20, 0x3335: 0x4019cc20, 0x3336: 0x4019ce20, 0x3337: 0x4019d020,
+	0x3338: 0x4019d220, 0x3339: 0x4019d420, 0x333a: 0x4019d620, 0x333b: 0x4019d820,
+	0x333c: 0x4019da20, 0x333d: 0x4019dc20, 0x333e: 0x4019de20, 0x333f: 0x4019e020,
+	// Block 0xcd, offset 0x3340
+	0x3340: 0x40664020, 0x3341: 0x40664220, 0x3342: 0x40664420, 0x3343: 0x40664620,
+	0x3344: 0x40664820, 0x3345: 0x40664a20, 0x3346: 0x40664c20, 0x3347: 0x40664e20,
+	0x3348: 0x40665020, 0x3349: 0x40665220, 0x334a: 0x40665420, 0x334b: 0x40665620,
+	0x334c: 0x40665820, 0x334d: 0x40665a20, 0x334e: 0x40665c20, 0x334f: 0x40665e20,
+	0x3350: 0x40666020, 0x3351: 0x40666220, 0x3352: 0x40666420, 0x3353: 0x40666620,
+	0x3354: 0x40666820, 0x3355: 0x40666a20, 0x3356: 0x40666c20, 0x3357: 0x40666e20,
+	0x3358: 0x40667020, 0x3359: 0x40667220, 0x335a: 0x40667420, 0x335b: 0x40667620,
+	0x335c: 0x40667820, 0x335d: 0x40667a20, 0x335e: 0x40667c20, 0x335f: 0x40667e20,
+	0x3360: 0x40668020, 0x3361: 0x40668220, 0x3362: 0x40668420, 0x3363: 0x40668620,
+	0x3364: 0x40668820, 0x3365: 0x40668a20, 0x3366: 0x40668c20, 0x3367: 0x40668e20,
+	0x3368: 0x40669020, 0x3369: 0x40669220, 0x336a: 0x40669420, 0x336b: 0x40669620,
+	0x336c: 0x40669820, 0x336d: 0x40669a20, 0x336e: 0x40669c20, 0x336f: 0x40669e20,
+	0x3370: 0x4066a020, 0x3371: 0x4066a220, 0x3372: 0x4066a420, 0x3373: 0x4066a620,
+	0x3374: 0x4066a820, 0x3375: 0x4066aa20, 0x3376: 0x4066ac20, 0x3377: 0x4066ae20,
+	0x3378: 0x4066b020, 0x3379: 0x4066b220, 0x337a: 0x4066b420, 0x337b: 0x4066b620,
+	0x337c: 0x4066b820, 0x337d: 0x4066ba20, 0x337e: 0x4066bc20, 0x337f: 0x4066be20,
+	// Block 0xce, offset 0x3380
+	0x3380: 0x4066c020, 0x3381: 0x4066c220, 0x3382: 0x4066c420, 0x3383: 0x4066c620,
+	0x3384: 0x4066c820, 0x3385: 0x4066ca20, 0x3386: 0x4066cc20, 0x3387: 0x4066ce20,
+	0x3388: 0x4066d020, 0x3389: 0x4066d220, 0x338a: 0x4066d420, 0x338b: 0x4066d620,
+	0x338c: 0x4066d820, 0x338d: 0x4066da20, 0x338e: 0x4066dc20, 0x338f: 0x4066de20,
+	0x3390: 0x4066e020, 0x3391: 0x4066e220, 0x3392: 0x4066e420, 0x3393: 0x4066e620,
+	0x3394: 0x4066e820, 0x3395: 0x4066ea20, 0x3396: 0x4066ec20, 0x3397: 0x4066ee20,
+	0x3398: 0x4066f020, 0x3399: 0x4066f220, 0x339a: 0x4066f420, 0x339b: 0x4066f620,
+	0x339c: 0x4066f820, 0x339d: 0x4066fa20, 0x339e: 0x4066fc20, 0x339f: 0x4066fe20,
+	0x33a0: 0x40670020, 0x33a1: 0x40670220, 0x33a2: 0x40670420, 0x33a3: 0x40670620,
+	0x33a4: 0x40670820, 0x33a5: 0x40670a20, 0x33a6: 0x40670c20, 0x33a7: 0x40670e20,
+	0x33a8: 0x40671020, 0x33a9: 0x40671220, 0x33aa: 0x40671420, 0x33ab: 0x40671620,
+	0x33ac: 0x40671820, 0x33ad: 0x40671a20, 0x33ae: 0x40671c20, 0x33af: 0x40671e20,
+	0x33b0: 0x40672020, 0x33b1: 0x40672220, 0x33b2: 0x40672420, 0x33b3: 0x40672620,
+	0x33b4: 0x40672820, 0x33b5: 0x40672a20, 0x33b6: 0x40672c20, 0x33b7: 0x40672e20,
+	0x33b8: 0x40673020, 0x33b9: 0x40673220, 0x33ba: 0x40673420, 0x33bb: 0x40673620,
+	0x33bc: 0x40673820, 0x33bd: 0x40673a20, 0x33be: 0x40673c20, 0x33bf: 0x40673e20,
+	// Block 0xcf, offset 0x33c0
+	0x33c0: 0x40674020, 0x33c1: 0x40674220, 0x33c2: 0x40674420, 0x33c3: 0x40674620,
+	0x33c4: 0x40674820, 0x33c5: 0x40674a20, 0x33c6: 0x40674c20, 0x33c7: 0x40674e20,
+	0x33c8: 0x40675020, 0x33c9: 0x40675220, 0x33ca: 0x40675420, 0x33cb: 0x40675620,
+	0x33cc: 0x40675820, 0x33cd: 0x40675a20, 0x33ce: 0x40675c20, 0x33cf: 0x40675e20,
+	0x33d0: 0x40676020, 0x33d1: 0x40676220, 0x33d2: 0x40676420, 0x33d3: 0x40676620,
+	0x33d4: 0x40676820, 0x33d5: 0x40676a20, 0x33d6: 0x40676c20, 0x33d7: 0x40676e20,
+	0x33d8: 0x40677020, 0x33d9: 0x40677220, 0x33da: 0x40677420, 0x33db: 0x40677620,
+	0x33dc: 0x40677820, 0x33dd: 0x40677a20, 0x33de: 0x40677c20, 0x33df: 0x40677e20,
+	0x33e0: 0x40678020, 0x33e1: 0x40678220, 0x33e2: 0x40678420, 0x33e3: 0x40678620,
+	0x33e4: 0x40678820, 0x33e5: 0x40678a20, 0x33e6: 0x40678c20, 0x33e7: 0x40678e20,
+	0x33e8: 0x40679020, 0x33e9: 0x40679220, 0x33ea: 0x40679420, 0x33eb: 0x40679620,
+	0x33ec: 0x40679820, 0x33ed: 0x40679a20, 0x33ee: 0x40679c20, 0x33ef: 0x40679e20,
+	0x33f0: 0x4067a020, 0x33f1: 0x4067a220, 0x33f2: 0x4067a420, 0x33f3: 0x4067a620,
+	0x33f4: 0x4067a820, 0x33f5: 0x4067aa20, 0x33f6: 0x4067ac20, 0x33f7: 0x4067ae20,
+	0x33f8: 0x4067b020, 0x33f9: 0x4067b220, 0x33fa: 0x4067b420, 0x33fb: 0x4067b620,
+	0x33fc: 0x4067b820, 0x33fd: 0x4067ba20, 0x33fe: 0x4067bc20, 0x33ff: 0x4067be20,
+	// Block 0xd0, offset 0x3400
+	0x3400: 0x4067c020, 0x3401: 0x4067c220, 0x3402: 0x4067c420, 0x3403: 0x4067c620,
+	0x3404: 0x4067c820, 0x3405: 0x4067ca20, 0x3406: 0x4067cc20, 0x3407: 0x4067ce20,
+	0x3408: 0x4067d020, 0x3409: 0x4067d220, 0x340a: 0x4067d420, 0x340b: 0x4067d620,
+	0x340c: 0x4067d820, 0x340d: 0x4067da20, 0x340e: 0x4067dc20, 0x340f: 0x4067de20,
+	0x3410: 0x4067e020, 0x3411: 0x4067e220, 0x3412: 0x4067e420, 0x3413: 0x4067e620,
+	0x3414: 0x4067e820, 0x3415: 0x4067ea20, 0x3416: 0x4067ec20, 0x3417: 0x4067ee20,
+	0x3418: 0x4067f020, 0x3419: 0x4067f220, 0x341a: 0x4067f420, 0x341b: 0x4067f620,
+	0x341c: 0x4067f820, 0x341d: 0x4067fa20, 0x341e: 0x4067fc20, 0x341f: 0x4067fe20,
+	0x3420: 0x40680020, 0x3421: 0x40680220, 0x3422: 0x40680420, 0x3423: 0x40680620,
+	0x3424: 0x40680820, 0x3425: 0x40680a20, 0x3426: 0x40680c20, 0x3427: 0x40680e20,
+	0x3428: 0x40681020, 0x3429: 0x40681220, 0x342a: 0x40681420, 0x342b: 0x40681620,
+	0x342c: 0x40681820, 0x342d: 0x40681a20, 0x342e: 0x40681c20, 0x342f: 0x40681e20,
+	0x3430: 0x40682020, 0x3431: 0x40682220, 0x3432: 0x40682420, 0x3433: 0x40682620,
+	0x3434: 0x40682820, 0x3435: 0x40682a20, 0x3436: 0x40682c20, 0x3437: 0x40682e20,
+	0x3438: 0x40683020, 0x3439: 0x40683220, 0x343a: 0x40683420, 0x343b: 0x40683620,
+	0x343c: 0x40683820, 0x343d: 0x40683a20, 0x343e: 0x40683c20, 0x343f: 0x40683e20,
+	// Block 0xd1, offset 0x3440
+	0x3440: 0x40684020, 0x3441: 0x40684220, 0x3442: 0x40684420, 0x3443: 0x40684620,
+	0x3444: 0x40684820, 0x3445: 0x40684a20, 0x3446: 0x40684c20, 0x3447: 0x40684e20,
+	0x3448: 0x40685020, 0x3449: 0x40685220, 0x344a: 0x40685420, 0x344b: 0x40685620,
+	0x344c: 0x40685820, 0x344d: 0x40685a20, 0x344e: 0x40685c20, 0x344f: 0x40685e20,
+	0x3450: 0x40686020, 0x3451: 0x40686220, 0x3452: 0x40686420, 0x3453: 0x40686620,
+	0x3454: 0x40686820, 0x3455: 0x40686a20, 0x3456: 0x40686c20, 0x3457: 0x40686e20,
+	0x3458: 0x40687020, 0x3459: 0x40687220, 0x345a: 0x40687420, 0x345b: 0x40687620,
+	0x345c: 0x40687820, 0x345d: 0x40687a20, 0x345e: 0x40687c20, 0x345f: 0x40687e20,
+	0x3460: 0x40688020, 0x3461: 0x40688220, 0x3462: 0x40688420, 0x3463: 0x40688620,
+	0x3464: 0x40688820, 0x3465: 0x40688a20, 0x3466: 0x40688c20, 0x3467: 0x40688e20,
+	0x3468: 0x40689020, 0x3469: 0x40689220, 0x346a: 0x40689420, 0x346b: 0x40689620,
+	0x346c: 0x40689820, 0x346d: 0x40689a20, 0x346e: 0x40689c20, 0x346f: 0x40689e20,
+	0x3470: 0x4068a020, 0x3471: 0x4068a220, 0x3472: 0x4068a420, 0x3473: 0x4068a620,
+	0x3474: 0x4068a820, 0x3475: 0x4068aa20, 0x3476: 0x4068ac20, 0x3477: 0x4068ae20,
+	0x3478: 0x4068b020, 0x3479: 0x4068b220, 0x347a: 0x4068b420, 0x347b: 0x4068b620,
+	0x347c: 0x4068b820, 0x347d: 0x4068ba20, 0x347e: 0x4068bc20, 0x347f: 0x4068be20,
+	// Block 0xd2, offset 0x3480
+	0x3480: 0x4068c020, 0x3481: 0x4068c220, 0x3482: 0x4068c420, 0x3483: 0x4068c620,
+	0x3484: 0x4068c820, 0x3485: 0x4068ca20, 0x3486: 0x4068cc20, 0x3487: 0x4068ce20,
+	0x3488: 0x4068d020, 0x3489: 0x4068d220, 0x348a: 0x4068d420, 0x348b: 0x4068d620,
+	0x348c: 0x4068d820, 0x348d: 0x4068da20, 0x348e: 0x4068dc20, 0x348f: 0x4068de20,
+	0x3490: 0x4068e020, 0x3491: 0x4068e220, 0x3492: 0x4068e420, 0x3493: 0x4068e620,
+	0x3494: 0x4068e820, 0x3495: 0x4068ea20, 0x3496: 0x4068ec20, 0x3497: 0x4068ee20,
+	0x3498: 0x4068f020, 0x3499: 0x4068f220, 0x349a: 0x4068f420, 0x349b: 0x4068f620,
+	0x349c: 0x4068f820, 0x349d: 0x4068fa20, 0x349e: 0x4068fc20, 0x349f: 0x4068fe20,
+	0x34a0: 0x40690020, 0x34a1: 0x40690220, 0x34a2: 0x40690420, 0x34a3: 0x40690620,
+	0x34a4: 0x40690820, 0x34a5: 0x40690a20, 0x34a6: 0x40690c20, 0x34a7: 0x40690e20,
+	0x34a8: 0x40691020, 0x34a9: 0x40691220, 0x34aa: 0x40691420, 0x34ab: 0x40691620,
+	0x34ac: 0x40691820, 0x34ad: 0x40691a20, 0x34ae: 0x40691c20, 0x34af: 0x40691e20,
+	0x34b0: 0x40692020, 0x34b1: 0x40692220, 0x34b2: 0x40692420, 0x34b3: 0x40692620,
+	0x34b4: 0x40692820, 0x34b5: 0x40692a20, 0x34b6: 0x40692c20, 0x34b7: 0x40692e20,
+	0x34b8: 0x40693020, 0x34b9: 0x40693220, 0x34ba: 0x40693420, 0x34bb: 0x40693620,
+	0x34bc: 0x40693820, 0x34bd: 0x40693a20, 0x34be: 0x40693c20, 0x34bf: 0x40693e20,
+	// Block 0xd3, offset 0x34c0
+	0x34c0: 0x40694020, 0x34c1: 0x40694220, 0x34c2: 0x40694420, 0x34c3: 0x40694620,
+	0x34c4: 0x40694820, 0x34c5: 0x40694a20, 0x34c6: 0x40694c20, 0x34c7: 0x40694e20,
+	0x34c8: 0x40695020, 0x34c9: 0x40695220, 0x34ca: 0x40695420, 0x34cb: 0x40695620,
+	0x34cc: 0x40695820, 0x34cd: 0x40695a20, 0x34ce: 0x40695c20, 0x34cf: 0x40695e20,
+	0x34d0: 0x40696020, 0x34d1: 0x40696220, 0x34d2: 0x40696420, 0x34d3: 0x40696620,
+	0x34d4: 0x40696820, 0x34d5: 0x40696a20, 0x34d6: 0x40696c20, 0x34d7: 0x40696e20,
+	0x34d8: 0x40697020, 0x34d9: 0x40697220, 0x34da: 0x40697420, 0x34db: 0x40697620,
+	0x34dc: 0x40697820, 0x34dd: 0x40697a20, 0x34de: 0x40697c20, 0x34df: 0x40697e20,
+	0x34e0: 0x40698020, 0x34e1: 0x40698220, 0x34e2: 0x40698420, 0x34e3: 0x40698620,
+	0x34e4: 0x40698820, 0x34e5: 0x40698a20, 0x34e6: 0x40698c20, 0x34e7: 0x40698e20,
+	0x34e8: 0x40699020, 0x34e9: 0x40699220, 0x34ea: 0x40699420, 0x34eb: 0x40699620,
+	0x34ec: 0x40699820, 0x34ed: 0x40699a20, 0x34ee: 0x40699c20, 0x34ef: 0x40699e20,
+	0x34f0: 0x4069a020, 0x34f1: 0x4069a220, 0x34f2: 0x4069a420, 0x34f3: 0x4069a620,
+	0x34f4: 0x4069a820, 0x34f5: 0x4069aa20, 0x34f6: 0x4069ac20, 0x34f7: 0x4069ae20,
+	0x34f8: 0x4069b020, 0x34f9: 0x4069b220, 0x34fa: 0x4069b420, 0x34fb: 0x4069b620,
+	0x34fc: 0x4069b820, 0x34fd: 0x4069ba20, 0x34fe: 0x4069bc20, 0x34ff: 0x4069be20,
+	// Block 0xd4, offset 0x3500
+	0x3500: 0x4069c020, 0x3501: 0x4069c220, 0x3502: 0x4069c420, 0x3503: 0x4069c620,
+	0x3504: 0x4069c820, 0x3505: 0x4069ca20, 0x3506: 0x4069cc20, 0x3507: 0x4069ce20,
+	0x3508: 0x4069d020, 0x3509: 0x4069d220, 0x350a: 0x4069d420, 0x350b: 0x4069d620,
+	0x350c: 0x4069d820, 0x350d: 0x4069da20, 0x350e: 0x4069dc20, 0x350f: 0x4069de20,
+	0x3510: 0x4069e020, 0x3511: 0x4069e220, 0x3512: 0x4069e420, 0x3513: 0x4069e620,
+	0x3514: 0x4069e820, 0x3515: 0x4069ea20, 0x3516: 0x4069ec20, 0x3517: 0x4069ee20,
+	0x3518: 0x4069f020, 0x3519: 0x4069f220, 0x351a: 0x4069f420, 0x351b: 0x4069f620,
+	0x351c: 0x4069f820, 0x351d: 0x4069fa20, 0x351e: 0x4069fc20, 0x351f: 0x4069fe20,
+	0x3520: 0x406a0020, 0x3521: 0x406a0220, 0x3522: 0x406a0420, 0x3523: 0x406a0620,
+	0x3524: 0x406a0820, 0x3525: 0x406a0a20, 0x3526: 0x406a0c20, 0x3527: 0x406a0e20,
+	0x3528: 0x406a1020, 0x3529: 0x406a1220, 0x352a: 0x406a1420, 0x352b: 0x406a1620,
+	0x352c: 0x406a1820, 0x352d: 0x406a1a20, 0x352e: 0x406a1c20, 0x352f: 0x406a1e20,
+	0x3530: 0x406a2020, 0x3531: 0x406a2220, 0x3532: 0x406a2420, 0x3533: 0x406a2620,
+	0x3534: 0x406a2820, 0x3535: 0x406a2a20, 0x3536: 0x406a2c20, 0x3537: 0x406a2e20,
+	0x3538: 0x406a3020, 0x3539: 0x406a3220, 0x353a: 0x406a3420, 0x353b: 0x406a3620,
+	0x353c: 0x406a3820, 0x353d: 0x406a3a20, 0x353e: 0x406a3c20, 0x353f: 0x406a3e20,
+	// Block 0xd5, offset 0x3540
+	0x3540: 0x406a4020, 0x3541: 0x406a4220, 0x3542: 0x406a4420, 0x3543: 0x406a4620,
+	0x3544: 0x406a4820, 0x3545: 0x406a4a20, 0x3546: 0x406a4c20, 0x3547: 0x406a4e20,
+	0x3548: 0x406a5020, 0x3549: 0x406a5220, 0x354a: 0x406a5420, 0x354b: 0x406a5620,
+	0x354c: 0x406a5820, 0x354d: 0x406a5a20, 0x354e: 0x406a5c20, 0x354f: 0x406a5e20,
+	0x3550: 0x406a6020, 0x3551: 0x406a6220, 0x3552: 0x406a6420, 0x3553: 0x406a6620,
+	0x3554: 0x406a6820, 0x3555: 0x406a6a20, 0x3556: 0x406a6c20, 0x3557: 0x406a6e20,
+	0x3558: 0x406a7020, 0x3559: 0x406a7220, 0x355a: 0x406a7420, 0x355b: 0x406a7620,
+	0x355c: 0x406a7820, 0x355d: 0x406a7a20, 0x355e: 0x406a7c20, 0x355f: 0x406a7e20,
+	0x3560: 0x406a8020, 0x3561: 0x406a8220, 0x3562: 0x406a8420, 0x3563: 0x406a8620,
+	0x3564: 0x406a8820, 0x3565: 0x406a8a20, 0x3566: 0x406a8c20, 0x3567: 0x406a8e20,
+	0x3568: 0x406a9020, 0x3569: 0x406a9220, 0x356a: 0x406a9420, 0x356b: 0x406a9620,
+	0x356c: 0x406a9820, 0x356d: 0x406a9a20, 0x356e: 0x406a9c20, 0x356f: 0x406a9e20,
+	0x3570: 0x406aa020, 0x3571: 0x406aa220, 0x3572: 0x406aa420, 0x3573: 0x406aa620,
+	0x3574: 0x406aa820, 0x3575: 0x406aaa20, 0x3576: 0x406aac20, 0x3577: 0x406aae20,
+	0x3578: 0x406ab020, 0x3579: 0x406ab220, 0x357a: 0x406ab420, 0x357b: 0x406ab620,
+	0x357c: 0x406ab820, 0x357d: 0x406aba20, 0x357e: 0x406abc20, 0x357f: 0x406abe20,
+	// Block 0xd6, offset 0x3580
+	0x3580: 0x406ac020, 0x3581: 0x406ac220, 0x3582: 0x406ac420, 0x3583: 0x406ac620,
+	0x3584: 0x406ac820, 0x3585: 0x406aca20, 0x3586: 0x406acc20, 0x3587: 0x406ace20,
+	0x3588: 0x406ad020, 0x3589: 0x406ad220, 0x358a: 0x406ad420, 0x358b: 0x406ad620,
+	0x358c: 0x406ad820, 0x358d: 0x406ada20, 0x358e: 0x406adc20, 0x358f: 0x406ade20,
+	0x3590: 0x406ae020, 0x3591: 0x406ae220, 0x3592: 0x406ae420, 0x3593: 0x406ae620,
+	0x3594: 0x406ae820, 0x3595: 0x406aea20, 0x3596: 0x406aec20, 0x3597: 0x406aee20,
+	0x3598: 0x406af020, 0x3599: 0x406af220, 0x359a: 0x406af420, 0x359b: 0x406af620,
+	0x359c: 0x406af820, 0x359d: 0x406afa20, 0x359e: 0x406afc20, 0x359f: 0x406afe20,
+	0x35a0: 0x406b0020, 0x35a1: 0x406b0220, 0x35a2: 0x406b0420, 0x35a3: 0x406b0620,
+	0x35a4: 0x406b0820, 0x35a5: 0x406b0a20, 0x35a6: 0x406b0c20, 0x35a7: 0x406b0e20,
+	0x35a8: 0x406b1020, 0x35a9: 0x406b1220, 0x35aa: 0x406b1420, 0x35ab: 0x406b1620,
+	0x35ac: 0x406b1820, 0x35ad: 0x406b1a20, 0x35ae: 0x406b1c20, 0x35af: 0x406b1e20,
+	0x35b0: 0x406b2020, 0x35b1: 0x406b2220, 0x35b2: 0x406b2420, 0x35b3: 0x406b2620,
+	0x35b4: 0x406b2820, 0x35b5: 0x406b2a20, 0x35b6: 0x406b2c20, 0x35b7: 0x406b2e20,
+	0x35b8: 0x406b3020, 0x35b9: 0x406b3220, 0x35ba: 0x406b3420, 0x35bb: 0x406b3620,
+	0x35bc: 0x406b3820, 0x35bd: 0x406b3a20, 0x35be: 0x406b3c20, 0x35bf: 0x406b3e20,
+	// Block 0xd7, offset 0x35c0
+	0x35c0: 0x406b4020, 0x35c1: 0x406b4220, 0x35c2: 0x406b4420, 0x35c3: 0x406b4620,
+	0x35c4: 0x406b4820, 0x35c5: 0x406b4a20, 0x35c6: 0x406b4c20, 0x35c7: 0x406b4e20,
+	0x35c8: 0x406b5020, 0x35c9: 0x406b5220, 0x35ca: 0x406b5420, 0x35cb: 0x406b5620,
+	0x35cc: 0x406b5820, 0x35cd: 0x406b5a20, 0x35ce: 0x406b5c20, 0x35cf: 0x406b5e20,
+	0x35d0: 0x406b6020, 0x35d1: 0x406b6220, 0x35d2: 0x406b6420, 0x35d3: 0x406b6620,
+	0x35d4: 0x406b6820, 0x35d5: 0x406b6a20, 0x35d6: 0x406b6c20, 0x35d7: 0x406b6e20,
+	0x35d8: 0x406b7020, 0x35d9: 0x406b7220, 0x35da: 0x406b7420, 0x35db: 0x406b7620,
+	0x35dc: 0x406b7820, 0x35dd: 0x406b7a20, 0x35de: 0x406b7c20, 0x35df: 0x406b7e20,
+	0x35e0: 0x406b8020, 0x35e1: 0x406b8220, 0x35e2: 0x406b8420, 0x35e3: 0x406b8620,
+	0x35e4: 0x406b8820, 0x35e5: 0x406b8a20, 0x35e6: 0x406b8c20, 0x35e7: 0x406b8e20,
+	0x35e8: 0x406b9020, 0x35e9: 0x406b9220, 0x35ea: 0x406b9420, 0x35eb: 0x406b9620,
+	0x35ec: 0x406b9820, 0x35ed: 0x406b9a20, 0x35ee: 0x406b9c20, 0x35ef: 0x406b9e20,
+	0x35f0: 0x406ba020, 0x35f1: 0x406ba220, 0x35f2: 0x406ba420, 0x35f3: 0x406ba620,
+	0x35f4: 0x406ba820, 0x35f5: 0x406baa20, 0x35f6: 0x406bac20, 0x35f7: 0x406bae20,
+	0x35f8: 0x406bb020, 0x35f9: 0x406bb220, 0x35fa: 0x406bb420, 0x35fb: 0x406bb620,
+	0x35fc: 0x406bb820, 0x35fd: 0x406bba20, 0x35fe: 0x406bbc20, 0x35ff: 0x406bbe20,
+	// Block 0xd8, offset 0x3600
+	0x3600: 0x406bc020, 0x3601: 0x406bc220, 0x3602: 0x406bc420, 0x3603: 0x406bc620,
+	0x3604: 0x406bc820, 0x3605: 0x406bca20, 0x3606: 0x406bcc20, 0x3607: 0x406bce20,
+	0x3608: 0x406bd020, 0x3609: 0x406bd220, 0x360a: 0x406bd420, 0x360b: 0x406bd620,
+	0x360c: 0x406bd820, 0x360d: 0x406bda20, 0x360e: 0x406bdc20, 0x360f: 0x406bde20,
+	0x3610: 0x406be020, 0x3611: 0x406be220, 0x3612: 0x406be420, 0x3613: 0x406be620,
+	0x3614: 0x406be820, 0x3615: 0x406bea20, 0x3616: 0x406bec20, 0x3617: 0x406bee20,
+	0x3618: 0x406bf020, 0x3619: 0x406bf220, 0x361a: 0x406bf420, 0x361b: 0x406bf620,
+	0x361c: 0x406bf820, 0x361d: 0x406bfa20, 0x361e: 0x406bfc20, 0x361f: 0x406bfe20,
+	0x3620: 0x406c0020, 0x3621: 0x406c0220, 0x3622: 0x406c0420, 0x3623: 0x406c0620,
+	0x3624: 0x406c0820, 0x3625: 0x406c0a20, 0x3626: 0x406c0c20, 0x3627: 0x406c0e20,
+	0x3628: 0x406c1020, 0x3629: 0x406c1220, 0x362a: 0x406c1420, 0x362b: 0x406c1620,
+	0x362c: 0x406c1820, 0x362d: 0x406c1a20, 0x362e: 0x406c1c20, 0x362f: 0x406c1e20,
+	0x3630: 0x406c2020, 0x3631: 0x406c2220, 0x3632: 0x406c2420, 0x3633: 0x406c2620,
+	0x3634: 0x406c2820, 0x3635: 0x406c2a20, 0x3636: 0x406c2c20, 0x3637: 0x406c2e20,
+	0x3638: 0x406c3020, 0x3639: 0x406c3220, 0x363a: 0x406c3420, 0x363b: 0x406c3620,
+	0x363c: 0x406c3820, 0x363d: 0x406c3a20, 0x363e: 0x406c3c20, 0x363f: 0x406c3e20,
+	// Block 0xd9, offset 0x3640
+	0x3640: 0x406c4020, 0x3641: 0x406c4220, 0x3642: 0x406c4420, 0x3643: 0x406c4620,
+	0x3644: 0x406c4820, 0x3645: 0x406c4a20, 0x3646: 0x406c4c20, 0x3647: 0x406c4e20,
+	0x3648: 0x406c5020, 0x3649: 0x406c5220, 0x364a: 0x406c5420, 0x364b: 0x406c5620,
+	0x364c: 0x406c5820, 0x364d: 0x406c5a20, 0x364e: 0x406c5c20, 0x364f: 0x406c5e20,
+	0x3650: 0x406c6020, 0x3651: 0x406c6220, 0x3652: 0x406c6420, 0x3653: 0x406c6620,
+	0x3654: 0x406c6820, 0x3655: 0x406c6a20, 0x3656: 0x406c6c20, 0x3657: 0x406c6e20,
+	0x3658: 0x406c7020, 0x3659: 0x406c7220, 0x365a: 0x406c7420, 0x365b: 0x406c7620,
+	0x365c: 0x406c7820, 0x365d: 0x406c7a20, 0x365e: 0x406c7c20, 0x365f: 0x406c7e20,
+	0x3660: 0x406c8020, 0x3661: 0x406c8220, 0x3662: 0x406c8420, 0x3663: 0x406c8620,
+	0x3664: 0x406c8820, 0x3665: 0x406c8a20, 0x3666: 0x406c8c20, 0x3667: 0x406c8e20,
+	0x3668: 0x406c9020, 0x3669: 0x406c9220, 0x366a: 0x406c9420, 0x366b: 0x406c9620,
+	0x366c: 0x406c9820, 0x366d: 0x406c9a20, 0x366e: 0x406c9c20, 0x366f: 0x406c9e20,
+	0x3670: 0x406ca020, 0x3671: 0x406ca220, 0x3672: 0x406ca420, 0x3673: 0x406ca620,
+	0x3674: 0x406ca820, 0x3675: 0x406caa20, 0x3676: 0x406cac20, 0x3677: 0x406cae20,
+	0x3678: 0x406cb020, 0x3679: 0x406cb220, 0x367a: 0x406cb420, 0x367b: 0x406cb620,
+	0x367c: 0x406cb820, 0x367d: 0x406cba20, 0x367e: 0x406cbc20, 0x367f: 0x406cbe20,
+	// Block 0xda, offset 0x3680
+	0x3680: 0x406cc020, 0x3681: 0x406cc220, 0x3682: 0x406cc420, 0x3683: 0x406cc620,
+	0x3684: 0x406cc820, 0x3685: 0x406cca20, 0x3686: 0x406ccc20, 0x3687: 0x406cce20,
+	0x3688: 0x406cd020, 0x3689: 0x406cd220, 0x368a: 0x406cd420, 0x368b: 0x406cd620,
+	0x368c: 0x406cd820, 0x368d: 0x406cda20, 0x368e: 0x406cdc20, 0x368f: 0x406cde20,
+	0x3690: 0x406ce020, 0x3691: 0x406ce220, 0x3692: 0x406ce420, 0x3693: 0x406ce620,
+	0x3694: 0x406ce820, 0x3695: 0x406cea20, 0x3696: 0x406cec20, 0x3697: 0x406cee20,
+	0x3698: 0x406cf020, 0x3699: 0x406cf220, 0x369a: 0x406cf420, 0x369b: 0x406cf620,
+	0x369c: 0x406cf820, 0x369d: 0x406cfa20, 0x369e: 0x406cfc20, 0x369f: 0x406cfe20,
+	0x36a0: 0x406d0020, 0x36a1: 0x406d0220, 0x36a2: 0x406d0420, 0x36a3: 0x406d0620,
+	0x36a4: 0x406d0820, 0x36a5: 0x406d0a20, 0x36a6: 0x406d0c20, 0x36a7: 0x406d0e20,
+	0x36a8: 0x406d1020, 0x36a9: 0x406d1220, 0x36aa: 0x406d1420, 0x36ab: 0x406d1620,
+	0x36ac: 0x406d1820, 0x36ad: 0x406d1a20, 0x36ae: 0x406d1c20, 0x36af: 0x406d1e20,
+	0x36b0: 0x406d2020, 0x36b1: 0x406d2220, 0x36b2: 0x406d2420, 0x36b3: 0x406d2620,
+	0x36b4: 0x406d2820, 0x36b5: 0x406d2a20, 0x36b6: 0x406d2c20, 0x36b7: 0x406d2e20,
+	0x36b8: 0x406d3020, 0x36b9: 0x406d3220, 0x36ba: 0x406d3420, 0x36bb: 0x406d3620,
+	0x36bc: 0x406d3820, 0x36bd: 0x406d3a20, 0x36be: 0x406d3c20, 0x36bf: 0x406d3e20,
+	// Block 0xdb, offset 0x36c0
+	0x36c0: 0x406d4020, 0x36c1: 0x406d4220, 0x36c2: 0x406d4420, 0x36c3: 0x406d4620,
+	0x36c4: 0x406d4820, 0x36c5: 0x406d4a20, 0x36c6: 0x406d4c20, 0x36c7: 0x406d4e20,
+	0x36c8: 0x406d5020, 0x36c9: 0x406d5220, 0x36ca: 0x406d5420, 0x36cb: 0x406d5620,
+	0x36cc: 0x406d5820, 0x36cd: 0x406d5a20, 0x36ce: 0x406d5c20, 0x36cf: 0x406d5e20,
+	0x36d0: 0x406d6020, 0x36d1: 0x406d6220, 0x36d2: 0x406d6420, 0x36d3: 0x406d6620,
+	0x36d4: 0x406d6820, 0x36d5: 0x406d6a20, 0x36d6: 0x406d6c20, 0x36d7: 0x406d6e20,
+	0x36d8: 0x406d7020, 0x36d9: 0x406d7220, 0x36da: 0x406d7420, 0x36db: 0x406d7620,
+	0x36dc: 0x406d7820, 0x36dd: 0x406d7a20, 0x36de: 0x406d7c20, 0x36df: 0x406d7e20,
+	0x36e0: 0x406d8020, 0x36e1: 0x406d8220, 0x36e2: 0x406d8420, 0x36e3: 0x406d8620,
+	0x36e4: 0x406d8820, 0x36e5: 0x406d8a20, 0x36e6: 0x406d8c20, 0x36e7: 0x406d8e20,
+	0x36e8: 0x406d9020, 0x36e9: 0x406d9220, 0x36ea: 0x406d9420, 0x36eb: 0x406d9620,
+	0x36ec: 0x406d9820, 0x36ed: 0x406d9a20, 0x36ee: 0x406d9c20, 0x36ef: 0x406d9e20,
+	0x36f0: 0x406da020, 0x36f1: 0x406da220, 0x36f2: 0x406da420, 0x36f3: 0x406da620,
+	0x36f4: 0x406da820, 0x36f5: 0x406daa20, 0x36f6: 0x406dac20, 0x36f7: 0x406dae20,
+	0x36f8: 0x406db020, 0x36f9: 0x406db220, 0x36fa: 0x406db420, 0x36fb: 0x406db620,
+	0x36fc: 0x406db820, 0x36fd: 0x406dba20, 0x36fe: 0x406dbc20, 0x36ff: 0x406dbe20,
+	// Block 0xdc, offset 0x3700
+	0x3700: 0x406dc020, 0x3701: 0x406dc220, 0x3702: 0x406dc420, 0x3703: 0x406dc620,
+	0x3704: 0x406dc820, 0x3705: 0x406dca20, 0x3706: 0x406dcc20, 0x3707: 0x406dce20,
+	0x3708: 0x406dd020, 0x3709: 0x406dd220, 0x370a: 0x406dd420, 0x370b: 0x406dd620,
+	0x370c: 0x406dd820, 0x370d: 0x406dda20, 0x370e: 0x406ddc20, 0x370f: 0x406dde20,
+	0x3710: 0x406de020, 0x3711: 0x406de220, 0x3712: 0x406de420, 0x3713: 0x406de620,
+	0x3714: 0x406de820, 0x3715: 0x406dea20, 0x3716: 0x406dec20, 0x3717: 0x406dee20,
+	0x3718: 0x406df020, 0x3719: 0x406df220, 0x371a: 0x406df420, 0x371b: 0x406df620,
+	0x371c: 0x406df820, 0x371d: 0x406dfa20, 0x371e: 0x406dfc20, 0x371f: 0x406dfe20,
+	0x3720: 0x406e0020, 0x3721: 0x406e0220, 0x3722: 0x406e0420, 0x3723: 0x406e0620,
+	0x3724: 0x406e0820, 0x3725: 0x406e0a20, 0x3726: 0x406e0c20, 0x3727: 0x406e0e20,
+	0x3728: 0x406e1020, 0x3729: 0x406e1220, 0x372a: 0x406e1420, 0x372b: 0x406e1620,
+	0x372c: 0x406e1820, 0x372d: 0x406e1a20, 0x372e: 0x406e1c20, 0x372f: 0x406e1e20,
+	0x3730: 0x406e2020, 0x3731: 0x406e2220, 0x3732: 0x406e2420, 0x3733: 0x406e2620,
+	0x3734: 0x406e2820, 0x3735: 0x406e2a20, 0x3736: 0x406e2c20, 0x3737: 0x406e2e20,
+	0x3738: 0x406e3020, 0x3739: 0x406e3220, 0x373a: 0x406e3420, 0x373b: 0x406e3620,
+	0x373c: 0x406e3820, 0x373d: 0x406e3a20, 0x373e: 0x406e3c20, 0x373f: 0x406e3e20,
+	// Block 0xdd, offset 0x3740
+	0x3740: 0x406e4020, 0x3741: 0x406e4220, 0x3742: 0x406e4420, 0x3743: 0x406e4620,
+	0x3744: 0x406e4820, 0x3745: 0x406e4a20, 0x3746: 0x406e4c20, 0x3747: 0x406e4e20,
+	0x3748: 0x406e5020, 0x3749: 0x406e5220, 0x374a: 0x406e5420, 0x374b: 0x406e5620,
+	0x374c: 0x406e5820, 0x374d: 0x406e5a20, 0x374e: 0x406e5c20, 0x374f: 0x406e5e20,
+	0x3750: 0x406e6020, 0x3751: 0x406e6220, 0x3752: 0x406e6420, 0x3753: 0x406e6620,
+	0x3754: 0x406e6820, 0x3755: 0x406e6a20, 0x3756: 0x406e6c20, 0x3757: 0x406e6e20,
+	0x3758: 0x406e7020, 0x3759: 0x406e7220, 0x375a: 0x406e7420, 0x375b: 0x406e7620,
+	0x375c: 0x406e7820, 0x375d: 0x406e7a20, 0x375e: 0x406e7c20, 0x375f: 0x406e7e20,
+	0x3760: 0x406e8020, 0x3761: 0x406e8220, 0x3762: 0x406e8420, 0x3763: 0x406e8620,
+	0x3764: 0x406e8820, 0x3765: 0x406e8a20, 0x3766: 0x406e8c20, 0x3767: 0x406e8e20,
+	0x3768: 0x406e9020, 0x3769: 0x406e9220, 0x376a: 0x406e9420, 0x376b: 0x406e9620,
+	0x376c: 0x406e9820, 0x376d: 0x406e9a20, 0x376e: 0x406e9c20, 0x376f: 0x406e9e20,
+	0x3770: 0x406ea020, 0x3771: 0x406ea220, 0x3772: 0x406ea420, 0x3773: 0x406ea620,
+	0x3774: 0x406ea820, 0x3775: 0x406eaa20, 0x3776: 0x406eac20, 0x3777: 0x406eae20,
+	0x3778: 0x406eb020, 0x3779: 0x406eb220, 0x377a: 0x406eb420, 0x377b: 0x406eb620,
+	0x377c: 0x406eb820, 0x377d: 0x406eba20, 0x377e: 0x406ebc20, 0x377f: 0x406ebe20,
+	// Block 0xde, offset 0x3780
+	0x3780: 0x406ec020, 0x3781: 0x406ec220, 0x3782: 0x406ec420, 0x3783: 0x406ec620,
+	0x3784: 0x406ec820, 0x3785: 0x406eca20, 0x3786: 0x406ecc20, 0x3787: 0x406ece20,
+	0x3788: 0x406ed020, 0x3789: 0x406ed220, 0x378a: 0x406ed420, 0x378b: 0x406ed620,
+	0x378c: 0x406ed820, 0x378d: 0x406eda20, 0x378e: 0x406edc20, 0x378f: 0x406ede20,
+	0x3790: 0x406ee020, 0x3791: 0x406ee220, 0x3792: 0x406ee420, 0x3793: 0x406ee620,
+	0x3794: 0x406ee820, 0x3795: 0x406eea20, 0x3796: 0x406eec20, 0x3797: 0x406eee20,
+	0x3798: 0x406ef020, 0x3799: 0x406ef220, 0x379a: 0x406ef420, 0x379b: 0x406ef620,
+	0x379c: 0x406ef820, 0x379d: 0x406efa20, 0x379e: 0x406efc20, 0x379f: 0x406efe20,
+	0x37a0: 0x406f0020, 0x37a1: 0x406f0220, 0x37a2: 0x406f0420, 0x37a3: 0x406f0620,
+	0x37a4: 0x406f0820, 0x37a5: 0x406f0a20, 0x37a6: 0x406f0c20, 0x37a7: 0x406f0e20,
+	0x37a8: 0x406f1020, 0x37a9: 0x406f1220, 0x37aa: 0x406f1420, 0x37ab: 0x406f1620,
+	0x37ac: 0x406f1820, 0x37ad: 0x406f1a20, 0x37ae: 0x406f1c20, 0x37af: 0x406f1e20,
+	0x37b0: 0x406f2020, 0x37b1: 0x406f2220, 0x37b2: 0x406f2420, 0x37b3: 0x406f2620,
+	0x37b4: 0x406f2820, 0x37b5: 0x406f2a20, 0x37b6: 0x406f2c20, 0x37b7: 0x406f2e20,
+	0x37b8: 0x406f3020, 0x37b9: 0x406f3220, 0x37ba: 0x406f3420, 0x37bb: 0x406f3620,
+	0x37bc: 0x406f3820, 0x37bd: 0x406f3a20, 0x37be: 0x406f3c20, 0x37bf: 0x406f3e20,
+	// Block 0xdf, offset 0x37c0
+	0x37c0: 0x406f4020, 0x37c1: 0x406f4220, 0x37c2: 0x406f4420, 0x37c3: 0x406f4620,
+	0x37c4: 0x406f4820, 0x37c5: 0x406f4a20, 0x37c6: 0x406f4c20, 0x37c7: 0x406f4e20,
+	0x37c8: 0x406f5020, 0x37c9: 0x406f5220, 0x37ca: 0x406f5420, 0x37cb: 0x406f5620,
+	0x37cc: 0x406f5820,
+	0x37d0: 0x401a9020, 0x37d1: 0x401a9220, 0x37d2: 0x401a9420, 0x37d3: 0x401a9620,
+	0x37d4: 0x401a9820, 0x37d5: 0x401a9a20, 0x37d6: 0x401a9c20, 0x37d7: 0x401a9e20,
+	0x37d8: 0x401aa020, 0x37d9: 0x401aa220, 0x37da: 0x401aa420, 0x37db: 0x401aa620,
+	0x37dc: 0x401aa820, 0x37dd: 0x401aaa20, 0x37de: 0x401aac20, 0x37df: 0x401aae20,
+	0x37e0: 0x401ab020, 0x37e1: 0x401ab220, 0x37e2: 0x401ab420, 0x37e3: 0x401ab620,
+	0x37e4: 0x401ab820, 0x37e5: 0x401aba20, 0x37e6: 0x401abc20, 0x37e7: 0x401abe20,
+	0x37e8: 0x401ac020, 0x37e9: 0x401ac220, 0x37ea: 0x401ac420, 0x37eb: 0x401ac620,
+	0x37ec: 0x401ac820, 0x37ed: 0x401aca20, 0x37ee: 0x401acc20, 0x37ef: 0x401ace20,
+	0x37f0: 0x401ad020, 0x37f1: 0x401ad220, 0x37f2: 0x401ad420, 0x37f3: 0x401ad620,
+	0x37f4: 0x401ad820, 0x37f5: 0x401ada20, 0x37f6: 0x401adc20, 0x37f7: 0x401ade20,
+	0x37f8: 0x401ae020, 0x37f9: 0x401ae220, 0x37fa: 0x401ae420, 0x37fb: 0x401ae620,
+	0x37fc: 0x401ae820, 0x37fd: 0x401aea20, 0x37fe: 0x401aec20, 0x37ff: 0x401aee20,
+	// Block 0xe0, offset 0x3800
+	0x3800: 0x401af020, 0x3801: 0x401af220, 0x3802: 0x401af420, 0x3803: 0x401af620,
+	0x3804: 0x401af820, 0x3805: 0x401afa20, 0x3806: 0x401afc20,
+	0x3810: 0x406f6620, 0x3811: 0x406f6820, 0x3812: 0x406f6a20, 0x3813: 0x406f6c20,
+	0x3814: 0x406f6e20, 0x3815: 0x406f7020, 0x3816: 0x406f7220, 0x3817: 0x406f7420,
+	0x3818: 0x406f7620, 0x3819: 0x406f7820, 0x381a: 0x406f7a20, 0x381b: 0x406f7c20,
+	0x381c: 0x406f7e20, 0x381d: 0x406f8020, 0x381e: 0x406f8220, 0x381f: 0x406f8420,
+	0x3820: 0x406f8620, 0x3821: 0x406f8820, 0x3822: 0x406f8a20, 0x3823: 0x406f8c20,
+	0x3824: 0x406f8e20, 0x3825: 0x406f9020, 0x3826: 0x406f9220, 0x3827: 0x406f9420,
+	0x3828: 0x406f9620, 0x3829: 0x406f9820, 0x382a: 0x406f9e20, 0x382b: 0x406f9a20,
+	0x382c: 0x406fa020, 0x382d: 0x406f9c20, 0x382e: 0x406fa220, 0x382f: 0x406fa420,
+	0x3830: 0x406fa620, 0x3831: 0x406fa820, 0x3832: 0x406faa20, 0x3833: 0x406fac20,
+	0x3834: 0x406fae20, 0x3835: 0x406fb020, 0x3836: 0x406fb220, 0x3837: 0x406fb420,
+	0x3838: 0x406f5a20, 0x3839: 0x406f5c20, 0x383a: 0x406f5e20, 0x383b: 0x406f6020,
+	0x383c: 0x406f6420, 0x383d: 0x406f6220, 0x383e: 0x40025620, 0x383f: 0x4002fe20,
+	// Block 0xe1, offset 0x3840
+	0x3840: 0x405b8020, 0x3841: 0x405b8220, 0x3842: 0x405b8420, 0x3843: 0x405b8620,
+	0x3844: 0x405b8820, 0x3845: 0x405b8a20, 0x3846: 0x405b8c20, 0x3847: 0x405b8e20,
+	0x3848: 0x405b9020, 0x3849: 0x405b9220, 0x384a: 0x405b9420, 0x384b: 0x405b9620,
+	0x384c: 0x405b9820, 0x384d: 0x405b9a20, 0x384e: 0x405b9c20, 0x384f: 0x405b9e20,
+	0x3850: 0x405ba020, 0x3851: 0x405ba220, 0x3852: 0x405ba420, 0x3853: 0x405ba620,
+	0x3854: 0x405ba820, 0x3855: 0x405baa20, 0x3856: 0x405bac20, 0x3857: 0x405bae20,
+	0x3858: 0x405bb020, 0x3859: 0x405bb220, 0x385a: 0x405bb420, 0x385b: 0x405bb620,
+	0x385c: 0x405bb820, 0x385d: 0x405bba20, 0x385e: 0x405bbc20, 0x385f: 0x405bbe20,
+	0x3860: 0x405bc020, 0x3861: 0x405bc220, 0x3862: 0x405bc420, 0x3863: 0x405bc620,
+	0x3864: 0x405bc820, 0x3865: 0x405bca20, 0x3866: 0x405bcc20, 0x3867: 0x405bce20,
+	0x3868: 0x405bd020, 0x3869: 0x405bd220, 0x386a: 0x405bd420, 0x386b: 0x405bd620,
+	0x386c: 0x405bd820, 0x386d: 0x405bda20, 0x386e: 0x405bdc20, 0x386f: 0x405bde20,
+	0x3870: 0x405be020, 0x3871: 0x405be220, 0x3872: 0x405be420, 0x3873: 0x405be620,
+	0x3874: 0x405be820, 0x3875: 0x405bea20, 0x3876: 0x405bec20, 0x3877: 0x405bee20,
+	0x3878: 0x405bf020, 0x3879: 0x405bf220, 0x387a: 0x405bf420, 0x387b: 0x405bf620,
+	0x387c: 0x405bf820, 0x387d: 0x405bfa20, 0x387e: 0x405bfc20, 0x387f: 0x405bfe20,
+	// Block 0xe2, offset 0x3880
+	0x3880: 0x405c0020, 0x3881: 0x405c0220, 0x3882: 0x405c0420, 0x3883: 0x405c0620,
+	0x3884: 0x405c0820, 0x3885: 0x405c0a20, 0x3886: 0x405c0c20, 0x3887: 0x405c0e20,
+	0x3888: 0x405c1020, 0x3889: 0x405c1220, 0x388a: 0x405c1420, 0x388b: 0x405c1620,
+	0x388c: 0x405c1820, 0x388d: 0x405c1a20, 0x388e: 0x405c1c20, 0x388f: 0x405c1e20,
+	0x3890: 0x405c2020, 0x3891: 0x405c2220, 0x3892: 0x405c2420, 0x3893: 0x405c2620,
+	0x3894: 0x405c2820, 0x3895: 0x405c2a20, 0x3896: 0x405c2c20, 0x3897: 0x405c2e20,
+	0x3898: 0x405c3020, 0x3899: 0x405c3220, 0x389a: 0x405c3420, 0x389b: 0x405c3620,
+	0x389c: 0x405c3820, 0x389d: 0x405c3a20, 0x389e: 0x405c3c20, 0x389f: 0x405c3e20,
+	0x38a0: 0x405c4020, 0x38a1: 0x405c4220, 0x38a2: 0x405c4420, 0x38a3: 0x405c4620,
+	0x38a4: 0x405c4820, 0x38a5: 0x405c4a20, 0x38a6: 0x405c4c20, 0x38a7: 0x405c4e20,
+	0x38a8: 0x405c5020, 0x38a9: 0x405c5220, 0x38aa: 0x405c5420, 0x38ab: 0x405c5620,
+	0x38ac: 0x405c5820, 0x38ad: 0x405c5a20, 0x38ae: 0x405c5c20, 0x38af: 0x405c5e20,
+	0x38b0: 0x405c6020, 0x38b1: 0x405c6220, 0x38b2: 0x405c6420, 0x38b3: 0x405c6620,
+	0x38b4: 0x405c6820, 0x38b5: 0x405c6a20, 0x38b6: 0x405c6c20, 0x38b7: 0x405c6e20,
+	0x38b8: 0x405c7020, 0x38b9: 0x405c7220, 0x38ba: 0x405c7420, 0x38bb: 0x405c7620,
+	0x38bc: 0x405c7820, 0x38bd: 0x405c7a20, 0x38be: 0x405c7c20, 0x38bf: 0x405c7e20,
+	// Block 0xe3, offset 0x38c0
+	0x38c0: 0x405c8020, 0x38c1: 0x405c8220, 0x38c2: 0x405c8420, 0x38c3: 0x405c8620,
+	0x38c4: 0x405c8820, 0x38c5: 0x405c8a20, 0x38c6: 0x405c8c20, 0x38c7: 0x405c8e20,
+	0x38c8: 0x405c9020, 0x38c9: 0x405c9220, 0x38ca: 0x405c9420, 0x38cb: 0x405c9620,
+	0x38cc: 0x405c9820, 0x38cd: 0x405c9a20, 0x38ce: 0x405c9c20, 0x38cf: 0x405c9e20,
+	0x38d0: 0x405ca020, 0x38d1: 0x405ca220, 0x38d2: 0x405ca420, 0x38d3: 0x405ca620,
+	0x38d4: 0x405ca820, 0x38d5: 0x405caa20, 0x38d6: 0x405cac20, 0x38d7: 0x405cae20,
+	0x38d8: 0x405cb020, 0x38d9: 0x405cb220, 0x38da: 0x405cb420, 0x38db: 0x405cb620,
+	0x38dc: 0x405cb820, 0x38dd: 0x405cba20, 0x38de: 0x405cbc20, 0x38df: 0x405cbe20,
+	0x38e0: 0x405cc020, 0x38e1: 0x405cc220, 0x38e2: 0x405cc420, 0x38e3: 0x405cc620,
+	0x38e4: 0x405cc820, 0x38e5: 0x405cca20, 0x38e6: 0x405ccc20, 0x38e7: 0x405cce20,
+	0x38e8: 0x405cd020, 0x38e9: 0x405cd220, 0x38ea: 0x405cd420, 0x38eb: 0x405cd620,
+	0x38ec: 0x405cd820, 0x38ed: 0x405cda20, 0x38ee: 0x405cdc20, 0x38ef: 0x405cde20,
+	0x38f0: 0x405ce020, 0x38f1: 0x405ce220, 0x38f2: 0x405ce420, 0x38f3: 0x405ce620,
+	0x38f4: 0x405ce820, 0x38f5: 0x405cea20, 0x38f6: 0x405cec20, 0x38f7: 0x405cee20,
+	0x38f8: 0x405cf020, 0x38f9: 0x405cf220, 0x38fa: 0x405cf420, 0x38fb: 0x405cf620,
+	0x38fc: 0x405cf820, 0x38fd: 0x405cfa20, 0x38fe: 0x405cfc20, 0x38ff: 0x405cfe20,
+	// Block 0xe4, offset 0x3900
+	0x3900: 0x405d0020, 0x3901: 0x405d0220, 0x3902: 0x405d0420, 0x3903: 0x405d0620,
+	0x3904: 0x405d0820, 0x3905: 0x405d0a20, 0x3906: 0x405d0c20, 0x3907: 0x405d0e20,
+	0x3908: 0x405d1020, 0x3909: 0x405d1220, 0x390a: 0x405d1420, 0x390b: 0x405d1620,
+	0x390c: 0x405d1820, 0x390d: 0x405d1a20, 0x390e: 0x405d1c20, 0x390f: 0x405d1e20,
+	0x3910: 0x405d2020, 0x3911: 0x405d2220, 0x3912: 0x405d2420, 0x3913: 0x405d2620,
+	0x3914: 0x405d2820, 0x3915: 0x405d2a20, 0x3916: 0x405d2c20, 0x3917: 0x405d2e20,
+	0x3918: 0x405d3020, 0x3919: 0x405d3220, 0x391a: 0x405d3420, 0x391b: 0x405d3620,
+	0x391c: 0x405d3820, 0x391d: 0x405d3a20, 0x391e: 0x405d3c20, 0x391f: 0x405d3e20,
+	0x3920: 0x405d4020, 0x3921: 0x405d4220, 0x3922: 0x405d4420, 0x3923: 0x405d4620,
+	0x3924: 0x405d4820, 0x3925: 0x405d4a20, 0x3926: 0x405d4c20, 0x3927: 0x405d4e20,
+	0x3928: 0x405d5020, 0x3929: 0x405d5220, 0x392a: 0x405d5420, 0x392b: 0x405d5620,
+	0x392c: 0x405d5820, 0x392d: 0x405d5a20, 0x392e: 0x405d5c20, 0x392f: 0x405d5e20,
+	0x3930: 0x405d6020, 0x3931: 0x405d6220, 0x3932: 0x405d6420, 0x3933: 0x405d6620,
+	0x3934: 0x405d6820, 0x3935: 0x405d6a20, 0x3936: 0x405d6c20, 0x3937: 0x405d6e20,
+	0x3938: 0x405d7020, 0x3939: 0x405d7220, 0x393a: 0x405d7420, 0x393b: 0x405d7620,
+	0x393c: 0x405d7820, 0x393d: 0x405d7a20, 0x393e: 0x405d7c20, 0x393f: 0x405d7e20,
+	// Block 0xe5, offset 0x3940
+	0x3940: 0x405d8020, 0x3941: 0x405d8220, 0x3942: 0x405d8420, 0x3943: 0x405d8620,
+	0x3944: 0x405d8820, 0x3945: 0x405d8a20, 0x3946: 0x405d8c20, 0x3947: 0x405d8e20,
+	0x3948: 0x405d9020, 0x3949: 0x405d9220, 0x394a: 0x405d9420, 0x394b: 0x405d9620,
+	0x394c: 0x405d9820, 0x394d: 0x40025820, 0x394e: 0x40030020, 0x394f: 0x4002d820,
+	0x3950: 0x005c3084, 0x3951: 0x005c5484, 0x3952: 0x005c8e84, 0x3953: 0xe00020fb,
+	0x3954: 0xe00020fe, 0x3955: 0xe0002101, 0x3956: 0xe0002104, 0x3957: 0xe0002107,
+	0x3958: 0xe000210a, 0x3959: 0xe000210d, 0x395a: 0xe0002110, 0x395b: 0xe0002113,
+	0x395c: 0xe0002116, 0x395d: 0xe0002119, 0x395e: 0xe000211c, 0x395f: 0xe000211f,
+	0x3960: 0xe00001cd, 0x3961: 0xe0000261, 0x3962: 0xe0000379, 0x3963: 0xe0000453,
+	0x3964: 0xe0000528, 0x3965: 0xe00005f2, 0x3966: 0xe00006bd, 0x3967: 0xe0000765,
+	0x3968: 0xe0000811, 0x3969: 0xe00008b6, 0x396a: 0x005c5c84, 0x396b: 0x005d2284,
+	// Block 0xe6, offset 0x3980
+	0x3980: 0x0033ec88, 0x3981: 0x4033ec20, 0x3982: 0x0033fa88, 0x3983: 0x4033fa20,
+	0x3984: 0x00340488, 0x3985: 0x40340420, 0x3986: 0x00343488, 0x3987: 0x40343420,
+	0x3988: 0x00344e88, 0x3989: 0x40344e20, 0x398a: 0x0035a288, 0x398b: 0x4035a220,
+	0x398c: 0x0035f088, 0x398d: 0x4035f020, 0x398e: 0x00366e88, 0x398f: 0x40366e20,
+	0x3990: 0x00367c88, 0x3991: 0x40367c20, 0x3992: 0x0036a688, 0x3993: 0x4036a620,
+	0x3994: 0x0036c088, 0x3995: 0x4036c020, 0x3996: 0x0036c288, 0x3997: 0x4036c220,
+	0x3998: 0x0036de88, 0x3999: 0x4036de20, 0x399a: 0x0036e888, 0x399b: 0x4036e820,
+	0x399c: 0x0036f288, 0x399d: 0x4036f220, 0x399e: 0x00372488, 0x399f: 0x40372420,
+	0x39a0: 0x00360a88, 0x39a1: 0x40360a20, 0x39a2: 0x00339e88, 0x39a3: 0x40339e20,
+	0x39a4: 0x0034a288, 0x39a5: 0x4034a220, 0x39a6: 0x0034b888, 0x39a7: 0x4034b820,
+	0x39a8: 0x0034ee8a, 0x39a9: 0x0034ee84, 0x39aa: 0x0034ee8a, 0x39ab: 0x0034ee84,
+	0x39ac: 0x0034ee8a, 0x39ad: 0x0034ee84, 0x39ae: 0x0034ee84, 0x39af: 0xae608402,
+	0x39b0: 0xa0000000, 0x39b1: 0xa0000000, 0x39b2: 0xa0000000, 0x39b3: 0x4004e020,
+	0x39b4: 0x84e619e1, 0x39b5: 0x84e61a0a, 0x39b6: 0x84e61a1b, 0x39b7: 0x84e61ab9,
+	0x39b8: 0x84e61b3a, 0x39b9: 0x84e61b3f, 0x39ba: 0x84e61b47, 0x39bb: 0x84e61af0,
+	0x39bc: 0xae605f02, 0x39bd: 0xae605f02, 0x39be: 0x40054c20, 0x39bf: 0x40367220,
+	// Block 0xe7, offset 0x39c0
+	0x39c0: 0x00339488, 0x39c1: 0x40339420, 0x39c2: 0x00341288, 0x39c3: 0x40341220,
+	0x39c4: 0x0033d288, 0x39c5: 0x4033d220, 0x39c6: 0x00364288, 0x39c7: 0x40364220,
+	0x39c8: 0x00340e88, 0x39c9: 0x40340e20, 0x39ca: 0x00356088, 0x39cb: 0x40356020,
+	0x39cc: 0x00355488, 0x39cd: 0x40355420, 0x39ce: 0x00360c88, 0x39cf: 0x40360c20,
+	0x39d0: 0x00361688, 0x39d1: 0x40361620, 0x39d2: 0x00362088, 0x39d3: 0x40362020,
+	0x39d4: 0x0035de88, 0x39d5: 0x4035de20, 0x39d6: 0x00366488, 0x39d7: 0x40366420,
+	0x39df: 0x84e61b67,
+	0x39e0: 0x405d9a20, 0x39e1: 0x405d9c20, 0x39e2: 0x405d9e20, 0x39e3: 0x405da020,
+	0x39e4: 0x405da220, 0x39e5: 0x405da420, 0x39e6: 0x405da620, 0x39e7: 0x405da820,
+	0x39e8: 0x405daa20, 0x39e9: 0x405dac20, 0x39ea: 0x405dae20, 0x39eb: 0x405db020,
+	0x39ec: 0x405db220, 0x39ed: 0x405db420, 0x39ee: 0x405db620, 0x39ef: 0x405db820,
+	0x39f0: 0x405dba20, 0x39f1: 0x405dbc20, 0x39f2: 0x405dbe20, 0x39f3: 0x405dc020,
+	0x39f4: 0x405dc220, 0x39f5: 0x405dc420, 0x39f6: 0x405dc620, 0x39f7: 0x405dc820,
+	0x39f8: 0x405dca20, 0x39f9: 0x405dcc20, 0x39fa: 0x405dce20, 0x39fb: 0x405dd020,
+	0x39fc: 0x405dd220, 0x39fd: 0x405dd420, 0x39fe: 0x405dd620, 0x39ff: 0x405dd820,
+	// Block 0xe8, offset 0x3a00
+	0x3a00: 0x405dda20, 0x3a01: 0x405ddc20, 0x3a02: 0x405dde20, 0x3a03: 0x405de020,
+	0x3a04: 0x405de220, 0x3a05: 0x405de420, 0x3a06: 0x405de620, 0x3a07: 0x405de820,
+	0x3a08: 0x405dea20, 0x3a09: 0x405dec20, 0x3a0a: 0x405dee20, 0x3a0b: 0x405df020,
+	0x3a0c: 0x405df220, 0x3a0d: 0x405df420, 0x3a0e: 0x405df620, 0x3a0f: 0x405df820,
+	0x3a10: 0x405dfa20, 0x3a11: 0x405dfc20, 0x3a12: 0x405dfe20, 0x3a13: 0x405e0020,
+	0x3a14: 0x405e0220, 0x3a15: 0x405e0420, 0x3a16: 0x405e0620, 0x3a17: 0x405e0820,
+	0x3a18: 0x405e0a20, 0x3a19: 0x405e0c20, 0x3a1a: 0x405e0e20, 0x3a1b: 0x405e1020,
+	0x3a1c: 0x405e1220, 0x3a1d: 0x405e1420, 0x3a1e: 0x405e1620, 0x3a1f: 0x405e1820,
+	0x3a20: 0x405e1a20, 0x3a21: 0x405e1c20, 0x3a22: 0x405e1e20, 0x3a23: 0x405e2020,
+	0x3a24: 0x405e2220, 0x3a25: 0x405e2420, 0x3a26: 0x405e2620, 0x3a27: 0x405e2820,
+	0x3a28: 0x405e2a20, 0x3a29: 0x405e2c20, 0x3a2a: 0x405e2e20, 0x3a2b: 0x405e3020,
+	0x3a2c: 0x405e3220, 0x3a2d: 0x405e3420, 0x3a2e: 0x405e3620, 0x3a2f: 0x405e3820,
+	0x3a30: 0xae60ef02, 0x3a31: 0xae60f002, 0x3a32: 0x40038220, 0x3a33: 0x40030220,
+	0x3a34: 0x4002b820, 0x3a35: 0x40025a20, 0x3a36: 0x40026a20, 0x3a37: 0x4002da20,
+	// Block 0xe9, offset 0x3a40
+	0x3a40: 0x4006ba20, 0x3a41: 0x4006bc20, 0x3a42: 0x4006be20, 0x3a43: 0x4006c020,
+	0x3a44: 0x4006c220, 0x3a45: 0x4006c420, 0x3a46: 0x4006c620, 0x3a47: 0x4006c820,
+	0x3a48: 0x4006ca20, 0x3a49: 0x4006cc20, 0x3a4a: 0x4006ce20, 0x3a4b: 0x4006d020,
+	0x3a4c: 0x4006d220, 0x3a4d: 0x4006d420, 0x3a4e: 0x4006d620, 0x3a4f: 0x4006d820,
+	0x3a50: 0x4006da20, 0x3a51: 0x4006dc20, 0x3a52: 0x4006de20, 0x3a53: 0x4006e020,
+	0x3a54: 0x4006e220, 0x3a55: 0x4006e420, 0x3a56: 0x4006e620, 0x3a57: 0x4006e820,
+	0x3a58: 0x4006ea20, 0x3a59: 0x4006ec20, 0x3a5a: 0x4006ee20, 0x3a5b: 0x4006f020,
+	0x3a5c: 0x4006f220, 0x3a5d: 0x4006f420, 0x3a5e: 0x4006f620, 0x3a5f: 0x4006f820,
+	0x3a60: 0x4006fa20, 0x3a61: 0x4006fc20, 0x3a62: 0x0031e488, 0x3a63: 0x4031e420,
+	0x3a64: 0x0031f888, 0x3a65: 0x4031f820, 0x3a66: 0x002d8c88, 0x3a67: 0x402d8c20,
+	0x3a68: 0xe0000fd5, 0x3a69: 0xe0000fd2, 0x3a6a: 0x0031ae88, 0x3a6b: 0x4031ae20,
+	0x3a6c: 0x0031b088, 0x3a6d: 0x4031b020, 0x3a6e: 0x0031b288, 0x3a6f: 0x4031b220,
+	0x3a70: 0x402d1020, 0x3a71: 0x402fee20, 0x3a72: 0xe00009cf, 0x3a73: 0xe00009cc,
+	0x3a74: 0xe00009ff, 0x3a75: 0xe00009fc, 0x3a76: 0xe0000a05, 0x3a77: 0xe0000a02,
+	0x3a78: 0xe0000a0e, 0x3a79: 0xe0000a0b, 0x3a7a: 0xe0000a15, 0x3a7b: 0xe0000a11,
+	0x3a7c: 0xe0000a1c, 0x3a7d: 0xe0000a19, 0x3a7e: 0x002c6088, 0x3a7f: 0x402c6020,
+	// Block 0xea, offset 0x3a80
+	0x3a80: 0x002e1488, 0x3a81: 0x402e1420, 0x3a82: 0x002e1688, 0x3a83: 0x402e1620,
+	0x3a84: 0x002e1888, 0x3a85: 0x402e1820, 0x3a86: 0x002e3288, 0x3a87: 0x402e3220,
+	0x3a88: 0x002e3688, 0x3a89: 0x402e3620, 0x3a8a: 0x002f1888, 0x3a8b: 0x402f1820,
+	0x3a8c: 0x002f0888, 0x3a8d: 0x402f0820, 0x3a8e: 0xe0000ea1, 0x3a8f: 0xe0000e9e,
+	0x3a90: 0x002f3888, 0x3a91: 0x402f3820, 0x3a92: 0x002f4688, 0x3a93: 0x402f4620,
+	0x3a94: 0x002f4888, 0x3a95: 0x402f4820, 0x3a96: 0x002f5e88, 0x3a97: 0x402f5e20,
+	0x3a98: 0x002f6088, 0x3a99: 0x402f6020, 0x3a9a: 0x002f8a88, 0x3a9b: 0x402f8a20,
+	0x3a9c: 0x002fe488, 0x3a9d: 0x402fe420, 0x3a9e: 0x0030c888, 0x3a9f: 0x4030c820,
+	0x3aa0: 0xe00010c6, 0x3aa1: 0xe00010c3, 0x3aa2: 0x00316288, 0x3aa3: 0x40316220,
+	0x3aa4: 0x00319088, 0x3aa5: 0x40319020, 0x3aa6: 0x00319288, 0x3aa7: 0x40319220,
+	0x3aa8: 0x00319c88, 0x3aa9: 0x40319c20, 0x3aaa: 0x00319e88, 0x3aab: 0x40319e20,
+	0x3aac: 0x0031a088, 0x3aad: 0x4031a020, 0x3aae: 0x0031a288, 0x3aaf: 0x4031a220,
+	0x3ab0: 0x0031a294, 0x3ab1: 0x402c9420, 0x3ab2: 0x402e6620, 0x3ab3: 0x402e9c20,
+	0x3ab4: 0x402ed820, 0x3ab5: 0x402fe020, 0x3ab6: 0x402fe220, 0x3ab7: 0x40306220,
+	0x3ab8: 0x4031a420, 0x3ab9: 0xe0000abc, 0x3aba: 0xe0000ab9, 0x3abb: 0xe0000b92,
+	0x3abc: 0xe0000b8f, 0x3abd: 0xe0000bdc, 0x3abe: 0x002d5688, 0x3abf: 0x402d5620,
+	// Block 0xeb, offset 0x3ac0
+	0x3ac0: 0x002e7088, 0x3ac1: 0x402e7020, 0x3ac2: 0xe0000f08, 0x3ac3: 0xe0000f05,
+	0x3ac4: 0xe0000f6d, 0x3ac5: 0xe0000f6a, 0x3ac6: 0xe0000fb7, 0x3ac7: 0xe0000fb4,
+	0x3ac8: 0x4006fe20, 0x3ac9: 0x40070020, 0x3aca: 0x40070220, 0x3acb: 0x0031e688,
+	0x3acc: 0x4031e620, 0x3acd: 0x00308888, 0x3ace: 0x402e5c20,
+	0x3ad0: 0x002ec488, 0x3ad1: 0x402ec420, 0x3ad2: 0x002c4c88, 0x3ad3: 0x402c4c20,
+	0x3ae0: 0xe0000bd6, 0x3ae1: 0xe0000bd3, 0x3ae2: 0xe0000ca5, 0x3ae3: 0xe0000ca2,
+	0x3ae4: 0xe0000d75, 0x3ae5: 0xe0000d72, 0x3ae6: 0xe0000ee2, 0x3ae7: 0xe0000edf,
+	0x3ae8: 0xe0000f4d, 0x3ae9: 0xe0000f4a, 0x3aea: 0x002d8088,
+	// Block 0xec, offset 0x3b00
+	0x3b38: 0xf0001414, 0x3b39: 0xe0000e97, 0x3b3a: 0x4030a820, 0x3b3b: 0x402d2020,
+	0x3b3c: 0x402f4a20, 0x3b3d: 0x402e9820, 0x3b3e: 0x402db220, 0x3b3f: 0x402e9a20,
+	// Block 0xed, offset 0x3b40
+	0x3b40: 0x4045aa20, 0x3b41: 0x4045ac20, 0x3b42: 0x4045ae20, 0x3b43: 0x4045b020,
+	0x3b44: 0x4045b220, 0x3b45: 0x4045b420, 0x3b46: 0x820922db, 0x3b47: 0x4045b820,
+	0x3b48: 0x4045ba20, 0x3b49: 0x4045bc20, 0x3b4a: 0x4045be20, 0x3b4b: 0xa000f302,
+	0x3b4c: 0x4045c020, 0x3b4d: 0x4045c220, 0x3b4e: 0x4045c420, 0x3b4f: 0x4045c620,
+	0x3b50: 0x4045c820, 0x3b51: 0x4045ca20, 0x3b52: 0x4045cc20, 0x3b53: 0x4045ce20,
+	0x3b54: 0x4045d020, 0x3b55: 0x4045d220, 0x3b56: 0x4045d420, 0x3b57: 0x4045d620,
+	0x3b58: 0x4045d820, 0x3b59: 0x4045da20, 0x3b5a: 0x4045dc20, 0x3b5b: 0x4045de20,
+	0x3b5c: 0x4045e020, 0x3b5d: 0x4045e220, 0x3b5e: 0x4045e420, 0x3b5f: 0x4045e620,
+	0x3b60: 0x4045e820, 0x3b61: 0x4045ea20, 0x3b62: 0x4045ec20, 0x3b63: 0x4045ee20,
+	0x3b64: 0x4045f020, 0x3b65: 0x4045f220, 0x3b66: 0x4045f420, 0x3b67: 0x4045f620,
+	0x3b68: 0x40075020, 0x3b69: 0x40075220, 0x3b6a: 0x40075420, 0x3b6b: 0x40075620,
+	0x3b70: 0x40284820, 0x3b71: 0x40284a20, 0x3b72: 0x40284c20, 0x3b73: 0x40284e20,
+	0x3b74: 0x40285020, 0x3b75: 0x40285220, 0x3b76: 0x40075820, 0x3b77: 0x40075a20,
+	0x3b78: 0x4027f020, 0x3b79: 0x40075c20,
+	// Block 0xee, offset 0x3b80
+	0x3b80: 0x404baa20, 0x3b81: 0x404bac20, 0x3b82: 0x404bae20, 0x3b83: 0x404bb020,
+	0x3b84: 0x404bb220, 0x3b85: 0x404bb420, 0x3b86: 0x404bb620, 0x3b87: 0x404bb820,
+	0x3b88: 0x404bc220, 0x3b89: 0x404bc420, 0x3b8a: 0x404bc620, 0x3b8b: 0x404bc820,
+	0x3b8c: 0x404bca20, 0x3b8d: 0x404bcc20, 0x3b8e: 0x404bce20, 0x3b8f: 0x404bd020,
+	0x3b90: 0x404bd220, 0x3b91: 0x404bd420, 0x3b92: 0x404bd620, 0x3b93: 0x404bd820,
+	0x3b94: 0x404bdc20, 0x3b95: 0x404bde20, 0x3b96: 0x404be020, 0x3b97: 0x404be220,
+	0x3b98: 0x404be820, 0x3b99: 0x404bee20, 0x3b9a: 0x404bf020, 0x3b9b: 0x404bf420,
+	0x3b9c: 0x404bf620, 0x3b9d: 0x404bfc20, 0x3b9e: 0x404c0620, 0x3b9f: 0x404c0820,
+	0x3ba0: 0x404c0a20, 0x3ba1: 0x404c0c20, 0x3ba2: 0x404bfe20, 0x3ba3: 0x404c0020,
+	0x3ba4: 0x404c0220, 0x3ba5: 0x404c0420, 0x3ba6: 0x404c0e20, 0x3ba7: 0x404bda20,
+	0x3ba8: 0x404be420, 0x3ba9: 0x404bba20, 0x3baa: 0x404bbc20, 0x3bab: 0x404bbe20,
+	0x3bac: 0x404bc020, 0x3bad: 0x404be620, 0x3bae: 0x404bf220, 0x3baf: 0x404bf820,
+	0x3bb0: 0x404bfa20, 0x3bb1: 0x404bea20, 0x3bb2: 0x404bec20, 0x3bb3: 0x404c1020,
+	0x3bb4: 0x4005e820, 0x3bb5: 0x4005ea20, 0x3bb6: 0x40031820, 0x3bb7: 0x40031a20,
+	// Block 0xef, offset 0x3bc0
+	0x3bc0: 0xa000f302, 0x3bc1: 0xa000f402, 0x3bc2: 0x4045f820, 0x3bc3: 0x4045fa20,
+	0x3bc4: 0x4045fc20, 0x3bc5: 0x4045fe20, 0x3bc6: 0x40460020, 0x3bc7: 0x40460220,
+	0x3bc8: 0x40460420, 0x3bc9: 0x40460620, 0x3bca: 0x40460820, 0x3bcb: 0x40460a20,
+	0x3bcc: 0x40460c20, 0x3bcd: 0x40460e20, 0x3bce: 0x40461020, 0x3bcf: 0x40461220,
+	0x3bd0: 0x40461420, 0x3bd1: 0x40461620, 0x3bd2: 0x40461820, 0x3bd3: 0x40461a20,
+	0x3bd4: 0x40461c20, 0x3bd5: 0x40461e20, 0x3bd6: 0x40462020, 0x3bd7: 0x40462220,
+	0x3bd8: 0x40462420, 0x3bd9: 0x40462620, 0x3bda: 0x40462820, 0x3bdb: 0x40462a20,
+	0x3bdc: 0x40462c20, 0x3bdd: 0x40462e20, 0x3bde: 0x40463020, 0x3bdf: 0x40463220,
+	0x3be0: 0x40463420, 0x3be1: 0x40463620, 0x3be2: 0x40463820, 0x3be3: 0x40463a20,
+	0x3be4: 0x40463c20, 0x3be5: 0x40463e20, 0x3be6: 0x40464020, 0x3be7: 0x40464220,
+	0x3be8: 0x40464420, 0x3be9: 0x40464620, 0x3bea: 0x40464820, 0x3beb: 0x40464a20,
+	0x3bec: 0x40464c20, 0x3bed: 0x40464e20, 0x3bee: 0x40465020, 0x3bef: 0x40465220,
+	0x3bf0: 0x40465420, 0x3bf1: 0x40465620, 0x3bf2: 0x40465820, 0x3bf3: 0x40465a20,
+	0x3bf4: 0x40465c20, 0x3bf5: 0x40465e20, 0x3bf6: 0x40466020, 0x3bf7: 0x40466220,
+	0x3bf8: 0x40466420, 0x3bf9: 0x40466620, 0x3bfa: 0x40466820, 0x3bfb: 0x40466a20,
+	0x3bfc: 0x40466c20, 0x3bfd: 0x40466e20, 0x3bfe: 0x40467020, 0x3bff: 0x40467220,
+	// Block 0xf0, offset 0x3c00
+	0x3c00: 0x40467420, 0x3c01: 0x40467620, 0x3c02: 0x40467820, 0x3c03: 0x40467a20,
+	0x3c04: 0x8209233e,
+	0x3c0e: 0x40031020, 0x3c0f: 0x40031220,
+	0x3c10: 0xe000018b, 0x3c11: 0xe000021c, 0x3c12: 0xe0000337, 0x3c13: 0xe0000411,
+	0x3c14: 0xe00004e6, 0x3c15: 0xe00005b0, 0x3c16: 0xe000067b, 0x3c17: 0xe0000723,
+	0x3c18: 0xe00007cf, 0x3c19: 0xe0000874,
+	0x3c20: 0xae600000, 0x3c21: 0xae600000, 0x3c22: 0xae600000, 0x3c23: 0xae600000,
+	0x3c24: 0xae600000, 0x3c25: 0xae600000, 0x3c26: 0xae600000, 0x3c27: 0xae600000,
+	0x3c28: 0xae600000, 0x3c29: 0xae600000, 0x3c2a: 0xae600000, 0x3c2b: 0xae600000,
+	0x3c2c: 0xae600000, 0x3c2d: 0xae600000, 0x3c2e: 0xae600000, 0x3c2f: 0xae600000,
+	0x3c30: 0xae600000, 0x3c31: 0xae600000, 0x3c32: 0x40404620, 0x3c33: 0x00404684,
+	0x3c34: 0x00404684, 0x3c35: 0x00404684, 0x3c36: 0x00404684, 0x3c37: 0x00404684,
+	0x3c38: 0x40056e20, 0x3c39: 0x40057020, 0x3c3a: 0x40057220, 0x3c3b: 0x40404820,
+	// Block 0xf1, offset 0x3c40
+	0x3c40: 0xe00001a9, 0x3c41: 0xe000023d, 0x3c42: 0xe0000355, 0x3c43: 0xe000042f,
+	0x3c44: 0xe0000504, 0x3c45: 0xe00005ce, 0x3c46: 0xe0000699, 0x3c47: 0xe0000741,
+	0x3c48: 0xe00007ed, 0x3c49: 0xe0000892, 0x3c4a: 0x404dd220, 0x3c4b: 0x404dd420,
+	0x3c4c: 0x404dd620, 0x3c4d: 0x404dd820, 0x3c4e: 0x404dda20, 0x3c4f: 0x404ddc20,
+	0x3c50: 0x404dde20, 0x3c51: 0x404de020, 0x3c52: 0x404de220, 0x3c53: 0x404de420,
+	0x3c54: 0x404de620, 0x3c55: 0x404de820, 0x3c56: 0x404dea20, 0x3c57: 0x404dec20,
+	0x3c58: 0x404dee20, 0x3c59: 0x404df020, 0x3c5a: 0x404df220, 0x3c5b: 0x404df420,
+	0x3c5c: 0x404df620, 0x3c5d: 0x404df820, 0x3c5e: 0x404dfa20, 0x3c5f: 0x404dfc20,
+	0x3c60: 0x404dfe20, 0x3c61: 0x404e0020, 0x3c62: 0x404e0220, 0x3c63: 0x404e0420,
+	0x3c64: 0x404e0620, 0x3c65: 0x404e0820, 0x3c66: 0x404e0a20, 0x3c67: 0x404e0c20,
+	0x3c68: 0x404e0e20, 0x3c69: 0x404e1020, 0x3c6a: 0x404e1220, 0x3c6b: 0xadc10f02,
+	0x3c6c: 0xadc11002, 0x3c6d: 0xadc11102, 0x3c6e: 0x4005f420, 0x3c6f: 0x40032020,
+	0x3c70: 0x404d8a20, 0x3c71: 0x404d8c20, 0x3c72: 0x404d8e20, 0x3c73: 0x404d9020,
+	0x3c74: 0x404d9220, 0x3c75: 0x404d9420, 0x3c76: 0x404d9620, 0x3c77: 0x404d9820,
+	0x3c78: 0x404d9a20, 0x3c79: 0x404d9c20, 0x3c7a: 0x404d9e20, 0x3c7b: 0x404da020,
+	0x3c7c: 0x404da220, 0x3c7d: 0x404da420, 0x3c7e: 0x404da620, 0x3c7f: 0x404da820,
+	// Block 0xf2, offset 0x3c80
+	0x3c80: 0x404daa20, 0x3c81: 0x404dac20, 0x3c82: 0x404dae20, 0x3c83: 0x404db020,
+	0x3c84: 0x404db220, 0x3c85: 0x404db420, 0x3c86: 0x404db620, 0x3c87: 0x404db820,
+	0x3c88: 0x404dba20, 0x3c89: 0x404dbc20, 0x3c8a: 0x404dbe20, 0x3c8b: 0x404dc020,
+	0x3c8c: 0x404dc220, 0x3c8d: 0x404dc420, 0x3c8e: 0x404dc620, 0x3c8f: 0x404dc820,
+	0x3c90: 0x404dca20, 0x3c91: 0x404dcc20, 0x3c92: 0x404dce20, 0x3c93: 0x820926e8,
+	0x3c9f: 0x40038420,
+	0x3ca0: 0x40636a20, 0x3ca1: 0x40636c20, 0x3ca2: 0x40636e20, 0x3ca3: 0x40637020,
+	0x3ca4: 0x40637220, 0x3ca5: 0x40637420, 0x3ca6: 0x40637620, 0x3ca7: 0x40637820,
+	0x3ca8: 0x40637a20, 0x3ca9: 0x40637c20, 0x3caa: 0x40637e20, 0x3cab: 0x40638020,
+	0x3cac: 0x40638220, 0x3cad: 0x40638420, 0x3cae: 0x40638620, 0x3caf: 0x40638820,
+	0x3cb0: 0x40638a20, 0x3cb1: 0x40638c20, 0x3cb2: 0x40638e20, 0x3cb3: 0x40639020,
+	0x3cb4: 0x40639220, 0x3cb5: 0x40639420, 0x3cb6: 0x40639620, 0x3cb7: 0x40639820,
+	0x3cb8: 0x40639a20, 0x3cb9: 0x40639c20, 0x3cba: 0x40639e20, 0x3cbb: 0x4063a020,
+	0x3cbc: 0x4063a220,
+	// Block 0xf3, offset 0x3cc0
+	0x3cc0: 0xa000f202, 0x3cc1: 0xa000f302, 0x3cc2: 0xa000f802, 0x3cc3: 0xa000f402,
+	0x3cc4: 0x4052b220, 0x3cc5: 0x4052b420, 0x3cc6: 0x4052b620, 0x3cc7: 0x4052b820,
+	0x3cc8: 0x4052ba20, 0x3cc9: 0x4052bc20, 0x3cca: 0x4052be20, 0x3ccb: 0x4052c020,
+	0x3ccc: 0x4052c220, 0x3ccd: 0x4052c420, 0x3cce: 0x4052c620, 0x3ccf: 0x4052c820,
+	0x3cd0: 0x4052ca20, 0x3cd1: 0x4052cc20, 0x3cd2: 0x4052ce20, 0x3cd3: 0x4052d020,
+	0x3cd4: 0x4052d220, 0x3cd5: 0x4052d420, 0x3cd6: 0x4052d620, 0x3cd7: 0x4052d820,
+	0x3cd8: 0x4052da20, 0x3cd9: 0x4052dc20, 0x3cda: 0x4052de20, 0x3cdb: 0x4052e020,
+	0x3cdc: 0x4052e220, 0x3cdd: 0x4052e420, 0x3cde: 0x4052e620, 0x3cdf: 0x4052e820,
+	0x3ce0: 0x4052ea20, 0x3ce1: 0x4052ec20, 0x3ce2: 0x4052ee20, 0x3ce3: 0x4052f020,
+	0x3ce4: 0x4052f220, 0x3ce5: 0x4052f420, 0x3ce6: 0x4052f620, 0x3ce7: 0x4052f820,
+	0x3ce8: 0x4052fa20, 0x3ce9: 0x4052fc20, 0x3cea: 0x4052fe20, 0x3ceb: 0x40530220,
+	0x3cec: 0x00530284, 0x3ced: 0x40530620, 0x3cee: 0x40530820, 0x3cef: 0x40530a20,
+	0x3cf0: 0x40530c20, 0x3cf1: 0x40530e20, 0x3cf2: 0x40531020, 0x3cf3: 0xa070f102,
+	0x3cf4: 0x40531220, 0x3cf5: 0x40532420, 0x3cf6: 0x40531620, 0x3cf7: 0x40531820,
+	0x3cf8: 0x40531a20, 0x3cf9: 0x40531c20, 0x3cfa: 0x40532020, 0x3cfb: 0x40532220,
+	0x3cfc: 0x40531420, 0x3cfd: 0x40531e20, 0x3cfe: 0x40530020, 0x3cff: 0x40530420,
+	// Block 0xf4, offset 0x3d00
+	0x3d00: 0x82092993, 0x3d01: 0x40036e20, 0x3d02: 0x40037020, 0x3d03: 0x40037220,
+	0x3d04: 0x40037420, 0x3d05: 0x40037620, 0x3d06: 0x40037820, 0x3d07: 0x4002b020,
+	0x3d08: 0x40033620, 0x3d09: 0x40033820, 0x3d0a: 0x40037a20, 0x3d0b: 0x40037c20,
+	0x3d0c: 0x40037e20, 0x3d0d: 0x40038020, 0x3d0f: 0x4027c020,
+	0x3d10: 0xe00001c1, 0x3d11: 0xe0000255, 0x3d12: 0xe000036d, 0x3d13: 0xe0000447,
+	0x3d14: 0xe000051c, 0x3d15: 0xe00005e6, 0x3d16: 0xe00006b1, 0x3d17: 0xe0000759,
+	0x3d18: 0xe0000805, 0x3d19: 0xe00008aa,
+	0x3d1e: 0x4005f620, 0x3d1f: 0x4005f820,
+	// Block 0xf5, offset 0x3d40
+	0x3d40: 0x40519c20, 0x3d41: 0x40519e20, 0x3d42: 0x4051a020, 0x3d43: 0x4051a220,
+	0x3d44: 0x4051a420, 0x3d45: 0x4051a620, 0x3d46: 0x4051a820, 0x3d47: 0x4051aa20,
+	0x3d48: 0x4051ac20, 0x3d49: 0x4051ae20, 0x3d4a: 0x4051b020, 0x3d4b: 0x4051b220,
+	0x3d4c: 0x4051b420, 0x3d4d: 0x4051b620, 0x3d4e: 0x4051b820, 0x3d4f: 0x4051ba20,
+	0x3d50: 0x4051bc20, 0x3d51: 0x4051be20, 0x3d52: 0x4051c020, 0x3d53: 0x4051c220,
+	0x3d54: 0x4051c420, 0x3d55: 0x4051c620, 0x3d56: 0x4051c820, 0x3d57: 0x4051ca20,
+	0x3d58: 0x4051cc20, 0x3d59: 0x4051ce20, 0x3d5a: 0x4051d020, 0x3d5b: 0x4051d220,
+	0x3d5c: 0x4051d420, 0x3d5d: 0x4051d620, 0x3d5e: 0x4051d820, 0x3d5f: 0x4051da20,
+	0x3d60: 0x4051dc20, 0x3d61: 0x4051de20, 0x3d62: 0x4051e020, 0x3d63: 0x4051e220,
+	0x3d64: 0x4051e420, 0x3d65: 0x4051e620, 0x3d66: 0x4051e820, 0x3d67: 0x4051ea20,
+	0x3d68: 0x4051ec20, 0x3d69: 0x4051f620, 0x3d6a: 0x4051f820, 0x3d6b: 0x4051fa20,
+	0x3d6c: 0x4051fc20, 0x3d6d: 0x4051fe20, 0x3d6e: 0x40520020, 0x3d6f: 0x40520220,
+	0x3d70: 0x40520420, 0x3d71: 0x40520620, 0x3d72: 0x40520820, 0x3d73: 0x4051ee20,
+	0x3d74: 0x4051f020, 0x3d75: 0x4051f220, 0x3d76: 0x4051f420,
+	// Block 0xf6, offset 0x3d80
+	0x3d80: 0x40520a20, 0x3d81: 0x40520c20, 0x3d82: 0x40520e20, 0x3d83: 0x40521020,
+	0x3d84: 0x40521220, 0x3d85: 0x40521420, 0x3d86: 0x40521620, 0x3d87: 0x40521820,
+	0x3d88: 0x40521a20, 0x3d89: 0x40521c20, 0x3d8a: 0x40521e20, 0x3d8b: 0x40522020,
+	0x3d8c: 0x40522220, 0x3d8d: 0x40522420,
+	0x3d90: 0xe00001bb, 0x3d91: 0xe000024f, 0x3d92: 0xe0000367, 0x3d93: 0xe0000441,
+	0x3d94: 0xe0000516, 0x3d95: 0xe00005e0, 0x3d96: 0xe00006ab, 0x3d97: 0xe0000753,
+	0x3d98: 0xe00007ff, 0x3d99: 0xe00008a4,
+	0x3d9c: 0x4005fa20, 0x3d9d: 0x40033a20, 0x3d9e: 0x40033c20, 0x3d9f: 0x40033e20,
+	0x3da0: 0x404e2020, 0x3da1: 0x404e2c20, 0x3da2: 0x404e3020, 0x3da3: 0x404e3420,
+	0x3da4: 0x404e3e20, 0x3da5: 0x404e4620, 0x3da6: 0x404e4c20, 0x3da7: 0x404e5020,
+	0x3da8: 0x404e5420, 0x3da9: 0x404e5820, 0x3daa: 0x404e6820, 0x3dab: 0x404e6e20,
+	0x3dac: 0x404ea820, 0x3dad: 0x404eae20, 0x3dae: 0x404eb220, 0x3daf: 0x404e7a20,
+	0x3db0: 0x4027c220, 0x3db1: 0x404eb420, 0x3db2: 0x404e3820, 0x3db3: 0x404e8e20,
+	0x3db4: 0x404f3a20, 0x3db5: 0x404f3c20, 0x3db6: 0x404f3e20, 0x3db7: 0x4007ac20,
+	0x3db8: 0x4007ae20, 0x3db9: 0x4007b020, 0x3dba: 0x404e9020, 0x3dbb: 0x404f3820,
+	// Block 0xf7, offset 0x3dc0
+	0x3dc0: 0x4049f020, 0x3dc1: 0x4049f220, 0x3dc2: 0x4049f420, 0x3dc3: 0x4049f620,
+	0x3dc4: 0x4049f820, 0x3dc5: 0x4049fa20, 0x3dc6: 0x4049fc20, 0x3dc7: 0x4049fe20,
+	0x3dc8: 0x404a0020, 0x3dc9: 0x404a0220, 0x3dca: 0x404a0420, 0x3dcb: 0x404a0620,
+	0x3dcc: 0x404a0820, 0x3dcd: 0x404a0a20, 0x3dce: 0x404a0c20, 0x3dcf: 0x404a0e20,
+	0x3dd0: 0x404a1020, 0x3dd1: 0x404a1220, 0x3dd2: 0x404a1420, 0x3dd3: 0x404a1620,
+	0x3dd4: 0x404a1820, 0x3dd5: 0x404a1a20, 0x3dd6: 0x404a1c20, 0x3dd7: 0x404a1e20,
+	0x3dd8: 0x404a2020, 0x3dd9: 0x404a2220, 0x3dda: 0x404a2420, 0x3ddb: 0x404a2620,
+	0x3ddc: 0x404a2820, 0x3ddd: 0x404a2a20, 0x3dde: 0x404a2c20, 0x3ddf: 0x404a2e20,
+	0x3de0: 0x404a3020, 0x3de1: 0x404a3220, 0x3de2: 0x404a3420, 0x3de3: 0x404a3620,
+	0x3de4: 0x404a3820, 0x3de5: 0x404a3a20, 0x3de6: 0x404a3c20, 0x3de7: 0x404a3e20,
+	0x3de8: 0x404a4020, 0x3de9: 0x404a4220, 0x3dea: 0x404a4420, 0x3deb: 0x404a4620,
+	0x3dec: 0x404a4820, 0x3ded: 0x404a4a20, 0x3dee: 0x404a4c20, 0x3def: 0x404a4e20,
+	0x3df0: 0x82e62528, 0x3df1: 0x404a5220, 0x3df2: 0x82e6252a, 0x3df3: 0x82e6252b,
+	0x3df4: 0x82dc252c, 0x3df5: 0xc20e0671, 0x3df6: 0xc23f0671, 0x3df7: 0x82e6252f,
+	0x3df8: 0x82e62530, 0x3df9: 0xc2700671, 0x3dfa: 0x404a6420, 0x3dfb: 0xc2a10671,
+	0x3dfc: 0xc2d20671, 0x3dfd: 0x404a6a20, 0x3dfe: 0x82e62536, 0x3dff: 0xae610c02,
+	// Block 0xf8, offset 0x3e00
+	0x3e00: 0x404a6e20, 0x3e01: 0xae610d02, 0x3e02: 0x404a7020,
+	0x3e1b: 0x404a7220,
+	0x3e1c: 0x404a7420, 0x3e1d: 0x4027c420, 0x3e1e: 0x40057e20, 0x3e1f: 0x40058020,
+	0x3e20: 0x40456420, 0x3e21: 0x40456620, 0x3e22: 0x40456820, 0x3e23: 0x40456a20,
+	0x3e24: 0x40456c20, 0x3e25: 0x40456e20, 0x3e26: 0x40457020, 0x3e27: 0x40457220,
+	0x3e28: 0x40457420, 0x3e29: 0x40457620, 0x3e2a: 0x40457820, 0x3e2b: 0x40458a20,
+	0x3e2c: 0x40458c20, 0x3e2d: 0x40458e20, 0x3e2e: 0x40459020, 0x3e2f: 0x40459220,
+	0x3e30: 0x40034020, 0x3e31: 0x4002dc20, 0x3e32: 0x40452c20, 0x3e33: 0x4027c620,
+	0x3e34: 0x4027c820, 0x3e35: 0x40459420, 0x3e36: 0x820922d4,
+	// Block 0xf9, offset 0x3e40
+	0x3e41: 0x403cae20, 0x3e42: 0x403cb020, 0x3e43: 0x403cb220,
+	0x3e44: 0x403cb420, 0x3e45: 0x403cb620, 0x3e46: 0x403cb820,
+	0x3e49: 0x403e3c20, 0x3e4a: 0x403e3e20, 0x3e4b: 0x403e4020,
+	0x3e4c: 0x403e4220, 0x3e4d: 0x403e4420, 0x3e4e: 0x403e4620,
+	0x3e51: 0x403dfe20, 0x3e52: 0x403e0020, 0x3e53: 0x403e0220,
+	0x3e54: 0x403e0420, 0x3e55: 0x403e0620, 0x3e56: 0x403e0820,
+	0x3e60: 0x403ec220, 0x3e61: 0x403ec420, 0x3e62: 0x403ec620, 0x3e63: 0x403ec820,
+	0x3e64: 0x403eca20, 0x3e65: 0x403ecc20, 0x3e66: 0x403ece20,
+	0x3e68: 0x403ef220, 0x3e69: 0x403ef420, 0x3e6a: 0x403ef620, 0x3e6b: 0x403ef820,
+	0x3e6c: 0x403efa20, 0x3e6d: 0x403efc20, 0x3e6e: 0x403efe20,
+	// Block 0xfa, offset 0x3e80
+	0x3e80: 0x40452e20, 0x3e81: 0x40453020, 0x3e82: 0x40453220, 0x3e83: 0x40453420,
+	0x3e84: 0x40453620, 0x3e85: 0x40453820, 0x3e86: 0x40453a20, 0x3e87: 0x40453c20,
+	0x3e88: 0x40453e20, 0x3e89: 0x40454020, 0x3e8a: 0x40454220, 0x3e8b: 0x40454420,
+	0x3e8c: 0x40454620, 0x3e8d: 0x40454820, 0x3e8e: 0x40454a20, 0x3e8f: 0x40454c20,
+	0x3e90: 0x40454e20, 0x3e91: 0x40455020, 0x3e92: 0x40455220, 0x3e93: 0x40455420,
+	0x3e94: 0x40455620, 0x3e95: 0x40455820, 0x3e96: 0x40455a20, 0x3e97: 0x40455c20,
+	0x3e98: 0x40455e20, 0x3e99: 0x40456020, 0x3e9a: 0x40456220, 0x3e9b: 0x40459620,
+	0x3e9c: 0x40459820, 0x3e9d: 0x40459a20, 0x3e9e: 0x40459c20, 0x3e9f: 0x40459e20,
+	0x3ea0: 0x4045a020, 0x3ea1: 0x4045a220, 0x3ea2: 0x4045a420, 0x3ea3: 0x40457a20,
+	0x3ea4: 0x40457c20, 0x3ea5: 0x40457e20, 0x3ea6: 0x40458020, 0x3ea7: 0x40458220,
+	0x3ea8: 0x40458420, 0x3ea9: 0x40458620, 0x3eaa: 0x40458820, 0x3eab: 0x40034220,
+	0x3eac: 0xa000fa02, 0x3ead: 0x820922d3,
+	0x3eb0: 0xe0000188, 0x3eb1: 0xe0000219, 0x3eb2: 0xe0000334, 0x3eb3: 0xe000040e,
+	0x3eb4: 0xe00004e3, 0x3eb5: 0xe00005ad, 0x3eb6: 0xe0000678, 0x3eb7: 0xe0000720,
+	0x3eb8: 0xe00007cc, 0x3eb9: 0xe0000871,
+	// Block 0xfb, offset 0x3ec0
+	0x3ef0: 0x40643620, 0x3ef1: 0x40643820, 0x3ef2: 0x40643a20, 0x3ef3: 0x40643c20,
+	0x3ef4: 0x40643e20, 0x3ef5: 0x40644020, 0x3ef6: 0x40644220, 0x3ef7: 0x40644420,
+	0x3ef8: 0x40644620, 0x3ef9: 0x40644820, 0x3efa: 0x40644a20, 0x3efb: 0x40644c20,
+	0x3efc: 0x40644e20, 0x3efd: 0x40645020, 0x3efe: 0x40645220, 0x3eff: 0x40645420,
+	// Block 0xfc, offset 0x3f00
+	0x3f00: 0x40645620, 0x3f01: 0x40645820, 0x3f02: 0x40645a20, 0x3f03: 0x40645c20,
+	0x3f04: 0x40645e20, 0x3f05: 0x40646020, 0x3f06: 0x40646220,
+	0x3f0b: 0x40651420,
+	0x3f0c: 0x40651620, 0x3f0d: 0x40651820, 0x3f0e: 0x40651a20, 0x3f0f: 0x40651c20,
+	0x3f10: 0x40651e20, 0x3f11: 0x40652020, 0x3f12: 0x40652220, 0x3f13: 0x40652420,
+	0x3f14: 0x40652620, 0x3f15: 0x40652820, 0x3f16: 0x40652a20, 0x3f17: 0x40652c20,
+	0x3f18: 0x40652e20, 0x3f19: 0x40653020, 0x3f1a: 0x40653220, 0x3f1b: 0x40653420,
+	0x3f1c: 0x40653620, 0x3f1d: 0x40653820, 0x3f1e: 0x40653a20, 0x3f1f: 0x40653c20,
+	0x3f20: 0x40653e20, 0x3f21: 0x40654020, 0x3f22: 0x40654220, 0x3f23: 0x40654420,
+	0x3f24: 0x40654620, 0x3f25: 0x40654820, 0x3f26: 0x40654a20, 0x3f27: 0x40654c20,
+	0x3f28: 0x40654e20, 0x3f29: 0x40655020, 0x3f2a: 0x40655220, 0x3f2b: 0x40655420,
+	0x3f2c: 0x40655620, 0x3f2d: 0x40655820, 0x3f2e: 0x40655a20, 0x3f2f: 0x40655c20,
+	0x3f30: 0x40655e20, 0x3f31: 0x40656020, 0x3f32: 0x40656220, 0x3f33: 0x40656420,
+	0x3f34: 0x40656620, 0x3f35: 0x40656820, 0x3f36: 0x40656a20, 0x3f37: 0x40656c20,
+	0x3f38: 0x40656e20, 0x3f39: 0x40657020, 0x3f3a: 0x40657220, 0x3f3b: 0x40657420,
+	// Block 0xfd, offset 0x3f40
+	0x3f40: 0x43189020, 0x3f41: 0x42cde820, 0x3f42: 0x431d9420, 0x3f43: 0x43199020,
+	0x3f44: 0x42dda220, 0x3f45: 0x429c6420, 0x3f46: 0x42a7ca20, 0x3f47: 0x433f3820,
+	0x3f48: 0x433f3820, 0x3f49: 0x42b2a220, 0x3f4a: 0x4323a220, 0x3f4b: 0x42ab0e20,
+	0x3f4c: 0x42b29020, 0x3f4d: 0x42c3ec20, 0x3f4e: 0x42ecd220, 0x3f4f: 0x42ff0a20,
+	0x3f50: 0x430c7e20, 0x3f51: 0x430f7420, 0x3f52: 0x4311f020, 0x3f53: 0x43211e20,
+	0x3f54: 0x42d40420, 0x3f55: 0x42da3620, 0x3f56: 0x42e1b220, 0x3f57: 0x42e7bc20,
+	0x3f58: 0x43087a20, 0x3f59: 0x4322d420, 0x3f5a: 0x4333e220, 0x3f5b: 0x429d0420,
+	0x3f5c: 0x42a6ea20, 0x3f5d: 0x42d60820, 0x3f5e: 0x42e43620, 0x3f5f: 0x430c5a20,
+	0x3f60: 0x433c3c20, 0x3f61: 0x42baa020, 0x3f62: 0x42dfd620, 0x3f63: 0x430b9a20,
+	0x3f64: 0x4312c820, 0x3f65: 0x42c59220, 0x3f66: 0x4303b020, 0x3f67: 0x43103e20,
+	0x3f68: 0x42bd9420, 0x3f69: 0x42ce2e20, 0x3f6a: 0x42dad420, 0x3f6b: 0x42e5f820,
+	0x3f6c: 0x43219c20, 0x3f6d: 0x429f0c20, 0x3f6e: 0x42a36e20, 0x3f6f: 0x42a5bc20,
+	0x3f70: 0x42c98820, 0x3f71: 0x42d5a620, 0x3f72: 0x42e42020, 0x3f73: 0x42edce20,
+	0x3f74: 0x43000220, 0x3f75: 0x430c0c20, 0x3f76: 0x430cb820, 0x3f77: 0x431bde20,
+	0x3f78: 0x432e6420, 0x3f79: 0x4336de20, 0x3f7a: 0x433bf420, 0x3f7b: 0x42f11820,
+	0x3f7c: 0x42f2fe20, 0x3f7d: 0x42fb4020, 0x3f7e: 0x43079220, 0x3f7f: 0x43260820,
+	// Block 0xfe, offset 0x3f80
+	0x3f80: 0x433cfe20, 0x3f81: 0x4315ac20, 0x3f82: 0x42b1be20, 0x3f83: 0x42be0820,
+	0x3f84: 0x42f8c020, 0x3f85: 0x4300fc20, 0x3f86: 0x42e4c420, 0x3f87: 0x42f19420,
+	0x3f88: 0x43198420, 0x3f89: 0x432dee20, 0x3f8a: 0x42b1b020, 0x3f8b: 0x42b8c420,
+	0x3f8c: 0x42d42620, 0x3f8d: 0x42dbb420, 0x3f8e: 0x42de1e20, 0x3f8f: 0x42fa5e20,
+	0x3f90: 0x42fc6e20, 0x3f91: 0x432c9620, 0x3f92: 0x42a5a420, 0x3f93: 0x43011620,
+	0x3f94: 0x42a3b820, 0x3f95: 0x42a39820, 0x3f96: 0x42f43820, 0x3f97: 0x42fb7c20,
+	0x3f98: 0x4307e220, 0x3f99: 0x432cea20, 0x3f9a: 0x43170020, 0x3f9b: 0x42c59e20,
+	0x3f9c: 0x42d40420, 0x3f9d: 0x4315fc20, 0x3f9e: 0x429c7220, 0x3f9f: 0x42b7ce20,
+	0x3fa0: 0x42c02420, 0x3fa1: 0x42e70e20, 0x3fa2: 0x42eae020, 0x3fa3: 0x42a62e20,
+	0x3fa4: 0x42f1f620, 0x3fa5: 0x429f7e20, 0x3fa6: 0x42bf5220, 0x3fa7: 0x429c1a20,
+	0x3fa8: 0x42d99820, 0x3fa9: 0x42caf020, 0x3faa: 0x42fa4420, 0x3fab: 0x42a78620,
+	0x3fac: 0x42b0bc20, 0x3fad: 0x42ee0220, 0x3fae: 0x43089220, 0x3faf: 0x43155420,
+	0x3fb0: 0x42d77420, 0x3fb1: 0x431f6020, 0x3fb2: 0x42d91020, 0x3fb3: 0x42c5fc20,
+	0x3fb4: 0x4305ca20, 0x3fb5: 0x42c74020, 0x3fb6: 0x42eaca20, 0x3fb7: 0x429d5c20,
+	0x3fb8: 0x42a2d220, 0x3fb9: 0x42a39220, 0x3fba: 0x42d10220, 0x3fbb: 0x42f9ce20,
+	0x3fbc: 0x4304de20, 0x3fbd: 0x4315a420, 0x3fbe: 0x43239e20, 0x3fbf: 0x42a5ea20,
+	// Block 0xff, offset 0x3fc0
+	0x3fc0: 0x42a88420, 0x3fc1: 0x42b2e620, 0x3fc2: 0x42bdd820, 0x3fc3: 0x42cb8a20,
+	0x3fc4: 0x42dffc20, 0x3fc5: 0x42f25420, 0x3fc6: 0x432b5a20, 0x3fc7: 0x4334d420,
+	0x3fc8: 0x433d2e20, 0x3fc9: 0x433d9c20, 0x3fca: 0x42a53620, 0x3fcb: 0x42cd8c20,
+	0x3fcc: 0x42d6ee20, 0x3fcd: 0x431ec420, 0x3fce: 0x42bce820, 0x3fcf: 0x42c32020,
+	0x3fd0: 0x42c40020, 0x3fd1: 0x42c93420, 0x3fd2: 0x42de4620, 0x3fd3: 0x42e29220,
+	0x3fd4: 0x42e91220, 0x3fd5: 0x42f39420, 0x3fd6: 0x42fbe820, 0x3fd7: 0x4300de20,
+	0x3fd8: 0x431e4c20, 0x3fd9: 0x4309dc20, 0x3fda: 0x43204620, 0x3fdb: 0x43269420,
+	0x3fdc: 0x42a42e20, 0x3fdd: 0x42a54620, 0x3fde: 0x42a97a20, 0x3fdf: 0x42e19020,
+	0x3fe0: 0x43118420, 0x3fe1: 0x43155420, 0x3fe2: 0x42bd9220, 0x3fe3: 0x42bfea20,
+	0x3fe4: 0x42c6f620, 0x3fe5: 0x42d75c20, 0x3fe6: 0x42f87c20, 0x3fe7: 0x42e6ea20,
+	0x3fe8: 0x429dc820, 0x3fe9: 0x42adf220, 0x3fea: 0x42b7ce20, 0x3feb: 0x42bb7420,
+	0x3fec: 0x42c03820, 0x3fed: 0x42e76420, 0x3fee: 0x42e8d220, 0x3fef: 0x42ff3420,
+	0x3ff0: 0x43008c20, 0x3ff1: 0x43246820, 0x3ff2: 0x432dec20, 0x3ff3: 0x432e9020,
+	0x3ff4: 0x43303020, 0x3ff5: 0x429f1620, 0x3ff6: 0x42f35c20, 0x3ff7: 0x43236820,
+	0x3ff8: 0x432d7020, 0x3ff9: 0x42c1c220, 0x3ffa: 0x429d0c20, 0x3ffb: 0x42a1b420,
+	0x3ffc: 0x42b7dc20, 0x3ffd: 0x42b87e20, 0x3ffe: 0x42cb3220, 0x3fff: 0x42d40420,
+	// Block 0x100, offset 0x4000
+	0x4000: 0x42e39c20, 0x4001: 0x42ec8420, 0x4002: 0x4309f820, 0x4003: 0x4320f820,
+	0x4004: 0x433f1a20, 0x4005: 0x42cd1020, 0x4006: 0x432c5c20, 0x4007: 0x42a51220,
+	0x4008: 0x42cef620, 0x4009: 0x42cfe620, 0x400a: 0x42da8220, 0x400b: 0x42dd3820,
+	0x400c: 0x42e81220, 0x400d: 0x42eab220, 0x400e: 0x42f0d620, 0x400f: 0x42fa2020,
+	0x4010: 0x4330bc20, 0x4011: 0x42a2da20, 0x4012: 0x42c45c20, 0x4013: 0x432cf020,
+	0x4014: 0x42a05620, 0x4015: 0x42ba3220, 0x4016: 0x42dbd420, 0x4017: 0x431e5420,
+	0x4018: 0x42bf1620, 0x4019: 0x42c28820, 0x401a: 0x42d02e20, 0x401b: 0x42e70e20,
+	0x401c: 0x432d0c20, 0x401d: 0x42a45220, 0x401e: 0x42a81e20, 0x401f: 0x42b8ca20,
+	0x4020: 0x42cc2620, 0x4021: 0x42ce9c20, 0x4022: 0x42d15020, 0x4023: 0x42d9ca20,
+	0x4024: 0x42e80c20, 0x4025: 0x42ebc420, 0x4026: 0x42fef220, 0x4027: 0x43119e20,
+	0x4028: 0x4311c220, 0x4029: 0x43239820, 0x402a: 0x432dc420, 0x402b: 0x42a67e20,
+	0x402c: 0x42dd7420, 0x402d: 0x42a83a20, 0x402e: 0x42e3a020, 0x402f: 0x42e93020,
+	0x4030: 0x430bf420, 0x4031: 0x432d4620, 0x4032: 0x4338ae20, 0x4033: 0x433d3e20,
+	0x4034: 0x42cf2e20, 0x4035: 0x42db9620, 0x4036: 0x4303d020, 0x4037: 0x42f59620,
+	0x4038: 0x42f64020, 0x4039: 0x42f92420, 0x403a: 0x42e58020, 0x403b: 0x42e13220,
+	0x403c: 0x4316b020, 0x403d: 0x429d8020, 0x403e: 0x43066c20, 0x403f: 0x42a47420,
+	// Block 0x101, offset 0x4040
+	0x4040: 0x42a40e20, 0x4041: 0x42bd4c20, 0x4042: 0x42c5a620, 0x4043: 0x42f9ac20,
+	0x4044: 0x42b70a20, 0x4045: 0x42da3c20, 0x4046: 0x42cd6820, 0x4047: 0x431e7620,
+	0x4048: 0x43109820, 0x4049: 0x432c9a20, 0x404a: 0x43131620, 0x404b: 0x42bda620,
+	0x404c: 0x42a28020, 0x404d: 0x42ab8020, 0x404e: 0x43f41c20, 0x404f: 0x43f41e20,
+	0x4050: 0x42b0b420, 0x4051: 0x43f42220, 0x4052: 0x42cce820, 0x4053: 0x43f42620,
+	0x4054: 0x43f42820, 0x4055: 0x42a3bc20, 0x4056: 0x42e65420, 0x4057: 0x42ed9420,
+	0x4058: 0x42f27820, 0x4059: 0x42f2bc20, 0x405a: 0x42f2ca20, 0x405b: 0x42f31e20,
+	0x405c: 0x432eac20, 0x405d: 0x42f97c20, 0x405e: 0x42ff7a20, 0x405f: 0x43f43e20,
+	0x4060: 0x430c2420, 0x4061: 0x43f44220, 0x4062: 0x4315f020, 0x4063: 0x43f44620,
+	0x4064: 0x43f44820, 0x4065: 0x43207020, 0x4066: 0x4321fa20, 0x4067: 0x43f44e20,
+	0x4068: 0x43f45020, 0x4069: 0x43f45220, 0x406a: 0x4331de20, 0x406b: 0x4331f820,
+	0x406c: 0x43325020, 0x406d: 0x433b6820, 0x406e: 0x4321bc20, 0x406f: 0x432d6e20,
+	0x4070: 0x429f5c20, 0x4071: 0x42a1ce20, 0x4072: 0x42a29a20, 0x4073: 0x42a59220,
+	0x4074: 0x42a5c820, 0x4075: 0x42a6a220, 0x4076: 0x42ab3a20, 0x4077: 0x42ac0c20,
+	0x4078: 0x42acd020, 0x4079: 0x42b08020, 0x407a: 0x42b15020, 0x407b: 0x42b8c820,
+	0x407c: 0x42b8dc20, 0x407d: 0x42c12820, 0x407e: 0x42c2d020, 0x407f: 0x42c31c20,
+	// Block 0x102, offset 0x4080
+	0x4080: 0x42c3e420, 0x4081: 0x42ca9e20, 0x4082: 0x42cbc420, 0x4083: 0x42cd2220,
+	0x4084: 0x42d10a20, 0x4085: 0x42daee20, 0x4086: 0x42dc3420, 0x4087: 0x42de4420,
+	0x4088: 0x42e2dc20, 0x4089: 0x42e45620, 0x408a: 0x42e84420, 0x408b: 0x42f12220,
+	0x408c: 0x42f27c20, 0x408d: 0x42f29220, 0x408e: 0x42f29020, 0x408f: 0x42f2a020,
+	0x4090: 0x42f2ac20, 0x4091: 0x42f2ba20, 0x4092: 0x42f31a20, 0x4093: 0x42f31c20,
+	0x4094: 0x42f48020, 0x4095: 0x42f50220, 0x4096: 0x42f78020, 0x4097: 0x42fbe820,
+	0x4098: 0x42fc1220, 0x4099: 0x42fc8220, 0x409a: 0x42fee420, 0x409b: 0x43000a20,
+	0x409c: 0x4303da20, 0x409d: 0x4304f220, 0x409e: 0x4304f220, 0x409f: 0x4308ae20,
+	0x40a0: 0x43122020, 0x40a1: 0x43132c20, 0x40a2: 0x43160220, 0x40a3: 0x43167220,
+	0x40a4: 0x4319a620, 0x40a5: 0x431a1020, 0x40a6: 0x431f6c20, 0x40a7: 0x43207020,
+	0x40a8: 0x432dc620, 0x40a9: 0x432ffe20, 0x40aa: 0x43307620, 0x40ab: 0x42c0ea20,
+	0x40ac: 0x4885dc20, 0x40ad: 0x43043020,
+	0x40b0: 0x429c4c20, 0x40b1: 0x42a36a20, 0x40b2: 0x42a2d020, 0x40b3: 0x429f0020,
+	0x40b4: 0x42a28a20, 0x40b5: 0x42a30020, 0x40b6: 0x42a58e20, 0x40b7: 0x42a5f420,
+	0x40b8: 0x42ab3a20, 0x40b9: 0x42aaaa20, 0x40ba: 0x42ab3220, 0x40bb: 0x42abc420,
+	0x40bc: 0x42b0b420, 0x40bd: 0x42b16620, 0x40be: 0x42b28820, 0x40bf: 0x42b2a820,
+	// Block 0x103, offset 0x40c0
+	0x40c0: 0x42b4c420, 0x40c1: 0x42b65020, 0x40c2: 0x42bda420, 0x40c3: 0x42bdb220,
+	0x40c4: 0x42bed220, 0x40c5: 0x42bf5a20, 0x40c6: 0x42c1b020, 0x40c7: 0x42c29c20,
+	0x40c8: 0x42c21020, 0x40c9: 0x42c31c20, 0x40ca: 0x42c2c020, 0x40cb: 0x42c3e420,
+	0x40cc: 0x42c46820, 0x40cd: 0x42c78820, 0x40ce: 0x42c83820, 0x40cf: 0x42c8a420,
+	0x40d0: 0x42caac20, 0x40d1: 0x42cce820, 0x40d2: 0x42ce2e20, 0x40d3: 0x42ce3620,
+	0x40d4: 0x42ceac20, 0x40d5: 0x42d6f220, 0x40d6: 0x42d77420, 0x40d7: 0x42da8220,
+	0x40d8: 0x42ddb620, 0x40d9: 0x42dd9620, 0x40da: 0x42de4420, 0x40db: 0x42e03c20,
+	0x40dc: 0x42e2dc20, 0x40dd: 0x42ef4e20, 0x40de: 0x42e46a20, 0x40df: 0x42e55e20,
+	0x40e0: 0x42e65420, 0x40e1: 0x42e8e220, 0x40e2: 0x42ea0c20, 0x40e3: 0x42ea7620,
+	0x40e4: 0x42ec3a20, 0x40e5: 0x42ec3e20, 0x40e6: 0x42ed9420, 0x40e7: 0x42edb620,
+	0x40e8: 0x42ede820, 0x40e9: 0x42ee9420, 0x40ea: 0x42ee8020, 0x40eb: 0x42f19820,
+	0x40ec: 0x42f56220, 0x40ed: 0x42f78020, 0x40ee: 0x42f8f620, 0x40ef: 0x42fab620,
+	0x40f0: 0x42fbe820, 0x40f1: 0x42fe7c20, 0x40f2: 0x43000a20, 0x40f3: 0x4306a420,
+	0x40f4: 0x4307de20, 0x40f5: 0x430ef220, 0x40f6: 0x43128220, 0x40f7: 0x43130c20,
+	0x40f8: 0x43132c20, 0x40f9: 0x43157e20, 0x40fa: 0x4315f020, 0x40fb: 0x43159620,
+	0x40fc: 0x43160220, 0x40fd: 0x4315fc20, 0x40fe: 0x4315da20, 0x40ff: 0x43167220,
+	// Block 0x104, offset 0x4100
+	0x4100: 0x43171420, 0x4101: 0x431a1020, 0x4102: 0x431e7020, 0x4103: 0x4320e420,
+	0x4104: 0x43233220, 0x4105: 0x4324ec20, 0x4106: 0x432cf820, 0x4107: 0x432dc620,
+	0x4108: 0x432eac20, 0x4109: 0x432fb620, 0x410a: 0x432ffe20, 0x410b: 0x43301620,
+	0x410c: 0x43307620, 0x410d: 0x43362420, 0x410e: 0x433f3820, 0x410f: 0x48509420,
+	0x4110: 0x48508820, 0x4111: 0x4867aa20, 0x4112: 0x44773a20, 0x4113: 0x44803020,
+	0x4114: 0x44807220, 0x4115: 0x48a49220, 0x4116: 0x48b9a020, 0x4117: 0x48fda620,
+	0x4118: 0x433e8620, 0x4119: 0x433f1c20,
+	// Block 0x105, offset 0x4140
+	0x4140: 0xf0000404, 0x4141: 0xf0000404, 0x4142: 0xf0000404, 0x4143: 0xe0000b99,
+	0x4144: 0xe0000b9d, 0x4145: 0xe0000f83, 0x4146: 0xf0000404,
+	0x4153: 0xf0000404,
+	0x4154: 0xf0000404, 0x4155: 0xf0000404, 0x4156: 0xf0000404, 0x4157: 0xf0000404,
+	0x415d: 0xe000150b, 0x415e: 0xa1a09602, 0x415f: 0xe0001514,
+	0x4160: 0x0038ae85, 0x4161: 0x00389085, 0x4162: 0x00389685, 0x4163: 0x00389885,
+	0x4164: 0x0038a485, 0x4165: 0x0038a685, 0x4166: 0x0038a885, 0x4167: 0x0038b685,
+	0x4168: 0x0038ba85, 0x4169: 0x00093885, 0x416a: 0xe0001542, 0x416b: 0xe000153f,
+	0x416c: 0xe000154c, 0x416d: 0xe0001548, 0x416e: 0xe00014e1, 0x416f: 0xe00014e4,
+	0x4170: 0xe00014e7, 0x4171: 0xe00014ea, 0x4172: 0xe00014f0, 0x4173: 0xe00014f3,
+	0x4174: 0xe00014f6, 0x4175: 0xe00014fc, 0x4176: 0xe0001505,
+	0x4178: 0xe0001508, 0x4179: 0xe000150e, 0x417a: 0xe000151b, 0x417b: 0xe0001518,
+	0x417c: 0xe0001521, 0x417e: 0xe0001524,
+	// Block 0x106, offset 0x4180
+	0x4180: 0xe0001527, 0x4181: 0xe000152a, 0x4183: 0xe0001530,
+	0x4184: 0xe000152d, 0x4186: 0xe0001536, 0x4187: 0xe0001539,
+	0x4188: 0xe000153c, 0x4189: 0xe0001545, 0x418a: 0xe0001550, 0x418b: 0xe00014f9,
+	0x418c: 0xe00014ed, 0x418d: 0xe000151e, 0x418e: 0xe0001533, 0x418f: 0xf0000404,
+	0x4190: 0x0039249a, 0x4191: 0x00392499, 0x4192: 0x00393e9a, 0x4193: 0x00393e99,
+	0x4194: 0x00393e97, 0x4195: 0x00393e98, 0x4196: 0x0039409a, 0x4197: 0x00394099,
+	0x4198: 0x00394097, 0x4199: 0x00394098, 0x419a: 0x0039429a, 0x419b: 0x00394299,
+	0x419c: 0x00394297, 0x419d: 0x00394298, 0x419e: 0x00395c9a, 0x419f: 0x00395c99,
+	0x41a0: 0x00395c97, 0x41a1: 0x00395c98, 0x41a2: 0x0039629a, 0x41a3: 0x00396299,
+	0x41a4: 0x00396297, 0x41a5: 0x00396298, 0x41a6: 0x00395a9a, 0x41a7: 0x00395a99,
+	0x41a8: 0x00395a97, 0x41a9: 0x00395a98, 0x41aa: 0x003a049a, 0x41ab: 0x003a0499,
+	0x41ac: 0x003a0497, 0x41ad: 0x003a0498, 0x41ae: 0x003a0a9a, 0x41af: 0x003a0a99,
+	0x41b0: 0x003a0a97, 0x41b1: 0x003a0a98, 0x41b2: 0x0039689a, 0x41b3: 0x00396899,
+	0x41b4: 0x00396897, 0x41b5: 0x00396898, 0x41b6: 0x0039669a, 0x41b7: 0x00396699,
+	0x41b8: 0x00396697, 0x41b9: 0x00396698, 0x41ba: 0x00396a9a, 0x41bb: 0x00396a99,
+	0x41bc: 0x00396a97, 0x41bd: 0x00396a98, 0x41be: 0x00396e9a, 0x41bf: 0x00396e99,
+	// Block 0x107, offset 0x41c0
+	0x41c0: 0x00396e97, 0x41c1: 0x00396e98, 0x41c2: 0x0039969a, 0x41c3: 0x00399699,
+	0x41c4: 0x0039949a, 0x41c5: 0x00399499, 0x41c6: 0x0039989a, 0x41c7: 0x00399899,
+	0x41c8: 0x00398c9a, 0x41c9: 0x00398c99, 0x41ca: 0x0039b69a, 0x41cb: 0x0039b699,
+	0x41cc: 0x0039a89a, 0x41cd: 0x0039a899, 0x41ce: 0x003a1c9a, 0x41cf: 0x003a1c99,
+	0x41d0: 0x003a1c97, 0x41d1: 0x003a1c98, 0x41d2: 0x003a2a9a, 0x41d3: 0x003a2a99,
+	0x41d4: 0x003a2a97, 0x41d5: 0x003a2a98, 0x41d6: 0x003a329a, 0x41d7: 0x003a3299,
+	0x41d8: 0x003a3297, 0x41d9: 0x003a3298, 0x41da: 0x003a2e9a, 0x41db: 0x003a2e99,
+	0x41dc: 0x003a2e97, 0x41dd: 0x003a2e98, 0x41de: 0x003a589a, 0x41df: 0x003a5899,
+	0x41e0: 0x003a5a9a, 0x41e1: 0x003a5a99, 0x41e2: 0x003a5a97, 0x41e3: 0x003a5a98,
+	0x41e4: 0xf0001a1a, 0x41e5: 0xf0001919, 0x41e6: 0x003a6c9a, 0x41e7: 0x003a6c99,
+	0x41e8: 0x003a6c97, 0x41e9: 0x003a6c98, 0x41ea: 0x003a6a9a, 0x41eb: 0x003a6a99,
+	0x41ec: 0x003a6a97, 0x41ed: 0x003a6a98, 0x41ee: 0x003aaa9a, 0x41ef: 0x003aaa99,
+	0x41f0: 0xf0001a1a, 0x41f1: 0xf0001919, 0x41f2: 0x40071820, 0x41f3: 0x40071a20,
+	0x41f4: 0x40071c20, 0x41f5: 0x40071e20, 0x41f6: 0x40072020, 0x41f7: 0x40072220,
+	0x41f8: 0x40072420, 0x41f9: 0x40072620, 0x41fa: 0x40072820, 0x41fb: 0x40072a20,
+	0x41fc: 0x40072c20, 0x41fd: 0x40072e20, 0x41fe: 0x40073020, 0x41ff: 0x40073220,
+	// Block 0x108, offset 0x4200
+	0x4200: 0x40073420, 0x4201: 0x40073620,
+	0x4213: 0x003a269a,
+	0x4214: 0x003a2699, 0x4215: 0x003a2697, 0x4216: 0x003a2698, 0x4217: 0x003a7c9a,
+	0x4218: 0x003a7c99, 0x4219: 0x003a7a9a, 0x421a: 0x003a7a99, 0x421b: 0x003a7e9a,
+	0x421c: 0x003a7e99, 0x421d: 0xf0001a1a, 0x421e: 0x003a849a, 0x421f: 0x003a8499,
+	0x4220: 0x003a789a, 0x4221: 0x003a7899, 0x4222: 0x003a809a, 0x4223: 0x003a8099,
+	0x4224: 0x003a989a, 0x4225: 0x003a9899, 0x4226: 0x003a9897, 0x4227: 0x003a9898,
+	0x4228: 0x003a8e97, 0x4229: 0x003a8e98, 0x422a: 0xe0001559, 0x422b: 0xe0001556,
+	0x422c: 0xe0001589, 0x422d: 0xe0001586, 0x422e: 0xe000158f, 0x422f: 0xe000158c,
+	0x4230: 0xe000159b, 0x4231: 0xe0001598, 0x4232: 0xe0001595, 0x4233: 0xe0001592,
+	0x4234: 0xe00015a1, 0x4235: 0xe000159e, 0x4236: 0xe00015bf, 0x4237: 0xe00015bc,
+	0x4238: 0xe00015b9, 0x4239: 0xe00015ad, 0x423a: 0xe00015a7, 0x423b: 0xe00015a4,
+	0x423c: 0x003a929a, 0x423d: 0x003a9299, 0x423e: 0x003a9297, 0x423f: 0x003a9298,
+	// Block 0x109, offset 0x4240
+	0x4240: 0xe000155f, 0x4241: 0xe0001565, 0x4242: 0xe000157a, 0x4243: 0xe00015b0,
+	0x4244: 0xe00015b6, 0x4245: 0xf0001a1a, 0x4246: 0xf0001a1a, 0x4247: 0xf0001a1a,
+	0x4248: 0xf0001a1a, 0x4249: 0xf0001a1a, 0x424a: 0xf0001a1a, 0x424b: 0xf0001a1a,
+	0x424c: 0xf0001a1a, 0x424d: 0xf0001a1a, 0x424e: 0xf0001a1a, 0x424f: 0xf0001a1a,
+	0x4250: 0xf0001a1a, 0x4251: 0xf0001a1a, 0x4252: 0xf0001a1a, 0x4253: 0xf0001a1a,
+	0x4254: 0xf0001a1a, 0x4255: 0xf0001a1a, 0x4256: 0xf0001a1a, 0x4257: 0xf0001a1a,
+	0x4258: 0xf0001a1a, 0x4259: 0xf0001a1a, 0x425a: 0xf0001a1a, 0x425b: 0xf0001a1a,
+	0x425c: 0xf0001a1a, 0x425d: 0xf0001a1a, 0x425e: 0xf0001a1a, 0x425f: 0xf0001a1a,
+	0x4260: 0xf0001a1a, 0x4261: 0xf0001a1a, 0x4262: 0xf0001a1a, 0x4263: 0xf0001a1a,
+	0x4264: 0xf0001a1a, 0x4265: 0xf0001a1a, 0x4266: 0xf0001a1a, 0x4267: 0xf0001a1a,
+	0x4268: 0xf0001a1a, 0x4269: 0xf0001a1a, 0x426a: 0xf0001a1a, 0x426b: 0xf0001a1a,
+	0x426c: 0xf0001a1a, 0x426d: 0xf0001a1a, 0x426e: 0xf0001a1a, 0x426f: 0xf0001a1a,
+	0x4270: 0xf0001a1a, 0x4271: 0xf0001a1a, 0x4272: 0xf0001a1a, 0x4273: 0xf0001a1a,
+	0x4274: 0xf0001a1a, 0x4275: 0xf0001a1a, 0x4276: 0xf0001a1a, 0x4277: 0xf0001a1a,
+	0x4278: 0xf0001a1a, 0x4279: 0xf0001a1a, 0x427a: 0xf0001a1a, 0x427b: 0xf0001a1a,
+	0x427c: 0xf0001a1a, 0x427d: 0xf0001a1a, 0x427e: 0xf0001a1a, 0x427f: 0xf0001a1a,
+	// Block 0x10a, offset 0x4280
+	0x4280: 0xf0001a1a, 0x4281: 0xf0001a1a, 0x4282: 0xf0001a1a, 0x4283: 0xf0001a1a,
+	0x4284: 0xf0001a1a, 0x4285: 0xf0001a1a, 0x4286: 0xf0001a1a, 0x4287: 0xf0001a1a,
+	0x4288: 0xf0001a1a, 0x4289: 0xf0001a1a, 0x428a: 0xf0001a1a, 0x428b: 0xf0001a1a,
+	0x428c: 0xf0001a1a, 0x428d: 0xf0001a1a, 0x428e: 0xf0001a1a, 0x428f: 0xf0001a1a,
+	0x4290: 0xf0001a1a, 0x4291: 0xf0001a1a, 0x4292: 0xf0001a1a, 0x4293: 0xf0001a1a,
+	0x4294: 0xf0001a1a, 0x4295: 0xf0001a1a, 0x4296: 0xf0001a1a, 0x4297: 0xf0001a1a,
+	0x4298: 0xf0001a1a, 0x4299: 0xf0001a1a, 0x429a: 0xf0001a1a, 0x429b: 0xf0001a1a,
+	0x429c: 0xf0001a1a, 0x429d: 0xf0001a1a, 0x429e: 0xe0000003, 0x429f: 0xe0000006,
+	0x42a0: 0xe0000009, 0x42a1: 0xe000000c, 0x42a2: 0xe000000f, 0x42a3: 0xe0000012,
+	0x42a4: 0xe000156b, 0x42a5: 0xe000156e, 0x42a6: 0xe0001577, 0x42a7: 0xe000157d,
+	0x42a8: 0xe00015aa, 0x42a9: 0xe00015b3, 0x42aa: 0xf0001919, 0x42ab: 0xf0001919,
+	0x42ac: 0xf0001919, 0x42ad: 0xf0001919, 0x42ae: 0xf0001919, 0x42af: 0xf0001919,
+	0x42b0: 0xf0001919, 0x42b1: 0xf0001919, 0x42b2: 0xf0001919, 0x42b3: 0xf0001919,
+	0x42b4: 0xf0001919, 0x42b5: 0xf0001919, 0x42b6: 0xf0001919, 0x42b7: 0xf0001919,
+	0x42b8: 0xf0001919, 0x42b9: 0xf0001919, 0x42ba: 0xf0001919, 0x42bb: 0xf0001919,
+	0x42bc: 0xf0001919, 0x42bd: 0xf0001919, 0x42be: 0xf0001919, 0x42bf: 0xf0001919,
+	// Block 0x10b, offset 0x42c0
+	0x42c0: 0xf0001919, 0x42c1: 0xf0001919, 0x42c2: 0xf0001919, 0x42c3: 0xf0001919,
+	0x42c4: 0xf0001919, 0x42c5: 0xf0001919, 0x42c6: 0xf0001919, 0x42c7: 0xf0001919,
+	0x42c8: 0xf0001919, 0x42c9: 0xf0001919, 0x42ca: 0xf0001919, 0x42cb: 0xf0001919,
+	0x42cc: 0xf0001919, 0x42cd: 0xf0001919, 0x42ce: 0xf0001919, 0x42cf: 0xf0001919,
+	0x42d0: 0xf0001919, 0x42d1: 0xf0001919, 0x42d2: 0xf0001919, 0x42d3: 0xf0001919,
+	0x42d4: 0xf0001919, 0x42d5: 0xf0001919, 0x42d6: 0xf0001919, 0x42d7: 0xe000155c,
+	0x42d8: 0xe0001562, 0x42d9: 0xe0001568, 0x42da: 0xe0001571, 0x42db: 0xe0001580,
+	0x42dc: 0xf0001717, 0x42dd: 0xf0001717, 0x42de: 0xf0001717, 0x42df: 0xf0001717,
+	0x42e0: 0xf0001717, 0x42e1: 0xf0001717, 0x42e2: 0xf0001717, 0x42e3: 0xf0001717,
+	0x42e4: 0xf0001717, 0x42e5: 0xf0001717, 0x42e6: 0xf0001717, 0x42e7: 0xf0001717,
+	0x42e8: 0xf0001717, 0x42e9: 0xf0001717, 0x42ea: 0xf0001717, 0x42eb: 0xf0001717,
+	0x42ec: 0xf0001717, 0x42ed: 0xf0001717, 0x42ee: 0xf0001717, 0x42ef: 0xf0001717,
+	0x42f0: 0xf0001717, 0x42f1: 0xf0001717, 0x42f2: 0xf0001717, 0x42f3: 0xf0001717,
+	0x42f4: 0xf0001717, 0x42f5: 0xf0001717, 0x42f6: 0xf0001717, 0x42f7: 0xf0001717,
+	0x42f8: 0xf0001717, 0x42f9: 0xf0001717, 0x42fa: 0xf0001717, 0x42fb: 0xf0001717,
+	0x42fc: 0xf0001717, 0x42fd: 0xf0001717, 0x42fe: 0xf0001717, 0x42ff: 0xf0001717,
+	// Block 0x10c, offset 0x4300
+	0x4300: 0xf0001717, 0x4301: 0xf0001717, 0x4302: 0xf0001717, 0x4303: 0xf0001717,
+	0x4304: 0xf0001717, 0x4305: 0xf0001717, 0x4306: 0xf0001717, 0x4307: 0xf0001717,
+	0x4308: 0xf0001717, 0x4309: 0xf0001717, 0x430a: 0xf0001717, 0x430b: 0xf0001717,
+	0x430c: 0xf0001717, 0x430d: 0xf0001717, 0x430e: 0xf0001717, 0x430f: 0xf0001717,
+	0x4310: 0xf0001717, 0x4311: 0xf0001717, 0x4312: 0xf0001717, 0x4313: 0xf0001717,
+	0x4314: 0xf0001717, 0x4315: 0xf0001717, 0x4316: 0xf0001717, 0x4317: 0xf0001717,
+	0x4318: 0xf0001717, 0x4319: 0xf0001717, 0x431a: 0xf0001717, 0x431b: 0xf0001717,
+	0x431c: 0xf0001717, 0x431d: 0xf0001717, 0x431e: 0xf0001717, 0x431f: 0xe0001574,
+	0x4320: 0xe0001583, 0x4321: 0xf0001818, 0x4322: 0xf0001818, 0x4323: 0xf0001818,
+	0x4324: 0xf0001818, 0x4325: 0xf0001818, 0x4326: 0xf0001818, 0x4327: 0xf0001818,
+	0x4328: 0xf0001818, 0x4329: 0xf0001818, 0x432a: 0xf0001818, 0x432b: 0xf0001818,
+	0x432c: 0xf0001818, 0x432d: 0xf0001818, 0x432e: 0xf0001818, 0x432f: 0xf0001818,
+	0x4330: 0xf0001818, 0x4331: 0xf0001818, 0x4332: 0xf0001818, 0x4333: 0xf0001818,
+	0x4334: 0xf0001818, 0x4335: 0xf0001a1a, 0x4336: 0xf0001a1a, 0x4337: 0xf0001a1a,
+	0x4338: 0xf0001a1a, 0x4339: 0xf0001a1a, 0x433a: 0xf0001a1a, 0x433b: 0xf0001a1a,
+	0x433c: 0xf0001a1a, 0x433d: 0xf0001a1a, 0x433e: 0xf0001a1a, 0x433f: 0xf0001a1a,
+	// Block 0x10d, offset 0x4340
+	0x4340: 0xf0001a1a, 0x4341: 0xf0001a1a, 0x4342: 0xf0001a1a, 0x4343: 0xf0001a1a,
+	0x4344: 0xf0001a1a, 0x4345: 0xf0001a1a, 0x4346: 0xf0001a1a, 0x4347: 0xf0001a1a,
+	0x4348: 0xf0001a1a, 0x4349: 0xf0001a1a, 0x434a: 0xf0001a1a, 0x434b: 0xf0001a1a,
+	0x434c: 0xf0001a1a, 0x434d: 0xf0001a1a, 0x434e: 0xf0001a1a, 0x434f: 0xf0001a1a,
+	0x4350: 0xf0001a1a, 0x4351: 0xf0001919, 0x4352: 0xf0001919, 0x4353: 0xf0001919,
+	0x4354: 0xf0001919, 0x4355: 0xf0001919, 0x4356: 0xf0001919, 0x4357: 0xf0001919,
+	0x4358: 0xf0001919, 0x4359: 0xf0001919, 0x435a: 0xf0001919, 0x435b: 0xf0001919,
+	0x435c: 0xf0001919, 0x435d: 0xf0001919, 0x435e: 0xf0001919, 0x435f: 0xf0001919,
+	0x4360: 0xf0001919, 0x4361: 0xf0001919, 0x4362: 0xf0001919, 0x4363: 0xf0001919,
+	0x4364: 0xf0001919, 0x4365: 0xf0001919, 0x4366: 0xf0001919, 0x4367: 0xf0001919,
+	0x4368: 0xf0001919, 0x4369: 0xf0001919, 0x436a: 0xf0001919, 0x436b: 0xf0001919,
+	0x436c: 0xf0001919, 0x436d: 0xf0001717, 0x436e: 0xf0001717, 0x436f: 0xf0001717,
+	0x4370: 0xf0001717, 0x4371: 0xf0001717, 0x4372: 0xf0001717, 0x4373: 0xf0001717,
+	0x4374: 0xf0001818, 0x4375: 0xf0001818, 0x4376: 0xf0001818, 0x4377: 0xf0001818,
+	0x4378: 0xf0001818, 0x4379: 0xf0001818, 0x437a: 0xf0001818, 0x437b: 0xf0001818,
+	0x437c: 0xf0001919, 0x437d: 0xf0001a1a, 0x437e: 0x4004c020, 0x437f: 0x4004c220,
+	// Block 0x10e, offset 0x4380
+	0x4390: 0xe00015d4, 0x4391: 0xe00015e4, 0x4392: 0xe00015e0, 0x4393: 0xe00015e8,
+	0x4394: 0xe00015ec, 0x4395: 0xe00015f8, 0x4396: 0xe00015fc, 0x4397: 0xe0001600,
+	0x4398: 0xe0001621, 0x4399: 0xe000161d, 0x439a: 0xe0001635, 0x439b: 0xe0001631,
+	0x439c: 0xe0001646, 0x439d: 0xe000163e, 0x439e: 0xe0001642, 0x439f: 0xe000165a,
+	0x43a0: 0xe0001656, 0x43a1: 0xe0001652, 0x43a2: 0xe0001662, 0x43a3: 0xe000165e,
+	0x43a4: 0xe000168a, 0x43a5: 0xe0001686, 0x43a6: 0xe00016b6, 0x43a7: 0xe000166e,
+	0x43a8: 0xe000166a, 0x43a9: 0xe0001666, 0x43aa: 0xe000167a, 0x43ab: 0xe0001676,
+	0x43ac: 0xe0001682, 0x43ad: 0xe000167e, 0x43ae: 0xe00016ba, 0x43af: 0xe00016c6,
+	0x43b0: 0xe00016c2, 0x43b1: 0xe00016ce, 0x43b2: 0xe00016ca, 0x43b3: 0xe00016d2,
+	0x43b4: 0xe00016d6, 0x43b5: 0xe00016de, 0x43b6: 0xe00016eb, 0x43b7: 0xe00016e7,
+	0x43b8: 0xe00016ef, 0x43b9: 0xe00016f7, 0x43ba: 0xe00016ff, 0x43bb: 0xe00016fb,
+	0x43bc: 0xe0001707, 0x43bd: 0xe0001703, 0x43be: 0xe0001717, 0x43bf: 0xe000171b,
+	// Block 0x10f, offset 0x43c0
+	0x43c0: 0xe0001759, 0x43c1: 0xe0001761, 0x43c2: 0xe000175d, 0x43c3: 0xe0001741,
+	0x43c4: 0xe0001745, 0x43c5: 0xe0001769, 0x43c6: 0xe0001765, 0x43c7: 0xe0001771,
+	0x43c8: 0xe000176d, 0x43c9: 0xe000178c, 0x43ca: 0xe0001790, 0x43cb: 0xe0001799,
+	0x43cc: 0xe000177c, 0x43cd: 0xe0001784, 0x43ce: 0xe000179d, 0x43cf: 0xe00017a1,
+	0x43d2: 0xe0001780, 0x43d3: 0xe00017d9,
+	0x43d4: 0xe00017dd, 0x43d5: 0xe00017c5, 0x43d6: 0xe00017c9, 0x43d7: 0xe00017b9,
+	0x43d8: 0xe00017b5, 0x43d9: 0xe00017bd, 0x43da: 0xe00017d5, 0x43db: 0xe00017d1,
+	0x43dc: 0xe00017f8, 0x43dd: 0xe00017f4, 0x43de: 0xe00015d0, 0x43df: 0xe00015dc,
+	0x43e0: 0xe00015d8, 0x43e1: 0xe00015f4, 0x43e2: 0xe00015f0, 0x43e3: 0xe0001608,
+	0x43e4: 0xe0001604, 0x43e5: 0xe0001629, 0x43e6: 0xe000160c, 0x43e7: 0xe0001625,
+	0x43e8: 0xe000164a, 0x43e9: 0xe000168e, 0x43ea: 0xe0001672, 0x43eb: 0xe00016be,
+	0x43ec: 0xe0001751, 0x43ed: 0xe0001775, 0x43ee: 0xe00017f0, 0x43ef: 0xe00017ec,
+	0x43f0: 0xe00017fc, 0x43f1: 0xe00017a9, 0x43f2: 0xe000171f, 0x43f3: 0xe00017cd,
+	0x43f4: 0xe0001713, 0x43f5: 0xe0001755, 0x43f6: 0xe00016f3, 0x43f7: 0xe000172b,
+	0x43f8: 0xe00017ad, 0x43f9: 0xe00017a5, 0x43fa: 0xe0001749, 0x43fb: 0xe0001727,
+	0x43fc: 0xe000174d, 0x43fd: 0xe00017b1, 0x43fe: 0xe0001610, 0x43ff: 0xe000162d,
+	// Block 0x110, offset 0x4400
+	0x4400: 0xe0001788, 0x4401: 0xe000170b, 0x4402: 0xe00015cc, 0x4403: 0xe0001723,
+	0x4404: 0xe00016da, 0x4405: 0xe00016b2, 0x4406: 0xe000164e, 0x4407: 0xe00017c1,
+	0x4430: 0xe00016ae, 0x4431: 0xe000170f, 0x4432: 0xe00015c7, 0x4433: 0xe00015c2,
+	0x4434: 0xe0001794, 0x4435: 0xe0001692, 0x4436: 0xe0001639, 0x4437: 0xe00016e2,
+	0x4438: 0xe00017e7, 0x4439: 0xe0001697, 0x443a: 0xe000169b, 0x443b: 0xe0001614,
+	0x443c: 0x40282e20, 0x443d: 0x40071620,
+	// Block 0x111, offset 0x4440
+	0x4440: 0xa0000000, 0x4441: 0xa0000000, 0x4442: 0xa0000000, 0x4443: 0xa0000000,
+	0x4444: 0xa0000000, 0x4445: 0xa0000000, 0x4446: 0xa0000000, 0x4447: 0xa0000000,
+	0x4448: 0xa0000000, 0x4449: 0xa0000000, 0x444a: 0xa0000000, 0x444b: 0xa0000000,
+	0x444c: 0xa0000000, 0x444d: 0xa0000000, 0x444e: 0xa0000000, 0x444f: 0xa0000000,
+	0x4450: 0x00024096, 0x4451: 0x00025c96, 0x4452: 0x00030496, 0x4453: 0x00026c96,
+	0x4454: 0x00026296, 0x4455: 0x0002ba96, 0x4456: 0x0002c496, 0x4457: 0x0004b496,
+	0x4458: 0x0004b696, 0x4459: 0xf0001616,
+	0x4460: 0xae608202, 0x4461: 0xae600000, 0x4462: 0xae608102, 0x4463: 0xae600000,
+	0x4464: 0xae600000, 0x4465: 0xae600000, 0x4466: 0xae600000,
+	0x4470: 0xf0001f16, 0x4471: 0x00022c96, 0x4472: 0x00022a96, 0x4473: 0x00021696,
+	0x4474: 0x00021696, 0x4475: 0x0003f496, 0x4476: 0x0003f696, 0x4477: 0x0003fc96,
+	0x4478: 0x0003fe96, 0x4479: 0x0004b096, 0x447a: 0x0004b296, 0x447b: 0x0004ac96,
+	0x447c: 0x0004ae96, 0x447d: 0x0004a096, 0x447e: 0x0004a296, 0x447f: 0x00049c96,
+	// Block 0x112, offset 0x4480
+	0x4480: 0x00049e96, 0x4481: 0x0004a496, 0x4482: 0x0004a696, 0x4483: 0x0004a896,
+	0x4484: 0x0004aa96, 0x4485: 0x40025e20, 0x4486: 0x40026020, 0x4487: 0x0003f896,
+	0x4488: 0x0003fa96, 0x4489: 0x00021484, 0x448a: 0x00021484, 0x448b: 0x00021484,
+	0x448c: 0x00021484, 0x448d: 0x00021684, 0x448e: 0x00021684, 0x448f: 0x00021684,
+	0x4490: 0x0002408f, 0x4491: 0x00025c8f, 0x4492: 0x0002e48f,
+	0x4494: 0x0002628f, 0x4495: 0x00026c8f, 0x4496: 0x0002c48f, 0x4497: 0x0002ba8f,
+	0x4498: 0x00022c8f, 0x4499: 0x0003f48f, 0x449a: 0x0003f68f, 0x449b: 0x0003fc8f,
+	0x449c: 0x0003fe8f, 0x449d: 0x0004b08f, 0x449e: 0x0004b28f, 0x449f: 0x0004ea8f,
+	0x44a0: 0x0004e68f, 0x44a1: 0x0004d88f, 0x44a2: 0x0009388f, 0x44a3: 0x00021a8f,
+	0x44a4: 0x0009408f, 0x44a5: 0x0009448f, 0x44a6: 0x0009428f,
+	0x44a8: 0x0004e48f, 0x44a9: 0x0027de8f, 0x44aa: 0x0004ec8f, 0x44ab: 0x0004d68f,
+	0x44b0: 0xa000a21a, 0x44b1: 0xa000a218, 0x44b2: 0xa000a51a, 0x44b3: 0xa0000000,
+	0x44b4: 0xa000a91a, 0x44b6: 0xa000ad1a, 0x44b7: 0xa000ad18,
+	0x44b8: 0xa000b21a, 0x44b9: 0xa000b218, 0x44ba: 0xa000b61a, 0x44bb: 0xa000b618,
+	0x44bc: 0xa000ba1a, 0x44bd: 0xa000ba18, 0x44be: 0xa000bc1a, 0x44bf: 0xa000bc18,
+	// Block 0x113, offset 0x44c0
+	0x44c0: 0x00391c9a, 0x44c1: 0x00391e9a, 0x44c2: 0x00391e99, 0x44c3: 0x0039209a,
+	0x44c4: 0x00392099, 0x44c5: 0x0039269a, 0x44c6: 0x00392699, 0x44c7: 0x0039289a,
+	0x44c8: 0x00392899, 0x44c9: 0x0039309a, 0x44ca: 0x00393099, 0x44cb: 0x00393097,
+	0x44cc: 0x00393098, 0x44cd: 0x0039389a, 0x44ce: 0x00393899, 0x44cf: 0x00393c9a,
+	0x44d0: 0x00393c99, 0x44d1: 0x00393c97, 0x44d2: 0x00393c98, 0x44d3: 0x0039549a,
+	0x44d4: 0x00395499, 0x44d5: 0x0039569a, 0x44d6: 0x00395699, 0x44d7: 0x00395697,
+	0x44d8: 0x00395698, 0x44d9: 0x0039589a, 0x44da: 0x00395899, 0x44db: 0x00395897,
+	0x44dc: 0x00395898, 0x44dd: 0x0039649a, 0x44de: 0x00396499, 0x44df: 0x00396497,
+	0x44e0: 0x00396498, 0x44e1: 0x0039729a, 0x44e2: 0x00397299, 0x44e3: 0x00397297,
+	0x44e4: 0x00397298, 0x44e5: 0x0039749a, 0x44e6: 0x00397499, 0x44e7: 0x00397497,
+	0x44e8: 0x00397498, 0x44e9: 0x0039889a, 0x44ea: 0x00398899, 0x44eb: 0x00398a9a,
+	0x44ec: 0x00398a99, 0x44ed: 0x0039a49a, 0x44ee: 0x0039a499, 0x44ef: 0x0039a69a,
+	0x44f0: 0x0039a699, 0x44f1: 0x0039c69a, 0x44f2: 0x0039c699, 0x44f3: 0x0039c697,
+	0x44f4: 0x0039c698, 0x44f5: 0x0039c89a, 0x44f6: 0x0039c899, 0x44f7: 0x0039c897,
+	0x44f8: 0x0039c898, 0x44f9: 0x0039dc9a, 0x44fa: 0x0039dc99, 0x44fb: 0x0039dc97,
+	0x44fc: 0x0039dc98, 0x44fd: 0x0039de9a, 0x44fe: 0x0039de99, 0x44ff: 0x0039de97,
+	// Block 0x114, offset 0x4500
+	0x4500: 0x0039de98, 0x4501: 0x0039e69a, 0x4502: 0x0039e699, 0x4503: 0x0039e697,
+	0x4504: 0x0039e698, 0x4505: 0x0039e89a, 0x4506: 0x0039e899, 0x4507: 0x0039e897,
+	0x4508: 0x0039e898, 0x4509: 0x0039ee9a, 0x450a: 0x0039ee99, 0x450b: 0x0039ee97,
+	0x450c: 0x0039ee98, 0x450d: 0x0039f09a, 0x450e: 0x0039f099, 0x450f: 0x0039f097,
+	0x4510: 0x0039f098, 0x4511: 0x0039fc9a, 0x4512: 0x0039fc99, 0x4513: 0x0039fc97,
+	0x4514: 0x0039fc98, 0x4515: 0x003a129a, 0x4516: 0x003a1299, 0x4517: 0x003a1297,
+	0x4518: 0x003a1298, 0x4519: 0x003a1a9a, 0x451a: 0x003a1a99, 0x451b: 0x003a1a97,
+	0x451c: 0x003a1a98, 0x451d: 0x003a409a, 0x451e: 0x003a4099, 0x451f: 0x003a4097,
+	0x4520: 0x003a4098, 0x4521: 0x003a4e9a, 0x4522: 0x003a4e99, 0x4523: 0x003a4e97,
+	0x4524: 0x003a4e98, 0x4525: 0x003a569a, 0x4526: 0x003a5699, 0x4527: 0x003a5697,
+	0x4528: 0x003a5698, 0x4529: 0x003a689a, 0x452a: 0x003a6899, 0x452b: 0x003a6897,
+	0x452c: 0x003a6898, 0x452d: 0x003a749a, 0x452e: 0x003a7499, 0x452f: 0x003a8e9a,
+	0x4530: 0x003a8e99, 0x4531: 0x003a909a, 0x4532: 0x003a9099, 0x4533: 0x003a9097,
+	0x4534: 0x003a9098, 0x4535: 0xe0001732, 0x4536: 0xe000172f, 0x4537: 0xe0001738,
+	0x4538: 0xe0001735, 0x4539: 0xe000173e, 0x453a: 0xe000173b, 0x453b: 0xf0001a1a,
+	0x453c: 0xf0001919, 0x453f: 0xa0000000,
+	// Block 0x115, offset 0x4540
+	0x4541: 0x0002ba83, 0x4542: 0x0003e083, 0x4543: 0x0004ea83,
+	0x4544: 0x0027de83, 0x4545: 0x0004ec83, 0x4546: 0x0004e683, 0x4547: 0x0003d283,
+	0x4548: 0x0003f483, 0x4549: 0x0003f683, 0x454a: 0x0004d883, 0x454b: 0x00093883,
+	0x454c: 0x00024083, 0x454d: 0x00021a83, 0x454e: 0x0002e483, 0x454f: 0x0004e283,
+	0x4550: 0x0029cc83, 0x4551: 0x0029ce83, 0x4552: 0x0029d083, 0x4553: 0x0029d283,
+	0x4554: 0x0029d483, 0x4555: 0x0029d683, 0x4556: 0x0029d883, 0x4557: 0x0029da83,
+	0x4558: 0x0029dc83, 0x4559: 0x0029de83, 0x455a: 0x00026c83, 0x455b: 0x00026283,
+	0x455c: 0x00094083, 0x455d: 0x00094283, 0x455e: 0x00094483, 0x455f: 0x0002c483,
+	0x4560: 0x0004d683, 0x4561: 0x002bde89, 0x4562: 0x002c0a89, 0x4563: 0x002c3a89,
+	0x4564: 0x002c6289, 0x4565: 0x002c9889, 0x4566: 0x002d0889, 0x4567: 0x002d2289,
+	0x4568: 0x002d6889, 0x4569: 0x002d9a89, 0x456a: 0x002dcc89, 0x456b: 0x002dfe89,
+	0x456c: 0x002e2289, 0x456d: 0x002e8289, 0x456e: 0x002e9e89, 0x456f: 0x002ee289,
+	0x4570: 0x002f2c89, 0x4571: 0x002f5689, 0x4572: 0x002f7a89, 0x4573: 0x002fe689,
+	0x4574: 0x00302c89, 0x4575: 0x00306c89, 0x4576: 0x0030be89, 0x4577: 0x0030e289,
+	0x4578: 0x0030f689, 0x4579: 0x00310089, 0x457a: 0x00312a89, 0x457b: 0x0003f883,
+	0x457c: 0x0004e483, 0x457d: 0x0003fa83, 0x457e: 0x00062483, 0x457f: 0x00021683,
+	// Block 0x116, offset 0x4580
+	0x4580: 0x00061e83, 0x4581: 0x002bde83, 0x4582: 0x002c0a83, 0x4583: 0x002c3a83,
+	0x4584: 0x002c6283, 0x4585: 0x002c9883, 0x4586: 0x002d0883, 0x4587: 0x002d2283,
+	0x4588: 0x002d6883, 0x4589: 0x002d9a83, 0x458a: 0x002dcc83, 0x458b: 0x002dfe83,
+	0x458c: 0x002e2283, 0x458d: 0x002e8283, 0x458e: 0x002e9e83, 0x458f: 0x002ee283,
+	0x4590: 0x002f2c83, 0x4591: 0x002f5683, 0x4592: 0x002f7a83, 0x4593: 0x002fe683,
+	0x4594: 0x00302c83, 0x4595: 0x00306c83, 0x4596: 0x0030be83, 0x4597: 0x0030e283,
+	0x4598: 0x0030f683, 0x4599: 0x00310083, 0x459a: 0x00312a83, 0x459b: 0x0003fc83,
+	0x459c: 0x00094883, 0x459d: 0x0003fe83, 0x459e: 0x00094c83, 0x459f: 0x00041883,
+	0x45a0: 0x00041a83, 0x45a1: 0x00030492, 0x45a2: 0x0004a492, 0x45a3: 0x0004a692,
+	0x45a4: 0x00025c92, 0x45a5: 0x00023e92, 0x45a6: 0x0065d692, 0x45a7: 0x00657690,
+	0x45a8: 0x00657890, 0x45a9: 0x00657a90, 0x45aa: 0x00657e90, 0x45ab: 0x00658090,
+	0x45ac: 0x0065be90, 0x45ad: 0x0065c090, 0x45ae: 0x0065c490, 0x45af: 0x00659a90,
+	0x45b0: 0x0027d692, 0x45b1: 0x00657692, 0x45b2: 0x00657892, 0x45b3: 0x00657a92,
+	0x45b4: 0x00657e92, 0x45b5: 0x00658092, 0x45b6: 0x00658292, 0x45b7: 0x00658492,
+	0x45b8: 0x00658692, 0x45b9: 0x00658892, 0x45ba: 0x00658a92, 0x45bb: 0x00658c92,
+	0x45bc: 0x00658e92, 0x45bd: 0x00659092, 0x45be: 0x00659292, 0x45bf: 0x00659492,
+	// Block 0x117, offset 0x45c0
+	0x45c0: 0x00659692, 0x45c1: 0x00659892, 0x45c2: 0x00659a92, 0x45c3: 0x00659c92,
+	0x45c4: 0x00659e92, 0x45c5: 0x0065a092, 0x45c6: 0x0065a292, 0x45c7: 0x0065a492,
+	0x45c8: 0x0065a692, 0x45c9: 0x0065a892, 0x45ca: 0x0065aa92, 0x45cb: 0x0065ac92,
+	0x45cc: 0x0065ae92, 0x45cd: 0x0065b092, 0x45ce: 0x0065b292, 0x45cf: 0x0065b492,
+	0x45d0: 0x0065b692, 0x45d1: 0x0065b892, 0x45d2: 0x0065ba92, 0x45d3: 0x0065bc92,
+	0x45d4: 0x0065be92, 0x45d5: 0x0065c092, 0x45d6: 0x0065c492, 0x45d7: 0x0065c692,
+	0x45d8: 0x0065c892, 0x45d9: 0x0065ca92, 0x45da: 0x0065cc92, 0x45db: 0x0065ce92,
+	0x45dc: 0x0065d092, 0x45dd: 0x0065d892, 0x45de: 0xa0012812, 0x45df: 0xa0012912,
+	0x45e0: 0x0063a692, 0x45e1: 0x0062ac92, 0x45e2: 0x0062ae92, 0x45e3: 0x00646892,
+	0x45e4: 0x0062b092, 0x45e5: 0x00646c92, 0x45e6: 0x00646e92, 0x45e7: 0x0062b292,
+	0x45e8: 0x0062b492, 0x45e9: 0x0062b692, 0x45ea: 0x00647492, 0x45eb: 0x00647692,
+	0x45ec: 0x00647892, 0x45ed: 0x00647a92, 0x45ee: 0x00647c92, 0x45ef: 0x00647e92,
+	0x45f0: 0x0062e092, 0x45f1: 0x0062b892, 0x45f2: 0x0062ba92, 0x45f3: 0x0062bc92,
+	0x45f4: 0x0062ee92, 0x45f5: 0x0062be92, 0x45f6: 0x0062c092, 0x45f7: 0x0062c292,
+	0x45f8: 0x0062c492, 0x45f9: 0x0062c692, 0x45fa: 0x0062c892, 0x45fb: 0x0062ca92,
+	0x45fc: 0x0062cc92, 0x45fd: 0x0062ce92, 0x45fe: 0x0062d092,
+	// Block 0x118, offset 0x4600
+	0x4602: 0x0063a892, 0x4603: 0x0063aa92,
+	0x4604: 0x0063ac92, 0x4605: 0x0063ae92, 0x4606: 0x0063b092, 0x4607: 0x0063b292,
+	0x460a: 0x0063b492, 0x460b: 0x0063b692,
+	0x460c: 0x0063b892, 0x460d: 0x0063ba92, 0x460e: 0x0063bc92, 0x460f: 0x0063be92,
+	0x4612: 0x0063c092, 0x4613: 0x0063c292,
+	0x4614: 0x0063c492, 0x4615: 0x0063c692, 0x4616: 0x0063c892, 0x4617: 0x0063ca92,
+	0x461a: 0x0063cc92, 0x461b: 0x0063ce92,
+	0x461c: 0x0063d092,
+	0x4620: 0x0027dc83, 0x4621: 0x0027e083, 0x4622: 0x00094683, 0x4623: 0x00062683,
+	0x4624: 0x00094a83, 0x4625: 0x0027e283, 0x4626: 0x00280883,
+	0x4628: 0x000d3292, 0x4629: 0x00084492, 0x462a: 0x00084892, 0x462b: 0x00084692,
+	0x462c: 0x00084a92, 0x462d: 0x000e6e92, 0x462e: 0x000ec492,
+	0x4639: 0xa0000000, 0x463a: 0xa0000000, 0x463b: 0xa0000000,
+	0x463c: 0x4027ae20, 0x463d: 0x4027b020, 0x463e: 0x00000285, 0x463f: 0x2bfffe85,
+	// Block 0x119, offset 0x4640
+	0x4640: 0x40731a20, 0x4641: 0x40731c20, 0x4642: 0x40731e20, 0x4643: 0x40732020,
+	0x4644: 0x40732220, 0x4645: 0x40732420, 0x4646: 0x40732620, 0x4647: 0x40732820,
+	0x4648: 0x40732a20, 0x4649: 0x40732c20, 0x464a: 0x40732e20, 0x464b: 0x40733020,
+	0x464d: 0x40733220, 0x464e: 0x40733420, 0x464f: 0x40733620,
+	0x4650: 0x40733820, 0x4651: 0x40733a20, 0x4652: 0x40733c20, 0x4653: 0x40733e20,
+	0x4654: 0x40734020, 0x4655: 0x40734220, 0x4656: 0x40734420, 0x4657: 0x40734620,
+	0x4658: 0x40734820, 0x4659: 0x40734a20, 0x465a: 0x40734c20, 0x465b: 0x40734e20,
+	0x465c: 0x40735020, 0x465d: 0x40735220, 0x465e: 0x40735420, 0x465f: 0x40735620,
+	0x4660: 0x40735820, 0x4661: 0x40735a20, 0x4662: 0x40735c20, 0x4663: 0x40735e20,
+	0x4664: 0x40736020, 0x4665: 0x40736220, 0x4666: 0x40736420,
+	0x4668: 0x40736620, 0x4669: 0x40736820, 0x466a: 0x40736a20, 0x466b: 0x40736c20,
+	0x466c: 0x40736e20, 0x466d: 0x40737020, 0x466e: 0x40737220, 0x466f: 0x40737420,
+	0x4670: 0x40737620, 0x4671: 0x40737820, 0x4672: 0x40737a20, 0x4673: 0x40737c20,
+	0x4674: 0x40737e20, 0x4675: 0x40738020, 0x4676: 0x40738220, 0x4677: 0x40738420,
+	0x4678: 0x40738620, 0x4679: 0x40738820, 0x467a: 0x40738a20,
+	0x467c: 0x40738c20, 0x467d: 0x40738e20, 0x467f: 0x40739020,
+	// Block 0x11a, offset 0x4680
+	0x4680: 0x40739220, 0x4681: 0x40739420, 0x4682: 0x40739620, 0x4683: 0x40739820,
+	0x4684: 0x40739a20, 0x4685: 0x40739c20, 0x4686: 0x40739e20, 0x4687: 0x4073a020,
+	0x4688: 0x4073a220, 0x4689: 0x4073a420, 0x468a: 0x4073a620, 0x468b: 0x4073a820,
+	0x468c: 0x4073aa20, 0x468d: 0x4073ac20,
+	0x4690: 0x4073ae20, 0x4691: 0x4073b020, 0x4692: 0x4073b220, 0x4693: 0x4073b420,
+	0x4694: 0x4073b620, 0x4695: 0x4073b820, 0x4696: 0x4073ba20, 0x4697: 0x4073bc20,
+	0x4698: 0x4073be20, 0x4699: 0x4073c020, 0x469a: 0x4073c220, 0x469b: 0x4073c420,
+	0x469c: 0x4073c620, 0x469d: 0x4073c820,
+	// Block 0x11b, offset 0x46c0
+	0x46c0: 0x4073ca20, 0x46c1: 0x4073cc20, 0x46c2: 0x4073ce20, 0x46c3: 0x4073d020,
+	0x46c4: 0x4073d220, 0x46c5: 0x4073d420, 0x46c6: 0x4073d620, 0x46c7: 0x4073d820,
+	0x46c8: 0x4073da20, 0x46c9: 0x4073dc20, 0x46ca: 0x4073de20, 0x46cb: 0x4073e020,
+	0x46cc: 0x4073e220, 0x46cd: 0x4073e420, 0x46ce: 0x4073e620, 0x46cf: 0x4073e820,
+	0x46d0: 0x4073ea20, 0x46d1: 0x4073ec20, 0x46d2: 0x4073ee20, 0x46d3: 0x4073f020,
+	0x46d4: 0x4073f220, 0x46d5: 0x4073f420, 0x46d6: 0x4073f620, 0x46d7: 0x4073f820,
+	0x46d8: 0x4073fa20, 0x46d9: 0x4073fc20, 0x46da: 0x4073fe20, 0x46db: 0x40740020,
+	0x46dc: 0x40740220, 0x46dd: 0x40740420, 0x46de: 0x40740620, 0x46df: 0x40740820,
+	0x46e0: 0x40740a20, 0x46e1: 0x40740c20, 0x46e2: 0x40740e20, 0x46e3: 0x40741020,
+	0x46e4: 0x40741220, 0x46e5: 0x40741420, 0x46e6: 0x40741620, 0x46e7: 0x40741820,
+	0x46e8: 0x40741a20, 0x46e9: 0x40741c20, 0x46ea: 0x40741e20, 0x46eb: 0x40742020,
+	0x46ec: 0x40742220, 0x46ed: 0x40742420, 0x46ee: 0x40742620, 0x46ef: 0x40742820,
+	0x46f0: 0x40742a20, 0x46f1: 0x40742c20, 0x46f2: 0x40742e20, 0x46f3: 0x40743020,
+	0x46f4: 0x40743220, 0x46f5: 0x40743420, 0x46f6: 0x40743620, 0x46f7: 0x40743820,
+	0x46f8: 0x40743a20, 0x46f9: 0x40743c20, 0x46fa: 0x40743e20, 0x46fb: 0x40744020,
+	0x46fc: 0x40744220, 0x46fd: 0x40744420, 0x46fe: 0x40744620, 0x46ff: 0x40744820,
+	// Block 0x11c, offset 0x4700
+	0x4700: 0x40744a20, 0x4701: 0x40744c20, 0x4702: 0x40744e20, 0x4703: 0x40745020,
+	0x4704: 0x40745220, 0x4705: 0x40745420, 0x4706: 0x40745620, 0x4707: 0x40745820,
+	0x4708: 0x40745a20, 0x4709: 0x40745c20, 0x470a: 0x40745e20, 0x470b: 0x40746020,
+	0x470c: 0x40746220, 0x470d: 0x40746420, 0x470e: 0x40746620, 0x470f: 0x40746820,
+	0x4710: 0x40746a20, 0x4711: 0x40746c20, 0x4712: 0x40746e20, 0x4713: 0x40747020,
+	0x4714: 0x40747220, 0x4715: 0x40747420, 0x4716: 0x40747620, 0x4717: 0x40747820,
+	0x4718: 0x40747a20, 0x4719: 0x40747c20, 0x471a: 0x40747e20, 0x471b: 0x40748020,
+	0x471c: 0x40748220, 0x471d: 0x40748420, 0x471e: 0x40748620, 0x471f: 0x40748820,
+	0x4720: 0x40748a20, 0x4721: 0x40748c20, 0x4722: 0x40748e20, 0x4723: 0x40749020,
+	0x4724: 0x40749220, 0x4725: 0x40749420, 0x4726: 0x40749620, 0x4727: 0x40749820,
+	0x4728: 0x40749a20, 0x4729: 0x40749c20, 0x472a: 0x40749e20, 0x472b: 0x4074a020,
+	0x472c: 0x4074a220, 0x472d: 0x4074a420, 0x472e: 0x4074a620, 0x472f: 0x4074a820,
+	0x4730: 0x4074aa20, 0x4731: 0x4074ac20, 0x4732: 0x4074ae20, 0x4733: 0x4074b020,
+	0x4734: 0x4074b220, 0x4735: 0x4074b420, 0x4736: 0x4074b620, 0x4737: 0x4074b820,
+	0x4738: 0x4074ba20, 0x4739: 0x4074bc20, 0x473a: 0x4074be20,
+	// Block 0x11d, offset 0x4740
+	0x4740: 0x4003be20, 0x4741: 0x4003c020, 0x4742: 0x4003c220,
+	0x4747: 0xe000026a,
+	0x4748: 0xe0000382, 0x4749: 0xe000045c, 0x474a: 0xe0000531, 0x474b: 0xe00005fb,
+	0x474c: 0xe00006c6, 0x474d: 0xe000076e, 0x474e: 0xe000081a, 0x474f: 0xe00008bf,
+	0x4750: 0x4028ba20, 0x4751: 0x4028bc20, 0x4752: 0x4028be20, 0x4753: 0x4028c020,
+	0x4754: 0x4028c220, 0x4755: 0x4028c420, 0x4756: 0x4028c620, 0x4757: 0x4028c820,
+	0x4758: 0x4028ca20, 0x4759: 0x4028cc20, 0x475a: 0x4028ce20, 0x475b: 0x4028d020,
+	0x475c: 0x4028d220, 0x475d: 0x4028d420, 0x475e: 0x4028d620, 0x475f: 0x4028d820,
+	0x4760: 0x4028da20, 0x4761: 0x4028dc20, 0x4762: 0x4028de20, 0x4763: 0x4028e020,
+	0x4764: 0x4028e220, 0x4765: 0x4028e420, 0x4766: 0x4028e620, 0x4767: 0x4028e820,
+	0x4768: 0x4028ea20, 0x4769: 0x4028ec20, 0x476a: 0x4028ee20, 0x476b: 0x4028f020,
+	0x476c: 0x4028f220, 0x476d: 0x4028f420, 0x476e: 0x4028f620, 0x476f: 0x4028f820,
+	0x4770: 0x4028fa20, 0x4771: 0x4028fc20, 0x4772: 0x4028fe20, 0x4773: 0x40290020,
+	0x4777: 0x401afe20,
+	0x4778: 0x401b0020, 0x4779: 0x401b0220, 0x477a: 0x401b0420, 0x477b: 0x401b0620,
+	0x477c: 0x401b0820, 0x477d: 0x401b0a20, 0x477e: 0x401b0c20, 0x477f: 0x401b0e20,
+	// Block 0x11e, offset 0x4780
+	0x4780: 0x40290220, 0x4781: 0x40290420, 0x4782: 0xe000026d, 0x4783: 0xe00005fe,
+	0x4784: 0x40290620, 0x4785: 0x40290820, 0x4786: 0x40290a20, 0x4787: 0x40290c20,
+	0x4788: 0xe0000601, 0x4789: 0x40290e20, 0x478a: 0x40291020, 0x478b: 0x40291220,
+	0x478c: 0x40291420, 0x478d: 0x40291620, 0x478e: 0x40291820, 0x478f: 0xe0000604,
+	0x4790: 0x40291a20, 0x4791: 0x40291c20, 0x4792: 0x40291e20, 0x4793: 0x40292020,
+	0x4794: 0x40292220, 0x4795: 0x40292420, 0x4796: 0x40292620, 0x4797: 0x40292820,
+	0x4798: 0xe0000270, 0x4799: 0xe0000273, 0x479a: 0xe0000276, 0x479b: 0xe0000385,
+	0x479c: 0xe0000388, 0x479d: 0xe000038b, 0x479e: 0xe000038e, 0x479f: 0xe0000607,
+	0x47a0: 0x40292a20, 0x47a1: 0x40292c20, 0x47a2: 0x40292e20, 0x47a3: 0x40293020,
+	0x47a4: 0x40293220, 0x47a5: 0x40293420, 0x47a6: 0x40293620, 0x47a7: 0x40293820,
+	0x47a8: 0x40293a20, 0x47a9: 0x40293c20, 0x47aa: 0x40293e20, 0x47ab: 0x40294020,
+	0x47ac: 0x40294220, 0x47ad: 0x40294420, 0x47ae: 0x40294620, 0x47af: 0x40294820,
+	0x47b0: 0x40294a20, 0x47b1: 0x40294c20, 0x47b2: 0x40294e20, 0x47b3: 0xe000060a,
+	0x47b4: 0x40295020, 0x47b5: 0x40295220, 0x47b6: 0x40295420, 0x47b7: 0x40295620,
+	0x47b8: 0x40295820, 0x47b9: 0x401b1020, 0x47ba: 0x401b1220, 0x47bb: 0x401b1420,
+	0x47bc: 0x401b1620, 0x47bd: 0x401b1820, 0x47be: 0x401b1a20, 0x47bf: 0x401b1c20,
+	// Block 0x11f, offset 0x47c0
+	0x47c0: 0x401b1e20, 0x47c1: 0x401b2020, 0x47c2: 0x401b2220, 0x47c3: 0x401b2420,
+	0x47c4: 0x401b2620, 0x47c5: 0x401b2820, 0x47c6: 0x401b2a20, 0x47c7: 0x401b2c20,
+	0x47c8: 0x401b2e20, 0x47c9: 0x401b3020, 0x47ca: 0xe00001d6,
+	0x47d0: 0x401b3220, 0x47d1: 0x401b3420, 0x47d2: 0x401b3620, 0x47d3: 0x401b3820,
+	0x47d4: 0x401b3a20, 0x47d5: 0x401b3c20, 0x47d6: 0x401b3e20, 0x47d7: 0x401b4020,
+	0x47d8: 0x401b4220, 0x47d9: 0x401b4420, 0x47da: 0x401b4620, 0x47db: 0x401b4820,
+	// Block 0x120, offset 0x4800
+	0x4810: 0x401b4a20, 0x4811: 0x401b4c20, 0x4812: 0x401b4e20, 0x4813: 0x401b5020,
+	0x4814: 0x401b5220, 0x4815: 0x401b5420, 0x4816: 0x401b5620, 0x4817: 0x401b5820,
+	0x4818: 0x401b5a20, 0x4819: 0x401b5c20, 0x481a: 0x401b5e20, 0x481b: 0x401b6020,
+	0x481c: 0x401b6220, 0x481d: 0x401b6420, 0x481e: 0x401b6620, 0x481f: 0x401b6820,
+	0x4820: 0x401b6a20, 0x4821: 0x401b6c20, 0x4822: 0x401b6e20, 0x4823: 0x401b7020,
+	0x4824: 0x401b7220, 0x4825: 0x401b7420, 0x4826: 0x401b7620, 0x4827: 0x401b7820,
+	0x4828: 0x401b7a20, 0x4829: 0x401b7c20, 0x482a: 0x401b7e20, 0x482b: 0x401b8020,
+	0x482c: 0x401b8220, 0x482d: 0x401b8420, 0x482e: 0x401b8620, 0x482f: 0x401b8820,
+	0x4830: 0x401b8a20, 0x4831: 0x401b8c20, 0x4832: 0x401b8e20, 0x4833: 0x401b9020,
+	0x4834: 0x401b9220, 0x4835: 0x401b9420, 0x4836: 0x401b9620, 0x4837: 0x401b9820,
+	0x4838: 0x401b9a20, 0x4839: 0x401b9c20, 0x483a: 0x401b9e20, 0x483b: 0x401ba020,
+	0x483c: 0x401ba220, 0x483d: 0xadc13802,
+	// Block 0x121, offset 0x4840
+	0x4840: 0x4070b820, 0x4841: 0x4070ba20, 0x4842: 0x4070bc20, 0x4843: 0x4070be20,
+	0x4844: 0x4070c020, 0x4845: 0x4070c220, 0x4846: 0x4070c420, 0x4847: 0x4070c620,
+	0x4848: 0x4070c820, 0x4849: 0x4070ca20, 0x484a: 0x4070cc20, 0x484b: 0x4070ce20,
+	0x484c: 0x4070d020, 0x484d: 0x4070d220, 0x484e: 0x4070d420, 0x484f: 0x4070d620,
+	0x4850: 0x4070d820, 0x4851: 0x4070da20, 0x4852: 0x4070dc20, 0x4853: 0x4070de20,
+	0x4854: 0x4070e020, 0x4855: 0x4070e220, 0x4856: 0x4070e420, 0x4857: 0x4070e620,
+	0x4858: 0x4070e820, 0x4859: 0x4070ea20, 0x485a: 0x4070ec20, 0x485b: 0x4070ee20,
+	0x485c: 0x4070f020,
+	0x4860: 0x4070f220, 0x4861: 0x4070f420, 0x4862: 0x4070f620, 0x4863: 0x4070f820,
+	0x4864: 0x4070fa20, 0x4865: 0x4070fc20, 0x4866: 0x4070fe20, 0x4867: 0x40710020,
+	0x4868: 0x40710220, 0x4869: 0x40710420, 0x486a: 0x40710620, 0x486b: 0x40710820,
+	0x486c: 0x40710a20, 0x486d: 0x40710c20, 0x486e: 0x40710e20, 0x486f: 0x40711020,
+	0x4870: 0x40711220, 0x4871: 0x40711420, 0x4872: 0x40711620, 0x4873: 0x40711820,
+	0x4874: 0x40711a20, 0x4875: 0x40711c20, 0x4876: 0x40711e20, 0x4877: 0x40712020,
+	0x4878: 0x40712220, 0x4879: 0x40712420, 0x487a: 0x40712620, 0x487b: 0x40712820,
+	0x487c: 0x40712a20, 0x487d: 0x40712c20, 0x487e: 0x40712e20, 0x487f: 0x40713020,
+	// Block 0x122, offset 0x4880
+	0x4880: 0x40713220, 0x4881: 0x40713420, 0x4882: 0x40713620, 0x4883: 0x40713820,
+	0x4884: 0x40713a20, 0x4885: 0x40713c20, 0x4886: 0x40713e20, 0x4887: 0x40714020,
+	0x4888: 0x40714220, 0x4889: 0x40714420, 0x488a: 0x40714620, 0x488b: 0x40714820,
+	0x488c: 0x40714a20, 0x488d: 0x40714c20, 0x488e: 0x40714e20, 0x488f: 0x40715020,
+	0x4890: 0x40715220,
+	// Block 0x123, offset 0x48c0
+	0x48c0: 0x40718820, 0x48c1: 0x40718a20, 0x48c2: 0x40718c20, 0x48c3: 0x40718e20,
+	0x48c4: 0x40719020, 0x48c5: 0x40719220, 0x48c6: 0x40719420, 0x48c7: 0x40719620,
+	0x48c8: 0x40719820, 0x48c9: 0x40719a20, 0x48ca: 0x40719c20, 0x48cb: 0x40719e20,
+	0x48cc: 0x4071a020, 0x48cd: 0x4071a220, 0x48ce: 0x4071a420, 0x48cf: 0x4071a620,
+	0x48d0: 0x4071a820, 0x48d1: 0x4071aa20, 0x48d2: 0x4071ac20, 0x48d3: 0x4071ae20,
+	0x48d4: 0x4071b020, 0x48d5: 0x4071b220, 0x48d6: 0x4071b420, 0x48d7: 0x4071b620,
+	0x48d8: 0x4071b820, 0x48d9: 0x4071ba20, 0x48da: 0x4071bc20, 0x48db: 0x4071be20,
+	0x48dc: 0x4071c020, 0x48dd: 0x4071c220, 0x48de: 0x4071c420,
+	0x48e0: 0xe0000279, 0x48e1: 0xe000060d, 0x48e2: 0x4028b620, 0x48e3: 0x4028b820,
+	0x48f0: 0x4071c620, 0x48f1: 0x4071c820, 0x48f2: 0x4071ca20, 0x48f3: 0x4071cc20,
+	0x48f4: 0x4071ce20, 0x48f5: 0x4071d020, 0x48f6: 0x4071d220, 0x48f7: 0x4071d420,
+	0x48f8: 0x4071d620, 0x48f9: 0x4071d820, 0x48fa: 0x4071da20, 0x48fb: 0x4071dc20,
+	0x48fc: 0x4071de20, 0x48fd: 0x4071e020, 0x48fe: 0x4071e220, 0x48ff: 0x4071e420,
+	// Block 0x124, offset 0x4900
+	0x4900: 0x4071e620, 0x4901: 0x4071e820, 0x4902: 0x4071ea20, 0x4903: 0x4071ec20,
+	0x4904: 0x4071ee20, 0x4905: 0x4071f020, 0x4906: 0x4071f220, 0x4907: 0x4071f420,
+	0x4908: 0x4071f620, 0x4909: 0x4071f820, 0x490a: 0x4071fa20,
+	// Block 0x125, offset 0x4940
+	0x4940: 0x40765020, 0x4941: 0x40765220, 0x4942: 0x40765420, 0x4943: 0x40765620,
+	0x4944: 0x40765820, 0x4945: 0x40765a20, 0x4946: 0x40765c20, 0x4947: 0x40765e20,
+	0x4948: 0x40766020, 0x4949: 0x40766220, 0x494a: 0x40766420, 0x494b: 0x40766620,
+	0x494c: 0x40766820, 0x494d: 0x40766a20, 0x494e: 0x40766c20, 0x494f: 0x40766e20,
+	0x4950: 0x40767020, 0x4951: 0x40767220, 0x4952: 0x40767420, 0x4953: 0x40767620,
+	0x4954: 0x40767820, 0x4955: 0x40767a20, 0x4956: 0x40767c20, 0x4957: 0x40767e20,
+	0x4958: 0x40768020, 0x4959: 0x40768220, 0x495a: 0x40768420, 0x495b: 0x40768620,
+	0x495c: 0x40768820, 0x495d: 0x40768a20, 0x495f: 0x4003c420,
+	0x4960: 0x40768c20, 0x4961: 0x40768e20, 0x4962: 0x40769020, 0x4963: 0x40769220,
+	0x4964: 0x40769420, 0x4965: 0x40769620, 0x4966: 0x40769820, 0x4967: 0x40769a20,
+	0x4968: 0x40769c20, 0x4969: 0x40769e20, 0x496a: 0x4076a020, 0x496b: 0x4076a220,
+	0x496c: 0x4076a420, 0x496d: 0x4076a620, 0x496e: 0x4076a820, 0x496f: 0x4076aa20,
+	0x4970: 0x4076ac20, 0x4971: 0x4076ae20, 0x4972: 0x4076b020, 0x4973: 0x4076b220,
+	0x4974: 0x4076b420, 0x4975: 0x4076b620, 0x4976: 0x4076b820, 0x4977: 0x4076ba20,
+	0x4978: 0x4076bc20, 0x4979: 0x4076be20, 0x497a: 0x4076c020, 0x497b: 0x4076c220,
+	0x497c: 0x4076c420, 0x497d: 0x4076c620, 0x497e: 0x4076c820, 0x497f: 0x4076ca20,
+	// Block 0x126, offset 0x4980
+	0x4980: 0x4076cc20, 0x4981: 0x4076ce20, 0x4982: 0x4076d020, 0x4983: 0x4076d220,
+	0x4988: 0x4076d420, 0x4989: 0x4076d620, 0x498a: 0x4076d820, 0x498b: 0x4076da20,
+	0x498c: 0x4076dc20, 0x498d: 0x4076de20, 0x498e: 0x4076e020, 0x498f: 0x4076e220,
+	0x4990: 0x4003c620, 0x4991: 0xe000027c, 0x4992: 0xe0000391, 0x4993: 0x40295a20,
+	0x4994: 0x40295c20, 0x4995: 0x40295e20,
+	// Block 0x127, offset 0x49c0
+	0x49c0: 0x0071fc88, 0x49c1: 0x0071fe88, 0x49c2: 0x00720088, 0x49c3: 0x00720288,
+	0x49c4: 0x00720488, 0x49c5: 0x00720688, 0x49c6: 0x00720888, 0x49c7: 0x00720a88,
+	0x49c8: 0x00720c88, 0x49c9: 0x00720e88, 0x49ca: 0x00721088, 0x49cb: 0x00721288,
+	0x49cc: 0x00721488, 0x49cd: 0x00721688, 0x49ce: 0x00721888, 0x49cf: 0x00721a88,
+	0x49d0: 0x00721c88, 0x49d1: 0x00721e88, 0x49d2: 0x00722088, 0x49d3: 0x00722288,
+	0x49d4: 0x00722488, 0x49d5: 0x00722688, 0x49d6: 0x00722888, 0x49d7: 0x00722a88,
+	0x49d8: 0x00722c88, 0x49d9: 0x00722e88, 0x49da: 0x00723088, 0x49db: 0x00723288,
+	0x49dc: 0x00723488, 0x49dd: 0x00723688, 0x49de: 0x00723888, 0x49df: 0x00723a88,
+	0x49e0: 0x00723c88, 0x49e1: 0x00723e88, 0x49e2: 0x00724088, 0x49e3: 0x00724288,
+	0x49e4: 0x00724488, 0x49e5: 0x00724688, 0x49e6: 0x00724888, 0x49e7: 0x00724a88,
+	0x49e8: 0x4071fc20, 0x49e9: 0x4071fe20, 0x49ea: 0x40720020, 0x49eb: 0x40720220,
+	0x49ec: 0x40720420, 0x49ed: 0x40720620, 0x49ee: 0x40720820, 0x49ef: 0x40720a20,
+	0x49f0: 0x40720c20, 0x49f1: 0x40720e20, 0x49f2: 0x40721020, 0x49f3: 0x40721220,
+	0x49f4: 0x40721420, 0x49f5: 0x40721620, 0x49f6: 0x40721820, 0x49f7: 0x40721a20,
+	0x49f8: 0x40721c20, 0x49f9: 0x40721e20, 0x49fa: 0x40722020, 0x49fb: 0x40722220,
+	0x49fc: 0x40722420, 0x49fd: 0x40722620, 0x49fe: 0x40722820, 0x49ff: 0x40722a20,
+	// Block 0x128, offset 0x4a00
+	0x4a00: 0x40722c20, 0x4a01: 0x40722e20, 0x4a02: 0x40723020, 0x4a03: 0x40723220,
+	0x4a04: 0x40723420, 0x4a05: 0x40723620, 0x4a06: 0x40723820, 0x4a07: 0x40723a20,
+	0x4a08: 0x40723c20, 0x4a09: 0x40723e20, 0x4a0a: 0x40724020, 0x4a0b: 0x40724220,
+	0x4a0c: 0x40724420, 0x4a0d: 0x40724620, 0x4a0e: 0x40724820, 0x4a0f: 0x40724a20,
+	0x4a10: 0x40724c20, 0x4a11: 0x40724e20, 0x4a12: 0x40725020, 0x4a13: 0x40725220,
+	0x4a14: 0x40725420, 0x4a15: 0x40725620, 0x4a16: 0x40725820, 0x4a17: 0x40725a20,
+	0x4a18: 0x40725c20, 0x4a19: 0x40725e20, 0x4a1a: 0x40726020, 0x4a1b: 0x40726220,
+	0x4a1c: 0x40726420, 0x4a1d: 0x40726620, 0x4a1e: 0x40726820, 0x4a1f: 0x40726a20,
+	0x4a20: 0x40726c20, 0x4a21: 0x40726e20, 0x4a22: 0x40727020, 0x4a23: 0x40727220,
+	0x4a24: 0x40727420, 0x4a25: 0x40727620, 0x4a26: 0x40727820, 0x4a27: 0x40727a20,
+	0x4a28: 0x40727c20, 0x4a29: 0x40727e20, 0x4a2a: 0x40728020, 0x4a2b: 0x40728220,
+	0x4a2c: 0x40728420, 0x4a2d: 0x40728620, 0x4a2e: 0x40728820, 0x4a2f: 0x40728a20,
+	0x4a30: 0x40728c20, 0x4a31: 0x40728e20, 0x4a32: 0x40729020, 0x4a33: 0x40729220,
+	0x4a34: 0x40729420, 0x4a35: 0x40729620, 0x4a36: 0x40729820, 0x4a37: 0x40729a20,
+	0x4a38: 0x40729c20, 0x4a39: 0x40729e20, 0x4a3a: 0x4072a020, 0x4a3b: 0x4072a220,
+	0x4a3c: 0x4072a420, 0x4a3d: 0x4072a620, 0x4a3e: 0x4072a820, 0x4a3f: 0x4072aa20,
+	// Block 0x129, offset 0x4a40
+	0x4a40: 0x4072ac20, 0x4a41: 0x4072ae20, 0x4a42: 0x4072b020, 0x4a43: 0x4072b220,
+	0x4a44: 0x4072b420, 0x4a45: 0x4072b620, 0x4a46: 0x4072b820, 0x4a47: 0x4072ba20,
+	0x4a48: 0x4072bc20, 0x4a49: 0x4072be20, 0x4a4a: 0x4072c020, 0x4a4b: 0x4072c220,
+	0x4a4c: 0x4072c420, 0x4a4d: 0x4072c620, 0x4a4e: 0x4072c820, 0x4a4f: 0x4072ca20,
+	0x4a50: 0x4072cc20, 0x4a51: 0x4072ce20, 0x4a52: 0x4072d020, 0x4a53: 0x4072d220,
+	0x4a54: 0x4072d420, 0x4a55: 0x4072d620, 0x4a56: 0x4072d820, 0x4a57: 0x4072da20,
+	0x4a58: 0x4072dc20, 0x4a59: 0x4072de20, 0x4a5a: 0x4072e020, 0x4a5b: 0x4072e220,
+	0x4a5c: 0x4072e420, 0x4a5d: 0x4072e620,
+	0x4a60: 0xe0000167, 0x4a61: 0xe00001f5, 0x4a62: 0xe0000310, 0x4a63: 0xe00003ea,
+	0x4a64: 0xe00004c5, 0x4a65: 0xe000058f, 0x4a66: 0xe000065a, 0x4a67: 0xe0000702,
+	0x4a68: 0xe00007ae, 0x4a69: 0xe0000853,
+	// Block 0x12a, offset 0x4a80
+	0x4a80: 0x4074c020, 0x4a81: 0x4074c220, 0x4a82: 0x4074c420, 0x4a83: 0x4074c620,
+	0x4a84: 0x4074c820, 0x4a85: 0x4074ca20,
+	0x4a88: 0x4074cc20, 0x4a8a: 0x4074ce20, 0x4a8b: 0x4074d020,
+	0x4a8c: 0x4074d220, 0x4a8d: 0x4074d420, 0x4a8e: 0x4074d620, 0x4a8f: 0x4074d820,
+	0x4a90: 0x4074da20, 0x4a91: 0x4074dc20, 0x4a92: 0x4074de20, 0x4a93: 0x4074e020,
+	0x4a94: 0x4074e220, 0x4a95: 0x4074e420, 0x4a96: 0x4074e620, 0x4a97: 0x4074e820,
+	0x4a98: 0x4074ea20, 0x4a99: 0x4074ec20, 0x4a9a: 0x4074ee20, 0x4a9b: 0x4074f020,
+	0x4a9c: 0x4074f220, 0x4a9d: 0x4074f420, 0x4a9e: 0x4074f620, 0x4a9f: 0x4074f820,
+	0x4aa0: 0x4074fa20, 0x4aa1: 0x4074fc20, 0x4aa2: 0x4074fe20, 0x4aa3: 0x40750020,
+	0x4aa4: 0x40750220, 0x4aa5: 0x40750420, 0x4aa6: 0x40750620, 0x4aa7: 0x40750820,
+	0x4aa8: 0x40750a20, 0x4aa9: 0x40750c20, 0x4aaa: 0x40750e20, 0x4aab: 0x40751020,
+	0x4aac: 0x40751220, 0x4aad: 0x40751420, 0x4aae: 0x40751620, 0x4aaf: 0x40751820,
+	0x4ab0: 0x40751a20, 0x4ab1: 0x40751c20, 0x4ab2: 0x40751e20, 0x4ab3: 0x40752020,
+	0x4ab4: 0x40752220, 0x4ab5: 0x40752420, 0x4ab7: 0x40752620,
+	0x4ab8: 0x40752820,
+	0x4abc: 0x40752a20, 0x4abf: 0x40752c20,
+	// Block 0x12b, offset 0x4ac0
+	0x4ac0: 0x4075d220, 0x4ac1: 0x4075d420, 0x4ac2: 0x4075d620, 0x4ac3: 0x4075d820,
+	0x4ac4: 0x4075da20, 0x4ac5: 0x4075dc20, 0x4ac6: 0x4075de20, 0x4ac7: 0x4075e020,
+	0x4ac8: 0x4075e220, 0x4ac9: 0x4075e420, 0x4aca: 0x4075e620, 0x4acb: 0x4075e820,
+	0x4acc: 0x4075ea20, 0x4acd: 0x4075ec20, 0x4ace: 0x4075ee20, 0x4acf: 0x4075f020,
+	0x4ad0: 0x4075f220, 0x4ad1: 0x4075f420, 0x4ad2: 0x4075f620, 0x4ad3: 0x4075f820,
+	0x4ad4: 0x4075fa20, 0x4ad5: 0x4075fc20, 0x4ad7: 0x40038620,
+	0x4ad8: 0xe0000297, 0x4ad9: 0xe00003b2, 0x4ada: 0xe000048c, 0x4adb: 0x40296820,
+	0x4adc: 0x40296a20, 0x4add: 0x40296c20, 0x4ade: 0x40296e20, 0x4adf: 0x40297020,
+	// Block 0x12c, offset 0x4b00
+	0x4b00: 0x4038bc20, 0x4b01: 0x4038be20, 0x4b02: 0x4038c020, 0x4b03: 0x4038c220,
+	0x4b04: 0x4038c420, 0x4b05: 0x4038c620, 0x4b06: 0x4038c820, 0x4b07: 0x4038ca20,
+	0x4b08: 0x4038cc20, 0x4b09: 0x4038ce20, 0x4b0a: 0x4038d020, 0x4b0b: 0x4038d220,
+	0x4b0c: 0x4038d420, 0x4b0d: 0x4038d620, 0x4b0e: 0x4038d820, 0x4b0f: 0x4038da20,
+	0x4b10: 0x4038dc20, 0x4b11: 0x4038de20, 0x4b12: 0x4038e020, 0x4b13: 0x4038e220,
+	0x4b14: 0x4038e420, 0x4b15: 0x4038e620, 0x4b16: 0xe0000294, 0x4b17: 0x40296220,
+	0x4b18: 0x40296420, 0x4b19: 0x40296620, 0x4b1a: 0xe00003af, 0x4b1b: 0xe0000489,
+	0x4b1f: 0x4003c820,
+	0x4b20: 0x40715420, 0x4b21: 0x40715620, 0x4b22: 0x40715820, 0x4b23: 0x40715a20,
+	0x4b24: 0x40715c20, 0x4b25: 0x40715e20, 0x4b26: 0x40716020, 0x4b27: 0x40716220,
+	0x4b28: 0x40716420, 0x4b29: 0x40716620, 0x4b2a: 0x40716820, 0x4b2b: 0x40716a20,
+	0x4b2c: 0x40716c20, 0x4b2d: 0x40716e20, 0x4b2e: 0x40717020, 0x4b2f: 0x40717220,
+	0x4b30: 0x40717420, 0x4b31: 0x40717620, 0x4b32: 0x40717820, 0x4b33: 0x40717a20,
+	0x4b34: 0x40717c20, 0x4b35: 0x40717e20, 0x4b36: 0x40718020, 0x4b37: 0x40718220,
+	0x4b38: 0x40718420, 0x4b39: 0x40718620,
+	0x4b3f: 0x4003bc20,
+	// Block 0x12d, offset 0x4b40
+	0x4b40: 0xe00023a4, 0x4b41: 0xe00023a7, 0x4b42: 0xe00023aa, 0x4b43: 0xe00023ad,
+	0x4b44: 0xe00023b0, 0x4b45: 0xe00023b3, 0x4b46: 0xe00023b6, 0x4b47: 0xe00023b9,
+	0x4b48: 0xe00023bc, 0x4b49: 0xe00023bf, 0x4b4a: 0xe00023c2, 0x4b4b: 0xe00023c5,
+	0x4b4c: 0xe00023c8, 0x4b4d: 0xe00023cb, 0x4b4e: 0xe00023ce, 0x4b4f: 0xe00023d1,
+	0x4b50: 0xe00023d4, 0x4b51: 0xe00023d7, 0x4b52: 0xe00023da, 0x4b53: 0xe00023e0,
+	0x4b54: 0xe00023e3, 0x4b55: 0xe00023e6, 0x4b56: 0xe00023e9, 0x4b57: 0xe00023ec,
+	0x4b58: 0xe00023ef, 0x4b59: 0xe00023f2, 0x4b5a: 0xe00023f5, 0x4b5b: 0xe00023f8,
+	0x4b5c: 0xe00023fb, 0x4b5d: 0xe00023fe, 0x4b5e: 0x40865220, 0x4b5f: 0x40865420,
+	0x4b60: 0x40862020, 0x4b61: 0x40862220, 0x4b62: 0x40862420, 0x4b63: 0x40862620,
+	0x4b64: 0x40862820, 0x4b65: 0x40862a20, 0x4b66: 0x40862c20, 0x4b67: 0x40862e20,
+	0x4b68: 0x40863020, 0x4b69: 0x40863220, 0x4b6a: 0x40863420, 0x4b6b: 0x40863620,
+	0x4b6c: 0x40863820, 0x4b6d: 0x40863a20, 0x4b6e: 0x40863c20, 0x4b6f: 0x40863e20,
+	0x4b70: 0xe00023dd, 0x4b71: 0x40864020, 0x4b72: 0x40864220, 0x4b73: 0x40864420,
+	0x4b74: 0x40864620, 0x4b75: 0x40864820, 0x4b76: 0x40864a20, 0x4b77: 0x40864c20,
+	0x4b7e: 0x40864e20, 0x4b7f: 0x40865020,
+	// Block 0x12e, offset 0x4b80
+	0x4b80: 0x4048bc20, 0x4b81: 0x4048be20, 0x4b82: 0x4048c020, 0x4b83: 0x4048c220,
+	0x4b85: 0x4048c420, 0x4b86: 0x4048c620,
+	0x4b8c: 0x4048c820, 0x4b8d: 0xadc06002, 0x4b8e: 0xa000f302, 0x4b8f: 0xae60f402,
+	0x4b90: 0x4048ca20, 0x4b91: 0x4048cc20, 0x4b92: 0x4048ce20, 0x4b93: 0x4048d020,
+	0x4b95: 0x4048d220, 0x4b96: 0x4048d420, 0x4b97: 0x4048d620,
+	0x4b99: 0x4048d820, 0x4b9a: 0x4048da20, 0x4b9b: 0x4048dc20,
+	0x4b9c: 0x4048de20, 0x4b9d: 0x4048e020, 0x4b9e: 0x4048e220, 0x4b9f: 0x4048e420,
+	0x4ba0: 0x4048e620, 0x4ba1: 0x4048e820, 0x4ba2: 0x4048ea20, 0x4ba3: 0x4048ec20,
+	0x4ba4: 0x4048ee20, 0x4ba5: 0x4048f020, 0x4ba6: 0x4048f220, 0x4ba7: 0x4048f420,
+	0x4ba8: 0x4048f620, 0x4ba9: 0x4048f820, 0x4baa: 0x4048fa20, 0x4bab: 0x4048fc20,
+	0x4bac: 0x4048fe20, 0x4bad: 0x40490020, 0x4bae: 0x40490220, 0x4baf: 0x40490420,
+	0x4bb0: 0x40490620, 0x4bb1: 0x40490820, 0x4bb2: 0x40490a20, 0x4bb3: 0x40490c20,
+	0x4bb8: 0xae60fb02, 0x4bb9: 0xa010fc02, 0x4bba: 0xadc0fd02,
+	0x4bbf: 0x82092487,
+	// Block 0x12f, offset 0x4bc0
+	0x4bc0: 0xe00002ac, 0x4bc1: 0xe00003c7, 0x4bc2: 0xe00004a1, 0x4bc3: 0xe0000573,
+	0x4bc4: 0x40299820, 0x4bc5: 0x40299a20, 0x4bc6: 0x40299c20, 0x4bc7: 0x40299e20,
+	0x4bd0: 0x40060620, 0x4bd1: 0x40060820, 0x4bd2: 0x40060a20, 0x4bd3: 0x40060c20,
+	0x4bd4: 0x40060e20, 0x4bd5: 0x40061020, 0x4bd6: 0x40034420, 0x4bd7: 0x40034620,
+	0x4bd8: 0x40061220,
+	0x4be0: 0x40752e20, 0x4be1: 0x40753020, 0x4be2: 0x40753220, 0x4be3: 0x40753420,
+	0x4be4: 0x40753620, 0x4be5: 0x40753820, 0x4be6: 0x40753a20, 0x4be7: 0x40753c20,
+	0x4be8: 0x40753e20, 0x4be9: 0x40754020, 0x4bea: 0x40754220, 0x4beb: 0x40754420,
+	0x4bec: 0x40754620, 0x4bed: 0x40754820, 0x4bee: 0x40754a20, 0x4bef: 0x40754c20,
+	0x4bf0: 0x40754e20, 0x4bf1: 0x40755020, 0x4bf2: 0x40755220, 0x4bf3: 0x40755420,
+	0x4bf4: 0x40755620, 0x4bf5: 0x40755820, 0x4bf6: 0x40755a20, 0x4bf7: 0x40755c20,
+	0x4bf8: 0x40755e20, 0x4bf9: 0x40756020, 0x4bfa: 0x40756220, 0x4bfb: 0x40756420,
+	0x4bfc: 0x40756620, 0x4bfd: 0xe0000291, 0x4bfe: 0x40296020, 0x4bff: 0x40061c20,
+	// Block 0x130, offset 0x4c00
+	0x4c00: 0x40756820, 0x4c01: 0x40756a20, 0x4c02: 0x40756c20, 0x4c03: 0x40756e20,
+	0x4c04: 0x40757020, 0x4c05: 0x40757220, 0x4c06: 0x40757420, 0x4c07: 0x40757620,
+	0x4c08: 0x40757820, 0x4c09: 0x40757a20, 0x4c0a: 0x40757c20, 0x4c0b: 0x40757e20,
+	0x4c0c: 0x40758020, 0x4c0d: 0x40758220, 0x4c0e: 0x40758420, 0x4c0f: 0x40758620,
+	0x4c10: 0x40758820, 0x4c11: 0x40758a20, 0x4c12: 0x40758c20, 0x4c13: 0x40758e20,
+	0x4c14: 0x40759020, 0x4c15: 0x40759220, 0x4c16: 0x40759420, 0x4c17: 0x40759620,
+	0x4c18: 0x40759820, 0x4c19: 0x40759a20, 0x4c1a: 0x40759c20, 0x4c1b: 0x40759e20,
+	0x4c1c: 0x4075a020, 0x4c1d: 0x4075a220, 0x4c1e: 0x4075a420, 0x4c1f: 0x4075a620,
+	0x4c20: 0x4075a820, 0x4c21: 0x4075aa20, 0x4c22: 0x4075ac20, 0x4c23: 0x4075ae20,
+	0x4c24: 0x4075b020, 0x4c25: 0x4075b220, 0x4c26: 0x4075b420, 0x4c27: 0x4075b620,
+	0x4c28: 0x4075b820, 0x4c29: 0x4075ba20, 0x4c2a: 0x4075bc20, 0x4c2b: 0x4075be20,
+	0x4c2c: 0x4075c020, 0x4c2d: 0x4075c220, 0x4c2e: 0xe00023a1, 0x4c2f: 0x4075c420,
+	0x4c30: 0x4075c620, 0x4c31: 0x4075c820, 0x4c32: 0x4075ca20, 0x4c33: 0x4075cc20,
+	0x4c34: 0x4075ce20, 0x4c35: 0x4075d020,
+	0x4c39: 0x40061420, 0x4c3a: 0x40038820, 0x4c3b: 0x40038a20,
+	0x4c3c: 0x40038c20, 0x4c3d: 0x40038e20, 0x4c3e: 0x40039020, 0x4c3f: 0x40039220,
+	// Block 0x131, offset 0x4c40
+	0x4c40: 0x4075fe20, 0x4c41: 0x40760020, 0x4c42: 0x40760220, 0x4c43: 0x40760420,
+	0x4c44: 0x40760620, 0x4c45: 0x40760820, 0x4c46: 0x40760a20, 0x4c47: 0x40760c20,
+	0x4c48: 0x40760e20, 0x4c49: 0x40761020, 0x4c4a: 0x40761220, 0x4c4b: 0x40761420,
+	0x4c4c: 0x40761620, 0x4c4d: 0x40761820, 0x4c4e: 0x40761a20, 0x4c4f: 0x40761c20,
+	0x4c50: 0x40761e20, 0x4c51: 0x40762020, 0x4c52: 0x40762220, 0x4c53: 0x40762420,
+	0x4c54: 0x40762620, 0x4c55: 0x40762820,
+	0x4c58: 0xe000029a, 0x4c59: 0xe00003b5, 0x4c5a: 0xe000048f, 0x4c5b: 0xe0000561,
+	0x4c5c: 0x40297220, 0x4c5d: 0x40297420, 0x4c5e: 0x40297620, 0x4c5f: 0x40297820,
+	0x4c60: 0x40762a20, 0x4c61: 0x40762c20, 0x4c62: 0x40762e20, 0x4c63: 0x40763020,
+	0x4c64: 0x40763220, 0x4c65: 0x40763420, 0x4c66: 0x40763620, 0x4c67: 0x40763820,
+	0x4c68: 0x40763a20, 0x4c69: 0x40763c20, 0x4c6a: 0x40763e20, 0x4c6b: 0x40764020,
+	0x4c6c: 0x40764220, 0x4c6d: 0x40764420, 0x4c6e: 0x40764620, 0x4c6f: 0x40764820,
+	0x4c70: 0x40764a20, 0x4c71: 0x40764c20, 0x4c72: 0x40764e20,
+	0x4c78: 0xe000029d, 0x4c79: 0xe00003b8, 0x4c7a: 0xe0000492, 0x4c7b: 0xe0000564,
+	0x4c7c: 0x40297a20, 0x4c7d: 0x40297c20, 0x4c7e: 0x40297e20, 0x4c7f: 0x40298020,
+	// Block 0x132, offset 0x4c80
+	0x4c80: 0x405b2620, 0x4c81: 0xe00020a7, 0x4c82: 0x405b2820, 0x4c83: 0x405b2a20,
+	0x4c84: 0xe00020aa, 0x4c85: 0x405b2c20, 0x4c86: 0x405b2e20, 0x4c87: 0x405b3020,
+	0x4c88: 0xe00020ad, 0x4c89: 0x405b3220, 0x4c8a: 0xe00020b0, 0x4c8b: 0x405b3420,
+	0x4c8c: 0xe00020b3, 0x4c8d: 0x405b3620, 0x4c8e: 0xe00020b6, 0x4c8f: 0x405b3820,
+	0x4c90: 0xe00020b9, 0x4c91: 0x405b3a20, 0x4c92: 0xe00020bc, 0x4c93: 0x405b3c20,
+	0x4c94: 0x405b3e20, 0x4c95: 0xe00020bf, 0x4c96: 0x405b4020, 0x4c97: 0xe00020c2,
+	0x4c98: 0x405b4220, 0x4c99: 0xe00020c5, 0x4c9a: 0x405b4420, 0x4c9b: 0xe00020c8,
+	0x4c9c: 0x405b4620, 0x4c9d: 0xe00020cb, 0x4c9e: 0x405b4820, 0x4c9f: 0xe00020ce,
+	0x4ca0: 0x405b4a20, 0x4ca1: 0x405b4c20, 0x4ca2: 0x405b4e20, 0x4ca3: 0x405b5020,
+	0x4ca4: 0x405b5220, 0x4ca5: 0xe00020d1, 0x4ca6: 0x405b5420, 0x4ca7: 0xe00020d4,
+	0x4ca8: 0x405b5620, 0x4ca9: 0xe00020d7, 0x4caa: 0x405b5820, 0x4cab: 0xe00020da,
+	0x4cac: 0x405b5a20, 0x4cad: 0x405b5c20, 0x4cae: 0xe00020dd, 0x4caf: 0x405b5e20,
+	0x4cb0: 0x405b6020, 0x4cb1: 0x405b6220, 0x4cb2: 0x405b6420, 0x4cb3: 0xe00020e0,
+	0x4cb4: 0x405b6620, 0x4cb5: 0xe00020e3, 0x4cb6: 0x405b6820, 0x4cb7: 0xe00020e6,
+	0x4cb8: 0x405b6a20, 0x4cb9: 0xe00020e9, 0x4cba: 0x405b6c20, 0x4cbb: 0xe00020ec,
+	0x4cbc: 0x405b6e20, 0x4cbd: 0x405b7020, 0x4cbe: 0x405b7220, 0x4cbf: 0x405b7420,
+	// Block 0x133, offset 0x4cc0
+	0x4cc0: 0xe00020ef, 0x4cc1: 0x405b7620, 0x4cc2: 0xe00020f2, 0x4cc3: 0x405b7820,
+	0x4cc4: 0xe00020f5, 0x4cc5: 0x405b7a20, 0x4cc6: 0xe00020f8, 0x4cc7: 0x405b7c20,
+	0x4cc8: 0x405b7e20,
+	// Block 0x134, offset 0x4d00
+	0x4d20: 0xe00001ec, 0x4d21: 0xe0000307, 0x4d22: 0xe00003e1, 0x4d23: 0xe00004bc,
+	0x4d24: 0xe0000586, 0x4d25: 0xe0000651, 0x4d26: 0xe00006f9, 0x4d27: 0xe00007a5,
+	0x4d28: 0xe000084a, 0x4d29: 0x40288820, 0x4d2a: 0x40288a20, 0x4d2b: 0x40288c20,
+	0x4d2c: 0x40288e20, 0x4d2d: 0x40289020, 0x4d2e: 0x40289220, 0x4d2f: 0x40289420,
+	0x4d30: 0x40289620, 0x4d31: 0x40289820, 0x4d32: 0x40289a20, 0x4d33: 0x40289c20,
+	0x4d34: 0x40289e20, 0x4d35: 0x4028a020, 0x4d36: 0x4028a220, 0x4d37: 0x4028a420,
+	0x4d38: 0x4028a620, 0x4d39: 0x4028a820, 0x4d3a: 0x4028aa20, 0x4d3b: 0x4028ac20,
+	0x4d3c: 0x4028ae20, 0x4d3d: 0x4028b020, 0x4d3e: 0x4028b220,
+	// Block 0x135, offset 0x4d40
+	0x4d40: 0xa000f202, 0x4d41: 0xa000f302, 0x4d42: 0xa000f402, 0x4d43: 0x40489220,
+	0x4d44: 0x40489420, 0x4d45: 0x40483420, 0x4d46: 0x40483620, 0x4d47: 0x40483820,
+	0x4d48: 0x40483a20, 0x4d49: 0x40483c20, 0x4d4a: 0x40483e20, 0x4d4b: 0x40484020,
+	0x4d4c: 0x40484220, 0x4d4d: 0x40484420, 0x4d4e: 0x40484620, 0x4d4f: 0x40484820,
+	0x4d50: 0x40484a20, 0x4d51: 0x40484c20, 0x4d52: 0x40484e20, 0x4d53: 0x40485020,
+	0x4d54: 0x40485220, 0x4d55: 0x40485420, 0x4d56: 0x40485620, 0x4d57: 0x40485820,
+	0x4d58: 0x40485a20, 0x4d59: 0x40485c20, 0x4d5a: 0x40485e20, 0x4d5b: 0x40486020,
+	0x4d5c: 0x40486220, 0x4d5d: 0x40486420, 0x4d5e: 0x40486620, 0x4d5f: 0x40486820,
+	0x4d60: 0x40486a20, 0x4d61: 0x40486c20, 0x4d62: 0x40486e20, 0x4d63: 0x40487020,
+	0x4d64: 0x40487220, 0x4d65: 0x40487420, 0x4d66: 0x40487620, 0x4d67: 0x40487820,
+	0x4d68: 0x40487a20, 0x4d69: 0x40487c20, 0x4d6a: 0x40487e20, 0x4d6b: 0x40488020,
+	0x4d6c: 0x40488220, 0x4d6d: 0x40488420, 0x4d6e: 0x40488620, 0x4d6f: 0x40488820,
+	0x4d70: 0x40488a20, 0x4d71: 0x40488c20, 0x4d72: 0x40488e20, 0x4d73: 0x40489020,
+	0x4d74: 0x40489620, 0x4d75: 0x40489820, 0x4d76: 0x40489a20, 0x4d77: 0x40489c20,
+	0x4d78: 0x40489e20, 0x4d79: 0x4048a020, 0x4d7a: 0x4048a220, 0x4d7b: 0x4048a420,
+	0x4d7c: 0x4048a620, 0x4d7d: 0x4048a820, 0x4d7e: 0x4048aa20, 0x4d7f: 0x4048ac20,
+	// Block 0x136, offset 0x4d80
+	0x4d80: 0x4048ae20, 0x4d81: 0x4048b020, 0x4d82: 0x4048b220, 0x4d83: 0x4048b420,
+	0x4d84: 0x4048b620, 0x4d85: 0x4048b820, 0x4d86: 0x8209245d, 0x4d87: 0x40034820,
+	0x4d88: 0x40034a20, 0x4d89: 0x4005fc20, 0x4d8a: 0x4005fe20, 0x4d8b: 0x40060020,
+	0x4d8c: 0x40060220, 0x4d8d: 0x40060420,
+	0x4d92: 0xe00002a9, 0x4d93: 0xe00003c4,
+	0x4d94: 0xe000049e, 0x4d95: 0xe0000570, 0x4d96: 0xe000063a, 0x4d97: 0xe00006ea,
+	0x4d98: 0xe0000792, 0x4d99: 0xe000083b, 0x4d9a: 0xe00008e6, 0x4d9b: 0x40298220,
+	0x4d9c: 0x40298420, 0x4d9d: 0x40298620, 0x4d9e: 0x40298820, 0x4d9f: 0x40298a20,
+	0x4da0: 0x40298c20, 0x4da1: 0x40298e20, 0x4da2: 0x40299020, 0x4da3: 0x40299220,
+	0x4da4: 0x40299420, 0x4da5: 0x40299620, 0x4da6: 0xe00001df, 0x4da7: 0xe00002a6,
+	0x4da8: 0xe00003c1, 0x4da9: 0xe000049b, 0x4daa: 0xe000056d, 0x4dab: 0xe0000637,
+	0x4dac: 0xe00006e7, 0x4dad: 0xe000078f, 0x4dae: 0xe0000838, 0x4daf: 0xe00008e3,
+	// Block 0x137, offset 0x4dc0
+	0x4dc0: 0xa000f202, 0x4dc1: 0xa000f302, 0x4dc2: 0xa000f402, 0x4dc3: 0x40467e20,
+	0x4dc4: 0x40468020, 0x4dc5: 0x40468220, 0x4dc6: 0x40468420, 0x4dc7: 0x40468620,
+	0x4dc8: 0x40468820, 0x4dc9: 0x40468a20, 0x4dca: 0x40468c20, 0x4dcb: 0x40468e20,
+	0x4dcc: 0x40469020, 0x4dcd: 0x40469220, 0x4dce: 0x40469420, 0x4dcf: 0x40469620,
+	0x4dd0: 0x40469820, 0x4dd1: 0x40469a20, 0x4dd2: 0x40469c20, 0x4dd3: 0x40469e20,
+	0x4dd4: 0x4046a020, 0x4dd5: 0x4046a220, 0x4dd6: 0x4046a420, 0x4dd7: 0x4046a620,
+	0x4dd8: 0x4046a820, 0x4dd9: 0x4046aa20, 0x4dda: 0xe0001878, 0x4ddb: 0x4046ac20,
+	0x4ddc: 0xe000187b, 0x4ddd: 0x4046ae20, 0x4dde: 0x4046b020, 0x4ddf: 0x4046b220,
+	0x4de0: 0x4046b420, 0x4de1: 0x4046b620, 0x4de2: 0x4046b820, 0x4de3: 0x4046ba20,
+	0x4de4: 0x4046bc20, 0x4de5: 0x4046be20, 0x4de6: 0x4046c020, 0x4de7: 0x4046c220,
+	0x4de8: 0x4046c420, 0x4de9: 0x4046c620, 0x4dea: 0x4046c820, 0x4deb: 0xe000187e,
+	0x4dec: 0x4046ca20, 0x4ded: 0x4046cc20, 0x4dee: 0x4046ce20, 0x4def: 0x4046d020,
+	0x4df0: 0x4046d220, 0x4df1: 0x4046d420, 0x4df2: 0x4046d620, 0x4df3: 0x4046d820,
+	0x4df4: 0x4046da20, 0x4df5: 0x4046dc20, 0x4df6: 0x4046de20, 0x4df7: 0x4046e020,
+	0x4df8: 0x4046e220, 0x4df9: 0x82092372, 0x4dfa: 0xa070f102, 0x4dfb: 0x40061620,
+	0x4dfc: 0x40061820, 0x4dfd: 0xa0000000, 0x4dfe: 0x40039420, 0x4dff: 0x40039620,
+	// Block 0x138, offset 0x4e00
+	0x4e00: 0x40034c20, 0x4e01: 0x40034e20,
+	0x4e10: 0x4072e820, 0x4e11: 0x4072ea20, 0x4e12: 0x4072ec20, 0x4e13: 0x4072ee20,
+	0x4e14: 0x4072f020, 0x4e15: 0x4072f220, 0x4e16: 0x4072f420, 0x4e17: 0x4072f620,
+	0x4e18: 0x4072f820, 0x4e19: 0x4072fa20, 0x4e1a: 0x4072fc20, 0x4e1b: 0x4072fe20,
+	0x4e1c: 0x40730020, 0x4e1d: 0x40730220, 0x4e1e: 0x40730420, 0x4e1f: 0x40730620,
+	0x4e20: 0x40730820, 0x4e21: 0x40730a20, 0x4e22: 0x40730c20, 0x4e23: 0x40730e20,
+	0x4e24: 0x40731020, 0x4e25: 0x40731220, 0x4e26: 0x40731420, 0x4e27: 0x40731620,
+	0x4e28: 0x40731820,
+	0x4e30: 0xe00001d0, 0x4e31: 0xe0000264, 0x4e32: 0xe000037c, 0x4e33: 0xe0000456,
+	0x4e34: 0xe000052b, 0x4e35: 0xe00005f5, 0x4e36: 0xe00006c0, 0x4e37: 0xe0000768,
+	0x4e38: 0xe0000814, 0x4e39: 0xe00008b9,
+	// Block 0x139, offset 0x4e40
+	0x4e40: 0xae60f202, 0x4e41: 0xae60f302, 0x4e42: 0xae60f402, 0x4e43: 0x404f4020,
+	0x4e44: 0x404f4220, 0x4e45: 0x404f4420, 0x4e46: 0x404f4620, 0x4e47: 0x404f4820,
+	0x4e48: 0x404f4a20, 0x4e49: 0x404f4c20, 0x4e4a: 0x404f4e20, 0x4e4b: 0x404f5020,
+	0x4e4c: 0x404f5220, 0x4e4d: 0x404f5420, 0x4e4e: 0x404f5620, 0x4e4f: 0x404f5820,
+	0x4e50: 0x404f5a20, 0x4e51: 0x404f5c20, 0x4e52: 0x404f5e20, 0x4e53: 0x404f6020,
+	0x4e54: 0x404f6220, 0x4e55: 0x404f6420, 0x4e56: 0x404f6620, 0x4e57: 0x404f6820,
+	0x4e58: 0x404f6a20, 0x4e59: 0x404f6c20, 0x4e5a: 0x404f6e20, 0x4e5b: 0x404f7020,
+	0x4e5c: 0x404f7220, 0x4e5d: 0x404f7420, 0x4e5e: 0x404f7620, 0x4e5f: 0x404f7820,
+	0x4e60: 0x404f7a20, 0x4e61: 0x404f7c20, 0x4e62: 0x404f7e20, 0x4e63: 0x404f8020,
+	0x4e64: 0x404f8220, 0x4e65: 0x404f8420, 0x4e66: 0x404f8620, 0x4e67: 0x404f8820,
+	0x4e68: 0x404f8a20, 0x4e69: 0x404f8c20, 0x4e6a: 0x404f8e20, 0x4e6b: 0x404f9020,
+	0x4e6c: 0x404f9220, 0x4e6d: 0x404f9420, 0x4e6e: 0x404f9620, 0x4e6f: 0x404f9820,
+	0x4e70: 0x404f9a20, 0x4e71: 0xc31507e1, 0x4e72: 0xc31707e1, 0x4e73: 0x820927d0,
+	0x4e74: 0x820927d1, 0x4e76: 0xe00001b2, 0x4e77: 0xe0000246,
+	0x4e78: 0xe000035e, 0x4e79: 0xe0000438, 0x4e7a: 0xe000050d, 0x4e7b: 0xe00005d7,
+	0x4e7c: 0xe00006a2, 0x4e7d: 0xe000074a, 0x4e7e: 0xe00007f6, 0x4e7f: 0xe000089b,
+	// Block 0x13a, offset 0x4e80
+	0x4e80: 0x40039820, 0x4e81: 0x40035020, 0x4e82: 0x40035220, 0x4e83: 0x4002de20,
+	// Block 0x13b, offset 0x4ec0
+	0x4ec0: 0xa000f202, 0x4ec1: 0xa000f302, 0x4ec2: 0xa000f402, 0x4ec3: 0x4046e820,
+	0x4ec4: 0x4046ea20, 0x4ec5: 0x4046ec20, 0x4ec6: 0x4046ee20, 0x4ec7: 0x4046f020,
+	0x4ec8: 0x4046f220, 0x4ec9: 0x4046f420, 0x4eca: 0x4046f620, 0x4ecb: 0x4046f820,
+	0x4ecc: 0x4046fa20, 0x4ecd: 0x4046fc20, 0x4ece: 0x4046fe20, 0x4ecf: 0x40470020,
+	0x4ed0: 0x40470220, 0x4ed1: 0x40470420, 0x4ed2: 0x40470620, 0x4ed3: 0x40470820,
+	0x4ed4: 0x40470a20, 0x4ed5: 0x40470c20, 0x4ed6: 0x40470e20, 0x4ed7: 0x40471020,
+	0x4ed8: 0x40471220, 0x4ed9: 0x40471420, 0x4eda: 0x40471620, 0x4edb: 0x40471820,
+	0x4edc: 0x40471a20, 0x4edd: 0x40471c20, 0x4ede: 0x40471e20, 0x4edf: 0x40472020,
+	0x4ee0: 0x40472220, 0x4ee1: 0x40472420, 0x4ee2: 0x40472620, 0x4ee3: 0x40472820,
+	0x4ee4: 0x40472a20, 0x4ee5: 0x40472c20, 0x4ee6: 0x40472e20, 0x4ee7: 0x40473020,
+	0x4ee8: 0x40473220, 0x4ee9: 0x40473420, 0x4eea: 0x40473620, 0x4eeb: 0x40473820,
+	0x4eec: 0x40473a20, 0x4eed: 0x40473c20, 0x4eee: 0x40473e20, 0x4eef: 0x40474020,
+	0x4ef0: 0x40474220, 0x4ef1: 0x40474420, 0x4ef2: 0x40474620, 0x4ef3: 0x40474820,
+	0x4ef4: 0x40474a20, 0x4ef5: 0x40474c20, 0x4ef6: 0x40474e20, 0x4ef7: 0x40475020,
+	0x4ef8: 0x40475220, 0x4ef9: 0x40475420, 0x4efa: 0x40475620, 0x4efb: 0x40475820,
+	0x4efc: 0x40475a20, 0x4efd: 0x40475c20, 0x4efe: 0x40475e20, 0x4eff: 0x40476020,
+	// Block 0x13c, offset 0x4f00
+	0x4f00: 0x820923b1, 0x4f01: 0x40476420, 0x4f02: 0x40476620, 0x4f03: 0x40476820,
+	0x4f04: 0x4046e620, 0x4f05: 0x40035420, 0x4f06: 0x40035620, 0x4f07: 0x40061a20,
+	0x4f08: 0x40039a20,
+	0x4f10: 0xe00001d9, 0x4f11: 0xe00002a0, 0x4f12: 0xe00003bb, 0x4f13: 0xe0000495,
+	0x4f14: 0xe0000567, 0x4f15: 0xe0000631, 0x4f16: 0xe00006e1, 0x4f17: 0xe0000789,
+	0x4f18: 0xe0000832, 0x4f19: 0xe00008dd,
+	// Block 0x13d, offset 0x4f40
+	0x4f40: 0x40476a20, 0x4f41: 0x40476c20, 0x4f42: 0x40476e20, 0x4f43: 0x40477020,
+	0x4f44: 0x40477220, 0x4f45: 0x40477420, 0x4f46: 0x40477620, 0x4f47: 0x40477820,
+	0x4f48: 0x40477a20, 0x4f49: 0x40477c20, 0x4f4a: 0x40478420, 0x4f4b: 0x40478620,
+	0x4f4c: 0x40478820, 0x4f4d: 0x40478a20, 0x4f4e: 0x40478c20, 0x4f4f: 0x40478e20,
+	0x4f50: 0x40479020, 0x4f51: 0x40479220, 0x4f52: 0x40479420, 0x4f53: 0x40479620,
+	0x4f54: 0x40479820, 0x4f55: 0x40479a20, 0x4f56: 0x40479c20, 0x4f57: 0x40479e20,
+	0x4f58: 0x4047a020, 0x4f59: 0x4047a220, 0x4f5a: 0x4047a420, 0x4f5b: 0x4047a620,
+	0x4f5c: 0x4047a820, 0x4f5d: 0x4047aa20, 0x4f5e: 0x4047ac20, 0x4f5f: 0x4047ae20,
+	0x4f60: 0x4047b020, 0x4f61: 0x4047b220, 0x4f62: 0x4047b420, 0x4f63: 0x4047b620,
+	0x4f64: 0x4047b820, 0x4f65: 0x4047ba20, 0x4f66: 0x4047bc20, 0x4f67: 0x40478020,
+	0x4f68: 0x40477e20, 0x4f69: 0x40478220, 0x4f6a: 0x4047be20, 0x4f6b: 0xa000f302,
+	0x4f6c: 0xa000f402, 0x4f6d: 0x4047c020, 0x4f6e: 0x4047c220, 0x4f6f: 0x4047c420,
+	0x4f70: 0x4047c620, 0x4f71: 0x4047c820, 0x4f72: 0x4047ca20, 0x4f73: 0x4047cc20,
+	0x4f74: 0x4047ce20, 0x4f75: 0x4047d020, 0x4f76: 0x820923e9, 0x4f77: 0xa070f102,
+	// Block 0x13e, offset 0x4f80
+	0x4f80: 0xe00001dc, 0x4f81: 0xe00002a3, 0x4f82: 0xe00003be, 0x4f83: 0xe0000498,
+	0x4f84: 0xe000056a, 0x4f85: 0xe0000634, 0x4f86: 0xe00006e4, 0x4f87: 0xe000078c,
+	0x4f88: 0xe0000835, 0x4f89: 0xe00008e0,
+	// Block 0x13f, offset 0x4fc0
+	0x4fc0: 0x4076e420, 0x4fc1: 0x4076e620, 0x4fc2: 0x4076e820, 0x4fc3: 0x4076ea20,
+	0x4fc4: 0x4076ec20, 0x4fc5: 0x4076ee20, 0x4fc6: 0x4076f020, 0x4fc7: 0x4076f220,
+	0x4fc8: 0x4076f420, 0x4fc9: 0x4076f620, 0x4fca: 0x4076f820, 0x4fcb: 0x4076fa20,
+	0x4fcc: 0x4076fc20, 0x4fcd: 0x4076fe20, 0x4fce: 0x40770020, 0x4fcf: 0x40770220,
+	0x4fd0: 0x40770420, 0x4fd1: 0x40770620, 0x4fd2: 0x40770820, 0x4fd3: 0x40770a20,
+	0x4fd4: 0x40770c20, 0x4fd5: 0x40770e20, 0x4fd6: 0x40771020, 0x4fd7: 0x40771220,
+	0x4fd8: 0x40771420, 0x4fd9: 0x40771620, 0x4fda: 0x40771820, 0x4fdb: 0x40771a20,
+	0x4fdc: 0x40771c20, 0x4fdd: 0x40771e20, 0x4fde: 0x40772020, 0x4fdf: 0x40772220,
+	0x4fe0: 0x40772420, 0x4fe1: 0x40772620, 0x4fe2: 0x40772820, 0x4fe3: 0x40772a20,
+	0x4fe4: 0x40772c20, 0x4fe5: 0x40772e20, 0x4fe6: 0x40773020, 0x4fe7: 0x40773220,
+	0x4fe8: 0x40773420, 0x4fe9: 0x40773620, 0x4fea: 0x40773820, 0x4feb: 0x40773a20,
+	0x4fec: 0x40773c20, 0x4fed: 0x40773e20, 0x4fee: 0x40774020, 0x4fef: 0x40774220,
+	0x4ff0: 0x40774420, 0x4ff1: 0x40774620, 0x4ff2: 0x40774820, 0x4ff3: 0x40774a20,
+	0x4ff4: 0x40774c20, 0x4ff5: 0x40774e20, 0x4ff6: 0x40775020, 0x4ff7: 0x40775220,
+	0x4ff8: 0x40775420, 0x4ff9: 0x40775620, 0x4ffa: 0x40775820, 0x4ffb: 0x40775a20,
+	0x4ffc: 0x40775c20, 0x4ffd: 0x40775e20, 0x4ffe: 0x40776020, 0x4fff: 0x40776220,
+	// Block 0x140, offset 0x5000
+	0x5000: 0x40776420, 0x5001: 0x40776620, 0x5002: 0x40776820, 0x5003: 0x40776a20,
+	0x5004: 0x40776c20, 0x5005: 0x40776e20, 0x5006: 0x40777020, 0x5007: 0x40777220,
+	0x5008: 0x40777420, 0x5009: 0x40777620, 0x500a: 0x40777820, 0x500b: 0x40777a20,
+	0x500c: 0x40777c20, 0x500d: 0x40777e20, 0x500e: 0x40778020, 0x500f: 0x40778220,
+	0x5010: 0x40778420, 0x5011: 0x40778620, 0x5012: 0x40778820, 0x5013: 0x40778a20,
+	0x5014: 0x40778c20, 0x5015: 0x40778e20, 0x5016: 0x40779020, 0x5017: 0x40779220,
+	0x5018: 0x40779420, 0x5019: 0x40779620, 0x501a: 0x40779820, 0x501b: 0x40779a20,
+	0x501c: 0x40779c20, 0x501d: 0x40779e20, 0x501e: 0x4077a020, 0x501f: 0x4077a220,
+	0x5020: 0x4077a420, 0x5021: 0x4077a620, 0x5022: 0x4077a820, 0x5023: 0x4077aa20,
+	0x5024: 0x4077ac20, 0x5025: 0x4077ae20, 0x5026: 0x4077b020, 0x5027: 0x4077b220,
+	0x5028: 0x4077b420, 0x5029: 0x4077b620, 0x502a: 0x4077b820, 0x502b: 0x4077ba20,
+	0x502c: 0x4077bc20, 0x502d: 0x4077be20, 0x502e: 0x4077c020, 0x502f: 0x4077c220,
+	0x5030: 0x4077c420, 0x5031: 0x4077c620, 0x5032: 0x4077c820, 0x5033: 0x4077ca20,
+	0x5034: 0x4077cc20, 0x5035: 0x4077ce20, 0x5036: 0x4077d020, 0x5037: 0x4077d220,
+	0x5038: 0x4077d420, 0x5039: 0x4077d620, 0x503a: 0x4077d820, 0x503b: 0x4077da20,
+	0x503c: 0x4077dc20, 0x503d: 0x4077de20, 0x503e: 0x4077e020, 0x503f: 0x4077e220,
+	// Block 0x141, offset 0x5040
+	0x5040: 0x4077e420, 0x5041: 0x4077e620, 0x5042: 0x4077e820, 0x5043: 0x4077ea20,
+	0x5044: 0x4077ec20, 0x5045: 0x4077ee20, 0x5046: 0x4077f020, 0x5047: 0x4077f220,
+	0x5048: 0x4077f420, 0x5049: 0x4077f620, 0x504a: 0x4077f820, 0x504b: 0x4077fa20,
+	0x504c: 0x4077fc20, 0x504d: 0x4077fe20, 0x504e: 0x40780020, 0x504f: 0x40780220,
+	0x5050: 0x40780420, 0x5051: 0x40780620, 0x5052: 0x40780820, 0x5053: 0x40780a20,
+	0x5054: 0x40780c20, 0x5055: 0x40780e20, 0x5056: 0x40781020, 0x5057: 0x40781220,
+	0x5058: 0x40781420, 0x5059: 0x40781620, 0x505a: 0x40781820, 0x505b: 0x40781a20,
+	0x505c: 0x40781c20, 0x505d: 0x40781e20, 0x505e: 0x40782020, 0x505f: 0x40782220,
+	0x5060: 0x40782420, 0x5061: 0x40782620, 0x5062: 0x40782820, 0x5063: 0x40782a20,
+	0x5064: 0x40782c20, 0x5065: 0x40782e20, 0x5066: 0x40783020, 0x5067: 0x40783220,
+	0x5068: 0x40783420, 0x5069: 0x40783620, 0x506a: 0x40783820, 0x506b: 0x40783a20,
+	0x506c: 0x40783c20, 0x506d: 0x40783e20, 0x506e: 0x40784020, 0x506f: 0x40784220,
+	0x5070: 0x40784420, 0x5071: 0x40784620, 0x5072: 0x40784820, 0x5073: 0x40784a20,
+	0x5074: 0x40784c20, 0x5075: 0x40784e20, 0x5076: 0x40785020, 0x5077: 0x40785220,
+	0x5078: 0x40785420, 0x5079: 0x40785620, 0x507a: 0x40785820, 0x507b: 0x40785a20,
+	0x507c: 0x40785c20, 0x507d: 0x40785e20, 0x507e: 0x40786020, 0x507f: 0x40786220,
+	// Block 0x142, offset 0x5080
+	0x5080: 0x40786420, 0x5081: 0x40786620, 0x5082: 0x40786820, 0x5083: 0x40786a20,
+	0x5084: 0x40786c20, 0x5085: 0x40786e20, 0x5086: 0x40787020, 0x5087: 0x40787220,
+	0x5088: 0x40787420, 0x5089: 0x40787620, 0x508a: 0x40787820, 0x508b: 0x40787a20,
+	0x508c: 0x40787c20, 0x508d: 0x40787e20, 0x508e: 0x40788020, 0x508f: 0x40788220,
+	0x5090: 0x40788420, 0x5091: 0x40788620, 0x5092: 0x40788820, 0x5093: 0x40788a20,
+	0x5094: 0x40788c20, 0x5095: 0x40788e20, 0x5096: 0x40789020, 0x5097: 0x40789220,
+	0x5098: 0x40789420, 0x5099: 0x40789620, 0x509a: 0x40789820, 0x509b: 0x40789a20,
+	0x509c: 0x40789c20, 0x509d: 0x40789e20, 0x509e: 0x4078a020, 0x509f: 0x4078a220,
+	0x50a0: 0x4078a420, 0x50a1: 0x4078a620, 0x50a2: 0x4078a820, 0x50a3: 0x4078aa20,
+	0x50a4: 0x4078ac20, 0x50a5: 0x4078ae20, 0x50a6: 0x4078b020, 0x50a7: 0x4078b220,
+	0x50a8: 0x4078b420, 0x50a9: 0x4078b620, 0x50aa: 0x4078b820, 0x50ab: 0x4078ba20,
+	0x50ac: 0x4078bc20, 0x50ad: 0x4078be20, 0x50ae: 0x4078c020, 0x50af: 0x4078c220,
+	0x50b0: 0x4078c420, 0x50b1: 0x4078c620, 0x50b2: 0x4078c820, 0x50b3: 0x4078ca20,
+	0x50b4: 0x4078cc20, 0x50b5: 0x4078ce20, 0x50b6: 0x4078d020, 0x50b7: 0x4078d220,
+	0x50b8: 0x4078d420, 0x50b9: 0x4078d620, 0x50ba: 0x4078d820, 0x50bb: 0x4078da20,
+	0x50bc: 0x4078dc20, 0x50bd: 0x4078de20, 0x50be: 0x4078e020, 0x50bf: 0x4078e220,
+	// Block 0x143, offset 0x50c0
+	0x50c0: 0x4078e420, 0x50c1: 0x4078e620, 0x50c2: 0x4078e820, 0x50c3: 0x4078ea20,
+	0x50c4: 0x4078ec20, 0x50c5: 0x4078ee20, 0x50c6: 0x4078f020, 0x50c7: 0x4078f220,
+	0x50c8: 0x4078f420, 0x50c9: 0x4078f620, 0x50ca: 0x4078f820, 0x50cb: 0x4078fa20,
+	0x50cc: 0x4078fc20, 0x50cd: 0x4078fe20, 0x50ce: 0x40790020, 0x50cf: 0x40790220,
+	0x50d0: 0x40790420, 0x50d1: 0x40790620, 0x50d2: 0x40790820, 0x50d3: 0x40790a20,
+	0x50d4: 0x40790c20, 0x50d5: 0x40790e20, 0x50d6: 0x40791020, 0x50d7: 0x40791220,
+	0x50d8: 0x40791420, 0x50d9: 0x40791620, 0x50da: 0x40791820, 0x50db: 0x40791a20,
+	0x50dc: 0x40791c20, 0x50dd: 0x40791e20, 0x50de: 0x40792020, 0x50df: 0x40792220,
+	0x50e0: 0x40792420, 0x50e1: 0x40792620, 0x50e2: 0x40792820, 0x50e3: 0x40792a20,
+	0x50e4: 0x40792c20, 0x50e5: 0x40792e20, 0x50e6: 0x40793020, 0x50e7: 0x40793220,
+	0x50e8: 0x40793420, 0x50e9: 0x40793620, 0x50ea: 0x40793820, 0x50eb: 0x40793a20,
+	0x50ec: 0x40793c20, 0x50ed: 0x40793e20, 0x50ee: 0x40794020, 0x50ef: 0x40794220,
+	0x50f0: 0x40794420, 0x50f1: 0x40794620, 0x50f2: 0x40794820, 0x50f3: 0x40794a20,
+	0x50f4: 0x40794c20, 0x50f5: 0x40794e20, 0x50f6: 0x40795020, 0x50f7: 0x40795220,
+	0x50f8: 0x40795420, 0x50f9: 0x40795620, 0x50fa: 0x40795820, 0x50fb: 0x40795a20,
+	0x50fc: 0x40795c20, 0x50fd: 0x40795e20, 0x50fe: 0x40796020, 0x50ff: 0x40796220,
+	// Block 0x144, offset 0x5100
+	0x5100: 0x40796420, 0x5101: 0x40796620, 0x5102: 0x40796820, 0x5103: 0x40796a20,
+	0x5104: 0x40796c20, 0x5105: 0x40796e20, 0x5106: 0x40797020, 0x5107: 0x40797220,
+	0x5108: 0x40797420, 0x5109: 0x40797620, 0x510a: 0x40797820, 0x510b: 0x40797a20,
+	0x510c: 0x40797c20, 0x510d: 0x40797e20, 0x510e: 0x40798020, 0x510f: 0x40798220,
+	0x5110: 0x40798420, 0x5111: 0x40798620, 0x5112: 0x40798820, 0x5113: 0x40798a20,
+	0x5114: 0x40798c20, 0x5115: 0x40798e20, 0x5116: 0x40799020, 0x5117: 0x40799220,
+	0x5118: 0x40799420, 0x5119: 0x40799620, 0x511a: 0x40799820, 0x511b: 0x40799a20,
+	0x511c: 0x40799c20, 0x511d: 0x40799e20, 0x511e: 0x4079a020, 0x511f: 0x4079a220,
+	0x5120: 0x4079a420, 0x5121: 0x4079a620, 0x5122: 0x4079a820, 0x5123: 0x4079aa20,
+	0x5124: 0x4079ac20, 0x5125: 0x4079ae20, 0x5126: 0x4079b020, 0x5127: 0x4079b220,
+	0x5128: 0x4079b420, 0x5129: 0x4079b620, 0x512a: 0x4079b820, 0x512b: 0x4079ba20,
+	0x512c: 0x4079bc20, 0x512d: 0x4079be20, 0x512e: 0x4079c020, 0x512f: 0x4079c220,
+	0x5130: 0x4079c420, 0x5131: 0x4079c620, 0x5132: 0x4079c820, 0x5133: 0x4079ca20,
+	0x5134: 0x4079cc20, 0x5135: 0x4079ce20, 0x5136: 0x4079d020, 0x5137: 0x4079d220,
+	0x5138: 0x4079d420, 0x5139: 0x4079d620, 0x513a: 0x4079d820, 0x513b: 0x4079da20,
+	0x513c: 0x4079dc20, 0x513d: 0x4079de20, 0x513e: 0x4079e020, 0x513f: 0x4079e220,
+	// Block 0x145, offset 0x5140
+	0x5140: 0x4079e420, 0x5141: 0x4079e620, 0x5142: 0x4079e820, 0x5143: 0x4079ea20,
+	0x5144: 0x4079ec20, 0x5145: 0x4079ee20, 0x5146: 0x4079f020, 0x5147: 0x4079f220,
+	0x5148: 0x4079f420, 0x5149: 0x4079f620, 0x514a: 0x4079f820, 0x514b: 0x4079fa20,
+	0x514c: 0x4079fc20, 0x514d: 0x4079fe20, 0x514e: 0x407a0020, 0x514f: 0x407a0220,
+	0x5150: 0x407a0420, 0x5151: 0x407a0620, 0x5152: 0x407a0820, 0x5153: 0x407a0a20,
+	0x5154: 0x407a0c20, 0x5155: 0x407a0e20, 0x5156: 0x407a1020, 0x5157: 0x407a1220,
+	0x5158: 0x407a1420, 0x5159: 0x407a1620, 0x515a: 0x407a1820, 0x515b: 0x407a1a20,
+	0x515c: 0x407a1c20, 0x515d: 0x407a1e20, 0x515e: 0x407a2020, 0x515f: 0x407a2220,
+	0x5160: 0x407a2420, 0x5161: 0x407a2620, 0x5162: 0x407a2820, 0x5163: 0x407a2a20,
+	0x5164: 0x407a2c20, 0x5165: 0x407a2e20, 0x5166: 0x407a3020, 0x5167: 0x407a3220,
+	0x5168: 0x407a3420, 0x5169: 0x407a3620, 0x516a: 0x407a3820, 0x516b: 0x407a3a20,
+	0x516c: 0x407a3c20, 0x516d: 0x407a3e20, 0x516e: 0x407a4020, 0x516f: 0x407a4220,
+	0x5170: 0x407a4420, 0x5171: 0x407a4620, 0x5172: 0x407a4820, 0x5173: 0x407a4a20,
+	0x5174: 0x407a4c20, 0x5175: 0x407a4e20, 0x5176: 0x407a5020, 0x5177: 0x407a5220,
+	0x5178: 0x407a5420, 0x5179: 0x407a5620, 0x517a: 0x407a5820, 0x517b: 0x407a5a20,
+	0x517c: 0x407a5c20, 0x517d: 0x407a5e20, 0x517e: 0x407a6020, 0x517f: 0x407a6220,
+	// Block 0x146, offset 0x5180
+	0x5180: 0x407a6420, 0x5181: 0x407a6620, 0x5182: 0x407a6820, 0x5183: 0x407a6a20,
+	0x5184: 0x407a6c20, 0x5185: 0x407a6e20, 0x5186: 0x407a7020, 0x5187: 0x407a7220,
+	0x5188: 0x407a7420, 0x5189: 0x407a7620, 0x518a: 0x407a7820, 0x518b: 0x407a7a20,
+	0x518c: 0x407a7c20, 0x518d: 0x407a7e20, 0x518e: 0x407a8020, 0x518f: 0x407a8220,
+	0x5190: 0x407a8420, 0x5191: 0x407a8620, 0x5192: 0x407a8820, 0x5193: 0x407a8a20,
+	0x5194: 0x407a8c20, 0x5195: 0x407a8e20, 0x5196: 0x407a9020, 0x5197: 0x407a9220,
+	0x5198: 0x407a9420, 0x5199: 0x407a9620, 0x519a: 0x407a9820, 0x519b: 0x407a9a20,
+	0x519c: 0x407a9c20, 0x519d: 0x407a9e20, 0x519e: 0x407aa020, 0x519f: 0x407aa220,
+	0x51a0: 0x407aa420, 0x51a1: 0x407aa620, 0x51a2: 0x407aa820, 0x51a3: 0x407aaa20,
+	0x51a4: 0x407aac20, 0x51a5: 0x407aae20, 0x51a6: 0x407ab020, 0x51a7: 0x407ab220,
+	0x51a8: 0x407ab420, 0x51a9: 0x407ab620, 0x51aa: 0x407ab820, 0x51ab: 0x407aba20,
+	0x51ac: 0x407abc20, 0x51ad: 0x407abe20, 0x51ae: 0x407ac020, 0x51af: 0x407ac220,
+	0x51b0: 0x407ac420, 0x51b1: 0x407ac620, 0x51b2: 0x407ac820, 0x51b3: 0x407aca20,
+	0x51b4: 0x407acc20, 0x51b5: 0x407ace20, 0x51b6: 0x407ad020, 0x51b7: 0x407ad220,
+	0x51b8: 0x407ad420, 0x51b9: 0x407ad620, 0x51ba: 0x407ad820, 0x51bb: 0x407ada20,
+	0x51bc: 0x407adc20, 0x51bd: 0x407ade20, 0x51be: 0x407ae020, 0x51bf: 0x407ae220,
+	// Block 0x147, offset 0x51c0
+	0x51c0: 0x407ae420, 0x51c1: 0x407ae620, 0x51c2: 0x407ae820, 0x51c3: 0x407aea20,
+	0x51c4: 0x407aec20, 0x51c5: 0x407aee20, 0x51c6: 0x407af020, 0x51c7: 0x407af220,
+	0x51c8: 0x407af420, 0x51c9: 0x407af620, 0x51ca: 0x407af820, 0x51cb: 0x407afa20,
+	0x51cc: 0x407afc20, 0x51cd: 0x407afe20, 0x51ce: 0x407b0020, 0x51cf: 0x407b0220,
+	0x51d0: 0x407b0420, 0x51d1: 0x407b0620, 0x51d2: 0x407b0820, 0x51d3: 0x407b0a20,
+	0x51d4: 0x407b0c20, 0x51d5: 0x407b0e20, 0x51d6: 0x407b1020, 0x51d7: 0x407b1220,
+	0x51d8: 0x407b1420, 0x51d9: 0x407b1620, 0x51da: 0x407b1820, 0x51db: 0x407b1a20,
+	0x51dc: 0x407b1c20, 0x51dd: 0x407b1e20, 0x51de: 0x407b2020, 0x51df: 0x407b2220,
+	0x51e0: 0x407b2420, 0x51e1: 0x407b2620, 0x51e2: 0x407b2820, 0x51e3: 0x407b2a20,
+	0x51e4: 0x407b2c20, 0x51e5: 0x407b2e20, 0x51e6: 0x407b3020, 0x51e7: 0x407b3220,
+	0x51e8: 0x407b3420, 0x51e9: 0x407b3620, 0x51ea: 0x407b3820, 0x51eb: 0x407b3a20,
+	0x51ec: 0x407b3c20, 0x51ed: 0x407b3e20, 0x51ee: 0x407b4020, 0x51ef: 0x407b4220,
+	0x51f0: 0x407b4420, 0x51f1: 0x407b4620, 0x51f2: 0x407b4820, 0x51f3: 0x407b4a20,
+	0x51f4: 0x407b4c20, 0x51f5: 0x407b4e20, 0x51f6: 0x407b5020, 0x51f7: 0x407b5220,
+	0x51f8: 0x407b5420, 0x51f9: 0x407b5620, 0x51fa: 0x407b5820, 0x51fb: 0x407b5a20,
+	0x51fc: 0x407b5c20, 0x51fd: 0x407b5e20, 0x51fe: 0x407b6020, 0x51ff: 0x407b6220,
+	// Block 0x148, offset 0x5200
+	0x5200: 0x407b6420, 0x5201: 0x407b6620, 0x5202: 0x407b6820, 0x5203: 0x407b6a20,
+	0x5204: 0x407b6c20, 0x5205: 0x407b6e20, 0x5206: 0x407b7020, 0x5207: 0x407b7220,
+	0x5208: 0x407b7420, 0x5209: 0x407b7620, 0x520a: 0x407b7820, 0x520b: 0x407b7a20,
+	0x520c: 0x407b7c20, 0x520d: 0x407b7e20, 0x520e: 0x407b8020, 0x520f: 0x407b8220,
+	0x5210: 0x407b8420, 0x5211: 0x407b8620, 0x5212: 0x407b8820, 0x5213: 0x407b8a20,
+	0x5214: 0x407b8c20, 0x5215: 0x407b8e20, 0x5216: 0x407b9020, 0x5217: 0x407b9220,
+	0x5218: 0x407b9420, 0x5219: 0x407b9620, 0x521a: 0x407b9820, 0x521b: 0x407b9a20,
+	0x521c: 0x407b9c20, 0x521d: 0x407b9e20, 0x521e: 0x407ba020, 0x521f: 0x407ba220,
+	0x5220: 0x407ba420, 0x5221: 0x407ba620, 0x5222: 0x407ba820, 0x5223: 0x407baa20,
+	0x5224: 0x407bac20, 0x5225: 0x407bae20, 0x5226: 0x407bb020, 0x5227: 0x407bb220,
+	0x5228: 0x407bb420, 0x5229: 0x407bb620, 0x522a: 0x407bb820, 0x522b: 0x407bba20,
+	0x522c: 0x407bbc20, 0x522d: 0x407bbe20, 0x522e: 0x407bc020, 0x522f: 0x407bc220,
+	0x5230: 0x407bc420, 0x5231: 0x407bc620, 0x5232: 0x407bc820, 0x5233: 0x407bca20,
+	0x5234: 0x407bcc20, 0x5235: 0x407bce20, 0x5236: 0x407bd020, 0x5237: 0x407bd220,
+	0x5238: 0x407bd420, 0x5239: 0x407bd620, 0x523a: 0x407bd820, 0x523b: 0x407bda20,
+	0x523c: 0x407bdc20, 0x523d: 0x407bde20, 0x523e: 0x407be020, 0x523f: 0x407be220,
+	// Block 0x149, offset 0x5240
+	0x5240: 0x407be420, 0x5241: 0x407be620, 0x5242: 0x407be820, 0x5243: 0x407bea20,
+	0x5244: 0x407bec20, 0x5245: 0x407bee20, 0x5246: 0x407bf020, 0x5247: 0x407bf220,
+	0x5248: 0x407bf420, 0x5249: 0x407bf620, 0x524a: 0x407bf820, 0x524b: 0x407bfa20,
+	0x524c: 0x407bfc20, 0x524d: 0x407bfe20, 0x524e: 0x407c0020, 0x524f: 0x407c0220,
+	0x5250: 0x407c0420, 0x5251: 0x407c0620, 0x5252: 0x407c0820, 0x5253: 0x407c0a20,
+	0x5254: 0x407c0c20, 0x5255: 0x407c0e20, 0x5256: 0x407c1020, 0x5257: 0x407c1220,
+	0x5258: 0x407c1420, 0x5259: 0x407c1620, 0x525a: 0x407c1820, 0x525b: 0x407c1a20,
+	0x525c: 0x407c1c20, 0x525d: 0x407c1e20, 0x525e: 0x407c2020, 0x525f: 0x407c2220,
+	0x5260: 0x407c2420, 0x5261: 0x407c2620, 0x5262: 0x407c2820, 0x5263: 0x407c2a20,
+	0x5264: 0x407c2c20, 0x5265: 0x407c2e20, 0x5266: 0x407c3020, 0x5267: 0x407c3220,
+	0x5268: 0x407c3420, 0x5269: 0x407c3620, 0x526a: 0x407c3820, 0x526b: 0x407c3a20,
+	0x526c: 0x407c3c20, 0x526d: 0x407c3e20, 0x526e: 0x407c4020, 0x526f: 0x407c4220,
+	0x5270: 0x407c4420, 0x5271: 0x407c4620, 0x5272: 0x407c4820, 0x5273: 0x407c4a20,
+	0x5274: 0x407c4c20, 0x5275: 0x407c4e20, 0x5276: 0x407c5020, 0x5277: 0x407c5220,
+	0x5278: 0x407c5420, 0x5279: 0x407c5620, 0x527a: 0x407c5820, 0x527b: 0x407c5a20,
+	0x527c: 0x407c5c20, 0x527d: 0x407c5e20, 0x527e: 0x407c6020, 0x527f: 0x407c6220,
+	// Block 0x14a, offset 0x5280
+	0x5280: 0x407c6420, 0x5281: 0x407c6620, 0x5282: 0x407c6820, 0x5283: 0x407c6a20,
+	0x5284: 0x407c6c20, 0x5285: 0x407c6e20, 0x5286: 0x407c7020, 0x5287: 0x407c7220,
+	0x5288: 0x407c7420, 0x5289: 0x407c7620, 0x528a: 0x407c7820, 0x528b: 0x407c7a20,
+	0x528c: 0x407c7c20, 0x528d: 0x407c7e20, 0x528e: 0x407c8020, 0x528f: 0x407c8220,
+	0x5290: 0x407c8420, 0x5291: 0x407c8620, 0x5292: 0x407c8820, 0x5293: 0x407c8a20,
+	0x5294: 0x407c8c20, 0x5295: 0x407c8e20, 0x5296: 0x407c9020, 0x5297: 0x407c9220,
+	0x5298: 0x407c9420, 0x5299: 0x407c9620, 0x529a: 0x407c9820, 0x529b: 0x407c9a20,
+	0x529c: 0x407c9c20, 0x529d: 0x407c9e20, 0x529e: 0x407ca020, 0x529f: 0x407ca220,
+	0x52a0: 0x407ca420, 0x52a1: 0x407ca620, 0x52a2: 0x407ca820, 0x52a3: 0x407caa20,
+	0x52a4: 0x407cac20, 0x52a5: 0x407cae20, 0x52a6: 0x407cb020, 0x52a7: 0x407cb220,
+	0x52a8: 0x407cb420, 0x52a9: 0x407cb620, 0x52aa: 0x407cb820, 0x52ab: 0x407cba20,
+	0x52ac: 0x407cbc20, 0x52ad: 0x407cbe20, 0x52ae: 0x407cc020, 0x52af: 0x407cc220,
+	0x52b0: 0x407cc420, 0x52b1: 0x407cc620, 0x52b2: 0x407cc820, 0x52b3: 0x407cca20,
+	0x52b4: 0x407ccc20, 0x52b5: 0x407cce20, 0x52b6: 0x407cd020, 0x52b7: 0x407cd220,
+	0x52b8: 0x407cd420, 0x52b9: 0x407cd620, 0x52ba: 0x407cd820, 0x52bb: 0x407cda20,
+	0x52bc: 0x407cdc20, 0x52bd: 0x407cde20, 0x52be: 0x407ce020, 0x52bf: 0x407ce220,
+	// Block 0x14b, offset 0x52c0
+	0x52c0: 0x407ce420, 0x52c1: 0x407ce620, 0x52c2: 0x407ce820, 0x52c3: 0x407cea20,
+	0x52c4: 0x407cec20, 0x52c5: 0x407cee20, 0x52c6: 0x407cf020, 0x52c7: 0x407cf220,
+	0x52c8: 0x407cf420, 0x52c9: 0x407cf620, 0x52ca: 0x407cf820, 0x52cb: 0x407cfa20,
+	0x52cc: 0x407cfc20, 0x52cd: 0x407cfe20, 0x52ce: 0x407d0020, 0x52cf: 0x407d0220,
+	0x52d0: 0x407d0420, 0x52d1: 0x407d0620, 0x52d2: 0x407d0820, 0x52d3: 0x407d0a20,
+	0x52d4: 0x407d0c20, 0x52d5: 0x407d0e20, 0x52d6: 0x407d1020, 0x52d7: 0x407d1220,
+	0x52d8: 0x407d1420, 0x52d9: 0x407d1620, 0x52da: 0x407d1820, 0x52db: 0x407d1a20,
+	0x52dc: 0x407d1c20, 0x52dd: 0x407d1e20, 0x52de: 0x407d2020, 0x52df: 0x407d2220,
+	0x52e0: 0x407d2420, 0x52e1: 0x407d2620, 0x52e2: 0x407d2820, 0x52e3: 0x407d2a20,
+	0x52e4: 0x407d2c20, 0x52e5: 0x407d2e20, 0x52e6: 0x407d3020, 0x52e7: 0x407d3220,
+	0x52e8: 0x407d3420, 0x52e9: 0x407d3620, 0x52ea: 0x407d3820, 0x52eb: 0x407d3a20,
+	0x52ec: 0x407d3c20, 0x52ed: 0x407d3e20, 0x52ee: 0x407d4020, 0x52ef: 0x407d4220,
+	0x52f0: 0x407d4420, 0x52f1: 0x407d4620, 0x52f2: 0x407d4820, 0x52f3: 0x407d4a20,
+	0x52f4: 0x407d4c20, 0x52f5: 0x407d4e20, 0x52f6: 0x407d5020, 0x52f7: 0x407d5220,
+	0x52f8: 0x407d5420, 0x52f9: 0x407d5620, 0x52fa: 0x407d5820, 0x52fb: 0x407d5a20,
+	0x52fc: 0x407d5c20, 0x52fd: 0x407d5e20, 0x52fe: 0x407d6020, 0x52ff: 0x407d6220,
+	// Block 0x14c, offset 0x5300
+	0x5300: 0x407d6420, 0x5301: 0x407d6620, 0x5302: 0x407d6820, 0x5303: 0x407d6a20,
+	0x5304: 0x407d6c20, 0x5305: 0x407d6e20, 0x5306: 0x407d7020, 0x5307: 0x407d7220,
+	0x5308: 0x407d7420, 0x5309: 0x407d7620, 0x530a: 0x407d7820, 0x530b: 0x407d7a20,
+	0x530c: 0x407d7c20, 0x530d: 0x407d7e20, 0x530e: 0x407d8020, 0x530f: 0x407d8220,
+	0x5310: 0x407d8420, 0x5311: 0x407d8620, 0x5312: 0x407d8820, 0x5313: 0x407d8a20,
+	0x5314: 0x407d8c20, 0x5315: 0x407d8e20, 0x5316: 0x407d9020, 0x5317: 0x407d9220,
+	0x5318: 0x407d9420, 0x5319: 0x407d9620, 0x531a: 0x407d9820, 0x531b: 0x407d9a20,
+	0x531c: 0x407d9c20, 0x531d: 0x407d9e20, 0x531e: 0x407da020, 0x531f: 0x407da220,
+	0x5320: 0x407da420, 0x5321: 0x407da620, 0x5322: 0x407da820, 0x5323: 0x407daa20,
+	0x5324: 0x407dac20, 0x5325: 0x407dae20, 0x5326: 0x407db020, 0x5327: 0x407db220,
+	0x5328: 0x407db420, 0x5329: 0x407db620, 0x532a: 0x407db820, 0x532b: 0x407dba20,
+	0x532c: 0x407dbc20, 0x532d: 0x407dbe20, 0x532e: 0x407dc020,
+	// Block 0x14d, offset 0x5340
+	0x5340: 0xe0000394, 0x5341: 0xe000045f, 0x5342: 0xe0000534, 0x5343: 0xe0000610,
+	0x5344: 0xe00006cc, 0x5345: 0xe0000771, 0x5346: 0xe000081d, 0x5347: 0xe00008c2,
+	0x5348: 0xe0000462, 0x5349: 0xe0000537, 0x534a: 0xe0000613, 0x534b: 0xe00006cf,
+	0x534c: 0xe0000774, 0x534d: 0xe0000820, 0x534e: 0xe00008c5, 0x534f: 0xe000053a,
+	0x5350: 0xe0000616, 0x5351: 0xe00006d2, 0x5352: 0xe0000777, 0x5353: 0xe0000823,
+	0x5354: 0xe00008c8, 0x5355: 0xe000027f, 0x5356: 0xe0000397, 0x5357: 0xe0000465,
+	0x5358: 0xe000053d, 0x5359: 0xe0000619, 0x535a: 0xe00006d5, 0x535b: 0xe000077a,
+	0x535c: 0xe0000826, 0x535d: 0xe00008cb, 0x535e: 0xe0000282, 0x535f: 0xe000039a,
+	0x5360: 0xe0000468, 0x5361: 0xe0000540, 0x5362: 0xe000061c, 0x5363: 0xe000039d,
+	0x5364: 0xe000046b, 0x5365: 0xe000046e, 0x5366: 0xe0000543, 0x5367: 0xe000061f,
+	0x5368: 0xe00006d8, 0x5369: 0xe000077d, 0x536a: 0xe0000829, 0x536b: 0xe00008ce,
+	0x536c: 0xe0000285, 0x536d: 0xe00003a0, 0x536e: 0xe0000471, 0x536f: 0xe0000474,
+	0x5370: 0xe0000546, 0x5371: 0xe0000622, 0x5372: 0x4029a020, 0x5373: 0x4029a220,
+	0x5374: 0xe0000288, 0x5375: 0xe00003a3, 0x5376: 0xe0000477, 0x5377: 0xe000047a,
+	0x5378: 0xe0000549, 0x5379: 0xe0000625, 0x537a: 0xe000047d, 0x537b: 0xe0000480,
+	0x537c: 0xe000054c, 0x537d: 0xe000054f, 0x537e: 0xe0000552, 0x537f: 0xe0000555,
+	// Block 0x14e, offset 0x5380
+	0x5380: 0xe00006db, 0x5381: 0xe0000780, 0x5382: 0xe0000783, 0x5383: 0xe0000786,
+	0x5384: 0xe000082c, 0x5385: 0xe000082f, 0x5386: 0xe00008d1, 0x5387: 0xe00008d4,
+	0x5388: 0xe00008d7, 0x5389: 0xe00008da, 0x538a: 0xe00003a6, 0x538b: 0xe0000483,
+	0x538c: 0xe0000558, 0x538d: 0xe0000628, 0x538e: 0xe00006de, 0x538f: 0xe000028b,
+	0x5390: 0xe00003a9, 0x5391: 0xe0000486, 0x5392: 0xe000055b, 0x5393: 0xe000055e,
+	0x5394: 0xe000062b, 0x5395: 0xe000062e, 0x5396: 0x4029a420, 0x5397: 0x4029a620,
+	0x5398: 0xe000028e, 0x5399: 0xe00003ac, 0x539a: 0x4029a820, 0x539b: 0x4029aa20,
+	0x539c: 0x4029ac20, 0x539d: 0x4029ae20, 0x539e: 0x4029b020, 0x539f: 0x4029b220,
+	0x53a0: 0x4029b420, 0x53a1: 0x4029b620, 0x53a2: 0x4029b820,
+	0x53b0: 0x4003ca20, 0x53b1: 0x4003cc20, 0x53b2: 0x4003ce20, 0x53b3: 0x4003d020,
+	// Block 0x14f, offset 0x53c0
+	0x53c0: 0x407dc220, 0x53c1: 0x407dc420, 0x53c2: 0x407dc620, 0x53c3: 0x407dc820,
+	0x53c4: 0x407dca20, 0x53c5: 0x407dcc20, 0x53c6: 0x407dce20, 0x53c7: 0x407dd020,
+	0x53c8: 0x407dd220, 0x53c9: 0x407dd420, 0x53ca: 0x407dd620, 0x53cb: 0x407dd820,
+	0x53cc: 0x407dda20, 0x53cd: 0x407ddc20, 0x53ce: 0x407dde20, 0x53cf: 0x407de020,
+	0x53d0: 0x407de220, 0x53d1: 0x407de420, 0x53d2: 0x407de620, 0x53d3: 0x407de820,
+	0x53d4: 0x407dea20, 0x53d5: 0x407dec20, 0x53d6: 0x407dee20, 0x53d7: 0x407df020,
+	0x53d8: 0x407df220, 0x53d9: 0x407df420, 0x53da: 0x407df620, 0x53db: 0x407df820,
+	0x53dc: 0x407dfa20, 0x53dd: 0x407dfc20, 0x53de: 0x407dfe20, 0x53df: 0x407e0020,
+	0x53e0: 0x407e0220, 0x53e1: 0x407e0420, 0x53e2: 0x407e0620, 0x53e3: 0x407e0820,
+	0x53e4: 0x407e0a20, 0x53e5: 0x407e0c20, 0x53e6: 0x407e0e20, 0x53e7: 0x407e1020,
+	0x53e8: 0x407e1220, 0x53e9: 0x407e1420, 0x53ea: 0x407e1620, 0x53eb: 0x407e1820,
+	0x53ec: 0x407e1a20, 0x53ed: 0x407e1c20, 0x53ee: 0x407e1e20, 0x53ef: 0x407e2020,
+	0x53f0: 0x407e2220, 0x53f1: 0x407e2420, 0x53f2: 0x407e2620, 0x53f3: 0x407e2820,
+	0x53f4: 0x407e2a20, 0x53f5: 0x407e2c20, 0x53f6: 0x407e2e20, 0x53f7: 0x407e3020,
+	0x53f8: 0x407e3220, 0x53f9: 0x407e3420, 0x53fa: 0x407e3620, 0x53fb: 0x407e3820,
+	0x53fc: 0x407e3a20, 0x53fd: 0x407e3c20, 0x53fe: 0x407e3e20, 0x53ff: 0x407e4020,
+	// Block 0x150, offset 0x5400
+	0x5400: 0x407e4220, 0x5401: 0x407e4420, 0x5402: 0x407e4620, 0x5403: 0x407e4820,
+	0x5404: 0x407e4a20, 0x5405: 0x407e4c20, 0x5406: 0x407e4e20, 0x5407: 0x407e5020,
+	0x5408: 0x407e5220, 0x5409: 0x407e5420, 0x540a: 0x407e5620, 0x540b: 0x407e5820,
+	0x540c: 0x407e5a20, 0x540d: 0x407e5c20, 0x540e: 0x407e5e20, 0x540f: 0x407e6020,
+	0x5410: 0x407e6220, 0x5411: 0x407e6420, 0x5412: 0x407e6620, 0x5413: 0x407e6820,
+	0x5414: 0x407e6a20, 0x5415: 0x407e6c20, 0x5416: 0x407e6e20, 0x5417: 0x407e7020,
+	0x5418: 0x407e7220, 0x5419: 0x407e7420, 0x541a: 0x407e7620, 0x541b: 0x407e7820,
+	0x541c: 0x407e7a20, 0x541d: 0x407e7c20, 0x541e: 0x407e7e20, 0x541f: 0x407e8020,
+	0x5420: 0x407e8220, 0x5421: 0x407e8420, 0x5422: 0x407e8620, 0x5423: 0x407e8820,
+	0x5424: 0x407e8a20, 0x5425: 0x407e8c20, 0x5426: 0x407e8e20, 0x5427: 0x407e9020,
+	0x5428: 0x407e9220, 0x5429: 0x407e9420, 0x542a: 0x407e9620, 0x542b: 0x407e9820,
+	0x542c: 0x407e9a20, 0x542d: 0x407e9c20, 0x542e: 0x407e9e20, 0x542f: 0x407ea020,
+	0x5430: 0x407ea220, 0x5431: 0x407ea420, 0x5432: 0x407ea620, 0x5433: 0x407ea820,
+	0x5434: 0x407eaa20, 0x5435: 0x407eac20, 0x5436: 0x407eae20, 0x5437: 0x407eb020,
+	0x5438: 0x407eb220, 0x5439: 0x407eb420, 0x543a: 0x407eb620, 0x543b: 0x407eb820,
+	0x543c: 0x407eba20, 0x543d: 0x407ebc20, 0x543e: 0x407ebe20, 0x543f: 0x407ec020,
+	// Block 0x151, offset 0x5440
+	0x5440: 0x407ec220, 0x5441: 0x407ec420, 0x5442: 0x407ec620, 0x5443: 0x407ec820,
+	0x5444: 0x407eca20, 0x5445: 0x407ecc20, 0x5446: 0x407ece20, 0x5447: 0x407ed020,
+	0x5448: 0x407ed220, 0x5449: 0x407ed420, 0x544a: 0x407ed620, 0x544b: 0x407ed820,
+	0x544c: 0x407eda20, 0x544d: 0x407edc20, 0x544e: 0x407ede20, 0x544f: 0x407ee020,
+	0x5450: 0x407ee220, 0x5451: 0x407ee420, 0x5452: 0x407ee620, 0x5453: 0x407ee820,
+	0x5454: 0x407eea20, 0x5455: 0x407eec20, 0x5456: 0x407eee20, 0x5457: 0x407ef020,
+	0x5458: 0x407ef220, 0x5459: 0x407ef420, 0x545a: 0x407ef620, 0x545b: 0x407ef820,
+	0x545c: 0x407efa20, 0x545d: 0x407efc20, 0x545e: 0x407efe20, 0x545f: 0x407f0020,
+	0x5460: 0x407f0220, 0x5461: 0x407f0420, 0x5462: 0x407f0620, 0x5463: 0x407f0820,
+	0x5464: 0x407f0a20, 0x5465: 0x407f0c20, 0x5466: 0x407f0e20, 0x5467: 0x407f1020,
+	0x5468: 0x407f1220, 0x5469: 0x407f1420, 0x546a: 0x407f1620, 0x546b: 0x407f1820,
+	0x546c: 0x407f1a20, 0x546d: 0x407f1c20, 0x546e: 0x407f1e20, 0x546f: 0x407f2020,
+	0x5470: 0x407f2220, 0x5471: 0x407f2420, 0x5472: 0x407f2620, 0x5473: 0x407f2820,
+	0x5474: 0x407f2a20, 0x5475: 0x407f2c20, 0x5476: 0x407f2e20, 0x5477: 0x407f3020,
+	0x5478: 0x407f3220, 0x5479: 0x407f3420, 0x547a: 0x407f3620, 0x547b: 0x407f3820,
+	0x547c: 0x407f3a20, 0x547d: 0x407f3c20, 0x547e: 0x407f3e20, 0x547f: 0x407f4020,
+	// Block 0x152, offset 0x5480
+	0x5480: 0x407f4220, 0x5481: 0x407f4420, 0x5482: 0x407f4620, 0x5483: 0x407f4820,
+	0x5484: 0x407f4a20, 0x5485: 0x407f4c20, 0x5486: 0x407f4e20, 0x5487: 0x407f5020,
+	0x5488: 0x407f5220, 0x5489: 0x407f5420, 0x548a: 0x407f5620, 0x548b: 0x407f5820,
+	0x548c: 0x407f5a20, 0x548d: 0x407f5c20, 0x548e: 0x407f5e20, 0x548f: 0x407f6020,
+	0x5490: 0x407f6220, 0x5491: 0x407f6420, 0x5492: 0x407f6620, 0x5493: 0x407f6820,
+	0x5494: 0x407f6a20, 0x5495: 0x407f6c20, 0x5496: 0x407f6e20, 0x5497: 0x407f7020,
+	0x5498: 0x407f7220, 0x5499: 0x407f7420, 0x549a: 0x407f7620, 0x549b: 0x407f7820,
+	0x549c: 0x407f7a20, 0x549d: 0x407f7c20, 0x549e: 0x407f7e20, 0x549f: 0x407f8020,
+	0x54a0: 0x407f8220, 0x54a1: 0x407f8420, 0x54a2: 0x407f8620, 0x54a3: 0x407f8820,
+	0x54a4: 0x407f8a20, 0x54a5: 0x407f8c20, 0x54a6: 0x407f8e20, 0x54a7: 0x407f9020,
+	0x54a8: 0x407f9220, 0x54a9: 0x407f9420, 0x54aa: 0x407f9620, 0x54ab: 0x407f9820,
+	0x54ac: 0x407f9a20, 0x54ad: 0x407f9c20, 0x54ae: 0x407f9e20, 0x54af: 0x407fa020,
+	0x54b0: 0x407fa220, 0x54b1: 0x407fa420, 0x54b2: 0x407fa620, 0x54b3: 0x407fa820,
+	0x54b4: 0x407faa20, 0x54b5: 0x407fac20, 0x54b6: 0x407fae20, 0x54b7: 0x407fb020,
+	0x54b8: 0x407fb220, 0x54b9: 0x407fb420, 0x54ba: 0x407fb620, 0x54bb: 0x407fb820,
+	0x54bc: 0x407fba20, 0x54bd: 0x407fbc20, 0x54be: 0x407fbe20, 0x54bf: 0x407fc020,
+	// Block 0x153, offset 0x54c0
+	0x54c0: 0x407fc220, 0x54c1: 0x407fc420, 0x54c2: 0x407fc620, 0x54c3: 0x407fc820,
+	0x54c4: 0x407fca20, 0x54c5: 0x407fcc20, 0x54c6: 0x407fce20, 0x54c7: 0x407fd020,
+	0x54c8: 0x407fd220, 0x54c9: 0x407fd420, 0x54ca: 0x407fd620, 0x54cb: 0x407fd820,
+	0x54cc: 0x407fda20, 0x54cd: 0x407fdc20, 0x54ce: 0x407fde20, 0x54cf: 0x407fe020,
+	0x54d0: 0x407fe220, 0x54d1: 0x407fe420, 0x54d2: 0x407fe620, 0x54d3: 0x407fe820,
+	0x54d4: 0x407fea20, 0x54d5: 0x407fec20, 0x54d6: 0x407fee20, 0x54d7: 0x407ff020,
+	0x54d8: 0x407ff220, 0x54d9: 0x407ff420, 0x54da: 0x407ff620, 0x54db: 0x407ff820,
+	0x54dc: 0x407ffa20, 0x54dd: 0x407ffc20, 0x54de: 0x407ffe20, 0x54df: 0x40800020,
+	0x54e0: 0x40800220, 0x54e1: 0x40800420, 0x54e2: 0x40800620, 0x54e3: 0x40800820,
+	0x54e4: 0x40800a20, 0x54e5: 0x40800c20, 0x54e6: 0x40800e20, 0x54e7: 0x40801020,
+	0x54e8: 0x40801220, 0x54e9: 0x40801420, 0x54ea: 0x40801620, 0x54eb: 0x40801820,
+	0x54ec: 0x40801a20, 0x54ed: 0x40801c20, 0x54ee: 0x40801e20, 0x54ef: 0x40802020,
+	0x54f0: 0x40802220, 0x54f1: 0x40802420, 0x54f2: 0x40802620, 0x54f3: 0x40802820,
+	0x54f4: 0x40802a20, 0x54f5: 0x40802c20, 0x54f6: 0x40802e20, 0x54f7: 0x40803020,
+	0x54f8: 0x40803220, 0x54f9: 0x40803420, 0x54fa: 0x40803620, 0x54fb: 0x40803820,
+	0x54fc: 0x40803a20, 0x54fd: 0x40803c20, 0x54fe: 0x40803e20, 0x54ff: 0x40804020,
+	// Block 0x154, offset 0x5500
+	0x5500: 0x40804220, 0x5501: 0x40804420, 0x5502: 0x40804620, 0x5503: 0x40804820,
+	0x5504: 0x40804a20, 0x5505: 0x40804c20, 0x5506: 0x40804e20, 0x5507: 0x40805020,
+	0x5508: 0x40805220, 0x5509: 0x40805420, 0x550a: 0x40805620, 0x550b: 0x40805820,
+	0x550c: 0x40805a20, 0x550d: 0x40805c20, 0x550e: 0x40805e20, 0x550f: 0x40806020,
+	0x5510: 0x40806220, 0x5511: 0x40806420, 0x5512: 0x40806620, 0x5513: 0x40806820,
+	0x5514: 0x40806a20, 0x5515: 0x40806c20, 0x5516: 0x40806e20, 0x5517: 0x40807020,
+	0x5518: 0x40807220, 0x5519: 0x40807420, 0x551a: 0x40807620, 0x551b: 0x40807820,
+	0x551c: 0x40807a20, 0x551d: 0x40807c20, 0x551e: 0x40807e20, 0x551f: 0x40808020,
+	0x5520: 0x40808220, 0x5521: 0x40808420, 0x5522: 0x40808620, 0x5523: 0x40808820,
+	0x5524: 0x40808a20, 0x5525: 0x40808c20, 0x5526: 0x40808e20, 0x5527: 0x40809020,
+	0x5528: 0x40809220, 0x5529: 0x40809420, 0x552a: 0x40809620, 0x552b: 0x40809820,
+	0x552c: 0x40809a20, 0x552d: 0x40809c20, 0x552e: 0x40809e20, 0x552f: 0x4080a020,
+	0x5530: 0x4080a220, 0x5531: 0x4080a420, 0x5532: 0x4080a620, 0x5533: 0x4080a820,
+	0x5534: 0x4080aa20, 0x5535: 0x4080ac20, 0x5536: 0x4080ae20, 0x5537: 0x4080b020,
+	0x5538: 0x4080b220, 0x5539: 0x4080b420, 0x553a: 0x4080b620, 0x553b: 0x4080b820,
+	0x553c: 0x4080ba20, 0x553d: 0x4080bc20, 0x553e: 0x4080be20, 0x553f: 0x4080c020,
+	// Block 0x155, offset 0x5540
+	0x5540: 0x4080c220, 0x5541: 0x4080c420, 0x5542: 0x4080c620, 0x5543: 0x4080c820,
+	0x5544: 0x4080ca20, 0x5545: 0x4080cc20, 0x5546: 0x4080ce20, 0x5547: 0x4080d020,
+	0x5548: 0x4080d220, 0x5549: 0x4080d420, 0x554a: 0x4080d620, 0x554b: 0x4080d820,
+	0x554c: 0x4080da20, 0x554d: 0x4080dc20, 0x554e: 0x4080de20, 0x554f: 0x4080e020,
+	0x5550: 0x4080e220, 0x5551: 0x4080e420, 0x5552: 0x4080e620, 0x5553: 0x4080e820,
+	0x5554: 0x4080ea20, 0x5555: 0x4080ec20, 0x5556: 0x4080ee20, 0x5557: 0x4080f020,
+	0x5558: 0x4080f220, 0x5559: 0x4080f420, 0x555a: 0x4080f620, 0x555b: 0x4080f820,
+	0x555c: 0x4080fa20, 0x555d: 0x4080fc20, 0x555e: 0x4080fe20, 0x555f: 0x40810020,
+	0x5560: 0x40810220, 0x5561: 0x40810420, 0x5562: 0x40810620, 0x5563: 0x40810820,
+	0x5564: 0x40810a20, 0x5565: 0x40810c20, 0x5566: 0x40810e20, 0x5567: 0x40811020,
+	0x5568: 0x40811220, 0x5569: 0x40811420, 0x556a: 0x40811620, 0x556b: 0x40811820,
+	0x556c: 0x40811a20, 0x556d: 0x40811c20, 0x556e: 0x40811e20, 0x556f: 0x40812020,
+	0x5570: 0x40812220, 0x5571: 0x40812420, 0x5572: 0x40812620, 0x5573: 0x40812820,
+	0x5574: 0x40812a20, 0x5575: 0x40812c20, 0x5576: 0x40812e20, 0x5577: 0x40813020,
+	0x5578: 0x40813220, 0x5579: 0x40813420, 0x557a: 0x40813620, 0x557b: 0x40813820,
+	0x557c: 0x40813a20, 0x557d: 0x40813c20, 0x557e: 0x40813e20, 0x557f: 0x40814020,
+	// Block 0x156, offset 0x5580
+	0x5580: 0x40814220, 0x5581: 0x40814420, 0x5582: 0x40814620, 0x5583: 0x40814820,
+	0x5584: 0x40814a20, 0x5585: 0x40814c20, 0x5586: 0x40814e20, 0x5587: 0x40815020,
+	0x5588: 0x40815220, 0x5589: 0x40815420, 0x558a: 0x40815620, 0x558b: 0x40815820,
+	0x558c: 0x40815a20, 0x558d: 0x40815c20, 0x558e: 0x40815e20, 0x558f: 0x40816020,
+	0x5590: 0x40816220, 0x5591: 0x40816420, 0x5592: 0x40816620, 0x5593: 0x40816820,
+	0x5594: 0x40816a20, 0x5595: 0x40816c20, 0x5596: 0x40816e20, 0x5597: 0x40817020,
+	0x5598: 0x40817220, 0x5599: 0x40817420, 0x559a: 0x40817620, 0x559b: 0x40817820,
+	0x559c: 0x40817a20, 0x559d: 0x40817c20, 0x559e: 0x40817e20, 0x559f: 0x40818020,
+	0x55a0: 0x40818220, 0x55a1: 0x40818420, 0x55a2: 0x40818620, 0x55a3: 0x40818820,
+	0x55a4: 0x40818a20, 0x55a5: 0x40818c20, 0x55a6: 0x40818e20, 0x55a7: 0x40819020,
+	0x55a8: 0x40819220, 0x55a9: 0x40819420, 0x55aa: 0x40819620, 0x55ab: 0x40819820,
+	0x55ac: 0x40819a20, 0x55ad: 0x40819c20, 0x55ae: 0x40819e20, 0x55af: 0x4081a020,
+	0x55b0: 0x4081a220, 0x55b1: 0x4081a420, 0x55b2: 0x4081a620, 0x55b3: 0x4081a820,
+	0x55b4: 0x4081aa20, 0x55b5: 0x4081ac20, 0x55b6: 0x4081ae20, 0x55b7: 0x4081b020,
+	0x55b8: 0x4081b220, 0x55b9: 0x4081b420, 0x55ba: 0x4081b620, 0x55bb: 0x4081b820,
+	0x55bc: 0x4081ba20, 0x55bd: 0x4081bc20, 0x55be: 0x4081be20, 0x55bf: 0x4081c020,
+	// Block 0x157, offset 0x55c0
+	0x55c0: 0x4081c220, 0x55c1: 0x4081c420, 0x55c2: 0x4081c620, 0x55c3: 0x4081c820,
+	0x55c4: 0x4081ca20, 0x55c5: 0x4081cc20, 0x55c6: 0x4081ce20, 0x55c7: 0x4081d020,
+	0x55c8: 0x4081d220, 0x55c9: 0x4081d420, 0x55ca: 0x4081d620, 0x55cb: 0x4081d820,
+	0x55cc: 0x4081da20, 0x55cd: 0x4081dc20, 0x55ce: 0x4081de20, 0x55cf: 0x4081e020,
+	0x55d0: 0x4081e220, 0x55d1: 0x4081e420, 0x55d2: 0x4081e620, 0x55d3: 0x4081e820,
+	0x55d4: 0x4081ea20, 0x55d5: 0x4081ec20, 0x55d6: 0x4081ee20, 0x55d7: 0x4081f020,
+	0x55d8: 0x4081f220, 0x55d9: 0x4081f420, 0x55da: 0x4081f620, 0x55db: 0x4081f820,
+	0x55dc: 0x4081fa20, 0x55dd: 0x4081fc20, 0x55de: 0x4081fe20, 0x55df: 0x40820020,
+	0x55e0: 0x40820220, 0x55e1: 0x40820420, 0x55e2: 0x40820620, 0x55e3: 0x40820820,
+	0x55e4: 0x40820a20, 0x55e5: 0x40820c20, 0x55e6: 0x40820e20, 0x55e7: 0x40821020,
+	0x55e8: 0x40821220, 0x55e9: 0x40821420, 0x55ea: 0x40821620, 0x55eb: 0x40821820,
+	0x55ec: 0x40821a20, 0x55ed: 0x40821c20, 0x55ee: 0x40821e20, 0x55ef: 0x40822020,
+	0x55f0: 0x40822220, 0x55f1: 0x40822420, 0x55f2: 0x40822620, 0x55f3: 0x40822820,
+	0x55f4: 0x40822a20, 0x55f5: 0x40822c20, 0x55f6: 0x40822e20, 0x55f7: 0x40823020,
+	0x55f8: 0x40823220, 0x55f9: 0x40823420, 0x55fa: 0x40823620, 0x55fb: 0x40823820,
+	0x55fc: 0x40823a20, 0x55fd: 0x40823c20, 0x55fe: 0x40823e20, 0x55ff: 0x40824020,
+	// Block 0x158, offset 0x5600
+	0x5600: 0x40824220, 0x5601: 0x40824420, 0x5602: 0x40824620, 0x5603: 0x40824820,
+	0x5604: 0x40824a20, 0x5605: 0x40824c20, 0x5606: 0x40824e20, 0x5607: 0x40825020,
+	0x5608: 0x40825220, 0x5609: 0x40825420, 0x560a: 0x40825620, 0x560b: 0x40825820,
+	0x560c: 0x40825a20, 0x560d: 0x40825c20, 0x560e: 0x40825e20, 0x560f: 0x40826020,
+	0x5610: 0x40826220, 0x5611: 0x40826420, 0x5612: 0x40826620, 0x5613: 0x40826820,
+	0x5614: 0x40826a20, 0x5615: 0x40826c20, 0x5616: 0x40826e20, 0x5617: 0x40827020,
+	0x5618: 0x40827220, 0x5619: 0x40827420, 0x561a: 0x40827620, 0x561b: 0x40827820,
+	0x561c: 0x40827a20, 0x561d: 0x40827c20, 0x561e: 0x40827e20, 0x561f: 0x40828020,
+	0x5620: 0x40828220, 0x5621: 0x40828420, 0x5622: 0x40828620, 0x5623: 0x40828820,
+	0x5624: 0x40828a20, 0x5625: 0x40828c20, 0x5626: 0x40828e20, 0x5627: 0x40829020,
+	0x5628: 0x40829220, 0x5629: 0x40829420, 0x562a: 0x40829620, 0x562b: 0x40829820,
+	0x562c: 0x40829a20, 0x562d: 0x40829c20, 0x562e: 0x40829e20, 0x562f: 0x4082a020,
+	0x5630: 0x4082a220, 0x5631: 0x4082a420, 0x5632: 0x4082a620, 0x5633: 0x4082a820,
+	0x5634: 0x4082aa20, 0x5635: 0x4082ac20, 0x5636: 0x4082ae20, 0x5637: 0x4082b020,
+	0x5638: 0x4082b220, 0x5639: 0x4082b420, 0x563a: 0x4082b620, 0x563b: 0x4082b820,
+	0x563c: 0x4082ba20, 0x563d: 0x4082bc20, 0x563e: 0x4082be20, 0x563f: 0x4082c020,
+	// Block 0x159, offset 0x5640
+	0x5640: 0x4082c220, 0x5641: 0x4082c420, 0x5642: 0x4082c620, 0x5643: 0x4082c820,
+	0x5644: 0x4082ca20, 0x5645: 0x4082cc20, 0x5646: 0x4082ce20, 0x5647: 0x4082d020,
+	0x5648: 0x4082d220, 0x5649: 0x4082d420, 0x564a: 0x4082d620, 0x564b: 0x4082d820,
+	0x564c: 0x4082da20, 0x564d: 0x4082dc20, 0x564e: 0x4082de20, 0x564f: 0x4082e020,
+	0x5650: 0x4082e220, 0x5651: 0x4082e420, 0x5652: 0x4082e620, 0x5653: 0x4082e820,
+	0x5654: 0x4082ea20, 0x5655: 0x4082ec20, 0x5656: 0x4082ee20, 0x5657: 0x4082f020,
+	0x5658: 0x4082f220, 0x5659: 0x4082f420, 0x565a: 0x4082f620, 0x565b: 0x4082f820,
+	0x565c: 0x4082fa20, 0x565d: 0x4082fc20, 0x565e: 0x4082fe20, 0x565f: 0x40830020,
+	0x5660: 0x40830220, 0x5661: 0x40830420, 0x5662: 0x40830620, 0x5663: 0x40830820,
+	0x5664: 0x40830a20, 0x5665: 0x40830c20, 0x5666: 0x40830e20, 0x5667: 0x40831020,
+	0x5668: 0x40831220, 0x5669: 0x40831420, 0x566a: 0x40831620, 0x566b: 0x40831820,
+	0x566c: 0x40831a20, 0x566d: 0x40831c20, 0x566e: 0x40831e20, 0x566f: 0x40832020,
+	0x5670: 0x40832220, 0x5671: 0x40832420, 0x5672: 0x40832620, 0x5673: 0x40832820,
+	0x5674: 0x40832a20, 0x5675: 0x40832c20, 0x5676: 0x40832e20, 0x5677: 0x40833020,
+	0x5678: 0x40833220, 0x5679: 0x40833420, 0x567a: 0x40833620, 0x567b: 0x40833820,
+	0x567c: 0x40833a20, 0x567d: 0x40833c20, 0x567e: 0x40833e20, 0x567f: 0x40834020,
+	// Block 0x15a, offset 0x5680
+	0x5680: 0x40834220, 0x5681: 0x40834420, 0x5682: 0x40834620, 0x5683: 0x40834820,
+	0x5684: 0x40834a20, 0x5685: 0x40834c20, 0x5686: 0x40834e20, 0x5687: 0x40835020,
+	0x5688: 0x40835220, 0x5689: 0x40835420, 0x568a: 0x40835620, 0x568b: 0x40835820,
+	0x568c: 0x40835a20, 0x568d: 0x40835c20, 0x568e: 0x40835e20, 0x568f: 0x40836020,
+	0x5690: 0x40836220, 0x5691: 0x40836420, 0x5692: 0x40836620, 0x5693: 0x40836820,
+	0x5694: 0x40836a20, 0x5695: 0x40836c20, 0x5696: 0x40836e20, 0x5697: 0x40837020,
+	0x5698: 0x40837220, 0x5699: 0x40837420, 0x569a: 0x40837620, 0x569b: 0x40837820,
+	0x569c: 0x40837a20, 0x569d: 0x40837c20, 0x569e: 0x40837e20, 0x569f: 0x40838020,
+	0x56a0: 0x40838220, 0x56a1: 0x40838420, 0x56a2: 0x40838620, 0x56a3: 0x40838820,
+	0x56a4: 0x40838a20, 0x56a5: 0x40838c20, 0x56a6: 0x40838e20, 0x56a7: 0x40839020,
+	0x56a8: 0x40839220, 0x56a9: 0x40839420, 0x56aa: 0x40839620, 0x56ab: 0x40839820,
+	0x56ac: 0x40839a20, 0x56ad: 0x40839c20, 0x56ae: 0x40839e20, 0x56af: 0x4083a020,
+	0x56b0: 0x4083a220, 0x56b1: 0x4083a420, 0x56b2: 0x4083a620, 0x56b3: 0x4083a820,
+	0x56b4: 0x4083aa20, 0x56b5: 0x4083ac20, 0x56b6: 0x4083ae20, 0x56b7: 0x4083b020,
+	0x56b8: 0x4083b220, 0x56b9: 0x4083b420, 0x56ba: 0x4083b620, 0x56bb: 0x4083b820,
+	0x56bc: 0x4083ba20, 0x56bd: 0x4083bc20, 0x56be: 0x4083be20, 0x56bf: 0x4083c020,
+	// Block 0x15b, offset 0x56c0
+	0x56c0: 0x4083c220, 0x56c1: 0x4083c420, 0x56c2: 0x4083c620, 0x56c3: 0x4083c820,
+	0x56c4: 0x4083ca20, 0x56c5: 0x4083cc20, 0x56c6: 0x4083ce20, 0x56c7: 0x4083d020,
+	0x56c8: 0x4083d220, 0x56c9: 0x4083d420, 0x56ca: 0x4083d620, 0x56cb: 0x4083d820,
+	0x56cc: 0x4083da20, 0x56cd: 0x4083dc20, 0x56ce: 0x4083de20, 0x56cf: 0x4083e020,
+	0x56d0: 0x4083e220, 0x56d1: 0x4083e420, 0x56d2: 0x4083e620, 0x56d3: 0x4083e820,
+	0x56d4: 0x4083ea20, 0x56d5: 0x4083ec20, 0x56d6: 0x4083ee20, 0x56d7: 0x4083f020,
+	0x56d8: 0x4083f220, 0x56d9: 0x4083f420, 0x56da: 0x4083f620, 0x56db: 0x4083f820,
+	0x56dc: 0x4083fa20, 0x56dd: 0x4083fc20, 0x56de: 0x4083fe20, 0x56df: 0x40840020,
+	0x56e0: 0x40840220, 0x56e1: 0x40840420, 0x56e2: 0x40840620, 0x56e3: 0x40840820,
+	0x56e4: 0x40840a20, 0x56e5: 0x40840c20, 0x56e6: 0x40840e20, 0x56e7: 0x40841020,
+	0x56e8: 0x40841220, 0x56e9: 0x40841420, 0x56ea: 0x40841620, 0x56eb: 0x40841820,
+	0x56ec: 0x40841a20, 0x56ed: 0x40841c20, 0x56ee: 0x40841e20, 0x56ef: 0x40842020,
+	0x56f0: 0x40842220, 0x56f1: 0x40842420, 0x56f2: 0x40842620, 0x56f3: 0x40842820,
+	0x56f4: 0x40842a20, 0x56f5: 0x40842c20, 0x56f6: 0x40842e20, 0x56f7: 0x40843020,
+	0x56f8: 0x40843220, 0x56f9: 0x40843420, 0x56fa: 0x40843620, 0x56fb: 0x40843820,
+	0x56fc: 0x40843a20, 0x56fd: 0x40843c20, 0x56fe: 0x40843e20, 0x56ff: 0x40844020,
+	// Block 0x15c, offset 0x5700
+	0x5700: 0x40844220, 0x5701: 0x40844420, 0x5702: 0x40844620, 0x5703: 0x40844820,
+	0x5704: 0x40844a20, 0x5705: 0x40844c20, 0x5706: 0x40844e20, 0x5707: 0x40845020,
+	0x5708: 0x40845220, 0x5709: 0x40845420, 0x570a: 0x40845620, 0x570b: 0x40845820,
+	0x570c: 0x40845a20, 0x570d: 0x40845c20, 0x570e: 0x40845e20, 0x570f: 0x40846020,
+	0x5710: 0x40846220, 0x5711: 0x40846420, 0x5712: 0x40846620, 0x5713: 0x40846820,
+	0x5714: 0x40846a20, 0x5715: 0x40846c20, 0x5716: 0x40846e20, 0x5717: 0x40847020,
+	0x5718: 0x40847220, 0x5719: 0x40847420, 0x571a: 0x40847620, 0x571b: 0x40847820,
+	0x571c: 0x40847a20, 0x571d: 0x40847c20, 0x571e: 0x40847e20, 0x571f: 0x40848020,
+	0x5720: 0x40848220, 0x5721: 0x40848420, 0x5722: 0x40848620, 0x5723: 0x40848820,
+	0x5724: 0x40848a20, 0x5725: 0x40848c20, 0x5726: 0x40848e20, 0x5727: 0x40849020,
+	0x5728: 0x40849220, 0x5729: 0x40849420, 0x572a: 0x40849620, 0x572b: 0x40849820,
+	0x572c: 0x40849a20, 0x572d: 0x40849c20, 0x572e: 0x40849e20, 0x572f: 0x4084a020,
+	0x5730: 0x4084a220, 0x5731: 0x4084a420, 0x5732: 0x4084a620, 0x5733: 0x4084a820,
+	0x5734: 0x4084aa20, 0x5735: 0x4084ac20, 0x5736: 0x4084ae20, 0x5737: 0x4084b020,
+	0x5738: 0x4084b220, 0x5739: 0x4084b420, 0x573a: 0x4084b620, 0x573b: 0x4084b820,
+	0x573c: 0x4084ba20, 0x573d: 0x4084bc20, 0x573e: 0x4084be20, 0x573f: 0x4084c020,
+	// Block 0x15d, offset 0x5740
+	0x5740: 0x4084c220, 0x5741: 0x4084c420, 0x5742: 0x4084c620, 0x5743: 0x4084c820,
+	0x5744: 0x4084ca20, 0x5745: 0x4084cc20, 0x5746: 0x4084ce20, 0x5747: 0x4084d020,
+	0x5748: 0x4084d220, 0x5749: 0x4084d420, 0x574a: 0x4084d620, 0x574b: 0x4084d820,
+	0x574c: 0x4084da20, 0x574d: 0x4084dc20, 0x574e: 0x4084de20, 0x574f: 0x4084e020,
+	0x5750: 0x4084e220, 0x5751: 0x4084e420, 0x5752: 0x4084e620, 0x5753: 0x4084e820,
+	0x5754: 0x4084ea20, 0x5755: 0x4084ec20, 0x5756: 0x4084ee20, 0x5757: 0x4084f020,
+	0x5758: 0x4084f220, 0x5759: 0x4084f420, 0x575a: 0x4084f620, 0x575b: 0x4084f820,
+	0x575c: 0x4084fa20, 0x575d: 0x4084fc20, 0x575e: 0x4084fe20, 0x575f: 0x40850020,
+	0x5760: 0x40850220, 0x5761: 0x40850420, 0x5762: 0x40850620, 0x5763: 0x40850820,
+	0x5764: 0x40850a20, 0x5765: 0x40850c20, 0x5766: 0x40850e20, 0x5767: 0x40851020,
+	0x5768: 0x40851220, 0x5769: 0x40851420, 0x576a: 0x40851620, 0x576b: 0x40851820,
+	0x576c: 0x40851a20, 0x576d: 0x40851c20, 0x576e: 0x40851e20, 0x576f: 0x40852020,
+	0x5770: 0x40852220, 0x5771: 0x40852420, 0x5772: 0x40852620, 0x5773: 0x40852820,
+	0x5774: 0x40852a20, 0x5775: 0x40852c20, 0x5776: 0x40852e20, 0x5777: 0x40853020,
+	0x5778: 0x40853220, 0x5779: 0x40853420, 0x577a: 0x40853620, 0x577b: 0x40853820,
+	0x577c: 0x40853a20, 0x577d: 0x40853c20, 0x577e: 0x40853e20, 0x577f: 0x40854020,
+	// Block 0x15e, offset 0x5780
+	0x5780: 0x40854220, 0x5781: 0x40854420, 0x5782: 0x40854620, 0x5783: 0x40854820,
+	0x5784: 0x40854a20, 0x5785: 0x40854c20, 0x5786: 0x40854e20, 0x5787: 0x40855020,
+	0x5788: 0x40855220, 0x5789: 0x40855420, 0x578a: 0x40855620, 0x578b: 0x40855820,
+	0x578c: 0x40855a20, 0x578d: 0x40855c20, 0x578e: 0x40855e20, 0x578f: 0x40856020,
+	0x5790: 0x40856220, 0x5791: 0x40856420, 0x5792: 0x40856620, 0x5793: 0x40856820,
+	0x5794: 0x40856a20, 0x5795: 0x40856c20, 0x5796: 0x40856e20, 0x5797: 0x40857020,
+	0x5798: 0x40857220, 0x5799: 0x40857420, 0x579a: 0x40857620, 0x579b: 0x40857820,
+	0x579c: 0x40857a20, 0x579d: 0x40857c20, 0x579e: 0x40857e20, 0x579f: 0x40858020,
+	0x57a0: 0x40858220, 0x57a1: 0x40858420, 0x57a2: 0x40858620, 0x57a3: 0x40858820,
+	0x57a4: 0x40858a20, 0x57a5: 0x40858c20, 0x57a6: 0x40858e20, 0x57a7: 0x40859020,
+	0x57a8: 0x40859220, 0x57a9: 0x40859420, 0x57aa: 0x40859620, 0x57ab: 0x40859820,
+	0x57ac: 0x40859a20, 0x57ad: 0x40859c20, 0x57ae: 0x40859e20, 0x57af: 0x4085a020,
+	0x57b0: 0x4085a220, 0x57b1: 0x4085a420, 0x57b2: 0x4085a620, 0x57b3: 0x4085a820,
+	0x57b4: 0x4085aa20, 0x57b5: 0x4085ac20, 0x57b6: 0x4085ae20, 0x57b7: 0x4085b020,
+	0x57b8: 0x4085b220, 0x57b9: 0x4085b420, 0x57ba: 0x4085b620, 0x57bb: 0x4085b820,
+	0x57bc: 0x4085ba20, 0x57bd: 0x4085bc20, 0x57be: 0x4085be20, 0x57bf: 0x4085c020,
+	// Block 0x15f, offset 0x57c0
+	0x57c0: 0x4085c220, 0x57c1: 0x4085c420, 0x57c2: 0x4085c620, 0x57c3: 0x4085c820,
+	0x57c4: 0x4085ca20, 0x57c5: 0x4085cc20, 0x57c6: 0x4085ce20, 0x57c7: 0x4085d020,
+	0x57c8: 0x4085d220, 0x57c9: 0x4085d420, 0x57ca: 0x4085d620, 0x57cb: 0x4085d820,
+	0x57cc: 0x4085da20, 0x57cd: 0x4085dc20, 0x57ce: 0x4085de20, 0x57cf: 0x4085e020,
+	0x57d0: 0x4085e220, 0x57d1: 0x4085e420, 0x57d2: 0x4085e620, 0x57d3: 0x4085e820,
+	0x57d4: 0x4085ea20, 0x57d5: 0x4085ec20, 0x57d6: 0x4085ee20, 0x57d7: 0x4085f020,
+	0x57d8: 0x4085f220, 0x57d9: 0x4085f420, 0x57da: 0x4085f620, 0x57db: 0x4085f820,
+	0x57dc: 0x4085fa20, 0x57dd: 0x4085fc20, 0x57de: 0x4085fe20, 0x57df: 0x40860020,
+	0x57e0: 0x40860220, 0x57e1: 0x40860420, 0x57e2: 0x40860620, 0x57e3: 0x40860820,
+	0x57e4: 0x40860a20, 0x57e5: 0x40860c20, 0x57e6: 0x40860e20, 0x57e7: 0x40861020,
+	0x57e8: 0x40861220, 0x57e9: 0x40861420, 0x57ea: 0x40861620, 0x57eb: 0x40861820,
+	0x57ec: 0x40861a20, 0x57ed: 0x40861c20, 0x57ee: 0x40861e20,
+	// Block 0x160, offset 0x5800
+	0x5800: 0x405e3a20, 0x5801: 0x405e3c20, 0x5802: 0x405e3e20, 0x5803: 0x405e4020,
+	0x5804: 0x405e4220, 0x5805: 0x405e4420, 0x5806: 0x405e4620, 0x5807: 0x405e4820,
+	0x5808: 0x405e4a20, 0x5809: 0x405e4c20, 0x580a: 0x405e4e20, 0x580b: 0x405e5020,
+	0x580c: 0x405e5220, 0x580d: 0x405e5420, 0x580e: 0x405e5620, 0x580f: 0x405e5820,
+	0x5810: 0x405e5a20, 0x5811: 0x405e5c20, 0x5812: 0x405e5e20, 0x5813: 0x405e6020,
+	0x5814: 0x405e6220, 0x5815: 0x405e6420, 0x5816: 0x405e6620, 0x5817: 0x405e6820,
+	0x5818: 0x405e6a20, 0x5819: 0x405e6c20, 0x581a: 0x405e6e20, 0x581b: 0x405e7020,
+	0x581c: 0x405e7220, 0x581d: 0x405e7420, 0x581e: 0x405e7620, 0x581f: 0x405e7820,
+	0x5820: 0x405e7a20, 0x5821: 0x405e7c20, 0x5822: 0x405e7e20, 0x5823: 0x405e8020,
+	0x5824: 0x405e8220, 0x5825: 0x405e8420, 0x5826: 0x405e8620, 0x5827: 0x405e8820,
+	0x5828: 0x405e8a20, 0x5829: 0x405e8c20, 0x582a: 0x405e8e20, 0x582b: 0x405e9020,
+	0x582c: 0x405e9220, 0x582d: 0x405e9420, 0x582e: 0x405e9620, 0x582f: 0x405e9820,
+	0x5830: 0x405e9a20, 0x5831: 0x405e9c20, 0x5832: 0x405e9e20, 0x5833: 0x405ea020,
+	0x5834: 0x405ea220, 0x5835: 0x405ea420, 0x5836: 0x405ea620, 0x5837: 0x405ea820,
+	0x5838: 0x405eaa20, 0x5839: 0x405eac20, 0x583a: 0x405eae20, 0x583b: 0x405eb020,
+	0x583c: 0x405eb220, 0x583d: 0x405eb420, 0x583e: 0x405eb620, 0x583f: 0x405eb820,
+	// Block 0x161, offset 0x5840
+	0x5840: 0x405eba20, 0x5841: 0x405ebc20, 0x5842: 0x405ebe20, 0x5843: 0x405ec020,
+	0x5844: 0x405ec220, 0x5845: 0x405ec420, 0x5846: 0x405ec620, 0x5847: 0x405ec820,
+	0x5848: 0x405eca20, 0x5849: 0x405ecc20, 0x584a: 0x405ece20, 0x584b: 0x405ed020,
+	0x584c: 0x405ed220, 0x584d: 0x405ed420, 0x584e: 0x405ed620, 0x584f: 0x405ed820,
+	0x5850: 0x405eda20, 0x5851: 0x405edc20, 0x5852: 0x405ede20, 0x5853: 0x405ee020,
+	0x5854: 0x405ee220, 0x5855: 0x405ee420, 0x5856: 0x405ee620, 0x5857: 0x405ee820,
+	0x5858: 0x405eea20, 0x5859: 0x405eec20, 0x585a: 0x405eee20, 0x585b: 0x405ef020,
+	0x585c: 0x405ef220, 0x585d: 0x405ef420, 0x585e: 0x405ef620, 0x585f: 0x405ef820,
+	0x5860: 0x405efa20, 0x5861: 0x405efc20, 0x5862: 0x405efe20, 0x5863: 0x405f0020,
+	0x5864: 0x405f0220, 0x5865: 0x405f0420, 0x5866: 0x405f0620, 0x5867: 0x405f0820,
+	0x5868: 0x405f0a20, 0x5869: 0x405f0c20, 0x586a: 0x405f0e20, 0x586b: 0x405f1020,
+	0x586c: 0x405f1220, 0x586d: 0x405f1420, 0x586e: 0x405f1620, 0x586f: 0x405f1820,
+	0x5870: 0x405f1a20, 0x5871: 0x405f1c20, 0x5872: 0x405f1e20, 0x5873: 0x405f2020,
+	0x5874: 0x405f2220, 0x5875: 0x405f2420, 0x5876: 0x405f2620, 0x5877: 0x405f2820,
+	0x5878: 0x405f2a20, 0x5879: 0x405f2c20, 0x587a: 0x405f2e20, 0x587b: 0x405f3020,
+	0x587c: 0x405f3220, 0x587d: 0x405f3420, 0x587e: 0x405f3620, 0x587f: 0x405f3820,
+	// Block 0x162, offset 0x5880
+	0x5880: 0x405f3a20, 0x5881: 0x405f3c20, 0x5882: 0x405f3e20, 0x5883: 0x405f4020,
+	0x5884: 0x405f4220, 0x5885: 0x405f4420, 0x5886: 0x405f4620, 0x5887: 0x405f4820,
+	0x5888: 0x405f4a20, 0x5889: 0x405f4c20, 0x588a: 0x405f4e20, 0x588b: 0x405f5020,
+	0x588c: 0x405f5220, 0x588d: 0x405f5420, 0x588e: 0x405f5620, 0x588f: 0x405f5820,
+	0x5890: 0x405f5a20, 0x5891: 0x405f5c20, 0x5892: 0x405f5e20, 0x5893: 0x405f6020,
+	0x5894: 0x405f6220, 0x5895: 0x405f6420, 0x5896: 0x405f6620, 0x5897: 0x405f6820,
+	0x5898: 0x405f6a20, 0x5899: 0x405f6c20, 0x589a: 0x405f6e20, 0x589b: 0x405f7020,
+	0x589c: 0x405f7220, 0x589d: 0x405f7420, 0x589e: 0x405f7620, 0x589f: 0x405f7820,
+	0x58a0: 0x405f7a20, 0x58a1: 0x405f7c20, 0x58a2: 0x405f7e20, 0x58a3: 0x405f8020,
+	0x58a4: 0x405f8220, 0x58a5: 0x405f8420, 0x58a6: 0x405f8620, 0x58a7: 0x405f8820,
+	0x58a8: 0x405f8a20, 0x58a9: 0x405f8c20, 0x58aa: 0x405f8e20, 0x58ab: 0x405f9020,
+	0x58ac: 0x405f9220, 0x58ad: 0x405f9420, 0x58ae: 0x405f9620, 0x58af: 0x405f9820,
+	0x58b0: 0x405f9a20, 0x58b1: 0x405f9c20, 0x58b2: 0x405f9e20, 0x58b3: 0x405fa020,
+	0x58b4: 0x405fa220, 0x58b5: 0x405fa420, 0x58b6: 0x405fa620, 0x58b7: 0x405fa820,
+	0x58b8: 0x405faa20, 0x58b9: 0x405fac20, 0x58ba: 0x405fae20, 0x58bb: 0x405fb020,
+	0x58bc: 0x405fb220, 0x58bd: 0x405fb420, 0x58be: 0x405fb620, 0x58bf: 0x405fb820,
+	// Block 0x163, offset 0x58c0
+	0x58c0: 0x405fba20, 0x58c1: 0x405fbc20, 0x58c2: 0x405fbe20, 0x58c3: 0x405fc020,
+	0x58c4: 0x405fc220, 0x58c5: 0x405fc420, 0x58c6: 0x405fc620, 0x58c7: 0x405fc820,
+	0x58c8: 0x405fca20, 0x58c9: 0x405fcc20, 0x58ca: 0x405fce20, 0x58cb: 0x405fd020,
+	0x58cc: 0x405fd220, 0x58cd: 0x405fd420, 0x58ce: 0x405fd620, 0x58cf: 0x405fd820,
+	0x58d0: 0x405fda20, 0x58d1: 0x405fdc20, 0x58d2: 0x405fde20, 0x58d3: 0x405fe020,
+	0x58d4: 0x405fe220, 0x58d5: 0x405fe420, 0x58d6: 0x405fe620, 0x58d7: 0x405fe820,
+	0x58d8: 0x405fea20, 0x58d9: 0x405fec20, 0x58da: 0x405fee20, 0x58db: 0x405ff020,
+	0x58dc: 0x405ff220, 0x58dd: 0x405ff420, 0x58de: 0x405ff620, 0x58df: 0x405ff820,
+	0x58e0: 0x405ffa20, 0x58e1: 0x405ffc20, 0x58e2: 0x405ffe20, 0x58e3: 0x40600020,
+	0x58e4: 0x40600220, 0x58e5: 0x40600420, 0x58e6: 0x40600620, 0x58e7: 0x40600820,
+	0x58e8: 0x40600a20, 0x58e9: 0x40600c20, 0x58ea: 0x40600e20, 0x58eb: 0x40601020,
+	0x58ec: 0x40601220, 0x58ed: 0x40601420, 0x58ee: 0x40601620, 0x58ef: 0x40601820,
+	0x58f0: 0x40601a20, 0x58f1: 0x40601c20, 0x58f2: 0x40601e20, 0x58f3: 0x40602020,
+	0x58f4: 0x40602220, 0x58f5: 0x40602420, 0x58f6: 0x40602620, 0x58f7: 0x40602820,
+	0x58f8: 0x40602a20, 0x58f9: 0x40602c20, 0x58fa: 0x40602e20, 0x58fb: 0x40603020,
+	0x58fc: 0x40603220, 0x58fd: 0x40603420, 0x58fe: 0x40603620, 0x58ff: 0x40603820,
+	// Block 0x164, offset 0x5900
+	0x5900: 0x40603a20, 0x5901: 0x40603c20, 0x5902: 0x40603e20, 0x5903: 0x40604020,
+	0x5904: 0x40604220, 0x5905: 0x40604420, 0x5906: 0x40604620, 0x5907: 0x40604820,
+	0x5908: 0x40604a20, 0x5909: 0x40604c20, 0x590a: 0x40604e20, 0x590b: 0x40605020,
+	0x590c: 0x40605220, 0x590d: 0x40605420, 0x590e: 0x40605620, 0x590f: 0x40605820,
+	0x5910: 0x40605a20, 0x5911: 0x40605c20, 0x5912: 0x40605e20, 0x5913: 0x40606020,
+	0x5914: 0x40606220, 0x5915: 0x40606420, 0x5916: 0x40606620, 0x5917: 0x40606820,
+	0x5918: 0x40606a20, 0x5919: 0x40606c20, 0x591a: 0x40606e20, 0x591b: 0x40607020,
+	0x591c: 0x40607220, 0x591d: 0x40607420, 0x591e: 0x40607620, 0x591f: 0x40607820,
+	0x5920: 0x40607a20, 0x5921: 0x40607c20, 0x5922: 0x40607e20, 0x5923: 0x40608020,
+	0x5924: 0x40608220, 0x5925: 0x40608420, 0x5926: 0x40608620, 0x5927: 0x40608820,
+	0x5928: 0x40608a20, 0x5929: 0x40608c20, 0x592a: 0x40608e20, 0x592b: 0x40609020,
+	0x592c: 0x40609220, 0x592d: 0x40609420, 0x592e: 0x40609620, 0x592f: 0x40609820,
+	0x5930: 0x40609a20, 0x5931: 0x40609c20, 0x5932: 0x40609e20, 0x5933: 0x4060a020,
+	0x5934: 0x4060a220, 0x5935: 0x4060a420, 0x5936: 0x4060a620, 0x5937: 0x4060a820,
+	0x5938: 0x4060aa20, 0x5939: 0x4060ac20, 0x593a: 0x4060ae20, 0x593b: 0x4060b020,
+	0x593c: 0x4060b220, 0x593d: 0x4060b420, 0x593e: 0x4060b620, 0x593f: 0x4060b820,
+	// Block 0x165, offset 0x5940
+	0x5940: 0x4060ba20, 0x5941: 0x4060bc20, 0x5942: 0x4060be20, 0x5943: 0x4060c020,
+	0x5944: 0x4060c220, 0x5945: 0x4060c420, 0x5946: 0x4060c620, 0x5947: 0x4060c820,
+	0x5948: 0x4060ca20, 0x5949: 0x4060cc20, 0x594a: 0x4060ce20, 0x594b: 0x4060d020,
+	0x594c: 0x4060d220, 0x594d: 0x4060d420, 0x594e: 0x4060d620, 0x594f: 0x4060d820,
+	0x5950: 0x4060da20, 0x5951: 0x4060dc20, 0x5952: 0x4060de20, 0x5953: 0x4060e020,
+	0x5954: 0x4060e220, 0x5955: 0x4060e420, 0x5956: 0x4060e620, 0x5957: 0x4060e820,
+	0x5958: 0x4060ea20, 0x5959: 0x4060ec20, 0x595a: 0x4060ee20, 0x595b: 0x4060f020,
+	0x595c: 0x4060f220, 0x595d: 0x4060f420, 0x595e: 0x4060f620, 0x595f: 0x4060f820,
+	0x5960: 0x4060fa20, 0x5961: 0x4060fc20, 0x5962: 0x4060fe20, 0x5963: 0x40610020,
+	0x5964: 0x40610220, 0x5965: 0x40610420, 0x5966: 0x40610620, 0x5967: 0x40610820,
+	0x5968: 0x40610a20, 0x5969: 0x40610c20, 0x596a: 0x40610e20, 0x596b: 0x40611020,
+	0x596c: 0x40611220, 0x596d: 0x40611420, 0x596e: 0x40611620, 0x596f: 0x40611820,
+	0x5970: 0x40611a20, 0x5971: 0x40611c20, 0x5972: 0x40611e20, 0x5973: 0x40612020,
+	0x5974: 0x40612220, 0x5975: 0x40612420, 0x5976: 0x40612620, 0x5977: 0x40612820,
+	0x5978: 0x40612a20, 0x5979: 0x40612c20, 0x597a: 0x40612e20, 0x597b: 0x40613020,
+	0x597c: 0x40613220, 0x597d: 0x40613420, 0x597e: 0x40613620, 0x597f: 0x40613820,
+	// Block 0x166, offset 0x5980
+	0x5980: 0x40613a20, 0x5981: 0x40613c20, 0x5982: 0x40613e20, 0x5983: 0x40614020,
+	0x5984: 0x40614220, 0x5985: 0x40614420, 0x5986: 0x40614620, 0x5987: 0x40614820,
+	0x5988: 0x40614a20, 0x5989: 0x40614c20, 0x598a: 0x40614e20, 0x598b: 0x40615020,
+	0x598c: 0x40615220, 0x598d: 0x40615420, 0x598e: 0x40615620, 0x598f: 0x40615820,
+	0x5990: 0x40615a20, 0x5991: 0x40615c20, 0x5992: 0x40615e20, 0x5993: 0x40616020,
+	0x5994: 0x40616220, 0x5995: 0x40616420, 0x5996: 0x40616620, 0x5997: 0x40616820,
+	0x5998: 0x40616a20, 0x5999: 0x40616c20, 0x599a: 0x40616e20, 0x599b: 0x40617020,
+	0x599c: 0x40617220, 0x599d: 0x40617420, 0x599e: 0x40617620, 0x599f: 0x40617820,
+	0x59a0: 0x40617a20, 0x59a1: 0x40617c20, 0x59a2: 0x40617e20, 0x59a3: 0x40618020,
+	0x59a4: 0x40618220, 0x59a5: 0x40618420, 0x59a6: 0x40618620, 0x59a7: 0x40618820,
+	0x59a8: 0x40618a20, 0x59a9: 0x40618c20, 0x59aa: 0x40618e20, 0x59ab: 0x40619020,
+	0x59ac: 0x40619220, 0x59ad: 0x40619420, 0x59ae: 0x40619620, 0x59af: 0x40619820,
+	0x59b0: 0x40619a20, 0x59b1: 0x40619c20, 0x59b2: 0x40619e20, 0x59b3: 0x4061a020,
+	0x59b4: 0x4061a220, 0x59b5: 0x4061a420, 0x59b6: 0x4061a620, 0x59b7: 0x4061a820,
+	0x59b8: 0x4061aa20, 0x59b9: 0x4061ac20, 0x59ba: 0x4061ae20, 0x59bb: 0x4061b020,
+	0x59bc: 0x4061b220, 0x59bd: 0x4061b420, 0x59be: 0x4061b620, 0x59bf: 0x4061b820,
+	// Block 0x167, offset 0x59c0
+	0x59c0: 0x4061ba20, 0x59c1: 0x4061bc20, 0x59c2: 0x4061be20, 0x59c3: 0x4061c020,
+	0x59c4: 0x4061c220, 0x59c5: 0x4061c420, 0x59c6: 0x4061c620, 0x59c7: 0x4061c820,
+	0x59c8: 0x4061ca20, 0x59c9: 0x4061cc20, 0x59ca: 0x4061ce20, 0x59cb: 0x4061d020,
+	0x59cc: 0x4061d220, 0x59cd: 0x4061d420, 0x59ce: 0x4061d620, 0x59cf: 0x4061d820,
+	0x59d0: 0x4061da20, 0x59d1: 0x4061dc20, 0x59d2: 0x4061de20, 0x59d3: 0x4061e020,
+	0x59d4: 0x4061e220, 0x59d5: 0x4061e420, 0x59d6: 0x4061e620, 0x59d7: 0x4061e820,
+	0x59d8: 0x4061ea20, 0x59d9: 0x4061ec20, 0x59da: 0x4061ee20, 0x59db: 0x4061f020,
+	0x59dc: 0x4061f220, 0x59dd: 0x4061f420, 0x59de: 0x4061f620, 0x59df: 0x4061f820,
+	0x59e0: 0x4061fa20, 0x59e1: 0x4061fc20, 0x59e2: 0x4061fe20, 0x59e3: 0x40620020,
+	0x59e4: 0x40620220, 0x59e5: 0x40620420, 0x59e6: 0x40620620, 0x59e7: 0x40620820,
+	0x59e8: 0x40620a20, 0x59e9: 0x40620c20, 0x59ea: 0x40620e20, 0x59eb: 0x40621020,
+	0x59ec: 0x40621220, 0x59ed: 0x40621420, 0x59ee: 0x40621620, 0x59ef: 0x40621820,
+	0x59f0: 0x40621a20, 0x59f1: 0x40621c20, 0x59f2: 0x40621e20, 0x59f3: 0x40622020,
+	0x59f4: 0x40622220, 0x59f5: 0x40622420, 0x59f6: 0x40622620, 0x59f7: 0x40622820,
+	0x59f8: 0x40622a20, 0x59f9: 0x40622c20, 0x59fa: 0x40622e20, 0x59fb: 0x40623020,
+	0x59fc: 0x40623220, 0x59fd: 0x40623420, 0x59fe: 0x40623620, 0x59ff: 0x40623820,
+	// Block 0x168, offset 0x5a00
+	0x5a00: 0x40623a20, 0x5a01: 0x40623c20, 0x5a02: 0x40623e20, 0x5a03: 0x40624020,
+	0x5a04: 0x40624220, 0x5a05: 0x40624420, 0x5a06: 0x40624620, 0x5a07: 0x40624820,
+	0x5a08: 0x40624a20, 0x5a09: 0x40624c20, 0x5a0a: 0x40624e20, 0x5a0b: 0x40625020,
+	0x5a0c: 0x40625220, 0x5a0d: 0x40625420, 0x5a0e: 0x40625620, 0x5a0f: 0x40625820,
+	0x5a10: 0x40625a20, 0x5a11: 0x40625c20, 0x5a12: 0x40625e20, 0x5a13: 0x40626020,
+	0x5a14: 0x40626220, 0x5a15: 0x40626420, 0x5a16: 0x40626620, 0x5a17: 0x40626820,
+	0x5a18: 0x40626a20, 0x5a19: 0x40626c20, 0x5a1a: 0x40626e20, 0x5a1b: 0x40627020,
+	0x5a1c: 0x40627220, 0x5a1d: 0x40627420, 0x5a1e: 0x40627620, 0x5a1f: 0x40627820,
+	0x5a20: 0x40627a20, 0x5a21: 0x40627c20, 0x5a22: 0x40627e20, 0x5a23: 0x40628020,
+	0x5a24: 0x40628220, 0x5a25: 0x40628420, 0x5a26: 0x40628620, 0x5a27: 0x40628820,
+	0x5a28: 0x40628a20, 0x5a29: 0x40628c20, 0x5a2a: 0x40628e20, 0x5a2b: 0x40629020,
+	0x5a2c: 0x40629220, 0x5a2d: 0x40629420, 0x5a2e: 0x40629620, 0x5a2f: 0x40629820,
+	0x5a30: 0x40629a20, 0x5a31: 0x40629c20, 0x5a32: 0x40629e20, 0x5a33: 0x4062a020,
+	0x5a34: 0x4062a220, 0x5a35: 0x4062a420, 0x5a36: 0x4062a620, 0x5a37: 0x4062a820,
+	0x5a38: 0x4062aa20,
+	// Block 0x169, offset 0x5a40
+	0x5a40: 0x406fb620, 0x5a41: 0x406fb820, 0x5a42: 0x406fba20, 0x5a43: 0x406fbc20,
+	0x5a44: 0x406fbe20, 0x5a45: 0x406fc020, 0x5a46: 0x006fbe84, 0x5a47: 0x406fc220,
+	0x5a48: 0x406fc420, 0x5a49: 0x406fc620, 0x5a4a: 0x406fc820, 0x5a4b: 0x406fca20,
+	0x5a4c: 0x406fcc20, 0x5a4d: 0x406fce20, 0x5a4e: 0x406fd020, 0x5a4f: 0x406fd220,
+	0x5a50: 0x406fd420, 0x5a51: 0x406fd620, 0x5a52: 0x406fd820, 0x5a53: 0x006fd484,
+	0x5a54: 0x406fda20, 0x5a55: 0x406fdc20, 0x5a56: 0x406fde20, 0x5a57: 0x406fe020,
+	0x5a58: 0x406fe220, 0x5a59: 0x406fe420, 0x5a5a: 0x406fe620, 0x5a5b: 0x406fe820,
+	0x5a5c: 0x406fea20, 0x5a5d: 0x406fec20, 0x5a5e: 0x406fee20, 0x5a5f: 0x406ff020,
+	0x5a60: 0x406ff220, 0x5a61: 0x406ff420, 0x5a62: 0x406ff620, 0x5a63: 0x406ff820,
+	0x5a64: 0x406ffa20, 0x5a65: 0x006ff884, 0x5a66: 0x406ffc20, 0x5a67: 0x406ffe20,
+	0x5a68: 0x40700020, 0x5a69: 0x40700220, 0x5a6a: 0x40700420, 0x5a6b: 0x40700620,
+	0x5a6c: 0x40700820, 0x5a6d: 0x40700a20, 0x5a6e: 0x40700c20, 0x5a6f: 0x40700e20,
+	0x5a70: 0x40701020, 0x5a71: 0x40701220, 0x5a72: 0x40701420, 0x5a73: 0x40701620,
+	0x5a74: 0x40701820, 0x5a75: 0x40701a20, 0x5a76: 0x40701c20, 0x5a77: 0x40701e20,
+	0x5a78: 0x40702020, 0x5a79: 0x40702220, 0x5a7a: 0x40702420, 0x5a7b: 0x40702620,
+	0x5a7c: 0x40702820, 0x5a7d: 0x40702a20, 0x5a7e: 0x40702c20, 0x5a7f: 0x00702a84,
+	// Block 0x16a, offset 0x5a80
+	0x5a80: 0x40702e20, 0x5a81: 0x40703020, 0x5a82: 0x40703220, 0x5a83: 0x40703420,
+	0x5a84: 0x40703620,
+	0x5a90: 0x40703820, 0x5a91: 0x40703a20, 0x5a92: 0x40703c20, 0x5a93: 0x40703e20,
+	0x5a94: 0x40704020, 0x5a95: 0x40704220, 0x5a96: 0x40704420, 0x5a97: 0x40704620,
+	0x5a98: 0x40704820, 0x5a99: 0x40704a20, 0x5a9a: 0x40704c20, 0x5a9b: 0x40704e20,
+	0x5a9c: 0x40705020, 0x5a9d: 0x40705220, 0x5a9e: 0x40705420, 0x5a9f: 0x40705620,
+	0x5aa0: 0x40705820, 0x5aa1: 0x40705a20, 0x5aa2: 0x40705c20, 0x5aa3: 0x40705e20,
+	0x5aa4: 0x40706020, 0x5aa5: 0x40706220, 0x5aa6: 0x40706420, 0x5aa7: 0x40706620,
+	0x5aa8: 0x40706820, 0x5aa9: 0x40706a20, 0x5aaa: 0x40706c20, 0x5aab: 0x40706e20,
+	0x5aac: 0x40707020, 0x5aad: 0x40707220, 0x5aae: 0x40707420, 0x5aaf: 0x40707620,
+	0x5ab0: 0x40707820, 0x5ab1: 0x40707a20, 0x5ab2: 0x40707c20, 0x5ab3: 0x40707e20,
+	0x5ab4: 0x40708020, 0x5ab5: 0x40708220, 0x5ab6: 0x40708420, 0x5ab7: 0x40708620,
+	0x5ab8: 0x40708820, 0x5ab9: 0x40708a20, 0x5aba: 0x40708c20, 0x5abb: 0x40708e20,
+	0x5abc: 0x40709020, 0x5abd: 0x40709220, 0x5abe: 0x40709420,
+	// Block 0x16b, offset 0x5ac0
+	0x5acf: 0x40709620,
+	0x5ad0: 0x40709820, 0x5ad1: 0x40709a20, 0x5ad2: 0x40709c20, 0x5ad3: 0x40709e20,
+	0x5ad4: 0x4070a020, 0x5ad5: 0x4070a220, 0x5ad6: 0x4070a420, 0x5ad7: 0x4070a620,
+	0x5ad8: 0x4070a820, 0x5ad9: 0x4070aa20, 0x5ada: 0x4070ac20, 0x5adb: 0x4070ae20,
+	0x5adc: 0x4070b020, 0x5add: 0x4070b220, 0x5ade: 0x4070b420, 0x5adf: 0x4070b620,
+	// Block 0x16c, offset 0x5b00
+	0x5b00: 0x00657c91, 0x5b01: 0x0065c28e,
+	// Block 0x16d, offset 0x5b40
+	0x5b40: 0x401ba420, 0x5b41: 0x401ba620, 0x5b42: 0x401ba820, 0x5b43: 0x401baa20,
+	0x5b44: 0x401bac20, 0x5b45: 0x401bae20, 0x5b46: 0x401bb020, 0x5b47: 0x401bb220,
+	0x5b48: 0x401bb420, 0x5b49: 0x401bb620, 0x5b4a: 0x401bb820, 0x5b4b: 0x401bba20,
+	0x5b4c: 0x401bbc20, 0x5b4d: 0x401bbe20, 0x5b4e: 0x401bc020, 0x5b4f: 0x401bc220,
+	0x5b50: 0x401bc420, 0x5b51: 0x401bc620, 0x5b52: 0x401bc820, 0x5b53: 0x401bca20,
+	0x5b54: 0x401bcc20, 0x5b55: 0x401bce20, 0x5b56: 0x401bd020, 0x5b57: 0x401bd220,
+	0x5b58: 0x401bd420, 0x5b59: 0x401bd620, 0x5b5a: 0x401bd820, 0x5b5b: 0x401bda20,
+	0x5b5c: 0x401bdc20, 0x5b5d: 0x401bde20, 0x5b5e: 0x401be020, 0x5b5f: 0x401be220,
+	0x5b60: 0x401be420, 0x5b61: 0x401be620, 0x5b62: 0x401be820, 0x5b63: 0x401bea20,
+	0x5b64: 0x401bec20, 0x5b65: 0x401bee20, 0x5b66: 0x401bf020, 0x5b67: 0x401bf220,
+	0x5b68: 0x401bf420, 0x5b69: 0x401bf620, 0x5b6a: 0x401bf820, 0x5b6b: 0x401bfa20,
+	0x5b6c: 0x401bfc20, 0x5b6d: 0x401bfe20, 0x5b6e: 0x401c0020, 0x5b6f: 0x401c0220,
+	0x5b70: 0x401c0420, 0x5b71: 0x401c0620, 0x5b72: 0x401c0820, 0x5b73: 0x401c0a20,
+	0x5b74: 0x401c0c20, 0x5b75: 0x401c0e20, 0x5b76: 0x401c1020, 0x5b77: 0x401c1220,
+	0x5b78: 0x401c1420, 0x5b79: 0x401c1620, 0x5b7a: 0x401c1820, 0x5b7b: 0x401c1a20,
+	0x5b7c: 0x401c1c20, 0x5b7d: 0x401c1e20, 0x5b7e: 0x401c2020, 0x5b7f: 0x401c2220,
+	// Block 0x16e, offset 0x5b80
+	0x5b80: 0x401c2420, 0x5b81: 0x401c2620, 0x5b82: 0x401c2820, 0x5b83: 0x401c2a20,
+	0x5b84: 0x401c2c20, 0x5b85: 0x401c2e20, 0x5b86: 0x401c3020, 0x5b87: 0x401c3220,
+	0x5b88: 0x401c3420, 0x5b89: 0x401c3620, 0x5b8a: 0x401c3820, 0x5b8b: 0x401c3a20,
+	0x5b8c: 0x401c3c20, 0x5b8d: 0x401c3e20, 0x5b8e: 0x401c4020, 0x5b8f: 0x401c4220,
+	0x5b90: 0x401c4420, 0x5b91: 0x401c4620, 0x5b92: 0x401c4820, 0x5b93: 0x401c4a20,
+	0x5b94: 0x401c4c20, 0x5b95: 0x401c4e20, 0x5b96: 0x401c5020, 0x5b97: 0x401c5220,
+	0x5b98: 0x401c5420, 0x5b99: 0x401c5620, 0x5b9a: 0x401c5820, 0x5b9b: 0x401c5a20,
+	0x5b9c: 0x401c5c20, 0x5b9d: 0x401c5e20, 0x5b9e: 0x401c6020, 0x5b9f: 0x401c6220,
+	0x5ba0: 0x401c6420, 0x5ba1: 0x401c6620, 0x5ba2: 0x401c6820, 0x5ba3: 0x401c6a20,
+	0x5ba4: 0x401c6c20, 0x5ba5: 0x401c6e20, 0x5ba6: 0x401c7020, 0x5ba7: 0x401c7220,
+	0x5ba8: 0x401c7420, 0x5ba9: 0x401c7620, 0x5baa: 0x401c7820, 0x5bab: 0x401c7a20,
+	0x5bac: 0x401c7c20, 0x5bad: 0x401c7e20, 0x5bae: 0x401c8020, 0x5baf: 0x401c8220,
+	0x5bb0: 0x401c8420, 0x5bb1: 0x401c8620, 0x5bb2: 0x401c8820, 0x5bb3: 0x401c8a20,
+	0x5bb4: 0x401c8c20, 0x5bb5: 0x401c8e20, 0x5bb6: 0x401c9020, 0x5bb7: 0x401c9220,
+	0x5bb8: 0x401c9420, 0x5bb9: 0x401c9620, 0x5bba: 0x401c9820, 0x5bbb: 0x401c9a20,
+	0x5bbc: 0x401c9c20, 0x5bbd: 0x401c9e20, 0x5bbe: 0x401ca020, 0x5bbf: 0x401ca220,
+	// Block 0x16f, offset 0x5bc0
+	0x5bc0: 0x401ca420, 0x5bc1: 0x401ca620, 0x5bc2: 0x401ca820, 0x5bc3: 0x401caa20,
+	0x5bc4: 0x401cac20, 0x5bc5: 0x401cae20, 0x5bc6: 0x401cb020, 0x5bc7: 0x401cb220,
+	0x5bc8: 0x401cb420, 0x5bc9: 0x401cb620, 0x5bca: 0x401cb820, 0x5bcb: 0x401cba20,
+	0x5bcc: 0x401cbc20, 0x5bcd: 0x401cbe20, 0x5bce: 0x401cc020, 0x5bcf: 0x401cc220,
+	0x5bd0: 0x401cc420, 0x5bd1: 0x401cc620, 0x5bd2: 0x401cc820, 0x5bd3: 0x401cca20,
+	0x5bd4: 0x401ccc20, 0x5bd5: 0x401cce20, 0x5bd6: 0x401cd020, 0x5bd7: 0x401cd220,
+	0x5bd8: 0x401cd420, 0x5bd9: 0x401cd620, 0x5bda: 0x401cd820, 0x5bdb: 0x401cda20,
+	0x5bdc: 0x401cdc20, 0x5bdd: 0x401cde20, 0x5bde: 0x401ce020, 0x5bdf: 0x401ce220,
+	0x5be0: 0x401ce420, 0x5be1: 0x401ce620, 0x5be2: 0x401ce820, 0x5be3: 0x401cea20,
+	0x5be4: 0x401cec20, 0x5be5: 0x401cee20, 0x5be6: 0x401cf020, 0x5be7: 0x401cf220,
+	0x5be8: 0x401cf420, 0x5be9: 0x401cf620, 0x5bea: 0x401cf820, 0x5beb: 0x401cfa20,
+	0x5bec: 0x401cfc20, 0x5bed: 0x401cfe20, 0x5bee: 0x401d0020, 0x5bef: 0x401d0220,
+	0x5bf0: 0x401d0420, 0x5bf1: 0x401d0620, 0x5bf2: 0x401d0820, 0x5bf3: 0x401d0a20,
+	0x5bf4: 0x401d0c20, 0x5bf5: 0x401d0e20, 0x5bf6: 0x401d1020, 0x5bf7: 0x401d1220,
+	0x5bf8: 0x401d1420, 0x5bf9: 0x401d1620, 0x5bfa: 0x401d1820, 0x5bfb: 0x401d1a20,
+	0x5bfc: 0x401d1c20, 0x5bfd: 0x401d1e20, 0x5bfe: 0x401d2020, 0x5bff: 0x401d2220,
+	// Block 0x170, offset 0x5c00
+	0x5c00: 0x401d2420, 0x5c01: 0x401d2620, 0x5c02: 0x401d2820, 0x5c03: 0x401d2a20,
+	0x5c04: 0x401d2c20, 0x5c05: 0x401d2e20, 0x5c06: 0x401d3020, 0x5c07: 0x401d3220,
+	0x5c08: 0x401d3420, 0x5c09: 0x401d3620, 0x5c0a: 0x401d3820, 0x5c0b: 0x401d3a20,
+	0x5c0c: 0x401d3c20, 0x5c0d: 0x401d3e20, 0x5c0e: 0x401d4020, 0x5c0f: 0x401d4220,
+	0x5c10: 0x401d4420, 0x5c11: 0x401d4620, 0x5c12: 0x401d4820, 0x5c13: 0x401d4a20,
+	0x5c14: 0x401d4c20, 0x5c15: 0x401d4e20, 0x5c16: 0x401d5020, 0x5c17: 0x401d5220,
+	0x5c18: 0x401d5420, 0x5c19: 0x401d5620, 0x5c1a: 0x401d5820, 0x5c1b: 0x401d5a20,
+	0x5c1c: 0x401d5c20, 0x5c1d: 0x401d5e20, 0x5c1e: 0x401d6020, 0x5c1f: 0x401d6220,
+	0x5c20: 0x401d6420, 0x5c21: 0x401d6620, 0x5c22: 0x401d6820, 0x5c23: 0x401d6a20,
+	0x5c24: 0x401d6c20, 0x5c25: 0x401d6e20, 0x5c26: 0x401d7020, 0x5c27: 0x401d7220,
+	0x5c28: 0x401d7420, 0x5c29: 0x401d7620, 0x5c2a: 0x401d7820, 0x5c2b: 0x401d7a20,
+	0x5c2c: 0x401d7c20, 0x5c2d: 0x401d7e20, 0x5c2e: 0x401d8020, 0x5c2f: 0x401d8220,
+	0x5c30: 0x401d8420, 0x5c31: 0x401d8620, 0x5c32: 0x401d8820, 0x5c33: 0x401d8a20,
+	0x5c34: 0x401d8c20, 0x5c35: 0x401d8e20,
+	// Block 0x171, offset 0x5c40
+	0x5c40: 0x401d9020, 0x5c41: 0x401d9220, 0x5c42: 0x401d9420, 0x5c43: 0x401d9620,
+	0x5c44: 0x401d9820, 0x5c45: 0x401d9a20, 0x5c46: 0x401d9c20, 0x5c47: 0x401d9e20,
+	0x5c48: 0x401da020, 0x5c49: 0x401da220, 0x5c4a: 0x401da420, 0x5c4b: 0x401da620,
+	0x5c4c: 0x401da820, 0x5c4d: 0x401daa20, 0x5c4e: 0x401dac20, 0x5c4f: 0x401dae20,
+	0x5c50: 0x401db020, 0x5c51: 0x401db220, 0x5c52: 0x401db420, 0x5c53: 0x401db620,
+	0x5c54: 0x401db820, 0x5c55: 0x401dba20, 0x5c56: 0x401dbc20, 0x5c57: 0x401dbe20,
+	0x5c58: 0x401dc020, 0x5c59: 0x401dc220, 0x5c5a: 0x401dc420, 0x5c5b: 0x401dc620,
+	0x5c5c: 0x401dc820, 0x5c5d: 0x401dca20, 0x5c5e: 0x401dcc20, 0x5c5f: 0x401dce20,
+	0x5c60: 0x401dd020, 0x5c61: 0x401dd220, 0x5c62: 0x401dd420, 0x5c63: 0x401dd620,
+	0x5c64: 0x401dd820, 0x5c65: 0x401dda20, 0x5c66: 0x401ddc20,
+	0x5c69: 0x401e0420, 0x5c6a: 0x401de420, 0x5c6b: 0x401de620,
+	0x5c6c: 0x401de820, 0x5c6d: 0x401dea20, 0x5c6e: 0x401dec20, 0x5c6f: 0x401dee20,
+	0x5c70: 0x401df020, 0x5c71: 0x401df220, 0x5c72: 0x401df420, 0x5c73: 0x401df620,
+	0x5c74: 0x401df820, 0x5c75: 0x401dfa20, 0x5c76: 0x401dfc20, 0x5c77: 0x401dfe20,
+	0x5c78: 0x401e0020, 0x5c79: 0x401e0220, 0x5c7a: 0x401e0620, 0x5c7b: 0x401e0820,
+	0x5c7c: 0x401e0a20, 0x5c7d: 0x401e0c20, 0x5c7e: 0x401e0e20, 0x5c7f: 0x401e1020,
+	// Block 0x172, offset 0x5c80
+	0x5c80: 0x401e1220, 0x5c81: 0x401e1420, 0x5c82: 0x401e1620, 0x5c83: 0x401e1820,
+	0x5c84: 0x401e1a20, 0x5c85: 0x401e1c20, 0x5c86: 0x401e1e20, 0x5c87: 0x401e2020,
+	0x5c88: 0x401e2220, 0x5c89: 0x401e2420, 0x5c8a: 0x401e2620, 0x5c8b: 0x401e2820,
+	0x5c8c: 0x401e2a20, 0x5c8d: 0x401e2c20, 0x5c8e: 0x401e2e20, 0x5c8f: 0x401e3020,
+	0x5c90: 0x401e3220, 0x5c91: 0x401e3420, 0x5c92: 0x401e3620, 0x5c93: 0x401e3820,
+	0x5c94: 0x401e3a20, 0x5c95: 0x401e3c20, 0x5c96: 0x401e3e20, 0x5c97: 0x401e4020,
+	0x5c98: 0x401e4220, 0x5c99: 0x401e4420, 0x5c9a: 0x401e4620, 0x5c9b: 0x401e4820,
+	0x5c9c: 0x401e4a20, 0x5c9d: 0x401e4c20, 0x5c9e: 0x401e4020, 0x5c9f: 0x401e4220,
+	0x5ca0: 0x401e4220, 0x5ca1: 0x401e4220, 0x5ca2: 0x401e4220, 0x5ca3: 0x401e4220,
+	0x5ca4: 0x401e4220, 0x5ca5: 0xad800000, 0x5ca6: 0xad800000, 0x5ca7: 0xa0100000,
+	0x5ca8: 0xa0100000, 0x5ca9: 0xa0100000, 0x5caa: 0x401e4e20, 0x5cab: 0x401e5020,
+	0x5cac: 0x401e5220, 0x5cad: 0xae200000, 0x5cae: 0xad800000, 0x5caf: 0xad800000,
+	0x5cb0: 0xad800000, 0x5cb1: 0xad800000, 0x5cb2: 0xad800000, 0x5cb3: 0xa0000000,
+	0x5cb4: 0xa0000000, 0x5cb5: 0xa0000000, 0x5cb6: 0xa0000000, 0x5cb7: 0xa0000000,
+	0x5cb8: 0xa0000000, 0x5cb9: 0xa0000000, 0x5cba: 0xa0000000, 0x5cbb: 0xadc00000,
+	0x5cbc: 0xadc00000, 0x5cbd: 0xadc00000, 0x5cbe: 0xadc00000, 0x5cbf: 0xadc00000,
+	// Block 0x173, offset 0x5cc0
+	0x5cc0: 0xadc00000, 0x5cc1: 0xadc00000, 0x5cc2: 0xadc00000, 0x5cc3: 0x401e5420,
+	0x5cc4: 0x401e5620, 0x5cc5: 0xae600000, 0x5cc6: 0xae600000, 0x5cc7: 0xae600000,
+	0x5cc8: 0xae600000, 0x5cc9: 0xae600000, 0x5cca: 0xadc00000, 0x5ccb: 0xadc00000,
+	0x5ccc: 0x401e5820, 0x5ccd: 0x401e5a20, 0x5cce: 0x401e5c20, 0x5ccf: 0x401e5e20,
+	0x5cd0: 0x401e6020, 0x5cd1: 0x401e6220, 0x5cd2: 0x401e6420, 0x5cd3: 0x401e6620,
+	0x5cd4: 0x401e6820, 0x5cd5: 0x401e6a20, 0x5cd6: 0x401e6c20, 0x5cd7: 0x401e6e20,
+	0x5cd8: 0x401e7020, 0x5cd9: 0x401e7220, 0x5cda: 0x401e7420, 0x5cdb: 0x401e7620,
+	0x5cdc: 0x401e7820, 0x5cdd: 0x401e7a20, 0x5cde: 0x401e7c20, 0x5cdf: 0x401e7e20,
+	0x5ce0: 0x401e8020, 0x5ce1: 0x401e8220, 0x5ce2: 0x401e8420, 0x5ce3: 0x401e8620,
+	0x5ce4: 0x401e8820, 0x5ce5: 0x401e8a20, 0x5ce6: 0x401e8c20, 0x5ce7: 0x401e8e20,
+	0x5ce8: 0x401e9020, 0x5ce9: 0x401e9220, 0x5cea: 0xae600000, 0x5ceb: 0xae600000,
+	0x5cec: 0xae600000, 0x5ced: 0xae600000, 0x5cee: 0x401e9420, 0x5cef: 0x401e9620,
+	0x5cf0: 0x401e9820, 0x5cf1: 0x401e9a20, 0x5cf2: 0x401e9c20, 0x5cf3: 0x401e9e20,
+	0x5cf4: 0x401ea020, 0x5cf5: 0x401ea220, 0x5cf6: 0x401ea420, 0x5cf7: 0x401ea620,
+	0x5cf8: 0x401ea820, 0x5cf9: 0x401eaa20, 0x5cfa: 0x401eac20, 0x5cfb: 0x401eaa20,
+	0x5cfc: 0x401eac20, 0x5cfd: 0x401eaa20, 0x5cfe: 0x401eac20, 0x5cff: 0x401eaa20,
+	// Block 0x174, offset 0x5d00
+	0x5d00: 0x401eac20, 0x5d01: 0x401eae20, 0x5d02: 0x401eb020, 0x5d03: 0x401eb220,
+	0x5d04: 0x401eb420, 0x5d05: 0x401eb620, 0x5d06: 0x401eb820, 0x5d07: 0x401eba20,
+	0x5d08: 0x401ebc20, 0x5d09: 0x401ebe20, 0x5d0a: 0x401ec020, 0x5d0b: 0x401ec220,
+	0x5d0c: 0x401ec420, 0x5d0d: 0x401ec620, 0x5d0e: 0x401ec820, 0x5d0f: 0x401eca20,
+	0x5d10: 0x401ecc20, 0x5d11: 0x401ece20, 0x5d12: 0x401ed020, 0x5d13: 0x401ed220,
+	0x5d14: 0x401ed420, 0x5d15: 0x401ed620, 0x5d16: 0x401ed820, 0x5d17: 0x401eda20,
+	0x5d18: 0x401edc20, 0x5d19: 0x401ede20, 0x5d1a: 0x401ee020, 0x5d1b: 0x401ee220,
+	0x5d1c: 0x401ee420, 0x5d1d: 0x401ee620,
+	// Block 0x175, offset 0x5d40
+	0x5d40: 0x401ee820, 0x5d41: 0x401eea20, 0x5d42: 0x401eec20, 0x5d43: 0x401eee20,
+	0x5d44: 0x401ef020, 0x5d45: 0x401ef220, 0x5d46: 0x401ef420, 0x5d47: 0x401ef620,
+	0x5d48: 0x401ef820, 0x5d49: 0x401efa20, 0x5d4a: 0x401efc20, 0x5d4b: 0x401efe20,
+	0x5d4c: 0x401f0020, 0x5d4d: 0x401f0220, 0x5d4e: 0x401f0420, 0x5d4f: 0x401f0620,
+	0x5d50: 0x401f0820, 0x5d51: 0x401f0a20, 0x5d52: 0x401f0c20, 0x5d53: 0x401f0e20,
+	0x5d54: 0x401f1020, 0x5d55: 0x401f1220, 0x5d56: 0x401f1420, 0x5d57: 0x401f1620,
+	0x5d58: 0x401f1820, 0x5d59: 0x401f1a20, 0x5d5a: 0x401f1c20, 0x5d5b: 0x401f1e20,
+	0x5d5c: 0x401f2020, 0x5d5d: 0x401f2220, 0x5d5e: 0x401f2420, 0x5d5f: 0x401f2620,
+	0x5d60: 0x401f2820, 0x5d61: 0x401f2a20, 0x5d62: 0x401f2c20, 0x5d63: 0x401f2e20,
+	0x5d64: 0x401f3020, 0x5d65: 0x401f3220, 0x5d66: 0x401f3420, 0x5d67: 0x401f3620,
+	0x5d68: 0x401f3820, 0x5d69: 0x401f3a20, 0x5d6a: 0x401f3c20, 0x5d6b: 0x401f3e20,
+	0x5d6c: 0x401f4020, 0x5d6d: 0x401f4220, 0x5d6e: 0x401f4420, 0x5d6f: 0x401f4620,
+	0x5d70: 0x401f4820, 0x5d71: 0x401f4a20, 0x5d72: 0x401f4c20, 0x5d73: 0x401f4e20,
+	0x5d74: 0x401f5020, 0x5d75: 0x401f5220, 0x5d76: 0x401f5420, 0x5d77: 0x401f5620,
+	0x5d78: 0x401f5820, 0x5d79: 0x401f5a20, 0x5d7a: 0x401f5c20, 0x5d7b: 0x401f5e20,
+	0x5d7c: 0x401f6020, 0x5d7d: 0x401f6220, 0x5d7e: 0x401f6420, 0x5d7f: 0x401f6620,
+	// Block 0x176, offset 0x5d80
+	0x5d80: 0x401f6820, 0x5d81: 0x401f6a20, 0x5d82: 0xae600000, 0x5d83: 0xae600000,
+	0x5d84: 0xae600000, 0x5d85: 0x401f6c20,
+	// Block 0x177, offset 0x5dc0
+	0x5dc0: 0x4019e220, 0x5dc1: 0x4019e420, 0x5dc2: 0x4019e620, 0x5dc3: 0x4019e820,
+	0x5dc4: 0x4019ea20, 0x5dc5: 0x4019ec20, 0x5dc6: 0x4019ee20, 0x5dc7: 0x4019f020,
+	0x5dc8: 0x4019f220, 0x5dc9: 0x4019f420, 0x5dca: 0x4019f620, 0x5dcb: 0x4019f820,
+	0x5dcc: 0x4019fa20, 0x5dcd: 0x4019fc20, 0x5dce: 0x4019fe20, 0x5dcf: 0x401a0020,
+	0x5dd0: 0x401a0220, 0x5dd1: 0x401a0420, 0x5dd2: 0x401a0620, 0x5dd3: 0x401a0820,
+	0x5dd4: 0x401a0a20, 0x5dd5: 0x401a0c20, 0x5dd6: 0x401a0e20, 0x5dd7: 0x401a1020,
+	0x5dd8: 0x401a1220, 0x5dd9: 0x401a1420, 0x5dda: 0x401a1620, 0x5ddb: 0x401a1820,
+	0x5ddc: 0x401a1a20, 0x5ddd: 0x401a1c20, 0x5dde: 0x401a1e20, 0x5ddf: 0x401a2020,
+	0x5de0: 0x401a2220, 0x5de1: 0x401a2420, 0x5de2: 0x401a2620, 0x5de3: 0x401a2820,
+	0x5de4: 0x401a2a20, 0x5de5: 0x401a2c20, 0x5de6: 0x401a2e20, 0x5de7: 0x401a3020,
+	0x5de8: 0x401a3220, 0x5de9: 0x401a3420, 0x5dea: 0x401a3620, 0x5deb: 0x401a3820,
+	0x5dec: 0x401a3a20, 0x5ded: 0x401a3c20, 0x5dee: 0x401a3e20, 0x5def: 0x401a4020,
+	0x5df0: 0x401a4220, 0x5df1: 0x401a4420, 0x5df2: 0x401a4620, 0x5df3: 0x401a4820,
+	0x5df4: 0x401a4a20, 0x5df5: 0x401a4c20, 0x5df6: 0x401a4e20, 0x5df7: 0x401a5020,
+	0x5df8: 0x401a5220, 0x5df9: 0x401a5420, 0x5dfa: 0x401a5620, 0x5dfb: 0x401a5820,
+	0x5dfc: 0x401a5a20, 0x5dfd: 0x401a5c20, 0x5dfe: 0x401a5e20, 0x5dff: 0x401a6020,
+	// Block 0x178, offset 0x5e00
+	0x5e00: 0x401a6220, 0x5e01: 0x401a6420, 0x5e02: 0x401a6620, 0x5e03: 0x401a6820,
+	0x5e04: 0x401a6a20, 0x5e05: 0x401a6c20, 0x5e06: 0x401a6e20, 0x5e07: 0x401a7020,
+	0x5e08: 0x401a7220, 0x5e09: 0x401a7420, 0x5e0a: 0x401a7620, 0x5e0b: 0x401a7820,
+	0x5e0c: 0x401a7a20, 0x5e0d: 0x401a7c20, 0x5e0e: 0x401a7e20, 0x5e0f: 0x401a8020,
+	0x5e10: 0x401a8220, 0x5e11: 0x401a8420, 0x5e12: 0x401a8620, 0x5e13: 0x401a8820,
+	0x5e14: 0x401a8a20, 0x5e15: 0x401a8c20, 0x5e16: 0x401a8e20,
+	0x5e20: 0xe00002af, 0x5e21: 0xe00003ca, 0x5e22: 0xe00004a4, 0x5e23: 0xe0000576,
+	0x5e24: 0xe000063d, 0x5e25: 0xe00006ed, 0x5e26: 0xe0000795, 0x5e27: 0xe000083e,
+	0x5e28: 0xe00008e9, 0x5e29: 0x4029ba20, 0x5e2a: 0x4029bc20, 0x5e2b: 0x4029be20,
+	0x5e2c: 0x4029c020, 0x5e2d: 0x4029c220, 0x5e2e: 0x4029c420, 0x5e2f: 0x4029c620,
+	0x5e30: 0x4029c820, 0x5e31: 0x4029ca20,
+	// Block 0x179, offset 0x5e40
+	0x5e40: 0x002bde8b, 0x5e41: 0x002c0a8b, 0x5e42: 0x002c3a8b, 0x5e43: 0x002c628b,
+	0x5e44: 0x002c988b, 0x5e45: 0x002d088b, 0x5e46: 0x002d228b, 0x5e47: 0x002d688b,
+	0x5e48: 0x002d9a8b, 0x5e49: 0x002dcc8b, 0x5e4a: 0x002dfe8b, 0x5e4b: 0x002e228b,
+	0x5e4c: 0x002e828b, 0x5e4d: 0x002e9e8b, 0x5e4e: 0x002ee28b, 0x5e4f: 0x002f2c8b,
+	0x5e50: 0x002f568b, 0x5e51: 0x002f7a8b, 0x5e52: 0x002fe68b, 0x5e53: 0x00302c8b,
+	0x5e54: 0x00306c8b, 0x5e55: 0x0030be8b, 0x5e56: 0x0030e28b, 0x5e57: 0x0030f68b,
+	0x5e58: 0x0031008b, 0x5e59: 0x00312a8b, 0x5e5a: 0x002bde85, 0x5e5b: 0x002c0a85,
+	0x5e5c: 0x002c3a85, 0x5e5d: 0x002c6285, 0x5e5e: 0x002c9885, 0x5e5f: 0x002d0885,
+	0x5e60: 0x002d2285, 0x5e61: 0x002d6885, 0x5e62: 0x002d9a85, 0x5e63: 0x002dcc85,
+	0x5e64: 0x002dfe85, 0x5e65: 0x002e2285, 0x5e66: 0x002e8285, 0x5e67: 0x002e9e85,
+	0x5e68: 0x002ee285, 0x5e69: 0x002f2c85, 0x5e6a: 0x002f5685, 0x5e6b: 0x002f7a85,
+	0x5e6c: 0x002fe685, 0x5e6d: 0x00302c85, 0x5e6e: 0x00306c85, 0x5e6f: 0x0030be85,
+	0x5e70: 0x0030e285, 0x5e71: 0x0030f685, 0x5e72: 0x00310085, 0x5e73: 0x00312a85,
+	0x5e74: 0x002bde8b, 0x5e75: 0x002c0a8b, 0x5e76: 0x002c3a8b, 0x5e77: 0x002c628b,
+	0x5e78: 0x002c988b, 0x5e79: 0x002d088b, 0x5e7a: 0x002d228b, 0x5e7b: 0x002d688b,
+	0x5e7c: 0x002d9a8b, 0x5e7d: 0x002dcc8b, 0x5e7e: 0x002dfe8b, 0x5e7f: 0x002e228b,
+	// Block 0x17a, offset 0x5e80
+	0x5e80: 0x002e828b, 0x5e81: 0x002e9e8b, 0x5e82: 0x002ee28b, 0x5e83: 0x002f2c8b,
+	0x5e84: 0x002f568b, 0x5e85: 0x002f7a8b, 0x5e86: 0x002fe68b, 0x5e87: 0x00302c8b,
+	0x5e88: 0x00306c8b, 0x5e89: 0x0030be8b, 0x5e8a: 0x0030e28b, 0x5e8b: 0x0030f68b,
+	0x5e8c: 0x0031008b, 0x5e8d: 0x00312a8b, 0x5e8e: 0x002bde85, 0x5e8f: 0x002c0a85,
+	0x5e90: 0x002c3a85, 0x5e91: 0x002c6285, 0x5e92: 0x002c9885, 0x5e93: 0x002d0885,
+	0x5e94: 0x002d2285, 0x5e96: 0x002d9a85, 0x5e97: 0x002dcc85,
+	0x5e98: 0x002dfe85, 0x5e99: 0x002e2285, 0x5e9a: 0x002e8285, 0x5e9b: 0x002e9e85,
+	0x5e9c: 0x002ee285, 0x5e9d: 0x002f2c85, 0x5e9e: 0x002f5685, 0x5e9f: 0x002f7a85,
+	0x5ea0: 0x002fe685, 0x5ea1: 0x00302c85, 0x5ea2: 0x00306c85, 0x5ea3: 0x0030be85,
+	0x5ea4: 0x0030e285, 0x5ea5: 0x0030f685, 0x5ea6: 0x00310085, 0x5ea7: 0x00312a85,
+	0x5ea8: 0x002bde8b, 0x5ea9: 0x002c0a8b, 0x5eaa: 0x002c3a8b, 0x5eab: 0x002c628b,
+	0x5eac: 0x002c988b, 0x5ead: 0x002d088b, 0x5eae: 0x002d228b, 0x5eaf: 0x002d688b,
+	0x5eb0: 0x002d9a8b, 0x5eb1: 0x002dcc8b, 0x5eb2: 0x002dfe8b, 0x5eb3: 0x002e228b,
+	0x5eb4: 0x002e828b, 0x5eb5: 0x002e9e8b, 0x5eb6: 0x002ee28b, 0x5eb7: 0x002f2c8b,
+	0x5eb8: 0x002f568b, 0x5eb9: 0x002f7a8b, 0x5eba: 0x002fe68b, 0x5ebb: 0x00302c8b,
+	0x5ebc: 0x00306c8b, 0x5ebd: 0x0030be8b, 0x5ebe: 0x0030e28b, 0x5ebf: 0x0030f68b,
+	// Block 0x17b, offset 0x5ec0
+	0x5ec0: 0x0031008b, 0x5ec1: 0x00312a8b, 0x5ec2: 0x002bde85, 0x5ec3: 0x002c0a85,
+	0x5ec4: 0x002c3a85, 0x5ec5: 0x002c6285, 0x5ec6: 0x002c9885, 0x5ec7: 0x002d0885,
+	0x5ec8: 0x002d2285, 0x5ec9: 0x002d6885, 0x5eca: 0x002d9a85, 0x5ecb: 0x002dcc85,
+	0x5ecc: 0x002dfe85, 0x5ecd: 0x002e2285, 0x5ece: 0x002e8285, 0x5ecf: 0x002e9e85,
+	0x5ed0: 0x002ee285, 0x5ed1: 0x002f2c85, 0x5ed2: 0x002f5685, 0x5ed3: 0x002f7a85,
+	0x5ed4: 0x002fe685, 0x5ed5: 0x00302c85, 0x5ed6: 0x00306c85, 0x5ed7: 0x0030be85,
+	0x5ed8: 0x0030e285, 0x5ed9: 0x0030f685, 0x5eda: 0x00310085, 0x5edb: 0x00312a85,
+	0x5edc: 0x002bde8b, 0x5ede: 0x002c3a8b, 0x5edf: 0x002c628b,
+	0x5ee2: 0x002d228b,
+	0x5ee5: 0x002dcc8b, 0x5ee6: 0x002dfe8b,
+	0x5ee9: 0x002e9e8b, 0x5eea: 0x002ee28b, 0x5eeb: 0x002f2c8b,
+	0x5eec: 0x002f568b, 0x5eee: 0x002fe68b, 0x5eef: 0x00302c8b,
+	0x5ef0: 0x00306c8b, 0x5ef1: 0x0030be8b, 0x5ef2: 0x0030e28b, 0x5ef3: 0x0030f68b,
+	0x5ef4: 0x0031008b, 0x5ef5: 0x00312a8b, 0x5ef6: 0x002bde85, 0x5ef7: 0x002c0a85,
+	0x5ef8: 0x002c3a85, 0x5ef9: 0x002c6285, 0x5efb: 0x002d0885,
+	0x5efd: 0x002d6885, 0x5efe: 0x002d9a85, 0x5eff: 0x002dcc85,
+	// Block 0x17c, offset 0x5f00
+	0x5f00: 0x002dfe85, 0x5f01: 0x002e2285, 0x5f02: 0x002e8285, 0x5f03: 0x002e9e85,
+	0x5f05: 0x002f2c85, 0x5f06: 0x002f5685, 0x5f07: 0x002f7a85,
+	0x5f08: 0x002fe685, 0x5f09: 0x00302c85, 0x5f0a: 0x00306c85, 0x5f0b: 0x0030be85,
+	0x5f0c: 0x0030e285, 0x5f0d: 0x0030f685, 0x5f0e: 0x00310085, 0x5f0f: 0x00312a85,
+	0x5f10: 0x002bde8b, 0x5f11: 0x002c0a8b, 0x5f12: 0x002c3a8b, 0x5f13: 0x002c628b,
+	0x5f14: 0x002c988b, 0x5f15: 0x002d088b, 0x5f16: 0x002d228b, 0x5f17: 0x002d688b,
+	0x5f18: 0x002d9a8b, 0x5f19: 0x002dcc8b, 0x5f1a: 0x002dfe8b, 0x5f1b: 0x002e228b,
+	0x5f1c: 0x002e828b, 0x5f1d: 0x002e9e8b, 0x5f1e: 0x002ee28b, 0x5f1f: 0x002f2c8b,
+	0x5f20: 0x002f568b, 0x5f21: 0x002f7a8b, 0x5f22: 0x002fe68b, 0x5f23: 0x00302c8b,
+	0x5f24: 0x00306c8b, 0x5f25: 0x0030be8b, 0x5f26: 0x0030e28b, 0x5f27: 0x0030f68b,
+	0x5f28: 0x0031008b, 0x5f29: 0x00312a8b, 0x5f2a: 0x002bde85, 0x5f2b: 0x002c0a85,
+	0x5f2c: 0x002c3a85, 0x5f2d: 0x002c6285, 0x5f2e: 0x002c9885, 0x5f2f: 0x002d0885,
+	0x5f30: 0x002d2285, 0x5f31: 0x002d6885, 0x5f32: 0x002d9a85, 0x5f33: 0x002dcc85,
+	0x5f34: 0x002dfe85, 0x5f35: 0x002e2285, 0x5f36: 0x002e8285, 0x5f37: 0x002e9e85,
+	0x5f38: 0x002ee285, 0x5f39: 0x002f2c85, 0x5f3a: 0x002f5685, 0x5f3b: 0x002f7a85,
+	0x5f3c: 0x002fe685, 0x5f3d: 0x00302c85, 0x5f3e: 0x00306c85, 0x5f3f: 0x0030be85,
+	// Block 0x17d, offset 0x5f40
+	0x5f40: 0x0030e285, 0x5f41: 0x0030f685, 0x5f42: 0x00310085, 0x5f43: 0x00312a85,
+	0x5f44: 0x002bde8b, 0x5f45: 0x002c0a8b, 0x5f47: 0x002c628b,
+	0x5f48: 0x002c988b, 0x5f49: 0x002d088b, 0x5f4a: 0x002d228b,
+	0x5f4d: 0x002dcc8b, 0x5f4e: 0x002dfe8b, 0x5f4f: 0x002e228b,
+	0x5f50: 0x002e828b, 0x5f51: 0x002e9e8b, 0x5f52: 0x002ee28b, 0x5f53: 0x002f2c8b,
+	0x5f54: 0x002f568b, 0x5f56: 0x002fe68b, 0x5f57: 0x00302c8b,
+	0x5f58: 0x00306c8b, 0x5f59: 0x0030be8b, 0x5f5a: 0x0030e28b, 0x5f5b: 0x0030f68b,
+	0x5f5c: 0x0031008b, 0x5f5e: 0x002bde85, 0x5f5f: 0x002c0a85,
+	0x5f60: 0x002c3a85, 0x5f61: 0x002c6285, 0x5f62: 0x002c9885, 0x5f63: 0x002d0885,
+	0x5f64: 0x002d2285, 0x5f65: 0x002d6885, 0x5f66: 0x002d9a85, 0x5f67: 0x002dcc85,
+	0x5f68: 0x002dfe85, 0x5f69: 0x002e2285, 0x5f6a: 0x002e8285, 0x5f6b: 0x002e9e85,
+	0x5f6c: 0x002ee285, 0x5f6d: 0x002f2c85, 0x5f6e: 0x002f5685, 0x5f6f: 0x002f7a85,
+	0x5f70: 0x002fe685, 0x5f71: 0x00302c85, 0x5f72: 0x00306c85, 0x5f73: 0x0030be85,
+	0x5f74: 0x0030e285, 0x5f75: 0x0030f685, 0x5f76: 0x00310085, 0x5f77: 0x00312a85,
+	0x5f78: 0x002bde8b, 0x5f79: 0x002c0a8b, 0x5f7b: 0x002c628b,
+	0x5f7c: 0x002c988b, 0x5f7d: 0x002d088b, 0x5f7e: 0x002d228b,
+	// Block 0x17e, offset 0x5f80
+	0x5f80: 0x002d9a8b, 0x5f81: 0x002dcc8b, 0x5f82: 0x002dfe8b, 0x5f83: 0x002e228b,
+	0x5f84: 0x002e828b, 0x5f86: 0x002ee28b,
+	0x5f8a: 0x002fe68b, 0x5f8b: 0x00302c8b,
+	0x5f8c: 0x00306c8b, 0x5f8d: 0x0030be8b, 0x5f8e: 0x0030e28b, 0x5f8f: 0x0030f68b,
+	0x5f90: 0x0031008b, 0x5f92: 0x002bde85, 0x5f93: 0x002c0a85,
+	0x5f94: 0x002c3a85, 0x5f95: 0x002c6285, 0x5f96: 0x002c9885, 0x5f97: 0x002d0885,
+	0x5f98: 0x002d2285, 0x5f99: 0x002d6885, 0x5f9a: 0x002d9a85, 0x5f9b: 0x002dcc85,
+	0x5f9c: 0x002dfe85, 0x5f9d: 0x002e2285, 0x5f9e: 0x002e8285, 0x5f9f: 0x002e9e85,
+	0x5fa0: 0x002ee285, 0x5fa1: 0x002f2c85, 0x5fa2: 0x002f5685, 0x5fa3: 0x002f7a85,
+	0x5fa4: 0x002fe685, 0x5fa5: 0x00302c85, 0x5fa6: 0x00306c85, 0x5fa7: 0x0030be85,
+	0x5fa8: 0x0030e285, 0x5fa9: 0x0030f685, 0x5faa: 0x00310085, 0x5fab: 0x00312a85,
+	0x5fac: 0x002bde8b, 0x5fad: 0x002c0a8b, 0x5fae: 0x002c3a8b, 0x5faf: 0x002c628b,
+	0x5fb0: 0x002c988b, 0x5fb1: 0x002d088b, 0x5fb2: 0x002d228b, 0x5fb3: 0x002d688b,
+	0x5fb4: 0x002d9a8b, 0x5fb5: 0x002dcc8b, 0x5fb6: 0x002dfe8b, 0x5fb7: 0x002e228b,
+	0x5fb8: 0x002e828b, 0x5fb9: 0x002e9e8b, 0x5fba: 0x002ee28b, 0x5fbb: 0x002f2c8b,
+	0x5fbc: 0x002f568b, 0x5fbd: 0x002f7a8b, 0x5fbe: 0x002fe68b, 0x5fbf: 0x00302c8b,
+	// Block 0x17f, offset 0x5fc0
+	0x5fc0: 0x00306c8b, 0x5fc1: 0x0030be8b, 0x5fc2: 0x0030e28b, 0x5fc3: 0x0030f68b,
+	0x5fc4: 0x0031008b, 0x5fc5: 0x00312a8b, 0x5fc6: 0x002bde85, 0x5fc7: 0x002c0a85,
+	0x5fc8: 0x002c3a85, 0x5fc9: 0x002c6285, 0x5fca: 0x002c9885, 0x5fcb: 0x002d0885,
+	0x5fcc: 0x002d2285, 0x5fcd: 0x002d6885, 0x5fce: 0x002d9a85, 0x5fcf: 0x002dcc85,
+	0x5fd0: 0x002dfe85, 0x5fd1: 0x002e2285, 0x5fd2: 0x002e8285, 0x5fd3: 0x002e9e85,
+	0x5fd4: 0x002ee285, 0x5fd5: 0x002f2c85, 0x5fd6: 0x002f5685, 0x5fd7: 0x002f7a85,
+	0x5fd8: 0x002fe685, 0x5fd9: 0x00302c85, 0x5fda: 0x00306c85, 0x5fdb: 0x0030be85,
+	0x5fdc: 0x0030e285, 0x5fdd: 0x0030f685, 0x5fde: 0x00310085, 0x5fdf: 0x00312a85,
+	0x5fe0: 0x002bde8b, 0x5fe1: 0x002c0a8b, 0x5fe2: 0x002c3a8b, 0x5fe3: 0x002c628b,
+	0x5fe4: 0x002c988b, 0x5fe5: 0x002d088b, 0x5fe6: 0x002d228b, 0x5fe7: 0x002d688b,
+	0x5fe8: 0x002d9a8b, 0x5fe9: 0x002dcc8b, 0x5fea: 0x002dfe8b, 0x5feb: 0x002e228b,
+	0x5fec: 0x002e828b, 0x5fed: 0x002e9e8b, 0x5fee: 0x002ee28b, 0x5fef: 0x002f2c8b,
+	0x5ff0: 0x002f568b, 0x5ff1: 0x002f7a8b, 0x5ff2: 0x002fe68b, 0x5ff3: 0x00302c8b,
+	0x5ff4: 0x00306c8b, 0x5ff5: 0x0030be8b, 0x5ff6: 0x0030e28b, 0x5ff7: 0x0030f68b,
+	0x5ff8: 0x0031008b, 0x5ff9: 0x00312a8b, 0x5ffa: 0x002bde85, 0x5ffb: 0x002c0a85,
+	0x5ffc: 0x002c3a85, 0x5ffd: 0x002c6285, 0x5ffe: 0x002c9885, 0x5fff: 0x002d0885,
+	// Block 0x180, offset 0x6000
+	0x6000: 0x002d2285, 0x6001: 0x002d6885, 0x6002: 0x002d9a85, 0x6003: 0x002dcc85,
+	0x6004: 0x002dfe85, 0x6005: 0x002e2285, 0x6006: 0x002e8285, 0x6007: 0x002e9e85,
+	0x6008: 0x002ee285, 0x6009: 0x002f2c85, 0x600a: 0x002f5685, 0x600b: 0x002f7a85,
+	0x600c: 0x002fe685, 0x600d: 0x00302c85, 0x600e: 0x00306c85, 0x600f: 0x0030be85,
+	0x6010: 0x0030e285, 0x6011: 0x0030f685, 0x6012: 0x00310085, 0x6013: 0x00312a85,
+	0x6014: 0x002bde8b, 0x6015: 0x002c0a8b, 0x6016: 0x002c3a8b, 0x6017: 0x002c628b,
+	0x6018: 0x002c988b, 0x6019: 0x002d088b, 0x601a: 0x002d228b, 0x601b: 0x002d688b,
+	0x601c: 0x002d9a8b, 0x601d: 0x002dcc8b, 0x601e: 0x002dfe8b, 0x601f: 0x002e228b,
+	0x6020: 0x002e828b, 0x6021: 0x002e9e8b, 0x6022: 0x002ee28b, 0x6023: 0x002f2c8b,
+	0x6024: 0x002f568b, 0x6025: 0x002f7a8b, 0x6026: 0x002fe68b, 0x6027: 0x00302c8b,
+	0x6028: 0x00306c8b, 0x6029: 0x0030be8b, 0x602a: 0x0030e28b, 0x602b: 0x0030f68b,
+	0x602c: 0x0031008b, 0x602d: 0x00312a8b, 0x602e: 0x002bde85, 0x602f: 0x002c0a85,
+	0x6030: 0x002c3a85, 0x6031: 0x002c6285, 0x6032: 0x002c9885, 0x6033: 0x002d0885,
+	0x6034: 0x002d2285, 0x6035: 0x002d6885, 0x6036: 0x002d9a85, 0x6037: 0x002dcc85,
+	0x6038: 0x002dfe85, 0x6039: 0x002e2285, 0x603a: 0x002e8285, 0x603b: 0x002e9e85,
+	0x603c: 0x002ee285, 0x603d: 0x002f2c85, 0x603e: 0x002f5685, 0x603f: 0x002f7a85,
+	// Block 0x181, offset 0x6040
+	0x6040: 0x002fe685, 0x6041: 0x00302c85, 0x6042: 0x00306c85, 0x6043: 0x0030be85,
+	0x6044: 0x0030e285, 0x6045: 0x0030f685, 0x6046: 0x00310085, 0x6047: 0x00312a85,
+	0x6048: 0x002bde8b, 0x6049: 0x002c0a8b, 0x604a: 0x002c3a8b, 0x604b: 0x002c628b,
+	0x604c: 0x002c988b, 0x604d: 0x002d088b, 0x604e: 0x002d228b, 0x604f: 0x002d688b,
+	0x6050: 0x002d9a8b, 0x6051: 0x002dcc8b, 0x6052: 0x002dfe8b, 0x6053: 0x002e228b,
+	0x6054: 0x002e828b, 0x6055: 0x002e9e8b, 0x6056: 0x002ee28b, 0x6057: 0x002f2c8b,
+	0x6058: 0x002f568b, 0x6059: 0x002f7a8b, 0x605a: 0x002fe68b, 0x605b: 0x00302c8b,
+	0x605c: 0x00306c8b, 0x605d: 0x0030be8b, 0x605e: 0x0030e28b, 0x605f: 0x0030f68b,
+	0x6060: 0x0031008b, 0x6061: 0x00312a8b, 0x6062: 0x002bde85, 0x6063: 0x002c0a85,
+	0x6064: 0x002c3a85, 0x6065: 0x002c6285, 0x6066: 0x002c9885, 0x6067: 0x002d0885,
+	0x6068: 0x002d2285, 0x6069: 0x002d6885, 0x606a: 0x002d9a85, 0x606b: 0x002dcc85,
+	0x606c: 0x002dfe85, 0x606d: 0x002e2285, 0x606e: 0x002e8285, 0x606f: 0x002e9e85,
+	0x6070: 0x002ee285, 0x6071: 0x002f2c85, 0x6072: 0x002f5685, 0x6073: 0x002f7a85,
+	0x6074: 0x002fe685, 0x6075: 0x00302c85, 0x6076: 0x00306c85, 0x6077: 0x0030be85,
+	0x6078: 0x0030e285, 0x6079: 0x0030f685, 0x607a: 0x00310085, 0x607b: 0x00312a85,
+	0x607c: 0x002bde8b, 0x607d: 0x002c0a8b, 0x607e: 0x002c3a8b, 0x607f: 0x002c628b,
+	// Block 0x182, offset 0x6080
+	0x6080: 0x002c988b, 0x6081: 0x002d088b, 0x6082: 0x002d228b, 0x6083: 0x002d688b,
+	0x6084: 0x002d9a8b, 0x6085: 0x002dcc8b, 0x6086: 0x002dfe8b, 0x6087: 0x002e228b,
+	0x6088: 0x002e828b, 0x6089: 0x002e9e8b, 0x608a: 0x002ee28b, 0x608b: 0x002f2c8b,
+	0x608c: 0x002f568b, 0x608d: 0x002f7a8b, 0x608e: 0x002fe68b, 0x608f: 0x00302c8b,
+	0x6090: 0x00306c8b, 0x6091: 0x0030be8b, 0x6092: 0x0030e28b, 0x6093: 0x0030f68b,
+	0x6094: 0x0031008b, 0x6095: 0x00312a8b, 0x6096: 0x002bde85, 0x6097: 0x002c0a85,
+	0x6098: 0x002c3a85, 0x6099: 0x002c6285, 0x609a: 0x002c9885, 0x609b: 0x002d0885,
+	0x609c: 0x002d2285, 0x609d: 0x002d6885, 0x609e: 0x002d9a85, 0x609f: 0x002dcc85,
+	0x60a0: 0x002dfe85, 0x60a1: 0x002e2285, 0x60a2: 0x002e8285, 0x60a3: 0x002e9e85,
+	0x60a4: 0x002ee285, 0x60a5: 0x002f2c85, 0x60a6: 0x002f5685, 0x60a7: 0x002f7a85,
+	0x60a8: 0x002fe685, 0x60a9: 0x00302c85, 0x60aa: 0x00306c85, 0x60ab: 0x0030be85,
+	0x60ac: 0x0030e285, 0x60ad: 0x0030f685, 0x60ae: 0x00310085, 0x60af: 0x00312a85,
+	0x60b0: 0x002bde8b, 0x60b1: 0x002c0a8b, 0x60b2: 0x002c3a8b, 0x60b3: 0x002c628b,
+	0x60b4: 0x002c988b, 0x60b5: 0x002d088b, 0x60b6: 0x002d228b, 0x60b7: 0x002d688b,
+	0x60b8: 0x002d9a8b, 0x60b9: 0x002dcc8b, 0x60ba: 0x002dfe8b, 0x60bb: 0x002e228b,
+	0x60bc: 0x002e828b, 0x60bd: 0x002e9e8b, 0x60be: 0x002ee28b, 0x60bf: 0x002f2c8b,
+	// Block 0x183, offset 0x60c0
+	0x60c0: 0x002f568b, 0x60c1: 0x002f7a8b, 0x60c2: 0x002fe68b, 0x60c3: 0x00302c8b,
+	0x60c4: 0x00306c8b, 0x60c5: 0x0030be8b, 0x60c6: 0x0030e28b, 0x60c7: 0x0030f68b,
+	0x60c8: 0x0031008b, 0x60c9: 0x00312a8b, 0x60ca: 0x002bde85, 0x60cb: 0x002c0a85,
+	0x60cc: 0x002c3a85, 0x60cd: 0x002c6285, 0x60ce: 0x002c9885, 0x60cf: 0x002d0885,
+	0x60d0: 0x002d2285, 0x60d1: 0x002d6885, 0x60d2: 0x002d9a85, 0x60d3: 0x002dcc85,
+	0x60d4: 0x002dfe85, 0x60d5: 0x002e2285, 0x60d6: 0x002e8285, 0x60d7: 0x002e9e85,
+	0x60d8: 0x002ee285, 0x60d9: 0x002f2c85, 0x60da: 0x002f5685, 0x60db: 0x002f7a85,
+	0x60dc: 0x002fe685, 0x60dd: 0x00302c85, 0x60de: 0x00306c85, 0x60df: 0x0030be85,
+	0x60e0: 0x0030e285, 0x60e1: 0x0030f685, 0x60e2: 0x00310085, 0x60e3: 0x00312a85,
+	0x60e4: 0x002da285, 0x60e5: 0x002dd485,
+	0x60e8: 0x0032528b, 0x60e9: 0x0032548b, 0x60ea: 0x0032568b, 0x60eb: 0x00325a8b,
+	0x60ec: 0x00325c8b, 0x60ed: 0x0032648b, 0x60ee: 0x0032688b, 0x60ef: 0x00326a8b,
+	0x60f0: 0x00326c8b, 0x60f1: 0x0032708b, 0x60f2: 0x0032728b, 0x60f3: 0x0032768b,
+	0x60f4: 0x0032788b, 0x60f5: 0x00327a8b, 0x60f6: 0x00327c8b, 0x60f7: 0x00327e8b,
+	0x60f8: 0x0032888b, 0x60f9: 0x00326a8b, 0x60fa: 0x00328e8b, 0x60fb: 0x0032968b,
+	0x60fc: 0x0032988b, 0x60fd: 0x00329a8b, 0x60fe: 0x00329c8b, 0x60ff: 0x00329e8b,
+	// Block 0x184, offset 0x6100
+	0x6100: 0x0032a28b, 0x6101: 0x00092485, 0x6102: 0x00325285, 0x6103: 0x00325485,
+	0x6104: 0x00325685, 0x6105: 0x00325a85, 0x6106: 0x00325c85, 0x6107: 0x00326485,
+	0x6108: 0x00326885, 0x6109: 0x00326a85, 0x610a: 0x00326c85, 0x610b: 0x00327085,
+	0x610c: 0x00327285, 0x610d: 0x00327685, 0x610e: 0x00327885, 0x610f: 0x00327a85,
+	0x6110: 0x00327c85, 0x6111: 0x00327e85, 0x6112: 0x00328885, 0x6113: 0x00328e85,
+	0x6114: 0x00328e85, 0x6115: 0x00329685, 0x6116: 0x00329885, 0x6117: 0x00329a85,
+	0x6118: 0x00329c85, 0x6119: 0x00329e85, 0x611a: 0x0032a285, 0x611b: 0x00091c85,
+	0x611c: 0x00325c85, 0x611d: 0x00326a85, 0x611e: 0x00327085, 0x611f: 0x00329a85,
+	0x6120: 0x00328885, 0x6121: 0x00327e85, 0x6122: 0x0032528b, 0x6123: 0x0032548b,
+	0x6124: 0x0032568b, 0x6125: 0x00325a8b, 0x6126: 0x00325c8b, 0x6127: 0x0032648b,
+	0x6128: 0x0032688b, 0x6129: 0x00326a8b, 0x612a: 0x00326c8b, 0x612b: 0x0032708b,
+	0x612c: 0x0032728b, 0x612d: 0x0032768b, 0x612e: 0x0032788b, 0x612f: 0x00327a8b,
+	0x6130: 0x00327c8b, 0x6131: 0x00327e8b, 0x6132: 0x0032888b, 0x6133: 0x00326a8b,
+	0x6134: 0x00328e8b, 0x6135: 0x0032968b, 0x6136: 0x0032988b, 0x6137: 0x00329a8b,
+	0x6138: 0x00329c8b, 0x6139: 0x00329e8b, 0x613a: 0x0032a28b, 0x613b: 0x00092485,
+	0x613c: 0x00325285, 0x613d: 0x00325485, 0x613e: 0x00325685, 0x613f: 0x00325a85,
+	// Block 0x185, offset 0x6140
+	0x6140: 0x00325c85, 0x6141: 0x00326485, 0x6142: 0x00326885, 0x6143: 0x00326a85,
+	0x6144: 0x00326c85, 0x6145: 0x00327085, 0x6146: 0x00327285, 0x6147: 0x00327685,
+	0x6148: 0x00327885, 0x6149: 0x00327a85, 0x614a: 0x00327c85, 0x614b: 0x00327e85,
+	0x614c: 0x00328885, 0x614d: 0x00328e85, 0x614e: 0x00328e85, 0x614f: 0x00329685,
+	0x6150: 0x00329885, 0x6151: 0x00329a85, 0x6152: 0x00329c85, 0x6153: 0x00329e85,
+	0x6154: 0x0032a285, 0x6155: 0x00091c85, 0x6156: 0x00325c85, 0x6157: 0x00326a85,
+	0x6158: 0x00327085, 0x6159: 0x00329a85, 0x615a: 0x00328885, 0x615b: 0x00327e85,
+	0x615c: 0x0032528b, 0x615d: 0x0032548b, 0x615e: 0x0032568b, 0x615f: 0x00325a8b,
+	0x6160: 0x00325c8b, 0x6161: 0x0032648b, 0x6162: 0x0032688b, 0x6163: 0x00326a8b,
+	0x6164: 0x00326c8b, 0x6165: 0x0032708b, 0x6166: 0x0032728b, 0x6167: 0x0032768b,
+	0x6168: 0x0032788b, 0x6169: 0x00327a8b, 0x616a: 0x00327c8b, 0x616b: 0x00327e8b,
+	0x616c: 0x0032888b, 0x616d: 0x00326a8b, 0x616e: 0x00328e8b, 0x616f: 0x0032968b,
+	0x6170: 0x0032988b, 0x6171: 0x00329a8b, 0x6172: 0x00329c8b, 0x6173: 0x00329e8b,
+	0x6174: 0x0032a28b, 0x6175: 0x00092485, 0x6176: 0x00325285, 0x6177: 0x00325485,
+	0x6178: 0x00325685, 0x6179: 0x00325a85, 0x617a: 0x00325c85, 0x617b: 0x00326485,
+	0x617c: 0x00326885, 0x617d: 0x00326a85, 0x617e: 0x00326c85, 0x617f: 0x00327085,
+	// Block 0x186, offset 0x6180
+	0x6180: 0x00327285, 0x6181: 0x00327685, 0x6182: 0x00327885, 0x6183: 0x00327a85,
+	0x6184: 0x00327c85, 0x6185: 0x00327e85, 0x6186: 0x00328885, 0x6187: 0x00328e85,
+	0x6188: 0x00328e85, 0x6189: 0x00329685, 0x618a: 0x00329885, 0x618b: 0x00329a85,
+	0x618c: 0x00329c85, 0x618d: 0x00329e85, 0x618e: 0x0032a285, 0x618f: 0x00091c85,
+	0x6190: 0x00325c85, 0x6191: 0x00326a85, 0x6192: 0x00327085, 0x6193: 0x00329a85,
+	0x6194: 0x00328885, 0x6195: 0x00327e85, 0x6196: 0x0032528b, 0x6197: 0x0032548b,
+	0x6198: 0x0032568b, 0x6199: 0x00325a8b, 0x619a: 0x00325c8b, 0x619b: 0x0032648b,
+	0x619c: 0x0032688b, 0x619d: 0x00326a8b, 0x619e: 0x00326c8b, 0x619f: 0x0032708b,
+	0x61a0: 0x0032728b, 0x61a1: 0x0032768b, 0x61a2: 0x0032788b, 0x61a3: 0x00327a8b,
+	0x61a4: 0x00327c8b, 0x61a5: 0x00327e8b, 0x61a6: 0x0032888b, 0x61a7: 0x00326a8b,
+	0x61a8: 0x00328e8b, 0x61a9: 0x0032968b, 0x61aa: 0x0032988b, 0x61ab: 0x00329a8b,
+	0x61ac: 0x00329c8b, 0x61ad: 0x00329e8b, 0x61ae: 0x0032a28b, 0x61af: 0x00092485,
+	0x61b0: 0x00325285, 0x61b1: 0x00325485, 0x61b2: 0x00325685, 0x61b3: 0x00325a85,
+	0x61b4: 0x00325c85, 0x61b5: 0x00326485, 0x61b6: 0x00326885, 0x61b7: 0x00326a85,
+	0x61b8: 0x00326c85, 0x61b9: 0x00327085, 0x61ba: 0x00327285, 0x61bb: 0x00327685,
+	0x61bc: 0x00327885, 0x61bd: 0x00327a85, 0x61be: 0x00327c85, 0x61bf: 0x00327e85,
+	// Block 0x187, offset 0x61c0
+	0x61c0: 0x00328885, 0x61c1: 0x00328e85, 0x61c2: 0x00328e85, 0x61c3: 0x00329685,
+	0x61c4: 0x00329885, 0x61c5: 0x00329a85, 0x61c6: 0x00329c85, 0x61c7: 0x00329e85,
+	0x61c8: 0x0032a285, 0x61c9: 0x00091c85, 0x61ca: 0x00325c85, 0x61cb: 0x00326a85,
+	0x61cc: 0x00327085, 0x61cd: 0x00329a85, 0x61ce: 0x00328885, 0x61cf: 0x00327e85,
+	0x61d0: 0x0032528b, 0x61d1: 0x0032548b, 0x61d2: 0x0032568b, 0x61d3: 0x00325a8b,
+	0x61d4: 0x00325c8b, 0x61d5: 0x0032648b, 0x61d6: 0x0032688b, 0x61d7: 0x00326a8b,
+	0x61d8: 0x00326c8b, 0x61d9: 0x0032708b, 0x61da: 0x0032728b, 0x61db: 0x0032768b,
+	0x61dc: 0x0032788b, 0x61dd: 0x00327a8b, 0x61de: 0x00327c8b, 0x61df: 0x00327e8b,
+	0x61e0: 0x0032888b, 0x61e1: 0x00326a8b, 0x61e2: 0x00328e8b, 0x61e3: 0x0032968b,
+	0x61e4: 0x0032988b, 0x61e5: 0x00329a8b, 0x61e6: 0x00329c8b, 0x61e7: 0x00329e8b,
+	0x61e8: 0x0032a28b, 0x61e9: 0x00092485, 0x61ea: 0x00325285, 0x61eb: 0x00325485,
+	0x61ec: 0x00325685, 0x61ed: 0x00325a85, 0x61ee: 0x00325c85, 0x61ef: 0x00326485,
+	0x61f0: 0x00326885, 0x61f1: 0x00326a85, 0x61f2: 0x00326c85, 0x61f3: 0x00327085,
+	0x61f4: 0x00327285, 0x61f5: 0x00327685, 0x61f6: 0x00327885, 0x61f7: 0x00327a85,
+	0x61f8: 0x00327c85, 0x61f9: 0x00327e85, 0x61fa: 0x00328885, 0x61fb: 0x00328e85,
+	0x61fc: 0x00328e85, 0x61fd: 0x00329685, 0x61fe: 0x00329885, 0x61ff: 0x00329a85,
+	// Block 0x188, offset 0x6200
+	0x6200: 0x00329c85, 0x6201: 0x00329e85, 0x6202: 0x0032a285, 0x6203: 0x00091c85,
+	0x6204: 0x00325c85, 0x6205: 0x00326a85, 0x6206: 0x00327085, 0x6207: 0x00329a85,
+	0x6208: 0x00328885, 0x6209: 0x00327e85, 0x620a: 0x00325e8b, 0x620b: 0x00325e85,
+	0x620e: 0x0029cc85, 0x620f: 0x0029ce85,
+	0x6210: 0x0029d085, 0x6211: 0x0029d285, 0x6212: 0x0029d485, 0x6213: 0x0029d685,
+	0x6214: 0x0029d885, 0x6215: 0x0029da85, 0x6216: 0x0029dc85, 0x6217: 0x0029de85,
+	0x6218: 0x0029cc85, 0x6219: 0x0029ce85, 0x621a: 0x0029d085, 0x621b: 0x0029d285,
+	0x621c: 0x0029d485, 0x621d: 0x0029d685, 0x621e: 0x0029d885, 0x621f: 0x0029da85,
+	0x6220: 0x0029dc85, 0x6221: 0x0029de85, 0x6222: 0x0029cc85, 0x6223: 0x0029ce85,
+	0x6224: 0x0029d085, 0x6225: 0x0029d285, 0x6226: 0x0029d485, 0x6227: 0x0029d685,
+	0x6228: 0x0029d885, 0x6229: 0x0029da85, 0x622a: 0x0029dc85, 0x622b: 0x0029de85,
+	0x622c: 0x0029cc85, 0x622d: 0x0029ce85, 0x622e: 0x0029d085, 0x622f: 0x0029d285,
+	0x6230: 0x0029d485, 0x6231: 0x0029d685, 0x6232: 0x0029d885, 0x6233: 0x0029da85,
+	0x6234: 0x0029dc85, 0x6235: 0x0029de85, 0x6236: 0x0029cc85, 0x6237: 0x0029ce85,
+	0x6238: 0x0029d085, 0x6239: 0x0029d285, 0x623a: 0x0029d485, 0x623b: 0x0029d685,
+	0x623c: 0x0029d885, 0x623d: 0x0029da85, 0x623e: 0x0029dc85, 0x623f: 0x0029de85,
+	// Block 0x189, offset 0x6240
+	0x6240: 0x00393885, 0x6241: 0x00393c85, 0x6242: 0x00396485, 0x6243: 0x00398885,
+	0x6245: 0x003a7485, 0x6246: 0x0039a685, 0x6247: 0x00397285,
+	0x6248: 0x0039e685, 0x6249: 0x003a9085, 0x624a: 0x003a1a85, 0x624b: 0x003a4085,
+	0x624c: 0x003a4e85, 0x624d: 0x003a5685, 0x624e: 0x0039c685, 0x624f: 0x0039ee85,
+	0x6250: 0x0039fc85, 0x6251: 0x0039dc85, 0x6252: 0x003a1285, 0x6253: 0x0039a485,
+	0x6254: 0x0039c885, 0x6255: 0x00395685, 0x6256: 0x00395885, 0x6257: 0x00397485,
+	0x6258: 0x00398a85, 0x6259: 0x0039de85, 0x625a: 0x0039e885, 0x625b: 0x0039f085,
+	0x625c: 0x00393a85, 0x625d: 0x003a5885, 0x625e: 0x0039fe85, 0x625f: 0x003a1085,
+	0x6261: 0x00393c85, 0x6262: 0x00396485,
+	0x6264: 0x003a6885, 0x6267: 0x00397285,
+	0x6269: 0x003a9085, 0x626a: 0x003a1a85, 0x626b: 0x003a4085,
+	0x626c: 0x003a4e85, 0x626d: 0x003a5685, 0x626e: 0x0039c685, 0x626f: 0x0039ee85,
+	0x6270: 0x0039fc85, 0x6271: 0x0039dc85, 0x6272: 0x003a1285,
+	0x6274: 0x0039c885, 0x6275: 0x00395685, 0x6276: 0x00395885, 0x6277: 0x00397485,
+	0x6279: 0x0039de85, 0x627b: 0x0039f085,
+	// Block 0x18a, offset 0x6280
+	0x6282: 0x00396485,
+	0x6287: 0x00397285,
+	0x6289: 0x003a9085, 0x628b: 0x003a4085,
+	0x628d: 0x003a5685, 0x628e: 0x0039c685, 0x628f: 0x0039ee85,
+	0x6291: 0x0039dc85, 0x6292: 0x003a1285,
+	0x6294: 0x0039c885, 0x6297: 0x00397485,
+	0x6299: 0x0039de85, 0x629b: 0x0039f085,
+	0x629d: 0x003a5885, 0x629f: 0x003a1085,
+	0x62a1: 0x00393c85, 0x62a2: 0x00396485,
+	0x62a4: 0x003a6885, 0x62a7: 0x00397285,
+	0x62a8: 0x0039e685, 0x62a9: 0x003a9085, 0x62aa: 0x003a1a85,
+	0x62ac: 0x003a4e85, 0x62ad: 0x003a5685, 0x62ae: 0x0039c685, 0x62af: 0x0039ee85,
+	0x62b0: 0x0039fc85, 0x62b1: 0x0039dc85, 0x62b2: 0x003a1285,
+	0x62b4: 0x0039c885, 0x62b5: 0x00395685, 0x62b6: 0x00395885, 0x62b7: 0x00397485,
+	0x62b9: 0x0039de85, 0x62ba: 0x0039e885, 0x62bb: 0x0039f085,
+	0x62bc: 0x00393a85, 0x62be: 0x0039fe85,
+	// Block 0x18b, offset 0x62c0
+	0x62c0: 0x00393885, 0x62c1: 0x00393c85, 0x62c2: 0x00396485, 0x62c3: 0x00398885,
+	0x62c4: 0x003a6885, 0x62c5: 0x003a7485, 0x62c6: 0x0039a685, 0x62c7: 0x00397285,
+	0x62c8: 0x0039e685, 0x62c9: 0x003a9085, 0x62cb: 0x003a4085,
+	0x62cc: 0x003a4e85, 0x62cd: 0x003a5685, 0x62ce: 0x0039c685, 0x62cf: 0x0039ee85,
+	0x62d0: 0x0039fc85, 0x62d1: 0x0039dc85, 0x62d2: 0x003a1285, 0x62d3: 0x0039a485,
+	0x62d4: 0x0039c885, 0x62d5: 0x00395685, 0x62d6: 0x00395885, 0x62d7: 0x00397485,
+	0x62d8: 0x00398a85, 0x62d9: 0x0039de85, 0x62da: 0x0039e885, 0x62db: 0x0039f085,
+	0x62e1: 0x00393c85, 0x62e2: 0x00396485, 0x62e3: 0x00398885,
+	0x62e5: 0x003a7485, 0x62e6: 0x0039a685, 0x62e7: 0x00397285,
+	0x62e8: 0x0039e685, 0x62e9: 0x003a9085, 0x62eb: 0x003a4085,
+	0x62ec: 0x003a4e85, 0x62ed: 0x003a5685, 0x62ee: 0x0039c685, 0x62ef: 0x0039ee85,
+	0x62f0: 0x0039fc85, 0x62f1: 0x0039dc85, 0x62f2: 0x003a1285, 0x62f3: 0x0039a485,
+	0x62f4: 0x0039c885, 0x62f5: 0x00395685, 0x62f6: 0x00395885, 0x62f7: 0x00397485,
+	0x62f8: 0x00398a85, 0x62f9: 0x0039de85, 0x62fa: 0x0039e885, 0x62fb: 0x0039f085,
+	// Block 0x18c, offset 0x6300
+	0x6330: 0x40070a20, 0x6331: 0x40070c20,
+	// Block 0x18d, offset 0x6340
+	0x6340: 0x401f6e20, 0x6341: 0x401f7020, 0x6342: 0x401f7220, 0x6343: 0x401f7420,
+	0x6344: 0x401f7620, 0x6345: 0x401f7820, 0x6346: 0x401f7a20, 0x6347: 0x401f7c20,
+	0x6348: 0x401f7e20, 0x6349: 0x401f8020, 0x634a: 0x401f8220, 0x634b: 0x401f8420,
+	0x634c: 0x401f8620, 0x634d: 0x401f8820, 0x634e: 0x401f8a20, 0x634f: 0x401f8c20,
+	0x6350: 0x401f8e20, 0x6351: 0x401f9020, 0x6352: 0x401f9220, 0x6353: 0x401f9420,
+	0x6354: 0x401f9620, 0x6355: 0x401f9820, 0x6356: 0x401f9a20, 0x6357: 0x401f9c20,
+	0x6358: 0x401f9e20, 0x6359: 0x401fa020, 0x635a: 0x401fa220, 0x635b: 0x401fa420,
+	0x635c: 0x401fa620, 0x635d: 0x401fa820, 0x635e: 0x401faa20, 0x635f: 0x401fac20,
+	0x6360: 0x401fae20, 0x6361: 0x401fb020, 0x6362: 0x401fb220, 0x6363: 0x401fb420,
+	0x6364: 0x401fb620, 0x6365: 0x401fb820, 0x6366: 0x401fba20, 0x6367: 0x401fbc20,
+	0x6368: 0x401fbe20, 0x6369: 0x401fc020, 0x636a: 0x401fc220, 0x636b: 0x401fc420,
+	0x6370: 0x401fc620, 0x6371: 0x401fc820, 0x6372: 0x401fca20, 0x6373: 0x401fcc20,
+	0x6374: 0x401fce20, 0x6375: 0x401fd020, 0x6376: 0x401fd220, 0x6377: 0x401fd420,
+	0x6378: 0x401fd620, 0x6379: 0x401fd820, 0x637a: 0x401fda20, 0x637b: 0x401fdc20,
+	0x637c: 0x401fde20, 0x637d: 0x401fe020, 0x637e: 0x401fe220, 0x637f: 0x401fe420,
+	// Block 0x18e, offset 0x6380
+	0x6380: 0x401fe620, 0x6381: 0x401fe820, 0x6382: 0x401fea20, 0x6383: 0x401fec20,
+	0x6384: 0x401fee20, 0x6385: 0x401ff020, 0x6386: 0x401ff220, 0x6387: 0x401ff420,
+	0x6388: 0x401ff620, 0x6389: 0x401ff820, 0x638a: 0x401ffa20, 0x638b: 0x401ffc20,
+	0x638c: 0x401ffe20, 0x638d: 0x40200020, 0x638e: 0x40200220, 0x638f: 0x40200420,
+	0x6390: 0x40200620, 0x6391: 0x40200820, 0x6392: 0x40200a20, 0x6393: 0x40200c20,
+	0x6394: 0x40200e20, 0x6395: 0x40201020, 0x6396: 0x40201220, 0x6397: 0x40201420,
+	0x6398: 0x40201620, 0x6399: 0x40201820, 0x639a: 0x40201a20, 0x639b: 0x40201c20,
+	0x639c: 0x40201e20, 0x639d: 0x40202020, 0x639e: 0x40202220, 0x639f: 0x40202420,
+	0x63a0: 0x40202620, 0x63a1: 0x40202820, 0x63a2: 0x40202a20, 0x63a3: 0x40202c20,
+	0x63a4: 0x40202e20, 0x63a5: 0x40203020, 0x63a6: 0x40203220, 0x63a7: 0x40203420,
+	0x63a8: 0x40203620, 0x63a9: 0x40203820, 0x63aa: 0x40203a20, 0x63ab: 0x40203c20,
+	0x63ac: 0x40203e20, 0x63ad: 0x40204020, 0x63ae: 0x40204220, 0x63af: 0x40204420,
+	0x63b0: 0x40204620, 0x63b1: 0x40204820, 0x63b2: 0x40204a20, 0x63b3: 0x40204c20,
+	0x63b4: 0x40204e20, 0x63b5: 0x40205020, 0x63b6: 0x40205220, 0x63b7: 0x40205420,
+	0x63b8: 0x40205620, 0x63b9: 0x40205820, 0x63ba: 0x40205a20, 0x63bb: 0x40205c20,
+	0x63bc: 0x40205e20, 0x63bd: 0x40206020, 0x63be: 0x40206220, 0x63bf: 0x40206420,
+	// Block 0x18f, offset 0x63c0
+	0x63c0: 0x40206620, 0x63c1: 0x40206820, 0x63c2: 0x40206a20, 0x63c3: 0x40206c20,
+	0x63c4: 0x40206e20, 0x63c5: 0x40207020, 0x63c6: 0x40207220, 0x63c7: 0x40207420,
+	0x63c8: 0x40207620, 0x63c9: 0x40207820, 0x63ca: 0x40207a20, 0x63cb: 0x40207c20,
+	0x63cc: 0x40207e20, 0x63cd: 0x40208020, 0x63ce: 0x40208220, 0x63cf: 0x40208420,
+	0x63d0: 0x40208620, 0x63d1: 0x40208820, 0x63d2: 0x40208a20, 0x63d3: 0x40208c20,
+	0x63e0: 0x40208e20, 0x63e1: 0x40209020, 0x63e2: 0x40209220, 0x63e3: 0x40209420,
+	0x63e4: 0x40209620, 0x63e5: 0x40209820, 0x63e6: 0x40209a20, 0x63e7: 0x40209c20,
+	0x63e8: 0x40209e20, 0x63e9: 0x4020a020, 0x63ea: 0x4020a220, 0x63eb: 0x4020a420,
+	0x63ec: 0x4020a620, 0x63ed: 0x4020a820, 0x63ee: 0x4020aa20,
+	0x63f1: 0x4020ac20, 0x63f2: 0x4020ae20, 0x63f3: 0x4020b020,
+	0x63f4: 0x4020b220, 0x63f5: 0x4020b420, 0x63f6: 0x4020b620, 0x63f7: 0x4020b820,
+	0x63f8: 0x4020ba20, 0x63f9: 0x4020bc20, 0x63fa: 0x4020be20, 0x63fb: 0x4020c020,
+	0x63fc: 0x4020c220, 0x63fd: 0x4020c420, 0x63fe: 0x4020c620,
+	// Block 0x190, offset 0x6400
+	0x6401: 0x4020c820, 0x6402: 0x4020ca20, 0x6403: 0x4020cc20,
+	0x6404: 0x4020ce20, 0x6405: 0x4020d020, 0x6406: 0x4020d220, 0x6407: 0x4020d420,
+	0x6408: 0x4020d620, 0x6409: 0x4020d820, 0x640a: 0x4020da20, 0x640b: 0x4020dc20,
+	0x640c: 0x4020de20, 0x640d: 0x4020e020, 0x640e: 0x4020e220, 0x640f: 0x4020e420,
+	0x6411: 0x4020e620, 0x6412: 0x4020e820, 0x6413: 0x4020ea20,
+	0x6414: 0x4020ec20, 0x6415: 0x4020ee20, 0x6416: 0x4020f020, 0x6417: 0x4020f220,
+	0x6418: 0x4020f420, 0x6419: 0x4020f620, 0x641a: 0x4020f820, 0x641b: 0x4020fa20,
+	0x641c: 0x4020fc20, 0x641d: 0x4020fe20, 0x641e: 0x40210020, 0x641f: 0x40210220,
+	// Block 0x191, offset 0x6440
+	0x6440: 0xf0001f04, 0x6441: 0xf0001f04, 0x6442: 0xf0001f04, 0x6443: 0xf0001f04,
+	0x6444: 0xf0001f04, 0x6445: 0xf0001f04, 0x6446: 0xf0001f04, 0x6447: 0xf0001f04,
+	0x6448: 0xf0001f04, 0x6449: 0xf0001f04, 0x644a: 0xf0001f04,
+	0x6450: 0xf0000a04, 0x6451: 0xf0000a04, 0x6452: 0xf0000a04, 0x6453: 0xf0000a04,
+	0x6454: 0xf0000a04, 0x6455: 0xf0000a04, 0x6456: 0xf0000a04, 0x6457: 0xf0000a04,
+	0x6458: 0xf0000a04, 0x6459: 0xf0000a04, 0x645a: 0xf0000a04, 0x645b: 0xf0000a04,
+	0x645c: 0xf0000a04, 0x645d: 0xf0000a04, 0x645e: 0xf0000a04, 0x645f: 0xf0000a04,
+	0x6460: 0xf0000a04, 0x6461: 0xf0000a04, 0x6462: 0xf0000a04, 0x6463: 0xf0000a04,
+	0x6464: 0xf0000a04, 0x6465: 0xf0000a04, 0x6466: 0xf0000a04, 0x6467: 0xf0000a04,
+	0x6468: 0xf0000a04, 0x6469: 0xf0000a04, 0x646a: 0xf0000a04, 0x646b: 0x002c3a8c,
+	0x646c: 0x002f7a8c, 0x646d: 0xf0000c0c, 0x646e: 0xf0000c0c,
+	0x6470: 0x002bde9d, 0x6471: 0x002c0a9d, 0x6472: 0x002c3a9d, 0x6473: 0x002c629d,
+	0x6474: 0x002c989d, 0x6475: 0x002d089d, 0x6476: 0x002d229d, 0x6477: 0x002d689d,
+	0x6478: 0x002d9a9d, 0x6479: 0x002dcc9d, 0x647a: 0x002dfe9d, 0x647b: 0x002e229d,
+	0x647c: 0x002e829d, 0x647d: 0x002e9e9d, 0x647e: 0x002ee29d, 0x647f: 0x002f2c9d,
+	// Block 0x192, offset 0x6480
+	0x6480: 0x002f569d, 0x6481: 0x002f7a9d, 0x6482: 0x002fe69d, 0x6483: 0x00302c9d,
+	0x6484: 0x00306c9d, 0x6485: 0x0030be9d, 0x6486: 0x0030e29d, 0x6487: 0x0030f69d,
+	0x6488: 0x0031009d, 0x6489: 0x00312a9d, 0x648a: 0xf0001d1d, 0x648b: 0xf0001d1d,
+	0x648c: 0xf0001d1d, 0x648d: 0xf0001d1d, 0x648e: 0xe0000ebc, 0x648f: 0xf0001d1d,
+	0x6490: 0x002bde8c, 0x6491: 0x002c0a8c, 0x6492: 0x002c3a8c, 0x6493: 0x002c628c,
+	0x6494: 0x002c988c, 0x6495: 0x002d088c, 0x6496: 0x002d228c, 0x6497: 0x002d688c,
+	0x6498: 0x002d9a8c, 0x6499: 0x002dcc8c, 0x649a: 0x002dfe8c, 0x649b: 0x002e228c,
+	0x649c: 0x002e828c, 0x649d: 0x002e9e8c, 0x649e: 0x002ee28c, 0x649f: 0x002f2c8c,
+	0x64a0: 0x002f568c, 0x64a1: 0x002f7a8c, 0x64a2: 0x002fe68c, 0x64a3: 0x00302c8c,
+	0x64a4: 0x00306c8c, 0x64a5: 0x0030be8c, 0x64a6: 0x0030e28c, 0x64a7: 0x0030f68c,
+	0x64a8: 0x0031008c, 0x64a9: 0x00312a8c, 0x64aa: 0xf0001414, 0x64ab: 0xf0001414,
+	0x64b0: 0x002bde9d, 0x64b1: 0x002c0a9d, 0x64b2: 0x002c3a9d, 0x64b3: 0x002c629d,
+	0x64b4: 0x002c989d, 0x64b5: 0x002d089d, 0x64b6: 0x002d229d, 0x64b7: 0x002d689d,
+	0x64b8: 0x002d9a9d, 0x64b9: 0x002dcc9d, 0x64ba: 0x002dfe9d, 0x64bb: 0x002e229d,
+	0x64bc: 0x002e829d, 0x64bd: 0x002e9e9d, 0x64be: 0x002ee29d, 0x64bf: 0x002f2c9d,
+	// Block 0x193, offset 0x64c0
+	0x64c0: 0x002f569d, 0x64c1: 0x002f7a9d, 0x64c2: 0x002fe69d, 0x64c3: 0x00302c9d,
+	0x64c4: 0x00306c9d, 0x64c5: 0x0030be9d, 0x64c6: 0x0030e29d, 0x64c7: 0x0030f69d,
+	0x64c8: 0x0031009d, 0x64c9: 0x00312a9d, 0x64ca: 0x002f2c9d, 0x64cb: 0xe0000c81,
+	0x64cc: 0xe0000eb5, 0x64cd: 0xe0000f74, 0x64ce: 0xe00009d2, 0x64cf: 0xe00010f0,
+	0x64d0: 0xf0001d1d, 0x64d1: 0xe0000a6f, 0x64d2: 0xe0000a7e, 0x64d3: 0xe0000ba4,
+	0x64d4: 0xe0000c84, 0x64d5: 0xe0000d8a, 0x64d6: 0xe0000d8e, 0x64d7: 0xe0000e9b,
+	0x64d8: 0xe0000f77, 0x64d9: 0xe00010a2, 0x64da: 0xe00010c0,
+	// Block 0x194, offset 0x6500
+	0x6526: 0x40110c20, 0x6527: 0x40110e20,
+	0x6528: 0x40111020, 0x6529: 0x40111220, 0x652a: 0x40111420, 0x652b: 0x40111620,
+	0x652c: 0x40111820, 0x652d: 0x40111a20, 0x652e: 0x40111c20, 0x652f: 0x40111e20,
+	0x6530: 0x40112020, 0x6531: 0x40112220, 0x6532: 0x40112420, 0x6533: 0x40112620,
+	0x6534: 0x40112820, 0x6535: 0x40112a20, 0x6536: 0x40112c20, 0x6537: 0x40112e20,
+	0x6538: 0x40113020, 0x6539: 0x40113220, 0x653a: 0x40113420, 0x653b: 0x40113620,
+	0x653c: 0x40113820, 0x653d: 0x40113a20, 0x653e: 0x40113c20, 0x653f: 0x40113e20,
+	// Block 0x195, offset 0x6540
+	0x6540: 0xf0001c1c, 0x6541: 0xf0001c1c, 0x6542: 0x00658c9c,
+	0x6550: 0x02c4969c, 0x6551: 0x02b6ae9c, 0x6552: 0x02a7989c, 0x6553: 0xf0001c1c,
+	0x6554: 0x029d189c, 0x6555: 0x02b2349c, 0x6556: 0x0313c69c, 0x6557: 0x02b2529c,
+	0x6558: 0x029d489c, 0x6559: 0x02cc409c, 0x655a: 0x02e2429c, 0x655b: 0x02cb329c,
+	0x655c: 0x02a49a9c, 0x655d: 0x02bf189c, 0x655e: 0x02a31a9c, 0x655f: 0x02cb609c,
+	0x6560: 0x02a43a9c, 0x6561: 0x02fa849c, 0x6562: 0x02ea3e9c, 0x6563: 0x0319529c,
+	0x6564: 0x02b1e09c, 0x6565: 0x02a8729c, 0x6566: 0x02de289c, 0x6567: 0x02c52a9c,
+	0x6568: 0x02c6aa9c, 0x6569: 0x029c009c, 0x656a: 0x029c129c, 0x656b: 0x0320949c,
+	0x656c: 0x02bbcc9c, 0x656d: 0x029c5a9c, 0x656e: 0x02a7e69c, 0x656f: 0x02c60e9c,
+	0x6570: 0x031ae09c, 0x6571: 0x02c4a69c, 0x6572: 0x02f3029c, 0x6573: 0x02f4f49c,
+	0x6574: 0x02a8109c, 0x6575: 0x02dd009c, 0x6576: 0x02ce129c, 0x6577: 0x02ce109c,
+	0x6578: 0x02ea669c, 0x6579: 0x02a4e49c, 0x657a: 0x02ab6c9c,
+	// Block 0x196, offset 0x6580
+	0x6580: 0xf0000404, 0x6581: 0xf0000404, 0x6582: 0xf0000404, 0x6583: 0xf0000404,
+	0x6584: 0xf0000404, 0x6585: 0xf0000404, 0x6586: 0xf0000404, 0x6587: 0xf0000404,
+	0x6588: 0xf0000404,
+	0x6590: 0x02bf2e86, 0x6591: 0x02a7de86,
+	// Block 0x197, offset 0x65c0
+	0x65c0: 0x40210420, 0x65c1: 0x40210620, 0x65c2: 0x40210820, 0x65c3: 0x40210a20,
+	0x65c4: 0x40210c20, 0x65c5: 0x40210e20, 0x65c6: 0x40211020, 0x65c7: 0x40211220,
+	0x65c8: 0x40211420, 0x65c9: 0x40211620, 0x65ca: 0x40211820, 0x65cb: 0x40211a20,
+	0x65cc: 0x40211c20, 0x65cd: 0x40211e20, 0x65ce: 0x40212020, 0x65cf: 0x40212220,
+	0x65d0: 0x40212420, 0x65d1: 0x40212620, 0x65d2: 0x40212820, 0x65d3: 0x40212a20,
+	0x65d4: 0x40212c20, 0x65d5: 0x40212e20, 0x65d6: 0x40213020, 0x65d7: 0x40213220,
+	0x65d8: 0x40213420, 0x65d9: 0x40213620, 0x65da: 0x40213820, 0x65db: 0x40213a20,
+	0x65dc: 0x40213c20, 0x65dd: 0x40213e20, 0x65de: 0x40214020, 0x65df: 0x40214220,
+	0x65e0: 0x40214420,
+	0x65f0: 0x40214620, 0x65f1: 0x40214820, 0x65f2: 0x40214a20, 0x65f3: 0x40214c20,
+	0x65f4: 0x40214e20, 0x65f5: 0x40215020, 0x65f7: 0x40215220,
+	0x65f8: 0x40215420, 0x65f9: 0x40215620, 0x65fa: 0x40215820, 0x65fb: 0x40215a20,
+	0x65fc: 0x40215c20, 0x65fd: 0x40215e20, 0x65fe: 0x40216020, 0x65ff: 0x40216220,
+	// Block 0x198, offset 0x6600
+	0x6600: 0x40216420, 0x6601: 0x40216620, 0x6602: 0x40216820, 0x6603: 0x40216a20,
+	0x6604: 0x40216c20, 0x6605: 0x40216e20, 0x6606: 0x40217020, 0x6607: 0x40217220,
+	0x6608: 0x40217420, 0x6609: 0x40217620, 0x660a: 0x40217820, 0x660b: 0x40217a20,
+	0x660c: 0x40217c20, 0x660d: 0x40217e20, 0x660e: 0x40218020, 0x660f: 0x40218220,
+	0x6610: 0x40218420, 0x6611: 0x40218620, 0x6612: 0x40218820, 0x6613: 0x40218a20,
+	0x6614: 0x40218c20, 0x6615: 0x40218e20, 0x6616: 0x40219020, 0x6617: 0x40219220,
+	0x6618: 0x40219420, 0x6619: 0x40219620, 0x661a: 0x40219820, 0x661b: 0x40219a20,
+	0x661c: 0x40219c20, 0x661d: 0x40219e20, 0x661e: 0x4021a020, 0x661f: 0x4021a220,
+	0x6620: 0x4021a420, 0x6621: 0x4021a620, 0x6622: 0x4021a820, 0x6623: 0x4021aa20,
+	0x6624: 0x4021ac20, 0x6625: 0x4021ae20, 0x6626: 0x4021b020, 0x6627: 0x4021b220,
+	0x6628: 0x4021b420, 0x6629: 0x4021b620, 0x662a: 0x4021b820, 0x662b: 0x4021ba20,
+	0x662c: 0x4021bc20, 0x662d: 0x4021be20, 0x662e: 0x4021c020, 0x662f: 0x4021c220,
+	0x6630: 0x4021c420, 0x6631: 0x4021c620, 0x6632: 0x4021c820, 0x6633: 0x4021ca20,
+	0x6634: 0x4021cc20, 0x6635: 0x4021ce20, 0x6636: 0x4021d020, 0x6637: 0x4021d220,
+	0x6638: 0x4021d420, 0x6639: 0x4021d620, 0x663a: 0x4021d820, 0x663b: 0x4021da20,
+	0x663c: 0x4021dc20,
+	// Block 0x199, offset 0x6640
+	0x6640: 0x4021de20, 0x6641: 0x4021e020, 0x6642: 0x4021e220, 0x6643: 0x4021e420,
+	0x6644: 0x4021e620, 0x6645: 0x4021e820, 0x6646: 0x4021ea20, 0x6647: 0x4021ec20,
+	0x6648: 0x4021ee20, 0x6649: 0x4021f020, 0x664a: 0x4021f220, 0x664b: 0x4021f420,
+	0x664c: 0x4021f620, 0x664d: 0x4021f820, 0x664e: 0x4021fa20, 0x664f: 0x4021fc20,
+	0x6650: 0x4021fe20, 0x6651: 0x40220020, 0x6652: 0x40220220, 0x6653: 0x40220420,
+	0x6660: 0x40220620, 0x6661: 0x40220820, 0x6662: 0x40220a20, 0x6663: 0x40220c20,
+	0x6664: 0x40220e20, 0x6665: 0x40221020, 0x6666: 0x40221220, 0x6667: 0x40221420,
+	0x6668: 0x40221620, 0x6669: 0x40221820, 0x666a: 0x40221a20, 0x666b: 0x40221c20,
+	0x666c: 0x40221e20, 0x666d: 0x40222020, 0x666e: 0x40222220, 0x666f: 0x40222420,
+	0x6670: 0x40222620, 0x6671: 0x40222820, 0x6672: 0x40222a20, 0x6673: 0x40222c20,
+	0x6674: 0x40222e20, 0x6675: 0x40223020, 0x6676: 0x40223220, 0x6677: 0x40223420,
+	0x6678: 0x40223620, 0x6679: 0x40223820, 0x667a: 0x40223a20, 0x667b: 0x40223c20,
+	0x667c: 0x40223e20, 0x667d: 0x40224020, 0x667e: 0x40224220, 0x667f: 0x40224420,
+	// Block 0x19a, offset 0x6680
+	0x6680: 0x40224620, 0x6681: 0x40224820, 0x6682: 0x40224a20, 0x6683: 0x40224c20,
+	0x6684: 0x40224e20, 0x6686: 0x40225020, 0x6687: 0x40225220,
+	0x6688: 0x40225420, 0x6689: 0x40225620, 0x668a: 0x40225820,
+	0x66a0: 0x40225a20, 0x66a1: 0x40225c20, 0x66a2: 0x40225e20, 0x66a3: 0x40226020,
+	0x66a4: 0x40226220, 0x66a5: 0x40226420, 0x66a6: 0x40226620, 0x66a7: 0x40226820,
+	0x66a8: 0x40226a20, 0x66a9: 0x40226c20, 0x66aa: 0x40226e20, 0x66ab: 0x40227020,
+	0x66ac: 0x40227220, 0x66ad: 0x40227420, 0x66ae: 0x40227620, 0x66af: 0x40227820,
+	0x66b0: 0x40227a20,
+	// Block 0x19b, offset 0x66c0
+	0x66c0: 0x40227c20, 0x66c1: 0x40227e20, 0x66c2: 0x40228020, 0x66c3: 0x40228220,
+	0x66c4: 0x40228420, 0x66c5: 0x40228620, 0x66c6: 0x40228820, 0x66c7: 0x40228a20,
+	0x66c8: 0x40228c20, 0x66c9: 0x40228e20, 0x66ca: 0x40229020, 0x66cb: 0x40229220,
+	0x66cc: 0x40229420, 0x66cd: 0x40229620, 0x66ce: 0x40229820, 0x66cf: 0x40229a20,
+	0x66d0: 0x40229c20, 0x66d1: 0x40229e20, 0x66d2: 0x4022a020, 0x66d3: 0x4022a220,
+	0x66d4: 0x4022a420, 0x66d5: 0x4022a620, 0x66d6: 0x4022a820, 0x66d7: 0x4022aa20,
+	0x66d8: 0x4022ac20, 0x66d9: 0x4022ae20, 0x66da: 0x4022b020, 0x66db: 0x4022b220,
+	0x66dc: 0x4022b420, 0x66dd: 0x4022b620, 0x66de: 0x4022b820, 0x66df: 0x4022ba20,
+	0x66e0: 0x4022bc20, 0x66e1: 0x4022be20, 0x66e2: 0x4022c020, 0x66e3: 0x4022c220,
+	0x66e4: 0x4022c420, 0x66e5: 0x4022c620, 0x66e6: 0x4022c820, 0x66e7: 0x4022ca20,
+	0x66e8: 0x4022cc20, 0x66e9: 0x4022ce20, 0x66ea: 0x4022d020, 0x66eb: 0x4022d220,
+	0x66ec: 0x4022d420, 0x66ed: 0x4022d620, 0x66ee: 0x4022d820, 0x66ef: 0x4022da20,
+	0x66f0: 0x4022dc20, 0x66f1: 0x4022de20, 0x66f2: 0x4022e020, 0x66f3: 0x4022e220,
+	0x66f4: 0x4022e420, 0x66f5: 0x4022e620, 0x66f6: 0x4022e820, 0x66f7: 0x4022ea20,
+	0x66f8: 0x4022ec20, 0x66f9: 0x4022ee20, 0x66fa: 0x4022f020, 0x66fb: 0x4022f220,
+	0x66fc: 0x4022f420, 0x66fd: 0x4022f620, 0x66fe: 0x4022f820,
+	// Block 0x19c, offset 0x6700
+	0x6700: 0x4022fa20, 0x6702: 0x4022fc20, 0x6703: 0x4022fe20,
+	0x6704: 0x40230020, 0x6705: 0x40230220, 0x6706: 0x40230420, 0x6707: 0x40230620,
+	0x6708: 0x40230820, 0x6709: 0x40230a20, 0x670a: 0x40230c20, 0x670b: 0x40230e20,
+	0x670c: 0x40231020, 0x670d: 0x40231220, 0x670e: 0x40231420, 0x670f: 0x40231620,
+	0x6710: 0x40231820, 0x6711: 0x40231a20, 0x6712: 0x40231c20, 0x6713: 0x40231e20,
+	0x6714: 0x40232020, 0x6715: 0x40232220, 0x6716: 0x40232420, 0x6717: 0x40232620,
+	0x6718: 0x40232820, 0x6719: 0x40232a20, 0x671a: 0x40232c20, 0x671b: 0x40232e20,
+	0x671c: 0x40233020, 0x671d: 0x40233220, 0x671e: 0x40233420, 0x671f: 0x40233620,
+	0x6720: 0x40233820, 0x6721: 0x40233a20, 0x6722: 0x40233c20, 0x6723: 0x40233e20,
+	0x6724: 0x40234020, 0x6725: 0x40234220, 0x6726: 0x40234420, 0x6727: 0x40234620,
+	0x6728: 0x40234820, 0x6729: 0x40234a20, 0x672a: 0x40234c20, 0x672b: 0x40234e20,
+	0x672c: 0x40235020, 0x672d: 0x40235220, 0x672e: 0x40235420, 0x672f: 0x40235620,
+	0x6730: 0x40235820, 0x6731: 0x40235a20, 0x6732: 0x40235c20, 0x6733: 0x40235e20,
+	0x6734: 0x40236020, 0x6735: 0x40236220, 0x6736: 0x40236420, 0x6737: 0x40236620,
+	0x6738: 0x40236820, 0x6739: 0x40236a20, 0x673a: 0x40236c20, 0x673b: 0x40236e20,
+	0x673c: 0x40237020, 0x673d: 0x40237220, 0x673e: 0x40237420, 0x673f: 0x40237620,
+	// Block 0x19d, offset 0x6740
+	0x6740: 0x40237820, 0x6741: 0x40237a20, 0x6742: 0x40237c20, 0x6743: 0x40237e20,
+	0x6744: 0x40238020, 0x6745: 0x40238220, 0x6746: 0x40238420, 0x6747: 0x40238620,
+	0x6748: 0x40238820, 0x6749: 0x40238a20, 0x674a: 0x40238c20, 0x674b: 0x40238e20,
+	0x674c: 0x40239020, 0x674d: 0x40239220, 0x674e: 0x40239420, 0x674f: 0x40239620,
+	0x6750: 0x40239820, 0x6751: 0x40239a20, 0x6752: 0x40239c20, 0x6753: 0x40239e20,
+	0x6754: 0x4023a020, 0x6755: 0x4023a220, 0x6756: 0x4023a420, 0x6757: 0x4023a620,
+	0x6758: 0x4023a820, 0x6759: 0x4023aa20, 0x675a: 0x4023ac20, 0x675b: 0x4023ae20,
+	0x675c: 0x4023b020, 0x675d: 0x4023b220, 0x675e: 0x4023b420, 0x675f: 0x4023b620,
+	0x6760: 0x4023b820, 0x6761: 0x4023ba20, 0x6762: 0x4023bc20, 0x6763: 0x4023be20,
+	0x6764: 0x4023c020, 0x6765: 0x4023c220, 0x6766: 0x4023c420, 0x6767: 0x4023c620,
+	0x6768: 0x4023c820, 0x6769: 0x4023ca20, 0x676a: 0x4023cc20, 0x676b: 0x4023ce20,
+	0x676c: 0x4023d020, 0x676d: 0x4023d220, 0x676e: 0x4023d420, 0x676f: 0x4023d620,
+	0x6770: 0x4023d820, 0x6771: 0x4023da20, 0x6772: 0x4023dc20, 0x6773: 0x4023de20,
+	0x6774: 0x4023e020, 0x6775: 0x4023e220, 0x6776: 0x4023e420, 0x6777: 0x4023e620,
+	0x6778: 0x4023e820, 0x6779: 0x4023ea20, 0x677a: 0x4023ec20, 0x677b: 0x4023ee20,
+	0x677c: 0x4023f020, 0x677d: 0x4023f220, 0x677e: 0x4023f420, 0x677f: 0x4023f620,
+	// Block 0x19e, offset 0x6780
+	0x6780: 0x4023f820, 0x6781: 0x4023fa20, 0x6782: 0x4023fc20, 0x6783: 0x4023fe20,
+	0x6784: 0x40240020, 0x6785: 0x40240220, 0x6786: 0x40240420, 0x6787: 0x40240620,
+	0x6788: 0x40240820, 0x6789: 0x40240a20, 0x678a: 0x40240c20, 0x678b: 0x40240e20,
+	0x678c: 0x40241020, 0x678d: 0x40241220, 0x678e: 0x40241420, 0x678f: 0x40241620,
+	0x6790: 0x40241820, 0x6791: 0x40241a20, 0x6792: 0x40241c20, 0x6793: 0x40241e20,
+	0x6794: 0x40242020, 0x6795: 0x40242220, 0x6796: 0x40242420, 0x6797: 0x40242620,
+	0x6798: 0x40242820, 0x6799: 0x40242a20, 0x679a: 0x40242c20, 0x679b: 0x40242e20,
+	0x679c: 0x40243020, 0x679d: 0x40243220, 0x679e: 0x40243420, 0x679f: 0x40243620,
+	0x67a0: 0x40243820, 0x67a1: 0x40243a20, 0x67a2: 0x40243c20, 0x67a3: 0x40243e20,
+	0x67a4: 0x40244020, 0x67a5: 0x40244220, 0x67a6: 0x40244420, 0x67a7: 0x40244620,
+	0x67a8: 0x40244820, 0x67a9: 0x40244a20, 0x67aa: 0x40244c20, 0x67ab: 0x40244e20,
+	0x67ac: 0x40245020, 0x67ad: 0x40245220, 0x67ae: 0x40245420, 0x67af: 0x40245620,
+	0x67b0: 0x40245820, 0x67b1: 0x40245a20, 0x67b2: 0x40245c20, 0x67b3: 0x40245e20,
+	0x67b4: 0x40246020, 0x67b5: 0x40246220, 0x67b6: 0x40246420, 0x67b7: 0x40246620,
+	0x67b9: 0x40246820, 0x67ba: 0x40246a20, 0x67bb: 0x40246c20,
+	0x67bc: 0x40246e20,
+	// Block 0x19f, offset 0x67c0
+	0x67c0: 0x40247020, 0x67c1: 0x40247220, 0x67c2: 0x40247420, 0x67c3: 0x40247620,
+	0x67c4: 0x40247820, 0x67c5: 0x40247a20, 0x67c6: 0x40247c20, 0x67c7: 0x40247e20,
+	0x67c8: 0x40248020, 0x67c9: 0x40248220, 0x67ca: 0x40248420, 0x67cb: 0x40248620,
+	0x67cc: 0x40248820, 0x67cd: 0x40248a20, 0x67ce: 0x40248c20, 0x67cf: 0x40248e20,
+	0x67d0: 0x40249020, 0x67d1: 0x40249220, 0x67d2: 0x40249420, 0x67d3: 0x40249620,
+	0x67d4: 0x40249820, 0x67d5: 0x40249a20, 0x67d6: 0x40249c20, 0x67d7: 0x40249e20,
+	0x67d8: 0x4024a020, 0x67d9: 0x4024a220, 0x67da: 0x4024a420, 0x67db: 0x4024a620,
+	0x67dc: 0x4024a820, 0x67dd: 0x4024aa20, 0x67de: 0x4024ac20, 0x67df: 0x4024ae20,
+	0x67e0: 0x4024b020, 0x67e1: 0x4024b220, 0x67e2: 0x4024b420, 0x67e3: 0x4024b620,
+	0x67e4: 0x4024b820, 0x67e5: 0x4024ba20, 0x67e6: 0x4024bc20, 0x67e7: 0x4024be20,
+	0x67e8: 0x4024c020, 0x67e9: 0x4024c220, 0x67ea: 0x4024c420, 0x67eb: 0x4024c620,
+	0x67ec: 0x4024c820, 0x67ed: 0x4024ca20, 0x67ee: 0x4024cc20, 0x67ef: 0x4024ce20,
+	0x67f0: 0x4024d020, 0x67f1: 0x4024d220, 0x67f2: 0x4024d420, 0x67f3: 0x4024d620,
+	0x67f4: 0x4024d820, 0x67f5: 0x4024da20, 0x67f6: 0x4024dc20, 0x67f7: 0x4024de20,
+	0x67f8: 0x4024e020, 0x67f9: 0x4024e220, 0x67fa: 0x4024e420, 0x67fb: 0x4024e620,
+	0x67fc: 0x4024e820, 0x67fd: 0x4024ea20,
+	// Block 0x1a0, offset 0x6800
+	0x6800: 0x4024ec20, 0x6801: 0x4024ee20, 0x6802: 0x4024f020, 0x6803: 0x4024f220,
+	0x6810: 0x4024f420, 0x6811: 0x4024f620, 0x6812: 0x4024f820, 0x6813: 0x4024fa20,
+	0x6814: 0x4024fc20, 0x6815: 0x4024fe20, 0x6816: 0x40250020, 0x6817: 0x40250220,
+	0x6818: 0x40250420, 0x6819: 0x40250620, 0x681a: 0x40250820, 0x681b: 0x40250a20,
+	0x681c: 0x40250c20, 0x681d: 0x40250e20, 0x681e: 0x40251020, 0x681f: 0x40251220,
+	0x6820: 0x40251420, 0x6821: 0x40251620, 0x6822: 0x40251820, 0x6823: 0x40251a20,
+	0x6824: 0x40251c20, 0x6825: 0x40251e20, 0x6826: 0x40252020, 0x6827: 0x40252220,
+	// Block 0x1a1, offset 0x6840
+	0x687b: 0x40252420,
+	0x687c: 0x40252620, 0x687d: 0x40252820, 0x687e: 0x40252a20, 0x687f: 0x40252c20,
+	// Block 0x1a2, offset 0x6880
+	0x6880: 0x40252e20, 0x6881: 0x40253020, 0x6882: 0x40253220, 0x6883: 0x40253420,
+	0x6884: 0x40253620, 0x6885: 0x40253820, 0x6886: 0x40253a20, 0x6887: 0x40253c20,
+	0x6888: 0x40253e20, 0x6889: 0x40254020, 0x688a: 0x40254220, 0x688b: 0x40254420,
+	0x688c: 0x40254620, 0x688d: 0x40254820, 0x688e: 0x40254a20, 0x688f: 0x40254c20,
+	0x6890: 0x40254e20, 0x6891: 0x40255020, 0x6892: 0x40255220, 0x6893: 0x40255420,
+	0x6894: 0x40255620, 0x6895: 0x40255820, 0x6896: 0x40255a20, 0x6897: 0x40255c20,
+	0x6898: 0x40255e20, 0x6899: 0x40256020, 0x689a: 0x40256220, 0x689b: 0x40256420,
+	0x689c: 0x40256620, 0x689d: 0x40256820, 0x689e: 0x40256a20, 0x689f: 0x40256c20,
+	0x68a0: 0x40256e20, 0x68a1: 0x40257020, 0x68a2: 0x40257220, 0x68a3: 0x40257420,
+	0x68a4: 0x40257620, 0x68a5: 0x40257820, 0x68a6: 0x40257a20, 0x68a7: 0x40257c20,
+	0x68a8: 0x40257e20, 0x68a9: 0x40258020, 0x68aa: 0x40258220, 0x68ab: 0x40258420,
+	0x68ac: 0x40258620, 0x68ad: 0x40258820, 0x68ae: 0x40258a20, 0x68af: 0x40258c20,
+	0x68b0: 0x40258e20, 0x68b1: 0x40259020, 0x68b2: 0x40259220, 0x68b3: 0x40259420,
+	0x68b4: 0x40259620, 0x68b5: 0x40259820, 0x68b6: 0x40259a20, 0x68b7: 0x40259c20,
+	0x68b8: 0x40259e20, 0x68b9: 0x4025a020, 0x68ba: 0x4025a220, 0x68bb: 0x4025a420,
+	0x68bc: 0x4025a620, 0x68bd: 0x4025a820, 0x68be: 0x4025aa20, 0x68bf: 0x4025ac20,
+	// Block 0x1a3, offset 0x68c0
+	0x68c0: 0x4025ae20,
+	0x68c5: 0x4025b020, 0x68c6: 0x4025b220, 0x68c7: 0x4025b420,
+	0x68c8: 0x4025b620, 0x68c9: 0x4025b820, 0x68ca: 0x4025ba20, 0x68cb: 0x4025bc20,
+	0x68cc: 0x4025be20, 0x68cd: 0x4025c020, 0x68ce: 0x4025c220, 0x68cf: 0x4025c420,
+	// Block 0x1a4, offset 0x6900
+	0x6900: 0x4025c620, 0x6901: 0x4025c820, 0x6902: 0x4025ca20, 0x6903: 0x4025cc20,
+	0x6904: 0x4025ce20, 0x6905: 0x4025d020, 0x6906: 0x4025d220, 0x6907: 0x4025d420,
+	0x6908: 0x4025d620, 0x6909: 0x4025d820, 0x690a: 0x4025da20, 0x690b: 0x4025dc20,
+	0x690c: 0x4025de20, 0x690d: 0x4025e020, 0x690e: 0x4025e220, 0x690f: 0x4025e420,
+	0x6910: 0x4025e620, 0x6911: 0x4025e820, 0x6912: 0x4025ea20, 0x6913: 0x4025ec20,
+	0x6914: 0x4025ee20, 0x6915: 0x4025f020, 0x6916: 0x4025f220, 0x6917: 0x4025f420,
+	0x6918: 0x4025f620, 0x6919: 0x4025f820, 0x691a: 0x4025fa20, 0x691b: 0x4025fc20,
+	0x691c: 0x4025fe20, 0x691d: 0x40260020, 0x691e: 0x40260220, 0x691f: 0x40260420,
+	0x6920: 0x40260620, 0x6921: 0x40260820, 0x6922: 0x40260a20, 0x6923: 0x40260c20,
+	0x6924: 0x40260e20, 0x6925: 0x40261020, 0x6926: 0x40261220, 0x6927: 0x40261420,
+	0x6928: 0x40261620, 0x6929: 0x40261820, 0x692a: 0x40261a20, 0x692b: 0x40261c20,
+	0x692c: 0x40261e20, 0x692d: 0x40262020, 0x692e: 0x40262220, 0x692f: 0x40262420,
+	0x6930: 0x40262620, 0x6931: 0x40262820, 0x6932: 0x40262a20, 0x6933: 0x40262c20,
+	0x6934: 0x40262e20, 0x6935: 0x40263020, 0x6936: 0x40263220, 0x6937: 0x40263420,
+	0x6938: 0x40263620, 0x6939: 0x40263820, 0x693a: 0x40263a20, 0x693b: 0x40263c20,
+	0x693c: 0x40263e20, 0x693d: 0x40264020, 0x693e: 0x40264220, 0x693f: 0x40264420,
+	// Block 0x1a5, offset 0x6940
+	0x6940: 0x40264620, 0x6941: 0x40264820, 0x6942: 0x40264a20, 0x6943: 0x40264c20,
+	0x6944: 0x40264e20, 0x6945: 0x40265020,
+	// Block 0x1a6, offset 0x6980
+	0x6980: 0x40265220, 0x6981: 0x40265420, 0x6982: 0x40265620, 0x6983: 0x40265820,
+	0x6984: 0x40265a20, 0x6985: 0x40265c20, 0x6986: 0x40265e20, 0x6987: 0x40266020,
+	0x6988: 0x40266220, 0x6989: 0x40266420, 0x698a: 0x40266620, 0x698b: 0x40266820,
+	0x698c: 0x40266a20, 0x698d: 0x40266c20, 0x698e: 0x40266e20, 0x698f: 0x40267020,
+	0x6990: 0x40267220, 0x6991: 0x40267420, 0x6992: 0x40267620, 0x6993: 0x40267820,
+	0x6994: 0x40267a20, 0x6995: 0x40267c20, 0x6996: 0x40267e20, 0x6997: 0x40268020,
+	0x6998: 0x40268220, 0x6999: 0x40268420, 0x699a: 0x40268620, 0x699b: 0x40268820,
+	0x699c: 0x40268a20, 0x699d: 0x40268c20, 0x699e: 0x40268e20, 0x699f: 0x40269020,
+	0x69a0: 0x40269220, 0x69a1: 0x40269420, 0x69a2: 0x40269620, 0x69a3: 0x40269820,
+	0x69a4: 0x40269a20, 0x69a5: 0x40269c20, 0x69a6: 0x40269e20, 0x69a7: 0x4026a020,
+	0x69a8: 0x4026a220, 0x69a9: 0x4026a420, 0x69aa: 0x4026a620, 0x69ab: 0x4026a820,
+	0x69ac: 0x4026aa20, 0x69ad: 0x4026ac20, 0x69ae: 0x4026ae20, 0x69af: 0x4026b020,
+	0x69b0: 0x4026b220, 0x69b1: 0x4026b420, 0x69b2: 0x4026b620, 0x69b3: 0x4026b820,
+	0x69b4: 0x4026ba20, 0x69b5: 0x4026bc20, 0x69b6: 0x4026be20, 0x69b7: 0x4026c020,
+	0x69b8: 0x4026c220, 0x69b9: 0x4026c420, 0x69ba: 0x4026c620, 0x69bb: 0x4026c820,
+	0x69bc: 0x4026ca20, 0x69bd: 0x4026cc20, 0x69be: 0x4026ce20, 0x69bf: 0x4026d020,
+	// Block 0x1a7, offset 0x69c0
+	0x69c0: 0x4026d220, 0x69c1: 0x4026d420, 0x69c2: 0x4026d620, 0x69c3: 0x4026d820,
+	0x69c4: 0x4026da20, 0x69c5: 0x4026dc20, 0x69c6: 0x4026de20, 0x69c7: 0x4026e020,
+	0x69c8: 0x4026e220, 0x69c9: 0x4026e420, 0x69ca: 0x4026e620, 0x69cb: 0x4026e820,
+	0x69cc: 0x4026ea20, 0x69cd: 0x4026ec20, 0x69ce: 0x4026ee20, 0x69cf: 0x4026f020,
+	0x69d0: 0x4026f220, 0x69d1: 0x4026f420, 0x69d2: 0x4026f620, 0x69d3: 0x4026f820,
+	0x69d4: 0x4026fa20, 0x69d5: 0x4026fc20, 0x69d6: 0x4026fe20, 0x69d7: 0x40270020,
+	0x69d8: 0x40270220, 0x69d9: 0x40270420, 0x69da: 0x40270620, 0x69db: 0x40270820,
+	0x69dc: 0x40270a20, 0x69dd: 0x40270c20, 0x69de: 0x40270e20, 0x69df: 0x40271020,
+	0x69e0: 0x40271220, 0x69e1: 0x40271420, 0x69e2: 0x40271620, 0x69e3: 0x40271820,
+	0x69e4: 0x40271a20, 0x69e5: 0x40271c20, 0x69e6: 0x40271e20, 0x69e7: 0x40272020,
+	0x69e8: 0x40272220, 0x69e9: 0x40272420, 0x69ea: 0x40272620, 0x69eb: 0x40272820,
+	0x69ec: 0x40272a20, 0x69ed: 0x40272c20, 0x69ee: 0x40272e20, 0x69ef: 0x40273020,
+	0x69f0: 0x40273220, 0x69f1: 0x40273420, 0x69f2: 0x40273620, 0x69f3: 0x40273820,
+	// Block 0x1a8, offset 0x6a00
+	0x6a00: 0x429c7a20, 0x6a01: 0x429c7020, 0x6a02: 0x429c8220, 0x6a03: 0x48024420,
+	0x6a04: 0x429ec020, 0x6a05: 0x429f5c20, 0x6a06: 0x429f7620, 0x6a07: 0x42a00420,
+	0x6a08: 0x42a0f420, 0x6a09: 0x42a13220, 0x6a0a: 0x42a1ce20, 0x6a0b: 0x42a19e20,
+	0x6a0c: 0x44693c20, 0x6a0d: 0x480c7420, 0x6a0e: 0x42a29a20, 0x6a0f: 0x42a2a820,
+	0x6a10: 0x42a2c820, 0x6a11: 0x42a2ee20, 0x6a12: 0x480a3820, 0x6a13: 0x44697220,
+	0x6a14: 0x42a2ce20, 0x6a15: 0x42a31a20, 0x6a16: 0x480a9620, 0x6a17: 0x42a32e20,
+	0x6a18: 0x42a34820, 0x6a19: 0x429d9820, 0x6a1a: 0x42a35820, 0x6a1b: 0x42a36a20,
+	0x6a1c: 0x4923be20, 0x6a1d: 0x42a3ea20, 0x6a1e: 0x42a40620, 0x6a1f: 0x4469be20,
+	0x6a20: 0x42a47620, 0x6a21: 0x42a48c20, 0x6a22: 0x42a4e420, 0x6a23: 0x42a4ee20,
+	0x6a24: 0x446a2a20, 0x6a25: 0x42a58e20, 0x6a26: 0x42a59220, 0x6a27: 0x42a5c820,
+	0x6a28: 0x42a5f420, 0x6a29: 0x42a60a20, 0x6a2a: 0x42a60c20, 0x6a2b: 0x42a62e20,
+	0x6a2c: 0x42a69220, 0x6a2d: 0x42a6a220, 0x6a2e: 0x42a6b420, 0x6a2f: 0x42a6e620,
+	0x6a30: 0x42a6fa20, 0x6a31: 0x42a6fe20, 0x6a32: 0x42a6fe20, 0x6a33: 0x42a6fe20,
+	0x6a34: 0x48145820, 0x6a35: 0x42e0e020, 0x6a36: 0x42a79420, 0x6a37: 0x42a7be20,
+	0x6a38: 0x4816c620, 0x6a39: 0x42a7d620, 0x6a3a: 0x42a7e220, 0x6a3b: 0x42a80c20,
+	0x6a3c: 0x42a93c20, 0x6a3d: 0x42a87020, 0x6a3e: 0x42a89020, 0x6a3f: 0x42a8d020,
+	// Block 0x1a9, offset 0x6a40
+	0x6a40: 0x42a94420, 0x6a41: 0x42a9ec20, 0x6a42: 0x42aa2020, 0x6a43: 0x42aaa620,
+	0x6a44: 0x42aac620, 0x6a45: 0x42ab0820, 0x6a46: 0x42ab0820, 0x6a47: 0x42ab3220,
+	0x6a48: 0x42ab5620, 0x6a49: 0x42ab6620, 0x6a4a: 0x42ab8420, 0x6a4b: 0x42ae2c20,
+	0x6a4c: 0x42ac0c20, 0x6a4d: 0x42ae2e20, 0x6a4e: 0x42aca220, 0x6a4f: 0x42ace820,
+	0x6a50: 0x42a40e20, 0x6a51: 0x42b1dc20, 0x6a52: 0x42af9c20, 0x6a53: 0x42afe820,
+	0x6a54: 0x42b01a20, 0x6a55: 0x42af1620, 0x6a56: 0x42b06420, 0x6a57: 0x42b06220,
+	0x6a58: 0x42b15820, 0x6a59: 0x4829c820, 0x6a5a: 0x42b1e420, 0x6a5b: 0x42b1ee20,
+	0x6a5c: 0x42b20c20, 0x6a5d: 0x42b23420, 0x6a5e: 0x42b24420, 0x6a5f: 0x42b2c420,
+	0x6a60: 0x482d5020, 0x6a61: 0x482dd420, 0x6a62: 0x42b3d820, 0x6a63: 0x42b43620,
+	0x6a64: 0x42b44e20, 0x6a65: 0x42b3b020, 0x6a66: 0x42b4cc20, 0x6a67: 0x446ddc20,
+	0x6a68: 0x446df820, 0x6a69: 0x42b61020, 0x6a6a: 0x42b67c20, 0x6a6b: 0x42b67c20,
+	0x6a6c: 0x48339020, 0x6a6d: 0x42b78620, 0x6a6e: 0x42b7b020, 0x6a6f: 0x42b7ce20,
+	0x6a70: 0x42b7e620, 0x6a71: 0x48363020, 0x6a72: 0x42b7fe20, 0x6a73: 0x42b80c20,
+	0x6a74: 0x42bea620, 0x6a75: 0x42b84420, 0x6a76: 0x446f0220, 0x6a77: 0x42b8c020,
+	0x6a78: 0x42b8dc20, 0x6a79: 0x42b98020, 0x6a7a: 0x42b91a20, 0x6a7b: 0x483bc820,
+	0x6a7c: 0x42ba8620, 0x6a7d: 0x483bcc20, 0x6a7e: 0x42badc20, 0x6a7f: 0x42bad620,
+	// Block 0x1aa, offset 0x6a80
+	0x6a80: 0x42baf820, 0x6a81: 0x42bbc220, 0x6a82: 0x42bbc420, 0x6a83: 0x44705e20,
+	0x6a84: 0x42bbfa20, 0x6a85: 0x42bc5020, 0x6a86: 0x42bc7a20, 0x6a87: 0x42bcd220,
+	0x6a88: 0x4470c420, 0x6a89: 0x48430620, 0x6a8a: 0x4470f820, 0x6a8b: 0x42bd6020,
+	0x6a8c: 0x42bd6620, 0x6a8d: 0x42bd6c20, 0x6a8e: 0x42bd9420, 0x6a8f: 0x49472420,
+	0x6a90: 0x42bdfc20, 0x6a91: 0x48466220, 0x6a92: 0x48466220, 0x6a93: 0x43040220,
+	0x6a94: 0x42be4420, 0x6a95: 0x42be4420, 0x6a96: 0x44718e20, 0x6a97: 0x48657020,
+	0x6a98: 0x48c3b420, 0x6a99: 0x42bec420, 0x6a9a: 0x42bed620, 0x6a9b: 0x4471c620,
+	0x6a9c: 0x42bf3420, 0x6a9d: 0x42bf9a20, 0x6a9e: 0x42bfae20, 0x6a9f: 0x42bff220,
+	0x6aa0: 0x42c10220, 0x6aa1: 0x44727420, 0x6aa2: 0x44723820, 0x6aa3: 0x42c12820,
+	0x6aa4: 0x484da820, 0x6aa5: 0x42c18e20, 0x6aa6: 0x42c29020, 0x6aa7: 0x42c29820,
+	0x6aa8: 0x42c29c20, 0x6aa9: 0x42c29820, 0x6aaa: 0x42c2f420, 0x6aab: 0x42c31c20,
+	0x6aac: 0x42c36420, 0x6aad: 0x42c34820, 0x6aae: 0x42c35e20, 0x6aaf: 0x42c3bc20,
+	0x6ab0: 0x42c3e420, 0x6ab1: 0x42c3ec20, 0x6ab2: 0x42c42020, 0x6ab3: 0x42c43620,
+	0x6ab4: 0x42c4ba20, 0x6ab5: 0x42c56220, 0x6ab6: 0x42c5a820, 0x6ab7: 0x42c6a020,
+	0x6ab8: 0x48561820, 0x6ab9: 0x42c67a20, 0x6aba: 0x42c5f820, 0x6abb: 0x42c6d020,
+	0x6abc: 0x42c70620, 0x6abd: 0x42c7c820, 0x6abe: 0x4857e220, 0x6abf: 0x42c84420,
+	// Block 0x1ab, offset 0x6ac0
+	0x6ac0: 0x42c78a20, 0x6ac1: 0x42c75220, 0x6ac2: 0x44745c20, 0x6ac3: 0x42c8d220,
+	0x6ac4: 0x42c8fc20, 0x6ac5: 0x42c93a20, 0x6ac6: 0x42c8ee20, 0x6ac7: 0x4474d820,
+	0x6ac8: 0x42ca9e20, 0x6ac9: 0x42cad820, 0x6aca: 0x48601420, 0x6acb: 0x42cbc620,
+	0x6acc: 0x42cdf020, 0x6acd: 0x42cc9220, 0x6ace: 0x44763220, 0x6acf: 0x42cd2220,
+	0x6ad0: 0x44761020, 0x6ad1: 0x4475c820, 0x6ad2: 0x42a32420, 0x6ad3: 0x42a32a20,
+	0x6ad4: 0x42ce0020, 0x6ad5: 0x42cd3820, 0x6ad6: 0x43015a20, 0x6ad7: 0x4487b220,
+	0x6ad8: 0x42ce2e20, 0x6ad9: 0x42ce3620, 0x6ada: 0x42ce4220, 0x6adb: 0x42cebc20,
+	0x6adc: 0x42cea620, 0x6add: 0x48678620, 0x6ade: 0x44769220, 0x6adf: 0x42cff420,
+	0x6ae0: 0x42cf0a20, 0x6ae1: 0x42d0a420, 0x6ae2: 0x42d10a20, 0x6ae3: 0x4868da20,
+	0x6ae4: 0x42d11c20, 0x6ae5: 0x42d03e20, 0x6ae6: 0x42d22820, 0x6ae7: 0x44773a20,
+	0x6ae8: 0x42d28420, 0x6ae9: 0x42d34620, 0x6aea: 0x42d3d420, 0x6aeb: 0x42d55020,
+	0x6aec: 0x486d4620, 0x6aed: 0x42d5b620, 0x6aee: 0x44783020, 0x6aef: 0x42d64220,
+	0x6af0: 0x48714e20, 0x6af1: 0x42d6a820, 0x6af2: 0x44789c20, 0x6af3: 0x42d6e420,
+	0x6af4: 0x42d73e20, 0x6af5: 0x42d77420, 0x6af6: 0x42d77620, 0x6af7: 0x48751a20,
+	0x6af8: 0x483a1620, 0x6af9: 0x4875f420, 0x6afa: 0x42d89c20, 0x6afb: 0x48797820,
+	0x6afc: 0x42d97e20, 0x6afd: 0x42d99a20, 0x6afe: 0x42d8ce20, 0x6aff: 0x42da2c20,
+	// Block 0x1ac, offset 0x6b00
+	0x6b00: 0x42da7c20, 0x6b01: 0x42daee20, 0x6b02: 0x42da8220, 0x6b03: 0x42dad220,
+	0x6b04: 0x42daf020, 0x6b05: 0x42db0a20, 0x6b06: 0x487a3c20, 0x6b07: 0x42da6820,
+	0x6b08: 0x42dc5e20, 0x6b09: 0x42dcdc20, 0x6b0a: 0x447a6620, 0x6b0b: 0x42dd9620,
+	0x6b0c: 0x42dd8e20, 0x6b0d: 0x487da220, 0x6b0e: 0x42dbf220, 0x6b0f: 0x42dedc20,
+	0x6b10: 0x487ebc20, 0x6b11: 0x487f1c20, 0x6b12: 0x42df8c20, 0x6b13: 0x42e07220,
+	0x6b14: 0x42e03c20, 0x6b15: 0x42e03620, 0x6b16: 0x447b2c20, 0x6b17: 0x42e09420,
+	0x6b18: 0x42e0fa20, 0x6b19: 0x42e0ee20, 0x6b1a: 0x42e15a20, 0x6b1b: 0x480a4a20,
+	0x6b1c: 0x42e28a20, 0x6b1d: 0x4884c620, 0x6b1e: 0x42e33820, 0x6b1f: 0x48875620,
+	0x6b20: 0x42e45020, 0x6b21: 0x42e46a20, 0x6b22: 0x42e4a020, 0x6b23: 0x488c1020,
+	0x6b24: 0x42e50020, 0x6b25: 0x42e52a20, 0x6b26: 0x488e6a20, 0x6b27: 0x48902820,
+	0x6b28: 0x42e6f420, 0x6b29: 0x42e71620, 0x6b2a: 0x447d5820, 0x6b2b: 0x42e74a20,
+	0x6b2c: 0x447d7020, 0x6b2d: 0x447d7020, 0x6b2e: 0x42e88e20, 0x6b2f: 0x42e8b820,
+	0x6b30: 0x42e8e220, 0x6b31: 0x42e90a20, 0x6b32: 0x42e99420, 0x6b33: 0x447e3620,
+	0x6b34: 0x42ea4820, 0x6b35: 0x48986c20, 0x6b36: 0x42ea7c20, 0x6b37: 0x48992420,
+	0x6b38: 0x42eae020, 0x6b39: 0x48433e20, 0x6b3a: 0x42ec2020, 0x6b3b: 0x489f4220,
+	0x6b3c: 0x489f7020, 0x6b3d: 0x48a08820, 0x6b3e: 0x447ff820, 0x6b3f: 0x44801020,
+	// Block 0x1ad, offset 0x6b40
+	0x6b40: 0x42ede820, 0x6b41: 0x48a1e620, 0x6b42: 0x48a1e420, 0x6b43: 0x48a23220,
+	0x6b44: 0x48a26620, 0x6b45: 0x42ee3c20, 0x6b46: 0x42ee3e20, 0x6b47: 0x42ee3e20,
+	0x6b48: 0x42ee9420, 0x6b49: 0x44807220, 0x6b4a: 0x42ef1620, 0x6b4b: 0x44808c20,
+	0x6b4c: 0x44812c20, 0x6b4d: 0x48a83a20, 0x6b4e: 0x42f09c20, 0x6b4f: 0x42f11820,
+	0x6b50: 0x42f19820, 0x6b51: 0x4481c620, 0x6b52: 0x48ac4c20, 0x6b53: 0x42f2ac20,
+	0x6b54: 0x48ad3420, 0x6b55: 0x48ad8a20, 0x6b56: 0x42f31e20, 0x6b57: 0x42f3d620,
+	0x6b58: 0x44825e20, 0x6b59: 0x42f48020, 0x6b5a: 0x42f49420, 0x6b5b: 0x42f49e20,
+	0x6b5c: 0x48b2f820, 0x6b5d: 0x48b54e20, 0x6b5e: 0x48b54e20, 0x6b5f: 0x42f5dc20,
+	0x6b60: 0x44840420, 0x6b61: 0x48b75620, 0x6b62: 0x42f78c20, 0x6b63: 0x42f79220,
+	0x6b64: 0x44844e20, 0x6b65: 0x48b90020, 0x6b66: 0x42f9a420, 0x6b67: 0x44854020,
+	0x6b68: 0x42f9d020, 0x6b69: 0x42f9c620, 0x6b6a: 0x42fa0020, 0x6b6b: 0x48bf0c20,
+	0x6b6c: 0x42fac620, 0x6b6d: 0x44860220, 0x6b6e: 0x42fb8e20, 0x6b6f: 0x42fc0420,
+	0x6b70: 0x42fc8a20, 0x6b71: 0x44866820, 0x6b72: 0x48c45020, 0x6b73: 0x48c48e20,
+	0x6b74: 0x4486b220, 0x6b75: 0x48c5b220, 0x6b76: 0x42fef420, 0x6b77: 0x48c67c20,
+	0x6b78: 0x42ff2a20, 0x6b79: 0x42fff420, 0x6b7a: 0x43000a20, 0x6b7b: 0x48c9b420,
+	0x6b7c: 0x48ca4620, 0x6b7d: 0x4300c020, 0x6b7e: 0x48cb5020, 0x6b7f: 0x4300e020,
+	// Block 0x1ae, offset 0x6b80
+	0x6b80: 0x4866be20, 0x6b81: 0x4487aa20, 0x6b82: 0x43016420, 0x6b83: 0x43020620,
+	0x6b84: 0x44881620, 0x6b85: 0x43027c20, 0x6b86: 0x42b56a20, 0x6b87: 0x48cf4e20,
+	0x6b88: 0x48cf6a20, 0x6b89: 0x48672620, 0x6b8a: 0x48673820, 0x6b8b: 0x43040220,
+	0x6b8c: 0x43040820, 0x6b8d: 0x431f3c20, 0x6b8e: 0x4488d620, 0x6b8f: 0x43052220,
+	0x6b90: 0x43051620, 0x6b91: 0x43053a20, 0x6b92: 0x42a56620, 0x6b93: 0x43056220,
+	0x6b94: 0x43056620, 0x6b95: 0x43057a20, 0x6b96: 0x4305cc20, 0x6b97: 0x48d67820,
+	0x6b98: 0x4305ca20, 0x6b99: 0x43063a20, 0x6b9a: 0x4306c620, 0x6b9b: 0x43075a20,
+	0x6b9c: 0x43064620, 0x6b9d: 0x43077a20, 0x6b9e: 0x4307ce20, 0x6b9f: 0x4308ae20,
+	0x6ba0: 0x4306a620, 0x6ba1: 0x43079420, 0x6ba2: 0x43079820, 0x6ba3: 0x4307b820,
+	0x6ba4: 0x48d86c20, 0x6ba5: 0x48dad620, 0x6ba6: 0x48d9aa20, 0x6ba7: 0x448a5620,
+	0x6ba8: 0x4309e220, 0x6ba9: 0x4309e620, 0x6baa: 0x430a2c20, 0x6bab: 0x48e79420,
+	0x6bac: 0x430ac820, 0x6bad: 0x48de5820, 0x6bae: 0x448aba20, 0x6baf: 0x448ac220,
+	0x6bb0: 0x48df6220, 0x6bb1: 0x48e1a420, 0x6bb2: 0x448ad620, 0x6bb3: 0x430ca020,
+	0x6bb4: 0x430cb820, 0x6bb5: 0x430cce20, 0x6bb6: 0x430cd220, 0x6bb7: 0x430d5220,
+	0x6bb8: 0x430d1020, 0x6bb9: 0x430e1c20, 0x6bba: 0x430dc420, 0x6bbb: 0x430ef220,
+	0x6bbc: 0x430e5020, 0x6bbd: 0x430ed620, 0x6bbe: 0x430f0c20, 0x6bbf: 0x448bae20,
+	// Block 0x1af, offset 0x6bc0
+	0x6bc0: 0x430fc220, 0x6bc1: 0x43100220, 0x6bc2: 0x448bf220, 0x6bc3: 0x4310c020,
+	0x6bc4: 0x4310c620, 0x6bc5: 0x48ecce20, 0x6bc6: 0x4311ae20, 0x6bc7: 0x4311bc20,
+	0x6bc8: 0x448c6a20, 0x6bc9: 0x4311f420, 0x6bca: 0x44697620, 0x6bcb: 0x48f15c20,
+	0x6bcc: 0x48f2cc20, 0x6bcd: 0x448d7c20, 0x6bce: 0x448d8e20, 0x6bcf: 0x43154020,
+	0x6bd0: 0x4315da20, 0x6bd1: 0x43171420, 0x6bd2: 0x4318aa20, 0x6bd3: 0x48f95020,
+	0x6bd4: 0x43195620, 0x6bd5: 0x43198220, 0x6bd6: 0x431a3620, 0x6bd7: 0x431aee20,
+	0x6bd8: 0x48fe5e20, 0x6bd9: 0x48100820, 0x6bda: 0x431b9620, 0x6bdb: 0x431b7820,
+	0x6bdc: 0x431be020, 0x6bdd: 0x4811bc20, 0x6bde: 0x431da820, 0x6bdf: 0x431e7020,
+	0x6be0: 0x490ba420, 0x6be1: 0x490bda20, 0x6be2: 0x43212820, 0x6be3: 0x4321e220,
+	0x6be4: 0x43222220, 0x6be5: 0x490e5c20, 0x6be6: 0x43223620, 0x6be7: 0x43247020,
+	0x6be8: 0x4325ae20, 0x6be9: 0x4325b020, 0x6bea: 0x4324f820, 0x6beb: 0x4327f220,
+	0x6bec: 0x43282a20, 0x6bed: 0x4917f420, 0x6bee: 0x432b1620, 0x6bef: 0x44932a20,
+	0x6bf0: 0x432b6e20, 0x6bf1: 0x491aee20, 0x6bf2: 0x4493cc20, 0x6bf3: 0x432d8620,
+	0x6bf4: 0x42bb6420, 0x6bf5: 0x432e4620, 0x6bf6: 0x49228a20, 0x6bf7: 0x49243420,
+	0x6bf8: 0x4494dc20, 0x6bf9: 0x4494ec20, 0x6bfa: 0x432fc020, 0x6bfb: 0x49281420,
+	0x6bfc: 0x44956420, 0x6bfd: 0x49292c20, 0x6bfe: 0x43301620, 0x6bff: 0x43301620,
+	// Block 0x1b0, offset 0x6c00
+	0x6c00: 0x43305220, 0x6c01: 0x492b6c20, 0x6c02: 0x4331c420, 0x6c03: 0x44966620,
+	0x6c04: 0x43325220, 0x6c05: 0x43334e20, 0x6c06: 0x43338420, 0x6c07: 0x4333fc20,
+	0x6c08: 0x44979c20, 0x6c09: 0x49366020, 0x6c0a: 0x43362420, 0x6c0b: 0x43388020,
+	0x6c0c: 0x4339fa20, 0x6c0d: 0x44999c20, 0x6c0e: 0x4499da20, 0x6c0f: 0x433ace20,
+	0x6c10: 0x49419c20, 0x6c11: 0x4499f020, 0x6c12: 0x49420a20, 0x6c13: 0x49441c20,
+	0x6c14: 0x49452220, 0x6c15: 0x433d7620, 0x6c16: 0x449aac20, 0x6c17: 0x433df220,
+	0x6c18: 0x433dfc20, 0x6c19: 0x433e0a20, 0x6c1a: 0x433e1e20, 0x6c1b: 0x433e2c20,
+	0x6c1c: 0x433e7620, 0x6c1d: 0x494c0020,
+	// Block 0x1b1, offset 0x6c40
+	0x6c41: 0xa0000000,
+	0x6c60: 0xa0000000, 0x6c61: 0xa0000000, 0x6c62: 0xa0000000, 0x6c63: 0xa0000000,
+	0x6c64: 0xa0000000, 0x6c65: 0xa0000000, 0x6c66: 0xa0000000, 0x6c67: 0xa0000000,
+	0x6c68: 0xa0000000, 0x6c69: 0xa0000000, 0x6c6a: 0xa0000000, 0x6c6b: 0xa0000000,
+	0x6c6c: 0xa0000000, 0x6c6d: 0xa0000000, 0x6c6e: 0xa0000000, 0x6c6f: 0xa0000000,
+	0x6c70: 0xa0000000, 0x6c71: 0xa0000000, 0x6c72: 0xa0000000, 0x6c73: 0xa0000000,
+	0x6c74: 0xa0000000, 0x6c75: 0xa0000000, 0x6c76: 0xa0000000, 0x6c77: 0xa0000000,
+	0x6c78: 0xa0000000, 0x6c79: 0xa0000000, 0x6c7a: 0xa0000000, 0x6c7b: 0xa0000000,
+	0x6c7c: 0xa0000000, 0x6c7d: 0xa0000000, 0x6c7e: 0xa0000000, 0x6c7f: 0xa0000000,
+	// Block 0x1b2, offset 0x6c80
+	0x6c80: 0xa0000000, 0x6c81: 0xa0000000, 0x6c82: 0xa0000000, 0x6c83: 0xa0000000,
+	0x6c84: 0xa0000000, 0x6c85: 0xa0000000, 0x6c86: 0xa0000000, 0x6c87: 0xa0000000,
+	0x6c88: 0xa0000000, 0x6c89: 0xa0000000, 0x6c8a: 0xa0000000, 0x6c8b: 0xa0000000,
+	0x6c8c: 0xa0000000, 0x6c8d: 0xa0000000, 0x6c8e: 0xa0000000, 0x6c8f: 0xa0000000,
+	0x6c90: 0xa0000000, 0x6c91: 0xa0000000, 0x6c92: 0xa0000000, 0x6c93: 0xa0000000,
+	0x6c94: 0xa0000000, 0x6c95: 0xa0000000, 0x6c96: 0xa0000000, 0x6c97: 0xa0000000,
+	0x6c98: 0xa0000000, 0x6c99: 0xa0000000, 0x6c9a: 0xa0000000, 0x6c9b: 0xa0000000,
+	0x6c9c: 0xa0000000, 0x6c9d: 0xa0000000, 0x6c9e: 0xa0000000, 0x6c9f: 0xa0000000,
+	0x6ca0: 0xa0000000, 0x6ca1: 0xa0000000, 0x6ca2: 0xa0000000, 0x6ca3: 0xa0000000,
+	0x6ca4: 0xa0000000, 0x6ca5: 0xa0000000, 0x6ca6: 0xa0000000, 0x6ca7: 0xa0000000,
+	0x6ca8: 0xa0000000, 0x6ca9: 0xa0000000, 0x6caa: 0xa0000000, 0x6cab: 0xa0000000,
+	0x6cac: 0xa0000000, 0x6cad: 0xa0000000, 0x6cae: 0xa0000000, 0x6caf: 0xa0000000,
+	0x6cb0: 0xa0000000, 0x6cb1: 0xa0000000, 0x6cb2: 0xa0000000, 0x6cb3: 0xa0000000,
+	0x6cb4: 0xa0000000, 0x6cb5: 0xa0000000, 0x6cb6: 0xa0000000, 0x6cb7: 0xa0000000,
+	0x6cb8: 0xa0000000, 0x6cb9: 0xa0000000, 0x6cba: 0xa0000000, 0x6cbb: 0xa0000000,
+	0x6cbc: 0xa0000000, 0x6cbd: 0xa0000000, 0x6cbe: 0xa0000000, 0x6cbf: 0xa0000000,
+	// Block 0x1b3, offset 0x6cc0
+	0x6cc0: 0xa0000000, 0x6cc1: 0xa0000000, 0x6cc2: 0xa0000000, 0x6cc3: 0xa0000000,
+	0x6cc4: 0xa0000000, 0x6cc5: 0xa0000000, 0x6cc6: 0xa0000000, 0x6cc7: 0xa0000000,
+	0x6cc8: 0xa0000000, 0x6cc9: 0xa0000000, 0x6cca: 0xa0000000, 0x6ccb: 0xa0000000,
+	0x6ccc: 0xa0000000, 0x6ccd: 0xa0000000, 0x6cce: 0xa0000000, 0x6ccf: 0xa0000000,
+	0x6cd0: 0xa0000000, 0x6cd1: 0xa0000000, 0x6cd2: 0xa0000000, 0x6cd3: 0xa0000000,
+	0x6cd4: 0xa0000000, 0x6cd5: 0xa0000000, 0x6cd6: 0xa0000000, 0x6cd7: 0xa0000000,
+	0x6cd8: 0xa0000000, 0x6cd9: 0xa0000000, 0x6cda: 0xa0000000, 0x6cdb: 0xa0000000,
+	0x6cdc: 0xa0000000, 0x6cdd: 0xa0000000, 0x6cde: 0xa0000000, 0x6cdf: 0xa0000000,
+	0x6ce0: 0xa0000000, 0x6ce1: 0xa0000000, 0x6ce2: 0xa0000000, 0x6ce3: 0xa0000000,
+	0x6ce4: 0xa0000000, 0x6ce5: 0xa0000000, 0x6ce6: 0xa0000000, 0x6ce7: 0xa0000000,
+	0x6ce8: 0xa0000000, 0x6ce9: 0xa0000000, 0x6cea: 0xa0000000, 0x6ceb: 0xa0000000,
+	0x6cec: 0xa0000000, 0x6ced: 0xa0000000, 0x6cee: 0xa0000000, 0x6cef: 0xa0000000,
+	// Block 0x1b4, offset 0x6d00
+	0x6d00: 0xa0000000, 0x6d01: 0xa0000000, 0x6d02: 0xa0000000, 0x6d03: 0xa0000000,
+	0x6d04: 0xa0000000, 0x6d05: 0xa0000000, 0x6d06: 0xa0000000, 0x6d07: 0xa0000000,
+	0x6d08: 0xa0000000, 0x6d09: 0x40020020, 0x6d0a: 0x40020220, 0x6d0b: 0x40020420,
+	0x6d0c: 0x40020620, 0x6d0d: 0x40020820, 0x6d0e: 0xa0000000, 0x6d0f: 0xa0000000,
+	0x6d10: 0xa0000000, 0x6d11: 0xa0000000, 0x6d12: 0xa0000000, 0x6d13: 0xa0000000,
+	0x6d14: 0xa0000000, 0x6d15: 0xa0000000, 0x6d16: 0xa0000000, 0x6d17: 0xa0000000,
+	0x6d18: 0xa0000000, 0x6d19: 0xa0000000, 0x6d1a: 0xa0000000, 0x6d1b: 0xa0000000,
+	0x6d1c: 0xa0000000, 0x6d1d: 0xa0000000, 0x6d1e: 0xa0000000, 0x6d1f: 0xa0000000,
+	0x6d20: 0x40021220, 0x6d21: 0x4002ba20, 0x6d22: 0x4003e020, 0x6d23: 0x4004ea20,
+	0x6d24: 0x4027de20, 0x6d25: 0x4004ec20, 0x6d26: 0x4004e620, 0x6d27: 0x4003d220,
+	0x6d28: 0x4003f420, 0x6d29: 0x4003f620, 0x6d2a: 0x4004d820, 0x6d2b: 0x40093820,
+	0x6d2c: 0x40024020, 0x6d2d: 0x40021a20, 0x6d2e: 0x4002e420, 0x6d2f: 0x4004e220,
+	0x6d30: 0x4029cc20, 0x6d31: 0x4029ce20, 0x6d32: 0x4029d020, 0x6d33: 0x4029d220,
+	0x6d34: 0x4029d420, 0x6d35: 0x4029d620, 0x6d36: 0x4029d820, 0x6d37: 0x4029da20,
+	0x6d38: 0x4029dc20, 0x6d39: 0x4029de20, 0x6d3a: 0x40026c20, 0x6d3b: 0x40026220,
+	0x6d3c: 0x40094020, 0x6d3d: 0xc32f0851, 0x6d3e: 0x40094420, 0x6d3f: 0x4002c420,
+	// Block 0x1b5, offset 0x6d40
+	0x6d40: 0x4004d620, 0x6d41: 0x002bde88, 0x6d42: 0x002c0a88, 0x6d43: 0xc3330871,
+	0x6d44: 0x002c6288, 0x6d45: 0x002c9888, 0x6d46: 0x002d0888, 0x6d47: 0xc33700d1,
+	0x6d48: 0x002d6888, 0x6d49: 0xc3390891, 0x6d4a: 0x002dcc88, 0x6d4b: 0x002dfe88,
+	0x6d4c: 0xc0030002, 0x6d4d: 0x002e8288, 0x6d4e: 0x002e9e88, 0x6d4f: 0xc33d0071,
+	0x6d50: 0x002f2c88, 0x6d51: 0x002e0083, 0x6d52: 0x002f7a88, 0x6d53: 0xc3410871,
+	0x6d54: 0x00302c88, 0x6d55: 0xc3450071, 0x6d56: 0x0030be88, 0x6d57: 0x0030e288,
+	0x6d58: 0x002d6a83, 0x6d59: 0x00310088, 0x6d5a: 0x00312a88, 0x6d5b: 0x4003f820,
+	0x6d5c: 0x4004e420, 0x6d5d: 0x4003fa20, 0x6d5e: 0x40062420, 0x6d5f: 0x40021620,
+	0x6d60: 0x40061e20, 0x6d61: 0x402bde20, 0x6d62: 0x402c0a20, 0x6d63: 0xc3310871,
+	0x6d64: 0x402c6220, 0x6d65: 0x402c9820, 0x6d66: 0x402d0820, 0x6d67: 0xc33500d1,
+	0x6d68: 0x402d6820, 0x6d69: 0x402d9a20, 0x6d6a: 0x402dcc20, 0x6d6b: 0x402dfe20,
+	0x6d6c: 0xc0000002, 0x6d6d: 0x402e8220, 0x6d6e: 0x402e9e20, 0x6d6f: 0xc33b0071,
+	0x6d70: 0x402f2c20, 0x6d71: 0x402e0020, 0x6d72: 0x402f7a20, 0x6d73: 0xc33f0871,
+	0x6d74: 0x40302c20, 0x6d75: 0xc3430071, 0x6d76: 0x4030be20, 0x6d77: 0x4030e220,
+	0x6d78: 0x402d6a20, 0x6d79: 0x40310020, 0x6d7a: 0x40312a20, 0x6d7b: 0x4003fc20,
+	0x6d7c: 0x40094820, 0x6d7d: 0x4003fe20, 0x6d7e: 0x40094c20, 0x6d7f: 0xa0000000,
+	// Block 0x1b6, offset 0x6d80
+	0x6d80: 0xe00008f5, 0x6d81: 0xe00008ef, 0x6d82: 0xe0000921, 0x6d83: 0xe0000969,
+	0x6d84: 0xe000095b, 0x6d85: 0xe000094d, 0x6d86: 0xe00009dd, 0x6d87: 0x002c3c83,
+	0x6d88: 0xe0000ae8, 0x6d89: 0xe0000ae2, 0x6d8a: 0xe0000af4, 0x6d8b: 0xe0000b20,
+	0x6d8c: 0xe00024d4, 0x6d8d: 0xe00024d1, 0x6d8e: 0xe00024da, 0x6d8f: 0xe00024e0,
+	0x6d90: 0xe0000ab3, 0x6d91: 0xe0000d63, 0x6d92: 0xe0000d9a, 0x6d93: 0xe0000d94,
+	0x6d94: 0xe0000da6, 0x6d95: 0xe0000de6, 0x6d96: 0x002ee483, 0x6d97: 0x40093e20,
+	0x6d98: 0xe0000e12, 0x6d99: 0xe0000fe1, 0x6d9a: 0xe0000fdb, 0x6d9b: 0xe0000fed,
+	0x6d9c: 0x00306e83, 0x6d9d: 0xe0001102, 0x6d9e: 0x00318888, 0x6d9f: 0xe0000f7b,
+	0x6da0: 0xe00008f2, 0x6da1: 0xe00008ec, 0x6da2: 0xe000091e, 0x6da3: 0xe0000966,
+	0x6da4: 0xe0000958, 0x6da5: 0xe000094a, 0x6da6: 0xe00009d5, 0x6da7: 0x402c3c20,
+	0x6da8: 0xe0000ae5, 0x6da9: 0xe0000adf, 0x6daa: 0xe0000af1, 0x6dab: 0xe0000b1d,
+	0x6dac: 0xe0000c28, 0x6dad: 0xe0000c22, 0x6dae: 0xe0000c34, 0x6daf: 0xe0000c40,
+	0x6db0: 0xe0000aad, 0x6db1: 0xe0000d60, 0x6db2: 0xe0000d97, 0x6db3: 0xe0000d91,
+	0x6db4: 0xe0000da3, 0x6db5: 0xe0000de3, 0x6db6: 0x402ee420, 0x6db7: 0x40093c20,
+	0x6db8: 0xe0000e0f, 0x6db9: 0xe0000fde, 0x6dba: 0xe0000fd8, 0x6dbb: 0xe0000fea,
+	0x6dbc: 0x40306e20, 0x6dbd: 0xe00010ff, 0x6dbe: 0x40318820, 0x6dbf: 0xe0001114,
+	// Block 0x1b7, offset 0x6dc0
+	0x6dc0: 0xe0000983, 0x6dc1: 0xe0000980, 0x6dc2: 0xe00008fb, 0x6dc3: 0xe00008f8,
+	0x6dc4: 0xe000097d, 0x6dc5: 0xe000097a, 0x6dc6: 0xe0000a38, 0x6dc7: 0xe0000a35,
+	0x6dc8: 0xe0000a3e, 0x6dc9: 0xe0000a3b, 0x6dca: 0xe0000a4a, 0x6dcb: 0xe0000a47,
+	0x6dcc: 0xe0000a44, 0x6dcd: 0xe0000a41, 0x6dce: 0xe0000a86, 0x6dcf: 0xe0000a83,
+	0x6dd0: 0xe0000aaa, 0x6dd1: 0xe0000aa7, 0x6dd2: 0xe0000b46, 0x6dd3: 0xe0000b43,
+	0x6dd4: 0xe0000aee, 0x6dd5: 0xe0000aeb, 0x6dd6: 0xe0000b2c, 0x6dd7: 0xe0000b29,
+	0x6dd8: 0xe0000b40, 0x6dd9: 0xe0000b3d, 0x6dda: 0xe0000b1a, 0x6ddb: 0xe0000b17,
+	0x6ddc: 0xe0000bb8, 0x6ddd: 0xe0000bb5, 0x6dde: 0x002d2483, 0x6ddf: 0x402d2420,
+	0x6de0: 0xe0000bc4, 0x6de1: 0xe0000bc1, 0x6de2: 0xe0000bca, 0x6de3: 0xe0000bc7,
+	0x6de4: 0xe0000bee, 0x6de5: 0xe0000beb, 0x6de6: 0xe0000c1b, 0x6de7: 0xe0000c18,
+	0x6de8: 0xe00024e7, 0x6de9: 0xe0000c4e, 0x6dea: 0xe00024ed, 0x6deb: 0xe0000c5d,
+	0x6dec: 0xe00024d7, 0x6ded: 0xe0000c2e, 0x6dee: 0xe00024ea, 0x6def: 0xe0000c57,
+	0x6df0: 0x002d9a83, 0x6df1: 0x402d9820, 0x6df2: 0xe0002506, 0x6df3: 0xf0000404,
+	0x6df4: 0xe0000c8a, 0x6df5: 0xe0000c87, 0x6df6: 0xe0000c9f, 0x6df7: 0xe0000c9c,
+	0x6df8: 0x402f7220, 0x6df9: 0xe0000ccc, 0x6dfa: 0xe0000cc9, 0x6dfb: 0xe0000cd8,
+	0x6dfc: 0xe0000cd5, 0x6dfd: 0xe0000cd2, 0x6dfe: 0xe0000ccf, 0x6dff: 0xe0000d04,
+	// Block 0x1b8, offset 0x6e00
+	0x6e00: 0xe0000cfe, 0x6e01: 0xe0000cf8, 0x6e02: 0xe0000cf5, 0x6e03: 0xe0000d51,
+	0x6e04: 0xe0000d4e, 0x6e05: 0xe0000d6f, 0x6e06: 0xe0000d6c, 0x6e07: 0xe0000d5d,
+	0x6e08: 0xe0000d5a, 0x6e09: 0xf0000404, 0x6e0a: 0x002eda88, 0x6e0b: 0x402eda20,
+	0x6e0c: 0xe0000e2e, 0x6e0d: 0xe0000e2b, 0x6e0e: 0xe0000da0, 0x6e0f: 0xe0000d9d,
+	0x6e10: 0xe0000de0, 0x6e11: 0xe0000ddd, 0x6e12: 0xe0000e93, 0x6e13: 0xe0000e8f,
+	0x6e14: 0xe0000eca, 0x6e15: 0xe0000ec7, 0x6e16: 0xe0000edc, 0x6e17: 0xe0000ed9,
+	0x6e18: 0xe0000ed0, 0x6e19: 0xe0000ecd, 0x6e1a: 0xe0000f1f, 0x6e1b: 0xe0000f1c,
+	0x6e1c: 0xe0000f2d, 0x6e1d: 0xe0000f2a, 0x6e1e: 0x002fe883, 0x6e1f: 0x402fe820,
+	0x6e20: 0xe0000f33, 0x6e21: 0xe0000f30, 0x6e22: 0xe0000f99, 0x6e23: 0xe0000f96,
+	0x6e24: 0xe0000f8a, 0x6e25: 0xe0000f87, 0x6e26: 0x00303688, 0x6e27: 0x40303620,
+	0x6e28: 0xe000102b, 0x6e29: 0xe0001028, 0x6e2a: 0xe000103f, 0x6e2b: 0xe000103c,
+	0x6e2c: 0xe0000fe7, 0x6e2d: 0xe0000fe4, 0x6e2e: 0xe0000ff9, 0x6e2f: 0xe0000ff6,
+	0x6e30: 0xe0001025, 0x6e31: 0xe0001022, 0x6e32: 0xe0001039, 0x6e33: 0xe0001036,
+	0x6e34: 0xe00010d8, 0x6e35: 0xe00010d5, 0x6e36: 0xe000110e, 0x6e37: 0xe000110b,
+	0x6e38: 0xe0001117, 0x6e39: 0xe000113b, 0x6e3a: 0xe0001138, 0x6e3b: 0xe000114d,
+	0x6e3c: 0xe000114a, 0x6e3d: 0xe0001147, 0x6e3e: 0xe0001144, 0x6e3f: 0xe0000f64,
+	// Block 0x1b9, offset 0x6e40
+	0x6e40: 0x402c1a20, 0x6e41: 0x002c2a88, 0x6e42: 0x002c3288, 0x6e43: 0x402c3220,
+	0x6e44: 0x0031c488, 0x6e45: 0x4031c420, 0x6e46: 0x002efa88, 0x6e47: 0x002c4e88,
+	0x6e48: 0x402c4e20, 0x6e49: 0x002c7288, 0x6e4a: 0x002c7a88, 0x6e4b: 0x002c8488,
+	0x6e4c: 0x402c8420, 0x6e4d: 0xe000115c, 0x6e4e: 0x002cae88, 0x6e4f: 0x002c9a83,
+	0x6e50: 0x002cc288, 0x6e51: 0x002d1688, 0x6e52: 0x402d1620, 0x6e53: 0x002d4488,
+	0x6e54: 0x002d5888, 0x6e55: 0x402d7820, 0x6e56: 0x002dc288, 0x6e57: 0x002db688,
+	0x6e58: 0x002e0a88, 0x6e59: 0x402e0a20, 0x6e5a: 0x402e3820, 0x6e5b: 0x402e7220,
+	0x6e5c: 0x0030a088, 0x6e5d: 0x002eb488, 0x6e5e: 0x402ebc20, 0x6e5f: 0x002f1088,
+	0x6e60: 0xe0000e56, 0x6e61: 0xe0000e53, 0x6e62: 0x002d6088, 0x6e63: 0x402d6020,
+	0x6e64: 0x002f3e88, 0x6e65: 0x402f3e20, 0x6e66: 0x002f8288, 0x6e67: 0x0031b488,
+	0x6e68: 0x4031b420, 0x6e69: 0x00300888, 0x6e6a: 0x40301220, 0x6e6b: 0x40304220,
+	0x6e6c: 0x00304a88, 0x6e6d: 0x40304a20, 0x6e6e: 0x00305288, 0x6e6f: 0xe000105f,
+	0x6e70: 0xe000105c, 0x6e71: 0x0030b488, 0x6e72: 0x0030cc88, 0x6e73: 0x00311888,
+	0x6e74: 0x40311820, 0x6e75: 0x00313488, 0x6e76: 0x40313420, 0x6e77: 0x00316488,
+	0x6e78: 0x00316e88, 0x6e79: 0x40316e20, 0x6e7a: 0x40317820, 0x6e7b: 0x4031a620,
+	0x6e7c: 0x0031bc88, 0x6e7d: 0x4031bc20, 0x6e7e: 0xe0000fc9, 0x6e7f: 0x40319420,
+	// Block 0x1ba, offset 0x6e80
+	0x6e80: 0x40321220, 0x6e81: 0x40321a20, 0x6e82: 0x40322220, 0x6e83: 0x40322a20,
+	0x6e84: 0xe0000ad5, 0x6e85: 0xe0000ad1, 0x6e86: 0xe0000acd, 0x6e87: 0xf0000a0a,
+	0x6e88: 0xf000040a, 0x6e89: 0xf0000404, 0x6e8a: 0xf0000a0a, 0x6e8b: 0xf000040a,
+	0x6e8c: 0xf0000404, 0x6e8d: 0xe0000947, 0x6e8e: 0xe0000944, 0x6e8f: 0xe00024dd,
+	0x6e90: 0xe0000c3a, 0x6e91: 0xe0000dcc, 0x6e92: 0xe0000dc9, 0x6e93: 0xe0000ff3,
+	0x6e94: 0xe0000ff0, 0x6e95: 0xe0002539, 0x6e96: 0xe0002536, 0x6e97: 0xe0002527,
+	0x6e98: 0xe0002524, 0x6e99: 0xe0002533, 0x6e9a: 0xe0002530, 0x6e9b: 0xe000252d,
+	0x6e9c: 0xe000252a, 0x6e9d: 0x402cae20, 0x6e9e: 0xe0000962, 0x6e9f: 0xe000095e,
+	0x6ea0: 0xe0000976, 0x6ea1: 0xe0000972, 0x6ea2: 0xe00009f4, 0x6ea3: 0xe00009ef,
+	0x6ea4: 0x002d3a88, 0x6ea5: 0x402d3a20, 0x6ea6: 0xe0000bbe, 0x6ea7: 0xe0000bbb,
+	0x6ea8: 0xe0000c99, 0x6ea9: 0xe0000c96, 0x6eaa: 0xe0000e20, 0x6eab: 0xe0000e1d,
+	0x6eac: 0xe0000e27, 0x6ead: 0xe0000e23, 0x6eae: 0xe0001162, 0x6eaf: 0xe000115f,
+	0x6eb0: 0xe0000c8d, 0x6eb1: 0xf0000a0a, 0x6eb2: 0xf000040a, 0x6eb3: 0xf0000404,
+	0x6eb4: 0xe0000bac, 0x6eb5: 0xe0000ba9, 0x6eb6: 0x002d7888, 0x6eb7: 0x00319488,
+	0x6eb8: 0xe0000d57, 0x6eb9: 0xe0000d54, 0x6eba: 0xe0000954, 0x6ebb: 0xe0000950,
+	0x6ebc: 0xe00009ea, 0x6ebd: 0xe00009e5, 0x6ebe: 0xe0000e19, 0x6ebf: 0xe0000e15,
+	// Block 0x1bb, offset 0x6ec0
+	0x6ec0: 0xe000098f, 0x6ec1: 0xe000098c, 0x6ec2: 0xe0000995, 0x6ec3: 0xe0000992,
+	0x6ec4: 0xe0000b62, 0x6ec5: 0xe0000b5f, 0x6ec6: 0xe0000b68, 0x6ec7: 0xe0000b65,
+	0x6ec8: 0xe00024f3, 0x6ec9: 0xe0000c69, 0x6eca: 0xe00024f6, 0x6ecb: 0xe0000c6f,
+	0x6ecc: 0xe0000e4a, 0x6ecd: 0xe0000e47, 0x6ece: 0xe0000e50, 0x6ecf: 0xe0000e4d,
+	0x6ed0: 0xe0000ee8, 0x6ed1: 0xe0000ee5, 0x6ed2: 0xe0000eee, 0x6ed3: 0xe0000eeb,
+	0x6ed4: 0xe0001053, 0x6ed5: 0xe0001050, 0x6ed6: 0xe0001059, 0x6ed7: 0xe0001056,
+	0x6ed8: 0xe0000f61, 0x6ed9: 0xe0000f5e, 0x6eda: 0xe0000fa5, 0x6edb: 0xe0000fa2,
+	0x6edc: 0x00312288, 0x6edd: 0x40312220, 0x6ede: 0xe0000bf4, 0x6edf: 0xe0000bf1,
+	0x6ee0: 0x002ebc88, 0x6ee1: 0x402c8c20, 0x6ee2: 0x002f2288, 0x6ee3: 0x402f2220,
+	0x6ee4: 0x00314088, 0x6ee5: 0x40314020, 0x6ee6: 0xe000096f, 0x6ee7: 0xe000096c,
+	0x6ee8: 0xe0000b32, 0x6ee9: 0xe0000b2f, 0x6eea: 0xe0002521, 0x6eeb: 0xe000251e,
+	0x6eec: 0xe0000dfd, 0x6eed: 0xe0000df9, 0x6eee: 0xe0000e04, 0x6eef: 0xe0000e01,
+	0x6ef0: 0xe0000e0b, 0x6ef1: 0xe0000e07, 0x6ef2: 0xe0001129, 0x6ef3: 0xe0001126,
+	0x6ef4: 0x402e5e20, 0x6ef5: 0x402ed020, 0x6ef6: 0x40305a20, 0x6ef7: 0x402dd420,
+	0x6ef8: 0xe0000abf, 0x6ef9: 0xe0000ec4, 0x6efa: 0x002be888, 0x6efb: 0x002c4488,
+	0x6efc: 0x402c4420, 0x6efd: 0x002e3888, 0x6efe: 0x00303e88, 0x6eff: 0x402ffc20,
+	// Block 0x1bc, offset 0x6f00
+	0x6f00: 0x40315820, 0x6f01: 0x0031d488, 0x6f02: 0x4031d420, 0x6f03: 0x002c1a88,
+	0x6f04: 0x00307c88, 0x6f05: 0x0030da88, 0x6f06: 0x002ca288, 0x6f07: 0x402ca220,
+	0x6f08: 0x002dde88, 0x6f09: 0x402dde20, 0x6f0a: 0x002f6a88, 0x6f0b: 0x402f6a20,
+	0x6f0c: 0x002f8e88, 0x6f0d: 0x402f8e20, 0x6f0e: 0x00311088, 0x6f0f: 0x40311020,
+	0x6f10: 0x402bf020, 0x6f11: 0x402bf820, 0x6f12: 0x402c0220, 0x6f13: 0x402c2a20,
+	0x6f14: 0x402efa20, 0x6f15: 0x402c5620, 0x6f16: 0x402c7220, 0x6f17: 0x402c7a20,
+	0x6f18: 0x402ccc20, 0x6f19: 0x402c9a20, 0x6f1a: 0x402cd420, 0x6f1b: 0x402cc220,
+	0x6f1c: 0x402cdc20, 0x6f1d: 0x402ce820, 0x6f1e: 0x402cf020, 0x6f1f: 0x402dee20,
+	0x6f20: 0x402d4420, 0x6f21: 0x402d2a20, 0x6f22: 0x402d3220, 0x6f23: 0x402d5820,
+	0x6f24: 0x402d0020, 0x6f25: 0x40308820, 0x6f26: 0x402d8020, 0x6f27: 0x402d8e20,
+	0x6f28: 0x402db620, 0x6f29: 0x402dc220, 0x6f2a: 0x402daa20, 0x6f2b: 0x402e4220,
+	0x6f2c: 0x402e4a20, 0x6f2d: 0x402e5420, 0x6f2e: 0x402e6820, 0x6f2f: 0x4030a020,
+	0x6f30: 0x4030ac20, 0x6f31: 0x402e9020, 0x6f32: 0x402eb420, 0x6f33: 0x402ec820,
+	0x6f34: 0x402ea620, 0x6f35: 0x402f1020, 0x6f36: 0x402eee20, 0x6f37: 0x402f1a20,
+	0x6f38: 0x402f4c20, 0x6f39: 0x402f9820, 0x6f3a: 0x402fa220, 0x6f3b: 0x402fac20,
+	0x6f3c: 0x402fb620, 0x6f3d: 0x402fbe20, 0x6f3e: 0x402fc620, 0x6f3f: 0x402fd020,
+	// Block 0x1bd, offset 0x6f40
+	0x6f40: 0x40055620, 0x6f41: 0xa1809102, 0x6f42: 0xa1909002, 0x6f43: 0x40055820,
+	0x6f44: 0xae600000, 0x6f45: 0xadc00000, 0x6f46: 0x40055a20, 0x6f47: 0xa1208d02,
+	0x6f50: 0x40389020, 0x6f51: 0x40389220, 0x6f52: 0x40389420, 0x6f53: 0x40389620,
+	0x6f54: 0x40389820, 0x6f55: 0x40389a20, 0x6f56: 0x40389c20, 0x6f57: 0x40389e20,
+	0x6f58: 0x4038a020, 0x6f59: 0x4038a220, 0x6f5a: 0x0038a499, 0x6f5b: 0x4038a420,
+	0x6f5c: 0x4038a620, 0x6f5d: 0x0038a899, 0x6f5e: 0x4038a820, 0x6f5f: 0x0038aa99,
+	0x6f60: 0x4038aa20, 0x6f61: 0x4038ac20, 0x6f62: 0x4038ae20, 0x6f63: 0x0038b099,
+	0x6f64: 0x4038b020, 0x6f65: 0x0038b299, 0x6f66: 0x4038b220, 0x6f67: 0x4038b420,
+	0x6f68: 0x4038b620, 0x6f69: 0x4038b820, 0x6f6a: 0x4038ba20,
+	0x6f70: 0xe00014ff, 0x6f71: 0xe0001502, 0x6f72: 0xe0001511, 0x6f73: 0xa0002102,
+	0x6f74: 0xa0002202,
+	// Block 0x1be, offset 0x6f80
+	0x6f80: 0xa0000000, 0x6f81: 0xa0000000, 0x6f82: 0xa0000000, 0x6f83: 0xa0000000,
+	0x6f84: 0xa0000000, 0x6f86: 0x40096620, 0x6f87: 0x40096a20,
+	0x6f88: 0x40070820, 0x6f89: 0x4004f220, 0x6f8a: 0x4004f620, 0x6f8b: 0x4027e620,
+	0x6f8c: 0x40024820, 0x6f8d: 0x40024a20, 0x6f8e: 0x40070e20, 0x6f8f: 0x40071020,
+	0x6f90: 0xae600000, 0x6f91: 0xae600000, 0x6f92: 0xae600000, 0x6f93: 0xae600000,
+	0x6f94: 0xae600000, 0x6f95: 0xae600000, 0x6f96: 0xae600000, 0x6f97: 0xae600000,
+	0x6f98: 0xa1e00000, 0x6f99: 0xa1f00000, 0x6f9a: 0xa2000000, 0x6f9b: 0x40026420,
+	0x6f9e: 0x40027020, 0x6f9f: 0x4002cc20,
+	0x6fa0: 0x403aa220, 0x6fa1: 0x40391c20, 0x6fa2: 0x40393a21, 0x6fa3: 0x40393a22,
+	0x6fa4: 0x403a7621, 0x6fa5: 0x40393a23, 0x6fa6: 0x403a9221, 0x6fa7: 0xc3470151,
+	0x6fa8: 0x40393c20, 0x6fa9: 0x403a6a21, 0x6faa: 0x40395620, 0x6fab: 0x40395820,
+	0x6fac: 0x40396420, 0x6fad: 0x40397220, 0x6fae: 0x40397420, 0x6faf: 0x40398820,
+	0x6fb0: 0x40398a20, 0x6fb1: 0x4039a420, 0x6fb2: 0x4039a620, 0x6fb3: 0x4039c620,
+	0x6fb4: 0x4039c820, 0x6fb5: 0x4039dc20, 0x6fb6: 0x4039de20, 0x6fb7: 0x4039e620,
+	0x6fb8: 0x4039e820, 0x6fb9: 0x4039ee20, 0x6fba: 0x4039f020, 0x6fbb: 0x403a3820,
+	0x6fbc: 0x403a3a20, 0x6fbd: 0x403a9c20, 0x6fbe: 0x403a9e20, 0x6fbf: 0x403aa020,
+	// Block 0x1bf, offset 0x6fc0
+	0x6fc0: 0xa0002302, 0x6fc1: 0x4039fc20, 0x6fc2: 0x403a1220, 0x6fc3: 0x403a1a20,
+	0x6fc4: 0x403a4020, 0x6fc5: 0x403a4e20, 0x6fc6: 0x403a5620, 0x6fc7: 0x403a6820,
+	0x6fc8: 0xc34b0171, 0x6fc9: 0x403a9222, 0x6fca: 0xc34d0171, 0x6fcb: 0xa1b0a202,
+	0x6fcc: 0xa1c0a502, 0x6fcd: 0xa1d0a902, 0x6fce: 0xa1e0ad02, 0x6fcf: 0xa1f0b202,
+	0x6fd0: 0xa200b602, 0x6fd1: 0xa210ba02, 0x6fd2: 0xa220bc02, 0x6fd3: 0xae60bd02,
+	0x6fd4: 0xae60be02, 0x6fd5: 0xadc0bf02, 0x6fd6: 0xadc0c102, 0x6fd7: 0xae60c202,
+	0x6fd8: 0xae60c302, 0x6fd9: 0xae60c402, 0x6fda: 0xae60c502, 0x6fdb: 0xae60c602,
+	0x6fdc: 0xadc0c702, 0x6fdd: 0xae60c802, 0x6fde: 0xae60c902, 0x6fdf: 0xadc0c002,
+	0x6fe0: 0xe000015e, 0x6fe1: 0xe00001e6, 0x6fe2: 0xe0000301, 0x6fe3: 0xe00003db,
+	0x6fe4: 0xe00004b6, 0x6fe5: 0xe0000580, 0x6fe6: 0xe000064b, 0x6fe7: 0xe00006f3,
+	0x6fe8: 0xe000079f, 0x6fe9: 0xe0000844, 0x6fea: 0x4004ee20, 0x6feb: 0x40024c20,
+	0x6fec: 0x40024e20, 0x6fed: 0x4004de20, 0x6fee: 0x40393a20, 0x6fef: 0x403a1020,
+	0x6ff0: 0xa230d102, 0x6ff1: 0x40392420, 0x6ff2: 0x40392220, 0x6ff3: 0x40392a20,
+	0x6ff4: 0x00391c84, 0x6ff5: 0xf0000404, 0x6ff6: 0xf0000404, 0x6ff7: 0xf0000404,
+	0x6ff8: 0xf0000404, 0x6ff9: 0x40395a20, 0x6ffa: 0x40395c20, 0x6ffb: 0x40393e20,
+	0x6ffc: 0x40395e20, 0x6ffd: 0x40396020, 0x6ffe: 0x40394020, 0x6fff: 0x40396220,
+	// Block 0x1c0, offset 0x7000
+	0x7000: 0xe00017e4, 0x7001: 0x403a6c20, 0x7002: 0xe00017e1, 0x7003: 0x403a6e20,
+	0x7004: 0x403a7620, 0x7005: 0x403a7820, 0x7006: 0x403a7a20, 0x7007: 0x403a7c20,
+	0x7008: 0x403a7e20, 0x7009: 0x403a8020, 0x700a: 0x403a8220, 0x700b: 0x403a8420,
+	0x700c: 0x403a9220, 0x700d: 0x403a9420, 0x700e: 0x403a9620, 0x700f: 0x403a8620,
+	0x7010: 0x403a9820, 0x7011: 0x403a9a20, 0x7012: 0x403aaa20, 0x7013: 0xe0001800,
+	0x7014: 0x4002e820, 0x7015: 0x403a7220, 0x7016: 0xae600000, 0x7017: 0xae600000,
+	0x7018: 0xae600000, 0x7019: 0xae600000, 0x701a: 0xae600000, 0x701b: 0xae600000,
+	0x701c: 0xae600000, 0x701d: 0xa0000000, 0x701e: 0x40071220, 0x701f: 0xae600000,
+	0x7020: 0xae600000, 0x7021: 0xae600000, 0x7022: 0xae600000, 0x7023: 0xadc00000,
+	0x7024: 0xae600000, 0x7025: 0x003a7483, 0x7026: 0x003a9083, 0x7027: 0xae600000,
+	0x7028: 0xae600000, 0x7029: 0x40071420, 0x702a: 0xadc00000, 0x702b: 0xae600000,
+	0x702c: 0xae600000, 0x702d: 0xadc00000, 0x702e: 0x40399e20, 0x702f: 0x4039ba20,
+	0x7030: 0xe0000161, 0x7031: 0xe00001e9, 0x7032: 0xe0000304, 0x7033: 0xe00003de,
+	0x7034: 0xe00004b9, 0x7035: 0xe0000583, 0x7036: 0xe000064e, 0x7037: 0xe00006f6,
+	0x7038: 0xe00007a2, 0x7039: 0xe0000847, 0x703a: 0x4039d020, 0x703b: 0x4039e420,
+	0x703c: 0x4039f420, 0x703d: 0xe0001553, 0x703e: 0xe0001779, 0x703f: 0x403a7020,
+	// Block 0x1c1, offset 0x7040
+	0x7041: 0x40491020, 0x7042: 0x40491220, 0x7043: 0x40491420,
+	0x7044: 0x40491620, 0x7045: 0x40491820, 0x7046: 0x40491a20, 0x7047: 0x40491c20,
+	0x7048: 0x40491e20, 0x7049: 0x40492020, 0x704a: 0x40492220, 0x704b: 0x40492420,
+	0x704c: 0x40492620, 0x704d: 0x40492820, 0x704e: 0x40492a20, 0x704f: 0x40492c20,
+	0x7050: 0x40492e20, 0x7051: 0x40493020, 0x7052: 0x40493220, 0x7053: 0x40493420,
+	0x7054: 0x40493620, 0x7055: 0x40493820, 0x7056: 0x40493a20, 0x7057: 0x40493c20,
+	0x7058: 0x40493e20, 0x7059: 0x40494020, 0x705a: 0x40494220, 0x705b: 0x40494420,
+	0x705c: 0x40494620, 0x705d: 0x40494820, 0x705e: 0x40494a20, 0x705f: 0x40494c20,
+	0x7060: 0x40494e20, 0x7061: 0x40495020, 0x7062: 0x40495220, 0x7063: 0x40495420,
+	0x7064: 0x40495620, 0x7065: 0x40495820, 0x7066: 0x40495a20, 0x7067: 0x40495c20,
+	0x7068: 0x40495e20, 0x7069: 0x40496020, 0x706a: 0x40496220, 0x706b: 0x40496420,
+	0x706c: 0x40496620, 0x706d: 0x40496820, 0x706e: 0x40496a20, 0x706f: 0x40496c20,
+	0x7070: 0x40496e20, 0x7071: 0x40497020, 0x7072: 0x40497220, 0x7073: 0x40497420,
+	0x7074: 0x40497620, 0x7075: 0x40497820, 0x7076: 0x40497a20, 0x7077: 0x40497c20,
+	0x7078: 0x826724bf, 0x7079: 0x826724c0, 0x707a: 0xa0002402,
+	0x707f: 0x4027f420,
+	// Block 0x1c2, offset 0x7080
+	0x7080: 0x4062ac20, 0x7081: 0xe00025cf, 0x7082: 0x4062b020, 0x7083: 0x4062b220,
+	0x7084: 0xe00025db, 0x7085: 0x4062b620, 0x7086: 0x4062b820, 0x7087: 0x4062ba20,
+	0x7088: 0xe00025f3, 0x7089: 0x4062be20, 0x708a: 0xe00025f9, 0x708b: 0x4062c220,
+	0x708c: 0x4062c420, 0x708d: 0xe00025fc, 0x708e: 0x4062c820, 0x708f: 0x4062ca20,
+	0x7090: 0x4062cc20, 0x7091: 0x4062ce20, 0x7092: 0x4062d020, 0x7093: 0x4062d220,
+	0x7094: 0x4062d420, 0x7095: 0x4062d620, 0x7096: 0x4062d820, 0x7097: 0x4062da20,
+	0x7098: 0x4062dc20, 0x7099: 0x4062de20, 0x709a: 0x4062e020, 0x709b: 0x4062e220,
+	0x709c: 0x4062e420, 0x709d: 0x4062e620, 0x709e: 0x4062e820, 0x709f: 0x4062ea20,
+	0x70a0: 0x4062ec20, 0x70a1: 0x4062ee20, 0x70a2: 0x4062f020, 0x70a3: 0x4062f220,
+	0x70a4: 0x4062f420, 0x70a5: 0x4062f620, 0x70a6: 0x4062f820, 0x70a7: 0x4062fa20,
+	0x70a8: 0x4062fc20, 0x70a9: 0x4062fe20, 0x70aa: 0x40630020, 0x70ab: 0x40630220,
+	0x70ac: 0x40630420, 0x70ad: 0x40630620, 0x70ae: 0x40630820, 0x70af: 0x40630a20,
+	0x70b0: 0x40630c20, 0x70b1: 0x40630e20, 0x70b2: 0x40631020, 0x70b3: 0x40631220,
+	0x70b4: 0x40631420, 0x70b5: 0x40631620, 0x70b6: 0x40631820, 0x70b7: 0x40631a20,
+	0x70b8: 0x40631c20, 0x70b9: 0x40631e20, 0x70ba: 0x40632020, 0x70bb: 0x40632220,
+	0x70bc: 0x40632420, 0x70bd: 0x40632620, 0x70be: 0x40632820, 0x70bf: 0x40632a20,
+	// Block 0x1c3, offset 0x70c0
+	0x70c0: 0x40632c20, 0x70c1: 0x40632e20, 0x70c2: 0x40633020, 0x70c3: 0x40633220,
+	0x70c4: 0x40633420, 0x70c5: 0x40633620, 0x70c6: 0x40633820, 0x70c7: 0x40633a20,
+	0x70c8: 0x40633c20, 0x70c9: 0x40633e20, 0x70ca: 0x40634020, 0x70cb: 0x40634220,
+	0x70cc: 0x40634420, 0x70cd: 0x40634620, 0x70ce: 0x40634820, 0x70cf: 0x40634a20,
+	0x70d0: 0x40634c20, 0x70d1: 0x40634e20, 0x70d2: 0x40635020, 0x70d3: 0x40635220,
+	0x70d4: 0x40635420, 0x70d5: 0x40635620, 0x70d6: 0x40635820, 0x70d7: 0x40635a20,
+	0x70d8: 0x40635c20, 0x70d9: 0x40635e20, 0x70da: 0x40636020, 0x70db: 0x40636220,
+	0x70dc: 0x40636420, 0x70dd: 0x40636620, 0x70de: 0x40636820, 0x70df: 0x4063a420,
+	0x70e0: 0x4063a620, 0x70e1: 0x4063a820, 0x70e2: 0xe00025ff, 0x70e3: 0x4063ac20,
+	0x70e4: 0xe0002602, 0x70e5: 0x4063b020, 0x70e6: 0xe0002605, 0x70e7: 0x4063b420,
+	0x70e8: 0xe0002608, 0x70e9: 0x4063b820, 0x70ea: 0xe000260b, 0x70eb: 0xe000260e,
+	0x70ec: 0xe0002612, 0x70ed: 0x4063c020, 0x70ee: 0x4063c220, 0x70ef: 0xe0002615,
+	0x70f0: 0xe0002618, 0x70f1: 0xe000261c, 0x70f2: 0x4063ca20, 0x70f3: 0x4063cc20,
+	0x70f4: 0x4063ce20, 0x70f5: 0x4063d020, 0x70f6: 0x4063d220, 0x70f7: 0x4063d420,
+	0x70f8: 0x4063d620, 0x70f9: 0x4063d820, 0x70fa: 0x4063da20, 0x70fb: 0x4063dc20,
+	0x70fc: 0x4063de20, 0x70fd: 0x4063e020, 0x70fe: 0x4063e220, 0x70ff: 0x4063e420,
+	// Block 0x1c4, offset 0x7100
+	0x7100: 0x4063e620, 0x7101: 0x4063e820, 0x7102: 0x4063ea20, 0x7103: 0x4063ec20,
+	0x7104: 0x4063ee20, 0x7105: 0x4063f020, 0x7106: 0x4063f220, 0x7107: 0x4063f420,
+	0x7108: 0x4063f620, 0x7109: 0x4063f820, 0x710a: 0x4063fa20, 0x710b: 0x4063fc20,
+	0x710c: 0x4063fe20, 0x710d: 0x40640020, 0x710e: 0x40640220, 0x710f: 0x40640420,
+	0x7110: 0x40640620, 0x7111: 0x40640820, 0x7112: 0x40640a20, 0x7113: 0x40640c20,
+	0x7114: 0x40640e20, 0x7115: 0x40641020, 0x7116: 0x40641220, 0x7117: 0x40641420,
+	0x7118: 0x40641620, 0x7119: 0x40641820, 0x711a: 0x40641a20, 0x711b: 0x40641c20,
+	0x711c: 0x40641e20, 0x711d: 0x40642020, 0x711e: 0x40642220, 0x711f: 0x40642420,
+	0x7120: 0x40642620, 0x7121: 0x40642820, 0x7122: 0x40642a20, 0x7123: 0x40642c20,
+	0x7124: 0x40642e20, 0x7125: 0x40643020, 0x7126: 0x40643220, 0x7127: 0x40643420,
+	0x7128: 0x4062ac20, 0x7129: 0xe00025cf, 0x712a: 0xe00025d2, 0x712b: 0x4062b020,
+	0x712c: 0xe00025d5, 0x712d: 0xe00025d8, 0x712e: 0x4062b220, 0x712f: 0x4062b620,
+	0x7130: 0xe00025de, 0x7131: 0xe00025e1, 0x7132: 0xe00025e4, 0x7133: 0xe00025e7,
+	0x7134: 0xe00025ea, 0x7135: 0xe00025ed, 0x7136: 0xe00025f0, 0x7137: 0x4062b820,
+	0x7138: 0x4062ba20, 0x7139: 0xe00025f6, 0x713a: 0x4062be20, 0x713b: 0xe00025f9,
+	0x713c: 0x4062c220, 0x713d: 0x4062c420, 0x713e: 0x4062c820, 0x713f: 0x4062ca20,
+	// Block 0x1c5, offset 0x7140
+	0x7140: 0x4062cc20, 0x7141: 0x4062ce20, 0x7142: 0x4062d020, 0x7143: 0x40649a20,
+	0x7144: 0x40649c20, 0x7145: 0x40649e20, 0x7146: 0x4064a020, 0x7147: 0x4064a220,
+	0x7148: 0x4064a420, 0x7149: 0x4064a620, 0x714a: 0x4064a820, 0x714b: 0x4064aa20,
+	0x714c: 0x4064ac20, 0x714d: 0x4064ae20, 0x714e: 0x4064b020, 0x714f: 0x4064b220,
+	0x7150: 0x4064b420, 0x7151: 0x4064b620, 0x7152: 0x4064b820, 0x7153: 0x4064ba20,
+	0x7154: 0x4064bc20, 0x7155: 0x4064be20, 0x7156: 0x4064c020, 0x7157: 0x4064c220,
+	0x7158: 0x4064c420, 0x7159: 0x4064c620, 0x715a: 0x4064c820, 0x715b: 0x4064ca20,
+	0x715c: 0x4064cc20, 0x715d: 0x4064ce20, 0x715e: 0x4064d020, 0x715f: 0x4064d220,
+	0x7160: 0x4064d420, 0x7161: 0x4064d620, 0x7162: 0x4064d820, 0x7163: 0x4064da20,
+	0x7164: 0x4064dc20, 0x7165: 0x4064de20, 0x7166: 0x4064e020, 0x7167: 0x4064e220,
+	0x7168: 0x4064e420, 0x7169: 0x4064e620, 0x716a: 0x4064e820, 0x716b: 0x4064ea20,
+	0x716c: 0x4064ec20, 0x716d: 0x4064ee20, 0x716e: 0x4064f020, 0x716f: 0x4064f220,
+	0x7170: 0x4064f420, 0x7171: 0x4064f620, 0x7172: 0x4064f820, 0x7173: 0x4064fa20,
+	0x7174: 0x4064fc20, 0x7175: 0x4064fe20, 0x7176: 0x40650020, 0x7177: 0x40650220,
+	0x7178: 0x40650420, 0x7179: 0x40650620, 0x717a: 0x40650820, 0x717b: 0x40650a20,
+	0x717c: 0x40650c20, 0x717d: 0x40650e20, 0x717e: 0x40651020, 0x717f: 0x40651220,
+	// Block 0x1c6, offset 0x7180
+	0x7180: 0xe00009b1, 0x7181: 0xe00009ae, 0x7182: 0xe0000a22, 0x7183: 0xe0000a1f,
+	0x7184: 0xe0000a28, 0x7185: 0xe0000a25, 0x7186: 0xe0000a2e, 0x7187: 0xe0000a2b,
+	0x7188: 0xe00024c2, 0x7189: 0xe00024bf, 0x718a: 0xe0000a8c, 0x718b: 0xe0000a89,
+	0x718c: 0xe0000a98, 0x718d: 0xe0000a95, 0x718e: 0xe0000aa4, 0x718f: 0xe0000aa1,
+	0x7190: 0xe0000a92, 0x7191: 0xe0000a8f, 0x7192: 0xe0000a9e, 0x7193: 0xe0000a9b,
+	0x7194: 0xe0000b55, 0x7195: 0xe0000b51, 0x7196: 0xe0000b4d, 0x7197: 0xe0000b49,
+	0x7198: 0xe0000b7c, 0x7199: 0xe0000b79, 0x719a: 0xe0000b82, 0x719b: 0xe0000b7f,
+	0x719c: 0xe0000b39, 0x719d: 0xe0000b35, 0x719e: 0xe0000b8c, 0x719f: 0xe0000b89,
+	0x71a0: 0xe0000bd0, 0x71a1: 0xe0000bcd, 0x71a2: 0xe0000c00, 0x71a3: 0xe0000bfd,
+	0x71a4: 0xe0000c0c, 0x71a5: 0xe0000c09, 0x71a6: 0xe0000bfa, 0x71a7: 0xe0000bf7,
+	0x71a8: 0xe0000c06, 0x71a9: 0xe0000c03, 0x71aa: 0xe0000c12, 0x71ab: 0xe0000c0f,
+	0x71ac: 0xe00024fc, 0x71ad: 0xe0000c7b, 0x71ae: 0xe00024e3, 0x71af: 0xe0000c46,
+	0x71b0: 0xe0000c93, 0x71b1: 0xe0000c90, 0x71b2: 0xe0000cab, 0x71b3: 0xe0000ca8,
+	0x71b4: 0xe0000cb1, 0x71b5: 0xe0000cae, 0x71b6: 0xe0000cde, 0x71b7: 0xe0000cdb,
+	0x71b8: 0xe0000ce5, 0x71b9: 0xe0000ce1, 0x71ba: 0xe0000cf2, 0x71bb: 0xe0000cef,
+	0x71bc: 0xe0000cec, 0x71bd: 0xe0000ce9, 0x71be: 0xe0000d1e, 0x71bf: 0xe0000d1b,
+	// Block 0x1c7, offset 0x71c0
+	0x71c0: 0xe0000d24, 0x71c1: 0xe0000d21, 0x71c2: 0xe0000d2a, 0x71c3: 0xe0000d27,
+	0x71c4: 0xe0000d69, 0x71c5: 0xe0000d66, 0x71c6: 0xe0000d7b, 0x71c7: 0xe0000d78,
+	0x71c8: 0xe0000d87, 0x71c9: 0xe0000d84, 0x71ca: 0xe0000d81, 0x71cb: 0xe0000d7e,
+	0x71cc: 0xe0000ded, 0x71cd: 0xe0000de9, 0x71ce: 0xe000251b, 0x71cf: 0xe0002518,
+	0x71d0: 0xe0000e3d, 0x71d1: 0xe0000e39, 0x71d2: 0xe0000e35, 0x71d3: 0xe0000e31,
+	0x71d4: 0xe0000ea7, 0x71d5: 0xe0000ea4, 0x71d6: 0xe0000ead, 0x71d7: 0xe0000eaa,
+	0x71d8: 0xe0000ed6, 0x71d9: 0xe0000ed3, 0x71da: 0xe0000ef4, 0x71db: 0xe0000ef1,
+	0x71dc: 0xe0000efb, 0x71dd: 0xe0000ef7, 0x71de: 0xe0000f02, 0x71df: 0xe0000eff,
+	0x71e0: 0xe0000f41, 0x71e1: 0xe0000f3e, 0x71e2: 0xe0000f53, 0x71e3: 0xe0000f50,
+	0x71e4: 0xe0000f26, 0x71e5: 0xe0000f22, 0x71e6: 0xe0000f3a, 0x71e7: 0xe0000f36,
+	0x71e8: 0xe0000f5a, 0x71e9: 0xe0000f56, 0x71ea: 0xe0000f93, 0x71eb: 0xe0000f90,
+	0x71ec: 0xe0000f9f, 0x71ed: 0xe0000f9c, 0x71ee: 0xe0000fb1, 0x71ef: 0xe0000fae,
+	0x71f0: 0xe0000fab, 0x71f1: 0xe0000fa8, 0x71f2: 0xe0001093, 0x71f3: 0xe0001090,
+	0x71f4: 0xe000109f, 0x71f5: 0xe000109c, 0x71f6: 0xe0001099, 0x71f7: 0xe0001096,
+	0x71f8: 0xe0001032, 0x71f9: 0xe000102e, 0x71fa: 0xe0002539, 0x71fb: 0xe0002536,
+	0x71fc: 0xe00010a9, 0x71fd: 0xe00010a6, 0x71fe: 0xe00010af, 0x71ff: 0xe00010ac,
+	// Block 0x1c8, offset 0x7200
+	0x7200: 0xe00010d2, 0x7201: 0xe00010cf, 0x7202: 0xe00010cc, 0x7203: 0xe00010c9,
+	0x7204: 0xe00010e1, 0x7205: 0xe00010de, 0x7206: 0xe00010e7, 0x7207: 0xe00010e4,
+	0x7208: 0xe00010ed, 0x7209: 0xe00010ea, 0x720a: 0xe00024ce, 0x720b: 0xe00024cb,
+	0x720c: 0xe00024c8, 0x720d: 0xe00024c5, 0x720e: 0xe0001123, 0x720f: 0xe0001120,
+	0x7210: 0xe0001141, 0x7211: 0xe000113e, 0x7212: 0xe0001153, 0x7213: 0xe0001150,
+	0x7214: 0xe0001159, 0x7215: 0xe0001156, 0x7216: 0xe0000c15, 0x7217: 0xe0000f8d,
+	0x7218: 0xe00010db, 0x7219: 0xe0001111, 0x721a: 0xf0000404, 0x721b: 0xe0000f70,
+	0x721c: 0x40300420, 0x721d: 0x40300620, 0x721e: 0xe0000f7f, 0x721f: 0x402c9620,
+	0x7220: 0xe000099b, 0x7221: 0xe0000998, 0x7222: 0xe0000989, 0x7223: 0xe0000986,
+	0x7224: 0xe0000928, 0x7225: 0xe0000924, 0x7226: 0xe0000930, 0x7227: 0xe000092c,
+	0x7228: 0xe0000940, 0x7229: 0xe000093c, 0x722a: 0xe0000938, 0x722b: 0xe0000934,
+	0x722c: 0xe00009aa, 0x722d: 0xe00009a6, 0x722e: 0xe0000902, 0x722f: 0xe00008fe,
+	0x7230: 0xe000090a, 0x7231: 0xe0000906, 0x7232: 0xe000091a, 0x7233: 0xe0000916,
+	0x7234: 0xe0000912, 0x7235: 0xe000090e, 0x7236: 0xe00009a2, 0x7237: 0xe000099e,
+	0x7238: 0xe0000b6e, 0x7239: 0xe0000b6b, 0x723a: 0xe0000b5c, 0x723b: 0xe0000b59,
+	0x723c: 0xe0000b26, 0x723d: 0xe0000b23, 0x723e: 0xe0000afb, 0x723f: 0xe0000af7,
+	// Block 0x1c9, offset 0x7240
+	0x7240: 0xe0000b03, 0x7241: 0xe0000aff, 0x7242: 0xe0000b13, 0x7243: 0xe0000b0f,
+	0x7244: 0xe0000b0b, 0x7245: 0xe0000b07, 0x7246: 0xe0000b75, 0x7247: 0xe0000b71,
+	0x7248: 0xe00024f0, 0x7249: 0xe0000c63, 0x724a: 0xe00024f9, 0x724b: 0xe0000c75,
+	0x724c: 0xe0000e84, 0x724d: 0xe0000e81, 0x724e: 0xe0000e44, 0x724f: 0xe0000e41,
+	0x7250: 0xe0000dad, 0x7251: 0xe0000da9, 0x7252: 0xe0000db5, 0x7253: 0xe0000db1,
+	0x7254: 0xe0000dc5, 0x7255: 0xe0000dc1, 0x7256: 0xe0000dbd, 0x7257: 0xe0000db9,
+	0x7258: 0xe0000e8b, 0x7259: 0xe0000e87, 0x725a: 0xe0000e5d, 0x725b: 0xe0000e59,
+	0x725c: 0xe0000e65, 0x725d: 0xe0000e61, 0x725e: 0xe0000e75, 0x725f: 0xe0000e71,
+	0x7260: 0xe0000e6d, 0x7261: 0xe0000e69, 0x7262: 0xe0000e7d, 0x7263: 0xe0000e79,
+	0x7264: 0xe000108d, 0x7265: 0xe000108a, 0x7266: 0xe000104d, 0x7267: 0xe000104a,
+	0x7268: 0xe0001066, 0x7269: 0xe0001062, 0x726a: 0xe000106e, 0x726b: 0xe000106a,
+	0x726c: 0xe000107e, 0x726d: 0xe000107a, 0x726e: 0xe0001076, 0x726f: 0xe0001072,
+	0x7270: 0xe0001086, 0x7271: 0xe0001082, 0x7272: 0xe0001108, 0x7273: 0xe0001105,
+	0x7274: 0xe0001135, 0x7275: 0xe0001132, 0x7276: 0xe000112f, 0x7277: 0xe000112c,
+	0x7278: 0xe000111d, 0x7279: 0xe000111a, 0x727a: 0xe0000d0a, 0x727b: 0xe0000d07,
+	0x727c: 0x0030d888, 0x727d: 0x4030d820, 0x727e: 0x00312088, 0x727f: 0x40312020,
+	// Block 0x1ca, offset 0x7280
+	0x7280: 0x00093685, 0x7281: 0x40083620, 0x7282: 0x40083820, 0x7283: 0x40083a20,
+	0x7284: 0x40083c20, 0x7285: 0x002c628b, 0x7286: 0x002c6285, 0x7287: 0x002c9885,
+	0x7288: 0x002d9a85, 0x7289: 0x002dcc85, 0x728a: 0x40083e20, 0x728b: 0x400a6e20,
+	0x728c: 0x40084020, 0x728d: 0xe00009c4, 0x728e: 0x402d1e20, 0x728f: 0x40084220,
+	0x7290: 0xe00002cb, 0x7291: 0xe00002d3, 0x7292: 0xe00002b2, 0x7293: 0xe00002bb,
+	0x7294: 0xe00003cd, 0x7295: 0xe00002c3, 0x7296: 0xe00003d1, 0x7297: 0xe00004ab,
+	0x7298: 0xe0000579, 0x7299: 0xe00002c7, 0x729a: 0xe0000640, 0x729b: 0xe00002cf,
+	0x729c: 0xe00004af, 0x729d: 0xe0000644, 0x729e: 0xe0000798, 0x729f: 0xf0001e1e,
+	0x72a0: 0x002d9a8a, 0x72a1: 0xe00024ff, 0x72a2: 0xe0002502, 0x72a3: 0xe000250c,
+	0x72a4: 0x0030be8a, 0x72a5: 0xe000253c, 0x72a6: 0xe000253f, 0x72a7: 0xe00010bb,
+	0x72a8: 0xe0002512, 0x72a9: 0x0030f68a, 0x72aa: 0xe0002546, 0x72ab: 0xe000254d,
+	0x72ac: 0x002e228a, 0x72ad: 0x002c3a8a, 0x72ae: 0x002c628a, 0x72af: 0x002e828a,
+	0x72b0: 0x002d9a84, 0x72b1: 0xf0001f04, 0x72b2: 0xf0000404, 0x72b3: 0xf0001f04,
+	0x72b4: 0x0030be84, 0x72b5: 0xf0001f04, 0x72b6: 0xf0000404, 0x72b7: 0xe00010b6,
+	0x72b8: 0xe000250f, 0x72b9: 0x0030f684, 0x72ba: 0xe0002543, 0x72bb: 0xe0002549,
+	0x72bc: 0x002e2284, 0x72bd: 0x002c3a84, 0x72be: 0x002c6284, 0x72bf: 0x002e8284,
+	// Block 0x1cb, offset 0x72c0
+	0x72c0: 0x4009a620, 0x72c1: 0xe00000f5, 0x72c2: 0x4009a820, 0x72c3: 0x4009aa20,
+	0x72c4: 0xe00000f8, 0x72c5: 0x4009ac20, 0x72c6: 0x4009ae20, 0x72c7: 0xe00000fb,
+	0x72c8: 0x4009b020, 0x72c9: 0xe00000fe, 0x72ca: 0x4009b220, 0x72cb: 0x4009b420,
+	0x72cc: 0x4009b620, 0x72cd: 0x4009b820, 0x72ce: 0x4009ba20, 0x72cf: 0x4009bc20,
+	0x72d0: 0x4009be20, 0x72d1: 0x4009c020, 0x72d2: 0x4009c220, 0x72d3: 0x4009c420,
+	0x72d4: 0x4009c620, 0x72d5: 0x4009c820, 0x72d6: 0x4009ca20, 0x72d7: 0x4009cc20,
+	0x72d8: 0x4009ce20, 0x72d9: 0x4009d020, 0x72da: 0x4009d220, 0x72db: 0x4009d420,
+	0x72dc: 0x4009d620, 0x72dd: 0x4009d820, 0x72de: 0x4009da20, 0x72df: 0x4009dc20,
+	0x72e0: 0x40094420, 0x72e1: 0x4009de20, 0x72e2: 0xe0000104, 0x72e3: 0x4009e020,
+	0x72e4: 0x4009e220, 0x72e5: 0x4009e420, 0x72e6: 0x4009e620, 0x72e7: 0x4009e820,
+	0x72e8: 0x4009ea20, 0x72e9: 0x4009ec20, 0x72ea: 0x4009ee20, 0x72eb: 0x4009f020,
+	0x72ec: 0x4009f220, 0x72ed: 0xe0000101, 0x72ee: 0xe00000e1, 0x72ef: 0xe00000e7,
+	0x72f0: 0xe0000107, 0x72f1: 0xe000010a, 0x72f2: 0x4009f420, 0x72f3: 0x4009f620,
+	0x72f4: 0xe000010d, 0x72f5: 0xe0000110, 0x72f6: 0x4009f820, 0x72f7: 0x4009fa20,
+	0x72f8: 0xe0000113, 0x72f9: 0xe0000116, 0x72fa: 0x4009fc20, 0x72fb: 0x4009fe20,
+	0x72fc: 0x400a0020, 0x72fd: 0x400a0220, 0x72fe: 0x400a0420, 0x72ff: 0x400a0620,
+	// Block 0x1cc, offset 0x7300
+	0x7300: 0xe0000024, 0x7301: 0xe0000029, 0x7302: 0xe000002e, 0x7303: 0xe0000033,
+	0x7304: 0xe0000038, 0x7305: 0xe000003d, 0x7306: 0xe0000042, 0x7307: 0xe0000047,
+	0x7308: 0xf0001f04, 0x7309: 0xf0001f04, 0x730a: 0xf0001f04, 0x730b: 0xf0001f04,
+	0x730c: 0xf0001f04, 0x730d: 0xf0001f04, 0x730e: 0xf0001f04, 0x730f: 0xf0001f04,
+	0x7310: 0xf0001f04, 0x7311: 0xf0000404, 0x7312: 0xf0000404, 0x7313: 0xf0000404,
+	0x7314: 0xf0000404, 0x7315: 0xf0000404, 0x7316: 0xf0000404, 0x7317: 0xf0000404,
+	0x7318: 0xf0000404, 0x7319: 0xf0000404, 0x731a: 0xf0000404, 0x731b: 0xf0000404,
+	0x731c: 0xf0000404, 0x731d: 0xf0000404, 0x731e: 0xf0000404, 0x731f: 0xf0000404,
+	0x7320: 0xf0000404, 0x7321: 0xf0000404, 0x7322: 0xf0000404, 0x7323: 0xf0000404,
+	0x7324: 0xf0000404, 0x7325: 0xf0000404, 0x7326: 0xf0000404, 0x7327: 0xf0000404,
+	0x7328: 0xf0000404, 0x7329: 0xf0000404, 0x732a: 0xf0000404, 0x732b: 0xf0000404,
+	0x732c: 0xe00024ac, 0x732d: 0xf0000404, 0x732e: 0xf0000404, 0x732f: 0xf0000404,
+	0x7330: 0xf0000404, 0x7331: 0xf0000404, 0x7332: 0xf0000404, 0x7333: 0xe00024b4,
+	0x7334: 0xf0000404, 0x7335: 0xf0000404, 0x7336: 0x002bde8c, 0x7337: 0x002c0a8c,
+	0x7338: 0x002c3a8c, 0x7339: 0x002c628c, 0x733a: 0x002c988c, 0x733b: 0x002d088c,
+	0x733c: 0x002d228c, 0x733d: 0x002d688c, 0x733e: 0x002d9a8c, 0x733f: 0x002dcc8c,
+	// Block 0x1cd, offset 0x7340
+	0x7340: 0xe000230b, 0x7341: 0xe00022f8, 0x7342: 0xe00022fc, 0x7343: 0xe0002311,
+	0x7344: 0xe0002316, 0x7345: 0xe000231d, 0x7346: 0xe0002321, 0x7347: 0xe0002325,
+	0x7348: 0xe000232b, 0x7349: 0xf0001c1c, 0x734a: 0xe0002330, 0x734b: 0xe000233c,
+	0x734c: 0xe0002340, 0x734d: 0xe0002337, 0x734e: 0xe0002346, 0x734f: 0xe000234b,
+	0x7350: 0xe000234f, 0x7351: 0xe0002353, 0x7352: 0xf0001c1c, 0x7353: 0xe000235e,
+	0x7354: 0xe0002358, 0x7355: 0xf0001c1c, 0x7356: 0xe0002363, 0x7357: 0xe000236d,
+	0x7358: 0xf0001f04, 0x7359: 0xf0001f04, 0x735a: 0xf0001f04, 0x735b: 0xf0001f04,
+	0x735c: 0xf0001f04, 0x735d: 0xf0001f04, 0x735e: 0xf0001f04, 0x735f: 0xf0001f04,
+	0x7360: 0xf0001f04, 0x7361: 0xf0001f04, 0x7362: 0xf0000404, 0x7363: 0xf0000404,
+	0x7364: 0xf0000404, 0x7365: 0xf0000404, 0x7366: 0xf0000404, 0x7367: 0xf0000404,
+	0x7368: 0xf0000404, 0x7369: 0xf0000404, 0x736a: 0xf0000404, 0x736b: 0xf0000404,
+	0x736c: 0xf0000404, 0x736d: 0xf0000404, 0x736e: 0xf0000404, 0x736f: 0xf0000404,
+	0x7370: 0xf0000404, 0x7371: 0xe0000c1e, 0x7372: 0xf0001c1c, 0x7373: 0xf0001d1d,
+	0x7374: 0xe0000a31, 0x7375: 0xf0001d1c, 0x7376: 0xf0001c1c, 0x7377: 0xf0001c1c,
+	0x7378: 0xe0000ac2, 0x7379: 0xe0000ac6, 0x737a: 0xe0002509, 0x737b: 0xf0001c1c,
+	0x737c: 0xf0001c1c, 0x737d: 0xf0001c1c, 0x737e: 0xf0001c1c, 0x737f: 0xe0002431,
+	// Block 0x1ce, offset 0x7380
+	0x7380: 0xf0001d1c, 0x7381: 0xf0001d1d, 0x7382: 0xe00009b7, 0x7383: 0xe00024bc,
+	0x7384: 0xf0001c1c, 0x7385: 0xf0001c1c, 0x7386: 0xe0000a66, 0x7387: 0xe0000a7a,
+	0x7388: 0xf0001d1c, 0x7389: 0xf0001c1d, 0x738a: 0xf0001c1c, 0x738b: 0xf0001d1d,
+	0x738c: 0xf0001c1c, 0x738d: 0xf0001d1d, 0x738e: 0xf0001d1d, 0x738f: 0xf0001c1c,
+	0x7390: 0xf0001c1c, 0x7391: 0xf0001c1c, 0x7392: 0xe0000d0d, 0x7393: 0xe0002515,
+	0x7394: 0xf0001c1c, 0x7395: 0xe0000d3a, 0x7396: 0xe0000d46, 0x7397: 0xf0001d1d,
+	0x7398: 0xe0000eb0, 0x7399: 0xe0000eb8, 0x739a: 0xf0001d1d, 0x739b: 0xf0001c1c,
+	0x739c: 0xf0001c1d, 0x739d: 0xf0001c1d, 0x739e: 0xe00010b2, 0x739f: 0xe00009c8,
+	0x73a0: 0xf0001f04, 0x73a1: 0xf0001f04, 0x73a2: 0xf0001f04, 0x73a3: 0xf0001f04,
+	0x73a4: 0xf0001f04, 0x73a5: 0xf0001f04, 0x73a6: 0xf0001f04, 0x73a7: 0xf0001f04,
+	0x73a8: 0xf0001f04, 0x73a9: 0xf0000404, 0x73aa: 0xf0000404, 0x73ab: 0xf0000404,
+	0x73ac: 0xf0000404, 0x73ad: 0xf0000404, 0x73ae: 0xf0000404, 0x73af: 0xf0000404,
+	0x73b0: 0xf0000404, 0x73b1: 0xf0000404, 0x73b2: 0xf0000404, 0x73b3: 0xf0000404,
+	0x73b4: 0xf0000404, 0x73b5: 0xf0000404, 0x73b6: 0xf0000404, 0x73b7: 0xf0000404,
+	0x73b8: 0xf0000404, 0x73b9: 0xf0000404, 0x73ba: 0xf0000404, 0x73bb: 0xf0000404,
+	0x73bc: 0xf0000404, 0x73bd: 0xf0000404, 0x73be: 0xf0000404, 0x73bf: 0xe0000bdf,
+	// Block 0x1cf, offset 0x73c0
+	0x73c0: 0x40073420, 0x73c1: 0x40073620,
+	0x73d3: 0x003a269a,
+	0x73d4: 0x003a2699, 0x73d5: 0x003a2697, 0x73d6: 0x003a2698, 0x73d7: 0x003a7c9a,
+	0x73d8: 0x003a7c99, 0x73d9: 0x003a7a9a, 0x73da: 0x003a7a99, 0x73db: 0x003a7e9a,
+	0x73dc: 0x003a7e99, 0x73dd: 0xf0001a1a, 0x73de: 0x003a849a, 0x73df: 0x003a8499,
+	0x73e0: 0x003a789a, 0x73e1: 0x003a7899, 0x73e2: 0x003a809a, 0x73e3: 0x003a8099,
+	0x73e4: 0x003a989a, 0x73e5: 0x003a9899, 0x73e6: 0x003a9897, 0x73e7: 0x003a9898,
+	0x73e8: 0x003a92c3, 0x73e9: 0x003a92c4, 0x73ea: 0xe0001559, 0x73eb: 0xe0001556,
+	0x73ec: 0xe0001589, 0x73ed: 0xe0001586, 0x73ee: 0xe000158f, 0x73ef: 0xe000158c,
+	0x73f0: 0xe000159b, 0x73f1: 0xe0001598, 0x73f2: 0xe0001595, 0x73f3: 0xe0001592,
+	0x73f4: 0xe00015a1, 0x73f5: 0xe000159e, 0x73f6: 0xe00015bf, 0x73f7: 0xe00015bc,
+	0x73f8: 0xe00015b9, 0x73f9: 0xe00015ad, 0x73fa: 0xe00015a7, 0x73fb: 0xe00015a4,
+	0x73fc: 0x003a929a, 0x73fd: 0x003a9299, 0x73fe: 0x003a9297, 0x73ff: 0x003a9298,
+	// Block 0x1d0, offset 0x7400
+	0x7400: 0xe000155f, 0x7401: 0xe0001565, 0x7402: 0xe000157a, 0x7403: 0xe00015b0,
+	0x7404: 0xe00015b6, 0x7405: 0xf0001a1a, 0x7406: 0xf0001a1a, 0x7407: 0xf0001a1a,
+	0x7408: 0xf0001a1a, 0x7409: 0xe0002554, 0x740a: 0xf0001a1a, 0x740b: 0xf0001a1a,
+	0x740c: 0xf0001a1a, 0x740d: 0xf0001a1a, 0x740e: 0xf0001a1a, 0x740f: 0xe000255a,
+	0x7410: 0xf0001a1a, 0x7411: 0xf0001a1a, 0x7412: 0xf0001a1a, 0x7413: 0xe0002560,
+	0x7414: 0xf0001a1a, 0x7415: 0xf0001a1a, 0x7416: 0xf0001a1a, 0x7417: 0xf0001a1a,
+	0x7418: 0xf0001a1a, 0x7419: 0xf0001a1a, 0x741a: 0xf0001a1a, 0x741b: 0xf0001a1a,
+	0x741c: 0xf0001a1a, 0x741d: 0xf0001a1a, 0x741e: 0xf0001a1a, 0x741f: 0xf0001a1a,
+	0x7420: 0xf0001a1a, 0x7421: 0xf0001a1a, 0x7422: 0xf0001a1a, 0x7423: 0xf0001a1a,
+	0x7424: 0xf0001a1a, 0x7425: 0xf0001a1a, 0x7426: 0xf0001a1a, 0x7427: 0xf0001a1a,
+	0x7428: 0xf0001a1a, 0x7429: 0xf0001a1a, 0x742a: 0xf0001a1a, 0x742b: 0xf0001a1a,
+	0x742c: 0xf0001a1a, 0x742d: 0xf0001a1a, 0x742e: 0xf0001a1a, 0x742f: 0xf0001a1a,
+	0x7430: 0xf0001a1a, 0x7431: 0xe00025a2, 0x7432: 0xf0001a1a, 0x7433: 0xf0001a1a,
+	0x7434: 0xf0001a1a, 0x7435: 0xe00025a8, 0x7436: 0xf0001a1a, 0x7437: 0xf0001a1a,
+	0x7438: 0xf0001a1a, 0x7439: 0xf0001a1a, 0x743a: 0xf0001a1a, 0x743b: 0xf0001a1a,
+	0x743c: 0xf0001a1a, 0x743d: 0xe00025ae, 0x743e: 0xf0001a1a, 0x743f: 0xf0001a1a,
+	// Block 0x1d1, offset 0x7440
+	0x7440: 0xf0001a1a, 0x7441: 0xf0001a1a, 0x7442: 0xf0001a1a, 0x7443: 0xe00025b4,
+	0x7444: 0xf0001a1a, 0x7445: 0xf0001a1a, 0x7446: 0xf0001a1a, 0x7447: 0xf0001a1a,
+	0x7448: 0xf0001a1a, 0x7449: 0xe00025b7, 0x744a: 0xf0001a1a, 0x744b: 0xf0001a1a,
+	0x744c: 0xf0001a1a, 0x744d: 0xf0001a1a, 0x744e: 0xf0001a1a, 0x744f: 0xe00025bd,
+	0x7450: 0xf0001a1a, 0x7451: 0xf0001a1a, 0x7452: 0xf0001a1a, 0x7453: 0xe00025c0,
+	0x7454: 0xf0001a1a, 0x7455: 0xf0001a1a, 0x7456: 0xf0001a1a, 0x7457: 0xf0001a1a,
+	0x7458: 0xf0001a1a, 0x7459: 0xe00025cc, 0x745a: 0xf0001a1a, 0x745b: 0xf0001a1a,
+	0x745c: 0xf0001a1a, 0x745d: 0xe00025c6, 0x745e: 0xe0000003, 0x745f: 0xe0000006,
+	0x7460: 0xe0000009, 0x7461: 0xe000000c, 0x7462: 0xe000000f, 0x7463: 0xe0000012,
+	0x7464: 0xe000156b, 0x7465: 0xe000156e, 0x7466: 0xe0001577, 0x7467: 0xe000157d,
+	0x7468: 0xe00015aa, 0x7469: 0xe00015b3, 0x746a: 0xf0001919, 0x746b: 0xf0001919,
+	0x746c: 0xf0001919, 0x746d: 0xf0001919, 0x746e: 0xe0002551, 0x746f: 0xf0001919,
+	0x7470: 0xf0001919, 0x7471: 0xf0001919, 0x7472: 0xf0001919, 0x7473: 0xf0001919,
+	0x7474: 0xe0002557, 0x7475: 0xf0001919, 0x7476: 0xf0001919, 0x7477: 0xf0001919,
+	0x7478: 0xf0001919, 0x7479: 0xf0001919, 0x747a: 0xe000255d, 0x747b: 0xf0001919,
+	0x747c: 0xe000259f, 0x747d: 0xf0001919, 0x747e: 0xe00025a5, 0x747f: 0xf0001919,
+	// Block 0x1d2, offset 0x7480
+	0x7480: 0xf0001919, 0x7481: 0xf0001919, 0x7482: 0xf0001919, 0x7483: 0xe00025ab,
+	0x7484: 0xf0001919, 0x7485: 0xf0001919, 0x7486: 0xe00025b1, 0x7487: 0xf0001919,
+	0x7488: 0xf0001919, 0x7489: 0xf0001919, 0x748a: 0xf0001919, 0x748b: 0xf0001919,
+	0x748c: 0xf0001919, 0x748d: 0xf0001919, 0x748e: 0xe00025ba, 0x748f: 0xf0001919,
+	0x7490: 0xe00025c3, 0x7491: 0xf0001919, 0x7492: 0xf0001919, 0x7493: 0xf0001919,
+	0x7494: 0xf0001919, 0x7495: 0xe00025c9, 0x7496: 0xf0001919, 0x7497: 0xe000155c,
+	0x7498: 0xe0001562, 0x7499: 0xe0001568, 0x749a: 0xe0001571, 0x749b: 0xe0001580,
+	0x749c: 0xf0001717, 0x749d: 0xf0001717, 0x749e: 0xf0001717, 0x749f: 0xf0001717,
+	0x74a0: 0xf0001717, 0x74a1: 0xf0001717, 0x74a2: 0xf0001717, 0x74a3: 0xf0001717,
+	0x74a4: 0xf0001717, 0x74a5: 0xf0001717, 0x74a6: 0xf0001717, 0x74a7: 0xf0001717,
+	0x74a8: 0xf0001717, 0x74a9: 0xf0001717, 0x74aa: 0xf0001717, 0x74ab: 0xf0001717,
+	0x74ac: 0xf0001717, 0x74ad: 0xf0001717, 0x74ae: 0xf0001717, 0x74af: 0xf0001717,
+	0x74b0: 0xf0001717, 0x74b1: 0xf0001717, 0x74b2: 0xf0001717, 0x74b3: 0xf0001717,
+	0x74b4: 0xf0001717, 0x74b5: 0xf0001717, 0x74b6: 0xf0001717, 0x74b7: 0xf0001717,
+	0x74b8: 0xf0001717, 0x74b9: 0xf0001717, 0x74ba: 0xf0001717, 0x74bb: 0xf0001717,
+	0x74bc: 0xf0001717, 0x74bd: 0xf0001717, 0x74be: 0xf0001717, 0x74bf: 0xf0001717,
+	// Block 0x1d3, offset 0x74c0
+	0x74c0: 0xf0001717, 0x74c1: 0xf0001717, 0x74c2: 0xf0001717, 0x74c3: 0xf0001717,
+	0x74c4: 0xf0001717, 0x74c5: 0xf0001717, 0x74c6: 0xf0001717, 0x74c7: 0xf0001717,
+	0x74c8: 0xf0001717, 0x74c9: 0xf0001717, 0x74ca: 0xf0001717, 0x74cb: 0xf0001717,
+	0x74cc: 0xf0001717, 0x74cd: 0xf0001717, 0x74ce: 0xf0001717, 0x74cf: 0xf0001717,
+	0x74d0: 0xf0001717, 0x74d1: 0xf0001717, 0x74d2: 0xf0001717, 0x74d3: 0xf0001717,
+	0x74d4: 0xf0001717, 0x74d5: 0xf0001717, 0x74d6: 0xf0001717, 0x74d7: 0xf0001717,
+	0x74d8: 0xf0001717, 0x74d9: 0xf0001717, 0x74da: 0xf0001717, 0x74db: 0xf0001717,
+	0x74dc: 0xf0001717, 0x74dd: 0xf0001717, 0x74de: 0xf0001717, 0x74df: 0xe0001574,
+	0x74e0: 0xe0001583, 0x74e1: 0xf0001818, 0x74e2: 0xf0001818, 0x74e3: 0xf0001818,
+	0x74e4: 0xf0001818, 0x74e5: 0xf0001818, 0x74e6: 0xf0001818, 0x74e7: 0xf0001818,
+	0x74e8: 0xf0001818, 0x74e9: 0xf0001818, 0x74ea: 0xf0001818, 0x74eb: 0xf0001818,
+	0x74ec: 0xf0001818, 0x74ed: 0xf0001818, 0x74ee: 0xf0001818, 0x74ef: 0xf0001818,
+	0x74f0: 0xf0001818, 0x74f1: 0xf0001818, 0x74f2: 0xe000249f, 0x74f3: 0xe00024a2,
+	0x74f4: 0xe00024a5, 0x74f5: 0xe0002590, 0x74f6: 0xf0001a1a, 0x74f7: 0xe0002596,
+	0x74f8: 0xf0001a1a, 0x74f9: 0xe000259c, 0x74fa: 0xf0001a1a, 0x74fb: 0xe0002578,
+	0x74fc: 0xf0001a1a, 0x74fd: 0xe000257e, 0x74fe: 0xf0001a1a, 0x74ff: 0xe000256c,
+	// Block 0x1d4, offset 0x7500
+	0x7500: 0xf0001a1a, 0x7501: 0xe0002566, 0x7502: 0xf0001a1a, 0x7503: 0xe0002572,
+	0x7504: 0xf0001a1a, 0x7505: 0xe0002584, 0x7506: 0xf0001a1a, 0x7507: 0xe000258a,
+	0x7508: 0xf0001a1a, 0x7509: 0xf0001a1a, 0x750a: 0xf0001a1a, 0x750b: 0xf0001a1a,
+	0x750c: 0xf0001a1a, 0x750d: 0xf0001a1a, 0x750e: 0xf0001a1a, 0x750f: 0xf0001a1a,
+	0x7510: 0xf0001a1a, 0x7511: 0xe000258d, 0x7512: 0xf0001919, 0x7513: 0xe0002593,
+	0x7514: 0xf0001919, 0x7515: 0xe0002599, 0x7516: 0xf0001919, 0x7517: 0xe0002575,
+	0x7518: 0xf0001919, 0x7519: 0xe000257b, 0x751a: 0xf0001919, 0x751b: 0xe0002569,
+	0x751c: 0xf0001919, 0x751d: 0xe0002563, 0x751e: 0xf0001919, 0x751f: 0xe000256f,
+	0x7520: 0xf0001919, 0x7521: 0xe0002581, 0x7522: 0xf0001919, 0x7523: 0xe0002587,
+	0x7524: 0xf0001919, 0x7525: 0xf0001919, 0x7526: 0xf0001919, 0x7527: 0xf0001919,
+	0x7528: 0xf0001919, 0x7529: 0xf0001919, 0x752a: 0xf0001919, 0x752b: 0xf0001919,
+	0x752c: 0xf0001919, 0x752d: 0xf0001717, 0x752e: 0xf0001717, 0x752f: 0xf0001717,
+	0x7530: 0xf0001717, 0x7531: 0xf0001717, 0x7532: 0xf0001717, 0x7533: 0xf0001717,
+	0x7534: 0xf0001818, 0x7535: 0xf0001818, 0x7536: 0xf0001818, 0x7537: 0xf0001818,
+	0x7538: 0xf0001818, 0x7539: 0xf0001818, 0x753a: 0xf0001818, 0x753b: 0xf0001818,
+	0x753c: 0xf0001919, 0x753d: 0xf0001a1a, 0x753e: 0x4004c020, 0x753f: 0x4004c220,
+	// Block 0x1d5, offset 0x7540
+	0x7540: 0x00391c9a, 0x7541: 0x00393aa4, 0x7542: 0x00393aa3, 0x7543: 0x00393ac4,
+	0x7544: 0x00393ac3, 0x7545: 0x003a76a4, 0x7546: 0x003a76a3, 0x7547: 0x00393ae4,
+	0x7548: 0x00393ae3, 0x7549: 0x003a92a6, 0x754a: 0x003a92a5, 0x754b: 0x003a92a3,
+	0x754c: 0x003a92a4, 0x754d: 0x00393884, 0x754e: 0x00393883, 0x754f: 0x00393c9a,
+	0x7550: 0x00393c99, 0x7551: 0x00393c97, 0x7552: 0x00393c98, 0x7553: 0x003a6aa4,
+	0x7554: 0x003a6aa3, 0x7555: 0x0039569a, 0x7556: 0x00395699, 0x7557: 0x00395697,
+	0x7558: 0x00395698, 0x7559: 0x0039589a, 0x755a: 0x00395899, 0x755b: 0x00395897,
+	0x755c: 0x00395898, 0x755d: 0x0039649a, 0x755e: 0x00396499, 0x755f: 0x00396497,
+	0x7560: 0x00396498, 0x7561: 0x0039729a, 0x7562: 0x00397299, 0x7563: 0x00397297,
+	0x7564: 0x00397298, 0x7565: 0x0039749a, 0x7566: 0x00397499, 0x7567: 0x00397497,
+	0x7568: 0x00397498, 0x7569: 0x0039889a, 0x756a: 0x00398899, 0x756b: 0x00398a9a,
+	0x756c: 0x00398a99, 0x756d: 0x0039a49a, 0x756e: 0x0039a499, 0x756f: 0x0039a69a,
+	0x7570: 0x0039a699, 0x7571: 0x0039c69a, 0x7572: 0x0039c699, 0x7573: 0x0039c697,
+	0x7574: 0x0039c698, 0x7575: 0x0039c89a, 0x7576: 0x0039c899, 0x7577: 0x0039c897,
+	0x7578: 0x0039c898, 0x7579: 0x0039dc9a, 0x757a: 0x0039dc99, 0x757b: 0x0039dc97,
+	0x757c: 0x0039dc98, 0x757d: 0x0039de9a, 0x757e: 0x0039de99, 0x757f: 0x0039de97,
+	// Block 0x1d6, offset 0x7580
+	0x7580: 0x0039de98, 0x7581: 0x0039e69a, 0x7582: 0x0039e699, 0x7583: 0x0039e697,
+	0x7584: 0x0039e698, 0x7585: 0x0039e89a, 0x7586: 0x0039e899, 0x7587: 0x0039e897,
+	0x7588: 0x0039e898, 0x7589: 0x0039ee9a, 0x758a: 0x0039ee99, 0x758b: 0x0039ee97,
+	0x758c: 0x0039ee98, 0x758d: 0x0039f09a, 0x758e: 0x0039f099, 0x758f: 0x0039f097,
+	0x7590: 0x0039f098, 0x7591: 0x0039fc9a, 0x7592: 0x0039fc99, 0x7593: 0x0039fc97,
+	0x7594: 0x0039fc98, 0x7595: 0x003a129a, 0x7596: 0x003a1299, 0x7597: 0x003a1297,
+	0x7598: 0x003a1298, 0x7599: 0x003a1a9a, 0x759a: 0x003a1a99, 0x759b: 0x003a1a97,
+	0x759c: 0x003a1a98, 0x759d: 0x003a409a, 0x759e: 0x003a4099, 0x759f: 0x003a4097,
+	0x75a0: 0x003a4098, 0x75a1: 0x003a4e9a, 0x75a2: 0x003a4e99, 0x75a3: 0x003a4e97,
+	0x75a4: 0x003a4e98, 0x75a5: 0x003a569a, 0x75a6: 0x003a5699, 0x75a7: 0x003a5697,
+	0x75a8: 0x003a5698, 0x75a9: 0x003a6886, 0x75aa: 0x003a6885, 0x75ab: 0x003a6883,
+	0x75ac: 0x003a6884, 0x75ad: 0x003a7485, 0x75ae: 0x003a7484, 0x75af: 0x003a92c6,
+	0x75b0: 0x003a92c5, 0x75b1: 0x003a9087, 0x75b2: 0x003a9086, 0x75b3: 0x003a9084,
+	0x75b4: 0x003a9085, 0x75b5: 0xe0001732, 0x75b6: 0xe000172f, 0x75b7: 0xe0001738,
+	0x75b8: 0xe0001735, 0x75b9: 0xe000173e, 0x75ba: 0xe000173b, 0x75bb: 0xf0001a1a,
+	0x75bc: 0xf0001919, 0x75bf: 0xa0000000,
+	// Block 0x1d7, offset 0x75c0
+	0x75c0: 0xf0001f04, 0x75c1: 0xf0001f04, 0x75c2: 0xf0001f04, 0x75c3: 0xf0001f04,
+	0x75c4: 0xf0001f04, 0x75c5: 0xf0001f04, 0x75c6: 0xf0001f04, 0x75c7: 0xf0001f04,
+	0x75c8: 0xf0001f04, 0x75c9: 0xf0001f04, 0x75ca: 0xf0001f04,
+	0x75d0: 0xf0000a04, 0x75d1: 0xf0000a04, 0x75d2: 0xf0000a04, 0x75d3: 0xf0000a04,
+	0x75d4: 0xf0000a04, 0x75d5: 0xf0000a04, 0x75d6: 0xf0000a04, 0x75d7: 0xf0000a04,
+	0x75d8: 0xe00024a8, 0x75d9: 0xf0000a04, 0x75da: 0xf0000a04, 0x75db: 0xf0000a04,
+	0x75dc: 0xf0000a04, 0x75dd: 0xf0000a04, 0x75de: 0xf0000a04, 0x75df: 0xf0000a04,
+	0x75e0: 0xe00024b0, 0x75e1: 0xf0000a04, 0x75e2: 0xf0000a04, 0x75e3: 0xf0000a04,
+	0x75e4: 0xf0000a04, 0x75e5: 0xf0000a04, 0x75e6: 0xf0000a04, 0x75e7: 0xe00024b8,
+	0x75e8: 0xf0000a04, 0x75e9: 0xf0000a04, 0x75ea: 0xf0000a04, 0x75eb: 0x002c3a8c,
+	0x75ec: 0x002f7a8c, 0x75ed: 0xf0000c0c, 0x75ee: 0xf0000c0c,
+	0x75f0: 0x002bde9d, 0x75f1: 0x002c0a9d, 0x75f2: 0x002c3a9d, 0x75f3: 0x002c629d,
+	0x75f4: 0x002c989d, 0x75f5: 0x002d089d, 0x75f6: 0x002d229d, 0x75f7: 0x002d689d,
+	0x75f8: 0x002d9a9d, 0x75f9: 0x002dcc9d, 0x75fa: 0x002dfe9d, 0x75fb: 0x002e229d,
+	0x75fc: 0x002e829d, 0x75fd: 0x002e9e9d, 0x75fe: 0x002ee29d, 0x75ff: 0x002f2c9d,
+	// Block 0x1d8, offset 0x7600
+	0x7600: 0xa0000000, 0x7601: 0xa0000000, 0x7602: 0xa0000000, 0x7603: 0xa0000000,
+	0x7604: 0xa0000000, 0x7605: 0xa0000000, 0x7606: 0xa0000000, 0x7607: 0xa0000000,
+	0x7608: 0xa0000000, 0x7609: 0x40020020, 0x760a: 0x40020220, 0x760b: 0x40020420,
+	0x760c: 0x40020620, 0x760d: 0x40020820, 0x760e: 0xa0000000, 0x760f: 0xa0000000,
+	0x7610: 0xa0000000, 0x7611: 0xa0000000, 0x7612: 0xa0000000, 0x7613: 0xa0000000,
+	0x7614: 0xa0000000, 0x7615: 0xa0000000, 0x7616: 0xa0000000, 0x7617: 0xa0000000,
+	0x7618: 0xa0000000, 0x7619: 0xa0000000, 0x761a: 0xa0000000, 0x761b: 0xa0000000,
+	0x761c: 0xa0000000, 0x761d: 0xa0000000, 0x761e: 0xa0000000, 0x761f: 0xa0000000,
+	0x7620: 0x40021220, 0x7621: 0x4002ba20, 0x7622: 0x4003e020, 0x7623: 0x4004ea20,
+	0x7624: 0x4027de20, 0x7625: 0x4004ec20, 0x7626: 0x4004e620, 0x7627: 0x4003d220,
+	0x7628: 0x4003f420, 0x7629: 0x4003f620, 0x762a: 0x4004d820, 0x762b: 0x40093820,
+	0x762c: 0x40024020, 0x762d: 0x40021a20, 0x762e: 0x4002e420, 0x762f: 0x4004e220,
+	0x7630: 0x4029cc20, 0x7631: 0x4029ce20, 0x7632: 0x4029d020, 0x7633: 0x4029d220,
+	0x7634: 0x4029d420, 0x7635: 0x4029d620, 0x7636: 0x4029d820, 0x7637: 0x4029da20,
+	0x7638: 0x4029dc20, 0x7639: 0x4029de20, 0x763a: 0x40026c20, 0x763b: 0x40026220,
+	0x763c: 0x40094020, 0x763d: 0xc32f0851, 0x763e: 0x40094420, 0x763f: 0x4002c420,
+	// Block 0x1d9, offset 0x7640
+	0x7640: 0x4004d620, 0x7641: 0x002bde88, 0x7642: 0x002c0a88, 0x7643: 0x002c3a88,
+	0x7644: 0x002c6288, 0x7645: 0x002c9888, 0x7646: 0x002d0888, 0x7647: 0x002d2288,
+	0x7648: 0x002d6888, 0x7649: 0x002d9a88, 0x764a: 0x002dcc88, 0x764b: 0x002dfe88,
+	0x764c: 0xc3520002, 0x764d: 0x002e8288, 0x764e: 0x002e9e88, 0x764f: 0x002ee288,
+	0x7650: 0x002f2c88, 0x7651: 0x002f5688, 0x7652: 0x002f7a88, 0x7653: 0x002fe688,
+	0x7654: 0x00302c88, 0x7655: 0x00306c88, 0x7656: 0x0030be88, 0x7657: 0x0030e288,
+	0x7658: 0x0030f688, 0x7659: 0x00310088, 0x765a: 0x00312a88, 0x765b: 0x4003f820,
+	0x765c: 0x4004e420, 0x765d: 0x4003fa20, 0x765e: 0x40062420, 0x765f: 0x40021620,
+	0x7660: 0x40061e20, 0x7661: 0x402bde20, 0x7662: 0x402c0a20, 0x7663: 0x402c3a20,
+	0x7664: 0x402c6220, 0x7665: 0x402c9820, 0x7666: 0x402d0820, 0x7667: 0x402d2220,
+	0x7668: 0x402d6820, 0x7669: 0x402d9a20, 0x766a: 0x402dcc20, 0x766b: 0x402dfe20,
+	0x766c: 0xc34f0002, 0x766d: 0x402e8220, 0x766e: 0x402e9e20, 0x766f: 0x402ee220,
+	0x7670: 0x402f2c20, 0x7671: 0x402f5620, 0x7672: 0x402f7a20, 0x7673: 0x402fe620,
+	0x7674: 0x40302c20, 0x7675: 0x40306c20, 0x7676: 0x4030be20, 0x7677: 0x4030e220,
+	0x7678: 0x4030f620, 0x7679: 0x40310020, 0x767a: 0x40312a20, 0x767b: 0x4003fc20,
+	0x767c: 0x40094820, 0x767d: 0x4003fe20, 0x767e: 0x40094c20, 0x767f: 0xa0000000,
+	// Block 0x1da, offset 0x7680
+	0x7680: 0xe0000983, 0x7681: 0xe0000980, 0x7682: 0xe00008fb, 0x7683: 0xe00008f8,
+	0x7684: 0xe000097d, 0x7685: 0xe000097a, 0x7686: 0xe0000a38, 0x7687: 0xe0000a35,
+	0x7688: 0xe0000a3e, 0x7689: 0xe0000a3b, 0x768a: 0xe0000a4a, 0x768b: 0xe0000a47,
+	0x768c: 0xe0000a44, 0x768d: 0xe0000a41, 0x768e: 0xe0000a86, 0x768f: 0xe0000a83,
+	0x7690: 0xe0000aaa, 0x7691: 0xe0000aa7, 0x7692: 0xe0000b46, 0x7693: 0xe0000b43,
+	0x7694: 0xe0000aee, 0x7695: 0xe0000aeb, 0x7696: 0xe0000b2c, 0x7697: 0xe0000b29,
+	0x7698: 0xe0000b40, 0x7699: 0xe0000b3d, 0x769a: 0xe0000b1a, 0x769b: 0xe0000b17,
+	0x769c: 0xe0000bb8, 0x769d: 0xe0000bb5, 0x769e: 0xe0000bb2, 0x769f: 0xe0000baf,
+	0x76a0: 0xe0000bc4, 0x76a1: 0xe0000bc1, 0x76a2: 0xe0000bca, 0x76a3: 0xe0000bc7,
+	0x76a4: 0xe0000bee, 0x76a5: 0xe0000beb, 0x76a6: 0xe0000c1b, 0x76a7: 0xe0000c18,
+	0x76a8: 0xe0000c51, 0x76a9: 0xe0000c4e, 0x76aa: 0xe0000c60, 0x76ab: 0xe0000c5d,
+	0x76ac: 0xe0000c31, 0x76ad: 0xe0000c2e, 0x76ae: 0xe0000c5a, 0x76af: 0xe0000c57,
+	0x76b0: 0xe0000c54, 0x76b1: 0x402da220, 0x76b2: 0xf0000a0a, 0x76b3: 0xf0000404,
+	0x76b4: 0xe0000c8a, 0x76b5: 0xe0000c87, 0x76b6: 0xe0000c9f, 0x76b7: 0xe0000c9c,
+	0x76b8: 0x402f7220, 0x76b9: 0xe0000ccc, 0x76ba: 0xe0000cc9, 0x76bb: 0xe0000cd8,
+	0x76bc: 0xe0000cd5, 0x76bd: 0xe0000cd2, 0x76be: 0xe0000ccf, 0x76bf: 0x002e2483,
+	// Block 0x1db, offset 0x76c0
+	0x76c0: 0x402e2420, 0x76c1: 0xe0000cf8, 0x76c2: 0xe0000cf5, 0x76c3: 0xe0000d51,
+	0x76c4: 0xe0000d4e, 0x76c5: 0xe0000d6f, 0x76c6: 0xe0000d6c, 0x76c7: 0xe0000d5d,
+	0x76c8: 0xe0000d5a, 0x76c9: 0xf0000404, 0x76ca: 0x002eda88, 0x76cb: 0x402eda20,
+	0x76cc: 0xe0000e2e, 0x76cd: 0xe0000e2b, 0x76ce: 0xe0000da0, 0x76cf: 0xe0000d9d,
+	0x76d0: 0xe0000de0, 0x76d1: 0xe0000ddd, 0x76d2: 0xe0000e93, 0x76d3: 0xe0000e8f,
+	0x76d4: 0xe0000eca, 0x76d5: 0xe0000ec7, 0x76d6: 0xe0000edc, 0x76d7: 0xe0000ed9,
+	0x76d8: 0xe0000ed0, 0x76d9: 0xe0000ecd, 0x76da: 0xe0000f1f, 0x76db: 0xe0000f1c,
+	0x76dc: 0xe0000f2d, 0x76dd: 0xe0000f2a, 0x76de: 0xe0000f47, 0x76df: 0xe0000f44,
+	0x76e0: 0xe0000f33, 0x76e1: 0xe0000f30, 0x76e2: 0xe0000f99, 0x76e3: 0xe0000f96,
+	0x76e4: 0xe0000f8a, 0x76e5: 0xe0000f87, 0x76e6: 0x00303688, 0x76e7: 0x40303620,
+	0x76e8: 0xe000102b, 0x76e9: 0xe0001028, 0x76ea: 0xe000103f, 0x76eb: 0xe000103c,
+	0x76ec: 0xe0000fe7, 0x76ed: 0xe0000fe4, 0x76ee: 0xe0000ff9, 0x76ef: 0xe0000ff6,
+	0x76f0: 0xe0001025, 0x76f1: 0xe0001022, 0x76f2: 0xe0001039, 0x76f3: 0xe0001036,
+	0x76f4: 0xe00010d8, 0x76f5: 0xe00010d5, 0x76f6: 0xe000110e, 0x76f7: 0xe000110b,
+	0x76f8: 0xe0001117, 0x76f9: 0xe000113b, 0x76fa: 0xe0001138, 0x76fb: 0xe000114d,
+	0x76fc: 0xe000114a, 0x76fd: 0xe0001147, 0x76fe: 0xe0001144, 0x76ff: 0xe0000f64,
+	// Block 0x1dc, offset 0x7700
+	0x7700: 0xa0000000, 0x7701: 0xa0000000, 0x7702: 0xa0000000, 0x7703: 0xa0000000,
+	0x7704: 0xa0000000, 0x7705: 0xa0000000, 0x7706: 0xa0000000, 0x7707: 0xa0000000,
+	0x7708: 0xa0000000, 0x7709: 0x40020020, 0x770a: 0x40020220, 0x770b: 0x40020420,
+	0x770c: 0x40020620, 0x770d: 0x40020820, 0x770e: 0xa0000000, 0x770f: 0xa0000000,
+	0x7710: 0xa0000000, 0x7711: 0xa0000000, 0x7712: 0xa0000000, 0x7713: 0xa0000000,
+	0x7714: 0xa0000000, 0x7715: 0xa0000000, 0x7716: 0xa0000000, 0x7717: 0xa0000000,
+	0x7718: 0xa0000000, 0x7719: 0xa0000000, 0x771a: 0xa0000000, 0x771b: 0xa0000000,
+	0x771c: 0xa0000000, 0x771d: 0xa0000000, 0x771e: 0xa0000000, 0x771f: 0xa0000000,
+	0x7720: 0x40021220, 0x7721: 0x4002ba20, 0x7722: 0x4003e020, 0x7723: 0x4004ea20,
+	0x7724: 0x4027de20, 0x7725: 0x4004ec20, 0x7726: 0x4004e620, 0x7727: 0x4003d220,
+	0x7728: 0x4003f420, 0x7729: 0x4003f620, 0x772a: 0x4004d820, 0x772b: 0x40093820,
+	0x772c: 0x40024020, 0x772d: 0x40021a20, 0x772e: 0x4002e420, 0x772f: 0x4004e220,
+	0x7730: 0x4029cc20, 0x7731: 0x4029ce20, 0x7732: 0x4029d020, 0x7733: 0x4029d220,
+	0x7734: 0x4029d420, 0x7735: 0x4029d620, 0x7736: 0x4029d820, 0x7737: 0x4029da20,
+	0x7738: 0x4029dc20, 0x7739: 0x4029de20, 0x773a: 0x40026c20, 0x773b: 0x40026220,
+	0x773c: 0x40094020, 0x773d: 0xc32f0851, 0x773e: 0x40094420, 0x773f: 0x4002c420,
+	// Block 0x1dd, offset 0x7740
+	0x7740: 0x4004d620, 0x7741: 0xc35708b1, 0x7742: 0x002c0a88, 0x7743: 0xc33308d1,
+	0x7744: 0xc35b08d1, 0x7745: 0xc36008f1, 0x7746: 0x002d0888, 0x7747: 0x002d2288,
+	0x7748: 0x002d6888, 0x7749: 0xc36508b1, 0x774a: 0x002dcc88, 0x774b: 0x002dfe88,
+	0x774c: 0xc0030002, 0x774d: 0x002e8288, 0x774e: 0xc36908d1, 0x774f: 0xc33d08b1,
+	0x7750: 0x002f2c88, 0x7751: 0x002f5688, 0x7752: 0xc36d08d1, 0x7753: 0xc34108d1,
+	0x7754: 0xc37108d1, 0x7755: 0xc3760921, 0x7756: 0x0030be88, 0x7757: 0x0030e288,
+	0x7758: 0x0030f688, 0x7759: 0xc37b08b1, 0x775a: 0xc37f08d1, 0x775b: 0x4003f820,
+	0x775c: 0x4004e420, 0x775d: 0x4003fa20, 0x775e: 0x40062420, 0x775f: 0x40021620,
+	0x7760: 0x40061e20, 0x7761: 0xc35508b1, 0x7762: 0x402c0a20, 0x7763: 0xc33108d1,
+	0x7764: 0xc35908d1, 0x7765: 0xc35d08f1, 0x7766: 0x402d0820, 0x7767: 0x402d2220,
+	0x7768: 0x402d6820, 0x7769: 0xc36308b1, 0x776a: 0x402dcc20, 0x776b: 0x402dfe20,
+	0x776c: 0xc0000002, 0x776d: 0x402e8220, 0x776e: 0xc36708d1, 0x776f: 0xc33b08b1,
+	0x7770: 0x402f2c20, 0x7771: 0x402f5620, 0x7772: 0xc36b08d1, 0x7773: 0xc33f08d1,
+	0x7774: 0xc36f08d1, 0x7775: 0xc3730921, 0x7776: 0x4030be20, 0x7777: 0x4030e220,
+	0x7778: 0x4030f620, 0x7779: 0xc37908b1, 0x777a: 0xc37d08d1, 0x777b: 0x4003fc20,
+	0x777c: 0x40094820, 0x777d: 0x4003fe20, 0x777e: 0x40094c20, 0x777f: 0xa0000000,
+	// Block 0x1de, offset 0x7780
+	0x7780: 0xe00008f5, 0x7781: 0x002be083, 0x7782: 0xe0000921, 0x7783: 0xe0000969,
+	0x7784: 0xe000095b, 0x7785: 0xe000094d, 0x7786: 0xe00009dd, 0x7787: 0xe0000a53,
+	0x7788: 0xe0000ae8, 0x7789: 0x002c9a83, 0x778a: 0xe0000af4, 0x778b: 0xe0000b20,
+	0x778c: 0xe0000c2b, 0x778d: 0x002d9c83, 0x778e: 0xe0000c37, 0x778f: 0xe0000c43,
+	0x7790: 0xe0000ab3, 0x7791: 0xe0000d63, 0x7792: 0xe0000d9a, 0x7793: 0x002ee483,
+	0x7794: 0xe0000da6, 0x7795: 0xe0000de6, 0x7796: 0xe0000dd2, 0x7797: 0x40093e20,
+	0x7798: 0xe0000e12, 0x7799: 0xe0000fe1, 0x779a: 0x00306e83, 0x779b: 0xe0000fed,
+	0x779c: 0xe0000fff, 0x779d: 0x00310283, 0x779e: 0x00318888, 0x779f: 0xe0000f7b,
+	0x77a0: 0xe00008f2, 0x77a1: 0x402be020, 0x77a2: 0xe000091e, 0x77a3: 0xe0000966,
+	0x77a4: 0xe0000958, 0x77a5: 0xe000094a, 0x77a6: 0xe00009d5, 0x77a7: 0xe0000a4d,
+	0x77a8: 0xe0000ae5, 0x77a9: 0x402c9a20, 0x77aa: 0xe0000af1, 0x77ab: 0xe0000b1d,
+	0x77ac: 0xe0000c28, 0x77ad: 0x402d9c20, 0x77ae: 0xe0000c34, 0x77af: 0xe0000c40,
+	0x77b0: 0xe0000aad, 0x77b1: 0xe0000d60, 0x77b2: 0xe0000d97, 0x77b3: 0x402ee420,
+	0x77b4: 0xe0000da3, 0x77b5: 0xe0000de3, 0x77b6: 0xe0000dcf, 0x77b7: 0x40093c20,
+	0x77b8: 0xe0000e0f, 0x77b9: 0xe0000fde, 0x77ba: 0x40306e20, 0x77bb: 0xe0000fea,
+	0x77bc: 0xe0000ffc, 0x77bd: 0x40310220, 0x77be: 0x40318820, 0x77bf: 0xe0001114,
+	// Block 0x1df, offset 0x77c0
+	0x77c0: 0xe0000983, 0x77c1: 0xe0000980, 0x77c2: 0xe00008fb, 0x77c3: 0xe00008f8,
+	0x77c4: 0xe000097d, 0x77c5: 0xe000097a, 0x77c6: 0xe0000a38, 0x77c7: 0xe0000a35,
+	0x77c8: 0xe0000a3e, 0x77c9: 0xe0000a3b, 0x77ca: 0xe0000a4a, 0x77cb: 0xe0000a47,
+	0x77cc: 0x002c3c83, 0x77cd: 0x402c3c20, 0x77ce: 0x002c6483, 0x77cf: 0x402c6420,
+	0x77d0: 0xe0000aaa, 0x77d1: 0xe0000aa7, 0x77d2: 0xe0000b46, 0x77d3: 0xe0000b43,
+	0x77d4: 0xe0000aee, 0x77d5: 0xe0000aeb, 0x77d6: 0xe0000b2c, 0x77d7: 0xe0000b29,
+	0x77d8: 0xe0000b40, 0x77d9: 0xe0000b3d, 0x77da: 0x002c9c83, 0x77db: 0x402c9c20,
+	0x77dc: 0xe0000bb8, 0x77dd: 0xe0000bb5, 0x77de: 0xe0000bb2, 0x77df: 0xe0000baf,
+	0x77e0: 0xe0000bc4, 0x77e1: 0xe0000bc1, 0x77e2: 0xe0000bca, 0x77e3: 0xe0000bc7,
+	0x77e4: 0xe0000bee, 0x77e5: 0xe0000beb, 0x77e6: 0xe0000c1b, 0x77e7: 0xe0000c18,
+	0x77e8: 0xe0000c51, 0x77e9: 0xe0000c4e, 0x77ea: 0xe0000c60, 0x77eb: 0xe0000c5d,
+	0x77ec: 0xe0000c31, 0x77ed: 0xe0000c2e, 0x77ee: 0xe0000c5a, 0x77ef: 0xe0000c57,
+	0x77f0: 0xe0000c54, 0x77f1: 0x402da220, 0x77f2: 0xf0000a0a, 0x77f3: 0xf0000404,
+	0x77f4: 0xe0000c8a, 0x77f5: 0xe0000c87, 0x77f6: 0xe0000c9f, 0x77f7: 0xe0000c9c,
+	0x77f8: 0x402f7220, 0x77f9: 0xe0000ccc, 0x77fa: 0xe0000cc9, 0x77fb: 0xe0000cd8,
+	0x77fc: 0xe0000cd5, 0x77fd: 0xe0000cd2, 0x77fe: 0xe0000ccf, 0x77ff: 0xe0000d04,
+	// Block 0x1e0, offset 0x7800
+	0x7800: 0xe0000cfe, 0x7801: 0xe0000cf8, 0x7802: 0xe0000cf5, 0x7803: 0xe0000d51,
+	0x7804: 0xe0000d4e, 0x7805: 0xe0000d6f, 0x7806: 0xe0000d6c, 0x7807: 0x002ea083,
+	0x7808: 0x402ea020, 0x7809: 0xf0000404, 0x780a: 0x002eda88, 0x780b: 0x402eda20,
+	0x780c: 0xe0000e2e, 0x780d: 0xe0000e2b, 0x780e: 0xe0000da0, 0x780f: 0xe0000d9d,
+	0x7810: 0xe0000de0, 0x7811: 0xe0000ddd, 0x7812: 0xe0000e93, 0x7813: 0xe0000e8f,
+	0x7814: 0xe0000eca, 0x7815: 0xe0000ec7, 0x7816: 0xe0000edc, 0x7817: 0xe0000ed9,
+	0x7818: 0x002f7c83, 0x7819: 0x402f7c20, 0x781a: 0xe0000f1f, 0x781b: 0xe0000f1c,
+	0x781c: 0xe0000f2d, 0x781d: 0xe0000f2a, 0x781e: 0xe0000f47, 0x781f: 0xe0000f44,
+	0x7820: 0x002fe883, 0x7821: 0x402fe820, 0x7822: 0xe0000f99, 0x7823: 0xe0000f96,
+	0x7824: 0x00302e83, 0x7825: 0x40302e20, 0x7826: 0x00303688, 0x7827: 0x40303620,
+	0x7828: 0xe000102b, 0x7829: 0xe0001028, 0x782a: 0xe000103f, 0x782b: 0xe000103c,
+	0x782c: 0xe0000fe7, 0x782d: 0xe0000fe4, 0x782e: 0x00307083, 0x782f: 0x40307020,
+	0x7830: 0xe0001025, 0x7831: 0xe0001022, 0x7832: 0xe0001039, 0x7833: 0xe0001036,
+	0x7834: 0xe00010d8, 0x7835: 0xe00010d5, 0x7836: 0xe000110e, 0x7837: 0xe000110b,
+	0x7838: 0xe0001117, 0x7839: 0xe000113b, 0x783a: 0xe0001138, 0x783b: 0xe000114d,
+	0x783c: 0xe000114a, 0x783d: 0x00312c83, 0x783e: 0x40312c20, 0x783f: 0xe0000f64,
+	// Block 0x1e1, offset 0x7840
+	0x7840: 0x40321220, 0x7841: 0x40321a20, 0x7842: 0x40322220, 0x7843: 0x40322a20,
+	0x7844: 0xe0000ad5, 0x7845: 0xe0000ad1, 0x7846: 0xe0000acd, 0x7847: 0xf0000a0a,
+	0x7848: 0xf000040a, 0x7849: 0xf0000404, 0x784a: 0xf0000a0a, 0x784b: 0xf000040a,
+	0x784c: 0xf0000404, 0x784d: 0xe0000947, 0x784e: 0xe0000944, 0x784f: 0xe0000c3d,
+	0x7850: 0xe0000c3a, 0x7851: 0xe0000dcc, 0x7852: 0xe0000dc9, 0x7853: 0xe0000ff3,
+	0x7854: 0xe0000ff0, 0x7855: 0xe000101e, 0x7856: 0xe000101a, 0x7857: 0xe0002658,
+	0x7858: 0xe0002655, 0x7859: 0xe0001016, 0x785a: 0xe0001012, 0x785b: 0xe000100e,
+	0x785c: 0xe000100a, 0x785d: 0x402cae20, 0x785e: 0xe0000962, 0x785f: 0xe000095e,
+	0x7860: 0xe0000976, 0x7861: 0xe0000972, 0x7862: 0xe00009f4, 0x7863: 0xe00009ef,
+	0x7864: 0x002d3a88, 0x7865: 0x402d3a20, 0x7866: 0xe0000bbe, 0x7867: 0xe0000bbb,
+	0x7868: 0xe0000c99, 0x7869: 0xe0000c96, 0x786a: 0xe0000e20, 0x786b: 0xe0000e1d,
+	0x786c: 0xe0000e27, 0x786d: 0xe0000e23, 0x786e: 0xe0001162, 0x786f: 0xe000115f,
+	0x7870: 0xe0000c8d, 0x7871: 0xf0000a0a, 0x7872: 0xf000040a, 0x7873: 0xf0000404,
+	0x7874: 0xe0000bac, 0x7875: 0xe0000ba9, 0x7876: 0x002d7888, 0x7877: 0x00319488,
+	0x7878: 0xe0000d57, 0x7879: 0xe0000d54, 0x787a: 0xe000262e, 0x787b: 0xe000262b,
+	0x787c: 0xe00009ea, 0x787d: 0xe00009e5, 0x787e: 0xe0000e19, 0x787f: 0xe0000e15,
+	// Block 0x1e2, offset 0x7880
+	0x7880: 0xe00009b1, 0x7881: 0xe00009ae, 0x7882: 0xe0000a22, 0x7883: 0xe0000a1f,
+	0x7884: 0xe0000a28, 0x7885: 0xe0000a25, 0x7886: 0xe0000a2e, 0x7887: 0xe0000a2b,
+	0x7888: 0xe0000a5a, 0x7889: 0xe0000a56, 0x788a: 0xe0000a8c, 0x788b: 0xe0000a89,
+	0x788c: 0xe0000a98, 0x788d: 0xe0000a95, 0x788e: 0xe0000aa4, 0x788f: 0xe0000aa1,
+	0x7890: 0xe0000a92, 0x7891: 0xe0000a8f, 0x7892: 0xe0000a9e, 0x7893: 0xe0000a9b,
+	0x7894: 0xe0000b55, 0x7895: 0xe0000b51, 0x7896: 0xe000263a, 0x7897: 0xe0002637,
+	0x7898: 0xe0000b7c, 0x7899: 0xe0000b79, 0x789a: 0xe0000b82, 0x789b: 0xe0000b7f,
+	0x789c: 0xe0000b39, 0x789d: 0xe0000b35, 0x789e: 0xe0000b8c, 0x789f: 0xe0000b89,
+	0x78a0: 0xe0000bd0, 0x78a1: 0xe0000bcd, 0x78a2: 0xe0000c00, 0x78a3: 0xe0000bfd,
+	0x78a4: 0xe0000c0c, 0x78a5: 0xe0000c09, 0x78a6: 0xe0000bfa, 0x78a7: 0xe0000bf7,
+	0x78a8: 0xe0000c06, 0x78a9: 0xe0000c03, 0x78aa: 0xe0000c12, 0x78ab: 0xe0000c0f,
+	0x78ac: 0xe0000c7e, 0x78ad: 0xe0000c7b, 0x78ae: 0xe0002640, 0x78af: 0xe000263d,
+	0x78b0: 0xe0000c93, 0x78b1: 0xe0000c90, 0x78b2: 0xe0000cab, 0x78b3: 0xe0000ca8,
+	0x78b4: 0xe0000cb1, 0x78b5: 0xe0000cae, 0x78b6: 0xe0000cde, 0x78b7: 0xe0000cdb,
+	0x78b8: 0xe0000ce5, 0x78b9: 0xe0000ce1, 0x78ba: 0xe0000cf2, 0x78bb: 0xe0000cef,
+	0x78bc: 0xe0000cec, 0x78bd: 0xe0000ce9, 0x78be: 0xe0000d1e, 0x78bf: 0xe0000d1b,
+	// Block 0x1e3, offset 0x78c0
+	0x78c0: 0xe0000d24, 0x78c1: 0xe0000d21, 0x78c2: 0xe0000d2a, 0x78c3: 0xe0000d27,
+	0x78c4: 0xe0000d69, 0x78c5: 0xe0000d66, 0x78c6: 0xe0000d7b, 0x78c7: 0xe0000d78,
+	0x78c8: 0xe0000d87, 0x78c9: 0xe0000d84, 0x78ca: 0xe0000d81, 0x78cb: 0xe0000d7e,
+	0x78cc: 0xe000251b, 0x78cd: 0xe0002518, 0x78ce: 0xe0000df5, 0x78cf: 0xe0000df1,
+	0x78d0: 0xe0000e3d, 0x78d1: 0xe0000e39, 0x78d2: 0xe0002521, 0x78d3: 0xe000251e,
+	0x78d4: 0xe0000ea7, 0x78d5: 0xe0000ea4, 0x78d6: 0xe0000ead, 0x78d7: 0xe0000eaa,
+	0x78d8: 0xe0000ed6, 0x78d9: 0xe0000ed3, 0x78da: 0xe0000ef4, 0x78db: 0xe0000ef1,
+	0x78dc: 0xe0000efb, 0x78dd: 0xe0000ef7, 0x78de: 0xe0000f02, 0x78df: 0xe0000eff,
+	0x78e0: 0xe0000f41, 0x78e1: 0xe0000f3e, 0x78e2: 0xe0000f53, 0x78e3: 0xe0000f50,
+	0x78e4: 0xe0000f26, 0x78e5: 0xe0000f22, 0x78e6: 0xe0002652, 0x78e7: 0xe000264f,
+	0x78e8: 0xe0000f5a, 0x78e9: 0xe0000f56, 0x78ea: 0xe0000f93, 0x78eb: 0xe0000f90,
+	0x78ec: 0xe0000f9f, 0x78ed: 0xe0000f9c, 0x78ee: 0xe0000fb1, 0x78ef: 0xe0000fae,
+	0x78f0: 0xe0000fab, 0x78f1: 0xe0000fa8, 0x78f2: 0xe0001093, 0x78f3: 0xe0001090,
+	0x78f4: 0xe000109f, 0x78f5: 0xe000109c, 0x78f6: 0xe0001099, 0x78f7: 0xe0001096,
+	0x78f8: 0xe000265e, 0x78f9: 0xe000265b, 0x78fa: 0xe0001046, 0x78fb: 0xe0001042,
+	0x78fc: 0xe00010a9, 0x78fd: 0xe00010a6, 0x78fe: 0xe00010af, 0x78ff: 0xe00010ac,
+	// Block 0x1e4, offset 0x7900
+	0x7900: 0xe00010d2, 0x7901: 0xe00010cf, 0x7902: 0xe00010cc, 0x7903: 0xe00010c9,
+	0x7904: 0xe00010e1, 0x7905: 0xe00010de, 0x7906: 0xe00010e7, 0x7907: 0xe00010e4,
+	0x7908: 0xe00010ed, 0x7909: 0xe00010ea, 0x790a: 0xe00010fc, 0x790b: 0xe00010f9,
+	0x790c: 0xe00010f6, 0x790d: 0xe00010f3, 0x790e: 0xe0001123, 0x790f: 0xe0001120,
+	0x7910: 0xe0001141, 0x7911: 0xe000113e, 0x7912: 0xe0001153, 0x7913: 0xe0001150,
+	0x7914: 0xe0001159, 0x7915: 0xe0001156, 0x7916: 0xe0000c15, 0x7917: 0xe0000f8d,
+	0x7918: 0xe00010db, 0x7919: 0xe0001111, 0x791a: 0xf0000404, 0x791b: 0xe0000f70,
+	0x791c: 0x40300420, 0x791d: 0x40300620, 0x791e: 0xe0000f7f, 0x791f: 0x402c9620,
+	0x7920: 0xe000099b, 0x7921: 0xe0000998, 0x7922: 0xe0000989, 0x7923: 0xe0000986,
+	0x7924: 0xe0002628, 0x7925: 0xe0002625, 0x7926: 0xe0000930, 0x7927: 0xe000092c,
+	0x7928: 0xe0000940, 0x7929: 0xe000093c, 0x792a: 0xe0000938, 0x792b: 0xe0000934,
+	0x792c: 0xe00009aa, 0x792d: 0xe00009a6, 0x792e: 0xe0002622, 0x792f: 0xe000261f,
+	0x7930: 0xe000090a, 0x7931: 0xe0000906, 0x7932: 0xe000091a, 0x7933: 0xe0000916,
+	0x7934: 0xe0000912, 0x7935: 0xe000090e, 0x7936: 0xe00009a2, 0x7937: 0xe000099e,
+	0x7938: 0xe0000b6e, 0x7939: 0xe0000b6b, 0x793a: 0xe0000b5c, 0x793b: 0xe0000b59,
+	0x793c: 0xe0000b26, 0x793d: 0xe0000b23, 0x793e: 0xe0002634, 0x793f: 0xe0002631,
+	// Block 0x1e5, offset 0x7940
+	0x7940: 0xe0000b03, 0x7941: 0xe0000aff, 0x7942: 0xe0000b13, 0x7943: 0xe0000b0f,
+	0x7944: 0xe0000b0b, 0x7945: 0xe0000b07, 0x7946: 0xe0000b75, 0x7947: 0xe0000b71,
+	0x7948: 0xe0000c66, 0x7949: 0xe0000c63, 0x794a: 0xe0000c78, 0x794b: 0xe0000c75,
+	0x794c: 0xe0000e84, 0x794d: 0xe0000e81, 0x794e: 0xe0000e44, 0x794f: 0xe0000e41,
+	0x7950: 0xe0002646, 0x7951: 0xe0002643, 0x7952: 0xe0000db5, 0x7953: 0xe0000db1,
+	0x7954: 0xe0000dc5, 0x7955: 0xe0000dc1, 0x7956: 0xe0000dbd, 0x7957: 0xe0000db9,
+	0x7958: 0xe0000e8b, 0x7959: 0xe0000e87, 0x795a: 0xe000264c, 0x795b: 0xe0002649,
+	0x795c: 0xe0000e65, 0x795d: 0xe0000e61, 0x795e: 0xe0000e75, 0x795f: 0xe0000e71,
+	0x7960: 0xe0000e6d, 0x7961: 0xe0000e69, 0x7962: 0xe0000e7d, 0x7963: 0xe0000e79,
+	0x7964: 0xe000108d, 0x7965: 0xe000108a, 0x7966: 0xe000104d, 0x7967: 0xe000104a,
+	0x7968: 0xe0002664, 0x7969: 0xe0002661, 0x796a: 0xe000106e, 0x796b: 0xe000106a,
+	0x796c: 0xe000107e, 0x796d: 0xe000107a, 0x796e: 0xe0001076, 0x796f: 0xe0001072,
+	0x7970: 0xe0001086, 0x7971: 0xe0001082, 0x7972: 0xe0001108, 0x7973: 0xe0001105,
+	0x7974: 0xe0001135, 0x7975: 0xe0001132, 0x7976: 0xe000112f, 0x7977: 0xe000112c,
+	0x7978: 0xe000111d, 0x7979: 0xe000111a, 0x797a: 0xe0000d0a, 0x797b: 0xe0000d07,
+	0x797c: 0x0030d888, 0x797d: 0x4030d820, 0x797e: 0x00312088, 0x797f: 0x40312020,
+	// Block 0x1e6, offset 0x7980
+	0x7980: 0xa0000000, 0x7981: 0xa0000000, 0x7982: 0xa0000000, 0x7983: 0xa0000000,
+	0x7984: 0xa0000000, 0x7985: 0xa0000000, 0x7986: 0xa0000000, 0x7987: 0xa0000000,
+	0x7988: 0xa0000000, 0x7989: 0x40020020, 0x798a: 0x40020220, 0x798b: 0x40020420,
+	0x798c: 0x40020620, 0x798d: 0x40020820, 0x798e: 0xa0000000, 0x798f: 0xa0000000,
+	0x7990: 0xa0000000, 0x7991: 0xa0000000, 0x7992: 0xa0000000, 0x7993: 0xa0000000,
+	0x7994: 0xa0000000, 0x7995: 0xa0000000, 0x7996: 0xa0000000, 0x7997: 0xa0000000,
+	0x7998: 0xa0000000, 0x7999: 0xa0000000, 0x799a: 0xa0000000, 0x799b: 0xa0000000,
+	0x799c: 0xa0000000, 0x799d: 0xa0000000, 0x799e: 0xa0000000, 0x799f: 0xa0000000,
+	0x79a0: 0x40021220, 0x79a1: 0x4002ba20, 0x79a2: 0x4003e020, 0x79a3: 0x4004ea20,
+	0x79a4: 0x4027de20, 0x79a5: 0x4004ec20, 0x79a6: 0x4004e620, 0x79a7: 0x4003d220,
+	0x79a8: 0x4003f420, 0x79a9: 0x4003f620, 0x79aa: 0x4004d820, 0x79ab: 0x40093820,
+	0x79ac: 0x40024020, 0x79ad: 0x40021a20, 0x79ae: 0x4002e420, 0x79af: 0x4004e220,
+	0x79b0: 0x4029cc20, 0x79b1: 0x4029ce20, 0x79b2: 0x4029d020, 0x79b3: 0x4029d220,
+	0x79b4: 0x4029d420, 0x79b5: 0x4029d620, 0x79b6: 0x4029d820, 0x79b7: 0x4029da20,
+	0x79b8: 0x4029dc20, 0x79b9: 0x4029de20, 0x79ba: 0x40026c20, 0x79bb: 0x40026220,
+	0x79bc: 0x40094020, 0x79bd: 0xc32f0851, 0x79be: 0x40094420, 0x79bf: 0x4002c420,
+	// Block 0x1e7, offset 0x79c0
+	0x79c0: 0x4004d620, 0x79c1: 0xc38b09c3, 0x79c2: 0x002c0a88, 0x79c3: 0x002c3a88,
+	0x79c4: 0x002c6288, 0x79c5: 0xc3920a11, 0x79c6: 0x002d0888, 0x79c7: 0x002d2288,
+	0x79c8: 0x002d6888, 0x79c9: 0x002d9a88, 0x79ca: 0x002dcc88, 0x79cb: 0x002dfe88,
+	0x79cc: 0xc0030002, 0x79cd: 0x002e8288, 0x79ce: 0x002e9e88, 0x79cf: 0xc3970951,
+	0x79d0: 0x002f2c88, 0x79d1: 0x002f5688, 0x79d2: 0x002f7a88, 0x79d3: 0x002fe688,
+	0x79d4: 0x00302c88, 0x79d5: 0xc3840951, 0x79d6: 0x0030be88, 0x79d7: 0x0030e288,
+	0x79d8: 0x0030f688, 0x79d9: 0x00310088, 0x79da: 0x00312a88, 0x79db: 0x4003f820,
+	0x79dc: 0x4004e420, 0x79dd: 0x4003fa20, 0x79de: 0x40062420, 0x79df: 0x40021620,
+	0x79e0: 0x40061e20, 0x79e1: 0xc3870982, 0x79e2: 0x402c0a20, 0x79e3: 0x402c3a20,
+	0x79e4: 0x402c6220, 0x79e5: 0xc3900a11, 0x79e6: 0x402d0820, 0x79e7: 0x402d2220,
+	0x79e8: 0x402d6820, 0x79e9: 0x402d9a20, 0x79ea: 0x402dcc20, 0x79eb: 0x402dfe20,
+	0x79ec: 0xc0000002, 0x79ed: 0x402e8220, 0x79ee: 0x402e9e20, 0x79ef: 0xc3940951,
+	0x79f0: 0x402f2c20, 0x79f1: 0x402f5620, 0x79f2: 0x402f7a20, 0x79f3: 0x402fe620,
+	0x79f4: 0x40302c20, 0x79f5: 0xc3810951, 0x79f6: 0x4030be20, 0x79f7: 0x4030e220,
+	0x79f8: 0x4030f620, 0x79f9: 0x40310020, 0x79fa: 0x40312a20, 0x79fb: 0x4003fc20,
+	0x79fc: 0x40094820, 0x79fd: 0x4003fe20, 0x79fe: 0x40094c20, 0x79ff: 0xa0000000,
+	// Block 0x1e8, offset 0x7a00
+	0x7a00: 0xe00008f5, 0x7a01: 0xe00008ef, 0x7a02: 0xe0000921, 0x7a03: 0xe0000969,
+	0x7a04: 0x00320ca3, 0x7a05: 0x00321083, 0x7a06: 0x00320c83, 0x7a07: 0xe0000a53,
+	0x7a08: 0xe0000ae8, 0x7a09: 0xe0000ae2, 0x7a0a: 0xe0000af4, 0x7a0b: 0xe0000b20,
+	0x7a0c: 0xe0000c2b, 0x7a0d: 0xe0000c25, 0x7a0e: 0xe0000c37, 0x7a0f: 0xe0000c43,
+	0x7a10: 0x002c62c3, 0x7a11: 0xe0000d63, 0x7a12: 0xe0000d9a, 0x7a13: 0xe0000d94,
+	0x7a14: 0xe0000da6, 0x7a15: 0xe0000de6, 0x7a16: 0x00320ea3, 0x7a17: 0x40093e20,
+	0x7a18: 0x00320e83, 0x7a19: 0xe0000fe1, 0x7a1a: 0xe0000fdb, 0x7a1b: 0xe0000fed,
+	0x7a1c: 0x003100a3, 0x7a1d: 0xe0001102, 0x7a1e: 0xe000266d, 0x7a1f: 0xe0000f7b,
+	0x7a20: 0xe00008f2, 0x7a21: 0xe00008ec, 0x7a22: 0xe000091e, 0x7a23: 0xe0000966,
+	0x7a24: 0x40320c21, 0x7a25: 0x40321020, 0x7a26: 0x40320c20, 0x7a27: 0xe0000a4d,
+	0x7a28: 0xe0000ae5, 0x7a29: 0xe0000adf, 0x7a2a: 0xe0000af1, 0x7a2b: 0xe0000b1d,
+	0x7a2c: 0xe0000c28, 0x7a2d: 0xe0000c22, 0x7a2e: 0xe0000c34, 0x7a2f: 0xe0000c40,
+	0x7a30: 0x402c6222, 0x7a31: 0xe0000d60, 0x7a32: 0xe0000d97, 0x7a33: 0xe0000d91,
+	0x7a34: 0xe0000da3, 0x7a35: 0xe0000de3, 0x7a36: 0x40320e21, 0x7a37: 0x40093c20,
+	0x7a38: 0x40320e20, 0x7a39: 0xe0000fde, 0x7a3a: 0xe0000fd8, 0x7a3b: 0xe0000fea,
+	0x7a3c: 0x40310021, 0x7a3d: 0xe00010ff, 0x7a3e: 0xe000266a, 0x7a3f: 0xe0001114,
+	// Block 0x1e9, offset 0x7a40
+	0x7a40: 0xe0000983, 0x7a41: 0xe0000980, 0x7a42: 0xe00008fb, 0x7a43: 0xe00008f8,
+	0x7a44: 0xe000097d, 0x7a45: 0xe000097a, 0x7a46: 0xe0000a38, 0x7a47: 0xe0000a35,
+	0x7a48: 0xe0000a3e, 0x7a49: 0xe0000a3b, 0x7a4a: 0xe0000a4a, 0x7a4b: 0xe0000a47,
+	0x7a4c: 0xe0000a44, 0x7a4d: 0xe0000a41, 0x7a4e: 0xe0000a86, 0x7a4f: 0xe0000a83,
+	0x7a50: 0x002c62a3, 0x7a51: 0x402c6221, 0x7a52: 0xe0000b46, 0x7a53: 0xe0000b43,
+	0x7a54: 0xe0000aee, 0x7a55: 0xe0000aeb, 0x7a56: 0xe0000b2c, 0x7a57: 0xe0000b29,
+	0x7a58: 0x00320cc3, 0x7a59: 0x40320c22, 0x7a5a: 0xe0000b1a, 0x7a5b: 0xe0000b17,
+	0x7a5c: 0xe0000bb8, 0x7a5d: 0xe0000bb5, 0x7a5e: 0xe0000bb2, 0x7a5f: 0xe0000baf,
+	0x7a60: 0xe0000bc4, 0x7a61: 0xe0000bc1, 0x7a62: 0xe0000bca, 0x7a63: 0xe0000bc7,
+	0x7a64: 0xe0000bee, 0x7a65: 0xe0000beb, 0x7a66: 0xe0000c1b, 0x7a67: 0xe0000c18,
+	0x7a68: 0xe0000c51, 0x7a69: 0xe0000c4e, 0x7a6a: 0xe0000c60, 0x7a6b: 0xe0000c5d,
+	0x7a6c: 0xe0000c31, 0x7a6d: 0xe0000c2e, 0x7a6e: 0xe0000c5a, 0x7a6f: 0xe0000c57,
+	0x7a70: 0xe0000c54, 0x7a71: 0x402da220, 0x7a72: 0xf0000a0a, 0x7a73: 0xf0000404,
+	0x7a74: 0xe0000c8a, 0x7a75: 0xe0000c87, 0x7a76: 0xe0000c9f, 0x7a77: 0xe0000c9c,
+	0x7a78: 0x402f7220, 0x7a79: 0xe0000ccc, 0x7a7a: 0xe0000cc9, 0x7a7b: 0xe0000cd8,
+	0x7a7c: 0xe0000cd5, 0x7a7d: 0xe0000cd2, 0x7a7e: 0xe0000ccf, 0x7a7f: 0xe0000d04,
+	// Block 0x1ea, offset 0x7a80
+	0x7a80: 0xe0000cfe, 0x7a81: 0xe0000cf8, 0x7a82: 0xe0000cf5, 0x7a83: 0xe0000d51,
+	0x7a84: 0xe0000d4e, 0x7a85: 0xe0000d6f, 0x7a86: 0xe0000d6c, 0x7a87: 0xe0000d5d,
+	0x7a88: 0xe0000d5a, 0x7a89: 0xf0000404, 0x7a8a: 0x002eda88, 0x7a8b: 0x402eda20,
+	0x7a8c: 0xe0000e2e, 0x7a8d: 0xe0000e2b, 0x7a8e: 0xe0000da0, 0x7a8f: 0xe0000d9d,
+	0x7a90: 0x00320ec3, 0x7a91: 0x40320e22, 0x7a92: 0x00320ee3, 0x7a93: 0x40320e23,
+	0x7a94: 0xe0000eca, 0x7a95: 0xe0000ec7, 0x7a96: 0xe0000edc, 0x7a97: 0xe0000ed9,
+	0x7a98: 0xe0000ed0, 0x7a99: 0xe0000ecd, 0x7a9a: 0xe0000f1f, 0x7a9b: 0xe0000f1c,
+	0x7a9c: 0xe0000f2d, 0x7a9d: 0xe0000f2a, 0x7a9e: 0xe0000f47, 0x7a9f: 0xe0000f44,
+	0x7aa0: 0xe0000f33, 0x7aa1: 0xe0000f30, 0x7aa2: 0xe0000f99, 0x7aa3: 0xe0000f96,
+	0x7aa4: 0xe0000f8a, 0x7aa5: 0xe0000f87, 0x7aa6: 0x00303688, 0x7aa7: 0x40303620,
+	0x7aa8: 0xe000102b, 0x7aa9: 0xe0001028, 0x7aaa: 0xe000103f, 0x7aab: 0xe000103c,
+	0x7aac: 0xe0000fe7, 0x7aad: 0xe0000fe4, 0x7aae: 0xe0000ff9, 0x7aaf: 0xe0000ff6,
+	0x7ab0: 0x003100c3, 0x7ab1: 0x40310022, 0x7ab2: 0xe0001039, 0x7ab3: 0xe0001036,
+	0x7ab4: 0xe00010d8, 0x7ab5: 0xe00010d5, 0x7ab6: 0xe000110e, 0x7ab7: 0xe000110b,
+	0x7ab8: 0xe0001117, 0x7ab9: 0xe000113b, 0x7aba: 0xe0001138, 0x7abb: 0xe000114d,
+	0x7abc: 0xe000114a, 0x7abd: 0xe0001147, 0x7abe: 0xe0001144, 0x7abf: 0xe0000f64,
+	// Block 0x1eb, offset 0x7ac0
+	0x7ac0: 0x40321220, 0x7ac1: 0x40321a20, 0x7ac2: 0x40322220, 0x7ac3: 0x40322a20,
+	0x7ac4: 0xe0000ad5, 0x7ac5: 0xe0000ad1, 0x7ac6: 0xe0000acd, 0x7ac7: 0xf0000a0a,
+	0x7ac8: 0xf000040a, 0x7ac9: 0xf0000404, 0x7aca: 0xf0000a0a, 0x7acb: 0xf000040a,
+	0x7acc: 0xf0000404, 0x7acd: 0xe0000947, 0x7ace: 0xe0000944, 0x7acf: 0xe0000c3d,
+	0x7ad0: 0xe0000c3a, 0x7ad1: 0xe0000dcc, 0x7ad2: 0xe0000dc9, 0x7ad3: 0xe0000ff3,
+	0x7ad4: 0xe0000ff0, 0x7ad5: 0xe0002685, 0x7ad6: 0xe0002682, 0x7ad7: 0xe0002673,
+	0x7ad8: 0xe0002670, 0x7ad9: 0xe000267f, 0x7ada: 0xe000267c, 0x7adb: 0xe0002679,
+	0x7adc: 0xe0002676, 0x7add: 0x402cae20, 0x7ade: 0xe0002697, 0x7adf: 0xe0002694,
+	0x7ae0: 0xe0000976, 0x7ae1: 0xe0000972, 0x7ae2: 0xe0002691, 0x7ae3: 0xe000268e,
+	0x7ae4: 0x002d3a88, 0x7ae5: 0x402d3a20, 0x7ae6: 0xe0000bbe, 0x7ae7: 0xe0000bbb,
+	0x7ae8: 0xe0000c99, 0x7ae9: 0xe0000c96, 0x7aea: 0xe0000e20, 0x7aeb: 0xe0000e1d,
+	0x7aec: 0xe0000e27, 0x7aed: 0xe0000e23, 0x7aee: 0xe0001162, 0x7aef: 0xe000115f,
+	0x7af0: 0xe0000c8d, 0x7af1: 0xf0000a0a, 0x7af2: 0xf000040a, 0x7af3: 0xf0000404,
+	0x7af4: 0xe0000bac, 0x7af5: 0xe0000ba9, 0x7af6: 0x002d7888, 0x7af7: 0x00319488,
+	0x7af8: 0xe0000d57, 0x7af9: 0xe0000d54, 0x7afa: 0xe00026af, 0x7afb: 0xe00026ac,
+	0x7afc: 0xe000268b, 0x7afd: 0xe0002688, 0x7afe: 0xe000269d, 0x7aff: 0xe000269a,
+	// Block 0x1ec, offset 0x7b00
+	0x7b00: 0xe000098f, 0x7b01: 0xe000098c, 0x7b02: 0xe0000995, 0x7b03: 0xe0000992,
+	0x7b04: 0xe0000b62, 0x7b05: 0xe0000b5f, 0x7b06: 0xe0000b68, 0x7b07: 0xe0000b65,
+	0x7b08: 0xe0000c6c, 0x7b09: 0xe0000c69, 0x7b0a: 0xe0000c72, 0x7b0b: 0xe0000c6f,
+	0x7b0c: 0xe0000e4a, 0x7b0d: 0xe0000e47, 0x7b0e: 0xe0000e50, 0x7b0f: 0xe0000e4d,
+	0x7b10: 0xe0000ee8, 0x7b11: 0xe0000ee5, 0x7b12: 0xe0000eee, 0x7b13: 0xe0000eeb,
+	0x7b14: 0xe0001053, 0x7b15: 0xe0001050, 0x7b16: 0xe0001059, 0x7b17: 0xe0001056,
+	0x7b18: 0xe0000f61, 0x7b19: 0xe0000f5e, 0x7b1a: 0xe0000fa5, 0x7b1b: 0xe0000fa2,
+	0x7b1c: 0x00312288, 0x7b1d: 0x40312220, 0x7b1e: 0xe0000bf4, 0x7b1f: 0xe0000bf1,
+	0x7b20: 0x002ebc88, 0x7b21: 0x402c8c20, 0x7b22: 0x002f2288, 0x7b23: 0x402f2220,
+	0x7b24: 0x00314088, 0x7b25: 0x40314020, 0x7b26: 0xe000096f, 0x7b27: 0xe000096c,
+	0x7b28: 0xe0000b32, 0x7b29: 0xe0000b2f, 0x7b2a: 0xe00026a9, 0x7b2b: 0xe00026a6,
+	0x7b2c: 0xe0000dfd, 0x7b2d: 0xe0000df9, 0x7b2e: 0xe0000e04, 0x7b2f: 0xe0000e01,
+	0x7b30: 0xe0000e0b, 0x7b31: 0xe0000e07, 0x7b32: 0xe0001129, 0x7b33: 0xe0001126,
+	0x7b34: 0x402e5e20, 0x7b35: 0x402ed020, 0x7b36: 0x40305a20, 0x7b37: 0x402dd420,
+	0x7b38: 0xe0000abf, 0x7b39: 0xe0000ec4, 0x7b3a: 0x002be888, 0x7b3b: 0x002c4488,
+	0x7b3c: 0x402c4420, 0x7b3d: 0x002e3888, 0x7b3e: 0x00303e88, 0x7b3f: 0x402ffc20,
+	// Block 0x1ed, offset 0x7b40
+	0x7b40: 0x402c2820, 0x7b41: 0x402c7020, 0x7b42: 0x402d1420, 0x7b43: 0x402d4220,
+	0x7b44: 0x402e0820, 0x7b45: 0x402e5220, 0x7b46: 0x402e8e20, 0x7b47: 0x402ec620,
+	0x7b48: 0x402f3c20, 0x7b49: 0x402faa20, 0x7b4a: 0x402ff220, 0x7b4b: 0x40301020,
+	0x7b4c: 0x4030ca20, 0x7b4d: 0x4030fe20, 0x7b4e: 0x40313e20, 0x7b4f: 0x402bea20,
+	0x7b50: 0x402c0020, 0x7b51: 0x402c8220, 0x7b52: 0x402caa20, 0x7b53: 0x402cca20,
+	0x7b54: 0x402ce420, 0x7b55: 0x402cc020, 0x7b56: 0x402dc020, 0x7b57: 0x402f0620,
+	0x7b58: 0x40302220, 0x7b59: 0x40308620, 0x7b5a: 0x40317620, 0x7b5b: 0x002c0294,
+	0x7b5c: 0x002c3a94, 0x7b5d: 0x002c5694, 0x7b5e: 0xe0002667, 0x7b5f: 0x002cdc94,
+	0x7b60: 0x002d0894, 0x7b61: 0x002dee94, 0x7b62: 0x002d2a94, 0x7b63: 0x00308894,
+	0x7b64: 0x002db694, 0x7b65: 0x002dc294, 0x7b66: 0x002daa94, 0x7b67: 0x002dbe94,
+	0x7b68: 0x002de694, 0x7b69: 0x002e5494, 0x7b6a: 0x002e5294, 0x7b6b: 0x002e2a94,
+	0x7b6c: 0x002e9094, 0x7b6d: 0x0030ac94, 0x7b6e: 0x002eb494, 0x7b6f: 0x002ec894,
+	0x7b70: 0x002ea694, 0x7b71: 0x002f1094, 0x7b72: 0x002f4c94, 0x7b73: 0x002ff494,
+	0x7b74: 0x00300894, 0x7b75: 0x00304294, 0x7b76: 0x00307c94, 0x7b77: 0x0030b494,
+	0x7b78: 0x00307494, 0x7b79: 0x0030cc94, 0x7b7a: 0x0030da94, 0x7b7b: 0x00312a94,
+	0x7b7c: 0x00314894, 0x7b7d: 0x00315094, 0x7b7e: 0x00316494, 0x7b7f: 0x00326a94,
+	// Block 0x1ee, offset 0x7b80
+	0x7b80: 0xe0000d24, 0x7b81: 0xe0000d21, 0x7b82: 0xe0000d2a, 0x7b83: 0xe0000d27,
+	0x7b84: 0xe0000d69, 0x7b85: 0xe0000d66, 0x7b86: 0xe0000d7b, 0x7b87: 0xe0000d78,
+	0x7b88: 0xe0000d87, 0x7b89: 0xe0000d84, 0x7b8a: 0xe0000d81, 0x7b8b: 0xe0000d7e,
+	0x7b8c: 0xe0000ded, 0x7b8d: 0xe0000de9, 0x7b8e: 0xe00026a3, 0x7b8f: 0xe00026a0,
+	0x7b90: 0xe0000e3d, 0x7b91: 0xe0000e39, 0x7b92: 0xe0000e35, 0x7b93: 0xe0000e31,
+	0x7b94: 0xe0000ea7, 0x7b95: 0xe0000ea4, 0x7b96: 0xe0000ead, 0x7b97: 0xe0000eaa,
+	0x7b98: 0xe0000ed6, 0x7b99: 0xe0000ed3, 0x7b9a: 0xe0000ef4, 0x7b9b: 0xe0000ef1,
+	0x7b9c: 0xe0000efb, 0x7b9d: 0xe0000ef7, 0x7b9e: 0xe0000f02, 0x7b9f: 0xe0000eff,
+	0x7ba0: 0xe0000f41, 0x7ba1: 0xe0000f3e, 0x7ba2: 0xe0000f53, 0x7ba3: 0xe0000f50,
+	0x7ba4: 0xe0000f26, 0x7ba5: 0xe0000f22, 0x7ba6: 0xe0000f3a, 0x7ba7: 0xe0000f36,
+	0x7ba8: 0xe0000f5a, 0x7ba9: 0xe0000f56, 0x7baa: 0xe0000f93, 0x7bab: 0xe0000f90,
+	0x7bac: 0xe0000f9f, 0x7bad: 0xe0000f9c, 0x7bae: 0xe0000fb1, 0x7baf: 0xe0000fae,
+	0x7bb0: 0xe0000fab, 0x7bb1: 0xe0000fa8, 0x7bb2: 0xe0001093, 0x7bb3: 0xe0001090,
+	0x7bb4: 0xe000109f, 0x7bb5: 0xe000109c, 0x7bb6: 0xe0001099, 0x7bb7: 0xe0001096,
+	0x7bb8: 0xe0001032, 0x7bb9: 0xe000102e, 0x7bba: 0xe0002685, 0x7bbb: 0xe0002682,
+	0x7bbc: 0xe00010a9, 0x7bbd: 0xe00010a6, 0x7bbe: 0xe00010af, 0x7bbf: 0xe00010ac,
+	// Block 0x1ef, offset 0x7bc0
+	0x7bc0: 0xe00009bc, 0x7bc1: 0xe00009c0, 0x7bc2: 0x002c3a8b, 0x7bc3: 0xf0000a04,
+	0x7bc4: 0x40081c20, 0x7bc5: 0xe0000a5e, 0x7bc6: 0xe0000a62, 0x7bc7: 0x002cc28a,
+	0x7bc8: 0x40081e20, 0x7bc9: 0xf0000a04, 0x7bca: 0x002d2285, 0x7bcb: 0x002d688b,
+	0x7bcc: 0x002d688b, 0x7bcd: 0x002d688b, 0x7bce: 0x002d6885, 0x7bcf: 0xf0000202,
+	0x7bd0: 0x002d9a8b, 0x7bd1: 0x002d9a8b, 0x7bd2: 0x002e228b, 0x7bd3: 0x002e2285,
+	0x7bd4: 0x40082020, 0x7bd5: 0x002e9e8b, 0x7bd6: 0xf000040a, 0x7bd7: 0x40082220,
+	0x7bd8: 0x40082420, 0x7bd9: 0x002f2c8b, 0x7bda: 0x002f568b, 0x7bdb: 0x002f7a8b,
+	0x7bdc: 0x002f7a8b, 0x7bdd: 0x002f7a8b, 0x7bde: 0x40082620, 0x7bdf: 0x40082820,
+	0x7be0: 0xf0001414, 0x7be1: 0xe0000fbd, 0x7be2: 0xf0001414, 0x7be3: 0x40082a20,
+	0x7be4: 0x00312a8b, 0x7be5: 0x40082c20, 0x7be6: 0x0032a288, 0x7be7: 0x40082e20,
+	0x7be8: 0x00312a8b, 0x7be9: 0x40083020, 0x7bea: 0x002dfe88, 0x7beb: 0x00321083,
+	0x7bec: 0x002c0a8b, 0x7bed: 0x002c3a8b, 0x7bee: 0x40083220, 0x7bef: 0x002c9885,
+	0x7bf0: 0x002c988b, 0x7bf1: 0x002d088b, 0x7bf2: 0x002d1e88, 0x7bf3: 0x002e828b,
+	0x7bf4: 0x002ee285, 0x7bf5: 0x00389084, 0x7bf6: 0x00389284, 0x7bf7: 0x00389484,
+	0x7bf8: 0x00389684, 0x7bf9: 0x002d9a85, 0x7bfa: 0x40083420, 0x7bfb: 0xe0000b95,
+	0x7bfc: 0x00327e85, 0x7bfd: 0x00325685, 0x7bfe: 0x0032568b, 0x7bff: 0x00327e8b,
+	// Block 0x1f0, offset 0x7c00
+	0x7c00: 0xa0000000, 0x7c01: 0xa0000000, 0x7c02: 0xa0000000, 0x7c03: 0xa0000000,
+	0x7c04: 0xa0000000, 0x7c05: 0xa0000000, 0x7c06: 0xa0000000, 0x7c07: 0xa0000000,
+	0x7c08: 0xa0000000, 0x7c09: 0x40020020, 0x7c0a: 0x40020220, 0x7c0b: 0x40020420,
+	0x7c0c: 0x40020620, 0x7c0d: 0x40020820, 0x7c0e: 0xa0000000, 0x7c0f: 0xa0000000,
+	0x7c10: 0xa0000000, 0x7c11: 0xa0000000, 0x7c12: 0xa0000000, 0x7c13: 0xa0000000,
+	0x7c14: 0xa0000000, 0x7c15: 0xa0000000, 0x7c16: 0xa0000000, 0x7c17: 0xa0000000,
+	0x7c18: 0xa0000000, 0x7c19: 0xa0000000, 0x7c1a: 0xa0000000, 0x7c1b: 0xa0000000,
+	0x7c1c: 0xa0000000, 0x7c1d: 0xa0000000, 0x7c1e: 0xa0000000, 0x7c1f: 0xa0000000,
+	0x7c20: 0x40021220, 0x7c21: 0x4002ba20, 0x7c22: 0x4003e020, 0x7c23: 0x4004ea20,
+	0x7c24: 0x4027de20, 0x7c25: 0x4004ec20, 0x7c26: 0x4004e620, 0x7c27: 0x4003d220,
+	0x7c28: 0x4003f420, 0x7c29: 0x4003f620, 0x7c2a: 0x4004d820, 0x7c2b: 0x40093820,
+	0x7c2c: 0x40024020, 0x7c2d: 0x40021a20, 0x7c2e: 0x4002e420, 0x7c2f: 0x4004e220,
+	0x7c30: 0x4029cc20, 0x7c31: 0x4029ce20, 0x7c32: 0x4029d020, 0x7c33: 0x4029d220,
+	0x7c34: 0x4029d420, 0x7c35: 0x4029d620, 0x7c36: 0x4029d820, 0x7c37: 0x4029da20,
+	0x7c38: 0x4029dc20, 0x7c39: 0x4029de20, 0x7c3a: 0x40026c20, 0x7c3b: 0x40026220,
+	0x7c3c: 0x40094020, 0x7c3d: 0xc32f0851, 0x7c3e: 0x40094420, 0x7c3f: 0x4002c420,
+	// Block 0x1f1, offset 0x7c40
+	0x7c40: 0x4004d620, 0x7c41: 0xc39c0071, 0x7c42: 0x002c0a88, 0x7c43: 0x002c3a88,
+	0x7c44: 0x002c6288, 0x7c45: 0x002c9888, 0x7c46: 0x002d0888, 0x7c47: 0x002d2288,
+	0x7c48: 0x002d6888, 0x7c49: 0x002d9a88, 0x7c4a: 0x002dcc88, 0x7c4b: 0x002dfe88,
+	0x7c4c: 0xc0030002, 0x7c4d: 0x002e8288, 0x7c4e: 0x002e9e88, 0x7c4f: 0xc3a00071,
+	0x7c50: 0x002f2c88, 0x7c51: 0x002f5688, 0x7c52: 0x002f7a88, 0x7c53: 0x002fe688,
+	0x7c54: 0x00302c88, 0x7c55: 0xc3a40071, 0x7c56: 0x0030be88, 0x7c57: 0x0030e288,
+	0x7c58: 0x0030f688, 0x7c59: 0x00310088, 0x7c5a: 0x00312a88, 0x7c5b: 0x4003f820,
+	0x7c5c: 0x4004e420, 0x7c5d: 0x4003fa20, 0x7c5e: 0x40062420, 0x7c5f: 0x40021620,
+	0x7c60: 0x40061e20, 0x7c61: 0xc39a0071, 0x7c62: 0x402c0a20, 0x7c63: 0x402c3a20,
+	0x7c64: 0x402c6220, 0x7c65: 0x402c9820, 0x7c66: 0x402d0820, 0x7c67: 0x402d2220,
+	0x7c68: 0x402d6820, 0x7c69: 0x402d9a20, 0x7c6a: 0x402dcc20, 0x7c6b: 0x402dfe20,
+	0x7c6c: 0xc0000002, 0x7c6d: 0x402e8220, 0x7c6e: 0x402e9e20, 0x7c6f: 0xc39e0071,
+	0x7c70: 0x402f2c20, 0x7c71: 0x402f5620, 0x7c72: 0x402f7a20, 0x7c73: 0x402fe620,
+	0x7c74: 0x40302c20, 0x7c75: 0xc3a20071, 0x7c76: 0x4030be20, 0x7c77: 0x4030e220,
+	0x7c78: 0x4030f620, 0x7c79: 0x40310020, 0x7c7a: 0x40312a20, 0x7c7b: 0x4003fc20,
+	0x7c7c: 0x40094820, 0x7c7d: 0x4003fe20, 0x7c7e: 0x40094c20, 0x7c7f: 0xa0000000,
+	// Block 0x1f2, offset 0x7c80
+	0x7c80: 0xe00008f5, 0x7c81: 0xe00008ef, 0x7c82: 0xe0000921, 0x7c83: 0xe0000969,
+	0x7c84: 0xe00026b5, 0x7c85: 0xe000094d, 0x7c86: 0xe00009dd, 0x7c87: 0xe0000a53,
+	0x7c88: 0xe0000ae8, 0x7c89: 0xe0000ae2, 0x7c8a: 0xe0000af4, 0x7c8b: 0xe0000b20,
+	0x7c8c: 0xe0000c2b, 0x7c8d: 0xe0000c25, 0x7c8e: 0xe0000c37, 0x7c8f: 0xe0000c43,
+	0x7c90: 0xe0000ab3, 0x7c91: 0xe0000d63, 0x7c92: 0xe0000d9a, 0x7c93: 0xe0000d94,
+	0x7c94: 0xe0000da6, 0x7c95: 0xe0000de6, 0x7c96: 0xe00026c3, 0x7c97: 0x40093e20,
+	0x7c98: 0xe0000e12, 0x7c99: 0xe0000fe1, 0x7c9a: 0xe0000fdb, 0x7c9b: 0xe0000fed,
+	0x7c9c: 0xe00026d9, 0x7c9d: 0xe0001102, 0x7c9e: 0x00318888, 0x7c9f: 0xe0000f7b,
+	0x7ca0: 0xe00008f2, 0x7ca1: 0xe00008ec, 0x7ca2: 0xe000091e, 0x7ca3: 0xe0000966,
+	0x7ca4: 0xe00026b2, 0x7ca5: 0xe000094a, 0x7ca6: 0xe00009d5, 0x7ca7: 0xe0000a4d,
+	0x7ca8: 0xe0000ae5, 0x7ca9: 0xe0000adf, 0x7caa: 0xe0000af1, 0x7cab: 0xe0000b1d,
+	0x7cac: 0xe0000c28, 0x7cad: 0xe0000c22, 0x7cae: 0xe0000c34, 0x7caf: 0xe0000c40,
+	0x7cb0: 0xe0000aad, 0x7cb1: 0xe0000d60, 0x7cb2: 0xe0000d97, 0x7cb3: 0xe0000d91,
+	0x7cb4: 0xe0000da3, 0x7cb5: 0xe0000de3, 0x7cb6: 0xe00026c0, 0x7cb7: 0x40093c20,
+	0x7cb8: 0xe0000e0f, 0x7cb9: 0xe0000fde, 0x7cba: 0xe0000fd8, 0x7cbb: 0xe0000fea,
+	0x7cbc: 0xe00026d6, 0x7cbd: 0xe00010ff, 0x7cbe: 0x40318820, 0x7cbf: 0xe0001114,
+	// Block 0x1f3, offset 0x7cc0
+	0x7cc0: 0x40321220, 0x7cc1: 0x40321a20, 0x7cc2: 0x40322220, 0x7cc3: 0x40322a20,
+	0x7cc4: 0xe0000ad5, 0x7cc5: 0xe0000ad1, 0x7cc6: 0xe0000acd, 0x7cc7: 0xf0000a0a,
+	0x7cc8: 0xf000040a, 0x7cc9: 0xf0000404, 0x7cca: 0xf0000a0a, 0x7ccb: 0xf000040a,
+	0x7ccc: 0xf0000404, 0x7ccd: 0xe0000947, 0x7cce: 0xe0000944, 0x7ccf: 0xe0000c3d,
+	0x7cd0: 0xe0000c3a, 0x7cd1: 0xe0000dcc, 0x7cd2: 0xe0000dc9, 0x7cd3: 0xe0000ff3,
+	0x7cd4: 0xe0000ff0, 0x7cd5: 0xe00026f8, 0x7cd6: 0xe00026f4, 0x7cd7: 0xe00026e0,
+	0x7cd8: 0xe00026dc, 0x7cd9: 0xe00026f0, 0x7cda: 0xe00026ec, 0x7cdb: 0xe00026e8,
+	0x7cdc: 0xe00026e4, 0x7cdd: 0x402cae20, 0x7cde: 0xe00026bc, 0x7cdf: 0xe00026b8,
+	0x7ce0: 0xe0000976, 0x7ce1: 0xe0000972, 0x7ce2: 0xe00009f4, 0x7ce3: 0xe00009ef,
+	0x7ce4: 0x002d3a88, 0x7ce5: 0x402d3a20, 0x7ce6: 0xe0000bbe, 0x7ce7: 0xe0000bbb,
+	0x7ce8: 0xe0000c99, 0x7ce9: 0xe0000c96, 0x7cea: 0xe0000e20, 0x7ceb: 0xe0000e1d,
+	0x7cec: 0xe0000e27, 0x7ced: 0xe0000e23, 0x7cee: 0xe0001162, 0x7cef: 0xe000115f,
+	0x7cf0: 0xe0000c8d, 0x7cf1: 0xf0000a0a, 0x7cf2: 0xf000040a, 0x7cf3: 0xf0000404,
+	0x7cf4: 0xe0000bac, 0x7cf5: 0xe0000ba9, 0x7cf6: 0x002d7888, 0x7cf7: 0x00319488,
+	0x7cf8: 0xe0000d57, 0x7cf9: 0xe0000d54, 0x7cfa: 0xe0000954, 0x7cfb: 0xe0000950,
+	0x7cfc: 0xe00009ea, 0x7cfd: 0xe00009e5, 0x7cfe: 0xe0000e19, 0x7cff: 0xe0000e15,
+	// Block 0x1f4, offset 0x7d00
+	0x7d00: 0xe000098f, 0x7d01: 0xe000098c, 0x7d02: 0xe0000995, 0x7d03: 0xe0000992,
+	0x7d04: 0xe0000b62, 0x7d05: 0xe0000b5f, 0x7d06: 0xe0000b68, 0x7d07: 0xe0000b65,
+	0x7d08: 0xe0000c6c, 0x7d09: 0xe0000c69, 0x7d0a: 0xe0000c72, 0x7d0b: 0xe0000c6f,
+	0x7d0c: 0xe0000e4a, 0x7d0d: 0xe0000e47, 0x7d0e: 0xe0000e50, 0x7d0f: 0xe0000e4d,
+	0x7d10: 0xe0000ee8, 0x7d11: 0xe0000ee5, 0x7d12: 0xe0000eee, 0x7d13: 0xe0000eeb,
+	0x7d14: 0xe0001053, 0x7d15: 0xe0001050, 0x7d16: 0xe0001059, 0x7d17: 0xe0001056,
+	0x7d18: 0xe0000f61, 0x7d19: 0xe0000f5e, 0x7d1a: 0xe0000fa5, 0x7d1b: 0xe0000fa2,
+	0x7d1c: 0x00312288, 0x7d1d: 0x40312220, 0x7d1e: 0xe0000bf4, 0x7d1f: 0xe0000bf1,
+	0x7d20: 0x002ebc88, 0x7d21: 0x402c8c20, 0x7d22: 0x002f2288, 0x7d23: 0x402f2220,
+	0x7d24: 0x00314088, 0x7d25: 0x40314020, 0x7d26: 0xe000096f, 0x7d27: 0xe000096c,
+	0x7d28: 0xe0000b32, 0x7d29: 0xe0000b2f, 0x7d2a: 0xe00026d2, 0x7d2b: 0xe00026ce,
+	0x7d2c: 0xe0000dfd, 0x7d2d: 0xe0000df9, 0x7d2e: 0xe0000e04, 0x7d2f: 0xe0000e01,
+	0x7d30: 0xe0000e0b, 0x7d31: 0xe0000e07, 0x7d32: 0xe0001129, 0x7d33: 0xe0001126,
+	0x7d34: 0x402e5e20, 0x7d35: 0x402ed020, 0x7d36: 0x40305a20, 0x7d37: 0x402dd420,
+	0x7d38: 0xe0000abf, 0x7d39: 0xe0000ec4, 0x7d3a: 0x002be888, 0x7d3b: 0x002c4488,
+	0x7d3c: 0x402c4420, 0x7d3d: 0x002e3888, 0x7d3e: 0x00303e88, 0x7d3f: 0x402ffc20,
+	// Block 0x1f5, offset 0x7d40
+	0x7d40: 0xe0000d24, 0x7d41: 0xe0000d21, 0x7d42: 0xe0000d2a, 0x7d43: 0xe0000d27,
+	0x7d44: 0xe0000d69, 0x7d45: 0xe0000d66, 0x7d46: 0xe0000d7b, 0x7d47: 0xe0000d78,
+	0x7d48: 0xe0000d87, 0x7d49: 0xe0000d84, 0x7d4a: 0xe0000d81, 0x7d4b: 0xe0000d7e,
+	0x7d4c: 0xe0000ded, 0x7d4d: 0xe0000de9, 0x7d4e: 0xe00026ca, 0x7d4f: 0xe00026c6,
+	0x7d50: 0xe0000e3d, 0x7d51: 0xe0000e39, 0x7d52: 0xe0000e35, 0x7d53: 0xe0000e31,
+	0x7d54: 0xe0000ea7, 0x7d55: 0xe0000ea4, 0x7d56: 0xe0000ead, 0x7d57: 0xe0000eaa,
+	0x7d58: 0xe0000ed6, 0x7d59: 0xe0000ed3, 0x7d5a: 0xe0000ef4, 0x7d5b: 0xe0000ef1,
+	0x7d5c: 0xe0000efb, 0x7d5d: 0xe0000ef7, 0x7d5e: 0xe0000f02, 0x7d5f: 0xe0000eff,
+	0x7d60: 0xe0000f41, 0x7d61: 0xe0000f3e, 0x7d62: 0xe0000f53, 0x7d63: 0xe0000f50,
+	0x7d64: 0xe0000f26, 0x7d65: 0xe0000f22, 0x7d66: 0xe0000f3a, 0x7d67: 0xe0000f36,
+	0x7d68: 0xe0000f5a, 0x7d69: 0xe0000f56, 0x7d6a: 0xe0000f93, 0x7d6b: 0xe0000f90,
+	0x7d6c: 0xe0000f9f, 0x7d6d: 0xe0000f9c, 0x7d6e: 0xe0000fb1, 0x7d6f: 0xe0000fae,
+	0x7d70: 0xe0000fab, 0x7d71: 0xe0000fa8, 0x7d72: 0xe0001093, 0x7d73: 0xe0001090,
+	0x7d74: 0xe000109f, 0x7d75: 0xe000109c, 0x7d76: 0xe0001099, 0x7d77: 0xe0001096,
+	0x7d78: 0xe0001032, 0x7d79: 0xe000102e, 0x7d7a: 0xe00026f8, 0x7d7b: 0xe00026f4,
+	0x7d7c: 0xe00010a9, 0x7d7d: 0xe00010a6, 0x7d7e: 0xe00010af, 0x7d7f: 0xe00010ac,
+	// Block 0x1f6, offset 0x7d80
+	0x7d80: 0xa0000000, 0x7d81: 0xa0000000, 0x7d82: 0xa0000000, 0x7d83: 0xa0000000,
+	0x7d84: 0xa0000000, 0x7d85: 0xa0000000, 0x7d86: 0xa0000000, 0x7d87: 0xa0000000,
+	0x7d88: 0xa0000000, 0x7d89: 0x40020020, 0x7d8a: 0x40020220, 0x7d8b: 0x40020420,
+	0x7d8c: 0x40020620, 0x7d8d: 0x40020820, 0x7d8e: 0xa0000000, 0x7d8f: 0xa0000000,
+	0x7d90: 0xa0000000, 0x7d91: 0xa0000000, 0x7d92: 0xa0000000, 0x7d93: 0xa0000000,
+	0x7d94: 0xa0000000, 0x7d95: 0xa0000000, 0x7d96: 0xa0000000, 0x7d97: 0xa0000000,
+	0x7d98: 0xa0000000, 0x7d99: 0xa0000000, 0x7d9a: 0xa0000000, 0x7d9b: 0xa0000000,
+	0x7d9c: 0xa0000000, 0x7d9d: 0xa0000000, 0x7d9e: 0xa0000000, 0x7d9f: 0xa0000000,
+	0x7da0: 0x40021220, 0x7da1: 0x4002ba20, 0x7da2: 0x4003e020, 0x7da3: 0x4004ea20,
+	0x7da4: 0x4027de20, 0x7da5: 0x4004ec20, 0x7da6: 0x4004e620, 0x7da7: 0x4003d220,
+	0x7da8: 0x4003f420, 0x7da9: 0x4003f620, 0x7daa: 0x4004d820, 0x7dab: 0x40093820,
+	0x7dac: 0x40024020, 0x7dad: 0x40021a20, 0x7dae: 0x4002e420, 0x7daf: 0x4004e220,
+	0x7db0: 0x4029cc20, 0x7db1: 0x4029ce20, 0x7db2: 0x4029d020, 0x7db3: 0x4029d220,
+	0x7db4: 0x4029d420, 0x7db5: 0x4029d620, 0x7db6: 0x4029d820, 0x7db7: 0x4029da20,
+	0x7db8: 0x4029dc20, 0x7db9: 0x4029de20, 0x7dba: 0x40026c20, 0x7dbb: 0x40026220,
+	0x7dbc: 0x40094020, 0x7dbd: 0xc32f0851, 0x7dbe: 0x40094420, 0x7dbf: 0x4002c420,
+	// Block 0x1f7, offset 0x7dc0
+	0x7dc0: 0x4004d620, 0x7dc1: 0x002bde88, 0x7dc2: 0x002c0a88, 0x7dc3: 0x002c3a88,
+	0x7dc4: 0x002c6288, 0x7dc5: 0x002c9888, 0x7dc6: 0x002d0888, 0x7dc7: 0x002d2288,
+	0x7dc8: 0x002d6888, 0x7dc9: 0x002d9a88, 0x7dca: 0x002dcc88, 0x7dcb: 0x002dfe88,
+	0x7dcc: 0xc0030002, 0x7dcd: 0x002e8288, 0x7dce: 0x002e9e88, 0x7dcf: 0x002ee288,
+	0x7dd0: 0x002f2c88, 0x7dd1: 0x002f5688, 0x7dd2: 0x002f7a88, 0x7dd3: 0x002fe688,
+	0x7dd4: 0x00302c88, 0x7dd5: 0x00306c88, 0x7dd6: 0x0030be88, 0x7dd7: 0x0030e288,
+	0x7dd8: 0x0030f688, 0x7dd9: 0x00310088, 0x7dda: 0x00312a88, 0x7ddb: 0x4003f820,
+	0x7ddc: 0x4004e420, 0x7ddd: 0x4003fa20, 0x7dde: 0x40062420, 0x7ddf: 0x40021620,
+	0x7de0: 0x40061e20, 0x7de1: 0x402bde20, 0x7de2: 0x402c0a20, 0x7de3: 0x402c3a20,
+	0x7de4: 0x402c6220, 0x7de5: 0x402c9820, 0x7de6: 0x402d0820, 0x7de7: 0x402d2220,
+	0x7de8: 0x402d6820, 0x7de9: 0x402d9a20, 0x7dea: 0x402dcc20, 0x7deb: 0x402dfe20,
+	0x7dec: 0xc0000002, 0x7ded: 0x402e8220, 0x7dee: 0x402e9e20, 0x7def: 0x402ee220,
+	0x7df0: 0x402f2c20, 0x7df1: 0x402f5620, 0x7df2: 0x402f7a20, 0x7df3: 0x402fe620,
+	0x7df4: 0x40302c20, 0x7df5: 0x40306c20, 0x7df6: 0x4030be20, 0x7df7: 0x4030e220,
+	0x7df8: 0x4030f620, 0x7df9: 0x40310020, 0x7dfa: 0x40312a20, 0x7dfb: 0x4003fc20,
+	0x7dfc: 0x40094820, 0x7dfd: 0x4003fe20, 0x7dfe: 0x40094c20, 0x7dff: 0xa0000000,
+	// Block 0x1f8, offset 0x7e00
+	0x7e00: 0xa0000000, 0x7e01: 0xa0000000, 0x7e02: 0xa0000000, 0x7e03: 0xa0000000,
+	0x7e04: 0xa0000000, 0x7e05: 0xa0000000, 0x7e06: 0xa0000000, 0x7e07: 0xa0000000,
+	0x7e08: 0xa0000000, 0x7e09: 0x40020020, 0x7e0a: 0x40020220, 0x7e0b: 0x40020420,
+	0x7e0c: 0x40020620, 0x7e0d: 0x40020820, 0x7e0e: 0xa0000000, 0x7e0f: 0xa0000000,
+	0x7e10: 0xa0000000, 0x7e11: 0xa0000000, 0x7e12: 0xa0000000, 0x7e13: 0xa0000000,
+	0x7e14: 0xa0000000, 0x7e15: 0xa0000000, 0x7e16: 0xa0000000, 0x7e17: 0xa0000000,
+	0x7e18: 0xa0000000, 0x7e19: 0xa0000000, 0x7e1a: 0xa0000000, 0x7e1b: 0xa0000000,
+	0x7e1c: 0xa0000000, 0x7e1d: 0xa0000000, 0x7e1e: 0xa0000000, 0x7e1f: 0xa0000000,
+	0x7e20: 0x40021220, 0x7e21: 0x4002ba20, 0x7e22: 0x4003e020, 0x7e23: 0x4004ea20,
+	0x7e24: 0x4027de20, 0x7e25: 0x4004ec20, 0x7e26: 0x4004e620, 0x7e27: 0x4003d220,
+	0x7e28: 0x4003f420, 0x7e29: 0x4003f620, 0x7e2a: 0x4004d820, 0x7e2b: 0x40093820,
+	0x7e2c: 0x40024020, 0x7e2d: 0x40021a20, 0x7e2e: 0x4002e420, 0x7e2f: 0x4004e220,
+	0x7e30: 0x4029cc20, 0x7e31: 0x4029ce20, 0x7e32: 0x4029d020, 0x7e33: 0x4029d220,
+	0x7e34: 0x4029d420, 0x7e35: 0x4029d620, 0x7e36: 0x4029d820, 0x7e37: 0x4029da20,
+	0x7e38: 0x4029dc20, 0x7e39: 0x4029de20, 0x7e3a: 0x40026c20, 0x7e3b: 0x40026220,
+	0x7e3c: 0x40094020, 0x7e3d: 0xc32f0851, 0x7e3e: 0x40094420, 0x7e3f: 0x4002c420,
+	// Block 0x1f9, offset 0x7e40
+	0x7e40: 0x4004d620, 0x7e41: 0x002bde88, 0x7e42: 0x002c0a88, 0x7e43: 0x002c3a88,
+	0x7e44: 0x002c6288, 0x7e45: 0x002c9888, 0x7e46: 0x002d0888, 0x7e47: 0x002d2288,
+	0x7e48: 0x002d6888, 0x7e49: 0x002d9a88, 0x7e4a: 0x002dcc88, 0x7e4b: 0x002dfe88,
+	0x7e4c: 0xc0030002, 0x7e4d: 0x002e8288, 0x7e4e: 0xc3690a31, 0x7e4f: 0x002ee288,
+	0x7e50: 0x002f2c88, 0x7e51: 0x002f5688, 0x7e52: 0x002f7a88, 0x7e53: 0x002fe688,
+	0x7e54: 0x00302c88, 0x7e55: 0x00306c88, 0x7e56: 0x0030be88, 0x7e57: 0x0030e288,
+	0x7e58: 0x0030f688, 0x7e59: 0x00310088, 0x7e5a: 0x00312a88, 0x7e5b: 0x4003f820,
+	0x7e5c: 0x4004e420, 0x7e5d: 0x4003fa20, 0x7e5e: 0x40062420, 0x7e5f: 0x40021620,
+	0x7e60: 0x40061e20, 0x7e61: 0x402bde20, 0x7e62: 0x402c0a20, 0x7e63: 0x402c3a20,
+	0x7e64: 0x402c6220, 0x7e65: 0x402c9820, 0x7e66: 0x402d0820, 0x7e67: 0x402d2220,
+	0x7e68: 0x402d6820, 0x7e69: 0x402d9a20, 0x7e6a: 0x402dcc20, 0x7e6b: 0x402dfe20,
+	0x7e6c: 0xc0000002, 0x7e6d: 0x402e8220, 0x7e6e: 0xc3670a31, 0x7e6f: 0x402ee220,
+	0x7e70: 0x402f2c20, 0x7e71: 0x402f5620, 0x7e72: 0x402f7a20, 0x7e73: 0x402fe620,
+	0x7e74: 0x40302c20, 0x7e75: 0x40306c20, 0x7e76: 0x4030be20, 0x7e77: 0x4030e220,
+	0x7e78: 0x4030f620, 0x7e79: 0x40310020, 0x7e7a: 0x40312a20, 0x7e7b: 0x4003fc20,
+	0x7e7c: 0x40094820, 0x7e7d: 0x4003fe20, 0x7e7e: 0x40094c20, 0x7e7f: 0xa0000000,
+	// Block 0x1fa, offset 0x7e80
+	0x7e80: 0xe00008f5, 0x7e81: 0xe00008ef, 0x7e82: 0xe0000921, 0x7e83: 0xe0000969,
+	0x7e84: 0xe000095b, 0x7e85: 0xe000094d, 0x7e86: 0xe00009dd, 0x7e87: 0xe0000a53,
+	0x7e88: 0xe0000ae8, 0x7e89: 0xe0000ae2, 0x7e8a: 0xe0000af4, 0x7e8b: 0xe0000b20,
+	0x7e8c: 0xe0000c2b, 0x7e8d: 0xe0000c25, 0x7e8e: 0xe0000c37, 0x7e8f: 0xe0000c43,
+	0x7e90: 0xe0000ab3, 0x7e91: 0x002ea083, 0x7e92: 0xe0000d9a, 0x7e93: 0xe0000d94,
+	0x7e94: 0xe0000da6, 0x7e95: 0xe0000de6, 0x7e96: 0xe0000dd2, 0x7e97: 0x40093e20,
+	0x7e98: 0xe0000e12, 0x7e99: 0xe0000fe1, 0x7e9a: 0xe0000fdb, 0x7e9b: 0xe0000fed,
+	0x7e9c: 0xe0000fff, 0x7e9d: 0xe0001102, 0x7e9e: 0x00318888, 0x7e9f: 0xe0000f7b,
+	0x7ea0: 0xe00008f2, 0x7ea1: 0xe00008ec, 0x7ea2: 0xe000091e, 0x7ea3: 0xe0000966,
+	0x7ea4: 0xe0000958, 0x7ea5: 0xe000094a, 0x7ea6: 0xe00009d5, 0x7ea7: 0xe0000a4d,
+	0x7ea8: 0xe0000ae5, 0x7ea9: 0xe0000adf, 0x7eaa: 0xe0000af1, 0x7eab: 0xe0000b1d,
+	0x7eac: 0xe0000c28, 0x7ead: 0xe0000c22, 0x7eae: 0xe0000c34, 0x7eaf: 0xe0000c40,
+	0x7eb0: 0xe0000aad, 0x7eb1: 0x402ea020, 0x7eb2: 0xe0000d97, 0x7eb3: 0xe0000d91,
+	0x7eb4: 0xe0000da3, 0x7eb5: 0xe0000de3, 0x7eb6: 0xe0000dcf, 0x7eb7: 0x40093c20,
+	0x7eb8: 0xe0000e0f, 0x7eb9: 0xe0000fde, 0x7eba: 0xe0000fd8, 0x7ebb: 0xe0000fea,
+	0x7ebc: 0xe0000ffc, 0x7ebd: 0xe00010ff, 0x7ebe: 0x40318820, 0x7ebf: 0xe0001114,
+	// Block 0x1fb, offset 0x7ec0
+	0x7ec0: 0xa0000000, 0x7ec1: 0xa0000000, 0x7ec2: 0xa0000000, 0x7ec3: 0xa0000000,
+	0x7ec4: 0xa0000000, 0x7ec5: 0xa0000000, 0x7ec6: 0xa0000000, 0x7ec7: 0xa0000000,
+	0x7ec8: 0xa0000000, 0x7ec9: 0x40020020, 0x7eca: 0x40020220, 0x7ecb: 0x40020420,
+	0x7ecc: 0x40020620, 0x7ecd: 0x40020820, 0x7ece: 0xa0000000, 0x7ecf: 0xa0000000,
+	0x7ed0: 0xa0000000, 0x7ed1: 0xa0000000, 0x7ed2: 0xa0000000, 0x7ed3: 0xa0000000,
+	0x7ed4: 0xa0000000, 0x7ed5: 0xa0000000, 0x7ed6: 0xa0000000, 0x7ed7: 0xa0000000,
+	0x7ed8: 0xa0000000, 0x7ed9: 0xa0000000, 0x7eda: 0xa0000000, 0x7edb: 0xa0000000,
+	0x7edc: 0xa0000000, 0x7edd: 0xa0000000, 0x7ede: 0xa0000000, 0x7edf: 0xa0000000,
+	0x7ee0: 0x40021220, 0x7ee1: 0x4002ba20, 0x7ee2: 0x4003e020, 0x7ee3: 0x4004ea20,
+	0x7ee4: 0x4027de20, 0x7ee5: 0x4004ec20, 0x7ee6: 0x4004e620, 0x7ee7: 0x4003d220,
+	0x7ee8: 0x4003f420, 0x7ee9: 0x4003f620, 0x7eea: 0x4004d820, 0x7eeb: 0x40093820,
+	0x7eec: 0x40024020, 0x7eed: 0x40021a20, 0x7eee: 0x4002e420, 0x7eef: 0x4004e220,
+	0x7ef0: 0x4029cc20, 0x7ef1: 0x4029ce20, 0x7ef2: 0x4029d020, 0x7ef3: 0x4029d220,
+	0x7ef4: 0x4029d420, 0x7ef5: 0x4029d620, 0x7ef6: 0x4029d820, 0x7ef7: 0x4029da20,
+	0x7ef8: 0x4029dc20, 0x7ef9: 0x4029de20, 0x7efa: 0x40026c20, 0x7efb: 0x40026220,
+	0x7efc: 0x40094020, 0x7efd: 0xc32f0851, 0x7efe: 0x40094420, 0x7eff: 0x4002c420,
+	// Block 0x1fc, offset 0x7f00
+	0x7f00: 0x4004d620, 0x7f01: 0xc3a90a51, 0x7f02: 0x002c0a88, 0x7f03: 0x002c3a88,
+	0x7f04: 0x002c6288, 0x7f05: 0x002c9888, 0x7f06: 0x002d0888, 0x7f07: 0x002d2288,
+	0x7f08: 0x002d6888, 0x7f09: 0x002d9a88, 0x7f0a: 0x002dcc88, 0x7f0b: 0x002dfe88,
+	0x7f0c: 0xc0030002, 0x7f0d: 0x002e8288, 0x7f0e: 0x002e9e88, 0x7f0f: 0xc3b00a81,
+	0x7f10: 0x002f2c88, 0x7f11: 0x002f5688, 0x7f12: 0x002f7a88, 0x7f13: 0x002fe688,
+	0x7f14: 0x00302c88, 0x7f15: 0xc3840951, 0x7f16: 0x0030be88, 0x7f17: 0x0030bea3,
+	0x7f18: 0x0030f688, 0x7f19: 0x00310088, 0x7f1a: 0x00312a88, 0x7f1b: 0x4003f820,
+	0x7f1c: 0x4004e420, 0x7f1d: 0x4003fa20, 0x7f1e: 0x40062420, 0x7f1f: 0x40021620,
+	0x7f20: 0x40061e20, 0x7f21: 0xc3a60a51, 0x7f22: 0x402c0a20, 0x7f23: 0x402c3a20,
+	0x7f24: 0x402c6220, 0x7f25: 0x402c9820, 0x7f26: 0x402d0820, 0x7f27: 0x402d2220,
+	0x7f28: 0x402d6820, 0x7f29: 0x402d9a20, 0x7f2a: 0x402dcc20, 0x7f2b: 0x402dfe20,
+	0x7f2c: 0xc0000002, 0x7f2d: 0x402e8220, 0x7f2e: 0x402e9e20, 0x7f2f: 0xc3ac0a81,
+	0x7f30: 0x402f2c20, 0x7f31: 0x402f5620, 0x7f32: 0x402f7a20, 0x7f33: 0x402fe620,
+	0x7f34: 0x40302c20, 0x7f35: 0xc3810951, 0x7f36: 0x4030be20, 0x7f37: 0x4030be21,
+	0x7f38: 0x4030f620, 0x7f39: 0x40310020, 0x7f3a: 0x40312a20, 0x7f3b: 0x4003fc20,
+	0x7f3c: 0x40094820, 0x7f3d: 0x4003fe20, 0x7f3e: 0x40094c20, 0x7f3f: 0xa0000000,
+	// Block 0x1fd, offset 0x7f40
+	0x7f40: 0xe00008f5, 0x7f41: 0xe00008ef, 0x7f42: 0xe0000921, 0x7f43: 0xe0000969,
+	0x7f44: 0x00320e83, 0x7f45: 0x00320c83, 0x7f46: 0x00320ea3, 0x7f47: 0xe0000a53,
+	0x7f48: 0xe0000ae8, 0x7f49: 0xe0000ae2, 0x7f4a: 0xe0000af4, 0x7f4b: 0xe0000b20,
+	0x7f4c: 0xe0000c2b, 0x7f4d: 0xe0000c25, 0x7f4e: 0xe0000c37, 0x7f4f: 0xe0000c43,
+	0x7f50: 0x002c62a3, 0x7f51: 0xe0000d63, 0x7f52: 0xe0000d9a, 0x7f53: 0xe0000d94,
+	0x7f54: 0xe0000da6, 0x7f55: 0x003210e3, 0x7f56: 0x00321083, 0x7f57: 0x40093e20,
+	0x7f58: 0x003210a3, 0x7f59: 0xe0000fe1, 0x7f5a: 0xe0000fdb, 0x7f5b: 0xe0000fed,
+	0x7f5c: 0x003100a3, 0x7f5d: 0xe0001102, 0x7f5e: 0xe0002716, 0x7f5f: 0xe0000f7b,
+	0x7f60: 0xe00008f2, 0x7f61: 0xe00008ec, 0x7f62: 0xe000091e, 0x7f63: 0xe0000966,
+	0x7f64: 0x40320e20, 0x7f65: 0x40320c20, 0x7f66: 0x40320e21, 0x7f67: 0xe0000a4d,
+	0x7f68: 0xe0000ae5, 0x7f69: 0xe0000adf, 0x7f6a: 0xe0000af1, 0x7f6b: 0xe0000b1d,
+	0x7f6c: 0xe0000c28, 0x7f6d: 0xe0000c22, 0x7f6e: 0xe0000c34, 0x7f6f: 0xe0000c40,
+	0x7f70: 0x402c6221, 0x7f71: 0xe0000d60, 0x7f72: 0xe0000d97, 0x7f73: 0xe0000d91,
+	0x7f74: 0xe0000da3, 0x7f75: 0x40321023, 0x7f76: 0x40321020, 0x7f77: 0x40093c20,
+	0x7f78: 0x40321021, 0x7f79: 0xe0000fde, 0x7f7a: 0xe0000fd8, 0x7f7b: 0xe0000fea,
+	0x7f7c: 0x40310021, 0x7f7d: 0xe00010ff, 0x7f7e: 0xe0002713, 0x7f7f: 0xe0001114,
+	// Block 0x1fe, offset 0x7f80
+	0x7f80: 0xe0000983, 0x7f81: 0xe0000980, 0x7f82: 0xe00008fb, 0x7f83: 0xe00008f8,
+	0x7f84: 0xe000097d, 0x7f85: 0xe000097a, 0x7f86: 0xe0000a38, 0x7f87: 0xe0000a35,
+	0x7f88: 0xe0000a3e, 0x7f89: 0xe0000a3b, 0x7f8a: 0xe0000a4a, 0x7f8b: 0xe0000a47,
+	0x7f8c: 0xe0000a44, 0x7f8d: 0xe0000a41, 0x7f8e: 0xe0000a86, 0x7f8f: 0xe0000a83,
+	0x7f90: 0x002c62c3, 0x7f91: 0x402c6222, 0x7f92: 0xe0000b46, 0x7f93: 0xe0000b43,
+	0x7f94: 0xe0000aee, 0x7f95: 0xe0000aeb, 0x7f96: 0xe0000b2c, 0x7f97: 0xe0000b29,
+	0x7f98: 0xe0000b40, 0x7f99: 0xe0000b3d, 0x7f9a: 0xe0000b1a, 0x7f9b: 0xe0000b17,
+	0x7f9c: 0xe0000bb8, 0x7f9d: 0xe0000bb5, 0x7f9e: 0xe0000bb2, 0x7f9f: 0xe0000baf,
+	0x7fa0: 0xe0000bc4, 0x7fa1: 0xe0000bc1, 0x7fa2: 0xe0000bca, 0x7fa3: 0xe0000bc7,
+	0x7fa4: 0xe0000bee, 0x7fa5: 0xe0000beb, 0x7fa6: 0xe0000c1b, 0x7fa7: 0xe0000c18,
+	0x7fa8: 0xe0000c51, 0x7fa9: 0xe0000c4e, 0x7faa: 0xe0000c60, 0x7fab: 0xe0000c5d,
+	0x7fac: 0xe0000c31, 0x7fad: 0xe0000c2e, 0x7fae: 0xe0000c5a, 0x7faf: 0xe0000c57,
+	0x7fb0: 0xe0000c54, 0x7fb1: 0x402da220, 0x7fb2: 0xf0000a0a, 0x7fb3: 0xf0000404,
+	0x7fb4: 0xe0000c8a, 0x7fb5: 0xe0000c87, 0x7fb6: 0xe0000c9f, 0x7fb7: 0xe0000c9c,
+	0x7fb8: 0x402f7220, 0x7fb9: 0xe0000ccc, 0x7fba: 0xe0000cc9, 0x7fbb: 0xe0000cd8,
+	0x7fbc: 0xe0000cd5, 0x7fbd: 0xe0000cd2, 0x7fbe: 0xe0000ccf, 0x7fbf: 0xe0000d04,
+	// Block 0x1ff, offset 0x7fc0
+	0x7fc0: 0xe0000cfe, 0x7fc1: 0xe0000cf8, 0x7fc2: 0xe0000cf5, 0x7fc3: 0xe0000d51,
+	0x7fc4: 0xe0000d4e, 0x7fc5: 0xe0000d6f, 0x7fc6: 0xe0000d6c, 0x7fc7: 0xe0000d5d,
+	0x7fc8: 0xe0000d5a, 0x7fc9: 0xf0000404, 0x7fca: 0x002e9ea3, 0x7fcb: 0x402e9e21,
+	0x7fcc: 0xe0000e2e, 0x7fcd: 0xe0000e2b, 0x7fce: 0xe0000da0, 0x7fcf: 0xe0000d9d,
+	0x7fd0: 0x003210c3, 0x7fd1: 0x40321022, 0x7fd2: 0x00321103, 0x7fd3: 0x40321024,
+	0x7fd4: 0xe0000eca, 0x7fd5: 0xe0000ec7, 0x7fd6: 0xe0000edc, 0x7fd7: 0xe0000ed9,
+	0x7fd8: 0xe0000ed0, 0x7fd9: 0xe0000ecd, 0x7fda: 0xe0000f1f, 0x7fdb: 0xe0000f1c,
+	0x7fdc: 0xe0000f2d, 0x7fdd: 0xe0000f2a, 0x7fde: 0xe0000f47, 0x7fdf: 0xe0000f44,
+	0x7fe0: 0xe0000f33, 0x7fe1: 0xe0000f30, 0x7fe2: 0xe0000f99, 0x7fe3: 0xe0000f96,
+	0x7fe4: 0xe0000f8a, 0x7fe5: 0xe0000f87, 0x7fe6: 0x00303688, 0x7fe7: 0x40303620,
+	0x7fe8: 0xe000102b, 0x7fe9: 0xe0001028, 0x7fea: 0xe000103f, 0x7feb: 0xe000103c,
+	0x7fec: 0xe0000fe7, 0x7fed: 0xe0000fe4, 0x7fee: 0xe0000ff9, 0x7fef: 0xe0000ff6,
+	0x7ff0: 0x003100c3, 0x7ff1: 0x40310022, 0x7ff2: 0xe0001039, 0x7ff3: 0xe0001036,
+	0x7ff4: 0xe0002728, 0x7ff5: 0xe0002725, 0x7ff6: 0xe000110e, 0x7ff7: 0xe000110b,
+	0x7ff8: 0xe0001117, 0x7ff9: 0xe000113b, 0x7ffa: 0xe0001138, 0x7ffb: 0xe000114d,
+	0x7ffc: 0xe000114a, 0x7ffd: 0xe0001147, 0x7ffe: 0xe0001144, 0x7fff: 0xe0000f64,
+	// Block 0x200, offset 0x8000
+	0x8000: 0x40321220, 0x8001: 0x40321a20, 0x8002: 0x40322220, 0x8003: 0x40322a20,
+	0x8004: 0xe0000ad5, 0x8005: 0xe0000ad1, 0x8006: 0xe0000acd, 0x8007: 0xf0000a0a,
+	0x8008: 0xf000040a, 0x8009: 0xf0000404, 0x800a: 0xf0000a0a, 0x800b: 0xf000040a,
+	0x800c: 0xf0000404, 0x800d: 0xe0000947, 0x800e: 0xe0000944, 0x800f: 0xe0000c3d,
+	0x8010: 0xe0000c3a, 0x8011: 0xe0000dcc, 0x8012: 0xe0000dc9, 0x8013: 0xe0000ff3,
+	0x8014: 0xe0000ff0, 0x8015: 0xe0002685, 0x8016: 0xe0002682, 0x8017: 0xe0002673,
+	0x8018: 0xe0002670, 0x8019: 0xe000267f, 0x801a: 0xe000267c, 0x801b: 0xe0002679,
+	0x801c: 0xe0002676, 0x801d: 0x402cae20, 0x801e: 0xe000274c, 0x801f: 0xe0002749,
+	0x8020: 0xe0000976, 0x8021: 0xe0000972, 0x8022: 0xe00026a9, 0x8023: 0xe00026a6,
+	0x8024: 0x002d3a88, 0x8025: 0x402d3a20, 0x8026: 0xe0000bbe, 0x8027: 0xe0000bbb,
+	0x8028: 0xe0000c99, 0x8029: 0xe0000c96, 0x802a: 0xe0000e20, 0x802b: 0xe0000e1d,
+	0x802c: 0xe0000e27, 0x802d: 0xe0000e23, 0x802e: 0xe0001162, 0x802f: 0xe000115f,
+	0x8030: 0xe0000c8d, 0x8031: 0xf0000a0a, 0x8032: 0xf000040a, 0x8033: 0xf0000404,
+	0x8034: 0xe0000bac, 0x8035: 0xe0000ba9, 0x8036: 0x002d7888, 0x8037: 0x00319488,
+	0x8038: 0xe0000d57, 0x8039: 0xe0000d54, 0x803a: 0xe000268b, 0x803b: 0xe0002688,
+	0x803c: 0xe0002752, 0x803d: 0xe000274f, 0x803e: 0xe000275e, 0x803f: 0xe000275b,
+	// Block 0x201, offset 0x8040
+	0x8040: 0xe000098f, 0x8041: 0xe000098c, 0x8042: 0xe0000995, 0x8043: 0xe0000992,
+	0x8044: 0xe0000b62, 0x8045: 0xe0000b5f, 0x8046: 0xe0000b68, 0x8047: 0xe0000b65,
+	0x8048: 0xe0000c6c, 0x8049: 0xe0000c69, 0x804a: 0xe0000c72, 0x804b: 0xe0000c6f,
+	0x804c: 0xe0000e4a, 0x804d: 0xe0000e47, 0x804e: 0xe0000e50, 0x804f: 0xe0000e4d,
+	0x8050: 0xe0000ee8, 0x8051: 0xe0000ee5, 0x8052: 0xe0000eee, 0x8053: 0xe0000eeb,
+	0x8054: 0xe0001053, 0x8055: 0xe0001050, 0x8056: 0xe0001059, 0x8057: 0xe0001056,
+	0x8058: 0xe0000f61, 0x8059: 0xe0000f5e, 0x805a: 0xe0000fa5, 0x805b: 0xe0000fa2,
+	0x805c: 0x00312288, 0x805d: 0x40312220, 0x805e: 0xe0000bf4, 0x805f: 0xe0000bf1,
+	0x8060: 0x002ebc88, 0x8061: 0x402c8c20, 0x8062: 0x002f2288, 0x8063: 0x402f2220,
+	0x8064: 0x00314088, 0x8065: 0x40314020, 0x8066: 0xe000096f, 0x8067: 0xe000096c,
+	0x8068: 0xe0000b32, 0x8069: 0xe0000b2f, 0x806a: 0xe0002758, 0x806b: 0xe0002755,
+	0x806c: 0xe0002776, 0x806d: 0xe0002773, 0x806e: 0xe0000e04, 0x806f: 0xe0000e01,
+	0x8070: 0xe0000e0b, 0x8071: 0xe0000e07, 0x8072: 0xe0001129, 0x8073: 0xe0001126,
+	0x8074: 0x402e5e20, 0x8075: 0x402ed020, 0x8076: 0x40305a20, 0x8077: 0x402dd420,
+	0x8078: 0xe0000abf, 0x8079: 0xe0000ec4, 0x807a: 0x002be888, 0x807b: 0x002c4488,
+	0x807c: 0x402c4420, 0x807d: 0x002e3888, 0x807e: 0x00303e88, 0x807f: 0x402ffc20,
+	// Block 0x202, offset 0x8080
+	0x8080: 0xe0000d24, 0x8081: 0xe0000d21, 0x8082: 0xe0000d2a, 0x8083: 0xe0000d27,
+	0x8084: 0xe0000d69, 0x8085: 0xe0000d66, 0x8086: 0xe0000d7b, 0x8087: 0xe0000d78,
+	0x8088: 0xe0000d87, 0x8089: 0xe0000d84, 0x808a: 0xe0000d81, 0x808b: 0xe0000d7e,
+	0x808c: 0xe0002764, 0x808d: 0xe0002761, 0x808e: 0xe0002770, 0x808f: 0xe000276d,
+	0x8090: 0xe0000e3d, 0x8091: 0xe0000e39, 0x8092: 0xe0000e35, 0x8093: 0xe0000e31,
+	0x8094: 0xe0000ea7, 0x8095: 0xe0000ea4, 0x8096: 0xe0000ead, 0x8097: 0xe0000eaa,
+	0x8098: 0xe0000ed6, 0x8099: 0xe0000ed3, 0x809a: 0xe0000ef4, 0x809b: 0xe0000ef1,
+	0x809c: 0xe0000efb, 0x809d: 0xe0000ef7, 0x809e: 0xe0000f02, 0x809f: 0xe0000eff,
+	0x80a0: 0xe0000f41, 0x80a1: 0xe0000f3e, 0x80a2: 0xe0000f53, 0x80a3: 0xe0000f50,
+	0x80a4: 0xe0000f26, 0x80a5: 0xe0000f22, 0x80a6: 0xe0000f3a, 0x80a7: 0xe0000f36,
+	0x80a8: 0xe0000f5a, 0x80a9: 0xe0000f56, 0x80aa: 0xe0000f93, 0x80ab: 0xe0000f90,
+	0x80ac: 0xe0000f9f, 0x80ad: 0xe0000f9c, 0x80ae: 0xe0000fb1, 0x80af: 0xe0000fae,
+	0x80b0: 0xe0000fab, 0x80b1: 0xe0000fa8, 0x80b2: 0xe0001093, 0x80b3: 0xe0001090,
+	0x80b4: 0xe000109f, 0x80b5: 0xe000109c, 0x80b6: 0xe0001099, 0x80b7: 0xe0001096,
+	0x80b8: 0xe0001032, 0x80b9: 0xe000102e, 0x80ba: 0xe0002685, 0x80bb: 0xe0002682,
+	0x80bc: 0xe00010a9, 0x80bd: 0xe00010a6, 0x80be: 0xe00010af, 0x80bf: 0xe00010ac,
+	// Block 0x203, offset 0x80c0
+	0x80c0: 0xe0002722, 0x80c1: 0xe000271f, 0x80c2: 0xe000271c, 0x80c3: 0xe0002719,
+	0x80c4: 0xe0002731, 0x80c5: 0xe000272e, 0x80c6: 0xe0002737, 0x80c7: 0xe0002734,
+	0x80c8: 0xe000273d, 0x80c9: 0xe000273a, 0x80ca: 0xe00010fc, 0x80cb: 0xe00010f9,
+	0x80cc: 0xe00010f6, 0x80cd: 0xe00010f3, 0x80ce: 0xe0001123, 0x80cf: 0xe0001120,
+	0x80d0: 0xe0001141, 0x80d1: 0xe000113e, 0x80d2: 0xe0001153, 0x80d3: 0xe0001150,
+	0x80d4: 0xe0001159, 0x80d5: 0xe0001156, 0x80d6: 0xe0000c15, 0x80d7: 0xe0000f8d,
+	0x80d8: 0xe000272b, 0x80d9: 0xe0001111, 0x80da: 0xf0000404, 0x80db: 0xe0000f70,
+	0x80dc: 0x40300420, 0x80dd: 0x40300620, 0x80de: 0xe0000f7f, 0x80df: 0x402c9620,
+	0x80e0: 0xe000099b, 0x80e1: 0xe0000998, 0x80e2: 0xe0000989, 0x80e3: 0xe0000986,
+	0x80e4: 0xe0000928, 0x80e5: 0xe0000924, 0x80e6: 0xe0000930, 0x80e7: 0xe000092c,
+	0x80e8: 0xe0000940, 0x80e9: 0xe000093c, 0x80ea: 0xe0000938, 0x80eb: 0xe0000934,
+	0x80ec: 0xe00009aa, 0x80ed: 0xe00009a6, 0x80ee: 0xe0000902, 0x80ef: 0xe00008fe,
+	0x80f0: 0xe000090a, 0x80f1: 0xe0000906, 0x80f2: 0xe000091a, 0x80f3: 0xe0000916,
+	0x80f4: 0xe0000912, 0x80f5: 0xe000090e, 0x80f6: 0xe00009a2, 0x80f7: 0xe000099e,
+	0x80f8: 0xe0000b6e, 0x80f9: 0xe0000b6b, 0x80fa: 0xe0000b5c, 0x80fb: 0xe0000b59,
+	0x80fc: 0xe0000b26, 0x80fd: 0xe0000b23, 0x80fe: 0xe0000afb, 0x80ff: 0xe0000af7,
+	// Block 0x204, offset 0x8100
+	0x8100: 0xe0000b03, 0x8101: 0xe0000aff, 0x8102: 0xe0000b13, 0x8103: 0xe0000b0f,
+	0x8104: 0xe0000b0b, 0x8105: 0xe0000b07, 0x8106: 0xe0000b75, 0x8107: 0xe0000b71,
+	0x8108: 0xe0000c66, 0x8109: 0xe0000c63, 0x810a: 0xe0000c78, 0x810b: 0xe0000c75,
+	0x810c: 0xe0000e84, 0x810d: 0xe0000e81, 0x810e: 0xe0000e44, 0x810f: 0xe0000e41,
+	0x8110: 0xe0000dad, 0x8111: 0xe0000da9, 0x8112: 0xe0000db5, 0x8113: 0xe0000db1,
+	0x8114: 0xe0000dc5, 0x8115: 0xe0000dc1, 0x8116: 0xe000276a, 0x8117: 0xe0002767,
+	0x8118: 0xe0000e8b, 0x8119: 0xe0000e87, 0x811a: 0xe0000e5d, 0x811b: 0xe0000e59,
+	0x811c: 0xe0000e65, 0x811d: 0xe0000e61, 0x811e: 0xe0000e75, 0x811f: 0xe0000e71,
+	0x8120: 0xe000277c, 0x8121: 0xe0002779, 0x8122: 0xe0000e7d, 0x8123: 0xe0000e79,
+	0x8124: 0xe000108d, 0x8125: 0xe000108a, 0x8126: 0xe000104d, 0x8127: 0xe000104a,
+	0x8128: 0xe0001066, 0x8129: 0xe0001062, 0x812a: 0xe000106e, 0x812b: 0xe000106a,
+	0x812c: 0xe000107e, 0x812d: 0xe000107a, 0x812e: 0xe0001076, 0x812f: 0xe0001072,
+	0x8130: 0xe0001086, 0x8131: 0xe0001082, 0x8132: 0xe0001108, 0x8133: 0xe0001105,
+	0x8134: 0xe0001135, 0x8135: 0xe0001132, 0x8136: 0xe000112f, 0x8137: 0xe000112c,
+	0x8138: 0xe000111d, 0x8139: 0xe000111a, 0x813a: 0xe0000d0a, 0x813b: 0xe0000d07,
+	0x813c: 0x0030d888, 0x813d: 0x4030d820, 0x813e: 0x00312088, 0x813f: 0x40312020,
+	// Block 0x205, offset 0x8140
+	0x8140: 0xe00009bc, 0x8141: 0xe00009c0, 0x8142: 0x002c3a8b, 0x8143: 0xf0000a04,
+	0x8144: 0x40081c20, 0x8145: 0xe0000a5e, 0x8146: 0xe0000a62, 0x8147: 0x002cc28a,
+	0x8148: 0x40081e20, 0x8149: 0xf0000a04, 0x814a: 0x002d2285, 0x814b: 0x002d688b,
+	0x814c: 0x002d688b, 0x814d: 0x002d688b, 0x814e: 0x002d6885, 0x814f: 0xf0000202,
+	0x8150: 0x002d9a8b, 0x8151: 0x002d9a8b, 0x8152: 0x002e228b, 0x8153: 0x002e2285,
+	0x8154: 0x40082020, 0x8155: 0x002e9e8b, 0x8156: 0xf000040a, 0x8157: 0x40082220,
+	0x8158: 0x40082420, 0x8159: 0x002f2c8b, 0x815a: 0x002f568b, 0x815b: 0x002f7a8b,
+	0x815c: 0x002f7a8b, 0x815d: 0x002f7a8b, 0x815e: 0x40082620, 0x815f: 0x40082820,
+	0x8160: 0xf0001414, 0x8161: 0xe0000fbd, 0x8162: 0xf0001414, 0x8163: 0x40082a20,
+	0x8164: 0x00312a8b, 0x8165: 0x40082c20, 0x8166: 0x0032a288, 0x8167: 0x40082e20,
+	0x8168: 0x00312a8b, 0x8169: 0x40083020, 0x816a: 0x002dfe88, 0x816b: 0x00320c83,
+	0x816c: 0x002c0a8b, 0x816d: 0x002c3a8b, 0x816e: 0x40083220, 0x816f: 0x002c9885,
+	0x8170: 0x002c988b, 0x8171: 0x002d088b, 0x8172: 0x002d1e88, 0x8173: 0x002e828b,
+	0x8174: 0x002ee285, 0x8175: 0x00389084, 0x8176: 0x00389284, 0x8177: 0x00389484,
+	0x8178: 0x00389684, 0x8179: 0x002d9a85, 0x817a: 0x40083420, 0x817b: 0xe0000b95,
+	0x817c: 0x00327e85, 0x817d: 0x00325685, 0x817e: 0x0032568b, 0x817f: 0x00327e8b,
+	// Block 0x206, offset 0x8180
+	0x8180: 0xe0000024, 0x8181: 0xe0000029, 0x8182: 0xe000002e, 0x8183: 0xe0000033,
+	0x8184: 0xe0000038, 0x8185: 0xe000003d, 0x8186: 0xe0000042, 0x8187: 0xe0000047,
+	0x8188: 0xf0001f04, 0x8189: 0xf0001f04, 0x818a: 0xf0001f04, 0x818b: 0xf0001f04,
+	0x818c: 0xf0001f04, 0x818d: 0xf0001f04, 0x818e: 0xf0001f04, 0x818f: 0xf0001f04,
+	0x8190: 0xf0001f04, 0x8191: 0xf0000404, 0x8192: 0xf0000404, 0x8193: 0xf0000404,
+	0x8194: 0xf0000404, 0x8195: 0xf0000404, 0x8196: 0xf0000404, 0x8197: 0xf0000404,
+	0x8198: 0xf0000404, 0x8199: 0xf0000404, 0x819a: 0xf0000404, 0x819b: 0xf0000404,
+	0x819c: 0xf0000404, 0x819d: 0xf0000404, 0x819e: 0xf0000404, 0x819f: 0xf0000404,
+	0x81a0: 0xf0000404, 0x81a1: 0xf0000404, 0x81a2: 0xf0000404, 0x81a3: 0xf0000404,
+	0x81a4: 0xf0000404, 0x81a5: 0xf0000404, 0x81a6: 0xf0000404, 0x81a7: 0xf0000404,
+	0x81a8: 0xf0000404, 0x81a9: 0xf0000404, 0x81aa: 0xf0000404, 0x81ab: 0xf0000404,
+	0x81ac: 0xf0000404, 0x81ad: 0xf0000404, 0x81ae: 0xf0000404, 0x81af: 0xf0000404,
+	0x81b0: 0xf0000404, 0x81b1: 0xf0000404, 0x81b2: 0xe00026fc, 0x81b3: 0xf0000404,
+	0x81b4: 0xf0000404, 0x81b5: 0xf0000404, 0x81b6: 0x002bde8c, 0x81b7: 0x002c0a8c,
+	0x81b8: 0x002c3a8c, 0x81b9: 0x002c628c, 0x81ba: 0x002c988c, 0x81bb: 0x002d088c,
+	0x81bc: 0x002d228c, 0x81bd: 0x002d688c, 0x81be: 0x002d9a8c, 0x81bf: 0x002dcc8c,
+	// Block 0x207, offset 0x81c0
+	0x81c0: 0xf0001d1c, 0x81c1: 0xf0001d1c, 0x81c2: 0xf0001d1c, 0x81c3: 0xf0001d1c,
+	0x81c4: 0xf0001d1c, 0x81c5: 0xf0001d1d, 0x81c6: 0xf0001d1d, 0x81c7: 0xf0001d1d,
+	0x81c8: 0xe0000a6b, 0x81c9: 0xe0000cb4, 0x81ca: 0xf0001d1c, 0x81cb: 0xf0001d1c,
+	0x81cc: 0xf0001d1c, 0x81cd: 0xf0001c1c, 0x81ce: 0xf0001c1c, 0x81cf: 0xf0001c1c,
+	0x81d0: 0xf0001c1d, 0x81d1: 0xe0000cb9, 0x81d2: 0xe0000d36, 0x81d3: 0xe0000be3,
+	0x81d4: 0xe0000fc5, 0x81d5: 0xf0001c1c, 0x81d6: 0xf0001c1c, 0x81d7: 0xf0001c1c,
+	0x81d8: 0xf0001c1c, 0x81d9: 0xf0001c1c, 0x81da: 0xf0001c1c, 0x81db: 0xf0001c1c,
+	0x81dc: 0xf0001c1c, 0x81dd: 0xf0001c1c, 0x81de: 0xf0001c1c, 0x81df: 0xe0000d3e,
+	0x81e0: 0xe0000a72, 0x81e1: 0xf0001c1c, 0x81e2: 0xe0000cbd, 0x81e3: 0xe0000d42,
+	0x81e4: 0xe0000a76, 0x81e5: 0xf0001c1c, 0x81e6: 0xe0000cc1, 0x81e7: 0xe0000d2d,
+	0x81e8: 0xe0000d31, 0x81e9: 0xf0001c1d, 0x81ea: 0xe0000cc5, 0x81eb: 0xe0000d4a,
+	0x81ec: 0xe0000be7, 0x81ed: 0xe0000f0b, 0x81ee: 0xe0000f0f, 0x81ef: 0xe0000f15,
+	0x81f0: 0xf0001c1c, 0x81f1: 0xf0001c1c, 0x81f2: 0xf0001c1c, 0x81f3: 0xf0001c1c,
+	0x81f4: 0xf0001d1c, 0x81f5: 0xf0001d1c, 0x81f6: 0xf0001d1c, 0x81f7: 0xf0001d1c,
+	0x81f8: 0xf0001d1c, 0x81f9: 0xf0001d1d, 0x81fa: 0xe0002710, 0x81fb: 0xe000270d,
+	0x81fc: 0xe000277f, 0x81fd: 0xe0002707, 0x81fe: 0xe0002704, 0x81ff: 0xe000270a,
+	// Block 0x208, offset 0x8200
+	0x8200: 0xf0001d1c, 0x8201: 0xf0001d1d, 0x8202: 0xe00009b7, 0x8203: 0xf0001c1d,
+	0x8204: 0xf0001c1c, 0x8205: 0xf0001c1c, 0x8206: 0xe0000a66, 0x8207: 0xe0000a7a,
+	0x8208: 0xf0001d1c, 0x8209: 0xf0001c1d, 0x820a: 0xf0001c1c, 0x820b: 0xf0001d1d,
+	0x820c: 0xf0001c1c, 0x820d: 0xf0001d1d, 0x820e: 0xf0001d1d, 0x820f: 0xf0001c1c,
+	0x8210: 0xf0001c1c, 0x8211: 0xf0001c1c, 0x8212: 0xe0000d0d, 0x8213: 0xf0001c1c,
+	0x8214: 0xf0001c1c, 0x8215: 0xe0000d3a, 0x8216: 0xe0000d46, 0x8217: 0xf0001d1d,
+	0x8218: 0xe0000eb0, 0x8219: 0xe0000eb8, 0x821a: 0xf0001d1d, 0x821b: 0xf0001c1c,
+	0x821c: 0xf0001c1d, 0x821d: 0xe0002740, 0x821e: 0xe00010b2, 0x821f: 0xe00009c8,
+	0x8220: 0xf0001f04, 0x8221: 0xf0001f04, 0x8222: 0xf0001f04, 0x8223: 0xf0001f04,
+	0x8224: 0xf0001f04, 0x8225: 0xf0001f04, 0x8226: 0xf0001f04, 0x8227: 0xf0001f04,
+	0x8228: 0xf0001f04, 0x8229: 0xf0000404, 0x822a: 0xf0000404, 0x822b: 0xf0000404,
+	0x822c: 0xf0000404, 0x822d: 0xf0000404, 0x822e: 0xf0000404, 0x822f: 0xf0000404,
+	0x8230: 0xf0000404, 0x8231: 0xf0000404, 0x8232: 0xf0000404, 0x8233: 0xf0000404,
+	0x8234: 0xf0000404, 0x8235: 0xf0000404, 0x8236: 0xf0000404, 0x8237: 0xf0000404,
+	0x8238: 0xf0000404, 0x8239: 0xf0000404, 0x823a: 0xf0000404, 0x823b: 0xf0000404,
+	0x823c: 0xf0000404, 0x823d: 0xf0000404, 0x823e: 0xf0000404, 0x823f: 0xe0000bdf,
+	// Block 0x209, offset 0x8240
+	0x8240: 0xf0001f04, 0x8241: 0xf0001f04, 0x8242: 0xf0001f04, 0x8243: 0xf0001f04,
+	0x8244: 0xf0001f04, 0x8245: 0xf0001f04, 0x8246: 0xf0001f04, 0x8247: 0xf0001f04,
+	0x8248: 0xf0001f04, 0x8249: 0xf0001f04, 0x824a: 0xf0001f04,
+	0x8250: 0xf0000a04, 0x8251: 0xf0000a04, 0x8252: 0xf0000a04, 0x8253: 0xf0000a04,
+	0x8254: 0xf0000a04, 0x8255: 0xf0000a04, 0x8256: 0xf0000a04, 0x8257: 0xf0000a04,
+	0x8258: 0xf0000a04, 0x8259: 0xf0000a04, 0x825a: 0xf0000a04, 0x825b: 0xf0000a04,
+	0x825c: 0xf0000a04, 0x825d: 0xf0000a04, 0x825e: 0xf0000a04, 0x825f: 0xf0000a04,
+	0x8260: 0xf0000a04, 0x8261: 0xf0000a04, 0x8262: 0xf0000a04, 0x8263: 0xf0000a04,
+	0x8264: 0xf0000a04, 0x8265: 0xf0000a04, 0x8266: 0xe0002700, 0x8267: 0xf0000a04,
+	0x8268: 0xf0000a04, 0x8269: 0xf0000a04, 0x826a: 0xf0000a04, 0x826b: 0x002c3a8c,
+	0x826c: 0x002f7a8c, 0x826d: 0xf0000c0c, 0x826e: 0xe0002746,
+	0x8270: 0x002bde9d, 0x8271: 0x002c0a9d, 0x8272: 0x002c3a9d, 0x8273: 0x002c629d,
+	0x8274: 0x002c989d, 0x8275: 0x002d089d, 0x8276: 0x002d229d, 0x8277: 0x002d689d,
+	0x8278: 0x002d9a9d, 0x8279: 0x002dcc9d, 0x827a: 0x002dfe9d, 0x827b: 0x002e229d,
+	0x827c: 0x002e829d, 0x827d: 0x002e9e9d, 0x827e: 0x002ee29d, 0x827f: 0x002f2c9d,
+	// Block 0x20a, offset 0x8280
+	0x8280: 0x002f569d, 0x8281: 0x002f7a9d, 0x8282: 0x002fe69d, 0x8283: 0x00302c9d,
+	0x8284: 0x00306c9d, 0x8285: 0x0030be9d, 0x8286: 0x0030e29d, 0x8287: 0x0030f69d,
+	0x8288: 0x0031009d, 0x8289: 0x00312a9d, 0x828a: 0xf0001d1d, 0x828b: 0xf0001d1d,
+	0x828c: 0xf0001d1d, 0x828d: 0xf0001d1d, 0x828e: 0xe0000ebc, 0x828f: 0xe0002743,
+	0x8290: 0x002bde8c, 0x8291: 0x002c0a8c, 0x8292: 0x002c3a8c, 0x8293: 0x002c628c,
+	0x8294: 0x002c988c, 0x8295: 0x002d088c, 0x8296: 0x002d228c, 0x8297: 0x002d688c,
+	0x8298: 0x002d9a8c, 0x8299: 0x002dcc8c, 0x829a: 0x002dfe8c, 0x829b: 0x002e228c,
+	0x829c: 0x002e828c, 0x829d: 0x002e9e8c, 0x829e: 0x002ee28c, 0x829f: 0x002f2c8c,
+	0x82a0: 0x002f568c, 0x82a1: 0x002f7a8c, 0x82a2: 0x002fe68c, 0x82a3: 0x00302c8c,
+	0x82a4: 0x00306c8c, 0x82a5: 0x0030be8c, 0x82a6: 0x0030e28c, 0x82a7: 0x0030f68c,
+	0x82a8: 0x0031008c, 0x82a9: 0x00312a8c, 0x82aa: 0xf0001414, 0x82ab: 0xf0001414,
+	0x82b0: 0x002bde9d, 0x82b1: 0x002c0a9d, 0x82b2: 0x002c3a9d, 0x82b3: 0x002c629d,
+	0x82b4: 0x002c989d, 0x82b5: 0x002d089d, 0x82b6: 0x002d229d, 0x82b7: 0x002d689d,
+	0x82b8: 0x002d9a9d, 0x82b9: 0x002dcc9d, 0x82ba: 0x002dfe9d, 0x82bb: 0x002e229d,
+	0x82bc: 0x002e829d, 0x82bd: 0x002e9e9d, 0x82be: 0x002ee29d, 0x82bf: 0x002f2c9d,
+	// Block 0x20b, offset 0x82c0
+	0x82c0: 0xa0000000, 0x82c1: 0xa0000000, 0x82c2: 0xa0000000, 0x82c3: 0xa0000000,
+	0x82c4: 0xa0000000, 0x82c5: 0xa0000000, 0x82c6: 0xa0000000, 0x82c7: 0xa0000000,
+	0x82c8: 0xa0000000, 0x82c9: 0x40020020, 0x82ca: 0x40020220, 0x82cb: 0x40020420,
+	0x82cc: 0x40020620, 0x82cd: 0x40020820, 0x82ce: 0xa0000000, 0x82cf: 0xa0000000,
+	0x82d0: 0xa0000000, 0x82d1: 0xa0000000, 0x82d2: 0xa0000000, 0x82d3: 0xa0000000,
+	0x82d4: 0xa0000000, 0x82d5: 0xa0000000, 0x82d6: 0xa0000000, 0x82d7: 0xa0000000,
+	0x82d8: 0xa0000000, 0x82d9: 0xa0000000, 0x82da: 0xa0000000, 0x82db: 0xa0000000,
+	0x82dc: 0xa0000000, 0x82dd: 0xa0000000, 0x82de: 0xa0000000, 0x82df: 0xa0000000,
+	0x82e0: 0x40021220, 0x82e1: 0x4002ba20, 0x82e2: 0xa0002402, 0x82e3: 0x4004ea20,
+	0x82e4: 0x4027de20, 0x82e5: 0x4004ec20, 0x82e6: 0x4004e620, 0x82e7: 0xa0002202,
+	0x82e8: 0x4003f420, 0x82e9: 0x4003f620, 0x82ea: 0x4004d820, 0x82eb: 0x40093820,
+	0x82ec: 0x40024020, 0x82ed: 0x40021a20, 0x82ee: 0x4002e420, 0x82ef: 0x4004e220,
+	0x82f0: 0x4029cc20, 0x82f1: 0x4029ce20, 0x82f2: 0x4029d020, 0x82f3: 0x4029d220,
+	0x82f4: 0x4029d420, 0x82f5: 0x4029d620, 0x82f6: 0x4029d820, 0x82f7: 0x4029da20,
+	0x82f8: 0x4029dc20, 0x82f9: 0x4029de20, 0x82fa: 0x40026c20, 0x82fb: 0x40026220,
+	0x82fc: 0x40094020, 0x82fd: 0xc32f0851, 0x82fe: 0x40094420, 0x82ff: 0x4002c420,
+	// Block 0x20c, offset 0x8300
+	0x8300: 0x4004d620, 0x8301: 0x002bde88, 0x8302: 0x002c0a88, 0x8303: 0x002c3a88,
+	0x8304: 0x002c6288, 0x8305: 0x002c9888, 0x8306: 0x002d0888, 0x8307: 0x002d2288,
+	0x8308: 0x002d6888, 0x8309: 0x002d9a88, 0x830a: 0x002dcc88, 0x830b: 0x002dfe88,
+	0x830c: 0xc0030002, 0x830d: 0x002e8288, 0x830e: 0x002e9e88, 0x830f: 0x002ee288,
+	0x8310: 0x002f2c88, 0x8311: 0x002f5688, 0x8312: 0x002f7a88, 0x8313: 0x002fe688,
+	0x8314: 0x00302c88, 0x8315: 0x00306c88, 0x8316: 0x0030be88, 0x8317: 0x0030e288,
+	0x8318: 0x0030f688, 0x8319: 0x00310088, 0x831a: 0x00312a88, 0x831b: 0x4003f820,
+	0x831c: 0x4004e420, 0x831d: 0x4003fa20, 0x831e: 0x40062420, 0x831f: 0x40021620,
+	0x8320: 0x40061e20, 0x8321: 0x402bde20, 0x8322: 0x402c0a20, 0x8323: 0x402c3a20,
+	0x8324: 0x402c6220, 0x8325: 0x402c9820, 0x8326: 0x402d0820, 0x8327: 0x402d2220,
+	0x8328: 0x402d6820, 0x8329: 0x402d9a20, 0x832a: 0x402dcc20, 0x832b: 0x402dfe20,
+	0x832c: 0xc0000002, 0x832d: 0x402e8220, 0x832e: 0x402e9e20, 0x832f: 0x402ee220,
+	0x8330: 0x402f2c20, 0x8331: 0x402f5620, 0x8332: 0x402f7a20, 0x8333: 0x402fe620,
+	0x8334: 0x40302c20, 0x8335: 0x40306c20, 0x8336: 0x4030be20, 0x8337: 0x4030e220,
+	0x8338: 0x4030f620, 0x8339: 0x40310020, 0x833a: 0x40312a20, 0x833b: 0x4003fc20,
+	0x833c: 0x40094820, 0x833d: 0x4003fe20, 0x833e: 0x40094c20, 0x833f: 0xa0000000,
+	// Block 0x20d, offset 0x8340
+	0x8340: 0x40055620, 0x8341: 0xa1809102, 0x8342: 0xa1909002, 0x8343: 0x40055820,
+	0x8344: 0xae600000, 0x8345: 0xadc00000, 0x8346: 0x40055a20, 0x8347: 0xa1208d02,
+	0x8350: 0x40389020, 0x8351: 0x40389220, 0x8352: 0x40389420, 0x8353: 0x40389620,
+	0x8354: 0x40389820, 0x8355: 0x40389a20, 0x8356: 0x40389c20, 0x8357: 0x40389e20,
+	0x8358: 0x4038a020, 0x8359: 0x4038a220, 0x835a: 0x0038a499, 0x835b: 0x4038a420,
+	0x835c: 0x4038a620, 0x835d: 0x0038a899, 0x835e: 0x4038a820, 0x835f: 0x0038aa99,
+	0x8360: 0x4038aa20, 0x8361: 0x4038ac20, 0x8362: 0x4038ae20, 0x8363: 0x0038b099,
+	0x8364: 0x4038b020, 0x8365: 0x0038b299, 0x8366: 0x4038b220, 0x8367: 0x4038b420,
+	0x8368: 0x4038b620, 0x8369: 0x4038b820, 0x836a: 0x4038ba20,
+	0x8370: 0xe00014ff, 0x8371: 0xe0001502, 0x8372: 0xe0001511, 0x8373: 0xa0002102,
+	0x8374: 0xa0002302,
+	// Block 0x20e, offset 0x8380
+	0x8380: 0xa0002502, 0x8381: 0x4039fc20, 0x8382: 0x403a1220, 0x8383: 0x403a1a20,
+	0x8384: 0x403a4020, 0x8385: 0x403a4e20, 0x8386: 0x403a5620, 0x8387: 0x403a6820,
+	0x8388: 0xc34b0171, 0x8389: 0x403a9222, 0x838a: 0xc34d0171, 0x838b: 0xa1b0a202,
+	0x838c: 0xa1c0a502, 0x838d: 0xa1d0a902, 0x838e: 0xa1e0ad02, 0x838f: 0xa1f0b202,
+	0x8390: 0xa200b602, 0x8391: 0xa210ba02, 0x8392: 0xa220bc02, 0x8393: 0xae60bd02,
+	0x8394: 0xae60be02, 0x8395: 0xadc0bf02, 0x8396: 0xadc0c102, 0x8397: 0xae60c202,
+	0x8398: 0xae60c302, 0x8399: 0xae60c402, 0x839a: 0xae60c502, 0x839b: 0xae60c602,
+	0x839c: 0xadc0c702, 0x839d: 0xae60c802, 0x839e: 0xae60c902, 0x839f: 0xadc0c002,
+	0x83a0: 0xe000015e, 0x83a1: 0xe00001e6, 0x83a2: 0xe0000301, 0x83a3: 0xe00003db,
+	0x83a4: 0xe00004b6, 0x83a5: 0xe0000580, 0x83a6: 0xe000064b, 0x83a7: 0xe00006f3,
+	0x83a8: 0xe000079f, 0x83a9: 0xe0000844, 0x83aa: 0x4004ee20, 0x83ab: 0x40024c20,
+	0x83ac: 0x40024e20, 0x83ad: 0x4004de20, 0x83ae: 0x40393a20, 0x83af: 0x403a1020,
+	0x83b0: 0xa230d102, 0x83b1: 0x40392420, 0x83b2: 0x40392220, 0x83b3: 0x40392a20,
+	0x83b4: 0x00391c84, 0x83b5: 0xf0000404, 0x83b6: 0xf0000404, 0x83b7: 0xf0000404,
+	0x83b8: 0xf0000404, 0x83b9: 0x40395a20, 0x83ba: 0x40395c20, 0x83bb: 0x40393e20,
+	0x83bc: 0x40395e20, 0x83bd: 0x40396020, 0x83be: 0x40394020, 0x83bf: 0x40396220,
+	// Block 0x20f, offset 0x83c0
+	0x83c1: 0x40491020, 0x83c2: 0x40491220, 0x83c3: 0x40491420,
+	0x83c4: 0x40491620, 0x83c5: 0x40491820, 0x83c6: 0x40491a20, 0x83c7: 0x40491c20,
+	0x83c8: 0x40491e20, 0x83c9: 0x40492020, 0x83ca: 0x40492220, 0x83cb: 0x40492420,
+	0x83cc: 0x40492620, 0x83cd: 0x40492820, 0x83ce: 0x40492a20, 0x83cf: 0x40492c20,
+	0x83d0: 0x40492e20, 0x83d1: 0x40493020, 0x83d2: 0x40493220, 0x83d3: 0x40493420,
+	0x83d4: 0x40493620, 0x83d5: 0x40493820, 0x83d6: 0x40493a20, 0x83d7: 0x40493c20,
+	0x83d8: 0x40493e20, 0x83d9: 0x40494020, 0x83da: 0x40494220, 0x83db: 0x40494420,
+	0x83dc: 0x40494620, 0x83dd: 0x40494820, 0x83de: 0x40494a20, 0x83df: 0x40494c20,
+	0x83e0: 0x40494e20, 0x83e1: 0x40495020, 0x83e2: 0x40495220, 0x83e3: 0x40495420,
+	0x83e4: 0x40495620, 0x83e5: 0x40495820, 0x83e6: 0x40495a20, 0x83e7: 0x40495c20,
+	0x83e8: 0x40495e20, 0x83e9: 0x40496020, 0x83ea: 0x40496220, 0x83eb: 0x40496420,
+	0x83ec: 0x40496620, 0x83ed: 0x40496820, 0x83ee: 0x40496a20, 0x83ef: 0x40496c20,
+	0x83f0: 0x40496e20, 0x83f1: 0x40497020, 0x83f2: 0x40497220, 0x83f3: 0x40497420,
+	0x83f4: 0x40497620, 0x83f5: 0x40497820, 0x83f6: 0x40497a20, 0x83f7: 0x40497c20,
+	0x83f8: 0x826724bf, 0x83f9: 0x826724c0, 0x83fa: 0xa0002602,
+	0x83ff: 0x4027f420,
+	// Block 0x210, offset 0x8400
+	0x8400: 0xa0000000, 0x8401: 0xa0000000, 0x8402: 0xa0000000, 0x8403: 0xa0000000,
+	0x8404: 0xa0000000, 0x8405: 0xa0000000, 0x8406: 0xa0000000, 0x8407: 0xa0000000,
+	0x8408: 0xa0000000, 0x8409: 0x40020020, 0x840a: 0x40020220, 0x840b: 0x40020420,
+	0x840c: 0x40020620, 0x840d: 0x40020820, 0x840e: 0xa0000000, 0x840f: 0xa0000000,
+	0x8410: 0xa0000000, 0x8411: 0xa0000000, 0x8412: 0xa0000000, 0x8413: 0xa0000000,
+	0x8414: 0xa0000000, 0x8415: 0xa0000000, 0x8416: 0xa0000000, 0x8417: 0xa0000000,
+	0x8418: 0xa0000000, 0x8419: 0xa0000000, 0x841a: 0xa0000000, 0x841b: 0xa0000000,
+	0x841c: 0xa0000000, 0x841d: 0xa0000000, 0x841e: 0xa0000000, 0x841f: 0xa0000000,
+	0x8420: 0x40021220, 0x8421: 0x4002ba20, 0x8422: 0x4003e020, 0x8423: 0x4004ea20,
+	0x8424: 0x4027de20, 0x8425: 0x4004ec20, 0x8426: 0x4004e620, 0x8427: 0x4003d220,
+	0x8428: 0x4003f420, 0x8429: 0x4003f620, 0x842a: 0x4004d820, 0x842b: 0x40093820,
+	0x842c: 0x40024020, 0x842d: 0x40021a20, 0x842e: 0x4002e420, 0x842f: 0x4004e220,
+	0x8430: 0x4029cc20, 0x8431: 0x4029ce20, 0x8432: 0x4029d020, 0x8433: 0x4029d220,
+	0x8434: 0x4029d420, 0x8435: 0x4029d620, 0x8436: 0x4029d820, 0x8437: 0x4029da20,
+	0x8438: 0x4029dc20, 0x8439: 0x4029de20, 0x843a: 0x40026c20, 0x843b: 0x40026220,
+	0x843c: 0x40094020, 0x843d: 0xc32f0851, 0x843e: 0x40094420, 0x843f: 0x4002c420,
+	// Block 0x211, offset 0x8440
+	0x8440: 0x4004d620, 0x8441: 0x002bde88, 0x8442: 0x002c0a88, 0x8443: 0xc3b708f1,
+	0x8444: 0xc3bd0b13, 0x8445: 0x002c9888, 0x8446: 0x002d0888, 0x8447: 0x002d2288,
+	0x8448: 0x002d6888, 0x8449: 0x002d9a88, 0x844a: 0x002dcc88, 0x844b: 0x002dfe88,
+	0x844c: 0xc3c60be4, 0x844d: 0x002e8288, 0x844e: 0xc3cb0c52, 0x844f: 0x002ee288,
+	0x8450: 0x002f2c88, 0x8451: 0x002f5688, 0x8452: 0x002f7a88, 0x8453: 0xc34108d1,
+	0x8454: 0x00302c88, 0x8455: 0x00306c88, 0x8456: 0x0030be88, 0x8457: 0x0030e288,
+	0x8458: 0x0030f688, 0x8459: 0x00310088, 0x845a: 0xc37f08d1, 0x845b: 0x4003f820,
+	0x845c: 0x4004e420, 0x845d: 0x4003fa20, 0x845e: 0x40062420, 0x845f: 0x40021620,
+	0x8460: 0x40061e20, 0x8461: 0x402bde20, 0x8462: 0x402c0a20, 0x8463: 0xc3b408f1,
+	0x8464: 0xc3ba0ac2, 0x8465: 0x402c9820, 0x8466: 0x402d0820, 0x8467: 0x402d2220,
+	0x8468: 0x402d6820, 0x8469: 0x402d9a20, 0x846a: 0x402dcc20, 0x846b: 0x402dfe20,
+	0x846c: 0xc3c20b93, 0x846d: 0x402e8220, 0x846e: 0xc3670c41, 0x846f: 0x402ee220,
+	0x8470: 0x402f2c20, 0x8471: 0x402f5620, 0x8472: 0x402f7a20, 0x8473: 0xc33f08d1,
+	0x8474: 0x40302c20, 0x8475: 0x40306c20, 0x8476: 0x4030be20, 0x8477: 0x4030e220,
+	0x8478: 0x4030f620, 0x8479: 0x40310020, 0x847a: 0xc37d08d1, 0x847b: 0x4003fc20,
+	0x847c: 0x40094820, 0x847d: 0x4003fe20, 0x847e: 0x40094c20, 0x847f: 0xa0000000,
+	// Block 0x212, offset 0x8480
+	0x8480: 0xe0000983, 0x8481: 0xe0000980, 0x8482: 0xe00008fb, 0x8483: 0xe00008f8,
+	0x8484: 0xe000097d, 0x8485: 0xe000097a, 0x8486: 0x002c3e83, 0x8487: 0x402c3e20,
+	0x8488: 0xe0000a3e, 0x8489: 0xe0000a3b, 0x848a: 0xe0000a4a, 0x848b: 0xe0000a47,
+	0x848c: 0x002c3c83, 0x848d: 0x402c3c20, 0x848e: 0xe0000a86, 0x848f: 0xe0000a83,
+	0x8490: 0x002c6683, 0x8491: 0x402c6620, 0x8492: 0xe0000b46, 0x8493: 0xe0000b43,
+	0x8494: 0xe0000aee, 0x8495: 0xe0000aeb, 0x8496: 0xe0000b2c, 0x8497: 0xe0000b29,
+	0x8498: 0xe0000b40, 0x8499: 0xe0000b3d, 0x849a: 0xe0000b1a, 0x849b: 0xe0000b17,
+	0x849c: 0xe0000bb8, 0x849d: 0xe0000bb5, 0x849e: 0xe0000bb2, 0x849f: 0xe0000baf,
+	0x84a0: 0xe0000bc4, 0x84a1: 0xe0000bc1, 0x84a2: 0xe0000bca, 0x84a3: 0xe0000bc7,
+	0x84a4: 0xe0000bee, 0x84a5: 0xe0000beb, 0x84a6: 0xe0000c1b, 0x84a7: 0xe0000c18,
+	0x84a8: 0xe0000c51, 0x84a9: 0xe0000c4e, 0x84aa: 0xe0000c60, 0x84ab: 0xe0000c5d,
+	0x84ac: 0xe0000c31, 0x84ad: 0xe0000c2e, 0x84ae: 0xe0000c5a, 0x84af: 0xe0000c57,
+	0x84b0: 0xe0000c54, 0x84b1: 0x402da220, 0x84b2: 0xf0000a0a, 0x84b3: 0xf0000404,
+	0x84b4: 0xe0000c8a, 0x84b5: 0xe0000c87, 0x84b6: 0xe0000c9f, 0x84b7: 0xe0000c9c,
+	0x84b8: 0x402f7220, 0x84b9: 0xe0000ccc, 0x84ba: 0xe0000cc9, 0x84bb: 0xe0000cd8,
+	0x84bc: 0xe0000cd5, 0x84bd: 0xe0000cd2, 0x84be: 0xe0000ccf, 0x84bf: 0xe0000d04,
+	// Block 0x213, offset 0x84c0
+	0x84c0: 0xe0000cfe, 0x84c1: 0xe0000cf8, 0x84c2: 0xe0000cf5, 0x84c3: 0xe0000d51,
+	0x84c4: 0xe0000d4e, 0x84c5: 0xe0000d6f, 0x84c6: 0xe0000d6c, 0x84c7: 0xe0000d5d,
+	0x84c8: 0xe0000d5a, 0x84c9: 0xf0000404, 0x84ca: 0x002eda88, 0x84cb: 0x402eda20,
+	0x84cc: 0xe0000e2e, 0x84cd: 0xe0000e2b, 0x84ce: 0xe0000da0, 0x84cf: 0xe0000d9d,
+	0x84d0: 0xe0000de0, 0x84d1: 0xe0000ddd, 0x84d2: 0xe0000e93, 0x84d3: 0xe0000e8f,
+	0x84d4: 0xe0000eca, 0x84d5: 0xe0000ec7, 0x84d6: 0xe0000edc, 0x84d7: 0xe0000ed9,
+	0x84d8: 0xe0000ed0, 0x84d9: 0xe0000ecd, 0x84da: 0xe0000f1f, 0x84db: 0xe0000f1c,
+	0x84dc: 0xe0000f2d, 0x84dd: 0xe0000f2a, 0x84de: 0xe0000f47, 0x84df: 0xe0000f44,
+	0x84e0: 0x002fe883, 0x84e1: 0x402fe820, 0x84e2: 0xe0000f99, 0x84e3: 0xe0000f96,
+	0x84e4: 0xe0000f8a, 0x84e5: 0xe0000f87, 0x84e6: 0x00303688, 0x84e7: 0x40303620,
+	0x84e8: 0xe000102b, 0x84e9: 0xe0001028, 0x84ea: 0xe000103f, 0x84eb: 0xe000103c,
+	0x84ec: 0xe0000fe7, 0x84ed: 0xe0000fe4, 0x84ee: 0xe0000ff9, 0x84ef: 0xe0000ff6,
+	0x84f0: 0xe0001025, 0x84f1: 0xe0001022, 0x84f2: 0xe0001039, 0x84f3: 0xe0001036,
+	0x84f4: 0xe00010d8, 0x84f5: 0xe00010d5, 0x84f6: 0xe000110e, 0x84f7: 0xe000110b,
+	0x84f8: 0xe0001117, 0x84f9: 0xe000113b, 0x84fa: 0xe0001138, 0x84fb: 0xe000114d,
+	0x84fc: 0xe000114a, 0x84fd: 0x00312c83, 0x84fe: 0x40312c20, 0x84ff: 0xe0000f64,
+	// Block 0x214, offset 0x8500
+	0x8500: 0x40321220, 0x8501: 0x40321a20, 0x8502: 0x40322220, 0x8503: 0x40322a20,
+	0x8504: 0x002c6487, 0x8505: 0x002c6485, 0x8506: 0x002c6483, 0x8507: 0x002e2487,
+	0x8508: 0x002e2485, 0x8509: 0x002e2483, 0x850a: 0x002ea087, 0x850b: 0x002ea085,
+	0x850c: 0x002ea083, 0x850d: 0xe0000947, 0x850e: 0xe0000944, 0x850f: 0xe0000c3d,
+	0x8510: 0xe0000c3a, 0x8511: 0xe0000dcc, 0x8512: 0xe0000dc9, 0x8513: 0xe0000ff3,
+	0x8514: 0xe0000ff0, 0x8515: 0xe000101e, 0x8516: 0xe000101a, 0x8517: 0xe0001006,
+	0x8518: 0xe0001002, 0x8519: 0xe0001016, 0x851a: 0xe0001012, 0x851b: 0xe000100e,
+	0x851c: 0xe000100a, 0x851d: 0x402cae20, 0x851e: 0xe0000962, 0x851f: 0xe000095e,
+	0x8520: 0xe0000976, 0x8521: 0xe0000972, 0x8522: 0xe00009f4, 0x8523: 0xe00009ef,
+	0x8524: 0x002d3a88, 0x8525: 0x402d3a20, 0x8526: 0xe0000bbe, 0x8527: 0xe0000bbb,
+	0x8528: 0xe0000c99, 0x8529: 0xe0000c96, 0x852a: 0xe0000e20, 0x852b: 0xe0000e1d,
+	0x852c: 0xe0000e27, 0x852d: 0xe0000e23, 0x852e: 0xe0001162, 0x852f: 0xe000115f,
+	0x8530: 0xe0000c8d, 0x8531: 0xf0000a0a, 0x8532: 0xf000040a, 0x8533: 0xf0000404,
+	0x8534: 0xe0000bac, 0x8535: 0xe0000ba9, 0x8536: 0x002d7888, 0x8537: 0x00319488,
+	0x8538: 0xe0000d57, 0x8539: 0xe0000d54, 0x853a: 0xe0000954, 0x853b: 0xe0000950,
+	0x853c: 0xe00009ea, 0x853d: 0xe00009e5, 0x853e: 0xe0000e19, 0x853f: 0xe0000e15,
+	// Block 0x215, offset 0x8540
+	0x8540: 0xe00009b1, 0x8541: 0xe00009ae, 0x8542: 0xe0000a22, 0x8543: 0xe0000a1f,
+	0x8544: 0xe0000a28, 0x8545: 0xe0000a25, 0x8546: 0xe0000a2e, 0x8547: 0xe0000a2b,
+	0x8548: 0xe0002785, 0x8549: 0xe0002782, 0x854a: 0xe0000a8c, 0x854b: 0xe0000a89,
+	0x854c: 0xe0000a98, 0x854d: 0xe0000a95, 0x854e: 0xe0000aa4, 0x854f: 0xe0000aa1,
+	0x8550: 0xe0000a92, 0x8551: 0xe0000a8f, 0x8552: 0xe0000a9e, 0x8553: 0xe0000a9b,
+	0x8554: 0xe0000b55, 0x8555: 0xe0000b51, 0x8556: 0xe0000b4d, 0x8557: 0xe0000b49,
+	0x8558: 0xe0000b7c, 0x8559: 0xe0000b79, 0x855a: 0xe0000b82, 0x855b: 0xe0000b7f,
+	0x855c: 0xe0000b39, 0x855d: 0xe0000b35, 0x855e: 0xe0000b8c, 0x855f: 0xe0000b89,
+	0x8560: 0xe0000bd0, 0x8561: 0xe0000bcd, 0x8562: 0xe0000c00, 0x8563: 0xe0000bfd,
+	0x8564: 0xe0000c0c, 0x8565: 0xe0000c09, 0x8566: 0xe0000bfa, 0x8567: 0xe0000bf7,
+	0x8568: 0xe0000c06, 0x8569: 0xe0000c03, 0x856a: 0xe0000c12, 0x856b: 0xe0000c0f,
+	0x856c: 0xe0000c7e, 0x856d: 0xe0000c7b, 0x856e: 0xe0000c4a, 0x856f: 0xe0000c46,
+	0x8570: 0xe0000c93, 0x8571: 0xe0000c90, 0x8572: 0xe0000cab, 0x8573: 0xe0000ca8,
+	0x8574: 0xe0000cb1, 0x8575: 0xe0000cae, 0x8576: 0xe0000cde, 0x8577: 0xe0000cdb,
+	0x8578: 0xe0000ce5, 0x8579: 0xe0000ce1, 0x857a: 0xe0000cf2, 0x857b: 0xe0000cef,
+	0x857c: 0xe0000cec, 0x857d: 0xe0000ce9, 0x857e: 0xe0000d1e, 0x857f: 0xe0000d1b,
+	// Block 0x216, offset 0x8580
+	0x8580: 0xe0000d24, 0x8581: 0xe0000d21, 0x8582: 0xe0000d2a, 0x8583: 0xe0000d27,
+	0x8584: 0xe0000d69, 0x8585: 0xe0000d66, 0x8586: 0xe0000d7b, 0x8587: 0xe0000d78,
+	0x8588: 0xe0000d87, 0x8589: 0xe0000d84, 0x858a: 0xe0000d81, 0x858b: 0xe0000d7e,
+	0x858c: 0xe0000ded, 0x858d: 0xe0000de9, 0x858e: 0xe0000df5, 0x858f: 0xe0000df1,
+	0x8590: 0xe0000e3d, 0x8591: 0xe0000e39, 0x8592: 0xe0000e35, 0x8593: 0xe0000e31,
+	0x8594: 0xe0000ea7, 0x8595: 0xe0000ea4, 0x8596: 0xe0000ead, 0x8597: 0xe0000eaa,
+	0x8598: 0xe0000ed6, 0x8599: 0xe0000ed3, 0x859a: 0xe0000ef4, 0x859b: 0xe0000ef1,
+	0x859c: 0xe0000efb, 0x859d: 0xe0000ef7, 0x859e: 0xe0000f02, 0x859f: 0xe0000eff,
+	0x85a0: 0xe0000f41, 0x85a1: 0xe0000f3e, 0x85a2: 0xe0000f53, 0x85a3: 0xe0000f50,
+	0x85a4: 0xe0000f26, 0x85a5: 0xe0000f22, 0x85a6: 0xe0002652, 0x85a7: 0xe000264f,
+	0x85a8: 0xe0000f5a, 0x85a9: 0xe0000f56, 0x85aa: 0xe0000f93, 0x85ab: 0xe0000f90,
+	0x85ac: 0xe0000f9f, 0x85ad: 0xe0000f9c, 0x85ae: 0xe0000fb1, 0x85af: 0xe0000fae,
+	0x85b0: 0xe0000fab, 0x85b1: 0xe0000fa8, 0x85b2: 0xe0001093, 0x85b3: 0xe0001090,
+	0x85b4: 0xe000109f, 0x85b5: 0xe000109c, 0x85b6: 0xe0001099, 0x85b7: 0xe0001096,
+	0x85b8: 0xe0001032, 0x85b9: 0xe000102e, 0x85ba: 0xe0001046, 0x85bb: 0xe0001042,
+	0x85bc: 0xe00010a9, 0x85bd: 0xe00010a6, 0x85be: 0xe00010af, 0x85bf: 0xe00010ac,
+	// Block 0x217, offset 0x85c0
+	0x85c0: 0xa0000000, 0x85c1: 0xa0000000, 0x85c2: 0xa0000000, 0x85c3: 0xa0000000,
+	0x85c4: 0xa0000000, 0x85c5: 0xa0000000, 0x85c6: 0xa0000000, 0x85c7: 0xa0000000,
+	0x85c8: 0xa0000000, 0x85c9: 0x40020020, 0x85ca: 0x40020220, 0x85cb: 0x40020420,
+	0x85cc: 0x40020620, 0x85cd: 0x40020820, 0x85ce: 0xa0000000, 0x85cf: 0xa0000000,
+	0x85d0: 0xa0000000, 0x85d1: 0xa0000000, 0x85d2: 0xa0000000, 0x85d3: 0xa0000000,
+	0x85d4: 0xa0000000, 0x85d5: 0xa0000000, 0x85d6: 0xa0000000, 0x85d7: 0xa0000000,
+	0x85d8: 0xa0000000, 0x85d9: 0xa0000000, 0x85da: 0xa0000000, 0x85db: 0xa0000000,
+	0x85dc: 0xa0000000, 0x85dd: 0xa0000000, 0x85de: 0xa0000000, 0x85df: 0xa0000000,
+	0x85e0: 0x40021220, 0x85e1: 0x4002ba20, 0x85e2: 0x4003e020, 0x85e3: 0x4004ea20,
+	0x85e4: 0x4027de20, 0x85e5: 0x4004ec20, 0x85e6: 0x4004e620, 0x85e7: 0x4003d220,
+	0x85e8: 0x4003f420, 0x85e9: 0x4003f620, 0x85ea: 0x4004d820, 0x85eb: 0x40093820,
+	0x85ec: 0x40024020, 0x85ed: 0x40021a20, 0x85ee: 0x4002e420, 0x85ef: 0x4004e220,
+	0x85f0: 0x4029cc20, 0x85f1: 0x4029ce20, 0x85f2: 0x4029d020, 0x85f3: 0x4029d220,
+	0x85f4: 0x4029d420, 0x85f5: 0x4029d620, 0x85f6: 0x4029d820, 0x85f7: 0x4029da20,
+	0x85f8: 0x4029dc20, 0x85f9: 0x4029de20, 0x85fa: 0x40026c20, 0x85fb: 0x40026220,
+	0x85fc: 0x40094020, 0x85fd: 0xc32f0851, 0x85fe: 0x40094420, 0x85ff: 0x4002c420,
+	// Block 0x218, offset 0x8600
+	0x8600: 0x4004d620, 0x8601: 0xc3d20c71, 0x8602: 0x002c0a88, 0x8603: 0x002c3a88,
+	0x8604: 0x002c6288, 0x8605: 0xc3d808b1, 0x8606: 0x002d0888, 0x8607: 0x002d2288,
+	0x8608: 0x002d6888, 0x8609: 0xc3dc08b1, 0x860a: 0x002dcc88, 0x860b: 0x002dfe88,
+	0x860c: 0xc0030002, 0x860d: 0x002e8288, 0x860e: 0x002e9e88, 0x860f: 0xc3e10cb1,
+	0x8610: 0x002f2c88, 0x8611: 0x002f5688, 0x8612: 0x002f7a88, 0x8613: 0x002fe688,
+	0x8614: 0x00302c88, 0x8615: 0xc3e608b1, 0x8616: 0x0030be88, 0x8617: 0x0030e288,
+	0x8618: 0x0030f688, 0x8619: 0xc3ea08b1, 0x861a: 0x00312a88, 0x861b: 0x4003f820,
+	0x861c: 0x4004e420, 0x861d: 0x4003fa20, 0x861e: 0x40062420, 0x861f: 0x40021620,
+	0x8620: 0x40061e20, 0x8621: 0xc3ce0c71, 0x8622: 0x402c0a20, 0x8623: 0x402c3a20,
+	0x8624: 0x402c6220, 0x8625: 0xc3d608b1, 0x8626: 0x402d0820, 0x8627: 0x402d2220,
+	0x8628: 0x402d6820, 0x8629: 0xc3da08b1, 0x862a: 0x402dcc20, 0x862b: 0x402dfe20,
+	0x862c: 0xc0000002, 0x862d: 0x402e8220, 0x862e: 0x402e9e20, 0x862f: 0xc3de0cb1,
+	0x8630: 0x402f2c20, 0x8631: 0x402f5620, 0x8632: 0x402f7a20, 0x8633: 0x402fe620,
+	0x8634: 0x40302c20, 0x8635: 0xc3e408b1, 0x8636: 0x4030be20, 0x8637: 0x4030e220,
+	0x8638: 0x4030f620, 0x8639: 0xc3e808b1, 0x863a: 0x40312a20, 0x863b: 0x4003fc20,
+	0x863c: 0x40094820, 0x863d: 0x4003fe20, 0x863e: 0x40094c20, 0x863f: 0xa0000000,
+	// Block 0x219, offset 0x8640
+	0x8640: 0xe00008f5, 0x8641: 0x002c0883, 0x8642: 0xe0000921, 0x8643: 0xe0000969,
+	0x8644: 0x00320ca3, 0x8645: 0x00321083, 0x8646: 0x00320c83, 0x8647: 0xe0000a53,
+	0x8648: 0xe0000ae8, 0x8649: 0x002d0683, 0x864a: 0xe0000af4, 0x864b: 0xe0000b20,
+	0x864c: 0xe0000c2b, 0x864d: 0x002dca83, 0x864e: 0xe0000c37, 0x864f: 0xe0000c43,
+	0x8650: 0x002c6483, 0x8651: 0xe0000d63, 0x8652: 0xe0000d9a, 0x8653: 0x002f2a83,
+	0x8654: 0xe0000da6, 0x8655: 0xe0000de6, 0x8656: 0x00320e83, 0x8657: 0x40093e20,
+	0x8658: 0x00320ea3, 0x8659: 0xe0000fe1, 0x865a: 0x0030bc83, 0x865b: 0xe0000fed,
+	0x865c: 0xe0000fff, 0x865d: 0x00312883, 0x865e: 0x00318888, 0x865f: 0xe0000f7b,
+	0x8660: 0xe00008f2, 0x8661: 0x402c0820, 0x8662: 0xe000091e, 0x8663: 0xe0000966,
+	0x8664: 0x40320c21, 0x8665: 0x40321020, 0x8666: 0x40320c20, 0x8667: 0xe0000a4d,
+	0x8668: 0xe0000ae5, 0x8669: 0x402d0620, 0x866a: 0xe0000af1, 0x866b: 0xe0000b1d,
+	0x866c: 0xe0000c28, 0x866d: 0x402dca20, 0x866e: 0xe0000c34, 0x866f: 0xe0000c40,
+	0x8670: 0x402c6420, 0x8671: 0xe0000d60, 0x8672: 0xe0000d97, 0x8673: 0x402f2a20,
+	0x8674: 0xe0000da3, 0x8675: 0xe0000de3, 0x8676: 0x40320e20, 0x8677: 0x40093c20,
+	0x8678: 0x40320e21, 0x8679: 0xe0000fde, 0x867a: 0x4030bc20, 0x867b: 0xe0000fea,
+	0x867c: 0xe0000ffc, 0x867d: 0x40312820, 0x867e: 0x40318820, 0x867f: 0xe0001114,
+	// Block 0x21a, offset 0x8680
+	0x8680: 0xe0000983, 0x8681: 0xe0000980, 0x8682: 0xe00008fb, 0x8683: 0xe00008f8,
+	0x8684: 0xe000097d, 0x8685: 0xe000097a, 0x8686: 0xe0000a38, 0x8687: 0xe0000a35,
+	0x8688: 0xe0000a3e, 0x8689: 0xe0000a3b, 0x868a: 0xe0000a4a, 0x868b: 0xe0000a47,
+	0x868c: 0xe0000a44, 0x868d: 0xe0000a41, 0x868e: 0xe0000a86, 0x868f: 0xe0000a83,
+	0x8690: 0x002c62a3, 0x8691: 0x402c6221, 0x8692: 0xe0000b46, 0x8693: 0xe0000b43,
+	0x8694: 0xe0000aee, 0x8695: 0xe0000aeb, 0x8696: 0xe0000b2c, 0x8697: 0xe0000b29,
+	0x8698: 0xe0000b40, 0x8699: 0xe0000b3d, 0x869a: 0xe0000b1a, 0x869b: 0xe0000b17,
+	0x869c: 0xe0000bb8, 0x869d: 0xe0000bb5, 0x869e: 0xe0000bb2, 0x869f: 0xe0000baf,
+	0x86a0: 0xe0000bc4, 0x86a1: 0xe0000bc1, 0x86a2: 0xe0000bca, 0x86a3: 0xe0000bc7,
+	0x86a4: 0xe0000bee, 0x86a5: 0xe0000beb, 0x86a6: 0xe0000c1b, 0x86a7: 0xe0000c18,
+	0x86a8: 0xe0000c51, 0x86a9: 0xe0000c4e, 0x86aa: 0xe0000c60, 0x86ab: 0xe0000c5d,
+	0x86ac: 0xe0000c31, 0x86ad: 0xe0000c2e, 0x86ae: 0xe0000c5a, 0x86af: 0xe0000c57,
+	0x86b0: 0xe0000c54, 0x86b1: 0x402da220, 0x86b2: 0xf0000a0a, 0x86b3: 0xf0000404,
+	0x86b4: 0xe0000c8a, 0x86b5: 0xe0000c87, 0x86b6: 0xe0000c9f, 0x86b7: 0xe0000c9c,
+	0x86b8: 0x402f7220, 0x86b9: 0xe0000ccc, 0x86ba: 0xe0000cc9, 0x86bb: 0xe0000cd8,
+	0x86bc: 0xe0000cd5, 0x86bd: 0xe0000cd2, 0x86be: 0xe0000ccf, 0x86bf: 0xe0000d04,
+	// Block 0x21b, offset 0x86c0
+	0x86c0: 0x40321220, 0x86c1: 0x40321a20, 0x86c2: 0x40322220, 0x86c3: 0x40322a20,
+	0x86c4: 0xe0000ad5, 0x86c5: 0xe0000ad1, 0x86c6: 0xe0000acd, 0x86c7: 0xf0000a0a,
+	0x86c8: 0xf000040a, 0x86c9: 0xf0000404, 0x86ca: 0xf0000a0a, 0x86cb: 0xf000040a,
+	0x86cc: 0xf0000404, 0x86cd: 0xe0000947, 0x86ce: 0xe0000944, 0x86cf: 0xe0000c3d,
+	0x86d0: 0xe0000c3a, 0x86d1: 0xe0000dcc, 0x86d2: 0xe0000dc9, 0x86d3: 0xe0000ff3,
+	0x86d4: 0xe0000ff0, 0x86d5: 0xe000101e, 0x86d6: 0xe000101a, 0x86d7: 0xe00027c1,
+	0x86d8: 0xe00027be, 0x86d9: 0xe0001016, 0x86da: 0xe0001012, 0x86db: 0xe000100e,
+	0x86dc: 0xe000100a, 0x86dd: 0x402cae20, 0x86de: 0xe0002697, 0x86df: 0xe0002694,
+	0x86e0: 0xe0000976, 0x86e1: 0xe0000972, 0x86e2: 0xe0002691, 0x86e3: 0xe000268e,
+	0x86e4: 0x002d3a88, 0x86e5: 0x402d3a20, 0x86e6: 0xe0000bbe, 0x86e7: 0xe0000bbb,
+	0x86e8: 0xe0000c99, 0x86e9: 0xe0000c96, 0x86ea: 0xe0000e20, 0x86eb: 0xe0000e1d,
+	0x86ec: 0xe0000e27, 0x86ed: 0xe0000e23, 0x86ee: 0xe0001162, 0x86ef: 0xe000115f,
+	0x86f0: 0xe0000c8d, 0x86f1: 0xf0000a0a, 0x86f2: 0xf000040a, 0x86f3: 0xf0000404,
+	0x86f4: 0xe0000bac, 0x86f5: 0xe0000ba9, 0x86f6: 0x002d7888, 0x86f7: 0x00319488,
+	0x86f8: 0xe0000d57, 0x86f9: 0xe0000d54, 0x86fa: 0xe00026af, 0x86fb: 0xe00026ac,
+	0x86fc: 0xe000268b, 0x86fd: 0xe0002688, 0x86fe: 0xe0002752, 0x86ff: 0xe000274f,
+	// Block 0x21c, offset 0x8700
+	0x8700: 0xe000098f, 0x8701: 0xe000098c, 0x8702: 0xe0000995, 0x8703: 0xe0000992,
+	0x8704: 0xe0000b62, 0x8705: 0xe0000b5f, 0x8706: 0xe0000b68, 0x8707: 0xe0000b65,
+	0x8708: 0xe0000c6c, 0x8709: 0xe0000c69, 0x870a: 0xe0000c72, 0x870b: 0xe0000c6f,
+	0x870c: 0xe0000e4a, 0x870d: 0xe0000e47, 0x870e: 0xe0000e50, 0x870f: 0xe0000e4d,
+	0x8710: 0xe0000ee8, 0x8711: 0xe0000ee5, 0x8712: 0xe0000eee, 0x8713: 0xe0000eeb,
+	0x8714: 0xe0001053, 0x8715: 0xe0001050, 0x8716: 0xe0001059, 0x8717: 0xe0001056,
+	0x8718: 0xe0000f61, 0x8719: 0xe0000f5e, 0x871a: 0xe0000fa5, 0x871b: 0xe0000fa2,
+	0x871c: 0x00312288, 0x871d: 0x40312220, 0x871e: 0xe0000bf4, 0x871f: 0xe0000bf1,
+	0x8720: 0x002ebc88, 0x8721: 0x402c8c20, 0x8722: 0x002f2288, 0x8723: 0x402f2220,
+	0x8724: 0x00314088, 0x8725: 0x40314020, 0x8726: 0xe000096f, 0x8727: 0xe000096c,
+	0x8728: 0xe0000b32, 0x8729: 0xe0000b2f, 0x872a: 0xe000274c, 0x872b: 0xe0002749,
+	0x872c: 0xe0000dfd, 0x872d: 0xe0000df9, 0x872e: 0xe0000e04, 0x872f: 0xe0000e01,
+	0x8730: 0xe0000e0b, 0x8731: 0xe0000e07, 0x8732: 0xe0001129, 0x8733: 0xe0001126,
+	0x8734: 0x402e5e20, 0x8735: 0x402ed020, 0x8736: 0x40305a20, 0x8737: 0x402dd420,
+	0x8738: 0xe0000abf, 0x8739: 0xe0000ec4, 0x873a: 0x002be888, 0x873b: 0x002c4488,
+	0x873c: 0x402c4420, 0x873d: 0x002e3888, 0x873e: 0x00303e88, 0x873f: 0x402ffc20,
+	// Block 0x21d, offset 0x8740
+	0x8740: 0xe00009b1, 0x8741: 0xe00009ae, 0x8742: 0xe0000a22, 0x8743: 0xe0000a1f,
+	0x8744: 0xe0000a28, 0x8745: 0xe0000a25, 0x8746: 0xe0000a2e, 0x8747: 0xe0000a2b,
+	0x8748: 0xe0000a5a, 0x8749: 0xe0000a56, 0x874a: 0xe0000a8c, 0x874b: 0xe0000a89,
+	0x874c: 0xe0000a98, 0x874d: 0xe0000a95, 0x874e: 0xe0000aa4, 0x874f: 0xe0000aa1,
+	0x8750: 0xe0000a92, 0x8751: 0xe0000a8f, 0x8752: 0xe0000a9e, 0x8753: 0xe0000a9b,
+	0x8754: 0xe0000b55, 0x8755: 0xe0000b51, 0x8756: 0xe000279d, 0x8757: 0xe000279a,
+	0x8758: 0xe0000b7c, 0x8759: 0xe0000b79, 0x875a: 0xe0000b82, 0x875b: 0xe0000b7f,
+	0x875c: 0xe0000b39, 0x875d: 0xe0000b35, 0x875e: 0xe0000b8c, 0x875f: 0xe0000b89,
+	0x8760: 0xe0000bd0, 0x8761: 0xe0000bcd, 0x8762: 0xe0000c00, 0x8763: 0xe0000bfd,
+	0x8764: 0xe0000c0c, 0x8765: 0xe0000c09, 0x8766: 0xe0000bfa, 0x8767: 0xe0000bf7,
+	0x8768: 0xe0000c06, 0x8769: 0xe0000c03, 0x876a: 0xe0000c12, 0x876b: 0xe0000c0f,
+	0x876c: 0xe0000c7e, 0x876d: 0xe0000c7b, 0x876e: 0xe00027a3, 0x876f: 0xe00027a0,
+	0x8770: 0xe0000c93, 0x8771: 0xe0000c90, 0x8772: 0xe0000cab, 0x8773: 0xe0000ca8,
+	0x8774: 0xe0000cb1, 0x8775: 0xe0000cae, 0x8776: 0xe0000cde, 0x8777: 0xe0000cdb,
+	0x8778: 0xe0000ce5, 0x8779: 0xe0000ce1, 0x877a: 0xe0000cf2, 0x877b: 0xe0000cef,
+	0x877c: 0xe0000cec, 0x877d: 0xe0000ce9, 0x877e: 0xe0000d1e, 0x877f: 0xe0000d1b,
+	// Block 0x21e, offset 0x8780
+	0x8780: 0xe0000d24, 0x8781: 0xe0000d21, 0x8782: 0xe0000d2a, 0x8783: 0xe0000d27,
+	0x8784: 0xe0000d69, 0x8785: 0xe0000d66, 0x8786: 0xe0000d7b, 0x8787: 0xe0000d78,
+	0x8788: 0xe0000d87, 0x8789: 0xe0000d84, 0x878a: 0xe0000d81, 0x878b: 0xe0000d7e,
+	0x878c: 0xe00027af, 0x878d: 0xe00027ac, 0x878e: 0xe00027d3, 0x878f: 0xe00027d0,
+	0x8790: 0xe0000e3d, 0x8791: 0xe0000e39, 0x8792: 0xe00027b5, 0x8793: 0xe00027b2,
+	0x8794: 0xe0000ea7, 0x8795: 0xe0000ea4, 0x8796: 0xe0000ead, 0x8797: 0xe0000eaa,
+	0x8798: 0xe0000ed6, 0x8799: 0xe0000ed3, 0x879a: 0xe0000ef4, 0x879b: 0xe0000ef1,
+	0x879c: 0xe0000efb, 0x879d: 0xe0000ef7, 0x879e: 0xe0000f02, 0x879f: 0xe0000eff,
+	0x87a0: 0xe0000f41, 0x87a1: 0xe0000f3e, 0x87a2: 0xe0000f53, 0x87a3: 0xe0000f50,
+	0x87a4: 0xe0000f26, 0x87a5: 0xe0000f22, 0x87a6: 0xe0000f3a, 0x87a7: 0xe0000f36,
+	0x87a8: 0xe0000f5a, 0x87a9: 0xe0000f56, 0x87aa: 0xe0000f93, 0x87ab: 0xe0000f90,
+	0x87ac: 0xe0000f9f, 0x87ad: 0xe0000f9c, 0x87ae: 0xe0000fb1, 0x87af: 0xe0000fae,
+	0x87b0: 0xe0000fab, 0x87b1: 0xe0000fa8, 0x87b2: 0xe0001093, 0x87b3: 0xe0001090,
+	0x87b4: 0xe000109f, 0x87b5: 0xe000109c, 0x87b6: 0xe0001099, 0x87b7: 0xe0001096,
+	0x87b8: 0xe00027c7, 0x87b9: 0xe00027c4, 0x87ba: 0xe0001046, 0x87bb: 0xe0001042,
+	0x87bc: 0xe00010a9, 0x87bd: 0xe00010a6, 0x87be: 0xe00010af, 0x87bf: 0xe00010ac,
+	// Block 0x21f, offset 0x87c0
+	0x87c0: 0xe00010d2, 0x87c1: 0xe00010cf, 0x87c2: 0xe00010cc, 0x87c3: 0xe00010c9,
+	0x87c4: 0xe00010e1, 0x87c5: 0xe00010de, 0x87c6: 0xe00010e7, 0x87c7: 0xe00010e4,
+	0x87c8: 0xe00010ed, 0x87c9: 0xe00010ea, 0x87ca: 0xe00010fc, 0x87cb: 0xe00010f9,
+	0x87cc: 0xe00010f6, 0x87cd: 0xe00010f3, 0x87ce: 0xe0001123, 0x87cf: 0xe0001120,
+	0x87d0: 0xe0001141, 0x87d1: 0xe000113e, 0x87d2: 0xe0001153, 0x87d3: 0xe0001150,
+	0x87d4: 0xe0001159, 0x87d5: 0xe0001156, 0x87d6: 0xe0000c15, 0x87d7: 0xe0000f8d,
+	0x87d8: 0xe00010db, 0x87d9: 0xe0001111, 0x87da: 0xf0000404, 0x87db: 0xe0000f70,
+	0x87dc: 0x40300420, 0x87dd: 0x40300620, 0x87de: 0xe0000f7f, 0x87df: 0x402c9620,
+	0x87e0: 0xe000099b, 0x87e1: 0xe0000998, 0x87e2: 0xe0000989, 0x87e3: 0xe0000986,
+	0x87e4: 0xe0002791, 0x87e5: 0xe000278e, 0x87e6: 0xe0000930, 0x87e7: 0xe000092c,
+	0x87e8: 0xe0000940, 0x87e9: 0xe000093c, 0x87ea: 0xe0000938, 0x87eb: 0xe0000934,
+	0x87ec: 0xe00009aa, 0x87ed: 0xe00009a6, 0x87ee: 0xe000278b, 0x87ef: 0xe0002788,
+	0x87f0: 0xe000090a, 0x87f1: 0xe0000906, 0x87f2: 0xe000091a, 0x87f3: 0xe0000916,
+	0x87f4: 0xe0000912, 0x87f5: 0xe000090e, 0x87f6: 0xe00009a2, 0x87f7: 0xe000099e,
+	0x87f8: 0xe0000b6e, 0x87f9: 0xe0000b6b, 0x87fa: 0xe0000b5c, 0x87fb: 0xe0000b59,
+	0x87fc: 0xe0000b26, 0x87fd: 0xe0000b23, 0x87fe: 0xe0002797, 0x87ff: 0xe0002794,
+	// Block 0x220, offset 0x8800
+	0x8800: 0xe0000b03, 0x8801: 0xe0000aff, 0x8802: 0xe0000b13, 0x8803: 0xe0000b0f,
+	0x8804: 0xe0000b0b, 0x8805: 0xe0000b07, 0x8806: 0xe0000b75, 0x8807: 0xe0000b71,
+	0x8808: 0xe0000c66, 0x8809: 0xe0000c63, 0x880a: 0xe0000c78, 0x880b: 0xe0000c75,
+	0x880c: 0xe0000e84, 0x880d: 0xe0000e81, 0x880e: 0xe0000e44, 0x880f: 0xe0000e41,
+	0x8810: 0xe00027a9, 0x8811: 0xe00027a6, 0x8812: 0xe0000db5, 0x8813: 0xe0000db1,
+	0x8814: 0xe0000dc5, 0x8815: 0xe0000dc1, 0x8816: 0xe0000dbd, 0x8817: 0xe0000db9,
+	0x8818: 0xe0000e8b, 0x8819: 0xe0000e87, 0x881a: 0xe00027bb, 0x881b: 0xe00027b8,
+	0x881c: 0xe0000e65, 0x881d: 0xe0000e61, 0x881e: 0xe0000e75, 0x881f: 0xe0000e71,
+	0x8820: 0xe0000e6d, 0x8821: 0xe0000e69, 0x8822: 0xe0000e7d, 0x8823: 0xe0000e79,
+	0x8824: 0xe000108d, 0x8825: 0xe000108a, 0x8826: 0xe000104d, 0x8827: 0xe000104a,
+	0x8828: 0xe00027cd, 0x8829: 0xe00027ca, 0x882a: 0xe000106e, 0x882b: 0xe000106a,
+	0x882c: 0xe000107e, 0x882d: 0xe000107a, 0x882e: 0xe0001076, 0x882f: 0xe0001072,
+	0x8830: 0xe0001086, 0x8831: 0xe0001082, 0x8832: 0xe0001108, 0x8833: 0xe0001105,
+	0x8834: 0xe0001135, 0x8835: 0xe0001132, 0x8836: 0xe000112f, 0x8837: 0xe000112c,
+	0x8838: 0xe000111d, 0x8839: 0xe000111a, 0x883a: 0xe0000d0a, 0x883b: 0xe0000d07,
+	0x883c: 0x0030d888, 0x883d: 0x4030d820, 0x883e: 0x00312088, 0x883f: 0x40312020,
+	// Block 0x221, offset 0x8840
+	0x8840: 0xa0000000, 0x8841: 0xa0000000, 0x8842: 0xa0000000, 0x8843: 0xa0000000,
+	0x8844: 0xa0000000, 0x8845: 0xa0000000, 0x8846: 0xa0000000, 0x8847: 0xa0000000,
+	0x8848: 0xa0000000, 0x8849: 0x40020020, 0x884a: 0x40020220, 0x884b: 0x40020420,
+	0x884c: 0x40020620, 0x884d: 0x40020820, 0x884e: 0xa0000000, 0x884f: 0xa0000000,
+	0x8850: 0xa0000000, 0x8851: 0xa0000000, 0x8852: 0xa0000000, 0x8853: 0xa0000000,
+	0x8854: 0xa0000000, 0x8855: 0xa0000000, 0x8856: 0xa0000000, 0x8857: 0xa0000000,
+	0x8858: 0xa0000000, 0x8859: 0xa0000000, 0x885a: 0xa0000000, 0x885b: 0xa0000000,
+	0x885c: 0xa0000000, 0x885d: 0xa0000000, 0x885e: 0xa0000000, 0x885f: 0xa0000000,
+	0x8860: 0x40021220, 0x8861: 0x4002ba20, 0x8862: 0x4003e020, 0x8863: 0x4004ea20,
+	0x8864: 0x4027de20, 0x8865: 0x4004ec20, 0x8866: 0x4004e620, 0x8867: 0x4003d220,
+	0x8868: 0x4003f420, 0x8869: 0x4003f620, 0x886a: 0x4004d820, 0x886b: 0x40093820,
+	0x886c: 0x40024020, 0x886d: 0x40021a20, 0x886e: 0x4002e420, 0x886f: 0x4004e220,
+	0x8870: 0x4029cc20, 0x8871: 0x4029ce20, 0x8872: 0x4029d020, 0x8873: 0x4029d220,
+	0x8874: 0x4029d420, 0x8875: 0x4029d620, 0x8876: 0x4029d820, 0x8877: 0x4029da20,
+	0x8878: 0x4029dc20, 0x8879: 0x4029de20, 0x887a: 0x40026c20, 0x887b: 0x40026220,
+	0x887c: 0x40094020, 0x887d: 0xc32f0851, 0x887e: 0x40094420, 0x887f: 0x4002c420,
+	// Block 0x222, offset 0x8880
+	0x8880: 0x4004d620, 0x8881: 0xc3f10a51, 0x8882: 0x002c0a88, 0x8883: 0x002c3a88,
+	0x8884: 0x002c6288, 0x8885: 0xc3920a11, 0x8886: 0x002d0888, 0x8887: 0x002d2288,
+	0x8888: 0x002d6888, 0x8889: 0x002d9a88, 0x888a: 0x002dcc88, 0x888b: 0xc3ec0ce1,
+	0x888c: 0xc0030002, 0x888d: 0x002e8288, 0x888e: 0x002e9e88, 0x888f: 0xc3970951,
+	0x8890: 0x002f2c88, 0x8891: 0x002f5688, 0x8892: 0x002f7a88, 0x8893: 0x002fe688,
+	0x8894: 0x00302c88, 0x8895: 0xc3840951, 0x8896: 0x0030be88, 0x8897: 0x0030e288,
+	0x8898: 0x0030f688, 0x8899: 0x00310088, 0x889a: 0x00312a88, 0x889b: 0x4003f820,
+	0x889c: 0x4004e420, 0x889d: 0x4003fa20, 0x889e: 0x40062420, 0x889f: 0x40021620,
+	0x88a0: 0x40061e20, 0x88a1: 0xc3ee0a51, 0x88a2: 0x402c0a20, 0x88a3: 0x402c3a20,
+	0x88a4: 0x402c6220, 0x88a5: 0xc3900a11, 0x88a6: 0x402d0820, 0x88a7: 0x402d2220,
+	0x88a8: 0x402d6820, 0x88a9: 0x402d9a20, 0x88aa: 0x402dcc20, 0x88ab: 0x402dfe20,
+	0x88ac: 0xc0000002, 0x88ad: 0x402e8220, 0x88ae: 0x402e9e20, 0x88af: 0xc3940951,
+	0x88b0: 0x402f2c20, 0x88b1: 0x402f5620, 0x88b2: 0x402f7a20, 0x88b3: 0x402fe620,
+	0x88b4: 0x40302c20, 0x88b5: 0xc3810951, 0x88b6: 0x4030be20, 0x88b7: 0x4030e220,
+	0x88b8: 0x4030f620, 0x88b9: 0x40310020, 0x88ba: 0x40312a20, 0x88bb: 0x4003fc20,
+	0x88bc: 0x40094820, 0x88bd: 0x4003fe20, 0x88be: 0x40094c20, 0x88bf: 0xa0000000,
+	// Block 0x223, offset 0x88c0
+	0x88c0: 0xe0000983, 0x88c1: 0xe0000980, 0x88c2: 0xe00008fb, 0x88c3: 0xe00008f8,
+	0x88c4: 0xe000097d, 0x88c5: 0xe000097a, 0x88c6: 0xe0000a38, 0x88c7: 0xe0000a35,
+	0x88c8: 0xe0000a3e, 0x88c9: 0xe0000a3b, 0x88ca: 0xe0000a4a, 0x88cb: 0xe0000a47,
+	0x88cc: 0xe0000a44, 0x88cd: 0xe0000a41, 0x88ce: 0xe0000a86, 0x88cf: 0xe0000a83,
+	0x88d0: 0x002c62a3, 0x88d1: 0x402c6221, 0x88d2: 0xe0000b46, 0x88d3: 0xe0000b43,
+	0x88d4: 0xe0000aee, 0x88d5: 0xe0000aeb, 0x88d6: 0xe0000b2c, 0x88d7: 0xe0000b29,
+	0x88d8: 0x00320cc3, 0x88d9: 0x40320c22, 0x88da: 0xe0000b1a, 0x88db: 0xe0000b17,
+	0x88dc: 0xe0000bb8, 0x88dd: 0xe0000bb5, 0x88de: 0xe0000bb2, 0x88df: 0xe0000baf,
+	0x88e0: 0xe0000bc4, 0x88e1: 0xe0000bc1, 0x88e2: 0xe0000bca, 0x88e3: 0xe0000bc7,
+	0x88e4: 0xe0000bee, 0x88e5: 0xe0000beb, 0x88e6: 0xe0000c1b, 0x88e7: 0xe0000c18,
+	0x88e8: 0xe0000c51, 0x88e9: 0xe0000c4e, 0x88ea: 0xe0000c60, 0x88eb: 0xe0000c5d,
+	0x88ec: 0xe0000c31, 0x88ed: 0xe0000c2e, 0x88ee: 0xe0000c5a, 0x88ef: 0xe0000c57,
+	0x88f0: 0xe0000c54, 0x88f1: 0x402da220, 0x88f2: 0xf0000a0a, 0x88f3: 0xf0000404,
+	0x88f4: 0xe0000c8a, 0x88f5: 0xe0000c87, 0x88f6: 0xe0000c9f, 0x88f7: 0xe0000c9c,
+	0x88f8: 0x402f5621, 0x88f9: 0xe0000ccc, 0x88fa: 0xe0000cc9, 0x88fb: 0xe0000cd8,
+	0x88fc: 0xe0000cd5, 0x88fd: 0xe0000cd2, 0x88fe: 0xe0000ccf, 0x88ff: 0xe0000d04,
+	// Block 0x224, offset 0x8900
+	0x8900: 0x4062ac20, 0x8901: 0xe00025cf, 0x8902: 0x4062b020, 0x8903: 0x4062b220,
+	0x8904: 0xe00025db, 0x8905: 0x4062b620, 0x8906: 0x4062b820, 0x8907: 0x4062ba20,
+	0x8908: 0xe00025f3, 0x8909: 0x4062be20, 0x890a: 0xe00025f9, 0x890b: 0x4062c220,
+	0x890c: 0x4062c420, 0x890d: 0xe00025fc, 0x890e: 0x4062c820, 0x890f: 0x4062ca20,
+	0x8910: 0x4062cc20, 0x8911: 0x4062ce20, 0x8912: 0x4062d020, 0x8913: 0xe00027ef,
+	0x8914: 0xe00027f2, 0x8915: 0xe00027f5, 0x8916: 0xe00027f8, 0x8917: 0xe0002801,
+	0x8918: 0xe000280b, 0x8919: 0xe0002815, 0x891a: 0xe00025f0, 0x891b: 0xe0002830,
+	0x891c: 0xe000283c, 0x891d: 0xe0002846, 0x891e: 0xe000284f, 0x891f: 0xe0002852,
+	0x8920: 0xe0002855, 0x8921: 0xe00025f6, 0x8922: 0xe000285f, 0x8923: 0xe0002863,
+	0x8924: 0xe0002867, 0x8925: 0xe000286b, 0x8926: 0xe000286f, 0x8927: 0xe0002876,
+	0x8928: 0xe0002879, 0x8929: 0xe000287c, 0x892a: 0xe000287f, 0x892b: 0xe0002873,
+	0x892c: 0xe000285b, 0x892d: 0xe0002885, 0x892e: 0xe0002888, 0x892f: 0xe000288b,
+	0x8930: 0xe000288e, 0x8931: 0xe0002891, 0x8932: 0xe0002894, 0x8933: 0xe0002897,
+	0x8934: 0xe000289b, 0x8935: 0xe000289f, 0x8936: 0xe00028a2, 0x8937: 0xe00028a5,
+	0x8938: 0xe00028a8, 0x8939: 0xe00028ab, 0x893a: 0xe00028ae, 0x893b: 0xe00028b1,
+	0x893c: 0x40632420, 0x893d: 0x40632620, 0x893e: 0x40632820, 0x893f: 0x40632a20,
+	// Block 0x225, offset 0x8940
+	0x8940: 0x40632c20, 0x8941: 0xe00028b4, 0x8942: 0xe00028bb, 0x8943: 0xe00028be,
+	0x8944: 0xe00028c1, 0x8945: 0xe00028c4, 0x8946: 0x40633820, 0x8947: 0xe00028c7,
+	0x8948: 0xe00028ca, 0x8949: 0xe00028cd, 0x894a: 0xe00028d3, 0x894b: 0xe00028d6,
+	0x894c: 0x40634420, 0x894d: 0xe00028d9, 0x894e: 0x40634820, 0x894f: 0x40634a20,
+	0x8950: 0x40634c20, 0x8951: 0x40634e20, 0x8952: 0xe00028dc, 0x8953: 0xe00028df,
+	0x8954: 0x40635420, 0x8955: 0x40635620, 0x8956: 0xe00028e2, 0x8957: 0xe00028e5,
+	0x8958: 0xe00028f4, 0x8959: 0x40635e20, 0x895a: 0xe00027d9, 0x895b: 0xe00027fb,
+	0x895c: 0xe00025d5, 0x895d: 0xe00025d8, 0x895e: 0xe0002804, 0x895f: 0x4063a420,
+	0x8960: 0x4063a620, 0x8961: 0x4063a820, 0x8962: 0xe00025ff, 0x8963: 0x4063ac20,
+	0x8964: 0xe0002602, 0x8965: 0x4063b020, 0x8966: 0xe0002605, 0x8967: 0x4063b420,
+	0x8968: 0xe0002608, 0x8969: 0x4063b820, 0x896a: 0xe000260b, 0x896b: 0xe000260e,
+	0x896c: 0xe0002612, 0x896d: 0x4063c020, 0x896e: 0x4063c220, 0x896f: 0xe0002615,
+	0x8970: 0xe0002618, 0x8971: 0xe000261c, 0x8972: 0x4063ca20, 0x8973: 0x4063cc20,
+	0x8974: 0x4063ce20, 0x8975: 0x4063d020, 0x8976: 0xe00028f7, 0x8977: 0xe00028fa,
+	0x8978: 0xe0002900, 0x8979: 0xe0002903, 0x897a: 0xe0002909, 0x897b: 0xe000290c,
+	0x897c: 0xe000290f, 0x897d: 0xe0002915, 0x897e: 0xe0002918, 0x897f: 0xe0002922,
+	// Block 0x226, offset 0x8980
+	0x8980: 0xe0002925, 0x8981: 0xe0002929, 0x8982: 0xe000292d, 0x8983: 0xe0002930,
+	0x8984: 0xe0002933, 0x8985: 0xe0002936, 0x8986: 0xe000293a, 0x8987: 0xe000293d,
+	0x8988: 0xe0002940, 0x8989: 0xe0002943, 0x898a: 0xe0002946, 0x898b: 0xe000294a,
+	0x898c: 0xe000294e, 0x898d: 0xe0002952, 0x898e: 0xe0002955, 0x898f: 0xe0002958,
+	0x8990: 0xe000295b, 0x8991: 0xe000295f, 0x8992: 0xe0002962, 0x8993: 0xe0002966,
+	0x8994: 0xe0002969, 0x8995: 0xe000296c, 0x8996: 0xe000296f, 0x8997: 0xe0002972,
+	0x8998: 0xe0002975, 0x8999: 0xe0002978, 0x899a: 0xe000297b, 0x899b: 0xe000297e,
+	0x899c: 0xe0002981, 0x899d: 0x40642020, 0x899e: 0x40642220, 0x899f: 0x40642420,
+	0x89a0: 0x40642620, 0x89a1: 0x40642820, 0x89a2: 0x40642a20, 0x89a3: 0xe00028fd,
+	0x89a4: 0xe0002906, 0x89a5: 0xe0002912, 0x89a6: 0xe000291b, 0x89a7: 0xe000291e,
+	0x89a8: 0x4062ac20, 0x89a9: 0xe00025cf, 0x89aa: 0xe00025d2, 0x89ab: 0x4062b020,
+	0x89ac: 0xe00025d5, 0x89ad: 0xe00025d8, 0x89ae: 0x4062b220, 0x89af: 0x4062b620,
+	0x89b0: 0xe00025de, 0x89b1: 0xe00025e1, 0x89b2: 0xe00025e4, 0x89b3: 0xe00025e7,
+	0x89b4: 0xe00025ea, 0x89b5: 0xe00025ed, 0x89b6: 0xe00025f0, 0x89b7: 0x4062b820,
+	0x89b8: 0x4062ba20, 0x89b9: 0xe00025f6, 0x89ba: 0x4062be20, 0x89bb: 0xe00025f9,
+	0x89bc: 0x4062c220, 0x89bd: 0x4062c420, 0x89be: 0x4062c820, 0x89bf: 0x4062ca20,
+	// Block 0x227, offset 0x89c0
+	0x89c0: 0x4062cc20, 0x89c1: 0x4062ce20, 0x89c2: 0x4062d020, 0x89c3: 0xe00027dc,
+	0x89c4: 0xe00027e2, 0x89c5: 0xe00027ef, 0x89c6: 0xe00027f5, 0x89c7: 0xe00027fb,
+	0x89c8: 0x4064a420, 0x89c9: 0xe00027fe, 0x89ca: 0xe0002801, 0x89cb: 0xe0002804,
+	0x89cc: 0xe0002807, 0x89cd: 0xe000280b, 0x89ce: 0xe000280e, 0x89cf: 0xe0002811,
+	0x89d0: 0xe0002815, 0x89d1: 0xe0002818, 0x89d2: 0xe000281c, 0x89d3: 0xe0002820,
+	0x89d4: 0xe0002828, 0x89d5: 0xe0002824, 0x89d6: 0xe000282c, 0x89d7: 0x4064c220,
+	0x89d8: 0xe0002833, 0x89d9: 0x4064c620, 0x89da: 0xe0002836, 0x89db: 0xe0002839,
+	0x89dc: 0xe000283c, 0x89dd: 0xe000283f, 0x89de: 0xe0002842, 0x89df: 0x4064d220,
+	0x89e0: 0xe0002849, 0x89e1: 0xe000284c, 0x89e2: 0xe0002846, 0x89e3: 0xe0002858,
+	0x89e4: 0xe000287f, 0x89e5: 0xe0002882, 0x89e6: 0xe0002873, 0x89e7: 0xe0002885,
+	0x89e8: 0xe000288b, 0x89e9: 0xe000288e, 0x89ea: 0xe0002894, 0x89eb: 0x4064ea20,
+	0x89ec: 0xe00028b4, 0x89ed: 0xe00028b7, 0x89ee: 0xe00028c7, 0x89ef: 0xe00028d0,
+	0x89f0: 0x4064f420, 0x89f1: 0x4064f620, 0x89f2: 0x4064f820, 0x89f3: 0xe00028e2,
+	0x89f4: 0xe00028e5, 0x89f5: 0xe00028e8, 0x89f6: 0xe00028eb, 0x89f7: 0xe00028ee,
+	0x89f8: 0xe00028f1, 0x89f9: 0x40650620, 0x89fa: 0xe00027d6, 0x89fb: 0xe00027df,
+	0x89fc: 0xe00027e6, 0x89fd: 0xe00027e9, 0x89fe: 0xe00027ec, 0x89ff: 0xe00027f2,
+	// Block 0x228, offset 0x8a00
+	0x8a00: 0xc3f40cf1, 0x8a01: 0x4062ac21, 0x8a02: 0x4062b020, 0x8a03: 0xc3f60d21,
+	0x8a04: 0x4062b221, 0x8a05: 0x4062b620, 0x8a06: 0x4062b820, 0x8a07: 0xc3f80d51,
+	0x8a08: 0x4062ba21, 0x8a09: 0xc3fa0d81, 0x8a0a: 0x4062be21, 0x8a0b: 0x4062c220,
+	0x8a0c: 0xc3fc0db1, 0x8a0d: 0x4062c421, 0x8a0e: 0x4062c820, 0x8a0f: 0x4062ca20,
+	0x8a10: 0x4062cc20, 0x8a11: 0x4062ce20, 0x8a12: 0x4062d020, 0x8a13: 0x4062d220,
+	0x8a14: 0x4062d420, 0x8a15: 0x4062d620, 0x8a16: 0x4062d820, 0x8a17: 0x4062da20,
+	0x8a18: 0x4062dc20, 0x8a19: 0x4062de20, 0x8a1a: 0x4062e020, 0x8a1b: 0x4062e220,
+	0x8a1c: 0x4062e420, 0x8a1d: 0x4062e620, 0x8a1e: 0x4062e820, 0x8a1f: 0x4062ea20,
+	0x8a20: 0x4062ec20, 0x8a21: 0x4062ee20, 0x8a22: 0x4062f020, 0x8a23: 0x4062f220,
+	0x8a24: 0x4062f420, 0x8a25: 0x4062f620, 0x8a26: 0x4062f820, 0x8a27: 0x4062fa20,
+	0x8a28: 0x4062fc20, 0x8a29: 0x4062fe20, 0x8a2a: 0x40630020, 0x8a2b: 0x40630220,
+	0x8a2c: 0x40630420, 0x8a2d: 0x40630620, 0x8a2e: 0x40630820, 0x8a2f: 0x40630a20,
+	0x8a30: 0x40630c20, 0x8a31: 0x40630e20, 0x8a32: 0x40631020, 0x8a33: 0x40631220,
+	0x8a34: 0x40631420, 0x8a35: 0x40631620, 0x8a36: 0x40631820, 0x8a37: 0x40631a20,
+	0x8a38: 0x40631c20, 0x8a39: 0x40631e20, 0x8a3a: 0x40632020, 0x8a3b: 0x40632220,
+	0x8a3c: 0x40632420, 0x8a3d: 0x40632620, 0x8a3e: 0x40632820, 0x8a3f: 0x40632a20,
+	// Block 0x229, offset 0x8a40
+	0x8a40: 0x40632c20, 0x8a41: 0x40632e20, 0x8a42: 0x40633020, 0x8a43: 0x40633220,
+	0x8a44: 0x40633420, 0x8a45: 0x40633620, 0x8a46: 0x40633820, 0x8a47: 0x40633a20,
+	0x8a48: 0x40633c20, 0x8a49: 0x40633e20, 0x8a4a: 0x40634020, 0x8a4b: 0x40634220,
+	0x8a4c: 0x40634420, 0x8a4d: 0x40634620, 0x8a4e: 0x40634820, 0x8a4f: 0x40634a20,
+	0x8a50: 0x40634c20, 0x8a51: 0x40634e20, 0x8a52: 0x40635020, 0x8a53: 0x40635220,
+	0x8a54: 0x40635420, 0x8a55: 0x40635620, 0x8a56: 0x40635820, 0x8a57: 0x40635a20,
+	0x8a58: 0x40635c20, 0x8a59: 0x40635e20, 0x8a5a: 0x40636020, 0x8a5b: 0x40636220,
+	0x8a5c: 0x40636420, 0x8a5d: 0x40636620, 0x8a5e: 0x40636820, 0x8a5f: 0x4063a420,
+	0x8a60: 0x4063a620, 0x8a61: 0xa0002502, 0x8a62: 0xa0002602, 0x8a63: 0xa0002702,
+	0x8a64: 0xa0002802, 0x8a65: 0xa0002902, 0x8a66: 0xa0002a02, 0x8a67: 0xa0002b02,
+	0x8a68: 0xa0002c02, 0x8a69: 0xa0002d02, 0x8a6a: 0xa0002e02, 0x8a6b: 0xa0002f02,
+	0x8a6c: 0xa0003002, 0x8a6d: 0xa0003102, 0x8a6e: 0xa0003202, 0x8a6f: 0xa0003302,
+	0x8a70: 0xa0003402, 0x8a71: 0xa0003502, 0x8a72: 0xa0003602, 0x8a73: 0xa0003702,
+	0x8a74: 0xa0003802, 0x8a75: 0xa0003902, 0x8a76: 0x4063d220, 0x8a77: 0x4063d420,
+	0x8a78: 0x4063d620, 0x8a79: 0x4063d820, 0x8a7a: 0x4063da20, 0x8a7b: 0x4063dc20,
+	0x8a7c: 0x4063de20, 0x8a7d: 0x4063e020, 0x8a7e: 0x4063e220, 0x8a7f: 0x4063e420,
+	// Block 0x22a, offset 0x8a80
+	0x8a80: 0x4063e620, 0x8a81: 0x4063e820, 0x8a82: 0x4063ea20, 0x8a83: 0x4063ec20,
+	0x8a84: 0x4063ee20, 0x8a85: 0x4063f020, 0x8a86: 0x4063f220, 0x8a87: 0x4063f420,
+	0x8a88: 0x4063f620, 0x8a89: 0x4063f820, 0x8a8a: 0x4063fa20, 0x8a8b: 0x4063fc20,
+	0x8a8c: 0x4063fe20, 0x8a8d: 0x40640020, 0x8a8e: 0x40640220, 0x8a8f: 0x40640420,
+	0x8a90: 0x40640620, 0x8a91: 0x40640820, 0x8a92: 0x40640a20, 0x8a93: 0x40640c20,
+	0x8a94: 0x40640e20, 0x8a95: 0x40641020, 0x8a96: 0x40641220, 0x8a97: 0x40641420,
+	0x8a98: 0x40641620, 0x8a99: 0x40641820, 0x8a9a: 0x40641a20, 0x8a9b: 0x40641c20,
+	0x8a9c: 0x40641e20, 0x8a9d: 0x40642020, 0x8a9e: 0x40642220, 0x8a9f: 0x40642420,
+	0x8aa0: 0x40642620, 0x8aa1: 0x40642820, 0x8aa2: 0x40642a20, 0x8aa3: 0x40642c20,
+	0x8aa4: 0x40642e20, 0x8aa5: 0x40643020, 0x8aa6: 0x40643220, 0x8aa7: 0x40643420,
+	0x8aa8: 0xa0003a02, 0x8aa9: 0xa0003b02, 0x8aaa: 0xa0003c02, 0x8aab: 0xa0003d02,
+	0x8aac: 0xa0003e02, 0x8aad: 0xa0003f02, 0x8aae: 0xa0004002, 0x8aaf: 0xa0004102,
+	0x8ab0: 0xa0004202, 0x8ab1: 0xa0004302, 0x8ab2: 0xa0004402, 0x8ab3: 0xa0004502,
+	0x8ab4: 0xa0004602, 0x8ab5: 0xa0004702, 0x8ab6: 0xa0004802, 0x8ab7: 0xa0004902,
+	0x8ab8: 0xa0004a02, 0x8ab9: 0xa0004b02, 0x8aba: 0xa0004c02, 0x8abb: 0xa0004d02,
+	0x8abc: 0xa0004e02, 0x8abd: 0xa0004f02, 0x8abe: 0xa0005002, 0x8abf: 0xa0005102,
+	// Block 0x22b, offset 0x8ac0
+	0x8ac0: 0xa0005202, 0x8ac1: 0xa0005302, 0x8ac2: 0xa0005402, 0x8ac3: 0x40649a20,
+	0x8ac4: 0x40649c20, 0x8ac5: 0x40649e20, 0x8ac6: 0x4064a020, 0x8ac7: 0x4064a220,
+	0x8ac8: 0x4064a420, 0x8ac9: 0x4064a620, 0x8aca: 0x4064a820, 0x8acb: 0x4064aa20,
+	0x8acc: 0x4064ac20, 0x8acd: 0x4064ae20, 0x8ace: 0x4064b020, 0x8acf: 0x4064b220,
+	0x8ad0: 0x4064b420, 0x8ad1: 0x4064b620, 0x8ad2: 0x4064b820, 0x8ad3: 0x4064ba20,
+	0x8ad4: 0x4064bc20, 0x8ad5: 0x4064be20, 0x8ad6: 0x4064c020, 0x8ad7: 0x4064c220,
+	0x8ad8: 0x4064c420, 0x8ad9: 0x4064c620, 0x8ada: 0x4064c820, 0x8adb: 0x4064ca20,
+	0x8adc: 0x4064cc20, 0x8add: 0x4064ce20, 0x8ade: 0x4064d020, 0x8adf: 0x4064d220,
+	0x8ae0: 0x4064d420, 0x8ae1: 0x4064d620, 0x8ae2: 0x4064d820, 0x8ae3: 0x4064da20,
+	0x8ae4: 0x4064dc20, 0x8ae5: 0x4064de20, 0x8ae6: 0x4064e020, 0x8ae7: 0x4064e220,
+	0x8ae8: 0x4064e420, 0x8ae9: 0x4064e620, 0x8aea: 0x4064e820, 0x8aeb: 0x4064ea20,
+	0x8aec: 0x4064ec20, 0x8aed: 0x4064ee20, 0x8aee: 0x4064f020, 0x8aef: 0x4064f220,
+	0x8af0: 0x4064f420, 0x8af1: 0x4064f620, 0x8af2: 0x4064f820, 0x8af3: 0x4064fa20,
+	0x8af4: 0x4064fc20, 0x8af5: 0x4064fe20, 0x8af6: 0x40650020, 0x8af7: 0x40650220,
+	0x8af8: 0x40650420, 0x8af9: 0x40650620, 0x8afa: 0x40650820, 0x8afb: 0x40650a20,
+	0x8afc: 0x40650c20, 0x8afd: 0x40650e20, 0x8afe: 0x40651020, 0x8aff: 0x40651220,
+	// Block 0x22c, offset 0x8b00
+	0x8b05: 0x4065da20, 0x8b06: 0x4065dc20, 0x8b07: 0x4065de20,
+	0x8b08: 0x4065e020, 0x8b09: 0x4065e420, 0x8b0a: 0x4065e620, 0x8b0b: 0x4065e820,
+	0x8b0c: 0x4065ea20, 0x8b0d: 0x4065ec20, 0x8b0e: 0x4065ee20, 0x8b0f: 0x4065f420,
+	0x8b10: 0x4065f620, 0x8b11: 0x4065f820, 0x8b12: 0x4065fa20, 0x8b13: 0x4065fe20,
+	0x8b14: 0x40660020, 0x8b15: 0x40660220, 0x8b16: 0x40660420, 0x8b17: 0x40660620,
+	0x8b18: 0x40660820, 0x8b19: 0x40660a20, 0x8b1a: 0x40661220, 0x8b1b: 0x40661420,
+	0x8b1c: 0x40661820, 0x8b1d: 0x40661a20, 0x8b1e: 0x40661e20, 0x8b1f: 0x40662020,
+	0x8b20: 0x40662220, 0x8b21: 0x40662420, 0x8b22: 0x40662620, 0x8b23: 0x40662820,
+	0x8b24: 0x40662a20, 0x8b25: 0x40662e20, 0x8b26: 0x40663620, 0x8b27: 0x40663820,
+	0x8b28: 0x40663a20, 0x8b29: 0x40663c20, 0x8b2a: 0x4065e220, 0x8b2b: 0x4065f020,
+	0x8b2c: 0x4065fc20, 0x8b2d: 0x40663e20,
+	0x8b31: 0x0062ac84, 0x8b32: 0x0062aca3, 0x8b33: 0x00646884,
+	0x8b34: 0x0062b084, 0x8b35: 0x00646c84, 0x8b36: 0x00646e84, 0x8b37: 0x0062b284,
+	0x8b38: 0x0062b2a3, 0x8b39: 0x0062b684, 0x8b3a: 0x00647484, 0x8b3b: 0x00647684,
+	0x8b3c: 0x00647884, 0x8b3d: 0x00647a84, 0x8b3e: 0x00647c84, 0x8b3f: 0x00647e84,
+	// Block 0x22d, offset 0x8b40
+	0x8b40: 0x0062e084, 0x8b41: 0x0062b884, 0x8b42: 0x0062ba84, 0x8b43: 0x0062baa3,
+	0x8b44: 0x0062ee84, 0x8b45: 0x0062be84, 0x8b46: 0x0062bea3, 0x8b47: 0x0062c284,
+	0x8b48: 0x0062c484, 0x8b49: 0x0062c4a3, 0x8b4a: 0x0062c884, 0x8b4b: 0x0062ca84,
+	0x8b4c: 0x0062cc84, 0x8b4d: 0x0062ce84, 0x8b4e: 0x0062d084, 0x8b4f: 0x0063a884,
+	0x8b50: 0x0063aa84, 0x8b51: 0x0063ac84, 0x8b52: 0x0063ae84, 0x8b53: 0x0063b084,
+	0x8b54: 0x0063b284, 0x8b55: 0x0063b484, 0x8b56: 0x0063b684, 0x8b57: 0x0063b884,
+	0x8b58: 0x0063ba84, 0x8b59: 0x0063bc84, 0x8b5a: 0x0063be84, 0x8b5b: 0x0063c084,
+	0x8b5c: 0x0063c284, 0x8b5d: 0x0063c484, 0x8b5e: 0x0063c684, 0x8b5f: 0x0063c884,
+	0x8b60: 0x0063ca84, 0x8b61: 0x0063cc84, 0x8b62: 0x0063ce84, 0x8b63: 0x0063d084,
+	0x8b64: 0x0063a684, 0x8b65: 0x0062d484, 0x8b66: 0x0062d684, 0x8b67: 0x0064a284,
+	0x8b68: 0x0064a484, 0x8b69: 0x0064ac84, 0x8b6a: 0x0064b084, 0x8b6b: 0x0064ba84,
+	0x8b6c: 0x0064c284, 0x8b6d: 0x0064c684, 0x8b6e: 0x0062e484, 0x8b6f: 0x0064ce84,
+	0x8b70: 0x0064d284, 0x8b71: 0x0062e684, 0x8b72: 0x0062e884, 0x8b73: 0x0062ec84,
+	0x8b74: 0x0062f084, 0x8b75: 0x0062f284, 0x8b76: 0x0062fa84, 0x8b77: 0x0062fe84,
+	0x8b78: 0x00630284, 0x8b79: 0x00630484, 0x8b7a: 0x00630684, 0x8b7b: 0x00630884,
+	0x8b7c: 0x00630a84, 0x8b7d: 0x00631084, 0x8b7e: 0x00631884, 0x8b7f: 0x00632c84,
+	// Block 0x22e, offset 0x8b80
+	0x8b80: 0xf0000404, 0x8b81: 0xf0000404, 0x8b82: 0xf0000404, 0x8b83: 0xf0000404,
+	0x8b84: 0x02aa9e86, 0x8b85: 0x02bcf886, 0x8b86: 0x02cb0e86, 0x8b87: 0x02f71e86,
+	0x8b88: 0xe00002e3, 0x8b89: 0xe00003d8, 0x8b8a: 0xe00004b3, 0x8b8b: 0xe000057d,
+	0x8b8c: 0xe0000648, 0x8b8d: 0xe00006f0, 0x8b8e: 0xe000079c, 0x8b8f: 0xe0000841,
+	0x8b90: 0xe0000ec0, 0x8b91: 0xf0000606, 0x8b92: 0xf0000606, 0x8b93: 0xf0000606,
+	0x8b94: 0xf0000606, 0x8b95: 0xf0000606, 0x8b96: 0xf0000606, 0x8b97: 0xf0000606,
+	0x8b98: 0xf0000606, 0x8b99: 0xf0000606, 0x8b9a: 0xf0000606, 0x8b9b: 0xf0000606,
+	0x8b9c: 0xf0000606, 0x8b9d: 0xf0000606, 0x8b9e: 0xf0000606, 0x8b9f: 0xf0000606,
+	0x8ba0: 0x0062ac86, 0x8ba1: 0x0062b086, 0x8ba2: 0x0062b286, 0x8ba3: 0x0062b686,
+	0x8ba4: 0x0062b886, 0x8ba5: 0x0062ba86, 0x8ba6: 0x0062be86, 0x8ba7: 0x0062c286,
+	0x8ba8: 0x0062c486, 0x8ba9: 0x0062c886, 0x8baa: 0x0062ca86, 0x8bab: 0x0062cc86,
+	0x8bac: 0x0062ce86, 0x8bad: 0x0062d086, 0x8bae: 0xe0002984, 0x8baf: 0xe0002987,
+	0x8bb0: 0xe000298a, 0x8bb1: 0xe000298d, 0x8bb2: 0xe0002990, 0x8bb3: 0xe0002993,
+	0x8bb4: 0xe0002996, 0x8bb5: 0xe0002999, 0x8bb6: 0xe000299f, 0x8bb7: 0xe00029a2,
+	0x8bb8: 0xe00029a5, 0x8bb9: 0xe00029a8, 0x8bba: 0xe00029ab, 0x8bbb: 0xe00029ae,
+	0x8bbc: 0xe0002127, 0x8bbd: 0xe0002122, 0x8bbe: 0xe000299c, 0x8bbf: 0x4027ac20,
+	// Block 0x22f, offset 0x8bc0
+	0x8bc0: 0xa0000000, 0x8bc1: 0xa0000000, 0x8bc2: 0xa0000000, 0x8bc3: 0xa0000000,
+	0x8bc4: 0xa0000000, 0x8bc5: 0xa0000000, 0x8bc6: 0xa0000000, 0x8bc7: 0xa0000000,
+	0x8bc8: 0xa0000000, 0x8bc9: 0x40020020, 0x8bca: 0x40020220, 0x8bcb: 0x40020420,
+	0x8bcc: 0x40020620, 0x8bcd: 0x40020820, 0x8bce: 0xa0000000, 0x8bcf: 0xa0000000,
+	0x8bd0: 0xa0000000, 0x8bd1: 0xa0000000, 0x8bd2: 0xa0000000, 0x8bd3: 0xa0000000,
+	0x8bd4: 0xa0000000, 0x8bd5: 0xa0000000, 0x8bd6: 0xa0000000, 0x8bd7: 0xa0000000,
+	0x8bd8: 0xa0000000, 0x8bd9: 0xa0000000, 0x8bda: 0xa0000000, 0x8bdb: 0xa0000000,
+	0x8bdc: 0xa0000000, 0x8bdd: 0xa0000000, 0x8bde: 0xa0000000, 0x8bdf: 0xa0000000,
+	0x8be0: 0x40021220, 0x8be1: 0x4002ba20, 0x8be2: 0x4003e020, 0x8be3: 0x4004ea20,
+	0x8be4: 0x4027de20, 0x8be5: 0x4004ec20, 0x8be6: 0x4004e620, 0x8be7: 0x4003d220,
+	0x8be8: 0x4003f420, 0x8be9: 0x4003f620, 0x8bea: 0x4004d820, 0x8beb: 0x40093820,
+	0x8bec: 0x40024020, 0x8bed: 0x40021a20, 0x8bee: 0x4002e420, 0x8bef: 0x4004e220,
+	0x8bf0: 0x4029cc20, 0x8bf1: 0x4029ce20, 0x8bf2: 0x4029d020, 0x8bf3: 0x4029d220,
+	0x8bf4: 0x4029d420, 0x8bf5: 0x4029d620, 0x8bf6: 0x4029d820, 0x8bf7: 0x4029da20,
+	0x8bf8: 0x4029dc20, 0x8bf9: 0x4029de20, 0x8bfa: 0x40026c20, 0x8bfb: 0x40026220,
+	0x8bfc: 0x40094020, 0x8bfd: 0xc32f0851, 0x8bfe: 0x40094420, 0x8bff: 0x4002c420,
+	// Block 0x230, offset 0x8c00
+	0x8c00: 0x4004d620, 0x8c01: 0xc40209c3, 0x8c02: 0x002c0a88, 0x8c03: 0x002c3a88,
+	0x8c04: 0x002c6288, 0x8c05: 0xc3920a11, 0x8c06: 0x002d0888, 0x8c07: 0x002d2288,
+	0x8c08: 0x002d6888, 0x8c09: 0x002d9a88, 0x8c0a: 0x002dcc88, 0x8c0b: 0x002dfe88,
+	0x8c0c: 0xc0030002, 0x8c0d: 0x002e8288, 0x8c0e: 0x002e9e88, 0x8c0f: 0xc3970951,
+	0x8c10: 0x002f2c88, 0x8c11: 0x002f5688, 0x8c12: 0x002f7a88, 0x8c13: 0x002fe688,
+	0x8c14: 0x00302c88, 0x8c15: 0xc3840951, 0x8c16: 0x0030be88, 0x8c17: 0x0030e288,
+	0x8c18: 0x0030f688, 0x8c19: 0x00310088, 0x8c1a: 0x00312a88, 0x8c1b: 0x4003f820,
+	0x8c1c: 0x4004e420, 0x8c1d: 0x4003fa20, 0x8c1e: 0x40062420, 0x8c1f: 0x40021620,
+	0x8c20: 0x40061e20, 0x8c21: 0xc3fe0982, 0x8c22: 0x402c0a20, 0x8c23: 0x402c3a20,
+	0x8c24: 0x402c6220, 0x8c25: 0xc3900a11, 0x8c26: 0x402d0820, 0x8c27: 0x402d2220,
+	0x8c28: 0x402d6820, 0x8c29: 0x402d9a20, 0x8c2a: 0x402dcc20, 0x8c2b: 0x402dfe20,
+	0x8c2c: 0xc0000002, 0x8c2d: 0x402e8220, 0x8c2e: 0x402e9e20, 0x8c2f: 0xc3940951,
+	0x8c30: 0x402f2c20, 0x8c31: 0x402f5620, 0x8c32: 0x402f7a20, 0x8c33: 0x402fe620,
+	0x8c34: 0x40302c20, 0x8c35: 0xc3810951, 0x8c36: 0x4030be20, 0x8c37: 0x4030e220,
+	0x8c38: 0x4030f620, 0x8c39: 0x40310020, 0x8c3a: 0x40312a20, 0x8c3b: 0x4003fc20,
+	0x8c3c: 0x40094820, 0x8c3d: 0x4003fe20, 0x8c3e: 0x40094c20, 0x8c3f: 0xa0000000,
+	// Block 0x231, offset 0x8c40
+	0x8c40: 0xa0000000, 0x8c41: 0xa0000000, 0x8c42: 0xa0000000, 0x8c43: 0xa0000000,
+	0x8c44: 0xa0000000, 0x8c45: 0xa0000000, 0x8c46: 0xa0000000, 0x8c47: 0xa0000000,
+	0x8c48: 0xa0000000, 0x8c49: 0x40020020, 0x8c4a: 0x40020220, 0x8c4b: 0x40020420,
+	0x8c4c: 0x40020620, 0x8c4d: 0x40020820, 0x8c4e: 0xa0000000, 0x8c4f: 0xa0000000,
+	0x8c50: 0xa0000000, 0x8c51: 0xa0000000, 0x8c52: 0xa0000000, 0x8c53: 0xa0000000,
+	0x8c54: 0xa0000000, 0x8c55: 0xa0000000, 0x8c56: 0xa0000000, 0x8c57: 0xa0000000,
+	0x8c58: 0xa0000000, 0x8c59: 0xa0000000, 0x8c5a: 0xa0000000, 0x8c5b: 0xa0000000,
+	0x8c5c: 0xa0000000, 0x8c5d: 0xa0000000, 0x8c5e: 0xa0000000, 0x8c5f: 0xa0000000,
+	0x8c60: 0x40021220, 0x8c61: 0x4002ba20, 0x8c62: 0x4003e020, 0x8c63: 0x4004ea20,
+	0x8c64: 0x4027de20, 0x8c65: 0x4004ec20, 0x8c66: 0x4004e620, 0x8c67: 0x4003d220,
+	0x8c68: 0x4003f420, 0x8c69: 0x4003f620, 0x8c6a: 0x4004d820, 0x8c6b: 0x40093820,
+	0x8c6c: 0x40024020, 0x8c6d: 0x40021a20, 0x8c6e: 0x4002e420, 0x8c6f: 0x4004e220,
+	0x8c70: 0x4029cc20, 0x8c71: 0x4029ce20, 0x8c72: 0x4029d020, 0x8c73: 0x4029d220,
+	0x8c74: 0x4029d420, 0x8c75: 0x4029d620, 0x8c76: 0x4029d820, 0x8c77: 0x4029da20,
+	0x8c78: 0x4029dc20, 0x8c79: 0x4029de20, 0x8c7a: 0x40026c20, 0x8c7b: 0x40026220,
+	0x8c7c: 0x40094020, 0x8c7d: 0xc32f0851, 0x8c7e: 0x40094420, 0x8c7f: 0x4002c420,
+	// Block 0x232, offset 0x8c80
+	0x8c80: 0x4004d620, 0x8c81: 0xc40d0de1, 0x8c82: 0x002c0a88, 0x8c83: 0xc41508d1,
+	0x8c84: 0x002c6288, 0x8c85: 0x002c9888, 0x8c86: 0x002d0888, 0x8c87: 0xc41d08d1,
+	0x8c88: 0x002d6888, 0x8c89: 0x002d9a88, 0x8c8a: 0x002dcc88, 0x8c8b: 0xc42108d1,
+	0x8c8c: 0xc0030002, 0x8c8d: 0x002e8288, 0x8c8e: 0xc4260e31, 0x8c8f: 0xc4370e61,
+	0x8c90: 0x002f2c88, 0x8c91: 0x002f5688, 0x8c92: 0x002f7a88, 0x8c93: 0xc42b08d1,
+	0x8c94: 0x00302c88, 0x8c95: 0xc3840951, 0x8c96: 0x0030be88, 0x8c97: 0x0030e288,
+	0x8c98: 0x0030f688, 0x8c99: 0x00310088, 0x8c9a: 0xc42f08d1, 0x8c9b: 0x4003f820,
+	0x8c9c: 0x4004e420, 0x8c9d: 0x4003fa20, 0x8c9e: 0x40062420, 0x8c9f: 0x40021620,
+	0x8ca0: 0x40061e20, 0x8ca1: 0xc4070de1, 0x8ca2: 0x402c0a20, 0x8ca3: 0xc41308d1,
+	0x8ca4: 0x402c6220, 0x8ca5: 0x402c9820, 0x8ca6: 0x402d0820, 0x8ca7: 0xc41b08d1,
+	0x8ca8: 0x402d6820, 0x8ca9: 0x402d9a20, 0x8caa: 0x402dcc20, 0x8cab: 0xc41f08d1,
+	0x8cac: 0xc0000002, 0x8cad: 0x402e8220, 0x8cae: 0xc4230e31, 0x8caf: 0xc4310e61,
+	0x8cb0: 0x402f2c20, 0x8cb1: 0x402f5620, 0x8cb2: 0x402f7a20, 0x8cb3: 0xc42908d1,
+	0x8cb4: 0x40302c20, 0x8cb5: 0xc3810951, 0x8cb6: 0x4030be20, 0x8cb7: 0x4030e220,
+	0x8cb8: 0x4030f620, 0x8cb9: 0x40310020, 0x8cba: 0xc42d08d1, 0x8cbb: 0x4003fc20,
+	0x8cbc: 0x40094820, 0x8cbd: 0x4003fe20, 0x8cbe: 0x40094c20, 0x8cbf: 0xa0000000,
+	// Block 0x233, offset 0x8cc0
+	0x8cc0: 0xe00008f5, 0x8cc1: 0x002c0883, 0x8cc2: 0xe0000921, 0x8cc3: 0x00320ea3,
+	0x8cc4: 0x00320e83, 0x8cc5: 0x00320c83, 0x8cc6: 0x00320a83, 0x8cc7: 0xe0000a53,
+	0x8cc8: 0xe0000ae8, 0x8cc9: 0xe0000ae2, 0x8cca: 0xe0000af4, 0x8ccb: 0xe0000b20,
+	0x8ccc: 0xe0000c2b, 0x8ccd: 0xe0000c25, 0x8cce: 0xe0000c37, 0x8ccf: 0xe0000c43,
+	0x8cd0: 0x002c96a3, 0x8cd1: 0x002ee0c3, 0x8cd2: 0xe0000d9a, 0x8cd3: 0xe0000d94,
+	0x8cd4: 0x003210e3, 0x8cd5: 0x003210c3, 0x8cd6: 0x00321083, 0x8cd7: 0x40093e20,
+	0x8cd8: 0x00320883, 0x8cd9: 0xe0000fe1, 0x8cda: 0xe0000fdb, 0x8cdb: 0xe0000fed,
+	0x8cdc: 0x003100a3, 0x8cdd: 0xe0001102, 0x8cde: 0x00306aa3, 0x8cdf: 0xe0000f7b,
+	0x8ce0: 0xe00008f2, 0x8ce1: 0x402c0820, 0x8ce2: 0xe000091e, 0x8ce3: 0x40320e21,
+	0x8ce4: 0x40320e20, 0x8ce5: 0x40320c20, 0x8ce6: 0x40320a20, 0x8ce7: 0xe0000a4d,
+	0x8ce8: 0xe0000ae5, 0x8ce9: 0xe0000adf, 0x8cea: 0xe0000af1, 0x8ceb: 0xe0000b1d,
+	0x8cec: 0xe0000c28, 0x8ced: 0xe0000c22, 0x8cee: 0xe0000c34, 0x8cef: 0xe0000c40,
+	0x8cf0: 0x402c9621, 0x8cf1: 0x402ee022, 0x8cf2: 0xe0000d97, 0x8cf3: 0xe0000d91,
+	0x8cf4: 0x40321023, 0x8cf5: 0x40321022, 0x8cf6: 0x40321020, 0x8cf7: 0x40093c20,
+	0x8cf8: 0x40320820, 0x8cf9: 0xe0000fde, 0x8cfa: 0xe0000fd8, 0x8cfb: 0xe0000fea,
+	0x8cfc: 0x40310021, 0x8cfd: 0xe00010ff, 0x8cfe: 0x40306a21, 0x8cff: 0xe0001114,
+	// Block 0x234, offset 0x8d00
+	0x8d00: 0xe0000983, 0x8d01: 0xe0000980, 0x8d02: 0xe00008fb, 0x8d03: 0xe00008f8,
+	0x8d04: 0xe000097d, 0x8d05: 0xe000097a, 0x8d06: 0xe0000a38, 0x8d07: 0xe0000a35,
+	0x8d08: 0xe0000a3e, 0x8d09: 0xe0000a3b, 0x8d0a: 0xe0000a4a, 0x8d0b: 0xe0000a47,
+	0x8d0c: 0x002c5c83, 0x8d0d: 0x402c5c20, 0x8d0e: 0xe0000a86, 0x8d0f: 0xe0000a83,
+	0x8d10: 0x002c9683, 0x8d11: 0x402c9620, 0x8d12: 0xe0000b46, 0x8d13: 0xe0000b43,
+	0x8d14: 0xe0000aee, 0x8d15: 0xe0000aeb, 0x8d16: 0xe0000b2c, 0x8d17: 0xe0000b29,
+	0x8d18: 0xe0000b40, 0x8d19: 0xe0000b3d, 0x8d1a: 0xe0000b1a, 0x8d1b: 0xe0000b17,
+	0x8d1c: 0xe0000bb8, 0x8d1d: 0xe0000bb5, 0x8d1e: 0xe0000bb2, 0x8d1f: 0xe0000baf,
+	0x8d20: 0xe0000bc4, 0x8d21: 0xe0000bc1, 0x8d22: 0xe0000bca, 0x8d23: 0xe0000bc7,
+	0x8d24: 0xe0000bee, 0x8d25: 0xe0000beb, 0x8d26: 0xe0000c1b, 0x8d27: 0xe0000c18,
+	0x8d28: 0xe0000c51, 0x8d29: 0xe0000c4e, 0x8d2a: 0xe0000c60, 0x8d2b: 0xe0000c5d,
+	0x8d2c: 0xe0000c31, 0x8d2d: 0xe0000c2e, 0x8d2e: 0xe0000c5a, 0x8d2f: 0xe0000c57,
+	0x8d30: 0xe0000c54, 0x8d31: 0x402da220, 0x8d32: 0xf0000a0a, 0x8d33: 0xf0000404,
+	0x8d34: 0xe0000c8a, 0x8d35: 0xe0000c87, 0x8d36: 0xe0000c9f, 0x8d37: 0xe0000c9c,
+	0x8d38: 0x402f7220, 0x8d39: 0xe0000ccc, 0x8d3a: 0xe0000cc9, 0x8d3b: 0xe0000cd8,
+	0x8d3c: 0xe0000cd5, 0x8d3d: 0xe0000cd2, 0x8d3e: 0xe0000ccf, 0x8d3f: 0xe0000d04,
+	// Block 0x235, offset 0x8d40
+	0x8d40: 0xe0000cfe, 0x8d41: 0xe0000cf8, 0x8d42: 0xe0000cf5, 0x8d43: 0x002ee0a3,
+	0x8d44: 0x402ee021, 0x8d45: 0xe0000d6f, 0x8d46: 0xe0000d6c, 0x8d47: 0xe0000d5d,
+	0x8d48: 0xe0000d5a, 0x8d49: 0xf0000404, 0x8d4a: 0x002ee083, 0x8d4b: 0x402ee020,
+	0x8d4c: 0xe0000e2e, 0x8d4d: 0xe0000e2b, 0x8d4e: 0xe0000da0, 0x8d4f: 0xe0000d9d,
+	0x8d50: 0x003210a3, 0x8d51: 0x40321021, 0x8d52: 0x003208a3, 0x8d53: 0x40320821,
+	0x8d54: 0xe0000eca, 0x8d55: 0xe0000ec7, 0x8d56: 0xe0000edc, 0x8d57: 0xe0000ed9,
+	0x8d58: 0xe0000ed0, 0x8d59: 0xe0000ecd, 0x8d5a: 0xe0000f1f, 0x8d5b: 0xe0000f1c,
+	0x8d5c: 0xe0000f2d, 0x8d5d: 0xe0000f2a, 0x8d5e: 0xe0000f47, 0x8d5f: 0xe0000f44,
+	0x8d60: 0x00302a83, 0x8d61: 0x40302a20, 0x8d62: 0xe0000f99, 0x8d63: 0xe0000f96,
+	0x8d64: 0xe0000f8a, 0x8d65: 0xe0000f87, 0x8d66: 0x00306a83, 0x8d67: 0x40306a20,
+	0x8d68: 0xe000102b, 0x8d69: 0xe0001028, 0x8d6a: 0xe000103f, 0x8d6b: 0xe000103c,
+	0x8d6c: 0xe0000fe7, 0x8d6d: 0xe0000fe4, 0x8d6e: 0xe0000ff9, 0x8d6f: 0xe0000ff6,
+	0x8d70: 0x003100c3, 0x8d71: 0x40310022, 0x8d72: 0xe0001039, 0x8d73: 0xe0001036,
+	0x8d74: 0xe00010d8, 0x8d75: 0xe00010d5, 0x8d76: 0xe000110e, 0x8d77: 0xe000110b,
+	0x8d78: 0xe0001117, 0x8d79: 0xe000113b, 0x8d7a: 0xe0001138, 0x8d7b: 0xe000114d,
+	0x8d7c: 0xe000114a, 0x8d7d: 0x00320683, 0x8d7e: 0x40320620, 0x8d7f: 0xe0000f64,
+	// Block 0x236, offset 0x8d80
+	0x8d80: 0x402c1a20, 0x8d81: 0x002c2a88, 0x8d82: 0x002c3288, 0x8d83: 0x402c3220,
+	0x8d84: 0x0031c488, 0x8d85: 0x4031c420, 0x8d86: 0x002efa88, 0x8d87: 0x002c4e88,
+	0x8d88: 0x402c4e20, 0x8d89: 0x002c7288, 0x8d8a: 0x002c7a88, 0x8d8b: 0x002c8488,
+	0x8d8c: 0x402c8420, 0x8d8d: 0xe000115c, 0x8d8e: 0x002cae88, 0x8d8f: 0x002cb888,
+	0x8d90: 0x002cc288, 0x8d91: 0x002d1688, 0x8d92: 0x402d1620, 0x8d93: 0x002d4488,
+	0x8d94: 0x002d5888, 0x8d95: 0x402d7820, 0x8d96: 0x002dc288, 0x8d97: 0x002db688,
+	0x8d98: 0x002e0a88, 0x8d99: 0x402e0a20, 0x8d9a: 0x402e3820, 0x8d9b: 0x402e7220,
+	0x8d9c: 0x0030a088, 0x8d9d: 0x002eb488, 0x8d9e: 0x402ebc20, 0x8d9f: 0x002f1088,
+	0x8da0: 0xe0000e56, 0x8da1: 0xe0000e53, 0x8da2: 0x002d6088, 0x8da3: 0x402d6020,
+	0x8da4: 0x002f3e88, 0x8da5: 0x402f3e20, 0x8da6: 0x002f8288, 0x8da7: 0x0031b488,
+	0x8da8: 0x4031b420, 0x8da9: 0x00300888, 0x8daa: 0x40301220, 0x8dab: 0x40304220,
+	0x8dac: 0x00304a88, 0x8dad: 0x40304a20, 0x8dae: 0x00305288, 0x8daf: 0xe000105f,
+	0x8db0: 0xe000105c, 0x8db1: 0x0030b488, 0x8db2: 0x0030cc88, 0x8db3: 0x00311888,
+	0x8db4: 0x40311820, 0x8db5: 0x00313488, 0x8db6: 0x40313420, 0x8db7: 0xc41908d1,
+	0x8db8: 0x00316e88, 0x8db9: 0x40316e20, 0x8dba: 0x40317820, 0x8dbb: 0x4031a620,
+	0x8dbc: 0x0031bc88, 0x8dbd: 0x4031bc20, 0x8dbe: 0xe0000fc9, 0x8dbf: 0x40319420,
+	// Block 0x237, offset 0x8dc0
+	0x8dc0: 0x40321220, 0x8dc1: 0x40321a20, 0x8dc2: 0x40322220, 0x8dc3: 0x40322a20,
+	0x8dc4: 0xe0000ad5, 0x8dc5: 0xe0000ad1, 0x8dc6: 0xe0000acd, 0x8dc7: 0xf0000a0a,
+	0x8dc8: 0xf000040a, 0x8dc9: 0xf0000404, 0x8dca: 0xf0000a0a, 0x8dcb: 0xf000040a,
+	0x8dcc: 0xf0000404, 0x8dcd: 0xe0000947, 0x8dce: 0xe0000944, 0x8dcf: 0xe0000c3d,
+	0x8dd0: 0xe0000c3a, 0x8dd1: 0xe0000dcc, 0x8dd2: 0xe0000dc9, 0x8dd3: 0xe0000ff3,
+	0x8dd4: 0xe0000ff0, 0x8dd5: 0xe0002685, 0x8dd6: 0xe0002682, 0x8dd7: 0xe0002673,
+	0x8dd8: 0xe0002670, 0x8dd9: 0xe000267f, 0x8dda: 0xe000267c, 0x8ddb: 0xe0002679,
+	0x8ddc: 0xe0002676, 0x8ddd: 0x402cae20, 0x8dde: 0xe000274c, 0x8ddf: 0xe0002749,
+	0x8de0: 0xe0002697, 0x8de1: 0xe0002694, 0x8de2: 0xe00029c6, 0x8de3: 0xe00029c3,
+	0x8de4: 0x002d6683, 0x8de5: 0x402d6620, 0x8de6: 0x002d6483, 0x8de7: 0x402d6420,
+	0x8de8: 0x002e2083, 0x8de9: 0x402e2020, 0x8dea: 0x00321103, 0x8deb: 0x40321024,
+	0x8dec: 0xe0002a08, 0x8ded: 0xe0002a05, 0x8dee: 0x002c6083, 0x8def: 0x402c6020,
+	0x8df0: 0xe0000c8d, 0x8df1: 0xf0000a0a, 0x8df2: 0xf000040a, 0x8df3: 0xf0000404,
+	0x8df4: 0xe0000bac, 0x8df5: 0xe0000ba9, 0x8df6: 0x002d7888, 0x8df7: 0x00319488,
+	0x8df8: 0xe0000d57, 0x8df9: 0xe0000d54, 0x8dfa: 0xe000268b, 0x8dfb: 0xe0002688,
+	0x8dfc: 0xe00029c0, 0x8dfd: 0xe00029bd, 0x8dfe: 0xe00029ba, 0x8dff: 0xe00029b7,
+	// Block 0x238, offset 0x8e00
+	0x8e00: 0xe000098f, 0x8e01: 0xe000098c, 0x8e02: 0xe0000995, 0x8e03: 0xe0000992,
+	0x8e04: 0xe0000b62, 0x8e05: 0xe0000b5f, 0x8e06: 0xe0000b68, 0x8e07: 0xe0000b65,
+	0x8e08: 0xe0000c6c, 0x8e09: 0xe0000c69, 0x8e0a: 0xe0000c72, 0x8e0b: 0xe0000c6f,
+	0x8e0c: 0xe0000e4a, 0x8e0d: 0xe0000e47, 0x8e0e: 0xe0000e50, 0x8e0f: 0xe0000e4d,
+	0x8e10: 0xe0000ee8, 0x8e11: 0xe0000ee5, 0x8e12: 0xe0000eee, 0x8e13: 0xe0000eeb,
+	0x8e14: 0xe0001053, 0x8e15: 0xe0001050, 0x8e16: 0xe0001059, 0x8e17: 0xe0001056,
+	0x8e18: 0xe0000f61, 0x8e19: 0xe0000f5e, 0x8e1a: 0xe0000fa5, 0x8e1b: 0xe0000fa2,
+	0x8e1c: 0x00312288, 0x8e1d: 0x40312220, 0x8e1e: 0xe0000bf4, 0x8e1f: 0xe0000bf1,
+	0x8e20: 0x002ebc88, 0x8e21: 0x402c8c20, 0x8e22: 0x002f2288, 0x8e23: 0x402f2220,
+	0x8e24: 0x00314088, 0x8e25: 0x40314020, 0x8e26: 0x00320ca3, 0x8e27: 0x40320c21,
+	0x8e28: 0xe0000b32, 0x8e29: 0xe0000b2f, 0x8e2a: 0xe0002758, 0x8e2b: 0xe0002755,
+	0x8e2c: 0xe00029e4, 0x8e2d: 0xe00029e1, 0x8e2e: 0xe0000e04, 0x8e2f: 0xe0000e01,
+	0x8e30: 0xe0000e0b, 0x8e31: 0xe0000e07, 0x8e32: 0xe0001129, 0x8e33: 0xe0001126,
+	0x8e34: 0x402e5e20, 0x8e35: 0x402ed020, 0x8e36: 0x40305a20, 0x8e37: 0x402dd420,
+	0x8e38: 0xe0000abf, 0x8e39: 0xe0000ec4, 0x8e3a: 0x002be888, 0x8e3b: 0x002c4488,
+	0x8e3c: 0x402c4420, 0x8e3d: 0x002e3888, 0x8e3e: 0x00303e88, 0x8e3f: 0x402ffc20,
+	// Block 0x239, offset 0x8e40
+	0x8e40: 0x402f8220, 0x8e41: 0x402fd820, 0x8e42: 0x402ff420, 0x8e43: 0x40300820,
+	0x8e44: 0x402df620, 0x8e45: 0x40301a20, 0x8e46: 0x40302420, 0x8e47: 0x40306420,
+	0x8e48: 0x40305220, 0x8e49: 0x40307c20, 0x8e4a: 0x4030b420, 0x8e4b: 0x4030cc20,
+	0x8e4c: 0x4030da20, 0x8e4d: 0x4030ee20, 0x8e4e: 0x402e7a20, 0x8e4f: 0x40310820,
+	0x8e50: 0x40314820, 0x8e51: 0x40315020, 0x8e52: 0xc41708d1, 0x8e53: 0x40318020,
+	0x8e54: 0x4031cc20, 0x8e55: 0x4031e820, 0x8e56: 0x40320a20, 0x8e57: 0x40323220,
+	0x8e58: 0x40323a20, 0x8e59: 0x402c1220, 0x8e5a: 0x402cf820, 0x8e5b: 0x402d4c20,
+	0x8e5c: 0x402d7020, 0x8e5d: 0x402de620, 0x8e5e: 0x402e1a20, 0x8e5f: 0x402e2a20,
+	0x8e60: 0x402f6220, 0x8e61: 0x4031fa20, 0x8e62: 0x40320220, 0x8e63: 0xe0000aca,
+	0x8e64: 0xe0000adc, 0x8e65: 0xe0000ad9, 0x8e66: 0xe0000fcc, 0x8e67: 0xe0000fcf,
+	0x8e68: 0xe0000fba, 0x8e69: 0xe0000ba1, 0x8e6a: 0xe0000d11, 0x8e6b: 0xe0000d18,
+	0x8e6c: 0x40324220, 0x8e6d: 0x40324a20, 0x8e6e: 0x40309020, 0x8e6f: 0x40309820,
+	0x8e70: 0x002d6894, 0x8e71: 0x002d8094, 0x8e72: 0x002dcc94, 0x8e73: 0x002f7a94,
+	0x8e74: 0x002f9894, 0x8e75: 0x002fac94, 0x8e76: 0x002fd894, 0x8e77: 0x0030e294,
+	0x8e78: 0x00310094, 0x8e79: 0x40064020, 0x8e7a: 0x40064420, 0x8e7b: 0x402d9620,
+	0x8e7c: 0x4031de20, 0x8e7d: 0x402d9820, 0x8e7e: 0x4031e220, 0x8e7f: 0x4031f020,
+	// Block 0x23a, offset 0x8e80
+	0x8e80: 0xe0000d24, 0x8e81: 0xe0000d21, 0x8e82: 0xe0000d2a, 0x8e83: 0xe0000d27,
+	0x8e84: 0xe0000d69, 0x8e85: 0xe0000d66, 0x8e86: 0xe0000d7b, 0x8e87: 0xe0000d78,
+	0x8e88: 0xe0000d87, 0x8e89: 0xe0000d84, 0x8e8a: 0xe0000d81, 0x8e8b: 0xe0000d7e,
+	0x8e8c: 0xe00029d8, 0x8e8d: 0xe00029d5, 0x8e8e: 0xe00029de, 0x8e8f: 0xe00029db,
+	0x8e90: 0xe0000e3d, 0x8e91: 0xe0000e39, 0x8e92: 0xe0000e35, 0x8e93: 0xe0000e31,
+	0x8e94: 0xe0000ea7, 0x8e95: 0xe0000ea4, 0x8e96: 0xe0000ead, 0x8e97: 0xe0000eaa,
+	0x8e98: 0xe0000ed6, 0x8e99: 0xe0000ed3, 0x8e9a: 0xe0000ef4, 0x8e9b: 0xe0000ef1,
+	0x8e9c: 0xe0000efb, 0x8e9d: 0xe0000ef7, 0x8e9e: 0xe0000f02, 0x8e9f: 0xe0000eff,
+	0x8ea0: 0xe0000f41, 0x8ea1: 0xe0000f3e, 0x8ea2: 0xe0000f53, 0x8ea3: 0xe0000f50,
+	0x8ea4: 0xe0000f26, 0x8ea5: 0xe0000f22, 0x8ea6: 0xe00029b4, 0x8ea7: 0xe00029b1,
+	0x8ea8: 0xe0000f5a, 0x8ea9: 0xe0000f56, 0x8eaa: 0xe0000f93, 0x8eab: 0xe0000f90,
+	0x8eac: 0xe0000f9f, 0x8ead: 0xe0000f9c, 0x8eae: 0xe0000fb1, 0x8eaf: 0xe0000fae,
+	0x8eb0: 0xe0000fab, 0x8eb1: 0xe0000fa8, 0x8eb2: 0xe0001093, 0x8eb3: 0xe0001090,
+	0x8eb4: 0xe000109f, 0x8eb5: 0xe000109c, 0x8eb6: 0xe0001099, 0x8eb7: 0xe0001096,
+	0x8eb8: 0xe0001032, 0x8eb9: 0xe000102e, 0x8eba: 0xe0002685, 0x8ebb: 0xe0002682,
+	0x8ebc: 0xe00010a9, 0x8ebd: 0xe00010a6, 0x8ebe: 0xe00010af, 0x8ebf: 0xe00010ac,
+	// Block 0x23b, offset 0x8ec0
+	0x8ec0: 0xe00010d2, 0x8ec1: 0xe00010cf, 0x8ec2: 0xe00010cc, 0x8ec3: 0xe00010c9,
+	0x8ec4: 0xe00010e1, 0x8ec5: 0xe00010de, 0x8ec6: 0xe00010e7, 0x8ec7: 0xe00010e4,
+	0x8ec8: 0xe00010ed, 0x8ec9: 0xe00010ea, 0x8eca: 0xe00010fc, 0x8ecb: 0xe00010f9,
+	0x8ecc: 0xe00010f6, 0x8ecd: 0xe00010f3, 0x8ece: 0xe0001123, 0x8ecf: 0xe0001120,
+	0x8ed0: 0xe0001141, 0x8ed1: 0xe000113e, 0x8ed2: 0xe0001153, 0x8ed3: 0xe0001150,
+	0x8ed4: 0xe0001159, 0x8ed5: 0xe0001156, 0x8ed6: 0xe0000c15, 0x8ed7: 0xe0000f8d,
+	0x8ed8: 0xe00010db, 0x8ed9: 0xe0001111, 0x8eda: 0xf0000404, 0x8edb: 0xe0000f70,
+	0x8edc: 0x40300420, 0x8edd: 0x40300620, 0x8ede: 0xe0000f7f, 0x8edf: 0x402c9620,
+	0x8ee0: 0xe000099b, 0x8ee1: 0xe0000998, 0x8ee2: 0xe0000989, 0x8ee3: 0xe0000986,
+	0x8ee4: 0xe0002791, 0x8ee5: 0xe000278e, 0x8ee6: 0xe0000930, 0x8ee7: 0xe000092c,
+	0x8ee8: 0xe0000940, 0x8ee9: 0xe000093c, 0x8eea: 0xe00029d2, 0x8eeb: 0xe00029cf,
+	0x8eec: 0xe00009aa, 0x8eed: 0xe00009a6, 0x8eee: 0xe000278b, 0x8eef: 0xe0002788,
+	0x8ef0: 0xe000090a, 0x8ef1: 0xe0000906, 0x8ef2: 0xe000091a, 0x8ef3: 0xe0000916,
+	0x8ef4: 0xe00029cc, 0x8ef5: 0xe00029c9, 0x8ef6: 0xe00009a2, 0x8ef7: 0xe000099e,
+	0x8ef8: 0xe0000b6e, 0x8ef9: 0xe0000b6b, 0x8efa: 0xe0000b5c, 0x8efb: 0xe0000b59,
+	0x8efc: 0xe0000b26, 0x8efd: 0xe0000b23, 0x8efe: 0xe0000afb, 0x8eff: 0xe0000af7,
+	// Block 0x23c, offset 0x8f00
+	0x8f00: 0xe0000b03, 0x8f01: 0xe0000aff, 0x8f02: 0xe0000b13, 0x8f03: 0xe0000b0f,
+	0x8f04: 0xe0000b0b, 0x8f05: 0xe0000b07, 0x8f06: 0xe0000b75, 0x8f07: 0xe0000b71,
+	0x8f08: 0xe0000c66, 0x8f09: 0xe0000c63, 0x8f0a: 0xe0000c78, 0x8f0b: 0xe0000c75,
+	0x8f0c: 0xe0000e84, 0x8f0d: 0xe0000e81, 0x8f0e: 0xe0000e44, 0x8f0f: 0xe0000e41,
+	0x8f10: 0xe0002764, 0x8f11: 0xe0002761, 0x8f12: 0xe00029f0, 0x8f13: 0xe00029ed,
+	0x8f14: 0xe00029fc, 0x8f15: 0xe00029f9, 0x8f16: 0xe00029f6, 0x8f17: 0xe00029f3,
+	0x8f18: 0xe0002a02, 0x8f19: 0xe00029ff, 0x8f1a: 0xe0000e5d, 0x8f1b: 0xe0000e59,
+	0x8f1c: 0xe0000e65, 0x8f1d: 0xe0000e61, 0x8f1e: 0xe0000e75, 0x8f1f: 0xe0000e71,
+	0x8f20: 0xe00029ea, 0x8f21: 0xe00029e7, 0x8f22: 0xe0000e7d, 0x8f23: 0xe0000e79,
+	0x8f24: 0xe000108d, 0x8f25: 0xe000108a, 0x8f26: 0xe000104d, 0x8f27: 0xe000104a,
+	0x8f28: 0xe0001066, 0x8f29: 0xe0001062, 0x8f2a: 0xe000106e, 0x8f2b: 0xe000106a,
+	0x8f2c: 0xe000107e, 0x8f2d: 0xe000107a, 0x8f2e: 0xe0001076, 0x8f2f: 0xe0001072,
+	0x8f30: 0xe0001086, 0x8f31: 0xe0001082, 0x8f32: 0xe0001108, 0x8f33: 0xe0001105,
+	0x8f34: 0xe0001135, 0x8f35: 0xe0001132, 0x8f36: 0xe000112f, 0x8f37: 0xe000112c,
+	0x8f38: 0xe000111d, 0x8f39: 0xe000111a, 0x8f3a: 0xe0000d0a, 0x8f3b: 0xe0000d07,
+	0x8f3c: 0x0030d888, 0x8f3d: 0x4030d820, 0x8f3e: 0x00312088, 0x8f3f: 0x40312020,
+	// Block 0x23d, offset 0x8f40
+	0x8f40: 0xa0000000, 0x8f41: 0xa0000000, 0x8f42: 0xa0000000, 0x8f43: 0xa0000000,
+	0x8f44: 0xa0000000, 0x8f45: 0xa0000000, 0x8f46: 0xa0000000, 0x8f47: 0xa0000000,
+	0x8f48: 0xa0000000, 0x8f49: 0x40020020, 0x8f4a: 0x40020220, 0x8f4b: 0x40020420,
+	0x8f4c: 0x40020620, 0x8f4d: 0x40020820, 0x8f4e: 0xa0000000, 0x8f4f: 0xa0000000,
+	0x8f50: 0xa0000000, 0x8f51: 0xa0000000, 0x8f52: 0xa0000000, 0x8f53: 0xa0000000,
+	0x8f54: 0xa0000000, 0x8f55: 0xa0000000, 0x8f56: 0xa0000000, 0x8f57: 0xa0000000,
+	0x8f58: 0xa0000000, 0x8f59: 0xa0000000, 0x8f5a: 0xa0000000, 0x8f5b: 0xa0000000,
+	0x8f5c: 0xa0000000, 0x8f5d: 0xa0000000, 0x8f5e: 0xa0000000, 0x8f5f: 0xa0000000,
+	0x8f60: 0x40021220, 0x8f61: 0x4002ba20, 0x8f62: 0x4003e020, 0x8f63: 0x4004ea20,
+	0x8f64: 0x4027de20, 0x8f65: 0x4004ec20, 0x8f66: 0x4004e620, 0x8f67: 0x4003d220,
+	0x8f68: 0x4003f420, 0x8f69: 0x4003f620, 0x8f6a: 0x4004d820, 0x8f6b: 0x40093820,
+	0x8f6c: 0x40024020, 0x8f6d: 0x40021a20, 0x8f6e: 0x4002e420, 0x8f6f: 0x4004e220,
+	0x8f70: 0x4029cc20, 0x8f71: 0x4029ce20, 0x8f72: 0x4029d020, 0x8f73: 0x4029d220,
+	0x8f74: 0x4029d420, 0x8f75: 0x4029d620, 0x8f76: 0x4029d820, 0x8f77: 0x4029da20,
+	0x8f78: 0x4029dc20, 0x8f79: 0x4029de20, 0x8f7a: 0x40026c20, 0x8f7b: 0x40026220,
+	0x8f7c: 0x40094020, 0x8f7d: 0xc32f0851, 0x8f7e: 0x40094420, 0x8f7f: 0x4002c420,
+	// Block 0x23e, offset 0x8f80
+	0x8f80: 0x4004d620, 0x8f81: 0xc4400cb1, 0x8f82: 0x002c0a88, 0x8f83: 0xc33308d1,
+	0x8f84: 0xc35b08d1, 0x8f85: 0xc36008f1, 0x8f86: 0x002d0888, 0x8f87: 0x002d2288,
+	0x8f88: 0x002d6888, 0x8f89: 0xc36508b1, 0x8f8a: 0x002dcc88, 0x8f8b: 0x002dfe88,
+	0x8f8c: 0xc4480eb3, 0x8f8d: 0x002e8288, 0x8f8e: 0xc36908d1, 0x8f8f: 0xc4500f21,
+	0x8f90: 0x002f2c88, 0x8f91: 0x002f5688, 0x8f92: 0xc45608f1, 0x8f93: 0xc34108d1,
+	0x8f94: 0xc37108d1, 0x8f95: 0xc3760921, 0x8f96: 0x0030be88, 0x8f97: 0x0030e288,
+	0x8f98: 0x0030f688, 0x8f99: 0xc37b08b1, 0x8f9a: 0xc37f08d1, 0x8f9b: 0x4003f820,
+	0x8f9c: 0x4004e420, 0x8f9d: 0x4003fa20, 0x8f9e: 0x40062420, 0x8f9f: 0x40021620,
+	0x8fa0: 0x40061e20, 0x8fa1: 0xc43d0cb1, 0x8fa2: 0x402c0a20, 0x8fa3: 0xc33108d1,
+	0x8fa4: 0xc35908d1, 0x8fa5: 0xc35d08f1, 0x8fa6: 0x402d0820, 0x8fa7: 0x402d2220,
+	0x8fa8: 0x402d6820, 0x8fa9: 0xc36308b1, 0x8faa: 0x402dcc20, 0x8fab: 0x402dfe20,
+	0x8fac: 0xc4430eb3, 0x8fad: 0x402e8220, 0x8fae: 0xc36708d1, 0x8faf: 0xc44d0f21,
+	0x8fb0: 0x402f2c20, 0x8fb1: 0x402f5620, 0x8fb2: 0xc45308f1, 0x8fb3: 0xc33f08d1,
+	0x8fb4: 0xc36f08d1, 0x8fb5: 0xc3730921, 0x8fb6: 0x4030be20, 0x8fb7: 0x4030e220,
+	0x8fb8: 0x4030f620, 0x8fb9: 0xc37908b1, 0x8fba: 0xc37d08d1, 0x8fbb: 0x4003fc20,
+	0x8fbc: 0x40094820, 0x8fbd: 0x4003fe20, 0x8fbe: 0x40094c20, 0x8fbf: 0xa0000000,
+	// Block 0x23f, offset 0x8fc0
+	0x8fc0: 0xe00008f5, 0x8fc1: 0x002be083, 0x8fc2: 0xe0000921, 0x8fc3: 0xe0000969,
+	0x8fc4: 0x002be283, 0x8fc5: 0xe000094d, 0x8fc6: 0xe00009dd, 0x8fc7: 0xe0000a53,
+	0x8fc8: 0xe0000ae8, 0x8fc9: 0x002c9a83, 0x8fca: 0xe0000af4, 0x8fcb: 0xe0000b20,
+	0x8fcc: 0xe0000c2b, 0x8fcd: 0x002d9c83, 0x8fce: 0xe0000c37, 0x8fcf: 0xe0000c43,
+	0x8fd0: 0xe0000ab3, 0x8fd1: 0xe0000d63, 0x8fd2: 0xe0000d9a, 0x8fd3: 0x002ee483,
+	0x8fd4: 0x002ee683, 0x8fd5: 0xe0000de6, 0x8fd6: 0xe0000dd2, 0x8fd7: 0x40093e20,
+	0x8fd8: 0xe0000e12, 0x8fd9: 0xe0000fe1, 0x8fda: 0x00306e83, 0x8fdb: 0xe0000fed,
+	0x8fdc: 0xe0000fff, 0x8fdd: 0x00310283, 0x8fde: 0x00318888, 0x8fdf: 0xe0000f7b,
+	0x8fe0: 0xe00008f2, 0x8fe1: 0x402be020, 0x8fe2: 0xe000091e, 0x8fe3: 0xe0000966,
+	0x8fe4: 0x402be220, 0x8fe5: 0xe000094a, 0x8fe6: 0xe00009d5, 0x8fe7: 0xe0000a4d,
+	0x8fe8: 0xe0000ae5, 0x8fe9: 0x402c9a20, 0x8fea: 0xe0000af1, 0x8feb: 0xe0000b1d,
+	0x8fec: 0xe0000c28, 0x8fed: 0x402d9c20, 0x8fee: 0xe0000c34, 0x8fef: 0xe0000c40,
+	0x8ff0: 0xe0000aad, 0x8ff1: 0xe0000d60, 0x8ff2: 0xe0000d97, 0x8ff3: 0x402ee420,
+	0x8ff4: 0x402ee620, 0x8ff5: 0xe0000de3, 0x8ff6: 0xe0000dcf, 0x8ff7: 0x40093c20,
+	0x8ff8: 0xe0000e0f, 0x8ff9: 0xe0000fde, 0x8ffa: 0x40306e20, 0x8ffb: 0xe0000fea,
+	0x8ffc: 0xe0000ffc, 0x8ffd: 0x40310220, 0x8ffe: 0x40318820, 0x8fff: 0xe0001114,
+	// Block 0x240, offset 0x9000
+	0x9000: 0xe0000983, 0x9001: 0xe0000980, 0x9002: 0xe00008fb, 0x9003: 0xe00008f8,
+	0x9004: 0xe000097d, 0x9005: 0xe000097a, 0x9006: 0xe0000a38, 0x9007: 0xe0000a35,
+	0x9008: 0xe0000a3e, 0x9009: 0xe0000a3b, 0x900a: 0xe0000a4a, 0x900b: 0xe0000a47,
+	0x900c: 0x002c3c83, 0x900d: 0x402c3c20, 0x900e: 0x002c6483, 0x900f: 0x402c6420,
+	0x9010: 0xe0000aaa, 0x9011: 0xe0000aa7, 0x9012: 0xe0000b46, 0x9013: 0xe0000b43,
+	0x9014: 0xe0000aee, 0x9015: 0xe0000aeb, 0x9016: 0xe0000b2c, 0x9017: 0xe0000b29,
+	0x9018: 0xe0000b40, 0x9019: 0xe0000b3d, 0x901a: 0x002c9c83, 0x901b: 0x402c9c20,
+	0x901c: 0xe0000bb8, 0x901d: 0xe0000bb5, 0x901e: 0xe0000bb2, 0x901f: 0xe0000baf,
+	0x9020: 0xe0000bc4, 0x9021: 0xe0000bc1, 0x9022: 0xe0000bca, 0x9023: 0xe0000bc7,
+	0x9024: 0xe0000bee, 0x9025: 0xe0000beb, 0x9026: 0xe0000c1b, 0x9027: 0xe0000c18,
+	0x9028: 0xe0000c51, 0x9029: 0xe0000c4e, 0x902a: 0xe0000c60, 0x902b: 0xe0000c5d,
+	0x902c: 0xe0000c31, 0x902d: 0xe0000c2e, 0x902e: 0xe0000c5a, 0x902f: 0xe0000c57,
+	0x9030: 0xe0000c54, 0x9031: 0x402da220, 0x9032: 0xf0000a0a, 0x9033: 0xf0000404,
+	0x9034: 0xe0000c8a, 0x9035: 0xe0000c87, 0x9036: 0xe0000c9f, 0x9037: 0xe0000c9c,
+	0x9038: 0x402f7220, 0x9039: 0x002e2483, 0x903a: 0x402e2420, 0x903b: 0xe0000cd8,
+	0x903c: 0xe0000cd5, 0x903d: 0x002e2683, 0x903e: 0x402e2620, 0x903f: 0xe0000d04,
+	// Block 0x241, offset 0x9040
+	0x9040: 0xe0000cfe, 0x9041: 0xe0000cf8, 0x9042: 0xe0000cf5, 0x9043: 0xe0000d51,
+	0x9044: 0xe0000d4e, 0x9045: 0xe0000d6f, 0x9046: 0xe0000d6c, 0x9047: 0x002ea083,
+	0x9048: 0x402ea020, 0x9049: 0xf0000404, 0x904a: 0x002eda88, 0x904b: 0x402eda20,
+	0x904c: 0xe0000e2e, 0x904d: 0xe0000e2b, 0x904e: 0xe0000da0, 0x904f: 0xe0000d9d,
+	0x9050: 0xe0000de0, 0x9051: 0xe0000ddd, 0x9052: 0xe0000e93, 0x9053: 0xe0000e8f,
+	0x9054: 0x002f7c83, 0x9055: 0x402f7c20, 0x9056: 0xe0000edc, 0x9057: 0xe0000ed9,
+	0x9058: 0x002f7e83, 0x9059: 0x402f7e20, 0x905a: 0xe0000f1f, 0x905b: 0xe0000f1c,
+	0x905c: 0xe0000f2d, 0x905d: 0xe0000f2a, 0x905e: 0xe0000f47, 0x905f: 0xe0000f44,
+	0x9060: 0x002fe883, 0x9061: 0x402fe820, 0x9062: 0xe0000f99, 0x9063: 0xe0000f96,
+	0x9064: 0x00302e83, 0x9065: 0x40302e20, 0x9066: 0x00303688, 0x9067: 0x40303620,
+	0x9068: 0xe000102b, 0x9069: 0xe0001028, 0x906a: 0xe000103f, 0x906b: 0xe000103c,
+	0x906c: 0xe0000fe7, 0x906d: 0xe0000fe4, 0x906e: 0x00307083, 0x906f: 0x40307020,
+	0x9070: 0xe0001025, 0x9071: 0xe0001022, 0x9072: 0xe0001039, 0x9073: 0xe0001036,
+	0x9074: 0xe00010d8, 0x9075: 0xe00010d5, 0x9076: 0xe000110e, 0x9077: 0xe000110b,
+	0x9078: 0xe0001117, 0x9079: 0xe000113b, 0x907a: 0xe0001138, 0x907b: 0xe000114d,
+	0x907c: 0xe000114a, 0x907d: 0x00312c83, 0x907e: 0x40312c20, 0x907f: 0xe0000f64,
+	// Block 0x242, offset 0x9080
+	0x9080: 0x40321220, 0x9081: 0x40321a20, 0x9082: 0x40322220, 0x9083: 0x40322a20,
+	0x9084: 0xe0000ad5, 0x9085: 0xe0000ad1, 0x9086: 0xe0000acd, 0x9087: 0xf0000a0a,
+	0x9088: 0xf000040a, 0x9089: 0xf0000404, 0x908a: 0xf0000a0a, 0x908b: 0xf000040a,
+	0x908c: 0xf0000404, 0x908d: 0xe0000947, 0x908e: 0xe0000944, 0x908f: 0xe0000c3d,
+	0x9090: 0xe0000c3a, 0x9091: 0xe0000dcc, 0x9092: 0xe0000dc9, 0x9093: 0xe0000ff3,
+	0x9094: 0xe0000ff0, 0x9095: 0xe000101e, 0x9096: 0xe000101a, 0x9097: 0xe0002658,
+	0x9098: 0xe0002655, 0x9099: 0xe0001016, 0x909a: 0xe0001012, 0x909b: 0xe000100e,
+	0x909c: 0xe000100a, 0x909d: 0x402cae20, 0x909e: 0xe0002a0e, 0x909f: 0xe0002a0b,
+	0x90a0: 0xe0000976, 0x90a1: 0xe0000972, 0x90a2: 0xe00009f4, 0x90a3: 0xe00009ef,
+	0x90a4: 0x002d3a88, 0x90a5: 0x402d3a20, 0x90a6: 0xe0000bbe, 0x90a7: 0xe0000bbb,
+	0x90a8: 0xe0000c99, 0x90a9: 0xe0000c96, 0x90aa: 0xe0000e20, 0x90ab: 0xe0000e1d,
+	0x90ac: 0xe0000e27, 0x90ad: 0xe0000e23, 0x90ae: 0xe0001162, 0x90af: 0xe000115f,
+	0x90b0: 0xe0000c8d, 0x90b1: 0xf0000a0a, 0x90b2: 0xf000040a, 0x90b3: 0xf0000404,
+	0x90b4: 0xe0000bac, 0x90b5: 0xe0000ba9, 0x90b6: 0x002d7888, 0x90b7: 0x00319488,
+	0x90b8: 0xe0000d57, 0x90b9: 0xe0000d54, 0x90ba: 0xe000262e, 0x90bb: 0xe000262b,
+	0x90bc: 0xe00009ea, 0x90bd: 0xe00009e5, 0x90be: 0xe0000e19, 0x90bf: 0xe0000e15,
+	// Block 0x243, offset 0x90c0
+	0x90c0: 0xe0000b03, 0x90c1: 0xe0000aff, 0x90c2: 0xe0000b13, 0x90c3: 0xe0000b0f,
+	0x90c4: 0xe0000b0b, 0x90c5: 0xe0000b07, 0x90c6: 0xe0000b75, 0x90c7: 0xe0000b71,
+	0x90c8: 0xe0000c66, 0x90c9: 0xe0000c63, 0x90ca: 0xe0000c78, 0x90cb: 0xe0000c75,
+	0x90cc: 0xe0000e84, 0x90cd: 0xe0000e81, 0x90ce: 0xe0000e44, 0x90cf: 0xe0000e41,
+	0x90d0: 0xe0002a14, 0x90d1: 0xe0002a11, 0x90d2: 0xe0002a1a, 0x90d3: 0xe0002a17,
+	0x90d4: 0xe0002a26, 0x90d5: 0xe0002a23, 0x90d6: 0xe0002a20, 0x90d7: 0xe0002a1d,
+	0x90d8: 0xe0002a2c, 0x90d9: 0xe0002a29, 0x90da: 0xe000264c, 0x90db: 0xe0002649,
+	0x90dc: 0xe0000e65, 0x90dd: 0xe0000e61, 0x90de: 0xe0000e75, 0x90df: 0xe0000e71,
+	0x90e0: 0xe0000e6d, 0x90e1: 0xe0000e69, 0x90e2: 0xe0000e7d, 0x90e3: 0xe0000e79,
+	0x90e4: 0xe000108d, 0x90e5: 0xe000108a, 0x90e6: 0xe000104d, 0x90e7: 0xe000104a,
+	0x90e8: 0xe0002664, 0x90e9: 0xe0002661, 0x90ea: 0xe000106e, 0x90eb: 0xe000106a,
+	0x90ec: 0xe000107e, 0x90ed: 0xe000107a, 0x90ee: 0xe0001076, 0x90ef: 0xe0001072,
+	0x90f0: 0xe0001086, 0x90f1: 0xe0001082, 0x90f2: 0xe0001108, 0x90f3: 0xe0001105,
+	0x90f4: 0xe0001135, 0x90f5: 0xe0001132, 0x90f6: 0xe000112f, 0x90f7: 0xe000112c,
+	0x90f8: 0xe000111d, 0x90f9: 0xe000111a, 0x90fa: 0xe0000d0a, 0x90fb: 0xe0000d07,
+	0x90fc: 0x0030d888, 0x90fd: 0x4030d820, 0x90fe: 0x00312088, 0x90ff: 0x40312020,
+	// Block 0x244, offset 0x9100
+	0x9100: 0xa0000000, 0x9101: 0xa0000000, 0x9102: 0xa0000000, 0x9103: 0xa0000000,
+	0x9104: 0xa0000000, 0x9105: 0xa0000000, 0x9106: 0xa0000000, 0x9107: 0xa0000000,
+	0x9108: 0xa0000000, 0x9109: 0x40020020, 0x910a: 0x40020220, 0x910b: 0x40020420,
+	0x910c: 0x40020620, 0x910d: 0x40020820, 0x910e: 0xa0000000, 0x910f: 0xa0000000,
+	0x9110: 0xa0000000, 0x9111: 0xa0000000, 0x9112: 0xa0000000, 0x9113: 0xa0000000,
+	0x9114: 0xa0000000, 0x9115: 0xa0000000, 0x9116: 0xa0000000, 0x9117: 0xa0000000,
+	0x9118: 0xa0000000, 0x9119: 0xa0000000, 0x911a: 0xa0000000, 0x911b: 0xa0000000,
+	0x911c: 0xa0000000, 0x911d: 0xa0000000, 0x911e: 0xa0000000, 0x911f: 0xa0000000,
+	0x9120: 0x40021220, 0x9121: 0x4002ba20, 0x9122: 0x4003e020, 0x9123: 0x4004ea20,
+	0x9124: 0x4027de20, 0x9125: 0x4004ec20, 0x9126: 0x4004e620, 0x9127: 0x4003d220,
+	0x9128: 0x4003f420, 0x9129: 0x4003f620, 0x912a: 0x4004d820, 0x912b: 0x40093820,
+	0x912c: 0x40024020, 0x912d: 0x40021a20, 0x912e: 0x4002e420, 0x912f: 0x4004e220,
+	0x9130: 0x4029cc20, 0x9131: 0x4029ce20, 0x9132: 0x4029d020, 0x9133: 0x4029d220,
+	0x9134: 0x4029d420, 0x9135: 0x4029d620, 0x9136: 0x4029d820, 0x9137: 0x4029da20,
+	0x9138: 0x4029dc20, 0x9139: 0x4029de20, 0x913a: 0x40026c20, 0x913b: 0x40026220,
+	0x913c: 0x40094020, 0x913d: 0xc32f0851, 0x913e: 0x40094420, 0x913f: 0x4002c420,
+	// Block 0x245, offset 0x9140
+	0x9140: 0x4004d620, 0x9141: 0xc3a90a51, 0x9142: 0x002c0a88, 0x9143: 0x002c3a88,
+	0x9144: 0x002c6288, 0x9145: 0xc45b0a11, 0x9146: 0x002d0888, 0x9147: 0x002d2288,
+	0x9148: 0x002d6888, 0x9149: 0x002d9a88, 0x914a: 0x002dcc88, 0x914b: 0x002dfe88,
+	0x914c: 0xc0030002, 0x914d: 0x002e8288, 0x914e: 0x002e9e88, 0x914f: 0xc4610f41,
+	0x9150: 0x002f2c88, 0x9151: 0x002f5688, 0x9152: 0x002f7a88, 0x9153: 0x002fe688,
+	0x9154: 0x00302c88, 0x9155: 0xc3840951, 0x9156: 0x0030be83, 0x9157: 0x0030bea3,
+	0x9158: 0x0030f688, 0x9159: 0x00310088, 0x915a: 0x00312a88, 0x915b: 0x4003f820,
+	0x915c: 0x4004e420, 0x915d: 0x4003fa20, 0x915e: 0x40062420, 0x915f: 0x40021620,
+	0x9160: 0x40061e20, 0x9161: 0xc3a60a51, 0x9162: 0x402c0a20, 0x9163: 0x402c3a20,
+	0x9164: 0x402c6220, 0x9165: 0xc4590a11, 0x9166: 0x402d0820, 0x9167: 0x402d2220,
+	0x9168: 0x402d6820, 0x9169: 0x402d9a20, 0x916a: 0x402dcc20, 0x916b: 0x402dfe20,
+	0x916c: 0xc0000002, 0x916d: 0x402e8220, 0x916e: 0x402e9e20, 0x916f: 0xc45d0f41,
+	0x9170: 0x402f2c20, 0x9171: 0x402f5620, 0x9172: 0x402f7a20, 0x9173: 0x402fe620,
+	0x9174: 0x40302c20, 0x9175: 0xc3810951, 0x9176: 0x4030be20, 0x9177: 0x4030be21,
+	0x9178: 0x4030f620, 0x9179: 0x40310020, 0x917a: 0x40312a20, 0x917b: 0x4003fc20,
+	0x917c: 0x40094820, 0x917d: 0x4003fe20, 0x917e: 0x40094c20, 0x917f: 0xa0000000,
+	// Block 0x246, offset 0x9180
+	0x9180: 0xe00008f5, 0x9181: 0xe00008ef, 0x9182: 0xe0000921, 0x9183: 0xe0000969,
+	0x9184: 0x00320e83, 0x9185: 0x00320c83, 0x9186: 0x00320ea3, 0x9187: 0xe0000a53,
+	0x9188: 0xe0000ae8, 0x9189: 0xe0000ae2, 0x918a: 0xe0000af4, 0x918b: 0xe0000b20,
+	0x918c: 0xe0000c2b, 0x918d: 0xe0000c25, 0x918e: 0xe0000c37, 0x918f: 0xe0000c43,
+	0x9190: 0x002c62c3, 0x9191: 0xe0000d63, 0x9192: 0xe0000d9a, 0x9193: 0xe0000d94,
+	0x9194: 0x00321103, 0x9195: 0xe0000de6, 0x9196: 0x00321083, 0x9197: 0x40093e20,
+	0x9198: 0x003210a3, 0x9199: 0xe0000fe1, 0x919a: 0xe0000fdb, 0x919b: 0xe0000fed,
+	0x919c: 0x003100a3, 0x919d: 0xe0001102, 0x919e: 0xe000266d, 0x919f: 0xe0000f7b,
+	0x91a0: 0xe00008f2, 0x91a1: 0xe00008ec, 0x91a2: 0xe000091e, 0x91a3: 0xe0000966,
+	0x91a4: 0x40320e20, 0x91a5: 0x40320c20, 0x91a6: 0x40320e21, 0x91a7: 0xe0000a4d,
+	0x91a8: 0xe0000ae5, 0x91a9: 0xe0000adf, 0x91aa: 0xe0000af1, 0x91ab: 0xe0000b1d,
+	0x91ac: 0xe0000c28, 0x91ad: 0xe0000c22, 0x91ae: 0xe0000c34, 0x91af: 0xe0000c40,
+	0x91b0: 0x402c6222, 0x91b1: 0xe0000d60, 0x91b2: 0xe0000d97, 0x91b3: 0xe0000d91,
+	0x91b4: 0x40321024, 0x91b5: 0xe0000de3, 0x91b6: 0x40321020, 0x91b7: 0x40093c20,
+	0x91b8: 0x40321021, 0x91b9: 0xe0000fde, 0x91ba: 0xe0000fd8, 0x91bb: 0xe0000fea,
+	0x91bc: 0x40310021, 0x91bd: 0xe00010ff, 0x91be: 0xe000266a, 0x91bf: 0xe0001114,
+	// Block 0x247, offset 0x91c0
+	0x91c0: 0xe0000983, 0x91c1: 0xe0000980, 0x91c2: 0xe00008fb, 0x91c3: 0xe00008f8,
+	0x91c4: 0xe000097d, 0x91c5: 0xe000097a, 0x91c6: 0xe0000a38, 0x91c7: 0xe0000a35,
+	0x91c8: 0xe0000a3e, 0x91c9: 0xe0000a3b, 0x91ca: 0xe0000a4a, 0x91cb: 0xe0000a47,
+	0x91cc: 0xe0000a44, 0x91cd: 0xe0000a41, 0x91ce: 0xe0000a86, 0x91cf: 0xe0000a83,
+	0x91d0: 0x002c62a3, 0x91d1: 0x402c6221, 0x91d2: 0xe0000b46, 0x91d3: 0xe0000b43,
+	0x91d4: 0xe0000aee, 0x91d5: 0xe0000aeb, 0x91d6: 0xe0000b2c, 0x91d7: 0xe0000b29,
+	0x91d8: 0x00320ec3, 0x91d9: 0x40320e22, 0x91da: 0xe0000b1a, 0x91db: 0xe0000b17,
+	0x91dc: 0xe0000bb8, 0x91dd: 0xe0000bb5, 0x91de: 0xe0000bb2, 0x91df: 0xe0000baf,
+	0x91e0: 0xe0000bc4, 0x91e1: 0xe0000bc1, 0x91e2: 0xe0000bca, 0x91e3: 0xe0000bc7,
+	0x91e4: 0xe0000bee, 0x91e5: 0xe0000beb, 0x91e6: 0xe0000c1b, 0x91e7: 0xe0000c18,
+	0x91e8: 0xe0000c51, 0x91e9: 0xe0000c4e, 0x91ea: 0xe0000c60, 0x91eb: 0xe0000c5d,
+	0x91ec: 0xe0000c31, 0x91ed: 0xe0000c2e, 0x91ee: 0xe0000c5a, 0x91ef: 0xe0000c57,
+	0x91f0: 0xe0000c54, 0x91f1: 0x402da220, 0x91f2: 0xf0000a0a, 0x91f3: 0xf0000404,
+	0x91f4: 0xe0000c8a, 0x91f5: 0xe0000c87, 0x91f6: 0xe0000c9f, 0x91f7: 0xe0000c9c,
+	0x91f8: 0x402f7220, 0x91f9: 0xe0000ccc, 0x91fa: 0xe0000cc9, 0x91fb: 0xe0000cd8,
+	0x91fc: 0xe0000cd5, 0x91fd: 0xe0000cd2, 0x91fe: 0xe0000ccf, 0x91ff: 0xe0000d04,
+	// Block 0x248, offset 0x9200
+	0x9200: 0xe0000cfe, 0x9201: 0xe0000cf8, 0x9202: 0xe0000cf5, 0x9203: 0xe0000d51,
+	0x9204: 0xe0000d4e, 0x9205: 0xe0000d6f, 0x9206: 0xe0000d6c, 0x9207: 0xe0000d5d,
+	0x9208: 0xe0000d5a, 0x9209: 0xf0000404, 0x920a: 0x002eda88, 0x920b: 0x402eda20,
+	0x920c: 0xe0000e2e, 0x920d: 0xe0000e2b, 0x920e: 0xe0000da0, 0x920f: 0xe0000d9d,
+	0x9210: 0x003210c3, 0x9211: 0x40321022, 0x9212: 0x003210e3, 0x9213: 0x40321023,
+	0x9214: 0xe0000eca, 0x9215: 0xe0000ec7, 0x9216: 0xe0000edc, 0x9217: 0xe0000ed9,
+	0x9218: 0xe0000ed0, 0x9219: 0xe0000ecd, 0x921a: 0xe0000f1f, 0x921b: 0xe0000f1c,
+	0x921c: 0xe0000f2d, 0x921d: 0xe0000f2a, 0x921e: 0xe0000f47, 0x921f: 0xe0000f44,
+	0x9220: 0xe0000f33, 0x9221: 0xe0000f30, 0x9222: 0xe0000f99, 0x9223: 0xe0000f96,
+	0x9224: 0xe0000f8a, 0x9225: 0xe0000f87, 0x9226: 0x00303688, 0x9227: 0x40303620,
+	0x9228: 0xe000102b, 0x9229: 0xe0001028, 0x922a: 0xe000103f, 0x922b: 0xe000103c,
+	0x922c: 0xe0000fe7, 0x922d: 0xe0000fe4, 0x922e: 0xe0000ff9, 0x922f: 0xe0000ff6,
+	0x9230: 0x003100c3, 0x9231: 0x40310022, 0x9232: 0xe0001039, 0x9233: 0xe0001036,
+	0x9234: 0xe0002728, 0x9235: 0xe0002725, 0x9236: 0xe000110e, 0x9237: 0xe000110b,
+	0x9238: 0xe0001117, 0x9239: 0xe000113b, 0x923a: 0xe0001138, 0x923b: 0xe000114d,
+	0x923c: 0xe000114a, 0x923d: 0xe0001147, 0x923e: 0xe0001144, 0x923f: 0xe0000f64,
+	// Block 0x249, offset 0x9240
+	0x9240: 0xe000098f, 0x9241: 0xe000098c, 0x9242: 0xe0000995, 0x9243: 0xe0000992,
+	0x9244: 0xe0000b62, 0x9245: 0xe0000b5f, 0x9246: 0xe0000b68, 0x9247: 0xe0000b65,
+	0x9248: 0xe0000c6c, 0x9249: 0xe0000c69, 0x924a: 0xe0000c72, 0x924b: 0xe0000c6f,
+	0x924c: 0xe0000e4a, 0x924d: 0xe0000e47, 0x924e: 0xe0000e50, 0x924f: 0xe0000e4d,
+	0x9250: 0xe0000ee8, 0x9251: 0xe0000ee5, 0x9252: 0xe0000eee, 0x9253: 0xe0000eeb,
+	0x9254: 0xe0001053, 0x9255: 0xe0001050, 0x9256: 0xe0001059, 0x9257: 0xe0001056,
+	0x9258: 0xe0000f61, 0x9259: 0xe0000f5e, 0x925a: 0xe0000fa5, 0x925b: 0xe0000fa2,
+	0x925c: 0x00312288, 0x925d: 0x40312220, 0x925e: 0xe0000bf4, 0x925f: 0xe0000bf1,
+	0x9260: 0x002ebc88, 0x9261: 0x402c8c20, 0x9262: 0x002f2288, 0x9263: 0x402f2220,
+	0x9264: 0x00314088, 0x9265: 0x40314020, 0x9266: 0xe000096f, 0x9267: 0xe000096c,
+	0x9268: 0xe0000b32, 0x9269: 0xe0000b2f, 0x926a: 0xe0002758, 0x926b: 0xe0002755,
+	0x926c: 0xe0000dfd, 0x926d: 0xe0000df9, 0x926e: 0xe0000e04, 0x926f: 0xe0000e01,
+	0x9270: 0xe0000e0b, 0x9271: 0xe0000e07, 0x9272: 0xe0001129, 0x9273: 0xe0001126,
+	0x9274: 0x402e5e20, 0x9275: 0x402ed020, 0x9276: 0x40305a20, 0x9277: 0x402dd420,
+	0x9278: 0xe0000abf, 0x9279: 0xe0000ec4, 0x927a: 0x002be888, 0x927b: 0x002c4488,
+	0x927c: 0x402c4420, 0x927d: 0x002e3888, 0x927e: 0x00303e88, 0x927f: 0x402ffc20,
+	// Block 0x24a, offset 0x9280
+	0x9280: 0xe0000d24, 0x9281: 0xe0000d21, 0x9282: 0xe0000d2a, 0x9283: 0xe0000d27,
+	0x9284: 0xe0000d69, 0x9285: 0xe0000d66, 0x9286: 0xe0000d7b, 0x9287: 0xe0000d78,
+	0x9288: 0xe0000d87, 0x9289: 0xe0000d84, 0x928a: 0xe0000d81, 0x928b: 0xe0000d7e,
+	0x928c: 0xe0000ded, 0x928d: 0xe0000de9, 0x928e: 0xe0002a38, 0x928f: 0xe0002a35,
+	0x9290: 0xe0000e3d, 0x9291: 0xe0000e39, 0x9292: 0xe0000e35, 0x9293: 0xe0000e31,
+	0x9294: 0xe0000ea7, 0x9295: 0xe0000ea4, 0x9296: 0xe0000ead, 0x9297: 0xe0000eaa,
+	0x9298: 0xe0000ed6, 0x9299: 0xe0000ed3, 0x929a: 0xe0000ef4, 0x929b: 0xe0000ef1,
+	0x929c: 0xe0000efb, 0x929d: 0xe0000ef7, 0x929e: 0xe0000f02, 0x929f: 0xe0000eff,
+	0x92a0: 0xe0000f41, 0x92a1: 0xe0000f3e, 0x92a2: 0xe0000f53, 0x92a3: 0xe0000f50,
+	0x92a4: 0xe0000f26, 0x92a5: 0xe0000f22, 0x92a6: 0xe0000f3a, 0x92a7: 0xe0000f36,
+	0x92a8: 0xe0000f5a, 0x92a9: 0xe0000f56, 0x92aa: 0xe0000f93, 0x92ab: 0xe0000f90,
+	0x92ac: 0xe0000f9f, 0x92ad: 0xe0000f9c, 0x92ae: 0xe0000fb1, 0x92af: 0xe0000fae,
+	0x92b0: 0xe0000fab, 0x92b1: 0xe0000fa8, 0x92b2: 0xe0001093, 0x92b3: 0xe0001090,
+	0x92b4: 0xe000109f, 0x92b5: 0xe000109c, 0x92b6: 0xe0001099, 0x92b7: 0xe0001096,
+	0x92b8: 0xe0001032, 0x92b9: 0xe000102e, 0x92ba: 0xe0002685, 0x92bb: 0xe0002682,
+	0x92bc: 0xe0002a2f, 0x92bd: 0xe00010a6, 0x92be: 0xe0002a32, 0x92bf: 0xe00010ac,
+	// Block 0x24b, offset 0x92c0
+	0x92c0: 0xe0000b03, 0x92c1: 0xe0000aff, 0x92c2: 0xe0000b13, 0x92c3: 0xe0000b0f,
+	0x92c4: 0xe0000b0b, 0x92c5: 0xe0000b07, 0x92c6: 0xe0000b75, 0x92c7: 0xe0000b71,
+	0x92c8: 0xe0000c66, 0x92c9: 0xe0000c63, 0x92ca: 0xe0000c78, 0x92cb: 0xe0000c75,
+	0x92cc: 0xe0000e84, 0x92cd: 0xe0000e81, 0x92ce: 0xe0000e44, 0x92cf: 0xe0000e41,
+	0x92d0: 0xe0002a3e, 0x92d1: 0xe0002a3b, 0x92d2: 0xe0002a44, 0x92d3: 0xe0002a41,
+	0x92d4: 0xe0002a50, 0x92d5: 0xe0002a4d, 0x92d6: 0xe0002a4a, 0x92d7: 0xe0002a47,
+	0x92d8: 0xe0002a56, 0x92d9: 0xe0002a53, 0x92da: 0xe0000e5d, 0x92db: 0xe0000e59,
+	0x92dc: 0xe0000e65, 0x92dd: 0xe0000e61, 0x92de: 0xe0000e75, 0x92df: 0xe0000e71,
+	0x92e0: 0xe0000e6d, 0x92e1: 0xe0000e69, 0x92e2: 0xe0000e7d, 0x92e3: 0xe0000e79,
+	0x92e4: 0xe000108d, 0x92e5: 0xe000108a, 0x92e6: 0xe000104d, 0x92e7: 0xe000104a,
+	0x92e8: 0xe0001066, 0x92e9: 0xe0001062, 0x92ea: 0xe000106e, 0x92eb: 0xe000106a,
+	0x92ec: 0xe000107e, 0x92ed: 0xe000107a, 0x92ee: 0xe0001076, 0x92ef: 0xe0001072,
+	0x92f0: 0xe0001086, 0x92f1: 0xe0001082, 0x92f2: 0xe0001108, 0x92f3: 0xe0001105,
+	0x92f4: 0xe0001135, 0x92f5: 0xe0001132, 0x92f6: 0xe000112f, 0x92f7: 0xe000112c,
+	0x92f8: 0xe000111d, 0x92f9: 0xe000111a, 0x92fa: 0xe0000d0a, 0x92fb: 0xe0000d07,
+	0x92fc: 0x0030d888, 0x92fd: 0x4030d820, 0x92fe: 0x00312088, 0x92ff: 0x40312020,
+	// Block 0x24c, offset 0x9300
+	0x9300: 0xa0000000, 0x9301: 0xa0000000, 0x9302: 0xa0000000, 0x9303: 0xa0000000,
+	0x9304: 0xa0000000, 0x9305: 0xa0000000, 0x9306: 0xa0000000, 0x9307: 0xa0000000,
+	0x9308: 0xa0000000, 0x9309: 0x40020020, 0x930a: 0x40020220, 0x930b: 0x40020420,
+	0x930c: 0x40020620, 0x930d: 0x40020820, 0x930e: 0xa0000000, 0x930f: 0xa0000000,
+	0x9310: 0xa0000000, 0x9311: 0xa0000000, 0x9312: 0xa0000000, 0x9313: 0xa0000000,
+	0x9314: 0xa0000000, 0x9315: 0xa0000000, 0x9316: 0xa0000000, 0x9317: 0xa0000000,
+	0x9318: 0xa0000000, 0x9319: 0xa0000000, 0x931a: 0xa0000000, 0x931b: 0xa0000000,
+	0x931c: 0xa0000000, 0x931d: 0xa0000000, 0x931e: 0xa0000000, 0x931f: 0xa0000000,
+	0x9320: 0x40021220, 0x9321: 0x4002ba20, 0x9322: 0x4003e020, 0x9323: 0x4004ea20,
+	0x9324: 0x4027de20, 0x9325: 0x4004ec20, 0x9326: 0x4004e620, 0x9327: 0x4003d220,
+	0x9328: 0x4003f420, 0x9329: 0x4003f620, 0x932a: 0x4004d820, 0x932b: 0x40093820,
+	0x932c: 0x40024020, 0x932d: 0x40021a20, 0x932e: 0x4002e420, 0x932f: 0x4004e220,
+	0x9330: 0x4029cc20, 0x9331: 0x4029ce20, 0x9332: 0x4029d020, 0x9333: 0x4029d220,
+	0x9334: 0x4029d420, 0x9335: 0x4029d620, 0x9336: 0x4029d820, 0x9337: 0x4029da20,
+	0x9338: 0x4029dc20, 0x9339: 0x4029de20, 0x933a: 0x40026c20, 0x933b: 0x40026220,
+	0x933c: 0x40094020, 0x933d: 0xc32f0851, 0x933e: 0x40094420, 0x933f: 0x4002c420,
+	// Block 0x24d, offset 0x9340
+	0x9340: 0x4004d620, 0x9341: 0x002bde88, 0x9342: 0x002c0a88, 0x9343: 0xc3330871,
+	0x9344: 0x002c6288, 0x9345: 0x002c9888, 0x9346: 0x002d0888, 0x9347: 0xc33700d1,
+	0x9348: 0x002d6888, 0x9349: 0xc3390891, 0x934a: 0x002dcc88, 0x934b: 0x002dfe88,
+	0x934c: 0xc0030002, 0x934d: 0x002e8288, 0x934e: 0x002e9e88, 0x934f: 0xc33d0071,
+	0x9350: 0x002f2c88, 0x9351: 0x002f5688, 0x9352: 0x002f7a88, 0x9353: 0xc3410871,
+	0x9354: 0x00302c88, 0x9355: 0xc3450071, 0x9356: 0x0030be88, 0x9357: 0x0030e288,
+	0x9358: 0x0030f688, 0x9359: 0x00310088, 0x935a: 0x00312a88, 0x935b: 0x4003f820,
+	0x935c: 0x4004e420, 0x935d: 0x4003fa20, 0x935e: 0x40062420, 0x935f: 0x40021620,
+	0x9360: 0x40061e20, 0x9361: 0x402bde20, 0x9362: 0x402c0a20, 0x9363: 0xc3310871,
+	0x9364: 0x402c6220, 0x9365: 0x402c9820, 0x9366: 0x402d0820, 0x9367: 0xc33500d1,
+	0x9368: 0x402d6820, 0x9369: 0x402d9a20, 0x936a: 0x402dcc20, 0x936b: 0x402dfe20,
+	0x936c: 0xc0000002, 0x936d: 0x402e8220, 0x936e: 0x402e9e20, 0x936f: 0xc33b0071,
+	0x9370: 0x402f2c20, 0x9371: 0x402f5620, 0x9372: 0x402f7a20, 0x9373: 0xc33f0871,
+	0x9374: 0x40302c20, 0x9375: 0xc3430071, 0x9376: 0x4030be20, 0x9377: 0x4030e220,
+	0x9378: 0x4030f620, 0x9379: 0x40310020, 0x937a: 0x40312a20, 0x937b: 0x4003fc20,
+	0x937c: 0x40094820, 0x937d: 0x4003fe20, 0x937e: 0x40094c20, 0x937f: 0xa0000000,
+	// Block 0x24e, offset 0x9380
+	0x9380: 0x00093685, 0x9381: 0x40083620, 0x9382: 0x40083820, 0x9383: 0x40083a20,
+	0x9384: 0x40083c20, 0x9385: 0x002c628b, 0x9386: 0x002c6285, 0x9387: 0x002c9885,
+	0x9388: 0x002d9a85, 0x9389: 0x002dcc85, 0x938a: 0x40083e20, 0x938b: 0x400a6e20,
+	0x938c: 0x40084020, 0x938d: 0xe00009c4, 0x938e: 0x402d1e20, 0x938f: 0x40084220,
+	0x9390: 0xe00002cb, 0x9391: 0xe00002d3, 0x9392: 0xe00002b2, 0x9393: 0xe00002bb,
+	0x9394: 0xe00003cd, 0x9395: 0xe00002c3, 0x9396: 0xe00003d1, 0x9397: 0xe00004ab,
+	0x9398: 0xe0000579, 0x9399: 0xe00002c7, 0x939a: 0xe0000640, 0x939b: 0xe00002cf,
+	0x939c: 0xe00004af, 0x939d: 0xe0000644, 0x939e: 0xe0000798, 0x939f: 0xf0001e1e,
+	0x93a0: 0x002d9a8a, 0x93a1: 0xe00024ff, 0x93a2: 0xe0002502, 0x93a3: 0xe000250c,
+	0x93a4: 0x0030be8a, 0x93a5: 0xe000253c, 0x93a6: 0xe000253f, 0x93a7: 0xe00010bb,
+	0x93a8: 0xe0002512, 0x93a9: 0x0030f68a, 0x93aa: 0xe0002546, 0x93ab: 0xe000254d,
+	0x93ac: 0x002e228a, 0x93ad: 0x002c3a8a, 0x93ae: 0x002c628a, 0x93af: 0x002e828a,
+	0x93b0: 0x002d9a84, 0x93b1: 0xf0001f04, 0x93b2: 0xf0000404, 0x93b3: 0xf0001f04,
+	0x93b4: 0x0030be84, 0x93b5: 0xf0001f04, 0x93b6: 0xf0000404, 0x93b7: 0xe00010b6,
+	0x93b8: 0xf0001f04, 0x93b9: 0x0030f684, 0x93ba: 0xf0001f04, 0x93bb: 0xf0000404,
+	0x93bc: 0x002e2284, 0x93bd: 0x002c3a84, 0x93be: 0x002c6284, 0x93bf: 0x002e8284,
+	// Block 0x24f, offset 0x93c0
+	0x93c0: 0xf0001f04, 0x93c1: 0xf0001f04, 0x93c2: 0xf0001f04, 0x93c3: 0xf0001f04,
+	0x93c4: 0xf0001f04, 0x93c5: 0xf0001f04, 0x93c6: 0xf0001f04, 0x93c7: 0xf0001f04,
+	0x93c8: 0xf0001f04, 0x93c9: 0xf0001f04, 0x93ca: 0xf0001f04,
+	0x93d0: 0xf0000a04, 0x93d1: 0xf0000a04, 0x93d2: 0xf0000a04, 0x93d3: 0xf0000a04,
+	0x93d4: 0xf0000a04, 0x93d5: 0xf0000a04, 0x93d6: 0xf0000a04, 0x93d7: 0xf0000a04,
+	0x93d8: 0xe00024a8, 0x93d9: 0xf0000a04, 0x93da: 0xf0000a04, 0x93db: 0xf0000a04,
+	0x93dc: 0xf0000a04, 0x93dd: 0xf0000a04, 0x93de: 0xf0000a04, 0x93df: 0xf0000a04,
+	0x93e0: 0xf0000a04, 0x93e1: 0xf0000a04, 0x93e2: 0xf0000a04, 0x93e3: 0xf0000a04,
+	0x93e4: 0xf0000a04, 0x93e5: 0xf0000a04, 0x93e6: 0xf0000a04, 0x93e7: 0xf0000a04,
+	0x93e8: 0xf0000a04, 0x93e9: 0xf0000a04, 0x93ea: 0xf0000a04, 0x93eb: 0x002c3a8c,
+	0x93ec: 0x002f7a8c, 0x93ed: 0xf0000c0c, 0x93ee: 0xf0000c0c,
+	0x93f0: 0x002bde9d, 0x93f1: 0x002c0a9d, 0x93f2: 0x002c3a9d, 0x93f3: 0x002c629d,
+	0x93f4: 0x002c989d, 0x93f5: 0x002d089d, 0x93f6: 0x002d229d, 0x93f7: 0x002d689d,
+	0x93f8: 0x002d9a9d, 0x93f9: 0x002dcc9d, 0x93fa: 0x002dfe9d, 0x93fb: 0x002e229d,
+	0x93fc: 0x002e829d, 0x93fd: 0x002e9e9d, 0x93fe: 0x002ee29d, 0x93ff: 0x002f2c9d,
+}
+
+// mainLookup: 4864 entries, 9728 bytes
+// Block 0 is the null block.
+var mainLookup = [4864]uint16{
+	// Block 0x0, offset 0x0
+	// Block 0x1, offset 0x40
+	// Block 0x2, offset 0x80
+	// Block 0x3, offset 0xc0
+	0x0e0: 0x1f, 0x0e1: 0x20, 0x0e2: 0x21, 0x0e3: 0x22, 0x0e4: 0x23, 0x0e5: 0x24, 0x0e6: 0x25, 0x0e7: 0x26,
+	0x0e8: 0x27, 0x0e9: 0x28, 0x0ea: 0x29, 0x0eb: 0x2a, 0x0ec: 0x2b, 0x0ed: 0x2c, 0x0ee: 0x2d, 0x0ef: 0x2e,
+	0x0f0: 0x2f, 0x0f1: 0x30, 0x0f2: 0x31, 0x0f3: 0x32, 0x0f4: 0x33, 0x0f5: 0x34, 0x0f6: 0x35, 0x0f7: 0x36,
+	0x0f8: 0x37, 0x0f9: 0x38, 0x0fa: 0x39, 0x0fb: 0x3a, 0x0fc: 0x3b, 0x0fd: 0x3c, 0x0fe: 0x3d, 0x0ff: 0x3e,
+	// Block 0x4, offset 0x100
+	0x100: 0x3f, 0x101: 0x40, 0x102: 0x41, 0x103: 0x42, 0x104: 0x43, 0x105: 0x44, 0x106: 0x45, 0x107: 0x46,
+	0x108: 0x47, 0x109: 0x48, 0x10a: 0x49, 0x10b: 0x4a, 0x10c: 0x4b, 0x10d: 0x4c, 0x10e: 0x4d, 0x10f: 0x4e,
+	0x110: 0x4f, 0x111: 0x50, 0x112: 0x51, 0x113: 0x52, 0x114: 0x53, 0x115: 0x54, 0x116: 0x55, 0x117: 0x56,
+	0x118: 0x57, 0x119: 0x58, 0x11a: 0x59, 0x11b: 0x5a, 0x11c: 0x5b, 0x11d: 0x5c, 0x11e: 0x5d, 0x11f: 0x5e,
+	0x120: 0x5f, 0x121: 0x60, 0x122: 0x61, 0x123: 0x62, 0x124: 0x63, 0x125: 0x64, 0x126: 0x65, 0x127: 0x66,
+	0x128: 0x67, 0x129: 0x68, 0x12a: 0x69, 0x12c: 0x6a, 0x12d: 0x6b, 0x12e: 0x6c, 0x12f: 0x6d,
+	0x130: 0x6e, 0x131: 0x6f, 0x133: 0x70, 0x134: 0x71, 0x135: 0x72, 0x136: 0x73, 0x137: 0x74,
+	0x138: 0x75, 0x139: 0x76, 0x13a: 0x77, 0x13b: 0x78, 0x13c: 0x79, 0x13d: 0x7a, 0x13e: 0x7b, 0x13f: 0x7c,
+	// Block 0x5, offset 0x140
+	0x140: 0x7d, 0x141: 0x7e, 0x142: 0x7f, 0x143: 0x80, 0x144: 0x81, 0x145: 0x82, 0x146: 0x83, 0x147: 0x84,
+	0x148: 0x85, 0x149: 0x86, 0x14a: 0x87, 0x14b: 0x88, 0x14c: 0x89, 0x14d: 0x8a, 0x14e: 0x8b, 0x14f: 0x8c,
+	0x150: 0x8d, 0x151: 0x8e, 0x152: 0x8f, 0x153: 0x90, 0x154: 0x91, 0x155: 0x92, 0x156: 0x93, 0x157: 0x94,
+	0x158: 0x95, 0x159: 0x96, 0x15a: 0x97, 0x15b: 0x98, 0x15c: 0x99, 0x15d: 0x9a, 0x15e: 0x9b, 0x15f: 0x9c,
+	0x160: 0x9d, 0x161: 0x9e, 0x162: 0x9f, 0x163: 0xa0, 0x164: 0xa1, 0x165: 0xa2, 0x166: 0xa3, 0x167: 0xa4,
+	0x168: 0xa5, 0x169: 0xa6, 0x16a: 0xa7, 0x16b: 0xa8, 0x16c: 0xa9, 0x16d: 0xaa,
+	0x170: 0xab, 0x171: 0xac, 0x172: 0xad, 0x173: 0xae, 0x174: 0xaf, 0x175: 0xb0, 0x176: 0xb1, 0x177: 0xb2,
+	0x178: 0xb3, 0x17a: 0xb4, 0x17b: 0xb5, 0x17c: 0xb6, 0x17d: 0xb7, 0x17e: 0xb8, 0x17f: 0xb9,
+	// Block 0x6, offset 0x180
+	0x180: 0xba, 0x181: 0xbb, 0x182: 0xbc, 0x183: 0xbd, 0x184: 0xbe, 0x185: 0xbf, 0x186: 0xc0, 0x187: 0xc1,
+	0x188: 0xc2, 0x189: 0xc3, 0x18a: 0xc4, 0x18b: 0xc5, 0x18c: 0xc6, 0x18d: 0xc7, 0x18e: 0xc8, 0x18f: 0xc9,
+	// Block 0x7, offset 0x1c0
+	0x1f7: 0xca,
+	// Block 0x8, offset 0x200
+	0x200: 0xcb, 0x201: 0xcc, 0x202: 0xcd, 0x203: 0xce, 0x204: 0xcf, 0x205: 0xd0, 0x206: 0xd1, 0x207: 0xd2,
+	0x208: 0xd3, 0x209: 0xd4, 0x20a: 0xd5, 0x20b: 0xd6, 0x20c: 0xd7, 0x20d: 0xd8, 0x20e: 0xd9, 0x20f: 0xda,
+	0x210: 0xdb, 0x211: 0xdc, 0x212: 0xdd, 0x213: 0xde, 0x214: 0xdf, 0x215: 0xe0, 0x216: 0xe1, 0x217: 0xe2,
+	0x218: 0xe3, 0x219: 0xe4, 0x21a: 0xe5, 0x21b: 0xe6, 0x21c: 0xe7, 0x21d: 0xe8, 0x21e: 0xe9, 0x21f: 0xea,
+	0x220: 0xeb, 0x221: 0xec, 0x222: 0xed, 0x223: 0xee, 0x224: 0xef, 0x225: 0xf0, 0x226: 0xf1, 0x227: 0xf2,
+	0x228: 0xf3, 0x229: 0xf4, 0x22a: 0xf5, 0x22b: 0xf6, 0x22c: 0xf7, 0x22f: 0xf8,
+	// Block 0x9, offset 0x240
+	0x25e: 0xf9, 0x25f: 0xfa,
+	// Block 0xa, offset 0x280
+	0x2a4: 0xfb, 0x2a5: 0xfc, 0x2a6: 0xfd, 0x2a7: 0xfe,
+	0x2a8: 0xff, 0x2a9: 0x100, 0x2aa: 0x101, 0x2ab: 0x102, 0x2ac: 0x103, 0x2ad: 0x104, 0x2ae: 0x105, 0x2af: 0x106,
+	0x2b0: 0x107, 0x2b1: 0x108, 0x2b2: 0x109, 0x2b3: 0x10a, 0x2b4: 0x10b, 0x2b5: 0x10c, 0x2b6: 0x10d, 0x2b7: 0x10e,
+	0x2b8: 0x10f, 0x2b9: 0x110, 0x2ba: 0x111, 0x2bb: 0x112, 0x2bc: 0x113, 0x2bd: 0x114, 0x2be: 0x115, 0x2bf: 0x116,
+	// Block 0xb, offset 0x2c0
+	0x2c0: 0x117, 0x2c1: 0x118, 0x2c2: 0x119, 0x2c3: 0x11a, 0x2c4: 0x11b, 0x2c5: 0x11c, 0x2c6: 0x11d, 0x2c7: 0x11e,
+	0x2ca: 0x11f, 0x2cb: 0x120, 0x2cc: 0x121, 0x2cd: 0x122, 0x2ce: 0x123, 0x2cf: 0x124,
+	0x2d0: 0x125, 0x2d1: 0x126, 0x2d2: 0x127,
+	0x2e0: 0x128, 0x2e1: 0x129, 0x2e4: 0x12a, 0x2e6: 0x12b,
+	0x2e8: 0x12c, 0x2e9: 0x12d, 0x2ec: 0x12e, 0x2ed: 0x12f,
+	0x2f0: 0x130, 0x2f1: 0x131,
+	0x2f9: 0x132,
+	// Block 0xc, offset 0x300
+	0x300: 0x133, 0x301: 0x134, 0x302: 0x135, 0x303: 0x136, 0x304: 0x137, 0x305: 0x138, 0x306: 0x139, 0x307: 0x13a,
+	0x31a: 0x13b, 0x31b: 0x13c,
+	// Block 0xd, offset 0x340
+	0x340: 0x13d, 0x341: 0x13e, 0x342: 0x13f, 0x343: 0x140, 0x344: 0x141, 0x345: 0x142, 0x346: 0x143, 0x347: 0x144,
+	0x348: 0x145, 0x349: 0x146, 0x34a: 0x147, 0x34b: 0x148, 0x34c: 0x149, 0x34d: 0x14a,
+	0x350: 0x14b, 0x351: 0x14c,
+	// Block 0xe, offset 0x380
+	0x380: 0x14d, 0x381: 0x14e, 0x382: 0x14f, 0x383: 0x150, 0x384: 0x151, 0x385: 0x152, 0x386: 0x153, 0x387: 0x154,
+	0x388: 0x155, 0x389: 0x156, 0x38a: 0x157, 0x38b: 0x158, 0x38c: 0x159, 0x38d: 0x15a, 0x38e: 0x15b, 0x38f: 0x15c,
+	0x390: 0x15d,
+	// Block 0xf, offset 0x3c0
+	0x3e0: 0x15e, 0x3e1: 0x15f, 0x3e2: 0x160, 0x3e3: 0x161, 0x3e4: 0x162, 0x3e5: 0x163, 0x3e6: 0x164, 0x3e7: 0x165,
+	0x3e8: 0x166,
+	0x3fc: 0x167, 0x3fd: 0x168, 0x3fe: 0x169,
+	// Block 0x10, offset 0x400
+	0x400: 0x16a,
+	// Block 0x11, offset 0x440
+	0x440: 0x16b, 0x441: 0x16c, 0x442: 0x16d, 0x443: 0x16e, 0x444: 0x16f, 0x445: 0x170, 0x446: 0x171, 0x447: 0x172,
+	0x448: 0x173, 0x449: 0x174, 0x44c: 0x175, 0x44d: 0x176,
+	0x450: 0x177, 0x451: 0x178, 0x452: 0x179, 0x453: 0x17a, 0x454: 0x17b, 0x455: 0x17c, 0x456: 0x17d, 0x457: 0x17e,
+	0x458: 0x17f, 0x459: 0x180, 0x45a: 0x181, 0x45b: 0x182, 0x45c: 0x183, 0x45d: 0x184, 0x45e: 0x185, 0x45f: 0x186,
+	// Block 0x12, offset 0x480
+	0x4b8: 0x187, 0x4b9: 0x188, 0x4ba: 0x189, 0x4bb: 0x18a,
+	// Block 0x13, offset 0x4c0
+	0x4c0: 0x18b, 0x4c1: 0x18c, 0x4c2: 0x18d, 0x4c3: 0x18e, 0x4c4: 0x18f, 0x4c5: 0x190, 0x4c6: 0x191, 0x4c7: 0x192,
+	0x4c8: 0x193, 0x4c9: 0x194, 0x4cc: 0x195, 0x4cd: 0x196, 0x4ce: 0x197, 0x4cf: 0x198,
+	0x4d0: 0x199, 0x4d1: 0x19a, 0x4d2: 0x19b, 0x4d3: 0x19c, 0x4d4: 0x19d, 0x4d5: 0x19e, 0x4d7: 0x19f,
+	0x4d8: 0x1a0, 0x4d9: 0x1a1, 0x4da: 0x1a2, 0x4db: 0x1a3, 0x4dc: 0x1a4, 0x4dd: 0x1a5,
+	// Block 0x14, offset 0x500
+	0x520: 0x1a6, 0x521: 0x1a7, 0x522: 0x1a8, 0x523: 0x1a9, 0x524: 0x1aa, 0x525: 0x1ab, 0x526: 0x1ac, 0x527: 0x1ad,
+	0x528: 0x1ae,
+	// Block 0x15, offset 0x540
+	0x550: 0x09, 0x551: 0x0a, 0x552: 0x0b, 0x553: 0x0c, 0x556: 0x0d,
+	0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,
+	0x56f: 0x12,
+	// Block 0x16, offset 0x580
+	0x580: 0x1af, 0x581: 0x1b0, 0x584: 0x1b0, 0x585: 0x1b0, 0x586: 0x1b0, 0x587: 0x1b1,
+	// Block 0x17, offset 0x5c0
+	0x5e0: 0x14,
+	// Block 0x18, offset 0x600
+	0x602: 0x01, 0x603: 0x02, 0x604: 0x03, 0x605: 0x04, 0x606: 0x05, 0x607: 0x06,
+	0x608: 0x07, 0x609: 0x08, 0x60a: 0x09, 0x60b: 0x0a, 0x60c: 0x0b, 0x60d: 0x0c, 0x60e: 0x0d, 0x60f: 0x0e,
+	0x610: 0x0f, 0x611: 0x10, 0x612: 0x11, 0x613: 0x12, 0x614: 0x13, 0x615: 0x14, 0x616: 0x15, 0x617: 0x16,
+	0x618: 0x17, 0x619: 0x18, 0x61a: 0x19, 0x61b: 0x1a, 0x61c: 0x1b, 0x61d: 0x1c, 0x61e: 0x1d, 0x61f: 0x1e,
+	0x620: 0x01, 0x621: 0x02, 0x622: 0x03, 0x623: 0x04, 0x624: 0x05,
+	0x62a: 0x06, 0x62d: 0x07, 0x62f: 0x08,
+	0x630: 0x13, 0x633: 0x15,
+	// Block 0x19, offset 0x640
+	0x660: 0x1f, 0x661: 0x20, 0x662: 0x21, 0x663: 0x22, 0x664: 0x23, 0x665: 0x24, 0x666: 0x25, 0x667: 0x26,
+	0x668: 0x27, 0x669: 0x28, 0x66a: 0x29, 0x66b: 0x2a, 0x66c: 0x2b, 0x66d: 0x2c, 0x66e: 0x2d, 0x66f: 0x2e,
+	0x670: 0x2f, 0x671: 0x30, 0x672: 0x31, 0x673: 0x32, 0x674: 0x33, 0x675: 0x34, 0x676: 0x35, 0x677: 0x36,
+	0x678: 0x1bf, 0x679: 0x38, 0x67a: 0x39, 0x67b: 0x3a, 0x67c: 0x3b, 0x67d: 0x3c, 0x67e: 0x3d, 0x67f: 0x3e,
+	// Block 0x1a, offset 0x680
+	0x680: 0x3f, 0x681: 0x40, 0x682: 0x41, 0x683: 0x42, 0x684: 0x1c0, 0x685: 0x1c1, 0x686: 0x1c2, 0x687: 0x1c3,
+	0x688: 0x47, 0x689: 0x48, 0x68a: 0x49, 0x68b: 0x4a, 0x68c: 0x4b, 0x68d: 0x4c, 0x68e: 0x4d, 0x68f: 0x4e,
+	0x690: 0x4f, 0x691: 0x50, 0x692: 0x51, 0x693: 0x52, 0x694: 0x53, 0x695: 0x54, 0x696: 0x55, 0x697: 0x56,
+	0x698: 0x57, 0x699: 0x58, 0x69a: 0x59, 0x69b: 0x5a, 0x69c: 0x5b, 0x69d: 0x5c, 0x69e: 0x5d, 0x69f: 0x5e,
+	0x6a0: 0x5f, 0x6a1: 0x60, 0x6a2: 0x61, 0x6a3: 0x62, 0x6a4: 0x63, 0x6a5: 0x64, 0x6a6: 0x65, 0x6a7: 0x66,
+	0x6a8: 0x67, 0x6a9: 0x68, 0x6aa: 0x69, 0x6ac: 0x6a, 0x6ad: 0x6b, 0x6ae: 0x6c, 0x6af: 0x6d,
+	0x6b0: 0x6e, 0x6b1: 0x6f, 0x6b3: 0x70, 0x6b4: 0x71, 0x6b5: 0x72, 0x6b6: 0x73, 0x6b7: 0x74,
+	0x6b8: 0x1c4, 0x6b9: 0x1c5, 0x6ba: 0x1c6, 0x6bb: 0x1c7, 0x6bc: 0x79, 0x6bd: 0x7a, 0x6be: 0x7b, 0x6bf: 0x7c,
+	// Block 0x1b, offset 0x6c0
+	0x6c0: 0x7d, 0x6c1: 0x7e, 0x6c2: 0x7f, 0x6c3: 0x80, 0x6c4: 0x81, 0x6c5: 0x1c8, 0x6c6: 0x83, 0x6c7: 0x84,
+	0x6c8: 0x85, 0x6c9: 0x1c9, 0x6ca: 0x87, 0x6cb: 0x88, 0x6cc: 0x89, 0x6cd: 0x8a, 0x6ce: 0x8b, 0x6cf: 0x8c,
+	0x6d0: 0x8d, 0x6d1: 0x8e, 0x6d2: 0x1ca, 0x6d3: 0x90, 0x6d4: 0x91, 0x6d5: 0x92, 0x6d6: 0x93, 0x6d7: 0x94,
+	0x6d8: 0x95, 0x6d9: 0x96, 0x6da: 0x97, 0x6db: 0x98, 0x6dc: 0x99, 0x6dd: 0x9a, 0x6de: 0x9b, 0x6df: 0x9c,
+	0x6e0: 0x9d, 0x6e1: 0x9e, 0x6e2: 0x9f, 0x6e3: 0xa0, 0x6e4: 0xa1, 0x6e5: 0xa2, 0x6e6: 0xa3, 0x6e7: 0xa4,
+	0x6e8: 0xa5, 0x6e9: 0xa6, 0x6ea: 0xa7, 0x6eb: 0xa8, 0x6ec: 0xa9, 0x6ed: 0xaa,
+	0x6f0: 0xab, 0x6f1: 0xac, 0x6f2: 0xad, 0x6f3: 0xae, 0x6f4: 0xaf, 0x6f5: 0xb0, 0x6f6: 0xb1, 0x6f7: 0xb2,
+	0x6f8: 0xb3, 0x6fa: 0xb4, 0x6fb: 0xb5, 0x6fc: 0xb6, 0x6fd: 0xb7, 0x6fe: 0xb8, 0x6ff: 0xb9,
+	// Block 0x1c, offset 0x700
+	0x700: 0xba, 0x701: 0xbb, 0x702: 0xbc, 0x703: 0xbd, 0x704: 0xbe, 0x705: 0xbf, 0x706: 0xc0, 0x707: 0xc1,
+	0x708: 0xc2, 0x709: 0xc3, 0x70a: 0xc4, 0x70b: 0xc5, 0x70c: 0xc6, 0x70d: 0x1cb, 0x70e: 0xc8, 0x70f: 0x1cc,
+	// Block 0x1d, offset 0x740
+	0x764: 0xfb, 0x765: 0xfc, 0x766: 0xfd, 0x767: 0xfe,
+	0x768: 0xff, 0x769: 0x100, 0x76a: 0x101, 0x76b: 0x102, 0x76c: 0x103, 0x76d: 0x104, 0x76e: 0x105, 0x76f: 0x1cd,
+	0x770: 0x1ce, 0x771: 0x1cf, 0x772: 0x1d0, 0x773: 0x1d1, 0x774: 0x1d2, 0x775: 0x10c, 0x776: 0x10d, 0x777: 0x10e,
+	0x778: 0x10f, 0x779: 0x110, 0x77a: 0x1d3, 0x77b: 0x1d4, 0x77c: 0x113, 0x77d: 0x114, 0x77e: 0x115, 0x77f: 0x116,
+	// Block 0x1e, offset 0x780
+	0x780: 0x18b, 0x781: 0x18c, 0x782: 0x18d, 0x783: 0x18e, 0x784: 0x1d5, 0x785: 0x190, 0x786: 0x191, 0x787: 0x192,
+	0x788: 0x193, 0x789: 0x194, 0x78c: 0x195, 0x78d: 0x196, 0x78e: 0x197, 0x78f: 0x198,
+	0x790: 0x199, 0x791: 0x19a, 0x792: 0x19b, 0x793: 0x19c, 0x794: 0x19d, 0x795: 0x19e, 0x797: 0x19f,
+	0x798: 0x1a0, 0x799: 0x1a1, 0x79a: 0x1a2, 0x79b: 0x1a3, 0x79c: 0x1a4, 0x79d: 0x1a5,
+	// Block 0x1f, offset 0x7c0
+	0x7d0: 0x09, 0x7d1: 0x0a, 0x7d2: 0x0b, 0x7d3: 0x0c, 0x7d6: 0x0d,
+	0x7db: 0x0e, 0x7dd: 0x0f, 0x7de: 0x10, 0x7df: 0x1c,
+	0x7ef: 0x12,
+	// Block 0x20, offset 0x800
+	0x802: 0x01, 0x803: 0x1b4, 0x804: 0x1b5, 0x805: 0x1b6, 0x806: 0x1b7, 0x807: 0x1b8,
+	0x808: 0x1b9, 0x809: 0x1ba, 0x80a: 0x09, 0x80b: 0x0a, 0x80c: 0x0b, 0x80d: 0x0c, 0x80e: 0x0d, 0x80f: 0x0e,
+	0x810: 0x0f, 0x811: 0x10, 0x812: 0x11, 0x813: 0x12, 0x814: 0x13, 0x815: 0x14, 0x816: 0x15, 0x817: 0x1bb,
+	0x818: 0x1bc, 0x819: 0x1bd, 0x81a: 0x19, 0x81b: 0x1be, 0x81c: 0x1b, 0x81d: 0x1c, 0x81e: 0x1d, 0x81f: 0x1e,
+	0x820: 0x17, 0x821: 0x18, 0x822: 0x19, 0x823: 0x1a, 0x824: 0x05,
+	0x82a: 0x06, 0x82d: 0x07, 0x82f: 0x1b,
+	0x830: 0x1d, 0x833: 0x15,
+	// Block 0x21, offset 0x840
+	0x840: 0x3f, 0x841: 0x40, 0x842: 0x41, 0x843: 0x42, 0x844: 0x1c0, 0x845: 0x1c1, 0x846: 0x1c2, 0x847: 0x1c3,
+	0x848: 0x47, 0x849: 0x48, 0x84a: 0x49, 0x84b: 0x4a, 0x84c: 0x4b, 0x84d: 0x4c, 0x84e: 0x4d, 0x84f: 0x4e,
+	0x850: 0x4f, 0x851: 0x50, 0x852: 0x51, 0x853: 0x52, 0x854: 0x53, 0x855: 0x54, 0x856: 0x55, 0x857: 0x56,
+	0x858: 0x57, 0x859: 0x58, 0x85a: 0x59, 0x85b: 0x5a, 0x85c: 0x5b, 0x85d: 0x5c, 0x85e: 0x5d, 0x85f: 0x5e,
+	0x860: 0x5f, 0x861: 0x60, 0x862: 0x61, 0x863: 0x62, 0x864: 0x63, 0x865: 0x64, 0x866: 0x65, 0x867: 0x66,
+	0x868: 0x67, 0x869: 0x68, 0x86a: 0x69, 0x86c: 0x6a, 0x86d: 0x6b, 0x86e: 0x6c, 0x86f: 0x6d,
+	0x870: 0x6e, 0x871: 0x6f, 0x873: 0x70, 0x874: 0x71, 0x875: 0x72, 0x876: 0x73, 0x877: 0x74,
+	0x878: 0x75, 0x879: 0x76, 0x87a: 0x77, 0x87b: 0x78, 0x87c: 0x79, 0x87d: 0x7a, 0x87e: 0x7b, 0x87f: 0x7c,
+	// Block 0x22, offset 0x880
+	0x880: 0x7d, 0x881: 0x7e, 0x882: 0x7f, 0x883: 0x80, 0x884: 0x81, 0x885: 0x82, 0x886: 0x83, 0x887: 0x84,
+	0x888: 0x85, 0x889: 0x1c9, 0x88a: 0x87, 0x88b: 0x88, 0x88c: 0x89, 0x88d: 0x8a, 0x88e: 0x8b, 0x88f: 0x8c,
+	0x890: 0x8d, 0x891: 0x8e, 0x892: 0x8f, 0x893: 0x90, 0x894: 0x91, 0x895: 0x92, 0x896: 0x93, 0x897: 0x94,
+	0x898: 0x95, 0x899: 0x96, 0x89a: 0x97, 0x89b: 0x98, 0x89c: 0x99, 0x89d: 0x9a, 0x89e: 0x9b, 0x89f: 0x9c,
+	0x8a0: 0x9d, 0x8a1: 0x9e, 0x8a2: 0x9f, 0x8a3: 0xa0, 0x8a4: 0xa1, 0x8a5: 0xa2, 0x8a6: 0xa3, 0x8a7: 0xa4,
+	0x8a8: 0xa5, 0x8a9: 0xa6, 0x8aa: 0xa7, 0x8ab: 0xa8, 0x8ac: 0xa9, 0x8ad: 0xaa,
+	0x8b0: 0xab, 0x8b1: 0xac, 0x8b2: 0xad, 0x8b3: 0xae, 0x8b4: 0xaf, 0x8b5: 0xb0, 0x8b6: 0xb1, 0x8b7: 0xb2,
+	0x8b8: 0xb3, 0x8ba: 0xb4, 0x8bb: 0xb5, 0x8bc: 0xb6, 0x8bd: 0xb7, 0x8be: 0xb8, 0x8bf: 0xb9,
+	// Block 0x23, offset 0x8c0
+	0x8c2: 0x01, 0x8c3: 0x02, 0x8c4: 0x1d8, 0x8c5: 0x1d9, 0x8c6: 0x05, 0x8c7: 0x06,
+	0x8c8: 0x07, 0x8c9: 0x08, 0x8ca: 0x09, 0x8cb: 0x0a, 0x8cc: 0x0b, 0x8cd: 0x0c, 0x8ce: 0x0d, 0x8cf: 0x0e,
+	0x8d0: 0x0f, 0x8d1: 0x10, 0x8d2: 0x11, 0x8d3: 0x12, 0x8d4: 0x13, 0x8d5: 0x14, 0x8d6: 0x15, 0x8d7: 0x1bb,
+	0x8d8: 0x1bc, 0x8d9: 0x1bd, 0x8da: 0x19, 0x8db: 0x1be, 0x8dc: 0x1b, 0x8dd: 0x1c, 0x8de: 0x1d, 0x8df: 0x1e,
+	0x8e0: 0x17, 0x8e1: 0x1f, 0x8e2: 0x20, 0x8e3: 0x04, 0x8e4: 0x05,
+	0x8ea: 0x06, 0x8ed: 0x07, 0x8ef: 0x1b,
+	0x8f0: 0x13, 0x8f3: 0x15,
+	// Block 0x24, offset 0x900
+	0x900: 0x3f, 0x901: 0x40, 0x902: 0x41, 0x903: 0x42, 0x904: 0x1c0, 0x905: 0x1c1, 0x906: 0x1c2, 0x907: 0x1c3,
+	0x908: 0x47, 0x909: 0x48, 0x90a: 0x49, 0x90b: 0x4a, 0x90c: 0x4b, 0x90d: 0x4c, 0x90e: 0x4d, 0x90f: 0x4e,
+	0x910: 0x4f, 0x911: 0x50, 0x912: 0x51, 0x913: 0x52, 0x914: 0x53, 0x915: 0x54, 0x916: 0x55, 0x917: 0x56,
+	0x918: 0x57, 0x919: 0x58, 0x91a: 0x59, 0x91b: 0x5a, 0x91c: 0x5b, 0x91d: 0x5c, 0x91e: 0x5d, 0x91f: 0x5e,
+	0x920: 0x5f, 0x921: 0x60, 0x922: 0x61, 0x923: 0x62, 0x924: 0x63, 0x925: 0x64, 0x926: 0x65, 0x927: 0x66,
+	0x928: 0x67, 0x929: 0x68, 0x92a: 0x69, 0x92c: 0x6a, 0x92d: 0x6b, 0x92e: 0x6c, 0x92f: 0x6d,
+	0x930: 0x6e, 0x931: 0x6f, 0x933: 0x70, 0x934: 0x71, 0x935: 0x72, 0x936: 0x73, 0x937: 0x74,
+	0x938: 0x1e0, 0x939: 0x1e1, 0x93a: 0x1e2, 0x93b: 0x1e3, 0x93c: 0x79, 0x93d: 0x7a, 0x93e: 0x7b, 0x93f: 0x7c,
+	// Block 0x25, offset 0x940
+	0x942: 0x01, 0x943: 0x1dc, 0x944: 0x1dd, 0x945: 0x1de, 0x946: 0x05, 0x947: 0x1df,
+	0x948: 0x07, 0x949: 0x08, 0x94a: 0x09, 0x94b: 0x0a, 0x94c: 0x0b, 0x94d: 0x0c, 0x94e: 0x0d, 0x94f: 0x0e,
+	0x950: 0x0f, 0x951: 0x10, 0x952: 0x11, 0x953: 0x12, 0x954: 0x13, 0x955: 0x14, 0x956: 0x15, 0x957: 0x1bb,
+	0x958: 0x1bc, 0x959: 0x1bd, 0x95a: 0x19, 0x95b: 0x1be, 0x95c: 0x1b, 0x95d: 0x1c, 0x95e: 0x1d, 0x95f: 0x1e,
+	0x960: 0x17, 0x961: 0x22, 0x962: 0x20, 0x963: 0x04, 0x964: 0x05,
+	0x96a: 0x06, 0x96d: 0x07, 0x96f: 0x1b,
+	0x970: 0x13, 0x973: 0x15,
+	// Block 0x26, offset 0x980
+	0x980: 0x3f, 0x981: 0x40, 0x982: 0x41, 0x983: 0x42, 0x984: 0x1c0, 0x985: 0x1c1, 0x986: 0x1c2, 0x987: 0x1c3,
+	0x988: 0x47, 0x989: 0x48, 0x98a: 0x49, 0x98b: 0x4a, 0x98c: 0x4b, 0x98d: 0x4c, 0x98e: 0x4d, 0x98f: 0x4e,
+	0x990: 0x4f, 0x991: 0x50, 0x992: 0x51, 0x993: 0x52, 0x994: 0x53, 0x995: 0x54, 0x996: 0x55, 0x997: 0x56,
+	0x998: 0x57, 0x999: 0x58, 0x99a: 0x59, 0x99b: 0x5a, 0x99c: 0x5b, 0x99d: 0x5c, 0x99e: 0x5d, 0x99f: 0x5e,
+	0x9a0: 0x5f, 0x9a1: 0x60, 0x9a2: 0x61, 0x9a3: 0x62, 0x9a4: 0x63, 0x9a5: 0x64, 0x9a6: 0x65, 0x9a7: 0x66,
+	0x9a8: 0x67, 0x9a9: 0x68, 0x9aa: 0x69, 0x9ac: 0x6a, 0x9ad: 0x6b, 0x9ae: 0x6c, 0x9af: 0x6d,
+	0x9b0: 0x6e, 0x9b1: 0x6f, 0x9b3: 0x70, 0x9b4: 0x71, 0x9b5: 0x72, 0x9b6: 0x1eb, 0x9b7: 0x74,
+	0x9b8: 0x75, 0x9b9: 0x1ec, 0x9ba: 0x77, 0x9bb: 0x78, 0x9bc: 0x79, 0x9bd: 0x7a, 0x9be: 0x7b, 0x9bf: 0x7c,
+	// Block 0x27, offset 0x9c0
+	0x9c0: 0x7d, 0x9c1: 0x7e, 0x9c2: 0x7f, 0x9c3: 0x80, 0x9c4: 0x1ed, 0x9c5: 0x82, 0x9c6: 0x83, 0x9c7: 0x84,
+	0x9c8: 0x85, 0x9c9: 0x1c9, 0x9ca: 0x87, 0x9cb: 0x88, 0x9cc: 0x89, 0x9cd: 0x8a, 0x9ce: 0x8b, 0x9cf: 0x8c,
+	0x9d0: 0x8d, 0x9d1: 0x8e, 0x9d2: 0x8f, 0x9d3: 0x90, 0x9d4: 0x91, 0x9d5: 0x92, 0x9d6: 0x93, 0x9d7: 0x94,
+	0x9d8: 0x95, 0x9d9: 0x96, 0x9da: 0x97, 0x9db: 0x98, 0x9dc: 0x99, 0x9dd: 0x9a, 0x9de: 0x9b, 0x9df: 0x9c,
+	0x9e0: 0x9d, 0x9e1: 0x9e, 0x9e2: 0x9f, 0x9e3: 0xa0, 0x9e4: 0xa1, 0x9e5: 0xa2, 0x9e6: 0xa3, 0x9e7: 0xa4,
+	0x9e8: 0xa5, 0x9e9: 0xa6, 0x9ea: 0xa7, 0x9eb: 0xa8, 0x9ec: 0xa9, 0x9ed: 0xaa,
+	0x9f0: 0xab, 0x9f1: 0xac, 0x9f2: 0xad, 0x9f3: 0xae, 0x9f4: 0xaf, 0x9f5: 0xb0, 0x9f6: 0xb1, 0x9f7: 0xb2,
+	0x9f8: 0xb3, 0x9fa: 0xb4, 0x9fb: 0xb5, 0x9fc: 0xb6, 0x9fd: 0xb7, 0x9fe: 0xb8, 0x9ff: 0xb9,
+	// Block 0x28, offset 0xa00
+	0xa02: 0x01, 0xa03: 0x1e6, 0xa04: 0x1e7, 0xa05: 0x1e8, 0xa06: 0x05, 0xa07: 0x1e9,
+	0xa08: 0x1ea, 0xa09: 0x08, 0xa0a: 0x09, 0xa0b: 0x0a, 0xa0c: 0x0b, 0xa0d: 0x0c, 0xa0e: 0x0d, 0xa0f: 0x0e,
+	0xa10: 0x0f, 0xa11: 0x10, 0xa12: 0x11, 0xa13: 0x12, 0xa14: 0x13, 0xa15: 0x14, 0xa16: 0x15, 0xa17: 0x1bb,
+	0xa18: 0x1bc, 0xa19: 0x1bd, 0xa1a: 0x19, 0xa1b: 0x1be, 0xa1c: 0x1b, 0xa1d: 0x1c, 0xa1e: 0x1d, 0xa1f: 0x1e,
+	0xa20: 0x17, 0xa21: 0x24, 0xa22: 0x25, 0xa23: 0x04, 0xa24: 0x05,
+	0xa2a: 0x06, 0xa2d: 0x07, 0xa2f: 0x1b,
+	0xa30: 0x13, 0xa33: 0x15,
+	// Block 0x29, offset 0xa40
+	0xa40: 0x3f, 0xa41: 0x40, 0xa42: 0x41, 0xa43: 0x42, 0xa44: 0x1c0, 0xa45: 0x1c1, 0xa46: 0x1c2, 0xa47: 0x1c3,
+	0xa48: 0x47, 0xa49: 0x48, 0xa4a: 0x49, 0xa4b: 0x4a, 0xa4c: 0x4b, 0xa4d: 0x4c, 0xa4e: 0x4d, 0xa4f: 0x4e,
+	0xa50: 0x4f, 0xa51: 0x50, 0xa52: 0x51, 0xa53: 0x52, 0xa54: 0x53, 0xa55: 0x54, 0xa56: 0x55, 0xa57: 0x56,
+	0xa58: 0x57, 0xa59: 0x58, 0xa5a: 0x59, 0xa5b: 0x5a, 0xa5c: 0x5b, 0xa5d: 0x5c, 0xa5e: 0x5d, 0xa5f: 0x5e,
+	0xa60: 0x5f, 0xa61: 0x60, 0xa62: 0x61, 0xa63: 0x62, 0xa64: 0x63, 0xa65: 0x64, 0xa66: 0x65, 0xa67: 0x66,
+	0xa68: 0x67, 0xa69: 0x68, 0xa6a: 0x69, 0xa6c: 0x6a, 0xa6d: 0x6b, 0xa6e: 0x6c, 0xa6f: 0x6d,
+	0xa70: 0x6e, 0xa71: 0x6f, 0xa73: 0x70, 0xa74: 0x71, 0xa75: 0x72, 0xa76: 0x73, 0xa77: 0x74,
+	0xa78: 0x75, 0xa79: 0x1f3, 0xa7a: 0x77, 0xa7b: 0x78, 0xa7c: 0x79, 0xa7d: 0x7a, 0xa7e: 0x7b, 0xa7f: 0x7c,
+	// Block 0x2a, offset 0xa80
+	0xa82: 0x01, 0xa83: 0x1f0, 0xa84: 0x03, 0xa85: 0x04, 0xa86: 0x05, 0xa87: 0x1f1,
+	0xa88: 0x1f2, 0xa89: 0x08, 0xa8a: 0x09, 0xa8b: 0x0a, 0xa8c: 0x0b, 0xa8d: 0x0c, 0xa8e: 0x0d, 0xa8f: 0x0e,
+	0xa90: 0x0f, 0xa91: 0x10, 0xa92: 0x11, 0xa93: 0x12, 0xa94: 0x13, 0xa95: 0x14, 0xa96: 0x15, 0xa97: 0x1bb,
+	0xa98: 0x1bc, 0xa99: 0x1bd, 0xa9a: 0x19, 0xa9b: 0x1be, 0xa9c: 0x1b, 0xa9d: 0x1c, 0xa9e: 0x1d, 0xa9f: 0x1e,
+	0xaa0: 0x17, 0xaa1: 0x27, 0xaa2: 0x20, 0xaa3: 0x04, 0xaa4: 0x05,
+	0xaaa: 0x06, 0xaad: 0x07, 0xaaf: 0x1b,
+	0xab0: 0x13, 0xab3: 0x15,
+	// Block 0x2b, offset 0xac0
+	0xac2: 0x01, 0xac3: 0x02, 0xac4: 0x03, 0xac5: 0x04, 0xac6: 0x05, 0xac7: 0x06,
+	0xac8: 0x07, 0xac9: 0x08, 0xaca: 0x09, 0xacb: 0x0a, 0xacc: 0x0b, 0xacd: 0x0c, 0xace: 0x0d, 0xacf: 0x0e,
+	0xad0: 0x0f, 0xad1: 0x10, 0xad2: 0x11, 0xad3: 0x12, 0xad4: 0x13, 0xad5: 0x14, 0xad6: 0x15, 0xad7: 0x1bb,
+	0xad8: 0x1bc, 0xad9: 0x1bd, 0xada: 0x19, 0xadb: 0x1be, 0xadc: 0x1b, 0xadd: 0x1c, 0xade: 0x1d, 0xadf: 0x1e,
+	0xae0: 0x17, 0xae1: 0x1f, 0xae2: 0x20, 0xae3: 0x04, 0xae4: 0x05,
+	0xaea: 0x06, 0xaed: 0x07, 0xaef: 0x1b,
+	0xaf0: 0x13, 0xaf3: 0x15,
+	// Block 0x2c, offset 0xb00
+	0xb02: 0x01, 0xb03: 0x1f8, 0xb04: 0x03, 0xb05: 0x04, 0xb06: 0x05, 0xb07: 0x06,
+	0xb08: 0x07, 0xb09: 0x08, 0xb0a: 0x09, 0xb0b: 0x0a, 0xb0c: 0x0b, 0xb0d: 0x0c, 0xb0e: 0x0d, 0xb0f: 0x0e,
+	0xb10: 0x0f, 0xb11: 0x10, 0xb12: 0x11, 0xb13: 0x12, 0xb14: 0x13, 0xb15: 0x14, 0xb16: 0x15, 0xb17: 0x1bb,
+	0xb18: 0x1bc, 0xb19: 0x1bd, 0xb1a: 0x19, 0xb1b: 0x1be, 0xb1c: 0x1b, 0xb1d: 0x1c, 0xb1e: 0x1d, 0xb1f: 0x1e,
+	0xb20: 0x17, 0xb21: 0x1f, 0xb22: 0x20, 0xb23: 0x04, 0xb24: 0x05,
+	0xb2a: 0x06, 0xb2d: 0x07, 0xb2f: 0x1b,
+	0xb30: 0x13, 0xb33: 0x15,
+	// Block 0x2d, offset 0xb40
+	0xb40: 0x3f, 0xb41: 0x40, 0xb42: 0x41, 0xb43: 0x42, 0xb44: 0x1c0, 0xb45: 0x1c1, 0xb46: 0x1c2, 0xb47: 0x1c3,
+	0xb48: 0x47, 0xb49: 0x48, 0xb4a: 0x49, 0xb4b: 0x4a, 0xb4c: 0x4b, 0xb4d: 0x4c, 0xb4e: 0x4d, 0xb4f: 0x4e,
+	0xb50: 0x4f, 0xb51: 0x50, 0xb52: 0x51, 0xb53: 0x52, 0xb54: 0x53, 0xb55: 0x54, 0xb56: 0x55, 0xb57: 0x56,
+	0xb58: 0x57, 0xb59: 0x58, 0xb5a: 0x59, 0xb5b: 0x5a, 0xb5c: 0x5b, 0xb5d: 0x5c, 0xb5e: 0x5d, 0xb5f: 0x5e,
+	0xb60: 0x5f, 0xb61: 0x60, 0xb62: 0x61, 0xb63: 0x62, 0xb64: 0x63, 0xb65: 0x64, 0xb66: 0x65, 0xb67: 0x66,
+	0xb68: 0x67, 0xb69: 0x68, 0xb6a: 0x69, 0xb6c: 0x6a, 0xb6d: 0x6b, 0xb6e: 0x6c, 0xb6f: 0x6d,
+	0xb70: 0x6e, 0xb71: 0x6f, 0xb73: 0x70, 0xb74: 0x71, 0xb75: 0x72, 0xb76: 0x1eb, 0xb77: 0x74,
+	0xb78: 0x75, 0xb79: 0x200, 0xb7a: 0x201, 0xb7b: 0x202, 0xb7c: 0x79, 0xb7d: 0x7a, 0xb7e: 0x7b, 0xb7f: 0x7c,
+	// Block 0x2e, offset 0xb80
+	0xb80: 0x7d, 0xb81: 0x7e, 0xb82: 0x7f, 0xb83: 0x80, 0xb84: 0x203, 0xb85: 0x82, 0xb86: 0x83, 0xb87: 0x84,
+	0xb88: 0x85, 0xb89: 0x1c9, 0xb8a: 0x87, 0xb8b: 0x88, 0xb8c: 0x89, 0xb8d: 0x8a, 0xb8e: 0x8b, 0xb8f: 0x8c,
+	0xb90: 0x8d, 0xb91: 0x8e, 0xb92: 0x204, 0xb93: 0x90, 0xb94: 0x91, 0xb95: 0x92, 0xb96: 0x93, 0xb97: 0x94,
+	0xb98: 0x95, 0xb99: 0x96, 0xb9a: 0x97, 0xb9b: 0x98, 0xb9c: 0x99, 0xb9d: 0x9a, 0xb9e: 0x9b, 0xb9f: 0x9c,
+	0xba0: 0x9d, 0xba1: 0x9e, 0xba2: 0x9f, 0xba3: 0xa0, 0xba4: 0xa1, 0xba5: 0xa2, 0xba6: 0xa3, 0xba7: 0xa4,
+	0xba8: 0xa5, 0xba9: 0xa6, 0xbaa: 0xa7, 0xbab: 0xa8, 0xbac: 0xa9, 0xbad: 0xaa,
+	0xbb0: 0xab, 0xbb1: 0xac, 0xbb2: 0xad, 0xbb3: 0xae, 0xbb4: 0xaf, 0xbb5: 0xb0, 0xbb6: 0xb1, 0xbb7: 0xb2,
+	0xbb8: 0xb3, 0xbba: 0xb4, 0xbbb: 0xb5, 0xbbc: 0xb6, 0xbbd: 0xb7, 0xbbe: 0xb8, 0xbbf: 0xb9,
+	// Block 0x2f, offset 0xbc0
+	0xbc0: 0xba, 0xbc1: 0xbb, 0xbc2: 0xbc, 0xbc3: 0xbd, 0xbc4: 0xbe, 0xbc5: 0xbf, 0xbc6: 0xc0, 0xbc7: 0xc1,
+	0xbc8: 0xc2, 0xbc9: 0xc3, 0xbca: 0xc4, 0xbcb: 0xc5, 0xbcc: 0xc6, 0xbcd: 0xc7, 0xbce: 0x205, 0xbcf: 0x206,
+	// Block 0x30, offset 0xc00
+	0xc00: 0x18b, 0xc01: 0x18c, 0xc02: 0x18d, 0xc03: 0x18e, 0xc04: 0x207, 0xc05: 0x208, 0xc06: 0x191, 0xc07: 0x192,
+	0xc08: 0x193, 0xc09: 0x194, 0xc0c: 0x195, 0xc0d: 0x196, 0xc0e: 0x197, 0xc0f: 0x198,
+	0xc10: 0x199, 0xc11: 0x19a, 0xc12: 0x19b, 0xc13: 0x19c, 0xc14: 0x19d, 0xc15: 0x19e, 0xc17: 0x19f,
+	0xc18: 0x1a0, 0xc19: 0x1a1, 0xc1a: 0x1a2, 0xc1b: 0x1a3, 0xc1c: 0x1a4, 0xc1d: 0x1a5,
+	// Block 0x31, offset 0xc40
+	0xc50: 0x09, 0xc51: 0x0a, 0xc52: 0x0b, 0xc53: 0x0c, 0xc56: 0x0d,
+	0xc5b: 0x0e, 0xc5d: 0x0f, 0xc5e: 0x10, 0xc5f: 0x2e,
+	0xc6f: 0x12,
+	// Block 0x32, offset 0xc80
+	0xc82: 0x01, 0xc83: 0x1fb, 0xc84: 0x1fc, 0xc85: 0x1fd, 0xc86: 0x05, 0xc87: 0x1fe,
+	0xc88: 0x1ff, 0xc89: 0x08, 0xc8a: 0x09, 0xc8b: 0x0a, 0xc8c: 0x0b, 0xc8d: 0x0c, 0xc8e: 0x0d, 0xc8f: 0x0e,
+	0xc90: 0x0f, 0xc91: 0x10, 0xc92: 0x11, 0xc93: 0x12, 0xc94: 0x13, 0xc95: 0x14, 0xc96: 0x15, 0xc97: 0x1bb,
+	0xc98: 0x1bc, 0xc99: 0x1bd, 0xc9a: 0x19, 0xc9b: 0x1be, 0xc9c: 0x1b, 0xc9d: 0x1c, 0xc9e: 0x1d, 0xc9f: 0x1e,
+	0xca0: 0x17, 0xca1: 0x2b, 0xca2: 0x2c, 0xca3: 0x2d, 0xca4: 0x05,
+	0xcaa: 0x06, 0xcad: 0x07, 0xcaf: 0x1b,
+	0xcb0: 0x2f, 0xcb3: 0x15,
+	// Block 0x33, offset 0xcc0
+	0xce0: 0x1f, 0xce1: 0x20, 0xce2: 0x21, 0xce3: 0x22, 0xce4: 0x23, 0xce5: 0x24, 0xce6: 0x25, 0xce7: 0x26,
+	0xce8: 0x27, 0xce9: 0x28, 0xcea: 0x29, 0xceb: 0x2a, 0xcec: 0x2b, 0xced: 0x2c, 0xcee: 0x2d, 0xcef: 0x2e,
+	0xcf0: 0x2f, 0xcf1: 0x30, 0xcf2: 0x31, 0xcf3: 0x32, 0xcf4: 0x33, 0xcf5: 0x34, 0xcf6: 0x35, 0xcf7: 0x36,
+	0xcf8: 0x20d, 0xcf9: 0x38, 0xcfa: 0x39, 0xcfb: 0x3a, 0xcfc: 0x3b, 0xcfd: 0x3c, 0xcfe: 0x3d, 0xcff: 0x3e,
+	// Block 0x34, offset 0xd00
+	0xd02: 0x01, 0xd03: 0x02, 0xd04: 0x03, 0xd05: 0x04, 0xd06: 0x05, 0xd07: 0x06,
+	0xd08: 0x07, 0xd09: 0x08, 0xd0a: 0x09, 0xd0b: 0x0a, 0xd0c: 0x0b, 0xd0d: 0x0c, 0xd0e: 0x0d, 0xd0f: 0x0e,
+	0xd10: 0x0f, 0xd11: 0x10, 0xd12: 0x11, 0xd13: 0x12, 0xd14: 0x13, 0xd15: 0x14, 0xd16: 0x15, 0xd17: 0x20b,
+	0xd18: 0x1bc, 0xd19: 0x20c, 0xd1a: 0x19, 0xd1b: 0x1be, 0xd1c: 0x1b, 0xd1d: 0x1c, 0xd1e: 0x1d, 0xd1f: 0x1e,
+	0xd20: 0x31, 0xd21: 0x1f, 0xd22: 0x20, 0xd23: 0x04, 0xd24: 0x05,
+	0xd2a: 0x06, 0xd2d: 0x07, 0xd2f: 0x1b,
+	0xd30: 0x13, 0xd33: 0x15,
+	// Block 0x35, offset 0xd40
+	0xd40: 0x3f, 0xd41: 0x40, 0xd42: 0x41, 0xd43: 0x42, 0xd44: 0x1c0, 0xd45: 0x1c1, 0xd46: 0x1c2, 0xd47: 0x1c3,
+	0xd48: 0x47, 0xd49: 0x48, 0xd4a: 0x49, 0xd4b: 0x4a, 0xd4c: 0x4b, 0xd4d: 0x4c, 0xd4e: 0x4d, 0xd4f: 0x4e,
+	0xd50: 0x4f, 0xd51: 0x50, 0xd52: 0x51, 0xd53: 0x52, 0xd54: 0x53, 0xd55: 0x54, 0xd56: 0x55, 0xd57: 0x56,
+	0xd58: 0x57, 0xd59: 0x58, 0xd5a: 0x59, 0xd5b: 0x5a, 0xd5c: 0x5b, 0xd5d: 0x5c, 0xd5e: 0x5d, 0xd5f: 0x5e,
+	0xd60: 0x5f, 0xd61: 0x60, 0xd62: 0x61, 0xd63: 0x62, 0xd64: 0x63, 0xd65: 0x64, 0xd66: 0x65, 0xd67: 0x66,
+	0xd68: 0x67, 0xd69: 0x68, 0xd6a: 0x69, 0xd6c: 0x6a, 0xd6d: 0x6b, 0xd6e: 0x6c, 0xd6f: 0x6d,
+	0xd70: 0x6e, 0xd71: 0x6f, 0xd73: 0x70, 0xd74: 0x71, 0xd75: 0x72, 0xd76: 0x73, 0xd77: 0x74,
+	0xd78: 0x213, 0xd79: 0x214, 0xd7a: 0x77, 0xd7b: 0x78, 0xd7c: 0x79, 0xd7d: 0x7a, 0xd7e: 0x7b, 0xd7f: 0x7c,
+	// Block 0x36, offset 0xd80
+	0xd82: 0x01, 0xd83: 0x02, 0xd84: 0x210, 0xd85: 0x211, 0xd86: 0x05, 0xd87: 0x212,
+	0xd88: 0x07, 0xd89: 0x08, 0xd8a: 0x09, 0xd8b: 0x0a, 0xd8c: 0x0b, 0xd8d: 0x0c, 0xd8e: 0x0d, 0xd8f: 0x0e,
+	0xd90: 0x0f, 0xd91: 0x10, 0xd92: 0x11, 0xd93: 0x12, 0xd94: 0x13, 0xd95: 0x14, 0xd96: 0x15, 0xd97: 0x1bb,
+	0xd98: 0x1bc, 0xd99: 0x1bd, 0xd9a: 0x19, 0xd9b: 0x1be, 0xd9c: 0x1b, 0xd9d: 0x1c, 0xd9e: 0x1d, 0xd9f: 0x1e,
+	0xda0: 0x17, 0xda1: 0x33, 0xda2: 0x20, 0xda3: 0x04, 0xda4: 0x05,
+	0xdaa: 0x06, 0xdad: 0x07, 0xdaf: 0x1b,
+	0xdb0: 0x13, 0xdb3: 0x15,
+	// Block 0x37, offset 0xdc0
+	0xdc0: 0x3f, 0xdc1: 0x40, 0xdc2: 0x41, 0xdc3: 0x42, 0xdc4: 0x1c0, 0xdc5: 0x1c1, 0xdc6: 0x1c2, 0xdc7: 0x1c3,
+	0xdc8: 0x47, 0xdc9: 0x48, 0xdca: 0x49, 0xdcb: 0x4a, 0xdcc: 0x4b, 0xdcd: 0x4c, 0xdce: 0x4d, 0xdcf: 0x4e,
+	0xdd0: 0x4f, 0xdd1: 0x50, 0xdd2: 0x51, 0xdd3: 0x52, 0xdd4: 0x53, 0xdd5: 0x54, 0xdd6: 0x55, 0xdd7: 0x56,
+	0xdd8: 0x57, 0xdd9: 0x58, 0xdda: 0x59, 0xddb: 0x5a, 0xddc: 0x5b, 0xddd: 0x5c, 0xdde: 0x5d, 0xddf: 0x5e,
+	0xde0: 0x5f, 0xde1: 0x60, 0xde2: 0x61, 0xde3: 0x62, 0xde4: 0x63, 0xde5: 0x64, 0xde6: 0x65, 0xde7: 0x66,
+	0xde8: 0x67, 0xde9: 0x68, 0xdea: 0x69, 0xdec: 0x6a, 0xded: 0x6b, 0xdee: 0x6c, 0xdef: 0x6d,
+	0xdf0: 0x6e, 0xdf1: 0x6f, 0xdf3: 0x70, 0xdf4: 0x71, 0xdf5: 0x72, 0xdf6: 0x1eb, 0xdf7: 0x74,
+	0xdf8: 0x21b, 0xdf9: 0x21c, 0xdfa: 0x21d, 0xdfb: 0x21e, 0xdfc: 0x79, 0xdfd: 0x7a, 0xdfe: 0x7b, 0xdff: 0x7c,
+	// Block 0x38, offset 0xe00
+	0xe02: 0x01, 0xe03: 0x217, 0xe04: 0x218, 0xe05: 0x04, 0xe06: 0x05, 0xe07: 0x219,
+	0xe08: 0x21a, 0xe09: 0x08, 0xe0a: 0x09, 0xe0b: 0x0a, 0xe0c: 0x0b, 0xe0d: 0x0c, 0xe0e: 0x0d, 0xe0f: 0x0e,
+	0xe10: 0x0f, 0xe11: 0x10, 0xe12: 0x11, 0xe13: 0x12, 0xe14: 0x13, 0xe15: 0x14, 0xe16: 0x15, 0xe17: 0x1bb,
+	0xe18: 0x1bc, 0xe19: 0x1bd, 0xe1a: 0x19, 0xe1b: 0x1be, 0xe1c: 0x1b, 0xe1d: 0x1c, 0xe1e: 0x1d, 0xe1f: 0x1e,
+	0xe20: 0x17, 0xe21: 0x35, 0xe22: 0x25, 0xe23: 0x04, 0xe24: 0x05,
+	0xe2a: 0x06, 0xe2d: 0x07, 0xe2f: 0x1b,
+	0xe30: 0x13, 0xe33: 0x15,
+	// Block 0x39, offset 0xe40
+	0xe42: 0x01, 0xe43: 0x1e6, 0xe44: 0x221, 0xe45: 0x1e8, 0xe46: 0x05, 0xe47: 0x1e9,
+	0xe48: 0x1ea, 0xe49: 0x08, 0xe4a: 0x09, 0xe4b: 0x0a, 0xe4c: 0x0b, 0xe4d: 0x0c, 0xe4e: 0x0d, 0xe4f: 0x0e,
+	0xe50: 0x0f, 0xe51: 0x10, 0xe52: 0x11, 0xe53: 0x12, 0xe54: 0x13, 0xe55: 0x14, 0xe56: 0x15, 0xe57: 0x1bb,
+	0xe58: 0x1bc, 0xe59: 0x1bd, 0xe5a: 0x19, 0xe5b: 0x1be, 0xe5c: 0x1b, 0xe5d: 0x1c, 0xe5e: 0x1d, 0xe5f: 0x1e,
+	0xe60: 0x17, 0xe61: 0x24, 0xe62: 0x25, 0xe63: 0x04, 0xe64: 0x05,
+	0xe6a: 0x06, 0xe6d: 0x07, 0xe6f: 0x1b,
+	0xe70: 0x13, 0xe73: 0x15,
+	// Block 0x3a, offset 0xe80
+	0xe80: 0x3f, 0xe81: 0x40, 0xe82: 0x41, 0xe83: 0x42, 0xe84: 0x222, 0xe85: 0x223, 0xe86: 0x224, 0xe87: 0x225,
+	0xe88: 0x47, 0xe89: 0x48, 0xe8a: 0x49, 0xe8b: 0x4a, 0xe8c: 0x4b, 0xe8d: 0x4c, 0xe8e: 0x4d, 0xe8f: 0x4e,
+	0xe90: 0x4f, 0xe91: 0x50, 0xe92: 0x51, 0xe93: 0x52, 0xe94: 0x53, 0xe95: 0x54, 0xe96: 0x55, 0xe97: 0x56,
+	0xe98: 0x57, 0xe99: 0x58, 0xe9a: 0x59, 0xe9b: 0x5a, 0xe9c: 0x5b, 0xe9d: 0x5c, 0xe9e: 0x5d, 0xe9f: 0x5e,
+	0xea0: 0x5f, 0xea1: 0x60, 0xea2: 0x61, 0xea3: 0x62, 0xea4: 0x63, 0xea5: 0x64, 0xea6: 0x65, 0xea7: 0x66,
+	0xea8: 0x67, 0xea9: 0x68, 0xeaa: 0x69, 0xeac: 0x6a, 0xead: 0x6b, 0xeae: 0x6c, 0xeaf: 0x6d,
+	0xeb0: 0x6e, 0xeb1: 0x6f, 0xeb3: 0x70, 0xeb4: 0x71, 0xeb5: 0x72, 0xeb6: 0x73, 0xeb7: 0x74,
+	0xeb8: 0x75, 0xeb9: 0x76, 0xeba: 0x77, 0xebb: 0x78, 0xebc: 0x79, 0xebd: 0x7a, 0xebe: 0x7b, 0xebf: 0x7c,
+	// Block 0x3b, offset 0xec0
+	0xec2: 0x01, 0xec3: 0x02, 0xec4: 0x03, 0xec5: 0x04, 0xec6: 0x05, 0xec7: 0x06,
+	0xec8: 0x07, 0xec9: 0x08, 0xeca: 0x09, 0xecb: 0x0a, 0xecc: 0x0b, 0xecd: 0x0c, 0xece: 0x0d, 0xecf: 0x0e,
+	0xed0: 0x0f, 0xed1: 0x10, 0xed2: 0x11, 0xed3: 0x12, 0xed4: 0x13, 0xed5: 0x14, 0xed6: 0x15, 0xed7: 0x1bb,
+	0xed8: 0x1bc, 0xed9: 0x1bd, 0xeda: 0x19, 0xedb: 0x1be, 0xedc: 0x1b, 0xedd: 0x1c, 0xede: 0x1d, 0xedf: 0x1e,
+	0xee0: 0x17, 0xee1: 0x38, 0xee2: 0x20, 0xee3: 0x04, 0xee4: 0x05,
+	0xeea: 0x06, 0xeed: 0x07, 0xeef: 0x1b,
+	0xef0: 0x13, 0xef3: 0x15,
+	// Block 0x3c, offset 0xf00
+	0xf00: 0x3f, 0xf01: 0x40, 0xf02: 0x41, 0xf03: 0x42, 0xf04: 0x226, 0xf05: 0x227, 0xf06: 0x228, 0xf07: 0x229,
+	0xf08: 0x47, 0xf09: 0x48, 0xf0a: 0x49, 0xf0b: 0x4a, 0xf0c: 0x4b, 0xf0d: 0x4c, 0xf0e: 0x4d, 0xf0f: 0x4e,
+	0xf10: 0x4f, 0xf11: 0x50, 0xf12: 0x51, 0xf13: 0x52, 0xf14: 0x53, 0xf15: 0x54, 0xf16: 0x55, 0xf17: 0x56,
+	0xf18: 0x57, 0xf19: 0x58, 0xf1a: 0x59, 0xf1b: 0x5a, 0xf1c: 0x5b, 0xf1d: 0x5c, 0xf1e: 0x5d, 0xf1f: 0x5e,
+	0xf20: 0x5f, 0xf21: 0x60, 0xf22: 0x61, 0xf23: 0x62, 0xf24: 0x63, 0xf25: 0x64, 0xf26: 0x65, 0xf27: 0x66,
+	0xf28: 0x67, 0xf29: 0x68, 0xf2a: 0x69, 0xf2c: 0x6a, 0xf2d: 0x6b, 0xf2e: 0x6c, 0xf2f: 0x6d,
+	0xf30: 0x6e, 0xf31: 0x6f, 0xf33: 0x70, 0xf34: 0x71, 0xf35: 0x72, 0xf36: 0x73, 0xf37: 0x74,
+	0xf38: 0x75, 0xf39: 0x76, 0xf3a: 0x77, 0xf3b: 0x78, 0xf3c: 0x79, 0xf3d: 0x7a, 0xf3e: 0x7b, 0xf3f: 0x7c,
+	// Block 0x3d, offset 0xf40
+	0xf40: 0xba, 0xf41: 0xbb, 0xf42: 0xbc, 0xf43: 0xbd, 0xf44: 0x22a, 0xf45: 0x22b, 0xf46: 0xc0, 0xf47: 0xc1,
+	0xf48: 0xc2, 0xf49: 0x22c, 0xf4a: 0xc4, 0xf4b: 0xc5, 0xf4c: 0xc6, 0xf4d: 0xc7, 0xf4e: 0xc8, 0xf4f: 0xc9,
+	// Block 0x3e, offset 0xf80
+	0xf82: 0x01, 0xf83: 0x02, 0xf84: 0x03, 0xf85: 0x04, 0xf86: 0x05, 0xf87: 0x06,
+	0xf88: 0x07, 0xf89: 0x08, 0xf8a: 0x09, 0xf8b: 0x0a, 0xf8c: 0x0b, 0xf8d: 0x0c, 0xf8e: 0x0d, 0xf8f: 0x0e,
+	0xf90: 0x0f, 0xf91: 0x10, 0xf92: 0x11, 0xf93: 0x12, 0xf94: 0x13, 0xf95: 0x14, 0xf96: 0x15, 0xf97: 0x1bb,
+	0xf98: 0x1bc, 0xf99: 0x1bd, 0xf9a: 0x19, 0xf9b: 0x1be, 0xf9c: 0x1b, 0xf9d: 0x1c, 0xf9e: 0x1d, 0xf9f: 0x1e,
+	0xfa0: 0x17, 0xfa1: 0x3a, 0xfa2: 0x03, 0xfa3: 0x3b, 0xfa4: 0x05,
+	0xfaa: 0x06, 0xfad: 0x07, 0xfaf: 0x1b,
+	0xfb0: 0x13, 0xfb3: 0x15,
+	// Block 0x3f, offset 0xfc0
+	0xfc0: 0x3f, 0xfc1: 0x40, 0xfc2: 0x41, 0xfc3: 0x42, 0xfc4: 0x1c0, 0xfc5: 0x1c1, 0xfc6: 0x1c2, 0xfc7: 0x1c3,
+	0xfc8: 0x47, 0xfc9: 0x48, 0xfca: 0x49, 0xfcb: 0x4a, 0xfcc: 0x4b, 0xfcd: 0x4c, 0xfce: 0x4d, 0xfcf: 0x4e,
+	0xfd0: 0x4f, 0xfd1: 0x50, 0xfd2: 0x51, 0xfd3: 0x52, 0xfd4: 0x53, 0xfd5: 0x54, 0xfd6: 0x55, 0xfd7: 0x56,
+	0xfd8: 0x57, 0xfd9: 0x58, 0xfda: 0x59, 0xfdb: 0x5a, 0xfdc: 0x5b, 0xfdd: 0x5c, 0xfde: 0x5d, 0xfdf: 0x5e,
+	0xfe0: 0x5f, 0xfe1: 0x60, 0xfe2: 0x61, 0xfe3: 0x62, 0xfe4: 0x63, 0xfe5: 0x64, 0xfe6: 0x65, 0xfe7: 0x66,
+	0xfe8: 0x67, 0xfe9: 0x68, 0xfea: 0x69, 0xfec: 0x6a, 0xfed: 0x6b, 0xfee: 0x6c, 0xfef: 0x6d,
+	0xff0: 0x6e, 0xff1: 0x6f, 0xff3: 0x70, 0xff4: 0x71, 0xff5: 0x72, 0xff6: 0x1eb, 0xff7: 0x74,
+	0xff8: 0x75, 0xff9: 0x238, 0xffa: 0x239, 0xffb: 0x23a, 0xffc: 0x79, 0xffd: 0x7a, 0xffe: 0x7b, 0xfff: 0x7c,
+	// Block 0x40, offset 0x1000
+	0x1000: 0x7d, 0x1001: 0x7e, 0x1002: 0x7f, 0x1003: 0x80, 0x1004: 0x203, 0x1005: 0x82, 0x1006: 0x83, 0x1007: 0x84,
+	0x1008: 0x85, 0x1009: 0x1c9, 0x100a: 0x87, 0x100b: 0x88, 0x100c: 0x89, 0x100d: 0x8a, 0x100e: 0x8b, 0x100f: 0x8c,
+	0x1010: 0x8d, 0x1011: 0x8e, 0x1012: 0x8f, 0x1013: 0x90, 0x1014: 0x91, 0x1015: 0x92, 0x1016: 0x93, 0x1017: 0x94,
+	0x1018: 0x95, 0x1019: 0x96, 0x101a: 0x97, 0x101b: 0x98, 0x101c: 0x99, 0x101d: 0x9a, 0x101e: 0x9b, 0x101f: 0x9c,
+	0x1020: 0x9d, 0x1021: 0x9e, 0x1022: 0x9f, 0x1023: 0xa0, 0x1024: 0xa1, 0x1025: 0xa2, 0x1026: 0xa3, 0x1027: 0xa4,
+	0x1028: 0xa5, 0x1029: 0xa6, 0x102a: 0xa7, 0x102b: 0xa8, 0x102c: 0xa9, 0x102d: 0xaa,
+	0x1030: 0xab, 0x1031: 0xac, 0x1032: 0xad, 0x1033: 0xae, 0x1034: 0xaf, 0x1035: 0xb0, 0x1036: 0xb1, 0x1037: 0xb2,
+	0x1038: 0xb3, 0x103a: 0xb4, 0x103b: 0xb5, 0x103c: 0xb6, 0x103d: 0xb7, 0x103e: 0xb8, 0x103f: 0xb9,
+	// Block 0x41, offset 0x1040
+	0x1042: 0x01, 0x1043: 0x231, 0x1044: 0x232, 0x1045: 0x233, 0x1046: 0x234, 0x1047: 0x235,
+	0x1048: 0x236, 0x1049: 0x08, 0x104a: 0x237, 0x104b: 0x0a, 0x104c: 0x0b, 0x104d: 0x0c, 0x104e: 0x0d, 0x104f: 0x0e,
+	0x1050: 0x0f, 0x1051: 0x10, 0x1052: 0x11, 0x1053: 0x12, 0x1054: 0x13, 0x1055: 0x14, 0x1056: 0x15, 0x1057: 0x1bb,
+	0x1058: 0x1bc, 0x1059: 0x1bd, 0x105a: 0x19, 0x105b: 0x1be, 0x105c: 0x1b, 0x105d: 0x1c, 0x105e: 0x1d, 0x105f: 0x1e,
+	0x1060: 0x17, 0x1061: 0x3d, 0x1062: 0x3e, 0x1063: 0x04, 0x1064: 0x05,
+	0x106a: 0x06, 0x106d: 0x07, 0x106f: 0x1b,
+	0x1070: 0x13, 0x1073: 0x15,
+	// Block 0x42, offset 0x1080
+	0x1080: 0x3f, 0x1081: 0x40, 0x1082: 0x41, 0x1083: 0x42, 0x1084: 0x1c0, 0x1085: 0x1c1, 0x1086: 0x1c2, 0x1087: 0x1c3,
+	0x1088: 0x47, 0x1089: 0x48, 0x108a: 0x49, 0x108b: 0x4a, 0x108c: 0x4b, 0x108d: 0x4c, 0x108e: 0x4d, 0x108f: 0x4e,
+	0x1090: 0x4f, 0x1091: 0x50, 0x1092: 0x51, 0x1093: 0x52, 0x1094: 0x53, 0x1095: 0x54, 0x1096: 0x55, 0x1097: 0x56,
+	0x1098: 0x57, 0x1099: 0x58, 0x109a: 0x59, 0x109b: 0x5a, 0x109c: 0x5b, 0x109d: 0x5c, 0x109e: 0x5d, 0x109f: 0x5e,
+	0x10a0: 0x5f, 0x10a1: 0x60, 0x10a2: 0x61, 0x10a3: 0x62, 0x10a4: 0x63, 0x10a5: 0x64, 0x10a6: 0x65, 0x10a7: 0x66,
+	0x10a8: 0x67, 0x10a9: 0x68, 0x10aa: 0x69, 0x10ac: 0x6a, 0x10ad: 0x6b, 0x10ae: 0x6c, 0x10af: 0x6d,
+	0x10b0: 0x6e, 0x10b1: 0x6f, 0x10b3: 0x70, 0x10b4: 0x71, 0x10b5: 0x72, 0x10b6: 0x73, 0x10b7: 0x74,
+	0x10b8: 0x1e0, 0x10b9: 0x1e1, 0x10ba: 0x1e2, 0x10bb: 0x241, 0x10bc: 0x79, 0x10bd: 0x7a, 0x10be: 0x7b, 0x10bf: 0x7c,
+	// Block 0x43, offset 0x10c0
+	0x10c2: 0x01, 0x10c3: 0x23d, 0x10c4: 0x23e, 0x10c5: 0x23f, 0x10c6: 0x05, 0x10c7: 0x240,
+	0x10c8: 0x07, 0x10c9: 0x08, 0x10ca: 0x09, 0x10cb: 0x0a, 0x10cc: 0x0b, 0x10cd: 0x0c, 0x10ce: 0x0d, 0x10cf: 0x0e,
+	0x10d0: 0x0f, 0x10d1: 0x10, 0x10d2: 0x11, 0x10d3: 0x12, 0x10d4: 0x13, 0x10d5: 0x14, 0x10d6: 0x15, 0x10d7: 0x1bb,
+	0x10d8: 0x1bc, 0x10d9: 0x1bd, 0x10da: 0x19, 0x10db: 0x1be, 0x10dc: 0x1b, 0x10dd: 0x1c, 0x10de: 0x1d, 0x10df: 0x1e,
+	0x10e0: 0x17, 0x10e1: 0x40, 0x10e2: 0x20, 0x10e3: 0x04, 0x10e4: 0x05,
+	0x10ea: 0x06, 0x10ed: 0x07, 0x10ef: 0x1b,
+	0x10f0: 0x13, 0x10f3: 0x15,
+	// Block 0x44, offset 0x1100
+	0x1100: 0x3f, 0x1101: 0x40, 0x1102: 0x41, 0x1103: 0x42, 0x1104: 0x1c0, 0x1105: 0x1c1, 0x1106: 0x1c2, 0x1107: 0x1c3,
+	0x1108: 0x47, 0x1109: 0x48, 0x110a: 0x49, 0x110b: 0x4a, 0x110c: 0x4b, 0x110d: 0x4c, 0x110e: 0x4d, 0x110f: 0x4e,
+	0x1110: 0x4f, 0x1111: 0x50, 0x1112: 0x51, 0x1113: 0x52, 0x1114: 0x53, 0x1115: 0x54, 0x1116: 0x55, 0x1117: 0x56,
+	0x1118: 0x57, 0x1119: 0x58, 0x111a: 0x59, 0x111b: 0x5a, 0x111c: 0x5b, 0x111d: 0x5c, 0x111e: 0x5d, 0x111f: 0x5e,
+	0x1120: 0x5f, 0x1121: 0x60, 0x1122: 0x61, 0x1123: 0x62, 0x1124: 0x63, 0x1125: 0x64, 0x1126: 0x65, 0x1127: 0x66,
+	0x1128: 0x67, 0x1129: 0x68, 0x112a: 0x69, 0x112c: 0x6a, 0x112d: 0x6b, 0x112e: 0x6c, 0x112f: 0x6d,
+	0x1130: 0x6e, 0x1131: 0x6f, 0x1133: 0x70, 0x1134: 0x71, 0x1135: 0x72, 0x1136: 0x1eb, 0x1137: 0x74,
+	0x1138: 0x75, 0x1139: 0x248, 0x113a: 0x201, 0x113b: 0x249, 0x113c: 0x79, 0x113d: 0x7a, 0x113e: 0x7b, 0x113f: 0x7c,
+	// Block 0x45, offset 0x1140
+	0x1142: 0x01, 0x1143: 0x244, 0x1144: 0x245, 0x1145: 0x246, 0x1146: 0x05, 0x1147: 0x1fe,
+	0x1148: 0x247, 0x1149: 0x08, 0x114a: 0x09, 0x114b: 0x0a, 0x114c: 0x0b, 0x114d: 0x0c, 0x114e: 0x0d, 0x114f: 0x0e,
+	0x1150: 0x0f, 0x1151: 0x10, 0x1152: 0x11, 0x1153: 0x12, 0x1154: 0x13, 0x1155: 0x14, 0x1156: 0x15, 0x1157: 0x1bb,
+	0x1158: 0x1bc, 0x1159: 0x1bd, 0x115a: 0x19, 0x115b: 0x1be, 0x115c: 0x1b, 0x115d: 0x1c, 0x115e: 0x1d, 0x115f: 0x1e,
+	0x1160: 0x17, 0x1161: 0x42, 0x1162: 0x2c, 0x1163: 0x2d, 0x1164: 0x05,
+	0x116a: 0x06, 0x116d: 0x07, 0x116f: 0x1b,
+	0x1170: 0x2f, 0x1173: 0x15,
+	// Block 0x46, offset 0x1180
+	0x1180: 0x3f, 0x1181: 0x40, 0x1182: 0x41, 0x1183: 0x42, 0x1184: 0x1c0, 0x1185: 0x1c1, 0x1186: 0x1c2, 0x1187: 0x1c3,
+	0x1188: 0x47, 0x1189: 0x48, 0x118a: 0x49, 0x118b: 0x4a, 0x118c: 0x4b, 0x118d: 0x4c, 0x118e: 0x4d, 0x118f: 0x4e,
+	0x1190: 0x4f, 0x1191: 0x50, 0x1192: 0x51, 0x1193: 0x52, 0x1194: 0x53, 0x1195: 0x54, 0x1196: 0x55, 0x1197: 0x56,
+	0x1198: 0x57, 0x1199: 0x58, 0x119a: 0x59, 0x119b: 0x5a, 0x119c: 0x5b, 0x119d: 0x5c, 0x119e: 0x5d, 0x119f: 0x5e,
+	0x11a0: 0x5f, 0x11a1: 0x60, 0x11a2: 0x61, 0x11a3: 0x62, 0x11a4: 0x63, 0x11a5: 0x64, 0x11a6: 0x65, 0x11a7: 0x66,
+	0x11a8: 0x67, 0x11a9: 0x68, 0x11aa: 0x69, 0x11ac: 0x6a, 0x11ad: 0x6b, 0x11ae: 0x6c, 0x11af: 0x6d,
+	0x11b0: 0x6e, 0x11b1: 0x6f, 0x11b3: 0x70, 0x11b4: 0x71, 0x11b5: 0x72, 0x11b6: 0x73, 0x11b7: 0x74,
+	0x11b8: 0x1c4, 0x11b9: 0x1c5, 0x11ba: 0x77, 0x11bb: 0x1c7, 0x11bc: 0x79, 0x11bd: 0x7a, 0x11be: 0x7b, 0x11bf: 0x7c,
+	// Block 0x47, offset 0x11c0
+	0x11c0: 0x7d, 0x11c1: 0x7e, 0x11c2: 0x7f, 0x11c3: 0x80, 0x11c4: 0x81, 0x11c5: 0x24c, 0x11c6: 0x83, 0x11c7: 0x84,
+	0x11c8: 0x85, 0x11c9: 0x1c9, 0x11ca: 0x87, 0x11cb: 0x88, 0x11cc: 0x89, 0x11cd: 0x8a, 0x11ce: 0x8b, 0x11cf: 0x8c,
+	0x11d0: 0x8d, 0x11d1: 0x8e, 0x11d2: 0x8f, 0x11d3: 0x90, 0x11d4: 0x91, 0x11d5: 0x92, 0x11d6: 0x93, 0x11d7: 0x94,
+	0x11d8: 0x95, 0x11d9: 0x96, 0x11da: 0x97, 0x11db: 0x98, 0x11dc: 0x99, 0x11dd: 0x9a, 0x11de: 0x9b, 0x11df: 0x9c,
+	0x11e0: 0x9d, 0x11e1: 0x9e, 0x11e2: 0x9f, 0x11e3: 0xa0, 0x11e4: 0xa1, 0x11e5: 0xa2, 0x11e6: 0xa3, 0x11e7: 0xa4,
+	0x11e8: 0xa5, 0x11e9: 0xa6, 0x11ea: 0xa7, 0x11eb: 0xa8, 0x11ec: 0xa9, 0x11ed: 0xaa,
+	0x11f0: 0xab, 0x11f1: 0xac, 0x11f2: 0xad, 0x11f3: 0xae, 0x11f4: 0xaf, 0x11f5: 0xb0, 0x11f6: 0xb1, 0x11f7: 0xb2,
+	0x11f8: 0xb3, 0x11fa: 0xb4, 0x11fb: 0xb5, 0x11fc: 0xb6, 0x11fd: 0xb7, 0x11fe: 0xb8, 0x11ff: 0xb9,
+	// Block 0x48, offset 0x1200
+	0x1200: 0xba, 0x1201: 0xbb, 0x1202: 0xbc, 0x1203: 0xbd, 0x1204: 0xbe, 0x1205: 0xbf, 0x1206: 0xc0, 0x1207: 0xc1,
+	0x1208: 0xc2, 0x1209: 0xc3, 0x120a: 0xc4, 0x120b: 0xc5, 0x120c: 0xc6, 0x120d: 0x1cb, 0x120e: 0xc8, 0x120f: 0xc9,
+	// Block 0x49, offset 0x1240
+	0x1240: 0x18b, 0x1241: 0x18c, 0x1242: 0x18d, 0x1243: 0x18e, 0x1244: 0x24d, 0x1245: 0x190, 0x1246: 0x191, 0x1247: 0x192,
+	0x1248: 0x193, 0x1249: 0x194, 0x124c: 0x195, 0x124d: 0x196, 0x124e: 0x197, 0x124f: 0x198,
+	0x1250: 0x199, 0x1251: 0x19a, 0x1252: 0x19b, 0x1253: 0x19c, 0x1254: 0x19d, 0x1255: 0x19e, 0x1257: 0x19f,
+	0x1258: 0x1a0, 0x1259: 0x1a1, 0x125a: 0x1a2, 0x125b: 0x1a3, 0x125c: 0x1a4, 0x125d: 0x1a5,
+	// Block 0x4a, offset 0x1280
+	0x1290: 0x09, 0x1291: 0x0a, 0x1292: 0x0b, 0x1293: 0x0c, 0x1296: 0x0d,
+	0x129b: 0x0e, 0x129d: 0x0f, 0x129e: 0x10, 0x129f: 0x47,
+	0x12af: 0x12,
+	// Block 0x4b, offset 0x12c0
+	0x12c2: 0x01, 0x12c3: 0x1b4, 0x12c4: 0x1b5, 0x12c5: 0x1b6, 0x12c6: 0x05, 0x12c7: 0x1b8,
+	0x12c8: 0x1b9, 0x12c9: 0x08, 0x12ca: 0x09, 0x12cb: 0x0a, 0x12cc: 0x0b, 0x12cd: 0x0c, 0x12ce: 0x0d, 0x12cf: 0x0e,
+	0x12d0: 0x0f, 0x12d1: 0x10, 0x12d2: 0x11, 0x12d3: 0x12, 0x12d4: 0x13, 0x12d5: 0x14, 0x12d6: 0x15, 0x12d7: 0x1bb,
+	0x12d8: 0x1bc, 0x12d9: 0x1bd, 0x12da: 0x19, 0x12db: 0x1be, 0x12dc: 0x1b, 0x12dd: 0x1c, 0x12de: 0x1d, 0x12df: 0x1e,
+	0x12e0: 0x17, 0x12e1: 0x44, 0x12e2: 0x45, 0x12e3: 0x46, 0x12e4: 0x05,
+	0x12ea: 0x06, 0x12ed: 0x07, 0x12ef: 0x1b,
+	0x12f0: 0x48, 0x12f3: 0x15,
+}
+
+// mainCTEntries: 248 entries, 992 bytes
+var mainCTEntries = [248]struct{ l, h, n, i uint8 }{
+	{0xCE, 0x1, 1, 255},
+	{0xC2, 0x0, 1, 255},
+	{0xB7, 0xB7, 0, 1},
+	{0x87, 0x87, 0, 2},
+	{0xCC, 0x0, 2, 255},
+	{0x88, 0x88, 0, 2},
+	{0x86, 0x86, 0, 1},
+	{0xCC, 0x0, 1, 255},
+	{0x88, 0x88, 0, 1},
+	{0xCD, 0x1, 1, 255},
+	{0xCC, 0x0, 1, 255},
+	{0x81, 0x81, 0, 1},
+	{0x81, 0x81, 0, 2},
+	{0xCC, 0x0, 1, 255},
+	{0x86, 0x86, 0, 1},
+	{0xCC, 0x0, 3, 255},
+	{0x8B, 0x8B, 0, 3},
+	{0x88, 0x88, 0, 2},
+	{0x86, 0x86, 0, 1},
+	{0xCC, 0x0, 1, 255},
+	{0x8F, 0x8F, 0, 1},
+	{0xD9, 0x0, 1, 255},
+	{0x93, 0x95, 0, 1},
+	{0xD9, 0x0, 1, 255},
+	{0x94, 0x94, 0, 1},
+	{0xE0, 0x0, 2, 255},
+	{0xA7, 0x1, 1, 255},
+	{0xA6, 0x0, 1, 255},
+	{0xBE, 0xBE, 0, 1},
+	{0x97, 0x97, 0, 2},
+	{0xE0, 0x0, 2, 255},
+	{0xAD, 0x1, 1, 255},
+	{0xAC, 0x0, 1, 255},
+	{0xBE, 0xBE, 0, 1},
+	{0x96, 0x97, 0, 2},
+	{0xE0, 0x0, 1, 255},
+	{0xAF, 0x0, 1, 255},
+	{0x97, 0x97, 0, 1},
+	{0xE0, 0x0, 2, 255},
+	{0xAF, 0x1, 1, 255},
+	{0xAE, 0x0, 1, 255},
+	{0xBE, 0xBE, 0, 1},
+	{0x97, 0x97, 0, 2},
+	{0xE0, 0x0, 1, 255},
+	{0xAE, 0x0, 1, 255},
+	{0xBE, 0xBE, 0, 1},
+	{0xE0, 0x0, 1, 255},
+	{0xB1, 0x0, 1, 255},
+	{0x96, 0x96, 0, 1},
+	{0xE0, 0x0, 1, 255},
+	{0xB3, 0x0, 1, 255},
+	{0x95, 0x95, 0, 1},
+	{0xE0, 0x0, 1, 255},
+	{0xB3, 0x0, 2, 255},
+	{0x95, 0x96, 0, 3},
+	{0x82, 0x0, 1, 2},
+	{0xE0, 0x0, 1, 255},
+	{0xB3, 0x0, 1, 255},
+	{0x95, 0x95, 0, 1},
+	{0xE0, 0x0, 2, 255},
+	{0xB5, 0x1, 1, 255},
+	{0xB4, 0x0, 1, 255},
+	{0xBE, 0xBE, 0, 1},
+	{0x97, 0x97, 0, 2},
+	{0xE0, 0x0, 1, 255},
+	{0xB4, 0x0, 1, 255},
+	{0xBE, 0xBE, 0, 1},
+	{0xE0, 0x0, 1, 255},
+	{0xB7, 0x0, 3, 255},
+	{0x9F, 0x9F, 0, 4},
+	{0x8F, 0x0, 1, 3},
+	{0x8A, 0x8A, 0, 2},
+	{0xE0, 0x0, 1, 255},
+	{0xB7, 0x0, 1, 255},
+	{0x8A, 0x8A, 0, 1},
+	{0xE0, 0x0, 1, 255},
+	{0xB7, 0x0, 1, 255},
+	{0x8A, 0x8A, 0, 1},
+	{0xE0, 0x0, 1, 255},
+	{0xB8, 0x0, 1, 255},
+	{0x81, 0xAE, 0, 1},
+	{0xE0, 0x0, 1, 255},
+	{0xB8, 0x0, 1, 255},
+	{0xB2, 0xB2, 0, 1},
+	{0xE0, 0x0, 2, 255},
+	{0xBB, 0xC, 1, 255},
+	{0xBA, 0x0, 12, 255},
+	{0xAD, 0xAE, 0, 26},
+	{0xAA, 0xAB, 0, 24},
+	{0xA7, 0xA7, 0, 23},
+	{0xA5, 0xA5, 0, 22},
+	{0xA1, 0xA3, 0, 19},
+	{0x99, 0x9F, 0, 12},
+	{0x94, 0x97, 0, 8},
+	{0x8D, 0x8D, 0, 7},
+	{0x8A, 0x8A, 0, 6},
+	{0x87, 0x88, 0, 4},
+	{0x84, 0x84, 0, 3},
+	{0x81, 0x82, 0, 1},
+	{0x9C, 0x9F, 0, 28},
+	{0xE0, 0x0, 1, 255},
+	{0xBA, 0x0, 1, 255},
+	{0xB2, 0xB2, 0, 1},
+	{0xEA, 0x0, 1, 255},
+	{0xAA, 0x0, 1, 255},
+	{0x80, 0xAF, 0, 1},
+	{0xE0, 0x0, 2, 255},
+	{0xBE, 0x7, 1, 255},
+	{0xBD, 0x0, 1, 255},
+	{0xB1, 0x0, 1, 255},
+	{0xE0, 0x0, 2, 255},
+	{0xBE, 0x2, 1, 255},
+	{0xBD, 0x0, 2, 255},
+	{0xB4, 0xB4, 0, 2},
+	{0xB2, 0xB2, 0, 1},
+	{0x80, 0x80, 0, 3},
+	{0x80, 0x81, 0, 4},
+	{0xE0, 0x0, 2, 255},
+	{0xBE, 0x2, 1, 255},
+	{0xBD, 0x0, 2, 255},
+	{0xB4, 0xB4, 0, 2},
+	{0xB2, 0xB2, 0, 1},
+	{0x80, 0x80, 0, 3},
+	{0xE1, 0x0, 1, 255},
+	{0x80, 0x0, 1, 255},
+	{0xAE, 0xAE, 0, 1},
+	{0xF0, 0x0, 1, 255},
+	{0x91, 0x0, 1, 255},
+	{0x84, 0x0, 1, 255},
+	{0xA7, 0xA7, 0, 1},
+	{0xE1, 0x0, 1, 255},
+	{0xAC, 0x0, 1, 255},
+	{0xB5, 0xB5, 0, 1},
+	{0xCC, 0x0, 1, 255},
+	{0xB8, 0xB8, 0, 1},
+	{0xCC, 0x0, 1, 255},
+	{0xA7, 0xA7, 0, 1},
+	{0xCC, 0x0, 1, 255},
+	{0x87, 0x87, 0, 1},
+	{0xCC, 0x0, 1, 255},
+	{0x81, 0x81, 0, 1},
+	{0xCC, 0x0, 1, 255},
+	{0x8C, 0x8C, 0, 1},
+	{0xCC, 0x0, 2, 255},
+	{0x8C, 0x8C, 0, 2},
+	{0x81, 0x81, 0, 1},
+	{0xCC, 0x0, 2, 255},
+	{0x8A, 0x8A, 0, 2},
+	{0x81, 0x81, 0, 1},
+	{0xCC, 0x0, 2, 255},
+	{0x8B, 0x8B, 0, 2},
+	{0x88, 0x88, 0, 1},
+	{0xCC, 0x0, 2, 255},
+	{0x61, 0x61, 0, 3},
+	{0x8A, 0x8A, 0, 2},
+	{0x88, 0x88, 0, 1},
+	{0xCC, 0x0, 2, 255},
+	{0x61, 0x61, 0, 4},
+	{0x41, 0x41, 0, 3},
+	{0x8A, 0x8A, 0, 2},
+	{0x88, 0x88, 0, 1},
+	{0xCC, 0x0, 1, 255},
+	{0xA8, 0xA8, 0, 1},
+	{0xCC, 0x0, 1, 255},
+	{0x83, 0x83, 0, 1},
+	{0xCC, 0x0, 2, 255},
+	{0x8A, 0x8A, 0, 2},
+	{0x88, 0x88, 0, 1},
+	{0xCC, 0x0, 3, 255},
+	{0x8B, 0x8B, 0, 3},
+	{0x88, 0x88, 0, 2},
+	{0x83, 0x83, 0, 1},
+	{0xC5, 0x2, 1, 255},
+	{0x7A, 0x0, 1, 255},
+	{0xCC, 0x0, 1, 255},
+	{0x8C, 0x8C, 0, 1},
+	{0xBE, 0xBE, 0, 2},
+	{0xC5, 0x4, 1, 255},
+	{0x7A, 0x2, 1, 255},
+	{0x5A, 0x0, 1, 255},
+	{0xCC, 0x0, 1, 255},
+	{0x8C, 0x8C, 0, 1},
+	{0xCC, 0x0, 1, 255},
+	{0x8C, 0x8C, 0, 2},
+	{0xBD, 0xBE, 0, 3},
+	{0xCE, 0x1, 1, 255},
+	{0xC2, 0x0, 1, 255},
+	{0x6A, 0x6A, 0, 3},
+	{0xB7, 0xB7, 0, 1},
+	{0x87, 0x87, 0, 2},
+	{0xCE, 0x1, 1, 255},
+	{0xC2, 0x0, 1, 255},
+	{0x6A, 0x6A, 0, 4},
+	{0x4A, 0x4A, 0, 3},
+	{0xB7, 0xB7, 0, 1},
+	{0x87, 0x87, 0, 2},
+	{0x6A, 0x6A, 0, 1},
+	{0x6A, 0x6A, 0, 2},
+	{0x4A, 0x4A, 0, 1},
+	{0xCC, 0x0, 3, 255},
+	{0x8A, 0x8A, 0, 3},
+	{0x88, 0x88, 0, 2},
+	{0x81, 0x81, 0, 1},
+	{0xCC, 0x0, 2, 255},
+	{0x88, 0x88, 0, 2},
+	{0x81, 0x81, 0, 1},
+	{0x27, 0x27, 0, 1},
+	{0xE1, 0x0, 1, 255},
+	{0x84, 0x0, 1, 255},
+	{0x80, 0x80, 0, 1},
+	{0xE1, 0x0, 1, 255},
+	{0x84, 0x0, 1, 255},
+	{0x83, 0x83, 0, 1},
+	{0xE1, 0x0, 1, 255},
+	{0x84, 0x0, 1, 255},
+	{0x87, 0x87, 0, 1},
+	{0xE1, 0x0, 1, 255},
+	{0x84, 0x0, 1, 255},
+	{0x89, 0x89, 0, 1},
+	{0xE1, 0x0, 1, 255},
+	{0x84, 0x0, 1, 255},
+	{0x8C, 0x8C, 0, 1},
+	{0xCC, 0x0, 4, 255},
+	{0x8A, 0x8A, 0, 5},
+	{0x87, 0x88, 0, 3},
+	{0x83, 0x83, 0, 2},
+	{0x81, 0x81, 0, 1},
+	{0xCC, 0x0, 2, 255},
+	{0x83, 0x83, 0, 2},
+	{0x81, 0x81, 0, 1},
+	{0xCC, 0x0, 4, 255},
+	{0xA8, 0xA8, 0, 5},
+	{0x8B, 0x8B, 0, 4},
+	{0x88, 0x88, 0, 3},
+	{0x82, 0x83, 0, 1},
+	{0xCE, 0x3, 1, 255},
+	{0xCC, 0x1, 2, 255},
+	{0xC2, 0x0, 1, 255},
+	{0xB7, 0xB7, 0, 1},
+	{0x8C, 0x8C, 0, 3},
+	{0x81, 0x81, 0, 2},
+	{0x87, 0x87, 0, 4},
+	{0xCC, 0x0, 1, 255},
+	{0x81, 0x82, 0, 1},
+	{0xCC, 0x0, 3, 255},
+	{0x8B, 0x8B, 0, 3},
+	{0x88, 0x88, 0, 2},
+	{0x82, 0x82, 0, 1},
+}
+
+// Total size of mainTable is 210136 bytes
diff --git a/go/src/golang.org/x/text/unicode/norm/Makefile b/go/src/golang.org/x/text/unicode/norm/Makefile
deleted file mode 100644
index b4f5d35..0000000
--- a/go/src/golang.org/x/text/unicode/norm/Makefile
+++ /dev/null
@@ -1,23 +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.
-
-maketables: maketables.go triegen.go
-	go build $^
-
-normregtest: normregtest.go
-	go build $^
-
-tables:	maketables
-	./maketables > tables.go
-	gofmt -w tables.go
-
-# Downloads from www.unicode.org, so not part
-# of standard test scripts.
-test: testtables regtest
-
-testtables: maketables
-	./maketables -test > data_test.go && go test -tags=test
-
-regtest: normregtest
-	./normregtest
diff --git a/go/src/golang.org/x/text/unicode/norm/maketables.go b/go/src/golang.org/x/text/unicode/norm/maketables.go
index 3524e8c..07bdff6 100644
--- a/go/src/golang.org/x/text/unicode/norm/maketables.go
+++ b/go/src/golang.org/x/text/unicode/norm/maketables.go
@@ -16,20 +16,17 @@
 	"fmt"
 	"io"
 	"log"
-	"net/http"
-	"os"
-	"regexp"
 	"sort"
 	"strconv"
 	"strings"
-	"unicode"
 
+	"golang.org/x/text/internal/gen"
 	"golang.org/x/text/internal/triegen"
 	"golang.org/x/text/internal/ucd"
 )
 
 func main() {
-	flag.Parse()
+	gen.Init()
 	loadUnicodeData()
 	compactCCC()
 	loadCompositionExclusions()
@@ -46,24 +43,18 @@
 	}
 }
 
-var url = flag.String("url",
-	"http://www.unicode.org/Public/"+unicode.Version+"/ucd/",
-	"URL of Unicode database directory")
-var tablelist = flag.String("tables",
-	"all",
-	"comma-separated list of which tables to generate; "+
-		"can be 'decomp', 'recomp', 'info' and 'all'")
-var test = flag.Bool("test",
-	false,
-	"test existing tables against DerivedNormalizationProps and generate test data for regression testing")
-var verbose = flag.Bool("verbose",
-	false,
-	"write data to stdout as it is parsed")
-var localFiles = flag.Bool("local",
-	false,
-	"data files have been copied to the current directory; for debugging only")
-
-var logger = log.New(os.Stderr, "", log.Lshortfile)
+var (
+	tablelist = flag.String("tables",
+		"all",
+		"comma-separated list of which tables to generate; "+
+			"can be 'decomp', 'recomp', 'info' and 'all'")
+	test = flag.Bool("test",
+		false,
+		"test existing tables against DerivedNormalizationProps and generate test data for regression testing")
+	verbose = flag.Bool("verbose",
+		false,
+		"write data to stdout as it is parsed")
+)
 
 const MaxChar = 0x10FFFF // anything above this shouldn't exist
 
@@ -189,27 +180,6 @@
 
 type Decomposition []rune
 
-func openReader(file string) (input io.ReadCloser) {
-	if *localFiles {
-		f, err := os.Open(file)
-		if err != nil {
-			logger.Fatal(err)
-		}
-		input = f
-	} else {
-		path := *url + file
-		resp, err := http.Get(path)
-		if err != nil {
-			logger.Fatal(err)
-		}
-		if resp.StatusCode != 200 {
-			logger.Fatal("bad GET status for "+file, resp.Status)
-		}
-		input = resp.Body
-	}
-	return
-}
-
 func parseDecomposition(s string, skipfirst bool) (a []rune, err error) {
 	decomp := strings.Split(s, " ")
 	if len(decomp) > 0 && skipfirst {
@@ -226,7 +196,7 @@
 }
 
 func loadUnicodeData() {
-	f := openReader("UnicodeData.txt")
+	f := gen.OpenUCDFile("UnicodeData.txt")
 	defer f.Close()
 	p := ucd.New(f)
 	for p.Next() {
@@ -242,7 +212,7 @@
 			if len(decmap) > 0 {
 				exp, err = parseDecomposition(decmap, true)
 				if err != nil {
-					logger.Fatalf(`%U: bad decomp |%v|: "%s"`, r, decmap, err)
+					log.Fatalf(`%U: bad decomp |%v|: "%s"`, r, decmap, err)
 				}
 				isCompat = true
 			}
@@ -261,7 +231,7 @@
 		}
 	}
 	if err := p.Err(); err != nil {
-		logger.Fatal(err)
+		log.Fatal(err)
 	}
 }
 
@@ -296,18 +266,18 @@
 // 0958    # ...
 // See http://unicode.org/reports/tr44/ for full explanation
 func loadCompositionExclusions() {
-	f := openReader("CompositionExclusions.txt")
+	f := gen.OpenUCDFile("CompositionExclusions.txt")
 	defer f.Close()
 	p := ucd.New(f)
 	for p.Next() {
 		c := &chars[p.Rune(0)]
 		if c.excludeInComp {
-			logger.Fatalf("%U: Duplicate entry in exclusions.", c.codePoint)
+			log.Fatalf("%U: Duplicate entry in exclusions.", c.codePoint)
 		}
 		c.excludeInComp = true
 	}
 	if e := p.Err(); e != nil {
-		logger.Fatal(e)
+		log.Fatal(e)
 	}
 }
 
@@ -501,29 +471,22 @@
 		if exp := c.forms[FCompatibility].expandedDecomp; len(exp) > 0 {
 			runes = exp
 		}
+		// We consider runes that combine backwards to be non-starters for the
+		// purpose of Stream-Safe Text Processing.
 		for _, r := range runes {
-			if chars[r].ccc == 0 {
+			if cr := &chars[r]; cr.ccc == 0 && !cr.forms[FCompatibility].combinesBackward {
 				break
 			}
 			c.nLeadingNonStarters++
 		}
 		for i := len(runes) - 1; i >= 0; i-- {
-			if chars[runes[i]].ccc == 0 {
+			if cr := &chars[runes[i]]; cr.ccc == 0 && !cr.forms[FCompatibility].combinesBackward {
 				break
 			}
 			c.nTrailingNonStarters++
 		}
-
-		// We consider runes that combine backwards to be non-starters for the
-		// purpose of Stream-Safe Text Processing.
-		for _, f := range c.forms {
-			if c.ccc == 0 && f.combinesBackward {
-				if len(c.forms[FCompatibility].expandedDecomp) > 0 {
-					log.Fatalf("%U: CCC==0 modifier with an expansion is not supported.", i)
-				}
-				c.nTrailingNonStarters = 1
-				c.nLeadingNonStarters = 1
-			}
+		if c.nTrailingNonStarters > 3 {
+			log.Fatalf("%U: Decomposition with more than 3 (%d) trailing modifiers (%U)", i, c.nTrailingNonStarters, runes)
 		}
 
 		if isHangul(rune(i)) {
@@ -542,19 +505,19 @@
 	}
 }
 
-func printBytes(b []byte, name string) {
-	fmt.Printf("// %s: %d bytes\n", name, len(b))
-	fmt.Printf("var %s = [...]byte {", name)
+func printBytes(w io.Writer, b []byte, name string) {
+	fmt.Fprintf(w, "// %s: %d bytes\n", name, len(b))
+	fmt.Fprintf(w, "var %s = [...]byte {", name)
 	for i, c := range b {
 		switch {
 		case i%64 == 0:
-			fmt.Printf("\n// Bytes %x - %x\n", i, i+63)
+			fmt.Fprintf(w, "\n// Bytes %x - %x\n", i, i+63)
 		case i%8 == 0:
-			fmt.Printf("\n")
+			fmt.Fprintf(w, "\n")
 		}
-		fmt.Printf("0x%.2X, ", c)
+		fmt.Fprintf(w, "0x%.2X, ", c)
 	}
-	fmt.Print("\n}\n\n")
+	fmt.Fprint(w, "\n}\n\n")
 }
 
 // See forminfo.go for format.
@@ -610,13 +573,13 @@
 	m[key][s] = true
 }
 
-func printCharInfoTables() int {
+func printCharInfoTables(w io.Writer) int {
 	mkstr := func(r rune, f *FormInfo) (int, string) {
 		d := f.expandedDecomp
 		s := string([]rune(d))
 		if max := 1 << 6; len(s) >= max {
 			const msg = "%U: too many bytes in decomposition: %d >= %d"
-			logger.Fatalf(msg, r, len(s), max)
+			log.Fatalf(msg, r, len(s), max)
 		}
 		head := uint8(len(s))
 		if f.quickCheck[MComposed] != QCYes {
@@ -631,11 +594,11 @@
 		tccc := ccc(d[len(d)-1])
 		cc := ccc(r)
 		if cc != 0 && lccc == 0 && tccc == 0 {
-			logger.Fatalf("%U: trailing and leading ccc are 0 for non-zero ccc %d", r, cc)
+			log.Fatalf("%U: trailing and leading ccc are 0 for non-zero ccc %d", r, cc)
 		}
 		if tccc < lccc && lccc != 0 {
 			const msg = "%U: lccc (%d) must be <= tcc (%d)"
-			logger.Fatalf(msg, r, lccc, tccc)
+			log.Fatalf(msg, r, lccc, tccc)
 		}
 		index := normalDecomp
 		nTrail := chars[r].nTrailingNonStarters
@@ -652,13 +615,13 @@
 			if lccc > 0 {
 				s += string([]byte{lccc})
 				if index == firstCCC {
-					logger.Fatalf("%U: multi-segment decomposition not supported for decompositions with leading CCC != 0", r)
+					log.Fatalf("%U: multi-segment decomposition not supported for decompositions with leading CCC != 0", r)
 				}
 				index = firstLeadingCCC
 			}
 			if cc != lccc {
 				if cc != 0 {
-					logger.Fatalf("%U: for lccc != ccc, expected ccc to be 0; was %d", r, cc)
+					log.Fatalf("%U: for lccc != ccc, expected ccc to be 0; was %d", r, cc)
 				}
 				index = firstCCCZeroExcept
 			}
@@ -680,7 +643,7 @@
 				continue
 			}
 			if f.combinesBackward {
-				logger.Fatalf("%U: combinesBackward and decompose", c.codePoint)
+				log.Fatalf("%U: combinesBackward and decompose", c.codePoint)
 			}
 			index, s := mkstr(c.codePoint, &f)
 			decompSet.insert(index, s)
@@ -691,7 +654,7 @@
 	size := 0
 	positionMap := make(map[string]uint16)
 	decompositions.WriteString("\000")
-	fmt.Println("const (")
+	fmt.Fprintln(w, "const (")
 	for i, m := range decompSet {
 		sa := []string{}
 		for s := range m {
@@ -704,13 +667,13 @@
 			positionMap[s] = uint16(p)
 		}
 		if cname[i] != "" {
-			fmt.Printf("%s = 0x%X\n", cname[i], decompositions.Len())
+			fmt.Fprintf(w, "%s = 0x%X\n", cname[i], decompositions.Len())
 		}
 	}
-	fmt.Println("maxDecomp = 0x8000")
-	fmt.Println(")")
+	fmt.Fprintln(w, "maxDecomp = 0x8000")
+	fmt.Fprintln(w, ")")
 	b := decompositions.Bytes()
-	printBytes(b, "decomps")
+	printBytes(w, b, "decomps")
 	size += len(b)
 
 	varnames := []string{"nfc", "nfkc"}
@@ -726,7 +689,7 @@
 				if c.ccc != ccc(d[0]) {
 					// We assume the lead ccc of a decomposition !=0 in this case.
 					if ccc(d[0]) == 0 {
-						logger.Fatalf("Expected leading CCC to be non-zero; ccc is %d", c.ccc)
+						log.Fatalf("Expected leading CCC to be non-zero; ccc is %d", c.ccc)
 					}
 				}
 			} else if c.nLeadingNonStarters > 0 && len(f.expandedDecomp) == 0 && c.ccc == 0 && !f.combinesBackward {
@@ -737,9 +700,9 @@
 				trie.Insert(c.codePoint, uint64(0x8000|v))
 			}
 		}
-		sz, err := trie.Gen(os.Stdout, triegen.Compact(&normCompacter{name: varnames[i]}))
+		sz, err := trie.Gen(w, triegen.Compact(&normCompacter{name: varnames[i]}))
 		if err != nil {
-			logger.Fatal(err)
+			log.Fatal(err)
 		}
 		size += sz
 	}
@@ -755,30 +718,9 @@
 	return false
 }
 
-// Extract the version number from the URL.
-func version() string {
-	// From http://www.unicode.org/standard/versions/#Version_Numbering:
-	// for the later Unicode versions, data files are located in
-	// versioned directories.
-	fields := strings.Split(*url, "/")
-	for _, f := range fields {
-		if match, _ := regexp.MatchString(`[0-9]\.[0-9]\.[0-9]`, f); match {
-			return f
-		}
-	}
-	logger.Fatal("unknown version")
-	return "Unknown"
-}
-
-const fileHeader = `// Generated by running
-//	maketables --tables=%s --url=%s
-// DO NOT EDIT
-
-package norm
-
-`
-
 func makeTables() {
+	w := &bytes.Buffer{}
+
 	size := 0
 	if *tablelist == "" {
 		return
@@ -787,7 +729,6 @@
 	if *tablelist == "all" {
 		list = []string{"recomp", "info"}
 	}
-	fmt.Printf(fileHeader, *tablelist, *url)
 
 	// Compute maximum decomposition size.
 	max := 0
@@ -797,30 +738,30 @@
 		}
 	}
 
-	fmt.Println("const (")
-	fmt.Println("\t// Version is the Unicode edition from which the tables are derived.")
-	fmt.Printf("\tVersion = %q\n", version())
-	fmt.Println()
-	fmt.Println("\t// MaxTransformChunkSize indicates the maximum number of bytes that Transform")
-	fmt.Println("\t// may need to write atomically for any Form. Making a destination buffer at")
-	fmt.Println("\t// least this size ensures that Transform can always make progress and that")
-	fmt.Println("\t// the user does not need to grow the buffer on an ErrShortDst.")
-	fmt.Printf("\tMaxTransformChunkSize = %d+maxNonStarters*4\n", len(string(0x034F))+max)
-	fmt.Println(")\n")
+	fmt.Fprintln(w, "const (")
+	fmt.Fprintln(w, "\t// Version is the Unicode edition from which the tables are derived.")
+	fmt.Fprintf(w, "\tVersion = %q\n", gen.UnicodeVersion())
+	fmt.Fprintln(w)
+	fmt.Fprintln(w, "\t// MaxTransformChunkSize indicates the maximum number of bytes that Transform")
+	fmt.Fprintln(w, "\t// may need to write atomically for any Form. Making a destination buffer at")
+	fmt.Fprintln(w, "\t// least this size ensures that Transform can always make progress and that")
+	fmt.Fprintln(w, "\t// the user does not need to grow the buffer on an ErrShortDst.")
+	fmt.Fprintf(w, "\tMaxTransformChunkSize = %d+maxNonStarters*4\n", len(string(0x034F))+max)
+	fmt.Fprintln(w, ")\n")
 
 	// Print the CCC remap table.
 	size += len(cccMap)
-	fmt.Printf("var ccc = [%d]uint8{", len(cccMap))
+	fmt.Fprintf(w, "var ccc = [%d]uint8{", len(cccMap))
 	for i := 0; i < len(cccMap); i++ {
 		if i%8 == 0 {
-			fmt.Println()
+			fmt.Fprintln(w)
 		}
-		fmt.Printf("%3d, ", cccMap[uint8(i)])
+		fmt.Fprintf(w, "%3d, ", cccMap[uint8(i)])
 	}
-	fmt.Println("\n}\n")
+	fmt.Fprintln(w, "\n}\n")
 
 	if contains(list, "info") {
-		size += printCharInfoTables()
+		size += printCharInfoTables(w)
 	}
 
 	if contains(list, "recomp") {
@@ -842,20 +783,21 @@
 		}
 		sz := nrentries * 8
 		size += sz
-		fmt.Printf("// recompMap: %d bytes (entries only)\n", sz)
-		fmt.Println("var recompMap = map[uint32]rune{")
+		fmt.Fprintf(w, "// recompMap: %d bytes (entries only)\n", sz)
+		fmt.Fprintln(w, "var recompMap = map[uint32]rune{")
 		for i, c := range chars {
 			f := c.forms[FCanonical]
 			d := f.decomp
 			if !f.isOneWay && len(d) > 0 {
 				key := uint32(uint16(d[0]))<<16 + uint32(uint16(d[1]))
-				fmt.Printf("0x%.8X: 0x%.4X,\n", key, i)
+				fmt.Fprintf(w, "0x%.8X: 0x%.4X,\n", key, i)
 			}
 		}
-		fmt.Printf("}\n\n")
+		fmt.Fprintf(w, "}\n\n")
 	}
 
-	fmt.Printf("// Total size of tables: %dKB (%d bytes)\n", (size+512)/1024, size)
+	fmt.Fprintf(w, "// Total size of tables: %dKB (%d bytes)\n", (size+512)/1024, size)
+	gen.WriteGoFile("tables.go", "norm", w.Bytes())
 }
 
 func printChars() {
@@ -890,10 +832,16 @@
 				continue
 			}
 			if a, b := c.nLeadingNonStarters > 0, (c.ccc > 0 || f.combinesBackward); a != b {
-				// We accept these two runes to be treated differently (it only affects
-				// segment breaking in iteration, most likely on inproper use), but
+				// We accept these runes to be treated differently (it only affects
+				// segment breaking in iteration, most likely on improper use), but
 				// reconsider if more characters are added.
-				if i != 0xFF9E && i != 0xFF9F {
+				// U+FF9E HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;;;;
+				// U+FF9F HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;;;;
+				// U+3133 HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
+				// U+318E HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
+				// U+FFA3 HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
+				// U+FFDC HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
+				if i != 0xFF9E && i != 0xFF9F && !(0x3133 <= i && i <= 0x318E) && !(0xFFA3 <= i && i <= 0xFFDC) {
 					log.Fatalf("%U: nLead was %v; want %v", i, a, b)
 				}
 			}
@@ -901,7 +849,7 @@
 		nfc := c.forms[FCanonical]
 		nfkc := c.forms[FCompatibility]
 		if nfc.combinesBackward != nfkc.combinesBackward {
-			logger.Fatalf("%U: Cannot combine combinesBackward\n", c.codePoint)
+			log.Fatalf("%U: Cannot combine combinesBackward\n", c.codePoint)
 		}
 	}
 }
@@ -913,7 +861,7 @@
 // 0374          ; NFD_QC; N # ...
 // See http://unicode.org/reports/tr44/ for full explanation
 func testDerived() {
-	f := openReader("DerivedNormalizationProps.txt")
+	f := gen.OpenUCDFile("DerivedNormalizationProps.txt")
 	defer f.Close()
 	p := ucd.New(f)
 	for p.Next() {
@@ -946,12 +894,12 @@
 			log.Fatalf(`Unexpected quick check value "%s"`, p.String(2))
 		}
 		if got := c.forms[ftype].quickCheck[mode]; got != qr {
-			logger.Printf("%U: FAILED %s (was %v need %v)\n", r, qt, got, qr)
+			log.Printf("%U: FAILED %s (was %v need %v)\n", r, qt, got, qr)
 		}
 		c.forms[ftype].verified[mode] = true
 	}
 	if err := p.Err(); err != nil {
-		logger.Fatal(err)
+		log.Fatal(err)
 	}
 	// Any unspecified value must be QCYes. Verify this.
 	for i, c := range chars {
@@ -959,20 +907,14 @@
 			for k, qr := range fd.quickCheck {
 				if !fd.verified[k] && qr != QCYes {
 					m := "%U: FAIL F:%d M:%d (was %v need Yes) %s\n"
-					logger.Printf(m, i, j, k, qr, c.name)
+					log.Printf(m, i, j, k, qr, c.name)
 				}
 			}
 		}
 	}
 }
 
-var testHeader = `// Generated by running
-//   maketables --test --url=%s
-// +build test
-
-package norm
-
-const (
+var testHeader = `const (
 	Yes = iota
 	No
 	Maybe
@@ -1010,8 +952,10 @@
 		nTrail uint8
 		f      string
 	}
+
 	last := lastInfo{}
-	fmt.Printf(testHeader, *url)
+	w := &bytes.Buffer{}
+	fmt.Fprintf(w, testHeader)
 	for r, c := range chars {
 		f := c.forms[FCanonical]
 		qc, cf, d := f.quickCheck[MComposed], f.combinesForward, string(f.expandedDecomp)
@@ -1025,9 +969,10 @@
 		}
 		current := lastInfo{c.ccc, c.nLeadingNonStarters, c.nTrailingNonStarters, s}
 		if last != current {
-			fmt.Printf("\t{0x%x, %d, %d, %d, %s},\n", r, c.origCCC, c.nLeadingNonStarters, c.nTrailingNonStarters, s)
+			fmt.Fprintf(w, "\t{0x%x, %d, %d, %d, %s},\n", r, c.origCCC, c.nLeadingNonStarters, c.nTrailingNonStarters, s)
 			last = current
 		}
 	}
-	fmt.Println("}")
+	fmt.Fprintln(w, "}")
+	gen.WriteGoFile("data_test.go", "norm", w.Bytes())
 }
diff --git a/go/src/golang.org/x/text/unicode/norm/normalize.go b/go/src/golang.org/x/text/unicode/norm/normalize.go
index 7c1185f..75dbde7 100644
--- a/go/src/golang.org/x/text/unicode/norm/normalize.go
+++ b/go/src/golang.org/x/text/unicode/norm/normalize.go
@@ -2,6 +2,9 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+//go:generate go run maketables.go triegen.go
+//go:generate go run maketables.go triegen.go -test
+
 // Package norm contains types and functions for normalizing Unicode strings.
 package norm // import "golang.org/x/text/unicode/norm"
 
diff --git a/go/src/golang.org/x/text/unicode/norm/normalize_test.go b/go/src/golang.org/x/text/unicode/norm/normalize_test.go
index 643d11e..8f2eac6 100644
--- a/go/src/golang.org/x/text/unicode/norm/normalize_test.go
+++ b/go/src/golang.org/x/text/unicode/norm/normalize_test.go
@@ -113,7 +113,25 @@
 	{"\u00C0b", 2, "A\u0300"},
 	// long
 	{grave(31), 60, grave(30) + cgj},
+	{"a" + grave(31), 61, "a" + grave(30) + cgj},
+
+	// Stability tests: see http://www.unicode.org/review/pr-29.html.
+	// U+0300 COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;;;;
+	// U+0B47 ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+	// U+0B3E ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+	// U+1100 HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
+	// U+1161 HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
+	{"\u0B47\u0300\u0B3E", 8, "\u0B47\u0300\u0B3E"},
+	{"\u1100\u0300\u1161", 8, "\u1100\u0300\u1161"},
+	{"\u0B47\u0B3E", 6, "\u0B47\u0B3E"},
+	{"\u1100\u1161", 6, "\u1100\u1161"},
+
+	// U+04DA MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
+	// Sequence of decomposing characters that are starters and modifiers.
+	{"\u0d4a" + strings.Repeat("\u0d3e", 31), 90, "\u0d46" + strings.Repeat("\u0d3e", 30) + cgj},
+
 	{grave(30), 60, grave(30)},
+	// U+FF9E is a starter, but decomposes to U+3099, which is not.
 	{grave(30) + "\uff9e", 60, grave(30) + cgj},
 	// ends with incomplete UTF-8 encoding
 	{"\xCC", 0, ""},
@@ -552,6 +570,44 @@
 		"a" + rep(0x0305, maxNonStarters+4) + "\u0316",
 		"a" + rep(0x0305, maxNonStarters) + cgj + "\u0316" + rep(0x305, 4),
 	},
+
+	{ // Combine across non-blocking non-starters.
+		// U+0327 COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;
+		// U+0325 COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;
+		"", "a\u0327\u0325", "\u1e01\u0327",
+	},
+
+	{ // Jamo V+T does not combine.
+		"",
+		"\u1161\u11a8",
+		"\u1161\u11a8",
+	},
+
+	// Stability tests: see http://www.unicode.org/review/pr-29.html.
+	{"", "\u0b47\u0300\u0b3e", "\u0b47\u0300\u0b3e"},
+	{"", "\u1100\u0300\u1161", "\u1100\u0300\u1161"},
+	{"", "\u0b47\u0b3e", "\u0b4b"},
+	{"", "\u1100\u1161", "\uac00"},
+
+	// U+04DA MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
+	{ // 0d4a starts a new segment.
+		"",
+		"\u0d4a" + strings.Repeat("\u0d3e", 15) + "\u0d4a" + strings.Repeat("\u0d3e", 15),
+		"\u0d4a" + strings.Repeat("\u0d3e", 15) + "\u0d4a" + strings.Repeat("\u0d3e", 15),
+	},
+
+	{ // Split combining characters.
+		// TODO: don't insert CGJ before starters.
+		"",
+		"\u0d46" + strings.Repeat("\u0d3e", 31),
+		"\u0d4a" + strings.Repeat("\u0d3e", 29) + cgj + "\u0d3e",
+	},
+
+	{ // Split combining characters.
+		"",
+		"\u0d4a" + strings.Repeat("\u0d3e", 30),
+		"\u0d4a" + strings.Repeat("\u0d3e", 29) + cgj + "\u0d3e",
+	},
 }
 
 var appendTestsNFD = []AppendTest{
diff --git a/go/src/golang.org/x/text/unicode/norm/tables.go b/go/src/golang.org/x/text/unicode/norm/tables.go
index 932c4ec..8629cdd 100644
--- a/go/src/golang.org/x/text/unicode/norm/tables.go
+++ b/go/src/golang.org/x/text/unicode/norm/tables.go
@@ -1,6 +1,4 @@
-// Generated by running
-//	maketables --tables=all --url=http://www.unicode.org/Public/7.0.0/ucd/
-// DO NOT EDIT
+// This file was generated by go generate; DO NOT EDIT
 
 package norm
 
@@ -26,17 +24,17 @@
 }
 
 const (
-	firstMulti            = 0x18E1
-	firstCCC              = 0x2EC5
-	endMulti              = 0x2F9B
-	firstLeadingCCC       = 0x49E9
-	firstCCCZeroExcept    = 0x49FF
-	firstStarterWithNLead = 0x4A26
-	lastDecomp            = 0x4A28
+	firstMulti            = 0x1869
+	firstCCC              = 0x2C9A
+	endMulti              = 0x2F5C
+	firstLeadingCCC       = 0x4A40
+	firstCCCZeroExcept    = 0x4A56
+	firstStarterWithNLead = 0x4A7D
+	lastDecomp            = 0x4A7F
 	maxDecomp             = 0x8000
 )
 
-// decomps: 18984 bytes
+// decomps: 19071 bytes
 var decomps = [...]byte{
 	// Bytes 0 - 3f
 	0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41,
@@ -175,32 +173,15 @@
 	0xE1, 0x85, 0x97, 0x43, 0xE1, 0x85, 0x98, 0x43,
 	// Bytes 3c0 - 3ff
 	0xE1, 0x85, 0x99, 0x43, 0xE1, 0x85, 0xA0, 0x43,
-	0xE1, 0x85, 0xA1, 0x43, 0xE1, 0x85, 0xA2, 0x43,
-	0xE1, 0x85, 0xA3, 0x43, 0xE1, 0x85, 0xA4, 0x43,
-	0xE1, 0x85, 0xA5, 0x43, 0xE1, 0x85, 0xA6, 0x43,
-	0xE1, 0x85, 0xA7, 0x43, 0xE1, 0x85, 0xA8, 0x43,
-	0xE1, 0x85, 0xA9, 0x43, 0xE1, 0x85, 0xAA, 0x43,
-	0xE1, 0x85, 0xAB, 0x43, 0xE1, 0x85, 0xAC, 0x43,
-	0xE1, 0x85, 0xAD, 0x43, 0xE1, 0x85, 0xAE, 0x43,
-	// Bytes 400 - 43f
-	0xE1, 0x85, 0xAF, 0x43, 0xE1, 0x85, 0xB0, 0x43,
-	0xE1, 0x85, 0xB1, 0x43, 0xE1, 0x85, 0xB2, 0x43,
-	0xE1, 0x85, 0xB3, 0x43, 0xE1, 0x85, 0xB4, 0x43,
-	0xE1, 0x85, 0xB5, 0x43, 0xE1, 0x86, 0x84, 0x43,
-	0xE1, 0x86, 0x85, 0x43, 0xE1, 0x86, 0x88, 0x43,
-	0xE1, 0x86, 0x91, 0x43, 0xE1, 0x86, 0x92, 0x43,
-	0xE1, 0x86, 0x94, 0x43, 0xE1, 0x86, 0x9E, 0x43,
-	0xE1, 0x86, 0xA1, 0x43, 0xE1, 0x86, 0xAA, 0x43,
-	// Bytes 440 - 47f
-	0xE1, 0x86, 0xAC, 0x43, 0xE1, 0x86, 0xAD, 0x43,
-	0xE1, 0x86, 0xB0, 0x43, 0xE1, 0x86, 0xB1, 0x43,
-	0xE1, 0x86, 0xB2, 0x43, 0xE1, 0x86, 0xB3, 0x43,
-	0xE1, 0x86, 0xB4, 0x43, 0xE1, 0x86, 0xB5, 0x43,
+	0xE1, 0x86, 0x84, 0x43, 0xE1, 0x86, 0x85, 0x43,
+	0xE1, 0x86, 0x88, 0x43, 0xE1, 0x86, 0x91, 0x43,
+	0xE1, 0x86, 0x92, 0x43, 0xE1, 0x86, 0x94, 0x43,
+	0xE1, 0x86, 0x9E, 0x43, 0xE1, 0x86, 0xA1, 0x43,
 	0xE1, 0x87, 0x87, 0x43, 0xE1, 0x87, 0x88, 0x43,
 	0xE1, 0x87, 0x8C, 0x43, 0xE1, 0x87, 0x8E, 0x43,
 	0xE1, 0x87, 0x93, 0x43, 0xE1, 0x87, 0x97, 0x43,
+	// Bytes 400 - 43f
 	0xE1, 0x87, 0x99, 0x43, 0xE1, 0x87, 0x9D, 0x43,
-	// Bytes 480 - 4bf
 	0xE1, 0x87, 0x9F, 0x43, 0xE1, 0x87, 0xB1, 0x43,
 	0xE1, 0x87, 0xB2, 0x43, 0xE1, 0xB4, 0x82, 0x43,
 	0xE1, 0xB4, 0x96, 0x43, 0xE1, 0xB4, 0x97, 0x43,
@@ -208,8 +189,8 @@
 	0xE1, 0xB4, 0xA5, 0x43, 0xE1, 0xB5, 0xBB, 0x43,
 	0xE1, 0xB6, 0x85, 0x43, 0xE2, 0x80, 0x82, 0x43,
 	0xE2, 0x80, 0x83, 0x43, 0xE2, 0x80, 0x90, 0x43,
+	// Bytes 440 - 47f
 	0xE2, 0x80, 0x93, 0x43, 0xE2, 0x80, 0x94, 0x43,
-	// Bytes 4c0 - 4ff
 	0xE2, 0x82, 0xA9, 0x43, 0xE2, 0x86, 0x90, 0x43,
 	0xE2, 0x86, 0x91, 0x43, 0xE2, 0x86, 0x92, 0x43,
 	0xE2, 0x86, 0x93, 0x43, 0xE2, 0x88, 0x82, 0x43,
@@ -217,8 +198,8 @@
 	0xE2, 0x88, 0x92, 0x43, 0xE2, 0x94, 0x82, 0x43,
 	0xE2, 0x96, 0xA0, 0x43, 0xE2, 0x97, 0x8B, 0x43,
 	0xE2, 0xA6, 0x85, 0x43, 0xE2, 0xA6, 0x86, 0x43,
+	// Bytes 480 - 4bf
 	0xE2, 0xB5, 0xA1, 0x43, 0xE3, 0x80, 0x81, 0x43,
-	// Bytes 500 - 53f
 	0xE3, 0x80, 0x82, 0x43, 0xE3, 0x80, 0x88, 0x43,
 	0xE3, 0x80, 0x89, 0x43, 0xE3, 0x80, 0x8A, 0x43,
 	0xE3, 0x80, 0x8B, 0x43, 0xE3, 0x80, 0x8C, 0x43,
@@ -226,8 +207,8 @@
 	0xE3, 0x80, 0x8F, 0x43, 0xE3, 0x80, 0x90, 0x43,
 	0xE3, 0x80, 0x91, 0x43, 0xE3, 0x80, 0x92, 0x43,
 	0xE3, 0x80, 0x94, 0x43, 0xE3, 0x80, 0x95, 0x43,
+	// Bytes 4c0 - 4ff
 	0xE3, 0x80, 0x96, 0x43, 0xE3, 0x80, 0x97, 0x43,
-	// Bytes 540 - 57f
 	0xE3, 0x82, 0xA1, 0x43, 0xE3, 0x82, 0xA2, 0x43,
 	0xE3, 0x82, 0xA3, 0x43, 0xE3, 0x82, 0xA4, 0x43,
 	0xE3, 0x82, 0xA5, 0x43, 0xE3, 0x82, 0xA6, 0x43,
@@ -235,8 +216,8 @@
 	0xE3, 0x82, 0xA9, 0x43, 0xE3, 0x82, 0xAA, 0x43,
 	0xE3, 0x82, 0xAB, 0x43, 0xE3, 0x82, 0xAD, 0x43,
 	0xE3, 0x82, 0xAF, 0x43, 0xE3, 0x82, 0xB1, 0x43,
+	// Bytes 500 - 53f
 	0xE3, 0x82, 0xB3, 0x43, 0xE3, 0x82, 0xB5, 0x43,
-	// Bytes 580 - 5bf
 	0xE3, 0x82, 0xB7, 0x43, 0xE3, 0x82, 0xB9, 0x43,
 	0xE3, 0x82, 0xBB, 0x43, 0xE3, 0x82, 0xBD, 0x43,
 	0xE3, 0x82, 0xBF, 0x43, 0xE3, 0x83, 0x81, 0x43,
@@ -244,8 +225,8 @@
 	0xE3, 0x83, 0x86, 0x43, 0xE3, 0x83, 0x88, 0x43,
 	0xE3, 0x83, 0x8A, 0x43, 0xE3, 0x83, 0x8B, 0x43,
 	0xE3, 0x83, 0x8C, 0x43, 0xE3, 0x83, 0x8D, 0x43,
+	// Bytes 540 - 57f
 	0xE3, 0x83, 0x8E, 0x43, 0xE3, 0x83, 0x8F, 0x43,
-	// Bytes 5c0 - 5ff
 	0xE3, 0x83, 0x92, 0x43, 0xE3, 0x83, 0x95, 0x43,
 	0xE3, 0x83, 0x98, 0x43, 0xE3, 0x83, 0x9B, 0x43,
 	0xE3, 0x83, 0x9E, 0x43, 0xE3, 0x83, 0x9F, 0x43,
@@ -253,8 +234,8 @@
 	0xE3, 0x83, 0xA2, 0x43, 0xE3, 0x83, 0xA3, 0x43,
 	0xE3, 0x83, 0xA4, 0x43, 0xE3, 0x83, 0xA5, 0x43,
 	0xE3, 0x83, 0xA6, 0x43, 0xE3, 0x83, 0xA7, 0x43,
+	// Bytes 580 - 5bf
 	0xE3, 0x83, 0xA8, 0x43, 0xE3, 0x83, 0xA9, 0x43,
-	// Bytes 600 - 63f
 	0xE3, 0x83, 0xAA, 0x43, 0xE3, 0x83, 0xAB, 0x43,
 	0xE3, 0x83, 0xAC, 0x43, 0xE3, 0x83, 0xAD, 0x43,
 	0xE3, 0x83, 0xAF, 0x43, 0xE3, 0x83, 0xB0, 0x43,
@@ -262,8 +243,8 @@
 	0xE3, 0x83, 0xB3, 0x43, 0xE3, 0x83, 0xBB, 0x43,
 	0xE3, 0x83, 0xBC, 0x43, 0xE3, 0x92, 0x9E, 0x43,
 	0xE3, 0x92, 0xB9, 0x43, 0xE3, 0x92, 0xBB, 0x43,
+	// Bytes 5c0 - 5ff
 	0xE3, 0x93, 0x9F, 0x43, 0xE3, 0x94, 0x95, 0x43,
-	// Bytes 640 - 67f
 	0xE3, 0x9B, 0xAE, 0x43, 0xE3, 0x9B, 0xBC, 0x43,
 	0xE3, 0x9E, 0x81, 0x43, 0xE3, 0xA0, 0xAF, 0x43,
 	0xE3, 0xA1, 0xA2, 0x43, 0xE3, 0xA1, 0xBC, 0x43,
@@ -271,8 +252,8 @@
 	0xE3, 0xA4, 0x9C, 0x43, 0xE3, 0xA4, 0xBA, 0x43,
 	0xE3, 0xA8, 0xAE, 0x43, 0xE3, 0xA9, 0xAC, 0x43,
 	0xE3, 0xAB, 0xA4, 0x43, 0xE3, 0xAC, 0x88, 0x43,
+	// Bytes 600 - 63f
 	0xE3, 0xAC, 0x99, 0x43, 0xE3, 0xAD, 0x89, 0x43,
-	// Bytes 680 - 6bf
 	0xE3, 0xAE, 0x9D, 0x43, 0xE3, 0xB0, 0x98, 0x43,
 	0xE3, 0xB1, 0x8E, 0x43, 0xE3, 0xB4, 0xB3, 0x43,
 	0xE3, 0xB6, 0x96, 0x43, 0xE3, 0xBA, 0xAC, 0x43,
@@ -280,8 +261,8 @@
 	0xE3, 0xBF, 0xBC, 0x43, 0xE4, 0x80, 0x88, 0x43,
 	0xE4, 0x80, 0x98, 0x43, 0xE4, 0x80, 0xB9, 0x43,
 	0xE4, 0x81, 0x86, 0x43, 0xE4, 0x82, 0x96, 0x43,
+	// Bytes 640 - 67f
 	0xE4, 0x83, 0xA3, 0x43, 0xE4, 0x84, 0xAF, 0x43,
-	// Bytes 6c0 - 6ff
 	0xE4, 0x88, 0x82, 0x43, 0xE4, 0x88, 0xA7, 0x43,
 	0xE4, 0x8A, 0xA0, 0x43, 0xE4, 0x8C, 0x81, 0x43,
 	0xE4, 0x8C, 0xB4, 0x43, 0xE4, 0x8D, 0x99, 0x43,
@@ -289,8 +270,8 @@
 	0xE4, 0x90, 0x8B, 0x43, 0xE4, 0x91, 0xAB, 0x43,
 	0xE4, 0x94, 0xAB, 0x43, 0xE4, 0x95, 0x9D, 0x43,
 	0xE4, 0x95, 0xA1, 0x43, 0xE4, 0x95, 0xAB, 0x43,
+	// Bytes 680 - 6bf
 	0xE4, 0x97, 0x97, 0x43, 0xE4, 0x97, 0xB9, 0x43,
-	// Bytes 700 - 73f
 	0xE4, 0x98, 0xB5, 0x43, 0xE4, 0x9A, 0xBE, 0x43,
 	0xE4, 0x9B, 0x87, 0x43, 0xE4, 0xA6, 0x95, 0x43,
 	0xE4, 0xA7, 0xA6, 0x43, 0xE4, 0xA9, 0xAE, 0x43,
@@ -298,8 +279,8 @@
 	0xE4, 0xAC, 0xB3, 0x43, 0xE4, 0xAF, 0x8E, 0x43,
 	0xE4, 0xB3, 0x8E, 0x43, 0xE4, 0xB3, 0xAD, 0x43,
 	0xE4, 0xB3, 0xB8, 0x43, 0xE4, 0xB5, 0x96, 0x43,
+	// Bytes 6c0 - 6ff
 	0xE4, 0xB8, 0x80, 0x43, 0xE4, 0xB8, 0x81, 0x43,
-	// Bytes 740 - 77f
 	0xE4, 0xB8, 0x83, 0x43, 0xE4, 0xB8, 0x89, 0x43,
 	0xE4, 0xB8, 0x8A, 0x43, 0xE4, 0xB8, 0x8B, 0x43,
 	0xE4, 0xB8, 0x8D, 0x43, 0xE4, 0xB8, 0x99, 0x43,
@@ -307,8 +288,8 @@
 	0xE4, 0xB8, 0xAD, 0x43, 0xE4, 0xB8, 0xB2, 0x43,
 	0xE4, 0xB8, 0xB6, 0x43, 0xE4, 0xB8, 0xB8, 0x43,
 	0xE4, 0xB8, 0xB9, 0x43, 0xE4, 0xB8, 0xBD, 0x43,
+	// Bytes 700 - 73f
 	0xE4, 0xB8, 0xBF, 0x43, 0xE4, 0xB9, 0x81, 0x43,
-	// Bytes 780 - 7bf
 	0xE4, 0xB9, 0x99, 0x43, 0xE4, 0xB9, 0x9D, 0x43,
 	0xE4, 0xBA, 0x82, 0x43, 0xE4, 0xBA, 0x85, 0x43,
 	0xE4, 0xBA, 0x86, 0x43, 0xE4, 0xBA, 0x8C, 0x43,
@@ -316,8 +297,8 @@
 	0xE4, 0xBA, 0xA4, 0x43, 0xE4, 0xBA, 0xAE, 0x43,
 	0xE4, 0xBA, 0xBA, 0x43, 0xE4, 0xBB, 0x80, 0x43,
 	0xE4, 0xBB, 0x8C, 0x43, 0xE4, 0xBB, 0xA4, 0x43,
+	// Bytes 740 - 77f
 	0xE4, 0xBC, 0x81, 0x43, 0xE4, 0xBC, 0x91, 0x43,
-	// Bytes 7c0 - 7ff
 	0xE4, 0xBD, 0xA0, 0x43, 0xE4, 0xBE, 0x80, 0x43,
 	0xE4, 0xBE, 0x86, 0x43, 0xE4, 0xBE, 0x8B, 0x43,
 	0xE4, 0xBE, 0xAE, 0x43, 0xE4, 0xBE, 0xBB, 0x43,
@@ -325,8 +306,8 @@
 	0xE5, 0x80, 0xAB, 0x43, 0xE5, 0x81, 0xBA, 0x43,
 	0xE5, 0x82, 0x99, 0x43, 0xE5, 0x83, 0x8F, 0x43,
 	0xE5, 0x83, 0x9A, 0x43, 0xE5, 0x83, 0xA7, 0x43,
+	// Bytes 780 - 7bf
 	0xE5, 0x84, 0xAA, 0x43, 0xE5, 0x84, 0xBF, 0x43,
-	// Bytes 800 - 83f
 	0xE5, 0x85, 0x80, 0x43, 0xE5, 0x85, 0x85, 0x43,
 	0xE5, 0x85, 0x8D, 0x43, 0xE5, 0x85, 0x94, 0x43,
 	0xE5, 0x85, 0xA4, 0x43, 0xE5, 0x85, 0xA5, 0x43,
@@ -334,8 +315,8 @@
 	0xE5, 0x85, 0xA9, 0x43, 0xE5, 0x85, 0xAB, 0x43,
 	0xE5, 0x85, 0xAD, 0x43, 0xE5, 0x85, 0xB7, 0x43,
 	0xE5, 0x86, 0x80, 0x43, 0xE5, 0x86, 0x82, 0x43,
+	// Bytes 7c0 - 7ff
 	0xE5, 0x86, 0x8D, 0x43, 0xE5, 0x86, 0x92, 0x43,
-	// Bytes 840 - 87f
 	0xE5, 0x86, 0x95, 0x43, 0xE5, 0x86, 0x96, 0x43,
 	0xE5, 0x86, 0x97, 0x43, 0xE5, 0x86, 0x99, 0x43,
 	0xE5, 0x86, 0xA4, 0x43, 0xE5, 0x86, 0xAB, 0x43,
@@ -343,8 +324,8 @@
 	0xE5, 0x86, 0xB7, 0x43, 0xE5, 0x87, 0x89, 0x43,
 	0xE5, 0x87, 0x8C, 0x43, 0xE5, 0x87, 0x9C, 0x43,
 	0xE5, 0x87, 0x9E, 0x43, 0xE5, 0x87, 0xA0, 0x43,
+	// Bytes 800 - 83f
 	0xE5, 0x87, 0xB5, 0x43, 0xE5, 0x88, 0x80, 0x43,
-	// Bytes 880 - 8bf
 	0xE5, 0x88, 0x83, 0x43, 0xE5, 0x88, 0x87, 0x43,
 	0xE5, 0x88, 0x97, 0x43, 0xE5, 0x88, 0x9D, 0x43,
 	0xE5, 0x88, 0xA9, 0x43, 0xE5, 0x88, 0xBA, 0x43,
@@ -352,8 +333,8 @@
 	0xE5, 0x89, 0x8D, 0x43, 0xE5, 0x89, 0xB2, 0x43,
 	0xE5, 0x89, 0xB7, 0x43, 0xE5, 0x8A, 0x89, 0x43,
 	0xE5, 0x8A, 0x9B, 0x43, 0xE5, 0x8A, 0xA3, 0x43,
+	// Bytes 840 - 87f
 	0xE5, 0x8A, 0xB3, 0x43, 0xE5, 0x8A, 0xB4, 0x43,
-	// Bytes 8c0 - 8ff
 	0xE5, 0x8B, 0x87, 0x43, 0xE5, 0x8B, 0x89, 0x43,
 	0xE5, 0x8B, 0x92, 0x43, 0xE5, 0x8B, 0x9E, 0x43,
 	0xE5, 0x8B, 0xA4, 0x43, 0xE5, 0x8B, 0xB5, 0x43,
@@ -361,8 +342,8 @@
 	0xE5, 0x8C, 0x85, 0x43, 0xE5, 0x8C, 0x86, 0x43,
 	0xE5, 0x8C, 0x95, 0x43, 0xE5, 0x8C, 0x97, 0x43,
 	0xE5, 0x8C, 0x9A, 0x43, 0xE5, 0x8C, 0xB8, 0x43,
+	// Bytes 880 - 8bf
 	0xE5, 0x8C, 0xBB, 0x43, 0xE5, 0x8C, 0xBF, 0x43,
-	// Bytes 900 - 93f
 	0xE5, 0x8D, 0x81, 0x43, 0xE5, 0x8D, 0x84, 0x43,
 	0xE5, 0x8D, 0x85, 0x43, 0xE5, 0x8D, 0x89, 0x43,
 	0xE5, 0x8D, 0x91, 0x43, 0xE5, 0x8D, 0x94, 0x43,
@@ -370,8 +351,8 @@
 	0xE5, 0x8D, 0xA9, 0x43, 0xE5, 0x8D, 0xB0, 0x43,
 	0xE5, 0x8D, 0xB3, 0x43, 0xE5, 0x8D, 0xB5, 0x43,
 	0xE5, 0x8D, 0xBD, 0x43, 0xE5, 0x8D, 0xBF, 0x43,
+	// Bytes 8c0 - 8ff
 	0xE5, 0x8E, 0x82, 0x43, 0xE5, 0x8E, 0xB6, 0x43,
-	// Bytes 940 - 97f
 	0xE5, 0x8F, 0x83, 0x43, 0xE5, 0x8F, 0x88, 0x43,
 	0xE5, 0x8F, 0x8A, 0x43, 0xE5, 0x8F, 0x8C, 0x43,
 	0xE5, 0x8F, 0x9F, 0x43, 0xE5, 0x8F, 0xA3, 0x43,
@@ -379,8 +360,8 @@
 	0xE5, 0x8F, 0xAF, 0x43, 0xE5, 0x8F, 0xB1, 0x43,
 	0xE5, 0x8F, 0xB3, 0x43, 0xE5, 0x90, 0x86, 0x43,
 	0xE5, 0x90, 0x88, 0x43, 0xE5, 0x90, 0x8D, 0x43,
+	// Bytes 900 - 93f
 	0xE5, 0x90, 0x8F, 0x43, 0xE5, 0x90, 0x9D, 0x43,
-	// Bytes 980 - 9bf
 	0xE5, 0x90, 0xB8, 0x43, 0xE5, 0x90, 0xB9, 0x43,
 	0xE5, 0x91, 0x82, 0x43, 0xE5, 0x91, 0x88, 0x43,
 	0xE5, 0x91, 0xA8, 0x43, 0xE5, 0x92, 0x9E, 0x43,
@@ -388,8 +369,8 @@
 	0xE5, 0x93, 0xB6, 0x43, 0xE5, 0x94, 0x90, 0x43,
 	0xE5, 0x95, 0x8F, 0x43, 0xE5, 0x95, 0x93, 0x43,
 	0xE5, 0x95, 0x95, 0x43, 0xE5, 0x95, 0xA3, 0x43,
+	// Bytes 940 - 97f
 	0xE5, 0x96, 0x84, 0x43, 0xE5, 0x96, 0x87, 0x43,
-	// Bytes 9c0 - 9ff
 	0xE5, 0x96, 0x99, 0x43, 0xE5, 0x96, 0x9D, 0x43,
 	0xE5, 0x96, 0xAB, 0x43, 0xE5, 0x96, 0xB3, 0x43,
 	0xE5, 0x96, 0xB6, 0x43, 0xE5, 0x97, 0x80, 0x43,
@@ -397,8 +378,8 @@
 	0xE5, 0x98, 0x86, 0x43, 0xE5, 0x99, 0x91, 0x43,
 	0xE5, 0x99, 0xA8, 0x43, 0xE5, 0x99, 0xB4, 0x43,
 	0xE5, 0x9B, 0x97, 0x43, 0xE5, 0x9B, 0x9B, 0x43,
+	// Bytes 980 - 9bf
 	0xE5, 0x9B, 0xB9, 0x43, 0xE5, 0x9C, 0x96, 0x43,
-	// Bytes a00 - a3f
 	0xE5, 0x9C, 0x97, 0x43, 0xE5, 0x9C, 0x9F, 0x43,
 	0xE5, 0x9C, 0xB0, 0x43, 0xE5, 0x9E, 0x8B, 0x43,
 	0xE5, 0x9F, 0x8E, 0x43, 0xE5, 0x9F, 0xB4, 0x43,
@@ -406,8 +387,8 @@
 	0xE5, 0xA0, 0xB2, 0x43, 0xE5, 0xA1, 0x80, 0x43,
 	0xE5, 0xA1, 0x9A, 0x43, 0xE5, 0xA1, 0x9E, 0x43,
 	0xE5, 0xA2, 0xA8, 0x43, 0xE5, 0xA2, 0xAC, 0x43,
+	// Bytes 9c0 - 9ff
 	0xE5, 0xA2, 0xB3, 0x43, 0xE5, 0xA3, 0x98, 0x43,
-	// Bytes a40 - a7f
 	0xE5, 0xA3, 0x9F, 0x43, 0xE5, 0xA3, 0xAB, 0x43,
 	0xE5, 0xA3, 0xAE, 0x43, 0xE5, 0xA3, 0xB0, 0x43,
 	0xE5, 0xA3, 0xB2, 0x43, 0xE5, 0xA3, 0xB7, 0x43,
@@ -415,8 +396,8 @@
 	0xE5, 0xA4, 0x8A, 0x43, 0xE5, 0xA4, 0x95, 0x43,
 	0xE5, 0xA4, 0x9A, 0x43, 0xE5, 0xA4, 0x9C, 0x43,
 	0xE5, 0xA4, 0xA2, 0x43, 0xE5, 0xA4, 0xA7, 0x43,
+	// Bytes a00 - a3f
 	0xE5, 0xA4, 0xA9, 0x43, 0xE5, 0xA5, 0x84, 0x43,
-	// Bytes a80 - abf
 	0xE5, 0xA5, 0x88, 0x43, 0xE5, 0xA5, 0x91, 0x43,
 	0xE5, 0xA5, 0x94, 0x43, 0xE5, 0xA5, 0xA2, 0x43,
 	0xE5, 0xA5, 0xB3, 0x43, 0xE5, 0xA7, 0x98, 0x43,
@@ -424,8 +405,8 @@
 	0xE5, 0xA8, 0xA7, 0x43, 0xE5, 0xA9, 0xA2, 0x43,
 	0xE5, 0xA9, 0xA6, 0x43, 0xE5, 0xAA, 0xB5, 0x43,
 	0xE5, 0xAC, 0x88, 0x43, 0xE5, 0xAC, 0xA8, 0x43,
+	// Bytes a40 - a7f
 	0xE5, 0xAC, 0xBE, 0x43, 0xE5, 0xAD, 0x90, 0x43,
-	// Bytes ac0 - aff
 	0xE5, 0xAD, 0x97, 0x43, 0xE5, 0xAD, 0xA6, 0x43,
 	0xE5, 0xAE, 0x80, 0x43, 0xE5, 0xAE, 0x85, 0x43,
 	0xE5, 0xAE, 0x97, 0x43, 0xE5, 0xAF, 0x83, 0x43,
@@ -433,8 +414,8 @@
 	0xE5, 0xAF, 0xAE, 0x43, 0xE5, 0xAF, 0xB3, 0x43,
 	0xE5, 0xAF, 0xB8, 0x43, 0xE5, 0xAF, 0xBF, 0x43,
 	0xE5, 0xB0, 0x86, 0x43, 0xE5, 0xB0, 0x8F, 0x43,
+	// Bytes a80 - abf
 	0xE5, 0xB0, 0xA2, 0x43, 0xE5, 0xB0, 0xB8, 0x43,
-	// Bytes b00 - b3f
 	0xE5, 0xB0, 0xBF, 0x43, 0xE5, 0xB1, 0xA0, 0x43,
 	0xE5, 0xB1, 0xA2, 0x43, 0xE5, 0xB1, 0xA4, 0x43,
 	0xE5, 0xB1, 0xA5, 0x43, 0xE5, 0xB1, 0xAE, 0x43,
@@ -442,8 +423,8 @@
 	0xE5, 0xB3, 0x80, 0x43, 0xE5, 0xB4, 0x99, 0x43,
 	0xE5, 0xB5, 0x83, 0x43, 0xE5, 0xB5, 0x90, 0x43,
 	0xE5, 0xB5, 0xAB, 0x43, 0xE5, 0xB5, 0xAE, 0x43,
+	// Bytes ac0 - aff
 	0xE5, 0xB5, 0xBC, 0x43, 0xE5, 0xB6, 0xB2, 0x43,
-	// Bytes b40 - b7f
 	0xE5, 0xB6, 0xBA, 0x43, 0xE5, 0xB7, 0x9B, 0x43,
 	0xE5, 0xB7, 0xA1, 0x43, 0xE5, 0xB7, 0xA2, 0x43,
 	0xE5, 0xB7, 0xA5, 0x43, 0xE5, 0xB7, 0xA6, 0x43,
@@ -451,8 +432,8 @@
 	0xE5, 0xB7, 0xBE, 0x43, 0xE5, 0xB8, 0xA8, 0x43,
 	0xE5, 0xB8, 0xBD, 0x43, 0xE5, 0xB9, 0xA9, 0x43,
 	0xE5, 0xB9, 0xB2, 0x43, 0xE5, 0xB9, 0xB4, 0x43,
+	// Bytes b00 - b3f
 	0xE5, 0xB9, 0xBA, 0x43, 0xE5, 0xB9, 0xBC, 0x43,
-	// Bytes b80 - bbf
 	0xE5, 0xB9, 0xBF, 0x43, 0xE5, 0xBA, 0xA6, 0x43,
 	0xE5, 0xBA, 0xB0, 0x43, 0xE5, 0xBA, 0xB3, 0x43,
 	0xE5, 0xBA, 0xB6, 0x43, 0xE5, 0xBB, 0x89, 0x43,
@@ -460,8 +441,8 @@
 	0xE5, 0xBB, 0x93, 0x43, 0xE5, 0xBB, 0x99, 0x43,
 	0xE5, 0xBB, 0xAC, 0x43, 0xE5, 0xBB, 0xB4, 0x43,
 	0xE5, 0xBB, 0xBE, 0x43, 0xE5, 0xBC, 0x84, 0x43,
+	// Bytes b40 - b7f
 	0xE5, 0xBC, 0x8B, 0x43, 0xE5, 0xBC, 0x93, 0x43,
-	// Bytes bc0 - bff
 	0xE5, 0xBC, 0xA2, 0x43, 0xE5, 0xBD, 0x90, 0x43,
 	0xE5, 0xBD, 0x93, 0x43, 0xE5, 0xBD, 0xA1, 0x43,
 	0xE5, 0xBD, 0xA2, 0x43, 0xE5, 0xBD, 0xA9, 0x43,
@@ -469,8 +450,8 @@
 	0xE5, 0xBE, 0x8B, 0x43, 0xE5, 0xBE, 0x8C, 0x43,
 	0xE5, 0xBE, 0x97, 0x43, 0xE5, 0xBE, 0x9A, 0x43,
 	0xE5, 0xBE, 0xA9, 0x43, 0xE5, 0xBE, 0xAD, 0x43,
+	// Bytes b80 - bbf
 	0xE5, 0xBF, 0x83, 0x43, 0xE5, 0xBF, 0x8D, 0x43,
-	// Bytes c00 - c3f
 	0xE5, 0xBF, 0x97, 0x43, 0xE5, 0xBF, 0xB5, 0x43,
 	0xE5, 0xBF, 0xB9, 0x43, 0xE6, 0x80, 0x92, 0x43,
 	0xE6, 0x80, 0x9C, 0x43, 0xE6, 0x81, 0xB5, 0x43,
@@ -478,8 +459,8 @@
 	0xE6, 0x83, 0x87, 0x43, 0xE6, 0x83, 0x98, 0x43,
 	0xE6, 0x83, 0xA1, 0x43, 0xE6, 0x84, 0x88, 0x43,
 	0xE6, 0x85, 0x84, 0x43, 0xE6, 0x85, 0x88, 0x43,
+	// Bytes bc0 - bff
 	0xE6, 0x85, 0x8C, 0x43, 0xE6, 0x85, 0x8E, 0x43,
-	// Bytes c40 - c7f
 	0xE6, 0x85, 0xA0, 0x43, 0xE6, 0x85, 0xA8, 0x43,
 	0xE6, 0x85, 0xBA, 0x43, 0xE6, 0x86, 0x8E, 0x43,
 	0xE6, 0x86, 0x90, 0x43, 0xE6, 0x86, 0xA4, 0x43,
@@ -487,8 +468,8 @@
 	0xE6, 0x87, 0x9E, 0x43, 0xE6, 0x87, 0xB2, 0x43,
 	0xE6, 0x87, 0xB6, 0x43, 0xE6, 0x88, 0x80, 0x43,
 	0xE6, 0x88, 0x88, 0x43, 0xE6, 0x88, 0x90, 0x43,
+	// Bytes c00 - c3f
 	0xE6, 0x88, 0x9B, 0x43, 0xE6, 0x88, 0xAE, 0x43,
-	// Bytes c80 - cbf
 	0xE6, 0x88, 0xB4, 0x43, 0xE6, 0x88, 0xB6, 0x43,
 	0xE6, 0x89, 0x8B, 0x43, 0xE6, 0x89, 0x93, 0x43,
 	0xE6, 0x89, 0x9D, 0x43, 0xE6, 0x8A, 0x95, 0x43,
@@ -496,8 +477,8 @@
 	0xE6, 0x8B, 0x8F, 0x43, 0xE6, 0x8B, 0x93, 0x43,
 	0xE6, 0x8B, 0x94, 0x43, 0xE6, 0x8B, 0xBC, 0x43,
 	0xE6, 0x8B, 0xBE, 0x43, 0xE6, 0x8C, 0x87, 0x43,
+	// Bytes c40 - c7f
 	0xE6, 0x8C, 0xBD, 0x43, 0xE6, 0x8D, 0x90, 0x43,
-	// Bytes cc0 - cff
 	0xE6, 0x8D, 0x95, 0x43, 0xE6, 0x8D, 0xA8, 0x43,
 	0xE6, 0x8D, 0xBB, 0x43, 0xE6, 0x8E, 0x83, 0x43,
 	0xE6, 0x8E, 0xA0, 0x43, 0xE6, 0x8E, 0xA9, 0x43,
@@ -505,8 +486,8 @@
 	0xE6, 0x8F, 0xA4, 0x43, 0xE6, 0x90, 0x9C, 0x43,
 	0xE6, 0x90, 0xA2, 0x43, 0xE6, 0x91, 0x92, 0x43,
 	0xE6, 0x91, 0xA9, 0x43, 0xE6, 0x91, 0xB7, 0x43,
+	// Bytes c80 - cbf
 	0xE6, 0x91, 0xBE, 0x43, 0xE6, 0x92, 0x9A, 0x43,
-	// Bytes d00 - d3f
 	0xE6, 0x92, 0x9D, 0x43, 0xE6, 0x93, 0x84, 0x43,
 	0xE6, 0x94, 0xAF, 0x43, 0xE6, 0x94, 0xB4, 0x43,
 	0xE6, 0x95, 0x8F, 0x43, 0xE6, 0x95, 0x96, 0x43,
@@ -514,8 +495,8 @@
 	0xE6, 0x96, 0x87, 0x43, 0xE6, 0x96, 0x97, 0x43,
 	0xE6, 0x96, 0x99, 0x43, 0xE6, 0x96, 0xA4, 0x43,
 	0xE6, 0x96, 0xB0, 0x43, 0xE6, 0x96, 0xB9, 0x43,
+	// Bytes cc0 - cff
 	0xE6, 0x97, 0x85, 0x43, 0xE6, 0x97, 0xA0, 0x43,
-	// Bytes d40 - d7f
 	0xE6, 0x97, 0xA2, 0x43, 0xE6, 0x97, 0xA3, 0x43,
 	0xE6, 0x97, 0xA5, 0x43, 0xE6, 0x98, 0x93, 0x43,
 	0xE6, 0x98, 0xA0, 0x43, 0xE6, 0x99, 0x89, 0x43,
@@ -523,8 +504,8 @@
 	0xE6, 0x9A, 0x91, 0x43, 0xE6, 0x9A, 0x9C, 0x43,
 	0xE6, 0x9A, 0xB4, 0x43, 0xE6, 0x9B, 0x86, 0x43,
 	0xE6, 0x9B, 0xB0, 0x43, 0xE6, 0x9B, 0xB4, 0x43,
+	// Bytes d00 - d3f
 	0xE6, 0x9B, 0xB8, 0x43, 0xE6, 0x9C, 0x80, 0x43,
-	// Bytes d80 - dbf
 	0xE6, 0x9C, 0x88, 0x43, 0xE6, 0x9C, 0x89, 0x43,
 	0xE6, 0x9C, 0x97, 0x43, 0xE6, 0x9C, 0x9B, 0x43,
 	0xE6, 0x9C, 0xA1, 0x43, 0xE6, 0x9C, 0xA8, 0x43,
@@ -532,8 +513,8 @@
 	0xE6, 0x9D, 0x96, 0x43, 0xE6, 0x9D, 0x9E, 0x43,
 	0xE6, 0x9D, 0xBB, 0x43, 0xE6, 0x9E, 0x85, 0x43,
 	0xE6, 0x9E, 0x97, 0x43, 0xE6, 0x9F, 0xB3, 0x43,
+	// Bytes d40 - d7f
 	0xE6, 0x9F, 0xBA, 0x43, 0xE6, 0xA0, 0x97, 0x43,
-	// Bytes dc0 - dff
 	0xE6, 0xA0, 0x9F, 0x43, 0xE6, 0xA0, 0xAA, 0x43,
 	0xE6, 0xA1, 0x92, 0x43, 0xE6, 0xA2, 0x81, 0x43,
 	0xE6, 0xA2, 0x85, 0x43, 0xE6, 0xA2, 0x8E, 0x43,
@@ -541,8 +522,8 @@
 	0xE6, 0xA5, 0x82, 0x43, 0xE6, 0xA6, 0xA3, 0x43,
 	0xE6, 0xA7, 0xAA, 0x43, 0xE6, 0xA8, 0x82, 0x43,
 	0xE6, 0xA8, 0x93, 0x43, 0xE6, 0xAA, 0xA8, 0x43,
+	// Bytes d80 - dbf
 	0xE6, 0xAB, 0x93, 0x43, 0xE6, 0xAB, 0x9B, 0x43,
-	// Bytes e00 - e3f
 	0xE6, 0xAC, 0x84, 0x43, 0xE6, 0xAC, 0xA0, 0x43,
 	0xE6, 0xAC, 0xA1, 0x43, 0xE6, 0xAD, 0x94, 0x43,
 	0xE6, 0xAD, 0xA2, 0x43, 0xE6, 0xAD, 0xA3, 0x43,
@@ -550,8 +531,8 @@
 	0xE6, 0xAD, 0xB9, 0x43, 0xE6, 0xAE, 0x9F, 0x43,
 	0xE6, 0xAE, 0xAE, 0x43, 0xE6, 0xAE, 0xB3, 0x43,
 	0xE6, 0xAE, 0xBA, 0x43, 0xE6, 0xAE, 0xBB, 0x43,
+	// Bytes dc0 - dff
 	0xE6, 0xAF, 0x8B, 0x43, 0xE6, 0xAF, 0x8D, 0x43,
-	// Bytes e40 - e7f
 	0xE6, 0xAF, 0x94, 0x43, 0xE6, 0xAF, 0x9B, 0x43,
 	0xE6, 0xB0, 0x8F, 0x43, 0xE6, 0xB0, 0x94, 0x43,
 	0xE6, 0xB0, 0xB4, 0x43, 0xE6, 0xB1, 0x8E, 0x43,
@@ -559,8 +540,8 @@
 	0xE6, 0xB2, 0xBF, 0x43, 0xE6, 0xB3, 0x8C, 0x43,
 	0xE6, 0xB3, 0x8D, 0x43, 0xE6, 0xB3, 0xA5, 0x43,
 	0xE6, 0xB3, 0xA8, 0x43, 0xE6, 0xB4, 0x96, 0x43,
+	// Bytes e00 - e3f
 	0xE6, 0xB4, 0x9B, 0x43, 0xE6, 0xB4, 0x9E, 0x43,
-	// Bytes e80 - ebf
 	0xE6, 0xB4, 0xB4, 0x43, 0xE6, 0xB4, 0xBE, 0x43,
 	0xE6, 0xB5, 0x81, 0x43, 0xE6, 0xB5, 0xA9, 0x43,
 	0xE6, 0xB5, 0xAA, 0x43, 0xE6, 0xB5, 0xB7, 0x43,
@@ -568,8 +549,8 @@
 	0xE6, 0xB7, 0x8B, 0x43, 0xE6, 0xB7, 0x9A, 0x43,
 	0xE6, 0xB7, 0xAA, 0x43, 0xE6, 0xB7, 0xB9, 0x43,
 	0xE6, 0xB8, 0x9A, 0x43, 0xE6, 0xB8, 0xAF, 0x43,
+	// Bytes e40 - e7f
 	0xE6, 0xB9, 0xAE, 0x43, 0xE6, 0xBA, 0x80, 0x43,
-	// Bytes ec0 - eff
 	0xE6, 0xBA, 0x9C, 0x43, 0xE6, 0xBA, 0xBA, 0x43,
 	0xE6, 0xBB, 0x87, 0x43, 0xE6, 0xBB, 0x8B, 0x43,
 	0xE6, 0xBB, 0x91, 0x43, 0xE6, 0xBB, 0x9B, 0x43,
@@ -577,8 +558,8 @@
 	0xE6, 0xBC, 0xA2, 0x43, 0xE6, 0xBC, 0xA3, 0x43,
 	0xE6, 0xBD, 0xAE, 0x43, 0xE6, 0xBF, 0x86, 0x43,
 	0xE6, 0xBF, 0xAB, 0x43, 0xE6, 0xBF, 0xBE, 0x43,
+	// Bytes e80 - ebf
 	0xE7, 0x80, 0x9B, 0x43, 0xE7, 0x80, 0x9E, 0x43,
-	// Bytes f00 - f3f
 	0xE7, 0x80, 0xB9, 0x43, 0xE7, 0x81, 0x8A, 0x43,
 	0xE7, 0x81, 0xAB, 0x43, 0xE7, 0x81, 0xB0, 0x43,
 	0xE7, 0x81, 0xB7, 0x43, 0xE7, 0x81, 0xBD, 0x43,
@@ -586,8 +567,8 @@
 	0xE7, 0x83, 0x88, 0x43, 0xE7, 0x83, 0x99, 0x43,
 	0xE7, 0x84, 0xA1, 0x43, 0xE7, 0x85, 0x85, 0x43,
 	0xE7, 0x85, 0x89, 0x43, 0xE7, 0x85, 0xAE, 0x43,
+	// Bytes ec0 - eff
 	0xE7, 0x86, 0x9C, 0x43, 0xE7, 0x87, 0x8E, 0x43,
-	// Bytes f40 - f7f
 	0xE7, 0x87, 0x90, 0x43, 0xE7, 0x88, 0x90, 0x43,
 	0xE7, 0x88, 0x9B, 0x43, 0xE7, 0x88, 0xA8, 0x43,
 	0xE7, 0x88, 0xAA, 0x43, 0xE7, 0x88, 0xAB, 0x43,
@@ -595,8 +576,8 @@
 	0xE7, 0x88, 0xBB, 0x43, 0xE7, 0x88, 0xBF, 0x43,
 	0xE7, 0x89, 0x87, 0x43, 0xE7, 0x89, 0x90, 0x43,
 	0xE7, 0x89, 0x99, 0x43, 0xE7, 0x89, 0x9B, 0x43,
+	// Bytes f00 - f3f
 	0xE7, 0x89, 0xA2, 0x43, 0xE7, 0x89, 0xB9, 0x43,
-	// Bytes f80 - fbf
 	0xE7, 0x8A, 0x80, 0x43, 0xE7, 0x8A, 0x95, 0x43,
 	0xE7, 0x8A, 0xAC, 0x43, 0xE7, 0x8A, 0xAF, 0x43,
 	0xE7, 0x8B, 0x80, 0x43, 0xE7, 0x8B, 0xBC, 0x43,
@@ -604,8 +585,8 @@
 	0xE7, 0x8D, 0xBA, 0x43, 0xE7, 0x8E, 0x84, 0x43,
 	0xE7, 0x8E, 0x87, 0x43, 0xE7, 0x8E, 0x89, 0x43,
 	0xE7, 0x8E, 0x8B, 0x43, 0xE7, 0x8E, 0xA5, 0x43,
+	// Bytes f40 - f7f
 	0xE7, 0x8E, 0xB2, 0x43, 0xE7, 0x8F, 0x9E, 0x43,
-	// Bytes fc0 - fff
 	0xE7, 0x90, 0x86, 0x43, 0xE7, 0x90, 0x89, 0x43,
 	0xE7, 0x90, 0xA2, 0x43, 0xE7, 0x91, 0x87, 0x43,
 	0xE7, 0x91, 0x9C, 0x43, 0xE7, 0x91, 0xA9, 0x43,
@@ -613,8 +594,8 @@
 	0xE7, 0x92, 0x89, 0x43, 0xE7, 0x92, 0x98, 0x43,
 	0xE7, 0x93, 0x8A, 0x43, 0xE7, 0x93, 0x9C, 0x43,
 	0xE7, 0x93, 0xA6, 0x43, 0xE7, 0x94, 0x86, 0x43,
+	// Bytes f80 - fbf
 	0xE7, 0x94, 0x98, 0x43, 0xE7, 0x94, 0x9F, 0x43,
-	// Bytes 1000 - 103f
 	0xE7, 0x94, 0xA4, 0x43, 0xE7, 0x94, 0xA8, 0x43,
 	0xE7, 0x94, 0xB0, 0x43, 0xE7, 0x94, 0xB2, 0x43,
 	0xE7, 0x94, 0xB3, 0x43, 0xE7, 0x94, 0xB7, 0x43,
@@ -622,8 +603,8 @@
 	0xE7, 0x95, 0x99, 0x43, 0xE7, 0x95, 0xA5, 0x43,
 	0xE7, 0x95, 0xB0, 0x43, 0xE7, 0x96, 0x8B, 0x43,
 	0xE7, 0x96, 0x92, 0x43, 0xE7, 0x97, 0xA2, 0x43,
+	// Bytes fc0 - fff
 	0xE7, 0x98, 0x90, 0x43, 0xE7, 0x98, 0x9D, 0x43,
-	// Bytes 1040 - 107f
 	0xE7, 0x98, 0x9F, 0x43, 0xE7, 0x99, 0x82, 0x43,
 	0xE7, 0x99, 0xA9, 0x43, 0xE7, 0x99, 0xB6, 0x43,
 	0xE7, 0x99, 0xBD, 0x43, 0xE7, 0x9A, 0xAE, 0x43,
@@ -631,8 +612,8 @@
 	0xE7, 0x9B, 0x9B, 0x43, 0xE7, 0x9B, 0xA3, 0x43,
 	0xE7, 0x9B, 0xA7, 0x43, 0xE7, 0x9B, 0xAE, 0x43,
 	0xE7, 0x9B, 0xB4, 0x43, 0xE7, 0x9C, 0x81, 0x43,
+	// Bytes 1000 - 103f
 	0xE7, 0x9C, 0x9E, 0x43, 0xE7, 0x9C, 0x9F, 0x43,
-	// Bytes 1080 - 10bf
 	0xE7, 0x9D, 0x80, 0x43, 0xE7, 0x9D, 0x8A, 0x43,
 	0xE7, 0x9E, 0x8B, 0x43, 0xE7, 0x9E, 0xA7, 0x43,
 	0xE7, 0x9F, 0x9B, 0x43, 0xE7, 0x9F, 0xA2, 0x43,
@@ -640,8 +621,8 @@
 	0xE7, 0xA1, 0xAB, 0x43, 0xE7, 0xA2, 0x8C, 0x43,
 	0xE7, 0xA2, 0x91, 0x43, 0xE7, 0xA3, 0x8A, 0x43,
 	0xE7, 0xA3, 0x8C, 0x43, 0xE7, 0xA3, 0xBB, 0x43,
+	// Bytes 1040 - 107f
 	0xE7, 0xA4, 0xAA, 0x43, 0xE7, 0xA4, 0xBA, 0x43,
-	// Bytes 10c0 - 10ff
 	0xE7, 0xA4, 0xBC, 0x43, 0xE7, 0xA4, 0xBE, 0x43,
 	0xE7, 0xA5, 0x88, 0x43, 0xE7, 0xA5, 0x89, 0x43,
 	0xE7, 0xA5, 0x90, 0x43, 0xE7, 0xA5, 0x96, 0x43,
@@ -649,8 +630,8 @@
 	0xE7, 0xA5, 0xA5, 0x43, 0xE7, 0xA5, 0xBF, 0x43,
 	0xE7, 0xA6, 0x81, 0x43, 0xE7, 0xA6, 0x8D, 0x43,
 	0xE7, 0xA6, 0x8E, 0x43, 0xE7, 0xA6, 0x8F, 0x43,
+	// Bytes 1080 - 10bf
 	0xE7, 0xA6, 0xAE, 0x43, 0xE7, 0xA6, 0xB8, 0x43,
-	// Bytes 1100 - 113f
 	0xE7, 0xA6, 0xBE, 0x43, 0xE7, 0xA7, 0x8A, 0x43,
 	0xE7, 0xA7, 0x98, 0x43, 0xE7, 0xA7, 0xAB, 0x43,
 	0xE7, 0xA8, 0x9C, 0x43, 0xE7, 0xA9, 0x80, 0x43,
@@ -658,8 +639,8 @@
 	0xE7, 0xA9, 0xB4, 0x43, 0xE7, 0xA9, 0xBA, 0x43,
 	0xE7, 0xAA, 0x81, 0x43, 0xE7, 0xAA, 0xB1, 0x43,
 	0xE7, 0xAB, 0x8B, 0x43, 0xE7, 0xAB, 0xAE, 0x43,
+	// Bytes 10c0 - 10ff
 	0xE7, 0xAB, 0xB9, 0x43, 0xE7, 0xAC, 0xA0, 0x43,
-	// Bytes 1140 - 117f
 	0xE7, 0xAE, 0x8F, 0x43, 0xE7, 0xAF, 0x80, 0x43,
 	0xE7, 0xAF, 0x86, 0x43, 0xE7, 0xAF, 0x89, 0x43,
 	0xE7, 0xB0, 0xBE, 0x43, 0xE7, 0xB1, 0xA0, 0x43,
@@ -667,8 +648,8 @@
 	0xE7, 0xB2, 0x92, 0x43, 0xE7, 0xB2, 0xBE, 0x43,
 	0xE7, 0xB3, 0x92, 0x43, 0xE7, 0xB3, 0x96, 0x43,
 	0xE7, 0xB3, 0xA3, 0x43, 0xE7, 0xB3, 0xA7, 0x43,
+	// Bytes 1100 - 113f
 	0xE7, 0xB3, 0xA8, 0x43, 0xE7, 0xB3, 0xB8, 0x43,
-	// Bytes 1180 - 11bf
 	0xE7, 0xB4, 0x80, 0x43, 0xE7, 0xB4, 0x90, 0x43,
 	0xE7, 0xB4, 0xA2, 0x43, 0xE7, 0xB4, 0xAF, 0x43,
 	0xE7, 0xB5, 0x82, 0x43, 0xE7, 0xB5, 0x9B, 0x43,
@@ -676,8 +657,8 @@
 	0xE7, 0xB6, 0xBE, 0x43, 0xE7, 0xB7, 0x87, 0x43,
 	0xE7, 0xB7, 0xB4, 0x43, 0xE7, 0xB8, 0x82, 0x43,
 	0xE7, 0xB8, 0x89, 0x43, 0xE7, 0xB8, 0xB7, 0x43,
+	// Bytes 1140 - 117f
 	0xE7, 0xB9, 0x81, 0x43, 0xE7, 0xB9, 0x85, 0x43,
-	// Bytes 11c0 - 11ff
 	0xE7, 0xBC, 0xB6, 0x43, 0xE7, 0xBC, 0xBE, 0x43,
 	0xE7, 0xBD, 0x91, 0x43, 0xE7, 0xBD, 0xB2, 0x43,
 	0xE7, 0xBD, 0xB9, 0x43, 0xE7, 0xBD, 0xBA, 0x43,
@@ -685,8 +666,8 @@
 	0xE7, 0xBE, 0x95, 0x43, 0xE7, 0xBE, 0x9A, 0x43,
 	0xE7, 0xBE, 0xBD, 0x43, 0xE7, 0xBF, 0xBA, 0x43,
 	0xE8, 0x80, 0x81, 0x43, 0xE8, 0x80, 0x85, 0x43,
+	// Bytes 1180 - 11bf
 	0xE8, 0x80, 0x8C, 0x43, 0xE8, 0x80, 0x92, 0x43,
-	// Bytes 1200 - 123f
 	0xE8, 0x80, 0xB3, 0x43, 0xE8, 0x81, 0x86, 0x43,
 	0xE8, 0x81, 0xA0, 0x43, 0xE8, 0x81, 0xAF, 0x43,
 	0xE8, 0x81, 0xB0, 0x43, 0xE8, 0x81, 0xBE, 0x43,
@@ -694,8 +675,8 @@
 	0xE8, 0x82, 0x8B, 0x43, 0xE8, 0x82, 0xAD, 0x43,
 	0xE8, 0x82, 0xB2, 0x43, 0xE8, 0x84, 0x83, 0x43,
 	0xE8, 0x84, 0xBE, 0x43, 0xE8, 0x87, 0x98, 0x43,
+	// Bytes 11c0 - 11ff
 	0xE8, 0x87, 0xA3, 0x43, 0xE8, 0x87, 0xA8, 0x43,
-	// Bytes 1240 - 127f
 	0xE8, 0x87, 0xAA, 0x43, 0xE8, 0x87, 0xAD, 0x43,
 	0xE8, 0x87, 0xB3, 0x43, 0xE8, 0x87, 0xBC, 0x43,
 	0xE8, 0x88, 0x81, 0x43, 0xE8, 0x88, 0x84, 0x43,
@@ -703,8 +684,8 @@
 	0xE8, 0x88, 0x9B, 0x43, 0xE8, 0x88, 0x9F, 0x43,
 	0xE8, 0x89, 0xAE, 0x43, 0xE8, 0x89, 0xAF, 0x43,
 	0xE8, 0x89, 0xB2, 0x43, 0xE8, 0x89, 0xB8, 0x43,
+	// Bytes 1200 - 123f
 	0xE8, 0x89, 0xB9, 0x43, 0xE8, 0x8A, 0x8B, 0x43,
-	// Bytes 1280 - 12bf
 	0xE8, 0x8A, 0x91, 0x43, 0xE8, 0x8A, 0x9D, 0x43,
 	0xE8, 0x8A, 0xB1, 0x43, 0xE8, 0x8A, 0xB3, 0x43,
 	0xE8, 0x8A, 0xBD, 0x43, 0xE8, 0x8B, 0xA5, 0x43,
@@ -712,8 +693,8 @@
 	0xE8, 0x8C, 0xA3, 0x43, 0xE8, 0x8C, 0xB6, 0x43,
 	0xE8, 0x8D, 0x92, 0x43, 0xE8, 0x8D, 0x93, 0x43,
 	0xE8, 0x8D, 0xA3, 0x43, 0xE8, 0x8E, 0xAD, 0x43,
+	// Bytes 1240 - 127f
 	0xE8, 0x8E, 0xBD, 0x43, 0xE8, 0x8F, 0x89, 0x43,
-	// Bytes 12c0 - 12ff
 	0xE8, 0x8F, 0x8A, 0x43, 0xE8, 0x8F, 0x8C, 0x43,
 	0xE8, 0x8F, 0x9C, 0x43, 0xE8, 0x8F, 0xA7, 0x43,
 	0xE8, 0x8F, 0xAF, 0x43, 0xE8, 0x8F, 0xB1, 0x43,
@@ -721,8 +702,8 @@
 	0xE8, 0x91, 0x97, 0x43, 0xE8, 0x93, 0xAE, 0x43,
 	0xE8, 0x93, 0xB1, 0x43, 0xE8, 0x93, 0xB3, 0x43,
 	0xE8, 0x93, 0xBC, 0x43, 0xE8, 0x94, 0x96, 0x43,
+	// Bytes 1280 - 12bf
 	0xE8, 0x95, 0xA4, 0x43, 0xE8, 0x97, 0x8D, 0x43,
-	// Bytes 1300 - 133f
 	0xE8, 0x97, 0xBA, 0x43, 0xE8, 0x98, 0x86, 0x43,
 	0xE8, 0x98, 0x92, 0x43, 0xE8, 0x98, 0xAD, 0x43,
 	0xE8, 0x98, 0xBF, 0x43, 0xE8, 0x99, 0x8D, 0x43,
@@ -730,8 +711,8 @@
 	0xE8, 0x99, 0xA7, 0x43, 0xE8, 0x99, 0xA9, 0x43,
 	0xE8, 0x99, 0xAB, 0x43, 0xE8, 0x9A, 0x88, 0x43,
 	0xE8, 0x9A, 0xA9, 0x43, 0xE8, 0x9B, 0xA2, 0x43,
+	// Bytes 12c0 - 12ff
 	0xE8, 0x9C, 0x8E, 0x43, 0xE8, 0x9C, 0xA8, 0x43,
-	// Bytes 1340 - 137f
 	0xE8, 0x9D, 0xAB, 0x43, 0xE8, 0x9D, 0xB9, 0x43,
 	0xE8, 0x9E, 0x86, 0x43, 0xE8, 0x9E, 0xBA, 0x43,
 	0xE8, 0x9F, 0xA1, 0x43, 0xE8, 0xA0, 0x81, 0x43,
@@ -739,8 +720,8 @@
 	0xE8, 0xA1, 0x8C, 0x43, 0xE8, 0xA1, 0xA0, 0x43,
 	0xE8, 0xA1, 0xA3, 0x43, 0xE8, 0xA3, 0x82, 0x43,
 	0xE8, 0xA3, 0x8F, 0x43, 0xE8, 0xA3, 0x97, 0x43,
+	// Bytes 1300 - 133f
 	0xE8, 0xA3, 0x9E, 0x43, 0xE8, 0xA3, 0xA1, 0x43,
-	// Bytes 1380 - 13bf
 	0xE8, 0xA3, 0xB8, 0x43, 0xE8, 0xA3, 0xBA, 0x43,
 	0xE8, 0xA4, 0x90, 0x43, 0xE8, 0xA5, 0x81, 0x43,
 	0xE8, 0xA5, 0xA4, 0x43, 0xE8, 0xA5, 0xBE, 0x43,
@@ -748,8 +729,8 @@
 	0xE8, 0xA6, 0x96, 0x43, 0xE8, 0xA7, 0x92, 0x43,
 	0xE8, 0xA7, 0xA3, 0x43, 0xE8, 0xA8, 0x80, 0x43,
 	0xE8, 0xAA, 0xA0, 0x43, 0xE8, 0xAA, 0xAA, 0x43,
+	// Bytes 1340 - 137f
 	0xE8, 0xAA, 0xBF, 0x43, 0xE8, 0xAB, 0x8B, 0x43,
-	// Bytes 13c0 - 13ff
 	0xE8, 0xAB, 0x92, 0x43, 0xE8, 0xAB, 0x96, 0x43,
 	0xE8, 0xAB, 0xAD, 0x43, 0xE8, 0xAB, 0xB8, 0x43,
 	0xE8, 0xAB, 0xBE, 0x43, 0xE8, 0xAC, 0x81, 0x43,
@@ -757,8 +738,8 @@
 	0xE8, 0xAE, 0x80, 0x43, 0xE8, 0xAE, 0x8A, 0x43,
 	0xE8, 0xB0, 0xB7, 0x43, 0xE8, 0xB1, 0x86, 0x43,
 	0xE8, 0xB1, 0x88, 0x43, 0xE8, 0xB1, 0x95, 0x43,
+	// Bytes 1380 - 13bf
 	0xE8, 0xB1, 0xB8, 0x43, 0xE8, 0xB2, 0x9D, 0x43,
-	// Bytes 1400 - 143f
 	0xE8, 0xB2, 0xA1, 0x43, 0xE8, 0xB2, 0xA9, 0x43,
 	0xE8, 0xB2, 0xAB, 0x43, 0xE8, 0xB3, 0x81, 0x43,
 	0xE8, 0xB3, 0x82, 0x43, 0xE8, 0xB3, 0x87, 0x43,
@@ -766,8 +747,8 @@
 	0xE8, 0xB4, 0x88, 0x43, 0xE8, 0xB4, 0x9B, 0x43,
 	0xE8, 0xB5, 0xA4, 0x43, 0xE8, 0xB5, 0xB0, 0x43,
 	0xE8, 0xB5, 0xB7, 0x43, 0xE8, 0xB6, 0xB3, 0x43,
+	// Bytes 13c0 - 13ff
 	0xE8, 0xB6, 0xBC, 0x43, 0xE8, 0xB7, 0x8B, 0x43,
-	// Bytes 1440 - 147f
 	0xE8, 0xB7, 0xAF, 0x43, 0xE8, 0xB7, 0xB0, 0x43,
 	0xE8, 0xBA, 0xAB, 0x43, 0xE8, 0xBB, 0x8A, 0x43,
 	0xE8, 0xBB, 0x94, 0x43, 0xE8, 0xBC, 0xA6, 0x43,
@@ -775,8 +756,8 @@
 	0xE8, 0xBC, 0xBB, 0x43, 0xE8, 0xBD, 0xA2, 0x43,
 	0xE8, 0xBE, 0x9B, 0x43, 0xE8, 0xBE, 0x9E, 0x43,
 	0xE8, 0xBE, 0xB0, 0x43, 0xE8, 0xBE, 0xB5, 0x43,
+	// Bytes 1400 - 143f
 	0xE8, 0xBE, 0xB6, 0x43, 0xE9, 0x80, 0xA3, 0x43,
-	// Bytes 1480 - 14bf
 	0xE9, 0x80, 0xB8, 0x43, 0xE9, 0x81, 0x8A, 0x43,
 	0xE9, 0x81, 0xA9, 0x43, 0xE9, 0x81, 0xB2, 0x43,
 	0xE9, 0x81, 0xBC, 0x43, 0xE9, 0x82, 0x8F, 0x43,
@@ -784,8 +765,8 @@
 	0xE9, 0x83, 0x8E, 0x43, 0xE9, 0x83, 0x9E, 0x43,
 	0xE9, 0x83, 0xB1, 0x43, 0xE9, 0x83, 0xBD, 0x43,
 	0xE9, 0x84, 0x91, 0x43, 0xE9, 0x84, 0x9B, 0x43,
+	// Bytes 1440 - 147f
 	0xE9, 0x85, 0x89, 0x43, 0xE9, 0x85, 0xAA, 0x43,
-	// Bytes 14c0 - 14ff
 	0xE9, 0x86, 0x99, 0x43, 0xE9, 0x86, 0xB4, 0x43,
 	0xE9, 0x87, 0x86, 0x43, 0xE9, 0x87, 0x8C, 0x43,
 	0xE9, 0x87, 0x8F, 0x43, 0xE9, 0x87, 0x91, 0x43,
@@ -793,8 +774,8 @@
 	0xE9, 0x89, 0xB6, 0x43, 0xE9, 0x89, 0xBC, 0x43,
 	0xE9, 0x8B, 0x97, 0x43, 0xE9, 0x8B, 0x98, 0x43,
 	0xE9, 0x8C, 0x84, 0x43, 0xE9, 0x8D, 0x8A, 0x43,
+	// Bytes 1480 - 14bf
 	0xE9, 0x8F, 0xB9, 0x43, 0xE9, 0x90, 0x95, 0x43,
-	// Bytes 1500 - 153f
 	0xE9, 0x95, 0xB7, 0x43, 0xE9, 0x96, 0x80, 0x43,
 	0xE9, 0x96, 0x8B, 0x43, 0xE9, 0x96, 0xAD, 0x43,
 	0xE9, 0x96, 0xB7, 0x43, 0xE9, 0x98, 0x9C, 0x43,
@@ -802,8 +783,8 @@
 	0xE9, 0x99, 0x8D, 0x43, 0xE9, 0x99, 0xB5, 0x43,
 	0xE9, 0x99, 0xB8, 0x43, 0xE9, 0x99, 0xBC, 0x43,
 	0xE9, 0x9A, 0x86, 0x43, 0xE9, 0x9A, 0xA3, 0x43,
+	// Bytes 14c0 - 14ff
 	0xE9, 0x9A, 0xB6, 0x43, 0xE9, 0x9A, 0xB7, 0x43,
-	// Bytes 1540 - 157f
 	0xE9, 0x9A, 0xB8, 0x43, 0xE9, 0x9A, 0xB9, 0x43,
 	0xE9, 0x9B, 0x83, 0x43, 0xE9, 0x9B, 0xA2, 0x43,
 	0xE9, 0x9B, 0xA3, 0x43, 0xE9, 0x9B, 0xA8, 0x43,
@@ -811,8 +792,8 @@
 	0xE9, 0x9C, 0xA3, 0x43, 0xE9, 0x9C, 0xB2, 0x43,
 	0xE9, 0x9D, 0x88, 0x43, 0xE9, 0x9D, 0x91, 0x43,
 	0xE9, 0x9D, 0x96, 0x43, 0xE9, 0x9D, 0x9E, 0x43,
+	// Bytes 1500 - 153f
 	0xE9, 0x9D, 0xA2, 0x43, 0xE9, 0x9D, 0xA9, 0x43,
-	// Bytes 1580 - 15bf
 	0xE9, 0x9F, 0x8B, 0x43, 0xE9, 0x9F, 0x9B, 0x43,
 	0xE9, 0x9F, 0xA0, 0x43, 0xE9, 0x9F, 0xAD, 0x43,
 	0xE9, 0x9F, 0xB3, 0x43, 0xE9, 0x9F, 0xBF, 0x43,
@@ -820,8 +801,8 @@
 	0xE9, 0xA0, 0x8B, 0x43, 0xE9, 0xA0, 0x98, 0x43,
 	0xE9, 0xA0, 0xA9, 0x43, 0xE9, 0xA0, 0xBB, 0x43,
 	0xE9, 0xA1, 0x9E, 0x43, 0xE9, 0xA2, 0xA8, 0x43,
+	// Bytes 1540 - 157f
 	0xE9, 0xA3, 0x9B, 0x43, 0xE9, 0xA3, 0x9F, 0x43,
-	// Bytes 15c0 - 15ff
 	0xE9, 0xA3, 0xA2, 0x43, 0xE9, 0xA3, 0xAF, 0x43,
 	0xE9, 0xA3, 0xBC, 0x43, 0xE9, 0xA4, 0xA8, 0x43,
 	0xE9, 0xA4, 0xA9, 0x43, 0xE9, 0xA6, 0x96, 0x43,
@@ -829,8 +810,8 @@
 	0xE9, 0xA6, 0xAC, 0x43, 0xE9, 0xA7, 0x82, 0x43,
 	0xE9, 0xA7, 0xB1, 0x43, 0xE9, 0xA7, 0xBE, 0x43,
 	0xE9, 0xA9, 0xAA, 0x43, 0xE9, 0xAA, 0xA8, 0x43,
+	// Bytes 1580 - 15bf
 	0xE9, 0xAB, 0x98, 0x43, 0xE9, 0xAB, 0x9F, 0x43,
-	// Bytes 1600 - 163f
 	0xE9, 0xAC, 0x92, 0x43, 0xE9, 0xAC, 0xA5, 0x43,
 	0xE9, 0xAC, 0xAF, 0x43, 0xE9, 0xAC, 0xB2, 0x43,
 	0xE9, 0xAC, 0xBC, 0x43, 0xE9, 0xAD, 0x9A, 0x43,
@@ -838,8 +819,8 @@
 	0xE9, 0xB1, 0x97, 0x43, 0xE9, 0xB3, 0xA5, 0x43,
 	0xE9, 0xB3, 0xBD, 0x43, 0xE9, 0xB5, 0xA7, 0x43,
 	0xE9, 0xB6, 0xB4, 0x43, 0xE9, 0xB7, 0xBA, 0x43,
+	// Bytes 15c0 - 15ff
 	0xE9, 0xB8, 0x9E, 0x43, 0xE9, 0xB9, 0xB5, 0x43,
-	// Bytes 1640 - 167f
 	0xE9, 0xB9, 0xBF, 0x43, 0xE9, 0xBA, 0x97, 0x43,
 	0xE9, 0xBA, 0x9F, 0x43, 0xE9, 0xBA, 0xA5, 0x43,
 	0xE9, 0xBA, 0xBB, 0x43, 0xE9, 0xBB, 0x83, 0x43,
@@ -847,8 +828,8 @@
 	0xE9, 0xBB, 0x91, 0x43, 0xE9, 0xBB, 0xB9, 0x43,
 	0xE9, 0xBB, 0xBD, 0x43, 0xE9, 0xBB, 0xBE, 0x43,
 	0xE9, 0xBC, 0x85, 0x43, 0xE9, 0xBC, 0x8E, 0x43,
+	// Bytes 1600 - 163f
 	0xE9, 0xBC, 0x8F, 0x43, 0xE9, 0xBC, 0x93, 0x43,
-	// Bytes 1680 - 16bf
 	0xE9, 0xBC, 0x96, 0x43, 0xE9, 0xBC, 0xA0, 0x43,
 	0xE9, 0xBC, 0xBB, 0x43, 0xE9, 0xBD, 0x83, 0x43,
 	0xE9, 0xBD, 0x8A, 0x43, 0xE9, 0xBD, 0x92, 0x43,
@@ -856,8 +837,8 @@
 	0xE9, 0xBE, 0x9C, 0x43, 0xE9, 0xBE, 0x9F, 0x43,
 	0xE9, 0xBE, 0xA0, 0x43, 0xEA, 0x9C, 0xA7, 0x43,
 	0xEA, 0x9D, 0xAF, 0x43, 0xEA, 0xAC, 0xB7, 0x43,
+	// Bytes 1640 - 167f
 	0xEA, 0xAD, 0x92, 0x44, 0xF0, 0xA0, 0x84, 0xA2,
-	// Bytes 16c0 - 16ff
 	0x44, 0xF0, 0xA0, 0x94, 0x9C, 0x44, 0xF0, 0xA0,
 	0x94, 0xA5, 0x44, 0xF0, 0xA0, 0x95, 0x8B, 0x44,
 	0xF0, 0xA0, 0x98, 0xBA, 0x44, 0xF0, 0xA0, 0xA0,
@@ -865,8 +846,8 @@
 	0xA0, 0xA8, 0xAC, 0x44, 0xF0, 0xA0, 0xAD, 0xA3,
 	0x44, 0xF0, 0xA1, 0x93, 0xA4, 0x44, 0xF0, 0xA1,
 	0x9A, 0xA8, 0x44, 0xF0, 0xA1, 0x9B, 0xAA, 0x44,
+	// Bytes 1680 - 16bf
 	0xF0, 0xA1, 0xA7, 0x88, 0x44, 0xF0, 0xA1, 0xAC,
-	// Bytes 1700 - 173f
 	0x98, 0x44, 0xF0, 0xA1, 0xB4, 0x8B, 0x44, 0xF0,
 	0xA1, 0xB7, 0xA4, 0x44, 0xF0, 0xA1, 0xB7, 0xA6,
 	0x44, 0xF0, 0xA2, 0x86, 0x83, 0x44, 0xF0, 0xA2,
@@ -874,8 +855,8 @@
 	0xF0, 0xA2, 0x9B, 0x94, 0x44, 0xF0, 0xA2, 0xA1,
 	0x84, 0x44, 0xF0, 0xA2, 0xA1, 0x8A, 0x44, 0xF0,
 	0xA2, 0xAC, 0x8C, 0x44, 0xF0, 0xA2, 0xAF, 0xB1,
+	// Bytes 16c0 - 16ff
 	0x44, 0xF0, 0xA3, 0x80, 0x8A, 0x44, 0xF0, 0xA3,
-	// Bytes 1740 - 177f
 	0x8A, 0xB8, 0x44, 0xF0, 0xA3, 0x8D, 0x9F, 0x44,
 	0xF0, 0xA3, 0x8E, 0x93, 0x44, 0xF0, 0xA3, 0x8E,
 	0x9C, 0x44, 0xF0, 0xA3, 0x8F, 0x83, 0x44, 0xF0,
@@ -883,8 +864,8 @@
 	0x44, 0xF0, 0xA3, 0x9A, 0xA3, 0x44, 0xF0, 0xA3,
 	0xA2, 0xA7, 0x44, 0xF0, 0xA3, 0xAA, 0x8D, 0x44,
 	0xF0, 0xA3, 0xAB, 0xBA, 0x44, 0xF0, 0xA3, 0xB2,
+	// Bytes 1700 - 173f
 	0xBC, 0x44, 0xF0, 0xA3, 0xB4, 0x9E, 0x44, 0xF0,
-	// Bytes 1780 - 17bf
 	0xA3, 0xBB, 0x91, 0x44, 0xF0, 0xA3, 0xBD, 0x9E,
 	0x44, 0xF0, 0xA3, 0xBE, 0x8E, 0x44, 0xF0, 0xA4,
 	0x89, 0xA3, 0x44, 0xF0, 0xA4, 0x8B, 0xAE, 0x44,
@@ -892,8 +873,8 @@
 	0x88, 0x44, 0xF0, 0xA4, 0x9C, 0xB5, 0x44, 0xF0,
 	0xA4, 0xA0, 0x94, 0x44, 0xF0, 0xA4, 0xB0, 0xB6,
 	0x44, 0xF0, 0xA4, 0xB2, 0x92, 0x44, 0xF0, 0xA4,
+	// Bytes 1740 - 177f
 	0xBE, 0xA1, 0x44, 0xF0, 0xA4, 0xBE, 0xB8, 0x44,
-	// Bytes 17c0 - 17ff
 	0xF0, 0xA5, 0x81, 0x84, 0x44, 0xF0, 0xA5, 0x83,
 	0xB2, 0x44, 0xF0, 0xA5, 0x83, 0xB3, 0x44, 0xF0,
 	0xA5, 0x84, 0x99, 0x44, 0xF0, 0xA5, 0x84, 0xB3,
@@ -901,8 +882,8 @@
 	0x90, 0x9D, 0x44, 0xF0, 0xA5, 0x98, 0xA6, 0x44,
 	0xF0, 0xA5, 0x9A, 0x9A, 0x44, 0xF0, 0xA5, 0x9B,
 	0x85, 0x44, 0xF0, 0xA5, 0xA5, 0xBC, 0x44, 0xF0,
+	// Bytes 1780 - 17bf
 	0xA5, 0xAA, 0xA7, 0x44, 0xF0, 0xA5, 0xAE, 0xAB,
-	// Bytes 1800 - 183f
 	0x44, 0xF0, 0xA5, 0xB2, 0x80, 0x44, 0xF0, 0xA5,
 	0xB3, 0x90, 0x44, 0xF0, 0xA5, 0xBE, 0x86, 0x44,
 	0xF0, 0xA6, 0x87, 0x9A, 0x44, 0xF0, 0xA6, 0x88,
@@ -910,8 +891,8 @@
 	0xA6, 0x8B, 0x99, 0x44, 0xF0, 0xA6, 0x8C, 0xBE,
 	0x44, 0xF0, 0xA6, 0x93, 0x9A, 0x44, 0xF0, 0xA6,
 	0x94, 0xA3, 0x44, 0xF0, 0xA6, 0x96, 0xA8, 0x44,
+	// Bytes 17c0 - 17ff
 	0xF0, 0xA6, 0x9E, 0xA7, 0x44, 0xF0, 0xA6, 0x9E,
-	// Bytes 1840 - 187f
 	0xB5, 0x44, 0xF0, 0xA6, 0xAC, 0xBC, 0x44, 0xF0,
 	0xA6, 0xB0, 0xB6, 0x44, 0xF0, 0xA6, 0xB3, 0x95,
 	0x44, 0xF0, 0xA6, 0xB5, 0xAB, 0x44, 0xF0, 0xA6,
@@ -919,8 +900,8 @@
 	0xF0, 0xA7, 0x83, 0x92, 0x44, 0xF0, 0xA7, 0x8F,
 	0x8A, 0x44, 0xF0, 0xA7, 0x99, 0xA7, 0x44, 0xF0,
 	0xA7, 0xA2, 0xAE, 0x44, 0xF0, 0xA7, 0xA5, 0xA6,
+	// Bytes 1800 - 183f
 	0x44, 0xF0, 0xA7, 0xB2, 0xA8, 0x44, 0xF0, 0xA7,
-	// Bytes 1880 - 18bf
 	0xBB, 0x93, 0x44, 0xF0, 0xA7, 0xBC, 0xAF, 0x44,
 	0xF0, 0xA8, 0x97, 0x92, 0x44, 0xF0, 0xA8, 0x97,
 	0xAD, 0x44, 0xF0, 0xA8, 0x9C, 0xAE, 0x44, 0xF0,
@@ -928,584 +909,529 @@
 	0x44, 0xF0, 0xA9, 0x85, 0x85, 0x44, 0xF0, 0xA9,
 	0x87, 0x9F, 0x44, 0xF0, 0xA9, 0x88, 0x9A, 0x44,
 	0xF0, 0xA9, 0x90, 0x8A, 0x44, 0xF0, 0xA9, 0x92,
+	// Bytes 1840 - 187f
 	0x96, 0x44, 0xF0, 0xA9, 0x96, 0xB6, 0x44, 0xF0,
-	// Bytes 18c0 - 18ff
 	0xA9, 0xAC, 0xB0, 0x44, 0xF0, 0xAA, 0x83, 0x8E,
 	0x44, 0xF0, 0xAA, 0x84, 0x85, 0x44, 0xF0, 0xAA,
 	0x88, 0x8E, 0x44, 0xF0, 0xAA, 0x8A, 0x91, 0x44,
 	0xF0, 0xAA, 0x8E, 0x92, 0x44, 0xF0, 0xAA, 0x98,
-	0x80, 0x06, 0xE0, 0xA7, 0x87, 0xE0, 0xA6, 0xBE,
-	0x06, 0xE0, 0xA7, 0x87, 0xE0, 0xA7, 0x97, 0x06,
-	0xE0, 0xAD, 0x87, 0xE0, 0xAC, 0xBE, 0x06, 0xE0,
-	0xAD, 0x87, 0xE0, 0xAD, 0x96, 0x06, 0xE0, 0xAD,
+	0x80, 0x42, 0x21, 0x21, 0x42, 0x21, 0x3F, 0x42,
+	0x2E, 0x2E, 0x42, 0x30, 0x2C, 0x42, 0x30, 0x2E,
+	0x42, 0x31, 0x2C, 0x42, 0x31, 0x2E, 0x42, 0x31,
+	// Bytes 1880 - 18bf
+	0x30, 0x42, 0x31, 0x31, 0x42, 0x31, 0x32, 0x42,
+	0x31, 0x33, 0x42, 0x31, 0x34, 0x42, 0x31, 0x35,
+	0x42, 0x31, 0x36, 0x42, 0x31, 0x37, 0x42, 0x31,
+	0x38, 0x42, 0x31, 0x39, 0x42, 0x32, 0x2C, 0x42,
+	0x32, 0x2E, 0x42, 0x32, 0x30, 0x42, 0x32, 0x31,
+	0x42, 0x32, 0x32, 0x42, 0x32, 0x33, 0x42, 0x32,
+	0x34, 0x42, 0x32, 0x35, 0x42, 0x32, 0x36, 0x42,
+	0x32, 0x37, 0x42, 0x32, 0x38, 0x42, 0x32, 0x39,
+	// Bytes 18c0 - 18ff
+	0x42, 0x33, 0x2C, 0x42, 0x33, 0x2E, 0x42, 0x33,
+	0x30, 0x42, 0x33, 0x31, 0x42, 0x33, 0x32, 0x42,
+	0x33, 0x33, 0x42, 0x33, 0x34, 0x42, 0x33, 0x35,
+	0x42, 0x33, 0x36, 0x42, 0x33, 0x37, 0x42, 0x33,
+	0x38, 0x42, 0x33, 0x39, 0x42, 0x34, 0x2C, 0x42,
+	0x34, 0x2E, 0x42, 0x34, 0x30, 0x42, 0x34, 0x31,
+	0x42, 0x34, 0x32, 0x42, 0x34, 0x33, 0x42, 0x34,
+	0x34, 0x42, 0x34, 0x35, 0x42, 0x34, 0x36, 0x42,
 	// Bytes 1900 - 193f
-	0x87, 0xE0, 0xAD, 0x97, 0x06, 0xE0, 0xAE, 0x92,
-	0xE0, 0xAF, 0x97, 0x06, 0xE0, 0xAF, 0x86, 0xE0,
-	0xAE, 0xBE, 0x06, 0xE0, 0xAF, 0x86, 0xE0, 0xAF,
-	0x97, 0x06, 0xE0, 0xAF, 0x87, 0xE0, 0xAE, 0xBE,
-	0x06, 0xE0, 0xB2, 0xBF, 0xE0, 0xB3, 0x95, 0x06,
-	0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x95, 0x06, 0xE0,
-	0xB3, 0x86, 0xE0, 0xB3, 0x96, 0x06, 0xE0, 0xB5,
-	0x86, 0xE0, 0xB4, 0xBE, 0x06, 0xE0, 0xB5, 0x86,
+	0x34, 0x37, 0x42, 0x34, 0x38, 0x42, 0x34, 0x39,
+	0x42, 0x35, 0x2C, 0x42, 0x35, 0x2E, 0x42, 0x35,
+	0x30, 0x42, 0x36, 0x2C, 0x42, 0x36, 0x2E, 0x42,
+	0x37, 0x2C, 0x42, 0x37, 0x2E, 0x42, 0x38, 0x2C,
+	0x42, 0x38, 0x2E, 0x42, 0x39, 0x2C, 0x42, 0x39,
+	0x2E, 0x42, 0x3D, 0x3D, 0x42, 0x3F, 0x21, 0x42,
+	0x3F, 0x3F, 0x42, 0x41, 0x55, 0x42, 0x42, 0x71,
+	0x42, 0x43, 0x44, 0x42, 0x44, 0x4A, 0x42, 0x44,
 	// Bytes 1940 - 197f
-	0xE0, 0xB5, 0x97, 0x06, 0xE0, 0xB5, 0x87, 0xE0,
-	0xB4, 0xBE, 0x06, 0xE0, 0xB7, 0x99, 0xE0, 0xB7,
-	0x9F, 0x06, 0xE1, 0x80, 0xA5, 0xE1, 0x80, 0xAE,
-	0x06, 0xE1, 0xAC, 0x85, 0xE1, 0xAC, 0xB5, 0x06,
-	0xE1, 0xAC, 0x87, 0xE1, 0xAC, 0xB5, 0x06, 0xE1,
-	0xAC, 0x89, 0xE1, 0xAC, 0xB5, 0x06, 0xE1, 0xAC,
-	0x8B, 0xE1, 0xAC, 0xB5, 0x06, 0xE1, 0xAC, 0x8D,
-	0xE1, 0xAC, 0xB5, 0x06, 0xE1, 0xAC, 0x91, 0xE1,
+	0x5A, 0x42, 0x44, 0x7A, 0x42, 0x47, 0x42, 0x42,
+	0x47, 0x79, 0x42, 0x48, 0x50, 0x42, 0x48, 0x56,
+	0x42, 0x48, 0x67, 0x42, 0x48, 0x7A, 0x42, 0x49,
+	0x49, 0x42, 0x49, 0x4A, 0x42, 0x49, 0x55, 0x42,
+	0x49, 0x56, 0x42, 0x49, 0x58, 0x42, 0x4B, 0x42,
+	0x42, 0x4B, 0x4B, 0x42, 0x4B, 0x4D, 0x42, 0x4C,
+	0x4A, 0x42, 0x4C, 0x6A, 0x42, 0x4D, 0x42, 0x42,
+	0x4D, 0x43, 0x42, 0x4D, 0x44, 0x42, 0x4D, 0x56,
 	// Bytes 1980 - 19bf
-	0xAC, 0xB5, 0x06, 0xE1, 0xAC, 0xBA, 0xE1, 0xAC,
-	0xB5, 0x06, 0xE1, 0xAC, 0xBC, 0xE1, 0xAC, 0xB5,
-	0x06, 0xE1, 0xAC, 0xBE, 0xE1, 0xAC, 0xB5, 0x06,
-	0xE1, 0xAC, 0xBF, 0xE1, 0xAC, 0xB5, 0x06, 0xE1,
-	0xAD, 0x82, 0xE1, 0xAC, 0xB5, 0x08, 0xF0, 0x91,
-	0x84, 0xB1, 0xF0, 0x91, 0x84, 0xA7, 0x08, 0xF0,
-	0x91, 0x84, 0xB2, 0xF0, 0x91, 0x84, 0xA7, 0x08,
-	0xF0, 0x91, 0x8D, 0x87, 0xF0, 0x91, 0x8C, 0xBE,
+	0x42, 0x4D, 0x57, 0x42, 0x4E, 0x4A, 0x42, 0x4E,
+	0x6A, 0x42, 0x4E, 0x6F, 0x42, 0x50, 0x48, 0x42,
+	0x50, 0x52, 0x42, 0x50, 0x61, 0x42, 0x52, 0x73,
+	0x42, 0x53, 0x44, 0x42, 0x53, 0x4D, 0x42, 0x53,
+	0x53, 0x42, 0x53, 0x76, 0x42, 0x54, 0x4D, 0x42,
+	0x56, 0x49, 0x42, 0x57, 0x43, 0x42, 0x57, 0x5A,
+	0x42, 0x57, 0x62, 0x42, 0x58, 0x49, 0x42, 0x63,
+	0x63, 0x42, 0x63, 0x64, 0x42, 0x63, 0x6D, 0x42,
 	// Bytes 19c0 - 19ff
-	0x08, 0xF0, 0x91, 0x8D, 0x87, 0xF0, 0x91, 0x8D,
-	0x97, 0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91,
-	0x92, 0xB0, 0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0,
-	0x91, 0x92, 0xBA, 0x08, 0xF0, 0x91, 0x92, 0xB9,
-	0xF0, 0x91, 0x92, 0xBD, 0x08, 0xF0, 0x91, 0x96,
-	0xB8, 0xF0, 0x91, 0x96, 0xAF, 0x08, 0xF0, 0x91,
-	0x96, 0xB9, 0xF0, 0x91, 0x96, 0xAF, 0x09, 0xE0,
-	0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xE0, 0xB3, 0x95,
+	0x64, 0x42, 0x42, 0x64, 0x61, 0x42, 0x64, 0x6C,
+	0x42, 0x64, 0x6D, 0x42, 0x64, 0x7A, 0x42, 0x65,
+	0x56, 0x42, 0x66, 0x66, 0x42, 0x66, 0x69, 0x42,
+	0x66, 0x6C, 0x42, 0x66, 0x6D, 0x42, 0x68, 0x61,
+	0x42, 0x69, 0x69, 0x42, 0x69, 0x6A, 0x42, 0x69,
+	0x6E, 0x42, 0x69, 0x76, 0x42, 0x69, 0x78, 0x42,
+	0x6B, 0x41, 0x42, 0x6B, 0x56, 0x42, 0x6B, 0x57,
+	0x42, 0x6B, 0x67, 0x42, 0x6B, 0x6C, 0x42, 0x6B,
 	// Bytes 1a00 - 1a3f
-	0x42, 0x21, 0x21, 0x42, 0x21, 0x3F, 0x42, 0x2E,
-	0x2E, 0x42, 0x30, 0x2C, 0x42, 0x30, 0x2E, 0x42,
-	0x31, 0x2C, 0x42, 0x31, 0x2E, 0x42, 0x31, 0x30,
-	0x42, 0x31, 0x31, 0x42, 0x31, 0x32, 0x42, 0x31,
-	0x33, 0x42, 0x31, 0x34, 0x42, 0x31, 0x35, 0x42,
-	0x31, 0x36, 0x42, 0x31, 0x37, 0x42, 0x31, 0x38,
-	0x42, 0x31, 0x39, 0x42, 0x32, 0x2C, 0x42, 0x32,
-	0x2E, 0x42, 0x32, 0x30, 0x42, 0x32, 0x31, 0x42,
+	0x6D, 0x42, 0x6B, 0x74, 0x42, 0x6C, 0x6A, 0x42,
+	0x6C, 0x6D, 0x42, 0x6C, 0x6E, 0x42, 0x6C, 0x78,
+	0x42, 0x6D, 0x32, 0x42, 0x6D, 0x33, 0x42, 0x6D,
+	0x41, 0x42, 0x6D, 0x56, 0x42, 0x6D, 0x57, 0x42,
+	0x6D, 0x62, 0x42, 0x6D, 0x67, 0x42, 0x6D, 0x6C,
+	0x42, 0x6D, 0x6D, 0x42, 0x6D, 0x73, 0x42, 0x6E,
+	0x41, 0x42, 0x6E, 0x46, 0x42, 0x6E, 0x56, 0x42,
+	0x6E, 0x57, 0x42, 0x6E, 0x6A, 0x42, 0x6E, 0x6D,
 	// Bytes 1a40 - 1a7f
-	0x32, 0x32, 0x42, 0x32, 0x33, 0x42, 0x32, 0x34,
-	0x42, 0x32, 0x35, 0x42, 0x32, 0x36, 0x42, 0x32,
-	0x37, 0x42, 0x32, 0x38, 0x42, 0x32, 0x39, 0x42,
-	0x33, 0x2C, 0x42, 0x33, 0x2E, 0x42, 0x33, 0x30,
-	0x42, 0x33, 0x31, 0x42, 0x33, 0x32, 0x42, 0x33,
-	0x33, 0x42, 0x33, 0x34, 0x42, 0x33, 0x35, 0x42,
-	0x33, 0x36, 0x42, 0x33, 0x37, 0x42, 0x33, 0x38,
-	0x42, 0x33, 0x39, 0x42, 0x34, 0x2C, 0x42, 0x34,
+	0x42, 0x6E, 0x73, 0x42, 0x6F, 0x56, 0x42, 0x70,
+	0x41, 0x42, 0x70, 0x46, 0x42, 0x70, 0x56, 0x42,
+	0x70, 0x57, 0x42, 0x70, 0x63, 0x42, 0x70, 0x73,
+	0x42, 0x73, 0x72, 0x42, 0x73, 0x74, 0x42, 0x76,
+	0x69, 0x42, 0x78, 0x69, 0x43, 0x28, 0x31, 0x29,
+	0x43, 0x28, 0x32, 0x29, 0x43, 0x28, 0x33, 0x29,
+	0x43, 0x28, 0x34, 0x29, 0x43, 0x28, 0x35, 0x29,
+	0x43, 0x28, 0x36, 0x29, 0x43, 0x28, 0x37, 0x29,
 	// Bytes 1a80 - 1abf
-	0x2E, 0x42, 0x34, 0x30, 0x42, 0x34, 0x31, 0x42,
-	0x34, 0x32, 0x42, 0x34, 0x33, 0x42, 0x34, 0x34,
-	0x42, 0x34, 0x35, 0x42, 0x34, 0x36, 0x42, 0x34,
-	0x37, 0x42, 0x34, 0x38, 0x42, 0x34, 0x39, 0x42,
-	0x35, 0x2C, 0x42, 0x35, 0x2E, 0x42, 0x35, 0x30,
-	0x42, 0x36, 0x2C, 0x42, 0x36, 0x2E, 0x42, 0x37,
-	0x2C, 0x42, 0x37, 0x2E, 0x42, 0x38, 0x2C, 0x42,
-	0x38, 0x2E, 0x42, 0x39, 0x2C, 0x42, 0x39, 0x2E,
+	0x43, 0x28, 0x38, 0x29, 0x43, 0x28, 0x39, 0x29,
+	0x43, 0x28, 0x41, 0x29, 0x43, 0x28, 0x42, 0x29,
+	0x43, 0x28, 0x43, 0x29, 0x43, 0x28, 0x44, 0x29,
+	0x43, 0x28, 0x45, 0x29, 0x43, 0x28, 0x46, 0x29,
+	0x43, 0x28, 0x47, 0x29, 0x43, 0x28, 0x48, 0x29,
+	0x43, 0x28, 0x49, 0x29, 0x43, 0x28, 0x4A, 0x29,
+	0x43, 0x28, 0x4B, 0x29, 0x43, 0x28, 0x4C, 0x29,
+	0x43, 0x28, 0x4D, 0x29, 0x43, 0x28, 0x4E, 0x29,
 	// Bytes 1ac0 - 1aff
-	0x42, 0x3D, 0x3D, 0x42, 0x3F, 0x21, 0x42, 0x3F,
-	0x3F, 0x42, 0x41, 0x55, 0x42, 0x42, 0x71, 0x42,
-	0x43, 0x44, 0x42, 0x44, 0x4A, 0x42, 0x44, 0x5A,
-	0x42, 0x44, 0x7A, 0x42, 0x47, 0x42, 0x42, 0x47,
-	0x79, 0x42, 0x48, 0x50, 0x42, 0x48, 0x56, 0x42,
-	0x48, 0x67, 0x42, 0x48, 0x7A, 0x42, 0x49, 0x49,
-	0x42, 0x49, 0x4A, 0x42, 0x49, 0x55, 0x42, 0x49,
-	0x56, 0x42, 0x49, 0x58, 0x42, 0x4B, 0x42, 0x42,
+	0x43, 0x28, 0x4F, 0x29, 0x43, 0x28, 0x50, 0x29,
+	0x43, 0x28, 0x51, 0x29, 0x43, 0x28, 0x52, 0x29,
+	0x43, 0x28, 0x53, 0x29, 0x43, 0x28, 0x54, 0x29,
+	0x43, 0x28, 0x55, 0x29, 0x43, 0x28, 0x56, 0x29,
+	0x43, 0x28, 0x57, 0x29, 0x43, 0x28, 0x58, 0x29,
+	0x43, 0x28, 0x59, 0x29, 0x43, 0x28, 0x5A, 0x29,
+	0x43, 0x28, 0x61, 0x29, 0x43, 0x28, 0x62, 0x29,
+	0x43, 0x28, 0x63, 0x29, 0x43, 0x28, 0x64, 0x29,
 	// Bytes 1b00 - 1b3f
-	0x4B, 0x4B, 0x42, 0x4B, 0x4D, 0x42, 0x4C, 0x4A,
-	0x42, 0x4C, 0x6A, 0x42, 0x4D, 0x42, 0x42, 0x4D,
-	0x43, 0x42, 0x4D, 0x44, 0x42, 0x4D, 0x56, 0x42,
-	0x4D, 0x57, 0x42, 0x4E, 0x4A, 0x42, 0x4E, 0x6A,
-	0x42, 0x4E, 0x6F, 0x42, 0x50, 0x48, 0x42, 0x50,
-	0x52, 0x42, 0x50, 0x61, 0x42, 0x52, 0x73, 0x42,
-	0x53, 0x44, 0x42, 0x53, 0x4D, 0x42, 0x53, 0x53,
-	0x42, 0x53, 0x76, 0x42, 0x54, 0x4D, 0x42, 0x56,
+	0x43, 0x28, 0x65, 0x29, 0x43, 0x28, 0x66, 0x29,
+	0x43, 0x28, 0x67, 0x29, 0x43, 0x28, 0x68, 0x29,
+	0x43, 0x28, 0x69, 0x29, 0x43, 0x28, 0x6A, 0x29,
+	0x43, 0x28, 0x6B, 0x29, 0x43, 0x28, 0x6C, 0x29,
+	0x43, 0x28, 0x6D, 0x29, 0x43, 0x28, 0x6E, 0x29,
+	0x43, 0x28, 0x6F, 0x29, 0x43, 0x28, 0x70, 0x29,
+	0x43, 0x28, 0x71, 0x29, 0x43, 0x28, 0x72, 0x29,
+	0x43, 0x28, 0x73, 0x29, 0x43, 0x28, 0x74, 0x29,
 	// Bytes 1b40 - 1b7f
-	0x49, 0x42, 0x57, 0x43, 0x42, 0x57, 0x5A, 0x42,
-	0x57, 0x62, 0x42, 0x58, 0x49, 0x42, 0x63, 0x63,
-	0x42, 0x63, 0x64, 0x42, 0x63, 0x6D, 0x42, 0x64,
-	0x42, 0x42, 0x64, 0x61, 0x42, 0x64, 0x6C, 0x42,
-	0x64, 0x6D, 0x42, 0x64, 0x7A, 0x42, 0x65, 0x56,
-	0x42, 0x66, 0x66, 0x42, 0x66, 0x69, 0x42, 0x66,
-	0x6C, 0x42, 0x66, 0x6D, 0x42, 0x68, 0x61, 0x42,
-	0x69, 0x69, 0x42, 0x69, 0x6A, 0x42, 0x69, 0x6E,
+	0x43, 0x28, 0x75, 0x29, 0x43, 0x28, 0x76, 0x29,
+	0x43, 0x28, 0x77, 0x29, 0x43, 0x28, 0x78, 0x29,
+	0x43, 0x28, 0x79, 0x29, 0x43, 0x28, 0x7A, 0x29,
+	0x43, 0x2E, 0x2E, 0x2E, 0x43, 0x31, 0x30, 0x2E,
+	0x43, 0x31, 0x31, 0x2E, 0x43, 0x31, 0x32, 0x2E,
+	0x43, 0x31, 0x33, 0x2E, 0x43, 0x31, 0x34, 0x2E,
+	0x43, 0x31, 0x35, 0x2E, 0x43, 0x31, 0x36, 0x2E,
+	0x43, 0x31, 0x37, 0x2E, 0x43, 0x31, 0x38, 0x2E,
 	// Bytes 1b80 - 1bbf
-	0x42, 0x69, 0x76, 0x42, 0x69, 0x78, 0x42, 0x6B,
-	0x41, 0x42, 0x6B, 0x56, 0x42, 0x6B, 0x57, 0x42,
-	0x6B, 0x67, 0x42, 0x6B, 0x6C, 0x42, 0x6B, 0x6D,
-	0x42, 0x6B, 0x74, 0x42, 0x6C, 0x6A, 0x42, 0x6C,
-	0x6D, 0x42, 0x6C, 0x6E, 0x42, 0x6C, 0x78, 0x42,
-	0x6D, 0x32, 0x42, 0x6D, 0x33, 0x42, 0x6D, 0x41,
-	0x42, 0x6D, 0x56, 0x42, 0x6D, 0x57, 0x42, 0x6D,
-	0x62, 0x42, 0x6D, 0x67, 0x42, 0x6D, 0x6C, 0x42,
+	0x43, 0x31, 0x39, 0x2E, 0x43, 0x32, 0x30, 0x2E,
+	0x43, 0x3A, 0x3A, 0x3D, 0x43, 0x3D, 0x3D, 0x3D,
+	0x43, 0x43, 0x6F, 0x2E, 0x43, 0x46, 0x41, 0x58,
+	0x43, 0x47, 0x48, 0x7A, 0x43, 0x47, 0x50, 0x61,
+	0x43, 0x49, 0x49, 0x49, 0x43, 0x4C, 0x54, 0x44,
+	0x43, 0x4C, 0xC2, 0xB7, 0x43, 0x4D, 0x48, 0x7A,
+	0x43, 0x4D, 0x50, 0x61, 0x43, 0x4D, 0xCE, 0xA9,
+	0x43, 0x50, 0x50, 0x4D, 0x43, 0x50, 0x50, 0x56,
 	// Bytes 1bc0 - 1bff
-	0x6D, 0x6D, 0x42, 0x6D, 0x73, 0x42, 0x6E, 0x41,
-	0x42, 0x6E, 0x46, 0x42, 0x6E, 0x56, 0x42, 0x6E,
-	0x57, 0x42, 0x6E, 0x6A, 0x42, 0x6E, 0x6D, 0x42,
-	0x6E, 0x73, 0x42, 0x6F, 0x56, 0x42, 0x70, 0x41,
-	0x42, 0x70, 0x46, 0x42, 0x70, 0x56, 0x42, 0x70,
-	0x57, 0x42, 0x70, 0x63, 0x42, 0x70, 0x73, 0x42,
-	0x73, 0x72, 0x42, 0x73, 0x74, 0x42, 0x76, 0x69,
-	0x42, 0x78, 0x69, 0x43, 0x28, 0x31, 0x29, 0x43,
+	0x43, 0x50, 0x54, 0x45, 0x43, 0x54, 0x45, 0x4C,
+	0x43, 0x54, 0x48, 0x7A, 0x43, 0x56, 0x49, 0x49,
+	0x43, 0x58, 0x49, 0x49, 0x43, 0x61, 0x2F, 0x63,
+	0x43, 0x61, 0x2F, 0x73, 0x43, 0x61, 0xCA, 0xBE,
+	0x43, 0x62, 0x61, 0x72, 0x43, 0x63, 0x2F, 0x6F,
+	0x43, 0x63, 0x2F, 0x75, 0x43, 0x63, 0x61, 0x6C,
+	0x43, 0x63, 0x6D, 0x32, 0x43, 0x63, 0x6D, 0x33,
+	0x43, 0x64, 0x6D, 0x32, 0x43, 0x64, 0x6D, 0x33,
 	// Bytes 1c00 - 1c3f
-	0x28, 0x32, 0x29, 0x43, 0x28, 0x33, 0x29, 0x43,
-	0x28, 0x34, 0x29, 0x43, 0x28, 0x35, 0x29, 0x43,
-	0x28, 0x36, 0x29, 0x43, 0x28, 0x37, 0x29, 0x43,
-	0x28, 0x38, 0x29, 0x43, 0x28, 0x39, 0x29, 0x43,
-	0x28, 0x41, 0x29, 0x43, 0x28, 0x42, 0x29, 0x43,
-	0x28, 0x43, 0x29, 0x43, 0x28, 0x44, 0x29, 0x43,
-	0x28, 0x45, 0x29, 0x43, 0x28, 0x46, 0x29, 0x43,
-	0x28, 0x47, 0x29, 0x43, 0x28, 0x48, 0x29, 0x43,
+	0x43, 0x65, 0x72, 0x67, 0x43, 0x66, 0x66, 0x69,
+	0x43, 0x66, 0x66, 0x6C, 0x43, 0x67, 0x61, 0x6C,
+	0x43, 0x68, 0x50, 0x61, 0x43, 0x69, 0x69, 0x69,
+	0x43, 0x6B, 0x48, 0x7A, 0x43, 0x6B, 0x50, 0x61,
+	0x43, 0x6B, 0x6D, 0x32, 0x43, 0x6B, 0x6D, 0x33,
+	0x43, 0x6B, 0xCE, 0xA9, 0x43, 0x6C, 0x6F, 0x67,
+	0x43, 0x6C, 0xC2, 0xB7, 0x43, 0x6D, 0x69, 0x6C,
+	0x43, 0x6D, 0x6D, 0x32, 0x43, 0x6D, 0x6D, 0x33,
 	// Bytes 1c40 - 1c7f
-	0x28, 0x49, 0x29, 0x43, 0x28, 0x4A, 0x29, 0x43,
-	0x28, 0x4B, 0x29, 0x43, 0x28, 0x4C, 0x29, 0x43,
-	0x28, 0x4D, 0x29, 0x43, 0x28, 0x4E, 0x29, 0x43,
-	0x28, 0x4F, 0x29, 0x43, 0x28, 0x50, 0x29, 0x43,
-	0x28, 0x51, 0x29, 0x43, 0x28, 0x52, 0x29, 0x43,
-	0x28, 0x53, 0x29, 0x43, 0x28, 0x54, 0x29, 0x43,
-	0x28, 0x55, 0x29, 0x43, 0x28, 0x56, 0x29, 0x43,
-	0x28, 0x57, 0x29, 0x43, 0x28, 0x58, 0x29, 0x43,
+	0x43, 0x6D, 0x6F, 0x6C, 0x43, 0x72, 0x61, 0x64,
+	0x43, 0x76, 0x69, 0x69, 0x43, 0x78, 0x69, 0x69,
+	0x43, 0xC2, 0xB0, 0x43, 0x43, 0xC2, 0xB0, 0x46,
+	0x43, 0xCA, 0xBC, 0x6E, 0x43, 0xCE, 0xBC, 0x41,
+	0x43, 0xCE, 0xBC, 0x46, 0x43, 0xCE, 0xBC, 0x56,
+	0x43, 0xCE, 0xBC, 0x57, 0x43, 0xCE, 0xBC, 0x67,
+	0x43, 0xCE, 0xBC, 0x6C, 0x43, 0xCE, 0xBC, 0x6D,
+	0x43, 0xCE, 0xBC, 0x73, 0x44, 0x28, 0x31, 0x30,
 	// Bytes 1c80 - 1cbf
-	0x28, 0x59, 0x29, 0x43, 0x28, 0x5A, 0x29, 0x43,
-	0x28, 0x61, 0x29, 0x43, 0x28, 0x62, 0x29, 0x43,
-	0x28, 0x63, 0x29, 0x43, 0x28, 0x64, 0x29, 0x43,
-	0x28, 0x65, 0x29, 0x43, 0x28, 0x66, 0x29, 0x43,
-	0x28, 0x67, 0x29, 0x43, 0x28, 0x68, 0x29, 0x43,
-	0x28, 0x69, 0x29, 0x43, 0x28, 0x6A, 0x29, 0x43,
-	0x28, 0x6B, 0x29, 0x43, 0x28, 0x6C, 0x29, 0x43,
-	0x28, 0x6D, 0x29, 0x43, 0x28, 0x6E, 0x29, 0x43,
+	0x29, 0x44, 0x28, 0x31, 0x31, 0x29, 0x44, 0x28,
+	0x31, 0x32, 0x29, 0x44, 0x28, 0x31, 0x33, 0x29,
+	0x44, 0x28, 0x31, 0x34, 0x29, 0x44, 0x28, 0x31,
+	0x35, 0x29, 0x44, 0x28, 0x31, 0x36, 0x29, 0x44,
+	0x28, 0x31, 0x37, 0x29, 0x44, 0x28, 0x31, 0x38,
+	0x29, 0x44, 0x28, 0x31, 0x39, 0x29, 0x44, 0x28,
+	0x32, 0x30, 0x29, 0x44, 0x30, 0xE7, 0x82, 0xB9,
+	0x44, 0x31, 0xE2, 0x81, 0x84, 0x44, 0x31, 0xE6,
 	// Bytes 1cc0 - 1cff
-	0x28, 0x6F, 0x29, 0x43, 0x28, 0x70, 0x29, 0x43,
-	0x28, 0x71, 0x29, 0x43, 0x28, 0x72, 0x29, 0x43,
-	0x28, 0x73, 0x29, 0x43, 0x28, 0x74, 0x29, 0x43,
-	0x28, 0x75, 0x29, 0x43, 0x28, 0x76, 0x29, 0x43,
-	0x28, 0x77, 0x29, 0x43, 0x28, 0x78, 0x29, 0x43,
-	0x28, 0x79, 0x29, 0x43, 0x28, 0x7A, 0x29, 0x43,
-	0x2E, 0x2E, 0x2E, 0x43, 0x31, 0x30, 0x2E, 0x43,
-	0x31, 0x31, 0x2E, 0x43, 0x31, 0x32, 0x2E, 0x43,
+	0x97, 0xA5, 0x44, 0x31, 0xE6, 0x9C, 0x88, 0x44,
+	0x31, 0xE7, 0x82, 0xB9, 0x44, 0x32, 0xE6, 0x97,
+	0xA5, 0x44, 0x32, 0xE6, 0x9C, 0x88, 0x44, 0x32,
+	0xE7, 0x82, 0xB9, 0x44, 0x33, 0xE6, 0x97, 0xA5,
+	0x44, 0x33, 0xE6, 0x9C, 0x88, 0x44, 0x33, 0xE7,
+	0x82, 0xB9, 0x44, 0x34, 0xE6, 0x97, 0xA5, 0x44,
+	0x34, 0xE6, 0x9C, 0x88, 0x44, 0x34, 0xE7, 0x82,
+	0xB9, 0x44, 0x35, 0xE6, 0x97, 0xA5, 0x44, 0x35,
 	// Bytes 1d00 - 1d3f
-	0x31, 0x33, 0x2E, 0x43, 0x31, 0x34, 0x2E, 0x43,
-	0x31, 0x35, 0x2E, 0x43, 0x31, 0x36, 0x2E, 0x43,
-	0x31, 0x37, 0x2E, 0x43, 0x31, 0x38, 0x2E, 0x43,
-	0x31, 0x39, 0x2E, 0x43, 0x32, 0x30, 0x2E, 0x43,
-	0x3A, 0x3A, 0x3D, 0x43, 0x3D, 0x3D, 0x3D, 0x43,
-	0x43, 0x6F, 0x2E, 0x43, 0x46, 0x41, 0x58, 0x43,
-	0x47, 0x48, 0x7A, 0x43, 0x47, 0x50, 0x61, 0x43,
-	0x49, 0x49, 0x49, 0x43, 0x4C, 0x54, 0x44, 0x43,
+	0xE6, 0x9C, 0x88, 0x44, 0x35, 0xE7, 0x82, 0xB9,
+	0x44, 0x36, 0xE6, 0x97, 0xA5, 0x44, 0x36, 0xE6,
+	0x9C, 0x88, 0x44, 0x36, 0xE7, 0x82, 0xB9, 0x44,
+	0x37, 0xE6, 0x97, 0xA5, 0x44, 0x37, 0xE6, 0x9C,
+	0x88, 0x44, 0x37, 0xE7, 0x82, 0xB9, 0x44, 0x38,
+	0xE6, 0x97, 0xA5, 0x44, 0x38, 0xE6, 0x9C, 0x88,
+	0x44, 0x38, 0xE7, 0x82, 0xB9, 0x44, 0x39, 0xE6,
+	0x97, 0xA5, 0x44, 0x39, 0xE6, 0x9C, 0x88, 0x44,
 	// Bytes 1d40 - 1d7f
-	0x4C, 0xC2, 0xB7, 0x43, 0x4D, 0x48, 0x7A, 0x43,
-	0x4D, 0x50, 0x61, 0x43, 0x4D, 0xCE, 0xA9, 0x43,
-	0x50, 0x50, 0x4D, 0x43, 0x50, 0x50, 0x56, 0x43,
-	0x50, 0x54, 0x45, 0x43, 0x54, 0x45, 0x4C, 0x43,
-	0x54, 0x48, 0x7A, 0x43, 0x56, 0x49, 0x49, 0x43,
-	0x58, 0x49, 0x49, 0x43, 0x61, 0x2F, 0x63, 0x43,
-	0x61, 0x2F, 0x73, 0x43, 0x61, 0xCA, 0xBE, 0x43,
-	0x62, 0x61, 0x72, 0x43, 0x63, 0x2F, 0x6F, 0x43,
+	0x39, 0xE7, 0x82, 0xB9, 0x44, 0x56, 0x49, 0x49,
+	0x49, 0x44, 0x61, 0x2E, 0x6D, 0x2E, 0x44, 0x6B,
+	0x63, 0x61, 0x6C, 0x44, 0x70, 0x2E, 0x6D, 0x2E,
+	0x44, 0x76, 0x69, 0x69, 0x69, 0x44, 0xD5, 0xA5,
+	0xD6, 0x82, 0x44, 0xD5, 0xB4, 0xD5, 0xA5, 0x44,
+	0xD5, 0xB4, 0xD5, 0xAB, 0x44, 0xD5, 0xB4, 0xD5,
+	0xAD, 0x44, 0xD5, 0xB4, 0xD5, 0xB6, 0x44, 0xD5,
+	0xBE, 0xD5, 0xB6, 0x44, 0xD7, 0x90, 0xD7, 0x9C,
 	// Bytes 1d80 - 1dbf
-	0x63, 0x2F, 0x75, 0x43, 0x63, 0x61, 0x6C, 0x43,
-	0x63, 0x6D, 0x32, 0x43, 0x63, 0x6D, 0x33, 0x43,
-	0x64, 0x6D, 0x32, 0x43, 0x64, 0x6D, 0x33, 0x43,
-	0x65, 0x72, 0x67, 0x43, 0x66, 0x66, 0x69, 0x43,
-	0x66, 0x66, 0x6C, 0x43, 0x67, 0x61, 0x6C, 0x43,
-	0x68, 0x50, 0x61, 0x43, 0x69, 0x69, 0x69, 0x43,
-	0x6B, 0x48, 0x7A, 0x43, 0x6B, 0x50, 0x61, 0x43,
-	0x6B, 0x6D, 0x32, 0x43, 0x6B, 0x6D, 0x33, 0x43,
+	0x44, 0xD8, 0xA7, 0xD9, 0xB4, 0x44, 0xD8, 0xA8,
+	0xD8, 0xAC, 0x44, 0xD8, 0xA8, 0xD8, 0xAD, 0x44,
+	0xD8, 0xA8, 0xD8, 0xAE, 0x44, 0xD8, 0xA8, 0xD8,
+	0xB1, 0x44, 0xD8, 0xA8, 0xD8, 0xB2, 0x44, 0xD8,
+	0xA8, 0xD9, 0x85, 0x44, 0xD8, 0xA8, 0xD9, 0x86,
+	0x44, 0xD8, 0xA8, 0xD9, 0x87, 0x44, 0xD8, 0xA8,
+	0xD9, 0x89, 0x44, 0xD8, 0xA8, 0xD9, 0x8A, 0x44,
+	0xD8, 0xAA, 0xD8, 0xAC, 0x44, 0xD8, 0xAA, 0xD8,
 	// Bytes 1dc0 - 1dff
-	0x6B, 0xCE, 0xA9, 0x43, 0x6C, 0x6F, 0x67, 0x43,
-	0x6C, 0xC2, 0xB7, 0x43, 0x6D, 0x69, 0x6C, 0x43,
-	0x6D, 0x6D, 0x32, 0x43, 0x6D, 0x6D, 0x33, 0x43,
-	0x6D, 0x6F, 0x6C, 0x43, 0x72, 0x61, 0x64, 0x43,
-	0x76, 0x69, 0x69, 0x43, 0x78, 0x69, 0x69, 0x43,
-	0xC2, 0xB0, 0x43, 0x43, 0xC2, 0xB0, 0x46, 0x43,
-	0xCA, 0xBC, 0x6E, 0x43, 0xCE, 0xBC, 0x41, 0x43,
-	0xCE, 0xBC, 0x46, 0x43, 0xCE, 0xBC, 0x56, 0x43,
+	0xAD, 0x44, 0xD8, 0xAA, 0xD8, 0xAE, 0x44, 0xD8,
+	0xAA, 0xD8, 0xB1, 0x44, 0xD8, 0xAA, 0xD8, 0xB2,
+	0x44, 0xD8, 0xAA, 0xD9, 0x85, 0x44, 0xD8, 0xAA,
+	0xD9, 0x86, 0x44, 0xD8, 0xAA, 0xD9, 0x87, 0x44,
+	0xD8, 0xAA, 0xD9, 0x89, 0x44, 0xD8, 0xAA, 0xD9,
+	0x8A, 0x44, 0xD8, 0xAB, 0xD8, 0xAC, 0x44, 0xD8,
+	0xAB, 0xD8, 0xB1, 0x44, 0xD8, 0xAB, 0xD8, 0xB2,
+	0x44, 0xD8, 0xAB, 0xD9, 0x85, 0x44, 0xD8, 0xAB,
 	// Bytes 1e00 - 1e3f
-	0xCE, 0xBC, 0x57, 0x43, 0xCE, 0xBC, 0x67, 0x43,
-	0xCE, 0xBC, 0x6C, 0x43, 0xCE, 0xBC, 0x6D, 0x43,
-	0xCE, 0xBC, 0x73, 0x44, 0x28, 0x31, 0x30, 0x29,
-	0x44, 0x28, 0x31, 0x31, 0x29, 0x44, 0x28, 0x31,
-	0x32, 0x29, 0x44, 0x28, 0x31, 0x33, 0x29, 0x44,
-	0x28, 0x31, 0x34, 0x29, 0x44, 0x28, 0x31, 0x35,
-	0x29, 0x44, 0x28, 0x31, 0x36, 0x29, 0x44, 0x28,
-	0x31, 0x37, 0x29, 0x44, 0x28, 0x31, 0x38, 0x29,
+	0xD9, 0x86, 0x44, 0xD8, 0xAB, 0xD9, 0x87, 0x44,
+	0xD8, 0xAB, 0xD9, 0x89, 0x44, 0xD8, 0xAB, 0xD9,
+	0x8A, 0x44, 0xD8, 0xAC, 0xD8, 0xAD, 0x44, 0xD8,
+	0xAC, 0xD9, 0x85, 0x44, 0xD8, 0xAC, 0xD9, 0x89,
+	0x44, 0xD8, 0xAC, 0xD9, 0x8A, 0x44, 0xD8, 0xAD,
+	0xD8, 0xAC, 0x44, 0xD8, 0xAD, 0xD9, 0x85, 0x44,
+	0xD8, 0xAD, 0xD9, 0x89, 0x44, 0xD8, 0xAD, 0xD9,
+	0x8A, 0x44, 0xD8, 0xAE, 0xD8, 0xAC, 0x44, 0xD8,
 	// Bytes 1e40 - 1e7f
-	0x44, 0x28, 0x31, 0x39, 0x29, 0x44, 0x28, 0x32,
-	0x30, 0x29, 0x44, 0x30, 0xE7, 0x82, 0xB9, 0x44,
-	0x31, 0xE2, 0x81, 0x84, 0x44, 0x31, 0xE6, 0x97,
-	0xA5, 0x44, 0x31, 0xE6, 0x9C, 0x88, 0x44, 0x31,
-	0xE7, 0x82, 0xB9, 0x44, 0x32, 0xE6, 0x97, 0xA5,
-	0x44, 0x32, 0xE6, 0x9C, 0x88, 0x44, 0x32, 0xE7,
-	0x82, 0xB9, 0x44, 0x33, 0xE6, 0x97, 0xA5, 0x44,
-	0x33, 0xE6, 0x9C, 0x88, 0x44, 0x33, 0xE7, 0x82,
+	0xAE, 0xD8, 0xAD, 0x44, 0xD8, 0xAE, 0xD9, 0x85,
+	0x44, 0xD8, 0xAE, 0xD9, 0x89, 0x44, 0xD8, 0xAE,
+	0xD9, 0x8A, 0x44, 0xD8, 0xB3, 0xD8, 0xAC, 0x44,
+	0xD8, 0xB3, 0xD8, 0xAD, 0x44, 0xD8, 0xB3, 0xD8,
+	0xAE, 0x44, 0xD8, 0xB3, 0xD8, 0xB1, 0x44, 0xD8,
+	0xB3, 0xD9, 0x85, 0x44, 0xD8, 0xB3, 0xD9, 0x87,
+	0x44, 0xD8, 0xB3, 0xD9, 0x89, 0x44, 0xD8, 0xB3,
+	0xD9, 0x8A, 0x44, 0xD8, 0xB4, 0xD8, 0xAC, 0x44,
 	// Bytes 1e80 - 1ebf
-	0xB9, 0x44, 0x34, 0xE6, 0x97, 0xA5, 0x44, 0x34,
-	0xE6, 0x9C, 0x88, 0x44, 0x34, 0xE7, 0x82, 0xB9,
-	0x44, 0x35, 0xE6, 0x97, 0xA5, 0x44, 0x35, 0xE6,
-	0x9C, 0x88, 0x44, 0x35, 0xE7, 0x82, 0xB9, 0x44,
-	0x36, 0xE6, 0x97, 0xA5, 0x44, 0x36, 0xE6, 0x9C,
-	0x88, 0x44, 0x36, 0xE7, 0x82, 0xB9, 0x44, 0x37,
-	0xE6, 0x97, 0xA5, 0x44, 0x37, 0xE6, 0x9C, 0x88,
-	0x44, 0x37, 0xE7, 0x82, 0xB9, 0x44, 0x38, 0xE6,
+	0xD8, 0xB4, 0xD8, 0xAD, 0x44, 0xD8, 0xB4, 0xD8,
+	0xAE, 0x44, 0xD8, 0xB4, 0xD8, 0xB1, 0x44, 0xD8,
+	0xB4, 0xD9, 0x85, 0x44, 0xD8, 0xB4, 0xD9, 0x87,
+	0x44, 0xD8, 0xB4, 0xD9, 0x89, 0x44, 0xD8, 0xB4,
+	0xD9, 0x8A, 0x44, 0xD8, 0xB5, 0xD8, 0xAD, 0x44,
+	0xD8, 0xB5, 0xD8, 0xAE, 0x44, 0xD8, 0xB5, 0xD8,
+	0xB1, 0x44, 0xD8, 0xB5, 0xD9, 0x85, 0x44, 0xD8,
+	0xB5, 0xD9, 0x89, 0x44, 0xD8, 0xB5, 0xD9, 0x8A,
 	// Bytes 1ec0 - 1eff
-	0x97, 0xA5, 0x44, 0x38, 0xE6, 0x9C, 0x88, 0x44,
-	0x38, 0xE7, 0x82, 0xB9, 0x44, 0x39, 0xE6, 0x97,
-	0xA5, 0x44, 0x39, 0xE6, 0x9C, 0x88, 0x44, 0x39,
-	0xE7, 0x82, 0xB9, 0x44, 0x56, 0x49, 0x49, 0x49,
-	0x44, 0x61, 0x2E, 0x6D, 0x2E, 0x44, 0x6B, 0x63,
-	0x61, 0x6C, 0x44, 0x70, 0x2E, 0x6D, 0x2E, 0x44,
-	0x76, 0x69, 0x69, 0x69, 0x44, 0xD5, 0xA5, 0xD6,
-	0x82, 0x44, 0xD5, 0xB4, 0xD5, 0xA5, 0x44, 0xD5,
+	0x44, 0xD8, 0xB6, 0xD8, 0xAC, 0x44, 0xD8, 0xB6,
+	0xD8, 0xAD, 0x44, 0xD8, 0xB6, 0xD8, 0xAE, 0x44,
+	0xD8, 0xB6, 0xD8, 0xB1, 0x44, 0xD8, 0xB6, 0xD9,
+	0x85, 0x44, 0xD8, 0xB6, 0xD9, 0x89, 0x44, 0xD8,
+	0xB6, 0xD9, 0x8A, 0x44, 0xD8, 0xB7, 0xD8, 0xAD,
+	0x44, 0xD8, 0xB7, 0xD9, 0x85, 0x44, 0xD8, 0xB7,
+	0xD9, 0x89, 0x44, 0xD8, 0xB7, 0xD9, 0x8A, 0x44,
+	0xD8, 0xB8, 0xD9, 0x85, 0x44, 0xD8, 0xB9, 0xD8,
 	// Bytes 1f00 - 1f3f
-	0xB4, 0xD5, 0xAB, 0x44, 0xD5, 0xB4, 0xD5, 0xAD,
-	0x44, 0xD5, 0xB4, 0xD5, 0xB6, 0x44, 0xD5, 0xBE,
-	0xD5, 0xB6, 0x44, 0xD7, 0x90, 0xD7, 0x9C, 0x44,
-	0xD8, 0xA7, 0xD9, 0xB4, 0x44, 0xD8, 0xA8, 0xD8,
-	0xAC, 0x44, 0xD8, 0xA8, 0xD8, 0xAD, 0x44, 0xD8,
-	0xA8, 0xD8, 0xAE, 0x44, 0xD8, 0xA8, 0xD8, 0xB1,
-	0x44, 0xD8, 0xA8, 0xD8, 0xB2, 0x44, 0xD8, 0xA8,
-	0xD9, 0x85, 0x44, 0xD8, 0xA8, 0xD9, 0x86, 0x44,
+	0xAC, 0x44, 0xD8, 0xB9, 0xD9, 0x85, 0x44, 0xD8,
+	0xB9, 0xD9, 0x89, 0x44, 0xD8, 0xB9, 0xD9, 0x8A,
+	0x44, 0xD8, 0xBA, 0xD8, 0xAC, 0x44, 0xD8, 0xBA,
+	0xD9, 0x85, 0x44, 0xD8, 0xBA, 0xD9, 0x89, 0x44,
+	0xD8, 0xBA, 0xD9, 0x8A, 0x44, 0xD9, 0x81, 0xD8,
+	0xAC, 0x44, 0xD9, 0x81, 0xD8, 0xAD, 0x44, 0xD9,
+	0x81, 0xD8, 0xAE, 0x44, 0xD9, 0x81, 0xD9, 0x85,
+	0x44, 0xD9, 0x81, 0xD9, 0x89, 0x44, 0xD9, 0x81,
 	// Bytes 1f40 - 1f7f
-	0xD8, 0xA8, 0xD9, 0x87, 0x44, 0xD8, 0xA8, 0xD9,
-	0x89, 0x44, 0xD8, 0xA8, 0xD9, 0x8A, 0x44, 0xD8,
-	0xAA, 0xD8, 0xAC, 0x44, 0xD8, 0xAA, 0xD8, 0xAD,
-	0x44, 0xD8, 0xAA, 0xD8, 0xAE, 0x44, 0xD8, 0xAA,
-	0xD8, 0xB1, 0x44, 0xD8, 0xAA, 0xD8, 0xB2, 0x44,
-	0xD8, 0xAA, 0xD9, 0x85, 0x44, 0xD8, 0xAA, 0xD9,
-	0x86, 0x44, 0xD8, 0xAA, 0xD9, 0x87, 0x44, 0xD8,
-	0xAA, 0xD9, 0x89, 0x44, 0xD8, 0xAA, 0xD9, 0x8A,
+	0xD9, 0x8A, 0x44, 0xD9, 0x82, 0xD8, 0xAD, 0x44,
+	0xD9, 0x82, 0xD9, 0x85, 0x44, 0xD9, 0x82, 0xD9,
+	0x89, 0x44, 0xD9, 0x82, 0xD9, 0x8A, 0x44, 0xD9,
+	0x83, 0xD8, 0xA7, 0x44, 0xD9, 0x83, 0xD8, 0xAC,
+	0x44, 0xD9, 0x83, 0xD8, 0xAD, 0x44, 0xD9, 0x83,
+	0xD8, 0xAE, 0x44, 0xD9, 0x83, 0xD9, 0x84, 0x44,
+	0xD9, 0x83, 0xD9, 0x85, 0x44, 0xD9, 0x83, 0xD9,
+	0x89, 0x44, 0xD9, 0x83, 0xD9, 0x8A, 0x44, 0xD9,
 	// Bytes 1f80 - 1fbf
-	0x44, 0xD8, 0xAB, 0xD8, 0xAC, 0x44, 0xD8, 0xAB,
-	0xD8, 0xB1, 0x44, 0xD8, 0xAB, 0xD8, 0xB2, 0x44,
-	0xD8, 0xAB, 0xD9, 0x85, 0x44, 0xD8, 0xAB, 0xD9,
-	0x86, 0x44, 0xD8, 0xAB, 0xD9, 0x87, 0x44, 0xD8,
-	0xAB, 0xD9, 0x89, 0x44, 0xD8, 0xAB, 0xD9, 0x8A,
-	0x44, 0xD8, 0xAC, 0xD8, 0xAD, 0x44, 0xD8, 0xAC,
-	0xD9, 0x85, 0x44, 0xD8, 0xAC, 0xD9, 0x89, 0x44,
-	0xD8, 0xAC, 0xD9, 0x8A, 0x44, 0xD8, 0xAD, 0xD8,
+	0x84, 0xD8, 0xA7, 0x44, 0xD9, 0x84, 0xD8, 0xAC,
+	0x44, 0xD9, 0x84, 0xD8, 0xAD, 0x44, 0xD9, 0x84,
+	0xD8, 0xAE, 0x44, 0xD9, 0x84, 0xD9, 0x85, 0x44,
+	0xD9, 0x84, 0xD9, 0x87, 0x44, 0xD9, 0x84, 0xD9,
+	0x89, 0x44, 0xD9, 0x84, 0xD9, 0x8A, 0x44, 0xD9,
+	0x85, 0xD8, 0xA7, 0x44, 0xD9, 0x85, 0xD8, 0xAC,
+	0x44, 0xD9, 0x85, 0xD8, 0xAD, 0x44, 0xD9, 0x85,
+	0xD8, 0xAE, 0x44, 0xD9, 0x85, 0xD9, 0x85, 0x44,
 	// Bytes 1fc0 - 1fff
-	0xAC, 0x44, 0xD8, 0xAD, 0xD9, 0x85, 0x44, 0xD8,
-	0xAD, 0xD9, 0x89, 0x44, 0xD8, 0xAD, 0xD9, 0x8A,
-	0x44, 0xD8, 0xAE, 0xD8, 0xAC, 0x44, 0xD8, 0xAE,
-	0xD8, 0xAD, 0x44, 0xD8, 0xAE, 0xD9, 0x85, 0x44,
-	0xD8, 0xAE, 0xD9, 0x89, 0x44, 0xD8, 0xAE, 0xD9,
-	0x8A, 0x44, 0xD8, 0xB3, 0xD8, 0xAC, 0x44, 0xD8,
-	0xB3, 0xD8, 0xAD, 0x44, 0xD8, 0xB3, 0xD8, 0xAE,
-	0x44, 0xD8, 0xB3, 0xD8, 0xB1, 0x44, 0xD8, 0xB3,
+	0xD9, 0x85, 0xD9, 0x89, 0x44, 0xD9, 0x85, 0xD9,
+	0x8A, 0x44, 0xD9, 0x86, 0xD8, 0xAC, 0x44, 0xD9,
+	0x86, 0xD8, 0xAD, 0x44, 0xD9, 0x86, 0xD8, 0xAE,
+	0x44, 0xD9, 0x86, 0xD8, 0xB1, 0x44, 0xD9, 0x86,
+	0xD8, 0xB2, 0x44, 0xD9, 0x86, 0xD9, 0x85, 0x44,
+	0xD9, 0x86, 0xD9, 0x86, 0x44, 0xD9, 0x86, 0xD9,
+	0x87, 0x44, 0xD9, 0x86, 0xD9, 0x89, 0x44, 0xD9,
+	0x86, 0xD9, 0x8A, 0x44, 0xD9, 0x87, 0xD8, 0xAC,
 	// Bytes 2000 - 203f
-	0xD9, 0x85, 0x44, 0xD8, 0xB3, 0xD9, 0x87, 0x44,
-	0xD8, 0xB3, 0xD9, 0x89, 0x44, 0xD8, 0xB3, 0xD9,
-	0x8A, 0x44, 0xD8, 0xB4, 0xD8, 0xAC, 0x44, 0xD8,
-	0xB4, 0xD8, 0xAD, 0x44, 0xD8, 0xB4, 0xD8, 0xAE,
-	0x44, 0xD8, 0xB4, 0xD8, 0xB1, 0x44, 0xD8, 0xB4,
-	0xD9, 0x85, 0x44, 0xD8, 0xB4, 0xD9, 0x87, 0x44,
-	0xD8, 0xB4, 0xD9, 0x89, 0x44, 0xD8, 0xB4, 0xD9,
-	0x8A, 0x44, 0xD8, 0xB5, 0xD8, 0xAD, 0x44, 0xD8,
+	0x44, 0xD9, 0x87, 0xD9, 0x85, 0x44, 0xD9, 0x87,
+	0xD9, 0x89, 0x44, 0xD9, 0x87, 0xD9, 0x8A, 0x44,
+	0xD9, 0x88, 0xD9, 0xB4, 0x44, 0xD9, 0x8A, 0xD8,
+	0xAC, 0x44, 0xD9, 0x8A, 0xD8, 0xAD, 0x44, 0xD9,
+	0x8A, 0xD8, 0xAE, 0x44, 0xD9, 0x8A, 0xD8, 0xB1,
+	0x44, 0xD9, 0x8A, 0xD8, 0xB2, 0x44, 0xD9, 0x8A,
+	0xD9, 0x85, 0x44, 0xD9, 0x8A, 0xD9, 0x86, 0x44,
+	0xD9, 0x8A, 0xD9, 0x87, 0x44, 0xD9, 0x8A, 0xD9,
 	// Bytes 2040 - 207f
-	0xB5, 0xD8, 0xAE, 0x44, 0xD8, 0xB5, 0xD8, 0xB1,
-	0x44, 0xD8, 0xB5, 0xD9, 0x85, 0x44, 0xD8, 0xB5,
-	0xD9, 0x89, 0x44, 0xD8, 0xB5, 0xD9, 0x8A, 0x44,
-	0xD8, 0xB6, 0xD8, 0xAC, 0x44, 0xD8, 0xB6, 0xD8,
-	0xAD, 0x44, 0xD8, 0xB6, 0xD8, 0xAE, 0x44, 0xD8,
-	0xB6, 0xD8, 0xB1, 0x44, 0xD8, 0xB6, 0xD9, 0x85,
-	0x44, 0xD8, 0xB6, 0xD9, 0x89, 0x44, 0xD8, 0xB6,
-	0xD9, 0x8A, 0x44, 0xD8, 0xB7, 0xD8, 0xAD, 0x44,
+	0x89, 0x44, 0xD9, 0x8A, 0xD9, 0x8A, 0x44, 0xD9,
+	0x8A, 0xD9, 0xB4, 0x44, 0xDB, 0x87, 0xD9, 0xB4,
+	0x45, 0x28, 0xE1, 0x84, 0x80, 0x29, 0x45, 0x28,
+	0xE1, 0x84, 0x82, 0x29, 0x45, 0x28, 0xE1, 0x84,
+	0x83, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x85, 0x29,
+	0x45, 0x28, 0xE1, 0x84, 0x86, 0x29, 0x45, 0x28,
+	0xE1, 0x84, 0x87, 0x29, 0x45, 0x28, 0xE1, 0x84,
+	0x89, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8B, 0x29,
 	// Bytes 2080 - 20bf
-	0xD8, 0xB7, 0xD9, 0x85, 0x44, 0xD8, 0xB7, 0xD9,
-	0x89, 0x44, 0xD8, 0xB7, 0xD9, 0x8A, 0x44, 0xD8,
-	0xB8, 0xD9, 0x85, 0x44, 0xD8, 0xB9, 0xD8, 0xAC,
-	0x44, 0xD8, 0xB9, 0xD9, 0x85, 0x44, 0xD8, 0xB9,
-	0xD9, 0x89, 0x44, 0xD8, 0xB9, 0xD9, 0x8A, 0x44,
-	0xD8, 0xBA, 0xD8, 0xAC, 0x44, 0xD8, 0xBA, 0xD9,
-	0x85, 0x44, 0xD8, 0xBA, 0xD9, 0x89, 0x44, 0xD8,
-	0xBA, 0xD9, 0x8A, 0x44, 0xD9, 0x81, 0xD8, 0xAC,
+	0x45, 0x28, 0xE1, 0x84, 0x8C, 0x29, 0x45, 0x28,
+	0xE1, 0x84, 0x8E, 0x29, 0x45, 0x28, 0xE1, 0x84,
+	0x8F, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x90, 0x29,
+	0x45, 0x28, 0xE1, 0x84, 0x91, 0x29, 0x45, 0x28,
+	0xE1, 0x84, 0x92, 0x29, 0x45, 0x28, 0xE4, 0xB8,
+	0x80, 0x29, 0x45, 0x28, 0xE4, 0xB8, 0x83, 0x29,
+	0x45, 0x28, 0xE4, 0xB8, 0x89, 0x29, 0x45, 0x28,
+	0xE4, 0xB9, 0x9D, 0x29, 0x45, 0x28, 0xE4, 0xBA,
 	// Bytes 20c0 - 20ff
-	0x44, 0xD9, 0x81, 0xD8, 0xAD, 0x44, 0xD9, 0x81,
-	0xD8, 0xAE, 0x44, 0xD9, 0x81, 0xD9, 0x85, 0x44,
-	0xD9, 0x81, 0xD9, 0x89, 0x44, 0xD9, 0x81, 0xD9,
-	0x8A, 0x44, 0xD9, 0x82, 0xD8, 0xAD, 0x44, 0xD9,
-	0x82, 0xD9, 0x85, 0x44, 0xD9, 0x82, 0xD9, 0x89,
-	0x44, 0xD9, 0x82, 0xD9, 0x8A, 0x44, 0xD9, 0x83,
-	0xD8, 0xA7, 0x44, 0xD9, 0x83, 0xD8, 0xAC, 0x44,
-	0xD9, 0x83, 0xD8, 0xAD, 0x44, 0xD9, 0x83, 0xD8,
+	0x8C, 0x29, 0x45, 0x28, 0xE4, 0xBA, 0x94, 0x29,
+	0x45, 0x28, 0xE4, 0xBB, 0xA3, 0x29, 0x45, 0x28,
+	0xE4, 0xBC, 0x81, 0x29, 0x45, 0x28, 0xE4, 0xBC,
+	0x91, 0x29, 0x45, 0x28, 0xE5, 0x85, 0xAB, 0x29,
+	0x45, 0x28, 0xE5, 0x85, 0xAD, 0x29, 0x45, 0x28,
+	0xE5, 0x8A, 0xB4, 0x29, 0x45, 0x28, 0xE5, 0x8D,
+	0x81, 0x29, 0x45, 0x28, 0xE5, 0x8D, 0x94, 0x29,
+	0x45, 0x28, 0xE5, 0x90, 0x8D, 0x29, 0x45, 0x28,
 	// Bytes 2100 - 213f
-	0xAE, 0x44, 0xD9, 0x83, 0xD9, 0x84, 0x44, 0xD9,
-	0x83, 0xD9, 0x85, 0x44, 0xD9, 0x83, 0xD9, 0x89,
-	0x44, 0xD9, 0x83, 0xD9, 0x8A, 0x44, 0xD9, 0x84,
-	0xD8, 0xA7, 0x44, 0xD9, 0x84, 0xD8, 0xAC, 0x44,
-	0xD9, 0x84, 0xD8, 0xAD, 0x44, 0xD9, 0x84, 0xD8,
-	0xAE, 0x44, 0xD9, 0x84, 0xD9, 0x85, 0x44, 0xD9,
-	0x84, 0xD9, 0x87, 0x44, 0xD9, 0x84, 0xD9, 0x89,
-	0x44, 0xD9, 0x84, 0xD9, 0x8A, 0x44, 0xD9, 0x85,
+	0xE5, 0x91, 0xBC, 0x29, 0x45, 0x28, 0xE5, 0x9B,
+	0x9B, 0x29, 0x45, 0x28, 0xE5, 0x9C, 0x9F, 0x29,
+	0x45, 0x28, 0xE5, 0xAD, 0xA6, 0x29, 0x45, 0x28,
+	0xE6, 0x97, 0xA5, 0x29, 0x45, 0x28, 0xE6, 0x9C,
+	0x88, 0x29, 0x45, 0x28, 0xE6, 0x9C, 0x89, 0x29,
+	0x45, 0x28, 0xE6, 0x9C, 0xA8, 0x29, 0x45, 0x28,
+	0xE6, 0xA0, 0xAA, 0x29, 0x45, 0x28, 0xE6, 0xB0,
+	0xB4, 0x29, 0x45, 0x28, 0xE7, 0x81, 0xAB, 0x29,
 	// Bytes 2140 - 217f
-	0xD8, 0xA7, 0x44, 0xD9, 0x85, 0xD8, 0xAC, 0x44,
-	0xD9, 0x85, 0xD8, 0xAD, 0x44, 0xD9, 0x85, 0xD8,
-	0xAE, 0x44, 0xD9, 0x85, 0xD9, 0x85, 0x44, 0xD9,
-	0x85, 0xD9, 0x89, 0x44, 0xD9, 0x85, 0xD9, 0x8A,
-	0x44, 0xD9, 0x86, 0xD8, 0xAC, 0x44, 0xD9, 0x86,
-	0xD8, 0xAD, 0x44, 0xD9, 0x86, 0xD8, 0xAE, 0x44,
-	0xD9, 0x86, 0xD8, 0xB1, 0x44, 0xD9, 0x86, 0xD8,
-	0xB2, 0x44, 0xD9, 0x86, 0xD9, 0x85, 0x44, 0xD9,
+	0x45, 0x28, 0xE7, 0x89, 0xB9, 0x29, 0x45, 0x28,
+	0xE7, 0x9B, 0xA3, 0x29, 0x45, 0x28, 0xE7, 0xA4,
+	0xBE, 0x29, 0x45, 0x28, 0xE7, 0xA5, 0x9D, 0x29,
+	0x45, 0x28, 0xE7, 0xA5, 0xAD, 0x29, 0x45, 0x28,
+	0xE8, 0x87, 0xAA, 0x29, 0x45, 0x28, 0xE8, 0x87,
+	0xB3, 0x29, 0x45, 0x28, 0xE8, 0xB2, 0xA1, 0x29,
+	0x45, 0x28, 0xE8, 0xB3, 0x87, 0x29, 0x45, 0x28,
+	0xE9, 0x87, 0x91, 0x29, 0x45, 0x30, 0xE2, 0x81,
 	// Bytes 2180 - 21bf
-	0x86, 0xD9, 0x86, 0x44, 0xD9, 0x86, 0xD9, 0x87,
-	0x44, 0xD9, 0x86, 0xD9, 0x89, 0x44, 0xD9, 0x86,
-	0xD9, 0x8A, 0x44, 0xD9, 0x87, 0xD8, 0xAC, 0x44,
-	0xD9, 0x87, 0xD9, 0x85, 0x44, 0xD9, 0x87, 0xD9,
-	0x89, 0x44, 0xD9, 0x87, 0xD9, 0x8A, 0x44, 0xD9,
-	0x88, 0xD9, 0xB4, 0x44, 0xD9, 0x8A, 0xD8, 0xAC,
-	0x44, 0xD9, 0x8A, 0xD8, 0xAD, 0x44, 0xD9, 0x8A,
-	0xD8, 0xAE, 0x44, 0xD9, 0x8A, 0xD8, 0xB1, 0x44,
+	0x84, 0x33, 0x45, 0x31, 0x30, 0xE6, 0x97, 0xA5,
+	0x45, 0x31, 0x30, 0xE6, 0x9C, 0x88, 0x45, 0x31,
+	0x30, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x31, 0xE6,
+	0x97, 0xA5, 0x45, 0x31, 0x31, 0xE6, 0x9C, 0x88,
+	0x45, 0x31, 0x31, 0xE7, 0x82, 0xB9, 0x45, 0x31,
+	0x32, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x32, 0xE6,
+	0x9C, 0x88, 0x45, 0x31, 0x32, 0xE7, 0x82, 0xB9,
+	0x45, 0x31, 0x33, 0xE6, 0x97, 0xA5, 0x45, 0x31,
 	// Bytes 21c0 - 21ff
-	0xD9, 0x8A, 0xD8, 0xB2, 0x44, 0xD9, 0x8A, 0xD9,
-	0x85, 0x44, 0xD9, 0x8A, 0xD9, 0x86, 0x44, 0xD9,
-	0x8A, 0xD9, 0x87, 0x44, 0xD9, 0x8A, 0xD9, 0x89,
-	0x44, 0xD9, 0x8A, 0xD9, 0x8A, 0x44, 0xD9, 0x8A,
-	0xD9, 0xB4, 0x44, 0xDB, 0x87, 0xD9, 0xB4, 0x45,
-	0x28, 0xE1, 0x84, 0x80, 0x29, 0x45, 0x28, 0xE1,
-	0x84, 0x82, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x83,
-	0x29, 0x45, 0x28, 0xE1, 0x84, 0x85, 0x29, 0x45,
+	0x33, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x34, 0xE6,
+	0x97, 0xA5, 0x45, 0x31, 0x34, 0xE7, 0x82, 0xB9,
+	0x45, 0x31, 0x35, 0xE6, 0x97, 0xA5, 0x45, 0x31,
+	0x35, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x36, 0xE6,
+	0x97, 0xA5, 0x45, 0x31, 0x36, 0xE7, 0x82, 0xB9,
+	0x45, 0x31, 0x37, 0xE6, 0x97, 0xA5, 0x45, 0x31,
+	0x37, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x38, 0xE6,
+	0x97, 0xA5, 0x45, 0x31, 0x38, 0xE7, 0x82, 0xB9,
 	// Bytes 2200 - 223f
-	0x28, 0xE1, 0x84, 0x86, 0x29, 0x45, 0x28, 0xE1,
-	0x84, 0x87, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x89,
-	0x29, 0x45, 0x28, 0xE1, 0x84, 0x8B, 0x29, 0x45,
-	0x28, 0xE1, 0x84, 0x8C, 0x29, 0x45, 0x28, 0xE1,
-	0x84, 0x8E, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8F,
-	0x29, 0x45, 0x28, 0xE1, 0x84, 0x90, 0x29, 0x45,
-	0x28, 0xE1, 0x84, 0x91, 0x29, 0x45, 0x28, 0xE1,
-	0x84, 0x92, 0x29, 0x45, 0x28, 0xE4, 0xB8, 0x80,
+	0x45, 0x31, 0x39, 0xE6, 0x97, 0xA5, 0x45, 0x31,
+	0x39, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0xE2, 0x81,
+	0x84, 0x32, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x33,
+	0x45, 0x31, 0xE2, 0x81, 0x84, 0x34, 0x45, 0x31,
+	0xE2, 0x81, 0x84, 0x35, 0x45, 0x31, 0xE2, 0x81,
+	0x84, 0x36, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x37,
+	0x45, 0x31, 0xE2, 0x81, 0x84, 0x38, 0x45, 0x31,
+	0xE2, 0x81, 0x84, 0x39, 0x45, 0x32, 0x30, 0xE6,
 	// Bytes 2240 - 227f
-	0x29, 0x45, 0x28, 0xE4, 0xB8, 0x83, 0x29, 0x45,
-	0x28, 0xE4, 0xB8, 0x89, 0x29, 0x45, 0x28, 0xE4,
-	0xB9, 0x9D, 0x29, 0x45, 0x28, 0xE4, 0xBA, 0x8C,
-	0x29, 0x45, 0x28, 0xE4, 0xBA, 0x94, 0x29, 0x45,
-	0x28, 0xE4, 0xBB, 0xA3, 0x29, 0x45, 0x28, 0xE4,
-	0xBC, 0x81, 0x29, 0x45, 0x28, 0xE4, 0xBC, 0x91,
-	0x29, 0x45, 0x28, 0xE5, 0x85, 0xAB, 0x29, 0x45,
-	0x28, 0xE5, 0x85, 0xAD, 0x29, 0x45, 0x28, 0xE5,
+	0x97, 0xA5, 0x45, 0x32, 0x30, 0xE7, 0x82, 0xB9,
+	0x45, 0x32, 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x32,
+	0x31, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x32, 0xE6,
+	0x97, 0xA5, 0x45, 0x32, 0x32, 0xE7, 0x82, 0xB9,
+	0x45, 0x32, 0x33, 0xE6, 0x97, 0xA5, 0x45, 0x32,
+	0x33, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x34, 0xE6,
+	0x97, 0xA5, 0x45, 0x32, 0x34, 0xE7, 0x82, 0xB9,
+	0x45, 0x32, 0x35, 0xE6, 0x97, 0xA5, 0x45, 0x32,
 	// Bytes 2280 - 22bf
-	0x8A, 0xB4, 0x29, 0x45, 0x28, 0xE5, 0x8D, 0x81,
-	0x29, 0x45, 0x28, 0xE5, 0x8D, 0x94, 0x29, 0x45,
-	0x28, 0xE5, 0x90, 0x8D, 0x29, 0x45, 0x28, 0xE5,
-	0x91, 0xBC, 0x29, 0x45, 0x28, 0xE5, 0x9B, 0x9B,
-	0x29, 0x45, 0x28, 0xE5, 0x9C, 0x9F, 0x29, 0x45,
-	0x28, 0xE5, 0xAD, 0xA6, 0x29, 0x45, 0x28, 0xE6,
-	0x97, 0xA5, 0x29, 0x45, 0x28, 0xE6, 0x9C, 0x88,
-	0x29, 0x45, 0x28, 0xE6, 0x9C, 0x89, 0x29, 0x45,
+	0x36, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x37, 0xE6,
+	0x97, 0xA5, 0x45, 0x32, 0x38, 0xE6, 0x97, 0xA5,
+	0x45, 0x32, 0x39, 0xE6, 0x97, 0xA5, 0x45, 0x32,
+	0xE2, 0x81, 0x84, 0x33, 0x45, 0x32, 0xE2, 0x81,
+	0x84, 0x35, 0x45, 0x33, 0x30, 0xE6, 0x97, 0xA5,
+	0x45, 0x33, 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x33,
+	0xE2, 0x81, 0x84, 0x34, 0x45, 0x33, 0xE2, 0x81,
+	0x84, 0x35, 0x45, 0x33, 0xE2, 0x81, 0x84, 0x38,
 	// Bytes 22c0 - 22ff
-	0x28, 0xE6, 0x9C, 0xA8, 0x29, 0x45, 0x28, 0xE6,
-	0xA0, 0xAA, 0x29, 0x45, 0x28, 0xE6, 0xB0, 0xB4,
-	0x29, 0x45, 0x28, 0xE7, 0x81, 0xAB, 0x29, 0x45,
-	0x28, 0xE7, 0x89, 0xB9, 0x29, 0x45, 0x28, 0xE7,
-	0x9B, 0xA3, 0x29, 0x45, 0x28, 0xE7, 0xA4, 0xBE,
-	0x29, 0x45, 0x28, 0xE7, 0xA5, 0x9D, 0x29, 0x45,
-	0x28, 0xE7, 0xA5, 0xAD, 0x29, 0x45, 0x28, 0xE8,
-	0x87, 0xAA, 0x29, 0x45, 0x28, 0xE8, 0x87, 0xB3,
+	0x45, 0x34, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x35,
+	0xE2, 0x81, 0x84, 0x36, 0x45, 0x35, 0xE2, 0x81,
+	0x84, 0x38, 0x45, 0x37, 0xE2, 0x81, 0x84, 0x38,
+	0x45, 0x41, 0xE2, 0x88, 0x95, 0x6D, 0x45, 0x56,
+	0xE2, 0x88, 0x95, 0x6D, 0x45, 0x6D, 0xE2, 0x88,
+	0x95, 0x73, 0x46, 0x31, 0xE2, 0x81, 0x84, 0x31,
+	0x30, 0x46, 0x43, 0xE2, 0x88, 0x95, 0x6B, 0x67,
+	0x46, 0x6D, 0xE2, 0x88, 0x95, 0x73, 0x32, 0x46,
 	// Bytes 2300 - 233f
-	0x29, 0x45, 0x28, 0xE8, 0xB2, 0xA1, 0x29, 0x45,
-	0x28, 0xE8, 0xB3, 0x87, 0x29, 0x45, 0x28, 0xE9,
-	0x87, 0x91, 0x29, 0x45, 0x30, 0xE2, 0x81, 0x84,
-	0x33, 0x45, 0x31, 0x30, 0xE6, 0x97, 0xA5, 0x45,
-	0x31, 0x30, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x30,
-	0xE7, 0x82, 0xB9, 0x45, 0x31, 0x31, 0xE6, 0x97,
-	0xA5, 0x45, 0x31, 0x31, 0xE6, 0x9C, 0x88, 0x45,
-	0x31, 0x31, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x32,
+	0xD8, 0xA8, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8,
+	0xA8, 0xD8, 0xAE, 0xD9, 0x8A, 0x46, 0xD8, 0xAA,
+	0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8,
+	0xAC, 0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD8, 0xAC,
+	0xD9, 0x8A, 0x46, 0xD8, 0xAA, 0xD8, 0xAD, 0xD8,
+	0xAC, 0x46, 0xD8, 0xAA, 0xD8, 0xAD, 0xD9, 0x85,
+	0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x85, 0x46,
+	0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x89, 0x46, 0xD8,
 	// Bytes 2340 - 237f
-	0xE6, 0x97, 0xA5, 0x45, 0x31, 0x32, 0xE6, 0x9C,
-	0x88, 0x45, 0x31, 0x32, 0xE7, 0x82, 0xB9, 0x45,
-	0x31, 0x33, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x33,
-	0xE7, 0x82, 0xB9, 0x45, 0x31, 0x34, 0xE6, 0x97,
-	0xA5, 0x45, 0x31, 0x34, 0xE7, 0x82, 0xB9, 0x45,
-	0x31, 0x35, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x35,
-	0xE7, 0x82, 0xB9, 0x45, 0x31, 0x36, 0xE6, 0x97,
-	0xA5, 0x45, 0x31, 0x36, 0xE7, 0x82, 0xB9, 0x45,
+	0xAA, 0xD8, 0xAE, 0xD9, 0x8A, 0x46, 0xD8, 0xAA,
+	0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8, 0xAA, 0xD9,
+	0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xAA, 0xD9, 0x85,
+	0xD8, 0xAE, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD9,
+	0x89, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x8A,
+	0x46, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x89, 0x46,
+	0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8,
+	0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xAC,
 	// Bytes 2380 - 23bf
-	0x31, 0x37, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x37,
-	0xE7, 0x82, 0xB9, 0x45, 0x31, 0x38, 0xE6, 0x97,
-	0xA5, 0x45, 0x31, 0x38, 0xE7, 0x82, 0xB9, 0x45,
-	0x31, 0x39, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x39,
-	0xE7, 0x82, 0xB9, 0x45, 0x31, 0xE2, 0x81, 0x84,
-	0x32, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x33, 0x45,
-	0x31, 0xE2, 0x81, 0x84, 0x34, 0x45, 0x31, 0xE2,
-	0x81, 0x84, 0x35, 0x45, 0x31, 0xE2, 0x81, 0x84,
+	0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAC, 0xD9,
+	0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xAD, 0xD8, 0xAC,
+	0xD9, 0x8A, 0x46, 0xD8, 0xAD, 0xD9, 0x85, 0xD9,
+	0x89, 0x46, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x8A,
+	0x46, 0xD8, 0xB3, 0xD8, 0xAC, 0xD8, 0xAD, 0x46,
+	0xD8, 0xB3, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD8,
+	0xB3, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xB3,
+	0xD8, 0xAE, 0xD9, 0x89, 0x46, 0xD8, 0xB3, 0xD8,
 	// Bytes 23c0 - 23ff
-	0x36, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x37, 0x45,
-	0x31, 0xE2, 0x81, 0x84, 0x38, 0x45, 0x31, 0xE2,
-	0x81, 0x84, 0x39, 0x45, 0x32, 0x30, 0xE6, 0x97,
-	0xA5, 0x45, 0x32, 0x30, 0xE7, 0x82, 0xB9, 0x45,
-	0x32, 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x31,
-	0xE7, 0x82, 0xB9, 0x45, 0x32, 0x32, 0xE6, 0x97,
-	0xA5, 0x45, 0x32, 0x32, 0xE7, 0x82, 0xB9, 0x45,
-	0x32, 0x33, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x33,
+	0xAE, 0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD9, 0x85,
+	0xD8, 0xAC, 0x46, 0xD8, 0xB3, 0xD9, 0x85, 0xD8,
+	0xAD, 0x46, 0xD8, 0xB3, 0xD9, 0x85, 0xD9, 0x85,
+	0x46, 0xD8, 0xB4, 0xD8, 0xAC, 0xD9, 0x8A, 0x46,
+	0xD8, 0xB4, 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD8,
+	0xB4, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB4,
+	0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8, 0xB4, 0xD9,
+	0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB5, 0xD8, 0xAD,
 	// Bytes 2400 - 243f
-	0xE7, 0x82, 0xB9, 0x45, 0x32, 0x34, 0xE6, 0x97,
-	0xA5, 0x45, 0x32, 0x34, 0xE7, 0x82, 0xB9, 0x45,
-	0x32, 0x35, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x36,
-	0xE6, 0x97, 0xA5, 0x45, 0x32, 0x37, 0xE6, 0x97,
-	0xA5, 0x45, 0x32, 0x38, 0xE6, 0x97, 0xA5, 0x45,
-	0x32, 0x39, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0xE2,
-	0x81, 0x84, 0x33, 0x45, 0x32, 0xE2, 0x81, 0x84,
-	0x35, 0x45, 0x33, 0x30, 0xE6, 0x97, 0xA5, 0x45,
+	0xD8, 0xAD, 0x46, 0xD8, 0xB5, 0xD8, 0xAD, 0xD9,
+	0x8A, 0x46, 0xD8, 0xB5, 0xD9, 0x84, 0xD9, 0x89,
+	0x46, 0xD8, 0xB5, 0xD9, 0x84, 0xDB, 0x92, 0x46,
+	0xD8, 0xB5, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8,
+	0xB6, 0xD8, 0xAD, 0xD9, 0x89, 0x46, 0xD8, 0xB6,
+	0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB6, 0xD8,
+	0xAE, 0xD9, 0x85, 0x46, 0xD8, 0xB7, 0xD9, 0x85,
+	0xD8, 0xAD, 0x46, 0xD8, 0xB7, 0xD9, 0x85, 0xD9,
 	// Bytes 2440 - 247f
-	0x33, 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x33, 0xE2,
-	0x81, 0x84, 0x34, 0x45, 0x33, 0xE2, 0x81, 0x84,
-	0x35, 0x45, 0x33, 0xE2, 0x81, 0x84, 0x38, 0x45,
-	0x34, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x35, 0xE2,
-	0x81, 0x84, 0x36, 0x45, 0x35, 0xE2, 0x81, 0x84,
-	0x38, 0x45, 0x37, 0xE2, 0x81, 0x84, 0x38, 0x45,
-	0x41, 0xE2, 0x88, 0x95, 0x6D, 0x45, 0x56, 0xE2,
-	0x88, 0x95, 0x6D, 0x45, 0x6D, 0xE2, 0x88, 0x95,
+	0x85, 0x46, 0xD8, 0xB7, 0xD9, 0x85, 0xD9, 0x8A,
+	0x46, 0xD8, 0xB9, 0xD8, 0xAC, 0xD9, 0x85, 0x46,
+	0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8,
+	0xB9, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xB9,
+	0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xBA, 0xD9,
+	0x85, 0xD9, 0x85, 0x46, 0xD8, 0xBA, 0xD9, 0x85,
+	0xD9, 0x89, 0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9,
+	0x8A, 0x46, 0xD9, 0x81, 0xD8, 0xAE, 0xD9, 0x85,
 	// Bytes 2480 - 24bf
-	0x73, 0x46, 0x31, 0xE2, 0x81, 0x84, 0x31, 0x30,
-	0x46, 0x43, 0xE2, 0x88, 0x95, 0x6B, 0x67, 0x46,
-	0x6D, 0xE2, 0x88, 0x95, 0x73, 0x32, 0x46, 0xD8,
-	0xA8, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xA8,
-	0xD8, 0xAE, 0xD9, 0x8A, 0x46, 0xD8, 0xAA, 0xD8,
-	0xAC, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAC,
-	0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9,
-	0x8A, 0x46, 0xD8, 0xAA, 0xD8, 0xAD, 0xD8, 0xAC,
+	0x46, 0xD9, 0x81, 0xD9, 0x85, 0xD9, 0x8A, 0x46,
+	0xD9, 0x82, 0xD9, 0x84, 0xDB, 0x92, 0x46, 0xD9,
+	0x82, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x82,
+	0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9, 0x82, 0xD9,
+	0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x83, 0xD9, 0x85,
+	0xD9, 0x85, 0x46, 0xD9, 0x83, 0xD9, 0x85, 0xD9,
+	0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAC, 0xD8, 0xAC,
+	0x46, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x85, 0x46,
 	// Bytes 24c0 - 24ff
-	0x46, 0xD8, 0xAA, 0xD8, 0xAD, 0xD9, 0x85, 0x46,
-	0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD8,
-	0xAA, 0xD8, 0xAE, 0xD9, 0x89, 0x46, 0xD8, 0xAA,
-	0xD8, 0xAE, 0xD9, 0x8A, 0x46, 0xD8, 0xAA, 0xD9,
-	0x85, 0xD8, 0xAC, 0x46, 0xD8, 0xAA, 0xD9, 0x85,
-	0xD8, 0xAD, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8,
-	0xAE, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x89,
-	0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x8A, 0x46,
+	0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9,
+	0x84, 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x84,
+	0xD8, 0xAD, 0xD9, 0x89, 0x46, 0xD9, 0x84, 0xD8,
+	0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAE,
+	0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD9, 0x85, 0xD8,
+	0xAD, 0x46, 0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x8A,
+	0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xAD, 0x46,
+	0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xAE, 0x46, 0xD9,
 	// Bytes 2500 - 253f
-	0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x89, 0x46, 0xD8,
-	0xAC, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xAC,
-	0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xAC, 0xD9,
-	0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAC, 0xD9, 0x85,
-	0xD9, 0x8A, 0x46, 0xD8, 0xAD, 0xD8, 0xAC, 0xD9,
-	0x8A, 0x46, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x89,
-	0x46, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x8A, 0x46,
-	0xD8, 0xB3, 0xD8, 0xAC, 0xD8, 0xAD, 0x46, 0xD8,
+	0x85, 0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x85,
+	0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8,
+	0xAD, 0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8, 0xAD,
+	0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD9,
+	0x8A, 0x46, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC,
+	0x46, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x85, 0x46,
+	0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x8A, 0x46, 0xD9,
+	0x85, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x86,
 	// Bytes 2540 - 257f
-	0xB3, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD8, 0xB3,
-	0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xB3, 0xD8,
-	0xAE, 0xD9, 0x89, 0x46, 0xD8, 0xB3, 0xD8, 0xAE,
-	0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD9, 0x85, 0xD8,
-	0xAC, 0x46, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAD,
-	0x46, 0xD8, 0xB3, 0xD9, 0x85, 0xD9, 0x85, 0x46,
-	0xD8, 0xB4, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,
-	0xB4, 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD8, 0xB4,
+	0xD8, 0xAC, 0xD8, 0xAD, 0x46, 0xD9, 0x86, 0xD8,
+	0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8, 0xAC,
+	0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9,
+	0x8A, 0x46, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x85,
+	0x46, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x89, 0x46,
+	0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9,
+	0x86, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD9, 0x86,
+	0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x87, 0xD9,
 	// Bytes 2580 - 25bf
-	0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB4, 0xD9,
-	0x85, 0xD8, 0xAE, 0x46, 0xD8, 0xB4, 0xD9, 0x85,
-	0xD9, 0x85, 0x46, 0xD8, 0xB5, 0xD8, 0xAD, 0xD8,
-	0xAD, 0x46, 0xD8, 0xB5, 0xD8, 0xAD, 0xD9, 0x8A,
-	0x46, 0xD8, 0xB5, 0xD9, 0x84, 0xD9, 0x89, 0x46,
-	0xD8, 0xB5, 0xD9, 0x84, 0xDB, 0x92, 0x46, 0xD8,
-	0xB5, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB6,
-	0xD8, 0xAD, 0xD9, 0x89, 0x46, 0xD8, 0xB6, 0xD8,
+	0x85, 0xD8, 0xAC, 0x46, 0xD9, 0x87, 0xD9, 0x85,
+	0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9,
+	0x8A, 0x46, 0xD9, 0x8A, 0xD8, 0xAD, 0xD9, 0x8A,
+	0x46, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x85, 0x46,
+	0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9,
+	0x8A, 0xD9, 0x94, 0xD8, 0xA7, 0x46, 0xD9, 0x8A,
+	0xD9, 0x94, 0xD8, 0xAC, 0x46, 0xD9, 0x8A, 0xD9,
+	0x94, 0xD8, 0xAD, 0x46, 0xD9, 0x8A, 0xD9, 0x94,
 	// Bytes 25c0 - 25ff
-	0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB6, 0xD8, 0xAE,
-	0xD9, 0x85, 0x46, 0xD8, 0xB7, 0xD9, 0x85, 0xD8,
-	0xAD, 0x46, 0xD8, 0xB7, 0xD9, 0x85, 0xD9, 0x85,
-	0x46, 0xD8, 0xB7, 0xD9, 0x85, 0xD9, 0x8A, 0x46,
-	0xD8, 0xB9, 0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD8,
-	0xB9, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB9,
-	0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xB9, 0xD9,
-	0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xBA, 0xD9, 0x85,
+	0xD8, 0xAE, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8,
+	0xB1, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xB2,
+	0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x85, 0x46,
+	0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x86, 0x46, 0xD9,
+	0x8A, 0xD9, 0x94, 0xD9, 0x87, 0x46, 0xD9, 0x8A,
+	0xD9, 0x94, 0xD9, 0x88, 0x46, 0xD9, 0x8A, 0xD9,
+	0x94, 0xD9, 0x89, 0x46, 0xD9, 0x8A, 0xD9, 0x94,
+	0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB,
 	// Bytes 2600 - 263f
-	0xD9, 0x85, 0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9,
-	0x89, 0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x8A,
-	0x46, 0xD9, 0x81, 0xD8, 0xAE, 0xD9, 0x85, 0x46,
-	0xD9, 0x81, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9,
-	0x82, 0xD9, 0x84, 0xDB, 0x92, 0x46, 0xD9, 0x82,
-	0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x82, 0xD9,
-	0x85, 0xD9, 0x85, 0x46, 0xD9, 0x82, 0xD9, 0x85,
-	0xD9, 0x8A, 0x46, 0xD9, 0x83, 0xD9, 0x85, 0xD9,
+	0x86, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x87,
+	0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x88, 0x46,
+	0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x90, 0x46, 0xD9,
+	0x8A, 0xD9, 0x94, 0xDB, 0x95, 0x46, 0xE0, 0xB9,
+	0x8D, 0xE0, 0xB8, 0xB2, 0x46, 0xE0, 0xBA, 0xAB,
+	0xE0, 0xBA, 0x99, 0x46, 0xE0, 0xBA, 0xAB, 0xE0,
+	0xBA, 0xA1, 0x46, 0xE0, 0xBB, 0x8D, 0xE0, 0xBA,
+	0xB2, 0x46, 0xE0, 0xBD, 0x80, 0xE0, 0xBE, 0xB5,
 	// Bytes 2640 - 267f
-	0x85, 0x46, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x8A,
-	0x46, 0xD9, 0x84, 0xD8, 0xAC, 0xD8, 0xAC, 0x46,
-	0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD9,
-	0x84, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x84,
-	0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD8,
-	0xAD, 0xD9, 0x89, 0x46, 0xD9, 0x84, 0xD8, 0xAD,
-	0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAE, 0xD9,
-	0x85, 0x46, 0xD9, 0x84, 0xD9, 0x85, 0xD8, 0xAD,
+	0x46, 0xE0, 0xBD, 0x82, 0xE0, 0xBE, 0xB7, 0x46,
+	0xE0, 0xBD, 0x8C, 0xE0, 0xBE, 0xB7, 0x46, 0xE0,
+	0xBD, 0x91, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD,
+	0x96, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x9B,
+	0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0x90, 0xE0,
+	0xBE, 0xB5, 0x46, 0xE0, 0xBE, 0x92, 0xE0, 0xBE,
+	0xB7, 0x46, 0xE0, 0xBE, 0x9C, 0xE0, 0xBE, 0xB7,
+	0x46, 0xE0, 0xBE, 0xA1, 0xE0, 0xBE, 0xB7, 0x46,
 	// Bytes 2680 - 26bf
-	0x46, 0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x8A, 0x46,
-	0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xAD, 0x46, 0xD9,
-	0x85, 0xD8, 0xAC, 0xD8, 0xAE, 0x46, 0xD9, 0x85,
-	0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8,
-	0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8, 0xAD,
-	0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD9,
-	0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x8A,
-	0x46, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC, 0x46,
-	// Bytes 26c0 - 26ff
-	0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9,
-	0x85, 0xD8, 0xAE, 0xD9, 0x8A, 0x46, 0xD9, 0x85,
-	0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD8,
-	0xAC, 0xD8, 0xAD, 0x46, 0xD9, 0x86, 0xD8, 0xAC,
-	0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9,
-	0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x8A,
-	0x46, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x85, 0x46,
-	0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x89, 0x46, 0xD9,
-	// Bytes 2700 - 273f
-	0x86, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x86,
-	0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD9,
-	0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x87, 0xD9, 0x85,
-	0xD8, 0xAC, 0x46, 0xD9, 0x87, 0xD9, 0x85, 0xD9,
-	0x85, 0x46, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, 0x8A,
-	0x46, 0xD9, 0x8A, 0xD8, 0xAD, 0xD9, 0x8A, 0x46,
-	0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,
-	0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x8A,
-	// Bytes 2740 - 277f
-	0xD9, 0x94, 0xD8, 0xA7, 0x46, 0xD9, 0x8A, 0xD9,
-	0x94, 0xD8, 0xAC, 0x46, 0xD9, 0x8A, 0xD9, 0x94,
-	0xD8, 0xAD, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8,
-	0xAE, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xB1,
-	0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xB2, 0x46,
-	0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x85, 0x46, 0xD9,
-	0x8A, 0xD9, 0x94, 0xD9, 0x86, 0x46, 0xD9, 0x8A,
-	0xD9, 0x94, 0xD9, 0x87, 0x46, 0xD9, 0x8A, 0xD9,
-	// Bytes 2780 - 27bf
-	0x94, 0xD9, 0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94,
-	0xD9, 0x89, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9,
-	0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x86,
-	0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x87, 0x46,
-	0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x88, 0x46, 0xD9,
-	0x8A, 0xD9, 0x94, 0xDB, 0x90, 0x46, 0xD9, 0x8A,
-	0xD9, 0x94, 0xDB, 0x95, 0x46, 0xE0, 0xB9, 0x8D,
-	0xE0, 0xB8, 0xB2, 0x46, 0xE0, 0xBA, 0xAB, 0xE0,
-	// Bytes 27c0 - 27ff
-	0xBA, 0x99, 0x46, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA,
-	0xA1, 0x46, 0xE0, 0xBB, 0x8D, 0xE0, 0xBA, 0xB2,
-	0x46, 0xE0, 0xBD, 0x80, 0xE0, 0xBE, 0xB5, 0x46,
-	0xE0, 0xBD, 0x82, 0xE0, 0xBE, 0xB7, 0x46, 0xE0,
-	0xBD, 0x8C, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD,
-	0x91, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x96,
-	0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x9B, 0xE0,
-	0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0x90, 0xE0, 0xBE,
-	// Bytes 2800 - 283f
-	0xB5, 0x46, 0xE0, 0xBE, 0x92, 0xE0, 0xBE, 0xB7,
-	0x46, 0xE0, 0xBE, 0x9C, 0xE0, 0xBE, 0xB7, 0x46,
-	0xE0, 0xBE, 0xA1, 0xE0, 0xBE, 0xB7, 0x46, 0xE0,
-	0xBE, 0xA6, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE,
-	0xAB, 0xE0, 0xBE, 0xB7, 0x46, 0xE1, 0x84, 0x80,
-	0xE1, 0x85, 0xA1, 0x46, 0xE1, 0x84, 0x82, 0xE1,
-	0x85, 0xA1, 0x46, 0xE1, 0x84, 0x83, 0xE1, 0x85,
-	0xA1, 0x46, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1,
-	// Bytes 2840 - 287f
-	0x46, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x46,
-	0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0x46, 0xE1,
-	0x84, 0x89, 0xE1, 0x85, 0xA1, 0x46, 0xE1, 0x84,
-	0x8B, 0xE1, 0x85, 0xA1, 0x46, 0xE1, 0x84, 0x8B,
-	0xE1, 0x85, 0xAE, 0x46, 0xE1, 0x84, 0x8C, 0xE1,
-	0x85, 0xA1, 0x46, 0xE1, 0x84, 0x8E, 0xE1, 0x85,
-	0xA1, 0x46, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1,
-	0x46, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x46,
-	// Bytes 2880 - 28bf
-	0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0x46, 0xE1,
-	0x84, 0x92, 0xE1, 0x85, 0xA1, 0x46, 0xE2, 0x80,
+	0xE0, 0xBE, 0xA6, 0xE0, 0xBE, 0xB7, 0x46, 0xE0,
+	0xBE, 0xAB, 0xE0, 0xBE, 0xB7, 0x46, 0xE2, 0x80,
 	0xB2, 0xE2, 0x80, 0xB2, 0x46, 0xE2, 0x80, 0xB5,
 	0xE2, 0x80, 0xB5, 0x46, 0xE2, 0x88, 0xAB, 0xE2,
 	0x88, 0xAB, 0x46, 0xE2, 0x88, 0xAE, 0xE2, 0x88,
 	0xAE, 0x46, 0xE3, 0x81, 0xBB, 0xE3, 0x81, 0x8B,
 	0x46, 0xE3, 0x82, 0x88, 0xE3, 0x82, 0x8A, 0x46,
 	0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0x46, 0xE3,
-	// Bytes 28c0 - 28ff
+	// Bytes 26c0 - 26ff
 	0x82, 0xB3, 0xE3, 0x82, 0xB3, 0x46, 0xE3, 0x82,
 	0xB3, 0xE3, 0x83, 0x88, 0x46, 0xE3, 0x83, 0x88,
 	0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83, 0x8A, 0xE3,
@@ -1514,7 +1440,7 @@
 	0x46, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xA9, 0x46,
 	0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xA0, 0x46, 0xE5,
 	0xA4, 0xA7, 0xE6, 0xAD, 0xA3, 0x46, 0xE5, 0xB9,
-	// Bytes 2900 - 293f
+	// Bytes 2700 - 273f
 	0xB3, 0xE6, 0x88, 0x90, 0x46, 0xE6, 0x98, 0x8E,
 	0xE6, 0xB2, 0xBB, 0x46, 0xE6, 0x98, 0xAD, 0xE5,
 	0x92, 0x8C, 0x47, 0x72, 0x61, 0x64, 0xE2, 0x88,
@@ -1523,7 +1449,7 @@
 	0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x82,
 	0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,
 	0x83, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1,
-	// Bytes 2940 - 297f
+	// Bytes 2740 - 277f
 	0x84, 0x85, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,
 	0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x29, 0x48,
 	0x28, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0x29,
@@ -1532,7 +1458,7 @@
 	0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x8C, 0xE1,
 	0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x8C,
 	0xE1, 0x85, 0xAE, 0x29, 0x48, 0x28, 0xE1, 0x84,
-	// Bytes 2980 - 29bf
+	// Bytes 2780 - 27bf
 	0x8E, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1,
 	0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,
 	0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x29, 0x48,
@@ -1541,7 +1467,7 @@
 	0x29, 0x48, 0x72, 0x61, 0x64, 0xE2, 0x88, 0x95,
 	0x73, 0x32, 0x48, 0xD8, 0xA7, 0xD9, 0x83, 0xD8,
 	0xA8, 0xD8, 0xB1, 0x48, 0xD8, 0xA7, 0xD9, 0x84,
-	// Bytes 29c0 - 29ff
+	// Bytes 27c0 - 27ff
 	0xD9, 0x84, 0xD9, 0x87, 0x48, 0xD8, 0xB1, 0xD8,
 	0xB3, 0xD9, 0x88, 0xD9, 0x84, 0x48, 0xD8, 0xB1,
 	0xDB, 0x8C, 0xD8, 0xA7, 0xD9, 0x84, 0x48, 0xD8,
@@ -1550,7 +1476,7 @@
 	0x48, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD8,
 	0xAF, 0x48, 0xD9, 0x88, 0xD8, 0xB3, 0xD9, 0x84,
 	0xD9, 0x85, 0x49, 0xE2, 0x80, 0xB2, 0xE2, 0x80,
-	// Bytes 2a00 - 2a3f
+	// Bytes 2800 - 283f
 	0xB2, 0xE2, 0x80, 0xB2, 0x49, 0xE2, 0x80, 0xB5,
 	0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x49, 0xE2,
 	0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB,
@@ -1559,7 +1485,7 @@
 	0x89, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94,
 	0xE4, 0xBA, 0x8C, 0xE3, 0x80, 0x95, 0x49, 0xE3,
 	0x80, 0x94, 0xE5, 0x8B, 0x9D, 0xE3, 0x80, 0x95,
-	// Bytes 2a40 - 2a7f
+	// Bytes 2840 - 287f
 	0x49, 0xE3, 0x80, 0x94, 0xE5, 0xAE, 0x89, 0xE3,
 	0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6, 0x89,
 	0x93, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94,
@@ -1568,7 +1494,7 @@
 	0x49, 0xE3, 0x80, 0x94, 0xE7, 0x82, 0xB9, 0xE3,
 	0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE7, 0x9B,
 	0x97, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x82, 0xA2,
-	// Bytes 2a80 - 2abf
+	// Bytes 2880 - 28bf
 	0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49, 0xE3,
 	0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81,
 	0x49, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0xA9, 0xE3,
@@ -1577,7 +1503,7 @@
 	0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x49, 0xE3,
 	0x82, 0xAB, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xAA,
 	0x49, 0xE3, 0x82, 0xB1, 0xE3, 0x83, 0xBC, 0xE3,
-	// Bytes 2ac0 - 2aff
+	// Bytes 28c0 - 28ff
 	0x82, 0xB9, 0x49, 0xE3, 0x82, 0xB3, 0xE3, 0x83,
 	0xAB, 0xE3, 0x83, 0x8A, 0x49, 0xE3, 0x82, 0xBB,
 	0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0x49, 0xE3,
@@ -1586,7 +1512,7 @@
 	0x82, 0xB7, 0x49, 0xE3, 0x83, 0x88, 0xE3, 0x82,
 	0x99, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x8E,
 	0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x49, 0xE3,
-	// Bytes 2b00 - 2b3f
+	// Bytes 2900 - 293f
 	0x83, 0x8F, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0x84,
 	0x49, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0xE3,
 	0x83, 0xAB, 0x49, 0xE3, 0x83, 0x92, 0xE3, 0x82,
@@ -1595,7 +1521,7 @@
 	0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xBD,
 	0x49, 0xE3, 0x83, 0x98, 0xE3, 0x83, 0xAB, 0xE3,
 	0x83, 0x84, 0x49, 0xE3, 0x83, 0x9B, 0xE3, 0x83,
-	// Bytes 2b40 - 2b7f
+	// Bytes 2940 - 297f
 	0xBC, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x9B,
 	0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xB3, 0x49, 0xE3,
 	0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xAB,
@@ -1604,1110 +1530,1194 @@
 	0xAB, 0xE3, 0x82, 0xAF, 0x49, 0xE3, 0x83, 0xA4,
 	0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49, 0xE3,
 	0x83, 0xA6, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xB3,
-	// Bytes 2b80 - 2bbf
+	// Bytes 2980 - 29bf
 	0x49, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83, 0xE3,
-	0x83, 0x88, 0x4C, 0xE1, 0x84, 0x8C, 0xE1, 0x85,
-	0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xB4, 0x4C,
-	0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80,
-	0xB2, 0xE2, 0x80, 0xB2, 0x4C, 0xE2, 0x88, 0xAB,
+	0x83, 0x88, 0x4C, 0xE2, 0x80, 0xB2, 0xE2, 0x80,
+	0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x4C,
 	0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88,
-	0xAB, 0x4C, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xAB,
-	0xE3, 0x83, 0x95, 0xE3, 0x82, 0xA1, 0x4C, 0xE3,
+	0xAB, 0xE2, 0x88, 0xAB, 0x4C, 0xE3, 0x82, 0xA2,
+	0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x95, 0xE3, 0x82,
+	0xA1, 0x4C, 0xE3, 0x82, 0xA8, 0xE3, 0x83, 0xBC,
+	0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xBC, 0x4C, 0xE3,
+	// Bytes 29c0 - 29ff
+	0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAD,
+	0xE3, 0x83, 0xB3, 0x4C, 0xE3, 0x82, 0xAB, 0xE3,
+	0x82, 0x99, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x9E,
+	0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xA9, 0xE3,
+	0x83, 0x83, 0xE3, 0x83, 0x88, 0x4C, 0xE3, 0x82,
+	0xAB, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAA, 0xE3,
+	0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x82,
+	0x99, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xBC, 0x4C,
+	// Bytes 2a00 - 2a3f
+	0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xA5, 0xE3, 0x83,
+	0xAA, 0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAF,
+	0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83,
+	0xA0, 0x4C, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD,
+	0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x8D, 0x4C, 0xE3,
+	0x82, 0xB5, 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xAF,
+	0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x82, 0xBF, 0xE3,
+	0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB9,
+	// Bytes 2a40 - 2a7f
+	0x4C, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3,
+	0x83, 0xBC, 0xE3, 0x83, 0x84, 0x4C, 0xE3, 0x83,
+	0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xAF, 0xE3,
+	0x83, 0xAB, 0x4C, 0xE3, 0x83, 0x95, 0xE3, 0x82,
+	0xA3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0x4C,
+	0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0xE3, 0x83,
+	0xBC, 0xE3, 0x82, 0xBF, 0x4C, 0xE3, 0x83, 0x98,
+	0xE3, 0x82, 0x9A, 0xE3, 0x83, 0x8B, 0xE3, 0x83,
+	// Bytes 2a80 - 2abf
+	0x92, 0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A,
+	0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0x4C, 0xE3,
+	0x83, 0x9B, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB,
+	0xE3, 0x83, 0x88, 0x4C, 0xE3, 0x83, 0x9E, 0xE3,
+	0x82, 0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD,
+	0x4C, 0xE3, 0x83, 0x9F, 0xE3, 0x82, 0xAF, 0xE3,
+	0x83, 0xAD, 0xE3, 0x83, 0xB3, 0x4C, 0xE3, 0x83,
+	0xA1, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3,
+	// Bytes 2ac0 - 2aff
+	0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAA, 0xE3, 0x83,
+	0x83, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x4C,
+	0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x92, 0xE3, 0x82,
+	0x9A, 0xE3, 0x83, 0xBC, 0x4C, 0xE6, 0xA0, 0xAA,
+	0xE5, 0xBC, 0x8F, 0xE4, 0xBC, 0x9A, 0xE7, 0xA4,
+	0xBE, 0x4E, 0x28, 0xE1, 0x84, 0x8B, 0xE1, 0x85,
+	0xA9, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xAE, 0x29,
+	0x4F, 0xD8, 0xAC, 0xD9, 0x84, 0x20, 0xD8, 0xAC,
+	// Bytes 2b00 - 2b3f
+	0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x87,
+	0x4F, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0x8F, 0xE3,
+	0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88,
+	0x4F, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xB3, 0xE3,
+	0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA2,
+	0x4F, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3,
+	0x83, 0xAF, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88,
+	0x4F, 0xE3, 0x82, 0xB5, 0xE3, 0x83, 0xB3, 0xE3,
+	// Bytes 2b40 - 2b7f
+	0x83, 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0,
+	0x4F, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0xE3,
+	0x83, 0xBC, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xAB,
+	0x4F, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0xAF, 0xE3,
+	0x82, 0xBF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB,
+	0x4F, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3,
+	0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88,
+	0x4F, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0xB3, 0xE3,
+	// Bytes 2b80 - 2bbf
+	0x82, 0xB7, 0xE3, 0x83, 0xA7, 0xE3, 0x83, 0xB3,
+	0x4F, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3,
+	0x82, 0x99, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3,
+	0x4F, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xBC, 0xE3,
+	0x83, 0x95, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB,
+	0x51, 0x28, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA9,
+	0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA5, 0xE1, 0x86,
+	0xAB, 0x29, 0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x82,
 	// Bytes 2bc0 - 2bff
-	0x82, 0xA8, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB,
-	0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAB, 0xE3,
-	0x82, 0x99, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3,
-	0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3,
-	0x83, 0xB3, 0xE3, 0x83, 0x9E, 0x4C, 0xE3, 0x82,
-	0xAB, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3,
-	0x83, 0x88, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83,
-	0xAD, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C,
+	0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xBF, 0xE3,
+	0x82, 0x99, 0xE3, 0x83, 0xBC, 0x52, 0xE3, 0x82,
+	0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x82, 0xAF, 0xE3,
+	0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xA0,
+	0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3,
+	0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88,
+	0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x82, 0xAF, 0xE3,
+	0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xA0,
 	// Bytes 2c00 - 2c3f
-	0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83,
-	0x8B, 0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD,
-	0xE3, 0x83, 0xA5, 0xE3, 0x83, 0xAA, 0xE3, 0x83,
-	0xBC, 0x4C, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99,
-	0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xA0, 0x4C, 0xE3,
-	0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xBC,
-	0xE3, 0x83, 0x8D, 0x4C, 0xE3, 0x82, 0xB5, 0xE3,
-	0x82, 0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB,
+	0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x52, 0xE3,
+	0x82, 0xAF, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xBB,
+	0xE3, 0x82, 0x99, 0xE3, 0x82, 0xA4, 0xE3, 0x83,
+	0xAD, 0x52, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A,
+	0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBB, 0xE3, 0x83,
+	0xB3, 0xE3, 0x83, 0x88, 0x52, 0xE3, 0x83, 0x92,
+	0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA2, 0xE3, 0x82,
+	0xB9, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x52,
 	// Bytes 2c40 - 2c7f
-	0x4C, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3,
-	0x83, 0xBC, 0xE3, 0x82, 0xB9, 0x4C, 0xE3, 0x83,
-	0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3,
-	0x83, 0x84, 0x4C, 0xE3, 0x83, 0x92, 0xE3, 0x82,
-	0x9A, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C,
-	0xE3, 0x83, 0x95, 0xE3, 0x82, 0xA3, 0xE3, 0x83,
-	0xBC, 0xE3, 0x83, 0x88, 0x4C, 0xE3, 0x83, 0x98,
-	0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82,
+	0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0xE3, 0x83,
+	0x83, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0xA7, 0xE3,
+	0x83, 0xAB, 0x52, 0xE3, 0x83, 0x9F, 0xE3, 0x83,
+	0xAA, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0xE3,
+	0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83,
+	0xAC, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3,
+	0x82, 0xB1, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xB3,
+	0x61, 0xD8, 0xB5, 0xD9, 0x84, 0xD9, 0x89, 0x20,
 	// Bytes 2c80 - 2cbf
-	0xBF, 0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A,
-	0xE3, 0x83, 0x8B, 0xE3, 0x83, 0x92, 0x4C, 0xE3,
-	0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3,
-	0xE3, 0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x9B, 0xE3,
-	0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x88,
-	0x4C, 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3,
-	0x82, 0xAF, 0xE3, 0x83, 0xAD, 0x4C, 0xE3, 0x83,
-	0x9F, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3,
+	0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x87,
+	0x20, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, 0x8A, 0xD9,
+	0x87, 0x20, 0xD9, 0x88, 0xD8, 0xB3, 0xD9, 0x84,
+	0xD9, 0x85, 0x06, 0xE0, 0xA7, 0x87, 0xE0, 0xA6,
+	0xBE, 0x01, 0x06, 0xE0, 0xA7, 0x87, 0xE0, 0xA7,
+	0x97, 0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0, 0xAC,
+	0xBE, 0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0, 0xAD,
+	0x96, 0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0, 0xAD,
 	// Bytes 2cc0 - 2cff
-	0x83, 0xB3, 0x4C, 0xE3, 0x83, 0xA1, 0xE3, 0x83,
-	0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x4C,
-	0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x83, 0xE3, 0x83,
-	0x88, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAB,
-	0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x83,
-	0xBC, 0x4C, 0xE6, 0xA0, 0xAA, 0xE5, 0xBC, 0x8F,
-	0xE4, 0xBC, 0x9A, 0xE7, 0xA4, 0xBE, 0x4E, 0x28,
-	0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84,
+	0x97, 0x01, 0x06, 0xE0, 0xAE, 0x92, 0xE0, 0xAF,
+	0x97, 0x01, 0x06, 0xE0, 0xAF, 0x86, 0xE0, 0xAE,
+	0xBE, 0x01, 0x06, 0xE0, 0xAF, 0x86, 0xE0, 0xAF,
+	0x97, 0x01, 0x06, 0xE0, 0xAF, 0x87, 0xE0, 0xAE,
+	0xBE, 0x01, 0x06, 0xE0, 0xB2, 0xBF, 0xE0, 0xB3,
+	0x95, 0x01, 0x06, 0xE0, 0xB3, 0x86, 0xE0, 0xB3,
+	0x95, 0x01, 0x06, 0xE0, 0xB3, 0x86, 0xE0, 0xB3,
+	0x96, 0x01, 0x06, 0xE0, 0xB5, 0x86, 0xE0, 0xB4,
 	// Bytes 2d00 - 2d3f
-	0x92, 0xE1, 0x85, 0xAE, 0x29, 0x4F, 0xD8, 0xAC,
-	0xD9, 0x84, 0x20, 0xD8, 0xAC, 0xD9, 0x84, 0xD8,
-	0xA7, 0xD9, 0x84, 0xD9, 0x87, 0x4F, 0xE1, 0x84,
-	0x8E, 0xE1, 0x85, 0xA1, 0xE1, 0x86, 0xB7, 0xE1,
-	0x84, 0x80, 0xE1, 0x85, 0xA9, 0x4F, 0xE3, 0x82,
-	0xA2, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3,
-	0x83, 0xBC, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82,
-	0xA2, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3,
+	0xBE, 0x01, 0x06, 0xE0, 0xB5, 0x86, 0xE0, 0xB5,
+	0x97, 0x01, 0x06, 0xE0, 0xB5, 0x87, 0xE0, 0xB4,
+	0xBE, 0x01, 0x06, 0xE0, 0xB7, 0x99, 0xE0, 0xB7,
+	0x9F, 0x01, 0x06, 0xE1, 0x80, 0xA5, 0xE1, 0x80,
+	0xAE, 0x01, 0x06, 0xE1, 0xAC, 0x85, 0xE1, 0xAC,
+	0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x87, 0xE1, 0xAC,
+	0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x89, 0xE1, 0xAC,
+	0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x8B, 0xE1, 0xAC,
 	// Bytes 2d40 - 2d7f
-	0x82, 0x9A, 0xE3, 0x82, 0xA2, 0x4F, 0xE3, 0x82,
-	0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3,
-	0x83, 0x83, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82,
-	0xB5, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3,
-	0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x4F, 0xE3, 0x83,
-	0x8F, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3,
-	0x83, 0xAC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83,
-	0x98, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0xBF, 0xE3,
+	0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x8D, 0xE1, 0xAC,
+	0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x91, 0xE1, 0xAC,
+	0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBA, 0xE1, 0xAC,
+	0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBC, 0xE1, 0xAC,
+	0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBE, 0xE1, 0xAC,
+	0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBF, 0xE1, 0xAC,
+	0xB5, 0x01, 0x06, 0xE1, 0xAD, 0x82, 0xE1, 0xAC,
+	0xB5, 0x01, 0x08, 0xF0, 0x91, 0x84, 0xB1, 0xF0,
 	// Bytes 2d80 - 2dbf
-	0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83,
-	0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA4, 0xE3,
-	0x83, 0xB3, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x83,
-	0x9E, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB7, 0xE3,
-	0x83, 0xA7, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83,
-	0xA1, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3,
-	0x83, 0x88, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83,
-	0xAB, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x95, 0xE3,
+	0x91, 0x84, 0xA7, 0x01, 0x08, 0xF0, 0x91, 0x84,
+	0xB2, 0xF0, 0x91, 0x84, 0xA7, 0x01, 0x08, 0xF0,
+	0x91, 0x8D, 0x87, 0xF0, 0x91, 0x8C, 0xBE, 0x01,
+	0x08, 0xF0, 0x91, 0x8D, 0x87, 0xF0, 0x91, 0x8D,
+	0x97, 0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0,
+	0x91, 0x92, 0xB0, 0x01, 0x08, 0xF0, 0x91, 0x92,
+	0xB9, 0xF0, 0x91, 0x92, 0xBA, 0x01, 0x08, 0xF0,
+	0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xBD, 0x01,
 	// Bytes 2dc0 - 2dff
-	0x82, 0x99, 0xE3, 0x83, 0xAB, 0x51, 0x28, 0xE1,
-	0x84, 0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x8C,
-	0xE1, 0x85, 0xA5, 0xE1, 0x86, 0xAB, 0x29, 0x52,
-	0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83,
-	0xAB, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3,
-	0x83, 0xBC, 0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83,
-	0xAD, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3,
-	0x83, 0xA9, 0xE3, 0x83, 0xA0, 0x52, 0xE3, 0x82,
+	0x08, 0xF0, 0x91, 0x96, 0xB8, 0xF0, 0x91, 0x96,
+	0xAF, 0x01, 0x08, 0xF0, 0x91, 0x96, 0xB9, 0xF0,
+	0x91, 0x96, 0xAF, 0x01, 0x09, 0xE0, 0xB3, 0x86,
+	0xE0, 0xB3, 0x82, 0xE0, 0xB3, 0x95, 0x02, 0x09,
+	0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0xE0, 0xB7,
+	0x8A, 0x12, 0x44, 0x44, 0x5A, 0xCC, 0x8C, 0xC9,
+	0x44, 0x44, 0x7A, 0xCC, 0x8C, 0xC9, 0x44, 0x64,
+	0x7A, 0xCC, 0x8C, 0xC9, 0x46, 0xD9, 0x84, 0xD8,
 	// Bytes 2e00 - 2e3f
-	0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xA1, 0xE3,
-	0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB,
-	0x52, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3,
-	0x83, 0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0x88,
-	0xE3, 0x83, 0xB3, 0x52, 0xE3, 0x82, 0xAF, 0xE3,
-	0x83, 0xAB, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99,
-	0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xAD, 0x52, 0xE3,
-	0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC,
+	0xA7, 0xD9, 0x93, 0xC9, 0x46, 0xD9, 0x84, 0xD8,
+	0xA7, 0xD9, 0x94, 0xC9, 0x46, 0xD9, 0x84, 0xD8,
+	0xA7, 0xD9, 0x95, 0xB5, 0x46, 0xE1, 0x84, 0x80,
+	0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x82,
+	0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x83,
+	0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x85,
+	0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x86,
+	0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x87,
 	// Bytes 2e40 - 2e7f
-	0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83,
-	0x88, 0x52, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A,
-	0xE3, 0x82, 0xA2, 0xE3, 0x82, 0xB9, 0xE3, 0x83,
-	0x88, 0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83, 0x95,
-	0xE3, 0x82, 0x99, 0xE3, 0x83, 0x83, 0xE3, 0x82,
-	0xB7, 0xE3, 0x82, 0xA7, 0xE3, 0x83, 0xAB, 0x52,
-	0xE3, 0x83, 0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83,
-	0x8F, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3,
+	0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x89,
+	0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x8B,
+	0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x8B,
+	0xE1, 0x85, 0xAE, 0x01, 0x46, 0xE1, 0x84, 0x8C,
+	0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x8E,
+	0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x8F,
+	0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x90,
+	0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x91,
 	// Bytes 2e80 - 2ebf
-	0x83, 0xAB, 0x52, 0xE3, 0x83, 0xAC, 0xE3, 0x83,
-	0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0xB1, 0xE3,
-	0x82, 0x99, 0xE3, 0x83, 0xB3, 0x61, 0xD8, 0xB5,
-	0xD9, 0x84, 0xD9, 0x89, 0x20, 0xD8, 0xA7, 0xD9,
-	0x84, 0xD9, 0x84, 0xD9, 0x87, 0x20, 0xD8, 0xB9,
-	0xD9, 0x84, 0xD9, 0x8A, 0xD9, 0x87, 0x20, 0xD9,
-	0x88, 0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x86,
-	0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0x86, 0xE0,
-	// Bytes 2ec0 - 2eff
-	0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0x09, 0xE0, 0xB7,
-	0x99, 0xE0, 0xB7, 0x8F, 0xE0, 0xB7, 0x8A, 0x11,
-	0x44, 0x44, 0x5A, 0xCC, 0x8C, 0xC9, 0x44, 0x44,
-	0x7A, 0xCC, 0x8C, 0xC9, 0x44, 0x64, 0x7A, 0xCC,
-	0x8C, 0xC9, 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9,
-	0x93, 0xC9, 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9,
-	0x94, 0xC9, 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9,
-	0x95, 0xB5, 0x49, 0xE3, 0x83, 0xA1, 0xE3, 0x82,
-	// Bytes 2f00 - 2f3f
-	0xAB, 0xE3, 0x82, 0x99, 0x0D, 0x4C, 0xE3, 0x82,
+	0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x92,
+	0xE1, 0x85, 0xA1, 0x01, 0x49, 0xE3, 0x83, 0xA1,
+	0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x0D, 0x4C,
+	0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xAE, 0xE1, 0x84,
+	0x8B, 0xE1, 0x85, 0xB4, 0x01, 0x4C, 0xE3, 0x82,
 	0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xAB, 0xE3,
 	0x82, 0x99, 0x0D, 0x4C, 0xE3, 0x82, 0xB3, 0xE3,
 	0x83, 0xBC, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A,
+	// Bytes 2ec0 - 2eff
 	0x0D, 0x4C, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC,
 	0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D, 0x4F,
-	0xE3, 0x82, 0xA4, 0xE3, 0x83, 0x8B, 0xE3, 0x83,
-	0xB3, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x0D,
-	// Bytes 2f40 - 2f7f
-	0x4F, 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0xAA, 0xE3,
+	0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0xE1, 0x86,
+	0xB7, 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA9, 0x01,
+	0x4F, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0x8B, 0xE3,
 	0x83, 0xB3, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99,
-	0x0D, 0x4F, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A,
-	0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB7, 0xE3, 0x82,
-	0x99, 0x0D, 0x4F, 0xE3, 0x83, 0x9B, 0xE3, 0x82,
-	0x9A, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3,
-	0x82, 0x99, 0x0D, 0x52, 0xE3, 0x82, 0xA8, 0xE3,
-	0x82, 0xB9, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xBC,
+	0x0D, 0x4F, 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0xAA,
+	0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAF, 0xE3, 0x82,
+	// Bytes 2f00 - 2f3f
+	0x99, 0x0D, 0x4F, 0xE3, 0x83, 0x98, 0xE3, 0x82,
+	0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB7, 0xE3,
+	0x82, 0x99, 0x0D, 0x4F, 0xE3, 0x83, 0x9B, 0xE3,
+	0x82, 0x9A, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88,
+	0xE3, 0x82, 0x99, 0x0D, 0x52, 0xE3, 0x82, 0xA8,
+	0xE3, 0x82, 0xB9, 0xE3, 0x82, 0xAF, 0xE3, 0x83,
+	0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D,
+	0x52, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0xA1, 0xE3,
+	// Bytes 2f40 - 2f7f
+	0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88,
+	0xE3, 0x82, 0x99, 0x0D, 0x86, 0xE0, 0xB3, 0x86,
+	0xE0, 0xB3, 0x82, 0x01, 0x86, 0xE0, 0xB7, 0x99,
+	0xE0, 0xB7, 0x8F, 0x01, 0x03, 0x3C, 0xCC, 0xB8,
+	0x05, 0x03, 0x3D, 0xCC, 0xB8, 0x05, 0x03, 0x3E,
+	0xCC, 0xB8, 0x05, 0x03, 0x41, 0xCC, 0x80, 0xC9,
+	0x03, 0x41, 0xCC, 0x81, 0xC9, 0x03, 0x41, 0xCC,
+	0x83, 0xC9, 0x03, 0x41, 0xCC, 0x84, 0xC9, 0x03,
 	// Bytes 2f80 - 2fbf
-	0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D, 0x52,
-	0xE3, 0x83, 0x95, 0xE3, 0x82, 0xA1, 0xE3, 0x83,
-	0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3,
-	0x82, 0x99, 0x0D, 0x03, 0x3C, 0xCC, 0xB8, 0x05,
-	0x03, 0x3D, 0xCC, 0xB8, 0x05, 0x03, 0x3E, 0xCC,
-	0xB8, 0x05, 0x03, 0x41, 0xCC, 0x80, 0xC9, 0x03,
-	0x41, 0xCC, 0x81, 0xC9, 0x03, 0x41, 0xCC, 0x83,
-	0xC9, 0x03, 0x41, 0xCC, 0x84, 0xC9, 0x03, 0x41,
+	0x41, 0xCC, 0x89, 0xC9, 0x03, 0x41, 0xCC, 0x8C,
+	0xC9, 0x03, 0x41, 0xCC, 0x8F, 0xC9, 0x03, 0x41,
+	0xCC, 0x91, 0xC9, 0x03, 0x41, 0xCC, 0xA5, 0xB5,
+	0x03, 0x41, 0xCC, 0xA8, 0xA5, 0x03, 0x42, 0xCC,
+	0x87, 0xC9, 0x03, 0x42, 0xCC, 0xA3, 0xB5, 0x03,
+	0x42, 0xCC, 0xB1, 0xB5, 0x03, 0x43, 0xCC, 0x81,
+	0xC9, 0x03, 0x43, 0xCC, 0x82, 0xC9, 0x03, 0x43,
+	0xCC, 0x87, 0xC9, 0x03, 0x43, 0xCC, 0x8C, 0xC9,
 	// Bytes 2fc0 - 2fff
-	0xCC, 0x89, 0xC9, 0x03, 0x41, 0xCC, 0x8C, 0xC9,
-	0x03, 0x41, 0xCC, 0x8F, 0xC9, 0x03, 0x41, 0xCC,
-	0x91, 0xC9, 0x03, 0x41, 0xCC, 0xA5, 0xB5, 0x03,
-	0x41, 0xCC, 0xA8, 0xA5, 0x03, 0x42, 0xCC, 0x87,
-	0xC9, 0x03, 0x42, 0xCC, 0xA3, 0xB5, 0x03, 0x42,
-	0xCC, 0xB1, 0xB5, 0x03, 0x43, 0xCC, 0x81, 0xC9,
-	0x03, 0x43, 0xCC, 0x82, 0xC9, 0x03, 0x43, 0xCC,
-	0x87, 0xC9, 0x03, 0x43, 0xCC, 0x8C, 0xC9, 0x03,
+	0x03, 0x44, 0xCC, 0x87, 0xC9, 0x03, 0x44, 0xCC,
+	0x8C, 0xC9, 0x03, 0x44, 0xCC, 0xA3, 0xB5, 0x03,
+	0x44, 0xCC, 0xA7, 0xA5, 0x03, 0x44, 0xCC, 0xAD,
+	0xB5, 0x03, 0x44, 0xCC, 0xB1, 0xB5, 0x03, 0x45,
+	0xCC, 0x80, 0xC9, 0x03, 0x45, 0xCC, 0x81, 0xC9,
+	0x03, 0x45, 0xCC, 0x83, 0xC9, 0x03, 0x45, 0xCC,
+	0x86, 0xC9, 0x03, 0x45, 0xCC, 0x87, 0xC9, 0x03,
+	0x45, 0xCC, 0x88, 0xC9, 0x03, 0x45, 0xCC, 0x89,
 	// Bytes 3000 - 303f
-	0x44, 0xCC, 0x87, 0xC9, 0x03, 0x44, 0xCC, 0x8C,
-	0xC9, 0x03, 0x44, 0xCC, 0xA3, 0xB5, 0x03, 0x44,
-	0xCC, 0xA7, 0xA5, 0x03, 0x44, 0xCC, 0xAD, 0xB5,
-	0x03, 0x44, 0xCC, 0xB1, 0xB5, 0x03, 0x45, 0xCC,
-	0x80, 0xC9, 0x03, 0x45, 0xCC, 0x81, 0xC9, 0x03,
-	0x45, 0xCC, 0x83, 0xC9, 0x03, 0x45, 0xCC, 0x86,
-	0xC9, 0x03, 0x45, 0xCC, 0x87, 0xC9, 0x03, 0x45,
-	0xCC, 0x88, 0xC9, 0x03, 0x45, 0xCC, 0x89, 0xC9,
+	0xC9, 0x03, 0x45, 0xCC, 0x8C, 0xC9, 0x03, 0x45,
+	0xCC, 0x8F, 0xC9, 0x03, 0x45, 0xCC, 0x91, 0xC9,
+	0x03, 0x45, 0xCC, 0xA8, 0xA5, 0x03, 0x45, 0xCC,
+	0xAD, 0xB5, 0x03, 0x45, 0xCC, 0xB0, 0xB5, 0x03,
+	0x46, 0xCC, 0x87, 0xC9, 0x03, 0x47, 0xCC, 0x81,
+	0xC9, 0x03, 0x47, 0xCC, 0x82, 0xC9, 0x03, 0x47,
+	0xCC, 0x84, 0xC9, 0x03, 0x47, 0xCC, 0x86, 0xC9,
+	0x03, 0x47, 0xCC, 0x87, 0xC9, 0x03, 0x47, 0xCC,
 	// Bytes 3040 - 307f
-	0x03, 0x45, 0xCC, 0x8C, 0xC9, 0x03, 0x45, 0xCC,
-	0x8F, 0xC9, 0x03, 0x45, 0xCC, 0x91, 0xC9, 0x03,
-	0x45, 0xCC, 0xA8, 0xA5, 0x03, 0x45, 0xCC, 0xAD,
-	0xB5, 0x03, 0x45, 0xCC, 0xB0, 0xB5, 0x03, 0x46,
-	0xCC, 0x87, 0xC9, 0x03, 0x47, 0xCC, 0x81, 0xC9,
-	0x03, 0x47, 0xCC, 0x82, 0xC9, 0x03, 0x47, 0xCC,
-	0x84, 0xC9, 0x03, 0x47, 0xCC, 0x86, 0xC9, 0x03,
-	0x47, 0xCC, 0x87, 0xC9, 0x03, 0x47, 0xCC, 0x8C,
+	0x8C, 0xC9, 0x03, 0x47, 0xCC, 0xA7, 0xA5, 0x03,
+	0x48, 0xCC, 0x82, 0xC9, 0x03, 0x48, 0xCC, 0x87,
+	0xC9, 0x03, 0x48, 0xCC, 0x88, 0xC9, 0x03, 0x48,
+	0xCC, 0x8C, 0xC9, 0x03, 0x48, 0xCC, 0xA3, 0xB5,
+	0x03, 0x48, 0xCC, 0xA7, 0xA5, 0x03, 0x48, 0xCC,
+	0xAE, 0xB5, 0x03, 0x49, 0xCC, 0x80, 0xC9, 0x03,
+	0x49, 0xCC, 0x81, 0xC9, 0x03, 0x49, 0xCC, 0x82,
+	0xC9, 0x03, 0x49, 0xCC, 0x83, 0xC9, 0x03, 0x49,
 	// Bytes 3080 - 30bf
-	0xC9, 0x03, 0x47, 0xCC, 0xA7, 0xA5, 0x03, 0x48,
-	0xCC, 0x82, 0xC9, 0x03, 0x48, 0xCC, 0x87, 0xC9,
-	0x03, 0x48, 0xCC, 0x88, 0xC9, 0x03, 0x48, 0xCC,
-	0x8C, 0xC9, 0x03, 0x48, 0xCC, 0xA3, 0xB5, 0x03,
-	0x48, 0xCC, 0xA7, 0xA5, 0x03, 0x48, 0xCC, 0xAE,
-	0xB5, 0x03, 0x49, 0xCC, 0x80, 0xC9, 0x03, 0x49,
-	0xCC, 0x81, 0xC9, 0x03, 0x49, 0xCC, 0x82, 0xC9,
-	0x03, 0x49, 0xCC, 0x83, 0xC9, 0x03, 0x49, 0xCC,
+	0xCC, 0x84, 0xC9, 0x03, 0x49, 0xCC, 0x86, 0xC9,
+	0x03, 0x49, 0xCC, 0x87, 0xC9, 0x03, 0x49, 0xCC,
+	0x89, 0xC9, 0x03, 0x49, 0xCC, 0x8C, 0xC9, 0x03,
+	0x49, 0xCC, 0x8F, 0xC9, 0x03, 0x49, 0xCC, 0x91,
+	0xC9, 0x03, 0x49, 0xCC, 0xA3, 0xB5, 0x03, 0x49,
+	0xCC, 0xA8, 0xA5, 0x03, 0x49, 0xCC, 0xB0, 0xB5,
+	0x03, 0x4A, 0xCC, 0x82, 0xC9, 0x03, 0x4B, 0xCC,
+	0x81, 0xC9, 0x03, 0x4B, 0xCC, 0x8C, 0xC9, 0x03,
 	// Bytes 30c0 - 30ff
-	0x84, 0xC9, 0x03, 0x49, 0xCC, 0x86, 0xC9, 0x03,
-	0x49, 0xCC, 0x87, 0xC9, 0x03, 0x49, 0xCC, 0x89,
-	0xC9, 0x03, 0x49, 0xCC, 0x8C, 0xC9, 0x03, 0x49,
-	0xCC, 0x8F, 0xC9, 0x03, 0x49, 0xCC, 0x91, 0xC9,
-	0x03, 0x49, 0xCC, 0xA3, 0xB5, 0x03, 0x49, 0xCC,
-	0xA8, 0xA5, 0x03, 0x49, 0xCC, 0xB0, 0xB5, 0x03,
-	0x4A, 0xCC, 0x82, 0xC9, 0x03, 0x4B, 0xCC, 0x81,
-	0xC9, 0x03, 0x4B, 0xCC, 0x8C, 0xC9, 0x03, 0x4B,
+	0x4B, 0xCC, 0xA3, 0xB5, 0x03, 0x4B, 0xCC, 0xA7,
+	0xA5, 0x03, 0x4B, 0xCC, 0xB1, 0xB5, 0x03, 0x4C,
+	0xCC, 0x81, 0xC9, 0x03, 0x4C, 0xCC, 0x8C, 0xC9,
+	0x03, 0x4C, 0xCC, 0xA7, 0xA5, 0x03, 0x4C, 0xCC,
+	0xAD, 0xB5, 0x03, 0x4C, 0xCC, 0xB1, 0xB5, 0x03,
+	0x4D, 0xCC, 0x81, 0xC9, 0x03, 0x4D, 0xCC, 0x87,
+	0xC9, 0x03, 0x4D, 0xCC, 0xA3, 0xB5, 0x03, 0x4E,
+	0xCC, 0x80, 0xC9, 0x03, 0x4E, 0xCC, 0x81, 0xC9,
 	// Bytes 3100 - 313f
-	0xCC, 0xA3, 0xB5, 0x03, 0x4B, 0xCC, 0xA7, 0xA5,
-	0x03, 0x4B, 0xCC, 0xB1, 0xB5, 0x03, 0x4C, 0xCC,
-	0x81, 0xC9, 0x03, 0x4C, 0xCC, 0x8C, 0xC9, 0x03,
-	0x4C, 0xCC, 0xA7, 0xA5, 0x03, 0x4C, 0xCC, 0xAD,
-	0xB5, 0x03, 0x4C, 0xCC, 0xB1, 0xB5, 0x03, 0x4D,
-	0xCC, 0x81, 0xC9, 0x03, 0x4D, 0xCC, 0x87, 0xC9,
-	0x03, 0x4D, 0xCC, 0xA3, 0xB5, 0x03, 0x4E, 0xCC,
-	0x80, 0xC9, 0x03, 0x4E, 0xCC, 0x81, 0xC9, 0x03,
+	0x03, 0x4E, 0xCC, 0x83, 0xC9, 0x03, 0x4E, 0xCC,
+	0x87, 0xC9, 0x03, 0x4E, 0xCC, 0x8C, 0xC9, 0x03,
+	0x4E, 0xCC, 0xA3, 0xB5, 0x03, 0x4E, 0xCC, 0xA7,
+	0xA5, 0x03, 0x4E, 0xCC, 0xAD, 0xB5, 0x03, 0x4E,
+	0xCC, 0xB1, 0xB5, 0x03, 0x4F, 0xCC, 0x80, 0xC9,
+	0x03, 0x4F, 0xCC, 0x81, 0xC9, 0x03, 0x4F, 0xCC,
+	0x86, 0xC9, 0x03, 0x4F, 0xCC, 0x89, 0xC9, 0x03,
+	0x4F, 0xCC, 0x8B, 0xC9, 0x03, 0x4F, 0xCC, 0x8C,
 	// Bytes 3140 - 317f
-	0x4E, 0xCC, 0x83, 0xC9, 0x03, 0x4E, 0xCC, 0x87,
-	0xC9, 0x03, 0x4E, 0xCC, 0x8C, 0xC9, 0x03, 0x4E,
-	0xCC, 0xA3, 0xB5, 0x03, 0x4E, 0xCC, 0xA7, 0xA5,
-	0x03, 0x4E, 0xCC, 0xAD, 0xB5, 0x03, 0x4E, 0xCC,
-	0xB1, 0xB5, 0x03, 0x4F, 0xCC, 0x80, 0xC9, 0x03,
-	0x4F, 0xCC, 0x81, 0xC9, 0x03, 0x4F, 0xCC, 0x86,
-	0xC9, 0x03, 0x4F, 0xCC, 0x89, 0xC9, 0x03, 0x4F,
-	0xCC, 0x8B, 0xC9, 0x03, 0x4F, 0xCC, 0x8C, 0xC9,
+	0xC9, 0x03, 0x4F, 0xCC, 0x8F, 0xC9, 0x03, 0x4F,
+	0xCC, 0x91, 0xC9, 0x03, 0x50, 0xCC, 0x81, 0xC9,
+	0x03, 0x50, 0xCC, 0x87, 0xC9, 0x03, 0x52, 0xCC,
+	0x81, 0xC9, 0x03, 0x52, 0xCC, 0x87, 0xC9, 0x03,
+	0x52, 0xCC, 0x8C, 0xC9, 0x03, 0x52, 0xCC, 0x8F,
+	0xC9, 0x03, 0x52, 0xCC, 0x91, 0xC9, 0x03, 0x52,
+	0xCC, 0xA7, 0xA5, 0x03, 0x52, 0xCC, 0xB1, 0xB5,
+	0x03, 0x53, 0xCC, 0x82, 0xC9, 0x03, 0x53, 0xCC,
 	// Bytes 3180 - 31bf
-	0x03, 0x4F, 0xCC, 0x8F, 0xC9, 0x03, 0x4F, 0xCC,
-	0x91, 0xC9, 0x03, 0x50, 0xCC, 0x81, 0xC9, 0x03,
-	0x50, 0xCC, 0x87, 0xC9, 0x03, 0x52, 0xCC, 0x81,
-	0xC9, 0x03, 0x52, 0xCC, 0x87, 0xC9, 0x03, 0x52,
-	0xCC, 0x8C, 0xC9, 0x03, 0x52, 0xCC, 0x8F, 0xC9,
-	0x03, 0x52, 0xCC, 0x91, 0xC9, 0x03, 0x52, 0xCC,
-	0xA7, 0xA5, 0x03, 0x52, 0xCC, 0xB1, 0xB5, 0x03,
-	0x53, 0xCC, 0x82, 0xC9, 0x03, 0x53, 0xCC, 0x87,
+	0x87, 0xC9, 0x03, 0x53, 0xCC, 0xA6, 0xB5, 0x03,
+	0x53, 0xCC, 0xA7, 0xA5, 0x03, 0x54, 0xCC, 0x87,
+	0xC9, 0x03, 0x54, 0xCC, 0x8C, 0xC9, 0x03, 0x54,
+	0xCC, 0xA3, 0xB5, 0x03, 0x54, 0xCC, 0xA6, 0xB5,
+	0x03, 0x54, 0xCC, 0xA7, 0xA5, 0x03, 0x54, 0xCC,
+	0xAD, 0xB5, 0x03, 0x54, 0xCC, 0xB1, 0xB5, 0x03,
+	0x55, 0xCC, 0x80, 0xC9, 0x03, 0x55, 0xCC, 0x81,
+	0xC9, 0x03, 0x55, 0xCC, 0x82, 0xC9, 0x03, 0x55,
 	// Bytes 31c0 - 31ff
-	0xC9, 0x03, 0x53, 0xCC, 0xA6, 0xB5, 0x03, 0x53,
-	0xCC, 0xA7, 0xA5, 0x03, 0x54, 0xCC, 0x87, 0xC9,
-	0x03, 0x54, 0xCC, 0x8C, 0xC9, 0x03, 0x54, 0xCC,
-	0xA3, 0xB5, 0x03, 0x54, 0xCC, 0xA6, 0xB5, 0x03,
-	0x54, 0xCC, 0xA7, 0xA5, 0x03, 0x54, 0xCC, 0xAD,
-	0xB5, 0x03, 0x54, 0xCC, 0xB1, 0xB5, 0x03, 0x55,
-	0xCC, 0x80, 0xC9, 0x03, 0x55, 0xCC, 0x81, 0xC9,
-	0x03, 0x55, 0xCC, 0x82, 0xC9, 0x03, 0x55, 0xCC,
+	0xCC, 0x86, 0xC9, 0x03, 0x55, 0xCC, 0x89, 0xC9,
+	0x03, 0x55, 0xCC, 0x8A, 0xC9, 0x03, 0x55, 0xCC,
+	0x8B, 0xC9, 0x03, 0x55, 0xCC, 0x8C, 0xC9, 0x03,
+	0x55, 0xCC, 0x8F, 0xC9, 0x03, 0x55, 0xCC, 0x91,
+	0xC9, 0x03, 0x55, 0xCC, 0xA3, 0xB5, 0x03, 0x55,
+	0xCC, 0xA4, 0xB5, 0x03, 0x55, 0xCC, 0xA8, 0xA5,
+	0x03, 0x55, 0xCC, 0xAD, 0xB5, 0x03, 0x55, 0xCC,
+	0xB0, 0xB5, 0x03, 0x56, 0xCC, 0x83, 0xC9, 0x03,
 	// Bytes 3200 - 323f
-	0x86, 0xC9, 0x03, 0x55, 0xCC, 0x89, 0xC9, 0x03,
-	0x55, 0xCC, 0x8A, 0xC9, 0x03, 0x55, 0xCC, 0x8B,
-	0xC9, 0x03, 0x55, 0xCC, 0x8C, 0xC9, 0x03, 0x55,
-	0xCC, 0x8F, 0xC9, 0x03, 0x55, 0xCC, 0x91, 0xC9,
-	0x03, 0x55, 0xCC, 0xA3, 0xB5, 0x03, 0x55, 0xCC,
-	0xA4, 0xB5, 0x03, 0x55, 0xCC, 0xA8, 0xA5, 0x03,
-	0x55, 0xCC, 0xAD, 0xB5, 0x03, 0x55, 0xCC, 0xB0,
-	0xB5, 0x03, 0x56, 0xCC, 0x83, 0xC9, 0x03, 0x56,
+	0x56, 0xCC, 0xA3, 0xB5, 0x03, 0x57, 0xCC, 0x80,
+	0xC9, 0x03, 0x57, 0xCC, 0x81, 0xC9, 0x03, 0x57,
+	0xCC, 0x82, 0xC9, 0x03, 0x57, 0xCC, 0x87, 0xC9,
+	0x03, 0x57, 0xCC, 0x88, 0xC9, 0x03, 0x57, 0xCC,
+	0xA3, 0xB5, 0x03, 0x58, 0xCC, 0x87, 0xC9, 0x03,
+	0x58, 0xCC, 0x88, 0xC9, 0x03, 0x59, 0xCC, 0x80,
+	0xC9, 0x03, 0x59, 0xCC, 0x81, 0xC9, 0x03, 0x59,
+	0xCC, 0x82, 0xC9, 0x03, 0x59, 0xCC, 0x83, 0xC9,
 	// Bytes 3240 - 327f
-	0xCC, 0xA3, 0xB5, 0x03, 0x57, 0xCC, 0x80, 0xC9,
-	0x03, 0x57, 0xCC, 0x81, 0xC9, 0x03, 0x57, 0xCC,
-	0x82, 0xC9, 0x03, 0x57, 0xCC, 0x87, 0xC9, 0x03,
-	0x57, 0xCC, 0x88, 0xC9, 0x03, 0x57, 0xCC, 0xA3,
-	0xB5, 0x03, 0x58, 0xCC, 0x87, 0xC9, 0x03, 0x58,
-	0xCC, 0x88, 0xC9, 0x03, 0x59, 0xCC, 0x80, 0xC9,
-	0x03, 0x59, 0xCC, 0x81, 0xC9, 0x03, 0x59, 0xCC,
-	0x82, 0xC9, 0x03, 0x59, 0xCC, 0x83, 0xC9, 0x03,
+	0x03, 0x59, 0xCC, 0x84, 0xC9, 0x03, 0x59, 0xCC,
+	0x87, 0xC9, 0x03, 0x59, 0xCC, 0x88, 0xC9, 0x03,
+	0x59, 0xCC, 0x89, 0xC9, 0x03, 0x59, 0xCC, 0xA3,
+	0xB5, 0x03, 0x5A, 0xCC, 0x81, 0xC9, 0x03, 0x5A,
+	0xCC, 0x82, 0xC9, 0x03, 0x5A, 0xCC, 0x87, 0xC9,
+	0x03, 0x5A, 0xCC, 0x8C, 0xC9, 0x03, 0x5A, 0xCC,
+	0xA3, 0xB5, 0x03, 0x5A, 0xCC, 0xB1, 0xB5, 0x03,
+	0x61, 0xCC, 0x80, 0xC9, 0x03, 0x61, 0xCC, 0x81,
 	// Bytes 3280 - 32bf
-	0x59, 0xCC, 0x84, 0xC9, 0x03, 0x59, 0xCC, 0x87,
-	0xC9, 0x03, 0x59, 0xCC, 0x88, 0xC9, 0x03, 0x59,
-	0xCC, 0x89, 0xC9, 0x03, 0x59, 0xCC, 0xA3, 0xB5,
-	0x03, 0x5A, 0xCC, 0x81, 0xC9, 0x03, 0x5A, 0xCC,
-	0x82, 0xC9, 0x03, 0x5A, 0xCC, 0x87, 0xC9, 0x03,
-	0x5A, 0xCC, 0x8C, 0xC9, 0x03, 0x5A, 0xCC, 0xA3,
-	0xB5, 0x03, 0x5A, 0xCC, 0xB1, 0xB5, 0x03, 0x61,
-	0xCC, 0x80, 0xC9, 0x03, 0x61, 0xCC, 0x81, 0xC9,
+	0xC9, 0x03, 0x61, 0xCC, 0x83, 0xC9, 0x03, 0x61,
+	0xCC, 0x84, 0xC9, 0x03, 0x61, 0xCC, 0x89, 0xC9,
+	0x03, 0x61, 0xCC, 0x8C, 0xC9, 0x03, 0x61, 0xCC,
+	0x8F, 0xC9, 0x03, 0x61, 0xCC, 0x91, 0xC9, 0x03,
+	0x61, 0xCC, 0xA5, 0xB5, 0x03, 0x61, 0xCC, 0xA8,
+	0xA5, 0x03, 0x62, 0xCC, 0x87, 0xC9, 0x03, 0x62,
+	0xCC, 0xA3, 0xB5, 0x03, 0x62, 0xCC, 0xB1, 0xB5,
+	0x03, 0x63, 0xCC, 0x81, 0xC9, 0x03, 0x63, 0xCC,
 	// Bytes 32c0 - 32ff
-	0x03, 0x61, 0xCC, 0x83, 0xC9, 0x03, 0x61, 0xCC,
-	0x84, 0xC9, 0x03, 0x61, 0xCC, 0x89, 0xC9, 0x03,
-	0x61, 0xCC, 0x8C, 0xC9, 0x03, 0x61, 0xCC, 0x8F,
-	0xC9, 0x03, 0x61, 0xCC, 0x91, 0xC9, 0x03, 0x61,
-	0xCC, 0xA5, 0xB5, 0x03, 0x61, 0xCC, 0xA8, 0xA5,
-	0x03, 0x62, 0xCC, 0x87, 0xC9, 0x03, 0x62, 0xCC,
-	0xA3, 0xB5, 0x03, 0x62, 0xCC, 0xB1, 0xB5, 0x03,
-	0x63, 0xCC, 0x81, 0xC9, 0x03, 0x63, 0xCC, 0x82,
+	0x82, 0xC9, 0x03, 0x63, 0xCC, 0x87, 0xC9, 0x03,
+	0x63, 0xCC, 0x8C, 0xC9, 0x03, 0x64, 0xCC, 0x87,
+	0xC9, 0x03, 0x64, 0xCC, 0x8C, 0xC9, 0x03, 0x64,
+	0xCC, 0xA3, 0xB5, 0x03, 0x64, 0xCC, 0xA7, 0xA5,
+	0x03, 0x64, 0xCC, 0xAD, 0xB5, 0x03, 0x64, 0xCC,
+	0xB1, 0xB5, 0x03, 0x65, 0xCC, 0x80, 0xC9, 0x03,
+	0x65, 0xCC, 0x81, 0xC9, 0x03, 0x65, 0xCC, 0x83,
+	0xC9, 0x03, 0x65, 0xCC, 0x86, 0xC9, 0x03, 0x65,
 	// Bytes 3300 - 333f
-	0xC9, 0x03, 0x63, 0xCC, 0x87, 0xC9, 0x03, 0x63,
-	0xCC, 0x8C, 0xC9, 0x03, 0x64, 0xCC, 0x87, 0xC9,
-	0x03, 0x64, 0xCC, 0x8C, 0xC9, 0x03, 0x64, 0xCC,
-	0xA3, 0xB5, 0x03, 0x64, 0xCC, 0xA7, 0xA5, 0x03,
-	0x64, 0xCC, 0xAD, 0xB5, 0x03, 0x64, 0xCC, 0xB1,
-	0xB5, 0x03, 0x65, 0xCC, 0x80, 0xC9, 0x03, 0x65,
-	0xCC, 0x81, 0xC9, 0x03, 0x65, 0xCC, 0x83, 0xC9,
-	0x03, 0x65, 0xCC, 0x86, 0xC9, 0x03, 0x65, 0xCC,
+	0xCC, 0x87, 0xC9, 0x03, 0x65, 0xCC, 0x88, 0xC9,
+	0x03, 0x65, 0xCC, 0x89, 0xC9, 0x03, 0x65, 0xCC,
+	0x8C, 0xC9, 0x03, 0x65, 0xCC, 0x8F, 0xC9, 0x03,
+	0x65, 0xCC, 0x91, 0xC9, 0x03, 0x65, 0xCC, 0xA8,
+	0xA5, 0x03, 0x65, 0xCC, 0xAD, 0xB5, 0x03, 0x65,
+	0xCC, 0xB0, 0xB5, 0x03, 0x66, 0xCC, 0x87, 0xC9,
+	0x03, 0x67, 0xCC, 0x81, 0xC9, 0x03, 0x67, 0xCC,
+	0x82, 0xC9, 0x03, 0x67, 0xCC, 0x84, 0xC9, 0x03,
 	// Bytes 3340 - 337f
-	0x87, 0xC9, 0x03, 0x65, 0xCC, 0x88, 0xC9, 0x03,
-	0x65, 0xCC, 0x89, 0xC9, 0x03, 0x65, 0xCC, 0x8C,
-	0xC9, 0x03, 0x65, 0xCC, 0x8F, 0xC9, 0x03, 0x65,
-	0xCC, 0x91, 0xC9, 0x03, 0x65, 0xCC, 0xA8, 0xA5,
-	0x03, 0x65, 0xCC, 0xAD, 0xB5, 0x03, 0x65, 0xCC,
-	0xB0, 0xB5, 0x03, 0x66, 0xCC, 0x87, 0xC9, 0x03,
-	0x67, 0xCC, 0x81, 0xC9, 0x03, 0x67, 0xCC, 0x82,
-	0xC9, 0x03, 0x67, 0xCC, 0x84, 0xC9, 0x03, 0x67,
+	0x67, 0xCC, 0x86, 0xC9, 0x03, 0x67, 0xCC, 0x87,
+	0xC9, 0x03, 0x67, 0xCC, 0x8C, 0xC9, 0x03, 0x67,
+	0xCC, 0xA7, 0xA5, 0x03, 0x68, 0xCC, 0x82, 0xC9,
+	0x03, 0x68, 0xCC, 0x87, 0xC9, 0x03, 0x68, 0xCC,
+	0x88, 0xC9, 0x03, 0x68, 0xCC, 0x8C, 0xC9, 0x03,
+	0x68, 0xCC, 0xA3, 0xB5, 0x03, 0x68, 0xCC, 0xA7,
+	0xA5, 0x03, 0x68, 0xCC, 0xAE, 0xB5, 0x03, 0x68,
+	0xCC, 0xB1, 0xB5, 0x03, 0x69, 0xCC, 0x80, 0xC9,
 	// Bytes 3380 - 33bf
-	0xCC, 0x86, 0xC9, 0x03, 0x67, 0xCC, 0x87, 0xC9,
-	0x03, 0x67, 0xCC, 0x8C, 0xC9, 0x03, 0x67, 0xCC,
-	0xA7, 0xA5, 0x03, 0x68, 0xCC, 0x82, 0xC9, 0x03,
-	0x68, 0xCC, 0x87, 0xC9, 0x03, 0x68, 0xCC, 0x88,
-	0xC9, 0x03, 0x68, 0xCC, 0x8C, 0xC9, 0x03, 0x68,
-	0xCC, 0xA3, 0xB5, 0x03, 0x68, 0xCC, 0xA7, 0xA5,
-	0x03, 0x68, 0xCC, 0xAE, 0xB5, 0x03, 0x68, 0xCC,
-	0xB1, 0xB5, 0x03, 0x69, 0xCC, 0x80, 0xC9, 0x03,
+	0x03, 0x69, 0xCC, 0x81, 0xC9, 0x03, 0x69, 0xCC,
+	0x82, 0xC9, 0x03, 0x69, 0xCC, 0x83, 0xC9, 0x03,
+	0x69, 0xCC, 0x84, 0xC9, 0x03, 0x69, 0xCC, 0x86,
+	0xC9, 0x03, 0x69, 0xCC, 0x89, 0xC9, 0x03, 0x69,
+	0xCC, 0x8C, 0xC9, 0x03, 0x69, 0xCC, 0x8F, 0xC9,
+	0x03, 0x69, 0xCC, 0x91, 0xC9, 0x03, 0x69, 0xCC,
+	0xA3, 0xB5, 0x03, 0x69, 0xCC, 0xA8, 0xA5, 0x03,
+	0x69, 0xCC, 0xB0, 0xB5, 0x03, 0x6A, 0xCC, 0x82,
 	// Bytes 33c0 - 33ff
-	0x69, 0xCC, 0x81, 0xC9, 0x03, 0x69, 0xCC, 0x82,
-	0xC9, 0x03, 0x69, 0xCC, 0x83, 0xC9, 0x03, 0x69,
-	0xCC, 0x84, 0xC9, 0x03, 0x69, 0xCC, 0x86, 0xC9,
-	0x03, 0x69, 0xCC, 0x89, 0xC9, 0x03, 0x69, 0xCC,
-	0x8C, 0xC9, 0x03, 0x69, 0xCC, 0x8F, 0xC9, 0x03,
-	0x69, 0xCC, 0x91, 0xC9, 0x03, 0x69, 0xCC, 0xA3,
-	0xB5, 0x03, 0x69, 0xCC, 0xA8, 0xA5, 0x03, 0x69,
-	0xCC, 0xB0, 0xB5, 0x03, 0x6A, 0xCC, 0x82, 0xC9,
+	0xC9, 0x03, 0x6A, 0xCC, 0x8C, 0xC9, 0x03, 0x6B,
+	0xCC, 0x81, 0xC9, 0x03, 0x6B, 0xCC, 0x8C, 0xC9,
+	0x03, 0x6B, 0xCC, 0xA3, 0xB5, 0x03, 0x6B, 0xCC,
+	0xA7, 0xA5, 0x03, 0x6B, 0xCC, 0xB1, 0xB5, 0x03,
+	0x6C, 0xCC, 0x81, 0xC9, 0x03, 0x6C, 0xCC, 0x8C,
+	0xC9, 0x03, 0x6C, 0xCC, 0xA7, 0xA5, 0x03, 0x6C,
+	0xCC, 0xAD, 0xB5, 0x03, 0x6C, 0xCC, 0xB1, 0xB5,
+	0x03, 0x6D, 0xCC, 0x81, 0xC9, 0x03, 0x6D, 0xCC,
 	// Bytes 3400 - 343f
-	0x03, 0x6A, 0xCC, 0x8C, 0xC9, 0x03, 0x6B, 0xCC,
-	0x81, 0xC9, 0x03, 0x6B, 0xCC, 0x8C, 0xC9, 0x03,
-	0x6B, 0xCC, 0xA3, 0xB5, 0x03, 0x6B, 0xCC, 0xA7,
-	0xA5, 0x03, 0x6B, 0xCC, 0xB1, 0xB5, 0x03, 0x6C,
-	0xCC, 0x81, 0xC9, 0x03, 0x6C, 0xCC, 0x8C, 0xC9,
-	0x03, 0x6C, 0xCC, 0xA7, 0xA5, 0x03, 0x6C, 0xCC,
-	0xAD, 0xB5, 0x03, 0x6C, 0xCC, 0xB1, 0xB5, 0x03,
-	0x6D, 0xCC, 0x81, 0xC9, 0x03, 0x6D, 0xCC, 0x87,
+	0x87, 0xC9, 0x03, 0x6D, 0xCC, 0xA3, 0xB5, 0x03,
+	0x6E, 0xCC, 0x80, 0xC9, 0x03, 0x6E, 0xCC, 0x81,
+	0xC9, 0x03, 0x6E, 0xCC, 0x83, 0xC9, 0x03, 0x6E,
+	0xCC, 0x87, 0xC9, 0x03, 0x6E, 0xCC, 0x8C, 0xC9,
+	0x03, 0x6E, 0xCC, 0xA3, 0xB5, 0x03, 0x6E, 0xCC,
+	0xA7, 0xA5, 0x03, 0x6E, 0xCC, 0xAD, 0xB5, 0x03,
+	0x6E, 0xCC, 0xB1, 0xB5, 0x03, 0x6F, 0xCC, 0x80,
+	0xC9, 0x03, 0x6F, 0xCC, 0x81, 0xC9, 0x03, 0x6F,
 	// Bytes 3440 - 347f
-	0xC9, 0x03, 0x6D, 0xCC, 0xA3, 0xB5, 0x03, 0x6E,
-	0xCC, 0x80, 0xC9, 0x03, 0x6E, 0xCC, 0x81, 0xC9,
-	0x03, 0x6E, 0xCC, 0x83, 0xC9, 0x03, 0x6E, 0xCC,
-	0x87, 0xC9, 0x03, 0x6E, 0xCC, 0x8C, 0xC9, 0x03,
-	0x6E, 0xCC, 0xA3, 0xB5, 0x03, 0x6E, 0xCC, 0xA7,
-	0xA5, 0x03, 0x6E, 0xCC, 0xAD, 0xB5, 0x03, 0x6E,
-	0xCC, 0xB1, 0xB5, 0x03, 0x6F, 0xCC, 0x80, 0xC9,
-	0x03, 0x6F, 0xCC, 0x81, 0xC9, 0x03, 0x6F, 0xCC,
+	0xCC, 0x86, 0xC9, 0x03, 0x6F, 0xCC, 0x89, 0xC9,
+	0x03, 0x6F, 0xCC, 0x8B, 0xC9, 0x03, 0x6F, 0xCC,
+	0x8C, 0xC9, 0x03, 0x6F, 0xCC, 0x8F, 0xC9, 0x03,
+	0x6F, 0xCC, 0x91, 0xC9, 0x03, 0x70, 0xCC, 0x81,
+	0xC9, 0x03, 0x70, 0xCC, 0x87, 0xC9, 0x03, 0x72,
+	0xCC, 0x81, 0xC9, 0x03, 0x72, 0xCC, 0x87, 0xC9,
+	0x03, 0x72, 0xCC, 0x8C, 0xC9, 0x03, 0x72, 0xCC,
+	0x8F, 0xC9, 0x03, 0x72, 0xCC, 0x91, 0xC9, 0x03,
 	// Bytes 3480 - 34bf
-	0x86, 0xC9, 0x03, 0x6F, 0xCC, 0x89, 0xC9, 0x03,
-	0x6F, 0xCC, 0x8B, 0xC9, 0x03, 0x6F, 0xCC, 0x8C,
-	0xC9, 0x03, 0x6F, 0xCC, 0x8F, 0xC9, 0x03, 0x6F,
-	0xCC, 0x91, 0xC9, 0x03, 0x70, 0xCC, 0x81, 0xC9,
-	0x03, 0x70, 0xCC, 0x87, 0xC9, 0x03, 0x72, 0xCC,
-	0x81, 0xC9, 0x03, 0x72, 0xCC, 0x87, 0xC9, 0x03,
-	0x72, 0xCC, 0x8C, 0xC9, 0x03, 0x72, 0xCC, 0x8F,
-	0xC9, 0x03, 0x72, 0xCC, 0x91, 0xC9, 0x03, 0x72,
+	0x72, 0xCC, 0xA7, 0xA5, 0x03, 0x72, 0xCC, 0xB1,
+	0xB5, 0x03, 0x73, 0xCC, 0x82, 0xC9, 0x03, 0x73,
+	0xCC, 0x87, 0xC9, 0x03, 0x73, 0xCC, 0xA6, 0xB5,
+	0x03, 0x73, 0xCC, 0xA7, 0xA5, 0x03, 0x74, 0xCC,
+	0x87, 0xC9, 0x03, 0x74, 0xCC, 0x88, 0xC9, 0x03,
+	0x74, 0xCC, 0x8C, 0xC9, 0x03, 0x74, 0xCC, 0xA3,
+	0xB5, 0x03, 0x74, 0xCC, 0xA6, 0xB5, 0x03, 0x74,
+	0xCC, 0xA7, 0xA5, 0x03, 0x74, 0xCC, 0xAD, 0xB5,
 	// Bytes 34c0 - 34ff
-	0xCC, 0xA7, 0xA5, 0x03, 0x72, 0xCC, 0xB1, 0xB5,
-	0x03, 0x73, 0xCC, 0x82, 0xC9, 0x03, 0x73, 0xCC,
-	0x87, 0xC9, 0x03, 0x73, 0xCC, 0xA6, 0xB5, 0x03,
-	0x73, 0xCC, 0xA7, 0xA5, 0x03, 0x74, 0xCC, 0x87,
-	0xC9, 0x03, 0x74, 0xCC, 0x88, 0xC9, 0x03, 0x74,
-	0xCC, 0x8C, 0xC9, 0x03, 0x74, 0xCC, 0xA3, 0xB5,
-	0x03, 0x74, 0xCC, 0xA6, 0xB5, 0x03, 0x74, 0xCC,
-	0xA7, 0xA5, 0x03, 0x74, 0xCC, 0xAD, 0xB5, 0x03,
+	0x03, 0x74, 0xCC, 0xB1, 0xB5, 0x03, 0x75, 0xCC,
+	0x80, 0xC9, 0x03, 0x75, 0xCC, 0x81, 0xC9, 0x03,
+	0x75, 0xCC, 0x82, 0xC9, 0x03, 0x75, 0xCC, 0x86,
+	0xC9, 0x03, 0x75, 0xCC, 0x89, 0xC9, 0x03, 0x75,
+	0xCC, 0x8A, 0xC9, 0x03, 0x75, 0xCC, 0x8B, 0xC9,
+	0x03, 0x75, 0xCC, 0x8C, 0xC9, 0x03, 0x75, 0xCC,
+	0x8F, 0xC9, 0x03, 0x75, 0xCC, 0x91, 0xC9, 0x03,
+	0x75, 0xCC, 0xA3, 0xB5, 0x03, 0x75, 0xCC, 0xA4,
 	// Bytes 3500 - 353f
-	0x74, 0xCC, 0xB1, 0xB5, 0x03, 0x75, 0xCC, 0x80,
-	0xC9, 0x03, 0x75, 0xCC, 0x81, 0xC9, 0x03, 0x75,
-	0xCC, 0x82, 0xC9, 0x03, 0x75, 0xCC, 0x86, 0xC9,
-	0x03, 0x75, 0xCC, 0x89, 0xC9, 0x03, 0x75, 0xCC,
-	0x8A, 0xC9, 0x03, 0x75, 0xCC, 0x8B, 0xC9, 0x03,
-	0x75, 0xCC, 0x8C, 0xC9, 0x03, 0x75, 0xCC, 0x8F,
-	0xC9, 0x03, 0x75, 0xCC, 0x91, 0xC9, 0x03, 0x75,
-	0xCC, 0xA3, 0xB5, 0x03, 0x75, 0xCC, 0xA4, 0xB5,
+	0xB5, 0x03, 0x75, 0xCC, 0xA8, 0xA5, 0x03, 0x75,
+	0xCC, 0xAD, 0xB5, 0x03, 0x75, 0xCC, 0xB0, 0xB5,
+	0x03, 0x76, 0xCC, 0x83, 0xC9, 0x03, 0x76, 0xCC,
+	0xA3, 0xB5, 0x03, 0x77, 0xCC, 0x80, 0xC9, 0x03,
+	0x77, 0xCC, 0x81, 0xC9, 0x03, 0x77, 0xCC, 0x82,
+	0xC9, 0x03, 0x77, 0xCC, 0x87, 0xC9, 0x03, 0x77,
+	0xCC, 0x88, 0xC9, 0x03, 0x77, 0xCC, 0x8A, 0xC9,
+	0x03, 0x77, 0xCC, 0xA3, 0xB5, 0x03, 0x78, 0xCC,
 	// Bytes 3540 - 357f
-	0x03, 0x75, 0xCC, 0xA8, 0xA5, 0x03, 0x75, 0xCC,
-	0xAD, 0xB5, 0x03, 0x75, 0xCC, 0xB0, 0xB5, 0x03,
-	0x76, 0xCC, 0x83, 0xC9, 0x03, 0x76, 0xCC, 0xA3,
-	0xB5, 0x03, 0x77, 0xCC, 0x80, 0xC9, 0x03, 0x77,
-	0xCC, 0x81, 0xC9, 0x03, 0x77, 0xCC, 0x82, 0xC9,
-	0x03, 0x77, 0xCC, 0x87, 0xC9, 0x03, 0x77, 0xCC,
-	0x88, 0xC9, 0x03, 0x77, 0xCC, 0x8A, 0xC9, 0x03,
-	0x77, 0xCC, 0xA3, 0xB5, 0x03, 0x78, 0xCC, 0x87,
+	0x87, 0xC9, 0x03, 0x78, 0xCC, 0x88, 0xC9, 0x03,
+	0x79, 0xCC, 0x80, 0xC9, 0x03, 0x79, 0xCC, 0x81,
+	0xC9, 0x03, 0x79, 0xCC, 0x82, 0xC9, 0x03, 0x79,
+	0xCC, 0x83, 0xC9, 0x03, 0x79, 0xCC, 0x84, 0xC9,
+	0x03, 0x79, 0xCC, 0x87, 0xC9, 0x03, 0x79, 0xCC,
+	0x88, 0xC9, 0x03, 0x79, 0xCC, 0x89, 0xC9, 0x03,
+	0x79, 0xCC, 0x8A, 0xC9, 0x03, 0x79, 0xCC, 0xA3,
+	0xB5, 0x03, 0x7A, 0xCC, 0x81, 0xC9, 0x03, 0x7A,
 	// Bytes 3580 - 35bf
-	0xC9, 0x03, 0x78, 0xCC, 0x88, 0xC9, 0x03, 0x79,
-	0xCC, 0x80, 0xC9, 0x03, 0x79, 0xCC, 0x81, 0xC9,
-	0x03, 0x79, 0xCC, 0x82, 0xC9, 0x03, 0x79, 0xCC,
-	0x83, 0xC9, 0x03, 0x79, 0xCC, 0x84, 0xC9, 0x03,
-	0x79, 0xCC, 0x87, 0xC9, 0x03, 0x79, 0xCC, 0x88,
-	0xC9, 0x03, 0x79, 0xCC, 0x89, 0xC9, 0x03, 0x79,
-	0xCC, 0x8A, 0xC9, 0x03, 0x79, 0xCC, 0xA3, 0xB5,
-	0x03, 0x7A, 0xCC, 0x81, 0xC9, 0x03, 0x7A, 0xCC,
+	0xCC, 0x82, 0xC9, 0x03, 0x7A, 0xCC, 0x87, 0xC9,
+	0x03, 0x7A, 0xCC, 0x8C, 0xC9, 0x03, 0x7A, 0xCC,
+	0xA3, 0xB5, 0x03, 0x7A, 0xCC, 0xB1, 0xB5, 0x04,
+	0xC2, 0xA8, 0xCC, 0x80, 0xCA, 0x04, 0xC2, 0xA8,
+	0xCC, 0x81, 0xCA, 0x04, 0xC2, 0xA8, 0xCD, 0x82,
+	0xCA, 0x04, 0xC3, 0x86, 0xCC, 0x81, 0xC9, 0x04,
+	0xC3, 0x86, 0xCC, 0x84, 0xC9, 0x04, 0xC3, 0x98,
+	0xCC, 0x81, 0xC9, 0x04, 0xC3, 0xA6, 0xCC, 0x81,
 	// Bytes 35c0 - 35ff
-	0x82, 0xC9, 0x03, 0x7A, 0xCC, 0x87, 0xC9, 0x03,
-	0x7A, 0xCC, 0x8C, 0xC9, 0x03, 0x7A, 0xCC, 0xA3,
-	0xB5, 0x03, 0x7A, 0xCC, 0xB1, 0xB5, 0x04, 0xC2,
-	0xA8, 0xCC, 0x80, 0xCA, 0x04, 0xC2, 0xA8, 0xCC,
-	0x81, 0xCA, 0x04, 0xC2, 0xA8, 0xCD, 0x82, 0xCA,
-	0x04, 0xC3, 0x86, 0xCC, 0x81, 0xC9, 0x04, 0xC3,
-	0x86, 0xCC, 0x84, 0xC9, 0x04, 0xC3, 0x98, 0xCC,
-	0x81, 0xC9, 0x04, 0xC3, 0xA6, 0xCC, 0x81, 0xC9,
+	0xC9, 0x04, 0xC3, 0xA6, 0xCC, 0x84, 0xC9, 0x04,
+	0xC3, 0xB8, 0xCC, 0x81, 0xC9, 0x04, 0xC5, 0xBF,
+	0xCC, 0x87, 0xC9, 0x04, 0xC6, 0xB7, 0xCC, 0x8C,
+	0xC9, 0x04, 0xCA, 0x92, 0xCC, 0x8C, 0xC9, 0x04,
+	0xCE, 0x91, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x91,
+	0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x84,
+	0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x86, 0xC9, 0x04,
+	0xCE, 0x91, 0xCD, 0x85, 0xD9, 0x04, 0xCE, 0x95,
 	// Bytes 3600 - 363f
-	0x04, 0xC3, 0xA6, 0xCC, 0x84, 0xC9, 0x04, 0xC3,
-	0xB8, 0xCC, 0x81, 0xC9, 0x04, 0xC5, 0xBF, 0xCC,
-	0x87, 0xC9, 0x04, 0xC6, 0xB7, 0xCC, 0x8C, 0xC9,
-	0x04, 0xCA, 0x92, 0xCC, 0x8C, 0xC9, 0x04, 0xCE,
-	0x91, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x91, 0xCC,
-	0x81, 0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x84, 0xC9,
-	0x04, 0xCE, 0x91, 0xCC, 0x86, 0xC9, 0x04, 0xCE,
-	0x91, 0xCD, 0x85, 0xD9, 0x04, 0xCE, 0x95, 0xCC,
+	0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x95, 0xCC, 0x81,
+	0xC9, 0x04, 0xCE, 0x97, 0xCC, 0x80, 0xC9, 0x04,
+	0xCE, 0x97, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x97,
+	0xCD, 0x85, 0xD9, 0x04, 0xCE, 0x99, 0xCC, 0x80,
+	0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x81, 0xC9, 0x04,
+	0xCE, 0x99, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0x99,
+	0xCC, 0x86, 0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x88,
+	0xC9, 0x04, 0xCE, 0x9F, 0xCC, 0x80, 0xC9, 0x04,
 	// Bytes 3640 - 367f
-	0x80, 0xC9, 0x04, 0xCE, 0x95, 0xCC, 0x81, 0xC9,
-	0x04, 0xCE, 0x97, 0xCC, 0x80, 0xC9, 0x04, 0xCE,
-	0x97, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x97, 0xCD,
-	0x85, 0xD9, 0x04, 0xCE, 0x99, 0xCC, 0x80, 0xC9,
-	0x04, 0xCE, 0x99, 0xCC, 0x81, 0xC9, 0x04, 0xCE,
-	0x99, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0x99, 0xCC,
-	0x86, 0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x88, 0xC9,
-	0x04, 0xCE, 0x9F, 0xCC, 0x80, 0xC9, 0x04, 0xCE,
+	0xCE, 0x9F, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xA1,
+	0xCC, 0x94, 0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x80,
+	0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x81, 0xC9, 0x04,
+	0xCE, 0xA5, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0xA5,
+	0xCC, 0x86, 0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x88,
+	0xC9, 0x04, 0xCE, 0xA9, 0xCC, 0x80, 0xC9, 0x04,
+	0xCE, 0xA9, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xA9,
+	0xCD, 0x85, 0xD9, 0x04, 0xCE, 0xB1, 0xCC, 0x84,
 	// Bytes 3680 - 36bf
-	0x9F, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xA1, 0xCC,
-	0x94, 0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x80, 0xC9,
-	0x04, 0xCE, 0xA5, 0xCC, 0x81, 0xC9, 0x04, 0xCE,
-	0xA5, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0xA5, 0xCC,
-	0x86, 0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x88, 0xC9,
-	0x04, 0xCE, 0xA9, 0xCC, 0x80, 0xC9, 0x04, 0xCE,
-	0xA9, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xA9, 0xCD,
-	0x85, 0xD9, 0x04, 0xCE, 0xB1, 0xCC, 0x84, 0xC9,
+	0xC9, 0x04, 0xCE, 0xB1, 0xCC, 0x86, 0xC9, 0x04,
+	0xCE, 0xB1, 0xCD, 0x85, 0xD9, 0x04, 0xCE, 0xB5,
+	0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xB5, 0xCC, 0x81,
+	0xC9, 0x04, 0xCE, 0xB7, 0xCD, 0x85, 0xD9, 0x04,
+	0xCE, 0xB9, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xB9,
+	0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xB9, 0xCC, 0x84,
+	0xC9, 0x04, 0xCE, 0xB9, 0xCC, 0x86, 0xC9, 0x04,
+	0xCE, 0xB9, 0xCD, 0x82, 0xC9, 0x04, 0xCE, 0xBF,
 	// Bytes 36c0 - 36ff
-	0x04, 0xCE, 0xB1, 0xCC, 0x86, 0xC9, 0x04, 0xCE,
-	0xB1, 0xCD, 0x85, 0xD9, 0x04, 0xCE, 0xB5, 0xCC,
-	0x80, 0xC9, 0x04, 0xCE, 0xB5, 0xCC, 0x81, 0xC9,
-	0x04, 0xCE, 0xB7, 0xCD, 0x85, 0xD9, 0x04, 0xCE,
-	0xB9, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xB9, 0xCC,
-	0x81, 0xC9, 0x04, 0xCE, 0xB9, 0xCC, 0x84, 0xC9,
-	0x04, 0xCE, 0xB9, 0xCC, 0x86, 0xC9, 0x04, 0xCE,
-	0xB9, 0xCD, 0x82, 0xC9, 0x04, 0xCE, 0xBF, 0xCC,
+	0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xBF, 0xCC, 0x81,
+	0xC9, 0x04, 0xCF, 0x81, 0xCC, 0x93, 0xC9, 0x04,
+	0xCF, 0x81, 0xCC, 0x94, 0xC9, 0x04, 0xCF, 0x85,
+	0xCC, 0x80, 0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x81,
+	0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x84, 0xC9, 0x04,
+	0xCF, 0x85, 0xCC, 0x86, 0xC9, 0x04, 0xCF, 0x85,
+	0xCD, 0x82, 0xC9, 0x04, 0xCF, 0x89, 0xCD, 0x85,
+	0xD9, 0x04, 0xCF, 0x92, 0xCC, 0x81, 0xC9, 0x04,
 	// Bytes 3700 - 373f
-	0x80, 0xC9, 0x04, 0xCE, 0xBF, 0xCC, 0x81, 0xC9,
-	0x04, 0xCF, 0x81, 0xCC, 0x93, 0xC9, 0x04, 0xCF,
-	0x81, 0xCC, 0x94, 0xC9, 0x04, 0xCF, 0x85, 0xCC,
-	0x80, 0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x81, 0xC9,
-	0x04, 0xCF, 0x85, 0xCC, 0x84, 0xC9, 0x04, 0xCF,
-	0x85, 0xCC, 0x86, 0xC9, 0x04, 0xCF, 0x85, 0xCD,
-	0x82, 0xC9, 0x04, 0xCF, 0x89, 0xCD, 0x85, 0xD9,
-	0x04, 0xCF, 0x92, 0xCC, 0x81, 0xC9, 0x04, 0xCF,
+	0xCF, 0x92, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x86,
+	0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x90, 0xCC, 0x86,
+	0xC9, 0x04, 0xD0, 0x90, 0xCC, 0x88, 0xC9, 0x04,
+	0xD0, 0x93, 0xCC, 0x81, 0xC9, 0x04, 0xD0, 0x95,
+	0xCC, 0x80, 0xC9, 0x04, 0xD0, 0x95, 0xCC, 0x86,
+	0xC9, 0x04, 0xD0, 0x95, 0xCC, 0x88, 0xC9, 0x04,
+	0xD0, 0x96, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x96,
+	0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x97, 0xCC, 0x88,
 	// Bytes 3740 - 377f
-	0x92, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x86, 0xCC,
-	0x88, 0xC9, 0x04, 0xD0, 0x90, 0xCC, 0x86, 0xC9,
-	0x04, 0xD0, 0x90, 0xCC, 0x88, 0xC9, 0x04, 0xD0,
-	0x93, 0xCC, 0x81, 0xC9, 0x04, 0xD0, 0x95, 0xCC,
-	0x80, 0xC9, 0x04, 0xD0, 0x95, 0xCC, 0x86, 0xC9,
-	0x04, 0xD0, 0x95, 0xCC, 0x88, 0xC9, 0x04, 0xD0,
-	0x96, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x96, 0xCC,
-	0x88, 0xC9, 0x04, 0xD0, 0x97, 0xCC, 0x88, 0xC9,
+	0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x80, 0xC9, 0x04,
+	0xD0, 0x98, 0xCC, 0x84, 0xC9, 0x04, 0xD0, 0x98,
+	0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x88,
+	0xC9, 0x04, 0xD0, 0x9A, 0xCC, 0x81, 0xC9, 0x04,
+	0xD0, 0x9E, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xA3,
+	0xCC, 0x84, 0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x86,
+	0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x88, 0xC9, 0x04,
+	0xD0, 0xA3, 0xCC, 0x8B, 0xC9, 0x04, 0xD0, 0xA7,
 	// Bytes 3780 - 37bf
-	0x04, 0xD0, 0x98, 0xCC, 0x80, 0xC9, 0x04, 0xD0,
-	0x98, 0xCC, 0x84, 0xC9, 0x04, 0xD0, 0x98, 0xCC,
-	0x86, 0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x88, 0xC9,
-	0x04, 0xD0, 0x9A, 0xCC, 0x81, 0xC9, 0x04, 0xD0,
-	0x9E, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xA3, 0xCC,
-	0x84, 0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x86, 0xC9,
-	0x04, 0xD0, 0xA3, 0xCC, 0x88, 0xC9, 0x04, 0xD0,
-	0xA3, 0xCC, 0x8B, 0xC9, 0x04, 0xD0, 0xA7, 0xCC,
+	0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xAB, 0xCC, 0x88,
+	0xC9, 0x04, 0xD0, 0xAD, 0xCC, 0x88, 0xC9, 0x04,
+	0xD0, 0xB0, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB0,
+	0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB3, 0xCC, 0x81,
+	0xC9, 0x04, 0xD0, 0xB5, 0xCC, 0x80, 0xC9, 0x04,
+	0xD0, 0xB5, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB5,
+	0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB6, 0xCC, 0x86,
+	0xC9, 0x04, 0xD0, 0xB6, 0xCC, 0x88, 0xC9, 0x04,
 	// Bytes 37c0 - 37ff
-	0x88, 0xC9, 0x04, 0xD0, 0xAB, 0xCC, 0x88, 0xC9,
-	0x04, 0xD0, 0xAD, 0xCC, 0x88, 0xC9, 0x04, 0xD0,
-	0xB0, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB0, 0xCC,
-	0x88, 0xC9, 0x04, 0xD0, 0xB3, 0xCC, 0x81, 0xC9,
-	0x04, 0xD0, 0xB5, 0xCC, 0x80, 0xC9, 0x04, 0xD0,
-	0xB5, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB5, 0xCC,
-	0x88, 0xC9, 0x04, 0xD0, 0xB6, 0xCC, 0x86, 0xC9,
-	0x04, 0xD0, 0xB6, 0xCC, 0x88, 0xC9, 0x04, 0xD0,
+	0xD0, 0xB7, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB8,
+	0xCC, 0x80, 0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x84,
+	0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x86, 0xC9, 0x04,
+	0xD0, 0xB8, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xBA,
+	0xCC, 0x81, 0xC9, 0x04, 0xD0, 0xBE, 0xCC, 0x88,
+	0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x84, 0xC9, 0x04,
+	0xD1, 0x83, 0xCC, 0x86, 0xC9, 0x04, 0xD1, 0x83,
+	0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x8B,
 	// Bytes 3800 - 383f
-	0xB7, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB8, 0xCC,
-	0x80, 0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x84, 0xC9,
-	0x04, 0xD0, 0xB8, 0xCC, 0x86, 0xC9, 0x04, 0xD0,
-	0xB8, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xBA, 0xCC,
-	0x81, 0xC9, 0x04, 0xD0, 0xBE, 0xCC, 0x88, 0xC9,
-	0x04, 0xD1, 0x83, 0xCC, 0x84, 0xC9, 0x04, 0xD1,
-	0x83, 0xCC, 0x86, 0xC9, 0x04, 0xD1, 0x83, 0xCC,
-	0x88, 0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x8B, 0xC9,
+	0xC9, 0x04, 0xD1, 0x87, 0xCC, 0x88, 0xC9, 0x04,
+	0xD1, 0x8B, 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x8D,
+	0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x96, 0xCC, 0x88,
+	0xC9, 0x04, 0xD1, 0xB4, 0xCC, 0x8F, 0xC9, 0x04,
+	0xD1, 0xB5, 0xCC, 0x8F, 0xC9, 0x04, 0xD3, 0x98,
+	0xCC, 0x88, 0xC9, 0x04, 0xD3, 0x99, 0xCC, 0x88,
+	0xC9, 0x04, 0xD3, 0xA8, 0xCC, 0x88, 0xC9, 0x04,
+	0xD3, 0xA9, 0xCC, 0x88, 0xC9, 0x04, 0xD8, 0xA7,
 	// Bytes 3840 - 387f
-	0x04, 0xD1, 0x87, 0xCC, 0x88, 0xC9, 0x04, 0xD1,
-	0x8B, 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x8D, 0xCC,
-	0x88, 0xC9, 0x04, 0xD1, 0x96, 0xCC, 0x88, 0xC9,
-	0x04, 0xD1, 0xB4, 0xCC, 0x8F, 0xC9, 0x04, 0xD1,
-	0xB5, 0xCC, 0x8F, 0xC9, 0x04, 0xD3, 0x98, 0xCC,
-	0x88, 0xC9, 0x04, 0xD3, 0x99, 0xCC, 0x88, 0xC9,
-	0x04, 0xD3, 0xA8, 0xCC, 0x88, 0xC9, 0x04, 0xD3,
-	0xA9, 0xCC, 0x88, 0xC9, 0x04, 0xD8, 0xA7, 0xD9,
+	0xD9, 0x93, 0xC9, 0x04, 0xD8, 0xA7, 0xD9, 0x94,
+	0xC9, 0x04, 0xD8, 0xA7, 0xD9, 0x95, 0xB5, 0x04,
+	0xD9, 0x88, 0xD9, 0x94, 0xC9, 0x04, 0xD9, 0x8A,
+	0xD9, 0x94, 0xC9, 0x04, 0xDB, 0x81, 0xD9, 0x94,
+	0xC9, 0x04, 0xDB, 0x92, 0xD9, 0x94, 0xC9, 0x04,
+	0xDB, 0x95, 0xD9, 0x94, 0xC9, 0x05, 0x41, 0xCC,
+	0x82, 0xCC, 0x80, 0xCA, 0x05, 0x41, 0xCC, 0x82,
+	0xCC, 0x81, 0xCA, 0x05, 0x41, 0xCC, 0x82, 0xCC,
 	// Bytes 3880 - 38bf
-	0x93, 0xC9, 0x04, 0xD8, 0xA7, 0xD9, 0x94, 0xC9,
-	0x04, 0xD8, 0xA7, 0xD9, 0x95, 0xB5, 0x04, 0xD9,
-	0x88, 0xD9, 0x94, 0xC9, 0x04, 0xD9, 0x8A, 0xD9,
-	0x94, 0xC9, 0x04, 0xDB, 0x81, 0xD9, 0x94, 0xC9,
-	0x04, 0xDB, 0x92, 0xD9, 0x94, 0xC9, 0x04, 0xDB,
-	0x95, 0xD9, 0x94, 0xC9, 0x05, 0x41, 0xCC, 0x82,
-	0xCC, 0x80, 0xCA, 0x05, 0x41, 0xCC, 0x82, 0xCC,
-	0x81, 0xCA, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x83,
+	0x83, 0xCA, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x89,
+	0xCA, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x80, 0xCA,
+	0x05, 0x41, 0xCC, 0x86, 0xCC, 0x81, 0xCA, 0x05,
+	0x41, 0xCC, 0x86, 0xCC, 0x83, 0xCA, 0x05, 0x41,
+	0xCC, 0x86, 0xCC, 0x89, 0xCA, 0x05, 0x41, 0xCC,
+	0x87, 0xCC, 0x84, 0xCA, 0x05, 0x41, 0xCC, 0x88,
+	0xCC, 0x84, 0xCA, 0x05, 0x41, 0xCC, 0x8A, 0xCC,
+	0x81, 0xCA, 0x05, 0x41, 0xCC, 0xA3, 0xCC, 0x82,
 	// Bytes 38c0 - 38ff
-	0xCA, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x89, 0xCA,
-	0x05, 0x41, 0xCC, 0x86, 0xCC, 0x80, 0xCA, 0x05,
-	0x41, 0xCC, 0x86, 0xCC, 0x81, 0xCA, 0x05, 0x41,
-	0xCC, 0x86, 0xCC, 0x83, 0xCA, 0x05, 0x41, 0xCC,
-	0x86, 0xCC, 0x89, 0xCA, 0x05, 0x41, 0xCC, 0x87,
-	0xCC, 0x84, 0xCA, 0x05, 0x41, 0xCC, 0x88, 0xCC,
-	0x84, 0xCA, 0x05, 0x41, 0xCC, 0x8A, 0xCC, 0x81,
-	0xCA, 0x05, 0x41, 0xCC, 0xA3, 0xCC, 0x82, 0xCA,
+	0xCA, 0x05, 0x41, 0xCC, 0xA3, 0xCC, 0x86, 0xCA,
+	0x05, 0x43, 0xCC, 0xA7, 0xCC, 0x81, 0xCA, 0x05,
+	0x45, 0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05, 0x45,
+	0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, 0x45, 0xCC,
+	0x82, 0xCC, 0x83, 0xCA, 0x05, 0x45, 0xCC, 0x82,
+	0xCC, 0x89, 0xCA, 0x05, 0x45, 0xCC, 0x84, 0xCC,
+	0x80, 0xCA, 0x05, 0x45, 0xCC, 0x84, 0xCC, 0x81,
+	0xCA, 0x05, 0x45, 0xCC, 0xA3, 0xCC, 0x82, 0xCA,
 	// Bytes 3900 - 393f
-	0x05, 0x41, 0xCC, 0xA3, 0xCC, 0x86, 0xCA, 0x05,
-	0x43, 0xCC, 0xA7, 0xCC, 0x81, 0xCA, 0x05, 0x45,
-	0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05, 0x45, 0xCC,
-	0x82, 0xCC, 0x81, 0xCA, 0x05, 0x45, 0xCC, 0x82,
-	0xCC, 0x83, 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC,
-	0x89, 0xCA, 0x05, 0x45, 0xCC, 0x84, 0xCC, 0x80,
-	0xCA, 0x05, 0x45, 0xCC, 0x84, 0xCC, 0x81, 0xCA,
-	0x05, 0x45, 0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05,
+	0x05, 0x45, 0xCC, 0xA7, 0xCC, 0x86, 0xCA, 0x05,
+	0x49, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05, 0x4C,
+	0xCC, 0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x4F, 0xCC,
+	0x82, 0xCC, 0x80, 0xCA, 0x05, 0x4F, 0xCC, 0x82,
+	0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x82, 0xCC,
+	0x83, 0xCA, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x89,
+	0xCA, 0x05, 0x4F, 0xCC, 0x83, 0xCC, 0x81, 0xCA,
+	0x05, 0x4F, 0xCC, 0x83, 0xCC, 0x84, 0xCA, 0x05,
 	// Bytes 3940 - 397f
-	0x45, 0xCC, 0xA7, 0xCC, 0x86, 0xCA, 0x05, 0x49,
-	0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05, 0x4C, 0xCC,
-	0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x4F, 0xCC, 0x82,
-	0xCC, 0x80, 0xCA, 0x05, 0x4F, 0xCC, 0x82, 0xCC,
-	0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x83,
-	0xCA, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x89, 0xCA,
-	0x05, 0x4F, 0xCC, 0x83, 0xCC, 0x81, 0xCA, 0x05,
-	0x4F, 0xCC, 0x83, 0xCC, 0x84, 0xCA, 0x05, 0x4F,
+	0x4F, 0xCC, 0x83, 0xCC, 0x88, 0xCA, 0x05, 0x4F,
+	0xCC, 0x84, 0xCC, 0x80, 0xCA, 0x05, 0x4F, 0xCC,
+	0x84, 0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x87,
+	0xCC, 0x84, 0xCA, 0x05, 0x4F, 0xCC, 0x88, 0xCC,
+	0x84, 0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0x80,
+	0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0x81, 0xCA,
+	0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0x83, 0xCA, 0x05,
+	0x4F, 0xCC, 0x9B, 0xCC, 0x89, 0xCA, 0x05, 0x4F,
 	// Bytes 3980 - 39bf
-	0xCC, 0x83, 0xCC, 0x88, 0xCA, 0x05, 0x4F, 0xCC,
-	0x84, 0xCC, 0x80, 0xCA, 0x05, 0x4F, 0xCC, 0x84,
-	0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x87, 0xCC,
-	0x84, 0xCA, 0x05, 0x4F, 0xCC, 0x88, 0xCC, 0x84,
-	0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0x80, 0xCA,
-	0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0x81, 0xCA, 0x05,
-	0x4F, 0xCC, 0x9B, 0xCC, 0x83, 0xCA, 0x05, 0x4F,
-	0xCC, 0x9B, 0xCC, 0x89, 0xCA, 0x05, 0x4F, 0xCC,
+	0xCC, 0x9B, 0xCC, 0xA3, 0xB6, 0x05, 0x4F, 0xCC,
+	0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x4F, 0xCC, 0xA8,
+	0xCC, 0x84, 0xCA, 0x05, 0x52, 0xCC, 0xA3, 0xCC,
+	0x84, 0xCA, 0x05, 0x53, 0xCC, 0x81, 0xCC, 0x87,
+	0xCA, 0x05, 0x53, 0xCC, 0x8C, 0xCC, 0x87, 0xCA,
+	0x05, 0x53, 0xCC, 0xA3, 0xCC, 0x87, 0xCA, 0x05,
+	0x55, 0xCC, 0x83, 0xCC, 0x81, 0xCA, 0x05, 0x55,
+	0xCC, 0x84, 0xCC, 0x88, 0xCA, 0x05, 0x55, 0xCC,
 	// Bytes 39c0 - 39ff
-	0x9B, 0xCC, 0xA3, 0xB6, 0x05, 0x4F, 0xCC, 0xA3,
-	0xCC, 0x82, 0xCA, 0x05, 0x4F, 0xCC, 0xA8, 0xCC,
-	0x84, 0xCA, 0x05, 0x52, 0xCC, 0xA3, 0xCC, 0x84,
-	0xCA, 0x05, 0x53, 0xCC, 0x81, 0xCC, 0x87, 0xCA,
-	0x05, 0x53, 0xCC, 0x8C, 0xCC, 0x87, 0xCA, 0x05,
-	0x53, 0xCC, 0xA3, 0xCC, 0x87, 0xCA, 0x05, 0x55,
-	0xCC, 0x83, 0xCC, 0x81, 0xCA, 0x05, 0x55, 0xCC,
-	0x84, 0xCC, 0x88, 0xCA, 0x05, 0x55, 0xCC, 0x88,
+	0x88, 0xCC, 0x80, 0xCA, 0x05, 0x55, 0xCC, 0x88,
+	0xCC, 0x81, 0xCA, 0x05, 0x55, 0xCC, 0x88, 0xCC,
+	0x84, 0xCA, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x8C,
+	0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x80, 0xCA,
+	0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x81, 0xCA, 0x05,
+	0x55, 0xCC, 0x9B, 0xCC, 0x83, 0xCA, 0x05, 0x55,
+	0xCC, 0x9B, 0xCC, 0x89, 0xCA, 0x05, 0x55, 0xCC,
+	0x9B, 0xCC, 0xA3, 0xB6, 0x05, 0x61, 0xCC, 0x82,
 	// Bytes 3a00 - 3a3f
-	0xCC, 0x80, 0xCA, 0x05, 0x55, 0xCC, 0x88, 0xCC,
-	0x81, 0xCA, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x84,
-	0xCA, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x8C, 0xCA,
-	0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x80, 0xCA, 0x05,
-	0x55, 0xCC, 0x9B, 0xCC, 0x81, 0xCA, 0x05, 0x55,
-	0xCC, 0x9B, 0xCC, 0x83, 0xCA, 0x05, 0x55, 0xCC,
-	0x9B, 0xCC, 0x89, 0xCA, 0x05, 0x55, 0xCC, 0x9B,
-	0xCC, 0xA3, 0xB6, 0x05, 0x61, 0xCC, 0x82, 0xCC,
+	0xCC, 0x80, 0xCA, 0x05, 0x61, 0xCC, 0x82, 0xCC,
+	0x81, 0xCA, 0x05, 0x61, 0xCC, 0x82, 0xCC, 0x83,
+	0xCA, 0x05, 0x61, 0xCC, 0x82, 0xCC, 0x89, 0xCA,
+	0x05, 0x61, 0xCC, 0x86, 0xCC, 0x80, 0xCA, 0x05,
+	0x61, 0xCC, 0x86, 0xCC, 0x81, 0xCA, 0x05, 0x61,
+	0xCC, 0x86, 0xCC, 0x83, 0xCA, 0x05, 0x61, 0xCC,
+	0x86, 0xCC, 0x89, 0xCA, 0x05, 0x61, 0xCC, 0x87,
+	0xCC, 0x84, 0xCA, 0x05, 0x61, 0xCC, 0x88, 0xCC,
 	// Bytes 3a40 - 3a7f
-	0x80, 0xCA, 0x05, 0x61, 0xCC, 0x82, 0xCC, 0x81,
-	0xCA, 0x05, 0x61, 0xCC, 0x82, 0xCC, 0x83, 0xCA,
-	0x05, 0x61, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05,
-	0x61, 0xCC, 0x86, 0xCC, 0x80, 0xCA, 0x05, 0x61,
-	0xCC, 0x86, 0xCC, 0x81, 0xCA, 0x05, 0x61, 0xCC,
-	0x86, 0xCC, 0x83, 0xCA, 0x05, 0x61, 0xCC, 0x86,
-	0xCC, 0x89, 0xCA, 0x05, 0x61, 0xCC, 0x87, 0xCC,
-	0x84, 0xCA, 0x05, 0x61, 0xCC, 0x88, 0xCC, 0x84,
+	0x84, 0xCA, 0x05, 0x61, 0xCC, 0x8A, 0xCC, 0x81,
+	0xCA, 0x05, 0x61, 0xCC, 0xA3, 0xCC, 0x82, 0xCA,
+	0x05, 0x61, 0xCC, 0xA3, 0xCC, 0x86, 0xCA, 0x05,
+	0x63, 0xCC, 0xA7, 0xCC, 0x81, 0xCA, 0x05, 0x65,
+	0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05, 0x65, 0xCC,
+	0x82, 0xCC, 0x81, 0xCA, 0x05, 0x65, 0xCC, 0x82,
+	0xCC, 0x83, 0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC,
+	0x89, 0xCA, 0x05, 0x65, 0xCC, 0x84, 0xCC, 0x80,
 	// Bytes 3a80 - 3abf
-	0xCA, 0x05, 0x61, 0xCC, 0x8A, 0xCC, 0x81, 0xCA,
-	0x05, 0x61, 0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05,
-	0x61, 0xCC, 0xA3, 0xCC, 0x86, 0xCA, 0x05, 0x63,
-	0xCC, 0xA7, 0xCC, 0x81, 0xCA, 0x05, 0x65, 0xCC,
-	0x82, 0xCC, 0x80, 0xCA, 0x05, 0x65, 0xCC, 0x82,
-	0xCC, 0x81, 0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC,
-	0x83, 0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x89,
-	0xCA, 0x05, 0x65, 0xCC, 0x84, 0xCC, 0x80, 0xCA,
+	0xCA, 0x05, 0x65, 0xCC, 0x84, 0xCC, 0x81, 0xCA,
+	0x05, 0x65, 0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05,
+	0x65, 0xCC, 0xA7, 0xCC, 0x86, 0xCA, 0x05, 0x69,
+	0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05, 0x6C, 0xCC,
+	0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x6F, 0xCC, 0x82,
+	0xCC, 0x80, 0xCA, 0x05, 0x6F, 0xCC, 0x82, 0xCC,
+	0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x83,
+	0xCA, 0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x89, 0xCA,
 	// Bytes 3ac0 - 3aff
-	0x05, 0x65, 0xCC, 0x84, 0xCC, 0x81, 0xCA, 0x05,
-	0x65, 0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x65,
-	0xCC, 0xA7, 0xCC, 0x86, 0xCA, 0x05, 0x69, 0xCC,
-	0x88, 0xCC, 0x81, 0xCA, 0x05, 0x6C, 0xCC, 0xA3,
-	0xCC, 0x84, 0xCA, 0x05, 0x6F, 0xCC, 0x82, 0xCC,
-	0x80, 0xCA, 0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x81,
-	0xCA, 0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x83, 0xCA,
-	0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05,
+	0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x81, 0xCA, 0x05,
+	0x6F, 0xCC, 0x83, 0xCC, 0x84, 0xCA, 0x05, 0x6F,
+	0xCC, 0x83, 0xCC, 0x88, 0xCA, 0x05, 0x6F, 0xCC,
+	0x84, 0xCC, 0x80, 0xCA, 0x05, 0x6F, 0xCC, 0x84,
+	0xCC, 0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x87, 0xCC,
+	0x84, 0xCA, 0x05, 0x6F, 0xCC, 0x88, 0xCC, 0x84,
+	0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x80, 0xCA,
+	0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x81, 0xCA, 0x05,
 	// Bytes 3b00 - 3b3f
-	0x6F, 0xCC, 0x83, 0xCC, 0x81, 0xCA, 0x05, 0x6F,
-	0xCC, 0x83, 0xCC, 0x84, 0xCA, 0x05, 0x6F, 0xCC,
-	0x83, 0xCC, 0x88, 0xCA, 0x05, 0x6F, 0xCC, 0x84,
-	0xCC, 0x80, 0xCA, 0x05, 0x6F, 0xCC, 0x84, 0xCC,
-	0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x87, 0xCC, 0x84,
-	0xCA, 0x05, 0x6F, 0xCC, 0x88, 0xCC, 0x84, 0xCA,
-	0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x80, 0xCA, 0x05,
-	0x6F, 0xCC, 0x9B, 0xCC, 0x81, 0xCA, 0x05, 0x6F,
+	0x6F, 0xCC, 0x9B, 0xCC, 0x83, 0xCA, 0x05, 0x6F,
+	0xCC, 0x9B, 0xCC, 0x89, 0xCA, 0x05, 0x6F, 0xCC,
+	0x9B, 0xCC, 0xA3, 0xB6, 0x05, 0x6F, 0xCC, 0xA3,
+	0xCC, 0x82, 0xCA, 0x05, 0x6F, 0xCC, 0xA8, 0xCC,
+	0x84, 0xCA, 0x05, 0x72, 0xCC, 0xA3, 0xCC, 0x84,
+	0xCA, 0x05, 0x73, 0xCC, 0x81, 0xCC, 0x87, 0xCA,
+	0x05, 0x73, 0xCC, 0x8C, 0xCC, 0x87, 0xCA, 0x05,
+	0x73, 0xCC, 0xA3, 0xCC, 0x87, 0xCA, 0x05, 0x75,
 	// Bytes 3b40 - 3b7f
-	0xCC, 0x9B, 0xCC, 0x83, 0xCA, 0x05, 0x6F, 0xCC,
-	0x9B, 0xCC, 0x89, 0xCA, 0x05, 0x6F, 0xCC, 0x9B,
-	0xCC, 0xA3, 0xB6, 0x05, 0x6F, 0xCC, 0xA3, 0xCC,
-	0x82, 0xCA, 0x05, 0x6F, 0xCC, 0xA8, 0xCC, 0x84,
-	0xCA, 0x05, 0x72, 0xCC, 0xA3, 0xCC, 0x84, 0xCA,
-	0x05, 0x73, 0xCC, 0x81, 0xCC, 0x87, 0xCA, 0x05,
-	0x73, 0xCC, 0x8C, 0xCC, 0x87, 0xCA, 0x05, 0x73,
-	0xCC, 0xA3, 0xCC, 0x87, 0xCA, 0x05, 0x75, 0xCC,
+	0xCC, 0x83, 0xCC, 0x81, 0xCA, 0x05, 0x75, 0xCC,
+	0x84, 0xCC, 0x88, 0xCA, 0x05, 0x75, 0xCC, 0x88,
+	0xCC, 0x80, 0xCA, 0x05, 0x75, 0xCC, 0x88, 0xCC,
+	0x81, 0xCA, 0x05, 0x75, 0xCC, 0x88, 0xCC, 0x84,
+	0xCA, 0x05, 0x75, 0xCC, 0x88, 0xCC, 0x8C, 0xCA,
+	0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x80, 0xCA, 0x05,
+	0x75, 0xCC, 0x9B, 0xCC, 0x81, 0xCA, 0x05, 0x75,
+	0xCC, 0x9B, 0xCC, 0x83, 0xCA, 0x05, 0x75, 0xCC,
 	// Bytes 3b80 - 3bbf
-	0x83, 0xCC, 0x81, 0xCA, 0x05, 0x75, 0xCC, 0x84,
-	0xCC, 0x88, 0xCA, 0x05, 0x75, 0xCC, 0x88, 0xCC,
-	0x80, 0xCA, 0x05, 0x75, 0xCC, 0x88, 0xCC, 0x81,
-	0xCA, 0x05, 0x75, 0xCC, 0x88, 0xCC, 0x84, 0xCA,
-	0x05, 0x75, 0xCC, 0x88, 0xCC, 0x8C, 0xCA, 0x05,
-	0x75, 0xCC, 0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x75,
-	0xCC, 0x9B, 0xCC, 0x81, 0xCA, 0x05, 0x75, 0xCC,
-	0x9B, 0xCC, 0x83, 0xCA, 0x05, 0x75, 0xCC, 0x9B,
+	0x9B, 0xCC, 0x89, 0xCA, 0x05, 0x75, 0xCC, 0x9B,
+	0xCC, 0xA3, 0xB6, 0x05, 0xE1, 0xBE, 0xBF, 0xCC,
+	0x80, 0xCA, 0x05, 0xE1, 0xBE, 0xBF, 0xCC, 0x81,
+	0xCA, 0x05, 0xE1, 0xBE, 0xBF, 0xCD, 0x82, 0xCA,
+	0x05, 0xE1, 0xBF, 0xBE, 0xCC, 0x80, 0xCA, 0x05,
+	0xE1, 0xBF, 0xBE, 0xCC, 0x81, 0xCA, 0x05, 0xE1,
+	0xBF, 0xBE, 0xCD, 0x82, 0xCA, 0x05, 0xE2, 0x86,
+	0x90, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x86, 0x92,
 	// Bytes 3bc0 - 3bff
-	0xCC, 0x89, 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC,
-	0xA3, 0xB6, 0x05, 0xE1, 0xBE, 0xBF, 0xCC, 0x80,
-	0xCA, 0x05, 0xE1, 0xBE, 0xBF, 0xCC, 0x81, 0xCA,
-	0x05, 0xE1, 0xBE, 0xBF, 0xCD, 0x82, 0xCA, 0x05,
-	0xE1, 0xBF, 0xBE, 0xCC, 0x80, 0xCA, 0x05, 0xE1,
-	0xBF, 0xBE, 0xCC, 0x81, 0xCA, 0x05, 0xE1, 0xBF,
-	0xBE, 0xCD, 0x82, 0xCA, 0x05, 0xE2, 0x86, 0x90,
-	0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x86, 0x92, 0xCC,
+	0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x86, 0x94, 0xCC,
+	0xB8, 0x05, 0x05, 0xE2, 0x87, 0x90, 0xCC, 0xB8,
+	0x05, 0x05, 0xE2, 0x87, 0x92, 0xCC, 0xB8, 0x05,
+	0x05, 0xE2, 0x87, 0x94, 0xCC, 0xB8, 0x05, 0x05,
+	0xE2, 0x88, 0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
+	0x88, 0x88, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88,
+	0x8B, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, 0xA3,
+	0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, 0xA5, 0xCC,
 	// Bytes 3c00 - 3c3f
-	0xB8, 0x05, 0x05, 0xE2, 0x86, 0x94, 0xCC, 0xB8,
-	0x05, 0x05, 0xE2, 0x87, 0x90, 0xCC, 0xB8, 0x05,
-	0x05, 0xE2, 0x87, 0x92, 0xCC, 0xB8, 0x05, 0x05,
-	0xE2, 0x87, 0x94, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
-	0x88, 0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88,
-	0x88, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x8B,
-	0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, 0xA3, 0xCC,
-	0xB8, 0x05, 0x05, 0xE2, 0x88, 0xA5, 0xCC, 0xB8,
+	0xB8, 0x05, 0x05, 0xE2, 0x88, 0xBC, 0xCC, 0xB8,
+	0x05, 0x05, 0xE2, 0x89, 0x83, 0xCC, 0xB8, 0x05,
+	0x05, 0xE2, 0x89, 0x85, 0xCC, 0xB8, 0x05, 0x05,
+	0xE2, 0x89, 0x88, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
+	0x89, 0x8D, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,
+	0xA1, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xA4,
+	0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xA5, 0xCC,
+	0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB2, 0xCC, 0xB8,
 	// Bytes 3c40 - 3c7f
-	0x05, 0x05, 0xE2, 0x88, 0xBC, 0xCC, 0xB8, 0x05,
-	0x05, 0xE2, 0x89, 0x83, 0xCC, 0xB8, 0x05, 0x05,
-	0xE2, 0x89, 0x85, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
-	0x89, 0x88, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,
-	0x8D, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xA1,
-	0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xA4, 0xCC,
-	0xB8, 0x05, 0x05, 0xE2, 0x89, 0xA5, 0xCC, 0xB8,
-	0x05, 0x05, 0xE2, 0x89, 0xB2, 0xCC, 0xB8, 0x05,
+	0x05, 0x05, 0xE2, 0x89, 0xB3, 0xCC, 0xB8, 0x05,
+	0x05, 0xE2, 0x89, 0xB6, 0xCC, 0xB8, 0x05, 0x05,
+	0xE2, 0x89, 0xB7, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
+	0x89, 0xBA, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,
+	0xBB, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBC,
+	0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBD, 0xCC,
+	0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x82, 0xCC, 0xB8,
+	0x05, 0x05, 0xE2, 0x8A, 0x83, 0xCC, 0xB8, 0x05,
 	// Bytes 3c80 - 3cbf
-	0x05, 0xE2, 0x89, 0xB3, 0xCC, 0xB8, 0x05, 0x05,
-	0xE2, 0x89, 0xB6, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
-	0x89, 0xB7, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,
-	0xBA, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBB,
-	0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBC, 0xCC,
-	0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBD, 0xCC, 0xB8,
-	0x05, 0x05, 0xE2, 0x8A, 0x82, 0xCC, 0xB8, 0x05,
-	0x05, 0xE2, 0x8A, 0x83, 0xCC, 0xB8, 0x05, 0x05,
+	0x05, 0xE2, 0x8A, 0x86, 0xCC, 0xB8, 0x05, 0x05,
+	0xE2, 0x8A, 0x87, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
+	0x8A, 0x91, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,
+	0x92, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xA2,
+	0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xA8, 0xCC,
+	0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xA9, 0xCC, 0xB8,
+	0x05, 0x05, 0xE2, 0x8A, 0xAB, 0xCC, 0xB8, 0x05,
+	0x05, 0xE2, 0x8A, 0xB2, 0xCC, 0xB8, 0x05, 0x05,
 	// Bytes 3cc0 - 3cff
-	0xE2, 0x8A, 0x86, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
-	0x8A, 0x87, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,
-	0x91, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x92,
-	0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xA2, 0xCC,
-	0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xA8, 0xCC, 0xB8,
-	0x05, 0x05, 0xE2, 0x8A, 0xA9, 0xCC, 0xB8, 0x05,
-	0x05, 0xE2, 0x8A, 0xAB, 0xCC, 0xB8, 0x05, 0x05,
-	0xE2, 0x8A, 0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
+	0xE2, 0x8A, 0xB3, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
+	0x8A, 0xB4, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,
+	0xB5, 0xCC, 0xB8, 0x05, 0x06, 0xCE, 0x91, 0xCC,
+	0x93, 0xCD, 0x85, 0xDA, 0x06, 0xCE, 0x91, 0xCC,
+	0x94, 0xCD, 0x85, 0xDA, 0x06, 0xCE, 0x95, 0xCC,
+	0x93, 0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x95, 0xCC,
+	0x93, 0xCC, 0x81, 0xCA, 0x06, 0xCE, 0x95, 0xCC,
+	0x94, 0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x95, 0xCC,
 	// Bytes 3d00 - 3d3f
-	0x8A, 0xB3, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,
-	0xB4, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB5,
-	0xCC, 0xB8, 0x05, 0x06, 0xCE, 0x91, 0xCC, 0x93,
-	0xCD, 0x85, 0xDA, 0x06, 0xCE, 0x91, 0xCC, 0x94,
-	0xCD, 0x85, 0xDA, 0x06, 0xCE, 0x95, 0xCC, 0x93,
-	0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x95, 0xCC, 0x93,
-	0xCC, 0x81, 0xCA, 0x06, 0xCE, 0x95, 0xCC, 0x94,
-	0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x95, 0xCC, 0x94,
+	0x94, 0xCC, 0x81, 0xCA, 0x06, 0xCE, 0x97, 0xCC,
+	0x93, 0xCD, 0x85, 0xDA, 0x06, 0xCE, 0x97, 0xCC,
+	0x94, 0xCD, 0x85, 0xDA, 0x06, 0xCE, 0x99, 0xCC,
+	0x93, 0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x99, 0xCC,
+	0x93, 0xCC, 0x81, 0xCA, 0x06, 0xCE, 0x99, 0xCC,
+	0x93, 0xCD, 0x82, 0xCA, 0x06, 0xCE, 0x99, 0xCC,
+	0x94, 0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x99, 0xCC,
+	0x94, 0xCC, 0x81, 0xCA, 0x06, 0xCE, 0x99, 0xCC,
 	// Bytes 3d40 - 3d7f
-	0xCC, 0x81, 0xCA, 0x06, 0xCE, 0x97, 0xCC, 0x93,
-	0xCD, 0x85, 0xDA, 0x06, 0xCE, 0x97, 0xCC, 0x94,
-	0xCD, 0x85, 0xDA, 0x06, 0xCE, 0x99, 0xCC, 0x93,
-	0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x99, 0xCC, 0x93,
-	0xCC, 0x81, 0xCA, 0x06, 0xCE, 0x99, 0xCC, 0x93,
-	0xCD, 0x82, 0xCA, 0x06, 0xCE, 0x99, 0xCC, 0x94,
-	0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x99, 0xCC, 0x94,
-	0xCC, 0x81, 0xCA, 0x06, 0xCE, 0x99, 0xCC, 0x94,
+	0x94, 0xCD, 0x82, 0xCA, 0x06, 0xCE, 0x9F, 0xCC,
+	0x93, 0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x9F, 0xCC,
+	0x93, 0xCC, 0x81, 0xCA, 0x06, 0xCE, 0x9F, 0xCC,
+	0x94, 0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x9F, 0xCC,
+	0x94, 0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xA5, 0xCC,
+	0x94, 0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xA5, 0xCC,
+	0x94, 0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xA5, 0xCC,
+	0x94, 0xCD, 0x82, 0xCA, 0x06, 0xCE, 0xA9, 0xCC,
 	// Bytes 3d80 - 3dbf
-	0xCD, 0x82, 0xCA, 0x06, 0xCE, 0x9F, 0xCC, 0x93,
-	0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x9F, 0xCC, 0x93,
-	0xCC, 0x81, 0xCA, 0x06, 0xCE, 0x9F, 0xCC, 0x94,
-	0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x9F, 0xCC, 0x94,
-	0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xA5, 0xCC, 0x94,
-	0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xA5, 0xCC, 0x94,
-	0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xA5, 0xCC, 0x94,
-	0xCD, 0x82, 0xCA, 0x06, 0xCE, 0xA9, 0xCC, 0x93,
+	0x93, 0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xA9, 0xCC,
+	0x94, 0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB1, 0xCC,
+	0x80, 0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB1, 0xCC,
+	0x81, 0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB1, 0xCC,
+	0x93, 0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB1, 0xCC,
+	0x94, 0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB1, 0xCD,
+	0x82, 0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB5, 0xCC,
+	0x93, 0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xB5, 0xCC,
 	// Bytes 3dc0 - 3dff
-	0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xA9, 0xCC, 0x94,
-	0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB1, 0xCC, 0x80,
-	0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB1, 0xCC, 0x81,
-	0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB1, 0xCC, 0x93,
-	0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB1, 0xCC, 0x94,
-	0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB1, 0xCD, 0x82,
-	0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB5, 0xCC, 0x93,
-	0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xB5, 0xCC, 0x93,
+	0x93, 0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xB5, 0xCC,
+	0x94, 0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xB5, 0xCC,
+	0x94, 0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xB7, 0xCC,
+	0x80, 0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB7, 0xCC,
+	0x81, 0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB7, 0xCC,
+	0x93, 0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB7, 0xCC,
+	0x94, 0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB7, 0xCD,
+	0x82, 0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB9, 0xCC,
 	// Bytes 3e00 - 3e3f
-	0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xB5, 0xCC, 0x94,
-	0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xB5, 0xCC, 0x94,
-	0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xB7, 0xCC, 0x80,
-	0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB7, 0xCC, 0x81,
-	0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB7, 0xCC, 0x93,
-	0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB7, 0xCC, 0x94,
-	0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB7, 0xCD, 0x82,
-	0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB9, 0xCC, 0x88,
+	0x88, 0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xB9, 0xCC,
+	0x88, 0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xB9, 0xCC,
+	0x88, 0xCD, 0x82, 0xCA, 0x06, 0xCE, 0xB9, 0xCC,
+	0x93, 0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xB9, 0xCC,
+	0x93, 0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xB9, 0xCC,
+	0x93, 0xCD, 0x82, 0xCA, 0x06, 0xCE, 0xB9, 0xCC,
+	0x94, 0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xB9, 0xCC,
+	0x94, 0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xB9, 0xCC,
 	// Bytes 3e40 - 3e7f
-	0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xB9, 0xCC, 0x88,
-	0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xB9, 0xCC, 0x88,
-	0xCD, 0x82, 0xCA, 0x06, 0xCE, 0xB9, 0xCC, 0x93,
-	0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xB9, 0xCC, 0x93,
-	0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xB9, 0xCC, 0x93,
-	0xCD, 0x82, 0xCA, 0x06, 0xCE, 0xB9, 0xCC, 0x94,
-	0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xB9, 0xCC, 0x94,
-	0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xB9, 0xCC, 0x94,
+	0x94, 0xCD, 0x82, 0xCA, 0x06, 0xCE, 0xBF, 0xCC,
+	0x93, 0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xBF, 0xCC,
+	0x93, 0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xBF, 0xCC,
+	0x94, 0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xBF, 0xCC,
+	0x94, 0xCC, 0x81, 0xCA, 0x06, 0xCF, 0x85, 0xCC,
+	0x88, 0xCC, 0x80, 0xCA, 0x06, 0xCF, 0x85, 0xCC,
+	0x88, 0xCC, 0x81, 0xCA, 0x06, 0xCF, 0x85, 0xCC,
+	0x88, 0xCD, 0x82, 0xCA, 0x06, 0xCF, 0x85, 0xCC,
 	// Bytes 3e80 - 3ebf
-	0xCD, 0x82, 0xCA, 0x06, 0xCE, 0xBF, 0xCC, 0x93,
-	0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xBF, 0xCC, 0x93,
-	0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xBF, 0xCC, 0x94,
-	0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xBF, 0xCC, 0x94,
-	0xCC, 0x81, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x88,
-	0xCC, 0x80, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x88,
-	0xCC, 0x81, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x88,
-	0xCD, 0x82, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x93,
+	0x93, 0xCC, 0x80, 0xCA, 0x06, 0xCF, 0x85, 0xCC,
+	0x93, 0xCC, 0x81, 0xCA, 0x06, 0xCF, 0x85, 0xCC,
+	0x93, 0xCD, 0x82, 0xCA, 0x06, 0xCF, 0x85, 0xCC,
+	0x94, 0xCC, 0x80, 0xCA, 0x06, 0xCF, 0x85, 0xCC,
+	0x94, 0xCC, 0x81, 0xCA, 0x06, 0xCF, 0x85, 0xCC,
+	0x94, 0xCD, 0x82, 0xCA, 0x06, 0xCF, 0x89, 0xCC,
+	0x80, 0xCD, 0x85, 0xDA, 0x06, 0xCF, 0x89, 0xCC,
+	0x81, 0xCD, 0x85, 0xDA, 0x06, 0xCF, 0x89, 0xCC,
 	// Bytes 3ec0 - 3eff
-	0xCC, 0x80, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x93,
-	0xCC, 0x81, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x93,
-	0xCD, 0x82, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x94,
-	0xCC, 0x80, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x94,
-	0xCC, 0x81, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x94,
-	0xCD, 0x82, 0xCA, 0x06, 0xCF, 0x89, 0xCC, 0x80,
-	0xCD, 0x85, 0xDA, 0x06, 0xCF, 0x89, 0xCC, 0x81,
-	0xCD, 0x85, 0xDA, 0x06, 0xCF, 0x89, 0xCC, 0x93,
+	0x93, 0xCD, 0x85, 0xDA, 0x06, 0xCF, 0x89, 0xCC,
+	0x94, 0xCD, 0x85, 0xDA, 0x06, 0xCF, 0x89, 0xCD,
+	0x82, 0xCD, 0x85, 0xDA, 0x06, 0xE0, 0xA4, 0xA8,
+	0xE0, 0xA4, 0xBC, 0x09, 0x06, 0xE0, 0xA4, 0xB0,
+	0xE0, 0xA4, 0xBC, 0x09, 0x06, 0xE0, 0xA4, 0xB3,
+	0xE0, 0xA4, 0xBC, 0x09, 0x06, 0xE0, 0xB1, 0x86,
+	0xE0, 0xB1, 0x96, 0x85, 0x06, 0xE0, 0xB7, 0x99,
+	0xE0, 0xB7, 0x8A, 0x11, 0x06, 0xE3, 0x81, 0x86,
 	// Bytes 3f00 - 3f3f
-	0xCD, 0x85, 0xDA, 0x06, 0xCF, 0x89, 0xCC, 0x94,
-	0xCD, 0x85, 0xDA, 0x06, 0xCF, 0x89, 0xCD, 0x82,
-	0xCD, 0x85, 0xDA, 0x06, 0xE0, 0xA4, 0xA8, 0xE0,
-	0xA4, 0xBC, 0x09, 0x06, 0xE0, 0xA4, 0xB0, 0xE0,
-	0xA4, 0xBC, 0x09, 0x06, 0xE0, 0xA4, 0xB3, 0xE0,
-	0xA4, 0xBC, 0x09, 0x06, 0xE0, 0xB1, 0x86, 0xE0,
-	0xB1, 0x96, 0x85, 0x06, 0xE0, 0xB7, 0x99, 0xE0,
-	0xB7, 0x8A, 0x11, 0x06, 0xE3, 0x81, 0x86, 0xE3,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x8B,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x8D,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x8F,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x91,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x93,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x95,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x97,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x99,
 	// Bytes 3f40 - 3f7f
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x8B, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x8D, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x8F, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x91, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x93, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x95, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x97, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x99, 0xE3,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x9B,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x9D,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x9F,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xA1,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xA4,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xA6,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xA8,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xAF,
 	// Bytes 3f80 - 3fbf
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x9B, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x9D, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x9F, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xA1, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xA4, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xA6, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xA8, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xAF, 0xE3,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xAF,
+	0xE3, 0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x81, 0xB2,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xB2,
+	0xE3, 0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x81, 0xB5,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xB5,
+	0xE3, 0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x81, 0xB8,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xB8,
+	0xE3, 0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x81, 0xBB,
 	// Bytes 3fc0 - 3fff
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xAF, 0xE3,
-	0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x81, 0xB2, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xB2, 0xE3,
-	0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x81, 0xB5, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xB5, 0xE3,
-	0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x81, 0xB8, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xB8, 0xE3,
-	0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x81, 0xBB, 0xE3,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xBB,
+	0xE3, 0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x82, 0x9D,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xA6,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xAB,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xAD,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xAF,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xB1,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xB3,
 	// Bytes 4000 - 403f
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xBB, 0xE3,
-	0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x82, 0x9D, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xA6, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xAB, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xAD, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xAF, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xB1, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xB3, 0xE3,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xB5,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xB7,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xB9,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xBB,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xBD,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xBF,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x81,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x84,
 	// Bytes 4040 - 407f
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xB5, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xB7, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xB9, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xBB, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xBD, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xBF, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x81, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x84, 0xE3,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x86,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x88,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x8F,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x8F,
+	0xE3, 0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x83, 0x92,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x92,
+	0xE3, 0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x83, 0x95,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x95,
 	// Bytes 4080 - 40bf
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x86, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x88, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x8F, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x8F, 0xE3,
-	0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x83, 0x92, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x92, 0xE3,
-	0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x83, 0x95, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x95, 0xE3,
+	0xE3, 0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x83, 0x98,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x98,
+	0xE3, 0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x83, 0x9B,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x9B,
+	0xE3, 0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x83, 0xAF,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0xB0,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0xB1,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0xB2,
 	// Bytes 40c0 - 40ff
-	0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x83, 0x98, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x98, 0xE3,
-	0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x83, 0x9B, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x9B, 0xE3,
-	0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x83, 0xAF, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0xB0, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0xB1, 0xE3,
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0xB2, 0xE3,
+	0xE3, 0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0xBD,
+	0xE3, 0x82, 0x99, 0x0D, 0x08, 0xCE, 0x91, 0xCC,
+	0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE,
+	0x91, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,
+	0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x82, 0xCD,
+	0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCC,
+	0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC,
+	0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE,
 	// Bytes 4100 - 413f
-	0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0xBD, 0xE3,
-	0x82, 0x99, 0x0D, 0x08, 0xCE, 0x91, 0xCC, 0x93,
-	0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x91,
-	0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08,
-	0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,
-	0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80,
-	0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x94,
-	0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x91,
+	0x91, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,
+	0x08, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCD,
+	0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC, 0x93, 0xCC,
+	0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC,
+	0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE,
+	0x97, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,
+	0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x81, 0xCD,
+	0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCD,
 	// Bytes 4140 - 417f
-	0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08,
-	0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,
-	0xDB, 0x08, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x81,
-	0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC, 0x93,
-	0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97,
-	0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08,
-	0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,
-	0xDB, 0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x82,
+	0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC,
+	0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE,
+	0xA9, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,
+	0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xCD,
+	0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCC,
+	0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC,
+	0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE,
+	0xA9, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,
 	// Bytes 4180 - 41bf
-	0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x93,
-	0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xA9,
-	0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08,
-	0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,
-	0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x80,
-	0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x94,
-	0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xA9,
-	0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08,
+	0x08, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xCD,
+	0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC, 0x93, 0xCC,
+	0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC,
+	0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE,
+	0xB1, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,
+	0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCD,
+	0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCD,
+	0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC,
 	// Bytes 41c0 - 41ff
-	0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,
-	0xDB, 0x08, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x81,
-	0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC, 0x93,
-	0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1,
-	0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08,
-	0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,
-	0xDB, 0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82,
-	0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x93,
+	0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE,
+	0xB7, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,
+	0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCD,
+	0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCC,
+	0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC,
+	0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE,
+	0xB7, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,
+	0x08, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x80, 0xCD,
 	// Bytes 4200 - 423f
-	0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB7,
-	0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08,
-	0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,
-	0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x80,
-	0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x94,
-	0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB7,
-	0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08,
-	0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,
+	0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC, 0x93, 0xCC,
+	0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC,
+	0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCF,
+	0x89, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,
+	0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCD,
+	0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCD,
+	0x82, 0xCD, 0x85, 0xDB, 0x08, 0xF0, 0x91, 0x82,
+	0x99, 0xF0, 0x91, 0x82, 0xBA, 0x09, 0x08, 0xF0,
 	// Bytes 4240 - 427f
-	0xDB, 0x08, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x81,
-	0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC, 0x93,
-	0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89,
-	0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08,
-	0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,
-	0xDB, 0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x82,
-	0xCD, 0x85, 0xDB, 0x08, 0xF0, 0x91, 0x82, 0x99,
-	0xF0, 0x91, 0x82, 0xBA, 0x09, 0x08, 0xF0, 0x91,
+	0x91, 0x82, 0x9B, 0xF0, 0x91, 0x82, 0xBA, 0x09,
+	0x08, 0xF0, 0x91, 0x82, 0xA5, 0xF0, 0x91, 0x82,
+	0xBA, 0x09, 0x42, 0xC2, 0xB4, 0x01, 0x43, 0x20,
+	0xCC, 0x81, 0xC9, 0x43, 0x20, 0xCC, 0x83, 0xC9,
+	0x43, 0x20, 0xCC, 0x84, 0xC9, 0x43, 0x20, 0xCC,
+	0x85, 0xC9, 0x43, 0x20, 0xCC, 0x86, 0xC9, 0x43,
+	0x20, 0xCC, 0x87, 0xC9, 0x43, 0x20, 0xCC, 0x88,
+	0xC9, 0x43, 0x20, 0xCC, 0x8A, 0xC9, 0x43, 0x20,
 	// Bytes 4280 - 42bf
-	0x82, 0x9B, 0xF0, 0x91, 0x82, 0xBA, 0x09, 0x08,
-	0xF0, 0x91, 0x82, 0xA5, 0xF0, 0x91, 0x82, 0xBA,
-	0x09, 0x42, 0xC2, 0xB4, 0x01, 0x43, 0x20, 0xCC,
-	0x81, 0xC9, 0x43, 0x20, 0xCC, 0x83, 0xC9, 0x43,
-	0x20, 0xCC, 0x84, 0xC9, 0x43, 0x20, 0xCC, 0x85,
-	0xC9, 0x43, 0x20, 0xCC, 0x86, 0xC9, 0x43, 0x20,
-	0xCC, 0x87, 0xC9, 0x43, 0x20, 0xCC, 0x88, 0xC9,
-	0x43, 0x20, 0xCC, 0x8A, 0xC9, 0x43, 0x20, 0xCC,
+	0xCC, 0x8B, 0xC9, 0x43, 0x20, 0xCC, 0x93, 0xC9,
+	0x43, 0x20, 0xCC, 0x94, 0xC9, 0x43, 0x20, 0xCC,
+	0xA7, 0xA5, 0x43, 0x20, 0xCC, 0xA8, 0xA5, 0x43,
+	0x20, 0xCC, 0xB3, 0xB5, 0x43, 0x20, 0xCD, 0x82,
+	0xC9, 0x43, 0x20, 0xCD, 0x85, 0xD9, 0x43, 0x20,
+	0xD9, 0x8B, 0x59, 0x43, 0x20, 0xD9, 0x8C, 0x5D,
+	0x43, 0x20, 0xD9, 0x8D, 0x61, 0x43, 0x20, 0xD9,
+	0x8E, 0x65, 0x43, 0x20, 0xD9, 0x8F, 0x69, 0x43,
 	// Bytes 42c0 - 42ff
-	0x8B, 0xC9, 0x43, 0x20, 0xCC, 0x93, 0xC9, 0x43,
-	0x20, 0xCC, 0x94, 0xC9, 0x43, 0x20, 0xCC, 0xA7,
-	0xA5, 0x43, 0x20, 0xCC, 0xA8, 0xA5, 0x43, 0x20,
-	0xCC, 0xB3, 0xB5, 0x43, 0x20, 0xCD, 0x82, 0xC9,
-	0x43, 0x20, 0xCD, 0x85, 0xD9, 0x43, 0x20, 0xD9,
-	0x8B, 0x59, 0x43, 0x20, 0xD9, 0x8C, 0x5D, 0x43,
-	0x20, 0xD9, 0x8D, 0x61, 0x43, 0x20, 0xD9, 0x8E,
-	0x65, 0x43, 0x20, 0xD9, 0x8F, 0x69, 0x43, 0x20,
+	0x20, 0xD9, 0x90, 0x6D, 0x43, 0x20, 0xD9, 0x91,
+	0x71, 0x43, 0x20, 0xD9, 0x92, 0x75, 0x43, 0x41,
+	0xCC, 0x8A, 0xC9, 0x43, 0x73, 0xCC, 0x87, 0xC9,
+	0x43, 0xE1, 0x85, 0xA1, 0x01, 0x43, 0xE1, 0x85,
+	0xA2, 0x01, 0x43, 0xE1, 0x85, 0xA3, 0x01, 0x43,
+	0xE1, 0x85, 0xA4, 0x01, 0x43, 0xE1, 0x85, 0xA5,
+	0x01, 0x43, 0xE1, 0x85, 0xA6, 0x01, 0x43, 0xE1,
+	0x85, 0xA7, 0x01, 0x43, 0xE1, 0x85, 0xA8, 0x01,
 	// Bytes 4300 - 433f
-	0xD9, 0x90, 0x6D, 0x43, 0x20, 0xD9, 0x91, 0x71,
-	0x43, 0x20, 0xD9, 0x92, 0x75, 0x43, 0x41, 0xCC,
-	0x8A, 0xC9, 0x43, 0x73, 0xCC, 0x87, 0xC9, 0x44,
-	0x20, 0xE3, 0x82, 0x99, 0x0D, 0x44, 0x20, 0xE3,
-	0x82, 0x9A, 0x0D, 0x44, 0xC2, 0xA8, 0xCC, 0x81,
-	0xCA, 0x44, 0xCE, 0x91, 0xCC, 0x81, 0xC9, 0x44,
-	0xCE, 0x95, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0x97,
-	0xCC, 0x81, 0xC9, 0x44, 0xCE, 0x99, 0xCC, 0x81,
+	0x43, 0xE1, 0x85, 0xA9, 0x01, 0x43, 0xE1, 0x85,
+	0xAA, 0x01, 0x43, 0xE1, 0x85, 0xAB, 0x01, 0x43,
+	0xE1, 0x85, 0xAC, 0x01, 0x43, 0xE1, 0x85, 0xAD,
+	0x01, 0x43, 0xE1, 0x85, 0xAE, 0x01, 0x43, 0xE1,
+	0x85, 0xAF, 0x01, 0x43, 0xE1, 0x85, 0xB0, 0x01,
+	0x43, 0xE1, 0x85, 0xB1, 0x01, 0x43, 0xE1, 0x85,
+	0xB2, 0x01, 0x43, 0xE1, 0x85, 0xB3, 0x01, 0x43,
+	0xE1, 0x85, 0xB4, 0x01, 0x43, 0xE1, 0x85, 0xB5,
 	// Bytes 4340 - 437f
-	0xC9, 0x44, 0xCE, 0x9F, 0xCC, 0x81, 0xC9, 0x44,
-	0xCE, 0xA5, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xA5,
-	0xCC, 0x88, 0xC9, 0x44, 0xCE, 0xA9, 0xCC, 0x81,
-	0xC9, 0x44, 0xCE, 0xB1, 0xCC, 0x81, 0xC9, 0x44,
-	0xCE, 0xB5, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xB7,
-	0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xB9, 0xCC, 0x81,
-	0xC9, 0x44, 0xCE, 0xBF, 0xCC, 0x81, 0xC9, 0x44,
-	0xCF, 0x85, 0xCC, 0x81, 0xC9, 0x44, 0xCF, 0x89,
+	0x01, 0x43, 0xE1, 0x86, 0xAA, 0x01, 0x43, 0xE1,
+	0x86, 0xAC, 0x01, 0x43, 0xE1, 0x86, 0xAD, 0x01,
+	0x43, 0xE1, 0x86, 0xB0, 0x01, 0x43, 0xE1, 0x86,
+	0xB1, 0x01, 0x43, 0xE1, 0x86, 0xB2, 0x01, 0x43,
+	0xE1, 0x86, 0xB3, 0x01, 0x43, 0xE1, 0x86, 0xB4,
+	0x01, 0x43, 0xE1, 0x86, 0xB5, 0x01, 0x44, 0x20,
+	0xE3, 0x82, 0x99, 0x0D, 0x44, 0x20, 0xE3, 0x82,
+	0x9A, 0x0D, 0x44, 0xC2, 0xA8, 0xCC, 0x81, 0xCA,
 	// Bytes 4380 - 43bf
-	0xCC, 0x81, 0xC9, 0x44, 0xD7, 0x90, 0xD6, 0xB7,
-	0x31, 0x44, 0xD7, 0x90, 0xD6, 0xB8, 0x35, 0x44,
-	0xD7, 0x90, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x91,
-	0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x91, 0xD6, 0xBF,
-	0x49, 0x44, 0xD7, 0x92, 0xD6, 0xBC, 0x41, 0x44,
-	0xD7, 0x93, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x94,
-	0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x95, 0xD6, 0xB9,
-	0x39, 0x44, 0xD7, 0x95, 0xD6, 0xBC, 0x41, 0x44,
+	0x44, 0xCE, 0x91, 0xCC, 0x81, 0xC9, 0x44, 0xCE,
+	0x95, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0x97, 0xCC,
+	0x81, 0xC9, 0x44, 0xCE, 0x99, 0xCC, 0x81, 0xC9,
+	0x44, 0xCE, 0x9F, 0xCC, 0x81, 0xC9, 0x44, 0xCE,
+	0xA5, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xA5, 0xCC,
+	0x88, 0xC9, 0x44, 0xCE, 0xA9, 0xCC, 0x81, 0xC9,
+	0x44, 0xCE, 0xB1, 0xCC, 0x81, 0xC9, 0x44, 0xCE,
+	0xB5, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xB7, 0xCC,
 	// Bytes 43c0 - 43ff
-	0xD7, 0x96, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x98,
-	0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x99, 0xD6, 0xB4,
-	0x25, 0x44, 0xD7, 0x99, 0xD6, 0xBC, 0x41, 0x44,
-	0xD7, 0x9A, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9B,
-	0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9B, 0xD6, 0xBF,
-	0x49, 0x44, 0xD7, 0x9C, 0xD6, 0xBC, 0x41, 0x44,
-	0xD7, 0x9E, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA0,
-	0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA1, 0xD6, 0xBC,
+	0x81, 0xC9, 0x44, 0xCE, 0xB9, 0xCC, 0x81, 0xC9,
+	0x44, 0xCE, 0xBF, 0xCC, 0x81, 0xC9, 0x44, 0xCF,
+	0x85, 0xCC, 0x81, 0xC9, 0x44, 0xCF, 0x89, 0xCC,
+	0x81, 0xC9, 0x44, 0xD7, 0x90, 0xD6, 0xB7, 0x31,
+	0x44, 0xD7, 0x90, 0xD6, 0xB8, 0x35, 0x44, 0xD7,
+	0x90, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x91, 0xD6,
+	0xBC, 0x41, 0x44, 0xD7, 0x91, 0xD6, 0xBF, 0x49,
+	0x44, 0xD7, 0x92, 0xD6, 0xBC, 0x41, 0x44, 0xD7,
 	// Bytes 4400 - 443f
-	0x41, 0x44, 0xD7, 0xA3, 0xD6, 0xBC, 0x41, 0x44,
-	0xD7, 0xA4, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA4,
-	0xD6, 0xBF, 0x49, 0x44, 0xD7, 0xA6, 0xD6, 0xBC,
-	0x41, 0x44, 0xD7, 0xA7, 0xD6, 0xBC, 0x41, 0x44,
-	0xD7, 0xA8, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA9,
-	0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA9, 0xD7, 0x81,
-	0x4D, 0x44, 0xD7, 0xA9, 0xD7, 0x82, 0x51, 0x44,
-	0xD7, 0xAA, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xB2,
+	0x93, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x94, 0xD6,
+	0xBC, 0x41, 0x44, 0xD7, 0x95, 0xD6, 0xB9, 0x39,
+	0x44, 0xD7, 0x95, 0xD6, 0xBC, 0x41, 0x44, 0xD7,
+	0x96, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x98, 0xD6,
+	0xBC, 0x41, 0x44, 0xD7, 0x99, 0xD6, 0xB4, 0x25,
+	0x44, 0xD7, 0x99, 0xD6, 0xBC, 0x41, 0x44, 0xD7,
+	0x9A, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9B, 0xD6,
+	0xBC, 0x41, 0x44, 0xD7, 0x9B, 0xD6, 0xBF, 0x49,
 	// Bytes 4440 - 447f
-	0xD6, 0xB7, 0x31, 0x44, 0xD8, 0xA7, 0xD9, 0x8B,
-	0x59, 0x44, 0xD8, 0xA7, 0xD9, 0x93, 0xC9, 0x44,
-	0xD8, 0xA7, 0xD9, 0x94, 0xC9, 0x44, 0xD8, 0xA7,
-	0xD9, 0x95, 0xB5, 0x44, 0xD8, 0xB0, 0xD9, 0xB0,
-	0x79, 0x44, 0xD8, 0xB1, 0xD9, 0xB0, 0x79, 0x44,
-	0xD9, 0x80, 0xD9, 0x8B, 0x59, 0x44, 0xD9, 0x80,
-	0xD9, 0x8E, 0x65, 0x44, 0xD9, 0x80, 0xD9, 0x8F,
-	0x69, 0x44, 0xD9, 0x80, 0xD9, 0x90, 0x6D, 0x44,
+	0x44, 0xD7, 0x9C, 0xD6, 0xBC, 0x41, 0x44, 0xD7,
+	0x9E, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA0, 0xD6,
+	0xBC, 0x41, 0x44, 0xD7, 0xA1, 0xD6, 0xBC, 0x41,
+	0x44, 0xD7, 0xA3, 0xD6, 0xBC, 0x41, 0x44, 0xD7,
+	0xA4, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA4, 0xD6,
+	0xBF, 0x49, 0x44, 0xD7, 0xA6, 0xD6, 0xBC, 0x41,
+	0x44, 0xD7, 0xA7, 0xD6, 0xBC, 0x41, 0x44, 0xD7,
+	0xA8, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA9, 0xD6,
 	// Bytes 4480 - 44bf
-	0xD9, 0x80, 0xD9, 0x91, 0x71, 0x44, 0xD9, 0x80,
-	0xD9, 0x92, 0x75, 0x44, 0xD9, 0x87, 0xD9, 0xB0,
-	0x79, 0x44, 0xD9, 0x88, 0xD9, 0x94, 0xC9, 0x44,
-	0xD9, 0x89, 0xD9, 0xB0, 0x79, 0x44, 0xD9, 0x8A,
-	0xD9, 0x94, 0xC9, 0x44, 0xDB, 0x92, 0xD9, 0x94,
-	0xC9, 0x44, 0xDB, 0x95, 0xD9, 0x94, 0xC9, 0x45,
-	0x20, 0xCC, 0x88, 0xCC, 0x80, 0xCA, 0x45, 0x20,
-	0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x45, 0x20, 0xCC,
+	0xBC, 0x41, 0x44, 0xD7, 0xA9, 0xD7, 0x81, 0x4D,
+	0x44, 0xD7, 0xA9, 0xD7, 0x82, 0x51, 0x44, 0xD7,
+	0xAA, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xB2, 0xD6,
+	0xB7, 0x31, 0x44, 0xD8, 0xA7, 0xD9, 0x8B, 0x59,
+	0x44, 0xD8, 0xA7, 0xD9, 0x93, 0xC9, 0x44, 0xD8,
+	0xA7, 0xD9, 0x94, 0xC9, 0x44, 0xD8, 0xA7, 0xD9,
+	0x95, 0xB5, 0x44, 0xD8, 0xB0, 0xD9, 0xB0, 0x79,
+	0x44, 0xD8, 0xB1, 0xD9, 0xB0, 0x79, 0x44, 0xD9,
 	// Bytes 44c0 - 44ff
-	0x88, 0xCD, 0x82, 0xCA, 0x45, 0x20, 0xCC, 0x93,
-	0xCC, 0x80, 0xCA, 0x45, 0x20, 0xCC, 0x93, 0xCC,
-	0x81, 0xCA, 0x45, 0x20, 0xCC, 0x93, 0xCD, 0x82,
-	0xCA, 0x45, 0x20, 0xCC, 0x94, 0xCC, 0x80, 0xCA,
-	0x45, 0x20, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x45,
-	0x20, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x45, 0x20,
-	0xD9, 0x8C, 0xD9, 0x91, 0x72, 0x45, 0x20, 0xD9,
-	0x8D, 0xD9, 0x91, 0x72, 0x45, 0x20, 0xD9, 0x8E,
+	0x80, 0xD9, 0x8B, 0x59, 0x44, 0xD9, 0x80, 0xD9,
+	0x8E, 0x65, 0x44, 0xD9, 0x80, 0xD9, 0x8F, 0x69,
+	0x44, 0xD9, 0x80, 0xD9, 0x90, 0x6D, 0x44, 0xD9,
+	0x80, 0xD9, 0x91, 0x71, 0x44, 0xD9, 0x80, 0xD9,
+	0x92, 0x75, 0x44, 0xD9, 0x87, 0xD9, 0xB0, 0x79,
+	0x44, 0xD9, 0x88, 0xD9, 0x94, 0xC9, 0x44, 0xD9,
+	0x89, 0xD9, 0xB0, 0x79, 0x44, 0xD9, 0x8A, 0xD9,
+	0x94, 0xC9, 0x44, 0xDB, 0x92, 0xD9, 0x94, 0xC9,
 	// Bytes 4500 - 453f
-	0xD9, 0x91, 0x72, 0x45, 0x20, 0xD9, 0x8F, 0xD9,
-	0x91, 0x72, 0x45, 0x20, 0xD9, 0x90, 0xD9, 0x91,
-	0x72, 0x45, 0x20, 0xD9, 0x91, 0xD9, 0xB0, 0x7A,
-	0x45, 0xE2, 0xAB, 0x9D, 0xCC, 0xB8, 0x05, 0x46,
-	0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x46,
-	0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x46,
-	0xD7, 0xA9, 0xD6, 0xBC, 0xD7, 0x81, 0x4E, 0x46,
-	0xD7, 0xA9, 0xD6, 0xBC, 0xD7, 0x82, 0x52, 0x46,
+	0x44, 0xDB, 0x95, 0xD9, 0x94, 0xC9, 0x45, 0x20,
+	0xCC, 0x88, 0xCC, 0x80, 0xCA, 0x45, 0x20, 0xCC,
+	0x88, 0xCC, 0x81, 0xCA, 0x45, 0x20, 0xCC, 0x88,
+	0xCD, 0x82, 0xCA, 0x45, 0x20, 0xCC, 0x93, 0xCC,
+	0x80, 0xCA, 0x45, 0x20, 0xCC, 0x93, 0xCC, 0x81,
+	0xCA, 0x45, 0x20, 0xCC, 0x93, 0xCD, 0x82, 0xCA,
+	0x45, 0x20, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x45,
+	0x20, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x45, 0x20,
 	// Bytes 4540 - 457f
-	0xD9, 0x80, 0xD9, 0x8E, 0xD9, 0x91, 0x72, 0x46,
-	0xD9, 0x80, 0xD9, 0x8F, 0xD9, 0x91, 0x72, 0x46,
-	0xD9, 0x80, 0xD9, 0x90, 0xD9, 0x91, 0x72, 0x46,
-	0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xBC, 0x09, 0x46,
-	0xE0, 0xA4, 0x96, 0xE0, 0xA4, 0xBC, 0x09, 0x46,
-	0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBC, 0x09, 0x46,
-	0xE0, 0xA4, 0x9C, 0xE0, 0xA4, 0xBC, 0x09, 0x46,
-	0xE0, 0xA4, 0xA1, 0xE0, 0xA4, 0xBC, 0x09, 0x46,
+	0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x45, 0x20, 0xD9,
+	0x8C, 0xD9, 0x91, 0x72, 0x45, 0x20, 0xD9, 0x8D,
+	0xD9, 0x91, 0x72, 0x45, 0x20, 0xD9, 0x8E, 0xD9,
+	0x91, 0x72, 0x45, 0x20, 0xD9, 0x8F, 0xD9, 0x91,
+	0x72, 0x45, 0x20, 0xD9, 0x90, 0xD9, 0x91, 0x72,
+	0x45, 0x20, 0xD9, 0x91, 0xD9, 0xB0, 0x7A, 0x45,
+	0xE2, 0xAB, 0x9D, 0xCC, 0xB8, 0x05, 0x46, 0xCE,
+	0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x46, 0xCF,
 	// Bytes 4580 - 45bf
-	0xE0, 0xA4, 0xA2, 0xE0, 0xA4, 0xBC, 0x09, 0x46,
-	0xE0, 0xA4, 0xAB, 0xE0, 0xA4, 0xBC, 0x09, 0x46,
-	0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBC, 0x09, 0x46,
-	0xE0, 0xA6, 0xA1, 0xE0, 0xA6, 0xBC, 0x09, 0x46,
-	0xE0, 0xA6, 0xA2, 0xE0, 0xA6, 0xBC, 0x09, 0x46,
-	0xE0, 0xA6, 0xAF, 0xE0, 0xA6, 0xBC, 0x09, 0x46,
-	0xE0, 0xA8, 0x96, 0xE0, 0xA8, 0xBC, 0x09, 0x46,
-	0xE0, 0xA8, 0x97, 0xE0, 0xA8, 0xBC, 0x09, 0x46,
+	0x85, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x46, 0xD7,
+	0xA9, 0xD6, 0xBC, 0xD7, 0x81, 0x4E, 0x46, 0xD7,
+	0xA9, 0xD6, 0xBC, 0xD7, 0x82, 0x52, 0x46, 0xD9,
+	0x80, 0xD9, 0x8E, 0xD9, 0x91, 0x72, 0x46, 0xD9,
+	0x80, 0xD9, 0x8F, 0xD9, 0x91, 0x72, 0x46, 0xD9,
+	0x80, 0xD9, 0x90, 0xD9, 0x91, 0x72, 0x46, 0xE0,
+	0xA4, 0x95, 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0,
+	0xA4, 0x96, 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0,
 	// Bytes 45c0 - 45ff
-	0xE0, 0xA8, 0x9C, 0xE0, 0xA8, 0xBC, 0x09, 0x46,
-	0xE0, 0xA8, 0xAB, 0xE0, 0xA8, 0xBC, 0x09, 0x46,
-	0xE0, 0xA8, 0xB2, 0xE0, 0xA8, 0xBC, 0x09, 0x46,
-	0xE0, 0xA8, 0xB8, 0xE0, 0xA8, 0xBC, 0x09, 0x46,
-	0xE0, 0xAC, 0xA1, 0xE0, 0xAC, 0xBC, 0x09, 0x46,
-	0xE0, 0xAC, 0xA2, 0xE0, 0xAC, 0xBC, 0x09, 0x46,
-	0xE0, 0xBE, 0xB2, 0xE0, 0xBE, 0x80, 0x9D, 0x46,
-	0xE0, 0xBE, 0xB3, 0xE0, 0xBE, 0x80, 0x9D, 0x46,
+	0xA4, 0x97, 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0,
+	0xA4, 0x9C, 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0,
+	0xA4, 0xA1, 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0,
+	0xA4, 0xA2, 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0,
+	0xA4, 0xAB, 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0,
+	0xA4, 0xAF, 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0,
+	0xA6, 0xA1, 0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0,
+	0xA6, 0xA2, 0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0,
 	// Bytes 4600 - 463f
-	0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0x0D, 0x48,
-	0xF0, 0x9D, 0x85, 0x97, 0xF0, 0x9D, 0x85, 0xA5,
-	0xAD, 0x48, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D,
-	0x85, 0xA5, 0xAD, 0x48, 0xF0, 0x9D, 0x86, 0xB9,
-	0xF0, 0x9D, 0x85, 0xA5, 0xAD, 0x48, 0xF0, 0x9D,
-	0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xAD, 0x49,
-	0xE0, 0xBE, 0xB2, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE,
-	0x80, 0x9E, 0x49, 0xE0, 0xBE, 0xB3, 0xE0, 0xBD,
+	0xA6, 0xAF, 0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0,
+	0xA8, 0x96, 0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0,
+	0xA8, 0x97, 0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0,
+	0xA8, 0x9C, 0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0,
+	0xA8, 0xAB, 0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0,
+	0xA8, 0xB2, 0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0,
+	0xA8, 0xB8, 0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0,
+	0xAC, 0xA1, 0xE0, 0xAC, 0xBC, 0x09, 0x46, 0xE0,
 	// Bytes 4640 - 467f
-	0xB1, 0xE0, 0xBE, 0x80, 0x9E, 0x4C, 0xF0, 0x9D,
-	0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,
-	0x85, 0xAE, 0xAE, 0x4C, 0xF0, 0x9D, 0x85, 0x98,
-	0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF,
-	0xAE, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D,
-	0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB0, 0xAE, 0x4C,
-	0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5,
-	0xF0, 0x9D, 0x85, 0xB1, 0xAE, 0x4C, 0xF0, 0x9D,
+	0xAC, 0xA2, 0xE0, 0xAC, 0xBC, 0x09, 0x46, 0xE0,
+	0xBE, 0xB2, 0xE0, 0xBE, 0x80, 0x9D, 0x46, 0xE0,
+	0xBE, 0xB3, 0xE0, 0xBE, 0x80, 0x9D, 0x46, 0xE3,
+	0x83, 0x86, 0xE3, 0x82, 0x99, 0x0D, 0x48, 0xF0,
+	0x9D, 0x85, 0x97, 0xF0, 0x9D, 0x85, 0xA5, 0xAD,
+	0x48, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85,
+	0xA5, 0xAD, 0x48, 0xF0, 0x9D, 0x86, 0xB9, 0xF0,
+	0x9D, 0x85, 0xA5, 0xAD, 0x48, 0xF0, 0x9D, 0x86,
 	// Bytes 4680 - 46bf
-	0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,
-	0x85, 0xB2, 0xAE, 0x4C, 0xF0, 0x9D, 0x86, 0xB9,
-	0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE,
-	0xAE, 0x4C, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D,
-	0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE, 0x4C,
-	0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5,
-	0xF0, 0x9D, 0x85, 0xAE, 0xAE, 0x4C, 0xF0, 0x9D,
-	0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,
+	0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xAD, 0x49, 0xE0,
+	0xBE, 0xB2, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80,
+	0x9E, 0x49, 0xE0, 0xBE, 0xB3, 0xE0, 0xBD, 0xB1,
+	0xE0, 0xBE, 0x80, 0x9E, 0x4C, 0xF0, 0x9D, 0x85,
+	0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85,
+	0xAE, 0xAE, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0,
+	0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE,
+	0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85,
 	// Bytes 46c0 - 46ff
-	0x85, 0xAF, 0xAE, 0x83, 0x41, 0xCC, 0x82, 0xC9,
-	0x83, 0x41, 0xCC, 0x86, 0xC9, 0x83, 0x41, 0xCC,
-	0x87, 0xC9, 0x83, 0x41, 0xCC, 0x88, 0xC9, 0x83,
-	0x41, 0xCC, 0x8A, 0xC9, 0x83, 0x41, 0xCC, 0xA3,
-	0xB5, 0x83, 0x43, 0xCC, 0xA7, 0xA5, 0x83, 0x45,
-	0xCC, 0x82, 0xC9, 0x83, 0x45, 0xCC, 0x84, 0xC9,
-	0x83, 0x45, 0xCC, 0xA3, 0xB5, 0x83, 0x45, 0xCC,
-	0xA7, 0xA5, 0x83, 0x49, 0xCC, 0x88, 0xC9, 0x83,
+	0xA5, 0xF0, 0x9D, 0x85, 0xB0, 0xAE, 0x4C, 0xF0,
+	0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0,
+	0x9D, 0x85, 0xB1, 0xAE, 0x4C, 0xF0, 0x9D, 0x85,
+	0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85,
+	0xB2, 0xAE, 0x4C, 0xF0, 0x9D, 0x86, 0xB9, 0xF0,
+	0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xAE,
+	0x4C, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85,
+	0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE, 0x4C, 0xF0,
 	// Bytes 4700 - 473f
-	0x4C, 0xCC, 0xA3, 0xB5, 0x83, 0x4F, 0xCC, 0x82,
-	0xC9, 0x83, 0x4F, 0xCC, 0x83, 0xC9, 0x83, 0x4F,
-	0xCC, 0x84, 0xC9, 0x83, 0x4F, 0xCC, 0x87, 0xC9,
-	0x83, 0x4F, 0xCC, 0x88, 0xC9, 0x83, 0x4F, 0xCC,
-	0x9B, 0xAD, 0x83, 0x4F, 0xCC, 0xA3, 0xB5, 0x83,
-	0x4F, 0xCC, 0xA8, 0xA5, 0x83, 0x52, 0xCC, 0xA3,
-	0xB5, 0x83, 0x53, 0xCC, 0x81, 0xC9, 0x83, 0x53,
-	0xCC, 0x8C, 0xC9, 0x83, 0x53, 0xCC, 0xA3, 0xB5,
+	0x9D, 0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0,
+	0x9D, 0x85, 0xAE, 0xAE, 0x4C, 0xF0, 0x9D, 0x86,
+	0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85,
+	0xAF, 0xAE, 0x83, 0x41, 0xCC, 0x82, 0xC9, 0x83,
+	0x41, 0xCC, 0x86, 0xC9, 0x83, 0x41, 0xCC, 0x87,
+	0xC9, 0x83, 0x41, 0xCC, 0x88, 0xC9, 0x83, 0x41,
+	0xCC, 0x8A, 0xC9, 0x83, 0x41, 0xCC, 0xA3, 0xB5,
+	0x83, 0x43, 0xCC, 0xA7, 0xA5, 0x83, 0x45, 0xCC,
 	// Bytes 4740 - 477f
-	0x83, 0x55, 0xCC, 0x83, 0xC9, 0x83, 0x55, 0xCC,
-	0x84, 0xC9, 0x83, 0x55, 0xCC, 0x88, 0xC9, 0x83,
-	0x55, 0xCC, 0x9B, 0xAD, 0x83, 0x61, 0xCC, 0x82,
-	0xC9, 0x83, 0x61, 0xCC, 0x86, 0xC9, 0x83, 0x61,
-	0xCC, 0x87, 0xC9, 0x83, 0x61, 0xCC, 0x88, 0xC9,
-	0x83, 0x61, 0xCC, 0x8A, 0xC9, 0x83, 0x61, 0xCC,
-	0xA3, 0xB5, 0x83, 0x63, 0xCC, 0xA7, 0xA5, 0x83,
-	0x65, 0xCC, 0x82, 0xC9, 0x83, 0x65, 0xCC, 0x84,
+	0x82, 0xC9, 0x83, 0x45, 0xCC, 0x84, 0xC9, 0x83,
+	0x45, 0xCC, 0xA3, 0xB5, 0x83, 0x45, 0xCC, 0xA7,
+	0xA5, 0x83, 0x49, 0xCC, 0x88, 0xC9, 0x83, 0x4C,
+	0xCC, 0xA3, 0xB5, 0x83, 0x4F, 0xCC, 0x82, 0xC9,
+	0x83, 0x4F, 0xCC, 0x83, 0xC9, 0x83, 0x4F, 0xCC,
+	0x84, 0xC9, 0x83, 0x4F, 0xCC, 0x87, 0xC9, 0x83,
+	0x4F, 0xCC, 0x88, 0xC9, 0x83, 0x4F, 0xCC, 0x9B,
+	0xAD, 0x83, 0x4F, 0xCC, 0xA3, 0xB5, 0x83, 0x4F,
 	// Bytes 4780 - 47bf
-	0xC9, 0x83, 0x65, 0xCC, 0xA3, 0xB5, 0x83, 0x65,
-	0xCC, 0xA7, 0xA5, 0x83, 0x69, 0xCC, 0x88, 0xC9,
-	0x83, 0x6C, 0xCC, 0xA3, 0xB5, 0x83, 0x6F, 0xCC,
-	0x82, 0xC9, 0x83, 0x6F, 0xCC, 0x83, 0xC9, 0x83,
-	0x6F, 0xCC, 0x84, 0xC9, 0x83, 0x6F, 0xCC, 0x87,
-	0xC9, 0x83, 0x6F, 0xCC, 0x88, 0xC9, 0x83, 0x6F,
-	0xCC, 0x9B, 0xAD, 0x83, 0x6F, 0xCC, 0xA3, 0xB5,
-	0x83, 0x6F, 0xCC, 0xA8, 0xA5, 0x83, 0x72, 0xCC,
+	0xCC, 0xA8, 0xA5, 0x83, 0x52, 0xCC, 0xA3, 0xB5,
+	0x83, 0x53, 0xCC, 0x81, 0xC9, 0x83, 0x53, 0xCC,
+	0x8C, 0xC9, 0x83, 0x53, 0xCC, 0xA3, 0xB5, 0x83,
+	0x55, 0xCC, 0x83, 0xC9, 0x83, 0x55, 0xCC, 0x84,
+	0xC9, 0x83, 0x55, 0xCC, 0x88, 0xC9, 0x83, 0x55,
+	0xCC, 0x9B, 0xAD, 0x83, 0x61, 0xCC, 0x82, 0xC9,
+	0x83, 0x61, 0xCC, 0x86, 0xC9, 0x83, 0x61, 0xCC,
+	0x87, 0xC9, 0x83, 0x61, 0xCC, 0x88, 0xC9, 0x83,
 	// Bytes 47c0 - 47ff
-	0xA3, 0xB5, 0x83, 0x73, 0xCC, 0x81, 0xC9, 0x83,
-	0x73, 0xCC, 0x8C, 0xC9, 0x83, 0x73, 0xCC, 0xA3,
-	0xB5, 0x83, 0x75, 0xCC, 0x83, 0xC9, 0x83, 0x75,
-	0xCC, 0x84, 0xC9, 0x83, 0x75, 0xCC, 0x88, 0xC9,
-	0x83, 0x75, 0xCC, 0x9B, 0xAD, 0x84, 0xCE, 0x91,
-	0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x91, 0xCC, 0x94,
-	0xC9, 0x84, 0xCE, 0x95, 0xCC, 0x93, 0xC9, 0x84,
-	0xCE, 0x95, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0x97,
+	0x61, 0xCC, 0x8A, 0xC9, 0x83, 0x61, 0xCC, 0xA3,
+	0xB5, 0x83, 0x63, 0xCC, 0xA7, 0xA5, 0x83, 0x65,
+	0xCC, 0x82, 0xC9, 0x83, 0x65, 0xCC, 0x84, 0xC9,
+	0x83, 0x65, 0xCC, 0xA3, 0xB5, 0x83, 0x65, 0xCC,
+	0xA7, 0xA5, 0x83, 0x69, 0xCC, 0x88, 0xC9, 0x83,
+	0x6C, 0xCC, 0xA3, 0xB5, 0x83, 0x6F, 0xCC, 0x82,
+	0xC9, 0x83, 0x6F, 0xCC, 0x83, 0xC9, 0x83, 0x6F,
+	0xCC, 0x84, 0xC9, 0x83, 0x6F, 0xCC, 0x87, 0xC9,
 	// Bytes 4800 - 483f
-	0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x97, 0xCC, 0x94,
-	0xC9, 0x84, 0xCE, 0x99, 0xCC, 0x93, 0xC9, 0x84,
-	0xCE, 0x99, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0x9F,
-	0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x9F, 0xCC, 0x94,
-	0xC9, 0x84, 0xCE, 0xA5, 0xCC, 0x94, 0xC9, 0x84,
-	0xCE, 0xA9, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xA9,
-	0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xB1, 0xCC, 0x80,
-	0xC9, 0x84, 0xCE, 0xB1, 0xCC, 0x81, 0xC9, 0x84,
+	0x83, 0x6F, 0xCC, 0x88, 0xC9, 0x83, 0x6F, 0xCC,
+	0x9B, 0xAD, 0x83, 0x6F, 0xCC, 0xA3, 0xB5, 0x83,
+	0x6F, 0xCC, 0xA8, 0xA5, 0x83, 0x72, 0xCC, 0xA3,
+	0xB5, 0x83, 0x73, 0xCC, 0x81, 0xC9, 0x83, 0x73,
+	0xCC, 0x8C, 0xC9, 0x83, 0x73, 0xCC, 0xA3, 0xB5,
+	0x83, 0x75, 0xCC, 0x83, 0xC9, 0x83, 0x75, 0xCC,
+	0x84, 0xC9, 0x83, 0x75, 0xCC, 0x88, 0xC9, 0x83,
+	0x75, 0xCC, 0x9B, 0xAD, 0x84, 0xCE, 0x91, 0xCC,
 	// Bytes 4840 - 487f
-	0xCE, 0xB1, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB1,
-	0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xB1, 0xCD, 0x82,
-	0xC9, 0x84, 0xCE, 0xB5, 0xCC, 0x93, 0xC9, 0x84,
-	0xCE, 0xB5, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xB7,
-	0xCC, 0x80, 0xC9, 0x84, 0xCE, 0xB7, 0xCC, 0x81,
-	0xC9, 0x84, 0xCE, 0xB7, 0xCC, 0x93, 0xC9, 0x84,
-	0xCE, 0xB7, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xB7,
-	0xCD, 0x82, 0xC9, 0x84, 0xCE, 0xB9, 0xCC, 0x88,
+	0x93, 0xC9, 0x84, 0xCE, 0x91, 0xCC, 0x94, 0xC9,
+	0x84, 0xCE, 0x95, 0xCC, 0x93, 0xC9, 0x84, 0xCE,
+	0x95, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0x97, 0xCC,
+	0x93, 0xC9, 0x84, 0xCE, 0x97, 0xCC, 0x94, 0xC9,
+	0x84, 0xCE, 0x99, 0xCC, 0x93, 0xC9, 0x84, 0xCE,
+	0x99, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0x9F, 0xCC,
+	0x93, 0xC9, 0x84, 0xCE, 0x9F, 0xCC, 0x94, 0xC9,
+	0x84, 0xCE, 0xA5, 0xCC, 0x94, 0xC9, 0x84, 0xCE,
 	// Bytes 4880 - 48bf
-	0xC9, 0x84, 0xCE, 0xB9, 0xCC, 0x93, 0xC9, 0x84,
-	0xCE, 0xB9, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xBF,
-	0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xBF, 0xCC, 0x94,
-	0xC9, 0x84, 0xCF, 0x85, 0xCC, 0x88, 0xC9, 0x84,
-	0xCF, 0x85, 0xCC, 0x93, 0xC9, 0x84, 0xCF, 0x85,
-	0xCC, 0x94, 0xC9, 0x84, 0xCF, 0x89, 0xCC, 0x80,
-	0xC9, 0x84, 0xCF, 0x89, 0xCC, 0x81, 0xC9, 0x84,
-	0xCF, 0x89, 0xCC, 0x93, 0xC9, 0x84, 0xCF, 0x89,
+	0xA9, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xA9, 0xCC,
+	0x94, 0xC9, 0x84, 0xCE, 0xB1, 0xCC, 0x80, 0xC9,
+	0x84, 0xCE, 0xB1, 0xCC, 0x81, 0xC9, 0x84, 0xCE,
+	0xB1, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB1, 0xCC,
+	0x94, 0xC9, 0x84, 0xCE, 0xB1, 0xCD, 0x82, 0xC9,
+	0x84, 0xCE, 0xB5, 0xCC, 0x93, 0xC9, 0x84, 0xCE,
+	0xB5, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xB7, 0xCC,
+	0x80, 0xC9, 0x84, 0xCE, 0xB7, 0xCC, 0x81, 0xC9,
 	// Bytes 48c0 - 48ff
-	0xCC, 0x94, 0xC9, 0x84, 0xCF, 0x89, 0xCD, 0x82,
-	0xC9, 0x86, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80,
-	0xCA, 0x86, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x81,
-	0xCA, 0x86, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x82,
-	0xCA, 0x86, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80,
-	0xCA, 0x86, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81,
-	0xCA, 0x86, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x82,
-	0xCA, 0x86, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x80,
+	0x84, 0xCE, 0xB7, 0xCC, 0x93, 0xC9, 0x84, 0xCE,
+	0xB7, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xB7, 0xCD,
+	0x82, 0xC9, 0x84, 0xCE, 0xB9, 0xCC, 0x88, 0xC9,
+	0x84, 0xCE, 0xB9, 0xCC, 0x93, 0xC9, 0x84, 0xCE,
+	0xB9, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xBF, 0xCC,
+	0x93, 0xC9, 0x84, 0xCE, 0xBF, 0xCC, 0x94, 0xC9,
+	0x84, 0xCF, 0x85, 0xCC, 0x88, 0xC9, 0x84, 0xCF,
+	0x85, 0xCC, 0x93, 0xC9, 0x84, 0xCF, 0x85, 0xCC,
 	// Bytes 4900 - 493f
-	0xCA, 0x86, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x81,
-	0xCA, 0x86, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82,
-	0xCA, 0x86, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80,
-	0xCA, 0x86, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x81,
-	0xCA, 0x86, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x82,
-	0xCA, 0x86, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80,
-	0xCA, 0x86, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x81,
-	0xCA, 0x86, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x82,
+	0x94, 0xC9, 0x84, 0xCF, 0x89, 0xCC, 0x80, 0xC9,
+	0x84, 0xCF, 0x89, 0xCC, 0x81, 0xC9, 0x84, 0xCF,
+	0x89, 0xCC, 0x93, 0xC9, 0x84, 0xCF, 0x89, 0xCC,
+	0x94, 0xC9, 0x84, 0xCF, 0x89, 0xCD, 0x82, 0xC9,
+	0x86, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCA,
+	0x86, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x81, 0xCA,
+	0x86, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x82, 0xCA,
+	0x86, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCA,
 	// Bytes 4940 - 497f
-	0xCA, 0x86, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x80,
-	0xCA, 0x86, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81,
-	0xCA, 0x86, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82,
-	0xCA, 0x86, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x80,
-	0xCA, 0x86, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x81,
-	0xCA, 0x86, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82,
-	0xCA, 0x86, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x80,
-	0xCA, 0x86, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x81,
+	0x86, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCA,
+	0x86, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x82, 0xCA,
+	0x86, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCA,
+	0x86, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCA,
+	0x86, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCA,
+	0x86, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80, 0xCA,
+	0x86, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x81, 0xCA,
+	0x86, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCA,
 	// Bytes 4980 - 49bf
-	0xCA, 0x86, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82,
-	0xCA, 0x86, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80,
-	0xCA, 0x86, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x81,
-	0xCA, 0x86, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x82,
-	0xCA, 0x86, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x80,
-	0xCA, 0x86, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81,
-	0xCA, 0x86, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82,
-	0xCA, 0x86, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x80,
+	0x86, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCA,
+	0x86, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x81, 0xCA,
+	0x86, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xCA,
+	0x86, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCA,
+	0x86, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCA,
+	0x86, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82, 0xCA,
+	0x86, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xCA,
+	0x86, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCA,
 	// Bytes 49c0 - 49ff
-	0xCA, 0x86, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x81,
-	0xCA, 0x86, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82,
-	0xCA, 0x86, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80,
-	0xCA, 0x86, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x81,
-	0xCA, 0x86, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x82,
-	0xCA, 0x42, 0xCC, 0x80, 0xC9, 0x32, 0x42, 0xCC,
-	0x81, 0xC9, 0x32, 0x42, 0xCC, 0x93, 0xC9, 0x32,
-	0x44, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x32, 0x43,
+	0x86, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCA,
+	0x86, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x80, 0xCA,
+	0x86, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCA,
+	0x86, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCA,
+	0x86, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCA,
+	0x86, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x81, 0xCA,
+	0x86, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCA,
+	0x86, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCA,
 	// Bytes 4a00 - 4a3f
-	0xE3, 0x82, 0x99, 0x0D, 0x03, 0x43, 0xE3, 0x82,
-	0x9A, 0x0D, 0x03, 0x46, 0xE0, 0xBD, 0xB1, 0xE0,
-	0xBD, 0xB2, 0x9E, 0x26, 0x46, 0xE0, 0xBD, 0xB1,
-	0xE0, 0xBD, 0xB4, 0xA2, 0x26, 0x46, 0xE0, 0xBD,
-	0xB1, 0xE0, 0xBE, 0x80, 0x9E, 0x26, 0x00, 0x01,
+	0x86, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCA,
+	0x86, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82, 0xCA,
+	0x86, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x80, 0xCA,
+	0x86, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCA,
+	0x86, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCA,
+	0x86, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80, 0xCA,
+	0x86, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCA,
+	0x86, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCA,
+	// Bytes 4a40 - 4a7f
+	0x42, 0xCC, 0x80, 0xC9, 0x32, 0x42, 0xCC, 0x81,
+	0xC9, 0x32, 0x42, 0xCC, 0x93, 0xC9, 0x32, 0x44,
+	0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x32, 0x43, 0xE3,
+	0x82, 0x99, 0x0D, 0x03, 0x43, 0xE3, 0x82, 0x9A,
+	0x0D, 0x03, 0x46, 0xE0, 0xBD, 0xB1, 0xE0, 0xBD,
+	0xB2, 0x9E, 0x26, 0x46, 0xE0, 0xBD, 0xB1, 0xE0,
+	0xBD, 0xB4, 0xA2, 0x26, 0x46, 0xE0, 0xBD, 0xB1,
+	0xE0, 0xBE, 0x80, 0x9E, 0x26, 0x00, 0x01,
 }
 
 // lookup returns the trie value for the first UTF-8 encoding in s and
@@ -2880,7 +2890,7 @@
 	return 0
 }
 
-// nfcTrie. Total size: 10176 bytes (9.94 KiB). Checksum: d7c74933ce923a3f.
+// nfcTrie. Total size: 10238 bytes (10.00 KiB). Checksum: e7431f5fa972f822.
 type nfcTrie struct{}
 
 func newNfcTrie(i int) *nfcTrie {
@@ -2916,63 +2926,63 @@
 	0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,
 	// Block 0x2, offset 0x80
 	// Block 0x3, offset 0xc0
-	0xc0: 0x2faa, 0xc1: 0x2faf, 0xc2: 0x46c3, 0xc3: 0x2fb4, 0xc4: 0x46d2, 0xc5: 0x46d7,
-	0xc6: 0xa000, 0xc7: 0x46e1, 0xc8: 0x301d, 0xc9: 0x3022, 0xca: 0x46e6, 0xcb: 0x3036,
-	0xcc: 0x30a9, 0xcd: 0x30ae, 0xce: 0x30b3, 0xcf: 0x46fa, 0xd1: 0x313f,
-	0xd2: 0x3162, 0xd3: 0x3167, 0xd4: 0x4704, 0xd5: 0x4709, 0xd6: 0x4718,
-	0xd8: 0xa000, 0xd9: 0x31ee, 0xda: 0x31f3, 0xdb: 0x31f8, 0xdc: 0x474a, 0xdd: 0x3270,
-	0xe0: 0x32b6, 0xe1: 0x32bb, 0xe2: 0x4754, 0xe3: 0x32c0,
-	0xe4: 0x4763, 0xe5: 0x4768, 0xe6: 0xa000, 0xe7: 0x4772, 0xe8: 0x3329, 0xe9: 0x332e,
-	0xea: 0x4777, 0xeb: 0x3342, 0xec: 0x33ba, 0xed: 0x33bf, 0xee: 0x33c4, 0xef: 0x478b,
-	0xf1: 0x3450, 0xf2: 0x3473, 0xf3: 0x3478, 0xf4: 0x4795, 0xf5: 0x479a,
-	0xf6: 0x47a9, 0xf8: 0xa000, 0xf9: 0x3504, 0xfa: 0x3509, 0xfb: 0x350e,
-	0xfc: 0x47db, 0xfd: 0x358b, 0xff: 0x35a4,
+	0xc0: 0x2f6b, 0xc1: 0x2f70, 0xc2: 0x471a, 0xc3: 0x2f75, 0xc4: 0x4729, 0xc5: 0x472e,
+	0xc6: 0xa000, 0xc7: 0x4738, 0xc8: 0x2fde, 0xc9: 0x2fe3, 0xca: 0x473d, 0xcb: 0x2ff7,
+	0xcc: 0x306a, 0xcd: 0x306f, 0xce: 0x3074, 0xcf: 0x4751, 0xd1: 0x3100,
+	0xd2: 0x3123, 0xd3: 0x3128, 0xd4: 0x475b, 0xd5: 0x4760, 0xd6: 0x476f,
+	0xd8: 0xa000, 0xd9: 0x31af, 0xda: 0x31b4, 0xdb: 0x31b9, 0xdc: 0x47a1, 0xdd: 0x3231,
+	0xe0: 0x3277, 0xe1: 0x327c, 0xe2: 0x47ab, 0xe3: 0x3281,
+	0xe4: 0x47ba, 0xe5: 0x47bf, 0xe6: 0xa000, 0xe7: 0x47c9, 0xe8: 0x32ea, 0xe9: 0x32ef,
+	0xea: 0x47ce, 0xeb: 0x3303, 0xec: 0x337b, 0xed: 0x3380, 0xee: 0x3385, 0xef: 0x47e2,
+	0xf1: 0x3411, 0xf2: 0x3434, 0xf3: 0x3439, 0xf4: 0x47ec, 0xf5: 0x47f1,
+	0xf6: 0x4800, 0xf8: 0xa000, 0xf9: 0x34c5, 0xfa: 0x34ca, 0xfb: 0x34cf,
+	0xfc: 0x4832, 0xfd: 0x354c, 0xff: 0x3565,
 	// Block 0x4, offset 0x100
-	0x100: 0x2fb9, 0x101: 0x32c5, 0x102: 0x46c8, 0x103: 0x4759, 0x104: 0x2fd7, 0x105: 0x32e3,
-	0x106: 0x2feb, 0x107: 0x32f7, 0x108: 0x2ff0, 0x109: 0x32fc, 0x10a: 0x2ff5, 0x10b: 0x3301,
-	0x10c: 0x2ffa, 0x10d: 0x3306, 0x10e: 0x3004, 0x10f: 0x3310,
-	0x112: 0x46eb, 0x113: 0x477c, 0x114: 0x302c, 0x115: 0x3338, 0x116: 0x3031, 0x117: 0x333d,
-	0x118: 0x304f, 0x119: 0x335b, 0x11a: 0x3040, 0x11b: 0x334c, 0x11c: 0x3068, 0x11d: 0x3374,
-	0x11e: 0x3072, 0x11f: 0x337e, 0x120: 0x3077, 0x121: 0x3383, 0x122: 0x3081, 0x123: 0x338d,
-	0x124: 0x3086, 0x125: 0x3392, 0x128: 0x30b8, 0x129: 0x33c9,
-	0x12a: 0x30bd, 0x12b: 0x33ce, 0x12c: 0x30c2, 0x12d: 0x33d3, 0x12e: 0x30e5, 0x12f: 0x33f1,
-	0x130: 0x30c7, 0x134: 0x30ef, 0x135: 0x33fb,
-	0x136: 0x3103, 0x137: 0x3414, 0x139: 0x310d, 0x13a: 0x341e, 0x13b: 0x3117,
-	0x13c: 0x3428, 0x13d: 0x3112, 0x13e: 0x3423,
+	0x100: 0x2f7a, 0x101: 0x3286, 0x102: 0x471f, 0x103: 0x47b0, 0x104: 0x2f98, 0x105: 0x32a4,
+	0x106: 0x2fac, 0x107: 0x32b8, 0x108: 0x2fb1, 0x109: 0x32bd, 0x10a: 0x2fb6, 0x10b: 0x32c2,
+	0x10c: 0x2fbb, 0x10d: 0x32c7, 0x10e: 0x2fc5, 0x10f: 0x32d1,
+	0x112: 0x4742, 0x113: 0x47d3, 0x114: 0x2fed, 0x115: 0x32f9, 0x116: 0x2ff2, 0x117: 0x32fe,
+	0x118: 0x3010, 0x119: 0x331c, 0x11a: 0x3001, 0x11b: 0x330d, 0x11c: 0x3029, 0x11d: 0x3335,
+	0x11e: 0x3033, 0x11f: 0x333f, 0x120: 0x3038, 0x121: 0x3344, 0x122: 0x3042, 0x123: 0x334e,
+	0x124: 0x3047, 0x125: 0x3353, 0x128: 0x3079, 0x129: 0x338a,
+	0x12a: 0x307e, 0x12b: 0x338f, 0x12c: 0x3083, 0x12d: 0x3394, 0x12e: 0x30a6, 0x12f: 0x33b2,
+	0x130: 0x3088, 0x134: 0x30b0, 0x135: 0x33bc,
+	0x136: 0x30c4, 0x137: 0x33d5, 0x139: 0x30ce, 0x13a: 0x33df, 0x13b: 0x30d8,
+	0x13c: 0x33e9, 0x13d: 0x30d3, 0x13e: 0x33e4,
 	// Block 0x5, offset 0x140
-	0x143: 0x313a, 0x144: 0x344b, 0x145: 0x3153,
-	0x146: 0x3464, 0x147: 0x3149, 0x148: 0x345a,
-	0x14c: 0x470e, 0x14d: 0x479f, 0x14e: 0x316c, 0x14f: 0x347d, 0x150: 0x3176, 0x151: 0x3487,
-	0x154: 0x3194, 0x155: 0x34a5, 0x156: 0x31ad, 0x157: 0x34be,
-	0x158: 0x319e, 0x159: 0x34af, 0x15a: 0x4731, 0x15b: 0x47c2, 0x15c: 0x31b7, 0x15d: 0x34c8,
-	0x15e: 0x31c6, 0x15f: 0x34d7, 0x160: 0x4736, 0x161: 0x47c7, 0x162: 0x31df, 0x163: 0x34f5,
-	0x164: 0x31d0, 0x165: 0x34e6, 0x168: 0x4740, 0x169: 0x47d1,
-	0x16a: 0x4745, 0x16b: 0x47d6, 0x16c: 0x31fd, 0x16d: 0x3513, 0x16e: 0x3207, 0x16f: 0x351d,
-	0x170: 0x320c, 0x171: 0x3522, 0x172: 0x322a, 0x173: 0x3540, 0x174: 0x324d, 0x175: 0x3563,
-	0x176: 0x3275, 0x177: 0x3590, 0x178: 0x3289, 0x179: 0x3298, 0x17a: 0x35b8, 0x17b: 0x32a2,
-	0x17c: 0x35c2, 0x17d: 0x32a7, 0x17e: 0x35c7, 0x17f: 0xa000,
+	0x143: 0x30fb, 0x144: 0x340c, 0x145: 0x3114,
+	0x146: 0x3425, 0x147: 0x310a, 0x148: 0x341b,
+	0x14c: 0x4765, 0x14d: 0x47f6, 0x14e: 0x312d, 0x14f: 0x343e, 0x150: 0x3137, 0x151: 0x3448,
+	0x154: 0x3155, 0x155: 0x3466, 0x156: 0x316e, 0x157: 0x347f,
+	0x158: 0x315f, 0x159: 0x3470, 0x15a: 0x4788, 0x15b: 0x4819, 0x15c: 0x3178, 0x15d: 0x3489,
+	0x15e: 0x3187, 0x15f: 0x3498, 0x160: 0x478d, 0x161: 0x481e, 0x162: 0x31a0, 0x163: 0x34b6,
+	0x164: 0x3191, 0x165: 0x34a7, 0x168: 0x4797, 0x169: 0x4828,
+	0x16a: 0x479c, 0x16b: 0x482d, 0x16c: 0x31be, 0x16d: 0x34d4, 0x16e: 0x31c8, 0x16f: 0x34de,
+	0x170: 0x31cd, 0x171: 0x34e3, 0x172: 0x31eb, 0x173: 0x3501, 0x174: 0x320e, 0x175: 0x3524,
+	0x176: 0x3236, 0x177: 0x3551, 0x178: 0x324a, 0x179: 0x3259, 0x17a: 0x3579, 0x17b: 0x3263,
+	0x17c: 0x3583, 0x17d: 0x3268, 0x17e: 0x3588, 0x17f: 0xa000,
 	// Block 0x6, offset 0x180
 	0x184: 0x8100, 0x185: 0x8100,
 	0x186: 0x8100,
-	0x18d: 0x2fc3, 0x18e: 0x32cf, 0x18f: 0x30d1, 0x190: 0x33dd, 0x191: 0x317b,
-	0x192: 0x348c, 0x193: 0x3211, 0x194: 0x3527, 0x195: 0x3a0a, 0x196: 0x3b99, 0x197: 0x3a03,
-	0x198: 0x3b92, 0x199: 0x3a11, 0x19a: 0x3ba0, 0x19b: 0x39fc, 0x19c: 0x3b8b,
-	0x19e: 0x38eb, 0x19f: 0x3a7a, 0x1a0: 0x38e4, 0x1a1: 0x3a73, 0x1a2: 0x35ee, 0x1a3: 0x3600,
-	0x1a6: 0x307c, 0x1a7: 0x3388, 0x1a8: 0x30f9, 0x1a9: 0x340a,
-	0x1aa: 0x4727, 0x1ab: 0x47b8, 0x1ac: 0x39cb, 0x1ad: 0x3b5a, 0x1ae: 0x3612, 0x1af: 0x3618,
-	0x1b0: 0x3400, 0x1b4: 0x3063, 0x1b5: 0x336f,
-	0x1b8: 0x3135, 0x1b9: 0x3446, 0x1ba: 0x38f2, 0x1bb: 0x3a81,
-	0x1bc: 0x35e8, 0x1bd: 0x35fa, 0x1be: 0x35f4, 0x1bf: 0x3606,
+	0x18d: 0x2f84, 0x18e: 0x3290, 0x18f: 0x3092, 0x190: 0x339e, 0x191: 0x313c,
+	0x192: 0x344d, 0x193: 0x31d2, 0x194: 0x34e8, 0x195: 0x39cb, 0x196: 0x3b5a, 0x197: 0x39c4,
+	0x198: 0x3b53, 0x199: 0x39d2, 0x19a: 0x3b61, 0x19b: 0x39bd, 0x19c: 0x3b4c,
+	0x19e: 0x38ac, 0x19f: 0x3a3b, 0x1a0: 0x38a5, 0x1a1: 0x3a34, 0x1a2: 0x35af, 0x1a3: 0x35c1,
+	0x1a6: 0x303d, 0x1a7: 0x3349, 0x1a8: 0x30ba, 0x1a9: 0x33cb,
+	0x1aa: 0x477e, 0x1ab: 0x480f, 0x1ac: 0x398c, 0x1ad: 0x3b1b, 0x1ae: 0x35d3, 0x1af: 0x35d9,
+	0x1b0: 0x33c1, 0x1b4: 0x3024, 0x1b5: 0x3330,
+	0x1b8: 0x30f6, 0x1b9: 0x3407, 0x1ba: 0x38b3, 0x1bb: 0x3a42,
+	0x1bc: 0x35a9, 0x1bd: 0x35bb, 0x1be: 0x35b5, 0x1bf: 0x35c7,
 	// Block 0x7, offset 0x1c0
-	0x1c0: 0x2fc8, 0x1c1: 0x32d4, 0x1c2: 0x2fcd, 0x1c3: 0x32d9, 0x1c4: 0x3045, 0x1c5: 0x3351,
-	0x1c6: 0x304a, 0x1c7: 0x3356, 0x1c8: 0x30d6, 0x1c9: 0x33e2, 0x1ca: 0x30db, 0x1cb: 0x33e7,
-	0x1cc: 0x3180, 0x1cd: 0x3491, 0x1ce: 0x3185, 0x1cf: 0x3496, 0x1d0: 0x31a3, 0x1d1: 0x34b4,
-	0x1d2: 0x31a8, 0x1d3: 0x34b9, 0x1d4: 0x3216, 0x1d5: 0x352c, 0x1d6: 0x321b, 0x1d7: 0x3531,
-	0x1d8: 0x31c1, 0x1d9: 0x34d2, 0x1da: 0x31da, 0x1db: 0x34f0,
-	0x1de: 0x3095, 0x1df: 0x33a1,
-	0x1e6: 0x46cd, 0x1e7: 0x475e, 0x1e8: 0x46f5, 0x1e9: 0x4786,
-	0x1ea: 0x399a, 0x1eb: 0x3b29, 0x1ec: 0x3977, 0x1ed: 0x3b06, 0x1ee: 0x4713, 0x1ef: 0x47a4,
-	0x1f0: 0x3993, 0x1f1: 0x3b22, 0x1f2: 0x327f, 0x1f3: 0x359a,
+	0x1c0: 0x2f89, 0x1c1: 0x3295, 0x1c2: 0x2f8e, 0x1c3: 0x329a, 0x1c4: 0x3006, 0x1c5: 0x3312,
+	0x1c6: 0x300b, 0x1c7: 0x3317, 0x1c8: 0x3097, 0x1c9: 0x33a3, 0x1ca: 0x309c, 0x1cb: 0x33a8,
+	0x1cc: 0x3141, 0x1cd: 0x3452, 0x1ce: 0x3146, 0x1cf: 0x3457, 0x1d0: 0x3164, 0x1d1: 0x3475,
+	0x1d2: 0x3169, 0x1d3: 0x347a, 0x1d4: 0x31d7, 0x1d5: 0x34ed, 0x1d6: 0x31dc, 0x1d7: 0x34f2,
+	0x1d8: 0x3182, 0x1d9: 0x3493, 0x1da: 0x319b, 0x1db: 0x34b1,
+	0x1de: 0x3056, 0x1df: 0x3362,
+	0x1e6: 0x4724, 0x1e7: 0x47b5, 0x1e8: 0x474c, 0x1e9: 0x47dd,
+	0x1ea: 0x395b, 0x1eb: 0x3aea, 0x1ec: 0x3938, 0x1ed: 0x3ac7, 0x1ee: 0x476a, 0x1ef: 0x47fb,
+	0x1f0: 0x3954, 0x1f1: 0x3ae3, 0x1f2: 0x3240, 0x1f3: 0x355b,
 	// Block 0x8, offset 0x200
 	0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132,
 	0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932,
@@ -2986,7 +2996,7 @@
 	0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d,
 	0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132,
 	// Block 0x9, offset 0x240
-	0x240: 0x49e9, 0x241: 0x49ee, 0x242: 0x9932, 0x243: 0x49f3, 0x244: 0x49f8, 0x245: 0x9936,
+	0x240: 0x4a40, 0x241: 0x4a45, 0x242: 0x9932, 0x243: 0x4a4a, 0x244: 0x4a4f, 0x245: 0x9936,
 	0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132,
 	0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132,
 	0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132,
@@ -2998,39 +3008,39 @@
 	0x27a: 0x8100,
 	0x27e: 0x0037,
 	// Block 0xa, offset 0x280
-	0x284: 0x8100, 0x285: 0x35dc,
-	0x286: 0x3624, 0x287: 0x00ce, 0x288: 0x3642, 0x289: 0x364e, 0x28a: 0x3660,
-	0x28c: 0x367e, 0x28e: 0x3690, 0x28f: 0x36ae, 0x290: 0x3e43, 0x291: 0xa000,
+	0x284: 0x8100, 0x285: 0x359d,
+	0x286: 0x35e5, 0x287: 0x00ce, 0x288: 0x3603, 0x289: 0x360f, 0x28a: 0x3621,
+	0x28c: 0x363f, 0x28e: 0x3651, 0x28f: 0x366f, 0x290: 0x3e04, 0x291: 0xa000,
 	0x295: 0xa000, 0x297: 0xa000,
 	0x299: 0xa000,
 	0x29f: 0xa000, 0x2a1: 0xa000,
 	0x2a5: 0xa000, 0x2a9: 0xa000,
-	0x2aa: 0x3672, 0x2ab: 0x36a2, 0x2ac: 0x4839, 0x2ad: 0x36d2, 0x2ae: 0x4863, 0x2af: 0x36e4,
-	0x2b0: 0x3eab, 0x2b1: 0xa000, 0x2b5: 0xa000,
+	0x2aa: 0x3633, 0x2ab: 0x3663, 0x2ac: 0x4890, 0x2ad: 0x3693, 0x2ae: 0x48ba, 0x2af: 0x36a5,
+	0x2b0: 0x3e6c, 0x2b1: 0xa000, 0x2b5: 0xa000,
 	0x2b7: 0xa000, 0x2b9: 0xa000,
 	0x2bf: 0xa000,
 	// Block 0xb, offset 0x2c0
-	0x2c0: 0x375c, 0x2c1: 0x3768, 0x2c3: 0x3756,
-	0x2c6: 0xa000, 0x2c7: 0x3744,
-	0x2cc: 0x3798, 0x2cd: 0x3780, 0x2ce: 0x37aa, 0x2d0: 0xa000,
+	0x2c0: 0x371d, 0x2c1: 0x3729, 0x2c3: 0x3717,
+	0x2c6: 0xa000, 0x2c7: 0x3705,
+	0x2cc: 0x3759, 0x2cd: 0x3741, 0x2ce: 0x376b, 0x2d0: 0xa000,
 	0x2d3: 0xa000, 0x2d5: 0xa000, 0x2d6: 0xa000, 0x2d7: 0xa000,
-	0x2d8: 0xa000, 0x2d9: 0x378c, 0x2da: 0xa000,
+	0x2d8: 0xa000, 0x2d9: 0x374d, 0x2da: 0xa000,
 	0x2de: 0xa000, 0x2e3: 0xa000,
 	0x2e7: 0xa000,
 	0x2eb: 0xa000, 0x2ed: 0xa000,
 	0x2f0: 0xa000, 0x2f3: 0xa000, 0x2f5: 0xa000,
-	0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x3810, 0x2fa: 0xa000,
+	0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x37d1, 0x2fa: 0xa000,
 	0x2fe: 0xa000,
 	// Block 0xc, offset 0x300
-	0x301: 0x376e, 0x302: 0x37f2,
-	0x310: 0x374a, 0x311: 0x37ce,
-	0x312: 0x3750, 0x313: 0x37d4, 0x316: 0x3762, 0x317: 0x37e6,
-	0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x3864, 0x31b: 0x386a, 0x31c: 0x3774, 0x31d: 0x37f8,
-	0x31e: 0x377a, 0x31f: 0x37fe, 0x322: 0x3786, 0x323: 0x380a,
-	0x324: 0x3792, 0x325: 0x3816, 0x326: 0x379e, 0x327: 0x3822, 0x328: 0xa000, 0x329: 0xa000,
-	0x32a: 0x3870, 0x32b: 0x3876, 0x32c: 0x37c8, 0x32d: 0x384c, 0x32e: 0x37a4, 0x32f: 0x3828,
-	0x330: 0x37b0, 0x331: 0x3834, 0x332: 0x37b6, 0x333: 0x383a, 0x334: 0x37bc, 0x335: 0x3840,
-	0x338: 0x37c2, 0x339: 0x3846,
+	0x301: 0x372f, 0x302: 0x37b3,
+	0x310: 0x370b, 0x311: 0x378f,
+	0x312: 0x3711, 0x313: 0x3795, 0x316: 0x3723, 0x317: 0x37a7,
+	0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x3825, 0x31b: 0x382b, 0x31c: 0x3735, 0x31d: 0x37b9,
+	0x31e: 0x373b, 0x31f: 0x37bf, 0x322: 0x3747, 0x323: 0x37cb,
+	0x324: 0x3753, 0x325: 0x37d7, 0x326: 0x375f, 0x327: 0x37e3, 0x328: 0xa000, 0x329: 0xa000,
+	0x32a: 0x3831, 0x32b: 0x3837, 0x32c: 0x3789, 0x32d: 0x380d, 0x32e: 0x3765, 0x32f: 0x37e9,
+	0x330: 0x3771, 0x331: 0x37f5, 0x332: 0x3777, 0x333: 0x37fb, 0x334: 0x377d, 0x335: 0x3801,
+	0x338: 0x3783, 0x339: 0x3807,
 	// Block 0xd, offset 0x340
 	0x351: 0x812d,
 	0x352: 0x8132, 0x353: 0x8132, 0x354: 0x8132, 0x355: 0x8132, 0x356: 0x812d, 0x357: 0x8132,
@@ -3050,348 +3060,348 @@
 	0x3b0: 0x811e,
 	// Block 0xf, offset 0x3c0
 	0x3c5: 0xa000,
-	0x3c6: 0x1958, 0x3c7: 0xa000, 0x3c8: 0x195f, 0x3c9: 0xa000, 0x3ca: 0x1966, 0x3cb: 0xa000,
-	0x3cc: 0x196d, 0x3cd: 0xa000, 0x3ce: 0x1974, 0x3d1: 0xa000,
-	0x3d2: 0x197b,
+	0x3c6: 0x2d22, 0x3c7: 0xa000, 0x3c8: 0x2d2a, 0x3c9: 0xa000, 0x3ca: 0x2d32, 0x3cb: 0xa000,
+	0x3cc: 0x2d3a, 0x3cd: 0xa000, 0x3ce: 0x2d42, 0x3d1: 0xa000,
+	0x3d2: 0x2d4a,
 	0x3f4: 0x8102, 0x3f5: 0x9900,
-	0x3fa: 0xa000, 0x3fb: 0x1982,
-	0x3fc: 0xa000, 0x3fd: 0x1989, 0x3fe: 0xa000, 0x3ff: 0xa000,
+	0x3fa: 0xa000, 0x3fb: 0x2d52,
+	0x3fc: 0xa000, 0x3fd: 0x2d5a, 0x3fe: 0xa000, 0x3ff: 0xa000,
 	// Block 0x10, offset 0x400
-	0x400: 0x2fd2, 0x401: 0x32de, 0x402: 0x2fdc, 0x403: 0x32e8, 0x404: 0x2fe1, 0x405: 0x32ed,
-	0x406: 0x2fe6, 0x407: 0x32f2, 0x408: 0x3907, 0x409: 0x3a96, 0x40a: 0x2fff, 0x40b: 0x330b,
-	0x40c: 0x3009, 0x40d: 0x3315, 0x40e: 0x3018, 0x40f: 0x3324, 0x410: 0x300e, 0x411: 0x331a,
-	0x412: 0x3013, 0x413: 0x331f, 0x414: 0x392a, 0x415: 0x3ab9, 0x416: 0x3931, 0x417: 0x3ac0,
-	0x418: 0x3054, 0x419: 0x3360, 0x41a: 0x3059, 0x41b: 0x3365, 0x41c: 0x393f, 0x41d: 0x3ace,
-	0x41e: 0x305e, 0x41f: 0x336a, 0x420: 0x306d, 0x421: 0x3379, 0x422: 0x308b, 0x423: 0x3397,
-	0x424: 0x309a, 0x425: 0x33a6, 0x426: 0x3090, 0x427: 0x339c, 0x428: 0x309f, 0x429: 0x33ab,
-	0x42a: 0x30a4, 0x42b: 0x33b0, 0x42c: 0x30ea, 0x42d: 0x33f6, 0x42e: 0x3946, 0x42f: 0x3ad5,
-	0x430: 0x30f4, 0x431: 0x3405, 0x432: 0x30fe, 0x433: 0x340f, 0x434: 0x3108, 0x435: 0x3419,
-	0x436: 0x46ff, 0x437: 0x4790, 0x438: 0x394d, 0x439: 0x3adc, 0x43a: 0x3121, 0x43b: 0x3432,
-	0x43c: 0x311c, 0x43d: 0x342d, 0x43e: 0x3126, 0x43f: 0x3437,
+	0x400: 0x2f93, 0x401: 0x329f, 0x402: 0x2f9d, 0x403: 0x32a9, 0x404: 0x2fa2, 0x405: 0x32ae,
+	0x406: 0x2fa7, 0x407: 0x32b3, 0x408: 0x38c8, 0x409: 0x3a57, 0x40a: 0x2fc0, 0x40b: 0x32cc,
+	0x40c: 0x2fca, 0x40d: 0x32d6, 0x40e: 0x2fd9, 0x40f: 0x32e5, 0x410: 0x2fcf, 0x411: 0x32db,
+	0x412: 0x2fd4, 0x413: 0x32e0, 0x414: 0x38eb, 0x415: 0x3a7a, 0x416: 0x38f2, 0x417: 0x3a81,
+	0x418: 0x3015, 0x419: 0x3321, 0x41a: 0x301a, 0x41b: 0x3326, 0x41c: 0x3900, 0x41d: 0x3a8f,
+	0x41e: 0x301f, 0x41f: 0x332b, 0x420: 0x302e, 0x421: 0x333a, 0x422: 0x304c, 0x423: 0x3358,
+	0x424: 0x305b, 0x425: 0x3367, 0x426: 0x3051, 0x427: 0x335d, 0x428: 0x3060, 0x429: 0x336c,
+	0x42a: 0x3065, 0x42b: 0x3371, 0x42c: 0x30ab, 0x42d: 0x33b7, 0x42e: 0x3907, 0x42f: 0x3a96,
+	0x430: 0x30b5, 0x431: 0x33c6, 0x432: 0x30bf, 0x433: 0x33d0, 0x434: 0x30c9, 0x435: 0x33da,
+	0x436: 0x4756, 0x437: 0x47e7, 0x438: 0x390e, 0x439: 0x3a9d, 0x43a: 0x30e2, 0x43b: 0x33f3,
+	0x43c: 0x30dd, 0x43d: 0x33ee, 0x43e: 0x30e7, 0x43f: 0x33f8,
 	// Block 0x11, offset 0x440
-	0x440: 0x312b, 0x441: 0x343c, 0x442: 0x3130, 0x443: 0x3441, 0x444: 0x3144, 0x445: 0x3455,
-	0x446: 0x314e, 0x447: 0x345f, 0x448: 0x315d, 0x449: 0x346e, 0x44a: 0x3158, 0x44b: 0x3469,
-	0x44c: 0x3970, 0x44d: 0x3aff, 0x44e: 0x397e, 0x44f: 0x3b0d, 0x450: 0x3985, 0x451: 0x3b14,
-	0x452: 0x398c, 0x453: 0x3b1b, 0x454: 0x318a, 0x455: 0x349b, 0x456: 0x318f, 0x457: 0x34a0,
-	0x458: 0x3199, 0x459: 0x34aa, 0x45a: 0x472c, 0x45b: 0x47bd, 0x45c: 0x39d2, 0x45d: 0x3b61,
-	0x45e: 0x31b2, 0x45f: 0x34c3, 0x460: 0x31bc, 0x461: 0x34cd, 0x462: 0x473b, 0x463: 0x47cc,
-	0x464: 0x39d9, 0x465: 0x3b68, 0x466: 0x39e0, 0x467: 0x3b6f, 0x468: 0x39e7, 0x469: 0x3b76,
-	0x46a: 0x31cb, 0x46b: 0x34dc, 0x46c: 0x31d5, 0x46d: 0x34eb, 0x46e: 0x31e9, 0x46f: 0x34ff,
-	0x470: 0x31e4, 0x471: 0x34fa, 0x472: 0x3225, 0x473: 0x353b, 0x474: 0x3234, 0x475: 0x354a,
-	0x476: 0x322f, 0x477: 0x3545, 0x478: 0x39ee, 0x479: 0x3b7d, 0x47a: 0x39f5, 0x47b: 0x3b84,
-	0x47c: 0x3239, 0x47d: 0x354f, 0x47e: 0x323e, 0x47f: 0x3554,
+	0x440: 0x30ec, 0x441: 0x33fd, 0x442: 0x30f1, 0x443: 0x3402, 0x444: 0x3105, 0x445: 0x3416,
+	0x446: 0x310f, 0x447: 0x3420, 0x448: 0x311e, 0x449: 0x342f, 0x44a: 0x3119, 0x44b: 0x342a,
+	0x44c: 0x3931, 0x44d: 0x3ac0, 0x44e: 0x393f, 0x44f: 0x3ace, 0x450: 0x3946, 0x451: 0x3ad5,
+	0x452: 0x394d, 0x453: 0x3adc, 0x454: 0x314b, 0x455: 0x345c, 0x456: 0x3150, 0x457: 0x3461,
+	0x458: 0x315a, 0x459: 0x346b, 0x45a: 0x4783, 0x45b: 0x4814, 0x45c: 0x3993, 0x45d: 0x3b22,
+	0x45e: 0x3173, 0x45f: 0x3484, 0x460: 0x317d, 0x461: 0x348e, 0x462: 0x4792, 0x463: 0x4823,
+	0x464: 0x399a, 0x465: 0x3b29, 0x466: 0x39a1, 0x467: 0x3b30, 0x468: 0x39a8, 0x469: 0x3b37,
+	0x46a: 0x318c, 0x46b: 0x349d, 0x46c: 0x3196, 0x46d: 0x34ac, 0x46e: 0x31aa, 0x46f: 0x34c0,
+	0x470: 0x31a5, 0x471: 0x34bb, 0x472: 0x31e6, 0x473: 0x34fc, 0x474: 0x31f5, 0x475: 0x350b,
+	0x476: 0x31f0, 0x477: 0x3506, 0x478: 0x39af, 0x479: 0x3b3e, 0x47a: 0x39b6, 0x47b: 0x3b45,
+	0x47c: 0x31fa, 0x47d: 0x3510, 0x47e: 0x31ff, 0x47f: 0x3515,
 	// Block 0x12, offset 0x480
-	0x480: 0x3243, 0x481: 0x3559, 0x482: 0x3248, 0x483: 0x355e, 0x484: 0x3257, 0x485: 0x356d,
-	0x486: 0x3252, 0x487: 0x3568, 0x488: 0x325c, 0x489: 0x3577, 0x48a: 0x3261, 0x48b: 0x357c,
-	0x48c: 0x3266, 0x48d: 0x3581, 0x48e: 0x3284, 0x48f: 0x359f, 0x490: 0x329d, 0x491: 0x35bd,
-	0x492: 0x32ac, 0x493: 0x35cc, 0x494: 0x32b1, 0x495: 0x35d1, 0x496: 0x33b5, 0x497: 0x34e1,
-	0x498: 0x3572, 0x499: 0x35ae, 0x49b: 0x360c,
-	0x4a0: 0x46dc, 0x4a1: 0x476d, 0x4a2: 0x2fbe, 0x4a3: 0x32ca,
-	0x4a4: 0x38b3, 0x4a5: 0x3a42, 0x4a6: 0x38ac, 0x4a7: 0x3a3b, 0x4a8: 0x38c1, 0x4a9: 0x3a50,
-	0x4aa: 0x38ba, 0x4ab: 0x3a49, 0x4ac: 0x38f9, 0x4ad: 0x3a88, 0x4ae: 0x38cf, 0x4af: 0x3a5e,
-	0x4b0: 0x38c8, 0x4b1: 0x3a57, 0x4b2: 0x38dd, 0x4b3: 0x3a6c, 0x4b4: 0x38d6, 0x4b5: 0x3a65,
-	0x4b6: 0x3900, 0x4b7: 0x3a8f, 0x4b8: 0x46f0, 0x4b9: 0x4781, 0x4ba: 0x303b, 0x4bb: 0x3347,
-	0x4bc: 0x3027, 0x4bd: 0x3333, 0x4be: 0x3915, 0x4bf: 0x3aa4,
+	0x480: 0x3204, 0x481: 0x351a, 0x482: 0x3209, 0x483: 0x351f, 0x484: 0x3218, 0x485: 0x352e,
+	0x486: 0x3213, 0x487: 0x3529, 0x488: 0x321d, 0x489: 0x3538, 0x48a: 0x3222, 0x48b: 0x353d,
+	0x48c: 0x3227, 0x48d: 0x3542, 0x48e: 0x3245, 0x48f: 0x3560, 0x490: 0x325e, 0x491: 0x357e,
+	0x492: 0x326d, 0x493: 0x358d, 0x494: 0x3272, 0x495: 0x3592, 0x496: 0x3376, 0x497: 0x34a2,
+	0x498: 0x3533, 0x499: 0x356f, 0x49b: 0x35cd,
+	0x4a0: 0x4733, 0x4a1: 0x47c4, 0x4a2: 0x2f7f, 0x4a3: 0x328b,
+	0x4a4: 0x3874, 0x4a5: 0x3a03, 0x4a6: 0x386d, 0x4a7: 0x39fc, 0x4a8: 0x3882, 0x4a9: 0x3a11,
+	0x4aa: 0x387b, 0x4ab: 0x3a0a, 0x4ac: 0x38ba, 0x4ad: 0x3a49, 0x4ae: 0x3890, 0x4af: 0x3a1f,
+	0x4b0: 0x3889, 0x4b1: 0x3a18, 0x4b2: 0x389e, 0x4b3: 0x3a2d, 0x4b4: 0x3897, 0x4b5: 0x3a26,
+	0x4b6: 0x38c1, 0x4b7: 0x3a50, 0x4b8: 0x4747, 0x4b9: 0x47d8, 0x4ba: 0x2ffc, 0x4bb: 0x3308,
+	0x4bc: 0x2fe8, 0x4bd: 0x32f4, 0x4be: 0x38d6, 0x4bf: 0x3a65,
 	// Block 0x13, offset 0x4c0
-	0x4c0: 0x390e, 0x4c1: 0x3a9d, 0x4c2: 0x3923, 0x4c3: 0x3ab2, 0x4c4: 0x391c, 0x4c5: 0x3aab,
-	0x4c6: 0x3938, 0x4c7: 0x3ac7, 0x4c8: 0x30cc, 0x4c9: 0x33d8, 0x4ca: 0x30e0, 0x4cb: 0x33ec,
-	0x4cc: 0x4722, 0x4cd: 0x47b3, 0x4ce: 0x3171, 0x4cf: 0x3482, 0x4d0: 0x395b, 0x4d1: 0x3aea,
-	0x4d2: 0x3954, 0x4d3: 0x3ae3, 0x4d4: 0x3969, 0x4d5: 0x3af8, 0x4d6: 0x3962, 0x4d7: 0x3af1,
-	0x4d8: 0x39c4, 0x4d9: 0x3b53, 0x4da: 0x39a8, 0x4db: 0x3b37, 0x4dc: 0x39a1, 0x4dd: 0x3b30,
-	0x4de: 0x39b6, 0x4df: 0x3b45, 0x4e0: 0x39af, 0x4e1: 0x3b3e, 0x4e2: 0x39bd, 0x4e3: 0x3b4c,
-	0x4e4: 0x3220, 0x4e5: 0x3536, 0x4e6: 0x3202, 0x4e7: 0x3518, 0x4e8: 0x3a1f, 0x4e9: 0x3bae,
-	0x4ea: 0x3a18, 0x4eb: 0x3ba7, 0x4ec: 0x3a2d, 0x4ed: 0x3bbc, 0x4ee: 0x3a26, 0x4ef: 0x3bb5,
-	0x4f0: 0x3a34, 0x4f1: 0x3bc3, 0x4f2: 0x326b, 0x4f3: 0x3586, 0x4f4: 0x3293, 0x4f5: 0x35b3,
-	0x4f6: 0x328e, 0x4f7: 0x35a9, 0x4f8: 0x327a, 0x4f9: 0x3595,
+	0x4c0: 0x38cf, 0x4c1: 0x3a5e, 0x4c2: 0x38e4, 0x4c3: 0x3a73, 0x4c4: 0x38dd, 0x4c5: 0x3a6c,
+	0x4c6: 0x38f9, 0x4c7: 0x3a88, 0x4c8: 0x308d, 0x4c9: 0x3399, 0x4ca: 0x30a1, 0x4cb: 0x33ad,
+	0x4cc: 0x4779, 0x4cd: 0x480a, 0x4ce: 0x3132, 0x4cf: 0x3443, 0x4d0: 0x391c, 0x4d1: 0x3aab,
+	0x4d2: 0x3915, 0x4d3: 0x3aa4, 0x4d4: 0x392a, 0x4d5: 0x3ab9, 0x4d6: 0x3923, 0x4d7: 0x3ab2,
+	0x4d8: 0x3985, 0x4d9: 0x3b14, 0x4da: 0x3969, 0x4db: 0x3af8, 0x4dc: 0x3962, 0x4dd: 0x3af1,
+	0x4de: 0x3977, 0x4df: 0x3b06, 0x4e0: 0x3970, 0x4e1: 0x3aff, 0x4e2: 0x397e, 0x4e3: 0x3b0d,
+	0x4e4: 0x31e1, 0x4e5: 0x34f7, 0x4e6: 0x31c3, 0x4e7: 0x34d9, 0x4e8: 0x39e0, 0x4e9: 0x3b6f,
+	0x4ea: 0x39d9, 0x4eb: 0x3b68, 0x4ec: 0x39ee, 0x4ed: 0x3b7d, 0x4ee: 0x39e7, 0x4ef: 0x3b76,
+	0x4f0: 0x39f5, 0x4f1: 0x3b84, 0x4f2: 0x322c, 0x4f3: 0x3547, 0x4f4: 0x3254, 0x4f5: 0x3574,
+	0x4f6: 0x324f, 0x4f7: 0x356a, 0x4f8: 0x323b, 0x4f9: 0x3556,
 	// Block 0x14, offset 0x500
-	0x500: 0x483f, 0x501: 0x4845, 0x502: 0x4959, 0x503: 0x4971, 0x504: 0x4961, 0x505: 0x4979,
-	0x506: 0x4969, 0x507: 0x4981, 0x508: 0x47e5, 0x509: 0x47eb, 0x50a: 0x48c9, 0x50b: 0x48e1,
-	0x50c: 0x48d1, 0x50d: 0x48e9, 0x50e: 0x48d9, 0x50f: 0x48f1, 0x510: 0x4851, 0x511: 0x4857,
-	0x512: 0x3df3, 0x513: 0x3e03, 0x514: 0x3dfb, 0x515: 0x3e0b,
-	0x518: 0x47f1, 0x519: 0x47f7, 0x51a: 0x3d23, 0x51b: 0x3d33, 0x51c: 0x3d2b, 0x51d: 0x3d3b,
-	0x520: 0x4869, 0x521: 0x486f, 0x522: 0x4989, 0x523: 0x49a1,
-	0x524: 0x4991, 0x525: 0x49a9, 0x526: 0x4999, 0x527: 0x49b1, 0x528: 0x47fd, 0x529: 0x4803,
-	0x52a: 0x48f9, 0x52b: 0x4911, 0x52c: 0x4901, 0x52d: 0x4919, 0x52e: 0x4909, 0x52f: 0x4921,
-	0x530: 0x4881, 0x531: 0x4887, 0x532: 0x3e53, 0x533: 0x3e6b, 0x534: 0x3e5b, 0x535: 0x3e73,
-	0x536: 0x3e63, 0x537: 0x3e7b, 0x538: 0x4809, 0x539: 0x480f, 0x53a: 0x3d53, 0x53b: 0x3d6b,
-	0x53c: 0x3d5b, 0x53d: 0x3d73, 0x53e: 0x3d63, 0x53f: 0x3d7b,
+	0x500: 0x4896, 0x501: 0x489c, 0x502: 0x49b0, 0x503: 0x49c8, 0x504: 0x49b8, 0x505: 0x49d0,
+	0x506: 0x49c0, 0x507: 0x49d8, 0x508: 0x483c, 0x509: 0x4842, 0x50a: 0x4920, 0x50b: 0x4938,
+	0x50c: 0x4928, 0x50d: 0x4940, 0x50e: 0x4930, 0x50f: 0x4948, 0x510: 0x48a8, 0x511: 0x48ae,
+	0x512: 0x3db4, 0x513: 0x3dc4, 0x514: 0x3dbc, 0x515: 0x3dcc,
+	0x518: 0x4848, 0x519: 0x484e, 0x51a: 0x3ce4, 0x51b: 0x3cf4, 0x51c: 0x3cec, 0x51d: 0x3cfc,
+	0x520: 0x48c0, 0x521: 0x48c6, 0x522: 0x49e0, 0x523: 0x49f8,
+	0x524: 0x49e8, 0x525: 0x4a00, 0x526: 0x49f0, 0x527: 0x4a08, 0x528: 0x4854, 0x529: 0x485a,
+	0x52a: 0x4950, 0x52b: 0x4968, 0x52c: 0x4958, 0x52d: 0x4970, 0x52e: 0x4960, 0x52f: 0x4978,
+	0x530: 0x48d8, 0x531: 0x48de, 0x532: 0x3e14, 0x533: 0x3e2c, 0x534: 0x3e1c, 0x535: 0x3e34,
+	0x536: 0x3e24, 0x537: 0x3e3c, 0x538: 0x4860, 0x539: 0x4866, 0x53a: 0x3d14, 0x53b: 0x3d2c,
+	0x53c: 0x3d1c, 0x53d: 0x3d34, 0x53e: 0x3d24, 0x53f: 0x3d3c,
 	// Block 0x15, offset 0x540
-	0x540: 0x488d, 0x541: 0x4893, 0x542: 0x3e83, 0x543: 0x3e93, 0x544: 0x3e8b, 0x545: 0x3e9b,
-	0x548: 0x4815, 0x549: 0x481b, 0x54a: 0x3d83, 0x54b: 0x3d93,
-	0x54c: 0x3d8b, 0x54d: 0x3d9b, 0x550: 0x489f, 0x551: 0x48a5,
-	0x552: 0x3ebb, 0x553: 0x3ed3, 0x554: 0x3ec3, 0x555: 0x3edb, 0x556: 0x3ecb, 0x557: 0x3ee3,
-	0x559: 0x4821, 0x55b: 0x3da3, 0x55d: 0x3dab,
-	0x55f: 0x3db3, 0x560: 0x48b7, 0x561: 0x48bd, 0x562: 0x49b9, 0x563: 0x49d1,
-	0x564: 0x49c1, 0x565: 0x49d9, 0x566: 0x49c9, 0x567: 0x49e1, 0x568: 0x4827, 0x569: 0x482d,
-	0x56a: 0x4929, 0x56b: 0x4941, 0x56c: 0x4931, 0x56d: 0x4949, 0x56e: 0x4939, 0x56f: 0x4951,
-	0x570: 0x4833, 0x571: 0x4359, 0x572: 0x36cc, 0x573: 0x435f, 0x574: 0x485d, 0x575: 0x4365,
-	0x576: 0x36de, 0x577: 0x436b, 0x578: 0x36fc, 0x579: 0x4371, 0x57a: 0x3714, 0x57b: 0x4377,
-	0x57c: 0x48ab, 0x57d: 0x437d,
+	0x540: 0x48e4, 0x541: 0x48ea, 0x542: 0x3e44, 0x543: 0x3e54, 0x544: 0x3e4c, 0x545: 0x3e5c,
+	0x548: 0x486c, 0x549: 0x4872, 0x54a: 0x3d44, 0x54b: 0x3d54,
+	0x54c: 0x3d4c, 0x54d: 0x3d5c, 0x550: 0x48f6, 0x551: 0x48fc,
+	0x552: 0x3e7c, 0x553: 0x3e94, 0x554: 0x3e84, 0x555: 0x3e9c, 0x556: 0x3e8c, 0x557: 0x3ea4,
+	0x559: 0x4878, 0x55b: 0x3d64, 0x55d: 0x3d6c,
+	0x55f: 0x3d74, 0x560: 0x490e, 0x561: 0x4914, 0x562: 0x4a10, 0x563: 0x4a28,
+	0x564: 0x4a18, 0x565: 0x4a30, 0x566: 0x4a20, 0x567: 0x4a38, 0x568: 0x487e, 0x569: 0x4884,
+	0x56a: 0x4980, 0x56b: 0x4998, 0x56c: 0x4988, 0x56d: 0x49a0, 0x56e: 0x4990, 0x56f: 0x49a8,
+	0x570: 0x488a, 0x571: 0x43b0, 0x572: 0x368d, 0x573: 0x43b6, 0x574: 0x48b4, 0x575: 0x43bc,
+	0x576: 0x369f, 0x577: 0x43c2, 0x578: 0x36bd, 0x579: 0x43c8, 0x57a: 0x36d5, 0x57b: 0x43ce,
+	0x57c: 0x4902, 0x57d: 0x43d4,
 	// Block 0x16, offset 0x580
-	0x580: 0x3ddb, 0x581: 0x3de3, 0x582: 0x41bf, 0x583: 0x41dd, 0x584: 0x41c9, 0x585: 0x41e7,
-	0x586: 0x41d3, 0x587: 0x41f1, 0x588: 0x3d13, 0x589: 0x3d1b, 0x58a: 0x410b, 0x58b: 0x4129,
-	0x58c: 0x4115, 0x58d: 0x4133, 0x58e: 0x411f, 0x58f: 0x413d, 0x590: 0x3e23, 0x591: 0x3e2b,
-	0x592: 0x41fb, 0x593: 0x4219, 0x594: 0x4205, 0x595: 0x4223, 0x596: 0x420f, 0x597: 0x422d,
-	0x598: 0x3d43, 0x599: 0x3d4b, 0x59a: 0x4147, 0x59b: 0x4165, 0x59c: 0x4151, 0x59d: 0x416f,
-	0x59e: 0x415b, 0x59f: 0x4179, 0x5a0: 0x3efb, 0x5a1: 0x3f03, 0x5a2: 0x4237, 0x5a3: 0x4255,
-	0x5a4: 0x4241, 0x5a5: 0x425f, 0x5a6: 0x424b, 0x5a7: 0x4269, 0x5a8: 0x3dbb, 0x5a9: 0x3dc3,
-	0x5aa: 0x4183, 0x5ab: 0x41a1, 0x5ac: 0x418d, 0x5ad: 0x41ab, 0x5ae: 0x4197, 0x5af: 0x41b5,
-	0x5b0: 0x36c0, 0x5b1: 0x36ba, 0x5b2: 0x3dcb, 0x5b3: 0x36c6, 0x5b4: 0x3dd3,
-	0x5b6: 0x484b, 0x5b7: 0x3deb, 0x5b8: 0x3630, 0x5b9: 0x362a, 0x5ba: 0x361e, 0x5bb: 0x4329,
-	0x5bc: 0x3636, 0x5bd: 0x8100, 0x5be: 0x01d3, 0x5bf: 0xa100,
+	0x580: 0x3d9c, 0x581: 0x3da4, 0x582: 0x4180, 0x583: 0x419e, 0x584: 0x418a, 0x585: 0x41a8,
+	0x586: 0x4194, 0x587: 0x41b2, 0x588: 0x3cd4, 0x589: 0x3cdc, 0x58a: 0x40cc, 0x58b: 0x40ea,
+	0x58c: 0x40d6, 0x58d: 0x40f4, 0x58e: 0x40e0, 0x58f: 0x40fe, 0x590: 0x3de4, 0x591: 0x3dec,
+	0x592: 0x41bc, 0x593: 0x41da, 0x594: 0x41c6, 0x595: 0x41e4, 0x596: 0x41d0, 0x597: 0x41ee,
+	0x598: 0x3d04, 0x599: 0x3d0c, 0x59a: 0x4108, 0x59b: 0x4126, 0x59c: 0x4112, 0x59d: 0x4130,
+	0x59e: 0x411c, 0x59f: 0x413a, 0x5a0: 0x3ebc, 0x5a1: 0x3ec4, 0x5a2: 0x41f8, 0x5a3: 0x4216,
+	0x5a4: 0x4202, 0x5a5: 0x4220, 0x5a6: 0x420c, 0x5a7: 0x422a, 0x5a8: 0x3d7c, 0x5a9: 0x3d84,
+	0x5aa: 0x4144, 0x5ab: 0x4162, 0x5ac: 0x414e, 0x5ad: 0x416c, 0x5ae: 0x4158, 0x5af: 0x4176,
+	0x5b0: 0x3681, 0x5b1: 0x367b, 0x5b2: 0x3d8c, 0x5b3: 0x3687, 0x5b4: 0x3d94,
+	0x5b6: 0x48a2, 0x5b7: 0x3dac, 0x5b8: 0x35f1, 0x5b9: 0x35eb, 0x5ba: 0x35df, 0x5bb: 0x4380,
+	0x5bc: 0x35f7, 0x5bd: 0x8100, 0x5be: 0x01d3, 0x5bf: 0xa100,
 	// Block 0x17, offset 0x5c0
-	0x5c0: 0x8100, 0x5c1: 0x35e2, 0x5c2: 0x3e13, 0x5c3: 0x36d8, 0x5c4: 0x3e1b,
-	0x5c6: 0x4875, 0x5c7: 0x3e33, 0x5c8: 0x363c, 0x5c9: 0x432f, 0x5ca: 0x3648, 0x5cb: 0x4335,
-	0x5cc: 0x3654, 0x5cd: 0x3bca, 0x5ce: 0x3bd1, 0x5cf: 0x3bd8, 0x5d0: 0x36f0, 0x5d1: 0x36ea,
-	0x5d2: 0x3e3b, 0x5d3: 0x451f, 0x5d6: 0x36f6, 0x5d7: 0x3e4b,
-	0x5d8: 0x366c, 0x5d9: 0x3666, 0x5da: 0x365a, 0x5db: 0x433b, 0x5dd: 0x3bdf,
-	0x5de: 0x3be6, 0x5df: 0x3bed, 0x5e0: 0x3726, 0x5e1: 0x3720, 0x5e2: 0x3ea3, 0x5e3: 0x4527,
-	0x5e4: 0x3708, 0x5e5: 0x370e, 0x5e6: 0x372c, 0x5e7: 0x3eb3, 0x5e8: 0x369c, 0x5e9: 0x3696,
-	0x5ea: 0x368a, 0x5eb: 0x4347, 0x5ec: 0x3684, 0x5ed: 0x35d6, 0x5ee: 0x4323, 0x5ef: 0x0081,
-	0x5f2: 0x3eeb, 0x5f3: 0x3732, 0x5f4: 0x3ef3,
-	0x5f6: 0x48c3, 0x5f7: 0x3f0b, 0x5f8: 0x3678, 0x5f9: 0x4341, 0x5fa: 0x36a8, 0x5fb: 0x4353,
-	0x5fc: 0x36b4, 0x5fd: 0x4291, 0x5fe: 0xa100,
+	0x5c0: 0x8100, 0x5c1: 0x35a3, 0x5c2: 0x3dd4, 0x5c3: 0x3699, 0x5c4: 0x3ddc,
+	0x5c6: 0x48cc, 0x5c7: 0x3df4, 0x5c8: 0x35fd, 0x5c9: 0x4386, 0x5ca: 0x3609, 0x5cb: 0x438c,
+	0x5cc: 0x3615, 0x5cd: 0x3b8b, 0x5ce: 0x3b92, 0x5cf: 0x3b99, 0x5d0: 0x36b1, 0x5d1: 0x36ab,
+	0x5d2: 0x3dfc, 0x5d3: 0x4576, 0x5d6: 0x36b7, 0x5d7: 0x3e0c,
+	0x5d8: 0x362d, 0x5d9: 0x3627, 0x5da: 0x361b, 0x5db: 0x4392, 0x5dd: 0x3ba0,
+	0x5de: 0x3ba7, 0x5df: 0x3bae, 0x5e0: 0x36e7, 0x5e1: 0x36e1, 0x5e2: 0x3e64, 0x5e3: 0x457e,
+	0x5e4: 0x36c9, 0x5e5: 0x36cf, 0x5e6: 0x36ed, 0x5e7: 0x3e74, 0x5e8: 0x365d, 0x5e9: 0x3657,
+	0x5ea: 0x364b, 0x5eb: 0x439e, 0x5ec: 0x3645, 0x5ed: 0x3597, 0x5ee: 0x437a, 0x5ef: 0x0081,
+	0x5f2: 0x3eac, 0x5f3: 0x36f3, 0x5f4: 0x3eb4,
+	0x5f6: 0x491a, 0x5f7: 0x3ecc, 0x5f8: 0x3639, 0x5f9: 0x4398, 0x5fa: 0x3669, 0x5fb: 0x43aa,
+	0x5fc: 0x3675, 0x5fd: 0x4252, 0x5fe: 0xa100,
 	// Block 0x18, offset 0x600
-	0x601: 0x3c41, 0x603: 0xa000, 0x604: 0x3c48, 0x605: 0xa000,
-	0x607: 0x3c4f, 0x608: 0xa000, 0x609: 0x3c56,
+	0x601: 0x3c02, 0x603: 0xa000, 0x604: 0x3c09, 0x605: 0xa000,
+	0x607: 0x3c10, 0x608: 0xa000, 0x609: 0x3c17,
 	0x60d: 0xa000,
-	0x620: 0x2fa0, 0x621: 0xa000, 0x622: 0x3c64,
+	0x620: 0x2f61, 0x621: 0xa000, 0x622: 0x3c25,
 	0x624: 0xa000, 0x625: 0xa000,
-	0x62d: 0x3c5d, 0x62e: 0x2f9b, 0x62f: 0x2fa5,
-	0x630: 0x3c6b, 0x631: 0x3c72, 0x632: 0xa000, 0x633: 0xa000, 0x634: 0x3c79, 0x635: 0x3c80,
-	0x636: 0xa000, 0x637: 0xa000, 0x638: 0x3c87, 0x639: 0x3c8e, 0x63a: 0xa000, 0x63b: 0xa000,
+	0x62d: 0x3c1e, 0x62e: 0x2f5c, 0x62f: 0x2f66,
+	0x630: 0x3c2c, 0x631: 0x3c33, 0x632: 0xa000, 0x633: 0xa000, 0x634: 0x3c3a, 0x635: 0x3c41,
+	0x636: 0xa000, 0x637: 0xa000, 0x638: 0x3c48, 0x639: 0x3c4f, 0x63a: 0xa000, 0x63b: 0xa000,
 	0x63c: 0xa000, 0x63d: 0xa000,
 	// Block 0x19, offset 0x640
-	0x640: 0x3c95, 0x641: 0x3c9c, 0x642: 0xa000, 0x643: 0xa000, 0x644: 0x3cb1, 0x645: 0x3cb8,
-	0x646: 0xa000, 0x647: 0xa000, 0x648: 0x3cbf, 0x649: 0x3cc6,
+	0x640: 0x3c56, 0x641: 0x3c5d, 0x642: 0xa000, 0x643: 0xa000, 0x644: 0x3c72, 0x645: 0x3c79,
+	0x646: 0xa000, 0x647: 0xa000, 0x648: 0x3c80, 0x649: 0x3c87,
 	0x651: 0xa000,
 	0x652: 0xa000,
 	0x662: 0xa000,
 	0x668: 0xa000, 0x669: 0xa000,
-	0x66b: 0xa000, 0x66c: 0x3cdb, 0x66d: 0x3ce2, 0x66e: 0x3ce9, 0x66f: 0x3cf0,
+	0x66b: 0xa000, 0x66c: 0x3c9c, 0x66d: 0x3ca3, 0x66e: 0x3caa, 0x66f: 0x3cb1,
 	0x672: 0xa000, 0x673: 0xa000, 0x674: 0xa000, 0x675: 0xa000,
 	// Block 0x1a, offset 0x680
 	0x686: 0xa000, 0x68b: 0xa000,
-	0x68c: 0x3f43, 0x68d: 0xa000, 0x68e: 0x3f4b, 0x68f: 0xa000, 0x690: 0x3f53, 0x691: 0xa000,
-	0x692: 0x3f5b, 0x693: 0xa000, 0x694: 0x3f63, 0x695: 0xa000, 0x696: 0x3f6b, 0x697: 0xa000,
-	0x698: 0x3f73, 0x699: 0xa000, 0x69a: 0x3f7b, 0x69b: 0xa000, 0x69c: 0x3f83, 0x69d: 0xa000,
-	0x69e: 0x3f8b, 0x69f: 0xa000, 0x6a0: 0x3f93, 0x6a1: 0xa000, 0x6a2: 0x3f9b,
-	0x6a4: 0xa000, 0x6a5: 0x3fa3, 0x6a6: 0xa000, 0x6a7: 0x3fab, 0x6a8: 0xa000, 0x6a9: 0x3fb3,
+	0x68c: 0x3f04, 0x68d: 0xa000, 0x68e: 0x3f0c, 0x68f: 0xa000, 0x690: 0x3f14, 0x691: 0xa000,
+	0x692: 0x3f1c, 0x693: 0xa000, 0x694: 0x3f24, 0x695: 0xa000, 0x696: 0x3f2c, 0x697: 0xa000,
+	0x698: 0x3f34, 0x699: 0xa000, 0x69a: 0x3f3c, 0x69b: 0xa000, 0x69c: 0x3f44, 0x69d: 0xa000,
+	0x69e: 0x3f4c, 0x69f: 0xa000, 0x6a0: 0x3f54, 0x6a1: 0xa000, 0x6a2: 0x3f5c,
+	0x6a4: 0xa000, 0x6a5: 0x3f64, 0x6a6: 0xa000, 0x6a7: 0x3f6c, 0x6a8: 0xa000, 0x6a9: 0x3f74,
 	0x6af: 0xa000,
-	0x6b0: 0x3fbb, 0x6b1: 0x3fc3, 0x6b2: 0xa000, 0x6b3: 0x3fcb, 0x6b4: 0x3fd3, 0x6b5: 0xa000,
-	0x6b6: 0x3fdb, 0x6b7: 0x3fe3, 0x6b8: 0xa000, 0x6b9: 0x3feb, 0x6ba: 0x3ff3, 0x6bb: 0xa000,
-	0x6bc: 0x3ffb, 0x6bd: 0x4003,
+	0x6b0: 0x3f7c, 0x6b1: 0x3f84, 0x6b2: 0xa000, 0x6b3: 0x3f8c, 0x6b4: 0x3f94, 0x6b5: 0xa000,
+	0x6b6: 0x3f9c, 0x6b7: 0x3fa4, 0x6b8: 0xa000, 0x6b9: 0x3fac, 0x6ba: 0x3fb4, 0x6bb: 0xa000,
+	0x6bc: 0x3fbc, 0x6bd: 0x3fc4,
 	// Block 0x1b, offset 0x6c0
-	0x6d4: 0x3f3b,
+	0x6d4: 0x3efc,
 	0x6d9: 0x9903, 0x6da: 0x9903, 0x6db: 0x8100, 0x6dc: 0x8100, 0x6dd: 0xa000,
-	0x6de: 0x400b,
+	0x6de: 0x3fcc,
 	0x6e6: 0xa000,
-	0x6eb: 0xa000, 0x6ec: 0x401b, 0x6ed: 0xa000, 0x6ee: 0x4023, 0x6ef: 0xa000,
-	0x6f0: 0x402b, 0x6f1: 0xa000, 0x6f2: 0x4033, 0x6f3: 0xa000, 0x6f4: 0x403b, 0x6f5: 0xa000,
-	0x6f6: 0x4043, 0x6f7: 0xa000, 0x6f8: 0x404b, 0x6f9: 0xa000, 0x6fa: 0x4053, 0x6fb: 0xa000,
-	0x6fc: 0x405b, 0x6fd: 0xa000, 0x6fe: 0x4063, 0x6ff: 0xa000,
+	0x6eb: 0xa000, 0x6ec: 0x3fdc, 0x6ed: 0xa000, 0x6ee: 0x3fe4, 0x6ef: 0xa000,
+	0x6f0: 0x3fec, 0x6f1: 0xa000, 0x6f2: 0x3ff4, 0x6f3: 0xa000, 0x6f4: 0x3ffc, 0x6f5: 0xa000,
+	0x6f6: 0x4004, 0x6f7: 0xa000, 0x6f8: 0x400c, 0x6f9: 0xa000, 0x6fa: 0x4014, 0x6fb: 0xa000,
+	0x6fc: 0x401c, 0x6fd: 0xa000, 0x6fe: 0x4024, 0x6ff: 0xa000,
 	// Block 0x1c, offset 0x700
-	0x700: 0x406b, 0x701: 0xa000, 0x702: 0x4073, 0x704: 0xa000, 0x705: 0x407b,
-	0x706: 0xa000, 0x707: 0x4083, 0x708: 0xa000, 0x709: 0x408b,
-	0x70f: 0xa000, 0x710: 0x4093, 0x711: 0x409b,
-	0x712: 0xa000, 0x713: 0x40a3, 0x714: 0x40ab, 0x715: 0xa000, 0x716: 0x40b3, 0x717: 0x40bb,
-	0x718: 0xa000, 0x719: 0x40c3, 0x71a: 0x40cb, 0x71b: 0xa000, 0x71c: 0x40d3, 0x71d: 0x40db,
+	0x700: 0x402c, 0x701: 0xa000, 0x702: 0x4034, 0x704: 0xa000, 0x705: 0x403c,
+	0x706: 0xa000, 0x707: 0x4044, 0x708: 0xa000, 0x709: 0x404c,
+	0x70f: 0xa000, 0x710: 0x4054, 0x711: 0x405c,
+	0x712: 0xa000, 0x713: 0x4064, 0x714: 0x406c, 0x715: 0xa000, 0x716: 0x4074, 0x717: 0x407c,
+	0x718: 0xa000, 0x719: 0x4084, 0x71a: 0x408c, 0x71b: 0xa000, 0x71c: 0x4094, 0x71d: 0x409c,
 	0x72f: 0xa000,
-	0x730: 0xa000, 0x731: 0xa000, 0x732: 0xa000, 0x734: 0x4013,
-	0x737: 0x40e3, 0x738: 0x40eb, 0x739: 0x40f3, 0x73a: 0x40fb,
-	0x73d: 0xa000, 0x73e: 0x4103,
+	0x730: 0xa000, 0x731: 0xa000, 0x732: 0xa000, 0x734: 0x3fd4,
+	0x737: 0x40a4, 0x738: 0x40ac, 0x739: 0x40b4, 0x73a: 0x40bc,
+	0x73d: 0xa000, 0x73e: 0x40c4,
 	// Block 0x1d, offset 0x740
-	0x740: 0x13ef, 0x741: 0x0d73, 0x742: 0x144b, 0x743: 0x1417, 0x744: 0x0ecf, 0x745: 0x0763,
-	0x746: 0x0957, 0x747: 0x169f, 0x748: 0x169f, 0x749: 0x0a83, 0x74a: 0x14d3, 0x74b: 0x09bb,
-	0x74c: 0x0a7f, 0x74d: 0x0c67, 0x74e: 0x1047, 0x74f: 0x11d7, 0x750: 0x130f, 0x751: 0x134b,
-	0x752: 0x137f, 0x753: 0x1493, 0x754: 0x0deb, 0x755: 0x0e77, 0x756: 0x0f23, 0x757: 0x0fbb,
-	0x758: 0x12d7, 0x759: 0x14bb, 0x75a: 0x15e7, 0x75b: 0x0787, 0x75c: 0x092b, 0x75d: 0x0dff,
-	0x75e: 0x0f47, 0x75f: 0x130b, 0x760: 0x1637, 0x761: 0x0b2b, 0x762: 0x0eef, 0x763: 0x12fb,
-	0x764: 0x138f, 0x765: 0x0c9b, 0x766: 0x1233, 0x767: 0x1357, 0x768: 0x0b97, 0x769: 0x0d87,
-	0x76a: 0x0e8f, 0x76b: 0x0f93, 0x76c: 0x149f, 0x76d: 0x07c7, 0x76e: 0x085f, 0x76f: 0x08cb,
-	0x770: 0x0d03, 0x771: 0x0df7, 0x772: 0x0f43, 0x773: 0x1067, 0x774: 0x11ef, 0x775: 0x1303,
-	0x776: 0x131b, 0x777: 0x143f, 0x778: 0x1563, 0x779: 0x1617, 0x77a: 0x1633, 0x77b: 0x10a3,
-	0x77c: 0x10e3, 0x77d: 0x119b, 0x77e: 0x12bb, 0x77f: 0x14ef,
+	0x740: 0x1377, 0x741: 0x0cfb, 0x742: 0x13d3, 0x743: 0x139f, 0x744: 0x0e57, 0x745: 0x06eb,
+	0x746: 0x08df, 0x747: 0x1627, 0x748: 0x1627, 0x749: 0x0a0b, 0x74a: 0x145b, 0x74b: 0x0943,
+	0x74c: 0x0a07, 0x74d: 0x0bef, 0x74e: 0x0fcf, 0x74f: 0x115f, 0x750: 0x1297, 0x751: 0x12d3,
+	0x752: 0x1307, 0x753: 0x141b, 0x754: 0x0d73, 0x755: 0x0dff, 0x756: 0x0eab, 0x757: 0x0f43,
+	0x758: 0x125f, 0x759: 0x1443, 0x75a: 0x156f, 0x75b: 0x070f, 0x75c: 0x08b3, 0x75d: 0x0d87,
+	0x75e: 0x0ecf, 0x75f: 0x1293, 0x760: 0x15bf, 0x761: 0x0ab3, 0x762: 0x0e77, 0x763: 0x1283,
+	0x764: 0x1317, 0x765: 0x0c23, 0x766: 0x11bb, 0x767: 0x12df, 0x768: 0x0b1f, 0x769: 0x0d0f,
+	0x76a: 0x0e17, 0x76b: 0x0f1b, 0x76c: 0x1427, 0x76d: 0x074f, 0x76e: 0x07e7, 0x76f: 0x0853,
+	0x770: 0x0c8b, 0x771: 0x0d7f, 0x772: 0x0ecb, 0x773: 0x0fef, 0x774: 0x1177, 0x775: 0x128b,
+	0x776: 0x12a3, 0x777: 0x13c7, 0x778: 0x14eb, 0x779: 0x159f, 0x77a: 0x15bb, 0x77b: 0x102b,
+	0x77c: 0x106b, 0x77d: 0x1123, 0x77e: 0x1243, 0x77f: 0x1477,
 	// Block 0x1e, offset 0x780
-	0x780: 0x163f, 0x781: 0x13c3, 0x782: 0x0a3f, 0x783: 0x0bb3, 0x784: 0x1153, 0x785: 0x1213,
-	0x786: 0x0f77, 0x787: 0x10ab, 0x788: 0x140f, 0x789: 0x155b, 0x78a: 0x0a3b, 0x78b: 0x0b07,
-	0x78c: 0x0def, 0x78d: 0x0ea3, 0x78e: 0x0ed7, 0x78f: 0x118b, 0x790: 0x11b3, 0x791: 0x151b,
-	0x792: 0x08c7, 0x793: 0x121f, 0x794: 0x086b, 0x795: 0x0867, 0x796: 0x110f, 0x797: 0x119f,
-	0x798: 0x12d3, 0x799: 0x1523, 0x79a: 0x13df, 0x79b: 0x0c9f, 0x79c: 0x0deb, 0x79d: 0x13cf,
-	0x79e: 0x076f, 0x79f: 0x0adb, 0x7a0: 0x0c0b, 0x7a1: 0x0fa7, 0x7a2: 0x1027, 0x7a3: 0x08eb,
-	0x7a4: 0x10b3, 0x7a5: 0x07d7, 0x7a6: 0x0bef, 0x7a7: 0x074f, 0x7a8: 0x0e63, 0x7a9: 0x0d1b,
-	0x7aa: 0x1187, 0x7ab: 0x093f, 0x7ac: 0x0a2b, 0x7ad: 0x1073, 0x7ae: 0x12db, 0x7af: 0x13b3,
-	0x7b0: 0x0e2f, 0x7b1: 0x146f, 0x7b2: 0x0e5b, 0x7b3: 0x0caf, 0x7b4: 0x1293, 0x7b5: 0x0ccf,
-	0x7b6: 0x1023, 0x7b7: 0x07a3, 0x7b8: 0x081f, 0x7b9: 0x0863, 0x7ba: 0x0dcb, 0x7bb: 0x1173,
-	0x7bc: 0x126b, 0x7bd: 0x13bf, 0x7be: 0x14cf, 0x7bf: 0x08d3,
+	0x780: 0x15c7, 0x781: 0x134b, 0x782: 0x09c7, 0x783: 0x0b3b, 0x784: 0x10db, 0x785: 0x119b,
+	0x786: 0x0eff, 0x787: 0x1033, 0x788: 0x1397, 0x789: 0x14e3, 0x78a: 0x09c3, 0x78b: 0x0a8f,
+	0x78c: 0x0d77, 0x78d: 0x0e2b, 0x78e: 0x0e5f, 0x78f: 0x1113, 0x790: 0x113b, 0x791: 0x14a3,
+	0x792: 0x084f, 0x793: 0x11a7, 0x794: 0x07f3, 0x795: 0x07ef, 0x796: 0x1097, 0x797: 0x1127,
+	0x798: 0x125b, 0x799: 0x14ab, 0x79a: 0x1367, 0x79b: 0x0c27, 0x79c: 0x0d73, 0x79d: 0x1357,
+	0x79e: 0x06f7, 0x79f: 0x0a63, 0x7a0: 0x0b93, 0x7a1: 0x0f2f, 0x7a2: 0x0faf, 0x7a3: 0x0873,
+	0x7a4: 0x103b, 0x7a5: 0x075f, 0x7a6: 0x0b77, 0x7a7: 0x06d7, 0x7a8: 0x0deb, 0x7a9: 0x0ca3,
+	0x7aa: 0x110f, 0x7ab: 0x08c7, 0x7ac: 0x09b3, 0x7ad: 0x0ffb, 0x7ae: 0x1263, 0x7af: 0x133b,
+	0x7b0: 0x0db7, 0x7b1: 0x13f7, 0x7b2: 0x0de3, 0x7b3: 0x0c37, 0x7b4: 0x121b, 0x7b5: 0x0c57,
+	0x7b6: 0x0fab, 0x7b7: 0x072b, 0x7b8: 0x07a7, 0x7b9: 0x07eb, 0x7ba: 0x0d53, 0x7bb: 0x10fb,
+	0x7bc: 0x11f3, 0x7bd: 0x1347, 0x7be: 0x1457, 0x7bf: 0x085b,
 	// Block 0x1f, offset 0x7c0
-	0x7c0: 0x0987, 0x7c1: 0x0a8f, 0x7c2: 0x0ba7, 0x7c3: 0x0d37, 0x7c4: 0x0ef3, 0x7c5: 0x10b7,
-	0x7c6: 0x150b, 0x7c7: 0x15ef, 0x7c8: 0x1643, 0x7c9: 0x165b, 0x7ca: 0x08af, 0x7cb: 0x0d6b,
-	0x7cc: 0x0e1b, 0x7cd: 0x1463, 0x7ce: 0x0b73, 0x7cf: 0x0c4f, 0x7d0: 0x0c6b, 0x7d1: 0x0cfb,
-	0x7d2: 0x0ee3, 0x7d3: 0x0f2f, 0x7d4: 0x0fdf, 0x7d5: 0x1103, 0x7d6: 0x11a7, 0x7d7: 0x120b,
-	0x7d8: 0x1453, 0x7d9: 0x12e3, 0x7da: 0x147b, 0x7db: 0x14f3, 0x7dc: 0x0887, 0x7dd: 0x08b3,
-	0x7de: 0x099b, 0x7df: 0x0f1f, 0x7e0: 0x136b, 0x7e1: 0x13b3, 0x7e2: 0x0b93, 0x7e3: 0x0c03,
-	0x7e4: 0x0cc7, 0x7e5: 0x0e27, 0x7e6: 0x114f, 0x7e7: 0x0f9b, 0x7e8: 0x07b3, 0x7e9: 0x09f7,
-	0x7ea: 0x0adb, 0x7eb: 0x0b3f, 0x7ec: 0x0c0f, 0x7ed: 0x0fb7, 0x7ee: 0x0fd3, 0x7ef: 0x11e3,
-	0x7f0: 0x1203, 0x7f1: 0x14d7, 0x7f2: 0x1557, 0x7f3: 0x1567, 0x7f4: 0x15a3, 0x7f5: 0x07cb,
-	0x7f6: 0x10f7, 0x7f7: 0x14c3, 0x7f8: 0x153f, 0x7f9: 0x0c27, 0x7fa: 0x078f, 0x7fb: 0x07ef,
-	0x7fc: 0x0adf, 0x7fd: 0x0aff, 0x7fe: 0x0d27, 0x7ff: 0x0deb,
+	0x7c0: 0x090f, 0x7c1: 0x0a17, 0x7c2: 0x0b2f, 0x7c3: 0x0cbf, 0x7c4: 0x0e7b, 0x7c5: 0x103f,
+	0x7c6: 0x1493, 0x7c7: 0x1577, 0x7c8: 0x15cb, 0x7c9: 0x15e3, 0x7ca: 0x0837, 0x7cb: 0x0cf3,
+	0x7cc: 0x0da3, 0x7cd: 0x13eb, 0x7ce: 0x0afb, 0x7cf: 0x0bd7, 0x7d0: 0x0bf3, 0x7d1: 0x0c83,
+	0x7d2: 0x0e6b, 0x7d3: 0x0eb7, 0x7d4: 0x0f67, 0x7d5: 0x108b, 0x7d6: 0x112f, 0x7d7: 0x1193,
+	0x7d8: 0x13db, 0x7d9: 0x126b, 0x7da: 0x1403, 0x7db: 0x147b, 0x7dc: 0x080f, 0x7dd: 0x083b,
+	0x7de: 0x0923, 0x7df: 0x0ea7, 0x7e0: 0x12f3, 0x7e1: 0x133b, 0x7e2: 0x0b1b, 0x7e3: 0x0b8b,
+	0x7e4: 0x0c4f, 0x7e5: 0x0daf, 0x7e6: 0x10d7, 0x7e7: 0x0f23, 0x7e8: 0x073b, 0x7e9: 0x097f,
+	0x7ea: 0x0a63, 0x7eb: 0x0ac7, 0x7ec: 0x0b97, 0x7ed: 0x0f3f, 0x7ee: 0x0f5b, 0x7ef: 0x116b,
+	0x7f0: 0x118b, 0x7f1: 0x145f, 0x7f2: 0x14df, 0x7f3: 0x14ef, 0x7f4: 0x152b, 0x7f5: 0x0753,
+	0x7f6: 0x107f, 0x7f7: 0x144b, 0x7f8: 0x14c7, 0x7f9: 0x0baf, 0x7fa: 0x0717, 0x7fb: 0x0777,
+	0x7fc: 0x0a67, 0x7fd: 0x0a87, 0x7fe: 0x0caf, 0x7ff: 0x0d73,
 	// Block 0x20, offset 0x800
-	0x800: 0x0f3b, 0x801: 0x1043, 0x802: 0x12ef, 0x803: 0x148f, 0x804: 0x1697, 0x805: 0x0d5b,
-	0x806: 0x1517, 0x807: 0x08ab, 0x808: 0x0da7, 0x809: 0x0db3, 0x80a: 0x0e87, 0x80b: 0x0ebf,
-	0x80c: 0x0fc3, 0x80d: 0x101f, 0x80e: 0x109f, 0x80f: 0x1183, 0x810: 0x15af, 0x811: 0x0827,
-	0x812: 0x0c7b, 0x813: 0x1527, 0x814: 0x07df, 0x815: 0x0b23, 0x816: 0x0ea7, 0x817: 0x1457,
-	0x818: 0x0bdf, 0x819: 0x0c2f, 0x81a: 0x0dbb, 0x81b: 0x0fa7, 0x81c: 0x152f, 0x81d: 0x088f,
-	0x81e: 0x0977, 0x81f: 0x0b0f, 0x820: 0x0d4b, 0x821: 0x0d97, 0x822: 0x0dd7, 0x823: 0x0e6b,
-	0x824: 0x0fbf, 0x825: 0x1033, 0x826: 0x11cf, 0x827: 0x136f, 0x828: 0x137b, 0x829: 0x14cb,
-	0x82a: 0x154b, 0x82b: 0x08fb, 0x82c: 0x0ec3, 0x82d: 0x097b, 0x82e: 0x0f3f, 0x82f: 0x0fe3,
-	0x830: 0x12ff, 0x831: 0x1533, 0x832: 0x161f, 0x833: 0x1647, 0x834: 0x0daf, 0x835: 0x0e9f,
-	0x836: 0x123b, 0x837: 0x112f, 0x838: 0x113b, 0x839: 0x115f, 0x83a: 0x0f8f, 0x83b: 0x0f17,
-	0x83c: 0x13db, 0x83d: 0x07ab, 0x83e: 0x12a3, 0x83f: 0x0893,
+	0x800: 0x0ec3, 0x801: 0x0fcb, 0x802: 0x1277, 0x803: 0x1417, 0x804: 0x161f, 0x805: 0x0ce3,
+	0x806: 0x149f, 0x807: 0x0833, 0x808: 0x0d2f, 0x809: 0x0d3b, 0x80a: 0x0e0f, 0x80b: 0x0e47,
+	0x80c: 0x0f4b, 0x80d: 0x0fa7, 0x80e: 0x1027, 0x80f: 0x110b, 0x810: 0x1537, 0x811: 0x07af,
+	0x812: 0x0c03, 0x813: 0x14af, 0x814: 0x0767, 0x815: 0x0aab, 0x816: 0x0e2f, 0x817: 0x13df,
+	0x818: 0x0b67, 0x819: 0x0bb7, 0x81a: 0x0d43, 0x81b: 0x0f2f, 0x81c: 0x14b7, 0x81d: 0x0817,
+	0x81e: 0x08ff, 0x81f: 0x0a97, 0x820: 0x0cd3, 0x821: 0x0d1f, 0x822: 0x0d5f, 0x823: 0x0df3,
+	0x824: 0x0f47, 0x825: 0x0fbb, 0x826: 0x1157, 0x827: 0x12f7, 0x828: 0x1303, 0x829: 0x1453,
+	0x82a: 0x14d3, 0x82b: 0x0883, 0x82c: 0x0e4b, 0x82d: 0x0903, 0x82e: 0x0ec7, 0x82f: 0x0f6b,
+	0x830: 0x1287, 0x831: 0x14bb, 0x832: 0x15a7, 0x833: 0x15cf, 0x834: 0x0d37, 0x835: 0x0e27,
+	0x836: 0x11c3, 0x837: 0x10b7, 0x838: 0x10c3, 0x839: 0x10e7, 0x83a: 0x0f17, 0x83b: 0x0e9f,
+	0x83c: 0x1363, 0x83d: 0x0733, 0x83e: 0x122b, 0x83f: 0x081b,
 	// Block 0x21, offset 0x840
-	0x840: 0x0883, 0x841: 0x0b83, 0x842: 0x0ca3, 0x843: 0x116b, 0x844: 0x0acb, 0x845: 0x0e7b,
-	0x846: 0x0d67, 0x847: 0x145f, 0x848: 0x135f, 0x849: 0x151f, 0x84a: 0x139b, 0x84b: 0x0b9f,
-	0x84c: 0x07ff, 0x84d: 0x09d3, 0x850: 0x0a27,
-	0x852: 0x0d57, 0x855: 0x086f, 0x856: 0x0f97, 0x857: 0x105b,
-	0x858: 0x10bf, 0x859: 0x10db, 0x85a: 0x10df, 0x85b: 0x10f3, 0x85c: 0x156f, 0x85d: 0x1163,
-	0x85e: 0x11e7, 0x860: 0x1307, 0x862: 0x13cb,
-	0x865: 0x147f, 0x866: 0x14ab,
-	0x86a: 0x15c3, 0x86b: 0x15c7, 0x86c: 0x15cb, 0x86d: 0x162f, 0x86e: 0x14a3, 0x86f: 0x153b,
-	0x870: 0x07cf, 0x871: 0x07f3, 0x872: 0x0807, 0x873: 0x08c3, 0x874: 0x08cf, 0x875: 0x090f,
-	0x876: 0x09c3, 0x877: 0x09df, 0x878: 0x09e7, 0x879: 0x0a23, 0x87a: 0x0a2f, 0x87b: 0x0b0b,
-	0x87c: 0x0b13, 0x87d: 0x0c1b, 0x87e: 0x0c43, 0x87f: 0x0c4b,
+	0x840: 0x080b, 0x841: 0x0b0b, 0x842: 0x0c2b, 0x843: 0x10f3, 0x844: 0x0a53, 0x845: 0x0e03,
+	0x846: 0x0cef, 0x847: 0x13e7, 0x848: 0x12e7, 0x849: 0x14a7, 0x84a: 0x1323, 0x84b: 0x0b27,
+	0x84c: 0x0787, 0x84d: 0x095b, 0x850: 0x09af,
+	0x852: 0x0cdf, 0x855: 0x07f7, 0x856: 0x0f1f, 0x857: 0x0fe3,
+	0x858: 0x1047, 0x859: 0x1063, 0x85a: 0x1067, 0x85b: 0x107b, 0x85c: 0x14f7, 0x85d: 0x10eb,
+	0x85e: 0x116f, 0x860: 0x128f, 0x862: 0x1353,
+	0x865: 0x1407, 0x866: 0x1433,
+	0x86a: 0x154b, 0x86b: 0x154f, 0x86c: 0x1553, 0x86d: 0x15b7, 0x86e: 0x142b, 0x86f: 0x14c3,
+	0x870: 0x0757, 0x871: 0x077b, 0x872: 0x078f, 0x873: 0x084b, 0x874: 0x0857, 0x875: 0x0897,
+	0x876: 0x094b, 0x877: 0x0967, 0x878: 0x096f, 0x879: 0x09ab, 0x87a: 0x09b7, 0x87b: 0x0a93,
+	0x87c: 0x0a9b, 0x87d: 0x0ba3, 0x87e: 0x0bcb, 0x87f: 0x0bd3,
 	// Block 0x22, offset 0x880
-	0x880: 0x0c63, 0x881: 0x0d0f, 0x882: 0x0d3f, 0x883: 0x0d5f, 0x884: 0x0dcf, 0x885: 0x0e93,
-	0x886: 0x0eaf, 0x887: 0x0edf, 0x888: 0x0f33, 0x889: 0x0f53, 0x88a: 0x0fc7, 0x88b: 0x10a7,
-	0x88c: 0x10c3, 0x88d: 0x10cb, 0x88e: 0x10c7, 0x88f: 0x10cf, 0x890: 0x10d3, 0x891: 0x10d7,
-	0x892: 0x10eb, 0x893: 0x10ef, 0x894: 0x1113, 0x895: 0x1127, 0x896: 0x1143, 0x897: 0x11a7,
-	0x898: 0x11af, 0x899: 0x11b7, 0x89a: 0x11cb, 0x89b: 0x11f3, 0x89c: 0x1243, 0x89d: 0x1277,
-	0x89e: 0x1277, 0x89f: 0x12df, 0x8a0: 0x1387, 0x8a1: 0x139f, 0x8a2: 0x13d3, 0x8a3: 0x13d7,
-	0x8a4: 0x141b, 0x8a5: 0x141f, 0x8a6: 0x1477, 0x8a7: 0x147f, 0x8a8: 0x154f, 0x8a9: 0x1593,
-	0x8aa: 0x15ab, 0x8ab: 0x0c13, 0x8ac: 0x1792, 0x8ad: 0x125b,
-	0x8b0: 0x0757, 0x8b1: 0x085b, 0x8b2: 0x081b, 0x8b3: 0x07c3, 0x8b4: 0x0803, 0x8b5: 0x082f,
-	0x8b6: 0x08bf, 0x8b7: 0x08db, 0x8b8: 0x09c3, 0x8b9: 0x09af, 0x8ba: 0x09bf, 0x8bb: 0x09db,
-	0x8bc: 0x0a27, 0x8bd: 0x0a37, 0x8be: 0x0a7b, 0x8bf: 0x0a87,
+	0x880: 0x0beb, 0x881: 0x0c97, 0x882: 0x0cc7, 0x883: 0x0ce7, 0x884: 0x0d57, 0x885: 0x0e1b,
+	0x886: 0x0e37, 0x887: 0x0e67, 0x888: 0x0ebb, 0x889: 0x0edb, 0x88a: 0x0f4f, 0x88b: 0x102f,
+	0x88c: 0x104b, 0x88d: 0x1053, 0x88e: 0x104f, 0x88f: 0x1057, 0x890: 0x105b, 0x891: 0x105f,
+	0x892: 0x1073, 0x893: 0x1077, 0x894: 0x109b, 0x895: 0x10af, 0x896: 0x10cb, 0x897: 0x112f,
+	0x898: 0x1137, 0x899: 0x113f, 0x89a: 0x1153, 0x89b: 0x117b, 0x89c: 0x11cb, 0x89d: 0x11ff,
+	0x89e: 0x11ff, 0x89f: 0x1267, 0x8a0: 0x130f, 0x8a1: 0x1327, 0x8a2: 0x135b, 0x8a3: 0x135f,
+	0x8a4: 0x13a3, 0x8a5: 0x13a7, 0x8a6: 0x13ff, 0x8a7: 0x1407, 0x8a8: 0x14d7, 0x8a9: 0x151b,
+	0x8aa: 0x1533, 0x8ab: 0x0b9b, 0x8ac: 0x171a, 0x8ad: 0x11e3,
+	0x8b0: 0x06df, 0x8b1: 0x07e3, 0x8b2: 0x07a3, 0x8b3: 0x074b, 0x8b4: 0x078b, 0x8b5: 0x07b7,
+	0x8b6: 0x0847, 0x8b7: 0x0863, 0x8b8: 0x094b, 0x8b9: 0x0937, 0x8ba: 0x0947, 0x8bb: 0x0963,
+	0x8bc: 0x09af, 0x8bd: 0x09bf, 0x8be: 0x0a03, 0x8bf: 0x0a0f,
 	// Block 0x23, offset 0x8c0
-	0x8c0: 0x0aa3, 0x8c1: 0x0ab3, 0x8c2: 0x0b9b, 0x8c3: 0x0ba3, 0x8c4: 0x0bd3, 0x8c5: 0x0bf3,
-	0x8c6: 0x0c23, 0x8c7: 0x0c3b, 0x8c8: 0x0c2b, 0x8c9: 0x0c4b, 0x8ca: 0x0c3f, 0x8cb: 0x0c63,
-	0x8cc: 0x0c7f, 0x8cd: 0x0cd7, 0x8ce: 0x0ce3, 0x8cf: 0x0ceb, 0x8d0: 0x0d13, 0x8d1: 0x0d57,
-	0x8d2: 0x0d87, 0x8d3: 0x0d8b, 0x8d4: 0x0d9f, 0x8d5: 0x0e1f, 0x8d6: 0x0e2f, 0x8d7: 0x0e87,
-	0x8d8: 0x0ed3, 0x8d9: 0x0ecb, 0x8da: 0x0edf, 0x8db: 0x0efb, 0x8dc: 0x0f33, 0x8dd: 0x108b,
-	0x8de: 0x0f57, 0x8df: 0x0f8b, 0x8e0: 0x0f97, 0x8e1: 0x0fd7, 0x8e2: 0x0ff3, 0x8e3: 0x1017,
-	0x8e4: 0x103b, 0x8e5: 0x103f, 0x8e6: 0x105b, 0x8e7: 0x105f, 0x8e8: 0x106f, 0x8e9: 0x1083,
-	0x8ea: 0x107f, 0x8eb: 0x10af, 0x8ec: 0x112b, 0x8ed: 0x1143, 0x8ee: 0x115b, 0x8ef: 0x1193,
-	0x8f0: 0x11a7, 0x8f1: 0x11c3, 0x8f2: 0x11f3, 0x8f3: 0x12a7, 0x8f4: 0x12cf, 0x8f5: 0x1343,
-	0x8f6: 0x138b, 0x8f7: 0x1397, 0x8f8: 0x139f, 0x8f9: 0x13b7, 0x8fa: 0x13cb, 0x8fb: 0x13bb,
-	0x8fc: 0x13d3, 0x8fd: 0x13cf, 0x8fe: 0x13c7, 0x8ff: 0x13d7,
+	0x8c0: 0x0a2b, 0x8c1: 0x0a3b, 0x8c2: 0x0b23, 0x8c3: 0x0b2b, 0x8c4: 0x0b5b, 0x8c5: 0x0b7b,
+	0x8c6: 0x0bab, 0x8c7: 0x0bc3, 0x8c8: 0x0bb3, 0x8c9: 0x0bd3, 0x8ca: 0x0bc7, 0x8cb: 0x0beb,
+	0x8cc: 0x0c07, 0x8cd: 0x0c5f, 0x8ce: 0x0c6b, 0x8cf: 0x0c73, 0x8d0: 0x0c9b, 0x8d1: 0x0cdf,
+	0x8d2: 0x0d0f, 0x8d3: 0x0d13, 0x8d4: 0x0d27, 0x8d5: 0x0da7, 0x8d6: 0x0db7, 0x8d7: 0x0e0f,
+	0x8d8: 0x0e5b, 0x8d9: 0x0e53, 0x8da: 0x0e67, 0x8db: 0x0e83, 0x8dc: 0x0ebb, 0x8dd: 0x1013,
+	0x8de: 0x0edf, 0x8df: 0x0f13, 0x8e0: 0x0f1f, 0x8e1: 0x0f5f, 0x8e2: 0x0f7b, 0x8e3: 0x0f9f,
+	0x8e4: 0x0fc3, 0x8e5: 0x0fc7, 0x8e6: 0x0fe3, 0x8e7: 0x0fe7, 0x8e8: 0x0ff7, 0x8e9: 0x100b,
+	0x8ea: 0x1007, 0x8eb: 0x1037, 0x8ec: 0x10b3, 0x8ed: 0x10cb, 0x8ee: 0x10e3, 0x8ef: 0x111b,
+	0x8f0: 0x112f, 0x8f1: 0x114b, 0x8f2: 0x117b, 0x8f3: 0x122f, 0x8f4: 0x1257, 0x8f5: 0x12cb,
+	0x8f6: 0x1313, 0x8f7: 0x131f, 0x8f8: 0x1327, 0x8f9: 0x133f, 0x8fa: 0x1353, 0x8fb: 0x1343,
+	0x8fc: 0x135b, 0x8fd: 0x1357, 0x8fe: 0x134f, 0x8ff: 0x135f,
 	// Block 0x24, offset 0x900
-	0x900: 0x13e3, 0x901: 0x141f, 0x902: 0x145b, 0x903: 0x148b, 0x904: 0x14bf, 0x905: 0x14df,
-	0x906: 0x152b, 0x907: 0x154f, 0x908: 0x156f, 0x909: 0x1583, 0x90a: 0x1593, 0x90b: 0x159f,
-	0x90c: 0x15ab, 0x90d: 0x15ff, 0x90e: 0x169f, 0x90f: 0x1729, 0x910: 0x1724, 0x911: 0x1756,
-	0x912: 0x067f, 0x913: 0x06a7, 0x914: 0x06ab, 0x915: 0x17d8, 0x916: 0x1805, 0x917: 0x187d,
-	0x918: 0x168b, 0x919: 0x169b,
+	0x900: 0x136b, 0x901: 0x13a7, 0x902: 0x13e3, 0x903: 0x1413, 0x904: 0x1447, 0x905: 0x1467,
+	0x906: 0x14b3, 0x907: 0x14d7, 0x908: 0x14f7, 0x909: 0x150b, 0x90a: 0x151b, 0x90b: 0x1527,
+	0x90c: 0x1533, 0x90d: 0x1587, 0x90e: 0x1627, 0x90f: 0x16b1, 0x910: 0x16ac, 0x911: 0x16de,
+	0x912: 0x0607, 0x913: 0x062f, 0x914: 0x0633, 0x915: 0x1760, 0x916: 0x178d, 0x917: 0x1805,
+	0x918: 0x1613, 0x919: 0x1623,
 	// Block 0x25, offset 0x940
-	0x940: 0x0773, 0x941: 0x076b, 0x942: 0x077b, 0x943: 0x16bb, 0x944: 0x07bf, 0x945: 0x07cf,
-	0x946: 0x07d3, 0x947: 0x07db, 0x948: 0x07e3, 0x949: 0x07e7, 0x94a: 0x07f3, 0x94b: 0x07eb,
-	0x94c: 0x062b, 0x94d: 0x16cf, 0x94e: 0x0807, 0x94f: 0x080b, 0x950: 0x080f, 0x951: 0x082b,
-	0x952: 0x16c0, 0x953: 0x062f, 0x954: 0x0817, 0x955: 0x0837, 0x956: 0x16ca, 0x957: 0x0847,
-	0x958: 0x084f, 0x959: 0x07af, 0x95a: 0x0857, 0x95b: 0x085b, 0x95c: 0x18a5, 0x95d: 0x0877,
-	0x95e: 0x087f, 0x95f: 0x0637, 0x960: 0x0897, 0x961: 0x089b, 0x962: 0x08a3, 0x963: 0x08a7,
-	0x964: 0x063b, 0x965: 0x08bf, 0x966: 0x08c3, 0x967: 0x08cf, 0x968: 0x08db, 0x969: 0x08df,
-	0x96a: 0x08e3, 0x96b: 0x08eb, 0x96c: 0x090b, 0x96d: 0x090f, 0x96e: 0x0917, 0x96f: 0x0927,
-	0x970: 0x092f, 0x971: 0x0933, 0x972: 0x0933, 0x973: 0x0933, 0x974: 0x16de, 0x975: 0x0f0b,
-	0x976: 0x0947, 0x977: 0x094f, 0x978: 0x16e3, 0x979: 0x095b, 0x97a: 0x0963, 0x97b: 0x096b,
-	0x97c: 0x0993, 0x97d: 0x097f, 0x97e: 0x098b, 0x97f: 0x098f,
+	0x940: 0x06fb, 0x941: 0x06f3, 0x942: 0x0703, 0x943: 0x1643, 0x944: 0x0747, 0x945: 0x0757,
+	0x946: 0x075b, 0x947: 0x0763, 0x948: 0x076b, 0x949: 0x076f, 0x94a: 0x077b, 0x94b: 0x0773,
+	0x94c: 0x05b3, 0x94d: 0x1657, 0x94e: 0x078f, 0x94f: 0x0793, 0x950: 0x0797, 0x951: 0x07b3,
+	0x952: 0x1648, 0x953: 0x05b7, 0x954: 0x079f, 0x955: 0x07bf, 0x956: 0x1652, 0x957: 0x07cf,
+	0x958: 0x07d7, 0x959: 0x0737, 0x95a: 0x07df, 0x95b: 0x07e3, 0x95c: 0x182d, 0x95d: 0x07ff,
+	0x95e: 0x0807, 0x95f: 0x05bf, 0x960: 0x081f, 0x961: 0x0823, 0x962: 0x082b, 0x963: 0x082f,
+	0x964: 0x05c3, 0x965: 0x0847, 0x966: 0x084b, 0x967: 0x0857, 0x968: 0x0863, 0x969: 0x0867,
+	0x96a: 0x086b, 0x96b: 0x0873, 0x96c: 0x0893, 0x96d: 0x0897, 0x96e: 0x089f, 0x96f: 0x08af,
+	0x970: 0x08b7, 0x971: 0x08bb, 0x972: 0x08bb, 0x973: 0x08bb, 0x974: 0x1666, 0x975: 0x0e93,
+	0x976: 0x08cf, 0x977: 0x08d7, 0x978: 0x166b, 0x979: 0x08e3, 0x97a: 0x08eb, 0x97b: 0x08f3,
+	0x97c: 0x091b, 0x97d: 0x0907, 0x97e: 0x0913, 0x97f: 0x0917,
 	// Block 0x26, offset 0x980
-	0x980: 0x0997, 0x981: 0x099f, 0x982: 0x09a3, 0x983: 0x09ab, 0x984: 0x09b3, 0x985: 0x09b7,
-	0x986: 0x09b7, 0x987: 0x09bf, 0x988: 0x09c7, 0x989: 0x09cb, 0x98a: 0x09d7, 0x98b: 0x09fb,
-	0x98c: 0x09df, 0x98d: 0x09ff, 0x98e: 0x09e3, 0x98f: 0x09eb, 0x990: 0x0883, 0x991: 0x0a47,
-	0x992: 0x0a0f, 0x993: 0x0a13, 0x994: 0x0a17, 0x995: 0x0a0b, 0x996: 0x0a1f, 0x997: 0x0a1b,
-	0x998: 0x0a33, 0x999: 0x16e8, 0x99a: 0x0a4f, 0x99b: 0x0a53, 0x99c: 0x0a5b, 0x99d: 0x0a67,
-	0x99e: 0x0a6f, 0x99f: 0x0a8b, 0x9a0: 0x16ed, 0x9a1: 0x16f2, 0x9a2: 0x0a97, 0x9a3: 0x0a9b,
-	0x9a4: 0x0a9f, 0x9a5: 0x0a93, 0x9a6: 0x0aa7, 0x9a7: 0x063f, 0x9a8: 0x0643, 0x9a9: 0x0aaf,
-	0x9aa: 0x0ab7, 0x9ab: 0x0ab7, 0x9ac: 0x16f7, 0x9ad: 0x0ad3, 0x9ae: 0x0ad7, 0x9af: 0x0adb,
-	0x9b0: 0x0ae3, 0x9b1: 0x16fc, 0x9b2: 0x0aeb, 0x9b3: 0x0aef, 0x9b4: 0x0bc7, 0x9b5: 0x0af7,
-	0x9b6: 0x0647, 0x9b7: 0x0b03, 0x9b8: 0x0b13, 0x9b9: 0x0b1f, 0x9ba: 0x0b1b, 0x9bb: 0x1706,
-	0x9bc: 0x0b27, 0x9bd: 0x170b, 0x9be: 0x0b33, 0x9bf: 0x0b2f,
+	0x980: 0x091f, 0x981: 0x0927, 0x982: 0x092b, 0x983: 0x0933, 0x984: 0x093b, 0x985: 0x093f,
+	0x986: 0x093f, 0x987: 0x0947, 0x988: 0x094f, 0x989: 0x0953, 0x98a: 0x095f, 0x98b: 0x0983,
+	0x98c: 0x0967, 0x98d: 0x0987, 0x98e: 0x096b, 0x98f: 0x0973, 0x990: 0x080b, 0x991: 0x09cf,
+	0x992: 0x0997, 0x993: 0x099b, 0x994: 0x099f, 0x995: 0x0993, 0x996: 0x09a7, 0x997: 0x09a3,
+	0x998: 0x09bb, 0x999: 0x1670, 0x99a: 0x09d7, 0x99b: 0x09db, 0x99c: 0x09e3, 0x99d: 0x09ef,
+	0x99e: 0x09f7, 0x99f: 0x0a13, 0x9a0: 0x1675, 0x9a1: 0x167a, 0x9a2: 0x0a1f, 0x9a3: 0x0a23,
+	0x9a4: 0x0a27, 0x9a5: 0x0a1b, 0x9a6: 0x0a2f, 0x9a7: 0x05c7, 0x9a8: 0x05cb, 0x9a9: 0x0a37,
+	0x9aa: 0x0a3f, 0x9ab: 0x0a3f, 0x9ac: 0x167f, 0x9ad: 0x0a5b, 0x9ae: 0x0a5f, 0x9af: 0x0a63,
+	0x9b0: 0x0a6b, 0x9b1: 0x1684, 0x9b2: 0x0a73, 0x9b3: 0x0a77, 0x9b4: 0x0b4f, 0x9b5: 0x0a7f,
+	0x9b6: 0x05cf, 0x9b7: 0x0a8b, 0x9b8: 0x0a9b, 0x9b9: 0x0aa7, 0x9ba: 0x0aa3, 0x9bb: 0x168e,
+	0x9bc: 0x0aaf, 0x9bd: 0x1693, 0x9be: 0x0abb, 0x9bf: 0x0ab7,
 	// Block 0x27, offset 0x9c0
-	0x9c0: 0x0b37, 0x9c1: 0x0b47, 0x9c2: 0x0b4b, 0x9c3: 0x064b, 0x9c4: 0x0b5b, 0x9c5: 0x0b63,
-	0x9c6: 0x0b67, 0x9c7: 0x0b6b, 0x9c8: 0x064f, 0x9c9: 0x1710, 0x9ca: 0x0653, 0x9cb: 0x0b87,
-	0x9cc: 0x0b8b, 0x9cd: 0x0b8f, 0x9ce: 0x0b97, 0x9cf: 0x18d7, 0x9d0: 0x0baf, 0x9d1: 0x171a,
-	0x9d2: 0x171a, 0x9d3: 0x124f, 0x9d4: 0x0bbf, 0x9d5: 0x0bbf, 0x9d6: 0x0657, 0x9d7: 0x173d,
-	0x9d8: 0x180f, 0x9d9: 0x0bcf, 0x9da: 0x0bd7, 0x9db: 0x065b, 0x9dc: 0x0beb, 0x9dd: 0x0bfb,
-	0x9de: 0x0bff, 0x9df: 0x0c07, 0x9e0: 0x0c17, 0x9e1: 0x0663, 0x9e2: 0x065f, 0x9e3: 0x0c1b,
-	0x9e4: 0x171f, 0x9e5: 0x0c1f, 0x9e6: 0x0c33, 0x9e7: 0x0c37, 0x9e8: 0x0c3b, 0x9e9: 0x0c37,
-	0x9ea: 0x0c47, 0x9eb: 0x0c4b, 0x9ec: 0x0c5b, 0x9ed: 0x0c53, 0x9ee: 0x0c57, 0x9ef: 0x0c5f,
-	0x9f0: 0x0c63, 0x9f1: 0x0c67, 0x9f2: 0x0c73, 0x9f3: 0x0c77, 0x9f4: 0x0c8f, 0x9f5: 0x0c97,
-	0x9f6: 0x0ca7, 0x9f7: 0x0cbb, 0x9f8: 0x172e, 0x9f9: 0x0cb7, 0x9fa: 0x0cab, 0x9fb: 0x0cc3,
-	0x9fc: 0x0ccb, 0x9fd: 0x0cdf, 0x9fe: 0x1733, 0x9ff: 0x0ce7,
+	0x9c0: 0x0abf, 0x9c1: 0x0acf, 0x9c2: 0x0ad3, 0x9c3: 0x05d3, 0x9c4: 0x0ae3, 0x9c5: 0x0aeb,
+	0x9c6: 0x0aef, 0x9c7: 0x0af3, 0x9c8: 0x05d7, 0x9c9: 0x1698, 0x9ca: 0x05db, 0x9cb: 0x0b0f,
+	0x9cc: 0x0b13, 0x9cd: 0x0b17, 0x9ce: 0x0b1f, 0x9cf: 0x185f, 0x9d0: 0x0b37, 0x9d1: 0x16a2,
+	0x9d2: 0x16a2, 0x9d3: 0x11d7, 0x9d4: 0x0b47, 0x9d5: 0x0b47, 0x9d6: 0x05df, 0x9d7: 0x16c5,
+	0x9d8: 0x1797, 0x9d9: 0x0b57, 0x9da: 0x0b5f, 0x9db: 0x05e3, 0x9dc: 0x0b73, 0x9dd: 0x0b83,
+	0x9de: 0x0b87, 0x9df: 0x0b8f, 0x9e0: 0x0b9f, 0x9e1: 0x05eb, 0x9e2: 0x05e7, 0x9e3: 0x0ba3,
+	0x9e4: 0x16a7, 0x9e5: 0x0ba7, 0x9e6: 0x0bbb, 0x9e7: 0x0bbf, 0x9e8: 0x0bc3, 0x9e9: 0x0bbf,
+	0x9ea: 0x0bcf, 0x9eb: 0x0bd3, 0x9ec: 0x0be3, 0x9ed: 0x0bdb, 0x9ee: 0x0bdf, 0x9ef: 0x0be7,
+	0x9f0: 0x0beb, 0x9f1: 0x0bef, 0x9f2: 0x0bfb, 0x9f3: 0x0bff, 0x9f4: 0x0c17, 0x9f5: 0x0c1f,
+	0x9f6: 0x0c2f, 0x9f7: 0x0c43, 0x9f8: 0x16b6, 0x9f9: 0x0c3f, 0x9fa: 0x0c33, 0x9fb: 0x0c4b,
+	0x9fc: 0x0c53, 0x9fd: 0x0c67, 0x9fe: 0x16bb, 0x9ff: 0x0c6f,
 	// Block 0x28, offset 0xa00
-	0xa00: 0x0cdb, 0xa01: 0x0cd3, 0xa02: 0x0667, 0xa03: 0x0cef, 0xa04: 0x0cf7, 0xa05: 0x0cff,
-	0xa06: 0x0cf3, 0xa07: 0x066b, 0xa08: 0x0d0f, 0xa09: 0x0d17, 0xa0a: 0x1738, 0xa0b: 0x0d43,
-	0xa0c: 0x0d77, 0xa0d: 0x0d53, 0xa0e: 0x0677, 0xa0f: 0x0d5f, 0xa10: 0x0673, 0xa11: 0x066f,
-	0xa12: 0x083b, 0xa13: 0x083f, 0xa14: 0x0d7b, 0xa15: 0x0d63, 0xa16: 0x1223, 0xa17: 0x06db,
-	0xa18: 0x0d87, 0xa19: 0x0d8b, 0xa1a: 0x0d8f, 0xa1b: 0x0da3, 0xa1c: 0x0d9b, 0xa1d: 0x1751,
-	0xa1e: 0x067b, 0xa1f: 0x0db7, 0xa20: 0x0dab, 0xa21: 0x0dc7, 0xa22: 0x0dcf, 0xa23: 0x175b,
-	0xa24: 0x0dd3, 0xa25: 0x0dbf, 0xa26: 0x0ddb, 0xa27: 0x067f, 0xa28: 0x0ddf, 0xa29: 0x0de3,
-	0xa2a: 0x0de7, 0xa2b: 0x0df3, 0xa2c: 0x1760, 0xa2d: 0x0dfb, 0xa2e: 0x0683, 0xa2f: 0x0e07,
-	0xa30: 0x1765, 0xa31: 0x0e0b, 0xa32: 0x0687, 0xa33: 0x0e17, 0xa34: 0x0e23, 0xa35: 0x0e2f,
-	0xa36: 0x0e33, 0xa37: 0x176a, 0xa38: 0x1701, 0xa39: 0x176f, 0xa3a: 0x0e53, 0xa3b: 0x1774,
-	0xa3c: 0x0e5f, 0xa3d: 0x0e67, 0xa3e: 0x0e57, 0xa3f: 0x0e73,
+	0xa00: 0x0c63, 0xa01: 0x0c5b, 0xa02: 0x05ef, 0xa03: 0x0c77, 0xa04: 0x0c7f, 0xa05: 0x0c87,
+	0xa06: 0x0c7b, 0xa07: 0x05f3, 0xa08: 0x0c97, 0xa09: 0x0c9f, 0xa0a: 0x16c0, 0xa0b: 0x0ccb,
+	0xa0c: 0x0cff, 0xa0d: 0x0cdb, 0xa0e: 0x05ff, 0xa0f: 0x0ce7, 0xa10: 0x05fb, 0xa11: 0x05f7,
+	0xa12: 0x07c3, 0xa13: 0x07c7, 0xa14: 0x0d03, 0xa15: 0x0ceb, 0xa16: 0x11ab, 0xa17: 0x0663,
+	0xa18: 0x0d0f, 0xa19: 0x0d13, 0xa1a: 0x0d17, 0xa1b: 0x0d2b, 0xa1c: 0x0d23, 0xa1d: 0x16d9,
+	0xa1e: 0x0603, 0xa1f: 0x0d3f, 0xa20: 0x0d33, 0xa21: 0x0d4f, 0xa22: 0x0d57, 0xa23: 0x16e3,
+	0xa24: 0x0d5b, 0xa25: 0x0d47, 0xa26: 0x0d63, 0xa27: 0x0607, 0xa28: 0x0d67, 0xa29: 0x0d6b,
+	0xa2a: 0x0d6f, 0xa2b: 0x0d7b, 0xa2c: 0x16e8, 0xa2d: 0x0d83, 0xa2e: 0x060b, 0xa2f: 0x0d8f,
+	0xa30: 0x16ed, 0xa31: 0x0d93, 0xa32: 0x060f, 0xa33: 0x0d9f, 0xa34: 0x0dab, 0xa35: 0x0db7,
+	0xa36: 0x0dbb, 0xa37: 0x16f2, 0xa38: 0x1689, 0xa39: 0x16f7, 0xa3a: 0x0ddb, 0xa3b: 0x16fc,
+	0xa3c: 0x0de7, 0xa3d: 0x0def, 0xa3e: 0x0ddf, 0xa3f: 0x0dfb,
 	// Block 0x29, offset 0xa40
-	0xa40: 0x0e83, 0xa41: 0x0e93, 0xa42: 0x0e87, 0xa43: 0x0e8b, 0xa44: 0x0e97, 0xa45: 0x0e9b,
-	0xa46: 0x1779, 0xa47: 0x0e7f, 0xa48: 0x0eb3, 0xa49: 0x0eb7, 0xa4a: 0x068b, 0xa4b: 0x0ecb,
-	0xa4c: 0x0ec7, 0xa4d: 0x177e, 0xa4e: 0x0eab, 0xa4f: 0x0ee7, 0xa50: 0x1783, 0xa51: 0x1788,
-	0xa52: 0x0eeb, 0xa53: 0x0eff, 0xa54: 0x0efb, 0xa55: 0x0ef7, 0xa56: 0x068f, 0xa57: 0x0f03,
-	0xa58: 0x0f13, 0xa59: 0x0f0f, 0xa5a: 0x0f1b, 0xa5b: 0x16c5, 0xa5c: 0x0f2b, 0xa5d: 0x178d,
-	0xa5e: 0x0f37, 0xa5f: 0x1797, 0xa60: 0x0f4b, 0xa61: 0x0f57, 0xa62: 0x0f6b, 0xa63: 0x179c,
-	0xa64: 0x0f7f, 0xa65: 0x0f83, 0xa66: 0x17a1, 0xa67: 0x17a6, 0xa68: 0x0f9f, 0xa69: 0x0faf,
-	0xa6a: 0x0693, 0xa6b: 0x0fb3, 0xa6c: 0x0697, 0xa6d: 0x0697, 0xa6e: 0x0fcb, 0xa6f: 0x0fcf,
-	0xa70: 0x0fd7, 0xa71: 0x0fdb, 0xa72: 0x0fe7, 0xa73: 0x069b, 0xa74: 0x0fff, 0xa75: 0x17ab,
-	0xa76: 0x101b, 0xa77: 0x17b0, 0xa78: 0x1027, 0xa79: 0x1715, 0xa7a: 0x1037, 0xa7b: 0x17b5,
-	0xa7c: 0x17ba, 0xa7d: 0x17bf, 0xa7e: 0x069f, 0xa7f: 0x06a3,
+	0xa40: 0x0e0b, 0xa41: 0x0e1b, 0xa42: 0x0e0f, 0xa43: 0x0e13, 0xa44: 0x0e1f, 0xa45: 0x0e23,
+	0xa46: 0x1701, 0xa47: 0x0e07, 0xa48: 0x0e3b, 0xa49: 0x0e3f, 0xa4a: 0x0613, 0xa4b: 0x0e53,
+	0xa4c: 0x0e4f, 0xa4d: 0x1706, 0xa4e: 0x0e33, 0xa4f: 0x0e6f, 0xa50: 0x170b, 0xa51: 0x1710,
+	0xa52: 0x0e73, 0xa53: 0x0e87, 0xa54: 0x0e83, 0xa55: 0x0e7f, 0xa56: 0x0617, 0xa57: 0x0e8b,
+	0xa58: 0x0e9b, 0xa59: 0x0e97, 0xa5a: 0x0ea3, 0xa5b: 0x164d, 0xa5c: 0x0eb3, 0xa5d: 0x1715,
+	0xa5e: 0x0ebf, 0xa5f: 0x171f, 0xa60: 0x0ed3, 0xa61: 0x0edf, 0xa62: 0x0ef3, 0xa63: 0x1724,
+	0xa64: 0x0f07, 0xa65: 0x0f0b, 0xa66: 0x1729, 0xa67: 0x172e, 0xa68: 0x0f27, 0xa69: 0x0f37,
+	0xa6a: 0x061b, 0xa6b: 0x0f3b, 0xa6c: 0x061f, 0xa6d: 0x061f, 0xa6e: 0x0f53, 0xa6f: 0x0f57,
+	0xa70: 0x0f5f, 0xa71: 0x0f63, 0xa72: 0x0f6f, 0xa73: 0x0623, 0xa74: 0x0f87, 0xa75: 0x1733,
+	0xa76: 0x0fa3, 0xa77: 0x1738, 0xa78: 0x0faf, 0xa79: 0x169d, 0xa7a: 0x0fbf, 0xa7b: 0x173d,
+	0xa7c: 0x1742, 0xa7d: 0x1747, 0xa7e: 0x0627, 0xa7f: 0x062b,
 	// Block 0x2a, offset 0xa80
-	0xa80: 0x106f, 0xa81: 0x17c9, 0xa82: 0x17c4, 0xa83: 0x17ce, 0xa84: 0x17d3, 0xa85: 0x1077,
-	0xa86: 0x107b, 0xa87: 0x107b, 0xa88: 0x1083, 0xa89: 0x06ab, 0xa8a: 0x1087, 0xa8b: 0x06af,
-	0xa8c: 0x06b3, 0xa8d: 0x17dd, 0xa8e: 0x109b, 0xa8f: 0x10a3, 0xa90: 0x10af, 0xa91: 0x06b7,
-	0xa92: 0x17e2, 0xa93: 0x10d3, 0xa94: 0x17e7, 0xa95: 0x17ec, 0xa96: 0x10f3, 0xa97: 0x110b,
-	0xa98: 0x06bb, 0xa99: 0x1113, 0xa9a: 0x1117, 0xa9b: 0x111b, 0xa9c: 0x17f1, 0xa9d: 0x17f6,
-	0xa9e: 0x17f6, 0xa9f: 0x1133, 0xaa0: 0x06bf, 0xaa1: 0x17fb, 0xaa2: 0x1147, 0xaa3: 0x114b,
-	0xaa4: 0x06c3, 0xaa5: 0x1800, 0xaa6: 0x1167, 0xaa7: 0x06c7, 0xaa8: 0x1177, 0xaa9: 0x116f,
-	0xaaa: 0x117f, 0xaab: 0x180a, 0xaac: 0x1197, 0xaad: 0x06cb, 0xaae: 0x11a3, 0xaaf: 0x11ab,
-	0xab0: 0x11bb, 0xab1: 0x06cf, 0xab2: 0x1814, 0xab3: 0x1819, 0xab4: 0x06d3, 0xab5: 0x181e,
-	0xab6: 0x11d3, 0xab7: 0x1823, 0xab8: 0x11df, 0xab9: 0x11eb, 0xaba: 0x11f3, 0xabb: 0x1828,
-	0xabc: 0x182d, 0xabd: 0x1207, 0xabe: 0x1832, 0xabf: 0x120f,
+	0xa80: 0x0ff7, 0xa81: 0x1751, 0xa82: 0x174c, 0xa83: 0x1756, 0xa84: 0x175b, 0xa85: 0x0fff,
+	0xa86: 0x1003, 0xa87: 0x1003, 0xa88: 0x100b, 0xa89: 0x0633, 0xa8a: 0x100f, 0xa8b: 0x0637,
+	0xa8c: 0x063b, 0xa8d: 0x1765, 0xa8e: 0x1023, 0xa8f: 0x102b, 0xa90: 0x1037, 0xa91: 0x063f,
+	0xa92: 0x176a, 0xa93: 0x105b, 0xa94: 0x176f, 0xa95: 0x1774, 0xa96: 0x107b, 0xa97: 0x1093,
+	0xa98: 0x0643, 0xa99: 0x109b, 0xa9a: 0x109f, 0xa9b: 0x10a3, 0xa9c: 0x1779, 0xa9d: 0x177e,
+	0xa9e: 0x177e, 0xa9f: 0x10bb, 0xaa0: 0x0647, 0xaa1: 0x1783, 0xaa2: 0x10cf, 0xaa3: 0x10d3,
+	0xaa4: 0x064b, 0xaa5: 0x1788, 0xaa6: 0x10ef, 0xaa7: 0x064f, 0xaa8: 0x10ff, 0xaa9: 0x10f7,
+	0xaaa: 0x1107, 0xaab: 0x1792, 0xaac: 0x111f, 0xaad: 0x0653, 0xaae: 0x112b, 0xaaf: 0x1133,
+	0xab0: 0x1143, 0xab1: 0x0657, 0xab2: 0x179c, 0xab3: 0x17a1, 0xab4: 0x065b, 0xab5: 0x17a6,
+	0xab6: 0x115b, 0xab7: 0x17ab, 0xab8: 0x1167, 0xab9: 0x1173, 0xaba: 0x117b, 0xabb: 0x17b0,
+	0xabc: 0x17b5, 0xabd: 0x118f, 0xabe: 0x17ba, 0xabf: 0x1197,
 	// Block 0x2b, offset 0xac0
-	0xac0: 0x1742, 0xac1: 0x06d7, 0xac2: 0x1227, 0xac3: 0x122b, 0xac4: 0x06df, 0xac5: 0x122f,
-	0xac6: 0x0aab, 0xac7: 0x1837, 0xac8: 0x183c, 0xac9: 0x1747, 0xaca: 0x174c, 0xacb: 0x124f,
-	0xacc: 0x1253, 0xacd: 0x146b, 0xace: 0x06e3, 0xacf: 0x127f, 0xad0: 0x127b, 0xad1: 0x1283,
-	0xad2: 0x08b7, 0xad3: 0x1287, 0xad4: 0x128b, 0xad5: 0x128f, 0xad6: 0x1297, 0xad7: 0x1841,
-	0xad8: 0x1293, 0xad9: 0x129b, 0xada: 0x12af, 0xadb: 0x12b3, 0xadc: 0x129f, 0xadd: 0x12b7,
-	0xade: 0x12cb, 0xadf: 0x12df, 0xae0: 0x12ab, 0xae1: 0x12bf, 0xae2: 0x12c3, 0xae3: 0x12c7,
-	0xae4: 0x1846, 0xae5: 0x1850, 0xae6: 0x184b, 0xae7: 0x06e7, 0xae8: 0x12e7, 0xae9: 0x12eb,
-	0xaea: 0x12f3, 0xaeb: 0x1864, 0xaec: 0x12f7, 0xaed: 0x1855, 0xaee: 0x06eb, 0xaef: 0x06ef,
-	0xaf0: 0x185a, 0xaf1: 0x185f, 0xaf2: 0x06f3, 0xaf3: 0x1317, 0xaf4: 0x131b, 0xaf5: 0x131f,
-	0xaf6: 0x1323, 0xaf7: 0x132f, 0xaf8: 0x132b, 0xaf9: 0x1337, 0xafa: 0x1333, 0xafb: 0x1343,
-	0xafc: 0x133b, 0xafd: 0x133f, 0xafe: 0x1347, 0xaff: 0x06f7,
+	0xac0: 0x16ca, 0xac1: 0x065f, 0xac2: 0x11af, 0xac3: 0x11b3, 0xac4: 0x0667, 0xac5: 0x11b7,
+	0xac6: 0x0a33, 0xac7: 0x17bf, 0xac8: 0x17c4, 0xac9: 0x16cf, 0xaca: 0x16d4, 0xacb: 0x11d7,
+	0xacc: 0x11db, 0xacd: 0x13f3, 0xace: 0x066b, 0xacf: 0x1207, 0xad0: 0x1203, 0xad1: 0x120b,
+	0xad2: 0x083f, 0xad3: 0x120f, 0xad4: 0x1213, 0xad5: 0x1217, 0xad6: 0x121f, 0xad7: 0x17c9,
+	0xad8: 0x121b, 0xad9: 0x1223, 0xada: 0x1237, 0xadb: 0x123b, 0xadc: 0x1227, 0xadd: 0x123f,
+	0xade: 0x1253, 0xadf: 0x1267, 0xae0: 0x1233, 0xae1: 0x1247, 0xae2: 0x124b, 0xae3: 0x124f,
+	0xae4: 0x17ce, 0xae5: 0x17d8, 0xae6: 0x17d3, 0xae7: 0x066f, 0xae8: 0x126f, 0xae9: 0x1273,
+	0xaea: 0x127b, 0xaeb: 0x17ec, 0xaec: 0x127f, 0xaed: 0x17dd, 0xaee: 0x0673, 0xaef: 0x0677,
+	0xaf0: 0x17e2, 0xaf1: 0x17e7, 0xaf2: 0x067b, 0xaf3: 0x129f, 0xaf4: 0x12a3, 0xaf5: 0x12a7,
+	0xaf6: 0x12ab, 0xaf7: 0x12b7, 0xaf8: 0x12b3, 0xaf9: 0x12bf, 0xafa: 0x12bb, 0xafb: 0x12cb,
+	0xafc: 0x12c3, 0xafd: 0x12c7, 0xafe: 0x12cf, 0xaff: 0x067f,
 	// Block 0x2c, offset 0xb00
-	0xb00: 0x134f, 0xb01: 0x1353, 0xb02: 0x06fb, 0xb03: 0x1363, 0xb04: 0x1367, 0xb05: 0x1869,
-	0xb06: 0x1373, 0xb07: 0x1377, 0xb08: 0x06ff, 0xb09: 0x1383, 0xb0a: 0x0633, 0xb0b: 0x186e,
-	0xb0c: 0x1873, 0xb0d: 0x0703, 0xb0e: 0x0707, 0xb0f: 0x13af, 0xb10: 0x13c7, 0xb11: 0x13e3,
-	0xb12: 0x13f3, 0xb13: 0x1878, 0xb14: 0x1407, 0xb15: 0x140b, 0xb16: 0x1423, 0xb17: 0x142f,
-	0xb18: 0x1882, 0xb19: 0x16d4, 0xb1a: 0x143b, 0xb1b: 0x1437, 0xb1c: 0x1443, 0xb1d: 0x16d9,
-	0xb1e: 0x144f, 0xb1f: 0x145b, 0xb20: 0x1887, 0xb21: 0x188c, 0xb22: 0x149b, 0xb23: 0x14a7,
-	0xb24: 0x14af, 0xb25: 0x1891, 0xb26: 0x14b3, 0xb27: 0x14db, 0xb28: 0x14e7, 0xb29: 0x14eb,
-	0xb2a: 0x14e3, 0xb2b: 0x14f7, 0xb2c: 0x14fb, 0xb2d: 0x1896, 0xb2e: 0x1507, 0xb2f: 0x070b,
-	0xb30: 0x150f, 0xb31: 0x189b, 0xb32: 0x070f, 0xb33: 0x1547, 0xb34: 0x0b3b, 0xb35: 0x155f,
-	0xb36: 0x18a0, 0xb37: 0x18aa, 0xb38: 0x0713, 0xb39: 0x0717, 0xb3a: 0x1587, 0xb3b: 0x18af,
-	0xb3c: 0x071b, 0xb3d: 0x18b4, 0xb3e: 0x159f, 0xb3f: 0x159f,
+	0xb00: 0x12d7, 0xb01: 0x12db, 0xb02: 0x0683, 0xb03: 0x12eb, 0xb04: 0x12ef, 0xb05: 0x17f1,
+	0xb06: 0x12fb, 0xb07: 0x12ff, 0xb08: 0x0687, 0xb09: 0x130b, 0xb0a: 0x05bb, 0xb0b: 0x17f6,
+	0xb0c: 0x17fb, 0xb0d: 0x068b, 0xb0e: 0x068f, 0xb0f: 0x1337, 0xb10: 0x134f, 0xb11: 0x136b,
+	0xb12: 0x137b, 0xb13: 0x1800, 0xb14: 0x138f, 0xb15: 0x1393, 0xb16: 0x13ab, 0xb17: 0x13b7,
+	0xb18: 0x180a, 0xb19: 0x165c, 0xb1a: 0x13c3, 0xb1b: 0x13bf, 0xb1c: 0x13cb, 0xb1d: 0x1661,
+	0xb1e: 0x13d7, 0xb1f: 0x13e3, 0xb20: 0x180f, 0xb21: 0x1814, 0xb22: 0x1423, 0xb23: 0x142f,
+	0xb24: 0x1437, 0xb25: 0x1819, 0xb26: 0x143b, 0xb27: 0x1463, 0xb28: 0x146f, 0xb29: 0x1473,
+	0xb2a: 0x146b, 0xb2b: 0x147f, 0xb2c: 0x1483, 0xb2d: 0x181e, 0xb2e: 0x148f, 0xb2f: 0x0693,
+	0xb30: 0x1497, 0xb31: 0x1823, 0xb32: 0x0697, 0xb33: 0x14cf, 0xb34: 0x0ac3, 0xb35: 0x14e7,
+	0xb36: 0x1828, 0xb37: 0x1832, 0xb38: 0x069b, 0xb39: 0x069f, 0xb3a: 0x150f, 0xb3b: 0x1837,
+	0xb3c: 0x06a3, 0xb3d: 0x183c, 0xb3e: 0x1527, 0xb3f: 0x1527,
 	// Block 0x2d, offset 0xb40
-	0xb40: 0x15a7, 0xb41: 0x18b9, 0xb42: 0x15bf, 0xb43: 0x071f, 0xb44: 0x15cf, 0xb45: 0x15db,
-	0xb46: 0x15e3, 0xb47: 0x15eb, 0xb48: 0x0723, 0xb49: 0x18be, 0xb4a: 0x15ff, 0xb4b: 0x161b,
-	0xb4c: 0x1627, 0xb4d: 0x0727, 0xb4e: 0x072b, 0xb4f: 0x162b, 0xb50: 0x18c3, 0xb51: 0x072f,
-	0xb52: 0x18c8, 0xb53: 0x18cd, 0xb54: 0x18d2, 0xb55: 0x164f, 0xb56: 0x0733, 0xb57: 0x1663,
-	0xb58: 0x166b, 0xb59: 0x166f, 0xb5a: 0x1677, 0xb5b: 0x167f, 0xb5c: 0x1687, 0xb5d: 0x18dc,
+	0xb40: 0x152f, 0xb41: 0x1841, 0xb42: 0x1547, 0xb43: 0x06a7, 0xb44: 0x1557, 0xb45: 0x1563,
+	0xb46: 0x156b, 0xb47: 0x1573, 0xb48: 0x06ab, 0xb49: 0x1846, 0xb4a: 0x1587, 0xb4b: 0x15a3,
+	0xb4c: 0x15af, 0xb4d: 0x06af, 0xb4e: 0x06b3, 0xb4f: 0x15b3, 0xb50: 0x184b, 0xb51: 0x06b7,
+	0xb52: 0x1850, 0xb53: 0x1855, 0xb54: 0x185a, 0xb55: 0x15d7, 0xb56: 0x06bb, 0xb57: 0x15eb,
+	0xb58: 0x15f3, 0xb59: 0x15f7, 0xb5a: 0x15ff, 0xb5b: 0x1607, 0xb5c: 0x160f, 0xb5d: 0x1864,
 }
 
 // nfcIndex: 22 blocks, 1408 entries, 1408 bytes
@@ -3427,62 +3437,62 @@
 	0x1ab: 0x71,
 	0x1b3: 0x72, 0x1b5: 0x73, 0x1b7: 0x74,
 	// Block 0x7, offset 0x1c0
-	0x1c0: 0x75, 0x1c1: 0x18, 0x1c2: 0x19, 0x1c3: 0x1a,
-	0x1cc: 0x76, 0x1cd: 0x77,
+	0x1c0: 0x75, 0x1c1: 0x18, 0x1c2: 0x19, 0x1c3: 0x1a, 0x1c4: 0x76, 0x1c5: 0x77,
+	0x1c9: 0x78, 0x1cc: 0x79, 0x1cd: 0x7a,
 	// Block 0x8, offset 0x200
-	0x219: 0x78, 0x21a: 0x79, 0x21b: 0x7a,
-	0x220: 0x7b, 0x223: 0x7c, 0x224: 0x7d, 0x225: 0x7e, 0x226: 0x7f, 0x227: 0x80,
-	0x22a: 0x81, 0x22b: 0x82, 0x22f: 0x83,
-	0x230: 0x84, 0x231: 0x85, 0x232: 0x86, 0x233: 0x87, 0x234: 0x88, 0x235: 0x89, 0x236: 0x8a, 0x237: 0x84,
-	0x238: 0x85, 0x239: 0x86, 0x23a: 0x87, 0x23b: 0x88, 0x23c: 0x89, 0x23d: 0x8a, 0x23e: 0x84, 0x23f: 0x85,
+	0x219: 0x7b, 0x21a: 0x7c, 0x21b: 0x7d,
+	0x220: 0x7e, 0x223: 0x7f, 0x224: 0x80, 0x225: 0x81, 0x226: 0x82, 0x227: 0x83,
+	0x22a: 0x84, 0x22b: 0x85, 0x22f: 0x86,
+	0x230: 0x87, 0x231: 0x88, 0x232: 0x89, 0x233: 0x8a, 0x234: 0x8b, 0x235: 0x8c, 0x236: 0x8d, 0x237: 0x87,
+	0x238: 0x88, 0x239: 0x89, 0x23a: 0x8a, 0x23b: 0x8b, 0x23c: 0x8c, 0x23d: 0x8d, 0x23e: 0x87, 0x23f: 0x88,
 	// Block 0x9, offset 0x240
-	0x240: 0x86, 0x241: 0x87, 0x242: 0x88, 0x243: 0x89, 0x244: 0x8a, 0x245: 0x84, 0x246: 0x85, 0x247: 0x86,
-	0x248: 0x87, 0x249: 0x88, 0x24a: 0x89, 0x24b: 0x8a, 0x24c: 0x84, 0x24d: 0x85, 0x24e: 0x86, 0x24f: 0x87,
-	0x250: 0x88, 0x251: 0x89, 0x252: 0x8a, 0x253: 0x84, 0x254: 0x85, 0x255: 0x86, 0x256: 0x87, 0x257: 0x88,
-	0x258: 0x89, 0x259: 0x8a, 0x25a: 0x84, 0x25b: 0x85, 0x25c: 0x86, 0x25d: 0x87, 0x25e: 0x88, 0x25f: 0x89,
-	0x260: 0x8a, 0x261: 0x84, 0x262: 0x85, 0x263: 0x86, 0x264: 0x87, 0x265: 0x88, 0x266: 0x89, 0x267: 0x8a,
-	0x268: 0x84, 0x269: 0x85, 0x26a: 0x86, 0x26b: 0x87, 0x26c: 0x88, 0x26d: 0x89, 0x26e: 0x8a, 0x26f: 0x84,
-	0x270: 0x85, 0x271: 0x86, 0x272: 0x87, 0x273: 0x88, 0x274: 0x89, 0x275: 0x8a, 0x276: 0x84, 0x277: 0x85,
-	0x278: 0x86, 0x279: 0x87, 0x27a: 0x88, 0x27b: 0x89, 0x27c: 0x8a, 0x27d: 0x84, 0x27e: 0x85, 0x27f: 0x86,
+	0x240: 0x89, 0x241: 0x8a, 0x242: 0x8b, 0x243: 0x8c, 0x244: 0x8d, 0x245: 0x87, 0x246: 0x88, 0x247: 0x89,
+	0x248: 0x8a, 0x249: 0x8b, 0x24a: 0x8c, 0x24b: 0x8d, 0x24c: 0x87, 0x24d: 0x88, 0x24e: 0x89, 0x24f: 0x8a,
+	0x250: 0x8b, 0x251: 0x8c, 0x252: 0x8d, 0x253: 0x87, 0x254: 0x88, 0x255: 0x89, 0x256: 0x8a, 0x257: 0x8b,
+	0x258: 0x8c, 0x259: 0x8d, 0x25a: 0x87, 0x25b: 0x88, 0x25c: 0x89, 0x25d: 0x8a, 0x25e: 0x8b, 0x25f: 0x8c,
+	0x260: 0x8d, 0x261: 0x87, 0x262: 0x88, 0x263: 0x89, 0x264: 0x8a, 0x265: 0x8b, 0x266: 0x8c, 0x267: 0x8d,
+	0x268: 0x87, 0x269: 0x88, 0x26a: 0x89, 0x26b: 0x8a, 0x26c: 0x8b, 0x26d: 0x8c, 0x26e: 0x8d, 0x26f: 0x87,
+	0x270: 0x88, 0x271: 0x89, 0x272: 0x8a, 0x273: 0x8b, 0x274: 0x8c, 0x275: 0x8d, 0x276: 0x87, 0x277: 0x88,
+	0x278: 0x89, 0x279: 0x8a, 0x27a: 0x8b, 0x27b: 0x8c, 0x27c: 0x8d, 0x27d: 0x87, 0x27e: 0x88, 0x27f: 0x89,
 	// Block 0xa, offset 0x280
-	0x280: 0x87, 0x281: 0x88, 0x282: 0x89, 0x283: 0x8a, 0x284: 0x84, 0x285: 0x85, 0x286: 0x86, 0x287: 0x87,
-	0x288: 0x88, 0x289: 0x89, 0x28a: 0x8a, 0x28b: 0x84, 0x28c: 0x85, 0x28d: 0x86, 0x28e: 0x87, 0x28f: 0x88,
-	0x290: 0x89, 0x291: 0x8a, 0x292: 0x84, 0x293: 0x85, 0x294: 0x86, 0x295: 0x87, 0x296: 0x88, 0x297: 0x89,
-	0x298: 0x8a, 0x299: 0x84, 0x29a: 0x85, 0x29b: 0x86, 0x29c: 0x87, 0x29d: 0x88, 0x29e: 0x89, 0x29f: 0x8a,
-	0x2a0: 0x84, 0x2a1: 0x85, 0x2a2: 0x86, 0x2a3: 0x87, 0x2a4: 0x88, 0x2a5: 0x89, 0x2a6: 0x8a, 0x2a7: 0x84,
-	0x2a8: 0x85, 0x2a9: 0x86, 0x2aa: 0x87, 0x2ab: 0x88, 0x2ac: 0x89, 0x2ad: 0x8a, 0x2ae: 0x84, 0x2af: 0x85,
-	0x2b0: 0x86, 0x2b1: 0x87, 0x2b2: 0x88, 0x2b3: 0x89, 0x2b4: 0x8a, 0x2b5: 0x84, 0x2b6: 0x85, 0x2b7: 0x86,
-	0x2b8: 0x87, 0x2b9: 0x88, 0x2ba: 0x89, 0x2bb: 0x8a, 0x2bc: 0x84, 0x2bd: 0x85, 0x2be: 0x86, 0x2bf: 0x87,
+	0x280: 0x8a, 0x281: 0x8b, 0x282: 0x8c, 0x283: 0x8d, 0x284: 0x87, 0x285: 0x88, 0x286: 0x89, 0x287: 0x8a,
+	0x288: 0x8b, 0x289: 0x8c, 0x28a: 0x8d, 0x28b: 0x87, 0x28c: 0x88, 0x28d: 0x89, 0x28e: 0x8a, 0x28f: 0x8b,
+	0x290: 0x8c, 0x291: 0x8d, 0x292: 0x87, 0x293: 0x88, 0x294: 0x89, 0x295: 0x8a, 0x296: 0x8b, 0x297: 0x8c,
+	0x298: 0x8d, 0x299: 0x87, 0x29a: 0x88, 0x29b: 0x89, 0x29c: 0x8a, 0x29d: 0x8b, 0x29e: 0x8c, 0x29f: 0x8d,
+	0x2a0: 0x87, 0x2a1: 0x88, 0x2a2: 0x89, 0x2a3: 0x8a, 0x2a4: 0x8b, 0x2a5: 0x8c, 0x2a6: 0x8d, 0x2a7: 0x87,
+	0x2a8: 0x88, 0x2a9: 0x89, 0x2aa: 0x8a, 0x2ab: 0x8b, 0x2ac: 0x8c, 0x2ad: 0x8d, 0x2ae: 0x87, 0x2af: 0x88,
+	0x2b0: 0x89, 0x2b1: 0x8a, 0x2b2: 0x8b, 0x2b3: 0x8c, 0x2b4: 0x8d, 0x2b5: 0x87, 0x2b6: 0x88, 0x2b7: 0x89,
+	0x2b8: 0x8a, 0x2b9: 0x8b, 0x2ba: 0x8c, 0x2bb: 0x8d, 0x2bc: 0x87, 0x2bd: 0x88, 0x2be: 0x89, 0x2bf: 0x8a,
 	// Block 0xb, offset 0x2c0
-	0x2c0: 0x88, 0x2c1: 0x89, 0x2c2: 0x8a, 0x2c3: 0x84, 0x2c4: 0x85, 0x2c5: 0x86, 0x2c6: 0x87, 0x2c7: 0x88,
-	0x2c8: 0x89, 0x2c9: 0x8a, 0x2ca: 0x84, 0x2cb: 0x85, 0x2cc: 0x86, 0x2cd: 0x87, 0x2ce: 0x88, 0x2cf: 0x89,
-	0x2d0: 0x8a, 0x2d1: 0x84, 0x2d2: 0x85, 0x2d3: 0x86, 0x2d4: 0x87, 0x2d5: 0x88, 0x2d6: 0x89, 0x2d7: 0x8a,
-	0x2d8: 0x84, 0x2d9: 0x85, 0x2da: 0x86, 0x2db: 0x87, 0x2dc: 0x88, 0x2dd: 0x89, 0x2de: 0x8b,
+	0x2c0: 0x8b, 0x2c1: 0x8c, 0x2c2: 0x8d, 0x2c3: 0x87, 0x2c4: 0x88, 0x2c5: 0x89, 0x2c6: 0x8a, 0x2c7: 0x8b,
+	0x2c8: 0x8c, 0x2c9: 0x8d, 0x2ca: 0x87, 0x2cb: 0x88, 0x2cc: 0x89, 0x2cd: 0x8a, 0x2ce: 0x8b, 0x2cf: 0x8c,
+	0x2d0: 0x8d, 0x2d1: 0x87, 0x2d2: 0x88, 0x2d3: 0x89, 0x2d4: 0x8a, 0x2d5: 0x8b, 0x2d6: 0x8c, 0x2d7: 0x8d,
+	0x2d8: 0x87, 0x2d9: 0x88, 0x2da: 0x89, 0x2db: 0x8a, 0x2dc: 0x8b, 0x2dd: 0x8c, 0x2de: 0x8e,
 	// Block 0xc, offset 0x300
 	0x324: 0x1b, 0x325: 0x1c, 0x326: 0x1d, 0x327: 0x1e,
-	0x328: 0x1f, 0x329: 0x20, 0x32a: 0x21, 0x32b: 0x22, 0x32c: 0x8c, 0x32d: 0x8d, 0x32e: 0x8e,
-	0x331: 0x8f, 0x332: 0x90, 0x333: 0x91, 0x334: 0x92,
-	0x338: 0x93, 0x339: 0x94, 0x33a: 0x95, 0x33b: 0x96, 0x33e: 0x97, 0x33f: 0x98,
+	0x328: 0x1f, 0x329: 0x20, 0x32a: 0x21, 0x32b: 0x22, 0x32c: 0x8f, 0x32d: 0x90, 0x32e: 0x91,
+	0x331: 0x92, 0x332: 0x93, 0x333: 0x94, 0x334: 0x95,
+	0x338: 0x96, 0x339: 0x97, 0x33a: 0x98, 0x33b: 0x99, 0x33e: 0x9a, 0x33f: 0x9b,
 	// Block 0xd, offset 0x340
-	0x347: 0x99,
-	0x34b: 0x9a, 0x34d: 0x9b,
-	0x368: 0x9c, 0x36b: 0x9d,
+	0x347: 0x9c,
+	0x34b: 0x9d, 0x34d: 0x9e,
+	0x368: 0x9f, 0x36b: 0xa0,
 	// Block 0xe, offset 0x380
-	0x381: 0x9e, 0x382: 0x9f, 0x384: 0xa0, 0x385: 0x7f, 0x387: 0x80,
-	0x388: 0xa1, 0x38b: 0xa2, 0x38c: 0x3e, 0x38d: 0xa3,
-	0x392: 0xa4, 0x393: 0xa5, 0x396: 0xa6, 0x397: 0xa7,
-	0x398: 0x73, 0x39a: 0xa8,
+	0x381: 0xa1, 0x382: 0xa2, 0x384: 0xa3, 0x385: 0x82, 0x387: 0x83,
+	0x388: 0xa4, 0x38b: 0xa5, 0x38c: 0x3e, 0x38d: 0xa6,
+	0x392: 0xa7, 0x393: 0xa8, 0x396: 0xa9, 0x397: 0xaa,
+	0x398: 0x73, 0x39a: 0xab,
 	// Block 0xf, offset 0x3c0
-	0x3eb: 0xa9, 0x3ec: 0xaa,
+	0x3eb: 0xac, 0x3ec: 0xad,
 	// Block 0x10, offset 0x400
-	0x432: 0xab,
+	0x432: 0xae,
 	// Block 0x11, offset 0x440
-	0x445: 0xac, 0x446: 0xad, 0x447: 0xae,
-	0x449: 0xaf,
+	0x445: 0xaf, 0x446: 0xb0, 0x447: 0xb1,
+	0x449: 0xb2,
 	// Block 0x12, offset 0x480
-	0x4a3: 0xb0,
+	0x4a3: 0xb3,
 	// Block 0x13, offset 0x4c0
-	0x4c8: 0xb1,
+	0x4c8: 0xb4,
 	// Block 0x14, offset 0x500
 	0x520: 0x23, 0x521: 0x24, 0x522: 0x25, 0x523: 0x26, 0x524: 0x27, 0x525: 0x28, 0x526: 0x29, 0x527: 0x2a,
 	0x528: 0x2b,
@@ -3492,11 +3502,11 @@
 	0x56f: 0x12,
 }
 
-// nfcSparseOffset: 134 entries, 268 bytes
-var nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x62, 0x67, 0x69, 0x78, 0x80, 0x87, 0x8a, 0x92, 0x96, 0x9a, 0x9c, 0x9e, 0xa7, 0xab, 0xb2, 0xb7, 0xba, 0xc4, 0xc6, 0xcd, 0xd5, 0xd8, 0xda, 0xdc, 0xde, 0xe3, 0xf4, 0x100, 0x102, 0x108, 0x10a, 0x10c, 0x10e, 0x110, 0x112, 0x114, 0x117, 0x11a, 0x11c, 0x11f, 0x122, 0x126, 0x12b, 0x134, 0x136, 0x139, 0x13b, 0x146, 0x155, 0x159, 0x167, 0x16a, 0x170, 0x176, 0x181, 0x185, 0x187, 0x189, 0x18b, 0x18d, 0x18f, 0x195, 0x19d, 0x1a1, 0x1a4, 0x1a6, 0x1a8, 0x1aa, 0x1ad, 0x1af, 0x1b1, 0x1b3, 0x1b5, 0x1bb, 0x1be, 0x1c0, 0x1c7, 0x1cd, 0x1d3, 0x1db, 0x1e1, 0x1e7, 0x1ed, 0x1f1, 0x1ff, 0x208, 0x20b, 0x20e, 0x210, 0x213, 0x215, 0x218, 0x21d, 0x21f, 0x221, 0x223, 0x225, 0x227, 0x229, 0x22b, 0x231, 0x234, 0x237, 0x23f, 0x246, 0x249, 0x24b, 0x253, 0x25a, 0x25d, 0x263, 0x265, 0x268, 0x26a, 0x26c, 0x26e, 0x27b, 0x285, 0x287, 0x289, 0x28b}
+// nfcSparseOffset: 137 entries, 274 bytes
+var nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x62, 0x67, 0x69, 0x78, 0x80, 0x87, 0x8a, 0x91, 0x95, 0x99, 0x9b, 0x9d, 0xa6, 0xaa, 0xb1, 0xb6, 0xb9, 0xc3, 0xc5, 0xcc, 0xd4, 0xd7, 0xd9, 0xdb, 0xdd, 0xe2, 0xf3, 0xff, 0x101, 0x107, 0x109, 0x10b, 0x10d, 0x10f, 0x111, 0x113, 0x116, 0x119, 0x11b, 0x11e, 0x121, 0x125, 0x12a, 0x133, 0x135, 0x138, 0x13a, 0x145, 0x154, 0x158, 0x166, 0x169, 0x16f, 0x175, 0x180, 0x184, 0x186, 0x188, 0x18a, 0x18c, 0x18e, 0x194, 0x198, 0x19a, 0x19c, 0x1a4, 0x1a8, 0x1ab, 0x1ad, 0x1af, 0x1b1, 0x1b4, 0x1b6, 0x1b8, 0x1ba, 0x1bc, 0x1c2, 0x1c5, 0x1c7, 0x1ce, 0x1d4, 0x1da, 0x1e2, 0x1e8, 0x1ee, 0x1f4, 0x1f8, 0x206, 0x20f, 0x212, 0x215, 0x217, 0x21a, 0x21c, 0x21f, 0x224, 0x226, 0x228, 0x22d, 0x233, 0x235, 0x237, 0x239, 0x23f, 0x242, 0x245, 0x24d, 0x254, 0x257, 0x259, 0x261, 0x268, 0x26b, 0x271, 0x273, 0x276, 0x278, 0x27a, 0x27c, 0x289, 0x293, 0x295, 0x297, 0x299}
 
-// nfcSparseValues: 653 entries, 2612 bytes
-var nfcSparseValues = [653]valueRange{
+// nfcSparseValues: 667 entries, 2668 bytes
+var nfcSparseValues = [667]valueRange{
 	// Block 0x0, offset 0x0
 	{value: 0x0000, lo: 0x04},
 	{value: 0xa100, lo: 0xa8, hi: 0xa8},
@@ -3505,8 +3515,8 @@
 	{value: 0x8100, lo: 0xb8, hi: 0xb8},
 	// Block 0x1, offset 0x5
 	{value: 0x0091, lo: 0x03},
-	{value: 0x471d, lo: 0xa0, hi: 0xa1},
-	{value: 0x474f, lo: 0xaf, hi: 0xb0},
+	{value: 0x4774, lo: 0xa0, hi: 0xa1},
+	{value: 0x47a6, lo: 0xaf, hi: 0xb0},
 	{value: 0xa000, lo: 0xb7, hi: 0xb7},
 	// Block 0x2, offset 0x9
 	{value: 0x0000, lo: 0x01},
@@ -3519,30 +3529,30 @@
 	{value: 0xa000, lo: 0x81, hi: 0x81},
 	{value: 0xa000, lo: 0x85, hi: 0x85},
 	{value: 0xa000, lo: 0x89, hi: 0x89},
-	{value: 0x487b, lo: 0x8a, hi: 0x8a},
-	{value: 0x4899, lo: 0x8b, hi: 0x8b},
-	{value: 0x3702, lo: 0x8c, hi: 0x8c},
-	{value: 0x371a, lo: 0x8d, hi: 0x8d},
-	{value: 0x48b1, lo: 0x8e, hi: 0x8e},
+	{value: 0x48d2, lo: 0x8a, hi: 0x8a},
+	{value: 0x48f0, lo: 0x8b, hi: 0x8b},
+	{value: 0x36c3, lo: 0x8c, hi: 0x8c},
+	{value: 0x36db, lo: 0x8d, hi: 0x8d},
+	{value: 0x4908, lo: 0x8e, hi: 0x8e},
 	{value: 0xa000, lo: 0x92, hi: 0x92},
-	{value: 0x3738, lo: 0x93, hi: 0x94},
+	{value: 0x36f9, lo: 0x93, hi: 0x94},
 	// Block 0x5, offset 0x18
 	{value: 0x0000, lo: 0x0f},
 	{value: 0xa000, lo: 0x83, hi: 0x83},
 	{value: 0xa000, lo: 0x87, hi: 0x87},
 	{value: 0xa000, lo: 0x8b, hi: 0x8b},
 	{value: 0xa000, lo: 0x8d, hi: 0x8d},
-	{value: 0x37e0, lo: 0x90, hi: 0x90},
-	{value: 0x37ec, lo: 0x91, hi: 0x91},
-	{value: 0x37da, lo: 0x93, hi: 0x93},
+	{value: 0x37a1, lo: 0x90, hi: 0x90},
+	{value: 0x37ad, lo: 0x91, hi: 0x91},
+	{value: 0x379b, lo: 0x93, hi: 0x93},
 	{value: 0xa000, lo: 0x96, hi: 0x96},
-	{value: 0x3852, lo: 0x97, hi: 0x97},
-	{value: 0x381c, lo: 0x9c, hi: 0x9c},
-	{value: 0x3804, lo: 0x9d, hi: 0x9d},
-	{value: 0x382e, lo: 0x9e, hi: 0x9e},
+	{value: 0x3813, lo: 0x97, hi: 0x97},
+	{value: 0x37dd, lo: 0x9c, hi: 0x9c},
+	{value: 0x37c5, lo: 0x9d, hi: 0x9d},
+	{value: 0x37ef, lo: 0x9e, hi: 0x9e},
 	{value: 0xa000, lo: 0xb4, hi: 0xb5},
-	{value: 0x3858, lo: 0xb6, hi: 0xb6},
-	{value: 0x385e, lo: 0xb7, hi: 0xb7},
+	{value: 0x3819, lo: 0xb6, hi: 0xb6},
+	{value: 0x381f, lo: 0xb7, hi: 0xb7},
 	// Block 0x6, offset 0x28
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8132, lo: 0x83, hi: 0x87},
@@ -3558,19 +3568,19 @@
 	{value: 0x8119, lo: 0x98, hi: 0x98},
 	{value: 0x811a, lo: 0x99, hi: 0x99},
 	{value: 0x811b, lo: 0x9a, hi: 0x9a},
-	{value: 0x387c, lo: 0xa2, hi: 0xa2},
-	{value: 0x3882, lo: 0xa3, hi: 0xa3},
-	{value: 0x388e, lo: 0xa4, hi: 0xa4},
-	{value: 0x3888, lo: 0xa5, hi: 0xa5},
-	{value: 0x3894, lo: 0xa6, hi: 0xa6},
+	{value: 0x383d, lo: 0xa2, hi: 0xa2},
+	{value: 0x3843, lo: 0xa3, hi: 0xa3},
+	{value: 0x384f, lo: 0xa4, hi: 0xa4},
+	{value: 0x3849, lo: 0xa5, hi: 0xa5},
+	{value: 0x3855, lo: 0xa6, hi: 0xa6},
 	{value: 0xa000, lo: 0xa7, hi: 0xa7},
 	// Block 0x9, offset 0x3a
 	{value: 0x0000, lo: 0x0e},
-	{value: 0x38a6, lo: 0x80, hi: 0x80},
+	{value: 0x3867, lo: 0x80, hi: 0x80},
 	{value: 0xa000, lo: 0x81, hi: 0x81},
-	{value: 0x389a, lo: 0x82, hi: 0x82},
+	{value: 0x385b, lo: 0x82, hi: 0x82},
 	{value: 0xa000, lo: 0x92, hi: 0x92},
-	{value: 0x38a0, lo: 0x93, hi: 0x93},
+	{value: 0x3861, lo: 0x93, hi: 0x93},
 	{value: 0xa000, lo: 0x95, hi: 0x95},
 	{value: 0x8132, lo: 0x96, hi: 0x9c},
 	{value: 0x8132, lo: 0x9f, hi: 0xa2},
@@ -3636,11 +3646,11 @@
 	// Block 0x10, offset 0x78
 	{value: 0x0000, lo: 0x07},
 	{value: 0xa000, lo: 0xa8, hi: 0xa8},
-	{value: 0x3f13, lo: 0xa9, hi: 0xa9},
+	{value: 0x3ed4, lo: 0xa9, hi: 0xa9},
 	{value: 0xa000, lo: 0xb0, hi: 0xb0},
-	{value: 0x3f1b, lo: 0xb1, hi: 0xb1},
+	{value: 0x3edc, lo: 0xb1, hi: 0xb1},
 	{value: 0xa000, lo: 0xb3, hi: 0xb3},
-	{value: 0x3f23, lo: 0xb4, hi: 0xb4},
+	{value: 0x3ee4, lo: 0xb4, hi: 0xb4},
 	{value: 0x9902, lo: 0xbc, hi: 0xbc},
 	// Block 0x11, offset 0x80
 	{value: 0x0008, lo: 0x06},
@@ -3649,229 +3659,228 @@
 	{value: 0x812d, lo: 0x92, hi: 0x92},
 	{value: 0x8132, lo: 0x93, hi: 0x93},
 	{value: 0x8132, lo: 0x94, hi: 0x94},
-	{value: 0x4557, lo: 0x98, hi: 0x9f},
+	{value: 0x45ae, lo: 0x98, hi: 0x9f},
 	// Block 0x12, offset 0x87
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8102, lo: 0xbc, hi: 0xbc},
 	{value: 0x9900, lo: 0xbe, hi: 0xbe},
 	// Block 0x13, offset 0x8a
-	{value: 0x0007, lo: 0x07},
+	{value: 0x0008, lo: 0x06},
 	{value: 0xa000, lo: 0x87, hi: 0x87},
-	{value: 0x18e1, lo: 0x8b, hi: 0x8c},
+	{value: 0x2c9a, lo: 0x8b, hi: 0x8c},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
 	{value: 0x9900, lo: 0x97, hi: 0x97},
-	{value: 0x4597, lo: 0x9c, hi: 0x9c},
-	{value: 0x459f, lo: 0x9d, hi: 0x9d},
-	{value: 0x45a7, lo: 0x9f, hi: 0x9f},
-	// Block 0x14, offset 0x92
+	{value: 0x45ee, lo: 0x9c, hi: 0x9d},
+	{value: 0x45fe, lo: 0x9f, hi: 0x9f},
+	// Block 0x14, offset 0x91
 	{value: 0x0000, lo: 0x03},
-	{value: 0x45cf, lo: 0xb3, hi: 0xb3},
-	{value: 0x45d7, lo: 0xb6, hi: 0xb6},
+	{value: 0x4626, lo: 0xb3, hi: 0xb3},
+	{value: 0x462e, lo: 0xb6, hi: 0xb6},
 	{value: 0x8102, lo: 0xbc, hi: 0xbc},
-	// Block 0x15, offset 0x96
+	// Block 0x15, offset 0x95
 	{value: 0x0008, lo: 0x03},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
-	{value: 0x45af, lo: 0x99, hi: 0x9b},
-	{value: 0x45c7, lo: 0x9e, hi: 0x9e},
-	// Block 0x16, offset 0x9a
+	{value: 0x4606, lo: 0x99, hi: 0x9b},
+	{value: 0x461e, lo: 0x9e, hi: 0x9e},
+	// Block 0x16, offset 0x99
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8102, lo: 0xbc, hi: 0xbc},
-	// Block 0x17, offset 0x9c
+	// Block 0x17, offset 0x9b
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
-	// Block 0x18, offset 0x9e
+	// Block 0x18, offset 0x9d
 	{value: 0x0000, lo: 0x08},
 	{value: 0xa000, lo: 0x87, hi: 0x87},
-	{value: 0x18f6, lo: 0x88, hi: 0x88},
-	{value: 0x18ef, lo: 0x8b, hi: 0x8b},
-	{value: 0x18fd, lo: 0x8c, hi: 0x8c},
+	{value: 0x2cb2, lo: 0x88, hi: 0x88},
+	{value: 0x2caa, lo: 0x8b, hi: 0x8b},
+	{value: 0x2cba, lo: 0x8c, hi: 0x8c},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
 	{value: 0x9900, lo: 0x96, hi: 0x97},
-	{value: 0x45df, lo: 0x9c, hi: 0x9c},
-	{value: 0x45e7, lo: 0x9d, hi: 0x9d},
-	// Block 0x19, offset 0xa7
+	{value: 0x4636, lo: 0x9c, hi: 0x9c},
+	{value: 0x463e, lo: 0x9d, hi: 0x9d},
+	// Block 0x19, offset 0xa6
 	{value: 0x0000, lo: 0x03},
 	{value: 0xa000, lo: 0x92, hi: 0x92},
-	{value: 0x1904, lo: 0x94, hi: 0x94},
+	{value: 0x2cc2, lo: 0x94, hi: 0x94},
 	{value: 0x9900, lo: 0xbe, hi: 0xbe},
-	// Block 0x1a, offset 0xab
+	// Block 0x1a, offset 0xaa
 	{value: 0x0000, lo: 0x06},
 	{value: 0xa000, lo: 0x86, hi: 0x87},
-	{value: 0x190b, lo: 0x8a, hi: 0x8a},
-	{value: 0x1919, lo: 0x8b, hi: 0x8b},
-	{value: 0x1912, lo: 0x8c, hi: 0x8c},
+	{value: 0x2cca, lo: 0x8a, hi: 0x8a},
+	{value: 0x2cda, lo: 0x8b, hi: 0x8b},
+	{value: 0x2cd2, lo: 0x8c, hi: 0x8c},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
 	{value: 0x9900, lo: 0x97, hi: 0x97},
-	// Block 0x1b, offset 0xb2
+	// Block 0x1b, offset 0xb1
 	{value: 0x1801, lo: 0x04},
 	{value: 0xa000, lo: 0x86, hi: 0x86},
-	{value: 0x3f2b, lo: 0x88, hi: 0x88},
+	{value: 0x3eec, lo: 0x88, hi: 0x88},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
 	{value: 0x8120, lo: 0x95, hi: 0x96},
-	// Block 0x1c, offset 0xb7
+	// Block 0x1c, offset 0xb6
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8102, lo: 0xbc, hi: 0xbc},
 	{value: 0xa000, lo: 0xbf, hi: 0xbf},
-	// Block 0x1d, offset 0xba
+	// Block 0x1d, offset 0xb9
 	{value: 0x0000, lo: 0x09},
-	{value: 0x1920, lo: 0x80, hi: 0x80},
+	{value: 0x2ce2, lo: 0x80, hi: 0x80},
 	{value: 0x9900, lo: 0x82, hi: 0x82},
 	{value: 0xa000, lo: 0x86, hi: 0x86},
-	{value: 0x1927, lo: 0x87, hi: 0x87},
-	{value: 0x192e, lo: 0x88, hi: 0x88},
-	{value: 0x2eb7, lo: 0x8a, hi: 0x8a},
-	{value: 0x19f6, lo: 0x8b, hi: 0x8b},
+	{value: 0x2cea, lo: 0x87, hi: 0x87},
+	{value: 0x2cf2, lo: 0x88, hi: 0x88},
+	{value: 0x2f4c, lo: 0x8a, hi: 0x8a},
+	{value: 0x2dd4, lo: 0x8b, hi: 0x8b},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
 	{value: 0x9900, lo: 0x95, hi: 0x96},
-	// Block 0x1e, offset 0xc4
+	// Block 0x1e, offset 0xc3
 	{value: 0x0000, lo: 0x01},
 	{value: 0x9900, lo: 0xbe, hi: 0xbe},
-	// Block 0x1f, offset 0xc6
+	// Block 0x1f, offset 0xc5
 	{value: 0x0000, lo: 0x06},
 	{value: 0xa000, lo: 0x86, hi: 0x87},
-	{value: 0x1935, lo: 0x8a, hi: 0x8a},
-	{value: 0x1943, lo: 0x8b, hi: 0x8b},
-	{value: 0x193c, lo: 0x8c, hi: 0x8c},
+	{value: 0x2cfa, lo: 0x8a, hi: 0x8a},
+	{value: 0x2d0a, lo: 0x8b, hi: 0x8b},
+	{value: 0x2d02, lo: 0x8c, hi: 0x8c},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
 	{value: 0x9900, lo: 0x97, hi: 0x97},
-	// Block 0x20, offset 0xcd
-	{value: 0x0007, lo: 0x07},
+	// Block 0x20, offset 0xcc
+	{value: 0x6bee, lo: 0x07},
 	{value: 0x9904, lo: 0x8a, hi: 0x8a},
 	{value: 0x9900, lo: 0x8f, hi: 0x8f},
 	{value: 0xa000, lo: 0x99, hi: 0x99},
-	{value: 0x3f33, lo: 0x9a, hi: 0x9a},
-	{value: 0x2ebe, lo: 0x9c, hi: 0x9d},
-	{value: 0x194a, lo: 0x9e, hi: 0x9e},
-	{value: 0x9900, lo: 0x9f, hi: 0x9f},
-	// Block 0x21, offset 0xd5
+	{value: 0x3ef4, lo: 0x9a, hi: 0x9a},
+	{value: 0x2f54, lo: 0x9c, hi: 0x9c},
+	{value: 0x2ddf, lo: 0x9d, hi: 0x9d},
+	{value: 0x2d12, lo: 0x9e, hi: 0x9f},
+	// Block 0x21, offset 0xd4
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8122, lo: 0xb8, hi: 0xb9},
 	{value: 0x8104, lo: 0xba, hi: 0xba},
-	// Block 0x22, offset 0xd8
+	// Block 0x22, offset 0xd7
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8123, lo: 0x88, hi: 0x8b},
-	// Block 0x23, offset 0xda
+	// Block 0x23, offset 0xd9
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8124, lo: 0xb8, hi: 0xb9},
-	// Block 0x24, offset 0xdc
+	// Block 0x24, offset 0xdb
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8125, lo: 0x88, hi: 0x8b},
-	// Block 0x25, offset 0xde
+	// Block 0x25, offset 0xdd
 	{value: 0x0000, lo: 0x04},
 	{value: 0x812d, lo: 0x98, hi: 0x99},
 	{value: 0x812d, lo: 0xb5, hi: 0xb5},
 	{value: 0x812d, lo: 0xb7, hi: 0xb7},
 	{value: 0x812b, lo: 0xb9, hi: 0xb9},
-	// Block 0x26, offset 0xe3
+	// Block 0x26, offset 0xe2
 	{value: 0x0000, lo: 0x10},
-	{value: 0x27d7, lo: 0x83, hi: 0x83},
-	{value: 0x27de, lo: 0x8d, hi: 0x8d},
-	{value: 0x27e5, lo: 0x92, hi: 0x92},
-	{value: 0x27ec, lo: 0x97, hi: 0x97},
-	{value: 0x27f3, lo: 0x9c, hi: 0x9c},
-	{value: 0x27d0, lo: 0xa9, hi: 0xa9},
+	{value: 0x2640, lo: 0x83, hi: 0x83},
+	{value: 0x2647, lo: 0x8d, hi: 0x8d},
+	{value: 0x264e, lo: 0x92, hi: 0x92},
+	{value: 0x2655, lo: 0x97, hi: 0x97},
+	{value: 0x265c, lo: 0x9c, hi: 0x9c},
+	{value: 0x2639, lo: 0xa9, hi: 0xa9},
 	{value: 0x8126, lo: 0xb1, hi: 0xb1},
 	{value: 0x8127, lo: 0xb2, hi: 0xb2},
-	{value: 0x4a0b, lo: 0xb3, hi: 0xb3},
+	{value: 0x4a62, lo: 0xb3, hi: 0xb3},
 	{value: 0x8128, lo: 0xb4, hi: 0xb4},
-	{value: 0x4a14, lo: 0xb5, hi: 0xb5},
-	{value: 0x45ef, lo: 0xb6, hi: 0xb6},
+	{value: 0x4a6b, lo: 0xb5, hi: 0xb5},
+	{value: 0x4646, lo: 0xb6, hi: 0xb6},
 	{value: 0x8200, lo: 0xb7, hi: 0xb7},
-	{value: 0x45f7, lo: 0xb8, hi: 0xb8},
+	{value: 0x464e, lo: 0xb8, hi: 0xb8},
 	{value: 0x8200, lo: 0xb9, hi: 0xb9},
 	{value: 0x8127, lo: 0xba, hi: 0xbd},
-	// Block 0x27, offset 0xf4
+	// Block 0x27, offset 0xf3
 	{value: 0x0000, lo: 0x0b},
 	{value: 0x8127, lo: 0x80, hi: 0x80},
-	{value: 0x4a1d, lo: 0x81, hi: 0x81},
+	{value: 0x4a74, lo: 0x81, hi: 0x81},
 	{value: 0x8132, lo: 0x82, hi: 0x83},
 	{value: 0x8104, lo: 0x84, hi: 0x84},
 	{value: 0x8132, lo: 0x86, hi: 0x87},
-	{value: 0x2801, lo: 0x93, hi: 0x93},
-	{value: 0x2808, lo: 0x9d, hi: 0x9d},
-	{value: 0x280f, lo: 0xa2, hi: 0xa2},
-	{value: 0x2816, lo: 0xa7, hi: 0xa7},
-	{value: 0x281d, lo: 0xac, hi: 0xac},
-	{value: 0x27fa, lo: 0xb9, hi: 0xb9},
-	// Block 0x28, offset 0x100
+	{value: 0x266a, lo: 0x93, hi: 0x93},
+	{value: 0x2671, lo: 0x9d, hi: 0x9d},
+	{value: 0x2678, lo: 0xa2, hi: 0xa2},
+	{value: 0x267f, lo: 0xa7, hi: 0xa7},
+	{value: 0x2686, lo: 0xac, hi: 0xac},
+	{value: 0x2663, lo: 0xb9, hi: 0xb9},
+	// Block 0x28, offset 0xff
 	{value: 0x0000, lo: 0x01},
 	{value: 0x812d, lo: 0x86, hi: 0x86},
-	// Block 0x29, offset 0x102
+	// Block 0x29, offset 0x101
 	{value: 0x0000, lo: 0x05},
 	{value: 0xa000, lo: 0xa5, hi: 0xa5},
-	{value: 0x1951, lo: 0xa6, hi: 0xa6},
+	{value: 0x2d1a, lo: 0xa6, hi: 0xa6},
 	{value: 0x9900, lo: 0xae, hi: 0xae},
 	{value: 0x8102, lo: 0xb7, hi: 0xb7},
 	{value: 0x8104, lo: 0xb9, hi: 0xba},
-	// Block 0x2a, offset 0x108
+	// Block 0x2a, offset 0x107
 	{value: 0x0000, lo: 0x01},
 	{value: 0x812d, lo: 0x8d, hi: 0x8d},
-	// Block 0x2b, offset 0x10a
+	// Block 0x2b, offset 0x109
 	{value: 0x0000, lo: 0x01},
 	{value: 0xa000, lo: 0x80, hi: 0x92},
-	// Block 0x2c, offset 0x10c
+	// Block 0x2c, offset 0x10b
 	{value: 0x0000, lo: 0x01},
 	{value: 0xb900, lo: 0xa1, hi: 0xb5},
-	// Block 0x2d, offset 0x10e
+	// Block 0x2d, offset 0x10d
 	{value: 0x0000, lo: 0x01},
 	{value: 0x9900, lo: 0xa8, hi: 0xbf},
-	// Block 0x2e, offset 0x110
+	// Block 0x2e, offset 0x10f
 	{value: 0x0000, lo: 0x01},
 	{value: 0x9900, lo: 0x80, hi: 0x82},
-	// Block 0x2f, offset 0x112
+	// Block 0x2f, offset 0x111
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8132, lo: 0x9d, hi: 0x9f},
-	// Block 0x30, offset 0x114
+	// Block 0x30, offset 0x113
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8104, lo: 0x94, hi: 0x94},
 	{value: 0x8104, lo: 0xb4, hi: 0xb4},
-	// Block 0x31, offset 0x117
+	// Block 0x31, offset 0x116
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8104, lo: 0x92, hi: 0x92},
 	{value: 0x8132, lo: 0x9d, hi: 0x9d},
-	// Block 0x32, offset 0x11a
+	// Block 0x32, offset 0x119
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8131, lo: 0xa9, hi: 0xa9},
-	// Block 0x33, offset 0x11c
+	// Block 0x33, offset 0x11b
 	{value: 0x0004, lo: 0x02},
 	{value: 0x812e, lo: 0xb9, hi: 0xba},
 	{value: 0x812d, lo: 0xbb, hi: 0xbb},
-	// Block 0x34, offset 0x11f
+	// Block 0x34, offset 0x11e
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8132, lo: 0x97, hi: 0x97},
 	{value: 0x812d, lo: 0x98, hi: 0x98},
-	// Block 0x35, offset 0x122
+	// Block 0x35, offset 0x121
 	{value: 0x0000, lo: 0x03},
 	{value: 0x8104, lo: 0xa0, hi: 0xa0},
 	{value: 0x8132, lo: 0xb5, hi: 0xbc},
 	{value: 0x812d, lo: 0xbf, hi: 0xbf},
-	// Block 0x36, offset 0x126
+	// Block 0x36, offset 0x125
 	{value: 0x0000, lo: 0x04},
 	{value: 0x8132, lo: 0xb0, hi: 0xb4},
 	{value: 0x812d, lo: 0xb5, hi: 0xba},
 	{value: 0x8132, lo: 0xbb, hi: 0xbc},
 	{value: 0x812d, lo: 0xbd, hi: 0xbd},
-	// Block 0x37, offset 0x12b
+	// Block 0x37, offset 0x12a
 	{value: 0x0000, lo: 0x08},
-	{value: 0x1990, lo: 0x80, hi: 0x80},
-	{value: 0x1997, lo: 0x81, hi: 0x81},
+	{value: 0x2d62, lo: 0x80, hi: 0x80},
+	{value: 0x2d6a, lo: 0x81, hi: 0x81},
 	{value: 0xa000, lo: 0x82, hi: 0x82},
-	{value: 0x199e, lo: 0x83, hi: 0x83},
+	{value: 0x2d72, lo: 0x83, hi: 0x83},
 	{value: 0x8104, lo: 0x84, hi: 0x84},
 	{value: 0x8132, lo: 0xab, hi: 0xab},
 	{value: 0x812d, lo: 0xac, hi: 0xac},
 	{value: 0x8132, lo: 0xad, hi: 0xb3},
-	// Block 0x38, offset 0x134
+	// Block 0x38, offset 0x133
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8104, lo: 0xaa, hi: 0xab},
-	// Block 0x39, offset 0x136
+	// Block 0x39, offset 0x135
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8102, lo: 0xa6, hi: 0xa6},
 	{value: 0x8104, lo: 0xb2, hi: 0xb3},
-	// Block 0x3a, offset 0x139
+	// Block 0x3a, offset 0x138
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8102, lo: 0xb7, hi: 0xb7},
-	// Block 0x3b, offset 0x13b
+	// Block 0x3b, offset 0x13a
 	{value: 0x0000, lo: 0x0a},
 	{value: 0x8132, lo: 0x90, hi: 0x92},
 	{value: 0x8101, lo: 0x94, hi: 0x94},
@@ -3883,7 +3892,7 @@
 	{value: 0x812d, lo: 0xad, hi: 0xad},
 	{value: 0x8132, lo: 0xb4, hi: 0xb4},
 	{value: 0x8132, lo: 0xb8, hi: 0xb9},
-	// Block 0x3c, offset 0x146
+	// Block 0x3c, offset 0x145
 	{value: 0x0000, lo: 0x0e},
 	{value: 0x8132, lo: 0x80, hi: 0x81},
 	{value: 0x812d, lo: 0x82, hi: 0x82},
@@ -3899,12 +3908,12 @@
 	{value: 0x812d, lo: 0xbd, hi: 0xbd},
 	{value: 0x8132, lo: 0xbe, hi: 0xbe},
 	{value: 0x812d, lo: 0xbf, hi: 0xbf},
-	// Block 0x3d, offset 0x155
+	// Block 0x3d, offset 0x154
 	{value: 0x0004, lo: 0x03},
-	{value: 0x04ab, lo: 0x80, hi: 0x81},
+	{value: 0x0433, lo: 0x80, hi: 0x81},
 	{value: 0x8100, lo: 0x97, hi: 0x97},
 	{value: 0x8100, lo: 0xbe, hi: 0xbe},
-	// Block 0x3e, offset 0x159
+	// Block 0x3e, offset 0x158
 	{value: 0x0000, lo: 0x0d},
 	{value: 0x8132, lo: 0x90, hi: 0x91},
 	{value: 0x8101, lo: 0x92, hi: 0x93},
@@ -3919,64 +3928,75 @@
 	{value: 0x8101, lo: 0xaa, hi: 0xab},
 	{value: 0x812d, lo: 0xac, hi: 0xaf},
 	{value: 0x8132, lo: 0xb0, hi: 0xb0},
-	// Block 0x3f, offset 0x167
-	{value: 0x42b6, lo: 0x02},
+	// Block 0x3f, offset 0x166
+	{value: 0x4277, lo: 0x02},
 	{value: 0x01b8, lo: 0xa6, hi: 0xa6},
 	{value: 0x0057, lo: 0xaa, hi: 0xab},
-	// Block 0x40, offset 0x16a
+	// Block 0x40, offset 0x169
 	{value: 0x0007, lo: 0x05},
 	{value: 0xa000, lo: 0x90, hi: 0x90},
 	{value: 0xa000, lo: 0x92, hi: 0x92},
 	{value: 0xa000, lo: 0x94, hi: 0x94},
-	{value: 0x3bf4, lo: 0x9a, hi: 0x9b},
-	{value: 0x3c02, lo: 0xae, hi: 0xae},
-	// Block 0x41, offset 0x170
+	{value: 0x3bb5, lo: 0x9a, hi: 0x9b},
+	{value: 0x3bc3, lo: 0xae, hi: 0xae},
+	// Block 0x41, offset 0x16f
 	{value: 0x000e, lo: 0x05},
-	{value: 0x3c09, lo: 0x8d, hi: 0x8e},
-	{value: 0x3c10, lo: 0x8f, hi: 0x8f},
+	{value: 0x3bca, lo: 0x8d, hi: 0x8e},
+	{value: 0x3bd1, lo: 0x8f, hi: 0x8f},
 	{value: 0xa000, lo: 0x90, hi: 0x90},
 	{value: 0xa000, lo: 0x92, hi: 0x92},
 	{value: 0xa000, lo: 0x94, hi: 0x94},
-	// Block 0x42, offset 0x176
-	{value: 0x63cd, lo: 0x0a},
+	// Block 0x42, offset 0x175
+	{value: 0x640c, lo: 0x0a},
 	{value: 0xa000, lo: 0x83, hi: 0x83},
-	{value: 0x3c1e, lo: 0x84, hi: 0x84},
+	{value: 0x3bdf, lo: 0x84, hi: 0x84},
 	{value: 0xa000, lo: 0x88, hi: 0x88},
-	{value: 0x3c25, lo: 0x89, hi: 0x89},
+	{value: 0x3be6, lo: 0x89, hi: 0x89},
 	{value: 0xa000, lo: 0x8b, hi: 0x8b},
-	{value: 0x3c2c, lo: 0x8c, hi: 0x8c},
+	{value: 0x3bed, lo: 0x8c, hi: 0x8c},
 	{value: 0xa000, lo: 0xa3, hi: 0xa3},
-	{value: 0x3c33, lo: 0xa4, hi: 0xa5},
-	{value: 0x3c3a, lo: 0xa6, hi: 0xa6},
+	{value: 0x3bf4, lo: 0xa4, hi: 0xa5},
+	{value: 0x3bfb, lo: 0xa6, hi: 0xa6},
 	{value: 0xa000, lo: 0xbc, hi: 0xbc},
-	// Block 0x43, offset 0x181
+	// Block 0x43, offset 0x180
 	{value: 0x0007, lo: 0x03},
-	{value: 0x3ca3, lo: 0xa0, hi: 0xa1},
-	{value: 0x3ccd, lo: 0xa2, hi: 0xa3},
-	{value: 0x3cf7, lo: 0xaa, hi: 0xad},
-	// Block 0x44, offset 0x185
+	{value: 0x3c64, lo: 0xa0, hi: 0xa1},
+	{value: 0x3c8e, lo: 0xa2, hi: 0xa3},
+	{value: 0x3cb8, lo: 0xaa, hi: 0xad},
+	// Block 0x44, offset 0x184
 	{value: 0x0004, lo: 0x01},
-	{value: 0x0503, lo: 0xa9, hi: 0xaa},
-	// Block 0x45, offset 0x187
+	{value: 0x048b, lo: 0xa9, hi: 0xaa},
+	// Block 0x45, offset 0x186
 	{value: 0x0000, lo: 0x01},
-	{value: 0x4518, lo: 0x9c, hi: 0x9c},
-	// Block 0x46, offset 0x189
+	{value: 0x456f, lo: 0x9c, hi: 0x9c},
+	// Block 0x46, offset 0x188
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8132, lo: 0xaf, hi: 0xb1},
-	// Block 0x47, offset 0x18b
+	// Block 0x47, offset 0x18a
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8104, lo: 0xbf, hi: 0xbf},
-	// Block 0x48, offset 0x18d
+	// Block 0x48, offset 0x18c
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8132, lo: 0xa0, hi: 0xbf},
-	// Block 0x49, offset 0x18f
+	// Block 0x49, offset 0x18e
 	{value: 0x0000, lo: 0x05},
 	{value: 0x812c, lo: 0xaa, hi: 0xaa},
 	{value: 0x8131, lo: 0xab, hi: 0xab},
 	{value: 0x8133, lo: 0xac, hi: 0xac},
 	{value: 0x812e, lo: 0xad, hi: 0xad},
 	{value: 0x812f, lo: 0xae, hi: 0xaf},
-	// Block 0x4a, offset 0x195
+	// Block 0x4a, offset 0x194
+	{value: 0x0000, lo: 0x03},
+	{value: 0x4a7d, lo: 0xb3, hi: 0xb3},
+	{value: 0x4a7d, lo: 0xb5, hi: 0xb6},
+	{value: 0x4a7d, lo: 0xba, hi: 0xbf},
+	// Block 0x4b, offset 0x198
+	{value: 0x0000, lo: 0x01},
+	{value: 0x4a7d, lo: 0x8f, hi: 0xa3},
+	// Block 0x4c, offset 0x19a
+	{value: 0x0000, lo: 0x01},
+	{value: 0x8100, lo: 0xae, hi: 0xbe},
+	// Block 0x4d, offset 0x19c
 	{value: 0x0000, lo: 0x07},
 	{value: 0x8100, lo: 0x84, hi: 0x84},
 	{value: 0x8100, lo: 0x87, hi: 0x87},
@@ -3985,55 +4005,55 @@
 	{value: 0x8100, lo: 0xa1, hi: 0xa1},
 	{value: 0x8100, lo: 0xb2, hi: 0xb2},
 	{value: 0x8100, lo: 0xbb, hi: 0xbb},
-	// Block 0x4b, offset 0x19d
+	// Block 0x4e, offset 0x1a4
 	{value: 0x0000, lo: 0x03},
 	{value: 0x8100, lo: 0x80, hi: 0x80},
 	{value: 0x8100, lo: 0x8b, hi: 0x8b},
 	{value: 0x8100, lo: 0x8e, hi: 0x8e},
-	// Block 0x4c, offset 0x1a1
+	// Block 0x4f, offset 0x1a8
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8132, lo: 0xaf, hi: 0xaf},
 	{value: 0x8132, lo: 0xb4, hi: 0xbd},
-	// Block 0x4d, offset 0x1a4
+	// Block 0x50, offset 0x1ab
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8132, lo: 0x9f, hi: 0x9f},
-	// Block 0x4e, offset 0x1a6
+	// Block 0x51, offset 0x1ad
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8132, lo: 0xb0, hi: 0xb1},
-	// Block 0x4f, offset 0x1a8
+	// Block 0x52, offset 0x1af
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8104, lo: 0x86, hi: 0x86},
-	// Block 0x50, offset 0x1aa
+	// Block 0x53, offset 0x1b1
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8104, lo: 0x84, hi: 0x84},
 	{value: 0x8132, lo: 0xa0, hi: 0xb1},
-	// Block 0x51, offset 0x1ad
+	// Block 0x54, offset 0x1b4
 	{value: 0x0000, lo: 0x01},
 	{value: 0x812d, lo: 0xab, hi: 0xad},
-	// Block 0x52, offset 0x1af
+	// Block 0x55, offset 0x1b6
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8104, lo: 0x93, hi: 0x93},
-	// Block 0x53, offset 0x1b1
+	// Block 0x56, offset 0x1b8
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8102, lo: 0xb3, hi: 0xb3},
-	// Block 0x54, offset 0x1b3
+	// Block 0x57, offset 0x1ba
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8104, lo: 0x80, hi: 0x80},
-	// Block 0x55, offset 0x1b5
+	// Block 0x58, offset 0x1bc
 	{value: 0x0000, lo: 0x05},
 	{value: 0x8132, lo: 0xb0, hi: 0xb0},
 	{value: 0x8132, lo: 0xb2, hi: 0xb3},
 	{value: 0x812d, lo: 0xb4, hi: 0xb4},
 	{value: 0x8132, lo: 0xb7, hi: 0xb8},
 	{value: 0x8132, lo: 0xbe, hi: 0xbf},
-	// Block 0x56, offset 0x1bb
+	// Block 0x59, offset 0x1c2
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8132, lo: 0x81, hi: 0x81},
 	{value: 0x8104, lo: 0xb6, hi: 0xb6},
-	// Block 0x57, offset 0x1be
+	// Block 0x5a, offset 0x1c5
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8104, lo: 0xad, hi: 0xad},
-	// Block 0x58, offset 0x1c0
+	// Block 0x5b, offset 0x1c7
 	{value: 0x0000, lo: 0x06},
 	{value: 0xe500, lo: 0x80, hi: 0x80},
 	{value: 0xc600, lo: 0x81, hi: 0x9b},
@@ -4041,21 +4061,21 @@
 	{value: 0xc600, lo: 0x9d, hi: 0xb7},
 	{value: 0xe500, lo: 0xb8, hi: 0xb8},
 	{value: 0xc600, lo: 0xb9, hi: 0xbf},
-	// Block 0x59, offset 0x1c7
+	// Block 0x5c, offset 0x1ce
 	{value: 0x0000, lo: 0x05},
 	{value: 0xc600, lo: 0x80, hi: 0x93},
 	{value: 0xe500, lo: 0x94, hi: 0x94},
 	{value: 0xc600, lo: 0x95, hi: 0xaf},
 	{value: 0xe500, lo: 0xb0, hi: 0xb0},
 	{value: 0xc600, lo: 0xb1, hi: 0xbf},
-	// Block 0x5a, offset 0x1cd
+	// Block 0x5d, offset 0x1d4
 	{value: 0x0000, lo: 0x05},
 	{value: 0xc600, lo: 0x80, hi: 0x8b},
 	{value: 0xe500, lo: 0x8c, hi: 0x8c},
 	{value: 0xc600, lo: 0x8d, hi: 0xa7},
 	{value: 0xe500, lo: 0xa8, hi: 0xa8},
 	{value: 0xc600, lo: 0xa9, hi: 0xbf},
-	// Block 0x5b, offset 0x1d3
+	// Block 0x5e, offset 0x1da
 	{value: 0x0000, lo: 0x07},
 	{value: 0xc600, lo: 0x80, hi: 0x83},
 	{value: 0xe500, lo: 0x84, hi: 0x84},
@@ -4064,224 +4084,231 @@
 	{value: 0xc600, lo: 0xa1, hi: 0xbb},
 	{value: 0xe500, lo: 0xbc, hi: 0xbc},
 	{value: 0xc600, lo: 0xbd, hi: 0xbf},
-	// Block 0x5c, offset 0x1db
+	// Block 0x5f, offset 0x1e2
 	{value: 0x0000, lo: 0x05},
 	{value: 0xc600, lo: 0x80, hi: 0x97},
 	{value: 0xe500, lo: 0x98, hi: 0x98},
 	{value: 0xc600, lo: 0x99, hi: 0xb3},
 	{value: 0xe500, lo: 0xb4, hi: 0xb4},
 	{value: 0xc600, lo: 0xb5, hi: 0xbf},
-	// Block 0x5d, offset 0x1e1
+	// Block 0x60, offset 0x1e8
 	{value: 0x0000, lo: 0x05},
 	{value: 0xc600, lo: 0x80, hi: 0x8f},
 	{value: 0xe500, lo: 0x90, hi: 0x90},
 	{value: 0xc600, lo: 0x91, hi: 0xab},
 	{value: 0xe500, lo: 0xac, hi: 0xac},
 	{value: 0xc600, lo: 0xad, hi: 0xbf},
-	// Block 0x5e, offset 0x1e7
+	// Block 0x61, offset 0x1ee
 	{value: 0x0000, lo: 0x05},
 	{value: 0xc600, lo: 0x80, hi: 0x87},
 	{value: 0xe500, lo: 0x88, hi: 0x88},
 	{value: 0xc600, lo: 0x89, hi: 0xa3},
 	{value: 0xe500, lo: 0xa4, hi: 0xa4},
 	{value: 0xc600, lo: 0xa5, hi: 0xbf},
-	// Block 0x5f, offset 0x1ed
+	// Block 0x62, offset 0x1f4
 	{value: 0x0000, lo: 0x03},
 	{value: 0xc600, lo: 0x80, hi: 0x87},
 	{value: 0xe500, lo: 0x88, hi: 0x88},
 	{value: 0xc600, lo: 0x89, hi: 0xa3},
-	// Block 0x60, offset 0x1f1
+	// Block 0x63, offset 0x1f8
 	{value: 0x0006, lo: 0x0d},
-	{value: 0x43cb, lo: 0x9d, hi: 0x9d},
+	{value: 0x4422, lo: 0x9d, hi: 0x9d},
 	{value: 0x8115, lo: 0x9e, hi: 0x9e},
-	{value: 0x443d, lo: 0x9f, hi: 0x9f},
-	{value: 0x442b, lo: 0xaa, hi: 0xab},
-	{value: 0x452f, lo: 0xac, hi: 0xac},
-	{value: 0x4537, lo: 0xad, hi: 0xad},
-	{value: 0x4383, lo: 0xae, hi: 0xb1},
-	{value: 0x43a1, lo: 0xb2, hi: 0xb4},
-	{value: 0x43b9, lo: 0xb5, hi: 0xb6},
-	{value: 0x43c5, lo: 0xb8, hi: 0xb8},
-	{value: 0x43d1, lo: 0xb9, hi: 0xbb},
-	{value: 0x43e9, lo: 0xbc, hi: 0xbc},
-	{value: 0x43ef, lo: 0xbe, hi: 0xbe},
-	// Block 0x61, offset 0x1ff
+	{value: 0x4494, lo: 0x9f, hi: 0x9f},
+	{value: 0x4482, lo: 0xaa, hi: 0xab},
+	{value: 0x4586, lo: 0xac, hi: 0xac},
+	{value: 0x458e, lo: 0xad, hi: 0xad},
+	{value: 0x43da, lo: 0xae, hi: 0xb1},
+	{value: 0x43f8, lo: 0xb2, hi: 0xb4},
+	{value: 0x4410, lo: 0xb5, hi: 0xb6},
+	{value: 0x441c, lo: 0xb8, hi: 0xb8},
+	{value: 0x4428, lo: 0xb9, hi: 0xbb},
+	{value: 0x4440, lo: 0xbc, hi: 0xbc},
+	{value: 0x4446, lo: 0xbe, hi: 0xbe},
+	// Block 0x64, offset 0x206
 	{value: 0x0006, lo: 0x08},
-	{value: 0x43f5, lo: 0x80, hi: 0x81},
-	{value: 0x4401, lo: 0x83, hi: 0x84},
-	{value: 0x4413, lo: 0x86, hi: 0x89},
-	{value: 0x4437, lo: 0x8a, hi: 0x8a},
-	{value: 0x43b3, lo: 0x8b, hi: 0x8b},
-	{value: 0x439b, lo: 0x8c, hi: 0x8c},
-	{value: 0x43e3, lo: 0x8d, hi: 0x8d},
-	{value: 0x440d, lo: 0x8e, hi: 0x8e},
-	// Block 0x62, offset 0x208
+	{value: 0x444c, lo: 0x80, hi: 0x81},
+	{value: 0x4458, lo: 0x83, hi: 0x84},
+	{value: 0x446a, lo: 0x86, hi: 0x89},
+	{value: 0x448e, lo: 0x8a, hi: 0x8a},
+	{value: 0x440a, lo: 0x8b, hi: 0x8b},
+	{value: 0x43f2, lo: 0x8c, hi: 0x8c},
+	{value: 0x443a, lo: 0x8d, hi: 0x8d},
+	{value: 0x4464, lo: 0x8e, hi: 0x8e},
+	// Block 0x65, offset 0x20f
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8100, lo: 0xa4, hi: 0xa5},
 	{value: 0x8100, lo: 0xb0, hi: 0xb1},
-	// Block 0x63, offset 0x20b
+	// Block 0x66, offset 0x212
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8100, lo: 0x9b, hi: 0x9d},
 	{value: 0x8200, lo: 0x9e, hi: 0xa3},
-	// Block 0x64, offset 0x20e
+	// Block 0x67, offset 0x215
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8100, lo: 0x90, hi: 0x90},
-	// Block 0x65, offset 0x210
+	// Block 0x68, offset 0x217
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8100, lo: 0x99, hi: 0x99},
 	{value: 0x8200, lo: 0xb2, hi: 0xb4},
-	// Block 0x66, offset 0x213
+	// Block 0x69, offset 0x21a
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8100, lo: 0xbc, hi: 0xbd},
-	// Block 0x67, offset 0x215
+	// Block 0x6a, offset 0x21c
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8132, lo: 0xa0, hi: 0xa6},
 	{value: 0x812d, lo: 0xa7, hi: 0xad},
-	// Block 0x68, offset 0x218
+	// Block 0x6b, offset 0x21f
 	{value: 0x0000, lo: 0x04},
 	{value: 0x8100, lo: 0x89, hi: 0x8c},
 	{value: 0x8100, lo: 0xb0, hi: 0xb2},
 	{value: 0x8100, lo: 0xb4, hi: 0xb4},
 	{value: 0x8100, lo: 0xb6, hi: 0xbf},
-	// Block 0x69, offset 0x21d
+	// Block 0x6c, offset 0x224
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8100, lo: 0x81, hi: 0x8c},
-	// Block 0x6a, offset 0x21f
+	// Block 0x6d, offset 0x226
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8100, lo: 0xb5, hi: 0xba},
-	// Block 0x6b, offset 0x221
-	{value: 0x0000, lo: 0x01},
-	{value: 0x4a26, lo: 0x9e, hi: 0x9f},
-	// Block 0x6c, offset 0x223
-	{value: 0x0000, lo: 0x01},
+	// Block 0x6e, offset 0x228
+	{value: 0x0000, lo: 0x04},
+	{value: 0x4a7d, lo: 0x9e, hi: 0x9f},
+	{value: 0x4a7d, lo: 0xa3, hi: 0xa3},
+	{value: 0x4a7d, lo: 0xa5, hi: 0xa6},
+	{value: 0x4a7d, lo: 0xaa, hi: 0xaf},
+	// Block 0x6f, offset 0x22d
+	{value: 0x0000, lo: 0x05},
+	{value: 0x4a7d, lo: 0x82, hi: 0x87},
+	{value: 0x4a7d, lo: 0x8a, hi: 0x8f},
+	{value: 0x4a7d, lo: 0x92, hi: 0x97},
+	{value: 0x4a7d, lo: 0x9a, hi: 0x9c},
 	{value: 0x8100, lo: 0xa3, hi: 0xa3},
-	// Block 0x6d, offset 0x225
+	// Block 0x70, offset 0x233
 	{value: 0x0000, lo: 0x01},
 	{value: 0x812d, lo: 0xbd, hi: 0xbd},
-	// Block 0x6e, offset 0x227
+	// Block 0x71, offset 0x235
 	{value: 0x0000, lo: 0x01},
 	{value: 0x812d, lo: 0xa0, hi: 0xa0},
-	// Block 0x6f, offset 0x229
+	// Block 0x72, offset 0x237
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8132, lo: 0xb6, hi: 0xba},
-	// Block 0x70, offset 0x22b
+	// Block 0x73, offset 0x239
 	{value: 0x002c, lo: 0x05},
 	{value: 0x812d, lo: 0x8d, hi: 0x8d},
 	{value: 0x8132, lo: 0x8f, hi: 0x8f},
 	{value: 0x8132, lo: 0xb8, hi: 0xb8},
 	{value: 0x8101, lo: 0xb9, hi: 0xba},
 	{value: 0x8104, lo: 0xbf, hi: 0xbf},
-	// Block 0x71, offset 0x231
+	// Block 0x74, offset 0x23f
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8132, lo: 0xa5, hi: 0xa5},
 	{value: 0x812d, lo: 0xa6, hi: 0xa6},
-	// Block 0x72, offset 0x234
+	// Block 0x75, offset 0x242
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8104, lo: 0x86, hi: 0x86},
 	{value: 0x8104, lo: 0xbf, hi: 0xbf},
-	// Block 0x73, offset 0x237
+	// Block 0x76, offset 0x245
 	{value: 0x17fe, lo: 0x07},
 	{value: 0xa000, lo: 0x99, hi: 0x99},
-	{value: 0x4273, lo: 0x9a, hi: 0x9a},
+	{value: 0x4234, lo: 0x9a, hi: 0x9a},
 	{value: 0xa000, lo: 0x9b, hi: 0x9b},
-	{value: 0x427d, lo: 0x9c, hi: 0x9c},
+	{value: 0x423e, lo: 0x9c, hi: 0x9c},
 	{value: 0xa000, lo: 0xa5, hi: 0xa5},
-	{value: 0x4287, lo: 0xab, hi: 0xab},
+	{value: 0x4248, lo: 0xab, hi: 0xab},
 	{value: 0x8104, lo: 0xb9, hi: 0xba},
-	// Block 0x74, offset 0x23f
+	// Block 0x77, offset 0x24d
 	{value: 0x0000, lo: 0x06},
 	{value: 0x8132, lo: 0x80, hi: 0x82},
 	{value: 0x9900, lo: 0xa7, hi: 0xa7},
-	{value: 0x19a5, lo: 0xae, hi: 0xae},
-	{value: 0x19ae, lo: 0xaf, hi: 0xaf},
+	{value: 0x2d7a, lo: 0xae, hi: 0xae},
+	{value: 0x2d84, lo: 0xaf, hi: 0xaf},
 	{value: 0xa000, lo: 0xb1, hi: 0xb2},
 	{value: 0x8104, lo: 0xb3, hi: 0xb4},
-	// Block 0x75, offset 0x246
+	// Block 0x78, offset 0x254
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8104, lo: 0xb5, hi: 0xb5},
 	{value: 0x8102, lo: 0xb6, hi: 0xb6},
-	// Block 0x76, offset 0x249
+	// Block 0x79, offset 0x257
 	{value: 0x0002, lo: 0x01},
 	{value: 0x8102, lo: 0xa9, hi: 0xaa},
-	// Block 0x77, offset 0x24b
+	// Block 0x7a, offset 0x259
 	{value: 0x0000, lo: 0x07},
 	{value: 0xa000, lo: 0x87, hi: 0x87},
-	{value: 0x19b7, lo: 0x8b, hi: 0x8b},
-	{value: 0x19c0, lo: 0x8c, hi: 0x8c},
+	{value: 0x2d8e, lo: 0x8b, hi: 0x8b},
+	{value: 0x2d98, lo: 0x8c, hi: 0x8c},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
 	{value: 0x9900, lo: 0x97, hi: 0x97},
 	{value: 0x8132, lo: 0xa6, hi: 0xac},
 	{value: 0x8132, lo: 0xb0, hi: 0xb4},
-	// Block 0x78, offset 0x253
-	{value: 0x7f37, lo: 0x06},
+	// Block 0x7b, offset 0x261
+	{value: 0x6b5e, lo: 0x06},
 	{value: 0x9900, lo: 0xb0, hi: 0xb0},
 	{value: 0xa000, lo: 0xb9, hi: 0xb9},
 	{value: 0x9900, lo: 0xba, hi: 0xba},
-	{value: 0x19d2, lo: 0xbb, hi: 0xbb},
-	{value: 0x19c9, lo: 0xbc, hi: 0xbd},
-	{value: 0x19db, lo: 0xbe, hi: 0xbe},
-	// Block 0x79, offset 0x25a
+	{value: 0x2dac, lo: 0xbb, hi: 0xbb},
+	{value: 0x2da2, lo: 0xbc, hi: 0xbd},
+	{value: 0x2db6, lo: 0xbe, hi: 0xbe},
+	// Block 0x7c, offset 0x268
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8104, lo: 0x82, hi: 0x82},
 	{value: 0x8102, lo: 0x83, hi: 0x83},
-	// Block 0x7a, offset 0x25d
+	// Block 0x7d, offset 0x26b
 	{value: 0x0000, lo: 0x05},
 	{value: 0x9900, lo: 0xaf, hi: 0xaf},
 	{value: 0xa000, lo: 0xb8, hi: 0xb9},
-	{value: 0x19e4, lo: 0xba, hi: 0xba},
-	{value: 0x19ed, lo: 0xbb, hi: 0xbb},
+	{value: 0x2dc0, lo: 0xba, hi: 0xba},
+	{value: 0x2dca, lo: 0xbb, hi: 0xbb},
 	{value: 0x8104, lo: 0xbf, hi: 0xbf},
-	// Block 0x7b, offset 0x263
+	// Block 0x7e, offset 0x271
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8102, lo: 0x80, hi: 0x80},
-	// Block 0x7c, offset 0x265
+	// Block 0x7f, offset 0x273
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8104, lo: 0xb6, hi: 0xb6},
 	{value: 0x8102, lo: 0xb7, hi: 0xb7},
-	// Block 0x7d, offset 0x268
+	// Block 0x80, offset 0x276
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8101, lo: 0xb0, hi: 0xb4},
-	// Block 0x7e, offset 0x26a
+	// Block 0x81, offset 0x278
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8132, lo: 0xb0, hi: 0xb6},
-	// Block 0x7f, offset 0x26c
+	// Block 0x82, offset 0x27a
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8101, lo: 0x9e, hi: 0x9e},
-	// Block 0x80, offset 0x26e
+	// Block 0x83, offset 0x27c
 	{value: 0x0000, lo: 0x0c},
-	{value: 0x4607, lo: 0x9e, hi: 0x9e},
-	{value: 0x4611, lo: 0x9f, hi: 0x9f},
-	{value: 0x4645, lo: 0xa0, hi: 0xa0},
-	{value: 0x4653, lo: 0xa1, hi: 0xa1},
-	{value: 0x4661, lo: 0xa2, hi: 0xa2},
-	{value: 0x466f, lo: 0xa3, hi: 0xa3},
-	{value: 0x467d, lo: 0xa4, hi: 0xa4},
+	{value: 0x465e, lo: 0x9e, hi: 0x9e},
+	{value: 0x4668, lo: 0x9f, hi: 0x9f},
+	{value: 0x469c, lo: 0xa0, hi: 0xa0},
+	{value: 0x46aa, lo: 0xa1, hi: 0xa1},
+	{value: 0x46b8, lo: 0xa2, hi: 0xa2},
+	{value: 0x46c6, lo: 0xa3, hi: 0xa3},
+	{value: 0x46d4, lo: 0xa4, hi: 0xa4},
 	{value: 0x812b, lo: 0xa5, hi: 0xa6},
 	{value: 0x8101, lo: 0xa7, hi: 0xa9},
 	{value: 0x8130, lo: 0xad, hi: 0xad},
 	{value: 0x812b, lo: 0xae, hi: 0xb2},
 	{value: 0x812d, lo: 0xbb, hi: 0xbf},
-	// Block 0x81, offset 0x27b
+	// Block 0x84, offset 0x289
 	{value: 0x0000, lo: 0x09},
 	{value: 0x812d, lo: 0x80, hi: 0x82},
 	{value: 0x8132, lo: 0x85, hi: 0x89},
 	{value: 0x812d, lo: 0x8a, hi: 0x8b},
 	{value: 0x8132, lo: 0xaa, hi: 0xad},
-	{value: 0x461b, lo: 0xbb, hi: 0xbb},
-	{value: 0x4625, lo: 0xbc, hi: 0xbc},
-	{value: 0x468b, lo: 0xbd, hi: 0xbd},
-	{value: 0x46a7, lo: 0xbe, hi: 0xbe},
-	{value: 0x4699, lo: 0xbf, hi: 0xbf},
-	// Block 0x82, offset 0x285
+	{value: 0x4672, lo: 0xbb, hi: 0xbb},
+	{value: 0x467c, lo: 0xbc, hi: 0xbc},
+	{value: 0x46e2, lo: 0xbd, hi: 0xbd},
+	{value: 0x46fe, lo: 0xbe, hi: 0xbe},
+	{value: 0x46f0, lo: 0xbf, hi: 0xbf},
+	// Block 0x85, offset 0x293
 	{value: 0x0000, lo: 0x01},
-	{value: 0x46b5, lo: 0x80, hi: 0x80},
-	// Block 0x83, offset 0x287
+	{value: 0x470c, lo: 0x80, hi: 0x80},
+	// Block 0x86, offset 0x295
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8132, lo: 0x82, hi: 0x84},
-	// Block 0x84, offset 0x289
+	// Block 0x87, offset 0x297
 	{value: 0x0000, lo: 0x01},
 	{value: 0x812d, lo: 0x90, hi: 0x96},
-	// Block 0x85, offset 0x28b
+	// Block 0x88, offset 0x299
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8100, lo: 0x93, hi: 0x93},
 }
@@ -4456,7 +4483,7 @@
 	return 0
 }
 
-// nfkcTrie. Total size: 16752 bytes (16.36 KiB). Checksum: 5cd2e697fcf78b3e.
+// nfkcTrie. Total size: 16900 bytes (16.50 KiB). Checksum: 773856a6572616.
 type nfkcTrie struct{}
 
 func newNfkcTrie(i int) *nfkcTrie {
@@ -4466,17 +4493,17 @@
 // lookupValue determines the type of block n and looks up the value for b.
 func (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 {
 	switch {
-	case n < 88:
+	case n < 90:
 		return uint16(nfkcValues[n<<6+uint32(b)])
 	default:
-		n -= 88
+		n -= 90
 		return uint16(nfkcSparse.lookup(n, b))
 	}
 }
 
-// nfkcValues: 90 blocks, 5760 entries, 11520 bytes
+// nfkcValues: 92 blocks, 5888 entries, 11776 bytes
 // The third block is the zero block.
-var nfkcValues = [5760]uint16{
+var nfkcValues = [5888]uint16{
 	// Block 0x0, offset 0x0
 	0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,
 	// Block 0x1, offset 0x40
@@ -4492,63 +4519,63 @@
 	0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,
 	// Block 0x2, offset 0x80
 	// Block 0x3, offset 0xc0
-	0xc0: 0x2faa, 0xc1: 0x2faf, 0xc2: 0x46c3, 0xc3: 0x2fb4, 0xc4: 0x46d2, 0xc5: 0x46d7,
-	0xc6: 0xa000, 0xc7: 0x46e1, 0xc8: 0x301d, 0xc9: 0x3022, 0xca: 0x46e6, 0xcb: 0x3036,
-	0xcc: 0x30a9, 0xcd: 0x30ae, 0xce: 0x30b3, 0xcf: 0x46fa, 0xd1: 0x313f,
-	0xd2: 0x3162, 0xd3: 0x3167, 0xd4: 0x4704, 0xd5: 0x4709, 0xd6: 0x4718,
-	0xd8: 0xa000, 0xd9: 0x31ee, 0xda: 0x31f3, 0xdb: 0x31f8, 0xdc: 0x474a, 0xdd: 0x3270,
-	0xe0: 0x32b6, 0xe1: 0x32bb, 0xe2: 0x4754, 0xe3: 0x32c0,
-	0xe4: 0x4763, 0xe5: 0x4768, 0xe6: 0xa000, 0xe7: 0x4772, 0xe8: 0x3329, 0xe9: 0x332e,
-	0xea: 0x4777, 0xeb: 0x3342, 0xec: 0x33ba, 0xed: 0x33bf, 0xee: 0x33c4, 0xef: 0x478b,
-	0xf1: 0x3450, 0xf2: 0x3473, 0xf3: 0x3478, 0xf4: 0x4795, 0xf5: 0x479a,
-	0xf6: 0x47a9, 0xf8: 0xa000, 0xf9: 0x3504, 0xfa: 0x3509, 0xfb: 0x350e,
-	0xfc: 0x47db, 0xfd: 0x358b, 0xff: 0x35a4,
+	0xc0: 0x2f6b, 0xc1: 0x2f70, 0xc2: 0x471a, 0xc3: 0x2f75, 0xc4: 0x4729, 0xc5: 0x472e,
+	0xc6: 0xa000, 0xc7: 0x4738, 0xc8: 0x2fde, 0xc9: 0x2fe3, 0xca: 0x473d, 0xcb: 0x2ff7,
+	0xcc: 0x306a, 0xcd: 0x306f, 0xce: 0x3074, 0xcf: 0x4751, 0xd1: 0x3100,
+	0xd2: 0x3123, 0xd3: 0x3128, 0xd4: 0x475b, 0xd5: 0x4760, 0xd6: 0x476f,
+	0xd8: 0xa000, 0xd9: 0x31af, 0xda: 0x31b4, 0xdb: 0x31b9, 0xdc: 0x47a1, 0xdd: 0x3231,
+	0xe0: 0x3277, 0xe1: 0x327c, 0xe2: 0x47ab, 0xe3: 0x3281,
+	0xe4: 0x47ba, 0xe5: 0x47bf, 0xe6: 0xa000, 0xe7: 0x47c9, 0xe8: 0x32ea, 0xe9: 0x32ef,
+	0xea: 0x47ce, 0xeb: 0x3303, 0xec: 0x337b, 0xed: 0x3380, 0xee: 0x3385, 0xef: 0x47e2,
+	0xf1: 0x3411, 0xf2: 0x3434, 0xf3: 0x3439, 0xf4: 0x47ec, 0xf5: 0x47f1,
+	0xf6: 0x4800, 0xf8: 0xa000, 0xf9: 0x34c5, 0xfa: 0x34ca, 0xfb: 0x34cf,
+	0xfc: 0x4832, 0xfd: 0x354c, 0xff: 0x3565,
 	// Block 0x4, offset 0x100
-	0x100: 0x2fb9, 0x101: 0x32c5, 0x102: 0x46c8, 0x103: 0x4759, 0x104: 0x2fd7, 0x105: 0x32e3,
-	0x106: 0x2feb, 0x107: 0x32f7, 0x108: 0x2ff0, 0x109: 0x32fc, 0x10a: 0x2ff5, 0x10b: 0x3301,
-	0x10c: 0x2ffa, 0x10d: 0x3306, 0x10e: 0x3004, 0x10f: 0x3310,
-	0x112: 0x46eb, 0x113: 0x477c, 0x114: 0x302c, 0x115: 0x3338, 0x116: 0x3031, 0x117: 0x333d,
-	0x118: 0x304f, 0x119: 0x335b, 0x11a: 0x3040, 0x11b: 0x334c, 0x11c: 0x3068, 0x11d: 0x3374,
-	0x11e: 0x3072, 0x11f: 0x337e, 0x120: 0x3077, 0x121: 0x3383, 0x122: 0x3081, 0x123: 0x338d,
-	0x124: 0x3086, 0x125: 0x3392, 0x128: 0x30b8, 0x129: 0x33c9,
-	0x12a: 0x30bd, 0x12b: 0x33ce, 0x12c: 0x30c2, 0x12d: 0x33d3, 0x12e: 0x30e5, 0x12f: 0x33f1,
-	0x130: 0x30c7, 0x132: 0x1af0, 0x133: 0x1b7a, 0x134: 0x30ef, 0x135: 0x33fb,
-	0x136: 0x3103, 0x137: 0x3414, 0x139: 0x310d, 0x13a: 0x341e, 0x13b: 0x3117,
-	0x13c: 0x3428, 0x13d: 0x3112, 0x13e: 0x3423, 0x13f: 0x1d3f,
+	0x100: 0x2f7a, 0x101: 0x3286, 0x102: 0x471f, 0x103: 0x47b0, 0x104: 0x2f98, 0x105: 0x32a4,
+	0x106: 0x2fac, 0x107: 0x32b8, 0x108: 0x2fb1, 0x109: 0x32bd, 0x10a: 0x2fb6, 0x10b: 0x32c2,
+	0x10c: 0x2fbb, 0x10d: 0x32c7, 0x10e: 0x2fc5, 0x10f: 0x32d1,
+	0x112: 0x4742, 0x113: 0x47d3, 0x114: 0x2fed, 0x115: 0x32f9, 0x116: 0x2ff2, 0x117: 0x32fe,
+	0x118: 0x3010, 0x119: 0x331c, 0x11a: 0x3001, 0x11b: 0x330d, 0x11c: 0x3029, 0x11d: 0x3335,
+	0x11e: 0x3033, 0x11f: 0x333f, 0x120: 0x3038, 0x121: 0x3344, 0x122: 0x3042, 0x123: 0x334e,
+	0x124: 0x3047, 0x125: 0x3353, 0x128: 0x3079, 0x129: 0x338a,
+	0x12a: 0x307e, 0x12b: 0x338f, 0x12c: 0x3083, 0x12d: 0x3394, 0x12e: 0x30a6, 0x12f: 0x33b2,
+	0x130: 0x3088, 0x132: 0x1959, 0x133: 0x19e3, 0x134: 0x30b0, 0x135: 0x33bc,
+	0x136: 0x30c4, 0x137: 0x33d5, 0x139: 0x30ce, 0x13a: 0x33df, 0x13b: 0x30d8,
+	0x13c: 0x33e9, 0x13d: 0x30d3, 0x13e: 0x33e4, 0x13f: 0x1ba8,
 	// Block 0x5, offset 0x140
-	0x140: 0x1dc7, 0x143: 0x313a, 0x144: 0x344b, 0x145: 0x3153,
-	0x146: 0x3464, 0x147: 0x3149, 0x148: 0x345a, 0x149: 0x1def,
-	0x14c: 0x470e, 0x14d: 0x479f, 0x14e: 0x316c, 0x14f: 0x347d, 0x150: 0x3176, 0x151: 0x3487,
-	0x154: 0x3194, 0x155: 0x34a5, 0x156: 0x31ad, 0x157: 0x34be,
-	0x158: 0x319e, 0x159: 0x34af, 0x15a: 0x4731, 0x15b: 0x47c2, 0x15c: 0x31b7, 0x15d: 0x34c8,
-	0x15e: 0x31c6, 0x15f: 0x34d7, 0x160: 0x4736, 0x161: 0x47c7, 0x162: 0x31df, 0x163: 0x34f5,
-	0x164: 0x31d0, 0x165: 0x34e6, 0x168: 0x4740, 0x169: 0x47d1,
-	0x16a: 0x4745, 0x16b: 0x47d6, 0x16c: 0x31fd, 0x16d: 0x3513, 0x16e: 0x3207, 0x16f: 0x351d,
-	0x170: 0x320c, 0x171: 0x3522, 0x172: 0x322a, 0x173: 0x3540, 0x174: 0x324d, 0x175: 0x3563,
-	0x176: 0x3275, 0x177: 0x3590, 0x178: 0x3289, 0x179: 0x3298, 0x17a: 0x35b8, 0x17b: 0x32a2,
-	0x17c: 0x35c2, 0x17d: 0x32a7, 0x17e: 0x35c7, 0x17f: 0x00a7,
+	0x140: 0x1c30, 0x143: 0x30fb, 0x144: 0x340c, 0x145: 0x3114,
+	0x146: 0x3425, 0x147: 0x310a, 0x148: 0x341b, 0x149: 0x1c58,
+	0x14c: 0x4765, 0x14d: 0x47f6, 0x14e: 0x312d, 0x14f: 0x343e, 0x150: 0x3137, 0x151: 0x3448,
+	0x154: 0x3155, 0x155: 0x3466, 0x156: 0x316e, 0x157: 0x347f,
+	0x158: 0x315f, 0x159: 0x3470, 0x15a: 0x4788, 0x15b: 0x4819, 0x15c: 0x3178, 0x15d: 0x3489,
+	0x15e: 0x3187, 0x15f: 0x3498, 0x160: 0x478d, 0x161: 0x481e, 0x162: 0x31a0, 0x163: 0x34b6,
+	0x164: 0x3191, 0x165: 0x34a7, 0x168: 0x4797, 0x169: 0x4828,
+	0x16a: 0x479c, 0x16b: 0x482d, 0x16c: 0x31be, 0x16d: 0x34d4, 0x16e: 0x31c8, 0x16f: 0x34de,
+	0x170: 0x31cd, 0x171: 0x34e3, 0x172: 0x31eb, 0x173: 0x3501, 0x174: 0x320e, 0x175: 0x3524,
+	0x176: 0x3236, 0x177: 0x3551, 0x178: 0x324a, 0x179: 0x3259, 0x17a: 0x3579, 0x17b: 0x3263,
+	0x17c: 0x3583, 0x17d: 0x3268, 0x17e: 0x3588, 0x17f: 0x00a7,
 	// Block 0x6, offset 0x180
-	0x184: 0x2ed0, 0x185: 0x2ed6,
-	0x186: 0x2edc, 0x187: 0x1b05, 0x188: 0x1b08, 0x189: 0x1b9b, 0x18a: 0x1b1a, 0x18b: 0x1b1d,
-	0x18c: 0x1bd1, 0x18d: 0x2fc3, 0x18e: 0x32cf, 0x18f: 0x30d1, 0x190: 0x33dd, 0x191: 0x317b,
-	0x192: 0x348c, 0x193: 0x3211, 0x194: 0x3527, 0x195: 0x3a0a, 0x196: 0x3b99, 0x197: 0x3a03,
-	0x198: 0x3b92, 0x199: 0x3a11, 0x19a: 0x3ba0, 0x19b: 0x39fc, 0x19c: 0x3b8b,
-	0x19e: 0x38eb, 0x19f: 0x3a7a, 0x1a0: 0x38e4, 0x1a1: 0x3a73, 0x1a2: 0x35ee, 0x1a3: 0x3600,
-	0x1a6: 0x307c, 0x1a7: 0x3388, 0x1a8: 0x30f9, 0x1a9: 0x340a,
-	0x1aa: 0x4727, 0x1ab: 0x47b8, 0x1ac: 0x39cb, 0x1ad: 0x3b5a, 0x1ae: 0x3612, 0x1af: 0x3618,
-	0x1b0: 0x3400, 0x1b1: 0x1ad5, 0x1b2: 0x1ad8, 0x1b3: 0x1b62, 0x1b4: 0x3063, 0x1b5: 0x336f,
-	0x1b8: 0x3135, 0x1b9: 0x3446, 0x1ba: 0x38f2, 0x1bb: 0x3a81,
-	0x1bc: 0x35e8, 0x1bd: 0x35fa, 0x1be: 0x35f4, 0x1bf: 0x3606,
+	0x184: 0x2dea, 0x185: 0x2df0,
+	0x186: 0x2df6, 0x187: 0x196e, 0x188: 0x1971, 0x189: 0x1a04, 0x18a: 0x1983, 0x18b: 0x1986,
+	0x18c: 0x1a3a, 0x18d: 0x2f84, 0x18e: 0x3290, 0x18f: 0x3092, 0x190: 0x339e, 0x191: 0x313c,
+	0x192: 0x344d, 0x193: 0x31d2, 0x194: 0x34e8, 0x195: 0x39cb, 0x196: 0x3b5a, 0x197: 0x39c4,
+	0x198: 0x3b53, 0x199: 0x39d2, 0x19a: 0x3b61, 0x19b: 0x39bd, 0x19c: 0x3b4c,
+	0x19e: 0x38ac, 0x19f: 0x3a3b, 0x1a0: 0x38a5, 0x1a1: 0x3a34, 0x1a2: 0x35af, 0x1a3: 0x35c1,
+	0x1a6: 0x303d, 0x1a7: 0x3349, 0x1a8: 0x30ba, 0x1a9: 0x33cb,
+	0x1aa: 0x477e, 0x1ab: 0x480f, 0x1ac: 0x398c, 0x1ad: 0x3b1b, 0x1ae: 0x35d3, 0x1af: 0x35d9,
+	0x1b0: 0x33c1, 0x1b1: 0x193e, 0x1b2: 0x1941, 0x1b3: 0x19cb, 0x1b4: 0x3024, 0x1b5: 0x3330,
+	0x1b8: 0x30f6, 0x1b9: 0x3407, 0x1ba: 0x38b3, 0x1bb: 0x3a42,
+	0x1bc: 0x35a9, 0x1bd: 0x35bb, 0x1be: 0x35b5, 0x1bf: 0x35c7,
 	// Block 0x7, offset 0x1c0
-	0x1c0: 0x2fc8, 0x1c1: 0x32d4, 0x1c2: 0x2fcd, 0x1c3: 0x32d9, 0x1c4: 0x3045, 0x1c5: 0x3351,
-	0x1c6: 0x304a, 0x1c7: 0x3356, 0x1c8: 0x30d6, 0x1c9: 0x33e2, 0x1ca: 0x30db, 0x1cb: 0x33e7,
-	0x1cc: 0x3180, 0x1cd: 0x3491, 0x1ce: 0x3185, 0x1cf: 0x3496, 0x1d0: 0x31a3, 0x1d1: 0x34b4,
-	0x1d2: 0x31a8, 0x1d3: 0x34b9, 0x1d4: 0x3216, 0x1d5: 0x352c, 0x1d6: 0x321b, 0x1d7: 0x3531,
-	0x1d8: 0x31c1, 0x1d9: 0x34d2, 0x1da: 0x31da, 0x1db: 0x34f0,
-	0x1de: 0x3095, 0x1df: 0x33a1,
-	0x1e6: 0x46cd, 0x1e7: 0x475e, 0x1e8: 0x46f5, 0x1e9: 0x4786,
-	0x1ea: 0x399a, 0x1eb: 0x3b29, 0x1ec: 0x3977, 0x1ed: 0x3b06, 0x1ee: 0x4713, 0x1ef: 0x47a4,
-	0x1f0: 0x3993, 0x1f1: 0x3b22, 0x1f2: 0x327f, 0x1f3: 0x359a,
+	0x1c0: 0x2f89, 0x1c1: 0x3295, 0x1c2: 0x2f8e, 0x1c3: 0x329a, 0x1c4: 0x3006, 0x1c5: 0x3312,
+	0x1c6: 0x300b, 0x1c7: 0x3317, 0x1c8: 0x3097, 0x1c9: 0x33a3, 0x1ca: 0x309c, 0x1cb: 0x33a8,
+	0x1cc: 0x3141, 0x1cd: 0x3452, 0x1ce: 0x3146, 0x1cf: 0x3457, 0x1d0: 0x3164, 0x1d1: 0x3475,
+	0x1d2: 0x3169, 0x1d3: 0x347a, 0x1d4: 0x31d7, 0x1d5: 0x34ed, 0x1d6: 0x31dc, 0x1d7: 0x34f2,
+	0x1d8: 0x3182, 0x1d9: 0x3493, 0x1da: 0x319b, 0x1db: 0x34b1,
+	0x1de: 0x3056, 0x1df: 0x3362,
+	0x1e6: 0x4724, 0x1e7: 0x47b5, 0x1e8: 0x474c, 0x1e9: 0x47dd,
+	0x1ea: 0x395b, 0x1eb: 0x3aea, 0x1ec: 0x3938, 0x1ed: 0x3ac7, 0x1ee: 0x476a, 0x1ef: 0x47fb,
+	0x1f0: 0x3954, 0x1f1: 0x3ae3, 0x1f2: 0x3240, 0x1f3: 0x355b,
 	// Block 0x8, offset 0x200
 	0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132,
 	0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932,
@@ -4562,7 +4589,7 @@
 	0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d,
 	0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132,
 	// Block 0x9, offset 0x240
-	0x240: 0x49e9, 0x241: 0x49ee, 0x242: 0x9932, 0x243: 0x49f3, 0x244: 0x49f8, 0x245: 0x9936,
+	0x240: 0x4a40, 0x241: 0x4a45, 0x242: 0x9932, 0x243: 0x4a4a, 0x244: 0x4a4f, 0x245: 0x9936,
 	0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132,
 	0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132,
 	0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132,
@@ -4571,51 +4598,51 @@
 	0x264: 0x8132, 0x265: 0x8132, 0x266: 0x8132, 0x267: 0x8132, 0x268: 0x8132, 0x269: 0x8132,
 	0x26a: 0x8132, 0x26b: 0x8132, 0x26c: 0x8132, 0x26d: 0x8132, 0x26e: 0x8132, 0x26f: 0x8132,
 	0x274: 0x0170,
-	0x27a: 0x42e0,
+	0x27a: 0x42a1,
 	0x27e: 0x0037,
 	// Block 0xa, offset 0x280
-	0x284: 0x4295, 0x285: 0x44b6,
-	0x286: 0x3624, 0x287: 0x00ce, 0x288: 0x3642, 0x289: 0x364e, 0x28a: 0x3660,
-	0x28c: 0x367e, 0x28e: 0x3690, 0x28f: 0x36ae, 0x290: 0x3e43, 0x291: 0xa000,
+	0x284: 0x4256, 0x285: 0x450d,
+	0x286: 0x35e5, 0x287: 0x00ce, 0x288: 0x3603, 0x289: 0x360f, 0x28a: 0x3621,
+	0x28c: 0x363f, 0x28e: 0x3651, 0x28f: 0x366f, 0x290: 0x3e04, 0x291: 0xa000,
 	0x295: 0xa000, 0x297: 0xa000,
 	0x299: 0xa000,
 	0x29f: 0xa000, 0x2a1: 0xa000,
 	0x2a5: 0xa000, 0x2a9: 0xa000,
-	0x2aa: 0x3672, 0x2ab: 0x36a2, 0x2ac: 0x4839, 0x2ad: 0x36d2, 0x2ae: 0x4863, 0x2af: 0x36e4,
-	0x2b0: 0x3eab, 0x2b1: 0xa000, 0x2b5: 0xa000,
+	0x2aa: 0x3633, 0x2ab: 0x3663, 0x2ac: 0x4890, 0x2ad: 0x3693, 0x2ae: 0x48ba, 0x2af: 0x36a5,
+	0x2b0: 0x3e6c, 0x2b1: 0xa000, 0x2b5: 0xa000,
 	0x2b7: 0xa000, 0x2b9: 0xa000,
 	0x2bf: 0xa000,
 	// Block 0xb, offset 0x2c0
 	0x2c1: 0xa000, 0x2c5: 0xa000,
-	0x2c9: 0xa000, 0x2ca: 0x487b, 0x2cb: 0x4899,
-	0x2cc: 0x3702, 0x2cd: 0x371a, 0x2ce: 0x48b1, 0x2d0: 0x01be, 0x2d1: 0x01d0,
-	0x2d2: 0x01ac, 0x2d3: 0x4347, 0x2d4: 0x434d, 0x2d5: 0x01fa, 0x2d6: 0x01e8,
+	0x2c9: 0xa000, 0x2ca: 0x48d2, 0x2cb: 0x48f0,
+	0x2cc: 0x36c3, 0x2cd: 0x36db, 0x2ce: 0x4908, 0x2d0: 0x01be, 0x2d1: 0x01d0,
+	0x2d2: 0x01ac, 0x2d3: 0x439e, 0x2d4: 0x43a4, 0x2d5: 0x01fa, 0x2d6: 0x01e8,
 	0x2f0: 0x01d6, 0x2f1: 0x01eb, 0x2f2: 0x01ee, 0x2f4: 0x0188, 0x2f5: 0x01c7,
 	0x2f9: 0x01a6,
 	// Block 0xc, offset 0x300
-	0x300: 0x375c, 0x301: 0x3768, 0x303: 0x3756,
-	0x306: 0xa000, 0x307: 0x3744,
-	0x30c: 0x3798, 0x30d: 0x3780, 0x30e: 0x37aa, 0x310: 0xa000,
+	0x300: 0x371d, 0x301: 0x3729, 0x303: 0x3717,
+	0x306: 0xa000, 0x307: 0x3705,
+	0x30c: 0x3759, 0x30d: 0x3741, 0x30e: 0x376b, 0x310: 0xa000,
 	0x313: 0xa000, 0x315: 0xa000, 0x316: 0xa000, 0x317: 0xa000,
-	0x318: 0xa000, 0x319: 0x378c, 0x31a: 0xa000,
+	0x318: 0xa000, 0x319: 0x374d, 0x31a: 0xa000,
 	0x31e: 0xa000, 0x323: 0xa000,
 	0x327: 0xa000,
 	0x32b: 0xa000, 0x32d: 0xa000,
 	0x330: 0xa000, 0x333: 0xa000, 0x335: 0xa000,
-	0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x3810, 0x33a: 0xa000,
+	0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x37d1, 0x33a: 0xa000,
 	0x33e: 0xa000,
 	// Block 0xd, offset 0x340
-	0x341: 0x376e, 0x342: 0x37f2,
-	0x350: 0x374a, 0x351: 0x37ce,
-	0x352: 0x3750, 0x353: 0x37d4, 0x356: 0x3762, 0x357: 0x37e6,
-	0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x3864, 0x35b: 0x386a, 0x35c: 0x3774, 0x35d: 0x37f8,
-	0x35e: 0x377a, 0x35f: 0x37fe, 0x362: 0x3786, 0x363: 0x380a,
-	0x364: 0x3792, 0x365: 0x3816, 0x366: 0x379e, 0x367: 0x3822, 0x368: 0xa000, 0x369: 0xa000,
-	0x36a: 0x3870, 0x36b: 0x3876, 0x36c: 0x37c8, 0x36d: 0x384c, 0x36e: 0x37a4, 0x36f: 0x3828,
-	0x370: 0x37b0, 0x371: 0x3834, 0x372: 0x37b6, 0x373: 0x383a, 0x374: 0x37bc, 0x375: 0x3840,
-	0x378: 0x37c2, 0x379: 0x3846,
+	0x341: 0x372f, 0x342: 0x37b3,
+	0x350: 0x370b, 0x351: 0x378f,
+	0x352: 0x3711, 0x353: 0x3795, 0x356: 0x3723, 0x357: 0x37a7,
+	0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x3825, 0x35b: 0x382b, 0x35c: 0x3735, 0x35d: 0x37b9,
+	0x35e: 0x373b, 0x35f: 0x37bf, 0x362: 0x3747, 0x363: 0x37cb,
+	0x364: 0x3753, 0x365: 0x37d7, 0x366: 0x375f, 0x367: 0x37e3, 0x368: 0xa000, 0x369: 0xa000,
+	0x36a: 0x3831, 0x36b: 0x3837, 0x36c: 0x3789, 0x36d: 0x380d, 0x36e: 0x3765, 0x36f: 0x37e9,
+	0x370: 0x3771, 0x371: 0x37f5, 0x372: 0x3777, 0x373: 0x37fb, 0x374: 0x377d, 0x375: 0x3801,
+	0x378: 0x3783, 0x379: 0x3807,
 	// Block 0xe, offset 0x380
-	0x387: 0x1ef4,
+	0x387: 0x1d5d,
 	0x391: 0x812d,
 	0x392: 0x8132, 0x393: 0x8132, 0x394: 0x8132, 0x395: 0x8132, 0x396: 0x812d, 0x397: 0x8132,
 	0x398: 0x8132, 0x399: 0x8132, 0x39a: 0x812e, 0x39b: 0x812d, 0x39c: 0x8132, 0x39d: 0x8132,
@@ -4631,22 +4658,22 @@
 	0x3d2: 0x811d, 0x3d3: 0x9932, 0x3d4: 0x9932, 0x3d5: 0x992d, 0x3d6: 0x812d, 0x3d7: 0x8132,
 	0x3d8: 0x8132, 0x3d9: 0x8132, 0x3da: 0x8132, 0x3db: 0x8132, 0x3dc: 0x812d, 0x3dd: 0x8132,
 	0x3de: 0x8132, 0x3df: 0x812d,
-	0x3f0: 0x811e, 0x3f5: 0x1f17,
-	0x3f6: 0x21a6, 0x3f7: 0x21e2, 0x3f8: 0x21dd,
+	0x3f0: 0x811e, 0x3f5: 0x1d80,
+	0x3f6: 0x200f, 0x3f7: 0x204b, 0x3f8: 0x2046,
 	// Block 0x10, offset 0x400
 	0x405: 0xa000,
-	0x406: 0x1958, 0x407: 0xa000, 0x408: 0x195f, 0x409: 0xa000, 0x40a: 0x1966, 0x40b: 0xa000,
-	0x40c: 0x196d, 0x40d: 0xa000, 0x40e: 0x1974, 0x411: 0xa000,
-	0x412: 0x197b,
+	0x406: 0x2d22, 0x407: 0xa000, 0x408: 0x2d2a, 0x409: 0xa000, 0x40a: 0x2d32, 0x40b: 0xa000,
+	0x40c: 0x2d3a, 0x40d: 0xa000, 0x40e: 0x2d42, 0x411: 0xa000,
+	0x412: 0x2d4a,
 	0x434: 0x8102, 0x435: 0x9900,
-	0x43a: 0xa000, 0x43b: 0x1982,
-	0x43c: 0xa000, 0x43d: 0x1989, 0x43e: 0xa000, 0x43f: 0xa000,
+	0x43a: 0xa000, 0x43b: 0x2d52,
+	0x43c: 0xa000, 0x43d: 0x2d5a, 0x43e: 0xa000, 0x43f: 0xa000,
 	// Block 0x11, offset 0x440
 	0x440: 0x0069, 0x441: 0x006b, 0x442: 0x006f, 0x443: 0x0083, 0x444: 0x00f5, 0x445: 0x00f8,
-	0x446: 0x048b, 0x447: 0x0085, 0x448: 0x0089, 0x449: 0x008b, 0x44a: 0x0104, 0x44b: 0x0107,
+	0x446: 0x0413, 0x447: 0x0085, 0x448: 0x0089, 0x449: 0x008b, 0x44a: 0x0104, 0x44b: 0x0107,
 	0x44c: 0x010a, 0x44d: 0x008f, 0x44f: 0x0097, 0x450: 0x009b, 0x451: 0x00e0,
-	0x452: 0x009f, 0x453: 0x00fe, 0x454: 0x048f, 0x455: 0x0493, 0x456: 0x00a1, 0x457: 0x00a9,
-	0x458: 0x00ab, 0x459: 0x049b, 0x45a: 0x012b, 0x45b: 0x00ad, 0x45c: 0x049f, 0x45d: 0x01be,
+	0x452: 0x009f, 0x453: 0x00fe, 0x454: 0x0417, 0x455: 0x041b, 0x456: 0x00a1, 0x457: 0x00a9,
+	0x458: 0x00ab, 0x459: 0x0423, 0x45a: 0x012b, 0x45b: 0x00ad, 0x45c: 0x0427, 0x45d: 0x01be,
 	0x45e: 0x01c1, 0x45f: 0x01c4, 0x460: 0x01fa, 0x461: 0x01fd, 0x462: 0x0093, 0x463: 0x00a5,
 	0x464: 0x00ab, 0x465: 0x00ad, 0x466: 0x01be, 0x467: 0x01c1, 0x468: 0x01eb, 0x469: 0x01fa,
 	0x46a: 0x01fd,
@@ -4654,809 +4681,830 @@
 	// Block 0x12, offset 0x480
 	0x49b: 0x00fb, 0x49c: 0x0087, 0x49d: 0x0101,
 	0x49e: 0x00d4, 0x49f: 0x010a, 0x4a0: 0x008d, 0x4a1: 0x010d, 0x4a2: 0x0110, 0x4a3: 0x0116,
-	0x4a4: 0x011c, 0x4a5: 0x011f, 0x4a6: 0x0122, 0x4a7: 0x04a3, 0x4a8: 0x016a, 0x4a9: 0x0128,
-	0x4aa: 0x04a7, 0x4ab: 0x016d, 0x4ac: 0x0131, 0x4ad: 0x012e, 0x4ae: 0x0134, 0x4af: 0x0137,
+	0x4a4: 0x011c, 0x4a5: 0x011f, 0x4a6: 0x0122, 0x4a7: 0x042b, 0x4a8: 0x016a, 0x4a9: 0x0128,
+	0x4aa: 0x042f, 0x4ab: 0x016d, 0x4ac: 0x0131, 0x4ad: 0x012e, 0x4ae: 0x0134, 0x4af: 0x0137,
 	0x4b0: 0x013a, 0x4b1: 0x013d, 0x4b2: 0x0140, 0x4b3: 0x014c, 0x4b4: 0x014f, 0x4b5: 0x00ec,
-	0x4b6: 0x0152, 0x4b7: 0x0155, 0x4b8: 0x0497, 0x4b9: 0x0158, 0x4ba: 0x015b, 0x4bb: 0x00b5,
+	0x4b6: 0x0152, 0x4b7: 0x0155, 0x4b8: 0x041f, 0x4b9: 0x0158, 0x4ba: 0x015b, 0x4bb: 0x00b5,
 	0x4bc: 0x015e, 0x4bd: 0x0161, 0x4be: 0x0164, 0x4bf: 0x01d0,
 	// Block 0x13, offset 0x4c0
-	0x4c0: 0x2fd2, 0x4c1: 0x32de, 0x4c2: 0x2fdc, 0x4c3: 0x32e8, 0x4c4: 0x2fe1, 0x4c5: 0x32ed,
-	0x4c6: 0x2fe6, 0x4c7: 0x32f2, 0x4c8: 0x3907, 0x4c9: 0x3a96, 0x4ca: 0x2fff, 0x4cb: 0x330b,
-	0x4cc: 0x3009, 0x4cd: 0x3315, 0x4ce: 0x3018, 0x4cf: 0x3324, 0x4d0: 0x300e, 0x4d1: 0x331a,
-	0x4d2: 0x3013, 0x4d3: 0x331f, 0x4d4: 0x392a, 0x4d5: 0x3ab9, 0x4d6: 0x3931, 0x4d7: 0x3ac0,
-	0x4d8: 0x3054, 0x4d9: 0x3360, 0x4da: 0x3059, 0x4db: 0x3365, 0x4dc: 0x393f, 0x4dd: 0x3ace,
-	0x4de: 0x305e, 0x4df: 0x336a, 0x4e0: 0x306d, 0x4e1: 0x3379, 0x4e2: 0x308b, 0x4e3: 0x3397,
-	0x4e4: 0x309a, 0x4e5: 0x33a6, 0x4e6: 0x3090, 0x4e7: 0x339c, 0x4e8: 0x309f, 0x4e9: 0x33ab,
-	0x4ea: 0x30a4, 0x4eb: 0x33b0, 0x4ec: 0x30ea, 0x4ed: 0x33f6, 0x4ee: 0x3946, 0x4ef: 0x3ad5,
-	0x4f0: 0x30f4, 0x4f1: 0x3405, 0x4f2: 0x30fe, 0x4f3: 0x340f, 0x4f4: 0x3108, 0x4f5: 0x3419,
-	0x4f6: 0x46ff, 0x4f7: 0x4790, 0x4f8: 0x394d, 0x4f9: 0x3adc, 0x4fa: 0x3121, 0x4fb: 0x3432,
-	0x4fc: 0x311c, 0x4fd: 0x342d, 0x4fe: 0x3126, 0x4ff: 0x3437,
+	0x4c0: 0x2f93, 0x4c1: 0x329f, 0x4c2: 0x2f9d, 0x4c3: 0x32a9, 0x4c4: 0x2fa2, 0x4c5: 0x32ae,
+	0x4c6: 0x2fa7, 0x4c7: 0x32b3, 0x4c8: 0x38c8, 0x4c9: 0x3a57, 0x4ca: 0x2fc0, 0x4cb: 0x32cc,
+	0x4cc: 0x2fca, 0x4cd: 0x32d6, 0x4ce: 0x2fd9, 0x4cf: 0x32e5, 0x4d0: 0x2fcf, 0x4d1: 0x32db,
+	0x4d2: 0x2fd4, 0x4d3: 0x32e0, 0x4d4: 0x38eb, 0x4d5: 0x3a7a, 0x4d6: 0x38f2, 0x4d7: 0x3a81,
+	0x4d8: 0x3015, 0x4d9: 0x3321, 0x4da: 0x301a, 0x4db: 0x3326, 0x4dc: 0x3900, 0x4dd: 0x3a8f,
+	0x4de: 0x301f, 0x4df: 0x332b, 0x4e0: 0x302e, 0x4e1: 0x333a, 0x4e2: 0x304c, 0x4e3: 0x3358,
+	0x4e4: 0x305b, 0x4e5: 0x3367, 0x4e6: 0x3051, 0x4e7: 0x335d, 0x4e8: 0x3060, 0x4e9: 0x336c,
+	0x4ea: 0x3065, 0x4eb: 0x3371, 0x4ec: 0x30ab, 0x4ed: 0x33b7, 0x4ee: 0x3907, 0x4ef: 0x3a96,
+	0x4f0: 0x30b5, 0x4f1: 0x33c6, 0x4f2: 0x30bf, 0x4f3: 0x33d0, 0x4f4: 0x30c9, 0x4f5: 0x33da,
+	0x4f6: 0x4756, 0x4f7: 0x47e7, 0x4f8: 0x390e, 0x4f9: 0x3a9d, 0x4fa: 0x30e2, 0x4fb: 0x33f3,
+	0x4fc: 0x30dd, 0x4fd: 0x33ee, 0x4fe: 0x30e7, 0x4ff: 0x33f8,
 	// Block 0x14, offset 0x500
-	0x500: 0x312b, 0x501: 0x343c, 0x502: 0x3130, 0x503: 0x3441, 0x504: 0x3144, 0x505: 0x3455,
-	0x506: 0x314e, 0x507: 0x345f, 0x508: 0x315d, 0x509: 0x346e, 0x50a: 0x3158, 0x50b: 0x3469,
-	0x50c: 0x3970, 0x50d: 0x3aff, 0x50e: 0x397e, 0x50f: 0x3b0d, 0x510: 0x3985, 0x511: 0x3b14,
-	0x512: 0x398c, 0x513: 0x3b1b, 0x514: 0x318a, 0x515: 0x349b, 0x516: 0x318f, 0x517: 0x34a0,
-	0x518: 0x3199, 0x519: 0x34aa, 0x51a: 0x472c, 0x51b: 0x47bd, 0x51c: 0x39d2, 0x51d: 0x3b61,
-	0x51e: 0x31b2, 0x51f: 0x34c3, 0x520: 0x31bc, 0x521: 0x34cd, 0x522: 0x473b, 0x523: 0x47cc,
-	0x524: 0x39d9, 0x525: 0x3b68, 0x526: 0x39e0, 0x527: 0x3b6f, 0x528: 0x39e7, 0x529: 0x3b76,
-	0x52a: 0x31cb, 0x52b: 0x34dc, 0x52c: 0x31d5, 0x52d: 0x34eb, 0x52e: 0x31e9, 0x52f: 0x34ff,
-	0x530: 0x31e4, 0x531: 0x34fa, 0x532: 0x3225, 0x533: 0x353b, 0x534: 0x3234, 0x535: 0x354a,
-	0x536: 0x322f, 0x537: 0x3545, 0x538: 0x39ee, 0x539: 0x3b7d, 0x53a: 0x39f5, 0x53b: 0x3b84,
-	0x53c: 0x3239, 0x53d: 0x354f, 0x53e: 0x323e, 0x53f: 0x3554,
+	0x500: 0x30ec, 0x501: 0x33fd, 0x502: 0x30f1, 0x503: 0x3402, 0x504: 0x3105, 0x505: 0x3416,
+	0x506: 0x310f, 0x507: 0x3420, 0x508: 0x311e, 0x509: 0x342f, 0x50a: 0x3119, 0x50b: 0x342a,
+	0x50c: 0x3931, 0x50d: 0x3ac0, 0x50e: 0x393f, 0x50f: 0x3ace, 0x510: 0x3946, 0x511: 0x3ad5,
+	0x512: 0x394d, 0x513: 0x3adc, 0x514: 0x314b, 0x515: 0x345c, 0x516: 0x3150, 0x517: 0x3461,
+	0x518: 0x315a, 0x519: 0x346b, 0x51a: 0x4783, 0x51b: 0x4814, 0x51c: 0x3993, 0x51d: 0x3b22,
+	0x51e: 0x3173, 0x51f: 0x3484, 0x520: 0x317d, 0x521: 0x348e, 0x522: 0x4792, 0x523: 0x4823,
+	0x524: 0x399a, 0x525: 0x3b29, 0x526: 0x39a1, 0x527: 0x3b30, 0x528: 0x39a8, 0x529: 0x3b37,
+	0x52a: 0x318c, 0x52b: 0x349d, 0x52c: 0x3196, 0x52d: 0x34ac, 0x52e: 0x31aa, 0x52f: 0x34c0,
+	0x530: 0x31a5, 0x531: 0x34bb, 0x532: 0x31e6, 0x533: 0x34fc, 0x534: 0x31f5, 0x535: 0x350b,
+	0x536: 0x31f0, 0x537: 0x3506, 0x538: 0x39af, 0x539: 0x3b3e, 0x53a: 0x39b6, 0x53b: 0x3b45,
+	0x53c: 0x31fa, 0x53d: 0x3510, 0x53e: 0x31ff, 0x53f: 0x3515,
 	// Block 0x15, offset 0x540
-	0x540: 0x3243, 0x541: 0x3559, 0x542: 0x3248, 0x543: 0x355e, 0x544: 0x3257, 0x545: 0x356d,
-	0x546: 0x3252, 0x547: 0x3568, 0x548: 0x325c, 0x549: 0x3577, 0x54a: 0x3261, 0x54b: 0x357c,
-	0x54c: 0x3266, 0x54d: 0x3581, 0x54e: 0x3284, 0x54f: 0x359f, 0x550: 0x329d, 0x551: 0x35bd,
-	0x552: 0x32ac, 0x553: 0x35cc, 0x554: 0x32b1, 0x555: 0x35d1, 0x556: 0x33b5, 0x557: 0x34e1,
-	0x558: 0x3572, 0x559: 0x35ae, 0x55a: 0x1d73, 0x55b: 0x4312,
-	0x560: 0x46dc, 0x561: 0x476d, 0x562: 0x2fbe, 0x563: 0x32ca,
-	0x564: 0x38b3, 0x565: 0x3a42, 0x566: 0x38ac, 0x567: 0x3a3b, 0x568: 0x38c1, 0x569: 0x3a50,
-	0x56a: 0x38ba, 0x56b: 0x3a49, 0x56c: 0x38f9, 0x56d: 0x3a88, 0x56e: 0x38cf, 0x56f: 0x3a5e,
-	0x570: 0x38c8, 0x571: 0x3a57, 0x572: 0x38dd, 0x573: 0x3a6c, 0x574: 0x38d6, 0x575: 0x3a65,
-	0x576: 0x3900, 0x577: 0x3a8f, 0x578: 0x46f0, 0x579: 0x4781, 0x57a: 0x303b, 0x57b: 0x3347,
-	0x57c: 0x3027, 0x57d: 0x3333, 0x57e: 0x3915, 0x57f: 0x3aa4,
+	0x540: 0x3204, 0x541: 0x351a, 0x542: 0x3209, 0x543: 0x351f, 0x544: 0x3218, 0x545: 0x352e,
+	0x546: 0x3213, 0x547: 0x3529, 0x548: 0x321d, 0x549: 0x3538, 0x54a: 0x3222, 0x54b: 0x353d,
+	0x54c: 0x3227, 0x54d: 0x3542, 0x54e: 0x3245, 0x54f: 0x3560, 0x550: 0x325e, 0x551: 0x357e,
+	0x552: 0x326d, 0x553: 0x358d, 0x554: 0x3272, 0x555: 0x3592, 0x556: 0x3376, 0x557: 0x34a2,
+	0x558: 0x3533, 0x559: 0x356f, 0x55a: 0x1bdc, 0x55b: 0x42d3,
+	0x560: 0x4733, 0x561: 0x47c4, 0x562: 0x2f7f, 0x563: 0x328b,
+	0x564: 0x3874, 0x565: 0x3a03, 0x566: 0x386d, 0x567: 0x39fc, 0x568: 0x3882, 0x569: 0x3a11,
+	0x56a: 0x387b, 0x56b: 0x3a0a, 0x56c: 0x38ba, 0x56d: 0x3a49, 0x56e: 0x3890, 0x56f: 0x3a1f,
+	0x570: 0x3889, 0x571: 0x3a18, 0x572: 0x389e, 0x573: 0x3a2d, 0x574: 0x3897, 0x575: 0x3a26,
+	0x576: 0x38c1, 0x577: 0x3a50, 0x578: 0x4747, 0x579: 0x47d8, 0x57a: 0x2ffc, 0x57b: 0x3308,
+	0x57c: 0x2fe8, 0x57d: 0x32f4, 0x57e: 0x38d6, 0x57f: 0x3a65,
 	// Block 0x16, offset 0x580
-	0x580: 0x390e, 0x581: 0x3a9d, 0x582: 0x3923, 0x583: 0x3ab2, 0x584: 0x391c, 0x585: 0x3aab,
-	0x586: 0x3938, 0x587: 0x3ac7, 0x588: 0x30cc, 0x589: 0x33d8, 0x58a: 0x30e0, 0x58b: 0x33ec,
-	0x58c: 0x4722, 0x58d: 0x47b3, 0x58e: 0x3171, 0x58f: 0x3482, 0x590: 0x395b, 0x591: 0x3aea,
-	0x592: 0x3954, 0x593: 0x3ae3, 0x594: 0x3969, 0x595: 0x3af8, 0x596: 0x3962, 0x597: 0x3af1,
-	0x598: 0x39c4, 0x599: 0x3b53, 0x59a: 0x39a8, 0x59b: 0x3b37, 0x59c: 0x39a1, 0x59d: 0x3b30,
-	0x59e: 0x39b6, 0x59f: 0x3b45, 0x5a0: 0x39af, 0x5a1: 0x3b3e, 0x5a2: 0x39bd, 0x5a3: 0x3b4c,
-	0x5a4: 0x3220, 0x5a5: 0x3536, 0x5a6: 0x3202, 0x5a7: 0x3518, 0x5a8: 0x3a1f, 0x5a9: 0x3bae,
-	0x5aa: 0x3a18, 0x5ab: 0x3ba7, 0x5ac: 0x3a2d, 0x5ad: 0x3bbc, 0x5ae: 0x3a26, 0x5af: 0x3bb5,
-	0x5b0: 0x3a34, 0x5b1: 0x3bc3, 0x5b2: 0x326b, 0x5b3: 0x3586, 0x5b4: 0x3293, 0x5b5: 0x35b3,
-	0x5b6: 0x328e, 0x5b7: 0x35a9, 0x5b8: 0x327a, 0x5b9: 0x3595,
+	0x580: 0x38cf, 0x581: 0x3a5e, 0x582: 0x38e4, 0x583: 0x3a73, 0x584: 0x38dd, 0x585: 0x3a6c,
+	0x586: 0x38f9, 0x587: 0x3a88, 0x588: 0x308d, 0x589: 0x3399, 0x58a: 0x30a1, 0x58b: 0x33ad,
+	0x58c: 0x4779, 0x58d: 0x480a, 0x58e: 0x3132, 0x58f: 0x3443, 0x590: 0x391c, 0x591: 0x3aab,
+	0x592: 0x3915, 0x593: 0x3aa4, 0x594: 0x392a, 0x595: 0x3ab9, 0x596: 0x3923, 0x597: 0x3ab2,
+	0x598: 0x3985, 0x599: 0x3b14, 0x59a: 0x3969, 0x59b: 0x3af8, 0x59c: 0x3962, 0x59d: 0x3af1,
+	0x59e: 0x3977, 0x59f: 0x3b06, 0x5a0: 0x3970, 0x5a1: 0x3aff, 0x5a2: 0x397e, 0x5a3: 0x3b0d,
+	0x5a4: 0x31e1, 0x5a5: 0x34f7, 0x5a6: 0x31c3, 0x5a7: 0x34d9, 0x5a8: 0x39e0, 0x5a9: 0x3b6f,
+	0x5aa: 0x39d9, 0x5ab: 0x3b68, 0x5ac: 0x39ee, 0x5ad: 0x3b7d, 0x5ae: 0x39e7, 0x5af: 0x3b76,
+	0x5b0: 0x39f5, 0x5b1: 0x3b84, 0x5b2: 0x322c, 0x5b3: 0x3547, 0x5b4: 0x3254, 0x5b5: 0x3574,
+	0x5b6: 0x324f, 0x5b7: 0x356a, 0x5b8: 0x323b, 0x5b9: 0x3556,
 	// Block 0x17, offset 0x5c0
-	0x5c0: 0x483f, 0x5c1: 0x4845, 0x5c2: 0x4959, 0x5c3: 0x4971, 0x5c4: 0x4961, 0x5c5: 0x4979,
-	0x5c6: 0x4969, 0x5c7: 0x4981, 0x5c8: 0x47e5, 0x5c9: 0x47eb, 0x5ca: 0x48c9, 0x5cb: 0x48e1,
-	0x5cc: 0x48d1, 0x5cd: 0x48e9, 0x5ce: 0x48d9, 0x5cf: 0x48f1, 0x5d0: 0x4851, 0x5d1: 0x4857,
-	0x5d2: 0x3df3, 0x5d3: 0x3e03, 0x5d4: 0x3dfb, 0x5d5: 0x3e0b,
-	0x5d8: 0x47f1, 0x5d9: 0x47f7, 0x5da: 0x3d23, 0x5db: 0x3d33, 0x5dc: 0x3d2b, 0x5dd: 0x3d3b,
-	0x5e0: 0x4869, 0x5e1: 0x486f, 0x5e2: 0x4989, 0x5e3: 0x49a1,
-	0x5e4: 0x4991, 0x5e5: 0x49a9, 0x5e6: 0x4999, 0x5e7: 0x49b1, 0x5e8: 0x47fd, 0x5e9: 0x4803,
-	0x5ea: 0x48f9, 0x5eb: 0x4911, 0x5ec: 0x4901, 0x5ed: 0x4919, 0x5ee: 0x4909, 0x5ef: 0x4921,
-	0x5f0: 0x4881, 0x5f1: 0x4887, 0x5f2: 0x3e53, 0x5f3: 0x3e6b, 0x5f4: 0x3e5b, 0x5f5: 0x3e73,
-	0x5f6: 0x3e63, 0x5f7: 0x3e7b, 0x5f8: 0x4809, 0x5f9: 0x480f, 0x5fa: 0x3d53, 0x5fb: 0x3d6b,
-	0x5fc: 0x3d5b, 0x5fd: 0x3d73, 0x5fe: 0x3d63, 0x5ff: 0x3d7b,
+	0x5c0: 0x4896, 0x5c1: 0x489c, 0x5c2: 0x49b0, 0x5c3: 0x49c8, 0x5c4: 0x49b8, 0x5c5: 0x49d0,
+	0x5c6: 0x49c0, 0x5c7: 0x49d8, 0x5c8: 0x483c, 0x5c9: 0x4842, 0x5ca: 0x4920, 0x5cb: 0x4938,
+	0x5cc: 0x4928, 0x5cd: 0x4940, 0x5ce: 0x4930, 0x5cf: 0x4948, 0x5d0: 0x48a8, 0x5d1: 0x48ae,
+	0x5d2: 0x3db4, 0x5d3: 0x3dc4, 0x5d4: 0x3dbc, 0x5d5: 0x3dcc,
+	0x5d8: 0x4848, 0x5d9: 0x484e, 0x5da: 0x3ce4, 0x5db: 0x3cf4, 0x5dc: 0x3cec, 0x5dd: 0x3cfc,
+	0x5e0: 0x48c0, 0x5e1: 0x48c6, 0x5e2: 0x49e0, 0x5e3: 0x49f8,
+	0x5e4: 0x49e8, 0x5e5: 0x4a00, 0x5e6: 0x49f0, 0x5e7: 0x4a08, 0x5e8: 0x4854, 0x5e9: 0x485a,
+	0x5ea: 0x4950, 0x5eb: 0x4968, 0x5ec: 0x4958, 0x5ed: 0x4970, 0x5ee: 0x4960, 0x5ef: 0x4978,
+	0x5f0: 0x48d8, 0x5f1: 0x48de, 0x5f2: 0x3e14, 0x5f3: 0x3e2c, 0x5f4: 0x3e1c, 0x5f5: 0x3e34,
+	0x5f6: 0x3e24, 0x5f7: 0x3e3c, 0x5f8: 0x4860, 0x5f9: 0x4866, 0x5fa: 0x3d14, 0x5fb: 0x3d2c,
+	0x5fc: 0x3d1c, 0x5fd: 0x3d34, 0x5fe: 0x3d24, 0x5ff: 0x3d3c,
 	// Block 0x18, offset 0x600
-	0x600: 0x488d, 0x601: 0x4893, 0x602: 0x3e83, 0x603: 0x3e93, 0x604: 0x3e8b, 0x605: 0x3e9b,
-	0x608: 0x4815, 0x609: 0x481b, 0x60a: 0x3d83, 0x60b: 0x3d93,
-	0x60c: 0x3d8b, 0x60d: 0x3d9b, 0x610: 0x489f, 0x611: 0x48a5,
-	0x612: 0x3ebb, 0x613: 0x3ed3, 0x614: 0x3ec3, 0x615: 0x3edb, 0x616: 0x3ecb, 0x617: 0x3ee3,
-	0x619: 0x4821, 0x61b: 0x3da3, 0x61d: 0x3dab,
-	0x61f: 0x3db3, 0x620: 0x48b7, 0x621: 0x48bd, 0x622: 0x49b9, 0x623: 0x49d1,
-	0x624: 0x49c1, 0x625: 0x49d9, 0x626: 0x49c9, 0x627: 0x49e1, 0x628: 0x4827, 0x629: 0x482d,
-	0x62a: 0x4929, 0x62b: 0x4941, 0x62c: 0x4931, 0x62d: 0x4949, 0x62e: 0x4939, 0x62f: 0x4951,
-	0x630: 0x4833, 0x631: 0x4359, 0x632: 0x36cc, 0x633: 0x435f, 0x634: 0x485d, 0x635: 0x4365,
-	0x636: 0x36de, 0x637: 0x436b, 0x638: 0x36fc, 0x639: 0x4371, 0x63a: 0x3714, 0x63b: 0x4377,
-	0x63c: 0x48ab, 0x63d: 0x437d,
+	0x600: 0x48e4, 0x601: 0x48ea, 0x602: 0x3e44, 0x603: 0x3e54, 0x604: 0x3e4c, 0x605: 0x3e5c,
+	0x608: 0x486c, 0x609: 0x4872, 0x60a: 0x3d44, 0x60b: 0x3d54,
+	0x60c: 0x3d4c, 0x60d: 0x3d5c, 0x610: 0x48f6, 0x611: 0x48fc,
+	0x612: 0x3e7c, 0x613: 0x3e94, 0x614: 0x3e84, 0x615: 0x3e9c, 0x616: 0x3e8c, 0x617: 0x3ea4,
+	0x619: 0x4878, 0x61b: 0x3d64, 0x61d: 0x3d6c,
+	0x61f: 0x3d74, 0x620: 0x490e, 0x621: 0x4914, 0x622: 0x4a10, 0x623: 0x4a28,
+	0x624: 0x4a18, 0x625: 0x4a30, 0x626: 0x4a20, 0x627: 0x4a38, 0x628: 0x487e, 0x629: 0x4884,
+	0x62a: 0x4980, 0x62b: 0x4998, 0x62c: 0x4988, 0x62d: 0x49a0, 0x62e: 0x4990, 0x62f: 0x49a8,
+	0x630: 0x488a, 0x631: 0x43b0, 0x632: 0x368d, 0x633: 0x43b6, 0x634: 0x48b4, 0x635: 0x43bc,
+	0x636: 0x369f, 0x637: 0x43c2, 0x638: 0x36bd, 0x639: 0x43c8, 0x63a: 0x36d5, 0x63b: 0x43ce,
+	0x63c: 0x4902, 0x63d: 0x43d4,
 	// Block 0x19, offset 0x640
-	0x640: 0x3ddb, 0x641: 0x3de3, 0x642: 0x41bf, 0x643: 0x41dd, 0x644: 0x41c9, 0x645: 0x41e7,
-	0x646: 0x41d3, 0x647: 0x41f1, 0x648: 0x3d13, 0x649: 0x3d1b, 0x64a: 0x410b, 0x64b: 0x4129,
-	0x64c: 0x4115, 0x64d: 0x4133, 0x64e: 0x411f, 0x64f: 0x413d, 0x650: 0x3e23, 0x651: 0x3e2b,
-	0x652: 0x41fb, 0x653: 0x4219, 0x654: 0x4205, 0x655: 0x4223, 0x656: 0x420f, 0x657: 0x422d,
-	0x658: 0x3d43, 0x659: 0x3d4b, 0x65a: 0x4147, 0x65b: 0x4165, 0x65c: 0x4151, 0x65d: 0x416f,
-	0x65e: 0x415b, 0x65f: 0x4179, 0x660: 0x3efb, 0x661: 0x3f03, 0x662: 0x4237, 0x663: 0x4255,
-	0x664: 0x4241, 0x665: 0x425f, 0x666: 0x424b, 0x667: 0x4269, 0x668: 0x3dbb, 0x669: 0x3dc3,
-	0x66a: 0x4183, 0x66b: 0x41a1, 0x66c: 0x418d, 0x66d: 0x41ab, 0x66e: 0x4197, 0x66f: 0x41b5,
-	0x670: 0x36c0, 0x671: 0x36ba, 0x672: 0x3dcb, 0x673: 0x36c6, 0x674: 0x3dd3,
-	0x676: 0x484b, 0x677: 0x3deb, 0x678: 0x3630, 0x679: 0x362a, 0x67a: 0x361e, 0x67b: 0x4329,
-	0x67c: 0x3636, 0x67d: 0x42c2, 0x67e: 0x01d3, 0x67f: 0x42c2,
+	0x640: 0x3d9c, 0x641: 0x3da4, 0x642: 0x4180, 0x643: 0x419e, 0x644: 0x418a, 0x645: 0x41a8,
+	0x646: 0x4194, 0x647: 0x41b2, 0x648: 0x3cd4, 0x649: 0x3cdc, 0x64a: 0x40cc, 0x64b: 0x40ea,
+	0x64c: 0x40d6, 0x64d: 0x40f4, 0x64e: 0x40e0, 0x64f: 0x40fe, 0x650: 0x3de4, 0x651: 0x3dec,
+	0x652: 0x41bc, 0x653: 0x41da, 0x654: 0x41c6, 0x655: 0x41e4, 0x656: 0x41d0, 0x657: 0x41ee,
+	0x658: 0x3d04, 0x659: 0x3d0c, 0x65a: 0x4108, 0x65b: 0x4126, 0x65c: 0x4112, 0x65d: 0x4130,
+	0x65e: 0x411c, 0x65f: 0x413a, 0x660: 0x3ebc, 0x661: 0x3ec4, 0x662: 0x41f8, 0x663: 0x4216,
+	0x664: 0x4202, 0x665: 0x4220, 0x666: 0x420c, 0x667: 0x422a, 0x668: 0x3d7c, 0x669: 0x3d84,
+	0x66a: 0x4144, 0x66b: 0x4162, 0x66c: 0x414e, 0x66d: 0x416c, 0x66e: 0x4158, 0x66f: 0x4176,
+	0x670: 0x3681, 0x671: 0x367b, 0x672: 0x3d8c, 0x673: 0x3687, 0x674: 0x3d94,
+	0x676: 0x48a2, 0x677: 0x3dac, 0x678: 0x35f1, 0x679: 0x35eb, 0x67a: 0x35df, 0x67b: 0x4380,
+	0x67c: 0x35f7, 0x67d: 0x4283, 0x67e: 0x01d3, 0x67f: 0x4283,
 	// Block 0x1a, offset 0x680
-	0x680: 0x42db, 0x681: 0x44bd, 0x682: 0x3e13, 0x683: 0x36d8, 0x684: 0x3e1b,
-	0x686: 0x4875, 0x687: 0x3e33, 0x688: 0x363c, 0x689: 0x432f, 0x68a: 0x3648, 0x68b: 0x4335,
-	0x68c: 0x3654, 0x68d: 0x44c4, 0x68e: 0x44cb, 0x68f: 0x44d2, 0x690: 0x36f0, 0x691: 0x36ea,
-	0x692: 0x3e3b, 0x693: 0x451f, 0x696: 0x36f6, 0x697: 0x3e4b,
-	0x698: 0x366c, 0x699: 0x3666, 0x69a: 0x365a, 0x69b: 0x433b, 0x69d: 0x44d9,
-	0x69e: 0x44e0, 0x69f: 0x44e7, 0x6a0: 0x3726, 0x6a1: 0x3720, 0x6a2: 0x3ea3, 0x6a3: 0x4527,
-	0x6a4: 0x3708, 0x6a5: 0x370e, 0x6a6: 0x372c, 0x6a7: 0x3eb3, 0x6a8: 0x369c, 0x6a9: 0x3696,
-	0x6aa: 0x368a, 0x6ab: 0x4347, 0x6ac: 0x3684, 0x6ad: 0x44af, 0x6ae: 0x44b6, 0x6af: 0x0081,
-	0x6b2: 0x3eeb, 0x6b3: 0x3732, 0x6b4: 0x3ef3,
-	0x6b6: 0x48c3, 0x6b7: 0x3f0b, 0x6b8: 0x3678, 0x6b9: 0x4341, 0x6ba: 0x36a8, 0x6bb: 0x4353,
-	0x6bc: 0x36b4, 0x6bd: 0x4295, 0x6be: 0x42c7,
+	0x680: 0x429c, 0x681: 0x4514, 0x682: 0x3dd4, 0x683: 0x3699, 0x684: 0x3ddc,
+	0x686: 0x48cc, 0x687: 0x3df4, 0x688: 0x35fd, 0x689: 0x4386, 0x68a: 0x3609, 0x68b: 0x438c,
+	0x68c: 0x3615, 0x68d: 0x451b, 0x68e: 0x4522, 0x68f: 0x4529, 0x690: 0x36b1, 0x691: 0x36ab,
+	0x692: 0x3dfc, 0x693: 0x4576, 0x696: 0x36b7, 0x697: 0x3e0c,
+	0x698: 0x362d, 0x699: 0x3627, 0x69a: 0x361b, 0x69b: 0x4392, 0x69d: 0x4530,
+	0x69e: 0x4537, 0x69f: 0x453e, 0x6a0: 0x36e7, 0x6a1: 0x36e1, 0x6a2: 0x3e64, 0x6a3: 0x457e,
+	0x6a4: 0x36c9, 0x6a5: 0x36cf, 0x6a6: 0x36ed, 0x6a7: 0x3e74, 0x6a8: 0x365d, 0x6a9: 0x3657,
+	0x6aa: 0x364b, 0x6ab: 0x439e, 0x6ac: 0x3645, 0x6ad: 0x4506, 0x6ae: 0x450d, 0x6af: 0x0081,
+	0x6b2: 0x3eac, 0x6b3: 0x36f3, 0x6b4: 0x3eb4,
+	0x6b6: 0x491a, 0x6b7: 0x3ecc, 0x6b8: 0x3639, 0x6b9: 0x4398, 0x6ba: 0x3669, 0x6bb: 0x43aa,
+	0x6bc: 0x3675, 0x6bd: 0x4256, 0x6be: 0x4288,
 	// Block 0x1b, offset 0x6c0
-	0x6c0: 0x1d6b, 0x6c1: 0x1d6f, 0x6c2: 0x0047, 0x6c3: 0x1de7, 0x6c5: 0x1d7b,
-	0x6c6: 0x1d7f, 0x6c7: 0x00e9, 0x6c9: 0x1deb, 0x6ca: 0x008f, 0x6cb: 0x0051,
+	0x6c0: 0x1bd4, 0x6c1: 0x1bd8, 0x6c2: 0x0047, 0x6c3: 0x1c50, 0x6c5: 0x1be4,
+	0x6c6: 0x1be8, 0x6c7: 0x00e9, 0x6c9: 0x1c54, 0x6ca: 0x008f, 0x6cb: 0x0051,
 	0x6cc: 0x0051, 0x6cd: 0x0051, 0x6ce: 0x0091, 0x6cf: 0x00da, 0x6d0: 0x0053, 0x6d1: 0x0053,
-	0x6d2: 0x0059, 0x6d3: 0x0099, 0x6d5: 0x005d, 0x6d6: 0x1b20,
+	0x6d2: 0x0059, 0x6d3: 0x0099, 0x6d5: 0x005d, 0x6d6: 0x1989,
 	0x6d9: 0x0061, 0x6da: 0x0063, 0x6db: 0x0065, 0x6dc: 0x0065, 0x6dd: 0x0065,
-	0x6e0: 0x1b32, 0x6e1: 0x1d5b, 0x6e2: 0x1b3b,
+	0x6e0: 0x199b, 0x6e1: 0x1bc4, 0x6e2: 0x19a4,
 	0x6e4: 0x0075, 0x6e6: 0x01b8, 0x6e8: 0x0075,
-	0x6ea: 0x0057, 0x6eb: 0x430d, 0x6ec: 0x0045, 0x6ed: 0x0047, 0x6ef: 0x008b,
+	0x6ea: 0x0057, 0x6eb: 0x42ce, 0x6ec: 0x0045, 0x6ed: 0x0047, 0x6ef: 0x008b,
 	0x6f0: 0x004b, 0x6f1: 0x004d, 0x6f3: 0x005b, 0x6f4: 0x009f, 0x6f5: 0x0215,
-	0x6f6: 0x0218, 0x6f7: 0x021b, 0x6f8: 0x021e, 0x6f9: 0x0093, 0x6fb: 0x1d2b,
+	0x6f6: 0x0218, 0x6f7: 0x021b, 0x6f8: 0x021e, 0x6f9: 0x0093, 0x6fb: 0x1b94,
 	0x6fc: 0x01e8, 0x6fd: 0x01c1, 0x6fe: 0x0179, 0x6ff: 0x01a0,
 	// Block 0x1c, offset 0x700
-	0x700: 0x04db, 0x705: 0x0049,
+	0x700: 0x0463, 0x705: 0x0049,
 	0x706: 0x0089, 0x707: 0x008b, 0x708: 0x0093, 0x709: 0x0095,
-	0x710: 0x23c1, 0x711: 0x23cd,
-	0x712: 0x2481, 0x713: 0x23a9, 0x714: 0x242d, 0x715: 0x23b5, 0x716: 0x2433, 0x717: 0x244b,
-	0x718: 0x2457, 0x719: 0x23bb, 0x71a: 0x245d, 0x71b: 0x23c7, 0x71c: 0x2451, 0x71d: 0x2463,
-	0x71e: 0x2469, 0x71f: 0x1e4f, 0x720: 0x0053, 0x721: 0x1aed, 0x722: 0x1d37, 0x723: 0x1af6,
-	0x724: 0x006d, 0x725: 0x1b3e, 0x726: 0x1d63, 0x727: 0x1edb, 0x728: 0x1af9, 0x729: 0x0071,
-	0x72a: 0x1b4a, 0x72b: 0x1d67, 0x72c: 0x0059, 0x72d: 0x0047, 0x72e: 0x0049, 0x72f: 0x005b,
-	0x730: 0x0093, 0x731: 0x1b77, 0x732: 0x1dab, 0x733: 0x1b80, 0x734: 0x00ad, 0x735: 0x1bf5,
-	0x736: 0x1ddf, 0x737: 0x1eef, 0x738: 0x1b83, 0x739: 0x00b1, 0x73a: 0x1bf8, 0x73b: 0x1de3,
+	0x710: 0x222a, 0x711: 0x2236,
+	0x712: 0x22ea, 0x713: 0x2212, 0x714: 0x2296, 0x715: 0x221e, 0x716: 0x229c, 0x717: 0x22b4,
+	0x718: 0x22c0, 0x719: 0x2224, 0x71a: 0x22c6, 0x71b: 0x2230, 0x71c: 0x22ba, 0x71d: 0x22cc,
+	0x71e: 0x22d2, 0x71f: 0x1cb8, 0x720: 0x0053, 0x721: 0x1956, 0x722: 0x1ba0, 0x723: 0x195f,
+	0x724: 0x006d, 0x725: 0x19a7, 0x726: 0x1bcc, 0x727: 0x1d44, 0x728: 0x1962, 0x729: 0x0071,
+	0x72a: 0x19b3, 0x72b: 0x1bd0, 0x72c: 0x0059, 0x72d: 0x0047, 0x72e: 0x0049, 0x72f: 0x005b,
+	0x730: 0x0093, 0x731: 0x19e0, 0x732: 0x1c14, 0x733: 0x19e9, 0x734: 0x00ad, 0x735: 0x1a5e,
+	0x736: 0x1c48, 0x737: 0x1d58, 0x738: 0x19ec, 0x739: 0x00b1, 0x73a: 0x1a61, 0x73b: 0x1c4c,
 	0x73c: 0x0099, 0x73d: 0x0087, 0x73e: 0x0089, 0x73f: 0x009b,
 	// Block 0x1d, offset 0x740
-	0x741: 0x3c41, 0x743: 0xa000, 0x744: 0x3c48, 0x745: 0xa000,
-	0x747: 0x3c4f, 0x748: 0xa000, 0x749: 0x3c56,
+	0x741: 0x3c02, 0x743: 0xa000, 0x744: 0x3c09, 0x745: 0xa000,
+	0x747: 0x3c10, 0x748: 0xa000, 0x749: 0x3c17,
 	0x74d: 0xa000,
-	0x760: 0x2fa0, 0x761: 0xa000, 0x762: 0x3c64,
+	0x760: 0x2f61, 0x761: 0xa000, 0x762: 0x3c25,
 	0x764: 0xa000, 0x765: 0xa000,
-	0x76d: 0x3c5d, 0x76e: 0x2f9b, 0x76f: 0x2fa5,
-	0x770: 0x3c6b, 0x771: 0x3c72, 0x772: 0xa000, 0x773: 0xa000, 0x774: 0x3c79, 0x775: 0x3c80,
-	0x776: 0xa000, 0x777: 0xa000, 0x778: 0x3c87, 0x779: 0x3c8e, 0x77a: 0xa000, 0x77b: 0xa000,
+	0x76d: 0x3c1e, 0x76e: 0x2f5c, 0x76f: 0x2f66,
+	0x770: 0x3c2c, 0x771: 0x3c33, 0x772: 0xa000, 0x773: 0xa000, 0x774: 0x3c3a, 0x775: 0x3c41,
+	0x776: 0xa000, 0x777: 0xa000, 0x778: 0x3c48, 0x779: 0x3c4f, 0x77a: 0xa000, 0x77b: 0xa000,
 	0x77c: 0xa000, 0x77d: 0xa000,
 	// Block 0x1e, offset 0x780
-	0x780: 0x3c95, 0x781: 0x3c9c, 0x782: 0xa000, 0x783: 0xa000, 0x784: 0x3cb1, 0x785: 0x3cb8,
-	0x786: 0xa000, 0x787: 0xa000, 0x788: 0x3cbf, 0x789: 0x3cc6,
+	0x780: 0x3c56, 0x781: 0x3c5d, 0x782: 0xa000, 0x783: 0xa000, 0x784: 0x3c72, 0x785: 0x3c79,
+	0x786: 0xa000, 0x787: 0xa000, 0x788: 0x3c80, 0x789: 0x3c87,
 	0x791: 0xa000,
 	0x792: 0xa000,
 	0x7a2: 0xa000,
 	0x7a8: 0xa000, 0x7a9: 0xa000,
-	0x7ab: 0xa000, 0x7ac: 0x3cdb, 0x7ad: 0x3ce2, 0x7ae: 0x3ce9, 0x7af: 0x3cf0,
+	0x7ab: 0xa000, 0x7ac: 0x3c9c, 0x7ad: 0x3ca3, 0x7ae: 0x3caa, 0x7af: 0x3cb1,
 	0x7b2: 0xa000, 0x7b3: 0xa000, 0x7b4: 0xa000, 0x7b5: 0xa000,
 	// Block 0x1f, offset 0x7c0
 	0x7e0: 0x0023, 0x7e1: 0x0025, 0x7e2: 0x0027, 0x7e3: 0x0029,
-	0x7e4: 0x002b, 0x7e5: 0x002d, 0x7e6: 0x002f, 0x7e7: 0x0031, 0x7e8: 0x0033, 0x7e9: 0x1a15,
-	0x7ea: 0x1a18, 0x7eb: 0x1a1b, 0x7ec: 0x1a1e, 0x7ed: 0x1a21, 0x7ee: 0x1a24, 0x7ef: 0x1a27,
-	0x7f0: 0x1a2a, 0x7f1: 0x1a2d, 0x7f2: 0x1a30, 0x7f3: 0x1a39, 0x7f4: 0x1bfb, 0x7f5: 0x1bff,
-	0x7f6: 0x1c03, 0x7f7: 0x1c07, 0x7f8: 0x1c0b, 0x7f9: 0x1c0f, 0x7fa: 0x1c13, 0x7fb: 0x1c17,
-	0x7fc: 0x1c1b, 0x7fd: 0x1e13, 0x7fe: 0x1e18, 0x7ff: 0x1e1d,
+	0x7e4: 0x002b, 0x7e5: 0x002d, 0x7e6: 0x002f, 0x7e7: 0x0031, 0x7e8: 0x0033, 0x7e9: 0x187e,
+	0x7ea: 0x1881, 0x7eb: 0x1884, 0x7ec: 0x1887, 0x7ed: 0x188a, 0x7ee: 0x188d, 0x7ef: 0x1890,
+	0x7f0: 0x1893, 0x7f1: 0x1896, 0x7f2: 0x1899, 0x7f3: 0x18a2, 0x7f4: 0x1a64, 0x7f5: 0x1a68,
+	0x7f6: 0x1a6c, 0x7f7: 0x1a70, 0x7f8: 0x1a74, 0x7f9: 0x1a78, 0x7fa: 0x1a7c, 0x7fb: 0x1a80,
+	0x7fc: 0x1a84, 0x7fd: 0x1c7c, 0x7fe: 0x1c81, 0x7ff: 0x1c86,
 	// Block 0x20, offset 0x800
-	0x800: 0x1e22, 0x801: 0x1e27, 0x802: 0x1e2c, 0x803: 0x1e31, 0x804: 0x1e36, 0x805: 0x1e3b,
-	0x806: 0x1e40, 0x807: 0x1e45, 0x808: 0x1a12, 0x809: 0x1a36, 0x80a: 0x1a5a, 0x80b: 0x1a7e,
-	0x80c: 0x1aa2, 0x80d: 0x1aab, 0x80e: 0x1ab1, 0x80f: 0x1ab7, 0x810: 0x1abd, 0x811: 0x1cf3,
-	0x812: 0x1cf7, 0x813: 0x1cfb, 0x814: 0x1cff, 0x815: 0x1d03, 0x816: 0x1d07, 0x817: 0x1d0b,
-	0x818: 0x1d0f, 0x819: 0x1d13, 0x81a: 0x1d17, 0x81b: 0x1d1b, 0x81c: 0x1c87, 0x81d: 0x1c8b,
-	0x81e: 0x1c8f, 0x81f: 0x1c93, 0x820: 0x1c97, 0x821: 0x1c9b, 0x822: 0x1c9f, 0x823: 0x1ca3,
-	0x824: 0x1ca7, 0x825: 0x1cab, 0x826: 0x1caf, 0x827: 0x1cb3, 0x828: 0x1cb7, 0x829: 0x1cbb,
-	0x82a: 0x1cbf, 0x82b: 0x1cc3, 0x82c: 0x1cc7, 0x82d: 0x1ccb, 0x82e: 0x1ccf, 0x82f: 0x1cd3,
-	0x830: 0x1cd7, 0x831: 0x1cdb, 0x832: 0x1cdf, 0x833: 0x1ce3, 0x834: 0x1ce7, 0x835: 0x1ceb,
+	0x800: 0x1c8b, 0x801: 0x1c90, 0x802: 0x1c95, 0x803: 0x1c9a, 0x804: 0x1c9f, 0x805: 0x1ca4,
+	0x806: 0x1ca9, 0x807: 0x1cae, 0x808: 0x187b, 0x809: 0x189f, 0x80a: 0x18c3, 0x80b: 0x18e7,
+	0x80c: 0x190b, 0x80d: 0x1914, 0x80e: 0x191a, 0x80f: 0x1920, 0x810: 0x1926, 0x811: 0x1b5c,
+	0x812: 0x1b60, 0x813: 0x1b64, 0x814: 0x1b68, 0x815: 0x1b6c, 0x816: 0x1b70, 0x817: 0x1b74,
+	0x818: 0x1b78, 0x819: 0x1b7c, 0x81a: 0x1b80, 0x81b: 0x1b84, 0x81c: 0x1af0, 0x81d: 0x1af4,
+	0x81e: 0x1af8, 0x81f: 0x1afc, 0x820: 0x1b00, 0x821: 0x1b04, 0x822: 0x1b08, 0x823: 0x1b0c,
+	0x824: 0x1b10, 0x825: 0x1b14, 0x826: 0x1b18, 0x827: 0x1b1c, 0x828: 0x1b20, 0x829: 0x1b24,
+	0x82a: 0x1b28, 0x82b: 0x1b2c, 0x82c: 0x1b30, 0x82d: 0x1b34, 0x82e: 0x1b38, 0x82f: 0x1b3c,
+	0x830: 0x1b40, 0x831: 0x1b44, 0x832: 0x1b48, 0x833: 0x1b4c, 0x834: 0x1b50, 0x835: 0x1b54,
 	0x836: 0x0043, 0x837: 0x0045, 0x838: 0x0047, 0x839: 0x0049, 0x83a: 0x004b, 0x83b: 0x004d,
 	0x83c: 0x004f, 0x83d: 0x0051, 0x83e: 0x0053, 0x83f: 0x0055,
 	// Block 0x21, offset 0x840
-	0x840: 0x0737, 0x841: 0x075b, 0x842: 0x0767, 0x843: 0x0777, 0x844: 0x077f, 0x845: 0x078b,
-	0x846: 0x0793, 0x847: 0x079b, 0x848: 0x07a7, 0x849: 0x07fb, 0x84a: 0x0813, 0x84b: 0x0823,
-	0x84c: 0x0833, 0x84d: 0x0843, 0x84e: 0x0853, 0x84f: 0x0873, 0x850: 0x0877, 0x851: 0x087b,
-	0x852: 0x08af, 0x853: 0x08d7, 0x854: 0x08e7, 0x855: 0x08ef, 0x856: 0x08f3, 0x857: 0x08ff,
-	0x858: 0x091b, 0x859: 0x091f, 0x85a: 0x0937, 0x85b: 0x093b, 0x85c: 0x0943, 0x85d: 0x0953,
-	0x85e: 0x09ef, 0x85f: 0x0a03, 0x860: 0x0a43, 0x861: 0x0a57, 0x862: 0x0a5f, 0x863: 0x0a63,
-	0x864: 0x0a73, 0x865: 0x0a8f, 0x866: 0x0abb, 0x867: 0x0ac7, 0x868: 0x0ae7, 0x869: 0x0af3,
-	0x86a: 0x0af7, 0x86b: 0x0afb, 0x86c: 0x0b13, 0x86d: 0x0b17, 0x86e: 0x0b43, 0x86f: 0x0b4f,
-	0x870: 0x0b57, 0x871: 0x0b5f, 0x872: 0x0b6f, 0x873: 0x0b77, 0x874: 0x0b7f, 0x875: 0x0bab,
-	0x876: 0x0baf, 0x877: 0x0bb7, 0x878: 0x0bbb, 0x879: 0x0bc3, 0x87a: 0x0bcb, 0x87b: 0x0bdb,
-	0x87c: 0x0bf7, 0x87d: 0x0c6f, 0x87e: 0x0c83, 0x87f: 0x0c87,
+	0x840: 0x06bf, 0x841: 0x06e3, 0x842: 0x06ef, 0x843: 0x06ff, 0x844: 0x0707, 0x845: 0x0713,
+	0x846: 0x071b, 0x847: 0x0723, 0x848: 0x072f, 0x849: 0x0783, 0x84a: 0x079b, 0x84b: 0x07ab,
+	0x84c: 0x07bb, 0x84d: 0x07cb, 0x84e: 0x07db, 0x84f: 0x07fb, 0x850: 0x07ff, 0x851: 0x0803,
+	0x852: 0x0837, 0x853: 0x085f, 0x854: 0x086f, 0x855: 0x0877, 0x856: 0x087b, 0x857: 0x0887,
+	0x858: 0x08a3, 0x859: 0x08a7, 0x85a: 0x08bf, 0x85b: 0x08c3, 0x85c: 0x08cb, 0x85d: 0x08db,
+	0x85e: 0x0977, 0x85f: 0x098b, 0x860: 0x09cb, 0x861: 0x09df, 0x862: 0x09e7, 0x863: 0x09eb,
+	0x864: 0x09fb, 0x865: 0x0a17, 0x866: 0x0a43, 0x867: 0x0a4f, 0x868: 0x0a6f, 0x869: 0x0a7b,
+	0x86a: 0x0a7f, 0x86b: 0x0a83, 0x86c: 0x0a9b, 0x86d: 0x0a9f, 0x86e: 0x0acb, 0x86f: 0x0ad7,
+	0x870: 0x0adf, 0x871: 0x0ae7, 0x872: 0x0af7, 0x873: 0x0aff, 0x874: 0x0b07, 0x875: 0x0b33,
+	0x876: 0x0b37, 0x877: 0x0b3f, 0x878: 0x0b43, 0x879: 0x0b4b, 0x87a: 0x0b53, 0x87b: 0x0b63,
+	0x87c: 0x0b7f, 0x87d: 0x0bf7, 0x87e: 0x0c0b, 0x87f: 0x0c0f,
 	// Block 0x22, offset 0x880
-	0x880: 0x0d07, 0x881: 0x0d0b, 0x882: 0x0d1f, 0x883: 0x0d23, 0x884: 0x0d2b, 0x885: 0x0d33,
-	0x886: 0x0d3b, 0x887: 0x0d47, 0x888: 0x0d6f, 0x889: 0x0d7f, 0x88a: 0x0d93, 0x88b: 0x0e03,
-	0x88c: 0x0e0f, 0x88d: 0x0e1f, 0x88e: 0x0e2b, 0x88f: 0x0e37, 0x890: 0x0e3f, 0x891: 0x0e43,
-	0x892: 0x0e47, 0x893: 0x0e4b, 0x894: 0x0e4f, 0x895: 0x0f07, 0x896: 0x0f4f, 0x897: 0x0f5b,
-	0x898: 0x0f5f, 0x899: 0x0f63, 0x89a: 0x0f67, 0x89b: 0x0f6f, 0x89c: 0x0f73, 0x89d: 0x0f87,
-	0x89e: 0x0fa3, 0x89f: 0x0fab, 0x8a0: 0x0feb, 0x8a1: 0x0fef, 0x8a2: 0x0ff7, 0x8a3: 0x0ffb,
-	0x8a4: 0x1003, 0x8a5: 0x1007, 0x8a6: 0x102b, 0x8a7: 0x102f, 0x8a8: 0x104b, 0x8a9: 0x104f,
-	0x8aa: 0x1053, 0x8ab: 0x1057, 0x8ac: 0x106b, 0x8ad: 0x108f, 0x8ae: 0x1093, 0x8af: 0x1097,
-	0x8b0: 0x10bb, 0x8b1: 0x10fb, 0x8b2: 0x10ff, 0x8b3: 0x111f, 0x8b4: 0x112f, 0x8b5: 0x1137,
-	0x8b6: 0x1157, 0x8b7: 0x117b, 0x8b8: 0x11bf, 0x8b9: 0x11c7, 0x8ba: 0x11db, 0x8bb: 0x11e7,
-	0x8bc: 0x11ef, 0x8bd: 0x11f7, 0x8be: 0x11fb, 0x8bf: 0x11ff,
+	0x880: 0x0c8f, 0x881: 0x0c93, 0x882: 0x0ca7, 0x883: 0x0cab, 0x884: 0x0cb3, 0x885: 0x0cbb,
+	0x886: 0x0cc3, 0x887: 0x0ccf, 0x888: 0x0cf7, 0x889: 0x0d07, 0x88a: 0x0d1b, 0x88b: 0x0d8b,
+	0x88c: 0x0d97, 0x88d: 0x0da7, 0x88e: 0x0db3, 0x88f: 0x0dbf, 0x890: 0x0dc7, 0x891: 0x0dcb,
+	0x892: 0x0dcf, 0x893: 0x0dd3, 0x894: 0x0dd7, 0x895: 0x0e8f, 0x896: 0x0ed7, 0x897: 0x0ee3,
+	0x898: 0x0ee7, 0x899: 0x0eeb, 0x89a: 0x0eef, 0x89b: 0x0ef7, 0x89c: 0x0efb, 0x89d: 0x0f0f,
+	0x89e: 0x0f2b, 0x89f: 0x0f33, 0x8a0: 0x0f73, 0x8a1: 0x0f77, 0x8a2: 0x0f7f, 0x8a3: 0x0f83,
+	0x8a4: 0x0f8b, 0x8a5: 0x0f8f, 0x8a6: 0x0fb3, 0x8a7: 0x0fb7, 0x8a8: 0x0fd3, 0x8a9: 0x0fd7,
+	0x8aa: 0x0fdb, 0x8ab: 0x0fdf, 0x8ac: 0x0ff3, 0x8ad: 0x1017, 0x8ae: 0x101b, 0x8af: 0x101f,
+	0x8b0: 0x1043, 0x8b1: 0x1083, 0x8b2: 0x1087, 0x8b3: 0x10a7, 0x8b4: 0x10b7, 0x8b5: 0x10bf,
+	0x8b6: 0x10df, 0x8b7: 0x1103, 0x8b8: 0x1147, 0x8b9: 0x114f, 0x8ba: 0x1163, 0x8bb: 0x116f,
+	0x8bc: 0x1177, 0x8bd: 0x117f, 0x8be: 0x1183, 0x8bf: 0x1187,
 	// Block 0x23, offset 0x8c0
-	0x8c0: 0x1217, 0x8c1: 0x121b, 0x8c2: 0x1237, 0x8c3: 0x123f, 0x8c4: 0x1247, 0x8c5: 0x124b,
-	0x8c6: 0x1257, 0x8c7: 0x125f, 0x8c8: 0x1263, 0x8c9: 0x1267, 0x8ca: 0x126f, 0x8cb: 0x1273,
-	0x8cc: 0x1313, 0x8cd: 0x1327, 0x8ce: 0x135b, 0x8cf: 0x135f, 0x8d0: 0x1367, 0x8d1: 0x1393,
-	0x8d2: 0x139b, 0x8d3: 0x13a3, 0x8d4: 0x13ab, 0x8d5: 0x13e7, 0x8d6: 0x13eb, 0x8d7: 0x13f3,
-	0x8d8: 0x13f7, 0x8d9: 0x13fb, 0x8da: 0x1427, 0x8db: 0x142b, 0x8dc: 0x1433, 0x8dd: 0x1447,
-	0x8de: 0x144b, 0x8df: 0x1467, 0x8e0: 0x146f, 0x8e1: 0x1473, 0x8e2: 0x1497, 0x8e3: 0x14b7,
-	0x8e4: 0x14c7, 0x8e5: 0x14cb, 0x8e6: 0x14d3, 0x8e7: 0x14ff, 0x8e8: 0x1503, 0x8e9: 0x1513,
-	0x8ea: 0x1537, 0x8eb: 0x1543, 0x8ec: 0x1553, 0x8ed: 0x156b, 0x8ee: 0x1573, 0x8ef: 0x1577,
-	0x8f0: 0x157b, 0x8f1: 0x157f, 0x8f2: 0x158b, 0x8f3: 0x158f, 0x8f4: 0x1597, 0x8f5: 0x15b3,
-	0x8f6: 0x15b7, 0x8f7: 0x15bb, 0x8f8: 0x15d3, 0x8f9: 0x15d7, 0x8fa: 0x15df, 0x8fb: 0x15f3,
-	0x8fc: 0x15f7, 0x8fd: 0x15fb, 0x8fe: 0x1603, 0x8ff: 0x1607,
+	0x8c0: 0x119f, 0x8c1: 0x11a3, 0x8c2: 0x11bf, 0x8c3: 0x11c7, 0x8c4: 0x11cf, 0x8c5: 0x11d3,
+	0x8c6: 0x11df, 0x8c7: 0x11e7, 0x8c8: 0x11eb, 0x8c9: 0x11ef, 0x8ca: 0x11f7, 0x8cb: 0x11fb,
+	0x8cc: 0x129b, 0x8cd: 0x12af, 0x8ce: 0x12e3, 0x8cf: 0x12e7, 0x8d0: 0x12ef, 0x8d1: 0x131b,
+	0x8d2: 0x1323, 0x8d3: 0x132b, 0x8d4: 0x1333, 0x8d5: 0x136f, 0x8d6: 0x1373, 0x8d7: 0x137b,
+	0x8d8: 0x137f, 0x8d9: 0x1383, 0x8da: 0x13af, 0x8db: 0x13b3, 0x8dc: 0x13bb, 0x8dd: 0x13cf,
+	0x8de: 0x13d3, 0x8df: 0x13ef, 0x8e0: 0x13f7, 0x8e1: 0x13fb, 0x8e2: 0x141f, 0x8e3: 0x143f,
+	0x8e4: 0x144f, 0x8e5: 0x1453, 0x8e6: 0x145b, 0x8e7: 0x1487, 0x8e8: 0x148b, 0x8e9: 0x149b,
+	0x8ea: 0x14bf, 0x8eb: 0x14cb, 0x8ec: 0x14db, 0x8ed: 0x14f3, 0x8ee: 0x14fb, 0x8ef: 0x14ff,
+	0x8f0: 0x1503, 0x8f1: 0x1507, 0x8f2: 0x1513, 0x8f3: 0x1517, 0x8f4: 0x151f, 0x8f5: 0x153b,
+	0x8f6: 0x153f, 0x8f7: 0x1543, 0x8f8: 0x155b, 0x8f9: 0x155f, 0x8fa: 0x1567, 0x8fb: 0x157b,
+	0x8fc: 0x157f, 0x8fd: 0x1583, 0x8fe: 0x158b, 0x8ff: 0x158f,
 	// Block 0x24, offset 0x900
 	0x906: 0xa000, 0x90b: 0xa000,
-	0x90c: 0x3f43, 0x90d: 0xa000, 0x90e: 0x3f4b, 0x90f: 0xa000, 0x910: 0x3f53, 0x911: 0xa000,
-	0x912: 0x3f5b, 0x913: 0xa000, 0x914: 0x3f63, 0x915: 0xa000, 0x916: 0x3f6b, 0x917: 0xa000,
-	0x918: 0x3f73, 0x919: 0xa000, 0x91a: 0x3f7b, 0x91b: 0xa000, 0x91c: 0x3f83, 0x91d: 0xa000,
-	0x91e: 0x3f8b, 0x91f: 0xa000, 0x920: 0x3f93, 0x921: 0xa000, 0x922: 0x3f9b,
-	0x924: 0xa000, 0x925: 0x3fa3, 0x926: 0xa000, 0x927: 0x3fab, 0x928: 0xa000, 0x929: 0x3fb3,
+	0x90c: 0x3f04, 0x90d: 0xa000, 0x90e: 0x3f0c, 0x90f: 0xa000, 0x910: 0x3f14, 0x911: 0xa000,
+	0x912: 0x3f1c, 0x913: 0xa000, 0x914: 0x3f24, 0x915: 0xa000, 0x916: 0x3f2c, 0x917: 0xa000,
+	0x918: 0x3f34, 0x919: 0xa000, 0x91a: 0x3f3c, 0x91b: 0xa000, 0x91c: 0x3f44, 0x91d: 0xa000,
+	0x91e: 0x3f4c, 0x91f: 0xa000, 0x920: 0x3f54, 0x921: 0xa000, 0x922: 0x3f5c,
+	0x924: 0xa000, 0x925: 0x3f64, 0x926: 0xa000, 0x927: 0x3f6c, 0x928: 0xa000, 0x929: 0x3f74,
 	0x92f: 0xa000,
-	0x930: 0x3fbb, 0x931: 0x3fc3, 0x932: 0xa000, 0x933: 0x3fcb, 0x934: 0x3fd3, 0x935: 0xa000,
-	0x936: 0x3fdb, 0x937: 0x3fe3, 0x938: 0xa000, 0x939: 0x3feb, 0x93a: 0x3ff3, 0x93b: 0xa000,
-	0x93c: 0x3ffb, 0x93d: 0x4003,
+	0x930: 0x3f7c, 0x931: 0x3f84, 0x932: 0xa000, 0x933: 0x3f8c, 0x934: 0x3f94, 0x935: 0xa000,
+	0x936: 0x3f9c, 0x937: 0x3fa4, 0x938: 0xa000, 0x939: 0x3fac, 0x93a: 0x3fb4, 0x93b: 0xa000,
+	0x93c: 0x3fbc, 0x93d: 0x3fc4,
 	// Block 0x25, offset 0x940
-	0x954: 0x3f3b,
-	0x959: 0x9903, 0x95a: 0x9903, 0x95b: 0x4317, 0x95c: 0x431d, 0x95d: 0xa000,
-	0x95e: 0x400b, 0x95f: 0x28b0,
+	0x954: 0x3efc,
+	0x959: 0x9903, 0x95a: 0x9903, 0x95b: 0x436e, 0x95c: 0x4374, 0x95d: 0xa000,
+	0x95e: 0x3fcc, 0x95f: 0x26b0,
 	0x966: 0xa000,
-	0x96b: 0xa000, 0x96c: 0x401b, 0x96d: 0xa000, 0x96e: 0x4023, 0x96f: 0xa000,
-	0x970: 0x402b, 0x971: 0xa000, 0x972: 0x4033, 0x973: 0xa000, 0x974: 0x403b, 0x975: 0xa000,
-	0x976: 0x4043, 0x977: 0xa000, 0x978: 0x404b, 0x979: 0xa000, 0x97a: 0x4053, 0x97b: 0xa000,
-	0x97c: 0x405b, 0x97d: 0xa000, 0x97e: 0x4063, 0x97f: 0xa000,
+	0x96b: 0xa000, 0x96c: 0x3fdc, 0x96d: 0xa000, 0x96e: 0x3fe4, 0x96f: 0xa000,
+	0x970: 0x3fec, 0x971: 0xa000, 0x972: 0x3ff4, 0x973: 0xa000, 0x974: 0x3ffc, 0x975: 0xa000,
+	0x976: 0x4004, 0x977: 0xa000, 0x978: 0x400c, 0x979: 0xa000, 0x97a: 0x4014, 0x97b: 0xa000,
+	0x97c: 0x401c, 0x97d: 0xa000, 0x97e: 0x4024, 0x97f: 0xa000,
 	// Block 0x26, offset 0x980
-	0x980: 0x406b, 0x981: 0xa000, 0x982: 0x4073, 0x984: 0xa000, 0x985: 0x407b,
-	0x986: 0xa000, 0x987: 0x4083, 0x988: 0xa000, 0x989: 0x408b,
-	0x98f: 0xa000, 0x990: 0x4093, 0x991: 0x409b,
-	0x992: 0xa000, 0x993: 0x40a3, 0x994: 0x40ab, 0x995: 0xa000, 0x996: 0x40b3, 0x997: 0x40bb,
-	0x998: 0xa000, 0x999: 0x40c3, 0x99a: 0x40cb, 0x99b: 0xa000, 0x99c: 0x40d3, 0x99d: 0x40db,
+	0x980: 0x402c, 0x981: 0xa000, 0x982: 0x4034, 0x984: 0xa000, 0x985: 0x403c,
+	0x986: 0xa000, 0x987: 0x4044, 0x988: 0xa000, 0x989: 0x404c,
+	0x98f: 0xa000, 0x990: 0x4054, 0x991: 0x405c,
+	0x992: 0xa000, 0x993: 0x4064, 0x994: 0x406c, 0x995: 0xa000, 0x996: 0x4074, 0x997: 0x407c,
+	0x998: 0xa000, 0x999: 0x4084, 0x99a: 0x408c, 0x99b: 0xa000, 0x99c: 0x4094, 0x99d: 0x409c,
 	0x9af: 0xa000,
-	0x9b0: 0xa000, 0x9b1: 0xa000, 0x9b2: 0xa000, 0x9b4: 0x4013,
-	0x9b7: 0x40e3, 0x9b8: 0x40eb, 0x9b9: 0x40f3, 0x9ba: 0x40fb,
-	0x9bd: 0xa000, 0x9be: 0x4103, 0x9bf: 0x28c5,
+	0x9b0: 0xa000, 0x9b1: 0xa000, 0x9b2: 0xa000, 0x9b4: 0x3fd4,
+	0x9b7: 0x40a4, 0x9b8: 0x40ac, 0x9b9: 0x40b4, 0x9ba: 0x40bc,
+	0x9bd: 0xa000, 0x9be: 0x40c4, 0x9bf: 0x26c5,
 	// Block 0x27, offset 0x9c0
-	0x9c0: 0x03af, 0x9c1: 0x03b3, 0x9c2: 0x0483, 0x9c3: 0x0487, 0x9c4: 0x03b7, 0x9c5: 0x03bb,
-	0x9c6: 0x03bf, 0x9c7: 0x041b, 0x9c8: 0x041f, 0x9c9: 0x0423, 0x9ca: 0x0427, 0x9cb: 0x042b,
-	0x9cc: 0x042f, 0x9cd: 0x0433, 0x9ce: 0x0437,
-	0x9d2: 0x0737, 0x9d3: 0x0793, 0x9d4: 0x0743, 0x9d5: 0x09f3, 0x9d6: 0x0747, 0x9d7: 0x075f,
-	0x9d8: 0x074b, 0x9d9: 0x100b, 0x9da: 0x077f, 0x9db: 0x0753, 0x9dc: 0x073b, 0x9dd: 0x0a77,
-	0x9de: 0x0a07, 0x9df: 0x07a7,
+	0x9c0: 0x0367, 0x9c1: 0x032b, 0x9c2: 0x032f, 0x9c3: 0x0333, 0x9c4: 0x037b, 0x9c5: 0x0337,
+	0x9c6: 0x033b, 0x9c7: 0x033f, 0x9c8: 0x0343, 0x9c9: 0x0347, 0x9ca: 0x034b, 0x9cb: 0x034f,
+	0x9cc: 0x0353, 0x9cd: 0x0357, 0x9ce: 0x035b, 0x9cf: 0x42d8, 0x9d0: 0x42dd, 0x9d1: 0x42e2,
+	0x9d2: 0x42e7, 0x9d3: 0x42ec, 0x9d4: 0x42f1, 0x9d5: 0x42f6, 0x9d6: 0x42fb, 0x9d7: 0x4300,
+	0x9d8: 0x4305, 0x9d9: 0x430a, 0x9da: 0x430f, 0x9db: 0x4314, 0x9dc: 0x4319, 0x9dd: 0x431e,
+	0x9de: 0x4323, 0x9df: 0x4328, 0x9e0: 0x432d, 0x9e1: 0x4332, 0x9e2: 0x4337, 0x9e3: 0x433c,
+	0x9e4: 0x03c3, 0x9e5: 0x035f, 0x9e6: 0x0363, 0x9e7: 0x03e7, 0x9e8: 0x03eb, 0x9e9: 0x03ef,
+	0x9ea: 0x03f3, 0x9eb: 0x03f7, 0x9ec: 0x03fb, 0x9ed: 0x03ff, 0x9ee: 0x036b, 0x9ef: 0x0403,
+	0x9f0: 0x0407, 0x9f1: 0x036f, 0x9f2: 0x0373, 0x9f3: 0x0377, 0x9f4: 0x037f, 0x9f5: 0x0383,
+	0x9f6: 0x0387, 0x9f7: 0x038b, 0x9f8: 0x038f, 0x9f9: 0x0393, 0x9fa: 0x0397, 0x9fb: 0x039b,
+	0x9fc: 0x039f, 0x9fd: 0x03a3, 0x9fe: 0x03a7, 0x9ff: 0x03ab,
 	// Block 0x28, offset 0xa00
-	0xa00: 0x21e7, 0xa01: 0x21ed, 0xa02: 0x21f3, 0xa03: 0x21f9, 0xa04: 0x21ff, 0xa05: 0x2205,
-	0xa06: 0x220b, 0xa07: 0x2211, 0xa08: 0x2217, 0xa09: 0x221d, 0xa0a: 0x2223, 0xa0b: 0x2229,
-	0xa0c: 0x222f, 0xa0d: 0x2235, 0xa0e: 0x2922, 0xa0f: 0x292b, 0xa10: 0x2934, 0xa11: 0x293d,
-	0xa12: 0x2946, 0xa13: 0x294f, 0xa14: 0x2958, 0xa15: 0x2961, 0xa16: 0x296a, 0xa17: 0x297c,
-	0xa18: 0x2985, 0xa19: 0x298e, 0xa1a: 0x2997, 0xa1b: 0x29a0, 0xa1c: 0x2973, 0xa1d: 0x2dc5,
-	0xa1e: 0x2cf6, 0xa20: 0x223b, 0xa21: 0x2253, 0xa22: 0x2247, 0xa23: 0x229b,
-	0xa24: 0x2259, 0xa25: 0x2277, 0xa26: 0x2241, 0xa27: 0x2271, 0xa28: 0x224d, 0xa29: 0x2283,
-	0xa2a: 0x22b3, 0xa2b: 0x22d1, 0xa2c: 0x22cb, 0xa2d: 0x22bf, 0xa2e: 0x230d, 0xa2f: 0x22a1,
-	0xa30: 0x22ad, 0xa31: 0x22c5, 0xa32: 0x22b9, 0xa33: 0x22e3, 0xa34: 0x228f, 0xa35: 0x22d7,
-	0xa36: 0x2301, 0xa37: 0x22e9, 0xa38: 0x227d, 0xa39: 0x225f, 0xa3a: 0x2295, 0xa3b: 0x22a7,
-	0xa3c: 0x22dd, 0xa3d: 0x2265, 0xa3e: 0x2307, 0xa3f: 0x2289,
+	0xa00: 0x03af, 0xa01: 0x03b3, 0xa02: 0x040b, 0xa03: 0x040f, 0xa04: 0x03b7, 0xa05: 0x03bb,
+	0xa06: 0x03bf, 0xa07: 0x03c7, 0xa08: 0x03cb, 0xa09: 0x03cf, 0xa0a: 0x03d3, 0xa0b: 0x03d7,
+	0xa0c: 0x03db, 0xa0d: 0x03df, 0xa0e: 0x03e3,
+	0xa12: 0x06bf, 0xa13: 0x071b, 0xa14: 0x06cb, 0xa15: 0x097b, 0xa16: 0x06cf, 0xa17: 0x06e7,
+	0xa18: 0x06d3, 0xa19: 0x0f93, 0xa1a: 0x0707, 0xa1b: 0x06db, 0xa1c: 0x06c3, 0xa1d: 0x09ff,
+	0xa1e: 0x098f, 0xa1f: 0x072f,
 	// Block 0x29, offset 0xa40
-	0xa40: 0x22ef, 0xa41: 0x226b, 0xa42: 0x22f5, 0xa43: 0x22fb, 0xa44: 0x09a7, 0xa45: 0x0b7b,
-	0xa46: 0x0d1f, 0xa47: 0x113f,
-	0xa50: 0x1d57, 0xa51: 0x1a3c,
-	0xa52: 0x1a3f, 0xa53: 0x1a42, 0xa54: 0x1a45, 0xa55: 0x1a48, 0xa56: 0x1a4b, 0xa57: 0x1a4e,
-	0xa58: 0x1a51, 0xa59: 0x1a54, 0xa5a: 0x1a5d, 0xa5b: 0x1a60, 0xa5c: 0x1a63, 0xa5d: 0x1a66,
-	0xa5e: 0x1a69, 0xa5f: 0x1a6c, 0xa60: 0x0313, 0xa61: 0x031b, 0xa62: 0x031f, 0xa63: 0x0327,
-	0xa64: 0x032b, 0xa65: 0x032f, 0xa66: 0x0337, 0xa67: 0x033f, 0xa68: 0x0343, 0xa69: 0x034b,
-	0xa6a: 0x034f, 0xa6b: 0x0353, 0xa6c: 0x0357, 0xa6d: 0x035b, 0xa6e: 0x2824, 0xa6f: 0x282b,
-	0xa70: 0x2832, 0xa71: 0x2839, 0xa72: 0x2840, 0xa73: 0x2847, 0xa74: 0x284e, 0xa75: 0x2855,
-	0xa76: 0x2863, 0xa77: 0x286a, 0xa78: 0x2871, 0xa79: 0x2878, 0xa7a: 0x287f, 0xa7b: 0x2886,
-	0xa7c: 0x2d15, 0xa7d: 0x2b8a, 0xa7e: 0x285c,
+	0xa40: 0x2050, 0xa41: 0x2056, 0xa42: 0x205c, 0xa43: 0x2062, 0xa44: 0x2068, 0xa45: 0x206e,
+	0xa46: 0x2074, 0xa47: 0x207a, 0xa48: 0x2080, 0xa49: 0x2086, 0xa4a: 0x208c, 0xa4b: 0x2092,
+	0xa4c: 0x2098, 0xa4d: 0x209e, 0xa4e: 0x2722, 0xa4f: 0x272b, 0xa50: 0x2734, 0xa51: 0x273d,
+	0xa52: 0x2746, 0xa53: 0x274f, 0xa54: 0x2758, 0xa55: 0x2761, 0xa56: 0x276a, 0xa57: 0x277c,
+	0xa58: 0x2785, 0xa59: 0x278e, 0xa5a: 0x2797, 0xa5b: 0x27a0, 0xa5c: 0x2773, 0xa5d: 0x2ba8,
+	0xa5e: 0x2ae9, 0xa60: 0x20a4, 0xa61: 0x20bc, 0xa62: 0x20b0, 0xa63: 0x2104,
+	0xa64: 0x20c2, 0xa65: 0x20e0, 0xa66: 0x20aa, 0xa67: 0x20da, 0xa68: 0x20b6, 0xa69: 0x20ec,
+	0xa6a: 0x211c, 0xa6b: 0x213a, 0xa6c: 0x2134, 0xa6d: 0x2128, 0xa6e: 0x2176, 0xa6f: 0x210a,
+	0xa70: 0x2116, 0xa71: 0x212e, 0xa72: 0x2122, 0xa73: 0x214c, 0xa74: 0x20f8, 0xa75: 0x2140,
+	0xa76: 0x216a, 0xa77: 0x2152, 0xa78: 0x20e6, 0xa79: 0x20c8, 0xa7a: 0x20fe, 0xa7b: 0x2110,
+	0xa7c: 0x2146, 0xa7d: 0x20ce, 0xa7e: 0x2170, 0xa7f: 0x20f2,
 	// Block 0x2a, offset 0xa80
-	0xa80: 0x0737, 0xa81: 0x0793, 0xa82: 0x0743, 0xa83: 0x09f3, 0xa84: 0x0797, 0xa85: 0x0827,
-	0xa86: 0x073f, 0xa87: 0x0823, 0xa88: 0x0783, 0xa89: 0x08ff, 0xa8a: 0x0d7f, 0xa8b: 0x0f07,
-	0xa8c: 0x0e4f, 0xa8d: 0x0d93, 0xa8e: 0x14d3, 0xa8f: 0x0a03, 0xa90: 0x0d47, 0xa91: 0x0dc3,
-	0xa92: 0x0d83, 0xa93: 0x10c3, 0xa94: 0x0973, 0xa95: 0x0f7b, 0xa96: 0x13ff, 0xa97: 0x10d7,
-	0xa98: 0x08bb, 0xa99: 0x1107, 0xa9a: 0x1013, 0xa9b: 0x0a8f, 0xa9c: 0x1487, 0xa9d: 0x07f7,
-	0xa9e: 0x0923, 0xa9f: 0x0e6f, 0xaa0: 0x159b, 0xaa1: 0x07bb, 0xaa2: 0x084b, 0xaa3: 0x0e13,
-	0xaa4: 0x0747, 0xaa5: 0x075f, 0xaa6: 0x074b, 0xaa7: 0x0b53, 0xaa8: 0x0967, 0xaa9: 0x08f7,
-	0xaaa: 0x0acf, 0xaab: 0x0ac3, 0xaac: 0x1063, 0xaad: 0x07b7, 0xaae: 0x1413, 0xaaf: 0x0913,
-	0xab0: 0x0a6b, 0xab1: 0x1a6f, 0xab2: 0x1a72, 0xab3: 0x1a75, 0xab4: 0x1a78, 0xab5: 0x1a81,
-	0xab6: 0x1a84, 0xab7: 0x1a87, 0xab8: 0x1a8a, 0xab9: 0x1a8d, 0xaba: 0x1a90, 0xabb: 0x1a93,
-	0xabc: 0x1a96, 0xabd: 0x1a99, 0xabe: 0x1a9c, 0xabf: 0x1aa5,
+	0xa80: 0x2158, 0xa81: 0x20d4, 0xa82: 0x215e, 0xa83: 0x2164, 0xa84: 0x092f, 0xa85: 0x0b03,
+	0xa86: 0x0ca7, 0xa87: 0x10c7,
+	0xa90: 0x1bc0, 0xa91: 0x18a5,
+	0xa92: 0x18a8, 0xa93: 0x18ab, 0xa94: 0x18ae, 0xa95: 0x18b1, 0xa96: 0x18b4, 0xa97: 0x18b7,
+	0xa98: 0x18ba, 0xa99: 0x18bd, 0xa9a: 0x18c6, 0xa9b: 0x18c9, 0xa9c: 0x18cc, 0xa9d: 0x18cf,
+	0xa9e: 0x18d2, 0xa9f: 0x18d5, 0xaa0: 0x0313, 0xaa1: 0x031b, 0xaa2: 0x031f, 0xaa3: 0x0327,
+	0xaa4: 0x032b, 0xaa5: 0x032f, 0xaa6: 0x0337, 0xaa7: 0x033f, 0xaa8: 0x0343, 0xaa9: 0x034b,
+	0xaaa: 0x034f, 0xaab: 0x0353, 0xaac: 0x0357, 0xaad: 0x035b, 0xaae: 0x2e14, 0xaaf: 0x2e1c,
+	0xab0: 0x2e24, 0xab1: 0x2e2c, 0xab2: 0x2e34, 0xab3: 0x2e3c, 0xab4: 0x2e44, 0xab5: 0x2e4c,
+	0xab6: 0x2e5c, 0xab7: 0x2e64, 0xab8: 0x2e6c, 0xab9: 0x2e74, 0xaba: 0x2e7c, 0xabb: 0x2e84,
+	0xabc: 0x2ecf, 0xabd: 0x2e97, 0xabe: 0x2e54,
 	// Block 0x2b, offset 0xac0
-	0xac0: 0x1e59, 0xac1: 0x1e68, 0xac2: 0x1e77, 0xac3: 0x1e86, 0xac4: 0x1e95, 0xac5: 0x1ea4,
-	0xac6: 0x1eb3, 0xac7: 0x1ec2, 0xac8: 0x1ed1, 0xac9: 0x231f, 0xaca: 0x2331, 0xacb: 0x2343,
-	0xacc: 0x1ae7, 0xacd: 0x1d97, 0xace: 0x1b65, 0xacf: 0x1d3b, 0xad0: 0x0543, 0xad1: 0x054b,
-	0xad2: 0x0553, 0xad3: 0x055b, 0xad4: 0x0563, 0xad5: 0x0567, 0xad6: 0x056b, 0xad7: 0x056f,
-	0xad8: 0x0573, 0xad9: 0x0577, 0xada: 0x057b, 0xadb: 0x057f, 0xadc: 0x0583, 0xadd: 0x0587,
-	0xade: 0x058b, 0xadf: 0x058f, 0xae0: 0x0593, 0xae1: 0x059b, 0xae2: 0x059f, 0xae3: 0x05a3,
-	0xae4: 0x05a7, 0xae5: 0x05ab, 0xae6: 0x05af, 0xae7: 0x05b3, 0xae8: 0x05b7, 0xae9: 0x05bb,
-	0xaea: 0x05bf, 0xaeb: 0x05c3, 0xaec: 0x05c7, 0xaed: 0x05cb, 0xaee: 0x05cf, 0xaef: 0x05d3,
-	0xaf0: 0x05d7, 0xaf1: 0x05db, 0xaf2: 0x05df, 0xaf3: 0x05e7, 0xaf4: 0x05ef, 0xaf5: 0x05f7,
-	0xaf6: 0x05fb, 0xaf7: 0x05ff, 0xaf8: 0x0603, 0xaf9: 0x0607, 0xafa: 0x060b, 0xafb: 0x060f,
-	0xafc: 0x0613, 0xafd: 0x0617, 0xafe: 0x061b,
+	0xac0: 0x06bf, 0xac1: 0x071b, 0xac2: 0x06cb, 0xac3: 0x097b, 0xac4: 0x071f, 0xac5: 0x07af,
+	0xac6: 0x06c7, 0xac7: 0x07ab, 0xac8: 0x070b, 0xac9: 0x0887, 0xaca: 0x0d07, 0xacb: 0x0e8f,
+	0xacc: 0x0dd7, 0xacd: 0x0d1b, 0xace: 0x145b, 0xacf: 0x098b, 0xad0: 0x0ccf, 0xad1: 0x0d4b,
+	0xad2: 0x0d0b, 0xad3: 0x104b, 0xad4: 0x08fb, 0xad5: 0x0f03, 0xad6: 0x1387, 0xad7: 0x105f,
+	0xad8: 0x0843, 0xad9: 0x108f, 0xada: 0x0f9b, 0xadb: 0x0a17, 0xadc: 0x140f, 0xadd: 0x077f,
+	0xade: 0x08ab, 0xadf: 0x0df7, 0xae0: 0x1523, 0xae1: 0x0743, 0xae2: 0x07d3, 0xae3: 0x0d9b,
+	0xae4: 0x06cf, 0xae5: 0x06e7, 0xae6: 0x06d3, 0xae7: 0x0adb, 0xae8: 0x08ef, 0xae9: 0x087f,
+	0xaea: 0x0a57, 0xaeb: 0x0a4b, 0xaec: 0x0feb, 0xaed: 0x073f, 0xaee: 0x139b, 0xaef: 0x089b,
+	0xaf0: 0x09f3, 0xaf1: 0x18d8, 0xaf2: 0x18db, 0xaf3: 0x18de, 0xaf4: 0x18e1, 0xaf5: 0x18ea,
+	0xaf6: 0x18ed, 0xaf7: 0x18f0, 0xaf8: 0x18f3, 0xaf9: 0x18f6, 0xafa: 0x18f9, 0xafb: 0x18fc,
+	0xafc: 0x18ff, 0xafd: 0x1902, 0xafe: 0x1905, 0xaff: 0x190e,
 	// Block 0x2c, offset 0xb00
-	0xb00: 0x2d25, 0xb01: 0x2bb1, 0xb02: 0x2d35, 0xb03: 0x2a7c, 0xb04: 0x2f2f, 0xb05: 0x2a86,
-	0xb06: 0x2a90, 0xb07: 0x2f73, 0xb08: 0x2bbe, 0xb09: 0x2a9a, 0xb0a: 0x2aa4, 0xb0b: 0x2aae,
-	0xb0c: 0x2be5, 0xb0d: 0x2bf2, 0xb0e: 0x2bcb, 0xb0f: 0x2bd8, 0xb10: 0x2f05, 0xb11: 0x2bff,
-	0xb12: 0x2c0c, 0xb13: 0x2dd7, 0xb14: 0x28b7, 0xb15: 0x2dea, 0xb16: 0x2dfd, 0xb17: 0x2d45,
-	0xb18: 0x2c19, 0xb19: 0x2e10, 0xb1a: 0x2e23, 0xb1b: 0x2c26, 0xb1c: 0x2ab8, 0xb1d: 0x2ac2,
-	0xb1e: 0x2f13, 0xb1f: 0x2c33, 0xb20: 0x2d55, 0xb21: 0x2f40, 0xb22: 0x2acc, 0xb23: 0x2ad6,
-	0xb24: 0x2c40, 0xb25: 0x2ae0, 0xb26: 0x2aea, 0xb27: 0x28cc, 0xb28: 0x28d3, 0xb29: 0x2af4,
-	0xb2a: 0x2afe, 0xb2b: 0x2e36, 0xb2c: 0x2c4d, 0xb2d: 0x2d65, 0xb2e: 0x2e49, 0xb2f: 0x2c5a,
-	0xb30: 0x2b12, 0xb31: 0x2b08, 0xb32: 0x2f87, 0xb33: 0x2c67, 0xb34: 0x2e5c, 0xb35: 0x2b1c,
-	0xb36: 0x2d75, 0xb37: 0x2b26, 0xb38: 0x2c81, 0xb39: 0x2b30, 0xb3a: 0x2c8e, 0xb3b: 0x2f51,
-	0xb3c: 0x2c74, 0xb3d: 0x2d85, 0xb3e: 0x2c9b, 0xb3f: 0x28da,
+	0xb00: 0x1cc2, 0xb01: 0x1cd1, 0xb02: 0x1ce0, 0xb03: 0x1cef, 0xb04: 0x1cfe, 0xb05: 0x1d0d,
+	0xb06: 0x1d1c, 0xb07: 0x1d2b, 0xb08: 0x1d3a, 0xb09: 0x2188, 0xb0a: 0x219a, 0xb0b: 0x21ac,
+	0xb0c: 0x1950, 0xb0d: 0x1c00, 0xb0e: 0x19ce, 0xb0f: 0x1ba4, 0xb10: 0x04cb, 0xb11: 0x04d3,
+	0xb12: 0x04db, 0xb13: 0x04e3, 0xb14: 0x04eb, 0xb15: 0x04ef, 0xb16: 0x04f3, 0xb17: 0x04f7,
+	0xb18: 0x04fb, 0xb19: 0x04ff, 0xb1a: 0x0503, 0xb1b: 0x0507, 0xb1c: 0x050b, 0xb1d: 0x050f,
+	0xb1e: 0x0513, 0xb1f: 0x0517, 0xb20: 0x051b, 0xb21: 0x0523, 0xb22: 0x0527, 0xb23: 0x052b,
+	0xb24: 0x052f, 0xb25: 0x0533, 0xb26: 0x0537, 0xb27: 0x053b, 0xb28: 0x053f, 0xb29: 0x0543,
+	0xb2a: 0x0547, 0xb2b: 0x054b, 0xb2c: 0x054f, 0xb2d: 0x0553, 0xb2e: 0x0557, 0xb2f: 0x055b,
+	0xb30: 0x055f, 0xb31: 0x0563, 0xb32: 0x0567, 0xb33: 0x056f, 0xb34: 0x0577, 0xb35: 0x057f,
+	0xb36: 0x0583, 0xb37: 0x0587, 0xb38: 0x058b, 0xb39: 0x058f, 0xb3a: 0x0593, 0xb3b: 0x0597,
+	0xb3c: 0x059b, 0xb3d: 0x059f, 0xb3e: 0x05a3,
 	// Block 0x2d, offset 0xb40
-	0xb40: 0x2f62, 0xb41: 0x2b3a, 0xb42: 0x2b44, 0xb43: 0x2ca8, 0xb44: 0x2b4e, 0xb45: 0x2b58,
-	0xb46: 0x2b62, 0xb47: 0x2d95, 0xb48: 0x2cb5, 0xb49: 0x28e1, 0xb4a: 0x2e6f, 0xb4b: 0x2efa,
-	0xb4c: 0x2da5, 0xb4d: 0x2cc2, 0xb4e: 0x2f21, 0xb4f: 0x2b6c, 0xb50: 0x2b76, 0xb51: 0x2ccf,
-	0xb52: 0x28e8, 0xb53: 0x2cdc, 0xb54: 0x2db5, 0xb55: 0x28ef, 0xb56: 0x2e82, 0xb57: 0x2b80,
-	0xb58: 0x1e4a, 0xb59: 0x1e5e, 0xb5a: 0x1e6d, 0xb5b: 0x1e7c, 0xb5c: 0x1e8b, 0xb5d: 0x1e9a,
-	0xb5e: 0x1ea9, 0xb5f: 0x1eb8, 0xb60: 0x1ec7, 0xb61: 0x1ed6, 0xb62: 0x2325, 0xb63: 0x2337,
-	0xb64: 0x2349, 0xb65: 0x2355, 0xb66: 0x2361, 0xb67: 0x236d, 0xb68: 0x2379, 0xb69: 0x2385,
-	0xb6a: 0x2391, 0xb6b: 0x239d, 0xb6c: 0x23d9, 0xb6d: 0x23e5, 0xb6e: 0x23f1, 0xb6f: 0x23fd,
-	0xb70: 0x2409, 0xb71: 0x1da7, 0xb72: 0x1b59, 0xb73: 0x1ac9, 0xb74: 0x1d77, 0xb75: 0x1bda,
-	0xb76: 0x1be9, 0xb77: 0x1b5f, 0xb78: 0x1d8f, 0xb79: 0x1d93, 0xb7a: 0x1af3, 0xb7b: 0x28fd,
-	0xb7c: 0x290b, 0xb7d: 0x28f6, 0xb7e: 0x2904, 0xb7f: 0x2ce9,
+	0xb40: 0x2b08, 0xb41: 0x29a4, 0xb42: 0x2b18, 0xb43: 0x287c, 0xb44: 0x2ee0, 0xb45: 0x2886,
+	0xb46: 0x2890, 0xb47: 0x2f24, 0xb48: 0x29b1, 0xb49: 0x289a, 0xb4a: 0x28a4, 0xb4b: 0x28ae,
+	0xb4c: 0x29d8, 0xb4d: 0x29e5, 0xb4e: 0x29be, 0xb4f: 0x29cb, 0xb50: 0x2ea5, 0xb51: 0x29f2,
+	0xb52: 0x29ff, 0xb53: 0x2bba, 0xb54: 0x26b7, 0xb55: 0x2bcd, 0xb56: 0x2be0, 0xb57: 0x2b28,
+	0xb58: 0x2a0c, 0xb59: 0x2bf3, 0xb5a: 0x2c06, 0xb5b: 0x2a19, 0xb5c: 0x28b8, 0xb5d: 0x28c2,
+	0xb5e: 0x2eb3, 0xb5f: 0x2a26, 0xb60: 0x2b38, 0xb61: 0x2ef1, 0xb62: 0x28cc, 0xb63: 0x28d6,
+	0xb64: 0x2a33, 0xb65: 0x28e0, 0xb66: 0x28ea, 0xb67: 0x26cc, 0xb68: 0x26d3, 0xb69: 0x28f4,
+	0xb6a: 0x28fe, 0xb6b: 0x2c19, 0xb6c: 0x2a40, 0xb6d: 0x2b48, 0xb6e: 0x2c2c, 0xb6f: 0x2a4d,
+	0xb70: 0x2912, 0xb71: 0x2908, 0xb72: 0x2f38, 0xb73: 0x2a5a, 0xb74: 0x2c3f, 0xb75: 0x291c,
+	0xb76: 0x2b58, 0xb77: 0x2926, 0xb78: 0x2a74, 0xb79: 0x2930, 0xb7a: 0x2a81, 0xb7b: 0x2f02,
+	0xb7c: 0x2a67, 0xb7d: 0x2b68, 0xb7e: 0x2a8e, 0xb7f: 0x26da,
 	// Block 0x2e, offset 0xb80
-	0xb80: 0x1bdd, 0xb81: 0x1bc5, 0xb82: 0x1df3, 0xb83: 0x1bad, 0xb84: 0x1b86, 0xb85: 0x1afc,
-	0xb86: 0x1b0b, 0xb87: 0x1adb, 0xb88: 0x1d83, 0xb89: 0x1ee5, 0xb8a: 0x1be0, 0xb8b: 0x1bc8,
-	0xb8c: 0x1df7, 0xb8d: 0x1e03, 0xb8e: 0x1bb9, 0xb8f: 0x1b8f, 0xb90: 0x1aea, 0xb91: 0x1daf,
-	0xb92: 0x1d43, 0xb93: 0x1d2f, 0xb94: 0x1d5f, 0xb95: 0x1e07, 0xb96: 0x1bbc, 0xb97: 0x1b5c,
-	0xb98: 0x1b92, 0xb99: 0x1b71, 0xb9a: 0x1bd4, 0xb9b: 0x1e0b, 0xb9c: 0x1bbf, 0xb9d: 0x1b53,
-	0xb9e: 0x1b95, 0xb9f: 0x1dcf, 0xba0: 0x1d87, 0xba1: 0x1ba7, 0xba2: 0x1db7, 0xba3: 0x1dd3,
-	0xba4: 0x1d8b, 0xba5: 0x1baa, 0xba6: 0x1dbb, 0xba7: 0x247b, 0xba8: 0x248f, 0xba9: 0x1b29,
-	0xbaa: 0x1db3, 0xbab: 0x1d47, 0xbac: 0x1d33, 0xbad: 0x1ddb, 0xbae: 0x2912, 0xbaf: 0x29a9,
-	0xbb0: 0x1bec, 0xbb1: 0x1bd7, 0xbb2: 0x1e0f, 0xbb3: 0x1bc2, 0xbb4: 0x1be3, 0xbb5: 0x1bcb,
-	0xbb6: 0x1dfb, 0xbb7: 0x1bb0, 0xbb8: 0x1b89, 0xbb9: 0x1b14, 0xbba: 0x1be6, 0xbbb: 0x1bce,
-	0xbbc: 0x1dff, 0xbbd: 0x1bb3, 0xbbe: 0x1b8c, 0xbbf: 0x1b17,
+	0xb80: 0x2f13, 0xb81: 0x293a, 0xb82: 0x2944, 0xb83: 0x2a9b, 0xb84: 0x294e, 0xb85: 0x2958,
+	0xb86: 0x2962, 0xb87: 0x2b78, 0xb88: 0x2aa8, 0xb89: 0x26e1, 0xb8a: 0x2c52, 0xb8b: 0x2e8c,
+	0xb8c: 0x2b88, 0xb8d: 0x2ab5, 0xb8e: 0x2ec1, 0xb8f: 0x296c, 0xb90: 0x2976, 0xb91: 0x2ac2,
+	0xb92: 0x26e8, 0xb93: 0x2acf, 0xb94: 0x2b98, 0xb95: 0x26ef, 0xb96: 0x2c65, 0xb97: 0x2980,
+	0xb98: 0x1cb3, 0xb99: 0x1cc7, 0xb9a: 0x1cd6, 0xb9b: 0x1ce5, 0xb9c: 0x1cf4, 0xb9d: 0x1d03,
+	0xb9e: 0x1d12, 0xb9f: 0x1d21, 0xba0: 0x1d30, 0xba1: 0x1d3f, 0xba2: 0x218e, 0xba3: 0x21a0,
+	0xba4: 0x21b2, 0xba5: 0x21be, 0xba6: 0x21ca, 0xba7: 0x21d6, 0xba8: 0x21e2, 0xba9: 0x21ee,
+	0xbaa: 0x21fa, 0xbab: 0x2206, 0xbac: 0x2242, 0xbad: 0x224e, 0xbae: 0x225a, 0xbaf: 0x2266,
+	0xbb0: 0x2272, 0xbb1: 0x1c10, 0xbb2: 0x19c2, 0xbb3: 0x1932, 0xbb4: 0x1be0, 0xbb5: 0x1a43,
+	0xbb6: 0x1a52, 0xbb7: 0x19c8, 0xbb8: 0x1bf8, 0xbb9: 0x1bfc, 0xbba: 0x195c, 0xbbb: 0x26fd,
+	0xbbc: 0x270b, 0xbbd: 0x26f6, 0xbbe: 0x2704, 0xbbf: 0x2adc,
 	// Block 0x2f, offset 0xbc0
-	0xbc0: 0x1dbf, 0xbc1: 0x1d4b, 0xbc2: 0x1ee0, 0xbc3: 0x1acc, 0xbc4: 0x1b4d, 0xbc5: 0x1b50,
-	0xbc6: 0x2488, 0xbc7: 0x1d27, 0xbc8: 0x1b56, 0xbc9: 0x1ade, 0xbca: 0x1b74, 0xbcb: 0x1ae1,
-	0xbcc: 0x1b7d, 0xbcd: 0x1aff, 0xbce: 0x1b02, 0xbcf: 0x1b98, 0xbd0: 0x1b9e, 0xbd1: 0x1ba1,
-	0xbd2: 0x1dc3, 0xbd3: 0x1ba4, 0xbd4: 0x1bb6, 0xbd5: 0x1dcb, 0xbd6: 0x1dd7, 0xbd7: 0x1b23,
-	0xbd8: 0x1eea, 0xbd9: 0x1d4f, 0xbda: 0x1b26, 0xbdb: 0x1bef, 0xbdc: 0x1b38, 0xbdd: 0x1b47,
-	0xbde: 0x2475, 0xbdf: 0x246f, 0xbe0: 0x1e54, 0xbe1: 0x1e63, 0xbe2: 0x1e72, 0xbe3: 0x1e81,
-	0xbe4: 0x1e90, 0xbe5: 0x1e9f, 0xbe6: 0x1eae, 0xbe7: 0x1ebd, 0xbe8: 0x1ecc, 0xbe9: 0x2319,
-	0xbea: 0x232b, 0xbeb: 0x233d, 0xbec: 0x234f, 0xbed: 0x235b, 0xbee: 0x2367, 0xbef: 0x2373,
-	0xbf0: 0x237f, 0xbf1: 0x238b, 0xbf2: 0x2397, 0xbf3: 0x23d3, 0xbf4: 0x23df, 0xbf5: 0x23eb,
-	0xbf6: 0x23f7, 0xbf7: 0x2403, 0xbf8: 0x240f, 0xbf9: 0x2415, 0xbfa: 0x241b, 0xbfb: 0x2421,
-	0xbfc: 0x2427, 0xbfd: 0x2439, 0xbfe: 0x243f, 0xbff: 0x1da3,
+	0xbc0: 0x1a46, 0xbc1: 0x1a2e, 0xbc2: 0x1c5c, 0xbc3: 0x1a16, 0xbc4: 0x19ef, 0xbc5: 0x1965,
+	0xbc6: 0x1974, 0xbc7: 0x1944, 0xbc8: 0x1bec, 0xbc9: 0x1d4e, 0xbca: 0x1a49, 0xbcb: 0x1a31,
+	0xbcc: 0x1c60, 0xbcd: 0x1c6c, 0xbce: 0x1a22, 0xbcf: 0x19f8, 0xbd0: 0x1953, 0xbd1: 0x1c18,
+	0xbd2: 0x1bac, 0xbd3: 0x1b98, 0xbd4: 0x1bc8, 0xbd5: 0x1c70, 0xbd6: 0x1a25, 0xbd7: 0x19c5,
+	0xbd8: 0x19fb, 0xbd9: 0x19da, 0xbda: 0x1a3d, 0xbdb: 0x1c74, 0xbdc: 0x1a28, 0xbdd: 0x19bc,
+	0xbde: 0x19fe, 0xbdf: 0x1c38, 0xbe0: 0x1bf0, 0xbe1: 0x1a10, 0xbe2: 0x1c20, 0xbe3: 0x1c3c,
+	0xbe4: 0x1bf4, 0xbe5: 0x1a13, 0xbe6: 0x1c24, 0xbe7: 0x22e4, 0xbe8: 0x22f8, 0xbe9: 0x1992,
+	0xbea: 0x1c1c, 0xbeb: 0x1bb0, 0xbec: 0x1b9c, 0xbed: 0x1c44, 0xbee: 0x2712, 0xbef: 0x27a9,
+	0xbf0: 0x1a55, 0xbf1: 0x1a40, 0xbf2: 0x1c78, 0xbf3: 0x1a2b, 0xbf4: 0x1a4c, 0xbf5: 0x1a34,
+	0xbf6: 0x1c64, 0xbf7: 0x1a19, 0xbf8: 0x19f2, 0xbf9: 0x197d, 0xbfa: 0x1a4f, 0xbfb: 0x1a37,
+	0xbfc: 0x1c68, 0xbfd: 0x1a1c, 0xbfe: 0x19f5, 0xbff: 0x1980,
 	// Block 0x30, offset 0xc00
-	0xc00: 0x13ef, 0xc01: 0x0d73, 0xc02: 0x144b, 0xc03: 0x1417, 0xc04: 0x0ecf, 0xc05: 0x0763,
-	0xc06: 0x0957, 0xc07: 0x169f, 0xc08: 0x169f, 0xc09: 0x0a83, 0xc0a: 0x14d3, 0xc0b: 0x09bb,
-	0xc0c: 0x0a7f, 0xc0d: 0x0c67, 0xc0e: 0x1047, 0xc0f: 0x11d7, 0xc10: 0x130f, 0xc11: 0x134b,
-	0xc12: 0x137f, 0xc13: 0x1493, 0xc14: 0x0deb, 0xc15: 0x0e77, 0xc16: 0x0f23, 0xc17: 0x0fbb,
-	0xc18: 0x12d7, 0xc19: 0x14bb, 0xc1a: 0x15e7, 0xc1b: 0x0787, 0xc1c: 0x092b, 0xc1d: 0x0dff,
-	0xc1e: 0x0f47, 0xc1f: 0x130b, 0xc20: 0x1637, 0xc21: 0x0b2b, 0xc22: 0x0eef, 0xc23: 0x12fb,
-	0xc24: 0x138f, 0xc25: 0x0c9b, 0xc26: 0x1233, 0xc27: 0x1357, 0xc28: 0x0b97, 0xc29: 0x0d87,
-	0xc2a: 0x0e8f, 0xc2b: 0x0f93, 0xc2c: 0x149f, 0xc2d: 0x07c7, 0xc2e: 0x085f, 0xc2f: 0x08cb,
-	0xc30: 0x0d03, 0xc31: 0x0df7, 0xc32: 0x0f43, 0xc33: 0x1067, 0xc34: 0x11ef, 0xc35: 0x1303,
-	0xc36: 0x131b, 0xc37: 0x143f, 0xc38: 0x1563, 0xc39: 0x1617, 0xc3a: 0x1633, 0xc3b: 0x10a3,
-	0xc3c: 0x10e3, 0xc3d: 0x119b, 0xc3e: 0x12bb, 0xc3f: 0x14ef,
+	0xc00: 0x1c28, 0xc01: 0x1bb4, 0xc02: 0x1d49, 0xc03: 0x1935, 0xc04: 0x19b6, 0xc05: 0x19b9,
+	0xc06: 0x22f1, 0xc07: 0x1b90, 0xc08: 0x19bf, 0xc09: 0x1947, 0xc0a: 0x19dd, 0xc0b: 0x194a,
+	0xc0c: 0x19e6, 0xc0d: 0x1968, 0xc0e: 0x196b, 0xc0f: 0x1a01, 0xc10: 0x1a07, 0xc11: 0x1a0a,
+	0xc12: 0x1c2c, 0xc13: 0x1a0d, 0xc14: 0x1a1f, 0xc15: 0x1c34, 0xc16: 0x1c40, 0xc17: 0x198c,
+	0xc18: 0x1d53, 0xc19: 0x1bb8, 0xc1a: 0x198f, 0xc1b: 0x1a58, 0xc1c: 0x19a1, 0xc1d: 0x19b0,
+	0xc1e: 0x22de, 0xc1f: 0x22d8, 0xc20: 0x1cbd, 0xc21: 0x1ccc, 0xc22: 0x1cdb, 0xc23: 0x1cea,
+	0xc24: 0x1cf9, 0xc25: 0x1d08, 0xc26: 0x1d17, 0xc27: 0x1d26, 0xc28: 0x1d35, 0xc29: 0x2182,
+	0xc2a: 0x2194, 0xc2b: 0x21a6, 0xc2c: 0x21b8, 0xc2d: 0x21c4, 0xc2e: 0x21d0, 0xc2f: 0x21dc,
+	0xc30: 0x21e8, 0xc31: 0x21f4, 0xc32: 0x2200, 0xc33: 0x223c, 0xc34: 0x2248, 0xc35: 0x2254,
+	0xc36: 0x2260, 0xc37: 0x226c, 0xc38: 0x2278, 0xc39: 0x227e, 0xc3a: 0x2284, 0xc3b: 0x228a,
+	0xc3c: 0x2290, 0xc3d: 0x22a2, 0xc3e: 0x22a8, 0xc3f: 0x1c0c,
 	// Block 0x31, offset 0xc40
-	0xc40: 0x163f, 0xc41: 0x13c3, 0xc42: 0x0a3f, 0xc43: 0x0bb3, 0xc44: 0x1153, 0xc45: 0x1213,
-	0xc46: 0x0f77, 0xc47: 0x10ab, 0xc48: 0x140f, 0xc49: 0x155b, 0xc4a: 0x0a3b, 0xc4b: 0x0b07,
-	0xc4c: 0x0def, 0xc4d: 0x0ea3, 0xc4e: 0x0ed7, 0xc4f: 0x118b, 0xc50: 0x11b3, 0xc51: 0x151b,
-	0xc52: 0x08c7, 0xc53: 0x121f, 0xc54: 0x086b, 0xc55: 0x0867, 0xc56: 0x110f, 0xc57: 0x119f,
-	0xc58: 0x12d3, 0xc59: 0x1523, 0xc5a: 0x13df, 0xc5b: 0x0c9f, 0xc5c: 0x0deb, 0xc5d: 0x13cf,
-	0xc5e: 0x076f, 0xc5f: 0x0adb, 0xc60: 0x0c0b, 0xc61: 0x0fa7, 0xc62: 0x1027, 0xc63: 0x08eb,
-	0xc64: 0x10b3, 0xc65: 0x07d7, 0xc66: 0x0bef, 0xc67: 0x074f, 0xc68: 0x0e63, 0xc69: 0x0d1b,
-	0xc6a: 0x1187, 0xc6b: 0x093f, 0xc6c: 0x0a2b, 0xc6d: 0x1073, 0xc6e: 0x12db, 0xc6f: 0x13b3,
-	0xc70: 0x0e2f, 0xc71: 0x146f, 0xc72: 0x0e5b, 0xc73: 0x0caf, 0xc74: 0x1293, 0xc75: 0x0ccf,
-	0xc76: 0x1023, 0xc77: 0x07a3, 0xc78: 0x081f, 0xc79: 0x0863, 0xc7a: 0x0dcb, 0xc7b: 0x1173,
-	0xc7c: 0x126b, 0xc7d: 0x13bf, 0xc7e: 0x14cf, 0xc7f: 0x08d3,
+	0xc40: 0x1377, 0xc41: 0x0cfb, 0xc42: 0x13d3, 0xc43: 0x139f, 0xc44: 0x0e57, 0xc45: 0x06eb,
+	0xc46: 0x08df, 0xc47: 0x1627, 0xc48: 0x1627, 0xc49: 0x0a0b, 0xc4a: 0x145b, 0xc4b: 0x0943,
+	0xc4c: 0x0a07, 0xc4d: 0x0bef, 0xc4e: 0x0fcf, 0xc4f: 0x115f, 0xc50: 0x1297, 0xc51: 0x12d3,
+	0xc52: 0x1307, 0xc53: 0x141b, 0xc54: 0x0d73, 0xc55: 0x0dff, 0xc56: 0x0eab, 0xc57: 0x0f43,
+	0xc58: 0x125f, 0xc59: 0x1443, 0xc5a: 0x156f, 0xc5b: 0x070f, 0xc5c: 0x08b3, 0xc5d: 0x0d87,
+	0xc5e: 0x0ecf, 0xc5f: 0x1293, 0xc60: 0x15bf, 0xc61: 0x0ab3, 0xc62: 0x0e77, 0xc63: 0x1283,
+	0xc64: 0x1317, 0xc65: 0x0c23, 0xc66: 0x11bb, 0xc67: 0x12df, 0xc68: 0x0b1f, 0xc69: 0x0d0f,
+	0xc6a: 0x0e17, 0xc6b: 0x0f1b, 0xc6c: 0x1427, 0xc6d: 0x074f, 0xc6e: 0x07e7, 0xc6f: 0x0853,
+	0xc70: 0x0c8b, 0xc71: 0x0d7f, 0xc72: 0x0ecb, 0xc73: 0x0fef, 0xc74: 0x1177, 0xc75: 0x128b,
+	0xc76: 0x12a3, 0xc77: 0x13c7, 0xc78: 0x14eb, 0xc79: 0x159f, 0xc7a: 0x15bb, 0xc7b: 0x102b,
+	0xc7c: 0x106b, 0xc7d: 0x1123, 0xc7e: 0x1243, 0xc7f: 0x1477,
 	// Block 0x32, offset 0xc80
-	0xc80: 0x0987, 0xc81: 0x0a8f, 0xc82: 0x0ba7, 0xc83: 0x0d37, 0xc84: 0x0ef3, 0xc85: 0x10b7,
-	0xc86: 0x150b, 0xc87: 0x15ef, 0xc88: 0x1643, 0xc89: 0x165b, 0xc8a: 0x08af, 0xc8b: 0x0d6b,
-	0xc8c: 0x0e1b, 0xc8d: 0x1463, 0xc8e: 0x0b73, 0xc8f: 0x0c4f, 0xc90: 0x0c6b, 0xc91: 0x0cfb,
-	0xc92: 0x0ee3, 0xc93: 0x0f2f, 0xc94: 0x0fdf, 0xc95: 0x1103, 0xc96: 0x11a7, 0xc97: 0x120b,
-	0xc98: 0x1453, 0xc99: 0x12e3, 0xc9a: 0x147b, 0xc9b: 0x14f3, 0xc9c: 0x0887, 0xc9d: 0x08b3,
-	0xc9e: 0x099b, 0xc9f: 0x0f1f, 0xca0: 0x136b, 0xca1: 0x13b3, 0xca2: 0x0b93, 0xca3: 0x0c03,
-	0xca4: 0x0cc7, 0xca5: 0x0e27, 0xca6: 0x114f, 0xca7: 0x0f9b, 0xca8: 0x07b3, 0xca9: 0x09f7,
-	0xcaa: 0x0adb, 0xcab: 0x0b3f, 0xcac: 0x0c0f, 0xcad: 0x0fb7, 0xcae: 0x0fd3, 0xcaf: 0x11e3,
-	0xcb0: 0x1203, 0xcb1: 0x14d7, 0xcb2: 0x1557, 0xcb3: 0x1567, 0xcb4: 0x15a3, 0xcb5: 0x07cb,
-	0xcb6: 0x10f7, 0xcb7: 0x14c3, 0xcb8: 0x153f, 0xcb9: 0x0c27, 0xcba: 0x078f, 0xcbb: 0x07ef,
-	0xcbc: 0x0adf, 0xcbd: 0x0aff, 0xcbe: 0x0d27, 0xcbf: 0x0deb,
+	0xc80: 0x15c7, 0xc81: 0x134b, 0xc82: 0x09c7, 0xc83: 0x0b3b, 0xc84: 0x10db, 0xc85: 0x119b,
+	0xc86: 0x0eff, 0xc87: 0x1033, 0xc88: 0x1397, 0xc89: 0x14e3, 0xc8a: 0x09c3, 0xc8b: 0x0a8f,
+	0xc8c: 0x0d77, 0xc8d: 0x0e2b, 0xc8e: 0x0e5f, 0xc8f: 0x1113, 0xc90: 0x113b, 0xc91: 0x14a3,
+	0xc92: 0x084f, 0xc93: 0x11a7, 0xc94: 0x07f3, 0xc95: 0x07ef, 0xc96: 0x1097, 0xc97: 0x1127,
+	0xc98: 0x125b, 0xc99: 0x14ab, 0xc9a: 0x1367, 0xc9b: 0x0c27, 0xc9c: 0x0d73, 0xc9d: 0x1357,
+	0xc9e: 0x06f7, 0xc9f: 0x0a63, 0xca0: 0x0b93, 0xca1: 0x0f2f, 0xca2: 0x0faf, 0xca3: 0x0873,
+	0xca4: 0x103b, 0xca5: 0x075f, 0xca6: 0x0b77, 0xca7: 0x06d7, 0xca8: 0x0deb, 0xca9: 0x0ca3,
+	0xcaa: 0x110f, 0xcab: 0x08c7, 0xcac: 0x09b3, 0xcad: 0x0ffb, 0xcae: 0x1263, 0xcaf: 0x133b,
+	0xcb0: 0x0db7, 0xcb1: 0x13f7, 0xcb2: 0x0de3, 0xcb3: 0x0c37, 0xcb4: 0x121b, 0xcb5: 0x0c57,
+	0xcb6: 0x0fab, 0xcb7: 0x072b, 0xcb8: 0x07a7, 0xcb9: 0x07eb, 0xcba: 0x0d53, 0xcbb: 0x10fb,
+	0xcbc: 0x11f3, 0xcbd: 0x1347, 0xcbe: 0x1457, 0xcbf: 0x085b,
 	// Block 0x33, offset 0xcc0
-	0xcc0: 0x0f3b, 0xcc1: 0x1043, 0xcc2: 0x12ef, 0xcc3: 0x148f, 0xcc4: 0x1697, 0xcc5: 0x0d5b,
-	0xcc6: 0x1517, 0xcc7: 0x08ab, 0xcc8: 0x0da7, 0xcc9: 0x0db3, 0xcca: 0x0e87, 0xccb: 0x0ebf,
-	0xccc: 0x0fc3, 0xccd: 0x101f, 0xcce: 0x109f, 0xccf: 0x1183, 0xcd0: 0x15af, 0xcd1: 0x0827,
-	0xcd2: 0x0c7b, 0xcd3: 0x1527, 0xcd4: 0x07df, 0xcd5: 0x0b23, 0xcd6: 0x0ea7, 0xcd7: 0x1457,
-	0xcd8: 0x0bdf, 0xcd9: 0x0c2f, 0xcda: 0x0dbb, 0xcdb: 0x0fa7, 0xcdc: 0x152f, 0xcdd: 0x088f,
-	0xcde: 0x0977, 0xcdf: 0x0b0f, 0xce0: 0x0d4b, 0xce1: 0x0d97, 0xce2: 0x0dd7, 0xce3: 0x0e6b,
-	0xce4: 0x0fbf, 0xce5: 0x1033, 0xce6: 0x11cf, 0xce7: 0x136f, 0xce8: 0x137b, 0xce9: 0x14cb,
-	0xcea: 0x154b, 0xceb: 0x08fb, 0xcec: 0x0ec3, 0xced: 0x097b, 0xcee: 0x0f3f, 0xcef: 0x0fe3,
-	0xcf0: 0x12ff, 0xcf1: 0x1533, 0xcf2: 0x161f, 0xcf3: 0x1647, 0xcf4: 0x0daf, 0xcf5: 0x0e9f,
-	0xcf6: 0x123b, 0xcf7: 0x112f, 0xcf8: 0x113b, 0xcf9: 0x115f, 0xcfa: 0x0f8f, 0xcfb: 0x0f17,
-	0xcfc: 0x13db, 0xcfd: 0x07ab, 0xcfe: 0x12a3, 0xcff: 0x0893,
+	0xcc0: 0x090f, 0xcc1: 0x0a17, 0xcc2: 0x0b2f, 0xcc3: 0x0cbf, 0xcc4: 0x0e7b, 0xcc5: 0x103f,
+	0xcc6: 0x1493, 0xcc7: 0x1577, 0xcc8: 0x15cb, 0xcc9: 0x15e3, 0xcca: 0x0837, 0xccb: 0x0cf3,
+	0xccc: 0x0da3, 0xccd: 0x13eb, 0xcce: 0x0afb, 0xccf: 0x0bd7, 0xcd0: 0x0bf3, 0xcd1: 0x0c83,
+	0xcd2: 0x0e6b, 0xcd3: 0x0eb7, 0xcd4: 0x0f67, 0xcd5: 0x108b, 0xcd6: 0x112f, 0xcd7: 0x1193,
+	0xcd8: 0x13db, 0xcd9: 0x126b, 0xcda: 0x1403, 0xcdb: 0x147b, 0xcdc: 0x080f, 0xcdd: 0x083b,
+	0xcde: 0x0923, 0xcdf: 0x0ea7, 0xce0: 0x12f3, 0xce1: 0x133b, 0xce2: 0x0b1b, 0xce3: 0x0b8b,
+	0xce4: 0x0c4f, 0xce5: 0x0daf, 0xce6: 0x10d7, 0xce7: 0x0f23, 0xce8: 0x073b, 0xce9: 0x097f,
+	0xcea: 0x0a63, 0xceb: 0x0ac7, 0xcec: 0x0b97, 0xced: 0x0f3f, 0xcee: 0x0f5b, 0xcef: 0x116b,
+	0xcf0: 0x118b, 0xcf1: 0x145f, 0xcf2: 0x14df, 0xcf3: 0x14ef, 0xcf4: 0x152b, 0xcf5: 0x0753,
+	0xcf6: 0x107f, 0xcf7: 0x144b, 0xcf8: 0x14c7, 0xcf9: 0x0baf, 0xcfa: 0x0717, 0xcfb: 0x0777,
+	0xcfc: 0x0a67, 0xcfd: 0x0a87, 0xcfe: 0x0caf, 0xcff: 0x0d73,
 	// Block 0x34, offset 0xd00
-	0xd00: 0x0883, 0xd01: 0x0b83, 0xd02: 0x0ca3, 0xd03: 0x116b, 0xd04: 0x0acb, 0xd05: 0x0e7b,
-	0xd06: 0x0d67, 0xd07: 0x145f, 0xd08: 0x135f, 0xd09: 0x151f, 0xd0a: 0x139b, 0xd0b: 0x0b9f,
-	0xd0c: 0x07ff, 0xd0d: 0x09d3, 0xd10: 0x0a27,
-	0xd12: 0x0d57, 0xd15: 0x086f, 0xd16: 0x0f97, 0xd17: 0x105b,
-	0xd18: 0x10bf, 0xd19: 0x10db, 0xd1a: 0x10df, 0xd1b: 0x10f3, 0xd1c: 0x156f, 0xd1d: 0x1163,
-	0xd1e: 0x11e7, 0xd20: 0x1307, 0xd22: 0x13cb,
-	0xd25: 0x147f, 0xd26: 0x14ab,
-	0xd2a: 0x15c3, 0xd2b: 0x15c7, 0xd2c: 0x15cb, 0xd2d: 0x162f, 0xd2e: 0x14a3, 0xd2f: 0x153b,
-	0xd30: 0x07cf, 0xd31: 0x07f3, 0xd32: 0x0807, 0xd33: 0x08c3, 0xd34: 0x08cf, 0xd35: 0x090f,
-	0xd36: 0x09c3, 0xd37: 0x09df, 0xd38: 0x09e7, 0xd39: 0x0a23, 0xd3a: 0x0a2f, 0xd3b: 0x0b0b,
-	0xd3c: 0x0b13, 0xd3d: 0x0c1b, 0xd3e: 0x0c43, 0xd3f: 0x0c4b,
+	0xd00: 0x0ec3, 0xd01: 0x0fcb, 0xd02: 0x1277, 0xd03: 0x1417, 0xd04: 0x161f, 0xd05: 0x0ce3,
+	0xd06: 0x149f, 0xd07: 0x0833, 0xd08: 0x0d2f, 0xd09: 0x0d3b, 0xd0a: 0x0e0f, 0xd0b: 0x0e47,
+	0xd0c: 0x0f4b, 0xd0d: 0x0fa7, 0xd0e: 0x1027, 0xd0f: 0x110b, 0xd10: 0x1537, 0xd11: 0x07af,
+	0xd12: 0x0c03, 0xd13: 0x14af, 0xd14: 0x0767, 0xd15: 0x0aab, 0xd16: 0x0e2f, 0xd17: 0x13df,
+	0xd18: 0x0b67, 0xd19: 0x0bb7, 0xd1a: 0x0d43, 0xd1b: 0x0f2f, 0xd1c: 0x14b7, 0xd1d: 0x0817,
+	0xd1e: 0x08ff, 0xd1f: 0x0a97, 0xd20: 0x0cd3, 0xd21: 0x0d1f, 0xd22: 0x0d5f, 0xd23: 0x0df3,
+	0xd24: 0x0f47, 0xd25: 0x0fbb, 0xd26: 0x1157, 0xd27: 0x12f7, 0xd28: 0x1303, 0xd29: 0x1453,
+	0xd2a: 0x14d3, 0xd2b: 0x0883, 0xd2c: 0x0e4b, 0xd2d: 0x0903, 0xd2e: 0x0ec7, 0xd2f: 0x0f6b,
+	0xd30: 0x1287, 0xd31: 0x14bb, 0xd32: 0x15a7, 0xd33: 0x15cf, 0xd34: 0x0d37, 0xd35: 0x0e27,
+	0xd36: 0x11c3, 0xd37: 0x10b7, 0xd38: 0x10c3, 0xd39: 0x10e7, 0xd3a: 0x0f17, 0xd3b: 0x0e9f,
+	0xd3c: 0x1363, 0xd3d: 0x0733, 0xd3e: 0x122b, 0xd3f: 0x081b,
 	// Block 0x35, offset 0xd40
-	0xd40: 0x0c63, 0xd41: 0x0d0f, 0xd42: 0x0d3f, 0xd43: 0x0d5f, 0xd44: 0x0dcf, 0xd45: 0x0e93,
-	0xd46: 0x0eaf, 0xd47: 0x0edf, 0xd48: 0x0f33, 0xd49: 0x0f53, 0xd4a: 0x0fc7, 0xd4b: 0x10a7,
-	0xd4c: 0x10c3, 0xd4d: 0x10cb, 0xd4e: 0x10c7, 0xd4f: 0x10cf, 0xd50: 0x10d3, 0xd51: 0x10d7,
-	0xd52: 0x10eb, 0xd53: 0x10ef, 0xd54: 0x1113, 0xd55: 0x1127, 0xd56: 0x1143, 0xd57: 0x11a7,
-	0xd58: 0x11af, 0xd59: 0x11b7, 0xd5a: 0x11cb, 0xd5b: 0x11f3, 0xd5c: 0x1243, 0xd5d: 0x1277,
-	0xd5e: 0x1277, 0xd5f: 0x12df, 0xd60: 0x1387, 0xd61: 0x139f, 0xd62: 0x13d3, 0xd63: 0x13d7,
-	0xd64: 0x141b, 0xd65: 0x141f, 0xd66: 0x1477, 0xd67: 0x147f, 0xd68: 0x154f, 0xd69: 0x1593,
-	0xd6a: 0x15ab, 0xd6b: 0x0c13, 0xd6c: 0x1792, 0xd6d: 0x125b,
-	0xd70: 0x0757, 0xd71: 0x085b, 0xd72: 0x081b, 0xd73: 0x07c3, 0xd74: 0x0803, 0xd75: 0x082f,
-	0xd76: 0x08bf, 0xd77: 0x08db, 0xd78: 0x09c3, 0xd79: 0x09af, 0xd7a: 0x09bf, 0xd7b: 0x09db,
-	0xd7c: 0x0a27, 0xd7d: 0x0a37, 0xd7e: 0x0a7b, 0xd7f: 0x0a87,
+	0xd40: 0x080b, 0xd41: 0x0b0b, 0xd42: 0x0c2b, 0xd43: 0x10f3, 0xd44: 0x0a53, 0xd45: 0x0e03,
+	0xd46: 0x0cef, 0xd47: 0x13e7, 0xd48: 0x12e7, 0xd49: 0x14a7, 0xd4a: 0x1323, 0xd4b: 0x0b27,
+	0xd4c: 0x0787, 0xd4d: 0x095b, 0xd50: 0x09af,
+	0xd52: 0x0cdf, 0xd55: 0x07f7, 0xd56: 0x0f1f, 0xd57: 0x0fe3,
+	0xd58: 0x1047, 0xd59: 0x1063, 0xd5a: 0x1067, 0xd5b: 0x107b, 0xd5c: 0x14f7, 0xd5d: 0x10eb,
+	0xd5e: 0x116f, 0xd60: 0x128f, 0xd62: 0x1353,
+	0xd65: 0x1407, 0xd66: 0x1433,
+	0xd6a: 0x154b, 0xd6b: 0x154f, 0xd6c: 0x1553, 0xd6d: 0x15b7, 0xd6e: 0x142b, 0xd6f: 0x14c3,
+	0xd70: 0x0757, 0xd71: 0x077b, 0xd72: 0x078f, 0xd73: 0x084b, 0xd74: 0x0857, 0xd75: 0x0897,
+	0xd76: 0x094b, 0xd77: 0x0967, 0xd78: 0x096f, 0xd79: 0x09ab, 0xd7a: 0x09b7, 0xd7b: 0x0a93,
+	0xd7c: 0x0a9b, 0xd7d: 0x0ba3, 0xd7e: 0x0bcb, 0xd7f: 0x0bd3,
 	// Block 0x36, offset 0xd80
-	0xd80: 0x0aa3, 0xd81: 0x0ab3, 0xd82: 0x0b9b, 0xd83: 0x0ba3, 0xd84: 0x0bd3, 0xd85: 0x0bf3,
-	0xd86: 0x0c23, 0xd87: 0x0c3b, 0xd88: 0x0c2b, 0xd89: 0x0c4b, 0xd8a: 0x0c3f, 0xd8b: 0x0c63,
-	0xd8c: 0x0c7f, 0xd8d: 0x0cd7, 0xd8e: 0x0ce3, 0xd8f: 0x0ceb, 0xd90: 0x0d13, 0xd91: 0x0d57,
-	0xd92: 0x0d87, 0xd93: 0x0d8b, 0xd94: 0x0d9f, 0xd95: 0x0e1f, 0xd96: 0x0e2f, 0xd97: 0x0e87,
-	0xd98: 0x0ed3, 0xd99: 0x0ecb, 0xd9a: 0x0edf, 0xd9b: 0x0efb, 0xd9c: 0x0f33, 0xd9d: 0x108b,
-	0xd9e: 0x0f57, 0xd9f: 0x0f8b, 0xda0: 0x0f97, 0xda1: 0x0fd7, 0xda2: 0x0ff3, 0xda3: 0x1017,
-	0xda4: 0x103b, 0xda5: 0x103f, 0xda6: 0x105b, 0xda7: 0x105f, 0xda8: 0x106f, 0xda9: 0x1083,
-	0xdaa: 0x107f, 0xdab: 0x10af, 0xdac: 0x112b, 0xdad: 0x1143, 0xdae: 0x115b, 0xdaf: 0x1193,
-	0xdb0: 0x11a7, 0xdb1: 0x11c3, 0xdb2: 0x11f3, 0xdb3: 0x12a7, 0xdb4: 0x12cf, 0xdb5: 0x1343,
-	0xdb6: 0x138b, 0xdb7: 0x1397, 0xdb8: 0x139f, 0xdb9: 0x13b7, 0xdba: 0x13cb, 0xdbb: 0x13bb,
-	0xdbc: 0x13d3, 0xdbd: 0x13cf, 0xdbe: 0x13c7, 0xdbf: 0x13d7,
+	0xd80: 0x0beb, 0xd81: 0x0c97, 0xd82: 0x0cc7, 0xd83: 0x0ce7, 0xd84: 0x0d57, 0xd85: 0x0e1b,
+	0xd86: 0x0e37, 0xd87: 0x0e67, 0xd88: 0x0ebb, 0xd89: 0x0edb, 0xd8a: 0x0f4f, 0xd8b: 0x102f,
+	0xd8c: 0x104b, 0xd8d: 0x1053, 0xd8e: 0x104f, 0xd8f: 0x1057, 0xd90: 0x105b, 0xd91: 0x105f,
+	0xd92: 0x1073, 0xd93: 0x1077, 0xd94: 0x109b, 0xd95: 0x10af, 0xd96: 0x10cb, 0xd97: 0x112f,
+	0xd98: 0x1137, 0xd99: 0x113f, 0xd9a: 0x1153, 0xd9b: 0x117b, 0xd9c: 0x11cb, 0xd9d: 0x11ff,
+	0xd9e: 0x11ff, 0xd9f: 0x1267, 0xda0: 0x130f, 0xda1: 0x1327, 0xda2: 0x135b, 0xda3: 0x135f,
+	0xda4: 0x13a3, 0xda5: 0x13a7, 0xda6: 0x13ff, 0xda7: 0x1407, 0xda8: 0x14d7, 0xda9: 0x151b,
+	0xdaa: 0x1533, 0xdab: 0x0b9b, 0xdac: 0x171a, 0xdad: 0x11e3,
+	0xdb0: 0x06df, 0xdb1: 0x07e3, 0xdb2: 0x07a3, 0xdb3: 0x074b, 0xdb4: 0x078b, 0xdb5: 0x07b7,
+	0xdb6: 0x0847, 0xdb7: 0x0863, 0xdb8: 0x094b, 0xdb9: 0x0937, 0xdba: 0x0947, 0xdbb: 0x0963,
+	0xdbc: 0x09af, 0xdbd: 0x09bf, 0xdbe: 0x0a03, 0xdbf: 0x0a0f,
 	// Block 0x37, offset 0xdc0
-	0xdc0: 0x13e3, 0xdc1: 0x141f, 0xdc2: 0x145b, 0xdc3: 0x148b, 0xdc4: 0x14bf, 0xdc5: 0x14df,
-	0xdc6: 0x152b, 0xdc7: 0x154f, 0xdc8: 0x156f, 0xdc9: 0x1583, 0xdca: 0x1593, 0xdcb: 0x159f,
-	0xdcc: 0x15ab, 0xdcd: 0x15ff, 0xdce: 0x169f, 0xdcf: 0x1729, 0xdd0: 0x1724, 0xdd1: 0x1756,
-	0xdd2: 0x067f, 0xdd3: 0x06a7, 0xdd4: 0x06ab, 0xdd5: 0x17d8, 0xdd6: 0x1805, 0xdd7: 0x187d,
-	0xdd8: 0x168b, 0xdd9: 0x169b,
+	0xdc0: 0x0a2b, 0xdc1: 0x0a3b, 0xdc2: 0x0b23, 0xdc3: 0x0b2b, 0xdc4: 0x0b5b, 0xdc5: 0x0b7b,
+	0xdc6: 0x0bab, 0xdc7: 0x0bc3, 0xdc8: 0x0bb3, 0xdc9: 0x0bd3, 0xdca: 0x0bc7, 0xdcb: 0x0beb,
+	0xdcc: 0x0c07, 0xdcd: 0x0c5f, 0xdce: 0x0c6b, 0xdcf: 0x0c73, 0xdd0: 0x0c9b, 0xdd1: 0x0cdf,
+	0xdd2: 0x0d0f, 0xdd3: 0x0d13, 0xdd4: 0x0d27, 0xdd5: 0x0da7, 0xdd6: 0x0db7, 0xdd7: 0x0e0f,
+	0xdd8: 0x0e5b, 0xdd9: 0x0e53, 0xdda: 0x0e67, 0xddb: 0x0e83, 0xddc: 0x0ebb, 0xddd: 0x1013,
+	0xdde: 0x0edf, 0xddf: 0x0f13, 0xde0: 0x0f1f, 0xde1: 0x0f5f, 0xde2: 0x0f7b, 0xde3: 0x0f9f,
+	0xde4: 0x0fc3, 0xde5: 0x0fc7, 0xde6: 0x0fe3, 0xde7: 0x0fe7, 0xde8: 0x0ff7, 0xde9: 0x100b,
+	0xdea: 0x1007, 0xdeb: 0x1037, 0xdec: 0x10b3, 0xded: 0x10cb, 0xdee: 0x10e3, 0xdef: 0x111b,
+	0xdf0: 0x112f, 0xdf1: 0x114b, 0xdf2: 0x117b, 0xdf3: 0x122f, 0xdf4: 0x1257, 0xdf5: 0x12cb,
+	0xdf6: 0x1313, 0xdf7: 0x131f, 0xdf8: 0x1327, 0xdf9: 0x133f, 0xdfa: 0x1353, 0xdfb: 0x1343,
+	0xdfc: 0x135b, 0xdfd: 0x1357, 0xdfe: 0x134f, 0xdff: 0x135f,
 	// Block 0x38, offset 0xe00
-	0xe00: 0x1b68, 0xe01: 0x1b6b, 0xe02: 0x1b6e, 0xe03: 0x1d9b, 0xe04: 0x1d9f, 0xe05: 0x1bf2,
-	0xe06: 0x1bf2,
-	0xe13: 0x1f08, 0xe14: 0x1ef9, 0xe15: 0x1efe, 0xe16: 0x1f0d, 0xe17: 0x1f03,
-	0xe1d: 0x43cb,
-	0xe1e: 0x8115, 0xe1f: 0x443d, 0xe20: 0x022d, 0xe21: 0x0215, 0xe22: 0x021e, 0xe23: 0x0221,
-	0xe24: 0x0224, 0xe25: 0x0227, 0xe26: 0x022a, 0xe27: 0x0230, 0xe28: 0x0233, 0xe29: 0x0017,
-	0xe2a: 0x442b, 0xe2b: 0x4431, 0xe2c: 0x452f, 0xe2d: 0x4537, 0xe2e: 0x4383, 0xe2f: 0x4389,
-	0xe30: 0x438f, 0xe31: 0x4395, 0xe32: 0x43a1, 0xe33: 0x43a7, 0xe34: 0x43ad, 0xe35: 0x43b9,
-	0xe36: 0x43bf, 0xe38: 0x43c5, 0xe39: 0x43d1, 0xe3a: 0x43d7, 0xe3b: 0x43dd,
-	0xe3c: 0x43e9, 0xe3e: 0x43ef,
+	0xe00: 0x136b, 0xe01: 0x13a7, 0xe02: 0x13e3, 0xe03: 0x1413, 0xe04: 0x1447, 0xe05: 0x1467,
+	0xe06: 0x14b3, 0xe07: 0x14d7, 0xe08: 0x14f7, 0xe09: 0x150b, 0xe0a: 0x151b, 0xe0b: 0x1527,
+	0xe0c: 0x1533, 0xe0d: 0x1587, 0xe0e: 0x1627, 0xe0f: 0x16b1, 0xe10: 0x16ac, 0xe11: 0x16de,
+	0xe12: 0x0607, 0xe13: 0x062f, 0xe14: 0x0633, 0xe15: 0x1760, 0xe16: 0x178d, 0xe17: 0x1805,
+	0xe18: 0x1613, 0xe19: 0x1623,
 	// Block 0x39, offset 0xe40
-	0xe40: 0x43f5, 0xe41: 0x43fb, 0xe43: 0x4401, 0xe44: 0x4407,
-	0xe46: 0x4413, 0xe47: 0x4419, 0xe48: 0x441f, 0xe49: 0x4425, 0xe4a: 0x4437, 0xe4b: 0x43b3,
-	0xe4c: 0x439b, 0xe4d: 0x43e3, 0xe4e: 0x440d, 0xe4f: 0x1f12, 0xe50: 0x0299, 0xe51: 0x0299,
-	0xe52: 0x02a2, 0xe53: 0x02a2, 0xe54: 0x02a2, 0xe55: 0x02a2, 0xe56: 0x02a5, 0xe57: 0x02a5,
-	0xe58: 0x02a5, 0xe59: 0x02a5, 0xe5a: 0x02ab, 0xe5b: 0x02ab, 0xe5c: 0x02ab, 0xe5d: 0x02ab,
-	0xe5e: 0x029f, 0xe5f: 0x029f, 0xe60: 0x029f, 0xe61: 0x029f, 0xe62: 0x02a8, 0xe63: 0x02a8,
-	0xe64: 0x02a8, 0xe65: 0x02a8, 0xe66: 0x029c, 0xe67: 0x029c, 0xe68: 0x029c, 0xe69: 0x029c,
-	0xe6a: 0x02cf, 0xe6b: 0x02cf, 0xe6c: 0x02cf, 0xe6d: 0x02cf, 0xe6e: 0x02d2, 0xe6f: 0x02d2,
-	0xe70: 0x02d2, 0xe71: 0x02d2, 0xe72: 0x02b1, 0xe73: 0x02b1, 0xe74: 0x02b1, 0xe75: 0x02b1,
-	0xe76: 0x02ae, 0xe77: 0x02ae, 0xe78: 0x02ae, 0xe79: 0x02ae, 0xe7a: 0x02b4, 0xe7b: 0x02b4,
-	0xe7c: 0x02b4, 0xe7d: 0x02b4, 0xe7e: 0x02b7, 0xe7f: 0x02b7,
+	0xe40: 0x19d1, 0xe41: 0x19d4, 0xe42: 0x19d7, 0xe43: 0x1c04, 0xe44: 0x1c08, 0xe45: 0x1a5b,
+	0xe46: 0x1a5b,
+	0xe53: 0x1d71, 0xe54: 0x1d62, 0xe55: 0x1d67, 0xe56: 0x1d76, 0xe57: 0x1d6c,
+	0xe5d: 0x4422,
+	0xe5e: 0x8115, 0xe5f: 0x4494, 0xe60: 0x022d, 0xe61: 0x0215, 0xe62: 0x021e, 0xe63: 0x0221,
+	0xe64: 0x0224, 0xe65: 0x0227, 0xe66: 0x022a, 0xe67: 0x0230, 0xe68: 0x0233, 0xe69: 0x0017,
+	0xe6a: 0x4482, 0xe6b: 0x4488, 0xe6c: 0x4586, 0xe6d: 0x458e, 0xe6e: 0x43da, 0xe6f: 0x43e0,
+	0xe70: 0x43e6, 0xe71: 0x43ec, 0xe72: 0x43f8, 0xe73: 0x43fe, 0xe74: 0x4404, 0xe75: 0x4410,
+	0xe76: 0x4416, 0xe78: 0x441c, 0xe79: 0x4428, 0xe7a: 0x442e, 0xe7b: 0x4434,
+	0xe7c: 0x4440, 0xe7e: 0x4446,
 	// Block 0x3a, offset 0xe80
-	0xe80: 0x02b7, 0xe81: 0x02b7, 0xe82: 0x02c0, 0xe83: 0x02c0, 0xe84: 0x02bd, 0xe85: 0x02bd,
-	0xe86: 0x02c3, 0xe87: 0x02c3, 0xe88: 0x02ba, 0xe89: 0x02ba, 0xe8a: 0x02c9, 0xe8b: 0x02c9,
-	0xe8c: 0x02c6, 0xe8d: 0x02c6, 0xe8e: 0x02d5, 0xe8f: 0x02d5, 0xe90: 0x02d5, 0xe91: 0x02d5,
-	0xe92: 0x02db, 0xe93: 0x02db, 0xe94: 0x02db, 0xe95: 0x02db, 0xe96: 0x02e1, 0xe97: 0x02e1,
-	0xe98: 0x02e1, 0xe99: 0x02e1, 0xe9a: 0x02de, 0xe9b: 0x02de, 0xe9c: 0x02de, 0xe9d: 0x02de,
-	0xe9e: 0x02e4, 0xe9f: 0x02e4, 0xea0: 0x02e7, 0xea1: 0x02e7, 0xea2: 0x02e7, 0xea3: 0x02e7,
-	0xea4: 0x44a9, 0xea5: 0x44a9, 0xea6: 0x02ed, 0xea7: 0x02ed, 0xea8: 0x02ed, 0xea9: 0x02ed,
-	0xeaa: 0x02ea, 0xeab: 0x02ea, 0xeac: 0x02ea, 0xead: 0x02ea, 0xeae: 0x0308, 0xeaf: 0x0308,
-	0xeb0: 0x44a3, 0xeb1: 0x44a3,
+	0xe80: 0x444c, 0xe81: 0x4452, 0xe83: 0x4458, 0xe84: 0x445e,
+	0xe86: 0x446a, 0xe87: 0x4470, 0xe88: 0x4476, 0xe89: 0x447c, 0xe8a: 0x448e, 0xe8b: 0x440a,
+	0xe8c: 0x43f2, 0xe8d: 0x443a, 0xe8e: 0x4464, 0xe8f: 0x1d7b, 0xe90: 0x0299, 0xe91: 0x0299,
+	0xe92: 0x02a2, 0xe93: 0x02a2, 0xe94: 0x02a2, 0xe95: 0x02a2, 0xe96: 0x02a5, 0xe97: 0x02a5,
+	0xe98: 0x02a5, 0xe99: 0x02a5, 0xe9a: 0x02ab, 0xe9b: 0x02ab, 0xe9c: 0x02ab, 0xe9d: 0x02ab,
+	0xe9e: 0x029f, 0xe9f: 0x029f, 0xea0: 0x029f, 0xea1: 0x029f, 0xea2: 0x02a8, 0xea3: 0x02a8,
+	0xea4: 0x02a8, 0xea5: 0x02a8, 0xea6: 0x029c, 0xea7: 0x029c, 0xea8: 0x029c, 0xea9: 0x029c,
+	0xeaa: 0x02cf, 0xeab: 0x02cf, 0xeac: 0x02cf, 0xead: 0x02cf, 0xeae: 0x02d2, 0xeaf: 0x02d2,
+	0xeb0: 0x02d2, 0xeb1: 0x02d2, 0xeb2: 0x02b1, 0xeb3: 0x02b1, 0xeb4: 0x02b1, 0xeb5: 0x02b1,
+	0xeb6: 0x02ae, 0xeb7: 0x02ae, 0xeb8: 0x02ae, 0xeb9: 0x02ae, 0xeba: 0x02b4, 0xebb: 0x02b4,
+	0xebc: 0x02b4, 0xebd: 0x02b4, 0xebe: 0x02b7, 0xebf: 0x02b7,
 	// Block 0x3b, offset 0xec0
-	0xed3: 0x02d8, 0xed4: 0x02d8, 0xed5: 0x02d8, 0xed6: 0x02d8, 0xed7: 0x02f6,
-	0xed8: 0x02f6, 0xed9: 0x02f3, 0xeda: 0x02f3, 0xedb: 0x02f9, 0xedc: 0x02f9, 0xedd: 0x21e2,
-	0xede: 0x02ff, 0xedf: 0x02ff, 0xee0: 0x02f0, 0xee1: 0x02f0, 0xee2: 0x02fc, 0xee3: 0x02fc,
-	0xee4: 0x0305, 0xee5: 0x0305, 0xee6: 0x0305, 0xee7: 0x0305, 0xee8: 0x028d, 0xee9: 0x028d,
-	0xeea: 0x273d, 0xeeb: 0x273d, 0xeec: 0x27ad, 0xeed: 0x27ad, 0xeee: 0x277c, 0xeef: 0x277c,
-	0xef0: 0x2798, 0xef1: 0x2798, 0xef2: 0x2791, 0xef3: 0x2791, 0xef4: 0x279f, 0xef5: 0x279f,
-	0xef6: 0x27a6, 0xef7: 0x27a6, 0xef8: 0x27a6, 0xef9: 0x2783, 0xefa: 0x2783, 0xefb: 0x2783,
-	0xefc: 0x0302, 0xefd: 0x0302, 0xefe: 0x0302, 0xeff: 0x0302,
+	0xec0: 0x02b7, 0xec1: 0x02b7, 0xec2: 0x02c0, 0xec3: 0x02c0, 0xec4: 0x02bd, 0xec5: 0x02bd,
+	0xec6: 0x02c3, 0xec7: 0x02c3, 0xec8: 0x02ba, 0xec9: 0x02ba, 0xeca: 0x02c9, 0xecb: 0x02c9,
+	0xecc: 0x02c6, 0xecd: 0x02c6, 0xece: 0x02d5, 0xecf: 0x02d5, 0xed0: 0x02d5, 0xed1: 0x02d5,
+	0xed2: 0x02db, 0xed3: 0x02db, 0xed4: 0x02db, 0xed5: 0x02db, 0xed6: 0x02e1, 0xed7: 0x02e1,
+	0xed8: 0x02e1, 0xed9: 0x02e1, 0xeda: 0x02de, 0xedb: 0x02de, 0xedc: 0x02de, 0xedd: 0x02de,
+	0xede: 0x02e4, 0xedf: 0x02e4, 0xee0: 0x02e7, 0xee1: 0x02e7, 0xee2: 0x02e7, 0xee3: 0x02e7,
+	0xee4: 0x4500, 0xee5: 0x4500, 0xee6: 0x02ed, 0xee7: 0x02ed, 0xee8: 0x02ed, 0xee9: 0x02ed,
+	0xeea: 0x02ea, 0xeeb: 0x02ea, 0xeec: 0x02ea, 0xeed: 0x02ea, 0xeee: 0x0308, 0xeef: 0x0308,
+	0xef0: 0x44fa, 0xef1: 0x44fa,
 	// Block 0x3c, offset 0xf00
-	0xf00: 0x2744, 0xf01: 0x274b, 0xf02: 0x2767, 0xf03: 0x2783, 0xf04: 0x278a, 0xf05: 0x1f1c,
-	0xf06: 0x1f21, 0xf07: 0x1f26, 0xf08: 0x1f35, 0xf09: 0x1f44, 0xf0a: 0x1f49, 0xf0b: 0x1f4e,
-	0xf0c: 0x1f53, 0xf0d: 0x1f58, 0xf0e: 0x1f67, 0xf0f: 0x1f76, 0xf10: 0x1f7b, 0xf11: 0x1f80,
-	0xf12: 0x1f8f, 0xf13: 0x1f9e, 0xf14: 0x1fa3, 0xf15: 0x1fa8, 0xf16: 0x1fad, 0xf17: 0x1fbc,
-	0xf18: 0x1fc1, 0xf19: 0x1fd0, 0xf1a: 0x1fd5, 0xf1b: 0x1fda, 0xf1c: 0x1fe9, 0xf1d: 0x1fee,
-	0xf1e: 0x1ff3, 0xf1f: 0x1ffd, 0xf20: 0x2039, 0xf21: 0x2048, 0xf22: 0x2057, 0xf23: 0x205c,
-	0xf24: 0x2061, 0xf25: 0x206b, 0xf26: 0x207a, 0xf27: 0x207f, 0xf28: 0x208e, 0xf29: 0x2093,
-	0xf2a: 0x2098, 0xf2b: 0x20a7, 0xf2c: 0x20ac, 0xf2d: 0x20bb, 0xf2e: 0x20c0, 0xf2f: 0x20c5,
-	0xf30: 0x20ca, 0xf31: 0x20cf, 0xf32: 0x20d4, 0xf33: 0x20d9, 0xf34: 0x20de, 0xf35: 0x20e3,
-	0xf36: 0x20e8, 0xf37: 0x20ed, 0xf38: 0x20f2, 0xf39: 0x20f7, 0xf3a: 0x20fc, 0xf3b: 0x2101,
-	0xf3c: 0x2106, 0xf3d: 0x210b, 0xf3e: 0x2110, 0xf3f: 0x211a,
+	0xf13: 0x02d8, 0xf14: 0x02d8, 0xf15: 0x02d8, 0xf16: 0x02d8, 0xf17: 0x02f6,
+	0xf18: 0x02f6, 0xf19: 0x02f3, 0xf1a: 0x02f3, 0xf1b: 0x02f9, 0xf1c: 0x02f9, 0xf1d: 0x204b,
+	0xf1e: 0x02ff, 0xf1f: 0x02ff, 0xf20: 0x02f0, 0xf21: 0x02f0, 0xf22: 0x02fc, 0xf23: 0x02fc,
+	0xf24: 0x0305, 0xf25: 0x0305, 0xf26: 0x0305, 0xf27: 0x0305, 0xf28: 0x028d, 0xf29: 0x028d,
+	0xf2a: 0x25a6, 0xf2b: 0x25a6, 0xf2c: 0x2616, 0xf2d: 0x2616, 0xf2e: 0x25e5, 0xf2f: 0x25e5,
+	0xf30: 0x2601, 0xf31: 0x2601, 0xf32: 0x25fa, 0xf33: 0x25fa, 0xf34: 0x2608, 0xf35: 0x2608,
+	0xf36: 0x260f, 0xf37: 0x260f, 0xf38: 0x260f, 0xf39: 0x25ec, 0xf3a: 0x25ec, 0xf3b: 0x25ec,
+	0xf3c: 0x0302, 0xf3d: 0x0302, 0xf3e: 0x0302, 0xf3f: 0x0302,
 	// Block 0x3d, offset 0xf40
-	0xf40: 0x211f, 0xf41: 0x2124, 0xf42: 0x2129, 0xf43: 0x2133, 0xf44: 0x2138, 0xf45: 0x2142,
-	0xf46: 0x2147, 0xf47: 0x214c, 0xf48: 0x2151, 0xf49: 0x2156, 0xf4a: 0x215b, 0xf4b: 0x2160,
-	0xf4c: 0x2165, 0xf4d: 0x216a, 0xf4e: 0x2179, 0xf4f: 0x2188, 0xf50: 0x218d, 0xf51: 0x2192,
-	0xf52: 0x2197, 0xf53: 0x219c, 0xf54: 0x21a1, 0xf55: 0x21ab, 0xf56: 0x21b0, 0xf57: 0x21b5,
-	0xf58: 0x21c4, 0xf59: 0x21d3, 0xf5a: 0x21d8, 0xf5b: 0x445b, 0xf5c: 0x4461, 0xf5d: 0x4497,
-	0xf5e: 0x44ee, 0xf5f: 0x44f5, 0xf60: 0x44fc, 0xf61: 0x4503, 0xf62: 0x450a, 0xf63: 0x4511,
-	0xf64: 0x2759, 0xf65: 0x2760, 0xf66: 0x2767, 0xf67: 0x276e, 0xf68: 0x2783, 0xf69: 0x278a,
-	0xf6a: 0x1f2b, 0xf6b: 0x1f30, 0xf6c: 0x1f35, 0xf6d: 0x1f3a, 0xf6e: 0x1f44, 0xf6f: 0x1f49,
-	0xf70: 0x1f5d, 0xf71: 0x1f62, 0xf72: 0x1f67, 0xf73: 0x1f6c, 0xf74: 0x1f76, 0xf75: 0x1f7b,
-	0xf76: 0x1f85, 0xf77: 0x1f8a, 0xf78: 0x1f8f, 0xf79: 0x1f94, 0xf7a: 0x1f9e, 0xf7b: 0x1fa3,
-	0xf7c: 0x20cf, 0xf7d: 0x20d4, 0xf7e: 0x20e3, 0xf7f: 0x20e8,
+	0xf40: 0x25ad, 0xf41: 0x25b4, 0xf42: 0x25d0, 0xf43: 0x25ec, 0xf44: 0x25f3, 0xf45: 0x1d85,
+	0xf46: 0x1d8a, 0xf47: 0x1d8f, 0xf48: 0x1d9e, 0xf49: 0x1dad, 0xf4a: 0x1db2, 0xf4b: 0x1db7,
+	0xf4c: 0x1dbc, 0xf4d: 0x1dc1, 0xf4e: 0x1dd0, 0xf4f: 0x1ddf, 0xf50: 0x1de4, 0xf51: 0x1de9,
+	0xf52: 0x1df8, 0xf53: 0x1e07, 0xf54: 0x1e0c, 0xf55: 0x1e11, 0xf56: 0x1e16, 0xf57: 0x1e25,
+	0xf58: 0x1e2a, 0xf59: 0x1e39, 0xf5a: 0x1e3e, 0xf5b: 0x1e43, 0xf5c: 0x1e52, 0xf5d: 0x1e57,
+	0xf5e: 0x1e5c, 0xf5f: 0x1e66, 0xf60: 0x1ea2, 0xf61: 0x1eb1, 0xf62: 0x1ec0, 0xf63: 0x1ec5,
+	0xf64: 0x1eca, 0xf65: 0x1ed4, 0xf66: 0x1ee3, 0xf67: 0x1ee8, 0xf68: 0x1ef7, 0xf69: 0x1efc,
+	0xf6a: 0x1f01, 0xf6b: 0x1f10, 0xf6c: 0x1f15, 0xf6d: 0x1f24, 0xf6e: 0x1f29, 0xf6f: 0x1f2e,
+	0xf70: 0x1f33, 0xf71: 0x1f38, 0xf72: 0x1f3d, 0xf73: 0x1f42, 0xf74: 0x1f47, 0xf75: 0x1f4c,
+	0xf76: 0x1f51, 0xf77: 0x1f56, 0xf78: 0x1f5b, 0xf79: 0x1f60, 0xf7a: 0x1f65, 0xf7b: 0x1f6a,
+	0xf7c: 0x1f6f, 0xf7d: 0x1f74, 0xf7e: 0x1f79, 0xf7f: 0x1f83,
 	// Block 0x3e, offset 0xf80
-	0xf80: 0x20ed, 0xf81: 0x2101, 0xf82: 0x2106, 0xf83: 0x210b, 0xf84: 0x2110, 0xf85: 0x2129,
-	0xf86: 0x2133, 0xf87: 0x2138, 0xf88: 0x213d, 0xf89: 0x2151, 0xf8a: 0x216f, 0xf8b: 0x2174,
-	0xf8c: 0x2179, 0xf8d: 0x217e, 0xf8e: 0x2188, 0xf8f: 0x218d, 0xf90: 0x4497, 0xf91: 0x21ba,
-	0xf92: 0x21bf, 0xf93: 0x21c4, 0xf94: 0x21c9, 0xf95: 0x21d3, 0xf96: 0x21d8, 0xf97: 0x2744,
-	0xf98: 0x274b, 0xf99: 0x2752, 0xf9a: 0x2767, 0xf9b: 0x2775, 0xf9c: 0x1f1c, 0xf9d: 0x1f21,
-	0xf9e: 0x1f26, 0xf9f: 0x1f35, 0xfa0: 0x1f3f, 0xfa1: 0x1f4e, 0xfa2: 0x1f53, 0xfa3: 0x1f58,
-	0xfa4: 0x1f67, 0xfa5: 0x1f71, 0xfa6: 0x1f8f, 0xfa7: 0x1fa8, 0xfa8: 0x1fad, 0xfa9: 0x1fbc,
-	0xfaa: 0x1fc1, 0xfab: 0x1fd0, 0xfac: 0x1fda, 0xfad: 0x1fe9, 0xfae: 0x1fee, 0xfaf: 0x1ff3,
-	0xfb0: 0x1ffd, 0xfb1: 0x2039, 0xfb2: 0x203e, 0xfb3: 0x2048, 0xfb4: 0x2057, 0xfb5: 0x205c,
-	0xfb6: 0x2061, 0xfb7: 0x206b, 0xfb8: 0x207a, 0xfb9: 0x208e, 0xfba: 0x2093, 0xfbb: 0x2098,
-	0xfbc: 0x20a7, 0xfbd: 0x20ac, 0xfbe: 0x20bb, 0xfbf: 0x20c0,
+	0xf80: 0x1f88, 0xf81: 0x1f8d, 0xf82: 0x1f92, 0xf83: 0x1f9c, 0xf84: 0x1fa1, 0xf85: 0x1fab,
+	0xf86: 0x1fb0, 0xf87: 0x1fb5, 0xf88: 0x1fba, 0xf89: 0x1fbf, 0xf8a: 0x1fc4, 0xf8b: 0x1fc9,
+	0xf8c: 0x1fce, 0xf8d: 0x1fd3, 0xf8e: 0x1fe2, 0xf8f: 0x1ff1, 0xf90: 0x1ff6, 0xf91: 0x1ffb,
+	0xf92: 0x2000, 0xf93: 0x2005, 0xf94: 0x200a, 0xf95: 0x2014, 0xf96: 0x2019, 0xf97: 0x201e,
+	0xf98: 0x202d, 0xf99: 0x203c, 0xf9a: 0x2041, 0xf9b: 0x44b2, 0xf9c: 0x44b8, 0xf9d: 0x44ee,
+	0xf9e: 0x4545, 0xf9f: 0x454c, 0xfa0: 0x4553, 0xfa1: 0x455a, 0xfa2: 0x4561, 0xfa3: 0x4568,
+	0xfa4: 0x25c2, 0xfa5: 0x25c9, 0xfa6: 0x25d0, 0xfa7: 0x25d7, 0xfa8: 0x25ec, 0xfa9: 0x25f3,
+	0xfaa: 0x1d94, 0xfab: 0x1d99, 0xfac: 0x1d9e, 0xfad: 0x1da3, 0xfae: 0x1dad, 0xfaf: 0x1db2,
+	0xfb0: 0x1dc6, 0xfb1: 0x1dcb, 0xfb2: 0x1dd0, 0xfb3: 0x1dd5, 0xfb4: 0x1ddf, 0xfb5: 0x1de4,
+	0xfb6: 0x1dee, 0xfb7: 0x1df3, 0xfb8: 0x1df8, 0xfb9: 0x1dfd, 0xfba: 0x1e07, 0xfbb: 0x1e0c,
+	0xfbc: 0x1f38, 0xfbd: 0x1f3d, 0xfbe: 0x1f4c, 0xfbf: 0x1f51,
 	// Block 0x3f, offset 0xfc0
-	0xfc0: 0x20c5, 0xfc1: 0x20ca, 0xfc2: 0x20d9, 0xfc3: 0x20de, 0xfc4: 0x20f2, 0xfc5: 0x20f7,
-	0xfc6: 0x20fc, 0xfc7: 0x2101, 0xfc8: 0x2106, 0xfc9: 0x211a, 0xfca: 0x211f, 0xfcb: 0x2124,
-	0xfcc: 0x2129, 0xfcd: 0x212e, 0xfce: 0x2142, 0xfcf: 0x2147, 0xfd0: 0x214c, 0xfd1: 0x2151,
-	0xfd2: 0x2160, 0xfd3: 0x2165, 0xfd4: 0x216a, 0xfd5: 0x2179, 0xfd6: 0x2183, 0xfd7: 0x2192,
-	0xfd8: 0x2197, 0xfd9: 0x448b, 0xfda: 0x21ab, 0xfdb: 0x21b0, 0xfdc: 0x21b5, 0xfdd: 0x21c4,
-	0xfde: 0x21ce, 0xfdf: 0x2767, 0xfe0: 0x2775, 0xfe1: 0x1f35, 0xfe2: 0x1f3f, 0xfe3: 0x1f67,
-	0xfe4: 0x1f71, 0xfe5: 0x1f8f, 0xfe6: 0x1f99, 0xfe7: 0x1ffd, 0xfe8: 0x2002, 0xfe9: 0x2025,
-	0xfea: 0x202a, 0xfeb: 0x2101, 0xfec: 0x2106, 0xfed: 0x2129, 0xfee: 0x2179, 0xfef: 0x2183,
-	0xff0: 0x21c4, 0xff1: 0x21ce, 0xff2: 0x453f, 0xff3: 0x4547, 0xff4: 0x454f, 0xff5: 0x2084,
-	0xff6: 0x2089, 0xff7: 0x209d, 0xff8: 0x20a2, 0xff9: 0x20b1, 0xffa: 0x20b6, 0xffb: 0x2007,
-	0xffc: 0x200c, 0xffd: 0x202f, 0xffe: 0x2034, 0xfff: 0x1fc6,
+	0xfc0: 0x1f56, 0xfc1: 0x1f6a, 0xfc2: 0x1f6f, 0xfc3: 0x1f74, 0xfc4: 0x1f79, 0xfc5: 0x1f92,
+	0xfc6: 0x1f9c, 0xfc7: 0x1fa1, 0xfc8: 0x1fa6, 0xfc9: 0x1fba, 0xfca: 0x1fd8, 0xfcb: 0x1fdd,
+	0xfcc: 0x1fe2, 0xfcd: 0x1fe7, 0xfce: 0x1ff1, 0xfcf: 0x1ff6, 0xfd0: 0x44ee, 0xfd1: 0x2023,
+	0xfd2: 0x2028, 0xfd3: 0x202d, 0xfd4: 0x2032, 0xfd5: 0x203c, 0xfd6: 0x2041, 0xfd7: 0x25ad,
+	0xfd8: 0x25b4, 0xfd9: 0x25bb, 0xfda: 0x25d0, 0xfdb: 0x25de, 0xfdc: 0x1d85, 0xfdd: 0x1d8a,
+	0xfde: 0x1d8f, 0xfdf: 0x1d9e, 0xfe0: 0x1da8, 0xfe1: 0x1db7, 0xfe2: 0x1dbc, 0xfe3: 0x1dc1,
+	0xfe4: 0x1dd0, 0xfe5: 0x1dda, 0xfe6: 0x1df8, 0xfe7: 0x1e11, 0xfe8: 0x1e16, 0xfe9: 0x1e25,
+	0xfea: 0x1e2a, 0xfeb: 0x1e39, 0xfec: 0x1e43, 0xfed: 0x1e52, 0xfee: 0x1e57, 0xfef: 0x1e5c,
+	0xff0: 0x1e66, 0xff1: 0x1ea2, 0xff2: 0x1ea7, 0xff3: 0x1eb1, 0xff4: 0x1ec0, 0xff5: 0x1ec5,
+	0xff6: 0x1eca, 0xff7: 0x1ed4, 0xff8: 0x1ee3, 0xff9: 0x1ef7, 0xffa: 0x1efc, 0xffb: 0x1f01,
+	0xffc: 0x1f10, 0xffd: 0x1f15, 0xffe: 0x1f24, 0xfff: 0x1f29,
 	// Block 0x40, offset 0x1000
-	0x1000: 0x1fcb, 0x1001: 0x1fb2, 0x1002: 0x1fb7, 0x1003: 0x1fdf, 0x1004: 0x1fe4, 0x1005: 0x204d,
-	0x1006: 0x2052, 0x1007: 0x2070, 0x1008: 0x2075, 0x1009: 0x2011, 0x100a: 0x2016, 0x100b: 0x201b,
-	0x100c: 0x2025, 0x100d: 0x2020, 0x100e: 0x1ff8, 0x100f: 0x2043, 0x1010: 0x2066, 0x1011: 0x2084,
-	0x1012: 0x2089, 0x1013: 0x209d, 0x1014: 0x20a2, 0x1015: 0x20b1, 0x1016: 0x20b6, 0x1017: 0x2007,
-	0x1018: 0x200c, 0x1019: 0x202f, 0x101a: 0x2034, 0x101b: 0x1fc6, 0x101c: 0x1fcb, 0x101d: 0x1fb2,
-	0x101e: 0x1fb7, 0x101f: 0x1fdf, 0x1020: 0x1fe4, 0x1021: 0x204d, 0x1022: 0x2052, 0x1023: 0x2070,
-	0x1024: 0x2075, 0x1025: 0x2011, 0x1026: 0x2016, 0x1027: 0x201b, 0x1028: 0x2025, 0x1029: 0x2020,
-	0x102a: 0x1ff8, 0x102b: 0x2043, 0x102c: 0x2066, 0x102d: 0x2011, 0x102e: 0x2016, 0x102f: 0x201b,
-	0x1030: 0x2025, 0x1031: 0x2002, 0x1032: 0x202a, 0x1033: 0x207f, 0x1034: 0x1fe9, 0x1035: 0x1fee,
-	0x1036: 0x1ff3, 0x1037: 0x2011, 0x1038: 0x2016, 0x1039: 0x201b, 0x103a: 0x207f, 0x103b: 0x208e,
-	0x103c: 0x4443, 0x103d: 0x4443,
+	0x1000: 0x1f2e, 0x1001: 0x1f33, 0x1002: 0x1f42, 0x1003: 0x1f47, 0x1004: 0x1f5b, 0x1005: 0x1f60,
+	0x1006: 0x1f65, 0x1007: 0x1f6a, 0x1008: 0x1f6f, 0x1009: 0x1f83, 0x100a: 0x1f88, 0x100b: 0x1f8d,
+	0x100c: 0x1f92, 0x100d: 0x1f97, 0x100e: 0x1fab, 0x100f: 0x1fb0, 0x1010: 0x1fb5, 0x1011: 0x1fba,
+	0x1012: 0x1fc9, 0x1013: 0x1fce, 0x1014: 0x1fd3, 0x1015: 0x1fe2, 0x1016: 0x1fec, 0x1017: 0x1ffb,
+	0x1018: 0x2000, 0x1019: 0x44e2, 0x101a: 0x2014, 0x101b: 0x2019, 0x101c: 0x201e, 0x101d: 0x202d,
+	0x101e: 0x2037, 0x101f: 0x25d0, 0x1020: 0x25de, 0x1021: 0x1d9e, 0x1022: 0x1da8, 0x1023: 0x1dd0,
+	0x1024: 0x1dda, 0x1025: 0x1df8, 0x1026: 0x1e02, 0x1027: 0x1e66, 0x1028: 0x1e6b, 0x1029: 0x1e8e,
+	0x102a: 0x1e93, 0x102b: 0x1f6a, 0x102c: 0x1f6f, 0x102d: 0x1f92, 0x102e: 0x1fe2, 0x102f: 0x1fec,
+	0x1030: 0x202d, 0x1031: 0x2037, 0x1032: 0x4596, 0x1033: 0x459e, 0x1034: 0x45a6, 0x1035: 0x1eed,
+	0x1036: 0x1ef2, 0x1037: 0x1f06, 0x1038: 0x1f0b, 0x1039: 0x1f1a, 0x103a: 0x1f1f, 0x103b: 0x1e70,
+	0x103c: 0x1e75, 0x103d: 0x1e98, 0x103e: 0x1e9d, 0x103f: 0x1e2f,
 	// Block 0x41, offset 0x1040
-	0x1050: 0x24a4, 0x1051: 0x24b9,
-	0x1052: 0x24b9, 0x1053: 0x24c0, 0x1054: 0x24c7, 0x1055: 0x24dc, 0x1056: 0x24e3, 0x1057: 0x24ea,
-	0x1058: 0x250d, 0x1059: 0x250d, 0x105a: 0x2530, 0x105b: 0x2529, 0x105c: 0x2545, 0x105d: 0x2537,
-	0x105e: 0x253e, 0x105f: 0x2561, 0x1060: 0x2561, 0x1061: 0x255a, 0x1062: 0x2568, 0x1063: 0x2568,
-	0x1064: 0x2592, 0x1065: 0x2592, 0x1066: 0x25ae, 0x1067: 0x2576, 0x1068: 0x2576, 0x1069: 0x256f,
-	0x106a: 0x2584, 0x106b: 0x2584, 0x106c: 0x258b, 0x106d: 0x258b, 0x106e: 0x25b5, 0x106f: 0x25c3,
-	0x1070: 0x25c3, 0x1071: 0x25ca, 0x1072: 0x25ca, 0x1073: 0x25d1, 0x1074: 0x25d8, 0x1075: 0x25df,
-	0x1076: 0x25e6, 0x1077: 0x25e6, 0x1078: 0x25ed, 0x1079: 0x25fb, 0x107a: 0x2609, 0x107b: 0x2602,
-	0x107c: 0x2610, 0x107d: 0x2610, 0x107e: 0x2625, 0x107f: 0x262c,
+	0x1040: 0x1e34, 0x1041: 0x1e1b, 0x1042: 0x1e20, 0x1043: 0x1e48, 0x1044: 0x1e4d, 0x1045: 0x1eb6,
+	0x1046: 0x1ebb, 0x1047: 0x1ed9, 0x1048: 0x1ede, 0x1049: 0x1e7a, 0x104a: 0x1e7f, 0x104b: 0x1e84,
+	0x104c: 0x1e8e, 0x104d: 0x1e89, 0x104e: 0x1e61, 0x104f: 0x1eac, 0x1050: 0x1ecf, 0x1051: 0x1eed,
+	0x1052: 0x1ef2, 0x1053: 0x1f06, 0x1054: 0x1f0b, 0x1055: 0x1f1a, 0x1056: 0x1f1f, 0x1057: 0x1e70,
+	0x1058: 0x1e75, 0x1059: 0x1e98, 0x105a: 0x1e9d, 0x105b: 0x1e2f, 0x105c: 0x1e34, 0x105d: 0x1e1b,
+	0x105e: 0x1e20, 0x105f: 0x1e48, 0x1060: 0x1e4d, 0x1061: 0x1eb6, 0x1062: 0x1ebb, 0x1063: 0x1ed9,
+	0x1064: 0x1ede, 0x1065: 0x1e7a, 0x1066: 0x1e7f, 0x1067: 0x1e84, 0x1068: 0x1e8e, 0x1069: 0x1e89,
+	0x106a: 0x1e61, 0x106b: 0x1eac, 0x106c: 0x1ecf, 0x106d: 0x1e7a, 0x106e: 0x1e7f, 0x106f: 0x1e84,
+	0x1070: 0x1e8e, 0x1071: 0x1e6b, 0x1072: 0x1e93, 0x1073: 0x1ee8, 0x1074: 0x1e52, 0x1075: 0x1e57,
+	0x1076: 0x1e5c, 0x1077: 0x1e7a, 0x1078: 0x1e7f, 0x1079: 0x1e84, 0x107a: 0x1ee8, 0x107b: 0x1ef7,
+	0x107c: 0x449a, 0x107d: 0x449a,
 	// Block 0x42, offset 0x1080
-	0x1080: 0x265d, 0x1081: 0x266b, 0x1082: 0x2664, 0x1083: 0x2648, 0x1084: 0x2648, 0x1085: 0x2672,
-	0x1086: 0x2672, 0x1087: 0x2679, 0x1088: 0x2679, 0x1089: 0x26a3, 0x108a: 0x26aa, 0x108b: 0x26b1,
-	0x108c: 0x2687, 0x108d: 0x2695, 0x108e: 0x26b8, 0x108f: 0x26bf,
-	0x1092: 0x268e, 0x1093: 0x2713, 0x1094: 0x271a, 0x1095: 0x26f0, 0x1096: 0x26f7, 0x1097: 0x26db,
-	0x1098: 0x26db, 0x1099: 0x26e2, 0x109a: 0x270c, 0x109b: 0x2705, 0x109c: 0x272f, 0x109d: 0x272f,
-	0x109e: 0x249d, 0x109f: 0x24b2, 0x10a0: 0x24ab, 0x10a1: 0x24d5, 0x10a2: 0x24ce, 0x10a3: 0x24f8,
-	0x10a4: 0x24f1, 0x10a5: 0x251b, 0x10a6: 0x24ff, 0x10a7: 0x2514, 0x10a8: 0x254c, 0x10a9: 0x2599,
-	0x10aa: 0x257d, 0x10ab: 0x25bc, 0x10ac: 0x2656, 0x10ad: 0x2680, 0x10ae: 0x2728, 0x10af: 0x2721,
-	0x10b0: 0x2736, 0x10b1: 0x26cd, 0x10b2: 0x2633, 0x10b3: 0x26fe, 0x10b4: 0x2625, 0x10b5: 0x265d,
-	0x10b6: 0x25f4, 0x10b7: 0x2641, 0x10b8: 0x26d4, 0x10b9: 0x26c6, 0x10ba: 0x264f, 0x10bb: 0x263a,
-	0x10bc: 0x264f, 0x10bd: 0x26d4, 0x10be: 0x2506, 0x10bf: 0x2522,
+	0x1090: 0x230d, 0x1091: 0x2322,
+	0x1092: 0x2322, 0x1093: 0x2329, 0x1094: 0x2330, 0x1095: 0x2345, 0x1096: 0x234c, 0x1097: 0x2353,
+	0x1098: 0x2376, 0x1099: 0x2376, 0x109a: 0x2399, 0x109b: 0x2392, 0x109c: 0x23ae, 0x109d: 0x23a0,
+	0x109e: 0x23a7, 0x109f: 0x23ca, 0x10a0: 0x23ca, 0x10a1: 0x23c3, 0x10a2: 0x23d1, 0x10a3: 0x23d1,
+	0x10a4: 0x23fb, 0x10a5: 0x23fb, 0x10a6: 0x2417, 0x10a7: 0x23df, 0x10a8: 0x23df, 0x10a9: 0x23d8,
+	0x10aa: 0x23ed, 0x10ab: 0x23ed, 0x10ac: 0x23f4, 0x10ad: 0x23f4, 0x10ae: 0x241e, 0x10af: 0x242c,
+	0x10b0: 0x242c, 0x10b1: 0x2433, 0x10b2: 0x2433, 0x10b3: 0x243a, 0x10b4: 0x2441, 0x10b5: 0x2448,
+	0x10b6: 0x244f, 0x10b7: 0x244f, 0x10b8: 0x2456, 0x10b9: 0x2464, 0x10ba: 0x2472, 0x10bb: 0x246b,
+	0x10bc: 0x2479, 0x10bd: 0x2479, 0x10be: 0x248e, 0x10bf: 0x2495,
 	// Block 0x43, offset 0x10c0
-	0x10c0: 0x269c, 0x10c1: 0x2617, 0x10c2: 0x2496, 0x10c3: 0x263a, 0x10c4: 0x25df, 0x10c5: 0x25ae,
-	0x10c6: 0x2553, 0x10c7: 0x26e9,
-	0x10f0: 0x25a7, 0x10f1: 0x261e, 0x10f2: 0x29bb, 0x10f3: 0x29b2, 0x10f4: 0x29e8, 0x10f5: 0x29d6,
-	0x10f6: 0x29c4, 0x10f7: 0x29df, 0x10f8: 0x29f1, 0x10f9: 0x25a0, 0x10fa: 0x2e95, 0x10fb: 0x2d05,
-	0x10fc: 0x29cd,
+	0x10c0: 0x24c6, 0x10c1: 0x24d4, 0x10c2: 0x24cd, 0x10c3: 0x24b1, 0x10c4: 0x24b1, 0x10c5: 0x24db,
+	0x10c6: 0x24db, 0x10c7: 0x24e2, 0x10c8: 0x24e2, 0x10c9: 0x250c, 0x10ca: 0x2513, 0x10cb: 0x251a,
+	0x10cc: 0x24f0, 0x10cd: 0x24fe, 0x10ce: 0x2521, 0x10cf: 0x2528,
+	0x10d2: 0x24f7, 0x10d3: 0x257c, 0x10d4: 0x2583, 0x10d5: 0x2559, 0x10d6: 0x2560, 0x10d7: 0x2544,
+	0x10d8: 0x2544, 0x10d9: 0x254b, 0x10da: 0x2575, 0x10db: 0x256e, 0x10dc: 0x2598, 0x10dd: 0x2598,
+	0x10de: 0x2306, 0x10df: 0x231b, 0x10e0: 0x2314, 0x10e1: 0x233e, 0x10e2: 0x2337, 0x10e3: 0x2361,
+	0x10e4: 0x235a, 0x10e5: 0x2384, 0x10e6: 0x2368, 0x10e7: 0x237d, 0x10e8: 0x23b5, 0x10e9: 0x2402,
+	0x10ea: 0x23e6, 0x10eb: 0x2425, 0x10ec: 0x24bf, 0x10ed: 0x24e9, 0x10ee: 0x2591, 0x10ef: 0x258a,
+	0x10f0: 0x259f, 0x10f1: 0x2536, 0x10f2: 0x249c, 0x10f3: 0x2567, 0x10f4: 0x248e, 0x10f5: 0x24c6,
+	0x10f6: 0x245d, 0x10f7: 0x24aa, 0x10f8: 0x253d, 0x10f9: 0x252f, 0x10fa: 0x24b8, 0x10fb: 0x24a3,
+	0x10fc: 0x24b8, 0x10fd: 0x253d, 0x10fe: 0x236f, 0x10ff: 0x238b,
 	// Block 0x44, offset 0x1100
-	0x1110: 0x0019, 0x1111: 0x04fb,
-	0x1112: 0x04ff, 0x1113: 0x0035, 0x1114: 0x0037, 0x1115: 0x0003, 0x1116: 0x003f, 0x1117: 0x0537,
-	0x1118: 0x053b, 0x1119: 0x1cef,
-	0x1120: 0x8132, 0x1121: 0x8132, 0x1122: 0x8132, 0x1123: 0x8132,
-	0x1124: 0x8132, 0x1125: 0x8132, 0x1126: 0x8132, 0x1127: 0x812d, 0x1128: 0x812d, 0x1129: 0x812d,
-	0x112a: 0x812d, 0x112b: 0x812d, 0x112c: 0x812d, 0x112d: 0x812d,
-	0x1130: 0x1a06, 0x1131: 0x04bb, 0x1132: 0x04b7, 0x1133: 0x007f, 0x1134: 0x007f, 0x1135: 0x0011,
-	0x1136: 0x0013, 0x1137: 0x00b7, 0x1138: 0x00bb, 0x1139: 0x052f, 0x113a: 0x0533, 0x113b: 0x0523,
-	0x113c: 0x0527, 0x113d: 0x050b, 0x113e: 0x050f, 0x113f: 0x0503,
+	0x1100: 0x2505, 0x1101: 0x2480, 0x1102: 0x22ff, 0x1103: 0x24a3, 0x1104: 0x2448, 0x1105: 0x2417,
+	0x1106: 0x23bc, 0x1107: 0x2552,
+	0x1130: 0x2410, 0x1131: 0x2487, 0x1132: 0x27bb, 0x1133: 0x27b2, 0x1134: 0x27e8, 0x1135: 0x27d6,
+	0x1136: 0x27c4, 0x1137: 0x27df, 0x1138: 0x27f1, 0x1139: 0x2409, 0x113a: 0x2c78, 0x113b: 0x2af8,
+	0x113c: 0x27cd,
 	// Block 0x45, offset 0x1140
-	0x1140: 0x0507, 0x1141: 0x0513, 0x1142: 0x0517, 0x1143: 0x051b, 0x1144: 0x051f,
-	0x1147: 0x0077, 0x1148: 0x007b, 0x1149: 0x42a4, 0x114a: 0x42a4, 0x114b: 0x42a4,
-	0x114c: 0x42a4, 0x114d: 0x007f, 0x114e: 0x007f, 0x114f: 0x007f, 0x1150: 0x0019, 0x1151: 0x04fb,
-	0x1152: 0x001d, 0x1154: 0x0037, 0x1155: 0x0035, 0x1156: 0x003f, 0x1157: 0x0003,
-	0x1158: 0x04bb, 0x1159: 0x0011, 0x115a: 0x0013, 0x115b: 0x00b7, 0x115c: 0x00bb, 0x115d: 0x052f,
-	0x115e: 0x0533, 0x115f: 0x0007, 0x1160: 0x000d, 0x1161: 0x0015, 0x1162: 0x0017, 0x1163: 0x001b,
-	0x1164: 0x0039, 0x1165: 0x003d, 0x1166: 0x003b, 0x1168: 0x0079, 0x1169: 0x0009,
-	0x116a: 0x000b, 0x116b: 0x0041,
-	0x1170: 0x42e5, 0x1171: 0x4467, 0x1172: 0x42ea, 0x1174: 0x42ef,
-	0x1176: 0x42f4, 0x1177: 0x446d, 0x1178: 0x42f9, 0x1179: 0x4473, 0x117a: 0x42fe, 0x117b: 0x4479,
-	0x117c: 0x4303, 0x117d: 0x447f, 0x117e: 0x4308, 0x117f: 0x4485,
+	0x1150: 0x0019, 0x1151: 0x0483,
+	0x1152: 0x0487, 0x1153: 0x0035, 0x1154: 0x0037, 0x1155: 0x0003, 0x1156: 0x003f, 0x1157: 0x04bf,
+	0x1158: 0x04c3, 0x1159: 0x1b58,
+	0x1160: 0x8132, 0x1161: 0x8132, 0x1162: 0x8132, 0x1163: 0x8132,
+	0x1164: 0x8132, 0x1165: 0x8132, 0x1166: 0x8132, 0x1167: 0x812d, 0x1168: 0x812d, 0x1169: 0x812d,
+	0x116a: 0x812d, 0x116b: 0x812d, 0x116c: 0x812d, 0x116d: 0x812d,
+	0x1170: 0x186f, 0x1171: 0x0443, 0x1172: 0x043f, 0x1173: 0x007f, 0x1174: 0x007f, 0x1175: 0x0011,
+	0x1176: 0x0013, 0x1177: 0x00b7, 0x1178: 0x00bb, 0x1179: 0x04b7, 0x117a: 0x04bb, 0x117b: 0x04ab,
+	0x117c: 0x04af, 0x117d: 0x0493, 0x117e: 0x0497, 0x117f: 0x048b,
 	// Block 0x46, offset 0x1180
-	0x1180: 0x0236, 0x1181: 0x4449, 0x1182: 0x4449, 0x1183: 0x444f, 0x1184: 0x444f, 0x1185: 0x4491,
-	0x1186: 0x4491, 0x1187: 0x4455, 0x1188: 0x4455, 0x1189: 0x449d, 0x118a: 0x449d, 0x118b: 0x449d,
-	0x118c: 0x449d, 0x118d: 0x0239, 0x118e: 0x0239, 0x118f: 0x023c, 0x1190: 0x023c, 0x1191: 0x023c,
-	0x1192: 0x023c, 0x1193: 0x023f, 0x1194: 0x023f, 0x1195: 0x0242, 0x1196: 0x0242, 0x1197: 0x0242,
-	0x1198: 0x0242, 0x1199: 0x0245, 0x119a: 0x0245, 0x119b: 0x0245, 0x119c: 0x0245, 0x119d: 0x0248,
-	0x119e: 0x0248, 0x119f: 0x0248, 0x11a0: 0x0248, 0x11a1: 0x024b, 0x11a2: 0x024b, 0x11a3: 0x024b,
-	0x11a4: 0x024b, 0x11a5: 0x024e, 0x11a6: 0x024e, 0x11a7: 0x024e, 0x11a8: 0x024e, 0x11a9: 0x0251,
-	0x11aa: 0x0251, 0x11ab: 0x0254, 0x11ac: 0x0254, 0x11ad: 0x0257, 0x11ae: 0x0257, 0x11af: 0x025a,
-	0x11b0: 0x025a, 0x11b1: 0x025d, 0x11b2: 0x025d, 0x11b3: 0x025d, 0x11b4: 0x025d, 0x11b5: 0x0260,
-	0x11b6: 0x0260, 0x11b7: 0x0260, 0x11b8: 0x0260, 0x11b9: 0x0263, 0x11ba: 0x0263, 0x11bb: 0x0263,
-	0x11bc: 0x0263, 0x11bd: 0x0266, 0x11be: 0x0266, 0x11bf: 0x0266,
+	0x1180: 0x048f, 0x1181: 0x049b, 0x1182: 0x049f, 0x1183: 0x04a3, 0x1184: 0x04a7,
+	0x1187: 0x0077, 0x1188: 0x007b, 0x1189: 0x4265, 0x118a: 0x4265, 0x118b: 0x4265,
+	0x118c: 0x4265, 0x118d: 0x007f, 0x118e: 0x007f, 0x118f: 0x007f, 0x1190: 0x0019, 0x1191: 0x0483,
+	0x1192: 0x001d, 0x1194: 0x0037, 0x1195: 0x0035, 0x1196: 0x003f, 0x1197: 0x0003,
+	0x1198: 0x0443, 0x1199: 0x0011, 0x119a: 0x0013, 0x119b: 0x00b7, 0x119c: 0x00bb, 0x119d: 0x04b7,
+	0x119e: 0x04bb, 0x119f: 0x0007, 0x11a0: 0x000d, 0x11a1: 0x0015, 0x11a2: 0x0017, 0x11a3: 0x001b,
+	0x11a4: 0x0039, 0x11a5: 0x003d, 0x11a6: 0x003b, 0x11a8: 0x0079, 0x11a9: 0x0009,
+	0x11aa: 0x000b, 0x11ab: 0x0041,
+	0x11b0: 0x42a6, 0x11b1: 0x44be, 0x11b2: 0x42ab, 0x11b4: 0x42b0,
+	0x11b6: 0x42b5, 0x11b7: 0x44c4, 0x11b8: 0x42ba, 0x11b9: 0x44ca, 0x11ba: 0x42bf, 0x11bb: 0x44d0,
+	0x11bc: 0x42c4, 0x11bd: 0x44d6, 0x11be: 0x42c9, 0x11bf: 0x44dc,
 	// Block 0x47, offset 0x11c0
-	0x11c0: 0x0266, 0x11c1: 0x0269, 0x11c2: 0x0269, 0x11c3: 0x0269, 0x11c4: 0x0269, 0x11c5: 0x026c,
-	0x11c6: 0x026c, 0x11c7: 0x026c, 0x11c8: 0x026c, 0x11c9: 0x026f, 0x11ca: 0x026f, 0x11cb: 0x026f,
-	0x11cc: 0x026f, 0x11cd: 0x0272, 0x11ce: 0x0272, 0x11cf: 0x0272, 0x11d0: 0x0272, 0x11d1: 0x0275,
-	0x11d2: 0x0275, 0x11d3: 0x0275, 0x11d4: 0x0275, 0x11d5: 0x0278, 0x11d6: 0x0278, 0x11d7: 0x0278,
-	0x11d8: 0x0278, 0x11d9: 0x027b, 0x11da: 0x027b, 0x11db: 0x027b, 0x11dc: 0x027b, 0x11dd: 0x027e,
-	0x11de: 0x027e, 0x11df: 0x027e, 0x11e0: 0x027e, 0x11e1: 0x0281, 0x11e2: 0x0281, 0x11e3: 0x0281,
-	0x11e4: 0x0281, 0x11e5: 0x0284, 0x11e6: 0x0284, 0x11e7: 0x0284, 0x11e8: 0x0284, 0x11e9: 0x0287,
-	0x11ea: 0x0287, 0x11eb: 0x0287, 0x11ec: 0x0287, 0x11ed: 0x028a, 0x11ee: 0x028a, 0x11ef: 0x028d,
-	0x11f0: 0x028d, 0x11f1: 0x0290, 0x11f2: 0x0290, 0x11f3: 0x0290, 0x11f4: 0x0290, 0x11f5: 0x2ee2,
-	0x11f6: 0x2ee2, 0x11f7: 0x2eea, 0x11f8: 0x2eea, 0x11f9: 0x2ef2, 0x11fa: 0x2ef2, 0x11fb: 0x2115,
-	0x11fc: 0x2115,
+	0x11c0: 0x0236, 0x11c1: 0x44a0, 0x11c2: 0x44a0, 0x11c3: 0x44a6, 0x11c4: 0x44a6, 0x11c5: 0x44e8,
+	0x11c6: 0x44e8, 0x11c7: 0x44ac, 0x11c8: 0x44ac, 0x11c9: 0x44f4, 0x11ca: 0x44f4, 0x11cb: 0x44f4,
+	0x11cc: 0x44f4, 0x11cd: 0x0239, 0x11ce: 0x0239, 0x11cf: 0x023c, 0x11d0: 0x023c, 0x11d1: 0x023c,
+	0x11d2: 0x023c, 0x11d3: 0x023f, 0x11d4: 0x023f, 0x11d5: 0x0242, 0x11d6: 0x0242, 0x11d7: 0x0242,
+	0x11d8: 0x0242, 0x11d9: 0x0245, 0x11da: 0x0245, 0x11db: 0x0245, 0x11dc: 0x0245, 0x11dd: 0x0248,
+	0x11de: 0x0248, 0x11df: 0x0248, 0x11e0: 0x0248, 0x11e1: 0x024b, 0x11e2: 0x024b, 0x11e3: 0x024b,
+	0x11e4: 0x024b, 0x11e5: 0x024e, 0x11e6: 0x024e, 0x11e7: 0x024e, 0x11e8: 0x024e, 0x11e9: 0x0251,
+	0x11ea: 0x0251, 0x11eb: 0x0254, 0x11ec: 0x0254, 0x11ed: 0x0257, 0x11ee: 0x0257, 0x11ef: 0x025a,
+	0x11f0: 0x025a, 0x11f1: 0x025d, 0x11f2: 0x025d, 0x11f3: 0x025d, 0x11f4: 0x025d, 0x11f5: 0x0260,
+	0x11f6: 0x0260, 0x11f7: 0x0260, 0x11f8: 0x0260, 0x11f9: 0x0263, 0x11fa: 0x0263, 0x11fb: 0x0263,
+	0x11fc: 0x0263, 0x11fd: 0x0266, 0x11fe: 0x0266, 0x11ff: 0x0266,
 	// Block 0x48, offset 0x1200
-	0x1200: 0x0081, 0x1201: 0x0083, 0x1202: 0x0085, 0x1203: 0x0087, 0x1204: 0x0089, 0x1205: 0x008b,
-	0x1206: 0x008d, 0x1207: 0x008f, 0x1208: 0x0091, 0x1209: 0x0093, 0x120a: 0x0095, 0x120b: 0x0097,
-	0x120c: 0x0099, 0x120d: 0x009b, 0x120e: 0x009d, 0x120f: 0x009f, 0x1210: 0x00a1, 0x1211: 0x00a3,
-	0x1212: 0x00a5, 0x1213: 0x00a7, 0x1214: 0x00a9, 0x1215: 0x00ab, 0x1216: 0x00ad, 0x1217: 0x00af,
-	0x1218: 0x00b1, 0x1219: 0x00b3, 0x121a: 0x00b5, 0x121b: 0x00b7, 0x121c: 0x00b9, 0x121d: 0x00bb,
-	0x121e: 0x00bd, 0x121f: 0x04ef, 0x1220: 0x04f3, 0x1221: 0x04ff, 0x1222: 0x0513, 0x1223: 0x0517,
-	0x1224: 0x04fb, 0x1225: 0x0623, 0x1226: 0x061b, 0x1227: 0x053f, 0x1228: 0x0547, 0x1229: 0x054f,
-	0x122a: 0x0557, 0x122b: 0x055f, 0x122c: 0x05e3, 0x122d: 0x05eb, 0x122e: 0x05f3, 0x122f: 0x0597,
-	0x1230: 0x0627, 0x1231: 0x0543, 0x1232: 0x054b, 0x1233: 0x0553, 0x1234: 0x055b, 0x1235: 0x0563,
-	0x1236: 0x0567, 0x1237: 0x056b, 0x1238: 0x056f, 0x1239: 0x0573, 0x123a: 0x0577, 0x123b: 0x057b,
-	0x123c: 0x057f, 0x123d: 0x0583, 0x123e: 0x0587, 0x123f: 0x058b,
+	0x1200: 0x0266, 0x1201: 0x0269, 0x1202: 0x0269, 0x1203: 0x0269, 0x1204: 0x0269, 0x1205: 0x026c,
+	0x1206: 0x026c, 0x1207: 0x026c, 0x1208: 0x026c, 0x1209: 0x026f, 0x120a: 0x026f, 0x120b: 0x026f,
+	0x120c: 0x026f, 0x120d: 0x0272, 0x120e: 0x0272, 0x120f: 0x0272, 0x1210: 0x0272, 0x1211: 0x0275,
+	0x1212: 0x0275, 0x1213: 0x0275, 0x1214: 0x0275, 0x1215: 0x0278, 0x1216: 0x0278, 0x1217: 0x0278,
+	0x1218: 0x0278, 0x1219: 0x027b, 0x121a: 0x027b, 0x121b: 0x027b, 0x121c: 0x027b, 0x121d: 0x027e,
+	0x121e: 0x027e, 0x121f: 0x027e, 0x1220: 0x027e, 0x1221: 0x0281, 0x1222: 0x0281, 0x1223: 0x0281,
+	0x1224: 0x0281, 0x1225: 0x0284, 0x1226: 0x0284, 0x1227: 0x0284, 0x1228: 0x0284, 0x1229: 0x0287,
+	0x122a: 0x0287, 0x122b: 0x0287, 0x122c: 0x0287, 0x122d: 0x028a, 0x122e: 0x028a, 0x122f: 0x028d,
+	0x1230: 0x028d, 0x1231: 0x0290, 0x1232: 0x0290, 0x1233: 0x0290, 0x1234: 0x0290, 0x1235: 0x2dfc,
+	0x1236: 0x2dfc, 0x1237: 0x2e04, 0x1238: 0x2e04, 0x1239: 0x2e0c, 0x123a: 0x2e0c, 0x123b: 0x1f7e,
+	0x123c: 0x1f7e,
 	// Block 0x49, offset 0x1240
-	0x1240: 0x058f, 0x1241: 0x0593, 0x1242: 0x059b, 0x1243: 0x059f, 0x1244: 0x05a3, 0x1245: 0x05a7,
-	0x1246: 0x05ab, 0x1247: 0x05af, 0x1248: 0x05b3, 0x1249: 0x05b7, 0x124a: 0x05bb, 0x124b: 0x05bf,
-	0x124c: 0x05c3, 0x124d: 0x05c7, 0x124e: 0x05cb, 0x124f: 0x05cf, 0x1250: 0x05d3, 0x1251: 0x05d7,
-	0x1252: 0x05db, 0x1253: 0x05df, 0x1254: 0x05e7, 0x1255: 0x05ef, 0x1256: 0x05f7, 0x1257: 0x05fb,
-	0x1258: 0x05ff, 0x1259: 0x0603, 0x125a: 0x0607, 0x125b: 0x060b, 0x125c: 0x060f, 0x125d: 0x061f,
-	0x125e: 0x49ff, 0x125f: 0x4a05, 0x1260: 0x03c3, 0x1261: 0x0313, 0x1262: 0x0317, 0x1263: 0x043b,
-	0x1264: 0x031b, 0x1265: 0x043f, 0x1266: 0x0443, 0x1267: 0x031f, 0x1268: 0x0323, 0x1269: 0x0327,
-	0x126a: 0x0447, 0x126b: 0x044b, 0x126c: 0x044f, 0x126d: 0x0453, 0x126e: 0x0457, 0x126f: 0x045b,
-	0x1270: 0x0367, 0x1271: 0x032b, 0x1272: 0x032f, 0x1273: 0x0333, 0x1274: 0x037b, 0x1275: 0x0337,
-	0x1276: 0x033b, 0x1277: 0x033f, 0x1278: 0x0343, 0x1279: 0x0347, 0x127a: 0x034b, 0x127b: 0x034f,
-	0x127c: 0x0353, 0x127d: 0x0357, 0x127e: 0x035b,
+	0x1240: 0x0081, 0x1241: 0x0083, 0x1242: 0x0085, 0x1243: 0x0087, 0x1244: 0x0089, 0x1245: 0x008b,
+	0x1246: 0x008d, 0x1247: 0x008f, 0x1248: 0x0091, 0x1249: 0x0093, 0x124a: 0x0095, 0x124b: 0x0097,
+	0x124c: 0x0099, 0x124d: 0x009b, 0x124e: 0x009d, 0x124f: 0x009f, 0x1250: 0x00a1, 0x1251: 0x00a3,
+	0x1252: 0x00a5, 0x1253: 0x00a7, 0x1254: 0x00a9, 0x1255: 0x00ab, 0x1256: 0x00ad, 0x1257: 0x00af,
+	0x1258: 0x00b1, 0x1259: 0x00b3, 0x125a: 0x00b5, 0x125b: 0x00b7, 0x125c: 0x00b9, 0x125d: 0x00bb,
+	0x125e: 0x00bd, 0x125f: 0x0477, 0x1260: 0x047b, 0x1261: 0x0487, 0x1262: 0x049b, 0x1263: 0x049f,
+	0x1264: 0x0483, 0x1265: 0x05ab, 0x1266: 0x05a3, 0x1267: 0x04c7, 0x1268: 0x04cf, 0x1269: 0x04d7,
+	0x126a: 0x04df, 0x126b: 0x04e7, 0x126c: 0x056b, 0x126d: 0x0573, 0x126e: 0x057b, 0x126f: 0x051f,
+	0x1270: 0x05af, 0x1271: 0x04cb, 0x1272: 0x04d3, 0x1273: 0x04db, 0x1274: 0x04e3, 0x1275: 0x04eb,
+	0x1276: 0x04ef, 0x1277: 0x04f3, 0x1278: 0x04f7, 0x1279: 0x04fb, 0x127a: 0x04ff, 0x127b: 0x0503,
+	0x127c: 0x0507, 0x127d: 0x050b, 0x127e: 0x050f, 0x127f: 0x0513,
 	// Block 0x4a, offset 0x1280
-	0x1280: 0x0063, 0x1281: 0x0065, 0x1282: 0x0067, 0x1283: 0x0069, 0x1284: 0x006b, 0x1285: 0x006d,
-	0x1286: 0x006f, 0x1287: 0x0071, 0x1288: 0x0073, 0x1289: 0x0075, 0x128a: 0x0083, 0x128b: 0x0085,
-	0x128c: 0x0087, 0x128d: 0x0089, 0x128e: 0x008b, 0x128f: 0x008d, 0x1290: 0x008f, 0x1291: 0x0091,
-	0x1292: 0x0093, 0x1293: 0x0095, 0x1294: 0x0097, 0x1295: 0x0099, 0x1296: 0x009b, 0x1297: 0x009d,
-	0x1298: 0x009f, 0x1299: 0x00a1, 0x129a: 0x00a3, 0x129b: 0x00a5, 0x129c: 0x00a7, 0x129d: 0x00a9,
-	0x129e: 0x00ab, 0x129f: 0x00ad, 0x12a0: 0x00af, 0x12a1: 0x00b1, 0x12a2: 0x00b3, 0x12a3: 0x00b5,
-	0x12a4: 0x00dd, 0x12a5: 0x00f2, 0x12a8: 0x0173, 0x12a9: 0x0176,
-	0x12aa: 0x0179, 0x12ab: 0x017c, 0x12ac: 0x017f, 0x12ad: 0x0182, 0x12ae: 0x0185, 0x12af: 0x0188,
-	0x12b0: 0x018b, 0x12b1: 0x018e, 0x12b2: 0x0191, 0x12b3: 0x0194, 0x12b4: 0x0197, 0x12b5: 0x019a,
-	0x12b6: 0x019d, 0x12b7: 0x01a0, 0x12b8: 0x01a3, 0x12b9: 0x0188, 0x12ba: 0x01a6, 0x12bb: 0x01a9,
-	0x12bc: 0x01ac, 0x12bd: 0x01af, 0x12be: 0x01b2, 0x12bf: 0x01b5,
+	0x1280: 0x0517, 0x1281: 0x051b, 0x1282: 0x0523, 0x1283: 0x0527, 0x1284: 0x052b, 0x1285: 0x052f,
+	0x1286: 0x0533, 0x1287: 0x0537, 0x1288: 0x053b, 0x1289: 0x053f, 0x128a: 0x0543, 0x128b: 0x0547,
+	0x128c: 0x054b, 0x128d: 0x054f, 0x128e: 0x0553, 0x128f: 0x0557, 0x1290: 0x055b, 0x1291: 0x055f,
+	0x1292: 0x0563, 0x1293: 0x0567, 0x1294: 0x056f, 0x1295: 0x0577, 0x1296: 0x057f, 0x1297: 0x0583,
+	0x1298: 0x0587, 0x1299: 0x058b, 0x129a: 0x058f, 0x129b: 0x0593, 0x129c: 0x0597, 0x129d: 0x05a7,
+	0x129e: 0x4a56, 0x129f: 0x4a5c, 0x12a0: 0x03c3, 0x12a1: 0x0313, 0x12a2: 0x0317, 0x12a3: 0x4341,
+	0x12a4: 0x031b, 0x12a5: 0x4346, 0x12a6: 0x434b, 0x12a7: 0x031f, 0x12a8: 0x0323, 0x12a9: 0x0327,
+	0x12aa: 0x4350, 0x12ab: 0x4355, 0x12ac: 0x435a, 0x12ad: 0x435f, 0x12ae: 0x4364, 0x12af: 0x4369,
+	0x12b0: 0x0367, 0x12b1: 0x032b, 0x12b2: 0x032f, 0x12b3: 0x0333, 0x12b4: 0x037b, 0x12b5: 0x0337,
+	0x12b6: 0x033b, 0x12b7: 0x033f, 0x12b8: 0x0343, 0x12b9: 0x0347, 0x12ba: 0x034b, 0x12bb: 0x034f,
+	0x12bc: 0x0353, 0x12bd: 0x0357, 0x12be: 0x035b,
 	// Block 0x4b, offset 0x12c0
-	0x12c0: 0x01fd, 0x12c1: 0x0200, 0x12c2: 0x0203, 0x12c3: 0x04d3, 0x12c4: 0x01c7, 0x12c5: 0x01d0,
-	0x12c6: 0x01d6, 0x12c7: 0x01fa, 0x12c8: 0x01eb, 0x12c9: 0x01e8, 0x12ca: 0x0206, 0x12cb: 0x0209,
-	0x12ce: 0x0021, 0x12cf: 0x0023, 0x12d0: 0x0025, 0x12d1: 0x0027,
-	0x12d2: 0x0029, 0x12d3: 0x002b, 0x12d4: 0x002d, 0x12d5: 0x002f, 0x12d6: 0x0031, 0x12d7: 0x0033,
-	0x12d8: 0x0021, 0x12d9: 0x0023, 0x12da: 0x0025, 0x12db: 0x0027, 0x12dc: 0x0029, 0x12dd: 0x002b,
-	0x12de: 0x002d, 0x12df: 0x002f, 0x12e0: 0x0031, 0x12e1: 0x0033, 0x12e2: 0x0021, 0x12e3: 0x0023,
-	0x12e4: 0x0025, 0x12e5: 0x0027, 0x12e6: 0x0029, 0x12e7: 0x002b, 0x12e8: 0x002d, 0x12e9: 0x002f,
-	0x12ea: 0x0031, 0x12eb: 0x0033, 0x12ec: 0x0021, 0x12ed: 0x0023, 0x12ee: 0x0025, 0x12ef: 0x0027,
-	0x12f0: 0x0029, 0x12f1: 0x002b, 0x12f2: 0x002d, 0x12f3: 0x002f, 0x12f4: 0x0031, 0x12f5: 0x0033,
-	0x12f6: 0x0021, 0x12f7: 0x0023, 0x12f8: 0x0025, 0x12f9: 0x0027, 0x12fa: 0x0029, 0x12fb: 0x002b,
-	0x12fc: 0x002d, 0x12fd: 0x002f, 0x12fe: 0x0031, 0x12ff: 0x0033,
+	0x12c2: 0x42d8, 0x12c3: 0x42dd, 0x12c4: 0x42e2, 0x12c5: 0x42e7,
+	0x12c6: 0x42ec, 0x12c7: 0x42f1, 0x12ca: 0x42f6, 0x12cb: 0x42fb,
+	0x12cc: 0x4300, 0x12cd: 0x4305, 0x12ce: 0x430a, 0x12cf: 0x430f,
+	0x12d2: 0x4314, 0x12d3: 0x4319, 0x12d4: 0x431e, 0x12d5: 0x4323, 0x12d6: 0x4328, 0x12d7: 0x432d,
+	0x12da: 0x4332, 0x12db: 0x4337, 0x12dc: 0x433c,
+	0x12e0: 0x00bf, 0x12e1: 0x00c2, 0x12e2: 0x00cb, 0x12e3: 0x4260,
+	0x12e4: 0x00c8, 0x12e5: 0x00c5, 0x12e6: 0x0447, 0x12e8: 0x046b, 0x12e9: 0x044b,
+	0x12ea: 0x044f, 0x12eb: 0x0453, 0x12ec: 0x0457, 0x12ed: 0x046f, 0x12ee: 0x0473,
 	// Block 0x4c, offset 0x1300
-	0x1300: 0x0239, 0x1301: 0x023c, 0x1302: 0x0248, 0x1303: 0x0251, 0x1305: 0x028a,
-	0x1306: 0x025a, 0x1307: 0x024b, 0x1308: 0x0269, 0x1309: 0x0290, 0x130a: 0x027b, 0x130b: 0x027e,
-	0x130c: 0x0281, 0x130d: 0x0284, 0x130e: 0x025d, 0x130f: 0x026f, 0x1310: 0x0275, 0x1311: 0x0263,
-	0x1312: 0x0278, 0x1313: 0x0257, 0x1314: 0x0260, 0x1315: 0x0242, 0x1316: 0x0245, 0x1317: 0x024e,
-	0x1318: 0x0254, 0x1319: 0x0266, 0x131a: 0x026c, 0x131b: 0x0272, 0x131c: 0x0293, 0x131d: 0x02e4,
-	0x131e: 0x02cc, 0x131f: 0x0296, 0x1321: 0x023c, 0x1322: 0x0248,
-	0x1324: 0x0287, 0x1327: 0x024b, 0x1329: 0x0290,
-	0x132a: 0x027b, 0x132b: 0x027e, 0x132c: 0x0281, 0x132d: 0x0284, 0x132e: 0x025d, 0x132f: 0x026f,
-	0x1330: 0x0275, 0x1331: 0x0263, 0x1332: 0x0278, 0x1334: 0x0260, 0x1335: 0x0242,
-	0x1336: 0x0245, 0x1337: 0x024e, 0x1339: 0x0266, 0x133b: 0x0272,
+	0x1300: 0x0063, 0x1301: 0x0065, 0x1302: 0x0067, 0x1303: 0x0069, 0x1304: 0x006b, 0x1305: 0x006d,
+	0x1306: 0x006f, 0x1307: 0x0071, 0x1308: 0x0073, 0x1309: 0x0075, 0x130a: 0x0083, 0x130b: 0x0085,
+	0x130c: 0x0087, 0x130d: 0x0089, 0x130e: 0x008b, 0x130f: 0x008d, 0x1310: 0x008f, 0x1311: 0x0091,
+	0x1312: 0x0093, 0x1313: 0x0095, 0x1314: 0x0097, 0x1315: 0x0099, 0x1316: 0x009b, 0x1317: 0x009d,
+	0x1318: 0x009f, 0x1319: 0x00a1, 0x131a: 0x00a3, 0x131b: 0x00a5, 0x131c: 0x00a7, 0x131d: 0x00a9,
+	0x131e: 0x00ab, 0x131f: 0x00ad, 0x1320: 0x00af, 0x1321: 0x00b1, 0x1322: 0x00b3, 0x1323: 0x00b5,
+	0x1324: 0x00dd, 0x1325: 0x00f2, 0x1328: 0x0173, 0x1329: 0x0176,
+	0x132a: 0x0179, 0x132b: 0x017c, 0x132c: 0x017f, 0x132d: 0x0182, 0x132e: 0x0185, 0x132f: 0x0188,
+	0x1330: 0x018b, 0x1331: 0x018e, 0x1332: 0x0191, 0x1333: 0x0194, 0x1334: 0x0197, 0x1335: 0x019a,
+	0x1336: 0x019d, 0x1337: 0x01a0, 0x1338: 0x01a3, 0x1339: 0x0188, 0x133a: 0x01a6, 0x133b: 0x01a9,
+	0x133c: 0x01ac, 0x133d: 0x01af, 0x133e: 0x01b2, 0x133f: 0x01b5,
 	// Block 0x4d, offset 0x1340
-	0x1342: 0x0248,
-	0x1347: 0x024b, 0x1349: 0x0290, 0x134b: 0x027e,
-	0x134d: 0x0284, 0x134e: 0x025d, 0x134f: 0x026f, 0x1351: 0x0263,
-	0x1352: 0x0278, 0x1354: 0x0260, 0x1357: 0x024e,
-	0x1359: 0x0266, 0x135b: 0x0272, 0x135d: 0x02e4,
-	0x135f: 0x0296, 0x1361: 0x023c, 0x1362: 0x0248,
-	0x1364: 0x0287, 0x1367: 0x024b, 0x1368: 0x0269, 0x1369: 0x0290,
-	0x136a: 0x027b, 0x136c: 0x0281, 0x136d: 0x0284, 0x136e: 0x025d, 0x136f: 0x026f,
-	0x1370: 0x0275, 0x1371: 0x0263, 0x1372: 0x0278, 0x1374: 0x0260, 0x1375: 0x0242,
-	0x1376: 0x0245, 0x1377: 0x024e, 0x1379: 0x0266, 0x137a: 0x026c, 0x137b: 0x0272,
-	0x137c: 0x0293, 0x137e: 0x02cc,
+	0x1340: 0x01fd, 0x1341: 0x0200, 0x1342: 0x0203, 0x1343: 0x045b, 0x1344: 0x01c7, 0x1345: 0x01d0,
+	0x1346: 0x01d6, 0x1347: 0x01fa, 0x1348: 0x01eb, 0x1349: 0x01e8, 0x134a: 0x0206, 0x134b: 0x0209,
+	0x134e: 0x0021, 0x134f: 0x0023, 0x1350: 0x0025, 0x1351: 0x0027,
+	0x1352: 0x0029, 0x1353: 0x002b, 0x1354: 0x002d, 0x1355: 0x002f, 0x1356: 0x0031, 0x1357: 0x0033,
+	0x1358: 0x0021, 0x1359: 0x0023, 0x135a: 0x0025, 0x135b: 0x0027, 0x135c: 0x0029, 0x135d: 0x002b,
+	0x135e: 0x002d, 0x135f: 0x002f, 0x1360: 0x0031, 0x1361: 0x0033, 0x1362: 0x0021, 0x1363: 0x0023,
+	0x1364: 0x0025, 0x1365: 0x0027, 0x1366: 0x0029, 0x1367: 0x002b, 0x1368: 0x002d, 0x1369: 0x002f,
+	0x136a: 0x0031, 0x136b: 0x0033, 0x136c: 0x0021, 0x136d: 0x0023, 0x136e: 0x0025, 0x136f: 0x0027,
+	0x1370: 0x0029, 0x1371: 0x002b, 0x1372: 0x002d, 0x1373: 0x002f, 0x1374: 0x0031, 0x1375: 0x0033,
+	0x1376: 0x0021, 0x1377: 0x0023, 0x1378: 0x0025, 0x1379: 0x0027, 0x137a: 0x0029, 0x137b: 0x002b,
+	0x137c: 0x002d, 0x137d: 0x002f, 0x137e: 0x0031, 0x137f: 0x0033,
 	// Block 0x4e, offset 0x1380
-	0x1380: 0x0239, 0x1381: 0x023c, 0x1382: 0x0248, 0x1383: 0x0251, 0x1384: 0x0287, 0x1385: 0x028a,
-	0x1386: 0x025a, 0x1387: 0x024b, 0x1388: 0x0269, 0x1389: 0x0290, 0x138b: 0x027e,
+	0x1380: 0x0239, 0x1381: 0x023c, 0x1382: 0x0248, 0x1383: 0x0251, 0x1385: 0x028a,
+	0x1386: 0x025a, 0x1387: 0x024b, 0x1388: 0x0269, 0x1389: 0x0290, 0x138a: 0x027b, 0x138b: 0x027e,
 	0x138c: 0x0281, 0x138d: 0x0284, 0x138e: 0x025d, 0x138f: 0x026f, 0x1390: 0x0275, 0x1391: 0x0263,
 	0x1392: 0x0278, 0x1393: 0x0257, 0x1394: 0x0260, 0x1395: 0x0242, 0x1396: 0x0245, 0x1397: 0x024e,
-	0x1398: 0x0254, 0x1399: 0x0266, 0x139a: 0x026c, 0x139b: 0x0272,
-	0x13a1: 0x023c, 0x13a2: 0x0248, 0x13a3: 0x0251,
-	0x13a5: 0x028a, 0x13a6: 0x025a, 0x13a7: 0x024b, 0x13a8: 0x0269, 0x13a9: 0x0290,
-	0x13ab: 0x027e, 0x13ac: 0x0281, 0x13ad: 0x0284, 0x13ae: 0x025d, 0x13af: 0x026f,
-	0x13b0: 0x0275, 0x13b1: 0x0263, 0x13b2: 0x0278, 0x13b3: 0x0257, 0x13b4: 0x0260, 0x13b5: 0x0242,
-	0x13b6: 0x0245, 0x13b7: 0x024e, 0x13b8: 0x0254, 0x13b9: 0x0266, 0x13ba: 0x026c, 0x13bb: 0x0272,
+	0x1398: 0x0254, 0x1399: 0x0266, 0x139a: 0x026c, 0x139b: 0x0272, 0x139c: 0x0293, 0x139d: 0x02e4,
+	0x139e: 0x02cc, 0x139f: 0x0296, 0x13a1: 0x023c, 0x13a2: 0x0248,
+	0x13a4: 0x0287, 0x13a7: 0x024b, 0x13a9: 0x0290,
+	0x13aa: 0x027b, 0x13ab: 0x027e, 0x13ac: 0x0281, 0x13ad: 0x0284, 0x13ae: 0x025d, 0x13af: 0x026f,
+	0x13b0: 0x0275, 0x13b1: 0x0263, 0x13b2: 0x0278, 0x13b4: 0x0260, 0x13b5: 0x0242,
+	0x13b6: 0x0245, 0x13b7: 0x024e, 0x13b9: 0x0266, 0x13bb: 0x0272,
 	// Block 0x4f, offset 0x13c0
-	0x13c0: 0x1a0c, 0x13c1: 0x1a09, 0x13c2: 0x1a0f, 0x13c3: 0x1a33, 0x13c4: 0x1a57, 0x13c5: 0x1a7b,
-	0x13c6: 0x1a9f, 0x13c7: 0x1aa8, 0x13c8: 0x1aae, 0x13c9: 0x1ab4, 0x13ca: 0x1aba,
-	0x13d0: 0x1c1f, 0x13d1: 0x1c23,
-	0x13d2: 0x1c27, 0x13d3: 0x1c2b, 0x13d4: 0x1c2f, 0x13d5: 0x1c33, 0x13d6: 0x1c37, 0x13d7: 0x1c3b,
-	0x13d8: 0x1c3f, 0x13d9: 0x1c43, 0x13da: 0x1c47, 0x13db: 0x1c4b, 0x13dc: 0x1c4f, 0x13dd: 0x1c53,
-	0x13de: 0x1c57, 0x13df: 0x1c5b, 0x13e0: 0x1c5f, 0x13e1: 0x1c63, 0x13e2: 0x1c67, 0x13e3: 0x1c6b,
-	0x13e4: 0x1c6f, 0x13e5: 0x1c73, 0x13e6: 0x1c77, 0x13e7: 0x1c7b, 0x13e8: 0x1c7f, 0x13e9: 0x1c83,
-	0x13ea: 0x291a, 0x13eb: 0x0047, 0x13ec: 0x0065, 0x13ed: 0x1acf, 0x13ee: 0x1b44,
-	0x13f0: 0x0043, 0x13f1: 0x0045, 0x13f2: 0x0047, 0x13f3: 0x0049, 0x13f4: 0x004b, 0x13f5: 0x004d,
-	0x13f6: 0x004f, 0x13f7: 0x0051, 0x13f8: 0x0053, 0x13f9: 0x0055, 0x13fa: 0x0057, 0x13fb: 0x0059,
-	0x13fc: 0x005b, 0x13fd: 0x005d, 0x13fe: 0x005f, 0x13ff: 0x0061,
+	0x13c2: 0x0248,
+	0x13c7: 0x024b, 0x13c9: 0x0290, 0x13cb: 0x027e,
+	0x13cd: 0x0284, 0x13ce: 0x025d, 0x13cf: 0x026f, 0x13d1: 0x0263,
+	0x13d2: 0x0278, 0x13d4: 0x0260, 0x13d7: 0x024e,
+	0x13d9: 0x0266, 0x13db: 0x0272, 0x13dd: 0x02e4,
+	0x13df: 0x0296, 0x13e1: 0x023c, 0x13e2: 0x0248,
+	0x13e4: 0x0287, 0x13e7: 0x024b, 0x13e8: 0x0269, 0x13e9: 0x0290,
+	0x13ea: 0x027b, 0x13ec: 0x0281, 0x13ed: 0x0284, 0x13ee: 0x025d, 0x13ef: 0x026f,
+	0x13f0: 0x0275, 0x13f1: 0x0263, 0x13f2: 0x0278, 0x13f4: 0x0260, 0x13f5: 0x0242,
+	0x13f6: 0x0245, 0x13f7: 0x024e, 0x13f9: 0x0266, 0x13fa: 0x026c, 0x13fb: 0x0272,
+	0x13fc: 0x0293, 0x13fe: 0x02cc,
 	// Block 0x50, offset 0x1400
-	0x1400: 0x28a9, 0x1401: 0x28be, 0x1402: 0x057b,
-	0x1410: 0x0c87, 0x1411: 0x0abf,
-	0x1412: 0x094b, 0x1413: 0x45ff, 0x1414: 0x0793, 0x1415: 0x0a67, 0x1416: 0x13a7, 0x1417: 0x0a77,
-	0x1418: 0x079f, 0x1419: 0x0d4f, 0x141a: 0x0f27, 0x141b: 0x0d27, 0x141c: 0x089f, 0x141d: 0x0be3,
-	0x141e: 0x0837, 0x141f: 0x0d2f, 0x1420: 0x088b, 0x1421: 0x118f, 0x1422: 0x0ffb, 0x1423: 0x1403,
-	0x1424: 0x0a4b, 0x1425: 0x0983, 0x1426: 0x0edb, 0x1427: 0x0c93, 0x1428: 0x0cbf, 0x1429: 0x0737,
-	0x142a: 0x0743, 0x142b: 0x1483, 0x142c: 0x0b53, 0x142d: 0x075f, 0x142e: 0x0967, 0x142f: 0x0cb3,
-	0x1430: 0x142b, 0x1431: 0x0c8b, 0x1432: 0x10e7, 0x1433: 0x1123, 0x1434: 0x096f, 0x1435: 0x0ebb,
-	0x1436: 0x0d83, 0x1437: 0x0d7f, 0x1438: 0x100f, 0x1439: 0x08a3, 0x143a: 0x09cf,
+	0x1400: 0x0239, 0x1401: 0x023c, 0x1402: 0x0248, 0x1403: 0x0251, 0x1404: 0x0287, 0x1405: 0x028a,
+	0x1406: 0x025a, 0x1407: 0x024b, 0x1408: 0x0269, 0x1409: 0x0290, 0x140b: 0x027e,
+	0x140c: 0x0281, 0x140d: 0x0284, 0x140e: 0x025d, 0x140f: 0x026f, 0x1410: 0x0275, 0x1411: 0x0263,
+	0x1412: 0x0278, 0x1413: 0x0257, 0x1414: 0x0260, 0x1415: 0x0242, 0x1416: 0x0245, 0x1417: 0x024e,
+	0x1418: 0x0254, 0x1419: 0x0266, 0x141a: 0x026c, 0x141b: 0x0272,
+	0x1421: 0x023c, 0x1422: 0x0248, 0x1423: 0x0251,
+	0x1425: 0x028a, 0x1426: 0x025a, 0x1427: 0x024b, 0x1428: 0x0269, 0x1429: 0x0290,
+	0x142b: 0x027e, 0x142c: 0x0281, 0x142d: 0x0284, 0x142e: 0x025d, 0x142f: 0x026f,
+	0x1430: 0x0275, 0x1431: 0x0263, 0x1432: 0x0278, 0x1433: 0x0257, 0x1434: 0x0260, 0x1435: 0x0242,
+	0x1436: 0x0245, 0x1437: 0x024e, 0x1438: 0x0254, 0x1439: 0x0266, 0x143a: 0x026c, 0x143b: 0x0272,
 	// Block 0x51, offset 0x1440
-	0x1440: 0x0773, 0x1441: 0x076b, 0x1442: 0x077b, 0x1443: 0x16bb, 0x1444: 0x07bf, 0x1445: 0x07cf,
-	0x1446: 0x07d3, 0x1447: 0x07db, 0x1448: 0x07e3, 0x1449: 0x07e7, 0x144a: 0x07f3, 0x144b: 0x07eb,
-	0x144c: 0x062b, 0x144d: 0x16cf, 0x144e: 0x0807, 0x144f: 0x080b, 0x1450: 0x080f, 0x1451: 0x082b,
-	0x1452: 0x16c0, 0x1453: 0x062f, 0x1454: 0x0817, 0x1455: 0x0837, 0x1456: 0x16ca, 0x1457: 0x0847,
-	0x1458: 0x084f, 0x1459: 0x07af, 0x145a: 0x0857, 0x145b: 0x085b, 0x145c: 0x18a5, 0x145d: 0x0877,
-	0x145e: 0x087f, 0x145f: 0x0637, 0x1460: 0x0897, 0x1461: 0x089b, 0x1462: 0x08a3, 0x1463: 0x08a7,
-	0x1464: 0x063b, 0x1465: 0x08bf, 0x1466: 0x08c3, 0x1467: 0x08cf, 0x1468: 0x08db, 0x1469: 0x08df,
-	0x146a: 0x08e3, 0x146b: 0x08eb, 0x146c: 0x090b, 0x146d: 0x090f, 0x146e: 0x0917, 0x146f: 0x0927,
-	0x1470: 0x092f, 0x1471: 0x0933, 0x1472: 0x0933, 0x1473: 0x0933, 0x1474: 0x16de, 0x1475: 0x0f0b,
-	0x1476: 0x0947, 0x1477: 0x094f, 0x1478: 0x16e3, 0x1479: 0x095b, 0x147a: 0x0963, 0x147b: 0x096b,
-	0x147c: 0x0993, 0x147d: 0x097f, 0x147e: 0x098b, 0x147f: 0x098f,
+	0x1440: 0x1875, 0x1441: 0x1872, 0x1442: 0x1878, 0x1443: 0x189c, 0x1444: 0x18c0, 0x1445: 0x18e4,
+	0x1446: 0x1908, 0x1447: 0x1911, 0x1448: 0x1917, 0x1449: 0x191d, 0x144a: 0x1923,
+	0x1450: 0x1a88, 0x1451: 0x1a8c,
+	0x1452: 0x1a90, 0x1453: 0x1a94, 0x1454: 0x1a98, 0x1455: 0x1a9c, 0x1456: 0x1aa0, 0x1457: 0x1aa4,
+	0x1458: 0x1aa8, 0x1459: 0x1aac, 0x145a: 0x1ab0, 0x145b: 0x1ab4, 0x145c: 0x1ab8, 0x145d: 0x1abc,
+	0x145e: 0x1ac0, 0x145f: 0x1ac4, 0x1460: 0x1ac8, 0x1461: 0x1acc, 0x1462: 0x1ad0, 0x1463: 0x1ad4,
+	0x1464: 0x1ad8, 0x1465: 0x1adc, 0x1466: 0x1ae0, 0x1467: 0x1ae4, 0x1468: 0x1ae8, 0x1469: 0x1aec,
+	0x146a: 0x271a, 0x146b: 0x0047, 0x146c: 0x0065, 0x146d: 0x1938, 0x146e: 0x19ad,
+	0x1470: 0x0043, 0x1471: 0x0045, 0x1472: 0x0047, 0x1473: 0x0049, 0x1474: 0x004b, 0x1475: 0x004d,
+	0x1476: 0x004f, 0x1477: 0x0051, 0x1478: 0x0053, 0x1479: 0x0055, 0x147a: 0x0057, 0x147b: 0x0059,
+	0x147c: 0x005b, 0x147d: 0x005d, 0x147e: 0x005f, 0x147f: 0x0061,
 	// Block 0x52, offset 0x1480
-	0x1480: 0x0997, 0x1481: 0x099f, 0x1482: 0x09a3, 0x1483: 0x09ab, 0x1484: 0x09b3, 0x1485: 0x09b7,
-	0x1486: 0x09b7, 0x1487: 0x09bf, 0x1488: 0x09c7, 0x1489: 0x09cb, 0x148a: 0x09d7, 0x148b: 0x09fb,
-	0x148c: 0x09df, 0x148d: 0x09ff, 0x148e: 0x09e3, 0x148f: 0x09eb, 0x1490: 0x0883, 0x1491: 0x0a47,
-	0x1492: 0x0a0f, 0x1493: 0x0a13, 0x1494: 0x0a17, 0x1495: 0x0a0b, 0x1496: 0x0a1f, 0x1497: 0x0a1b,
-	0x1498: 0x0a33, 0x1499: 0x16e8, 0x149a: 0x0a4f, 0x149b: 0x0a53, 0x149c: 0x0a5b, 0x149d: 0x0a67,
-	0x149e: 0x0a6f, 0x149f: 0x0a8b, 0x14a0: 0x16ed, 0x14a1: 0x16f2, 0x14a2: 0x0a97, 0x14a3: 0x0a9b,
-	0x14a4: 0x0a9f, 0x14a5: 0x0a93, 0x14a6: 0x0aa7, 0x14a7: 0x063f, 0x14a8: 0x0643, 0x14a9: 0x0aaf,
-	0x14aa: 0x0ab7, 0x14ab: 0x0ab7, 0x14ac: 0x16f7, 0x14ad: 0x0ad3, 0x14ae: 0x0ad7, 0x14af: 0x0adb,
-	0x14b0: 0x0ae3, 0x14b1: 0x16fc, 0x14b2: 0x0aeb, 0x14b3: 0x0aef, 0x14b4: 0x0bc7, 0x14b5: 0x0af7,
-	0x14b6: 0x0647, 0x14b7: 0x0b03, 0x14b8: 0x0b13, 0x14b9: 0x0b1f, 0x14ba: 0x0b1b, 0x14bb: 0x1706,
-	0x14bc: 0x0b27, 0x14bd: 0x170b, 0x14be: 0x0b33, 0x14bf: 0x0b2f,
+	0x1480: 0x26a9, 0x1481: 0x26be, 0x1482: 0x0503,
+	0x1490: 0x0c0f, 0x1491: 0x0a47,
+	0x1492: 0x08d3, 0x1493: 0x4656, 0x1494: 0x071b, 0x1495: 0x09ef, 0x1496: 0x132f, 0x1497: 0x09ff,
+	0x1498: 0x0727, 0x1499: 0x0cd7, 0x149a: 0x0eaf, 0x149b: 0x0caf, 0x149c: 0x0827, 0x149d: 0x0b6b,
+	0x149e: 0x07bf, 0x149f: 0x0cb7, 0x14a0: 0x0813, 0x14a1: 0x1117, 0x14a2: 0x0f83, 0x14a3: 0x138b,
+	0x14a4: 0x09d3, 0x14a5: 0x090b, 0x14a6: 0x0e63, 0x14a7: 0x0c1b, 0x14a8: 0x0c47, 0x14a9: 0x06bf,
+	0x14aa: 0x06cb, 0x14ab: 0x140b, 0x14ac: 0x0adb, 0x14ad: 0x06e7, 0x14ae: 0x08ef, 0x14af: 0x0c3b,
+	0x14b0: 0x13b3, 0x14b1: 0x0c13, 0x14b2: 0x106f, 0x14b3: 0x10ab, 0x14b4: 0x08f7, 0x14b5: 0x0e43,
+	0x14b6: 0x0d0b, 0x14b7: 0x0d07, 0x14b8: 0x0f97, 0x14b9: 0x082b, 0x14ba: 0x0957,
 	// Block 0x53, offset 0x14c0
-	0x14c0: 0x0b37, 0x14c1: 0x0b47, 0x14c2: 0x0b4b, 0x14c3: 0x064b, 0x14c4: 0x0b5b, 0x14c5: 0x0b63,
-	0x14c6: 0x0b67, 0x14c7: 0x0b6b, 0x14c8: 0x064f, 0x14c9: 0x1710, 0x14ca: 0x0653, 0x14cb: 0x0b87,
-	0x14cc: 0x0b8b, 0x14cd: 0x0b8f, 0x14ce: 0x0b97, 0x14cf: 0x18d7, 0x14d0: 0x0baf, 0x14d1: 0x171a,
-	0x14d2: 0x171a, 0x14d3: 0x124f, 0x14d4: 0x0bbf, 0x14d5: 0x0bbf, 0x14d6: 0x0657, 0x14d7: 0x173d,
-	0x14d8: 0x180f, 0x14d9: 0x0bcf, 0x14da: 0x0bd7, 0x14db: 0x065b, 0x14dc: 0x0beb, 0x14dd: 0x0bfb,
-	0x14de: 0x0bff, 0x14df: 0x0c07, 0x14e0: 0x0c17, 0x14e1: 0x0663, 0x14e2: 0x065f, 0x14e3: 0x0c1b,
-	0x14e4: 0x171f, 0x14e5: 0x0c1f, 0x14e6: 0x0c33, 0x14e7: 0x0c37, 0x14e8: 0x0c3b, 0x14e9: 0x0c37,
-	0x14ea: 0x0c47, 0x14eb: 0x0c4b, 0x14ec: 0x0c5b, 0x14ed: 0x0c53, 0x14ee: 0x0c57, 0x14ef: 0x0c5f,
-	0x14f0: 0x0c63, 0x14f1: 0x0c67, 0x14f2: 0x0c73, 0x14f3: 0x0c77, 0x14f4: 0x0c8f, 0x14f5: 0x0c97,
-	0x14f6: 0x0ca7, 0x14f7: 0x0cbb, 0x14f8: 0x172e, 0x14f9: 0x0cb7, 0x14fa: 0x0cab, 0x14fb: 0x0cc3,
-	0x14fc: 0x0ccb, 0x14fd: 0x0cdf, 0x14fe: 0x1733, 0x14ff: 0x0ce7,
+	0x14c0: 0x06fb, 0x14c1: 0x06f3, 0x14c2: 0x0703, 0x14c3: 0x1643, 0x14c4: 0x0747, 0x14c5: 0x0757,
+	0x14c6: 0x075b, 0x14c7: 0x0763, 0x14c8: 0x076b, 0x14c9: 0x076f, 0x14ca: 0x077b, 0x14cb: 0x0773,
+	0x14cc: 0x05b3, 0x14cd: 0x1657, 0x14ce: 0x078f, 0x14cf: 0x0793, 0x14d0: 0x0797, 0x14d1: 0x07b3,
+	0x14d2: 0x1648, 0x14d3: 0x05b7, 0x14d4: 0x079f, 0x14d5: 0x07bf, 0x14d6: 0x1652, 0x14d7: 0x07cf,
+	0x14d8: 0x07d7, 0x14d9: 0x0737, 0x14da: 0x07df, 0x14db: 0x07e3, 0x14dc: 0x182d, 0x14dd: 0x07ff,
+	0x14de: 0x0807, 0x14df: 0x05bf, 0x14e0: 0x081f, 0x14e1: 0x0823, 0x14e2: 0x082b, 0x14e3: 0x082f,
+	0x14e4: 0x05c3, 0x14e5: 0x0847, 0x14e6: 0x084b, 0x14e7: 0x0857, 0x14e8: 0x0863, 0x14e9: 0x0867,
+	0x14ea: 0x086b, 0x14eb: 0x0873, 0x14ec: 0x0893, 0x14ed: 0x0897, 0x14ee: 0x089f, 0x14ef: 0x08af,
+	0x14f0: 0x08b7, 0x14f1: 0x08bb, 0x14f2: 0x08bb, 0x14f3: 0x08bb, 0x14f4: 0x1666, 0x14f5: 0x0e93,
+	0x14f6: 0x08cf, 0x14f7: 0x08d7, 0x14f8: 0x166b, 0x14f9: 0x08e3, 0x14fa: 0x08eb, 0x14fb: 0x08f3,
+	0x14fc: 0x091b, 0x14fd: 0x0907, 0x14fe: 0x0913, 0x14ff: 0x0917,
 	// Block 0x54, offset 0x1500
-	0x1500: 0x0cdb, 0x1501: 0x0cd3, 0x1502: 0x0667, 0x1503: 0x0cef, 0x1504: 0x0cf7, 0x1505: 0x0cff,
-	0x1506: 0x0cf3, 0x1507: 0x066b, 0x1508: 0x0d0f, 0x1509: 0x0d17, 0x150a: 0x1738, 0x150b: 0x0d43,
-	0x150c: 0x0d77, 0x150d: 0x0d53, 0x150e: 0x0677, 0x150f: 0x0d5f, 0x1510: 0x0673, 0x1511: 0x066f,
-	0x1512: 0x083b, 0x1513: 0x083f, 0x1514: 0x0d7b, 0x1515: 0x0d63, 0x1516: 0x1223, 0x1517: 0x06db,
-	0x1518: 0x0d87, 0x1519: 0x0d8b, 0x151a: 0x0d8f, 0x151b: 0x0da3, 0x151c: 0x0d9b, 0x151d: 0x1751,
-	0x151e: 0x067b, 0x151f: 0x0db7, 0x1520: 0x0dab, 0x1521: 0x0dc7, 0x1522: 0x0dcf, 0x1523: 0x175b,
-	0x1524: 0x0dd3, 0x1525: 0x0dbf, 0x1526: 0x0ddb, 0x1527: 0x067f, 0x1528: 0x0ddf, 0x1529: 0x0de3,
-	0x152a: 0x0de7, 0x152b: 0x0df3, 0x152c: 0x1760, 0x152d: 0x0dfb, 0x152e: 0x0683, 0x152f: 0x0e07,
-	0x1530: 0x1765, 0x1531: 0x0e0b, 0x1532: 0x0687, 0x1533: 0x0e17, 0x1534: 0x0e23, 0x1535: 0x0e2f,
-	0x1536: 0x0e33, 0x1537: 0x176a, 0x1538: 0x1701, 0x1539: 0x176f, 0x153a: 0x0e53, 0x153b: 0x1774,
-	0x153c: 0x0e5f, 0x153d: 0x0e67, 0x153e: 0x0e57, 0x153f: 0x0e73,
+	0x1500: 0x091f, 0x1501: 0x0927, 0x1502: 0x092b, 0x1503: 0x0933, 0x1504: 0x093b, 0x1505: 0x093f,
+	0x1506: 0x093f, 0x1507: 0x0947, 0x1508: 0x094f, 0x1509: 0x0953, 0x150a: 0x095f, 0x150b: 0x0983,
+	0x150c: 0x0967, 0x150d: 0x0987, 0x150e: 0x096b, 0x150f: 0x0973, 0x1510: 0x080b, 0x1511: 0x09cf,
+	0x1512: 0x0997, 0x1513: 0x099b, 0x1514: 0x099f, 0x1515: 0x0993, 0x1516: 0x09a7, 0x1517: 0x09a3,
+	0x1518: 0x09bb, 0x1519: 0x1670, 0x151a: 0x09d7, 0x151b: 0x09db, 0x151c: 0x09e3, 0x151d: 0x09ef,
+	0x151e: 0x09f7, 0x151f: 0x0a13, 0x1520: 0x1675, 0x1521: 0x167a, 0x1522: 0x0a1f, 0x1523: 0x0a23,
+	0x1524: 0x0a27, 0x1525: 0x0a1b, 0x1526: 0x0a2f, 0x1527: 0x05c7, 0x1528: 0x05cb, 0x1529: 0x0a37,
+	0x152a: 0x0a3f, 0x152b: 0x0a3f, 0x152c: 0x167f, 0x152d: 0x0a5b, 0x152e: 0x0a5f, 0x152f: 0x0a63,
+	0x1530: 0x0a6b, 0x1531: 0x1684, 0x1532: 0x0a73, 0x1533: 0x0a77, 0x1534: 0x0b4f, 0x1535: 0x0a7f,
+	0x1536: 0x05cf, 0x1537: 0x0a8b, 0x1538: 0x0a9b, 0x1539: 0x0aa7, 0x153a: 0x0aa3, 0x153b: 0x168e,
+	0x153c: 0x0aaf, 0x153d: 0x1693, 0x153e: 0x0abb, 0x153f: 0x0ab7,
 	// Block 0x55, offset 0x1540
-	0x1540: 0x0e83, 0x1541: 0x0e93, 0x1542: 0x0e87, 0x1543: 0x0e8b, 0x1544: 0x0e97, 0x1545: 0x0e9b,
-	0x1546: 0x1779, 0x1547: 0x0e7f, 0x1548: 0x0eb3, 0x1549: 0x0eb7, 0x154a: 0x068b, 0x154b: 0x0ecb,
-	0x154c: 0x0ec7, 0x154d: 0x177e, 0x154e: 0x0eab, 0x154f: 0x0ee7, 0x1550: 0x1783, 0x1551: 0x1788,
-	0x1552: 0x0eeb, 0x1553: 0x0eff, 0x1554: 0x0efb, 0x1555: 0x0ef7, 0x1556: 0x068f, 0x1557: 0x0f03,
-	0x1558: 0x0f13, 0x1559: 0x0f0f, 0x155a: 0x0f1b, 0x155b: 0x16c5, 0x155c: 0x0f2b, 0x155d: 0x178d,
-	0x155e: 0x0f37, 0x155f: 0x1797, 0x1560: 0x0f4b, 0x1561: 0x0f57, 0x1562: 0x0f6b, 0x1563: 0x179c,
-	0x1564: 0x0f7f, 0x1565: 0x0f83, 0x1566: 0x17a1, 0x1567: 0x17a6, 0x1568: 0x0f9f, 0x1569: 0x0faf,
-	0x156a: 0x0693, 0x156b: 0x0fb3, 0x156c: 0x0697, 0x156d: 0x0697, 0x156e: 0x0fcb, 0x156f: 0x0fcf,
-	0x1570: 0x0fd7, 0x1571: 0x0fdb, 0x1572: 0x0fe7, 0x1573: 0x069b, 0x1574: 0x0fff, 0x1575: 0x17ab,
-	0x1576: 0x101b, 0x1577: 0x17b0, 0x1578: 0x1027, 0x1579: 0x1715, 0x157a: 0x1037, 0x157b: 0x17b5,
-	0x157c: 0x17ba, 0x157d: 0x17bf, 0x157e: 0x069f, 0x157f: 0x06a3,
+	0x1540: 0x0abf, 0x1541: 0x0acf, 0x1542: 0x0ad3, 0x1543: 0x05d3, 0x1544: 0x0ae3, 0x1545: 0x0aeb,
+	0x1546: 0x0aef, 0x1547: 0x0af3, 0x1548: 0x05d7, 0x1549: 0x1698, 0x154a: 0x05db, 0x154b: 0x0b0f,
+	0x154c: 0x0b13, 0x154d: 0x0b17, 0x154e: 0x0b1f, 0x154f: 0x185f, 0x1550: 0x0b37, 0x1551: 0x16a2,
+	0x1552: 0x16a2, 0x1553: 0x11d7, 0x1554: 0x0b47, 0x1555: 0x0b47, 0x1556: 0x05df, 0x1557: 0x16c5,
+	0x1558: 0x1797, 0x1559: 0x0b57, 0x155a: 0x0b5f, 0x155b: 0x05e3, 0x155c: 0x0b73, 0x155d: 0x0b83,
+	0x155e: 0x0b87, 0x155f: 0x0b8f, 0x1560: 0x0b9f, 0x1561: 0x05eb, 0x1562: 0x05e7, 0x1563: 0x0ba3,
+	0x1564: 0x16a7, 0x1565: 0x0ba7, 0x1566: 0x0bbb, 0x1567: 0x0bbf, 0x1568: 0x0bc3, 0x1569: 0x0bbf,
+	0x156a: 0x0bcf, 0x156b: 0x0bd3, 0x156c: 0x0be3, 0x156d: 0x0bdb, 0x156e: 0x0bdf, 0x156f: 0x0be7,
+	0x1570: 0x0beb, 0x1571: 0x0bef, 0x1572: 0x0bfb, 0x1573: 0x0bff, 0x1574: 0x0c17, 0x1575: 0x0c1f,
+	0x1576: 0x0c2f, 0x1577: 0x0c43, 0x1578: 0x16b6, 0x1579: 0x0c3f, 0x157a: 0x0c33, 0x157b: 0x0c4b,
+	0x157c: 0x0c53, 0x157d: 0x0c67, 0x157e: 0x16bb, 0x157f: 0x0c6f,
 	// Block 0x56, offset 0x1580
-	0x1580: 0x106f, 0x1581: 0x17c9, 0x1582: 0x17c4, 0x1583: 0x17ce, 0x1584: 0x17d3, 0x1585: 0x1077,
-	0x1586: 0x107b, 0x1587: 0x107b, 0x1588: 0x1083, 0x1589: 0x06ab, 0x158a: 0x1087, 0x158b: 0x06af,
-	0x158c: 0x06b3, 0x158d: 0x17dd, 0x158e: 0x109b, 0x158f: 0x10a3, 0x1590: 0x10af, 0x1591: 0x06b7,
-	0x1592: 0x17e2, 0x1593: 0x10d3, 0x1594: 0x17e7, 0x1595: 0x17ec, 0x1596: 0x10f3, 0x1597: 0x110b,
-	0x1598: 0x06bb, 0x1599: 0x1113, 0x159a: 0x1117, 0x159b: 0x111b, 0x159c: 0x17f1, 0x159d: 0x17f6,
-	0x159e: 0x17f6, 0x159f: 0x1133, 0x15a0: 0x06bf, 0x15a1: 0x17fb, 0x15a2: 0x1147, 0x15a3: 0x114b,
-	0x15a4: 0x06c3, 0x15a5: 0x1800, 0x15a6: 0x1167, 0x15a7: 0x06c7, 0x15a8: 0x1177, 0x15a9: 0x116f,
-	0x15aa: 0x117f, 0x15ab: 0x180a, 0x15ac: 0x1197, 0x15ad: 0x06cb, 0x15ae: 0x11a3, 0x15af: 0x11ab,
-	0x15b0: 0x11bb, 0x15b1: 0x06cf, 0x15b2: 0x1814, 0x15b3: 0x1819, 0x15b4: 0x06d3, 0x15b5: 0x181e,
-	0x15b6: 0x11d3, 0x15b7: 0x1823, 0x15b8: 0x11df, 0x15b9: 0x11eb, 0x15ba: 0x11f3, 0x15bb: 0x1828,
-	0x15bc: 0x182d, 0x15bd: 0x1207, 0x15be: 0x1832, 0x15bf: 0x120f,
+	0x1580: 0x0c63, 0x1581: 0x0c5b, 0x1582: 0x05ef, 0x1583: 0x0c77, 0x1584: 0x0c7f, 0x1585: 0x0c87,
+	0x1586: 0x0c7b, 0x1587: 0x05f3, 0x1588: 0x0c97, 0x1589: 0x0c9f, 0x158a: 0x16c0, 0x158b: 0x0ccb,
+	0x158c: 0x0cff, 0x158d: 0x0cdb, 0x158e: 0x05ff, 0x158f: 0x0ce7, 0x1590: 0x05fb, 0x1591: 0x05f7,
+	0x1592: 0x07c3, 0x1593: 0x07c7, 0x1594: 0x0d03, 0x1595: 0x0ceb, 0x1596: 0x11ab, 0x1597: 0x0663,
+	0x1598: 0x0d0f, 0x1599: 0x0d13, 0x159a: 0x0d17, 0x159b: 0x0d2b, 0x159c: 0x0d23, 0x159d: 0x16d9,
+	0x159e: 0x0603, 0x159f: 0x0d3f, 0x15a0: 0x0d33, 0x15a1: 0x0d4f, 0x15a2: 0x0d57, 0x15a3: 0x16e3,
+	0x15a4: 0x0d5b, 0x15a5: 0x0d47, 0x15a6: 0x0d63, 0x15a7: 0x0607, 0x15a8: 0x0d67, 0x15a9: 0x0d6b,
+	0x15aa: 0x0d6f, 0x15ab: 0x0d7b, 0x15ac: 0x16e8, 0x15ad: 0x0d83, 0x15ae: 0x060b, 0x15af: 0x0d8f,
+	0x15b0: 0x16ed, 0x15b1: 0x0d93, 0x15b2: 0x060f, 0x15b3: 0x0d9f, 0x15b4: 0x0dab, 0x15b5: 0x0db7,
+	0x15b6: 0x0dbb, 0x15b7: 0x16f2, 0x15b8: 0x1689, 0x15b9: 0x16f7, 0x15ba: 0x0ddb, 0x15bb: 0x16fc,
+	0x15bc: 0x0de7, 0x15bd: 0x0def, 0x15be: 0x0ddf, 0x15bf: 0x0dfb,
 	// Block 0x57, offset 0x15c0
-	0x15c0: 0x1742, 0x15c1: 0x06d7, 0x15c2: 0x1227, 0x15c3: 0x122b, 0x15c4: 0x06df, 0x15c5: 0x122f,
-	0x15c6: 0x0aab, 0x15c7: 0x1837, 0x15c8: 0x183c, 0x15c9: 0x1747, 0x15ca: 0x174c, 0x15cb: 0x124f,
-	0x15cc: 0x1253, 0x15cd: 0x146b, 0x15ce: 0x06e3, 0x15cf: 0x127f, 0x15d0: 0x127b, 0x15d1: 0x1283,
-	0x15d2: 0x08b7, 0x15d3: 0x1287, 0x15d4: 0x128b, 0x15d5: 0x128f, 0x15d6: 0x1297, 0x15d7: 0x1841,
-	0x15d8: 0x1293, 0x15d9: 0x129b, 0x15da: 0x12af, 0x15db: 0x12b3, 0x15dc: 0x129f, 0x15dd: 0x12b7,
-	0x15de: 0x12cb, 0x15df: 0x12df, 0x15e0: 0x12ab, 0x15e1: 0x12bf, 0x15e2: 0x12c3, 0x15e3: 0x12c7,
-	0x15e4: 0x1846, 0x15e5: 0x1850, 0x15e6: 0x184b, 0x15e7: 0x06e7, 0x15e8: 0x12e7, 0x15e9: 0x12eb,
-	0x15ea: 0x12f3, 0x15eb: 0x1864, 0x15ec: 0x12f7, 0x15ed: 0x1855, 0x15ee: 0x06eb, 0x15ef: 0x06ef,
-	0x15f0: 0x185a, 0x15f1: 0x185f, 0x15f2: 0x06f3, 0x15f3: 0x1317, 0x15f4: 0x131b, 0x15f5: 0x131f,
-	0x15f6: 0x1323, 0x15f7: 0x132f, 0x15f8: 0x132b, 0x15f9: 0x1337, 0x15fa: 0x1333, 0x15fb: 0x1343,
-	0x15fc: 0x133b, 0x15fd: 0x133f, 0x15fe: 0x1347, 0x15ff: 0x06f7,
+	0x15c0: 0x0e0b, 0x15c1: 0x0e1b, 0x15c2: 0x0e0f, 0x15c3: 0x0e13, 0x15c4: 0x0e1f, 0x15c5: 0x0e23,
+	0x15c6: 0x1701, 0x15c7: 0x0e07, 0x15c8: 0x0e3b, 0x15c9: 0x0e3f, 0x15ca: 0x0613, 0x15cb: 0x0e53,
+	0x15cc: 0x0e4f, 0x15cd: 0x1706, 0x15ce: 0x0e33, 0x15cf: 0x0e6f, 0x15d0: 0x170b, 0x15d1: 0x1710,
+	0x15d2: 0x0e73, 0x15d3: 0x0e87, 0x15d4: 0x0e83, 0x15d5: 0x0e7f, 0x15d6: 0x0617, 0x15d7: 0x0e8b,
+	0x15d8: 0x0e9b, 0x15d9: 0x0e97, 0x15da: 0x0ea3, 0x15db: 0x164d, 0x15dc: 0x0eb3, 0x15dd: 0x1715,
+	0x15de: 0x0ebf, 0x15df: 0x171f, 0x15e0: 0x0ed3, 0x15e1: 0x0edf, 0x15e2: 0x0ef3, 0x15e3: 0x1724,
+	0x15e4: 0x0f07, 0x15e5: 0x0f0b, 0x15e6: 0x1729, 0x15e7: 0x172e, 0x15e8: 0x0f27, 0x15e9: 0x0f37,
+	0x15ea: 0x061b, 0x15eb: 0x0f3b, 0x15ec: 0x061f, 0x15ed: 0x061f, 0x15ee: 0x0f53, 0x15ef: 0x0f57,
+	0x15f0: 0x0f5f, 0x15f1: 0x0f63, 0x15f2: 0x0f6f, 0x15f3: 0x0623, 0x15f4: 0x0f87, 0x15f5: 0x1733,
+	0x15f6: 0x0fa3, 0x15f7: 0x1738, 0x15f8: 0x0faf, 0x15f9: 0x169d, 0x15fa: 0x0fbf, 0x15fb: 0x173d,
+	0x15fc: 0x1742, 0x15fd: 0x1747, 0x15fe: 0x0627, 0x15ff: 0x062b,
 	// Block 0x58, offset 0x1600
-	0x1600: 0x134f, 0x1601: 0x1353, 0x1602: 0x06fb, 0x1603: 0x1363, 0x1604: 0x1367, 0x1605: 0x1869,
-	0x1606: 0x1373, 0x1607: 0x1377, 0x1608: 0x06ff, 0x1609: 0x1383, 0x160a: 0x0633, 0x160b: 0x186e,
-	0x160c: 0x1873, 0x160d: 0x0703, 0x160e: 0x0707, 0x160f: 0x13af, 0x1610: 0x13c7, 0x1611: 0x13e3,
-	0x1612: 0x13f3, 0x1613: 0x1878, 0x1614: 0x1407, 0x1615: 0x140b, 0x1616: 0x1423, 0x1617: 0x142f,
-	0x1618: 0x1882, 0x1619: 0x16d4, 0x161a: 0x143b, 0x161b: 0x1437, 0x161c: 0x1443, 0x161d: 0x16d9,
-	0x161e: 0x144f, 0x161f: 0x145b, 0x1620: 0x1887, 0x1621: 0x188c, 0x1622: 0x149b, 0x1623: 0x14a7,
-	0x1624: 0x14af, 0x1625: 0x1891, 0x1626: 0x14b3, 0x1627: 0x14db, 0x1628: 0x14e7, 0x1629: 0x14eb,
-	0x162a: 0x14e3, 0x162b: 0x14f7, 0x162c: 0x14fb, 0x162d: 0x1896, 0x162e: 0x1507, 0x162f: 0x070b,
-	0x1630: 0x150f, 0x1631: 0x189b, 0x1632: 0x070f, 0x1633: 0x1547, 0x1634: 0x0b3b, 0x1635: 0x155f,
-	0x1636: 0x18a0, 0x1637: 0x18aa, 0x1638: 0x0713, 0x1639: 0x0717, 0x163a: 0x1587, 0x163b: 0x18af,
-	0x163c: 0x071b, 0x163d: 0x18b4, 0x163e: 0x159f, 0x163f: 0x159f,
+	0x1600: 0x0ff7, 0x1601: 0x1751, 0x1602: 0x174c, 0x1603: 0x1756, 0x1604: 0x175b, 0x1605: 0x0fff,
+	0x1606: 0x1003, 0x1607: 0x1003, 0x1608: 0x100b, 0x1609: 0x0633, 0x160a: 0x100f, 0x160b: 0x0637,
+	0x160c: 0x063b, 0x160d: 0x1765, 0x160e: 0x1023, 0x160f: 0x102b, 0x1610: 0x1037, 0x1611: 0x063f,
+	0x1612: 0x176a, 0x1613: 0x105b, 0x1614: 0x176f, 0x1615: 0x1774, 0x1616: 0x107b, 0x1617: 0x1093,
+	0x1618: 0x0643, 0x1619: 0x109b, 0x161a: 0x109f, 0x161b: 0x10a3, 0x161c: 0x1779, 0x161d: 0x177e,
+	0x161e: 0x177e, 0x161f: 0x10bb, 0x1620: 0x0647, 0x1621: 0x1783, 0x1622: 0x10cf, 0x1623: 0x10d3,
+	0x1624: 0x064b, 0x1625: 0x1788, 0x1626: 0x10ef, 0x1627: 0x064f, 0x1628: 0x10ff, 0x1629: 0x10f7,
+	0x162a: 0x1107, 0x162b: 0x1792, 0x162c: 0x111f, 0x162d: 0x0653, 0x162e: 0x112b, 0x162f: 0x1133,
+	0x1630: 0x1143, 0x1631: 0x0657, 0x1632: 0x179c, 0x1633: 0x17a1, 0x1634: 0x065b, 0x1635: 0x17a6,
+	0x1636: 0x115b, 0x1637: 0x17ab, 0x1638: 0x1167, 0x1639: 0x1173, 0x163a: 0x117b, 0x163b: 0x17b0,
+	0x163c: 0x17b5, 0x163d: 0x118f, 0x163e: 0x17ba, 0x163f: 0x1197,
 	// Block 0x59, offset 0x1640
-	0x1640: 0x15a7, 0x1641: 0x18b9, 0x1642: 0x15bf, 0x1643: 0x071f, 0x1644: 0x15cf, 0x1645: 0x15db,
-	0x1646: 0x15e3, 0x1647: 0x15eb, 0x1648: 0x0723, 0x1649: 0x18be, 0x164a: 0x15ff, 0x164b: 0x161b,
-	0x164c: 0x1627, 0x164d: 0x0727, 0x164e: 0x072b, 0x164f: 0x162b, 0x1650: 0x18c3, 0x1651: 0x072f,
-	0x1652: 0x18c8, 0x1653: 0x18cd, 0x1654: 0x18d2, 0x1655: 0x164f, 0x1656: 0x0733, 0x1657: 0x1663,
-	0x1658: 0x166b, 0x1659: 0x166f, 0x165a: 0x1677, 0x165b: 0x167f, 0x165c: 0x1687, 0x165d: 0x18dc,
+	0x1640: 0x16ca, 0x1641: 0x065f, 0x1642: 0x11af, 0x1643: 0x11b3, 0x1644: 0x0667, 0x1645: 0x11b7,
+	0x1646: 0x0a33, 0x1647: 0x17bf, 0x1648: 0x17c4, 0x1649: 0x16cf, 0x164a: 0x16d4, 0x164b: 0x11d7,
+	0x164c: 0x11db, 0x164d: 0x13f3, 0x164e: 0x066b, 0x164f: 0x1207, 0x1650: 0x1203, 0x1651: 0x120b,
+	0x1652: 0x083f, 0x1653: 0x120f, 0x1654: 0x1213, 0x1655: 0x1217, 0x1656: 0x121f, 0x1657: 0x17c9,
+	0x1658: 0x121b, 0x1659: 0x1223, 0x165a: 0x1237, 0x165b: 0x123b, 0x165c: 0x1227, 0x165d: 0x123f,
+	0x165e: 0x1253, 0x165f: 0x1267, 0x1660: 0x1233, 0x1661: 0x1247, 0x1662: 0x124b, 0x1663: 0x124f,
+	0x1664: 0x17ce, 0x1665: 0x17d8, 0x1666: 0x17d3, 0x1667: 0x066f, 0x1668: 0x126f, 0x1669: 0x1273,
+	0x166a: 0x127b, 0x166b: 0x17ec, 0x166c: 0x127f, 0x166d: 0x17dd, 0x166e: 0x0673, 0x166f: 0x0677,
+	0x1670: 0x17e2, 0x1671: 0x17e7, 0x1672: 0x067b, 0x1673: 0x129f, 0x1674: 0x12a3, 0x1675: 0x12a7,
+	0x1676: 0x12ab, 0x1677: 0x12b7, 0x1678: 0x12b3, 0x1679: 0x12bf, 0x167a: 0x12bb, 0x167b: 0x12cb,
+	0x167c: 0x12c3, 0x167d: 0x12c7, 0x167e: 0x12cf, 0x167f: 0x067f,
+	// Block 0x5a, offset 0x1680
+	0x1680: 0x12d7, 0x1681: 0x12db, 0x1682: 0x0683, 0x1683: 0x12eb, 0x1684: 0x12ef, 0x1685: 0x17f1,
+	0x1686: 0x12fb, 0x1687: 0x12ff, 0x1688: 0x0687, 0x1689: 0x130b, 0x168a: 0x05bb, 0x168b: 0x17f6,
+	0x168c: 0x17fb, 0x168d: 0x068b, 0x168e: 0x068f, 0x168f: 0x1337, 0x1690: 0x134f, 0x1691: 0x136b,
+	0x1692: 0x137b, 0x1693: 0x1800, 0x1694: 0x138f, 0x1695: 0x1393, 0x1696: 0x13ab, 0x1697: 0x13b7,
+	0x1698: 0x180a, 0x1699: 0x165c, 0x169a: 0x13c3, 0x169b: 0x13bf, 0x169c: 0x13cb, 0x169d: 0x1661,
+	0x169e: 0x13d7, 0x169f: 0x13e3, 0x16a0: 0x180f, 0x16a1: 0x1814, 0x16a2: 0x1423, 0x16a3: 0x142f,
+	0x16a4: 0x1437, 0x16a5: 0x1819, 0x16a6: 0x143b, 0x16a7: 0x1463, 0x16a8: 0x146f, 0x16a9: 0x1473,
+	0x16aa: 0x146b, 0x16ab: 0x147f, 0x16ac: 0x1483, 0x16ad: 0x181e, 0x16ae: 0x148f, 0x16af: 0x0693,
+	0x16b0: 0x1497, 0x16b1: 0x1823, 0x16b2: 0x0697, 0x16b3: 0x14cf, 0x16b4: 0x0ac3, 0x16b5: 0x14e7,
+	0x16b6: 0x1828, 0x16b7: 0x1832, 0x16b8: 0x069b, 0x16b9: 0x069f, 0x16ba: 0x150f, 0x16bb: 0x1837,
+	0x16bc: 0x06a3, 0x16bd: 0x183c, 0x16be: 0x1527, 0x16bf: 0x1527,
+	// Block 0x5b, offset 0x16c0
+	0x16c0: 0x152f, 0x16c1: 0x1841, 0x16c2: 0x1547, 0x16c3: 0x06a7, 0x16c4: 0x1557, 0x16c5: 0x1563,
+	0x16c6: 0x156b, 0x16c7: 0x1573, 0x16c8: 0x06ab, 0x16c9: 0x1846, 0x16ca: 0x1587, 0x16cb: 0x15a3,
+	0x16cc: 0x15af, 0x16cd: 0x06af, 0x16ce: 0x06b3, 0x16cf: 0x15b3, 0x16d0: 0x184b, 0x16d1: 0x06b7,
+	0x16d2: 0x1850, 0x16d3: 0x1855, 0x16d4: 0x185a, 0x16d5: 0x15d7, 0x16d6: 0x06bb, 0x16d7: 0x15eb,
+	0x16d8: 0x15f3, 0x16d9: 0x15f7, 0x16da: 0x15ff, 0x16db: 0x1607, 0x16dc: 0x160f, 0x16dd: 0x1864,
 }
 
 // nfkcIndex: 22 blocks, 1408 entries, 1408 bytes
@@ -5466,77 +5514,77 @@
 	// Block 0x1, offset 0x40
 	// Block 0x2, offset 0x80
 	// Block 0x3, offset 0xc0
-	0xc2: 0x58, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x59, 0xc7: 0x04,
-	0xc8: 0x05, 0xca: 0x5a, 0xcb: 0x5b, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09,
-	0xd0: 0x0a, 0xd1: 0x5c, 0xd2: 0x5d, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x5e,
-	0xd8: 0x5f, 0xd9: 0x0d, 0xdb: 0x60, 0xdc: 0x61, 0xdd: 0x62, 0xdf: 0x63,
+	0xc2: 0x5a, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x5b, 0xc7: 0x04,
+	0xc8: 0x05, 0xca: 0x5c, 0xcb: 0x5d, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09,
+	0xd0: 0x0a, 0xd1: 0x5e, 0xd2: 0x5f, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x60,
+	0xd8: 0x61, 0xd9: 0x0d, 0xdb: 0x62, 0xdc: 0x63, 0xdd: 0x64, 0xdf: 0x65,
 	0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,
 	0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,
 	0xf0: 0x13,
 	// Block 0x4, offset 0x100
-	0x120: 0x64, 0x121: 0x65, 0x123: 0x66, 0x124: 0x67, 0x125: 0x68, 0x126: 0x69, 0x127: 0x6a,
-	0x128: 0x6b, 0x129: 0x6c, 0x12a: 0x6d, 0x12b: 0x6e, 0x12c: 0x69, 0x12d: 0x6f, 0x12e: 0x70, 0x12f: 0x71,
-	0x131: 0x72, 0x132: 0x73, 0x133: 0x74, 0x134: 0x75, 0x135: 0x76, 0x137: 0x77,
-	0x138: 0x78, 0x139: 0x79, 0x13a: 0x7a, 0x13b: 0x7b, 0x13c: 0x7c, 0x13d: 0x7d, 0x13e: 0x7e, 0x13f: 0x7f,
+	0x120: 0x66, 0x121: 0x67, 0x123: 0x68, 0x124: 0x69, 0x125: 0x6a, 0x126: 0x6b, 0x127: 0x6c,
+	0x128: 0x6d, 0x129: 0x6e, 0x12a: 0x6f, 0x12b: 0x70, 0x12c: 0x6b, 0x12d: 0x71, 0x12e: 0x72, 0x12f: 0x73,
+	0x131: 0x74, 0x132: 0x75, 0x133: 0x76, 0x134: 0x77, 0x135: 0x78, 0x137: 0x79,
+	0x138: 0x7a, 0x139: 0x7b, 0x13a: 0x7c, 0x13b: 0x7d, 0x13c: 0x7e, 0x13d: 0x7f, 0x13e: 0x80, 0x13f: 0x81,
 	// Block 0x5, offset 0x140
-	0x140: 0x80, 0x142: 0x81, 0x143: 0x82, 0x144: 0x83, 0x145: 0x84, 0x146: 0x85, 0x147: 0x86,
-	0x14d: 0x87,
-	0x15c: 0x88, 0x15f: 0x89,
-	0x162: 0x8a, 0x164: 0x8b,
-	0x168: 0x8c, 0x169: 0x8d, 0x16a: 0x8e, 0x16c: 0x0e, 0x16d: 0x8f, 0x16e: 0x90, 0x16f: 0x91,
-	0x170: 0x92, 0x173: 0x93, 0x174: 0x94, 0x175: 0x0f, 0x176: 0x10, 0x177: 0x95,
+	0x140: 0x82, 0x142: 0x83, 0x143: 0x84, 0x144: 0x85, 0x145: 0x86, 0x146: 0x87, 0x147: 0x88,
+	0x14d: 0x89,
+	0x15c: 0x8a, 0x15f: 0x8b,
+	0x162: 0x8c, 0x164: 0x8d,
+	0x168: 0x8e, 0x169: 0x8f, 0x16a: 0x90, 0x16c: 0x0e, 0x16d: 0x91, 0x16e: 0x92, 0x16f: 0x93,
+	0x170: 0x94, 0x173: 0x95, 0x174: 0x96, 0x175: 0x0f, 0x176: 0x10, 0x177: 0x97,
 	0x178: 0x11, 0x179: 0x12, 0x17a: 0x13, 0x17b: 0x14, 0x17c: 0x15, 0x17d: 0x16, 0x17e: 0x17, 0x17f: 0x18,
 	// Block 0x6, offset 0x180
-	0x180: 0x96, 0x181: 0x97, 0x182: 0x98, 0x183: 0x99, 0x184: 0x19, 0x185: 0x1a, 0x186: 0x9a, 0x187: 0x9b,
-	0x188: 0x9c, 0x189: 0x1b, 0x18a: 0x1c, 0x18b: 0x9d, 0x18c: 0x9e,
-	0x191: 0x1d, 0x192: 0x1e, 0x193: 0x9f,
-	0x1a8: 0xa0, 0x1a9: 0xa1, 0x1ab: 0xa2,
-	0x1b1: 0xa3, 0x1b3: 0xa4, 0x1b5: 0xa5, 0x1b7: 0xa6,
-	0x1ba: 0xa7, 0x1bb: 0xa8, 0x1bc: 0x1f, 0x1bd: 0x20, 0x1be: 0x21, 0x1bf: 0xa9,
+	0x180: 0x98, 0x181: 0x99, 0x182: 0x9a, 0x183: 0x9b, 0x184: 0x19, 0x185: 0x1a, 0x186: 0x9c, 0x187: 0x9d,
+	0x188: 0x9e, 0x189: 0x1b, 0x18a: 0x1c, 0x18b: 0x9f, 0x18c: 0xa0,
+	0x191: 0x1d, 0x192: 0x1e, 0x193: 0xa1,
+	0x1a8: 0xa2, 0x1a9: 0xa3, 0x1ab: 0xa4,
+	0x1b1: 0xa5, 0x1b3: 0xa6, 0x1b5: 0xa7, 0x1b7: 0xa8,
+	0x1ba: 0xa9, 0x1bb: 0xaa, 0x1bc: 0x1f, 0x1bd: 0x20, 0x1be: 0x21, 0x1bf: 0xab,
 	// Block 0x7, offset 0x1c0
-	0x1c0: 0xaa, 0x1c1: 0x22, 0x1c2: 0x23, 0x1c3: 0x24, 0x1c4: 0xab, 0x1c5: 0xac, 0x1c6: 0x25,
-	0x1c8: 0x26, 0x1c9: 0x27, 0x1ca: 0x28, 0x1cb: 0x29, 0x1cc: 0x2a, 0x1cd: 0x2b, 0x1ce: 0x2c, 0x1cf: 0x2d,
+	0x1c0: 0xac, 0x1c1: 0x22, 0x1c2: 0x23, 0x1c3: 0x24, 0x1c4: 0xad, 0x1c5: 0x25, 0x1c6: 0x26,
+	0x1c8: 0x27, 0x1c9: 0x28, 0x1ca: 0x29, 0x1cb: 0x2a, 0x1cc: 0x2b, 0x1cd: 0x2c, 0x1ce: 0x2d, 0x1cf: 0x2e,
 	// Block 0x8, offset 0x200
-	0x219: 0xad, 0x21a: 0xae, 0x21b: 0xaf, 0x21d: 0xb0, 0x21f: 0xb1,
-	0x220: 0xb2, 0x223: 0xb3, 0x224: 0xb4, 0x225: 0xb5, 0x226: 0xb6, 0x227: 0xb7,
-	0x22a: 0xb8, 0x22b: 0xb9, 0x22d: 0xba, 0x22f: 0xbb,
-	0x230: 0xbc, 0x231: 0xbd, 0x232: 0xbe, 0x233: 0xbf, 0x234: 0xc0, 0x235: 0xc1, 0x236: 0xc2, 0x237: 0xbc,
-	0x238: 0xbd, 0x239: 0xbe, 0x23a: 0xbf, 0x23b: 0xc0, 0x23c: 0xc1, 0x23d: 0xc2, 0x23e: 0xbc, 0x23f: 0xbd,
+	0x219: 0xae, 0x21a: 0xaf, 0x21b: 0xb0, 0x21d: 0xb1, 0x21f: 0xb2,
+	0x220: 0xb3, 0x223: 0xb4, 0x224: 0xb5, 0x225: 0xb6, 0x226: 0xb7, 0x227: 0xb8,
+	0x22a: 0xb9, 0x22b: 0xba, 0x22d: 0xbb, 0x22f: 0xbc,
+	0x230: 0xbd, 0x231: 0xbe, 0x232: 0xbf, 0x233: 0xc0, 0x234: 0xc1, 0x235: 0xc2, 0x236: 0xc3, 0x237: 0xbd,
+	0x238: 0xbe, 0x239: 0xbf, 0x23a: 0xc0, 0x23b: 0xc1, 0x23c: 0xc2, 0x23d: 0xc3, 0x23e: 0xbd, 0x23f: 0xbe,
 	// Block 0x9, offset 0x240
-	0x240: 0xbe, 0x241: 0xbf, 0x242: 0xc0, 0x243: 0xc1, 0x244: 0xc2, 0x245: 0xbc, 0x246: 0xbd, 0x247: 0xbe,
-	0x248: 0xbf, 0x249: 0xc0, 0x24a: 0xc1, 0x24b: 0xc2, 0x24c: 0xbc, 0x24d: 0xbd, 0x24e: 0xbe, 0x24f: 0xbf,
-	0x250: 0xc0, 0x251: 0xc1, 0x252: 0xc2, 0x253: 0xbc, 0x254: 0xbd, 0x255: 0xbe, 0x256: 0xbf, 0x257: 0xc0,
-	0x258: 0xc1, 0x259: 0xc2, 0x25a: 0xbc, 0x25b: 0xbd, 0x25c: 0xbe, 0x25d: 0xbf, 0x25e: 0xc0, 0x25f: 0xc1,
-	0x260: 0xc2, 0x261: 0xbc, 0x262: 0xbd, 0x263: 0xbe, 0x264: 0xbf, 0x265: 0xc0, 0x266: 0xc1, 0x267: 0xc2,
-	0x268: 0xbc, 0x269: 0xbd, 0x26a: 0xbe, 0x26b: 0xbf, 0x26c: 0xc0, 0x26d: 0xc1, 0x26e: 0xc2, 0x26f: 0xbc,
-	0x270: 0xbd, 0x271: 0xbe, 0x272: 0xbf, 0x273: 0xc0, 0x274: 0xc1, 0x275: 0xc2, 0x276: 0xbc, 0x277: 0xbd,
-	0x278: 0xbe, 0x279: 0xbf, 0x27a: 0xc0, 0x27b: 0xc1, 0x27c: 0xc2, 0x27d: 0xbc, 0x27e: 0xbd, 0x27f: 0xbe,
+	0x240: 0xbf, 0x241: 0xc0, 0x242: 0xc1, 0x243: 0xc2, 0x244: 0xc3, 0x245: 0xbd, 0x246: 0xbe, 0x247: 0xbf,
+	0x248: 0xc0, 0x249: 0xc1, 0x24a: 0xc2, 0x24b: 0xc3, 0x24c: 0xbd, 0x24d: 0xbe, 0x24e: 0xbf, 0x24f: 0xc0,
+	0x250: 0xc1, 0x251: 0xc2, 0x252: 0xc3, 0x253: 0xbd, 0x254: 0xbe, 0x255: 0xbf, 0x256: 0xc0, 0x257: 0xc1,
+	0x258: 0xc2, 0x259: 0xc3, 0x25a: 0xbd, 0x25b: 0xbe, 0x25c: 0xbf, 0x25d: 0xc0, 0x25e: 0xc1, 0x25f: 0xc2,
+	0x260: 0xc3, 0x261: 0xbd, 0x262: 0xbe, 0x263: 0xbf, 0x264: 0xc0, 0x265: 0xc1, 0x266: 0xc2, 0x267: 0xc3,
+	0x268: 0xbd, 0x269: 0xbe, 0x26a: 0xbf, 0x26b: 0xc0, 0x26c: 0xc1, 0x26d: 0xc2, 0x26e: 0xc3, 0x26f: 0xbd,
+	0x270: 0xbe, 0x271: 0xbf, 0x272: 0xc0, 0x273: 0xc1, 0x274: 0xc2, 0x275: 0xc3, 0x276: 0xbd, 0x277: 0xbe,
+	0x278: 0xbf, 0x279: 0xc0, 0x27a: 0xc1, 0x27b: 0xc2, 0x27c: 0xc3, 0x27d: 0xbd, 0x27e: 0xbe, 0x27f: 0xbf,
 	// Block 0xa, offset 0x280
-	0x280: 0xbf, 0x281: 0xc0, 0x282: 0xc1, 0x283: 0xc2, 0x284: 0xbc, 0x285: 0xbd, 0x286: 0xbe, 0x287: 0xbf,
-	0x288: 0xc0, 0x289: 0xc1, 0x28a: 0xc2, 0x28b: 0xbc, 0x28c: 0xbd, 0x28d: 0xbe, 0x28e: 0xbf, 0x28f: 0xc0,
-	0x290: 0xc1, 0x291: 0xc2, 0x292: 0xbc, 0x293: 0xbd, 0x294: 0xbe, 0x295: 0xbf, 0x296: 0xc0, 0x297: 0xc1,
-	0x298: 0xc2, 0x299: 0xbc, 0x29a: 0xbd, 0x29b: 0xbe, 0x29c: 0xbf, 0x29d: 0xc0, 0x29e: 0xc1, 0x29f: 0xc2,
-	0x2a0: 0xbc, 0x2a1: 0xbd, 0x2a2: 0xbe, 0x2a3: 0xbf, 0x2a4: 0xc0, 0x2a5: 0xc1, 0x2a6: 0xc2, 0x2a7: 0xbc,
-	0x2a8: 0xbd, 0x2a9: 0xbe, 0x2aa: 0xbf, 0x2ab: 0xc0, 0x2ac: 0xc1, 0x2ad: 0xc2, 0x2ae: 0xbc, 0x2af: 0xbd,
-	0x2b0: 0xbe, 0x2b1: 0xbf, 0x2b2: 0xc0, 0x2b3: 0xc1, 0x2b4: 0xc2, 0x2b5: 0xbc, 0x2b6: 0xbd, 0x2b7: 0xbe,
-	0x2b8: 0xbf, 0x2b9: 0xc0, 0x2ba: 0xc1, 0x2bb: 0xc2, 0x2bc: 0xbc, 0x2bd: 0xbd, 0x2be: 0xbe, 0x2bf: 0xbf,
+	0x280: 0xc0, 0x281: 0xc1, 0x282: 0xc2, 0x283: 0xc3, 0x284: 0xbd, 0x285: 0xbe, 0x286: 0xbf, 0x287: 0xc0,
+	0x288: 0xc1, 0x289: 0xc2, 0x28a: 0xc3, 0x28b: 0xbd, 0x28c: 0xbe, 0x28d: 0xbf, 0x28e: 0xc0, 0x28f: 0xc1,
+	0x290: 0xc2, 0x291: 0xc3, 0x292: 0xbd, 0x293: 0xbe, 0x294: 0xbf, 0x295: 0xc0, 0x296: 0xc1, 0x297: 0xc2,
+	0x298: 0xc3, 0x299: 0xbd, 0x29a: 0xbe, 0x29b: 0xbf, 0x29c: 0xc0, 0x29d: 0xc1, 0x29e: 0xc2, 0x29f: 0xc3,
+	0x2a0: 0xbd, 0x2a1: 0xbe, 0x2a2: 0xbf, 0x2a3: 0xc0, 0x2a4: 0xc1, 0x2a5: 0xc2, 0x2a6: 0xc3, 0x2a7: 0xbd,
+	0x2a8: 0xbe, 0x2a9: 0xbf, 0x2aa: 0xc0, 0x2ab: 0xc1, 0x2ac: 0xc2, 0x2ad: 0xc3, 0x2ae: 0xbd, 0x2af: 0xbe,
+	0x2b0: 0xbf, 0x2b1: 0xc0, 0x2b2: 0xc1, 0x2b3: 0xc2, 0x2b4: 0xc3, 0x2b5: 0xbd, 0x2b6: 0xbe, 0x2b7: 0xbf,
+	0x2b8: 0xc0, 0x2b9: 0xc1, 0x2ba: 0xc2, 0x2bb: 0xc3, 0x2bc: 0xbd, 0x2bd: 0xbe, 0x2be: 0xbf, 0x2bf: 0xc0,
 	// Block 0xb, offset 0x2c0
-	0x2c0: 0xc0, 0x2c1: 0xc1, 0x2c2: 0xc2, 0x2c3: 0xbc, 0x2c4: 0xbd, 0x2c5: 0xbe, 0x2c6: 0xbf, 0x2c7: 0xc0,
-	0x2c8: 0xc1, 0x2c9: 0xc2, 0x2ca: 0xbc, 0x2cb: 0xbd, 0x2cc: 0xbe, 0x2cd: 0xbf, 0x2ce: 0xc0, 0x2cf: 0xc1,
-	0x2d0: 0xc2, 0x2d1: 0xbc, 0x2d2: 0xbd, 0x2d3: 0xbe, 0x2d4: 0xbf, 0x2d5: 0xc0, 0x2d6: 0xc1, 0x2d7: 0xc2,
-	0x2d8: 0xbc, 0x2d9: 0xbd, 0x2da: 0xbe, 0x2db: 0xbf, 0x2dc: 0xc0, 0x2dd: 0xc1, 0x2de: 0xc3,
+	0x2c0: 0xc1, 0x2c1: 0xc2, 0x2c2: 0xc3, 0x2c3: 0xbd, 0x2c4: 0xbe, 0x2c5: 0xbf, 0x2c6: 0xc0, 0x2c7: 0xc1,
+	0x2c8: 0xc2, 0x2c9: 0xc3, 0x2ca: 0xbd, 0x2cb: 0xbe, 0x2cc: 0xbf, 0x2cd: 0xc0, 0x2ce: 0xc1, 0x2cf: 0xc2,
+	0x2d0: 0xc3, 0x2d1: 0xbd, 0x2d2: 0xbe, 0x2d3: 0xbf, 0x2d4: 0xc0, 0x2d5: 0xc1, 0x2d6: 0xc2, 0x2d7: 0xc3,
+	0x2d8: 0xbd, 0x2d9: 0xbe, 0x2da: 0xbf, 0x2db: 0xc0, 0x2dc: 0xc1, 0x2dd: 0xc2, 0x2de: 0xc4,
 	// Block 0xc, offset 0x300
-	0x324: 0x2e, 0x325: 0x2f, 0x326: 0x30, 0x327: 0x31,
-	0x328: 0x32, 0x329: 0x33, 0x32a: 0x34, 0x32b: 0x35, 0x32c: 0x36, 0x32d: 0x37, 0x32e: 0x38, 0x32f: 0x39,
-	0x330: 0x3a, 0x331: 0x3b, 0x332: 0x3c, 0x333: 0x3d, 0x334: 0x3e, 0x335: 0x3f, 0x336: 0x40, 0x337: 0x41,
-	0x338: 0x42, 0x339: 0x43, 0x33a: 0x44, 0x33b: 0x45, 0x33c: 0xc4, 0x33d: 0x46, 0x33e: 0x47, 0x33f: 0xc5,
+	0x324: 0x2f, 0x325: 0x30, 0x326: 0x31, 0x327: 0x32,
+	0x328: 0x33, 0x329: 0x34, 0x32a: 0x35, 0x32b: 0x36, 0x32c: 0x37, 0x32d: 0x38, 0x32e: 0x39, 0x32f: 0x3a,
+	0x330: 0x3b, 0x331: 0x3c, 0x332: 0x3d, 0x333: 0x3e, 0x334: 0x3f, 0x335: 0x40, 0x336: 0x41, 0x337: 0x42,
+	0x338: 0x43, 0x339: 0x44, 0x33a: 0x45, 0x33b: 0x46, 0x33c: 0xc5, 0x33d: 0x47, 0x33e: 0x48, 0x33f: 0x49,
 	// Block 0xd, offset 0x340
 	0x347: 0xc6,
 	0x34b: 0xc7, 0x34d: 0xc8,
 	0x368: 0xc9, 0x36b: 0xca,
 	// Block 0xe, offset 0x380
-	0x381: 0xcb, 0x382: 0xcc, 0x384: 0xcd, 0x385: 0xb6, 0x387: 0xb7,
-	0x388: 0xce, 0x38b: 0xcf, 0x38c: 0x69, 0x38d: 0xd0,
+	0x381: 0xcb, 0x382: 0xcc, 0x384: 0xcd, 0x385: 0xb7, 0x387: 0xb8,
+	0x388: 0xce, 0x38b: 0xcf, 0x38c: 0x6b, 0x38d: 0xd0,
 	0x392: 0xd1, 0x393: 0xd2, 0x396: 0xd3, 0x397: 0xd4,
 	0x398: 0xd5, 0x39a: 0xd6,
 	// Block 0xf, offset 0x3c0
@@ -5547,46 +5595,46 @@
 	0x445: 0xda, 0x446: 0xdb, 0x447: 0xdc,
 	0x449: 0xdd,
 	0x450: 0xde, 0x451: 0xdf, 0x452: 0xe0, 0x453: 0xe1, 0x454: 0xe2, 0x455: 0xe3, 0x456: 0xe4, 0x457: 0xe5,
-	0x458: 0xe6, 0x459: 0xe7, 0x45a: 0x48, 0x45b: 0xe8, 0x45c: 0xe9, 0x45d: 0xea, 0x45e: 0xeb, 0x45f: 0x49,
+	0x458: 0xe6, 0x459: 0xe7, 0x45a: 0x4a, 0x45b: 0xe8, 0x45c: 0xe9, 0x45d: 0xea, 0x45e: 0xeb, 0x45f: 0x4b,
 	// Block 0x12, offset 0x480
 	0x4a3: 0xec,
-	0x4b8: 0x4a, 0x4b9: 0x4b, 0x4ba: 0x4c,
+	0x4b8: 0x4c, 0x4b9: 0x4d, 0x4ba: 0x4e,
 	// Block 0x13, offset 0x4c0
-	0x4c4: 0x4d, 0x4c5: 0xed, 0x4c6: 0xee,
-	0x4c8: 0x4e, 0x4c9: 0xef,
+	0x4c4: 0x4f, 0x4c5: 0xed, 0x4c6: 0xee,
+	0x4c8: 0x50, 0x4c9: 0xef,
 	// Block 0x14, offset 0x500
-	0x520: 0x4f, 0x521: 0x50, 0x522: 0x51, 0x523: 0x52, 0x524: 0x53, 0x525: 0x54, 0x526: 0x55, 0x527: 0x56,
-	0x528: 0x57,
+	0x520: 0x51, 0x521: 0x52, 0x522: 0x53, 0x523: 0x54, 0x524: 0x55, 0x525: 0x56, 0x526: 0x57, 0x527: 0x58,
+	0x528: 0x59,
 	// Block 0x15, offset 0x540
 	0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,
 	0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,
 	0x56f: 0x12,
 }
 
-// nfkcSparseOffset: 152 entries, 304 bytes
-var nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1b, 0x25, 0x35, 0x37, 0x3c, 0x47, 0x56, 0x63, 0x6b, 0x6f, 0x74, 0x76, 0x85, 0x8d, 0x94, 0x97, 0x9f, 0xa3, 0xa7, 0xa9, 0xab, 0xb4, 0xb8, 0xbf, 0xc4, 0xc7, 0xd1, 0xd3, 0xda, 0xe2, 0xe6, 0xe8, 0xeb, 0xef, 0xf5, 0x106, 0x112, 0x114, 0x11a, 0x11c, 0x11e, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12b, 0x12e, 0x130, 0x133, 0x136, 0x13a, 0x13f, 0x148, 0x14a, 0x14d, 0x14f, 0x15a, 0x165, 0x174, 0x182, 0x190, 0x1a0, 0x1ae, 0x1b5, 0x1bb, 0x1ca, 0x1ce, 0x1d0, 0x1d4, 0x1d6, 0x1d9, 0x1db, 0x1de, 0x1e0, 0x1e3, 0x1e5, 0x1e7, 0x1e9, 0x1f5, 0x1ff, 0x206, 0x213, 0x216, 0x219, 0x21b, 0x21d, 0x21f, 0x221, 0x224, 0x226, 0x228, 0x22a, 0x22c, 0x232, 0x235, 0x239, 0x23b, 0x242, 0x248, 0x24e, 0x256, 0x25c, 0x262, 0x268, 0x26c, 0x26e, 0x27d, 0x27f, 0x281, 0x283, 0x289, 0x28c, 0x28f, 0x297, 0x29e, 0x2a1, 0x2a3, 0x2ab, 0x2b2, 0x2b5, 0x2bb, 0x2bd, 0x2bf, 0x2c2, 0x2c4, 0x2c6, 0x2c8, 0x2d5, 0x2df, 0x2e1, 0x2e3, 0x2e7, 0x2ec, 0x2f8, 0x2fd, 0x306, 0x30c, 0x311, 0x315, 0x31a, 0x31e, 0x32e, 0x33c, 0x34a, 0x358, 0x35a, 0x364, 0x366}
+// nfkcSparseOffset: 150 entries, 300 bytes
+var nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1b, 0x25, 0x35, 0x37, 0x3c, 0x47, 0x56, 0x63, 0x6b, 0x6f, 0x74, 0x76, 0x85, 0x8d, 0x94, 0x97, 0x9e, 0xa2, 0xa6, 0xa8, 0xaa, 0xb3, 0xb7, 0xbe, 0xc3, 0xc6, 0xd0, 0xd2, 0xd9, 0xe1, 0xe5, 0xe7, 0xea, 0xee, 0xf4, 0x105, 0x111, 0x113, 0x119, 0x11b, 0x11d, 0x11f, 0x121, 0x123, 0x125, 0x127, 0x12a, 0x12d, 0x12f, 0x132, 0x135, 0x139, 0x13e, 0x147, 0x149, 0x14c, 0x14e, 0x159, 0x164, 0x173, 0x181, 0x18f, 0x19f, 0x1ad, 0x1b4, 0x1ba, 0x1c9, 0x1cd, 0x1cf, 0x1d3, 0x1d5, 0x1d8, 0x1da, 0x1dd, 0x1df, 0x1e2, 0x1e4, 0x1e6, 0x1e8, 0x1f4, 0x1fe, 0x208, 0x20b, 0x20e, 0x210, 0x212, 0x214, 0x216, 0x219, 0x21b, 0x21d, 0x21f, 0x221, 0x227, 0x22a, 0x22e, 0x230, 0x237, 0x23d, 0x243, 0x24b, 0x251, 0x257, 0x25d, 0x261, 0x263, 0x265, 0x267, 0x269, 0x26f, 0x272, 0x275, 0x27d, 0x284, 0x287, 0x289, 0x291, 0x298, 0x29b, 0x2a1, 0x2a3, 0x2a5, 0x2a8, 0x2aa, 0x2ac, 0x2ae, 0x2bb, 0x2c5, 0x2c7, 0x2c9, 0x2cd, 0x2d2, 0x2de, 0x2e3, 0x2ec, 0x2f2, 0x2f7, 0x2fb, 0x300, 0x304, 0x314, 0x322, 0x330, 0x33e, 0x340, 0x34a, 0x34c}
 
-// nfkcSparseValues: 880 entries, 3520 bytes
-var nfkcSparseValues = [880]valueRange{
+// nfkcSparseValues: 854 entries, 3416 bytes
+var nfkcSparseValues = [854]valueRange{
 	// Block 0x0, offset 0x0
 	{value: 0x0002, lo: 0x0d},
 	{value: 0x0001, lo: 0xa0, hi: 0xa0},
-	{value: 0x42b3, lo: 0xa8, hi: 0xa8},
+	{value: 0x4274, lo: 0xa8, hi: 0xa8},
 	{value: 0x0083, lo: 0xaa, hi: 0xaa},
-	{value: 0x429f, lo: 0xaf, hi: 0xaf},
+	{value: 0x4260, lo: 0xaf, hi: 0xaf},
 	{value: 0x0025, lo: 0xb2, hi: 0xb3},
-	{value: 0x4295, lo: 0xb4, hi: 0xb4},
+	{value: 0x4256, lo: 0xb4, hi: 0xb4},
 	{value: 0x01dc, lo: 0xb5, hi: 0xb5},
-	{value: 0x42cc, lo: 0xb8, hi: 0xb8},
+	{value: 0x428d, lo: 0xb8, hi: 0xb8},
 	{value: 0x0023, lo: 0xb9, hi: 0xb9},
 	{value: 0x009f, lo: 0xba, hi: 0xba},
-	{value: 0x23af, lo: 0xbc, hi: 0xbc},
-	{value: 0x23a3, lo: 0xbd, hi: 0xbd},
-	{value: 0x2445, lo: 0xbe, hi: 0xbe},
+	{value: 0x2218, lo: 0xbc, hi: 0xbc},
+	{value: 0x220c, lo: 0xbd, hi: 0xbd},
+	{value: 0x22ae, lo: 0xbe, hi: 0xbe},
 	// Block 0x1, offset 0xe
 	{value: 0x0091, lo: 0x03},
-	{value: 0x471d, lo: 0xa0, hi: 0xa1},
-	{value: 0x474f, lo: 0xaf, hi: 0xb0},
+	{value: 0x4774, lo: 0xa0, hi: 0xa1},
+	{value: 0x47a6, lo: 0xaf, hi: 0xb0},
 	{value: 0xa000, lo: 0xb7, hi: 0xb7},
 	// Block 0x2, offset 0x12
 	{value: 0x0003, lo: 0x08},
@@ -5600,11 +5648,11 @@
 	{value: 0x00b3, lo: 0xb8, hi: 0xb8},
 	// Block 0x3, offset 0x1b
 	{value: 0x000a, lo: 0x09},
-	{value: 0x42a9, lo: 0x98, hi: 0x98},
-	{value: 0x42ae, lo: 0x99, hi: 0x9a},
-	{value: 0x42d1, lo: 0x9b, hi: 0x9b},
-	{value: 0x429a, lo: 0x9c, hi: 0x9c},
-	{value: 0x42bd, lo: 0x9d, hi: 0x9d},
+	{value: 0x426a, lo: 0x98, hi: 0x98},
+	{value: 0x426f, lo: 0x99, hi: 0x9a},
+	{value: 0x4292, lo: 0x9b, hi: 0x9b},
+	{value: 0x425b, lo: 0x9c, hi: 0x9c},
+	{value: 0x427e, lo: 0x9d, hi: 0x9d},
 	{value: 0x0113, lo: 0xa0, hi: 0xa0},
 	{value: 0x0099, lo: 0xa1, hi: 0xa1},
 	{value: 0x00a7, lo: 0xa2, hi: 0xa3},
@@ -5615,17 +5663,17 @@
 	{value: 0xa000, lo: 0x87, hi: 0x87},
 	{value: 0xa000, lo: 0x8b, hi: 0x8b},
 	{value: 0xa000, lo: 0x8d, hi: 0x8d},
-	{value: 0x37e0, lo: 0x90, hi: 0x90},
-	{value: 0x37ec, lo: 0x91, hi: 0x91},
-	{value: 0x37da, lo: 0x93, hi: 0x93},
+	{value: 0x37a1, lo: 0x90, hi: 0x90},
+	{value: 0x37ad, lo: 0x91, hi: 0x91},
+	{value: 0x379b, lo: 0x93, hi: 0x93},
 	{value: 0xa000, lo: 0x96, hi: 0x96},
-	{value: 0x3852, lo: 0x97, hi: 0x97},
-	{value: 0x381c, lo: 0x9c, hi: 0x9c},
-	{value: 0x3804, lo: 0x9d, hi: 0x9d},
-	{value: 0x382e, lo: 0x9e, hi: 0x9e},
+	{value: 0x3813, lo: 0x97, hi: 0x97},
+	{value: 0x37dd, lo: 0x9c, hi: 0x9c},
+	{value: 0x37c5, lo: 0x9d, hi: 0x9d},
+	{value: 0x37ef, lo: 0x9e, hi: 0x9e},
 	{value: 0xa000, lo: 0xb4, hi: 0xb5},
-	{value: 0x3858, lo: 0xb6, hi: 0xb6},
-	{value: 0x385e, lo: 0xb7, hi: 0xb7},
+	{value: 0x3819, lo: 0xb6, hi: 0xb6},
+	{value: 0x381f, lo: 0xb7, hi: 0xb7},
 	// Block 0x5, offset 0x35
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8132, lo: 0x83, hi: 0x87},
@@ -5641,19 +5689,19 @@
 	{value: 0x8119, lo: 0x98, hi: 0x98},
 	{value: 0x811a, lo: 0x99, hi: 0x99},
 	{value: 0x811b, lo: 0x9a, hi: 0x9a},
-	{value: 0x387c, lo: 0xa2, hi: 0xa2},
-	{value: 0x3882, lo: 0xa3, hi: 0xa3},
-	{value: 0x388e, lo: 0xa4, hi: 0xa4},
-	{value: 0x3888, lo: 0xa5, hi: 0xa5},
-	{value: 0x3894, lo: 0xa6, hi: 0xa6},
+	{value: 0x383d, lo: 0xa2, hi: 0xa2},
+	{value: 0x3843, lo: 0xa3, hi: 0xa3},
+	{value: 0x384f, lo: 0xa4, hi: 0xa4},
+	{value: 0x3849, lo: 0xa5, hi: 0xa5},
+	{value: 0x3855, lo: 0xa6, hi: 0xa6},
 	{value: 0xa000, lo: 0xa7, hi: 0xa7},
 	// Block 0x8, offset 0x47
 	{value: 0x0000, lo: 0x0e},
-	{value: 0x38a6, lo: 0x80, hi: 0x80},
+	{value: 0x3867, lo: 0x80, hi: 0x80},
 	{value: 0xa000, lo: 0x81, hi: 0x81},
-	{value: 0x389a, lo: 0x82, hi: 0x82},
+	{value: 0x385b, lo: 0x82, hi: 0x82},
 	{value: 0xa000, lo: 0x92, hi: 0x92},
-	{value: 0x38a0, lo: 0x93, hi: 0x93},
+	{value: 0x3861, lo: 0x93, hi: 0x93},
 	{value: 0xa000, lo: 0x95, hi: 0x95},
 	{value: 0x8132, lo: 0x96, hi: 0x9c},
 	{value: 0x8132, lo: 0x9f, hi: 0xa2},
@@ -5719,11 +5767,11 @@
 	// Block 0xf, offset 0x85
 	{value: 0x0000, lo: 0x07},
 	{value: 0xa000, lo: 0xa8, hi: 0xa8},
-	{value: 0x3f13, lo: 0xa9, hi: 0xa9},
+	{value: 0x3ed4, lo: 0xa9, hi: 0xa9},
 	{value: 0xa000, lo: 0xb0, hi: 0xb0},
-	{value: 0x3f1b, lo: 0xb1, hi: 0xb1},
+	{value: 0x3edc, lo: 0xb1, hi: 0xb1},
 	{value: 0xa000, lo: 0xb3, hi: 0xb3},
-	{value: 0x3f23, lo: 0xb4, hi: 0xb4},
+	{value: 0x3ee4, lo: 0xb4, hi: 0xb4},
 	{value: 0x9902, lo: 0xbc, hi: 0xbc},
 	// Block 0x10, offset 0x8d
 	{value: 0x0008, lo: 0x06},
@@ -5732,237 +5780,236 @@
 	{value: 0x812d, lo: 0x92, hi: 0x92},
 	{value: 0x8132, lo: 0x93, hi: 0x93},
 	{value: 0x8132, lo: 0x94, hi: 0x94},
-	{value: 0x4557, lo: 0x98, hi: 0x9f},
+	{value: 0x45ae, lo: 0x98, hi: 0x9f},
 	// Block 0x11, offset 0x94
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8102, lo: 0xbc, hi: 0xbc},
 	{value: 0x9900, lo: 0xbe, hi: 0xbe},
 	// Block 0x12, offset 0x97
-	{value: 0x0007, lo: 0x07},
+	{value: 0x0008, lo: 0x06},
 	{value: 0xa000, lo: 0x87, hi: 0x87},
-	{value: 0x18e1, lo: 0x8b, hi: 0x8c},
+	{value: 0x2c9a, lo: 0x8b, hi: 0x8c},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
 	{value: 0x9900, lo: 0x97, hi: 0x97},
-	{value: 0x4597, lo: 0x9c, hi: 0x9c},
-	{value: 0x459f, lo: 0x9d, hi: 0x9d},
-	{value: 0x45a7, lo: 0x9f, hi: 0x9f},
-	// Block 0x13, offset 0x9f
+	{value: 0x45ee, lo: 0x9c, hi: 0x9d},
+	{value: 0x45fe, lo: 0x9f, hi: 0x9f},
+	// Block 0x13, offset 0x9e
 	{value: 0x0000, lo: 0x03},
-	{value: 0x45cf, lo: 0xb3, hi: 0xb3},
-	{value: 0x45d7, lo: 0xb6, hi: 0xb6},
+	{value: 0x4626, lo: 0xb3, hi: 0xb3},
+	{value: 0x462e, lo: 0xb6, hi: 0xb6},
 	{value: 0x8102, lo: 0xbc, hi: 0xbc},
-	// Block 0x14, offset 0xa3
+	// Block 0x14, offset 0xa2
 	{value: 0x0008, lo: 0x03},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
-	{value: 0x45af, lo: 0x99, hi: 0x9b},
-	{value: 0x45c7, lo: 0x9e, hi: 0x9e},
-	// Block 0x15, offset 0xa7
+	{value: 0x4606, lo: 0x99, hi: 0x9b},
+	{value: 0x461e, lo: 0x9e, hi: 0x9e},
+	// Block 0x15, offset 0xa6
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8102, lo: 0xbc, hi: 0xbc},
-	// Block 0x16, offset 0xa9
+	// Block 0x16, offset 0xa8
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
-	// Block 0x17, offset 0xab
+	// Block 0x17, offset 0xaa
 	{value: 0x0000, lo: 0x08},
 	{value: 0xa000, lo: 0x87, hi: 0x87},
-	{value: 0x18f6, lo: 0x88, hi: 0x88},
-	{value: 0x18ef, lo: 0x8b, hi: 0x8b},
-	{value: 0x18fd, lo: 0x8c, hi: 0x8c},
+	{value: 0x2cb2, lo: 0x88, hi: 0x88},
+	{value: 0x2caa, lo: 0x8b, hi: 0x8b},
+	{value: 0x2cba, lo: 0x8c, hi: 0x8c},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
 	{value: 0x9900, lo: 0x96, hi: 0x97},
-	{value: 0x45df, lo: 0x9c, hi: 0x9c},
-	{value: 0x45e7, lo: 0x9d, hi: 0x9d},
-	// Block 0x18, offset 0xb4
+	{value: 0x4636, lo: 0x9c, hi: 0x9c},
+	{value: 0x463e, lo: 0x9d, hi: 0x9d},
+	// Block 0x18, offset 0xb3
 	{value: 0x0000, lo: 0x03},
 	{value: 0xa000, lo: 0x92, hi: 0x92},
-	{value: 0x1904, lo: 0x94, hi: 0x94},
+	{value: 0x2cc2, lo: 0x94, hi: 0x94},
 	{value: 0x9900, lo: 0xbe, hi: 0xbe},
-	// Block 0x19, offset 0xb8
+	// Block 0x19, offset 0xb7
 	{value: 0x0000, lo: 0x06},
 	{value: 0xa000, lo: 0x86, hi: 0x87},
-	{value: 0x190b, lo: 0x8a, hi: 0x8a},
-	{value: 0x1919, lo: 0x8b, hi: 0x8b},
-	{value: 0x1912, lo: 0x8c, hi: 0x8c},
+	{value: 0x2cca, lo: 0x8a, hi: 0x8a},
+	{value: 0x2cda, lo: 0x8b, hi: 0x8b},
+	{value: 0x2cd2, lo: 0x8c, hi: 0x8c},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
 	{value: 0x9900, lo: 0x97, hi: 0x97},
-	// Block 0x1a, offset 0xbf
+	// Block 0x1a, offset 0xbe
 	{value: 0x1801, lo: 0x04},
 	{value: 0xa000, lo: 0x86, hi: 0x86},
-	{value: 0x3f2b, lo: 0x88, hi: 0x88},
+	{value: 0x3eec, lo: 0x88, hi: 0x88},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
 	{value: 0x8120, lo: 0x95, hi: 0x96},
-	// Block 0x1b, offset 0xc4
+	// Block 0x1b, offset 0xc3
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8102, lo: 0xbc, hi: 0xbc},
 	{value: 0xa000, lo: 0xbf, hi: 0xbf},
-	// Block 0x1c, offset 0xc7
+	// Block 0x1c, offset 0xc6
 	{value: 0x0000, lo: 0x09},
-	{value: 0x1920, lo: 0x80, hi: 0x80},
+	{value: 0x2ce2, lo: 0x80, hi: 0x80},
 	{value: 0x9900, lo: 0x82, hi: 0x82},
 	{value: 0xa000, lo: 0x86, hi: 0x86},
-	{value: 0x1927, lo: 0x87, hi: 0x87},
-	{value: 0x192e, lo: 0x88, hi: 0x88},
-	{value: 0x2eb7, lo: 0x8a, hi: 0x8a},
-	{value: 0x19f6, lo: 0x8b, hi: 0x8b},
+	{value: 0x2cea, lo: 0x87, hi: 0x87},
+	{value: 0x2cf2, lo: 0x88, hi: 0x88},
+	{value: 0x2f4c, lo: 0x8a, hi: 0x8a},
+	{value: 0x2dd4, lo: 0x8b, hi: 0x8b},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
 	{value: 0x9900, lo: 0x95, hi: 0x96},
-	// Block 0x1d, offset 0xd1
+	// Block 0x1d, offset 0xd0
 	{value: 0x0000, lo: 0x01},
 	{value: 0x9900, lo: 0xbe, hi: 0xbe},
-	// Block 0x1e, offset 0xd3
+	// Block 0x1e, offset 0xd2
 	{value: 0x0000, lo: 0x06},
 	{value: 0xa000, lo: 0x86, hi: 0x87},
-	{value: 0x1935, lo: 0x8a, hi: 0x8a},
-	{value: 0x1943, lo: 0x8b, hi: 0x8b},
-	{value: 0x193c, lo: 0x8c, hi: 0x8c},
+	{value: 0x2cfa, lo: 0x8a, hi: 0x8a},
+	{value: 0x2d0a, lo: 0x8b, hi: 0x8b},
+	{value: 0x2d02, lo: 0x8c, hi: 0x8c},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
 	{value: 0x9900, lo: 0x97, hi: 0x97},
-	// Block 0x1f, offset 0xda
-	{value: 0x0007, lo: 0x07},
+	// Block 0x1f, offset 0xd9
+	{value: 0x6bee, lo: 0x07},
 	{value: 0x9904, lo: 0x8a, hi: 0x8a},
 	{value: 0x9900, lo: 0x8f, hi: 0x8f},
 	{value: 0xa000, lo: 0x99, hi: 0x99},
-	{value: 0x3f33, lo: 0x9a, hi: 0x9a},
-	{value: 0x2ebe, lo: 0x9c, hi: 0x9d},
-	{value: 0x194a, lo: 0x9e, hi: 0x9e},
-	{value: 0x9900, lo: 0x9f, hi: 0x9f},
-	// Block 0x20, offset 0xe2
+	{value: 0x3ef4, lo: 0x9a, hi: 0x9a},
+	{value: 0x2f54, lo: 0x9c, hi: 0x9c},
+	{value: 0x2ddf, lo: 0x9d, hi: 0x9d},
+	{value: 0x2d12, lo: 0x9e, hi: 0x9f},
+	// Block 0x20, offset 0xe1
 	{value: 0x0000, lo: 0x03},
-	{value: 0x27b4, lo: 0xb3, hi: 0xb3},
+	{value: 0x261d, lo: 0xb3, hi: 0xb3},
 	{value: 0x8122, lo: 0xb8, hi: 0xb9},
 	{value: 0x8104, lo: 0xba, hi: 0xba},
-	// Block 0x21, offset 0xe6
+	// Block 0x21, offset 0xe5
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8123, lo: 0x88, hi: 0x8b},
-	// Block 0x22, offset 0xe8
+	// Block 0x22, offset 0xe7
 	{value: 0x0000, lo: 0x02},
-	{value: 0x27c9, lo: 0xb3, hi: 0xb3},
+	{value: 0x2632, lo: 0xb3, hi: 0xb3},
 	{value: 0x8124, lo: 0xb8, hi: 0xb9},
-	// Block 0x23, offset 0xeb
+	// Block 0x23, offset 0xea
 	{value: 0x0000, lo: 0x03},
 	{value: 0x8125, lo: 0x88, hi: 0x8b},
-	{value: 0x27bb, lo: 0x9c, hi: 0x9c},
-	{value: 0x27c2, lo: 0x9d, hi: 0x9d},
-	// Block 0x24, offset 0xef
+	{value: 0x2624, lo: 0x9c, hi: 0x9c},
+	{value: 0x262b, lo: 0x9d, hi: 0x9d},
+	// Block 0x24, offset 0xee
 	{value: 0x0000, lo: 0x05},
 	{value: 0x030b, lo: 0x8c, hi: 0x8c},
 	{value: 0x812d, lo: 0x98, hi: 0x99},
 	{value: 0x812d, lo: 0xb5, hi: 0xb5},
 	{value: 0x812d, lo: 0xb7, hi: 0xb7},
 	{value: 0x812b, lo: 0xb9, hi: 0xb9},
-	// Block 0x25, offset 0xf5
+	// Block 0x25, offset 0xf4
 	{value: 0x0000, lo: 0x10},
-	{value: 0x27d7, lo: 0x83, hi: 0x83},
-	{value: 0x27de, lo: 0x8d, hi: 0x8d},
-	{value: 0x27e5, lo: 0x92, hi: 0x92},
-	{value: 0x27ec, lo: 0x97, hi: 0x97},
-	{value: 0x27f3, lo: 0x9c, hi: 0x9c},
-	{value: 0x27d0, lo: 0xa9, hi: 0xa9},
+	{value: 0x2640, lo: 0x83, hi: 0x83},
+	{value: 0x2647, lo: 0x8d, hi: 0x8d},
+	{value: 0x264e, lo: 0x92, hi: 0x92},
+	{value: 0x2655, lo: 0x97, hi: 0x97},
+	{value: 0x265c, lo: 0x9c, hi: 0x9c},
+	{value: 0x2639, lo: 0xa9, hi: 0xa9},
 	{value: 0x8126, lo: 0xb1, hi: 0xb1},
 	{value: 0x8127, lo: 0xb2, hi: 0xb2},
-	{value: 0x4a0b, lo: 0xb3, hi: 0xb3},
+	{value: 0x4a62, lo: 0xb3, hi: 0xb3},
 	{value: 0x8128, lo: 0xb4, hi: 0xb4},
-	{value: 0x4a14, lo: 0xb5, hi: 0xb5},
-	{value: 0x45ef, lo: 0xb6, hi: 0xb6},
-	{value: 0x462f, lo: 0xb7, hi: 0xb7},
-	{value: 0x45f7, lo: 0xb8, hi: 0xb8},
-	{value: 0x463a, lo: 0xb9, hi: 0xb9},
+	{value: 0x4a6b, lo: 0xb5, hi: 0xb5},
+	{value: 0x4646, lo: 0xb6, hi: 0xb6},
+	{value: 0x4686, lo: 0xb7, hi: 0xb7},
+	{value: 0x464e, lo: 0xb8, hi: 0xb8},
+	{value: 0x4691, lo: 0xb9, hi: 0xb9},
 	{value: 0x8127, lo: 0xba, hi: 0xbd},
-	// Block 0x26, offset 0x106
+	// Block 0x26, offset 0x105
 	{value: 0x0000, lo: 0x0b},
 	{value: 0x8127, lo: 0x80, hi: 0x80},
-	{value: 0x4a1d, lo: 0x81, hi: 0x81},
+	{value: 0x4a74, lo: 0x81, hi: 0x81},
 	{value: 0x8132, lo: 0x82, hi: 0x83},
 	{value: 0x8104, lo: 0x84, hi: 0x84},
 	{value: 0x8132, lo: 0x86, hi: 0x87},
-	{value: 0x2801, lo: 0x93, hi: 0x93},
-	{value: 0x2808, lo: 0x9d, hi: 0x9d},
-	{value: 0x280f, lo: 0xa2, hi: 0xa2},
-	{value: 0x2816, lo: 0xa7, hi: 0xa7},
-	{value: 0x281d, lo: 0xac, hi: 0xac},
-	{value: 0x27fa, lo: 0xb9, hi: 0xb9},
-	// Block 0x27, offset 0x112
+	{value: 0x266a, lo: 0x93, hi: 0x93},
+	{value: 0x2671, lo: 0x9d, hi: 0x9d},
+	{value: 0x2678, lo: 0xa2, hi: 0xa2},
+	{value: 0x267f, lo: 0xa7, hi: 0xa7},
+	{value: 0x2686, lo: 0xac, hi: 0xac},
+	{value: 0x2663, lo: 0xb9, hi: 0xb9},
+	// Block 0x27, offset 0x111
 	{value: 0x0000, lo: 0x01},
 	{value: 0x812d, lo: 0x86, hi: 0x86},
-	// Block 0x28, offset 0x114
+	// Block 0x28, offset 0x113
 	{value: 0x0000, lo: 0x05},
 	{value: 0xa000, lo: 0xa5, hi: 0xa5},
-	{value: 0x1951, lo: 0xa6, hi: 0xa6},
+	{value: 0x2d1a, lo: 0xa6, hi: 0xa6},
 	{value: 0x9900, lo: 0xae, hi: 0xae},
 	{value: 0x8102, lo: 0xb7, hi: 0xb7},
 	{value: 0x8104, lo: 0xb9, hi: 0xba},
-	// Block 0x29, offset 0x11a
+	// Block 0x29, offset 0x119
 	{value: 0x0000, lo: 0x01},
 	{value: 0x812d, lo: 0x8d, hi: 0x8d},
-	// Block 0x2a, offset 0x11c
+	// Block 0x2a, offset 0x11b
 	{value: 0x0000, lo: 0x01},
 	{value: 0x030f, lo: 0xbc, hi: 0xbc},
-	// Block 0x2b, offset 0x11e
+	// Block 0x2b, offset 0x11d
 	{value: 0x0000, lo: 0x01},
 	{value: 0xa000, lo: 0x80, hi: 0x92},
-	// Block 0x2c, offset 0x120
+	// Block 0x2c, offset 0x11f
 	{value: 0x0000, lo: 0x01},
 	{value: 0xb900, lo: 0xa1, hi: 0xb5},
-	// Block 0x2d, offset 0x122
+	// Block 0x2d, offset 0x121
 	{value: 0x0000, lo: 0x01},
 	{value: 0x9900, lo: 0xa8, hi: 0xbf},
-	// Block 0x2e, offset 0x124
+	// Block 0x2e, offset 0x123
 	{value: 0x0000, lo: 0x01},
 	{value: 0x9900, lo: 0x80, hi: 0x82},
-	// Block 0x2f, offset 0x126
+	// Block 0x2f, offset 0x125
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8132, lo: 0x9d, hi: 0x9f},
-	// Block 0x30, offset 0x128
+	// Block 0x30, offset 0x127
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8104, lo: 0x94, hi: 0x94},
 	{value: 0x8104, lo: 0xb4, hi: 0xb4},
-	// Block 0x31, offset 0x12b
+	// Block 0x31, offset 0x12a
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8104, lo: 0x92, hi: 0x92},
 	{value: 0x8132, lo: 0x9d, hi: 0x9d},
-	// Block 0x32, offset 0x12e
+	// Block 0x32, offset 0x12d
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8131, lo: 0xa9, hi: 0xa9},
-	// Block 0x33, offset 0x130
+	// Block 0x33, offset 0x12f
 	{value: 0x0004, lo: 0x02},
 	{value: 0x812e, lo: 0xb9, hi: 0xba},
 	{value: 0x812d, lo: 0xbb, hi: 0xbb},
-	// Block 0x34, offset 0x133
+	// Block 0x34, offset 0x132
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8132, lo: 0x97, hi: 0x97},
 	{value: 0x812d, lo: 0x98, hi: 0x98},
-	// Block 0x35, offset 0x136
+	// Block 0x35, offset 0x135
 	{value: 0x0000, lo: 0x03},
 	{value: 0x8104, lo: 0xa0, hi: 0xa0},
 	{value: 0x8132, lo: 0xb5, hi: 0xbc},
 	{value: 0x812d, lo: 0xbf, hi: 0xbf},
-	// Block 0x36, offset 0x13a
+	// Block 0x36, offset 0x139
 	{value: 0x0000, lo: 0x04},
 	{value: 0x8132, lo: 0xb0, hi: 0xb4},
 	{value: 0x812d, lo: 0xb5, hi: 0xba},
 	{value: 0x8132, lo: 0xbb, hi: 0xbc},
 	{value: 0x812d, lo: 0xbd, hi: 0xbd},
-	// Block 0x37, offset 0x13f
+	// Block 0x37, offset 0x13e
 	{value: 0x0000, lo: 0x08},
-	{value: 0x1990, lo: 0x80, hi: 0x80},
-	{value: 0x1997, lo: 0x81, hi: 0x81},
+	{value: 0x2d62, lo: 0x80, hi: 0x80},
+	{value: 0x2d6a, lo: 0x81, hi: 0x81},
 	{value: 0xa000, lo: 0x82, hi: 0x82},
-	{value: 0x199e, lo: 0x83, hi: 0x83},
+	{value: 0x2d72, lo: 0x83, hi: 0x83},
 	{value: 0x8104, lo: 0x84, hi: 0x84},
 	{value: 0x8132, lo: 0xab, hi: 0xab},
 	{value: 0x812d, lo: 0xac, hi: 0xac},
 	{value: 0x8132, lo: 0xad, hi: 0xb3},
-	// Block 0x38, offset 0x148
+	// Block 0x38, offset 0x147
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8104, lo: 0xaa, hi: 0xab},
-	// Block 0x39, offset 0x14a
+	// Block 0x39, offset 0x149
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8102, lo: 0xa6, hi: 0xa6},
 	{value: 0x8104, lo: 0xb2, hi: 0xb3},
-	// Block 0x3a, offset 0x14d
+	// Block 0x3a, offset 0x14c
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8102, lo: 0xb7, hi: 0xb7},
-	// Block 0x3b, offset 0x14f
+	// Block 0x3b, offset 0x14e
 	{value: 0x0000, lo: 0x0a},
 	{value: 0x8132, lo: 0x90, hi: 0x92},
 	{value: 0x8101, lo: 0x94, hi: 0x94},
@@ -5974,7 +6021,7 @@
 	{value: 0x812d, lo: 0xad, hi: 0xad},
 	{value: 0x8132, lo: 0xb4, hi: 0xb4},
 	{value: 0x8132, lo: 0xb8, hi: 0xb9},
-	// Block 0x3c, offset 0x15a
+	// Block 0x3c, offset 0x159
 	{value: 0x0002, lo: 0x0a},
 	{value: 0x0043, lo: 0xac, hi: 0xac},
 	{value: 0x00d1, lo: 0xad, hi: 0xad},
@@ -5986,7 +6033,7 @@
 	{value: 0x00ef, lo: 0xbd, hi: 0xbd},
 	{value: 0x0061, lo: 0xbe, hi: 0xbe},
 	{value: 0x0065, lo: 0xbf, hi: 0xbf},
-	// Block 0x3d, offset 0x165
+	// Block 0x3d, offset 0x164
 	{value: 0x0000, lo: 0x0e},
 	{value: 0x8132, lo: 0x80, hi: 0x81},
 	{value: 0x812d, lo: 0x82, hi: 0x82},
@@ -6002,41 +6049,41 @@
 	{value: 0x812d, lo: 0xbd, hi: 0xbd},
 	{value: 0x8132, lo: 0xbe, hi: 0xbe},
 	{value: 0x812d, lo: 0xbf, hi: 0xbf},
-	// Block 0x3e, offset 0x174
+	// Block 0x3e, offset 0x173
 	{value: 0x0000, lo: 0x0d},
 	{value: 0x0001, lo: 0x80, hi: 0x8a},
-	{value: 0x04b3, lo: 0x91, hi: 0x91},
-	{value: 0x42d6, lo: 0x97, hi: 0x97},
+	{value: 0x043b, lo: 0x91, hi: 0x91},
+	{value: 0x4297, lo: 0x97, hi: 0x97},
 	{value: 0x001d, lo: 0xa4, hi: 0xa4},
-	{value: 0x1a06, lo: 0xa5, hi: 0xa5},
-	{value: 0x1cef, lo: 0xa6, hi: 0xa6},
+	{value: 0x186f, lo: 0xa5, hi: 0xa5},
+	{value: 0x1b58, lo: 0xa6, hi: 0xa6},
 	{value: 0x0001, lo: 0xaf, hi: 0xaf},
-	{value: 0x288d, lo: 0xb3, hi: 0xb3},
-	{value: 0x29fa, lo: 0xb4, hi: 0xb4},
-	{value: 0x2894, lo: 0xb6, hi: 0xb6},
-	{value: 0x2a04, lo: 0xb7, hi: 0xb7},
-	{value: 0x1a00, lo: 0xbc, hi: 0xbc},
-	{value: 0x42a4, lo: 0xbe, hi: 0xbe},
-	// Block 0x3f, offset 0x182
+	{value: 0x268d, lo: 0xb3, hi: 0xb3},
+	{value: 0x27fa, lo: 0xb4, hi: 0xb4},
+	{value: 0x2694, lo: 0xb6, hi: 0xb6},
+	{value: 0x2804, lo: 0xb7, hi: 0xb7},
+	{value: 0x1869, lo: 0xbc, hi: 0xbc},
+	{value: 0x4265, lo: 0xbe, hi: 0xbe},
+	// Block 0x3f, offset 0x181
 	{value: 0x0002, lo: 0x0d},
-	{value: 0x1ac6, lo: 0x87, hi: 0x87},
-	{value: 0x1ac3, lo: 0x88, hi: 0x88},
-	{value: 0x1a03, lo: 0x89, hi: 0x89},
-	{value: 0x2b97, lo: 0x97, hi: 0x97},
+	{value: 0x192f, lo: 0x87, hi: 0x87},
+	{value: 0x192c, lo: 0x88, hi: 0x88},
+	{value: 0x186c, lo: 0x89, hi: 0x89},
+	{value: 0x298a, lo: 0x97, hi: 0x97},
 	{value: 0x0001, lo: 0x9f, hi: 0x9f},
 	{value: 0x0021, lo: 0xb0, hi: 0xb0},
 	{value: 0x0093, lo: 0xb1, hi: 0xb1},
 	{value: 0x0029, lo: 0xb4, hi: 0xb9},
 	{value: 0x0017, lo: 0xba, hi: 0xba},
-	{value: 0x04df, lo: 0xbb, hi: 0xbb},
+	{value: 0x0467, lo: 0xbb, hi: 0xbb},
 	{value: 0x003b, lo: 0xbc, hi: 0xbc},
 	{value: 0x0011, lo: 0xbd, hi: 0xbe},
 	{value: 0x009d, lo: 0xbf, hi: 0xbf},
-	// Block 0x40, offset 0x190
+	// Block 0x40, offset 0x18f
 	{value: 0x0002, lo: 0x0f},
 	{value: 0x0021, lo: 0x80, hi: 0x89},
 	{value: 0x0017, lo: 0x8a, hi: 0x8a},
-	{value: 0x04df, lo: 0x8b, hi: 0x8b},
+	{value: 0x0467, lo: 0x8b, hi: 0x8b},
 	{value: 0x003b, lo: 0x8c, hi: 0x8c},
 	{value: 0x0011, lo: 0x8d, hi: 0x8e},
 	{value: 0x0083, lo: 0x90, hi: 0x90},
@@ -6048,8 +6095,8 @@
 	{value: 0x0097, lo: 0x96, hi: 0x99},
 	{value: 0x00a1, lo: 0x9a, hi: 0x9a},
 	{value: 0x00a7, lo: 0x9b, hi: 0x9c},
-	{value: 0x1b2c, lo: 0xa8, hi: 0xa8},
-	// Block 0x41, offset 0x1a0
+	{value: 0x1995, lo: 0xa8, hi: 0xa8},
+	// Block 0x41, offset 0x19f
 	{value: 0x0000, lo: 0x0d},
 	{value: 0x8132, lo: 0x90, hi: 0x91},
 	{value: 0x8101, lo: 0x92, hi: 0x93},
@@ -6064,94 +6111,94 @@
 	{value: 0x8101, lo: 0xaa, hi: 0xab},
 	{value: 0x812d, lo: 0xac, hi: 0xaf},
 	{value: 0x8132, lo: 0xb0, hi: 0xb0},
-	// Block 0x42, offset 0x1ae
+	// Block 0x42, offset 0x1ad
 	{value: 0x0007, lo: 0x06},
-	{value: 0x2313, lo: 0x89, hi: 0x89},
+	{value: 0x217c, lo: 0x89, hi: 0x89},
 	{value: 0xa000, lo: 0x90, hi: 0x90},
 	{value: 0xa000, lo: 0x92, hi: 0x92},
 	{value: 0xa000, lo: 0x94, hi: 0x94},
-	{value: 0x3bf4, lo: 0x9a, hi: 0x9b},
-	{value: 0x3c02, lo: 0xae, hi: 0xae},
-	// Block 0x43, offset 0x1b5
+	{value: 0x3bb5, lo: 0x9a, hi: 0x9b},
+	{value: 0x3bc3, lo: 0xae, hi: 0xae},
+	// Block 0x43, offset 0x1b4
 	{value: 0x000e, lo: 0x05},
-	{value: 0x3c09, lo: 0x8d, hi: 0x8e},
-	{value: 0x3c10, lo: 0x8f, hi: 0x8f},
+	{value: 0x3bca, lo: 0x8d, hi: 0x8e},
+	{value: 0x3bd1, lo: 0x8f, hi: 0x8f},
 	{value: 0xa000, lo: 0x90, hi: 0x90},
 	{value: 0xa000, lo: 0x92, hi: 0x92},
 	{value: 0xa000, lo: 0x94, hi: 0x94},
-	// Block 0x44, offset 0x1bb
+	// Block 0x44, offset 0x1ba
 	{value: 0x0173, lo: 0x0e},
 	{value: 0xa000, lo: 0x83, hi: 0x83},
-	{value: 0x3c1e, lo: 0x84, hi: 0x84},
+	{value: 0x3bdf, lo: 0x84, hi: 0x84},
 	{value: 0xa000, lo: 0x88, hi: 0x88},
-	{value: 0x3c25, lo: 0x89, hi: 0x89},
+	{value: 0x3be6, lo: 0x89, hi: 0x89},
 	{value: 0xa000, lo: 0x8b, hi: 0x8b},
-	{value: 0x3c2c, lo: 0x8c, hi: 0x8c},
+	{value: 0x3bed, lo: 0x8c, hi: 0x8c},
 	{value: 0xa000, lo: 0xa3, hi: 0xa3},
-	{value: 0x3c33, lo: 0xa4, hi: 0xa4},
+	{value: 0x3bf4, lo: 0xa4, hi: 0xa4},
 	{value: 0xa000, lo: 0xa5, hi: 0xa5},
-	{value: 0x3c3a, lo: 0xa6, hi: 0xa6},
-	{value: 0x289b, lo: 0xac, hi: 0xad},
-	{value: 0x28a2, lo: 0xaf, hi: 0xaf},
-	{value: 0x2a18, lo: 0xb0, hi: 0xb0},
+	{value: 0x3bfb, lo: 0xa6, hi: 0xa6},
+	{value: 0x269b, lo: 0xac, hi: 0xad},
+	{value: 0x26a2, lo: 0xaf, hi: 0xaf},
+	{value: 0x2818, lo: 0xb0, hi: 0xb0},
 	{value: 0xa000, lo: 0xbc, hi: 0xbc},
-	// Block 0x45, offset 0x1ca
+	// Block 0x45, offset 0x1c9
 	{value: 0x0007, lo: 0x03},
-	{value: 0x3ca3, lo: 0xa0, hi: 0xa1},
-	{value: 0x3ccd, lo: 0xa2, hi: 0xa3},
-	{value: 0x3cf7, lo: 0xaa, hi: 0xad},
-	// Block 0x46, offset 0x1ce
+	{value: 0x3c64, lo: 0xa0, hi: 0xa1},
+	{value: 0x3c8e, lo: 0xa2, hi: 0xa3},
+	{value: 0x3cb8, lo: 0xaa, hi: 0xad},
+	// Block 0x46, offset 0x1cd
 	{value: 0x0004, lo: 0x01},
-	{value: 0x0503, lo: 0xa9, hi: 0xaa},
-	// Block 0x47, offset 0x1d0
+	{value: 0x048b, lo: 0xa9, hi: 0xaa},
+	// Block 0x47, offset 0x1cf
 	{value: 0x0002, lo: 0x03},
 	{value: 0x0057, lo: 0x80, hi: 0x8f},
 	{value: 0x0083, lo: 0x90, hi: 0xa9},
 	{value: 0x0021, lo: 0xaa, hi: 0xaa},
-	// Block 0x48, offset 0x1d4
+	// Block 0x48, offset 0x1d3
 	{value: 0x0000, lo: 0x01},
-	{value: 0x2ba4, lo: 0x8c, hi: 0x8c},
-	// Block 0x49, offset 0x1d6
+	{value: 0x2997, lo: 0x8c, hi: 0x8c},
+	// Block 0x49, offset 0x1d5
 	{value: 0x0263, lo: 0x02},
-	{value: 0x1d1f, lo: 0xb4, hi: 0xb4},
-	{value: 0x1ac0, lo: 0xb5, hi: 0xb6},
-	// Block 0x4a, offset 0x1d9
+	{value: 0x1b88, lo: 0xb4, hi: 0xb4},
+	{value: 0x1929, lo: 0xb5, hi: 0xb6},
+	// Block 0x4a, offset 0x1d8
 	{value: 0x0000, lo: 0x01},
-	{value: 0x4518, lo: 0x9c, hi: 0x9c},
-	// Block 0x4b, offset 0x1db
+	{value: 0x456f, lo: 0x9c, hi: 0x9c},
+	// Block 0x4b, offset 0x1da
 	{value: 0x0000, lo: 0x02},
 	{value: 0x0095, lo: 0xbc, hi: 0xbc},
 	{value: 0x006d, lo: 0xbd, hi: 0xbd},
-	// Block 0x4c, offset 0x1de
+	// Block 0x4c, offset 0x1dd
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8132, lo: 0xaf, hi: 0xb1},
-	// Block 0x4d, offset 0x1e0
+	// Block 0x4d, offset 0x1df
 	{value: 0x0000, lo: 0x02},
-	{value: 0x04f7, lo: 0xaf, hi: 0xaf},
+	{value: 0x047f, lo: 0xaf, hi: 0xaf},
 	{value: 0x8104, lo: 0xbf, hi: 0xbf},
-	// Block 0x4e, offset 0x1e3
+	// Block 0x4e, offset 0x1e2
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8132, lo: 0xa0, hi: 0xbf},
-	// Block 0x4f, offset 0x1e5
+	// Block 0x4f, offset 0x1e4
 	{value: 0x0000, lo: 0x01},
-	{value: 0x0e3b, lo: 0x9f, hi: 0x9f},
-	// Block 0x50, offset 0x1e7
+	{value: 0x0dc3, lo: 0x9f, hi: 0x9f},
+	// Block 0x50, offset 0x1e6
 	{value: 0x0000, lo: 0x01},
-	{value: 0x16a3, lo: 0xb3, hi: 0xb3},
-	// Block 0x51, offset 0x1e9
+	{value: 0x162b, lo: 0xb3, hi: 0xb3},
+	// Block 0x51, offset 0x1e8
 	{value: 0x0004, lo: 0x0b},
-	{value: 0x160b, lo: 0x80, hi: 0x82},
-	{value: 0x1623, lo: 0x83, hi: 0x83},
-	{value: 0x163b, lo: 0x84, hi: 0x85},
-	{value: 0x164b, lo: 0x86, hi: 0x89},
-	{value: 0x165f, lo: 0x8a, hi: 0x8c},
-	{value: 0x1673, lo: 0x8d, hi: 0x8d},
-	{value: 0x167b, lo: 0x8e, hi: 0x8e},
-	{value: 0x1683, lo: 0x8f, hi: 0x90},
-	{value: 0x168f, lo: 0x91, hi: 0x93},
-	{value: 0x169f, lo: 0x94, hi: 0x94},
-	{value: 0x16a7, lo: 0x95, hi: 0x95},
-	// Block 0x52, offset 0x1f5
+	{value: 0x1593, lo: 0x80, hi: 0x82},
+	{value: 0x15ab, lo: 0x83, hi: 0x83},
+	{value: 0x15c3, lo: 0x84, hi: 0x85},
+	{value: 0x15d3, lo: 0x86, hi: 0x89},
+	{value: 0x15e7, lo: 0x8a, hi: 0x8c},
+	{value: 0x15fb, lo: 0x8d, hi: 0x8d},
+	{value: 0x1603, lo: 0x8e, hi: 0x8e},
+	{value: 0x160b, lo: 0x8f, hi: 0x90},
+	{value: 0x1617, lo: 0x91, hi: 0x93},
+	{value: 0x1627, lo: 0x94, hi: 0x94},
+	{value: 0x162f, lo: 0x95, hi: 0x95},
+	// Block 0x52, offset 0x1f4
 	{value: 0x0004, lo: 0x09},
 	{value: 0x0001, lo: 0x80, hi: 0x80},
 	{value: 0x812c, lo: 0xaa, hi: 0xaa},
@@ -6160,86 +6207,75 @@
 	{value: 0x812e, lo: 0xad, hi: 0xad},
 	{value: 0x812f, lo: 0xae, hi: 0xae},
 	{value: 0x812f, lo: 0xaf, hi: 0xaf},
-	{value: 0x052b, lo: 0xb6, hi: 0xb6},
-	{value: 0x08ff, lo: 0xb8, hi: 0xba},
-	// Block 0x53, offset 0x1ff
-	{value: 0x0004, lo: 0x06},
-	{value: 0x0313, lo: 0xb1, hi: 0xb2},
-	{value: 0x043b, lo: 0xb3, hi: 0xb3},
+	{value: 0x04b3, lo: 0xb6, hi: 0xb6},
+	{value: 0x0887, lo: 0xb8, hi: 0xba},
+	// Block 0x53, offset 0x1fe
+	{value: 0x0005, lo: 0x09},
+	{value: 0x0313, lo: 0xb1, hi: 0xb1},
+	{value: 0x0317, lo: 0xb2, hi: 0xb2},
+	{value: 0x4341, lo: 0xb3, hi: 0xb3},
 	{value: 0x031b, lo: 0xb4, hi: 0xb4},
-	{value: 0x043f, lo: 0xb5, hi: 0xb6},
-	{value: 0x031f, lo: 0xb7, hi: 0xb9},
-	{value: 0x0447, lo: 0xba, hi: 0xbf},
-	// Block 0x54, offset 0x206
-	{value: 0x0004, lo: 0x0c},
-	{value: 0x0367, lo: 0x80, hi: 0x80},
-	{value: 0x032b, lo: 0x81, hi: 0x83},
-	{value: 0x037b, lo: 0x84, hi: 0x84},
-	{value: 0x0337, lo: 0x85, hi: 0x8e},
-	{value: 0x03c7, lo: 0x8f, hi: 0xa3},
-	{value: 0x03c3, lo: 0xa4, hi: 0xa4},
-	{value: 0x035f, lo: 0xa5, hi: 0xa6},
-	{value: 0x045f, lo: 0xa7, hi: 0xad},
-	{value: 0x036b, lo: 0xae, hi: 0xae},
-	{value: 0x047b, lo: 0xaf, hi: 0xb0},
-	{value: 0x036f, lo: 0xb1, hi: 0xb3},
-	{value: 0x037f, lo: 0xb4, hi: 0xbf},
-	// Block 0x55, offset 0x213
+	{value: 0x4346, lo: 0xb5, hi: 0xb6},
+	{value: 0x031f, lo: 0xb7, hi: 0xb7},
+	{value: 0x0323, lo: 0xb8, hi: 0xb8},
+	{value: 0x0327, lo: 0xb9, hi: 0xb9},
+	{value: 0x4350, lo: 0xba, hi: 0xbf},
+	// Block 0x54, offset 0x208
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8132, lo: 0xaf, hi: 0xaf},
 	{value: 0x8132, lo: 0xb4, hi: 0xbd},
-	// Block 0x56, offset 0x216
+	// Block 0x55, offset 0x20b
 	{value: 0x0003, lo: 0x02},
 	{value: 0x020f, lo: 0x9c, hi: 0x9d},
 	{value: 0x8132, lo: 0x9f, hi: 0x9f},
-	// Block 0x57, offset 0x219
+	// Block 0x56, offset 0x20e
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8132, lo: 0xb0, hi: 0xb1},
-	// Block 0x58, offset 0x21b
+	// Block 0x57, offset 0x210
 	{value: 0x0000, lo: 0x01},
-	{value: 0x16af, lo: 0xb0, hi: 0xb0},
-	// Block 0x59, offset 0x21d
+	{value: 0x1637, lo: 0xb0, hi: 0xb0},
+	// Block 0x58, offset 0x212
 	{value: 0x000c, lo: 0x01},
 	{value: 0x00d7, lo: 0xb8, hi: 0xb9},
-	// Block 0x5a, offset 0x21f
+	// Block 0x59, offset 0x214
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8104, lo: 0x86, hi: 0x86},
-	// Block 0x5b, offset 0x221
+	// Block 0x5a, offset 0x216
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8104, lo: 0x84, hi: 0x84},
 	{value: 0x8132, lo: 0xa0, hi: 0xb1},
-	// Block 0x5c, offset 0x224
+	// Block 0x5b, offset 0x219
 	{value: 0x0000, lo: 0x01},
 	{value: 0x812d, lo: 0xab, hi: 0xad},
-	// Block 0x5d, offset 0x226
+	// Block 0x5c, offset 0x21b
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8104, lo: 0x93, hi: 0x93},
-	// Block 0x5e, offset 0x228
+	// Block 0x5d, offset 0x21d
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8102, lo: 0xb3, hi: 0xb3},
-	// Block 0x5f, offset 0x22a
+	// Block 0x5e, offset 0x21f
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8104, lo: 0x80, hi: 0x80},
-	// Block 0x60, offset 0x22c
+	// Block 0x5f, offset 0x221
 	{value: 0x0000, lo: 0x05},
 	{value: 0x8132, lo: 0xb0, hi: 0xb0},
 	{value: 0x8132, lo: 0xb2, hi: 0xb3},
 	{value: 0x812d, lo: 0xb4, hi: 0xb4},
 	{value: 0x8132, lo: 0xb7, hi: 0xb8},
 	{value: 0x8132, lo: 0xbe, hi: 0xbf},
-	// Block 0x61, offset 0x232
+	// Block 0x60, offset 0x227
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8132, lo: 0x81, hi: 0x81},
 	{value: 0x8104, lo: 0xb6, hi: 0xb6},
-	// Block 0x62, offset 0x235
+	// Block 0x61, offset 0x22a
 	{value: 0x0008, lo: 0x03},
-	{value: 0x16ab, lo: 0x9c, hi: 0x9d},
+	{value: 0x1633, lo: 0x9c, hi: 0x9d},
 	{value: 0x0125, lo: 0x9e, hi: 0x9e},
-	{value: 0x16b7, lo: 0x9f, hi: 0x9f},
-	// Block 0x63, offset 0x239
+	{value: 0x163f, lo: 0x9f, hi: 0x9f},
+	// Block 0x62, offset 0x22e
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8104, lo: 0xad, hi: 0xad},
-	// Block 0x64, offset 0x23b
+	// Block 0x63, offset 0x230
 	{value: 0x0000, lo: 0x06},
 	{value: 0xe500, lo: 0x80, hi: 0x80},
 	{value: 0xc600, lo: 0x81, hi: 0x9b},
@@ -6247,21 +6283,21 @@
 	{value: 0xc600, lo: 0x9d, hi: 0xb7},
 	{value: 0xe500, lo: 0xb8, hi: 0xb8},
 	{value: 0xc600, lo: 0xb9, hi: 0xbf},
-	// Block 0x65, offset 0x242
+	// Block 0x64, offset 0x237
 	{value: 0x0000, lo: 0x05},
 	{value: 0xc600, lo: 0x80, hi: 0x93},
 	{value: 0xe500, lo: 0x94, hi: 0x94},
 	{value: 0xc600, lo: 0x95, hi: 0xaf},
 	{value: 0xe500, lo: 0xb0, hi: 0xb0},
 	{value: 0xc600, lo: 0xb1, hi: 0xbf},
-	// Block 0x66, offset 0x248
+	// Block 0x65, offset 0x23d
 	{value: 0x0000, lo: 0x05},
 	{value: 0xc600, lo: 0x80, hi: 0x8b},
 	{value: 0xe500, lo: 0x8c, hi: 0x8c},
 	{value: 0xc600, lo: 0x8d, hi: 0xa7},
 	{value: 0xe500, lo: 0xa8, hi: 0xa8},
 	{value: 0xc600, lo: 0xa9, hi: 0xbf},
-	// Block 0x67, offset 0x24e
+	// Block 0x66, offset 0x243
 	{value: 0x0000, lo: 0x07},
 	{value: 0xc600, lo: 0x80, hi: 0x83},
 	{value: 0xe500, lo: 0x84, hi: 0x84},
@@ -6270,189 +6306,173 @@
 	{value: 0xc600, lo: 0xa1, hi: 0xbb},
 	{value: 0xe500, lo: 0xbc, hi: 0xbc},
 	{value: 0xc600, lo: 0xbd, hi: 0xbf},
-	// Block 0x68, offset 0x256
+	// Block 0x67, offset 0x24b
 	{value: 0x0000, lo: 0x05},
 	{value: 0xc600, lo: 0x80, hi: 0x97},
 	{value: 0xe500, lo: 0x98, hi: 0x98},
 	{value: 0xc600, lo: 0x99, hi: 0xb3},
 	{value: 0xe500, lo: 0xb4, hi: 0xb4},
 	{value: 0xc600, lo: 0xb5, hi: 0xbf},
-	// Block 0x69, offset 0x25c
+	// Block 0x68, offset 0x251
 	{value: 0x0000, lo: 0x05},
 	{value: 0xc600, lo: 0x80, hi: 0x8f},
 	{value: 0xe500, lo: 0x90, hi: 0x90},
 	{value: 0xc600, lo: 0x91, hi: 0xab},
 	{value: 0xe500, lo: 0xac, hi: 0xac},
 	{value: 0xc600, lo: 0xad, hi: 0xbf},
-	// Block 0x6a, offset 0x262
+	// Block 0x69, offset 0x257
 	{value: 0x0000, lo: 0x05},
 	{value: 0xc600, lo: 0x80, hi: 0x87},
 	{value: 0xe500, lo: 0x88, hi: 0x88},
 	{value: 0xc600, lo: 0x89, hi: 0xa3},
 	{value: 0xe500, lo: 0xa4, hi: 0xa4},
 	{value: 0xc600, lo: 0xa5, hi: 0xbf},
-	// Block 0x6b, offset 0x268
+	// Block 0x6a, offset 0x25d
 	{value: 0x0000, lo: 0x03},
 	{value: 0xc600, lo: 0x80, hi: 0x87},
 	{value: 0xe500, lo: 0x88, hi: 0x88},
 	{value: 0xc600, lo: 0x89, hi: 0xa3},
-	// Block 0x6c, offset 0x26c
+	// Block 0x6b, offset 0x261
 	{value: 0x0002, lo: 0x01},
 	{value: 0x0003, lo: 0x81, hi: 0xbf},
-	// Block 0x6d, offset 0x26e
-	{value: 0x0004, lo: 0x0e},
-	{value: 0x03c7, lo: 0x82, hi: 0x87},
-	{value: 0x03df, lo: 0x8a, hi: 0x8f},
-	{value: 0x03f7, lo: 0x92, hi: 0x97},
-	{value: 0x040f, lo: 0x9a, hi: 0x9c},
-	{value: 0x00bf, lo: 0xa0, hi: 0xa0},
-	{value: 0x00c2, lo: 0xa1, hi: 0xa1},
-	{value: 0x00cb, lo: 0xa2, hi: 0xa2},
-	{value: 0x429f, lo: 0xa3, hi: 0xa3},
-	{value: 0x00c8, lo: 0xa4, hi: 0xa4},
-	{value: 0x00c5, lo: 0xa5, hi: 0xa5},
-	{value: 0x04bf, lo: 0xa6, hi: 0xa6},
-	{value: 0x04e3, lo: 0xa8, hi: 0xa8},
-	{value: 0x04c3, lo: 0xa9, hi: 0xac},
-	{value: 0x04e7, lo: 0xad, hi: 0xae},
-	// Block 0x6e, offset 0x27d
+	// Block 0x6c, offset 0x263
 	{value: 0x0000, lo: 0x01},
 	{value: 0x812d, lo: 0xbd, hi: 0xbd},
-	// Block 0x6f, offset 0x27f
+	// Block 0x6d, offset 0x265
 	{value: 0x0000, lo: 0x01},
 	{value: 0x812d, lo: 0xa0, hi: 0xa0},
-	// Block 0x70, offset 0x281
+	// Block 0x6e, offset 0x267
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8132, lo: 0xb6, hi: 0xba},
-	// Block 0x71, offset 0x283
+	// Block 0x6f, offset 0x269
 	{value: 0x002c, lo: 0x05},
 	{value: 0x812d, lo: 0x8d, hi: 0x8d},
 	{value: 0x8132, lo: 0x8f, hi: 0x8f},
 	{value: 0x8132, lo: 0xb8, hi: 0xb8},
 	{value: 0x8101, lo: 0xb9, hi: 0xba},
 	{value: 0x8104, lo: 0xbf, hi: 0xbf},
-	// Block 0x72, offset 0x289
+	// Block 0x70, offset 0x26f
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8132, lo: 0xa5, hi: 0xa5},
 	{value: 0x812d, lo: 0xa6, hi: 0xa6},
-	// Block 0x73, offset 0x28c
+	// Block 0x71, offset 0x272
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8104, lo: 0x86, hi: 0x86},
 	{value: 0x8104, lo: 0xbf, hi: 0xbf},
-	// Block 0x74, offset 0x28f
+	// Block 0x72, offset 0x275
 	{value: 0x17fe, lo: 0x07},
 	{value: 0xa000, lo: 0x99, hi: 0x99},
-	{value: 0x4273, lo: 0x9a, hi: 0x9a},
+	{value: 0x4234, lo: 0x9a, hi: 0x9a},
 	{value: 0xa000, lo: 0x9b, hi: 0x9b},
-	{value: 0x427d, lo: 0x9c, hi: 0x9c},
+	{value: 0x423e, lo: 0x9c, hi: 0x9c},
 	{value: 0xa000, lo: 0xa5, hi: 0xa5},
-	{value: 0x4287, lo: 0xab, hi: 0xab},
+	{value: 0x4248, lo: 0xab, hi: 0xab},
 	{value: 0x8104, lo: 0xb9, hi: 0xba},
-	// Block 0x75, offset 0x297
+	// Block 0x73, offset 0x27d
 	{value: 0x0000, lo: 0x06},
 	{value: 0x8132, lo: 0x80, hi: 0x82},
 	{value: 0x9900, lo: 0xa7, hi: 0xa7},
-	{value: 0x19a5, lo: 0xae, hi: 0xae},
-	{value: 0x19ae, lo: 0xaf, hi: 0xaf},
+	{value: 0x2d7a, lo: 0xae, hi: 0xae},
+	{value: 0x2d84, lo: 0xaf, hi: 0xaf},
 	{value: 0xa000, lo: 0xb1, hi: 0xb2},
 	{value: 0x8104, lo: 0xb3, hi: 0xb4},
-	// Block 0x76, offset 0x29e
+	// Block 0x74, offset 0x284
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8104, lo: 0xb5, hi: 0xb5},
 	{value: 0x8102, lo: 0xb6, hi: 0xb6},
-	// Block 0x77, offset 0x2a1
+	// Block 0x75, offset 0x287
 	{value: 0x0002, lo: 0x01},
 	{value: 0x8102, lo: 0xa9, hi: 0xaa},
-	// Block 0x78, offset 0x2a3
+	// Block 0x76, offset 0x289
 	{value: 0x0000, lo: 0x07},
 	{value: 0xa000, lo: 0x87, hi: 0x87},
-	{value: 0x19b7, lo: 0x8b, hi: 0x8b},
-	{value: 0x19c0, lo: 0x8c, hi: 0x8c},
+	{value: 0x2d8e, lo: 0x8b, hi: 0x8b},
+	{value: 0x2d98, lo: 0x8c, hi: 0x8c},
 	{value: 0x8104, lo: 0x8d, hi: 0x8d},
 	{value: 0x9900, lo: 0x97, hi: 0x97},
 	{value: 0x8132, lo: 0xa6, hi: 0xac},
 	{value: 0x8132, lo: 0xb0, hi: 0xb4},
-	// Block 0x79, offset 0x2ab
-	{value: 0x7f37, lo: 0x06},
+	// Block 0x77, offset 0x291
+	{value: 0x6b5e, lo: 0x06},
 	{value: 0x9900, lo: 0xb0, hi: 0xb0},
 	{value: 0xa000, lo: 0xb9, hi: 0xb9},
 	{value: 0x9900, lo: 0xba, hi: 0xba},
-	{value: 0x19d2, lo: 0xbb, hi: 0xbb},
-	{value: 0x19c9, lo: 0xbc, hi: 0xbd},
-	{value: 0x19db, lo: 0xbe, hi: 0xbe},
-	// Block 0x7a, offset 0x2b2
+	{value: 0x2dac, lo: 0xbb, hi: 0xbb},
+	{value: 0x2da2, lo: 0xbc, hi: 0xbd},
+	{value: 0x2db6, lo: 0xbe, hi: 0xbe},
+	// Block 0x78, offset 0x298
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8104, lo: 0x82, hi: 0x82},
 	{value: 0x8102, lo: 0x83, hi: 0x83},
-	// Block 0x7b, offset 0x2b5
+	// Block 0x79, offset 0x29b
 	{value: 0x0000, lo: 0x05},
 	{value: 0x9900, lo: 0xaf, hi: 0xaf},
 	{value: 0xa000, lo: 0xb8, hi: 0xb9},
-	{value: 0x19e4, lo: 0xba, hi: 0xba},
-	{value: 0x19ed, lo: 0xbb, hi: 0xbb},
+	{value: 0x2dc0, lo: 0xba, hi: 0xba},
+	{value: 0x2dca, lo: 0xbb, hi: 0xbb},
 	{value: 0x8104, lo: 0xbf, hi: 0xbf},
-	// Block 0x7c, offset 0x2bb
+	// Block 0x7a, offset 0x2a1
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8102, lo: 0x80, hi: 0x80},
-	// Block 0x7d, offset 0x2bd
+	// Block 0x7b, offset 0x2a3
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8104, lo: 0xbf, hi: 0xbf},
-	// Block 0x7e, offset 0x2bf
+	// Block 0x7c, offset 0x2a5
 	{value: 0x0000, lo: 0x02},
 	{value: 0x8104, lo: 0xb6, hi: 0xb6},
 	{value: 0x8102, lo: 0xb7, hi: 0xb7},
-	// Block 0x7f, offset 0x2c2
+	// Block 0x7d, offset 0x2a8
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8101, lo: 0xb0, hi: 0xb4},
-	// Block 0x80, offset 0x2c4
+	// Block 0x7e, offset 0x2aa
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8132, lo: 0xb0, hi: 0xb6},
-	// Block 0x81, offset 0x2c6
+	// Block 0x7f, offset 0x2ac
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8101, lo: 0x9e, hi: 0x9e},
-	// Block 0x82, offset 0x2c8
+	// Block 0x80, offset 0x2ae
 	{value: 0x0000, lo: 0x0c},
-	{value: 0x4607, lo: 0x9e, hi: 0x9e},
-	{value: 0x4611, lo: 0x9f, hi: 0x9f},
-	{value: 0x4645, lo: 0xa0, hi: 0xa0},
-	{value: 0x4653, lo: 0xa1, hi: 0xa1},
-	{value: 0x4661, lo: 0xa2, hi: 0xa2},
-	{value: 0x466f, lo: 0xa3, hi: 0xa3},
-	{value: 0x467d, lo: 0xa4, hi: 0xa4},
+	{value: 0x465e, lo: 0x9e, hi: 0x9e},
+	{value: 0x4668, lo: 0x9f, hi: 0x9f},
+	{value: 0x469c, lo: 0xa0, hi: 0xa0},
+	{value: 0x46aa, lo: 0xa1, hi: 0xa1},
+	{value: 0x46b8, lo: 0xa2, hi: 0xa2},
+	{value: 0x46c6, lo: 0xa3, hi: 0xa3},
+	{value: 0x46d4, lo: 0xa4, hi: 0xa4},
 	{value: 0x812b, lo: 0xa5, hi: 0xa6},
 	{value: 0x8101, lo: 0xa7, hi: 0xa9},
 	{value: 0x8130, lo: 0xad, hi: 0xad},
 	{value: 0x812b, lo: 0xae, hi: 0xb2},
 	{value: 0x812d, lo: 0xbb, hi: 0xbf},
-	// Block 0x83, offset 0x2d5
+	// Block 0x81, offset 0x2bb
 	{value: 0x0000, lo: 0x09},
 	{value: 0x812d, lo: 0x80, hi: 0x82},
 	{value: 0x8132, lo: 0x85, hi: 0x89},
 	{value: 0x812d, lo: 0x8a, hi: 0x8b},
 	{value: 0x8132, lo: 0xaa, hi: 0xad},
-	{value: 0x461b, lo: 0xbb, hi: 0xbb},
-	{value: 0x4625, lo: 0xbc, hi: 0xbc},
-	{value: 0x468b, lo: 0xbd, hi: 0xbd},
-	{value: 0x46a7, lo: 0xbe, hi: 0xbe},
-	{value: 0x4699, lo: 0xbf, hi: 0xbf},
-	// Block 0x84, offset 0x2df
+	{value: 0x4672, lo: 0xbb, hi: 0xbb},
+	{value: 0x467c, lo: 0xbc, hi: 0xbc},
+	{value: 0x46e2, lo: 0xbd, hi: 0xbd},
+	{value: 0x46fe, lo: 0xbe, hi: 0xbe},
+	{value: 0x46f0, lo: 0xbf, hi: 0xbf},
+	// Block 0x82, offset 0x2c5
 	{value: 0x0000, lo: 0x01},
-	{value: 0x46b5, lo: 0x80, hi: 0x80},
-	// Block 0x85, offset 0x2e1
+	{value: 0x470c, lo: 0x80, hi: 0x80},
+	// Block 0x83, offset 0x2c7
 	{value: 0x0000, lo: 0x01},
 	{value: 0x8132, lo: 0x82, hi: 0x84},
-	// Block 0x86, offset 0x2e3
+	// Block 0x84, offset 0x2c9
 	{value: 0x0002, lo: 0x03},
 	{value: 0x0043, lo: 0x80, hi: 0x99},
 	{value: 0x0083, lo: 0x9a, hi: 0xb3},
 	{value: 0x0043, lo: 0xb4, hi: 0xbf},
-	// Block 0x87, offset 0x2e7
+	// Block 0x85, offset 0x2cd
 	{value: 0x0002, lo: 0x04},
 	{value: 0x005b, lo: 0x80, hi: 0x8d},
 	{value: 0x0083, lo: 0x8e, hi: 0x94},
 	{value: 0x0093, lo: 0x96, hi: 0xa7},
 	{value: 0x0043, lo: 0xa8, hi: 0xbf},
-	// Block 0x88, offset 0x2ec
+	// Block 0x86, offset 0x2d2
 	{value: 0x0002, lo: 0x0b},
 	{value: 0x0073, lo: 0x80, hi: 0x81},
 	{value: 0x0083, lo: 0x82, hi: 0x9b},
@@ -6465,13 +6485,13 @@
 	{value: 0x0083, lo: 0xb6, hi: 0xb9},
 	{value: 0x008d, lo: 0xbb, hi: 0xbb},
 	{value: 0x0091, lo: 0xbd, hi: 0xbf},
-	// Block 0x89, offset 0x2f8
+	// Block 0x87, offset 0x2de
 	{value: 0x0002, lo: 0x04},
 	{value: 0x0097, lo: 0x80, hi: 0x83},
 	{value: 0x00a1, lo: 0x85, hi: 0x8f},
 	{value: 0x0043, lo: 0x90, hi: 0xa9},
 	{value: 0x0083, lo: 0xaa, hi: 0xbf},
-	// Block 0x8a, offset 0x2fd
+	// Block 0x88, offset 0x2e3
 	{value: 0x0002, lo: 0x08},
 	{value: 0x00af, lo: 0x80, hi: 0x83},
 	{value: 0x0043, lo: 0x84, hi: 0x85},
@@ -6481,41 +6501,41 @@
 	{value: 0x0083, lo: 0x9e, hi: 0xb7},
 	{value: 0x0043, lo: 0xb8, hi: 0xb9},
 	{value: 0x0049, lo: 0xbb, hi: 0xbe},
-	// Block 0x8b, offset 0x306
+	// Block 0x89, offset 0x2ec
 	{value: 0x0002, lo: 0x05},
 	{value: 0x0053, lo: 0x80, hi: 0x84},
 	{value: 0x005f, lo: 0x86, hi: 0x86},
 	{value: 0x0067, lo: 0x8a, hi: 0x90},
 	{value: 0x0083, lo: 0x92, hi: 0xab},
 	{value: 0x0043, lo: 0xac, hi: 0xbf},
-	// Block 0x8c, offset 0x30c
+	// Block 0x8a, offset 0x2f2
 	{value: 0x0002, lo: 0x04},
 	{value: 0x006b, lo: 0x80, hi: 0x85},
 	{value: 0x0083, lo: 0x86, hi: 0x9f},
 	{value: 0x0043, lo: 0xa0, hi: 0xb9},
 	{value: 0x0083, lo: 0xba, hi: 0xbf},
-	// Block 0x8d, offset 0x311
+	// Block 0x8b, offset 0x2f7
 	{value: 0x0002, lo: 0x03},
 	{value: 0x008f, lo: 0x80, hi: 0x93},
 	{value: 0x0043, lo: 0x94, hi: 0xad},
 	{value: 0x0083, lo: 0xae, hi: 0xbf},
-	// Block 0x8e, offset 0x315
+	// Block 0x8c, offset 0x2fb
 	{value: 0x0002, lo: 0x04},
 	{value: 0x00a7, lo: 0x80, hi: 0x87},
 	{value: 0x0043, lo: 0x88, hi: 0xa1},
 	{value: 0x0083, lo: 0xa2, hi: 0xbb},
 	{value: 0x0043, lo: 0xbc, hi: 0xbf},
-	// Block 0x8f, offset 0x31a
+	// Block 0x8d, offset 0x300
 	{value: 0x0002, lo: 0x03},
 	{value: 0x004b, lo: 0x80, hi: 0x95},
 	{value: 0x0083, lo: 0x96, hi: 0xaf},
 	{value: 0x0043, lo: 0xb0, hi: 0xbf},
-	// Block 0x90, offset 0x31e
+	// Block 0x8e, offset 0x304
 	{value: 0x0003, lo: 0x0f},
 	{value: 0x01b8, lo: 0x80, hi: 0x80},
-	{value: 0x04d7, lo: 0x81, hi: 0x81},
+	{value: 0x045f, lo: 0x81, hi: 0x81},
 	{value: 0x01bb, lo: 0x82, hi: 0x9a},
-	{value: 0x04d3, lo: 0x9b, hi: 0x9b},
+	{value: 0x045b, lo: 0x9b, hi: 0x9b},
 	{value: 0x01c7, lo: 0x9c, hi: 0x9c},
 	{value: 0x01d0, lo: 0x9d, hi: 0x9d},
 	{value: 0x01d6, lo: 0x9e, hi: 0x9e},
@@ -6525,12 +6545,12 @@
 	{value: 0x0173, lo: 0xa2, hi: 0xb2},
 	{value: 0x0188, lo: 0xb3, hi: 0xb3},
 	{value: 0x01a6, lo: 0xb4, hi: 0xba},
-	{value: 0x04d7, lo: 0xbb, hi: 0xbb},
+	{value: 0x045f, lo: 0xbb, hi: 0xbb},
 	{value: 0x01bb, lo: 0xbc, hi: 0xbf},
-	// Block 0x91, offset 0x32e
+	// Block 0x8f, offset 0x314
 	{value: 0x0003, lo: 0x0d},
 	{value: 0x01c7, lo: 0x80, hi: 0x94},
-	{value: 0x04d3, lo: 0x95, hi: 0x95},
+	{value: 0x045b, lo: 0x95, hi: 0x95},
 	{value: 0x01c7, lo: 0x96, hi: 0x96},
 	{value: 0x01d0, lo: 0x97, hi: 0x97},
 	{value: 0x01d6, lo: 0x98, hi: 0x98},
@@ -6540,12 +6560,12 @@
 	{value: 0x0173, lo: 0x9c, hi: 0xac},
 	{value: 0x0188, lo: 0xad, hi: 0xad},
 	{value: 0x01a6, lo: 0xae, hi: 0xb4},
-	{value: 0x04d7, lo: 0xb5, hi: 0xb5},
+	{value: 0x045f, lo: 0xb5, hi: 0xb5},
 	{value: 0x01bb, lo: 0xb6, hi: 0xbf},
-	// Block 0x92, offset 0x33c
+	// Block 0x90, offset 0x322
 	{value: 0x0003, lo: 0x0d},
 	{value: 0x01d9, lo: 0x80, hi: 0x8e},
-	{value: 0x04d3, lo: 0x8f, hi: 0x8f},
+	{value: 0x045b, lo: 0x8f, hi: 0x8f},
 	{value: 0x01c7, lo: 0x90, hi: 0x90},
 	{value: 0x01d0, lo: 0x91, hi: 0x91},
 	{value: 0x01d6, lo: 0x92, hi: 0x92},
@@ -6555,12 +6575,12 @@
 	{value: 0x0173, lo: 0x96, hi: 0xa6},
 	{value: 0x0188, lo: 0xa7, hi: 0xa7},
 	{value: 0x01a6, lo: 0xa8, hi: 0xae},
-	{value: 0x04d7, lo: 0xaf, hi: 0xaf},
+	{value: 0x045f, lo: 0xaf, hi: 0xaf},
 	{value: 0x01bb, lo: 0xb0, hi: 0xbf},
-	// Block 0x93, offset 0x34a
+	// Block 0x91, offset 0x330
 	{value: 0x0003, lo: 0x0d},
 	{value: 0x01eb, lo: 0x80, hi: 0x88},
-	{value: 0x04d3, lo: 0x89, hi: 0x89},
+	{value: 0x045b, lo: 0x89, hi: 0x89},
 	{value: 0x01c7, lo: 0x8a, hi: 0x8a},
 	{value: 0x01d0, lo: 0x8b, hi: 0x8b},
 	{value: 0x01d6, lo: 0x8c, hi: 0x8c},
@@ -6570,36 +6590,36 @@
 	{value: 0x0173, lo: 0x90, hi: 0xa0},
 	{value: 0x0188, lo: 0xa1, hi: 0xa1},
 	{value: 0x01a6, lo: 0xa2, hi: 0xa8},
-	{value: 0x04d7, lo: 0xa9, hi: 0xa9},
+	{value: 0x045f, lo: 0xa9, hi: 0xa9},
 	{value: 0x01bb, lo: 0xaa, hi: 0xbf},
-	// Block 0x94, offset 0x358
+	// Block 0x92, offset 0x33e
 	{value: 0x0000, lo: 0x01},
 	{value: 0x812d, lo: 0x90, hi: 0x96},
-	// Block 0x95, offset 0x35a
+	// Block 0x93, offset 0x340
 	{value: 0x0002, lo: 0x09},
 	{value: 0x0063, lo: 0x80, hi: 0x89},
-	{value: 0x1ae4, lo: 0x8a, hi: 0x8a},
-	{value: 0x1b14, lo: 0x8b, hi: 0x8b},
-	{value: 0x1b2f, lo: 0x8c, hi: 0x8c},
-	{value: 0x1b35, lo: 0x8d, hi: 0x8d},
-	{value: 0x1d53, lo: 0x8e, hi: 0x8e},
-	{value: 0x1b41, lo: 0x8f, hi: 0x8f},
-	{value: 0x1b0e, lo: 0xaa, hi: 0xaa},
-	{value: 0x1b11, lo: 0xab, hi: 0xab},
-	// Block 0x96, offset 0x364
+	{value: 0x194d, lo: 0x8a, hi: 0x8a},
+	{value: 0x197d, lo: 0x8b, hi: 0x8b},
+	{value: 0x1998, lo: 0x8c, hi: 0x8c},
+	{value: 0x199e, lo: 0x8d, hi: 0x8d},
+	{value: 0x1bbc, lo: 0x8e, hi: 0x8e},
+	{value: 0x19aa, lo: 0x8f, hi: 0x8f},
+	{value: 0x1977, lo: 0xaa, hi: 0xaa},
+	{value: 0x197a, lo: 0xab, hi: 0xab},
+	// Block 0x94, offset 0x34a
 	{value: 0x0000, lo: 0x01},
-	{value: 0x1ad2, lo: 0x90, hi: 0x90},
-	// Block 0x97, offset 0x366
+	{value: 0x193b, lo: 0x90, hi: 0x90},
+	// Block 0x95, offset 0x34c
 	{value: 0x0028, lo: 0x09},
-	{value: 0x2a5e, lo: 0x80, hi: 0x80},
-	{value: 0x2a22, lo: 0x81, hi: 0x81},
-	{value: 0x2a2c, lo: 0x82, hi: 0x82},
-	{value: 0x2a40, lo: 0x83, hi: 0x84},
-	{value: 0x2a4a, lo: 0x85, hi: 0x86},
-	{value: 0x2a36, lo: 0x87, hi: 0x87},
-	{value: 0x2a54, lo: 0x88, hi: 0x88},
-	{value: 0x0be7, lo: 0x90, hi: 0x90},
-	{value: 0x095f, lo: 0x91, hi: 0x91},
+	{value: 0x285e, lo: 0x80, hi: 0x80},
+	{value: 0x2822, lo: 0x81, hi: 0x81},
+	{value: 0x282c, lo: 0x82, hi: 0x82},
+	{value: 0x2840, lo: 0x83, hi: 0x84},
+	{value: 0x284a, lo: 0x85, hi: 0x86},
+	{value: 0x2836, lo: 0x87, hi: 0x87},
+	{value: 0x2854, lo: 0x88, hi: 0x88},
+	{value: 0x0b6f, lo: 0x90, hi: 0x90},
+	{value: 0x08e7, lo: 0x91, hi: 0x91},
 }
 
 // recompMap: 7520 bytes (entries only)
@@ -7546,4 +7566,4 @@
 	0x15B915AF: 0x115BB,
 }
 
-// Total size of tables: 52KB (53487 bytes)
+// Total size of tables: 53KB (53784 bytes)
diff --git a/go/src/golang.org/x/text/unicode/norm/normregtest.go b/go/src/golang.org/x/text/unicode/norm/ucd_test.go
similarity index 60%
rename from go/src/golang.org/x/text/unicode/norm/normregtest.go
rename to go/src/golang.org/x/text/unicode/norm/ucd_test.go
index 654b25b..a949a29 100644
--- a/go/src/golang.org/x/text/unicode/norm/normregtest.go
+++ b/go/src/golang.org/x/text/unicode/norm/ucd_test.go
@@ -2,52 +2,37 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
-package main
+package norm
 
 import (
 	"bufio"
 	"bytes"
 	"flag"
 	"fmt"
-	"log"
-	"net/http"
-	"os"
-	"path"
 	"regexp"
 	"runtime"
 	"strconv"
 	"strings"
+	"sync"
+	"testing"
 	"time"
-	"unicode"
 	"unicode/utf8"
 
-	"golang.org/x/text/unicode/norm"
+	"golang.org/x/text/internal/gen"
 )
 
-func main() {
-	flag.Parse()
-	loadTestData()
-	CharacterByCharacterTests()
-	StandardTests()
-	PerformanceTest()
-	if errorCount == 0 {
-		fmt.Println("PASS")
+var long = flag.Bool("long", false,
+	"run time-consuming tests, such as tests that fetch data online")
+
+var once sync.Once
+
+func skipShort(t *testing.T) {
+	if !gen.IsLocal() && !*long {
+		t.Skip("skipping test to prevent downloading; to run use -long or use -local to specify a local source")
 	}
+	once.Do(func() { loadTestData(t) })
 }
 
-const file = "NormalizationTest.txt"
-
-var url = flag.String("url",
-	"http://www.unicode.org/Public/"+unicode.Version+"/ucd/"+file,
-	"URL of Unicode database directory")
-var localFiles = flag.Bool("local",
-	false,
-	"data files have been copied to the current directory; for debugging only")
-
-var logger = log.New(os.Stderr, "", log.Lshortfile)
-
 // This regression test runs the test set in NormalizationTest.txt
 // (taken from http://www.unicode.org/Public/<unicode.Version>/ucd/).
 //
@@ -124,22 +109,8 @@
 var counter int
 
 // Load the data form NormalizationTest.txt
-func loadTestData() {
-	if *localFiles {
-		pwd, _ := os.Getwd()
-		*url = "file://" + path.Join(pwd, file)
-	}
-	t := &http.Transport{}
-	t.RegisterProtocol("file", http.NewFileTransport(http.Dir("/")))
-	c := &http.Client{Transport: t}
-	resp, err := c.Get(*url)
-	if err != nil {
-		logger.Fatal(err)
-	}
-	if resp.StatusCode != 200 {
-		logger.Fatal("bad GET status for "+file, resp.Status)
-	}
-	f := resp.Body
+func loadTestData(t *testing.T) {
+	f := gen.OpenUCDFile("NormalizationTest.txt")
 	defer f.Close()
 	scanner := bufio.NewScanner(f)
 	for scanner.Scan() {
@@ -150,11 +121,11 @@
 		m := partRe.FindStringSubmatch(line)
 		if m != nil {
 			if len(m) < 3 {
-				logger.Fatal("Failed to parse Part: ", line)
+				t.Fatal("Failed to parse Part: ", line)
 			}
 			i, err := strconv.Atoi(m[1])
 			if err != nil {
-				logger.Fatal(err)
+				t.Fatal(err)
 			}
 			name := m[2]
 			part = append(part, Part{name: name[:len(name)-1], number: i})
@@ -162,7 +133,7 @@
 		}
 		m = testRe.FindStringSubmatch(line)
 		if m == nil || len(m) < 7 {
-			logger.Fatalf(`Failed to parse: "%s" result: %#v`, line, m)
+			t.Fatalf(`Failed to parse: "%s" result: %#v`, line, m)
 		}
 		test := Test{name: m[6], partnr: len(part) - 1, number: counter}
 		counter++
@@ -170,7 +141,7 @@
 			for _, split := range strings.Split(m[j], " ") {
 				r, err := strconv.ParseUint(split, 16, 64)
 				if err != nil {
-					logger.Fatal(err)
+					t.Fatal(err)
 				}
 				if test.r == 0 {
 					// save for CharacterByCharacterTests
@@ -185,50 +156,38 @@
 		part.tests = append(part.tests, test)
 	}
 	if scanner.Err() != nil {
-		logger.Fatal(scanner.Err())
+		t.Fatal(scanner.Err())
 	}
 }
 
-var fstr = []string{"NFC", "NFD", "NFKC", "NFKD"}
-
-var errorCount int
-
-func cmpResult(t *Test, name string, f norm.Form, gold, test, result string) {
+func cmpResult(t *testing.T, tc *Test, name string, f Form, gold, test, result string) {
 	if gold != result {
-		errorCount++
-		if errorCount > 20 {
-			return
-		}
-		logger.Printf("%s:%s: %s(%+q)=%+q; want %+q: %s",
-			t.Name(), name, fstr[f], test, result, gold, t.name)
+		t.Errorf("%s:%s: %s(%+q)=%+q; want %+q: %s",
+			tc.Name(), name, fstr[f], test, result, gold, tc.name)
 	}
 }
 
-func cmpIsNormal(t *Test, name string, f norm.Form, test string, result, want bool) {
+func cmpIsNormal(t *testing.T, tc *Test, name string, f Form, test string, result, want bool) {
 	if result != want {
-		errorCount++
-		if errorCount > 20 {
-			return
-		}
-		logger.Printf("%s:%s: %s(%+q)=%v; want %v", t.Name(), name, fstr[f], test, result, want)
+		t.Errorf("%s:%s: %s(%+q)=%v; want %v", tc.Name(), name, fstr[f], test, result, want)
 	}
 }
 
-func doTest(t *Test, f norm.Form, gold, test string) {
+func doTest(t *testing.T, tc *Test, f Form, gold, test string) {
 	testb := []byte(test)
 	result := f.Bytes(testb)
-	cmpResult(t, "Bytes", f, gold, test, string(result))
+	cmpResult(t, tc, "Bytes", f, gold, test, string(result))
 
 	sresult := f.String(test)
-	cmpResult(t, "String", f, gold, test, sresult)
+	cmpResult(t, tc, "String", f, gold, test, sresult)
 
 	acc := []byte{}
-	i := norm.Iter{}
+	i := Iter{}
 	i.InitString(f, test)
 	for !i.Done() {
 		acc = append(acc, i.Next()...)
 	}
-	cmpResult(t, "Iter.Next", f, gold, test, string(acc))
+	cmpResult(t, tc, "Iter.Next", f, gold, test, string(acc))
 
 	buf := make([]byte, 128)
 	acc = nil
@@ -237,32 +196,33 @@
 		acc = append(acc, buf[:nDst]...)
 		p += nSrc
 	}
-	cmpResult(t, "Transform", f, gold, test, string(acc))
+	cmpResult(t, tc, "Transform", f, gold, test, string(acc))
 
 	for i := range test {
 		out := f.Append(f.Bytes([]byte(test[:i])), []byte(test[i:])...)
-		cmpResult(t, fmt.Sprintf(":Append:%d", i), f, gold, test, string(out))
+		cmpResult(t, tc, fmt.Sprintf(":Append:%d", i), f, gold, test, string(out))
 	}
-	cmpIsNormal(t, "IsNormal", f, test, f.IsNormal([]byte(test)), test == gold)
-	cmpIsNormal(t, "IsNormalString", f, test, f.IsNormalString(test), test == gold)
+	cmpIsNormal(t, tc, "IsNormal", f, test, f.IsNormal([]byte(test)), test == gold)
+	cmpIsNormal(t, tc, "IsNormalString", f, test, f.IsNormalString(test), test == gold)
 }
 
-func doConformanceTests(t *Test, partn int) {
+func doConformanceTests(t *testing.T, tc *Test, partn int) {
 	for i := 0; i <= 2; i++ {
-		doTest(t, norm.NFC, t.cols[1], t.cols[i])
-		doTest(t, norm.NFD, t.cols[2], t.cols[i])
-		doTest(t, norm.NFKC, t.cols[3], t.cols[i])
-		doTest(t, norm.NFKD, t.cols[4], t.cols[i])
+		doTest(t, tc, NFC, tc.cols[1], tc.cols[i])
+		doTest(t, tc, NFD, tc.cols[2], tc.cols[i])
+		doTest(t, tc, NFKC, tc.cols[3], tc.cols[i])
+		doTest(t, tc, NFKD, tc.cols[4], tc.cols[i])
 	}
 	for i := 3; i <= 4; i++ {
-		doTest(t, norm.NFC, t.cols[3], t.cols[i])
-		doTest(t, norm.NFD, t.cols[4], t.cols[i])
-		doTest(t, norm.NFKC, t.cols[3], t.cols[i])
-		doTest(t, norm.NFKD, t.cols[4], t.cols[i])
+		doTest(t, tc, NFC, tc.cols[3], tc.cols[i])
+		doTest(t, tc, NFD, tc.cols[4], tc.cols[i])
+		doTest(t, tc, NFKC, tc.cols[3], tc.cols[i])
+		doTest(t, tc, NFKD, tc.cols[4], tc.cols[i])
 	}
 }
 
-func CharacterByCharacterTests() {
+func TestCharacterByCharacter(t *testing.T) {
+	skipShort(t)
 	tests := part[1].tests
 	var last rune = 0
 	for i := 0; i <= len(tests); i++ { // last one is special case
@@ -274,37 +234,39 @@
 		}
 		for last++; last < r; last++ {
 			// Check all characters that were not explicitly listed in the test.
-			t := &Test{partnr: 1, number: -1}
+			tc := &Test{partnr: 1, number: -1}
 			char := string(last)
-			doTest(t, norm.NFC, char, char)
-			doTest(t, norm.NFD, char, char)
-			doTest(t, norm.NFKC, char, char)
-			doTest(t, norm.NFKD, char, char)
+			doTest(t, tc, NFC, char, char)
+			doTest(t, tc, NFD, char, char)
+			doTest(t, tc, NFKC, char, char)
+			doTest(t, tc, NFKD, char, char)
 		}
 		if i < len(tests) {
-			doConformanceTests(&tests[i], 1)
+			doConformanceTests(t, &tests[i], 1)
 		}
 	}
 }
 
-func StandardTests() {
+func TestStandardTests(t *testing.T) {
+	skipShort(t)
 	for _, j := range []int{0, 2, 3} {
 		for _, test := range part[j].tests {
-			doConformanceTests(&test, j)
+			doConformanceTests(t, &test, j)
 		}
 	}
 }
 
-// PerformanceTest verifies that normalization is O(n). If any of the
+// TestPerformance verifies that normalization is O(n). If any of the
 // code does not properly check for maxCombiningChars, normalization
 // may exhibit O(n**2) behavior.
-func PerformanceTest() {
+func TestPerformance(t *testing.T) {
+	skipShort(t)
 	runtime.GOMAXPROCS(2)
 	success := make(chan bool, 1)
 	go func() {
 		buf := bytes.Repeat([]byte("\u035D"), 1024*1024)
 		buf = append(buf, "\u035B"...)
-		norm.NFC.Append(nil, buf...)
+		NFC.Append(nil, buf...)
 		success <- true
 	}()
 	timeout := time.After(1 * time.Second)
@@ -312,7 +274,6 @@
 	case <-success:
 		// test completed before the timeout
 	case <-timeout:
-		errorCount++
-		logger.Printf(`unexpectedly long time to complete PerformanceTest`)
+		t.Errorf(`unexpectedly long time to complete PerformanceTest`)
 	}
 }
diff --git a/go/src/golang.org/x/text/unicode/rangetable/gen.go b/go/src/golang.org/x/text/unicode/rangetable/gen.go
new file mode 100644
index 0000000..a6ea172
--- /dev/null
+++ b/go/src/golang.org/x/text/unicode/rangetable/gen.go
@@ -0,0 +1,126 @@
+// Copyright 2015 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.
+
+// +build ignore
+
+package main
+
+import (
+	"bytes"
+	"flag"
+	"fmt"
+	"io"
+	"log"
+	"reflect"
+	"sort"
+	"strings"
+	"unicode"
+
+	"golang.org/x/text/internal/gen"
+	"golang.org/x/text/internal/ucd"
+	"golang.org/x/text/unicode/rangetable"
+)
+
+var versionList = flag.String("versions", "",
+	"list of versions for which to generate RangeTables")
+
+const bootstrapMessage = `No versions specified.
+To bootstrap the code generation, run:
+	go run gen.go --versions=4.1.0,5.0.0,6.0.0,6.1.0,6.2.0,6.3.0,7.0.0
+
+and ensure that the latest versions are included by checking:
+	http://www.unicode.org/Public/`
+
+func getVersions() []string {
+	if *versionList == "" {
+		log.Fatal(bootstrapMessage)
+	}
+
+	versions := strings.Split(*versionList, ",")
+	sort.Strings(versions)
+
+	// Ensure that at least the current version is included.
+	for _, v := range versions {
+		if v == gen.UnicodeVersion() {
+			return versions
+		}
+	}
+
+	versions = append(versions, gen.UnicodeVersion())
+	sort.Strings(versions)
+	return versions
+}
+
+func main() {
+	gen.Init()
+
+	versions := getVersions()
+
+	w := &bytes.Buffer{}
+
+	fmt.Fprintf(w, "//go:generate go run gen.go --versions=%s\n\n", strings.Join(versions, ","))
+	fmt.Fprintf(w, "import \"unicode\"\n\n")
+
+	vstr := func(s string) string { return strings.Replace(s, ".", "_", -1) }
+
+	fmt.Fprintf(w, "var assigned = map[string]*unicode.RangeTable{\n")
+	for _, v := range versions {
+		fmt.Fprintf(w, "\t%q: assigned%s,\n", v, vstr(v))
+	}
+	fmt.Fprintf(w, "}\n\n")
+
+	var size int
+	for _, v := range versions {
+		assigned := []rune{}
+
+		parse(v, func(p *ucd.Parser) {
+			assigned = append(assigned, p.Rune(0))
+		})
+
+		rt := rangetable.New(assigned...)
+		sz := int(reflect.TypeOf(unicode.RangeTable{}).Size())
+		sz += int(reflect.TypeOf(unicode.Range16{}).Size()) * len(rt.R16)
+		sz += int(reflect.TypeOf(unicode.Range32{}).Size()) * len(rt.R32)
+
+		fmt.Fprintf(w, "// size %d bytes (%d KiB)\n", sz, sz/1024)
+		fmt.Fprintf(w, "var assigned%s = ", vstr(v))
+		print(w, rt)
+
+		size += sz
+	}
+
+	fmt.Fprintf(w, "// Total size %d bytes (%d KiB)\n", size, size/1024)
+
+	gen.WriteGoFile("tables.go", "rangetable", w.Bytes())
+}
+
+// parse calls f for each entry in the given UCD file.
+func parse(version string, f func(p *ucd.Parser)) {
+	r := gen.Open("http://www.unicode.org/Public/", "", version+"/ucd/UnicodeData.txt")
+	defer r.Close()
+
+	p := ucd.New(r)
+	for p.Next() {
+		f(p)
+	}
+	if err := p.Err(); err != nil {
+		log.Fatal(err)
+	}
+}
+
+func print(w io.Writer, rt *unicode.RangeTable) {
+	fmt.Fprintln(w, "&unicode.RangeTable{")
+	fmt.Fprintln(w, "\tR16: []unicode.Range16{")
+	for _, r := range rt.R16 {
+		fmt.Fprintf(w, "\t\t{%#04x, %#04x, %d},\n", r.Lo, r.Hi, r.Stride)
+	}
+	fmt.Fprintln(w, "\t},")
+	fmt.Fprintln(w, "\tR32: []unicode.Range32{")
+	for _, r := range rt.R32 {
+		fmt.Fprintf(w, "\t\t{%#08x, %#08x, %d},\n", r.Lo, r.Hi, r.Stride)
+	}
+	fmt.Fprintln(w, "\t},")
+	fmt.Fprintf(w, "\tLatinOffset: %d,\n", rt.LatinOffset)
+	fmt.Fprintf(w, "}\n\n")
+}
diff --git a/go/src/golang.org/x/text/unicode/rangetable/merge.go b/go/src/golang.org/x/text/unicode/rangetable/merge.go
new file mode 100644
index 0000000..ea2a080
--- /dev/null
+++ b/go/src/golang.org/x/text/unicode/rangetable/merge.go
@@ -0,0 +1,260 @@
+// Copyright 2015 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 rangetable
+
+import (
+	"unicode"
+)
+
+// atEnd is used to mark a completed iteration.
+const atEnd = unicode.MaxRune + 1
+
+// Merge returns a new RangeTable that is the union of the given tables.
+// It can also be used to compact user-created RangeTables. The entries in
+// R16 and R32 for any given RangeTable should be sorted and non-overlapping.
+//
+// A lookup in the resulting table can be several times faster than using In
+// directly on the ranges. Merge is an expensive operation, however, and only
+// makes sense if one intends to use the result for more than a couple of
+// hundred lookups.
+func Merge(ranges ...*unicode.RangeTable) *unicode.RangeTable {
+	rt := &unicode.RangeTable{}
+	if len(ranges) == 0 {
+		return rt
+	}
+
+	iter := tablesIter(make([]tableIndex, len(ranges)))
+
+	for i, t := range ranges {
+		iter[i] = tableIndex{t, 0, atEnd}
+		if len(t.R16) > 0 {
+			iter[i].next = rune(t.R16[0].Lo)
+		}
+	}
+
+	if r0 := iter.next16(); r0.Stride != 0 {
+		for {
+			r1 := iter.next16()
+			if r1.Stride == 0 {
+				rt.R16 = append(rt.R16, r0)
+				break
+			}
+			stride := r1.Lo - r0.Hi
+			if (r1.Lo == r1.Hi || stride == r1.Stride) && (r0.Lo == r0.Hi || stride == r0.Stride) {
+				// Fully merge the next range into the previous one.
+				r0.Hi, r0.Stride = r1.Hi, stride
+				continue
+			} else if stride == r0.Stride {
+				// Move the first element of r1 to r0. This may eliminate an
+				// entry.
+				r0.Hi = r1.Lo
+				r0.Stride = stride
+				r1.Lo = r1.Lo + r1.Stride
+				if r1.Lo > r1.Hi {
+					continue
+				}
+			}
+			rt.R16 = append(rt.R16, r0)
+			r0 = r1
+		}
+	}
+
+	for i, t := range ranges {
+		iter[i] = tableIndex{t, 0, atEnd}
+		if len(t.R32) > 0 {
+			iter[i].next = rune(t.R32[0].Lo)
+		}
+	}
+
+	if r0 := iter.next32(); r0.Stride != 0 {
+		for {
+			r1 := iter.next32()
+			if r1.Stride == 0 {
+				rt.R32 = append(rt.R32, r0)
+				break
+			}
+			stride := r1.Lo - r0.Hi
+			if (r1.Lo == r1.Hi || stride == r1.Stride) && (r0.Lo == r0.Hi || stride == r0.Stride) {
+				// Fully merge the next range into the previous one.
+				r0.Hi, r0.Stride = r1.Hi, stride
+				continue
+			} else if stride == r0.Stride {
+				// Move the first element of r1 to r0. This may eliminate an
+				// entry.
+				r0.Hi = r1.Lo
+				r1.Lo = r1.Lo + r1.Stride
+				if r1.Lo > r1.Hi {
+					continue
+				}
+			}
+			rt.R32 = append(rt.R32, r0)
+			r0 = r1
+		}
+	}
+
+	for i := 0; i < len(rt.R16) && rt.R16[i].Hi <= unicode.MaxLatin1; i++ {
+		rt.LatinOffset = i + 1
+	}
+
+	return rt
+}
+
+type tableIndex struct {
+	t    *unicode.RangeTable
+	p    uint32
+	next rune
+}
+
+type tablesIter []tableIndex
+
+// sortIter does an insertion sort using the next field of tableIndex. Insertion
+// sort is a good sorting algorithm for this case.
+func sortIter(t []tableIndex) {
+	for i := range t {
+		for j := i; j > 0 && t[j-1].next > t[j].next; j-- {
+			t[j], t[j-1] = t[j-1], t[j]
+		}
+	}
+}
+
+// next16 finds the ranged to be added to the table. If ranges overlap between
+// multiple tables it clips the result to a non-overlapping range if the
+// elements are not fully subsumed. It returns a zero range if there are no more
+// ranges.
+func (ti tablesIter) next16() unicode.Range16 {
+	sortIter(ti)
+
+	t0 := ti[0]
+	if t0.next == atEnd {
+		return unicode.Range16{}
+	}
+	r0 := t0.t.R16[t0.p]
+	r0.Lo = uint16(t0.next)
+
+	// We restrict the Hi of the current range if it overlaps with another range.
+	for i := range ti {
+		tn := ti[i]
+		// Since our tableIndices are sorted by next, we can break if the there
+		// is no overlap. The first value of a next range can always be merged
+		// into the current one, so we can break in case of equality as well.
+		if rune(r0.Hi) <= tn.next {
+			break
+		}
+		rn := tn.t.R16[tn.p]
+		rn.Lo = uint16(tn.next)
+
+		// Limit r0.Hi based on next ranges in list, but allow it to overlap
+		// with ranges as long as it subsumes it.
+		m := (rn.Lo - r0.Lo) % r0.Stride
+		if m == 0 && (rn.Stride == r0.Stride || rn.Lo == rn.Hi) {
+			// Overlap, take the min of the two Hi values: for simplicity's sake
+			// we only process one range at a time.
+			if r0.Hi > rn.Hi {
+				r0.Hi = rn.Hi
+			}
+		} else {
+			// Not a compatible stride. Set to the last possible value before
+			// rn.Lo, but ensure there is at least one value.
+			if x := rn.Lo - m; r0.Lo <= x {
+				r0.Hi = x
+			}
+			break
+		}
+	}
+
+	// Update the next values for each table.
+	for i := range ti {
+		tn := &ti[i]
+		if rune(r0.Hi) < tn.next {
+			break
+		}
+		rn := tn.t.R16[tn.p]
+		stride := rune(rn.Stride)
+		tn.next += stride * (1 + ((rune(r0.Hi) - tn.next) / stride))
+		if rune(rn.Hi) < tn.next {
+			if tn.p++; int(tn.p) == len(tn.t.R16) {
+				tn.next = atEnd
+			} else {
+				tn.next = rune(tn.t.R16[tn.p].Lo)
+			}
+		}
+	}
+
+	if r0.Lo == r0.Hi {
+		r0.Stride = 1
+	}
+
+	return r0
+}
+
+// next32 finds the ranged to be added to the table. If ranges overlap between
+// multiple tables it clips the result to a non-overlapping range if the
+// elements are not fully subsumed. It returns a zero range if there are no more
+// ranges.
+func (ti tablesIter) next32() unicode.Range32 {
+	sortIter(ti)
+
+	t0 := ti[0]
+	if t0.next == atEnd {
+		return unicode.Range32{}
+	}
+	r0 := t0.t.R32[t0.p]
+	r0.Lo = uint32(t0.next)
+
+	// We restrict the Hi of the current range if it overlaps with another range.
+	for i := range ti {
+		tn := ti[i]
+		// Since our tableIndices are sorted by next, we can break if the there
+		// is no overlap. The first value of a next range can always be merged
+		// into the current one, so we can break in case of equality as well.
+		if rune(r0.Hi) <= tn.next {
+			break
+		}
+		rn := tn.t.R32[tn.p]
+		rn.Lo = uint32(tn.next)
+
+		// Limit r0.Hi based on next ranges in list, but allow it to overlap
+		// with ranges as long as it subsumes it.
+		m := (rn.Lo - r0.Lo) % r0.Stride
+		if m == 0 && (rn.Stride == r0.Stride || rn.Lo == rn.Hi) {
+			// Overlap, take the min of the two Hi values: for simplicity's sake
+			// we only process one range at a time.
+			if r0.Hi > rn.Hi {
+				r0.Hi = rn.Hi
+			}
+		} else {
+			// Not a compatible stride. Set to the last possible value before
+			// rn.Lo, but ensure there is at least one value.
+			if x := rn.Lo - m; r0.Lo <= x {
+				r0.Hi = x
+			}
+			break
+		}
+	}
+
+	// Update the next values for each table.
+	for i := range ti {
+		tn := &ti[i]
+		if rune(r0.Hi) < tn.next {
+			break
+		}
+		rn := tn.t.R32[tn.p]
+		stride := rune(rn.Stride)
+		tn.next += stride * (1 + ((rune(r0.Hi) - tn.next) / stride))
+		if rune(rn.Hi) < tn.next {
+			if tn.p++; int(tn.p) == len(tn.t.R32) {
+				tn.next = atEnd
+			} else {
+				tn.next = rune(tn.t.R32[tn.p].Lo)
+			}
+		}
+	}
+
+	if r0.Lo == r0.Hi {
+		r0.Stride = 1
+	}
+
+	return r0
+}
diff --git a/go/src/golang.org/x/text/unicode/rangetable/merge_test.go b/go/src/golang.org/x/text/unicode/rangetable/merge_test.go
new file mode 100644
index 0000000..93ed0fc
--- /dev/null
+++ b/go/src/golang.org/x/text/unicode/rangetable/merge_test.go
@@ -0,0 +1,184 @@
+// Copyright 2015 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 rangetable
+
+import (
+	"testing"
+	"unicode"
+)
+
+var (
+	maxRuneTable = &unicode.RangeTable{
+		R32: []unicode.Range32{
+			{unicode.MaxRune, unicode.MaxRune, 1},
+		},
+	}
+
+	overlap1 = &unicode.RangeTable{
+		R16: []unicode.Range16{
+			{0x100, 0xfffc, 4},
+		},
+		R32: []unicode.Range32{
+			{0x100000, 0x10fffc, 4},
+		},
+	}
+
+	overlap2 = &unicode.RangeTable{
+		R16: []unicode.Range16{
+			{0x101, 0xfffd, 4},
+		},
+		R32: []unicode.Range32{
+			{0x100001, 0x10fffd, 3},
+		},
+	}
+
+	// The following table should be compacted into two entries for R16 and R32.
+	optimize = &unicode.RangeTable{
+		R16: []unicode.Range16{
+			{0x1, 0x1, 1},
+			{0x2, 0x2, 1},
+			{0x3, 0x3, 1},
+			{0x5, 0x5, 1},
+			{0x7, 0x7, 1},
+			{0x9, 0x9, 1},
+			{0xb, 0xf, 2},
+		},
+		R32: []unicode.Range32{
+			{0x10001, 0x10001, 1},
+			{0x10002, 0x10002, 1},
+			{0x10003, 0x10003, 1},
+			{0x10005, 0x10005, 1},
+			{0x10007, 0x10007, 1},
+			{0x10009, 0x10009, 1},
+			{0x1000b, 0x1000f, 2},
+		},
+	}
+)
+
+func TestMerge(t *testing.T) {
+	for i, tt := range [][]*unicode.RangeTable{
+		{unicode.Cc, unicode.Cf},
+		{unicode.L, unicode.Ll},
+		{unicode.L, unicode.Ll, unicode.Lu},
+		{unicode.Ll, unicode.Lu},
+		{unicode.M},
+		unicode.GraphicRanges,
+		cased,
+
+		// Merge R16 only and R32 only and vice versa.
+		{unicode.Khmer, unicode.Khudawadi},
+		{unicode.Imperial_Aramaic, unicode.Radical},
+
+		// Merge with empty.
+		{&unicode.RangeTable{}},
+		{&unicode.RangeTable{}, &unicode.RangeTable{}},
+		{&unicode.RangeTable{}, &unicode.RangeTable{}, &unicode.RangeTable{}},
+		{&unicode.RangeTable{}, unicode.Hiragana},
+		{unicode.Inherited, &unicode.RangeTable{}},
+		{&unicode.RangeTable{}, unicode.Hanunoo, &unicode.RangeTable{}},
+
+		// Hypothetical tables.
+		{maxRuneTable},
+		{overlap1, overlap2},
+
+		// Optimization
+		{optimize},
+	} {
+		rt := Merge(tt...)
+		for r := rune(0); r <= unicode.MaxRune; r++ {
+			if got, want := unicode.Is(rt, r), unicode.In(r, tt...); got != want {
+				t.Fatalf("%d:%U: got %v; want %v", i, r, got, want)
+			}
+		}
+		// Test optimization and correctness for R16.
+		for k := 0; k < len(rt.R16)-1; k++ {
+			if lo, hi := rt.R16[k].Lo, rt.R16[k].Hi; lo > hi {
+				t.Errorf("%d: Lo (%x) > Hi (%x)", i, lo, hi)
+			}
+			if hi, lo := rt.R16[k].Hi, rt.R16[k+1].Lo; hi >= lo {
+				t.Errorf("%d: Hi (%x) >= next Lo (%x)", i, hi, lo)
+			}
+			if rt.R16[k].Hi+rt.R16[k].Stride == rt.R16[k+1].Lo {
+				t.Errorf("%d: missed optimization for R16 at %d between %X and %x",
+					i, k, rt.R16[k], rt.R16[k+1])
+			}
+		}
+		// Test optimization and correctness for R32.
+		for k := 0; k < len(rt.R32)-1; k++ {
+			if lo, hi := rt.R32[k].Lo, rt.R32[k].Hi; lo > hi {
+				t.Errorf("%d: Lo (%x) > Hi (%x)", i, lo, hi)
+			}
+			if hi, lo := rt.R32[k].Hi, rt.R32[k+1].Lo; hi >= lo {
+				t.Errorf("%d: Hi (%x) >= next Lo (%x)", i, hi, lo)
+			}
+			if rt.R32[k].Hi+rt.R32[k].Stride == rt.R32[k+1].Lo {
+				t.Errorf("%d: missed optimization for R32 at %d between %X and %X",
+					i, k, rt.R32[k], rt.R32[k+1])
+			}
+		}
+	}
+}
+
+const runes = "Hello World in 2015!,\U0010fffd"
+
+func BenchmarkNotMerged(t *testing.B) {
+	for i := 0; i < t.N; i++ {
+		for _, r := range runes {
+			unicode.In(r, unicode.GraphicRanges...)
+		}
+	}
+}
+
+func BenchmarkMerged(t *testing.B) {
+	rt := Merge(unicode.GraphicRanges...)
+
+	for i := 0; i < t.N; i++ {
+		for _, r := range runes {
+			unicode.Is(rt, r)
+		}
+	}
+}
+
+var cased = []*unicode.RangeTable{
+	unicode.Lower,
+	unicode.Upper,
+	unicode.Title,
+	unicode.Other_Lowercase,
+	unicode.Other_Uppercase,
+}
+
+func BenchmarkNotMergedCased(t *testing.B) {
+	for i := 0; i < t.N; i++ {
+		for _, r := range runes {
+			unicode.In(r, cased...)
+		}
+	}
+}
+
+func BenchmarkMergedCased(t *testing.B) {
+	// This reduces len(R16) from 243 to 82 and len(R32) from 65 to 35 for
+	// Unicode 7.0.0.
+	rt := Merge(cased...)
+
+	for i := 0; i < t.N; i++ {
+		for _, r := range runes {
+			unicode.Is(rt, r)
+		}
+	}
+}
+
+func BenchmarkInit(t *testing.B) {
+	for i := 0; i < t.N; i++ {
+		Merge(cased...)
+		Merge(unicode.GraphicRanges...)
+	}
+}
+
+func BenchmarkInit2(t *testing.B) {
+	// Hypothetical near-worst-case performance.
+	for i := 0; i < t.N; i++ {
+		Merge(overlap1, overlap2)
+	}
+}
diff --git a/go/src/golang.org/x/text/unicode/rangetable/rangetable.go b/go/src/golang.org/x/text/unicode/rangetable/rangetable.go
new file mode 100644
index 0000000..187882c
--- /dev/null
+++ b/go/src/golang.org/x/text/unicode/rangetable/rangetable.go
@@ -0,0 +1,70 @@
+// Copyright 2015 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 rangetable provides utilities for creating and inspecting
+// unicode.RangeTables.
+package rangetable
+
+import (
+	"sort"
+	"unicode"
+)
+
+// New creates a RangeTable from the given runes, which may contain duplicates.
+func New(r ...rune) *unicode.RangeTable {
+	if len(r) == 0 {
+		return &unicode.RangeTable{}
+	}
+
+	sort.Sort(byRune(r))
+
+	// Remove duplicates.
+	k := 1
+	for i := 1; i < len(r); i++ {
+		if r[k-1] != r[i] {
+			r[k] = r[i]
+			k++
+		}
+	}
+
+	var rt unicode.RangeTable
+	for _, r := range r[:k] {
+		if r <= 0xFFFF {
+			rt.R16 = append(rt.R16, unicode.Range16{Lo: uint16(r), Hi: uint16(r), Stride: 1})
+		} else {
+			rt.R32 = append(rt.R32, unicode.Range32{Lo: uint32(r), Hi: uint32(r), Stride: 1})
+		}
+	}
+
+	// Optimize RangeTable.
+	return Merge(&rt)
+}
+
+type byRune []rune
+
+func (r byRune) Len() int           { return len(r) }
+func (r byRune) Swap(i, j int)      { r[i], r[j] = r[j], r[i] }
+func (r byRune) Less(i, j int) bool { return r[i] < r[j] }
+
+// Visit visits all runes in the given RangeTable in order, calling fn for each.
+func Visit(rt *unicode.RangeTable, fn func(rune)) {
+	for _, r16 := range rt.R16 {
+		for r := rune(r16.Lo); r <= rune(r16.Hi); r += rune(r16.Stride) {
+			fn(r)
+		}
+	}
+	for _, r32 := range rt.R32 {
+		for r := rune(r32.Lo); r <= rune(r32.Hi); r += rune(r32.Stride) {
+			fn(r)
+		}
+	}
+}
+
+// Assigned returns a RangeTable with all assigned code points for a given
+// Unicode version. This includes graphic, format, control, and private-use
+// characters. It returns nil if the data for the given version is not
+// available.
+func Assigned(version string) *unicode.RangeTable {
+	return assigned[version]
+}
diff --git a/go/src/golang.org/x/text/unicode/rangetable/rangetable_test.go b/go/src/golang.org/x/text/unicode/rangetable/rangetable_test.go
new file mode 100644
index 0000000..5a355aa
--- /dev/null
+++ b/go/src/golang.org/x/text/unicode/rangetable/rangetable_test.go
@@ -0,0 +1,55 @@
+package rangetable
+
+import (
+	"reflect"
+	"testing"
+	"unicode"
+)
+
+var (
+	empty = &unicode.RangeTable{}
+	many  = &unicode.RangeTable{
+		R16:         []unicode.Range16{{0, 0xffff, 5}},
+		R32:         []unicode.Range32{{0x10004, 0x10009, 5}},
+		LatinOffset: 0,
+	}
+)
+
+func TestVisit(t *testing.T) {
+	Visit(empty, func(got rune) {
+		t.Error("call from empty RangeTable")
+	})
+
+	var want rune
+	Visit(many, func(got rune) {
+		if got != want {
+			t.Errorf("got %U; want %U", got, want)
+		}
+		want += 5
+	})
+	if want -= 5; want != 0x10009 {
+		t.Errorf("last run was %U; want U+10009", want)
+	}
+}
+
+func TestNew(t *testing.T) {
+	for i, rt := range []*unicode.RangeTable{
+		empty,
+		unicode.Co,
+		unicode.Letter,
+		unicode.ASCII_Hex_Digit,
+		many,
+		maxRuneTable,
+	} {
+		var got, want []rune
+		Visit(rt, func(r rune) {
+			want = append(want, r)
+		})
+		Visit(New(want...), func(r rune) {
+			got = append(got, r)
+		})
+		if !reflect.DeepEqual(got, want) {
+			t.Errorf("%d:\ngot  %v;\nwant %v", i, got, want)
+		}
+	}
+}
diff --git a/go/src/golang.org/x/text/unicode/rangetable/tables.go b/go/src/golang.org/x/text/unicode/rangetable/tables.go
new file mode 100644
index 0000000..c8bc3ca
--- /dev/null
+++ b/go/src/golang.org/x/text/unicode/rangetable/tables.go
@@ -0,0 +1,5105 @@
+// This file was generated by go generate; DO NOT EDIT
+
+package rangetable
+
+//go:generate go run gen.go --versions=4.1.0,5.0.0,5.1.0,5.2.0,6.0.0,6.1.0,6.2.0,6.3.0,7.0.0,8.0.0
+
+import "unicode"
+
+var assigned = map[string]*unicode.RangeTable{
+	"4.1.0": assigned4_1_0,
+	"5.0.0": assigned5_0_0,
+	"5.1.0": assigned5_1_0,
+	"5.2.0": assigned5_2_0,
+	"6.0.0": assigned6_0_0,
+	"6.1.0": assigned6_1_0,
+	"6.2.0": assigned6_2_0,
+	"6.3.0": assigned6_3_0,
+	"7.0.0": assigned7_0_0,
+	"8.0.0": assigned8_0_0,
+}
+
+// size 2924 bytes (2 KiB)
+var assigned4_1_0 = &unicode.RangeTable{
+	R16: []unicode.Range16{
+		{0x0000, 0x0241, 1},
+		{0x0250, 0x036f, 1},
+		{0x0374, 0x0375, 1},
+		{0x037a, 0x037e, 4},
+		{0x0384, 0x038a, 1},
+		{0x038c, 0x038e, 2},
+		{0x038f, 0x03a1, 1},
+		{0x03a3, 0x03ce, 1},
+		{0x03d0, 0x0486, 1},
+		{0x0488, 0x04ce, 1},
+		{0x04d0, 0x04f9, 1},
+		{0x0500, 0x050f, 1},
+		{0x0531, 0x0556, 1},
+		{0x0559, 0x055f, 1},
+		{0x0561, 0x0587, 1},
+		{0x0589, 0x058a, 1},
+		{0x0591, 0x05b9, 1},
+		{0x05bb, 0x05c7, 1},
+		{0x05d0, 0x05ea, 1},
+		{0x05f0, 0x05f4, 1},
+		{0x0600, 0x0603, 1},
+		{0x060b, 0x0615, 1},
+		{0x061b, 0x061e, 3},
+		{0x061f, 0x0621, 2},
+		{0x0622, 0x063a, 1},
+		{0x0640, 0x065e, 1},
+		{0x0660, 0x070d, 1},
+		{0x070f, 0x074a, 1},
+		{0x074d, 0x076d, 1},
+		{0x0780, 0x07b1, 1},
+		{0x0901, 0x0939, 1},
+		{0x093c, 0x094d, 1},
+		{0x0950, 0x0954, 1},
+		{0x0958, 0x0970, 1},
+		{0x097d, 0x0981, 4},
+		{0x0982, 0x0983, 1},
+		{0x0985, 0x098c, 1},
+		{0x098f, 0x0990, 1},
+		{0x0993, 0x09a8, 1},
+		{0x09aa, 0x09b0, 1},
+		{0x09b2, 0x09b6, 4},
+		{0x09b7, 0x09b9, 1},
+		{0x09bc, 0x09c4, 1},
+		{0x09c7, 0x09c8, 1},
+		{0x09cb, 0x09ce, 1},
+		{0x09d7, 0x09dc, 5},
+		{0x09dd, 0x09df, 2},
+		{0x09e0, 0x09e3, 1},
+		{0x09e6, 0x09fa, 1},
+		{0x0a01, 0x0a03, 1},
+		{0x0a05, 0x0a0a, 1},
+		{0x0a0f, 0x0a10, 1},
+		{0x0a13, 0x0a28, 1},
+		{0x0a2a, 0x0a30, 1},
+		{0x0a32, 0x0a33, 1},
+		{0x0a35, 0x0a36, 1},
+		{0x0a38, 0x0a39, 1},
+		{0x0a3c, 0x0a3e, 2},
+		{0x0a3f, 0x0a42, 1},
+		{0x0a47, 0x0a48, 1},
+		{0x0a4b, 0x0a4d, 1},
+		{0x0a59, 0x0a5c, 1},
+		{0x0a5e, 0x0a66, 8},
+		{0x0a67, 0x0a74, 1},
+		{0x0a81, 0x0a83, 1},
+		{0x0a85, 0x0a8d, 1},
+		{0x0a8f, 0x0a91, 1},
+		{0x0a93, 0x0aa8, 1},
+		{0x0aaa, 0x0ab0, 1},
+		{0x0ab2, 0x0ab3, 1},
+		{0x0ab5, 0x0ab9, 1},
+		{0x0abc, 0x0ac5, 1},
+		{0x0ac7, 0x0ac9, 1},
+		{0x0acb, 0x0acd, 1},
+		{0x0ad0, 0x0ae0, 16},
+		{0x0ae1, 0x0ae3, 1},
+		{0x0ae6, 0x0aef, 1},
+		{0x0af1, 0x0b01, 16},
+		{0x0b02, 0x0b03, 1},
+		{0x0b05, 0x0b0c, 1},
+		{0x0b0f, 0x0b10, 1},
+		{0x0b13, 0x0b28, 1},
+		{0x0b2a, 0x0b30, 1},
+		{0x0b32, 0x0b33, 1},
+		{0x0b35, 0x0b39, 1},
+		{0x0b3c, 0x0b43, 1},
+		{0x0b47, 0x0b48, 1},
+		{0x0b4b, 0x0b4d, 1},
+		{0x0b56, 0x0b57, 1},
+		{0x0b5c, 0x0b5d, 1},
+		{0x0b5f, 0x0b61, 1},
+		{0x0b66, 0x0b71, 1},
+		{0x0b82, 0x0b83, 1},
+		{0x0b85, 0x0b8a, 1},
+		{0x0b8e, 0x0b90, 1},
+		{0x0b92, 0x0b95, 1},
+		{0x0b99, 0x0b9a, 1},
+		{0x0b9c, 0x0b9e, 2},
+		{0x0b9f, 0x0ba3, 4},
+		{0x0ba4, 0x0ba8, 4},
+		{0x0ba9, 0x0baa, 1},
+		{0x0bae, 0x0bb9, 1},
+		{0x0bbe, 0x0bc2, 1},
+		{0x0bc6, 0x0bc8, 1},
+		{0x0bca, 0x0bcd, 1},
+		{0x0bd7, 0x0be6, 15},
+		{0x0be7, 0x0bfa, 1},
+		{0x0c01, 0x0c03, 1},
+		{0x0c05, 0x0c0c, 1},
+		{0x0c0e, 0x0c10, 1},
+		{0x0c12, 0x0c28, 1},
+		{0x0c2a, 0x0c33, 1},
+		{0x0c35, 0x0c39, 1},
+		{0x0c3e, 0x0c44, 1},
+		{0x0c46, 0x0c48, 1},
+		{0x0c4a, 0x0c4d, 1},
+		{0x0c55, 0x0c56, 1},
+		{0x0c60, 0x0c61, 1},
+		{0x0c66, 0x0c6f, 1},
+		{0x0c82, 0x0c83, 1},
+		{0x0c85, 0x0c8c, 1},
+		{0x0c8e, 0x0c90, 1},
+		{0x0c92, 0x0ca8, 1},
+		{0x0caa, 0x0cb3, 1},
+		{0x0cb5, 0x0cb9, 1},
+		{0x0cbc, 0x0cc4, 1},
+		{0x0cc6, 0x0cc8, 1},
+		{0x0cca, 0x0ccd, 1},
+		{0x0cd5, 0x0cd6, 1},
+		{0x0cde, 0x0ce0, 2},
+		{0x0ce1, 0x0ce6, 5},
+		{0x0ce7, 0x0cef, 1},
+		{0x0d02, 0x0d03, 1},
+		{0x0d05, 0x0d0c, 1},
+		{0x0d0e, 0x0d10, 1},
+		{0x0d12, 0x0d28, 1},
+		{0x0d2a, 0x0d39, 1},
+		{0x0d3e, 0x0d43, 1},
+		{0x0d46, 0x0d48, 1},
+		{0x0d4a, 0x0d4d, 1},
+		{0x0d57, 0x0d60, 9},
+		{0x0d61, 0x0d66, 5},
+		{0x0d67, 0x0d6f, 1},
+		{0x0d82, 0x0d83, 1},
+		{0x0d85, 0x0d96, 1},
+		{0x0d9a, 0x0db1, 1},
+		{0x0db3, 0x0dbb, 1},
+		{0x0dbd, 0x0dc0, 3},
+		{0x0dc1, 0x0dc6, 1},
+		{0x0dca, 0x0dcf, 5},
+		{0x0dd0, 0x0dd4, 1},
+		{0x0dd6, 0x0dd8, 2},
+		{0x0dd9, 0x0ddf, 1},
+		{0x0df2, 0x0df4, 1},
+		{0x0e01, 0x0e3a, 1},
+		{0x0e3f, 0x0e5b, 1},
+		{0x0e81, 0x0e82, 1},
+		{0x0e84, 0x0e87, 3},
+		{0x0e88, 0x0e8a, 2},
+		{0x0e8d, 0x0e94, 7},
+		{0x0e95, 0x0e97, 1},
+		{0x0e99, 0x0e9f, 1},
+		{0x0ea1, 0x0ea3, 1},
+		{0x0ea5, 0x0ea7, 2},
+		{0x0eaa, 0x0eab, 1},
+		{0x0ead, 0x0eb9, 1},
+		{0x0ebb, 0x0ebd, 1},
+		{0x0ec0, 0x0ec4, 1},
+		{0x0ec6, 0x0ec8, 2},
+		{0x0ec9, 0x0ecd, 1},
+		{0x0ed0, 0x0ed9, 1},
+		{0x0edc, 0x0edd, 1},
+		{0x0f00, 0x0f47, 1},
+		{0x0f49, 0x0f6a, 1},
+		{0x0f71, 0x0f8b, 1},
+		{0x0f90, 0x0f97, 1},
+		{0x0f99, 0x0fbc, 1},
+		{0x0fbe, 0x0fcc, 1},
+		{0x0fcf, 0x0fd1, 1},
+		{0x1000, 0x1021, 1},
+		{0x1023, 0x1027, 1},
+		{0x1029, 0x102a, 1},
+		{0x102c, 0x1032, 1},
+		{0x1036, 0x1039, 1},
+		{0x1040, 0x1059, 1},
+		{0x10a0, 0x10c5, 1},
+		{0x10d0, 0x10fc, 1},
+		{0x1100, 0x1159, 1},
+		{0x115f, 0x11a2, 1},
+		{0x11a8, 0x11f9, 1},
+		{0x1200, 0x1248, 1},
+		{0x124a, 0x124d, 1},
+		{0x1250, 0x1256, 1},
+		{0x1258, 0x125a, 2},
+		{0x125b, 0x125d, 1},
+		{0x1260, 0x1288, 1},
+		{0x128a, 0x128d, 1},
+		{0x1290, 0x12b0, 1},
+		{0x12b2, 0x12b5, 1},
+		{0x12b8, 0x12be, 1},
+		{0x12c0, 0x12c2, 2},
+		{0x12c3, 0x12c5, 1},
+		{0x12c8, 0x12d6, 1},
+		{0x12d8, 0x1310, 1},
+		{0x1312, 0x1315, 1},
+		{0x1318, 0x135a, 1},
+		{0x135f, 0x137c, 1},
+		{0x1380, 0x1399, 1},
+		{0x13a0, 0x13f4, 1},
+		{0x1401, 0x1676, 1},
+		{0x1680, 0x169c, 1},
+		{0x16a0, 0x16f0, 1},
+		{0x1700, 0x170c, 1},
+		{0x170e, 0x1714, 1},
+		{0x1720, 0x1736, 1},
+		{0x1740, 0x1753, 1},
+		{0x1760, 0x176c, 1},
+		{0x176e, 0x1770, 1},
+		{0x1772, 0x1773, 1},
+		{0x1780, 0x17dd, 1},
+		{0x17e0, 0x17e9, 1},
+		{0x17f0, 0x17f9, 1},
+		{0x1800, 0x180e, 1},
+		{0x1810, 0x1819, 1},
+		{0x1820, 0x1877, 1},
+		{0x1880, 0x18a9, 1},
+		{0x1900, 0x191c, 1},
+		{0x1920, 0x192b, 1},
+		{0x1930, 0x193b, 1},
+		{0x1940, 0x1944, 4},
+		{0x1945, 0x196d, 1},
+		{0x1970, 0x1974, 1},
+		{0x1980, 0x19a9, 1},
+		{0x19b0, 0x19c9, 1},
+		{0x19d0, 0x19d9, 1},
+		{0x19de, 0x1a1b, 1},
+		{0x1a1e, 0x1a1f, 1},
+		{0x1d00, 0x1dc3, 1},
+		{0x1e00, 0x1e9b, 1},
+		{0x1ea0, 0x1ef9, 1},
+		{0x1f00, 0x1f15, 1},
+		{0x1f18, 0x1f1d, 1},
+		{0x1f20, 0x1f45, 1},
+		{0x1f48, 0x1f4d, 1},
+		{0x1f50, 0x1f57, 1},
+		{0x1f59, 0x1f5f, 2},
+		{0x1f60, 0x1f7d, 1},
+		{0x1f80, 0x1fb4, 1},
+		{0x1fb6, 0x1fc4, 1},
+		{0x1fc6, 0x1fd3, 1},
+		{0x1fd6, 0x1fdb, 1},
+		{0x1fdd, 0x1fef, 1},
+		{0x1ff2, 0x1ff4, 1},
+		{0x1ff6, 0x1ffe, 1},
+		{0x2000, 0x2063, 1},
+		{0x206a, 0x2071, 1},
+		{0x2074, 0x208e, 1},
+		{0x2090, 0x2094, 1},
+		{0x20a0, 0x20b5, 1},
+		{0x20d0, 0x20eb, 1},
+		{0x2100, 0x214c, 1},
+		{0x2153, 0x2183, 1},
+		{0x2190, 0x23db, 1},
+		{0x2400, 0x2426, 1},
+		{0x2440, 0x244a, 1},
+		{0x2460, 0x269c, 1},
+		{0x26a0, 0x26b1, 1},
+		{0x2701, 0x2704, 1},
+		{0x2706, 0x2709, 1},
+		{0x270c, 0x2727, 1},
+		{0x2729, 0x274b, 1},
+		{0x274d, 0x274f, 2},
+		{0x2750, 0x2752, 1},
+		{0x2756, 0x2758, 2},
+		{0x2759, 0x275e, 1},
+		{0x2761, 0x2794, 1},
+		{0x2798, 0x27af, 1},
+		{0x27b1, 0x27be, 1},
+		{0x27c0, 0x27c6, 1},
+		{0x27d0, 0x27eb, 1},
+		{0x27f0, 0x2b13, 1},
+		{0x2c00, 0x2c2e, 1},
+		{0x2c30, 0x2c5e, 1},
+		{0x2c80, 0x2cea, 1},
+		{0x2cf9, 0x2d25, 1},
+		{0x2d30, 0x2d65, 1},
+		{0x2d6f, 0x2d80, 17},
+		{0x2d81, 0x2d96, 1},
+		{0x2da0, 0x2da6, 1},
+		{0x2da8, 0x2dae, 1},
+		{0x2db0, 0x2db6, 1},
+		{0x2db8, 0x2dbe, 1},
+		{0x2dc0, 0x2dc6, 1},
+		{0x2dc8, 0x2dce, 1},
+		{0x2dd0, 0x2dd6, 1},
+		{0x2dd8, 0x2dde, 1},
+		{0x2e00, 0x2e17, 1},
+		{0x2e1c, 0x2e1d, 1},
+		{0x2e80, 0x2e99, 1},
+		{0x2e9b, 0x2ef3, 1},
+		{0x2f00, 0x2fd5, 1},
+		{0x2ff0, 0x2ffb, 1},
+		{0x3000, 0x303f, 1},
+		{0x3041, 0x3096, 1},
+		{0x3099, 0x30ff, 1},
+		{0x3105, 0x312c, 1},
+		{0x3131, 0x318e, 1},
+		{0x3190, 0x31b7, 1},
+		{0x31c0, 0x31cf, 1},
+		{0x31f0, 0x321e, 1},
+		{0x3220, 0x3243, 1},
+		{0x3250, 0x32fe, 1},
+		{0x3300, 0x4db5, 1},
+		{0x4dc0, 0x9fbb, 1},
+		{0xa000, 0xa48c, 1},
+		{0xa490, 0xa4c6, 1},
+		{0xa700, 0xa716, 1},
+		{0xa800, 0xa82b, 1},
+		{0xac00, 0xd7a3, 1},
+		{0xd800, 0xfa2d, 1},
+		{0xfa30, 0xfa6a, 1},
+		{0xfa70, 0xfad9, 1},
+		{0xfb00, 0xfb06, 1},
+		{0xfb13, 0xfb17, 1},
+		{0xfb1d, 0xfb36, 1},
+		{0xfb38, 0xfb3c, 1},
+		{0xfb3e, 0xfb40, 2},
+		{0xfb41, 0xfb43, 2},
+		{0xfb44, 0xfb46, 2},
+		{0xfb47, 0xfbb1, 1},
+		{0xfbd3, 0xfd3f, 1},
+		{0xfd50, 0xfd8f, 1},
+		{0xfd92, 0xfdc7, 1},
+		{0xfdf0, 0xfdfd, 1},
+		{0xfe00, 0xfe19, 1},
+		{0xfe20, 0xfe23, 1},
+		{0xfe30, 0xfe52, 1},
+		{0xfe54, 0xfe66, 1},
+		{0xfe68, 0xfe6b, 1},
+		{0xfe70, 0xfe74, 1},
+		{0xfe76, 0xfefc, 1},
+		{0xfeff, 0xff01, 2},
+		{0xff02, 0xffbe, 1},
+		{0xffc2, 0xffc7, 1},
+		{0xffca, 0xffcf, 1},
+		{0xffd2, 0xffd7, 1},
+		{0xffda, 0xffdc, 1},
+		{0xffe0, 0xffe6, 1},
+		{0xffe8, 0xffee, 1},
+		{0xfff9, 0xfffd, 1},
+	},
+	R32: []unicode.Range32{
+		{0x00010000, 0x0001000b, 1},
+		{0x0001000d, 0x00010026, 1},
+		{0x00010028, 0x0001003a, 1},
+		{0x0001003c, 0x0001003d, 1},
+		{0x0001003f, 0x0001004d, 1},
+		{0x00010050, 0x0001005d, 1},
+		{0x00010080, 0x000100fa, 1},
+		{0x00010100, 0x00010102, 1},
+		{0x00010107, 0x00010133, 1},
+		{0x00010137, 0x0001018a, 1},
+		{0x00010300, 0x0001031e, 1},
+		{0x00010320, 0x00010323, 1},
+		{0x00010330, 0x0001034a, 1},
+		{0x00010380, 0x0001039d, 1},
+		{0x0001039f, 0x000103c3, 1},
+		{0x000103c8, 0x000103d5, 1},
+		{0x00010400, 0x0001049d, 1},
+		{0x000104a0, 0x000104a9, 1},
+		{0x00010800, 0x00010805, 1},
+		{0x00010808, 0x0001080a, 2},
+		{0x0001080b, 0x00010835, 1},
+		{0x00010837, 0x00010838, 1},
+		{0x0001083c, 0x0001083f, 3},
+		{0x00010a00, 0x00010a03, 1},
+		{0x00010a05, 0x00010a06, 1},
+		{0x00010a0c, 0x00010a13, 1},
+		{0x00010a15, 0x00010a17, 1},
+		{0x00010a19, 0x00010a33, 1},
+		{0x00010a38, 0x00010a3a, 1},
+		{0x00010a3f, 0x00010a47, 1},
+		{0x00010a50, 0x00010a58, 1},
+		{0x0001d000, 0x0001d0f5, 1},
+		{0x0001d100, 0x0001d126, 1},
+		{0x0001d12a, 0x0001d1dd, 1},
+		{0x0001d200, 0x0001d245, 1},
+		{0x0001d300, 0x0001d356, 1},
+		{0x0001d400, 0x0001d454, 1},
+		{0x0001d456, 0x0001d49c, 1},
+		{0x0001d49e, 0x0001d49f, 1},
+		{0x0001d4a2, 0x0001d4a5, 3},
+		{0x0001d4a6, 0x0001d4a9, 3},
+		{0x0001d4aa, 0x0001d4ac, 1},
+		{0x0001d4ae, 0x0001d4b9, 1},
+		{0x0001d4bb, 0x0001d4bd, 2},
+		{0x0001d4be, 0x0001d4c3, 1},
+		{0x0001d4c5, 0x0001d505, 1},
+		{0x0001d507, 0x0001d50a, 1},
+		{0x0001d50d, 0x0001d514, 1},
+		{0x0001d516, 0x0001d51c, 1},
+		{0x0001d51e, 0x0001d539, 1},
+		{0x0001d53b, 0x0001d53e, 1},
+		{0x0001d540, 0x0001d544, 1},
+		{0x0001d546, 0x0001d54a, 4},
+		{0x0001d54b, 0x0001d550, 1},
+		{0x0001d552, 0x0001d6a5, 1},
+		{0x0001d6a8, 0x0001d7c9, 1},
+		{0x0001d7ce, 0x0001d7ff, 1},
+		{0x00020000, 0x0002a6d6, 1},
+		{0x0002f800, 0x0002fa1d, 1},
+		{0x000e0001, 0x000e0020, 31},
+		{0x000e0021, 0x000e007f, 1},
+		{0x000e0100, 0x000e01ef, 1},
+		{0x000f0000, 0x000ffffd, 1},
+		{0x00100000, 0x0010fffd, 1},
+	},
+	LatinOffset: 0,
+}
+
+// size 3026 bytes (2 KiB)
+var assigned5_0_0 = &unicode.RangeTable{
+	R16: []unicode.Range16{
+		{0x0000, 0x036f, 1},
+		{0x0374, 0x0375, 1},
+		{0x037a, 0x037e, 1},
+		{0x0384, 0x038a, 1},
+		{0x038c, 0x038e, 2},
+		{0x038f, 0x03a1, 1},
+		{0x03a3, 0x03ce, 1},
+		{0x03d0, 0x0486, 1},
+		{0x0488, 0x0513, 1},
+		{0x0531, 0x0556, 1},
+		{0x0559, 0x055f, 1},
+		{0x0561, 0x0587, 1},
+		{0x0589, 0x058a, 1},
+		{0x0591, 0x05c7, 1},
+		{0x05d0, 0x05ea, 1},
+		{0x05f0, 0x05f4, 1},
+		{0x0600, 0x0603, 1},
+		{0x060b, 0x0615, 1},
+		{0x061b, 0x061e, 3},
+		{0x061f, 0x0621, 2},
+		{0x0622, 0x063a, 1},
+		{0x0640, 0x065e, 1},
+		{0x0660, 0x070d, 1},
+		{0x070f, 0x074a, 1},
+		{0x074d, 0x076d, 1},
+		{0x0780, 0x07b1, 1},
+		{0x07c0, 0x07fa, 1},
+		{0x0901, 0x0939, 1},
+		{0x093c, 0x094d, 1},
+		{0x0950, 0x0954, 1},
+		{0x0958, 0x0970, 1},
+		{0x097b, 0x097f, 1},
+		{0x0981, 0x0983, 1},
+		{0x0985, 0x098c, 1},
+		{0x098f, 0x0990, 1},
+		{0x0993, 0x09a8, 1},
+		{0x09aa, 0x09b0, 1},
+		{0x09b2, 0x09b6, 4},
+		{0x09b7, 0x09b9, 1},
+		{0x09bc, 0x09c4, 1},
+		{0x09c7, 0x09c8, 1},
+		{0x09cb, 0x09ce, 1},
+		{0x09d7, 0x09dc, 5},
+		{0x09dd, 0x09df, 2},
+		{0x09e0, 0x09e3, 1},
+		{0x09e6, 0x09fa, 1},
+		{0x0a01, 0x0a03, 1},
+		{0x0a05, 0x0a0a, 1},
+		{0x0a0f, 0x0a10, 1},
+		{0x0a13, 0x0a28, 1},
+		{0x0a2a, 0x0a30, 1},
+		{0x0a32, 0x0a33, 1},
+		{0x0a35, 0x0a36, 1},
+		{0x0a38, 0x0a39, 1},
+		{0x0a3c, 0x0a3e, 2},
+		{0x0a3f, 0x0a42, 1},
+		{0x0a47, 0x0a48, 1},
+		{0x0a4b, 0x0a4d, 1},
+		{0x0a59, 0x0a5c, 1},
+		{0x0a5e, 0x0a66, 8},
+		{0x0a67, 0x0a74, 1},
+		{0x0a81, 0x0a83, 1},
+		{0x0a85, 0x0a8d, 1},
+		{0x0a8f, 0x0a91, 1},
+		{0x0a93, 0x0aa8, 1},
+		{0x0aaa, 0x0ab0, 1},
+		{0x0ab2, 0x0ab3, 1},
+		{0x0ab5, 0x0ab9, 1},
+		{0x0abc, 0x0ac5, 1},
+		{0x0ac7, 0x0ac9, 1},
+		{0x0acb, 0x0acd, 1},
+		{0x0ad0, 0x0ae0, 16},
+		{0x0ae1, 0x0ae3, 1},
+		{0x0ae6, 0x0aef, 1},
+		{0x0af1, 0x0b01, 16},
+		{0x0b02, 0x0b03, 1},
+		{0x0b05, 0x0b0c, 1},
+		{0x0b0f, 0x0b10, 1},
+		{0x0b13, 0x0b28, 1},
+		{0x0b2a, 0x0b30, 1},
+		{0x0b32, 0x0b33, 1},
+		{0x0b35, 0x0b39, 1},
+		{0x0b3c, 0x0b43, 1},
+		{0x0b47, 0x0b48, 1},
+		{0x0b4b, 0x0b4d, 1},
+		{0x0b56, 0x0b57, 1},
+		{0x0b5c, 0x0b5d, 1},
+		{0x0b5f, 0x0b61, 1},
+		{0x0b66, 0x0b71, 1},
+		{0x0b82, 0x0b83, 1},
+		{0x0b85, 0x0b8a, 1},
+		{0x0b8e, 0x0b90, 1},
+		{0x0b92, 0x0b95, 1},
+		{0x0b99, 0x0b9a, 1},
+		{0x0b9c, 0x0b9e, 2},
+		{0x0b9f, 0x0ba3, 4},
+		{0x0ba4, 0x0ba8, 4},
+		{0x0ba9, 0x0baa, 1},
+		{0x0bae, 0x0bb9, 1},
+		{0x0bbe, 0x0bc2, 1},
+		{0x0bc6, 0x0bc8, 1},
+		{0x0bca, 0x0bcd, 1},
+		{0x0bd7, 0x0be6, 15},
+		{0x0be7, 0x0bfa, 1},
+		{0x0c01, 0x0c03, 1},
+		{0x0c05, 0x0c0c, 1},
+		{0x0c0e, 0x0c10, 1},
+		{0x0c12, 0x0c28, 1},
+		{0x0c2a, 0x0c33, 1},
+		{0x0c35, 0x0c39, 1},
+		{0x0c3e, 0x0c44, 1},
+		{0x0c46, 0x0c48, 1},
+		{0x0c4a, 0x0c4d, 1},
+		{0x0c55, 0x0c56, 1},
+		{0x0c60, 0x0c61, 1},
+		{0x0c66, 0x0c6f, 1},
+		{0x0c82, 0x0c83, 1},
+		{0x0c85, 0x0c8c, 1},
+		{0x0c8e, 0x0c90, 1},
+		{0x0c92, 0x0ca8, 1},
+		{0x0caa, 0x0cb3, 1},
+		{0x0cb5, 0x0cb9, 1},
+		{0x0cbc, 0x0cc4, 1},
+		{0x0cc6, 0x0cc8, 1},
+		{0x0cca, 0x0ccd, 1},
+		{0x0cd5, 0x0cd6, 1},
+		{0x0cde, 0x0ce0, 2},
+		{0x0ce1, 0x0ce3, 1},
+		{0x0ce6, 0x0cef, 1},
+		{0x0cf1, 0x0cf2, 1},
+		{0x0d02, 0x0d03, 1},
+		{0x0d05, 0x0d0c, 1},
+		{0x0d0e, 0x0d10, 1},
+		{0x0d12, 0x0d28, 1},
+		{0x0d2a, 0x0d39, 1},
+		{0x0d3e, 0x0d43, 1},
+		{0x0d46, 0x0d48, 1},
+		{0x0d4a, 0x0d4d, 1},
+		{0x0d57, 0x0d60, 9},
+		{0x0d61, 0x0d66, 5},
+		{0x0d67, 0x0d6f, 1},
+		{0x0d82, 0x0d83, 1},
+		{0x0d85, 0x0d96, 1},
+		{0x0d9a, 0x0db1, 1},
+		{0x0db3, 0x0dbb, 1},
+		{0x0dbd, 0x0dc0, 3},
+		{0x0dc1, 0x0dc6, 1},
+		{0x0dca, 0x0dcf, 5},
+		{0x0dd0, 0x0dd4, 1},
+		{0x0dd6, 0x0dd8, 2},
+		{0x0dd9, 0x0ddf, 1},
+		{0x0df2, 0x0df4, 1},
+		{0x0e01, 0x0e3a, 1},
+		{0x0e3f, 0x0e5b, 1},
+		{0x0e81, 0x0e82, 1},
+		{0x0e84, 0x0e87, 3},
+		{0x0e88, 0x0e8a, 2},
+		{0x0e8d, 0x0e94, 7},
+		{0x0e95, 0x0e97, 1},
+		{0x0e99, 0x0e9f, 1},
+		{0x0ea1, 0x0ea3, 1},
+		{0x0ea5, 0x0ea7, 2},
+		{0x0eaa, 0x0eab, 1},
+		{0x0ead, 0x0eb9, 1},
+		{0x0ebb, 0x0ebd, 1},
+		{0x0ec0, 0x0ec4, 1},
+		{0x0ec6, 0x0ec8, 2},
+		{0x0ec9, 0x0ecd, 1},
+		{0x0ed0, 0x0ed9, 1},
+		{0x0edc, 0x0edd, 1},
+		{0x0f00, 0x0f47, 1},
+		{0x0f49, 0x0f6a, 1},
+		{0x0f71, 0x0f8b, 1},
+		{0x0f90, 0x0f97, 1},
+		{0x0f99, 0x0fbc, 1},
+		{0x0fbe, 0x0fcc, 1},
+		{0x0fcf, 0x0fd1, 1},
+		{0x1000, 0x1021, 1},
+		{0x1023, 0x1027, 1},
+		{0x1029, 0x102a, 1},
+		{0x102c, 0x1032, 1},
+		{0x1036, 0x1039, 1},
+		{0x1040, 0x1059, 1},
+		{0x10a0, 0x10c5, 1},
+		{0x10d0, 0x10fc, 1},
+		{0x1100, 0x1159, 1},
+		{0x115f, 0x11a2, 1},
+		{0x11a8, 0x11f9, 1},
+		{0x1200, 0x1248, 1},
+		{0x124a, 0x124d, 1},
+		{0x1250, 0x1256, 1},
+		{0x1258, 0x125a, 2},
+		{0x125b, 0x125d, 1},
+		{0x1260, 0x1288, 1},
+		{0x128a, 0x128d, 1},
+		{0x1290, 0x12b0, 1},
+		{0x12b2, 0x12b5, 1},
+		{0x12b8, 0x12be, 1},
+		{0x12c0, 0x12c2, 2},
+		{0x12c3, 0x12c5, 1},
+		{0x12c8, 0x12d6, 1},
+		{0x12d8, 0x1310, 1},
+		{0x1312, 0x1315, 1},
+		{0x1318, 0x135a, 1},
+		{0x135f, 0x137c, 1},
+		{0x1380, 0x1399, 1},
+		{0x13a0, 0x13f4, 1},
+		{0x1401, 0x1676, 1},
+		{0x1680, 0x169c, 1},
+		{0x16a0, 0x16f0, 1},
+		{0x1700, 0x170c, 1},
+		{0x170e, 0x1714, 1},
+		{0x1720, 0x1736, 1},
+		{0x1740, 0x1753, 1},
+		{0x1760, 0x176c, 1},
+		{0x176e, 0x1770, 1},
+		{0x1772, 0x1773, 1},
+		{0x1780, 0x17dd, 1},
+		{0x17e0, 0x17e9, 1},
+		{0x17f0, 0x17f9, 1},
+		{0x1800, 0x180e, 1},
+		{0x1810, 0x1819, 1},
+		{0x1820, 0x1877, 1},
+		{0x1880, 0x18a9, 1},
+		{0x1900, 0x191c, 1},
+		{0x1920, 0x192b, 1},
+		{0x1930, 0x193b, 1},
+		{0x1940, 0x1944, 4},
+		{0x1945, 0x196d, 1},
+		{0x1970, 0x1974, 1},
+		{0x1980, 0x19a9, 1},
+		{0x19b0, 0x19c9, 1},
+		{0x19d0, 0x19d9, 1},
+		{0x19de, 0x1a1b, 1},
+		{0x1a1e, 0x1a1f, 1},
+		{0x1b00, 0x1b4b, 1},
+		{0x1b50, 0x1b7c, 1},
+		{0x1d00, 0x1dca, 1},
+		{0x1dfe, 0x1e9b, 1},
+		{0x1ea0, 0x1ef9, 1},
+		{0x1f00, 0x1f15, 1},
+		{0x1f18, 0x1f1d, 1},
+		{0x1f20, 0x1f45, 1},
+		{0x1f48, 0x1f4d, 1},
+		{0x1f50, 0x1f57, 1},
+		{0x1f59, 0x1f5f, 2},
+		{0x1f60, 0x1f7d, 1},
+		{0x1f80, 0x1fb4, 1},
+		{0x1fb6, 0x1fc4, 1},
+		{0x1fc6, 0x1fd3, 1},
+		{0x1fd6, 0x1fdb, 1},
+		{0x1fdd, 0x1fef, 1},
+		{0x1ff2, 0x1ff4, 1},
+		{0x1ff6, 0x1ffe, 1},
+		{0x2000, 0x2063, 1},
+		{0x206a, 0x2071, 1},
+		{0x2074, 0x208e, 1},
+		{0x2090, 0x2094, 1},
+		{0x20a0, 0x20b5, 1},
+		{0x20d0, 0x20ef, 1},
+		{0x2100, 0x214e, 1},
+		{0x2153, 0x2184, 1},
+		{0x2190, 0x23e7, 1},
+		{0x2400, 0x2426, 1},
+		{0x2440, 0x244a, 1},
+		{0x2460, 0x269c, 1},
+		{0x26a0, 0x26b2, 1},
+		{0x2701, 0x2704, 1},
+		{0x2706, 0x2709, 1},
+		{0x270c, 0x2727, 1},
+		{0x2729, 0x274b, 1},
+		{0x274d, 0x274f, 2},
+		{0x2750, 0x2752, 1},
+		{0x2756, 0x2758, 2},
+		{0x2759, 0x275e, 1},
+		{0x2761, 0x2794, 1},
+		{0x2798, 0x27af, 1},
+		{0x27b1, 0x27be, 1},
+		{0x27c0, 0x27ca, 1},
+		{0x27d0, 0x27eb, 1},
+		{0x27f0, 0x2b1a, 1},
+		{0x2b20, 0x2b23, 1},
+		{0x2c00, 0x2c2e, 1},
+		{0x2c30, 0x2c5e, 1},
+		{0x2c60, 0x2c6c, 1},
+		{0x2c74, 0x2c77, 1},
+		{0x2c80, 0x2cea, 1},
+		{0x2cf9, 0x2d25, 1},
+		{0x2d30, 0x2d65, 1},
+		{0x2d6f, 0x2d80, 17},
+		{0x2d81, 0x2d96, 1},
+		{0x2da0, 0x2da6, 1},
+		{0x2da8, 0x2dae, 1},
+		{0x2db0, 0x2db6, 1},
+		{0x2db8, 0x2dbe, 1},
+		{0x2dc0, 0x2dc6, 1},
+		{0x2dc8, 0x2dce, 1},
+		{0x2dd0, 0x2dd6, 1},
+		{0x2dd8, 0x2dde, 1},
+		{0x2e00, 0x2e17, 1},
+		{0x2e1c, 0x2e1d, 1},
+		{0x2e80, 0x2e99, 1},
+		{0x2e9b, 0x2ef3, 1},
+		{0x2f00, 0x2fd5, 1},
+		{0x2ff0, 0x2ffb, 1},
+		{0x3000, 0x303f, 1},
+		{0x3041, 0x3096, 1},
+		{0x3099, 0x30ff, 1},
+		{0x3105, 0x312c, 1},
+		{0x3131, 0x318e, 1},
+		{0x3190, 0x31b7, 1},
+		{0x31c0, 0x31cf, 1},
+		{0x31f0, 0x321e, 1},
+		{0x3220, 0x3243, 1},
+		{0x3250, 0x32fe, 1},
+		{0x3300, 0x4db5, 1},
+		{0x4dc0, 0x9fbb, 1},
+		{0xa000, 0xa48c, 1},
+		{0xa490, 0xa4c6, 1},
+		{0xa700, 0xa71a, 1},
+		{0xa720, 0xa721, 1},
+		{0xa800, 0xa82b, 1},
+		{0xa840, 0xa877, 1},
+		{0xac00, 0xd7a3, 1},
+		{0xd800, 0xfa2d, 1},
+		{0xfa30, 0xfa6a, 1},
+		{0xfa70, 0xfad9, 1},
+		{0xfb00, 0xfb06, 1},
+		{0xfb13, 0xfb17, 1},
+		{0xfb1d, 0xfb36, 1},
+		{0xfb38, 0xfb3c, 1},
+		{0xfb3e, 0xfb40, 2},
+		{0xfb41, 0xfb43, 2},
+		{0xfb44, 0xfb46, 2},
+		{0xfb47, 0xfbb1, 1},
+		{0xfbd3, 0xfd3f, 1},
+		{0xfd50, 0xfd8f, 1},
+		{0xfd92, 0xfdc7, 1},
+		{0xfdf0, 0xfdfd, 1},
+		{0xfe00, 0xfe19, 1},
+		{0xfe20, 0xfe23, 1},
+		{0xfe30, 0xfe52, 1},
+		{0xfe54, 0xfe66, 1},
+		{0xfe68, 0xfe6b, 1},
+		{0xfe70, 0xfe74, 1},
+		{0xfe76, 0xfefc, 1},
+		{0xfeff, 0xff01, 2},
+		{0xff02, 0xffbe, 1},
+		{0xffc2, 0xffc7, 1},
+		{0xffca, 0xffcf, 1},
+		{0xffd2, 0xffd7, 1},
+		{0xffda, 0xffdc, 1},
+		{0xffe0, 0xffe6, 1},
+		{0xffe8, 0xffee, 1},
+		{0xfff9, 0xfffd, 1},
+	},
+	R32: []unicode.Range32{
+		{0x00010000, 0x0001000b, 1},
+		{0x0001000d, 0x00010026, 1},
+		{0x00010028, 0x0001003a, 1},
+		{0x0001003c, 0x0001003d, 1},
+		{0x0001003f, 0x0001004d, 1},
+		{0x00010050, 0x0001005d, 1},
+		{0x00010080, 0x000100fa, 1},
+		{0x00010100, 0x00010102, 1},
+		{0x00010107, 0x00010133, 1},
+		{0x00010137, 0x0001018a, 1},
+		{0x00010300, 0x0001031e, 1},
+		{0x00010320, 0x00010323, 1},
+		{0x00010330, 0x0001034a, 1},
+		{0x00010380, 0x0001039d, 1},
+		{0x0001039f, 0x000103c3, 1},
+		{0x000103c8, 0x000103d5, 1},
+		{0x00010400, 0x0001049d, 1},
+		{0x000104a0, 0x000104a9, 1},
+		{0x00010800, 0x00010805, 1},
+		{0x00010808, 0x0001080a, 2},
+		{0x0001080b, 0x00010835, 1},
+		{0x00010837, 0x00010838, 1},
+		{0x0001083c, 0x0001083f, 3},
+		{0x00010900, 0x00010919, 1},
+		{0x0001091f, 0x00010a00, 225},
+		{0x00010a01, 0x00010a03, 1},
+		{0x00010a05, 0x00010a06, 1},
+		{0x00010a0c, 0x00010a13, 1},
+		{0x00010a15, 0x00010a17, 1},
+		{0x00010a19, 0x00010a33, 1},
+		{0x00010a38, 0x00010a3a, 1},
+		{0x00010a3f, 0x00010a47, 1},
+		{0x00010a50, 0x00010a58, 1},
+		{0x00012000, 0x0001236e, 1},
+		{0x00012400, 0x00012462, 1},
+		{0x00012470, 0x00012473, 1},
+		{0x0001d000, 0x0001d0f5, 1},
+		{0x0001d100, 0x0001d126, 1},
+		{0x0001d12a, 0x0001d1dd, 1},
+		{0x0001d200, 0x0001d245, 1},
+		{0x0001d300, 0x0001d356, 1},
+		{0x0001d360, 0x0001d371, 1},
+		{0x0001d400, 0x0001d454, 1},
+		{0x0001d456, 0x0001d49c, 1},
+		{0x0001d49e, 0x0001d49f, 1},
+		{0x0001d4a2, 0x0001d4a5, 3},
+		{0x0001d4a6, 0x0001d4a9, 3},
+		{0x0001d4aa, 0x0001d4ac, 1},
+		{0x0001d4ae, 0x0001d4b9, 1},
+		{0x0001d4bb, 0x0001d4bd, 2},
+		{0x0001d4be, 0x0001d4c3, 1},
+		{0x0001d4c5, 0x0001d505, 1},
+		{0x0001d507, 0x0001d50a, 1},
+		{0x0001d50d, 0x0001d514, 1},
+		{0x0001d516, 0x0001d51c, 1},
+		{0x0001d51e, 0x0001d539, 1},
+		{0x0001d53b, 0x0001d53e, 1},
+		{0x0001d540, 0x0001d544, 1},
+		{0x0001d546, 0x0001d54a, 4},
+		{0x0001d54b, 0x0001d550, 1},
+		{0x0001d552, 0x0001d6a5, 1},
+		{0x0001d6a8, 0x0001d7cb, 1},
+		{0x0001d7ce, 0x0001d7ff, 1},
+		{0x00020000, 0x0002a6d6, 1},
+		{0x0002f800, 0x0002fa1d, 1},
+		{0x000e0001, 0x000e0020, 31},
+		{0x000e0021, 0x000e007f, 1},
+		{0x000e0100, 0x000e01ef, 1},
+		{0x000f0000, 0x000ffffd, 1},
+		{0x00100000, 0x0010fffd, 1},
+	},
+	LatinOffset: 0,
+}
+
+// size 3152 bytes (3 KiB)
+var assigned5_1_0 = &unicode.RangeTable{
+	R16: []unicode.Range16{
+		{0x0000, 0x0377, 1},
+		{0x037a, 0x037e, 1},
+		{0x0384, 0x038a, 1},
+		{0x038c, 0x038e, 2},
+		{0x038f, 0x03a1, 1},
+		{0x03a3, 0x0523, 1},
+		{0x0531, 0x0556, 1},
+		{0x0559, 0x055f, 1},
+		{0x0561, 0x0587, 1},
+		{0x0589, 0x058a, 1},
+		{0x0591, 0x05c7, 1},
+		{0x05d0, 0x05ea, 1},
+		{0x05f0, 0x05f4, 1},
+		{0x0600, 0x0603, 1},
+		{0x0606, 0x061b, 1},
+		{0x061e, 0x061f, 1},
+		{0x0621, 0x065e, 1},
+		{0x0660, 0x070d, 1},
+		{0x070f, 0x074a, 1},
+		{0x074d, 0x07b1, 1},
+		{0x07c0, 0x07fa, 1},
+		{0x0901, 0x0939, 1},
+		{0x093c, 0x094d, 1},
+		{0x0950, 0x0954, 1},
+		{0x0958, 0x0972, 1},
+		{0x097b, 0x097f, 1},
+		{0x0981, 0x0983, 1},
+		{0x0985, 0x098c, 1},
+		{0x098f, 0x0990, 1},
+		{0x0993, 0x09a8, 1},
+		{0x09aa, 0x09b0, 1},
+		{0x09b2, 0x09b6, 4},
+		{0x09b7, 0x09b9, 1},
+		{0x09bc, 0x09c4, 1},
+		{0x09c7, 0x09c8, 1},
+		{0x09cb, 0x09ce, 1},
+		{0x09d7, 0x09dc, 5},
+		{0x09dd, 0x09df, 2},
+		{0x09e0, 0x09e3, 1},
+		{0x09e6, 0x09fa, 1},
+		{0x0a01, 0x0a03, 1},
+		{0x0a05, 0x0a0a, 1},
+		{0x0a0f, 0x0a10, 1},
+		{0x0a13, 0x0a28, 1},
+		{0x0a2a, 0x0a30, 1},
+		{0x0a32, 0x0a33, 1},
+		{0x0a35, 0x0a36, 1},
+		{0x0a38, 0x0a39, 1},
+		{0x0a3c, 0x0a3e, 2},
+		{0x0a3f, 0x0a42, 1},
+		{0x0a47, 0x0a48, 1},
+		{0x0a4b, 0x0a4d, 1},
+		{0x0a51, 0x0a59, 8},
+		{0x0a5a, 0x0a5c, 1},
+		{0x0a5e, 0x0a66, 8},
+		{0x0a67, 0x0a75, 1},
+		{0x0a81, 0x0a83, 1},
+		{0x0a85, 0x0a8d, 1},
+		{0x0a8f, 0x0a91, 1},
+		{0x0a93, 0x0aa8, 1},
+		{0x0aaa, 0x0ab0, 1},
+		{0x0ab2, 0x0ab3, 1},
+		{0x0ab5, 0x0ab9, 1},
+		{0x0abc, 0x0ac5, 1},
+		{0x0ac7, 0x0ac9, 1},
+		{0x0acb, 0x0acd, 1},
+		{0x0ad0, 0x0ae0, 16},
+		{0x0ae1, 0x0ae3, 1},
+		{0x0ae6, 0x0aef, 1},
+		{0x0af1, 0x0b01, 16},
+		{0x0b02, 0x0b03, 1},
+		{0x0b05, 0x0b0c, 1},
+		{0x0b0f, 0x0b10, 1},
+		{0x0b13, 0x0b28, 1},
+		{0x0b2a, 0x0b30, 1},
+		{0x0b32, 0x0b33, 1},
+		{0x0b35, 0x0b39, 1},
+		{0x0b3c, 0x0b44, 1},
+		{0x0b47, 0x0b48, 1},
+		{0x0b4b, 0x0b4d, 1},
+		{0x0b56, 0x0b57, 1},
+		{0x0b5c, 0x0b5d, 1},
+		{0x0b5f, 0x0b63, 1},
+		{0x0b66, 0x0b71, 1},
+		{0x0b82, 0x0b83, 1},
+		{0x0b85, 0x0b8a, 1},
+		{0x0b8e, 0x0b90, 1},
+		{0x0b92, 0x0b95, 1},
+		{0x0b99, 0x0b9a, 1},
+		{0x0b9c, 0x0b9e, 2},
+		{0x0b9f, 0x0ba3, 4},
+		{0x0ba4, 0x0ba8, 4},
+		{0x0ba9, 0x0baa, 1},
+		{0x0bae, 0x0bb9, 1},
+		{0x0bbe, 0x0bc2, 1},
+		{0x0bc6, 0x0bc8, 1},
+		{0x0bca, 0x0bcd, 1},
+		{0x0bd0, 0x0bd7, 7},
+		{0x0be6, 0x0bfa, 1},
+		{0x0c01, 0x0c03, 1},
+		{0x0c05, 0x0c0c, 1},
+		{0x0c0e, 0x0c10, 1},
+		{0x0c12, 0x0c28, 1},
+		{0x0c2a, 0x0c33, 1},
+		{0x0c35, 0x0c39, 1},
+		{0x0c3d, 0x0c44, 1},
+		{0x0c46, 0x0c48, 1},
+		{0x0c4a, 0x0c4d, 1},
+		{0x0c55, 0x0c56, 1},
+		{0x0c58, 0x0c59, 1},
+		{0x0c60, 0x0c63, 1},
+		{0x0c66, 0x0c6f, 1},
+		{0x0c78, 0x0c7f, 1},
+		{0x0c82, 0x0c83, 1},
+		{0x0c85, 0x0c8c, 1},
+		{0x0c8e, 0x0c90, 1},
+		{0x0c92, 0x0ca8, 1},
+		{0x0caa, 0x0cb3, 1},
+		{0x0cb5, 0x0cb9, 1},
+		{0x0cbc, 0x0cc4, 1},
+		{0x0cc6, 0x0cc8, 1},
+		{0x0cca, 0x0ccd, 1},
+		{0x0cd5, 0x0cd6, 1},
+		{0x0cde, 0x0ce0, 2},
+		{0x0ce1, 0x0ce3, 1},
+		{0x0ce6, 0x0cef, 1},
+		{0x0cf1, 0x0cf2, 1},
+		{0x0d02, 0x0d03, 1},
+		{0x0d05, 0x0d0c, 1},
+		{0x0d0e, 0x0d10, 1},
+		{0x0d12, 0x0d28, 1},
+		{0x0d2a, 0x0d39, 1},
+		{0x0d3d, 0x0d44, 1},
+		{0x0d46, 0x0d48, 1},
+		{0x0d4a, 0x0d4d, 1},
+		{0x0d57, 0x0d60, 9},
+		{0x0d61, 0x0d63, 1},
+		{0x0d66, 0x0d75, 1},
+		{0x0d79, 0x0d7f, 1},
+		{0x0d82, 0x0d83, 1},
+		{0x0d85, 0x0d96, 1},
+		{0x0d9a, 0x0db1, 1},
+		{0x0db3, 0x0dbb, 1},
+		{0x0dbd, 0x0dc0, 3},
+		{0x0dc1, 0x0dc6, 1},
+		{0x0dca, 0x0dcf, 5},
+		{0x0dd0, 0x0dd4, 1},
+		{0x0dd6, 0x0dd8, 2},
+		{0x0dd9, 0x0ddf, 1},
+		{0x0df2, 0x0df4, 1},
+		{0x0e01, 0x0e3a, 1},
+		{0x0e3f, 0x0e5b, 1},
+		{0x0e81, 0x0e82, 1},
+		{0x0e84, 0x0e87, 3},
+		{0x0e88, 0x0e8a, 2},
+		{0x0e8d, 0x0e94, 7},
+		{0x0e95, 0x0e97, 1},
+		{0x0e99, 0x0e9f, 1},
+		{0x0ea1, 0x0ea3, 1},
+		{0x0ea5, 0x0ea7, 2},
+		{0x0eaa, 0x0eab, 1},
+		{0x0ead, 0x0eb9, 1},
+		{0x0ebb, 0x0ebd, 1},
+		{0x0ec0, 0x0ec4, 1},
+		{0x0ec6, 0x0ec8, 2},
+		{0x0ec9, 0x0ecd, 1},
+		{0x0ed0, 0x0ed9, 1},
+		{0x0edc, 0x0edd, 1},
+		{0x0f00, 0x0f47, 1},
+		{0x0f49, 0x0f6c, 1},
+		{0x0f71, 0x0f8b, 1},
+		{0x0f90, 0x0f97, 1},
+		{0x0f99, 0x0fbc, 1},
+		{0x0fbe, 0x0fcc, 1},
+		{0x0fce, 0x0fd4, 1},
+		{0x1000, 0x1099, 1},
+		{0x109e, 0x10c5, 1},
+		{0x10d0, 0x10fc, 1},
+		{0x1100, 0x1159, 1},
+		{0x115f, 0x11a2, 1},
+		{0x11a8, 0x11f9, 1},
+		{0x1200, 0x1248, 1},
+		{0x124a, 0x124d, 1},
+		{0x1250, 0x1256, 1},
+		{0x1258, 0x125a, 2},
+		{0x125b, 0x125d, 1},
+		{0x1260, 0x1288, 1},
+		{0x128a, 0x128d, 1},
+		{0x1290, 0x12b0, 1},
+		{0x12b2, 0x12b5, 1},
+		{0x12b8, 0x12be, 1},
+		{0x12c0, 0x12c2, 2},
+		{0x12c3, 0x12c5, 1},
+		{0x12c8, 0x12d6, 1},
+		{0x12d8, 0x1310, 1},
+		{0x1312, 0x1315, 1},
+		{0x1318, 0x135a, 1},
+		{0x135f, 0x137c, 1},
+		{0x1380, 0x1399, 1},
+		{0x13a0, 0x13f4, 1},
+		{0x1401, 0x1676, 1},
+		{0x1680, 0x169c, 1},
+		{0x16a0, 0x16f0, 1},
+		{0x1700, 0x170c, 1},
+		{0x170e, 0x1714, 1},
+		{0x1720, 0x1736, 1},
+		{0x1740, 0x1753, 1},
+		{0x1760, 0x176c, 1},
+		{0x176e, 0x1770, 1},
+		{0x1772, 0x1773, 1},
+		{0x1780, 0x17dd, 1},
+		{0x17e0, 0x17e9, 1},
+		{0x17f0, 0x17f9, 1},
+		{0x1800, 0x180e, 1},
+		{0x1810, 0x1819, 1},
+		{0x1820, 0x1877, 1},
+		{0x1880, 0x18aa, 1},
+		{0x1900, 0x191c, 1},
+		{0x1920, 0x192b, 1},
+		{0x1930, 0x193b, 1},
+		{0x1940, 0x1944, 4},
+		{0x1945, 0x196d, 1},
+		{0x1970, 0x1974, 1},
+		{0x1980, 0x19a9, 1},
+		{0x19b0, 0x19c9, 1},
+		{0x19d0, 0x19d9, 1},
+		{0x19de, 0x1a1b, 1},
+		{0x1a1e, 0x1a1f, 1},
+		{0x1b00, 0x1b4b, 1},
+		{0x1b50, 0x1b7c, 1},
+		{0x1b80, 0x1baa, 1},
+		{0x1bae, 0x1bb9, 1},
+		{0x1c00, 0x1c37, 1},
+		{0x1c3b, 0x1c49, 1},
+		{0x1c4d, 0x1c7f, 1},
+		{0x1d00, 0x1de6, 1},
+		{0x1dfe, 0x1f15, 1},
+		{0x1f18, 0x1f1d, 1},
+		{0x1f20, 0x1f45, 1},
+		{0x1f48, 0x1f4d, 1},
+		{0x1f50, 0x1f57, 1},
+		{0x1f59, 0x1f5f, 2},
+		{0x1f60, 0x1f7d, 1},
+		{0x1f80, 0x1fb4, 1},
+		{0x1fb6, 0x1fc4, 1},
+		{0x1fc6, 0x1fd3, 1},
+		{0x1fd6, 0x1fdb, 1},
+		{0x1fdd, 0x1fef, 1},
+		{0x1ff2, 0x1ff4, 1},
+		{0x1ff6, 0x1ffe, 1},
+		{0x2000, 0x2064, 1},
+		{0x206a, 0x2071, 1},
+		{0x2074, 0x208e, 1},
+		{0x2090, 0x2094, 1},
+		{0x20a0, 0x20b5, 1},
+		{0x20d0, 0x20f0, 1},
+		{0x2100, 0x214f, 1},
+		{0x2153, 0x2188, 1},
+		{0x2190, 0x23e7, 1},
+		{0x2400, 0x2426, 1},
+		{0x2440, 0x244a, 1},
+		{0x2460, 0x269d, 1},
+		{0x26a0, 0x26bc, 1},
+		{0x26c0, 0x26c3, 1},
+		{0x2701, 0x2704, 1},
+		{0x2706, 0x2709, 1},
+		{0x270c, 0x2727, 1},
+		{0x2729, 0x274b, 1},
+		{0x274d, 0x274f, 2},
+		{0x2750, 0x2752, 1},
+		{0x2756, 0x2758, 2},
+		{0x2759, 0x275e, 1},
+		{0x2761, 0x2794, 1},
+		{0x2798, 0x27af, 1},
+		{0x27b1, 0x27be, 1},
+		{0x27c0, 0x27ca, 1},
+		{0x27cc, 0x27d0, 4},
+		{0x27d1, 0x2b4c, 1},
+		{0x2b50, 0x2b54, 1},
+		{0x2c00, 0x2c2e, 1},
+		{0x2c30, 0x2c5e, 1},
+		{0x2c60, 0x2c6f, 1},
+		{0x2c71, 0x2c7d, 1},
+		{0x2c80, 0x2cea, 1},
+		{0x2cf9, 0x2d25, 1},
+		{0x2d30, 0x2d65, 1},
+		{0x2d6f, 0x2d80, 17},
+		{0x2d81, 0x2d96, 1},
+		{0x2da0, 0x2da6, 1},
+		{0x2da8, 0x2dae, 1},
+		{0x2db0, 0x2db6, 1},
+		{0x2db8, 0x2dbe, 1},
+		{0x2dc0, 0x2dc6, 1},
+		{0x2dc8, 0x2dce, 1},
+		{0x2dd0, 0x2dd6, 1},
+		{0x2dd8, 0x2dde, 1},
+		{0x2de0, 0x2e30, 1},
+		{0x2e80, 0x2e99, 1},
+		{0x2e9b, 0x2ef3, 1},
+		{0x2f00, 0x2fd5, 1},
+		{0x2ff0, 0x2ffb, 1},
+		{0x3000, 0x303f, 1},
+		{0x3041, 0x3096, 1},
+		{0x3099, 0x30ff, 1},
+		{0x3105, 0x312d, 1},
+		{0x3131, 0x318e, 1},
+		{0x3190, 0x31b7, 1},
+		{0x31c0, 0x31e3, 1},
+		{0x31f0, 0x321e, 1},
+		{0x3220, 0x3243, 1},
+		{0x3250, 0x32fe, 1},
+		{0x3300, 0x4db5, 1},
+		{0x4dc0, 0x9fc3, 1},
+		{0xa000, 0xa48c, 1},
+		{0xa490, 0xa4c6, 1},
+		{0xa500, 0xa62b, 1},
+		{0xa640, 0xa65f, 1},
+		{0xa662, 0xa673, 1},
+		{0xa67c, 0xa697, 1},
+		{0xa700, 0xa78c, 1},
+		{0xa7fb, 0xa82b, 1},
+		{0xa840, 0xa877, 1},
+		{0xa880, 0xa8c4, 1},
+		{0xa8ce, 0xa8d9, 1},
+		{0xa900, 0xa953, 1},
+		{0xa95f, 0xaa00, 161},
+		{0xaa01, 0xaa36, 1},
+		{0xaa40, 0xaa4d, 1},
+		{0xaa50, 0xaa59, 1},
+		{0xaa5c, 0xaa5f, 1},
+		{0xac00, 0xd7a3, 1},
+		{0xd800, 0xfa2d, 1},
+		{0xfa30, 0xfa6a, 1},
+		{0xfa70, 0xfad9, 1},
+		{0xfb00, 0xfb06, 1},
+		{0xfb13, 0xfb17, 1},
+		{0xfb1d, 0xfb36, 1},
+		{0xfb38, 0xfb3c, 1},
+		{0xfb3e, 0xfb40, 2},
+		{0xfb41, 0xfb43, 2},
+		{0xfb44, 0xfb46, 2},
+		{0xfb47, 0xfbb1, 1},
+		{0xfbd3, 0xfd3f, 1},
+		{0xfd50, 0xfd8f, 1},
+		{0xfd92, 0xfdc7, 1},
+		{0xfdf0, 0xfdfd, 1},
+		{0xfe00, 0xfe19, 1},
+		{0xfe20, 0xfe26, 1},
+		{0xfe30, 0xfe52, 1},
+		{0xfe54, 0xfe66, 1},
+		{0xfe68, 0xfe6b, 1},
+		{0xfe70, 0xfe74, 1},
+		{0xfe76, 0xfefc, 1},
+		{0xfeff, 0xff01, 2},
+		{0xff02, 0xffbe, 1},
+		{0xffc2, 0xffc7, 1},
+		{0xffca, 0xffcf, 1},
+		{0xffd2, 0xffd7, 1},
+		{0xffda, 0xffdc, 1},
+		{0xffe0, 0xffe6, 1},
+		{0xffe8, 0xffee, 1},
+		{0xfff9, 0xfffd, 1},
+	},
+	R32: []unicode.Range32{
+		{0x00010000, 0x0001000b, 1},
+		{0x0001000d, 0x00010026, 1},
+		{0x00010028, 0x0001003a, 1},
+		{0x0001003c, 0x0001003d, 1},
+		{0x0001003f, 0x0001004d, 1},
+		{0x00010050, 0x0001005d, 1},
+		{0x00010080, 0x000100fa, 1},
+		{0x00010100, 0x00010102, 1},
+		{0x00010107, 0x00010133, 1},
+		{0x00010137, 0x0001018a, 1},
+		{0x00010190, 0x0001019b, 1},
+		{0x000101d0, 0x000101fd, 1},
+		{0x00010280, 0x0001029c, 1},
+		{0x000102a0, 0x000102d0, 1},
+		{0x00010300, 0x0001031e, 1},
+		{0x00010320, 0x00010323, 1},
+		{0x00010330, 0x0001034a, 1},
+		{0x00010380, 0x0001039d, 1},
+		{0x0001039f, 0x000103c3, 1},
+		{0x000103c8, 0x000103d5, 1},
+		{0x00010400, 0x0001049d, 1},
+		{0x000104a0, 0x000104a9, 1},
+		{0x00010800, 0x00010805, 1},
+		{0x00010808, 0x0001080a, 2},
+		{0x0001080b, 0x00010835, 1},
+		{0x00010837, 0x00010838, 1},
+		{0x0001083c, 0x0001083f, 3},
+		{0x00010900, 0x00010919, 1},
+		{0x0001091f, 0x00010939, 1},
+		{0x0001093f, 0x00010a00, 193},
+		{0x00010a01, 0x00010a03, 1},
+		{0x00010a05, 0x00010a06, 1},
+		{0x00010a0c, 0x00010a13, 1},
+		{0x00010a15, 0x00010a17, 1},
+		{0x00010a19, 0x00010a33, 1},
+		{0x00010a38, 0x00010a3a, 1},
+		{0x00010a3f, 0x00010a47, 1},
+		{0x00010a50, 0x00010a58, 1},
+		{0x00012000, 0x0001236e, 1},
+		{0x00012400, 0x00012462, 1},
+		{0x00012470, 0x00012473, 1},
+		{0x0001d000, 0x0001d0f5, 1},
+		{0x0001d100, 0x0001d126, 1},
+		{0x0001d129, 0x0001d1dd, 1},
+		{0x0001d200, 0x0001d245, 1},
+		{0x0001d300, 0x0001d356, 1},
+		{0x0001d360, 0x0001d371, 1},
+		{0x0001d400, 0x0001d454, 1},
+		{0x0001d456, 0x0001d49c, 1},
+		{0x0001d49e, 0x0001d49f, 1},
+		{0x0001d4a2, 0x0001d4a5, 3},
+		{0x0001d4a6, 0x0001d4a9, 3},
+		{0x0001d4aa, 0x0001d4ac, 1},
+		{0x0001d4ae, 0x0001d4b9, 1},
+		{0x0001d4bb, 0x0001d4bd, 2},
+		{0x0001d4be, 0x0001d4c3, 1},
+		{0x0001d4c5, 0x0001d505, 1},
+		{0x0001d507, 0x0001d50a, 1},
+		{0x0001d50d, 0x0001d514, 1},
+		{0x0001d516, 0x0001d51c, 1},
+		{0x0001d51e, 0x0001d539, 1},
+		{0x0001d53b, 0x0001d53e, 1},
+		{0x0001d540, 0x0001d544, 1},
+		{0x0001d546, 0x0001d54a, 4},
+		{0x0001d54b, 0x0001d550, 1},
+		{0x0001d552, 0x0001d6a5, 1},
+		{0x0001d6a8, 0x0001d7cb, 1},
+		{0x0001d7ce, 0x0001d7ff, 1},
+		{0x0001f000, 0x0001f02b, 1},
+		{0x0001f030, 0x0001f093, 1},
+		{0x00020000, 0x0002a6d6, 1},
+		{0x0002f800, 0x0002fa1d, 1},
+		{0x000e0001, 0x000e0020, 31},
+		{0x000e0021, 0x000e007f, 1},
+		{0x000e0100, 0x000e01ef, 1},
+		{0x000f0000, 0x000ffffd, 1},
+		{0x00100000, 0x0010fffd, 1},
+	},
+	LatinOffset: 0,
+}
+
+// size 3518 bytes (3 KiB)
+var assigned5_2_0 = &unicode.RangeTable{
+	R16: []unicode.Range16{
+		{0x0000, 0x0377, 1},
+		{0x037a, 0x037e, 1},
+		{0x0384, 0x038a, 1},
+		{0x038c, 0x038e, 2},
+		{0x038f, 0x03a1, 1},
+		{0x03a3, 0x0525, 1},
+		{0x0531, 0x0556, 1},
+		{0x0559, 0x055f, 1},
+		{0x0561, 0x0587, 1},
+		{0x0589, 0x058a, 1},
+		{0x0591, 0x05c7, 1},
+		{0x05d0, 0x05ea, 1},
+		{0x05f0, 0x05f4, 1},
+		{0x0600, 0x0603, 1},
+		{0x0606, 0x061b, 1},
+		{0x061e, 0x061f, 1},
+		{0x0621, 0x065e, 1},
+		{0x0660, 0x070d, 1},
+		{0x070f, 0x074a, 1},
+		{0x074d, 0x07b1, 1},
+		{0x07c0, 0x07fa, 1},
+		{0x0800, 0x082d, 1},
+		{0x0830, 0x083e, 1},
+		{0x0900, 0x0939, 1},
+		{0x093c, 0x094e, 1},
+		{0x0950, 0x0955, 1},
+		{0x0958, 0x0972, 1},
+		{0x0979, 0x097f, 1},
+		{0x0981, 0x0983, 1},
+		{0x0985, 0x098c, 1},
+		{0x098f, 0x0990, 1},
+		{0x0993, 0x09a8, 1},
+		{0x09aa, 0x09b0, 1},
+		{0x09b2, 0x09b6, 4},
+		{0x09b7, 0x09b9, 1},
+		{0x09bc, 0x09c4, 1},
+		{0x09c7, 0x09c8, 1},
+		{0x09cb, 0x09ce, 1},
+		{0x09d7, 0x09dc, 5},
+		{0x09dd, 0x09df, 2},
+		{0x09e0, 0x09e3, 1},
+		{0x09e6, 0x09fb, 1},
+		{0x0a01, 0x0a03, 1},
+		{0x0a05, 0x0a0a, 1},
+		{0x0a0f, 0x0a10, 1},
+		{0x0a13, 0x0a28, 1},
+		{0x0a2a, 0x0a30, 1},
+		{0x0a32, 0x0a33, 1},
+		{0x0a35, 0x0a36, 1},
+		{0x0a38, 0x0a39, 1},
+		{0x0a3c, 0x0a3e, 2},
+		{0x0a3f, 0x0a42, 1},
+		{0x0a47, 0x0a48, 1},
+		{0x0a4b, 0x0a4d, 1},
+		{0x0a51, 0x0a59, 8},
+		{0x0a5a, 0x0a5c, 1},
+		{0x0a5e, 0x0a66, 8},
+		{0x0a67, 0x0a75, 1},
+		{0x0a81, 0x0a83, 1},
+		{0x0a85, 0x0a8d, 1},
+		{0x0a8f, 0x0a91, 1},
+		{0x0a93, 0x0aa8, 1},
+		{0x0aaa, 0x0ab0, 1},
+		{0x0ab2, 0x0ab3, 1},
+		{0x0ab5, 0x0ab9, 1},
+		{0x0abc, 0x0ac5, 1},
+		{0x0ac7, 0x0ac9, 1},
+		{0x0acb, 0x0acd, 1},
+		{0x0ad0, 0x0ae0, 16},
+		{0x0ae1, 0x0ae3, 1},
+		{0x0ae6, 0x0aef, 1},
+		{0x0af1, 0x0b01, 16},
+		{0x0b02, 0x0b03, 1},
+		{0x0b05, 0x0b0c, 1},
+		{0x0b0f, 0x0b10, 1},
+		{0x0b13, 0x0b28, 1},
+		{0x0b2a, 0x0b30, 1},
+		{0x0b32, 0x0b33, 1},
+		{0x0b35, 0x0b39, 1},
+		{0x0b3c, 0x0b44, 1},
+		{0x0b47, 0x0b48, 1},
+		{0x0b4b, 0x0b4d, 1},
+		{0x0b56, 0x0b57, 1},
+		{0x0b5c, 0x0b5d, 1},
+		{0x0b5f, 0x0b63, 1},
+		{0x0b66, 0x0b71, 1},
+		{0x0b82, 0x0b83, 1},
+		{0x0b85, 0x0b8a, 1},
+		{0x0b8e, 0x0b90, 1},
+		{0x0b92, 0x0b95, 1},
+		{0x0b99, 0x0b9a, 1},
+		{0x0b9c, 0x0b9e, 2},
+		{0x0b9f, 0x0ba3, 4},
+		{0x0ba4, 0x0ba8, 4},
+		{0x0ba9, 0x0baa, 1},
+		{0x0bae, 0x0bb9, 1},
+		{0x0bbe, 0x0bc2, 1},
+		{0x0bc6, 0x0bc8, 1},
+		{0x0bca, 0x0bcd, 1},
+		{0x0bd0, 0x0bd7, 7},
+		{0x0be6, 0x0bfa, 1},
+		{0x0c01, 0x0c03, 1},
+		{0x0c05, 0x0c0c, 1},
+		{0x0c0e, 0x0c10, 1},
+		{0x0c12, 0x0c28, 1},
+		{0x0c2a, 0x0c33, 1},
+		{0x0c35, 0x0c39, 1},
+		{0x0c3d, 0x0c44, 1},
+		{0x0c46, 0x0c48, 1},
+		{0x0c4a, 0x0c4d, 1},
+		{0x0c55, 0x0c56, 1},
+		{0x0c58, 0x0c59, 1},
+		{0x0c60, 0x0c63, 1},
+		{0x0c66, 0x0c6f, 1},
+		{0x0c78, 0x0c7f, 1},
+		{0x0c82, 0x0c83, 1},
+		{0x0c85, 0x0c8c, 1},
+		{0x0c8e, 0x0c90, 1},
+		{0x0c92, 0x0ca8, 1},
+		{0x0caa, 0x0cb3, 1},
+		{0x0cb5, 0x0cb9, 1},
+		{0x0cbc, 0x0cc4, 1},
+		{0x0cc6, 0x0cc8, 1},
+		{0x0cca, 0x0ccd, 1},
+		{0x0cd5, 0x0cd6, 1},
+		{0x0cde, 0x0ce0, 2},
+		{0x0ce1, 0x0ce3, 1},
+		{0x0ce6, 0x0cef, 1},
+		{0x0cf1, 0x0cf2, 1},
+		{0x0d02, 0x0d03, 1},
+		{0x0d05, 0x0d0c, 1},
+		{0x0d0e, 0x0d10, 1},
+		{0x0d12, 0x0d28, 1},
+		{0x0d2a, 0x0d39, 1},
+		{0x0d3d, 0x0d44, 1},
+		{0x0d46, 0x0d48, 1},
+		{0x0d4a, 0x0d4d, 1},
+		{0x0d57, 0x0d60, 9},
+		{0x0d61, 0x0d63, 1},
+		{0x0d66, 0x0d75, 1},
+		{0x0d79, 0x0d7f, 1},
+		{0x0d82, 0x0d83, 1},
+		{0x0d85, 0x0d96, 1},
+		{0x0d9a, 0x0db1, 1},
+		{0x0db3, 0x0dbb, 1},
+		{0x0dbd, 0x0dc0, 3},
+		{0x0dc1, 0x0dc6, 1},
+		{0x0dca, 0x0dcf, 5},
+		{0x0dd0, 0x0dd4, 1},
+		{0x0dd6, 0x0dd8, 2},
+		{0x0dd9, 0x0ddf, 1},
+		{0x0df2, 0x0df4, 1},
+		{0x0e01, 0x0e3a, 1},
+		{0x0e3f, 0x0e5b, 1},
+		{0x0e81, 0x0e82, 1},
+		{0x0e84, 0x0e87, 3},
+		{0x0e88, 0x0e8a, 2},
+		{0x0e8d, 0x0e94, 7},
+		{0x0e95, 0x0e97, 1},
+		{0x0e99, 0x0e9f, 1},
+		{0x0ea1, 0x0ea3, 1},
+		{0x0ea5, 0x0ea7, 2},
+		{0x0eaa, 0x0eab, 1},
+		{0x0ead, 0x0eb9, 1},
+		{0x0ebb, 0x0ebd, 1},
+		{0x0ec0, 0x0ec4, 1},
+		{0x0ec6, 0x0ec8, 2},
+		{0x0ec9, 0x0ecd, 1},
+		{0x0ed0, 0x0ed9, 1},
+		{0x0edc, 0x0edd, 1},
+		{0x0f00, 0x0f47, 1},
+		{0x0f49, 0x0f6c, 1},
+		{0x0f71, 0x0f8b, 1},
+		{0x0f90, 0x0f97, 1},
+		{0x0f99, 0x0fbc, 1},
+		{0x0fbe, 0x0fcc, 1},
+		{0x0fce, 0x0fd8, 1},
+		{0x1000, 0x10c5, 1},
+		{0x10d0, 0x10fc, 1},
+		{0x1100, 0x1248, 1},
+		{0x124a, 0x124d, 1},
+		{0x1250, 0x1256, 1},
+		{0x1258, 0x125a, 2},
+		{0x125b, 0x125d, 1},
+		{0x1260, 0x1288, 1},
+		{0x128a, 0x128d, 1},
+		{0x1290, 0x12b0, 1},
+		{0x12b2, 0x12b5, 1},
+		{0x12b8, 0x12be, 1},
+		{0x12c0, 0x12c2, 2},
+		{0x12c3, 0x12c5, 1},
+		{0x12c8, 0x12d6, 1},
+		{0x12d8, 0x1310, 1},
+		{0x1312, 0x1315, 1},
+		{0x1318, 0x135a, 1},
+		{0x135f, 0x137c, 1},
+		{0x1380, 0x1399, 1},
+		{0x13a0, 0x13f4, 1},
+		{0x1400, 0x169c, 1},
+		{0x16a0, 0x16f0, 1},
+		{0x1700, 0x170c, 1},
+		{0x170e, 0x1714, 1},
+		{0x1720, 0x1736, 1},
+		{0x1740, 0x1753, 1},
+		{0x1760, 0x176c, 1},
+		{0x176e, 0x1770, 1},
+		{0x1772, 0x1773, 1},
+		{0x1780, 0x17dd, 1},
+		{0x17e0, 0x17e9, 1},
+		{0x17f0, 0x17f9, 1},
+		{0x1800, 0x180e, 1},
+		{0x1810, 0x1819, 1},
+		{0x1820, 0x1877, 1},
+		{0x1880, 0x18aa, 1},
+		{0x18b0, 0x18f5, 1},
+		{0x1900, 0x191c, 1},
+		{0x1920, 0x192b, 1},
+		{0x1930, 0x193b, 1},
+		{0x1940, 0x1944, 4},
+		{0x1945, 0x196d, 1},
+		{0x1970, 0x1974, 1},
+		{0x1980, 0x19ab, 1},
+		{0x19b0, 0x19c9, 1},
+		{0x19d0, 0x19da, 1},
+		{0x19de, 0x1a1b, 1},
+		{0x1a1e, 0x1a5e, 1},
+		{0x1a60, 0x1a7c, 1},
+		{0x1a7f, 0x1a89, 1},
+		{0x1a90, 0x1a99, 1},
+		{0x1aa0, 0x1aad, 1},
+		{0x1b00, 0x1b4b, 1},
+		{0x1b50, 0x1b7c, 1},
+		{0x1b80, 0x1baa, 1},
+		{0x1bae, 0x1bb9, 1},
+		{0x1c00, 0x1c37, 1},
+		{0x1c3b, 0x1c49, 1},
+		{0x1c4d, 0x1c7f, 1},
+		{0x1cd0, 0x1cf2, 1},
+		{0x1d00, 0x1de6, 1},
+		{0x1dfd, 0x1f15, 1},
+		{0x1f18, 0x1f1d, 1},
+		{0x1f20, 0x1f45, 1},
+		{0x1f48, 0x1f4d, 1},
+		{0x1f50, 0x1f57, 1},
+		{0x1f59, 0x1f5f, 2},
+		{0x1f60, 0x1f7d, 1},
+		{0x1f80, 0x1fb4, 1},
+		{0x1fb6, 0x1fc4, 1},
+		{0x1fc6, 0x1fd3, 1},
+		{0x1fd6, 0x1fdb, 1},
+		{0x1fdd, 0x1fef, 1},
+		{0x1ff2, 0x1ff4, 1},
+		{0x1ff6, 0x1ffe, 1},
+		{0x2000, 0x2064, 1},
+		{0x206a, 0x2071, 1},
+		{0x2074, 0x208e, 1},
+		{0x2090, 0x2094, 1},
+		{0x20a0, 0x20b8, 1},
+		{0x20d0, 0x20f0, 1},
+		{0x2100, 0x2189, 1},
+		{0x2190, 0x23e8, 1},
+		{0x2400, 0x2426, 1},
+		{0x2440, 0x244a, 1},
+		{0x2460, 0x26cd, 1},
+		{0x26cf, 0x26e1, 1},
+		{0x26e3, 0x26e8, 5},
+		{0x26e9, 0x26ff, 1},
+		{0x2701, 0x2704, 1},
+		{0x2706, 0x2709, 1},
+		{0x270c, 0x2727, 1},
+		{0x2729, 0x274b, 1},
+		{0x274d, 0x274f, 2},
+		{0x2750, 0x2752, 1},
+		{0x2756, 0x275e, 1},
+		{0x2761, 0x2794, 1},
+		{0x2798, 0x27af, 1},
+		{0x27b1, 0x27be, 1},
+		{0x27c0, 0x27ca, 1},
+		{0x27cc, 0x27d0, 4},
+		{0x27d1, 0x2b4c, 1},
+		{0x2b50, 0x2b59, 1},
+		{0x2c00, 0x2c2e, 1},
+		{0x2c30, 0x2c5e, 1},
+		{0x2c60, 0x2cf1, 1},
+		{0x2cf9, 0x2d25, 1},
+		{0x2d30, 0x2d65, 1},
+		{0x2d6f, 0x2d80, 17},
+		{0x2d81, 0x2d96, 1},
+		{0x2da0, 0x2da6, 1},
+		{0x2da8, 0x2dae, 1},
+		{0x2db0, 0x2db6, 1},
+		{0x2db8, 0x2dbe, 1},
+		{0x2dc0, 0x2dc6, 1},
+		{0x2dc8, 0x2dce, 1},
+		{0x2dd0, 0x2dd6, 1},
+		{0x2dd8, 0x2dde, 1},
+		{0x2de0, 0x2e31, 1},
+		{0x2e80, 0x2e99, 1},
+		{0x2e9b, 0x2ef3, 1},
+		{0x2f00, 0x2fd5, 1},
+		{0x2ff0, 0x2ffb, 1},
+		{0x3000, 0x303f, 1},
+		{0x3041, 0x3096, 1},
+		{0x3099, 0x30ff, 1},
+		{0x3105, 0x312d, 1},
+		{0x3131, 0x318e, 1},
+		{0x3190, 0x31b7, 1},
+		{0x31c0, 0x31e3, 1},
+		{0x31f0, 0x321e, 1},
+		{0x3220, 0x32fe, 1},
+		{0x3300, 0x4db5, 1},
+		{0x4dc0, 0x9fcb, 1},
+		{0xa000, 0xa48c, 1},
+		{0xa490, 0xa4c6, 1},
+		{0xa4d0, 0xa62b, 1},
+		{0xa640, 0xa65f, 1},
+		{0xa662, 0xa673, 1},
+		{0xa67c, 0xa697, 1},
+		{0xa6a0, 0xa6f7, 1},
+		{0xa700, 0xa78c, 1},
+		{0xa7fb, 0xa82b, 1},
+		{0xa830, 0xa839, 1},
+		{0xa840, 0xa877, 1},
+		{0xa880, 0xa8c4, 1},
+		{0xa8ce, 0xa8d9, 1},
+		{0xa8e0, 0xa8fb, 1},
+		{0xa900, 0xa953, 1},
+		{0xa95f, 0xa97c, 1},
+		{0xa980, 0xa9cd, 1},
+		{0xa9cf, 0xa9d9, 1},
+		{0xa9de, 0xa9df, 1},
+		{0xaa00, 0xaa36, 1},
+		{0xaa40, 0xaa4d, 1},
+		{0xaa50, 0xaa59, 1},
+		{0xaa5c, 0xaa7b, 1},
+		{0xaa80, 0xaac2, 1},
+		{0xaadb, 0xaadf, 1},
+		{0xabc0, 0xabed, 1},
+		{0xabf0, 0xabf9, 1},
+		{0xac00, 0xd7a3, 1},
+		{0xd7b0, 0xd7c6, 1},
+		{0xd7cb, 0xd7fb, 1},
+		{0xd800, 0xfa2d, 1},
+		{0xfa30, 0xfa6d, 1},
+		{0xfa70, 0xfad9, 1},
+		{0xfb00, 0xfb06, 1},
+		{0xfb13, 0xfb17, 1},
+		{0xfb1d, 0xfb36, 1},
+		{0xfb38, 0xfb3c, 1},
+		{0xfb3e, 0xfb40, 2},
+		{0xfb41, 0xfb43, 2},
+		{0xfb44, 0xfb46, 2},
+		{0xfb47, 0xfbb1, 1},
+		{0xfbd3, 0xfd3f, 1},
+		{0xfd50, 0xfd8f, 1},
+		{0xfd92, 0xfdc7, 1},
+		{0xfdf0, 0xfdfd, 1},
+		{0xfe00, 0xfe19, 1},
+		{0xfe20, 0xfe26, 1},
+		{0xfe30, 0xfe52, 1},
+		{0xfe54, 0xfe66, 1},
+		{0xfe68, 0xfe6b, 1},
+		{0xfe70, 0xfe74, 1},
+		{0xfe76, 0xfefc, 1},
+		{0xfeff, 0xff01, 2},
+		{0xff02, 0xffbe, 1},
+		{0xffc2, 0xffc7, 1},
+		{0xffca, 0xffcf, 1},
+		{0xffd2, 0xffd7, 1},
+		{0xffda, 0xffdc, 1},
+		{0xffe0, 0xffe6, 1},
+		{0xffe8, 0xffee, 1},
+		{0xfff9, 0xfffd, 1},
+	},
+	R32: []unicode.Range32{
+		{0x00010000, 0x0001000b, 1},
+		{0x0001000d, 0x00010026, 1},
+		{0x00010028, 0x0001003a, 1},
+		{0x0001003c, 0x0001003d, 1},
+		{0x0001003f, 0x0001004d, 1},
+		{0x00010050, 0x0001005d, 1},
+		{0x00010080, 0x000100fa, 1},
+		{0x00010100, 0x00010102, 1},
+		{0x00010107, 0x00010133, 1},
+		{0x00010137, 0x0001018a, 1},
+		{0x00010190, 0x0001019b, 1},
+		{0x000101d0, 0x000101fd, 1},
+		{0x00010280, 0x0001029c, 1},
+		{0x000102a0, 0x000102d0, 1},
+		{0x00010300, 0x0001031e, 1},
+		{0x00010320, 0x00010323, 1},
+		{0x00010330, 0x0001034a, 1},
+		{0x00010380, 0x0001039d, 1},
+		{0x0001039f, 0x000103c3, 1},
+		{0x000103c8, 0x000103d5, 1},
+		{0x00010400, 0x0001049d, 1},
+		{0x000104a0, 0x000104a9, 1},
+		{0x00010800, 0x00010805, 1},
+		{0x00010808, 0x0001080a, 2},
+		{0x0001080b, 0x00010835, 1},
+		{0x00010837, 0x00010838, 1},
+		{0x0001083c, 0x0001083f, 3},
+		{0x00010840, 0x00010855, 1},
+		{0x00010857, 0x0001085f, 1},
+		{0x00010900, 0x0001091b, 1},
+		{0x0001091f, 0x00010939, 1},
+		{0x0001093f, 0x00010a00, 193},
+		{0x00010a01, 0x00010a03, 1},
+		{0x00010a05, 0x00010a06, 1},
+		{0x00010a0c, 0x00010a13, 1},
+		{0x00010a15, 0x00010a17, 1},
+		{0x00010a19, 0x00010a33, 1},
+		{0x00010a38, 0x00010a3a, 1},
+		{0x00010a3f, 0x00010a47, 1},
+		{0x00010a50, 0x00010a58, 1},
+		{0x00010a60, 0x00010a7f, 1},
+		{0x00010b00, 0x00010b35, 1},
+		{0x00010b39, 0x00010b55, 1},
+		{0x00010b58, 0x00010b72, 1},
+		{0x00010b78, 0x00010b7f, 1},
+		{0x00010c00, 0x00010c48, 1},
+		{0x00010e60, 0x00010e7e, 1},
+		{0x00011080, 0x000110c1, 1},
+		{0x00012000, 0x0001236e, 1},
+		{0x00012400, 0x00012462, 1},
+		{0x00012470, 0x00012473, 1},
+		{0x00013000, 0x0001342e, 1},
+		{0x0001d000, 0x0001d0f5, 1},
+		{0x0001d100, 0x0001d126, 1},
+		{0x0001d129, 0x0001d1dd, 1},
+		{0x0001d200, 0x0001d245, 1},
+		{0x0001d300, 0x0001d356, 1},
+		{0x0001d360, 0x0001d371, 1},
+		{0x0001d400, 0x0001d454, 1},
+		{0x0001d456, 0x0001d49c, 1},
+		{0x0001d49e, 0x0001d49f, 1},
+		{0x0001d4a2, 0x0001d4a5, 3},
+		{0x0001d4a6, 0x0001d4a9, 3},
+		{0x0001d4aa, 0x0001d4ac, 1},
+		{0x0001d4ae, 0x0001d4b9, 1},
+		{0x0001d4bb, 0x0001d4bd, 2},
+		{0x0001d4be, 0x0001d4c3, 1},
+		{0x0001d4c5, 0x0001d505, 1},
+		{0x0001d507, 0x0001d50a, 1},
+		{0x0001d50d, 0x0001d514, 1},
+		{0x0001d516, 0x0001d51c, 1},
+		{0x0001d51e, 0x0001d539, 1},
+		{0x0001d53b, 0x0001d53e, 1},
+		{0x0001d540, 0x0001d544, 1},
+		{0x0001d546, 0x0001d54a, 4},
+		{0x0001d54b, 0x0001d550, 1},
+		{0x0001d552, 0x0001d6a5, 1},
+		{0x0001d6a8, 0x0001d7cb, 1},
+		{0x0001d7ce, 0x0001d7ff, 1},
+		{0x0001f000, 0x0001f02b, 1},
+		{0x0001f030, 0x0001f093, 1},
+		{0x0001f100, 0x0001f10a, 1},
+		{0x0001f110, 0x0001f12e, 1},
+		{0x0001f131, 0x0001f13d, 12},
+		{0x0001f13f, 0x0001f142, 3},
+		{0x0001f146, 0x0001f14a, 4},
+		{0x0001f14b, 0x0001f14e, 1},
+		{0x0001f157, 0x0001f15f, 8},
+		{0x0001f179, 0x0001f17b, 2},
+		{0x0001f17c, 0x0001f17f, 3},
+		{0x0001f18a, 0x0001f18d, 1},
+		{0x0001f190, 0x0001f200, 112},
+		{0x0001f210, 0x0001f231, 1},
+		{0x0001f240, 0x0001f248, 1},
+		{0x00020000, 0x0002a6d6, 1},
+		{0x0002a700, 0x0002b734, 1},
+		{0x0002f800, 0x0002fa1d, 1},
+		{0x000e0001, 0x000e0020, 31},
+		{0x000e0021, 0x000e007f, 1},
+		{0x000e0100, 0x000e01ef, 1},
+		{0x000f0000, 0x000ffffd, 1},
+		{0x00100000, 0x0010fffd, 1},
+	},
+	LatinOffset: 0,
+}
+
+// size 3812 bytes (3 KiB)
+var assigned6_0_0 = &unicode.RangeTable{
+	R16: []unicode.Range16{
+		{0x0000, 0x0377, 1},
+		{0x037a, 0x037e, 1},
+		{0x0384, 0x038a, 1},
+		{0x038c, 0x038e, 2},
+		{0x038f, 0x03a1, 1},
+		{0x03a3, 0x0527, 1},
+		{0x0531, 0x0556, 1},
+		{0x0559, 0x055f, 1},
+		{0x0561, 0x0587, 1},
+		{0x0589, 0x058a, 1},
+		{0x0591, 0x05c7, 1},
+		{0x05d0, 0x05ea, 1},
+		{0x05f0, 0x05f4, 1},
+		{0x0600, 0x0603, 1},
+		{0x0606, 0x061b, 1},
+		{0x061e, 0x070d, 1},
+		{0x070f, 0x074a, 1},
+		{0x074d, 0x07b1, 1},
+		{0x07c0, 0x07fa, 1},
+		{0x0800, 0x082d, 1},
+		{0x0830, 0x083e, 1},
+		{0x0840, 0x085b, 1},
+		{0x085e, 0x0900, 162},
+		{0x0901, 0x0977, 1},
+		{0x0979, 0x097f, 1},
+		{0x0981, 0x0983, 1},
+		{0x0985, 0x098c, 1},
+		{0x098f, 0x0990, 1},
+		{0x0993, 0x09a8, 1},
+		{0x09aa, 0x09b0, 1},
+		{0x09b2, 0x09b6, 4},
+		{0x09b7, 0x09b9, 1},
+		{0x09bc, 0x09c4, 1},
+		{0x09c7, 0x09c8, 1},
+		{0x09cb, 0x09ce, 1},
+		{0x09d7, 0x09dc, 5},
+		{0x09dd, 0x09df, 2},
+		{0x09e0, 0x09e3, 1},
+		{0x09e6, 0x09fb, 1},
+		{0x0a01, 0x0a03, 1},
+		{0x0a05, 0x0a0a, 1},
+		{0x0a0f, 0x0a10, 1},
+		{0x0a13, 0x0a28, 1},
+		{0x0a2a, 0x0a30, 1},
+		{0x0a32, 0x0a33, 1},
+		{0x0a35, 0x0a36, 1},
+		{0x0a38, 0x0a39, 1},
+		{0x0a3c, 0x0a3e, 2},
+		{0x0a3f, 0x0a42, 1},
+		{0x0a47, 0x0a48, 1},
+		{0x0a4b, 0x0a4d, 1},
+		{0x0a51, 0x0a59, 8},
+		{0x0a5a, 0x0a5c, 1},
+		{0x0a5e, 0x0a66, 8},
+		{0x0a67, 0x0a75, 1},
+		{0x0a81, 0x0a83, 1},
+		{0x0a85, 0x0a8d, 1},
+		{0x0a8f, 0x0a91, 1},
+		{0x0a93, 0x0aa8, 1},
+		{0x0aaa, 0x0ab0, 1},
+		{0x0ab2, 0x0ab3, 1},
+		{0x0ab5, 0x0ab9, 1},
+		{0x0abc, 0x0ac5, 1},
+		{0x0ac7, 0x0ac9, 1},
+		{0x0acb, 0x0acd, 1},
+		{0x0ad0, 0x0ae0, 16},
+		{0x0ae1, 0x0ae3, 1},
+		{0x0ae6, 0x0aef, 1},
+		{0x0af1, 0x0b01, 16},
+		{0x0b02, 0x0b03, 1},
+		{0x0b05, 0x0b0c, 1},
+		{0x0b0f, 0x0b10, 1},
+		{0x0b13, 0x0b28, 1},
+		{0x0b2a, 0x0b30, 1},
+		{0x0b32, 0x0b33, 1},
+		{0x0b35, 0x0b39, 1},
+		{0x0b3c, 0x0b44, 1},
+		{0x0b47, 0x0b48, 1},
+		{0x0b4b, 0x0b4d, 1},
+		{0x0b56, 0x0b57, 1},
+		{0x0b5c, 0x0b5d, 1},
+		{0x0b5f, 0x0b63, 1},
+		{0x0b66, 0x0b77, 1},
+		{0x0b82, 0x0b83, 1},
+		{0x0b85, 0x0b8a, 1},
+		{0x0b8e, 0x0b90, 1},
+		{0x0b92, 0x0b95, 1},
+		{0x0b99, 0x0b9a, 1},
+		{0x0b9c, 0x0b9e, 2},
+		{0x0b9f, 0x0ba3, 4},
+		{0x0ba4, 0x0ba8, 4},
+		{0x0ba9, 0x0baa, 1},
+		{0x0bae, 0x0bb9, 1},
+		{0x0bbe, 0x0bc2, 1},
+		{0x0bc6, 0x0bc8, 1},
+		{0x0bca, 0x0bcd, 1},
+		{0x0bd0, 0x0bd7, 7},
+		{0x0be6, 0x0bfa, 1},
+		{0x0c01, 0x0c03, 1},
+		{0x0c05, 0x0c0c, 1},
+		{0x0c0e, 0x0c10, 1},
+		{0x0c12, 0x0c28, 1},
+		{0x0c2a, 0x0c33, 1},
+		{0x0c35, 0x0c39, 1},
+		{0x0c3d, 0x0c44, 1},
+		{0x0c46, 0x0c48, 1},
+		{0x0c4a, 0x0c4d, 1},
+		{0x0c55, 0x0c56, 1},
+		{0x0c58, 0x0c59, 1},
+		{0x0c60, 0x0c63, 1},
+		{0x0c66, 0x0c6f, 1},
+		{0x0c78, 0x0c7f, 1},
+		{0x0c82, 0x0c83, 1},
+		{0x0c85, 0x0c8c, 1},
+		{0x0c8e, 0x0c90, 1},
+		{0x0c92, 0x0ca8, 1},
+		{0x0caa, 0x0cb3, 1},
+		{0x0cb5, 0x0cb9, 1},
+		{0x0cbc, 0x0cc4, 1},
+		{0x0cc6, 0x0cc8, 1},
+		{0x0cca, 0x0ccd, 1},
+		{0x0cd5, 0x0cd6, 1},
+		{0x0cde, 0x0ce0, 2},
+		{0x0ce1, 0x0ce3, 1},
+		{0x0ce6, 0x0cef, 1},
+		{0x0cf1, 0x0cf2, 1},
+		{0x0d02, 0x0d03, 1},
+		{0x0d05, 0x0d0c, 1},
+		{0x0d0e, 0x0d10, 1},
+		{0x0d12, 0x0d3a, 1},
+		{0x0d3d, 0x0d44, 1},
+		{0x0d46, 0x0d48, 1},
+		{0x0d4a, 0x0d4e, 1},
+		{0x0d57, 0x0d60, 9},
+		{0x0d61, 0x0d63, 1},
+		{0x0d66, 0x0d75, 1},
+		{0x0d79, 0x0d7f, 1},
+		{0x0d82, 0x0d83, 1},
+		{0x0d85, 0x0d96, 1},
+		{0x0d9a, 0x0db1, 1},
+		{0x0db3, 0x0dbb, 1},
+		{0x0dbd, 0x0dc0, 3},
+		{0x0dc1, 0x0dc6, 1},
+		{0x0dca, 0x0dcf, 5},
+		{0x0dd0, 0x0dd4, 1},
+		{0x0dd6, 0x0dd8, 2},
+		{0x0dd9, 0x0ddf, 1},
+		{0x0df2, 0x0df4, 1},
+		{0x0e01, 0x0e3a, 1},
+		{0x0e3f, 0x0e5b, 1},
+		{0x0e81, 0x0e82, 1},
+		{0x0e84, 0x0e87, 3},
+		{0x0e88, 0x0e8a, 2},
+		{0x0e8d, 0x0e94, 7},
+		{0x0e95, 0x0e97, 1},
+		{0x0e99, 0x0e9f, 1},
+		{0x0ea1, 0x0ea3, 1},
+		{0x0ea5, 0x0ea7, 2},
+		{0x0eaa, 0x0eab, 1},
+		{0x0ead, 0x0eb9, 1},
+		{0x0ebb, 0x0ebd, 1},
+		{0x0ec0, 0x0ec4, 1},
+		{0x0ec6, 0x0ec8, 2},
+		{0x0ec9, 0x0ecd, 1},
+		{0x0ed0, 0x0ed9, 1},
+		{0x0edc, 0x0edd, 1},
+		{0x0f00, 0x0f47, 1},
+		{0x0f49, 0x0f6c, 1},
+		{0x0f71, 0x0f97, 1},
+		{0x0f99, 0x0fbc, 1},
+		{0x0fbe, 0x0fcc, 1},
+		{0x0fce, 0x0fda, 1},
+		{0x1000, 0x10c5, 1},
+		{0x10d0, 0x10fc, 1},
+		{0x1100, 0x1248, 1},
+		{0x124a, 0x124d, 1},
+		{0x1250, 0x1256, 1},
+		{0x1258, 0x125a, 2},
+		{0x125b, 0x125d, 1},
+		{0x1260, 0x1288, 1},
+		{0x128a, 0x128d, 1},
+		{0x1290, 0x12b0, 1},
+		{0x12b2, 0x12b5, 1},
+		{0x12b8, 0x12be, 1},
+		{0x12c0, 0x12c2, 2},
+		{0x12c3, 0x12c5, 1},
+		{0x12c8, 0x12d6, 1},
+		{0x12d8, 0x1310, 1},
+		{0x1312, 0x1315, 1},
+		{0x1318, 0x135a, 1},
+		{0x135d, 0x137c, 1},
+		{0x1380, 0x1399, 1},
+		{0x13a0, 0x13f4, 1},
+		{0x1400, 0x169c, 1},
+		{0x16a0, 0x16f0, 1},
+		{0x1700, 0x170c, 1},
+		{0x170e, 0x1714, 1},
+		{0x1720, 0x1736, 1},
+		{0x1740, 0x1753, 1},
+		{0x1760, 0x176c, 1},
+		{0x176e, 0x1770, 1},
+		{0x1772, 0x1773, 1},
+		{0x1780, 0x17dd, 1},
+		{0x17e0, 0x17e9, 1},
+		{0x17f0, 0x17f9, 1},
+		{0x1800, 0x180e, 1},
+		{0x1810, 0x1819, 1},
+		{0x1820, 0x1877, 1},
+		{0x1880, 0x18aa, 1},
+		{0x18b0, 0x18f5, 1},
+		{0x1900, 0x191c, 1},
+		{0x1920, 0x192b, 1},
+		{0x1930, 0x193b, 1},
+		{0x1940, 0x1944, 4},
+		{0x1945, 0x196d, 1},
+		{0x1970, 0x1974, 1},
+		{0x1980, 0x19ab, 1},
+		{0x19b0, 0x19c9, 1},
+		{0x19d0, 0x19da, 1},
+		{0x19de, 0x1a1b, 1},
+		{0x1a1e, 0x1a5e, 1},
+		{0x1a60, 0x1a7c, 1},
+		{0x1a7f, 0x1a89, 1},
+		{0x1a90, 0x1a99, 1},
+		{0x1aa0, 0x1aad, 1},
+		{0x1b00, 0x1b4b, 1},
+		{0x1b50, 0x1b7c, 1},
+		{0x1b80, 0x1baa, 1},
+		{0x1bae, 0x1bb9, 1},
+		{0x1bc0, 0x1bf3, 1},
+		{0x1bfc, 0x1c37, 1},
+		{0x1c3b, 0x1c49, 1},
+		{0x1c4d, 0x1c7f, 1},
+		{0x1cd0, 0x1cf2, 1},
+		{0x1d00, 0x1de6, 1},
+		{0x1dfc, 0x1f15, 1},
+		{0x1f18, 0x1f1d, 1},
+		{0x1f20, 0x1f45, 1},
+		{0x1f48, 0x1f4d, 1},
+		{0x1f50, 0x1f57, 1},
+		{0x1f59, 0x1f5f, 2},
+		{0x1f60, 0x1f7d, 1},
+		{0x1f80, 0x1fb4, 1},
+		{0x1fb6, 0x1fc4, 1},
+		{0x1fc6, 0x1fd3, 1},
+		{0x1fd6, 0x1fdb, 1},
+		{0x1fdd, 0x1fef, 1},
+		{0x1ff2, 0x1ff4, 1},
+		{0x1ff6, 0x1ffe, 1},
+		{0x2000, 0x2064, 1},
+		{0x206a, 0x2071, 1},
+		{0x2074, 0x208e, 1},
+		{0x2090, 0x209c, 1},
+		{0x20a0, 0x20b9, 1},
+		{0x20d0, 0x20f0, 1},
+		{0x2100, 0x2189, 1},
+		{0x2190, 0x23f3, 1},
+		{0x2400, 0x2426, 1},
+		{0x2440, 0x244a, 1},
+		{0x2460, 0x26ff, 1},
+		{0x2701, 0x27ca, 1},
+		{0x27cc, 0x27ce, 2},
+		{0x27cf, 0x2b4c, 1},
+		{0x2b50, 0x2b59, 1},
+		{0x2c00, 0x2c2e, 1},
+		{0x2c30, 0x2c5e, 1},
+		{0x2c60, 0x2cf1, 1},
+		{0x2cf9, 0x2d25, 1},
+		{0x2d30, 0x2d65, 1},
+		{0x2d6f, 0x2d70, 1},
+		{0x2d7f, 0x2d96, 1},
+		{0x2da0, 0x2da6, 1},
+		{0x2da8, 0x2dae, 1},
+		{0x2db0, 0x2db6, 1},
+		{0x2db8, 0x2dbe, 1},
+		{0x2dc0, 0x2dc6, 1},
+		{0x2dc8, 0x2dce, 1},
+		{0x2dd0, 0x2dd6, 1},
+		{0x2dd8, 0x2dde, 1},
+		{0x2de0, 0x2e31, 1},
+		{0x2e80, 0x2e99, 1},
+		{0x2e9b, 0x2ef3, 1},
+		{0x2f00, 0x2fd5, 1},
+		{0x2ff0, 0x2ffb, 1},
+		{0x3000, 0x303f, 1},
+		{0x3041, 0x3096, 1},
+		{0x3099, 0x30ff, 1},
+		{0x3105, 0x312d, 1},
+		{0x3131, 0x318e, 1},
+		{0x3190, 0x31ba, 1},
+		{0x31c0, 0x31e3, 1},
+		{0x31f0, 0x321e, 1},
+		{0x3220, 0x32fe, 1},
+		{0x3300, 0x4db5, 1},
+		{0x4dc0, 0x9fcb, 1},
+		{0xa000, 0xa48c, 1},
+		{0xa490, 0xa4c6, 1},
+		{0xa4d0, 0xa62b, 1},
+		{0xa640, 0xa673, 1},
+		{0xa67c, 0xa697, 1},
+		{0xa6a0, 0xa6f7, 1},
+		{0xa700, 0xa78e, 1},
+		{0xa790, 0xa791, 1},
+		{0xa7a0, 0xa7a9, 1},
+		{0xa7fa, 0xa82b, 1},
+		{0xa830, 0xa839, 1},
+		{0xa840, 0xa877, 1},
+		{0xa880, 0xa8c4, 1},
+		{0xa8ce, 0xa8d9, 1},
+		{0xa8e0, 0xa8fb, 1},
+		{0xa900, 0xa953, 1},
+		{0xa95f, 0xa97c, 1},
+		{0xa980, 0xa9cd, 1},
+		{0xa9cf, 0xa9d9, 1},
+		{0xa9de, 0xa9df, 1},
+		{0xaa00, 0xaa36, 1},
+		{0xaa40, 0xaa4d, 1},
+		{0xaa50, 0xaa59, 1},
+		{0xaa5c, 0xaa7b, 1},
+		{0xaa80, 0xaac2, 1},
+		{0xaadb, 0xaadf, 1},
+		{0xab01, 0xab06, 1},
+		{0xab09, 0xab0e, 1},
+		{0xab11, 0xab16, 1},
+		{0xab20, 0xab26, 1},
+		{0xab28, 0xab2e, 1},
+		{0xabc0, 0xabed, 1},
+		{0xabf0, 0xabf9, 1},
+		{0xac00, 0xd7a3, 1},
+		{0xd7b0, 0xd7c6, 1},
+		{0xd7cb, 0xd7fb, 1},
+		{0xd800, 0xfa2d, 1},
+		{0xfa30, 0xfa6d, 1},
+		{0xfa70, 0xfad9, 1},
+		{0xfb00, 0xfb06, 1},
+		{0xfb13, 0xfb17, 1},
+		{0xfb1d, 0xfb36, 1},
+		{0xfb38, 0xfb3c, 1},
+		{0xfb3e, 0xfb40, 2},
+		{0xfb41, 0xfb43, 2},
+		{0xfb44, 0xfb46, 2},
+		{0xfb47, 0xfbc1, 1},
+		{0xfbd3, 0xfd3f, 1},
+		{0xfd50, 0xfd8f, 1},
+		{0xfd92, 0xfdc7, 1},
+		{0xfdf0, 0xfdfd, 1},
+		{0xfe00, 0xfe19, 1},
+		{0xfe20, 0xfe26, 1},
+		{0xfe30, 0xfe52, 1},
+		{0xfe54, 0xfe66, 1},
+		{0xfe68, 0xfe6b, 1},
+		{0xfe70, 0xfe74, 1},
+		{0xfe76, 0xfefc, 1},
+		{0xfeff, 0xff01, 2},
+		{0xff02, 0xffbe, 1},
+		{0xffc2, 0xffc7, 1},
+		{0xffca, 0xffcf, 1},
+		{0xffd2, 0xffd7, 1},
+		{0xffda, 0xffdc, 1},
+		{0xffe0, 0xffe6, 1},
+		{0xffe8, 0xffee, 1},
+		{0xfff9, 0xfffd, 1},
+	},
+	R32: []unicode.Range32{
+		{0x00010000, 0x0001000b, 1},
+		{0x0001000d, 0x00010026, 1},
+		{0x00010028, 0x0001003a, 1},
+		{0x0001003c, 0x0001003d, 1},
+		{0x0001003f, 0x0001004d, 1},
+		{0x00010050, 0x0001005d, 1},
+		{0x00010080, 0x000100fa, 1},
+		{0x00010100, 0x00010102, 1},
+		{0x00010107, 0x00010133, 1},
+		{0x00010137, 0x0001018a, 1},
+		{0x00010190, 0x0001019b, 1},
+		{0x000101d0, 0x000101fd, 1},
+		{0x00010280, 0x0001029c, 1},
+		{0x000102a0, 0x000102d0, 1},
+		{0x00010300, 0x0001031e, 1},
+		{0x00010320, 0x00010323, 1},
+		{0x00010330, 0x0001034a, 1},
+		{0x00010380, 0x0001039d, 1},
+		{0x0001039f, 0x000103c3, 1},
+		{0x000103c8, 0x000103d5, 1},
+		{0x00010400, 0x0001049d, 1},
+		{0x000104a0, 0x000104a9, 1},
+		{0x00010800, 0x00010805, 1},
+		{0x00010808, 0x0001080a, 2},
+		{0x0001080b, 0x00010835, 1},
+		{0x00010837, 0x00010838, 1},
+		{0x0001083c, 0x0001083f, 3},
+		{0x00010840, 0x00010855, 1},
+		{0x00010857, 0x0001085f, 1},
+		{0x00010900, 0x0001091b, 1},
+		{0x0001091f, 0x00010939, 1},
+		{0x0001093f, 0x00010a00, 193},
+		{0x00010a01, 0x00010a03, 1},
+		{0x00010a05, 0x00010a06, 1},
+		{0x00010a0c, 0x00010a13, 1},
+		{0x00010a15, 0x00010a17, 1},
+		{0x00010a19, 0x00010a33, 1},
+		{0x00010a38, 0x00010a3a, 1},
+		{0x00010a3f, 0x00010a47, 1},
+		{0x00010a50, 0x00010a58, 1},
+		{0x00010a60, 0x00010a7f, 1},
+		{0x00010b00, 0x00010b35, 1},
+		{0x00010b39, 0x00010b55, 1},
+		{0x00010b58, 0x00010b72, 1},
+		{0x00010b78, 0x00010b7f, 1},
+		{0x00010c00, 0x00010c48, 1},
+		{0x00010e60, 0x00010e7e, 1},
+		{0x00011000, 0x0001104d, 1},
+		{0x00011052, 0x0001106f, 1},
+		{0x00011080, 0x000110c1, 1},
+		{0x00012000, 0x0001236e, 1},
+		{0x00012400, 0x00012462, 1},
+		{0x00012470, 0x00012473, 1},
+		{0x00013000, 0x0001342e, 1},
+		{0x00016800, 0x00016a38, 1},
+		{0x0001b000, 0x0001b001, 1},
+		{0x0001d000, 0x0001d0f5, 1},
+		{0x0001d100, 0x0001d126, 1},
+		{0x0001d129, 0x0001d1dd, 1},
+		{0x0001d200, 0x0001d245, 1},
+		{0x0001d300, 0x0001d356, 1},
+		{0x0001d360, 0x0001d371, 1},
+		{0x0001d400, 0x0001d454, 1},
+		{0x0001d456, 0x0001d49c, 1},
+		{0x0001d49e, 0x0001d49f, 1},
+		{0x0001d4a2, 0x0001d4a5, 3},
+		{0x0001d4a6, 0x0001d4a9, 3},
+		{0x0001d4aa, 0x0001d4ac, 1},
+		{0x0001d4ae, 0x0001d4b9, 1},
+		{0x0001d4bb, 0x0001d4bd, 2},
+		{0x0001d4be, 0x0001d4c3, 1},
+		{0x0001d4c5, 0x0001d505, 1},
+		{0x0001d507, 0x0001d50a, 1},
+		{0x0001d50d, 0x0001d514, 1},
+		{0x0001d516, 0x0001d51c, 1},
+		{0x0001d51e, 0x0001d539, 1},
+		{0x0001d53b, 0x0001d53e, 1},
+		{0x0001d540, 0x0001d544, 1},
+		{0x0001d546, 0x0001d54a, 4},
+		{0x0001d54b, 0x0001d550, 1},
+		{0x0001d552, 0x0001d6a5, 1},
+		{0x0001d6a8, 0x0001d7cb, 1},
+		{0x0001d7ce, 0x0001d7ff, 1},
+		{0x0001f000, 0x0001f02b, 1},
+		{0x0001f030, 0x0001f093, 1},
+		{0x0001f0a0, 0x0001f0ae, 1},
+		{0x0001f0b1, 0x0001f0be, 1},
+		{0x0001f0c1, 0x0001f0cf, 1},
+		{0x0001f0d1, 0x0001f0df, 1},
+		{0x0001f100, 0x0001f10a, 1},
+		{0x0001f110, 0x0001f12e, 1},
+		{0x0001f130, 0x0001f169, 1},
+		{0x0001f170, 0x0001f19a, 1},
+		{0x0001f1e6, 0x0001f202, 1},
+		{0x0001f210, 0x0001f23a, 1},
+		{0x0001f240, 0x0001f248, 1},
+		{0x0001f250, 0x0001f251, 1},
+		{0x0001f300, 0x0001f320, 1},
+		{0x0001f330, 0x0001f335, 1},
+		{0x0001f337, 0x0001f37c, 1},
+		{0x0001f380, 0x0001f393, 1},
+		{0x0001f3a0, 0x0001f3c4, 1},
+		{0x0001f3c6, 0x0001f3ca, 1},
+		{0x0001f3e0, 0x0001f3f0, 1},
+		{0x0001f400, 0x0001f43e, 1},
+		{0x0001f440, 0x0001f442, 2},
+		{0x0001f443, 0x0001f4f7, 1},
+		{0x0001f4f9, 0x0001f4fc, 1},
+		{0x0001f500, 0x0001f53d, 1},
+		{0x0001f550, 0x0001f567, 1},
+		{0x0001f5fb, 0x0001f5ff, 1},
+		{0x0001f601, 0x0001f610, 1},
+		{0x0001f612, 0x0001f614, 1},
+		{0x0001f616, 0x0001f61c, 2},
+		{0x0001f61d, 0x0001f61e, 1},
+		{0x0001f620, 0x0001f625, 1},
+		{0x0001f628, 0x0001f62b, 1},
+		{0x0001f62d, 0x0001f630, 3},
+		{0x0001f631, 0x0001f633, 1},
+		{0x0001f635, 0x0001f640, 1},
+		{0x0001f645, 0x0001f64f, 1},
+		{0x0001f680, 0x0001f6c5, 1},
+		{0x0001f700, 0x0001f773, 1},
+		{0x00020000, 0x0002a6d6, 1},
+		{0x0002a700, 0x0002b734, 1},
+		{0x0002b740, 0x0002b81d, 1},
+		{0x0002f800, 0x0002fa1d, 1},
+		{0x000e0001, 0x000e0020, 31},
+		{0x000e0021, 0x000e007f, 1},
+		{0x000e0100, 0x000e01ef, 1},
+		{0x000f0000, 0x000ffffd, 1},
+		{0x00100000, 0x0010fffd, 1},
+	},
+	LatinOffset: 0,
+}
+
+// size 4160 bytes (4 KiB)
+var assigned6_1_0 = &unicode.RangeTable{
+	R16: []unicode.Range16{
+		{0x0000, 0x0377, 1},
+		{0x037a, 0x037e, 1},
+		{0x0384, 0x038a, 1},
+		{0x038c, 0x038e, 2},
+		{0x038f, 0x03a1, 1},
+		{0x03a3, 0x0527, 1},
+		{0x0531, 0x0556, 1},
+		{0x0559, 0x055f, 1},
+		{0x0561, 0x0587, 1},
+		{0x0589, 0x058a, 1},
+		{0x058f, 0x0591, 2},
+		{0x0592, 0x05c7, 1},
+		{0x05d0, 0x05ea, 1},
+		{0x05f0, 0x05f4, 1},
+		{0x0600, 0x0604, 1},
+		{0x0606, 0x061b, 1},
+		{0x061e, 0x070d, 1},
+		{0x070f, 0x074a, 1},
+		{0x074d, 0x07b1, 1},
+		{0x07c0, 0x07fa, 1},
+		{0x0800, 0x082d, 1},
+		{0x0830, 0x083e, 1},
+		{0x0840, 0x085b, 1},
+		{0x085e, 0x08a0, 66},
+		{0x08a2, 0x08ac, 1},
+		{0x08e4, 0x08fe, 1},
+		{0x0900, 0x0977, 1},
+		{0x0979, 0x097f, 1},
+		{0x0981, 0x0983, 1},
+		{0x0985, 0x098c, 1},
+		{0x098f, 0x0990, 1},
+		{0x0993, 0x09a8, 1},
+		{0x09aa, 0x09b0, 1},
+		{0x09b2, 0x09b6, 4},
+		{0x09b7, 0x09b9, 1},
+		{0x09bc, 0x09c4, 1},
+		{0x09c7, 0x09c8, 1},
+		{0x09cb, 0x09ce, 1},
+		{0x09d7, 0x09dc, 5},
+		{0x09dd, 0x09df, 2},
+		{0x09e0, 0x09e3, 1},
+		{0x09e6, 0x09fb, 1},
+		{0x0a01, 0x0a03, 1},
+		{0x0a05, 0x0a0a, 1},
+		{0x0a0f, 0x0a10, 1},
+		{0x0a13, 0x0a28, 1},
+		{0x0a2a, 0x0a30, 1},
+		{0x0a32, 0x0a33, 1},
+		{0x0a35, 0x0a36, 1},
+		{0x0a38, 0x0a39, 1},
+		{0x0a3c, 0x0a3e, 2},
+		{0x0a3f, 0x0a42, 1},
+		{0x0a47, 0x0a48, 1},
+		{0x0a4b, 0x0a4d, 1},
+		{0x0a51, 0x0a59, 8},
+		{0x0a5a, 0x0a5c, 1},
+		{0x0a5e, 0x0a66, 8},
+		{0x0a67, 0x0a75, 1},
+		{0x0a81, 0x0a83, 1},
+		{0x0a85, 0x0a8d, 1},
+		{0x0a8f, 0x0a91, 1},
+		{0x0a93, 0x0aa8, 1},
+		{0x0aaa, 0x0ab0, 1},
+		{0x0ab2, 0x0ab3, 1},
+		{0x0ab5, 0x0ab9, 1},
+		{0x0abc, 0x0ac5, 1},
+		{0x0ac7, 0x0ac9, 1},
+		{0x0acb, 0x0acd, 1},
+		{0x0ad0, 0x0ae0, 16},
+		{0x0ae1, 0x0ae3, 1},
+		{0x0ae6, 0x0af1, 1},
+		{0x0b01, 0x0b03, 1},
+		{0x0b05, 0x0b0c, 1},
+		{0x0b0f, 0x0b10, 1},
+		{0x0b13, 0x0b28, 1},
+		{0x0b2a, 0x0b30, 1},
+		{0x0b32, 0x0b33, 1},
+		{0x0b35, 0x0b39, 1},
+		{0x0b3c, 0x0b44, 1},
+		{0x0b47, 0x0b48, 1},
+		{0x0b4b, 0x0b4d, 1},
+		{0x0b56, 0x0b57, 1},
+		{0x0b5c, 0x0b5d, 1},
+		{0x0b5f, 0x0b63, 1},
+		{0x0b66, 0x0b77, 1},
+		{0x0b82, 0x0b83, 1},
+		{0x0b85, 0x0b8a, 1},
+		{0x0b8e, 0x0b90, 1},
+		{0x0b92, 0x0b95, 1},
+		{0x0b99, 0x0b9a, 1},
+		{0x0b9c, 0x0b9e, 2},
+		{0x0b9f, 0x0ba3, 4},
+		{0x0ba4, 0x0ba8, 4},
+		{0x0ba9, 0x0baa, 1},
+		{0x0bae, 0x0bb9, 1},
+		{0x0bbe, 0x0bc2, 1},
+		{0x0bc6, 0x0bc8, 1},
+		{0x0bca, 0x0bcd, 1},
+		{0x0bd0, 0x0bd7, 7},
+		{0x0be6, 0x0bfa, 1},
+		{0x0c01, 0x0c03, 1},
+		{0x0c05, 0x0c0c, 1},
+		{0x0c0e, 0x0c10, 1},
+		{0x0c12, 0x0c28, 1},
+		{0x0c2a, 0x0c33, 1},
+		{0x0c35, 0x0c39, 1},
+		{0x0c3d, 0x0c44, 1},
+		{0x0c46, 0x0c48, 1},
+		{0x0c4a, 0x0c4d, 1},
+		{0x0c55, 0x0c56, 1},
+		{0x0c58, 0x0c59, 1},
+		{0x0c60, 0x0c63, 1},
+		{0x0c66, 0x0c6f, 1},
+		{0x0c78, 0x0c7f, 1},
+		{0x0c82, 0x0c83, 1},
+		{0x0c85, 0x0c8c, 1},
+		{0x0c8e, 0x0c90, 1},
+		{0x0c92, 0x0ca8, 1},
+		{0x0caa, 0x0cb3, 1},
+		{0x0cb5, 0x0cb9, 1},
+		{0x0cbc, 0x0cc4, 1},
+		{0x0cc6, 0x0cc8, 1},
+		{0x0cca, 0x0ccd, 1},
+		{0x0cd5, 0x0cd6, 1},
+		{0x0cde, 0x0ce0, 2},
+		{0x0ce1, 0x0ce3, 1},
+		{0x0ce6, 0x0cef, 1},
+		{0x0cf1, 0x0cf2, 1},
+		{0x0d02, 0x0d03, 1},
+		{0x0d05, 0x0d0c, 1},
+		{0x0d0e, 0x0d10, 1},
+		{0x0d12, 0x0d3a, 1},
+		{0x0d3d, 0x0d44, 1},
+		{0x0d46, 0x0d48, 1},
+		{0x0d4a, 0x0d4e, 1},
+		{0x0d57, 0x0d60, 9},
+		{0x0d61, 0x0d63, 1},
+		{0x0d66, 0x0d75, 1},
+		{0x0d79, 0x0d7f, 1},
+		{0x0d82, 0x0d83, 1},
+		{0x0d85, 0x0d96, 1},
+		{0x0d9a, 0x0db1, 1},
+		{0x0db3, 0x0dbb, 1},
+		{0x0dbd, 0x0dc0, 3},
+		{0x0dc1, 0x0dc6, 1},
+		{0x0dca, 0x0dcf, 5},
+		{0x0dd0, 0x0dd4, 1},
+		{0x0dd6, 0x0dd8, 2},
+		{0x0dd9, 0x0ddf, 1},
+		{0x0df2, 0x0df4, 1},
+		{0x0e01, 0x0e3a, 1},
+		{0x0e3f, 0x0e5b, 1},
+		{0x0e81, 0x0e82, 1},
+		{0x0e84, 0x0e87, 3},
+		{0x0e88, 0x0e8a, 2},
+		{0x0e8d, 0x0e94, 7},
+		{0x0e95, 0x0e97, 1},
+		{0x0e99, 0x0e9f, 1},
+		{0x0ea1, 0x0ea3, 1},
+		{0x0ea5, 0x0ea7, 2},
+		{0x0eaa, 0x0eab, 1},
+		{0x0ead, 0x0eb9, 1},
+		{0x0ebb, 0x0ebd, 1},
+		{0x0ec0, 0x0ec4, 1},
+		{0x0ec6, 0x0ec8, 2},
+		{0x0ec9, 0x0ecd, 1},
+		{0x0ed0, 0x0ed9, 1},
+		{0x0edc, 0x0edf, 1},
+		{0x0f00, 0x0f47, 1},
+		{0x0f49, 0x0f6c, 1},
+		{0x0f71, 0x0f97, 1},
+		{0x0f99, 0x0fbc, 1},
+		{0x0fbe, 0x0fcc, 1},
+		{0x0fce, 0x0fda, 1},
+		{0x1000, 0x10c5, 1},
+		{0x10c7, 0x10cd, 6},
+		{0x10d0, 0x1248, 1},
+		{0x124a, 0x124d, 1},
+		{0x1250, 0x1256, 1},
+		{0x1258, 0x125a, 2},
+		{0x125b, 0x125d, 1},
+		{0x1260, 0x1288, 1},
+		{0x128a, 0x128d, 1},
+		{0x1290, 0x12b0, 1},
+		{0x12b2, 0x12b5, 1},
+		{0x12b8, 0x12be, 1},
+		{0x12c0, 0x12c2, 2},
+		{0x12c3, 0x12c5, 1},
+		{0x12c8, 0x12d6, 1},
+		{0x12d8, 0x1310, 1},
+		{0x1312, 0x1315, 1},
+		{0x1318, 0x135a, 1},
+		{0x135d, 0x137c, 1},
+		{0x1380, 0x1399, 1},
+		{0x13a0, 0x13f4, 1},
+		{0x1400, 0x169c, 1},
+		{0x16a0, 0x16f0, 1},
+		{0x1700, 0x170c, 1},
+		{0x170e, 0x1714, 1},
+		{0x1720, 0x1736, 1},
+		{0x1740, 0x1753, 1},
+		{0x1760, 0x176c, 1},
+		{0x176e, 0x1770, 1},
+		{0x1772, 0x1773, 1},
+		{0x1780, 0x17dd, 1},
+		{0x17e0, 0x17e9, 1},
+		{0x17f0, 0x17f9, 1},
+		{0x1800, 0x180e, 1},
+		{0x1810, 0x1819, 1},
+		{0x1820, 0x1877, 1},
+		{0x1880, 0x18aa, 1},
+		{0x18b0, 0x18f5, 1},
+		{0x1900, 0x191c, 1},
+		{0x1920, 0x192b, 1},
+		{0x1930, 0x193b, 1},
+		{0x1940, 0x1944, 4},
+		{0x1945, 0x196d, 1},
+		{0x1970, 0x1974, 1},
+		{0x1980, 0x19ab, 1},
+		{0x19b0, 0x19c9, 1},
+		{0x19d0, 0x19da, 1},
+		{0x19de, 0x1a1b, 1},
+		{0x1a1e, 0x1a5e, 1},
+		{0x1a60, 0x1a7c, 1},
+		{0x1a7f, 0x1a89, 1},
+		{0x1a90, 0x1a99, 1},
+		{0x1aa0, 0x1aad, 1},
+		{0x1b00, 0x1b4b, 1},
+		{0x1b50, 0x1b7c, 1},
+		{0x1b80, 0x1bf3, 1},
+		{0x1bfc, 0x1c37, 1},
+		{0x1c3b, 0x1c49, 1},
+		{0x1c4d, 0x1c7f, 1},
+		{0x1cc0, 0x1cc7, 1},
+		{0x1cd0, 0x1cf6, 1},
+		{0x1d00, 0x1de6, 1},
+		{0x1dfc, 0x1f15, 1},
+		{0x1f18, 0x1f1d, 1},
+		{0x1f20, 0x1f45, 1},
+		{0x1f48, 0x1f4d, 1},
+		{0x1f50, 0x1f57, 1},
+		{0x1f59, 0x1f5f, 2},
+		{0x1f60, 0x1f7d, 1},
+		{0x1f80, 0x1fb4, 1},
+		{0x1fb6, 0x1fc4, 1},
+		{0x1fc6, 0x1fd3, 1},
+		{0x1fd6, 0x1fdb, 1},
+		{0x1fdd, 0x1fef, 1},
+		{0x1ff2, 0x1ff4, 1},
+		{0x1ff6, 0x1ffe, 1},
+		{0x2000, 0x2064, 1},
+		{0x206a, 0x2071, 1},
+		{0x2074, 0x208e, 1},
+		{0x2090, 0x209c, 1},
+		{0x20a0, 0x20b9, 1},
+		{0x20d0, 0x20f0, 1},
+		{0x2100, 0x2189, 1},
+		{0x2190, 0x23f3, 1},
+		{0x2400, 0x2426, 1},
+		{0x2440, 0x244a, 1},
+		{0x2460, 0x26ff, 1},
+		{0x2701, 0x2b4c, 1},
+		{0x2b50, 0x2b59, 1},
+		{0x2c00, 0x2c2e, 1},
+		{0x2c30, 0x2c5e, 1},
+		{0x2c60, 0x2cf3, 1},
+		{0x2cf9, 0x2d25, 1},
+		{0x2d27, 0x2d2d, 6},
+		{0x2d30, 0x2d67, 1},
+		{0x2d6f, 0x2d70, 1},
+		{0x2d7f, 0x2d96, 1},
+		{0x2da0, 0x2da6, 1},
+		{0x2da8, 0x2dae, 1},
+		{0x2db0, 0x2db6, 1},
+		{0x2db8, 0x2dbe, 1},
+		{0x2dc0, 0x2dc6, 1},
+		{0x2dc8, 0x2dce, 1},
+		{0x2dd0, 0x2dd6, 1},
+		{0x2dd8, 0x2dde, 1},
+		{0x2de0, 0x2e3b, 1},
+		{0x2e80, 0x2e99, 1},
+		{0x2e9b, 0x2ef3, 1},
+		{0x2f00, 0x2fd5, 1},
+		{0x2ff0, 0x2ffb, 1},
+		{0x3000, 0x303f, 1},
+		{0x3041, 0x3096, 1},
+		{0x3099, 0x30ff, 1},
+		{0x3105, 0x312d, 1},
+		{0x3131, 0x318e, 1},
+		{0x3190, 0x31ba, 1},
+		{0x31c0, 0x31e3, 1},
+		{0x31f0, 0x321e, 1},
+		{0x3220, 0x32fe, 1},
+		{0x3300, 0x4db5, 1},
+		{0x4dc0, 0x9fcc, 1},
+		{0xa000, 0xa48c, 1},
+		{0xa490, 0xa4c6, 1},
+		{0xa4d0, 0xa62b, 1},
+		{0xa640, 0xa697, 1},
+		{0xa69f, 0xa6f7, 1},
+		{0xa700, 0xa78e, 1},
+		{0xa790, 0xa793, 1},
+		{0xa7a0, 0xa7aa, 1},
+		{0xa7f8, 0xa82b, 1},
+		{0xa830, 0xa839, 1},
+		{0xa840, 0xa877, 1},
+		{0xa880, 0xa8c4, 1},
+		{0xa8ce, 0xa8d9, 1},
+		{0xa8e0, 0xa8fb, 1},
+		{0xa900, 0xa953, 1},
+		{0xa95f, 0xa97c, 1},
+		{0xa980, 0xa9cd, 1},
+		{0xa9cf, 0xa9d9, 1},
+		{0xa9de, 0xa9df, 1},
+		{0xaa00, 0xaa36, 1},
+		{0xaa40, 0xaa4d, 1},
+		{0xaa50, 0xaa59, 1},
+		{0xaa5c, 0xaa7b, 1},
+		{0xaa80, 0xaac2, 1},
+		{0xaadb, 0xaaf6, 1},
+		{0xab01, 0xab06, 1},
+		{0xab09, 0xab0e, 1},
+		{0xab11, 0xab16, 1},
+		{0xab20, 0xab26, 1},
+		{0xab28, 0xab2e, 1},
+		{0xabc0, 0xabed, 1},
+		{0xabf0, 0xabf9, 1},
+		{0xac00, 0xd7a3, 1},
+		{0xd7b0, 0xd7c6, 1},
+		{0xd7cb, 0xd7fb, 1},
+		{0xd800, 0xfa6d, 1},
+		{0xfa70, 0xfad9, 1},
+		{0xfb00, 0xfb06, 1},
+		{0xfb13, 0xfb17, 1},
+		{0xfb1d, 0xfb36, 1},
+		{0xfb38, 0xfb3c, 1},
+		{0xfb3e, 0xfb40, 2},
+		{0xfb41, 0xfb43, 2},
+		{0xfb44, 0xfb46, 2},
+		{0xfb47, 0xfbc1, 1},
+		{0xfbd3, 0xfd3f, 1},
+		{0xfd50, 0xfd8f, 1},
+		{0xfd92, 0xfdc7, 1},
+		{0xfdf0, 0xfdfd, 1},
+		{0xfe00, 0xfe19, 1},
+		{0xfe20, 0xfe26, 1},
+		{0xfe30, 0xfe52, 1},
+		{0xfe54, 0xfe66, 1},
+		{0xfe68, 0xfe6b, 1},
+		{0xfe70, 0xfe74, 1},
+		{0xfe76, 0xfefc, 1},
+		{0xfeff, 0xff01, 2},
+		{0xff02, 0xffbe, 1},
+		{0xffc2, 0xffc7, 1},
+		{0xffca, 0xffcf, 1},
+		{0xffd2, 0xffd7, 1},
+		{0xffda, 0xffdc, 1},
+		{0xffe0, 0xffe6, 1},
+		{0xffe8, 0xffee, 1},
+		{0xfff9, 0xfffd, 1},
+	},
+	R32: []unicode.Range32{
+		{0x00010000, 0x0001000b, 1},
+		{0x0001000d, 0x00010026, 1},
+		{0x00010028, 0x0001003a, 1},
+		{0x0001003c, 0x0001003d, 1},
+		{0x0001003f, 0x0001004d, 1},
+		{0x00010050, 0x0001005d, 1},
+		{0x00010080, 0x000100fa, 1},
+		{0x00010100, 0x00010102, 1},
+		{0x00010107, 0x00010133, 1},
+		{0x00010137, 0x0001018a, 1},
+		{0x00010190, 0x0001019b, 1},
+		{0x000101d0, 0x000101fd, 1},
+		{0x00010280, 0x0001029c, 1},
+		{0x000102a0, 0x000102d0, 1},
+		{0x00010300, 0x0001031e, 1},
+		{0x00010320, 0x00010323, 1},
+		{0x00010330, 0x0001034a, 1},
+		{0x00010380, 0x0001039d, 1},
+		{0x0001039f, 0x000103c3, 1},
+		{0x000103c8, 0x000103d5, 1},
+		{0x00010400, 0x0001049d, 1},
+		{0x000104a0, 0x000104a9, 1},
+		{0x00010800, 0x00010805, 1},
+		{0x00010808, 0x0001080a, 2},
+		{0x0001080b, 0x00010835, 1},
+		{0x00010837, 0x00010838, 1},
+		{0x0001083c, 0x0001083f, 3},
+		{0x00010840, 0x00010855, 1},
+		{0x00010857, 0x0001085f, 1},
+		{0x00010900, 0x0001091b, 1},
+		{0x0001091f, 0x00010939, 1},
+		{0x0001093f, 0x00010980, 65},
+		{0x00010981, 0x000109b7, 1},
+		{0x000109be, 0x000109bf, 1},
+		{0x00010a00, 0x00010a03, 1},
+		{0x00010a05, 0x00010a06, 1},
+		{0x00010a0c, 0x00010a13, 1},
+		{0x00010a15, 0x00010a17, 1},
+		{0x00010a19, 0x00010a33, 1},
+		{0x00010a38, 0x00010a3a, 1},
+		{0x00010a3f, 0x00010a47, 1},
+		{0x00010a50, 0x00010a58, 1},
+		{0x00010a60, 0x00010a7f, 1},
+		{0x00010b00, 0x00010b35, 1},
+		{0x00010b39, 0x00010b55, 1},
+		{0x00010b58, 0x00010b72, 1},
+		{0x00010b78, 0x00010b7f, 1},
+		{0x00010c00, 0x00010c48, 1},
+		{0x00010e60, 0x00010e7e, 1},
+		{0x00011000, 0x0001104d, 1},
+		{0x00011052, 0x0001106f, 1},
+		{0x00011080, 0x000110c1, 1},
+		{0x000110d0, 0x000110e8, 1},
+		{0x000110f0, 0x000110f9, 1},
+		{0x00011100, 0x00011134, 1},
+		{0x00011136, 0x00011143, 1},
+		{0x00011180, 0x000111c8, 1},
+		{0x000111d0, 0x000111d9, 1},
+		{0x00011680, 0x000116b7, 1},
+		{0x000116c0, 0x000116c9, 1},
+		{0x00012000, 0x0001236e, 1},
+		{0x00012400, 0x00012462, 1},
+		{0x00012470, 0x00012473, 1},
+		{0x00013000, 0x0001342e, 1},
+		{0x00016800, 0x00016a38, 1},
+		{0x00016f00, 0x00016f44, 1},
+		{0x00016f50, 0x00016f7e, 1},
+		{0x00016f8f, 0x00016f9f, 1},
+		{0x0001b000, 0x0001b001, 1},
+		{0x0001d000, 0x0001d0f5, 1},
+		{0x0001d100, 0x0001d126, 1},
+		{0x0001d129, 0x0001d1dd, 1},
+		{0x0001d200, 0x0001d245, 1},
+		{0x0001d300, 0x0001d356, 1},
+		{0x0001d360, 0x0001d371, 1},
+		{0x0001d400, 0x0001d454, 1},
+		{0x0001d456, 0x0001d49c, 1},
+		{0x0001d49e, 0x0001d49f, 1},
+		{0x0001d4a2, 0x0001d4a5, 3},
+		{0x0001d4a6, 0x0001d4a9, 3},
+		{0x0001d4aa, 0x0001d4ac, 1},
+		{0x0001d4ae, 0x0001d4b9, 1},
+		{0x0001d4bb, 0x0001d4bd, 2},
+		{0x0001d4be, 0x0001d4c3, 1},
+		{0x0001d4c5, 0x0001d505, 1},
+		{0x0001d507, 0x0001d50a, 1},
+		{0x0001d50d, 0x0001d514, 1},
+		{0x0001d516, 0x0001d51c, 1},
+		{0x0001d51e, 0x0001d539, 1},
+		{0x0001d53b, 0x0001d53e, 1},
+		{0x0001d540, 0x0001d544, 1},
+		{0x0001d546, 0x0001d54a, 4},
+		{0x0001d54b, 0x0001d550, 1},
+		{0x0001d552, 0x0001d6a5, 1},
+		{0x0001d6a8, 0x0001d7cb, 1},
+		{0x0001d7ce, 0x0001d7ff, 1},
+		{0x0001ee00, 0x0001ee03, 1},
+		{0x0001ee05, 0x0001ee1f, 1},
+		{0x0001ee21, 0x0001ee22, 1},
+		{0x0001ee24, 0x0001ee27, 3},
+		{0x0001ee29, 0x0001ee32, 1},
+		{0x0001ee34, 0x0001ee37, 1},
+		{0x0001ee39, 0x0001ee3b, 2},
+		{0x0001ee42, 0x0001ee47, 5},
+		{0x0001ee49, 0x0001ee4d, 2},
+		{0x0001ee4e, 0x0001ee4f, 1},
+		{0x0001ee51, 0x0001ee52, 1},
+		{0x0001ee54, 0x0001ee57, 3},
+		{0x0001ee59, 0x0001ee61, 2},
+		{0x0001ee62, 0x0001ee64, 2},
+		{0x0001ee67, 0x0001ee6a, 1},
+		{0x0001ee6c, 0x0001ee72, 1},
+		{0x0001ee74, 0x0001ee77, 1},
+		{0x0001ee79, 0x0001ee7c, 1},
+		{0x0001ee7e, 0x0001ee80, 2},
+		{0x0001ee81, 0x0001ee89, 1},
+		{0x0001ee8b, 0x0001ee9b, 1},
+		{0x0001eea1, 0x0001eea3, 1},
+		{0x0001eea5, 0x0001eea9, 1},
+		{0x0001eeab, 0x0001eebb, 1},
+		{0x0001eef0, 0x0001eef1, 1},
+		{0x0001f000, 0x0001f02b, 1},
+		{0x0001f030, 0x0001f093, 1},
+		{0x0001f0a0, 0x0001f0ae, 1},
+		{0x0001f0b1, 0x0001f0be, 1},
+		{0x0001f0c1, 0x0001f0cf, 1},
+		{0x0001f0d1, 0x0001f0df, 1},
+		{0x0001f100, 0x0001f10a, 1},
+		{0x0001f110, 0x0001f12e, 1},
+		{0x0001f130, 0x0001f16b, 1},
+		{0x0001f170, 0x0001f19a, 1},
+		{0x0001f1e6, 0x0001f202, 1},
+		{0x0001f210, 0x0001f23a, 1},
+		{0x0001f240, 0x0001f248, 1},
+		{0x0001f250, 0x0001f251, 1},
+		{0x0001f300, 0x0001f320, 1},
+		{0x0001f330, 0x0001f335, 1},
+		{0x0001f337, 0x0001f37c, 1},
+		{0x0001f380, 0x0001f393, 1},
+		{0x0001f3a0, 0x0001f3c4, 1},
+		{0x0001f3c6, 0x0001f3ca, 1},
+		{0x0001f3e0, 0x0001f3f0, 1},
+		{0x0001f400, 0x0001f43e, 1},
+		{0x0001f440, 0x0001f442, 2},
+		{0x0001f443, 0x0001f4f7, 1},
+		{0x0001f4f9, 0x0001f4fc, 1},
+		{0x0001f500, 0x0001f53d, 1},
+		{0x0001f540, 0x0001f543, 1},
+		{0x0001f550, 0x0001f567, 1},
+		{0x0001f5fb, 0x0001f640, 1},
+		{0x0001f645, 0x0001f64f, 1},
+		{0x0001f680, 0x0001f6c5, 1},
+		{0x0001f700, 0x0001f773, 1},
+		{0x00020000, 0x0002a6d6, 1},
+		{0x0002a700, 0x0002b734, 1},
+		{0x0002b740, 0x0002b81d, 1},
+		{0x0002f800, 0x0002fa1d, 1},
+		{0x000e0001, 0x000e0020, 31},
+		{0x000e0021, 0x000e007f, 1},
+		{0x000e0100, 0x000e01ef, 1},
+		{0x000f0000, 0x000ffffd, 1},
+		{0x00100000, 0x0010fffd, 1},
+	},
+	LatinOffset: 0,
+}
+
+// size 4160 bytes (4 KiB)
+var assigned6_2_0 = &unicode.RangeTable{
+	R16: []unicode.Range16{
+		{0x0000, 0x0377, 1},
+		{0x037a, 0x037e, 1},
+		{0x0384, 0x038a, 1},
+		{0x038c, 0x038e, 2},
+		{0x038f, 0x03a1, 1},
+		{0x03a3, 0x0527, 1},
+		{0x0531, 0x0556, 1},
+		{0x0559, 0x055f, 1},
+		{0x0561, 0x0587, 1},
+		{0x0589, 0x058a, 1},
+		{0x058f, 0x0591, 2},
+		{0x0592, 0x05c7, 1},
+		{0x05d0, 0x05ea, 1},
+		{0x05f0, 0x05f4, 1},
+		{0x0600, 0x0604, 1},
+		{0x0606, 0x061b, 1},
+		{0x061e, 0x070d, 1},
+		{0x070f, 0x074a, 1},
+		{0x074d, 0x07b1, 1},
+		{0x07c0, 0x07fa, 1},
+		{0x0800, 0x082d, 1},
+		{0x0830, 0x083e, 1},
+		{0x0840, 0x085b, 1},
+		{0x085e, 0x08a0, 66},
+		{0x08a2, 0x08ac, 1},
+		{0x08e4, 0x08fe, 1},
+		{0x0900, 0x0977, 1},
+		{0x0979, 0x097f, 1},
+		{0x0981, 0x0983, 1},
+		{0x0985, 0x098c, 1},
+		{0x098f, 0x0990, 1},
+		{0x0993, 0x09a8, 1},
+		{0x09aa, 0x09b0, 1},
+		{0x09b2, 0x09b6, 4},
+		{0x09b7, 0x09b9, 1},
+		{0x09bc, 0x09c4, 1},
+		{0x09c7, 0x09c8, 1},
+		{0x09cb, 0x09ce, 1},
+		{0x09d7, 0x09dc, 5},
+		{0x09dd, 0x09df, 2},
+		{0x09e0, 0x09e3, 1},
+		{0x09e6, 0x09fb, 1},
+		{0x0a01, 0x0a03, 1},
+		{0x0a05, 0x0a0a, 1},
+		{0x0a0f, 0x0a10, 1},
+		{0x0a13, 0x0a28, 1},
+		{0x0a2a, 0x0a30, 1},
+		{0x0a32, 0x0a33, 1},
+		{0x0a35, 0x0a36, 1},
+		{0x0a38, 0x0a39, 1},
+		{0x0a3c, 0x0a3e, 2},
+		{0x0a3f, 0x0a42, 1},
+		{0x0a47, 0x0a48, 1},
+		{0x0a4b, 0x0a4d, 1},
+		{0x0a51, 0x0a59, 8},
+		{0x0a5a, 0x0a5c, 1},
+		{0x0a5e, 0x0a66, 8},
+		{0x0a67, 0x0a75, 1},
+		{0x0a81, 0x0a83, 1},
+		{0x0a85, 0x0a8d, 1},
+		{0x0a8f, 0x0a91, 1},
+		{0x0a93, 0x0aa8, 1},
+		{0x0aaa, 0x0ab0, 1},
+		{0x0ab2, 0x0ab3, 1},
+		{0x0ab5, 0x0ab9, 1},
+		{0x0abc, 0x0ac5, 1},
+		{0x0ac7, 0x0ac9, 1},
+		{0x0acb, 0x0acd, 1},
+		{0x0ad0, 0x0ae0, 16},
+		{0x0ae1, 0x0ae3, 1},
+		{0x0ae6, 0x0af1, 1},
+		{0x0b01, 0x0b03, 1},
+		{0x0b05, 0x0b0c, 1},
+		{0x0b0f, 0x0b10, 1},
+		{0x0b13, 0x0b28, 1},
+		{0x0b2a, 0x0b30, 1},
+		{0x0b32, 0x0b33, 1},
+		{0x0b35, 0x0b39, 1},
+		{0x0b3c, 0x0b44, 1},
+		{0x0b47, 0x0b48, 1},
+		{0x0b4b, 0x0b4d, 1},
+		{0x0b56, 0x0b57, 1},
+		{0x0b5c, 0x0b5d, 1},
+		{0x0b5f, 0x0b63, 1},
+		{0x0b66, 0x0b77, 1},
+		{0x0b82, 0x0b83, 1},
+		{0x0b85, 0x0b8a, 1},
+		{0x0b8e, 0x0b90, 1},
+		{0x0b92, 0x0b95, 1},
+		{0x0b99, 0x0b9a, 1},
+		{0x0b9c, 0x0b9e, 2},
+		{0x0b9f, 0x0ba3, 4},
+		{0x0ba4, 0x0ba8, 4},
+		{0x0ba9, 0x0baa, 1},
+		{0x0bae, 0x0bb9, 1},
+		{0x0bbe, 0x0bc2, 1},
+		{0x0bc6, 0x0bc8, 1},
+		{0x0bca, 0x0bcd, 1},
+		{0x0bd0, 0x0bd7, 7},
+		{0x0be6, 0x0bfa, 1},
+		{0x0c01, 0x0c03, 1},
+		{0x0c05, 0x0c0c, 1},
+		{0x0c0e, 0x0c10, 1},
+		{0x0c12, 0x0c28, 1},
+		{0x0c2a, 0x0c33, 1},
+		{0x0c35, 0x0c39, 1},
+		{0x0c3d, 0x0c44, 1},
+		{0x0c46, 0x0c48, 1},
+		{0x0c4a, 0x0c4d, 1},
+		{0x0c55, 0x0c56, 1},
+		{0x0c58, 0x0c59, 1},
+		{0x0c60, 0x0c63, 1},
+		{0x0c66, 0x0c6f, 1},
+		{0x0c78, 0x0c7f, 1},
+		{0x0c82, 0x0c83, 1},
+		{0x0c85, 0x0c8c, 1},
+		{0x0c8e, 0x0c90, 1},
+		{0x0c92, 0x0ca8, 1},
+		{0x0caa, 0x0cb3, 1},
+		{0x0cb5, 0x0cb9, 1},
+		{0x0cbc, 0x0cc4, 1},
+		{0x0cc6, 0x0cc8, 1},
+		{0x0cca, 0x0ccd, 1},
+		{0x0cd5, 0x0cd6, 1},
+		{0x0cde, 0x0ce0, 2},
+		{0x0ce1, 0x0ce3, 1},
+		{0x0ce6, 0x0cef, 1},
+		{0x0cf1, 0x0cf2, 1},
+		{0x0d02, 0x0d03, 1},
+		{0x0d05, 0x0d0c, 1},
+		{0x0d0e, 0x0d10, 1},
+		{0x0d12, 0x0d3a, 1},
+		{0x0d3d, 0x0d44, 1},
+		{0x0d46, 0x0d48, 1},
+		{0x0d4a, 0x0d4e, 1},
+		{0x0d57, 0x0d60, 9},
+		{0x0d61, 0x0d63, 1},
+		{0x0d66, 0x0d75, 1},
+		{0x0d79, 0x0d7f, 1},
+		{0x0d82, 0x0d83, 1},
+		{0x0d85, 0x0d96, 1},
+		{0x0d9a, 0x0db1, 1},
+		{0x0db3, 0x0dbb, 1},
+		{0x0dbd, 0x0dc0, 3},
+		{0x0dc1, 0x0dc6, 1},
+		{0x0dca, 0x0dcf, 5},
+		{0x0dd0, 0x0dd4, 1},
+		{0x0dd6, 0x0dd8, 2},
+		{0x0dd9, 0x0ddf, 1},
+		{0x0df2, 0x0df4, 1},
+		{0x0e01, 0x0e3a, 1},
+		{0x0e3f, 0x0e5b, 1},
+		{0x0e81, 0x0e82, 1},
+		{0x0e84, 0x0e87, 3},
+		{0x0e88, 0x0e8a, 2},
+		{0x0e8d, 0x0e94, 7},
+		{0x0e95, 0x0e97, 1},
+		{0x0e99, 0x0e9f, 1},
+		{0x0ea1, 0x0ea3, 1},
+		{0x0ea5, 0x0ea7, 2},
+		{0x0eaa, 0x0eab, 1},
+		{0x0ead, 0x0eb9, 1},
+		{0x0ebb, 0x0ebd, 1},
+		{0x0ec0, 0x0ec4, 1},
+		{0x0ec6, 0x0ec8, 2},
+		{0x0ec9, 0x0ecd, 1},
+		{0x0ed0, 0x0ed9, 1},
+		{0x0edc, 0x0edf, 1},
+		{0x0f00, 0x0f47, 1},
+		{0x0f49, 0x0f6c, 1},
+		{0x0f71, 0x0f97, 1},
+		{0x0f99, 0x0fbc, 1},
+		{0x0fbe, 0x0fcc, 1},
+		{0x0fce, 0x0fda, 1},
+		{0x1000, 0x10c5, 1},
+		{0x10c7, 0x10cd, 6},
+		{0x10d0, 0x1248, 1},
+		{0x124a, 0x124d, 1},
+		{0x1250, 0x1256, 1},
+		{0x1258, 0x125a, 2},
+		{0x125b, 0x125d, 1},
+		{0x1260, 0x1288, 1},
+		{0x128a, 0x128d, 1},
+		{0x1290, 0x12b0, 1},
+		{0x12b2, 0x12b5, 1},
+		{0x12b8, 0x12be, 1},
+		{0x12c0, 0x12c2, 2},
+		{0x12c3, 0x12c5, 1},
+		{0x12c8, 0x12d6, 1},
+		{0x12d8, 0x1310, 1},
+		{0x1312, 0x1315, 1},
+		{0x1318, 0x135a, 1},
+		{0x135d, 0x137c, 1},
+		{0x1380, 0x1399, 1},
+		{0x13a0, 0x13f4, 1},
+		{0x1400, 0x169c, 1},
+		{0x16a0, 0x16f0, 1},
+		{0x1700, 0x170c, 1},
+		{0x170e, 0x1714, 1},
+		{0x1720, 0x1736, 1},
+		{0x1740, 0x1753, 1},
+		{0x1760, 0x176c, 1},
+		{0x176e, 0x1770, 1},
+		{0x1772, 0x1773, 1},
+		{0x1780, 0x17dd, 1},
+		{0x17e0, 0x17e9, 1},
+		{0x17f0, 0x17f9, 1},
+		{0x1800, 0x180e, 1},
+		{0x1810, 0x1819, 1},
+		{0x1820, 0x1877, 1},
+		{0x1880, 0x18aa, 1},
+		{0x18b0, 0x18f5, 1},
+		{0x1900, 0x191c, 1},
+		{0x1920, 0x192b, 1},
+		{0x1930, 0x193b, 1},
+		{0x1940, 0x1944, 4},
+		{0x1945, 0x196d, 1},
+		{0x1970, 0x1974, 1},
+		{0x1980, 0x19ab, 1},
+		{0x19b0, 0x19c9, 1},
+		{0x19d0, 0x19da, 1},
+		{0x19de, 0x1a1b, 1},
+		{0x1a1e, 0x1a5e, 1},
+		{0x1a60, 0x1a7c, 1},
+		{0x1a7f, 0x1a89, 1},
+		{0x1a90, 0x1a99, 1},
+		{0x1aa0, 0x1aad, 1},
+		{0x1b00, 0x1b4b, 1},
+		{0x1b50, 0x1b7c, 1},
+		{0x1b80, 0x1bf3, 1},
+		{0x1bfc, 0x1c37, 1},
+		{0x1c3b, 0x1c49, 1},
+		{0x1c4d, 0x1c7f, 1},
+		{0x1cc0, 0x1cc7, 1},
+		{0x1cd0, 0x1cf6, 1},
+		{0x1d00, 0x1de6, 1},
+		{0x1dfc, 0x1f15, 1},
+		{0x1f18, 0x1f1d, 1},
+		{0x1f20, 0x1f45, 1},
+		{0x1f48, 0x1f4d, 1},
+		{0x1f50, 0x1f57, 1},
+		{0x1f59, 0x1f5f, 2},
+		{0x1f60, 0x1f7d, 1},
+		{0x1f80, 0x1fb4, 1},
+		{0x1fb6, 0x1fc4, 1},
+		{0x1fc6, 0x1fd3, 1},
+		{0x1fd6, 0x1fdb, 1},
+		{0x1fdd, 0x1fef, 1},
+		{0x1ff2, 0x1ff4, 1},
+		{0x1ff6, 0x1ffe, 1},
+		{0x2000, 0x2064, 1},
+		{0x206a, 0x2071, 1},
+		{0x2074, 0x208e, 1},
+		{0x2090, 0x209c, 1},
+		{0x20a0, 0x20ba, 1},
+		{0x20d0, 0x20f0, 1},
+		{0x2100, 0x2189, 1},
+		{0x2190, 0x23f3, 1},
+		{0x2400, 0x2426, 1},
+		{0x2440, 0x244a, 1},
+		{0x2460, 0x26ff, 1},
+		{0x2701, 0x2b4c, 1},
+		{0x2b50, 0x2b59, 1},
+		{0x2c00, 0x2c2e, 1},
+		{0x2c30, 0x2c5e, 1},
+		{0x2c60, 0x2cf3, 1},
+		{0x2cf9, 0x2d25, 1},
+		{0x2d27, 0x2d2d, 6},
+		{0x2d30, 0x2d67, 1},
+		{0x2d6f, 0x2d70, 1},
+		{0x2d7f, 0x2d96, 1},
+		{0x2da0, 0x2da6, 1},
+		{0x2da8, 0x2dae, 1},
+		{0x2db0, 0x2db6, 1},
+		{0x2db8, 0x2dbe, 1},
+		{0x2dc0, 0x2dc6, 1},
+		{0x2dc8, 0x2dce, 1},
+		{0x2dd0, 0x2dd6, 1},
+		{0x2dd8, 0x2dde, 1},
+		{0x2de0, 0x2e3b, 1},
+		{0x2e80, 0x2e99, 1},
+		{0x2e9b, 0x2ef3, 1},
+		{0x2f00, 0x2fd5, 1},
+		{0x2ff0, 0x2ffb, 1},
+		{0x3000, 0x303f, 1},
+		{0x3041, 0x3096, 1},
+		{0x3099, 0x30ff, 1},
+		{0x3105, 0x312d, 1},
+		{0x3131, 0x318e, 1},
+		{0x3190, 0x31ba, 1},
+		{0x31c0, 0x31e3, 1},
+		{0x31f0, 0x321e, 1},
+		{0x3220, 0x32fe, 1},
+		{0x3300, 0x4db5, 1},
+		{0x4dc0, 0x9fcc, 1},
+		{0xa000, 0xa48c, 1},
+		{0xa490, 0xa4c6, 1},
+		{0xa4d0, 0xa62b, 1},
+		{0xa640, 0xa697, 1},
+		{0xa69f, 0xa6f7, 1},
+		{0xa700, 0xa78e, 1},
+		{0xa790, 0xa793, 1},
+		{0xa7a0, 0xa7aa, 1},
+		{0xa7f8, 0xa82b, 1},
+		{0xa830, 0xa839, 1},
+		{0xa840, 0xa877, 1},
+		{0xa880, 0xa8c4, 1},
+		{0xa8ce, 0xa8d9, 1},
+		{0xa8e0, 0xa8fb, 1},
+		{0xa900, 0xa953, 1},
+		{0xa95f, 0xa97c, 1},
+		{0xa980, 0xa9cd, 1},
+		{0xa9cf, 0xa9d9, 1},
+		{0xa9de, 0xa9df, 1},
+		{0xaa00, 0xaa36, 1},
+		{0xaa40, 0xaa4d, 1},
+		{0xaa50, 0xaa59, 1},
+		{0xaa5c, 0xaa7b, 1},
+		{0xaa80, 0xaac2, 1},
+		{0xaadb, 0xaaf6, 1},
+		{0xab01, 0xab06, 1},
+		{0xab09, 0xab0e, 1},
+		{0xab11, 0xab16, 1},
+		{0xab20, 0xab26, 1},
+		{0xab28, 0xab2e, 1},
+		{0xabc0, 0xabed, 1},
+		{0xabf0, 0xabf9, 1},
+		{0xac00, 0xd7a3, 1},
+		{0xd7b0, 0xd7c6, 1},
+		{0xd7cb, 0xd7fb, 1},
+		{0xd800, 0xfa6d, 1},
+		{0xfa70, 0xfad9, 1},
+		{0xfb00, 0xfb06, 1},
+		{0xfb13, 0xfb17, 1},
+		{0xfb1d, 0xfb36, 1},
+		{0xfb38, 0xfb3c, 1},
+		{0xfb3e, 0xfb40, 2},
+		{0xfb41, 0xfb43, 2},
+		{0xfb44, 0xfb46, 2},
+		{0xfb47, 0xfbc1, 1},
+		{0xfbd3, 0xfd3f, 1},
+		{0xfd50, 0xfd8f, 1},
+		{0xfd92, 0xfdc7, 1},
+		{0xfdf0, 0xfdfd, 1},
+		{0xfe00, 0xfe19, 1},
+		{0xfe20, 0xfe26, 1},
+		{0xfe30, 0xfe52, 1},
+		{0xfe54, 0xfe66, 1},
+		{0xfe68, 0xfe6b, 1},
+		{0xfe70, 0xfe74, 1},
+		{0xfe76, 0xfefc, 1},
+		{0xfeff, 0xff01, 2},
+		{0xff02, 0xffbe, 1},
+		{0xffc2, 0xffc7, 1},
+		{0xffca, 0xffcf, 1},
+		{0xffd2, 0xffd7, 1},
+		{0xffda, 0xffdc, 1},
+		{0xffe0, 0xffe6, 1},
+		{0xffe8, 0xffee, 1},
+		{0xfff9, 0xfffd, 1},
+	},
+	R32: []unicode.Range32{
+		{0x00010000, 0x0001000b, 1},
+		{0x0001000d, 0x00010026, 1},
+		{0x00010028, 0x0001003a, 1},
+		{0x0001003c, 0x0001003d, 1},
+		{0x0001003f, 0x0001004d, 1},
+		{0x00010050, 0x0001005d, 1},
+		{0x00010080, 0x000100fa, 1},
+		{0x00010100, 0x00010102, 1},
+		{0x00010107, 0x00010133, 1},
+		{0x00010137, 0x0001018a, 1},
+		{0x00010190, 0x0001019b, 1},
+		{0x000101d0, 0x000101fd, 1},
+		{0x00010280, 0x0001029c, 1},
+		{0x000102a0, 0x000102d0, 1},
+		{0x00010300, 0x0001031e, 1},
+		{0x00010320, 0x00010323, 1},
+		{0x00010330, 0x0001034a, 1},
+		{0x00010380, 0x0001039d, 1},
+		{0x0001039f, 0x000103c3, 1},
+		{0x000103c8, 0x000103d5, 1},
+		{0x00010400, 0x0001049d, 1},
+		{0x000104a0, 0x000104a9, 1},
+		{0x00010800, 0x00010805, 1},
+		{0x00010808, 0x0001080a, 2},
+		{0x0001080b, 0x00010835, 1},
+		{0x00010837, 0x00010838, 1},
+		{0x0001083c, 0x0001083f, 3},
+		{0x00010840, 0x00010855, 1},
+		{0x00010857, 0x0001085f, 1},
+		{0x00010900, 0x0001091b, 1},
+		{0x0001091f, 0x00010939, 1},
+		{0x0001093f, 0x00010980, 65},
+		{0x00010981, 0x000109b7, 1},
+		{0x000109be, 0x000109bf, 1},
+		{0x00010a00, 0x00010a03, 1},
+		{0x00010a05, 0x00010a06, 1},
+		{0x00010a0c, 0x00010a13, 1},
+		{0x00010a15, 0x00010a17, 1},
+		{0x00010a19, 0x00010a33, 1},
+		{0x00010a38, 0x00010a3a, 1},
+		{0x00010a3f, 0x00010a47, 1},
+		{0x00010a50, 0x00010a58, 1},
+		{0x00010a60, 0x00010a7f, 1},
+		{0x00010b00, 0x00010b35, 1},
+		{0x00010b39, 0x00010b55, 1},
+		{0x00010b58, 0x00010b72, 1},
+		{0x00010b78, 0x00010b7f, 1},
+		{0x00010c00, 0x00010c48, 1},
+		{0x00010e60, 0x00010e7e, 1},
+		{0x00011000, 0x0001104d, 1},
+		{0x00011052, 0x0001106f, 1},
+		{0x00011080, 0x000110c1, 1},
+		{0x000110d0, 0x000110e8, 1},
+		{0x000110f0, 0x000110f9, 1},
+		{0x00011100, 0x00011134, 1},
+		{0x00011136, 0x00011143, 1},
+		{0x00011180, 0x000111c8, 1},
+		{0x000111d0, 0x000111d9, 1},
+		{0x00011680, 0x000116b7, 1},
+		{0x000116c0, 0x000116c9, 1},
+		{0x00012000, 0x0001236e, 1},
+		{0x00012400, 0x00012462, 1},
+		{0x00012470, 0x00012473, 1},
+		{0x00013000, 0x0001342e, 1},
+		{0x00016800, 0x00016a38, 1},
+		{0x00016f00, 0x00016f44, 1},
+		{0x00016f50, 0x00016f7e, 1},
+		{0x00016f8f, 0x00016f9f, 1},
+		{0x0001b000, 0x0001b001, 1},
+		{0x0001d000, 0x0001d0f5, 1},
+		{0x0001d100, 0x0001d126, 1},
+		{0x0001d129, 0x0001d1dd, 1},
+		{0x0001d200, 0x0001d245, 1},
+		{0x0001d300, 0x0001d356, 1},
+		{0x0001d360, 0x0001d371, 1},
+		{0x0001d400, 0x0001d454, 1},
+		{0x0001d456, 0x0001d49c, 1},
+		{0x0001d49e, 0x0001d49f, 1},
+		{0x0001d4a2, 0x0001d4a5, 3},
+		{0x0001d4a6, 0x0001d4a9, 3},
+		{0x0001d4aa, 0x0001d4ac, 1},
+		{0x0001d4ae, 0x0001d4b9, 1},
+		{0x0001d4bb, 0x0001d4bd, 2},
+		{0x0001d4be, 0x0001d4c3, 1},
+		{0x0001d4c5, 0x0001d505, 1},
+		{0x0001d507, 0x0001d50a, 1},
+		{0x0001d50d, 0x0001d514, 1},
+		{0x0001d516, 0x0001d51c, 1},
+		{0x0001d51e, 0x0001d539, 1},
+		{0x0001d53b, 0x0001d53e, 1},
+		{0x0001d540, 0x0001d544, 1},
+		{0x0001d546, 0x0001d54a, 4},
+		{0x0001d54b, 0x0001d550, 1},
+		{0x0001d552, 0x0001d6a5, 1},
+		{0x0001d6a8, 0x0001d7cb, 1},
+		{0x0001d7ce, 0x0001d7ff, 1},
+		{0x0001ee00, 0x0001ee03, 1},
+		{0x0001ee05, 0x0001ee1f, 1},
+		{0x0001ee21, 0x0001ee22, 1},
+		{0x0001ee24, 0x0001ee27, 3},
+		{0x0001ee29, 0x0001ee32, 1},
+		{0x0001ee34, 0x0001ee37, 1},
+		{0x0001ee39, 0x0001ee3b, 2},
+		{0x0001ee42, 0x0001ee47, 5},
+		{0x0001ee49, 0x0001ee4d, 2},
+		{0x0001ee4e, 0x0001ee4f, 1},
+		{0x0001ee51, 0x0001ee52, 1},
+		{0x0001ee54, 0x0001ee57, 3},
+		{0x0001ee59, 0x0001ee61, 2},
+		{0x0001ee62, 0x0001ee64, 2},
+		{0x0001ee67, 0x0001ee6a, 1},
+		{0x0001ee6c, 0x0001ee72, 1},
+		{0x0001ee74, 0x0001ee77, 1},
+		{0x0001ee79, 0x0001ee7c, 1},
+		{0x0001ee7e, 0x0001ee80, 2},
+		{0x0001ee81, 0x0001ee89, 1},
+		{0x0001ee8b, 0x0001ee9b, 1},
+		{0x0001eea1, 0x0001eea3, 1},
+		{0x0001eea5, 0x0001eea9, 1},
+		{0x0001eeab, 0x0001eebb, 1},
+		{0x0001eef0, 0x0001eef1, 1},
+		{0x0001f000, 0x0001f02b, 1},
+		{0x0001f030, 0x0001f093, 1},
+		{0x0001f0a0, 0x0001f0ae, 1},
+		{0x0001f0b1, 0x0001f0be, 1},
+		{0x0001f0c1, 0x0001f0cf, 1},
+		{0x0001f0d1, 0x0001f0df, 1},
+		{0x0001f100, 0x0001f10a, 1},
+		{0x0001f110, 0x0001f12e, 1},
+		{0x0001f130, 0x0001f16b, 1},
+		{0x0001f170, 0x0001f19a, 1},
+		{0x0001f1e6, 0x0001f202, 1},
+		{0x0001f210, 0x0001f23a, 1},
+		{0x0001f240, 0x0001f248, 1},
+		{0x0001f250, 0x0001f251, 1},
+		{0x0001f300, 0x0001f320, 1},
+		{0x0001f330, 0x0001f335, 1},
+		{0x0001f337, 0x0001f37c, 1},
+		{0x0001f380, 0x0001f393, 1},
+		{0x0001f3a0, 0x0001f3c4, 1},
+		{0x0001f3c6, 0x0001f3ca, 1},
+		{0x0001f3e0, 0x0001f3f0, 1},
+		{0x0001f400, 0x0001f43e, 1},
+		{0x0001f440, 0x0001f442, 2},
+		{0x0001f443, 0x0001f4f7, 1},
+		{0x0001f4f9, 0x0001f4fc, 1},
+		{0x0001f500, 0x0001f53d, 1},
+		{0x0001f540, 0x0001f543, 1},
+		{0x0001f550, 0x0001f567, 1},
+		{0x0001f5fb, 0x0001f640, 1},
+		{0x0001f645, 0x0001f64f, 1},
+		{0x0001f680, 0x0001f6c5, 1},
+		{0x0001f700, 0x0001f773, 1},
+		{0x00020000, 0x0002a6d6, 1},
+		{0x0002a700, 0x0002b734, 1},
+		{0x0002b740, 0x0002b81d, 1},
+		{0x0002f800, 0x0002fa1d, 1},
+		{0x000e0001, 0x000e0020, 31},
+		{0x000e0021, 0x000e007f, 1},
+		{0x000e0100, 0x000e01ef, 1},
+		{0x000f0000, 0x000ffffd, 1},
+		{0x00100000, 0x0010fffd, 1},
+	},
+	LatinOffset: 0,
+}
+
+// size 4160 bytes (4 KiB)
+var assigned6_3_0 = &unicode.RangeTable{
+	R16: []unicode.Range16{
+		{0x0000, 0x0377, 1},
+		{0x037a, 0x037e, 1},
+		{0x0384, 0x038a, 1},
+		{0x038c, 0x038e, 2},
+		{0x038f, 0x03a1, 1},
+		{0x03a3, 0x0527, 1},
+		{0x0531, 0x0556, 1},
+		{0x0559, 0x055f, 1},
+		{0x0561, 0x0587, 1},
+		{0x0589, 0x058a, 1},
+		{0x058f, 0x0591, 2},
+		{0x0592, 0x05c7, 1},
+		{0x05d0, 0x05ea, 1},
+		{0x05f0, 0x05f4, 1},
+		{0x0600, 0x0604, 1},
+		{0x0606, 0x061c, 1},
+		{0x061e, 0x070d, 1},
+		{0x070f, 0x074a, 1},
+		{0x074d, 0x07b1, 1},
+		{0x07c0, 0x07fa, 1},
+		{0x0800, 0x082d, 1},
+		{0x0830, 0x083e, 1},
+		{0x0840, 0x085b, 1},
+		{0x085e, 0x08a0, 66},
+		{0x08a2, 0x08ac, 1},
+		{0x08e4, 0x08fe, 1},
+		{0x0900, 0x0977, 1},
+		{0x0979, 0x097f, 1},
+		{0x0981, 0x0983, 1},
+		{0x0985, 0x098c, 1},
+		{0x098f, 0x0990, 1},
+		{0x0993, 0x09a8, 1},
+		{0x09aa, 0x09b0, 1},
+		{0x09b2, 0x09b6, 4},
+		{0x09b7, 0x09b9, 1},
+		{0x09bc, 0x09c4, 1},
+		{0x09c7, 0x09c8, 1},
+		{0x09cb, 0x09ce, 1},
+		{0x09d7, 0x09dc, 5},
+		{0x09dd, 0x09df, 2},
+		{0x09e0, 0x09e3, 1},
+		{0x09e6, 0x09fb, 1},
+		{0x0a01, 0x0a03, 1},
+		{0x0a05, 0x0a0a, 1},
+		{0x0a0f, 0x0a10, 1},
+		{0x0a13, 0x0a28, 1},
+		{0x0a2a, 0x0a30, 1},
+		{0x0a32, 0x0a33, 1},
+		{0x0a35, 0x0a36, 1},
+		{0x0a38, 0x0a39, 1},
+		{0x0a3c, 0x0a3e, 2},
+		{0x0a3f, 0x0a42, 1},
+		{0x0a47, 0x0a48, 1},
+		{0x0a4b, 0x0a4d, 1},
+		{0x0a51, 0x0a59, 8},
+		{0x0a5a, 0x0a5c, 1},
+		{0x0a5e, 0x0a66, 8},
+		{0x0a67, 0x0a75, 1},
+		{0x0a81, 0x0a83, 1},
+		{0x0a85, 0x0a8d, 1},
+		{0x0a8f, 0x0a91, 1},
+		{0x0a93, 0x0aa8, 1},
+		{0x0aaa, 0x0ab0, 1},
+		{0x0ab2, 0x0ab3, 1},
+		{0x0ab5, 0x0ab9, 1},
+		{0x0abc, 0x0ac5, 1},
+		{0x0ac7, 0x0ac9, 1},
+		{0x0acb, 0x0acd, 1},
+		{0x0ad0, 0x0ae0, 16},
+		{0x0ae1, 0x0ae3, 1},
+		{0x0ae6, 0x0af1, 1},
+		{0x0b01, 0x0b03, 1},
+		{0x0b05, 0x0b0c, 1},
+		{0x0b0f, 0x0b10, 1},
+		{0x0b13, 0x0b28, 1},
+		{0x0b2a, 0x0b30, 1},
+		{0x0b32, 0x0b33, 1},
+		{0x0b35, 0x0b39, 1},
+		{0x0b3c, 0x0b44, 1},
+		{0x0b47, 0x0b48, 1},
+		{0x0b4b, 0x0b4d, 1},
+		{0x0b56, 0x0b57, 1},
+		{0x0b5c, 0x0b5d, 1},
+		{0x0b5f, 0x0b63, 1},
+		{0x0b66, 0x0b77, 1},
+		{0x0b82, 0x0b83, 1},
+		{0x0b85, 0x0b8a, 1},
+		{0x0b8e, 0x0b90, 1},
+		{0x0b92, 0x0b95, 1},
+		{0x0b99, 0x0b9a, 1},
+		{0x0b9c, 0x0b9e, 2},
+		{0x0b9f, 0x0ba3, 4},
+		{0x0ba4, 0x0ba8, 4},
+		{0x0ba9, 0x0baa, 1},
+		{0x0bae, 0x0bb9, 1},
+		{0x0bbe, 0x0bc2, 1},
+		{0x0bc6, 0x0bc8, 1},
+		{0x0bca, 0x0bcd, 1},
+		{0x0bd0, 0x0bd7, 7},
+		{0x0be6, 0x0bfa, 1},
+		{0x0c01, 0x0c03, 1},
+		{0x0c05, 0x0c0c, 1},
+		{0x0c0e, 0x0c10, 1},
+		{0x0c12, 0x0c28, 1},
+		{0x0c2a, 0x0c33, 1},
+		{0x0c35, 0x0c39, 1},
+		{0x0c3d, 0x0c44, 1},
+		{0x0c46, 0x0c48, 1},
+		{0x0c4a, 0x0c4d, 1},
+		{0x0c55, 0x0c56, 1},
+		{0x0c58, 0x0c59, 1},
+		{0x0c60, 0x0c63, 1},
+		{0x0c66, 0x0c6f, 1},
+		{0x0c78, 0x0c7f, 1},
+		{0x0c82, 0x0c83, 1},
+		{0x0c85, 0x0c8c, 1},
+		{0x0c8e, 0x0c90, 1},
+		{0x0c92, 0x0ca8, 1},
+		{0x0caa, 0x0cb3, 1},
+		{0x0cb5, 0x0cb9, 1},
+		{0x0cbc, 0x0cc4, 1},
+		{0x0cc6, 0x0cc8, 1},
+		{0x0cca, 0x0ccd, 1},
+		{0x0cd5, 0x0cd6, 1},
+		{0x0cde, 0x0ce0, 2},
+		{0x0ce1, 0x0ce3, 1},
+		{0x0ce6, 0x0cef, 1},
+		{0x0cf1, 0x0cf2, 1},
+		{0x0d02, 0x0d03, 1},
+		{0x0d05, 0x0d0c, 1},
+		{0x0d0e, 0x0d10, 1},
+		{0x0d12, 0x0d3a, 1},
+		{0x0d3d, 0x0d44, 1},
+		{0x0d46, 0x0d48, 1},
+		{0x0d4a, 0x0d4e, 1},
+		{0x0d57, 0x0d60, 9},
+		{0x0d61, 0x0d63, 1},
+		{0x0d66, 0x0d75, 1},
+		{0x0d79, 0x0d7f, 1},
+		{0x0d82, 0x0d83, 1},
+		{0x0d85, 0x0d96, 1},
+		{0x0d9a, 0x0db1, 1},
+		{0x0db3, 0x0dbb, 1},
+		{0x0dbd, 0x0dc0, 3},
+		{0x0dc1, 0x0dc6, 1},
+		{0x0dca, 0x0dcf, 5},
+		{0x0dd0, 0x0dd4, 1},
+		{0x0dd6, 0x0dd8, 2},
+		{0x0dd9, 0x0ddf, 1},
+		{0x0df2, 0x0df4, 1},
+		{0x0e01, 0x0e3a, 1},
+		{0x0e3f, 0x0e5b, 1},
+		{0x0e81, 0x0e82, 1},
+		{0x0e84, 0x0e87, 3},
+		{0x0e88, 0x0e8a, 2},
+		{0x0e8d, 0x0e94, 7},
+		{0x0e95, 0x0e97, 1},
+		{0x0e99, 0x0e9f, 1},
+		{0x0ea1, 0x0ea3, 1},
+		{0x0ea5, 0x0ea7, 2},
+		{0x0eaa, 0x0eab, 1},
+		{0x0ead, 0x0eb9, 1},
+		{0x0ebb, 0x0ebd, 1},
+		{0x0ec0, 0x0ec4, 1},
+		{0x0ec6, 0x0ec8, 2},
+		{0x0ec9, 0x0ecd, 1},
+		{0x0ed0, 0x0ed9, 1},
+		{0x0edc, 0x0edf, 1},
+		{0x0f00, 0x0f47, 1},
+		{0x0f49, 0x0f6c, 1},
+		{0x0f71, 0x0f97, 1},
+		{0x0f99, 0x0fbc, 1},
+		{0x0fbe, 0x0fcc, 1},
+		{0x0fce, 0x0fda, 1},
+		{0x1000, 0x10c5, 1},
+		{0x10c7, 0x10cd, 6},
+		{0x10d0, 0x1248, 1},
+		{0x124a, 0x124d, 1},
+		{0x1250, 0x1256, 1},
+		{0x1258, 0x125a, 2},
+		{0x125b, 0x125d, 1},
+		{0x1260, 0x1288, 1},
+		{0x128a, 0x128d, 1},
+		{0x1290, 0x12b0, 1},
+		{0x12b2, 0x12b5, 1},
+		{0x12b8, 0x12be, 1},
+		{0x12c0, 0x12c2, 2},
+		{0x12c3, 0x12c5, 1},
+		{0x12c8, 0x12d6, 1},
+		{0x12d8, 0x1310, 1},
+		{0x1312, 0x1315, 1},
+		{0x1318, 0x135a, 1},
+		{0x135d, 0x137c, 1},
+		{0x1380, 0x1399, 1},
+		{0x13a0, 0x13f4, 1},
+		{0x1400, 0x169c, 1},
+		{0x16a0, 0x16f0, 1},
+		{0x1700, 0x170c, 1},
+		{0x170e, 0x1714, 1},
+		{0x1720, 0x1736, 1},
+		{0x1740, 0x1753, 1},
+		{0x1760, 0x176c, 1},
+		{0x176e, 0x1770, 1},
+		{0x1772, 0x1773, 1},
+		{0x1780, 0x17dd, 1},
+		{0x17e0, 0x17e9, 1},
+		{0x17f0, 0x17f9, 1},
+		{0x1800, 0x180e, 1},
+		{0x1810, 0x1819, 1},
+		{0x1820, 0x1877, 1},
+		{0x1880, 0x18aa, 1},
+		{0x18b0, 0x18f5, 1},
+		{0x1900, 0x191c, 1},
+		{0x1920, 0x192b, 1},
+		{0x1930, 0x193b, 1},
+		{0x1940, 0x1944, 4},
+		{0x1945, 0x196d, 1},
+		{0x1970, 0x1974, 1},
+		{0x1980, 0x19ab, 1},
+		{0x19b0, 0x19c9, 1},
+		{0x19d0, 0x19da, 1},
+		{0x19de, 0x1a1b, 1},
+		{0x1a1e, 0x1a5e, 1},
+		{0x1a60, 0x1a7c, 1},
+		{0x1a7f, 0x1a89, 1},
+		{0x1a90, 0x1a99, 1},
+		{0x1aa0, 0x1aad, 1},
+		{0x1b00, 0x1b4b, 1},
+		{0x1b50, 0x1b7c, 1},
+		{0x1b80, 0x1bf3, 1},
+		{0x1bfc, 0x1c37, 1},
+		{0x1c3b, 0x1c49, 1},
+		{0x1c4d, 0x1c7f, 1},
+		{0x1cc0, 0x1cc7, 1},
+		{0x1cd0, 0x1cf6, 1},
+		{0x1d00, 0x1de6, 1},
+		{0x1dfc, 0x1f15, 1},
+		{0x1f18, 0x1f1d, 1},
+		{0x1f20, 0x1f45, 1},
+		{0x1f48, 0x1f4d, 1},
+		{0x1f50, 0x1f57, 1},
+		{0x1f59, 0x1f5f, 2},
+		{0x1f60, 0x1f7d, 1},
+		{0x1f80, 0x1fb4, 1},
+		{0x1fb6, 0x1fc4, 1},
+		{0x1fc6, 0x1fd3, 1},
+		{0x1fd6, 0x1fdb, 1},
+		{0x1fdd, 0x1fef, 1},
+		{0x1ff2, 0x1ff4, 1},
+		{0x1ff6, 0x1ffe, 1},
+		{0x2000, 0x2064, 1},
+		{0x2066, 0x2071, 1},
+		{0x2074, 0x208e, 1},
+		{0x2090, 0x209c, 1},
+		{0x20a0, 0x20ba, 1},
+		{0x20d0, 0x20f0, 1},
+		{0x2100, 0x2189, 1},
+		{0x2190, 0x23f3, 1},
+		{0x2400, 0x2426, 1},
+		{0x2440, 0x244a, 1},
+		{0x2460, 0x26ff, 1},
+		{0x2701, 0x2b4c, 1},
+		{0x2b50, 0x2b59, 1},
+		{0x2c00, 0x2c2e, 1},
+		{0x2c30, 0x2c5e, 1},
+		{0x2c60, 0x2cf3, 1},
+		{0x2cf9, 0x2d25, 1},
+		{0x2d27, 0x2d2d, 6},
+		{0x2d30, 0x2d67, 1},
+		{0x2d6f, 0x2d70, 1},
+		{0x2d7f, 0x2d96, 1},
+		{0x2da0, 0x2da6, 1},
+		{0x2da8, 0x2dae, 1},
+		{0x2db0, 0x2db6, 1},
+		{0x2db8, 0x2dbe, 1},
+		{0x2dc0, 0x2dc6, 1},
+		{0x2dc8, 0x2dce, 1},
+		{0x2dd0, 0x2dd6, 1},
+		{0x2dd8, 0x2dde, 1},
+		{0x2de0, 0x2e3b, 1},
+		{0x2e80, 0x2e99, 1},
+		{0x2e9b, 0x2ef3, 1},
+		{0x2f00, 0x2fd5, 1},
+		{0x2ff0, 0x2ffb, 1},
+		{0x3000, 0x303f, 1},
+		{0x3041, 0x3096, 1},
+		{0x3099, 0x30ff, 1},
+		{0x3105, 0x312d, 1},
+		{0x3131, 0x318e, 1},
+		{0x3190, 0x31ba, 1},
+		{0x31c0, 0x31e3, 1},
+		{0x31f0, 0x321e, 1},
+		{0x3220, 0x32fe, 1},
+		{0x3300, 0x4db5, 1},
+		{0x4dc0, 0x9fcc, 1},
+		{0xa000, 0xa48c, 1},
+		{0xa490, 0xa4c6, 1},
+		{0xa4d0, 0xa62b, 1},
+		{0xa640, 0xa697, 1},
+		{0xa69f, 0xa6f7, 1},
+		{0xa700, 0xa78e, 1},
+		{0xa790, 0xa793, 1},
+		{0xa7a0, 0xa7aa, 1},
+		{0xa7f8, 0xa82b, 1},
+		{0xa830, 0xa839, 1},
+		{0xa840, 0xa877, 1},
+		{0xa880, 0xa8c4, 1},
+		{0xa8ce, 0xa8d9, 1},
+		{0xa8e0, 0xa8fb, 1},
+		{0xa900, 0xa953, 1},
+		{0xa95f, 0xa97c, 1},
+		{0xa980, 0xa9cd, 1},
+		{0xa9cf, 0xa9d9, 1},
+		{0xa9de, 0xa9df, 1},
+		{0xaa00, 0xaa36, 1},
+		{0xaa40, 0xaa4d, 1},
+		{0xaa50, 0xaa59, 1},
+		{0xaa5c, 0xaa7b, 1},
+		{0xaa80, 0xaac2, 1},
+		{0xaadb, 0xaaf6, 1},
+		{0xab01, 0xab06, 1},
+		{0xab09, 0xab0e, 1},
+		{0xab11, 0xab16, 1},
+		{0xab20, 0xab26, 1},
+		{0xab28, 0xab2e, 1},
+		{0xabc0, 0xabed, 1},
+		{0xabf0, 0xabf9, 1},
+		{0xac00, 0xd7a3, 1},
+		{0xd7b0, 0xd7c6, 1},
+		{0xd7cb, 0xd7fb, 1},
+		{0xd800, 0xfa6d, 1},
+		{0xfa70, 0xfad9, 1},
+		{0xfb00, 0xfb06, 1},
+		{0xfb13, 0xfb17, 1},
+		{0xfb1d, 0xfb36, 1},
+		{0xfb38, 0xfb3c, 1},
+		{0xfb3e, 0xfb40, 2},
+		{0xfb41, 0xfb43, 2},
+		{0xfb44, 0xfb46, 2},
+		{0xfb47, 0xfbc1, 1},
+		{0xfbd3, 0xfd3f, 1},
+		{0xfd50, 0xfd8f, 1},
+		{0xfd92, 0xfdc7, 1},
+		{0xfdf0, 0xfdfd, 1},
+		{0xfe00, 0xfe19, 1},
+		{0xfe20, 0xfe26, 1},
+		{0xfe30, 0xfe52, 1},
+		{0xfe54, 0xfe66, 1},
+		{0xfe68, 0xfe6b, 1},
+		{0xfe70, 0xfe74, 1},
+		{0xfe76, 0xfefc, 1},
+		{0xfeff, 0xff01, 2},
+		{0xff02, 0xffbe, 1},
+		{0xffc2, 0xffc7, 1},
+		{0xffca, 0xffcf, 1},
+		{0xffd2, 0xffd7, 1},
+		{0xffda, 0xffdc, 1},
+		{0xffe0, 0xffe6, 1},
+		{0xffe8, 0xffee, 1},
+		{0xfff9, 0xfffd, 1},
+	},
+	R32: []unicode.Range32{
+		{0x00010000, 0x0001000b, 1},
+		{0x0001000d, 0x00010026, 1},
+		{0x00010028, 0x0001003a, 1},
+		{0x0001003c, 0x0001003d, 1},
+		{0x0001003f, 0x0001004d, 1},
+		{0x00010050, 0x0001005d, 1},
+		{0x00010080, 0x000100fa, 1},
+		{0x00010100, 0x00010102, 1},
+		{0x00010107, 0x00010133, 1},
+		{0x00010137, 0x0001018a, 1},
+		{0x00010190, 0x0001019b, 1},
+		{0x000101d0, 0x000101fd, 1},
+		{0x00010280, 0x0001029c, 1},
+		{0x000102a0, 0x000102d0, 1},
+		{0x00010300, 0x0001031e, 1},
+		{0x00010320, 0x00010323, 1},
+		{0x00010330, 0x0001034a, 1},
+		{0x00010380, 0x0001039d, 1},
+		{0x0001039f, 0x000103c3, 1},
+		{0x000103c8, 0x000103d5, 1},
+		{0x00010400, 0x0001049d, 1},
+		{0x000104a0, 0x000104a9, 1},
+		{0x00010800, 0x00010805, 1},
+		{0x00010808, 0x0001080a, 2},
+		{0x0001080b, 0x00010835, 1},
+		{0x00010837, 0x00010838, 1},
+		{0x0001083c, 0x0001083f, 3},
+		{0x00010840, 0x00010855, 1},
+		{0x00010857, 0x0001085f, 1},
+		{0x00010900, 0x0001091b, 1},
+		{0x0001091f, 0x00010939, 1},
+		{0x0001093f, 0x00010980, 65},
+		{0x00010981, 0x000109b7, 1},
+		{0x000109be, 0x000109bf, 1},
+		{0x00010a00, 0x00010a03, 1},
+		{0x00010a05, 0x00010a06, 1},
+		{0x00010a0c, 0x00010a13, 1},
+		{0x00010a15, 0x00010a17, 1},
+		{0x00010a19, 0x00010a33, 1},
+		{0x00010a38, 0x00010a3a, 1},
+		{0x00010a3f, 0x00010a47, 1},
+		{0x00010a50, 0x00010a58, 1},
+		{0x00010a60, 0x00010a7f, 1},
+		{0x00010b00, 0x00010b35, 1},
+		{0x00010b39, 0x00010b55, 1},
+		{0x00010b58, 0x00010b72, 1},
+		{0x00010b78, 0x00010b7f, 1},
+		{0x00010c00, 0x00010c48, 1},
+		{0x00010e60, 0x00010e7e, 1},
+		{0x00011000, 0x0001104d, 1},
+		{0x00011052, 0x0001106f, 1},
+		{0x00011080, 0x000110c1, 1},
+		{0x000110d0, 0x000110e8, 1},
+		{0x000110f0, 0x000110f9, 1},
+		{0x00011100, 0x00011134, 1},
+		{0x00011136, 0x00011143, 1},
+		{0x00011180, 0x000111c8, 1},
+		{0x000111d0, 0x000111d9, 1},
+		{0x00011680, 0x000116b7, 1},
+		{0x000116c0, 0x000116c9, 1},
+		{0x00012000, 0x0001236e, 1},
+		{0x00012400, 0x00012462, 1},
+		{0x00012470, 0x00012473, 1},
+		{0x00013000, 0x0001342e, 1},
+		{0x00016800, 0x00016a38, 1},
+		{0x00016f00, 0x00016f44, 1},
+		{0x00016f50, 0x00016f7e, 1},
+		{0x00016f8f, 0x00016f9f, 1},
+		{0x0001b000, 0x0001b001, 1},
+		{0x0001d000, 0x0001d0f5, 1},
+		{0x0001d100, 0x0001d126, 1},
+		{0x0001d129, 0x0001d1dd, 1},
+		{0x0001d200, 0x0001d245, 1},
+		{0x0001d300, 0x0001d356, 1},
+		{0x0001d360, 0x0001d371, 1},
+		{0x0001d400, 0x0001d454, 1},
+		{0x0001d456, 0x0001d49c, 1},
+		{0x0001d49e, 0x0001d49f, 1},
+		{0x0001d4a2, 0x0001d4a5, 3},
+		{0x0001d4a6, 0x0001d4a9, 3},
+		{0x0001d4aa, 0x0001d4ac, 1},
+		{0x0001d4ae, 0x0001d4b9, 1},
+		{0x0001d4bb, 0x0001d4bd, 2},
+		{0x0001d4be, 0x0001d4c3, 1},
+		{0x0001d4c5, 0x0001d505, 1},
+		{0x0001d507, 0x0001d50a, 1},
+		{0x0001d50d, 0x0001d514, 1},
+		{0x0001d516, 0x0001d51c, 1},
+		{0x0001d51e, 0x0001d539, 1},
+		{0x0001d53b, 0x0001d53e, 1},
+		{0x0001d540, 0x0001d544, 1},
+		{0x0001d546, 0x0001d54a, 4},
+		{0x0001d54b, 0x0001d550, 1},
+		{0x0001d552, 0x0001d6a5, 1},
+		{0x0001d6a8, 0x0001d7cb, 1},
+		{0x0001d7ce, 0x0001d7ff, 1},
+		{0x0001ee00, 0x0001ee03, 1},
+		{0x0001ee05, 0x0001ee1f, 1},
+		{0x0001ee21, 0x0001ee22, 1},
+		{0x0001ee24, 0x0001ee27, 3},
+		{0x0001ee29, 0x0001ee32, 1},
+		{0x0001ee34, 0x0001ee37, 1},
+		{0x0001ee39, 0x0001ee3b, 2},
+		{0x0001ee42, 0x0001ee47, 5},
+		{0x0001ee49, 0x0001ee4d, 2},
+		{0x0001ee4e, 0x0001ee4f, 1},
+		{0x0001ee51, 0x0001ee52, 1},
+		{0x0001ee54, 0x0001ee57, 3},
+		{0x0001ee59, 0x0001ee61, 2},
+		{0x0001ee62, 0x0001ee64, 2},
+		{0x0001ee67, 0x0001ee6a, 1},
+		{0x0001ee6c, 0x0001ee72, 1},
+		{0x0001ee74, 0x0001ee77, 1},
+		{0x0001ee79, 0x0001ee7c, 1},
+		{0x0001ee7e, 0x0001ee80, 2},
+		{0x0001ee81, 0x0001ee89, 1},
+		{0x0001ee8b, 0x0001ee9b, 1},
+		{0x0001eea1, 0x0001eea3, 1},
+		{0x0001eea5, 0x0001eea9, 1},
+		{0x0001eeab, 0x0001eebb, 1},
+		{0x0001eef0, 0x0001eef1, 1},
+		{0x0001f000, 0x0001f02b, 1},
+		{0x0001f030, 0x0001f093, 1},
+		{0x0001f0a0, 0x0001f0ae, 1},
+		{0x0001f0b1, 0x0001f0be, 1},
+		{0x0001f0c1, 0x0001f0cf, 1},
+		{0x0001f0d1, 0x0001f0df, 1},
+		{0x0001f100, 0x0001f10a, 1},
+		{0x0001f110, 0x0001f12e, 1},
+		{0x0001f130, 0x0001f16b, 1},
+		{0x0001f170, 0x0001f19a, 1},
+		{0x0001f1e6, 0x0001f202, 1},
+		{0x0001f210, 0x0001f23a, 1},
+		{0x0001f240, 0x0001f248, 1},
+		{0x0001f250, 0x0001f251, 1},
+		{0x0001f300, 0x0001f320, 1},
+		{0x0001f330, 0x0001f335, 1},
+		{0x0001f337, 0x0001f37c, 1},
+		{0x0001f380, 0x0001f393, 1},
+		{0x0001f3a0, 0x0001f3c4, 1},
+		{0x0001f3c6, 0x0001f3ca, 1},
+		{0x0001f3e0, 0x0001f3f0, 1},
+		{0x0001f400, 0x0001f43e, 1},
+		{0x0001f440, 0x0001f442, 2},
+		{0x0001f443, 0x0001f4f7, 1},
+		{0x0001f4f9, 0x0001f4fc, 1},
+		{0x0001f500, 0x0001f53d, 1},
+		{0x0001f540, 0x0001f543, 1},
+		{0x0001f550, 0x0001f567, 1},
+		{0x0001f5fb, 0x0001f640, 1},
+		{0x0001f645, 0x0001f64f, 1},
+		{0x0001f680, 0x0001f6c5, 1},
+		{0x0001f700, 0x0001f773, 1},
+		{0x00020000, 0x0002a6d6, 1},
+		{0x0002a700, 0x0002b734, 1},
+		{0x0002b740, 0x0002b81d, 1},
+		{0x0002f800, 0x0002fa1d, 1},
+		{0x000e0001, 0x000e0020, 31},
+		{0x000e0021, 0x000e007f, 1},
+		{0x000e0100, 0x000e01ef, 1},
+		{0x000f0000, 0x000ffffd, 1},
+		{0x00100000, 0x0010fffd, 1},
+	},
+	LatinOffset: 0,
+}
+
+// size 4898 bytes (4 KiB)
+var assigned7_0_0 = &unicode.RangeTable{
+	R16: []unicode.Range16{
+		{0x0000, 0x0377, 1},
+		{0x037a, 0x037f, 1},
+		{0x0384, 0x038a, 1},
+		{0x038c, 0x038e, 2},
+		{0x038f, 0x03a1, 1},
+		{0x03a3, 0x052f, 1},
+		{0x0531, 0x0556, 1},
+		{0x0559, 0x055f, 1},
+		{0x0561, 0x0587, 1},
+		{0x0589, 0x058a, 1},
+		{0x058d, 0x058f, 1},
+		{0x0591, 0x05c7, 1},
+		{0x05d0, 0x05ea, 1},
+		{0x05f0, 0x05f4, 1},
+		{0x0600, 0x061c, 1},
+		{0x061e, 0x070d, 1},
+		{0x070f, 0x074a, 1},
+		{0x074d, 0x07b1, 1},
+		{0x07c0, 0x07fa, 1},
+		{0x0800, 0x082d, 1},
+		{0x0830, 0x083e, 1},
+		{0x0840, 0x085b, 1},
+		{0x085e, 0x08a0, 66},
+		{0x08a1, 0x08b2, 1},
+		{0x08e4, 0x0983, 1},
+		{0x0985, 0x098c, 1},
+		{0x098f, 0x0990, 1},
+		{0x0993, 0x09a8, 1},
+		{0x09aa, 0x09b0, 1},
+		{0x09b2, 0x09b6, 4},
+		{0x09b7, 0x09b9, 1},
+		{0x09bc, 0x09c4, 1},
+		{0x09c7, 0x09c8, 1},
+		{0x09cb, 0x09ce, 1},
+		{0x09d7, 0x09dc, 5},
+		{0x09dd, 0x09df, 2},
+		{0x09e0, 0x09e3, 1},
+		{0x09e6, 0x09fb, 1},
+		{0x0a01, 0x0a03, 1},
+		{0x0a05, 0x0a0a, 1},
+		{0x0a0f, 0x0a10, 1},
+		{0x0a13, 0x0a28, 1},
+		{0x0a2a, 0x0a30, 1},
+		{0x0a32, 0x0a33, 1},
+		{0x0a35, 0x0a36, 1},
+		{0x0a38, 0x0a39, 1},
+		{0x0a3c, 0x0a3e, 2},
+		{0x0a3f, 0x0a42, 1},
+		{0x0a47, 0x0a48, 1},
+		{0x0a4b, 0x0a4d, 1},
+		{0x0a51, 0x0a59, 8},
+		{0x0a5a, 0x0a5c, 1},
+		{0x0a5e, 0x0a66, 8},
+		{0x0a67, 0x0a75, 1},
+		{0x0a81, 0x0a83, 1},
+		{0x0a85, 0x0a8d, 1},
+		{0x0a8f, 0x0a91, 1},
+		{0x0a93, 0x0aa8, 1},
+		{0x0aaa, 0x0ab0, 1},
+		{0x0ab2, 0x0ab3, 1},
+		{0x0ab5, 0x0ab9, 1},
+		{0x0abc, 0x0ac5, 1},
+		{0x0ac7, 0x0ac9, 1},
+		{0x0acb, 0x0acd, 1},
+		{0x0ad0, 0x0ae0, 16},
+		{0x0ae1, 0x0ae3, 1},
+		{0x0ae6, 0x0af1, 1},
+		{0x0b01, 0x0b03, 1},
+		{0x0b05, 0x0b0c, 1},
+		{0x0b0f, 0x0b10, 1},
+		{0x0b13, 0x0b28, 1},
+		{0x0b2a, 0x0b30, 1},
+		{0x0b32, 0x0b33, 1},
+		{0x0b35, 0x0b39, 1},
+		{0x0b3c, 0x0b44, 1},
+		{0x0b47, 0x0b48, 1},
+		{0x0b4b, 0x0b4d, 1},
+		{0x0b56, 0x0b57, 1},
+		{0x0b5c, 0x0b5d, 1},
+		{0x0b5f, 0x0b63, 1},
+		{0x0b66, 0x0b77, 1},
+		{0x0b82, 0x0b83, 1},
+		{0x0b85, 0x0b8a, 1},
+		{0x0b8e, 0x0b90, 1},
+		{0x0b92, 0x0b95, 1},
+		{0x0b99, 0x0b9a, 1},
+		{0x0b9c, 0x0b9e, 2},
+		{0x0b9f, 0x0ba3, 4},
+		{0x0ba4, 0x0ba8, 4},
+		{0x0ba9, 0x0baa, 1},
+		{0x0bae, 0x0bb9, 1},
+		{0x0bbe, 0x0bc2, 1},
+		{0x0bc6, 0x0bc8, 1},
+		{0x0bca, 0x0bcd, 1},
+		{0x0bd0, 0x0bd7, 7},
+		{0x0be6, 0x0bfa, 1},
+		{0x0c00, 0x0c03, 1},
+		{0x0c05, 0x0c0c, 1},
+		{0x0c0e, 0x0c10, 1},
+		{0x0c12, 0x0c28, 1},
+		{0x0c2a, 0x0c39, 1},
+		{0x0c3d, 0x0c44, 1},
+		{0x0c46, 0x0c48, 1},
+		{0x0c4a, 0x0c4d, 1},
+		{0x0c55, 0x0c56, 1},
+		{0x0c58, 0x0c59, 1},
+		{0x0c60, 0x0c63, 1},
+		{0x0c66, 0x0c6f, 1},
+		{0x0c78, 0x0c7f, 1},
+		{0x0c81, 0x0c83, 1},
+		{0x0c85, 0x0c8c, 1},
+		{0x0c8e, 0x0c90, 1},
+		{0x0c92, 0x0ca8, 1},
+		{0x0caa, 0x0cb3, 1},
+		{0x0cb5, 0x0cb9, 1},
+		{0x0cbc, 0x0cc4, 1},
+		{0x0cc6, 0x0cc8, 1},
+		{0x0cca, 0x0ccd, 1},
+		{0x0cd5, 0x0cd6, 1},
+		{0x0cde, 0x0ce0, 2},
+		{0x0ce1, 0x0ce3, 1},
+		{0x0ce6, 0x0cef, 1},
+		{0x0cf1, 0x0cf2, 1},
+		{0x0d01, 0x0d03, 1},
+		{0x0d05, 0x0d0c, 1},
+		{0x0d0e, 0x0d10, 1},
+		{0x0d12, 0x0d3a, 1},
+		{0x0d3d, 0x0d44, 1},
+		{0x0d46, 0x0d48, 1},
+		{0x0d4a, 0x0d4e, 1},
+		{0x0d57, 0x0d60, 9},
+		{0x0d61, 0x0d63, 1},
+		{0x0d66, 0x0d75, 1},
+		{0x0d79, 0x0d7f, 1},
+		{0x0d82, 0x0d83, 1},
+		{0x0d85, 0x0d96, 1},
+		{0x0d9a, 0x0db1, 1},
+		{0x0db3, 0x0dbb, 1},
+		{0x0dbd, 0x0dc0, 3},
+		{0x0dc1, 0x0dc6, 1},
+		{0x0dca, 0x0dcf, 5},
+		{0x0dd0, 0x0dd4, 1},
+		{0x0dd6, 0x0dd8, 2},
+		{0x0dd9, 0x0ddf, 1},
+		{0x0de6, 0x0def, 1},
+		{0x0df2, 0x0df4, 1},
+		{0x0e01, 0x0e3a, 1},
+		{0x0e3f, 0x0e5b, 1},
+		{0x0e81, 0x0e82, 1},
+		{0x0e84, 0x0e87, 3},
+		{0x0e88, 0x0e8a, 2},
+		{0x0e8d, 0x0e94, 7},
+		{0x0e95, 0x0e97, 1},
+		{0x0e99, 0x0e9f, 1},
+		{0x0ea1, 0x0ea3, 1},
+		{0x0ea5, 0x0ea7, 2},
+		{0x0eaa, 0x0eab, 1},
+		{0x0ead, 0x0eb9, 1},
+		{0x0ebb, 0x0ebd, 1},
+		{0x0ec0, 0x0ec4, 1},
+		{0x0ec6, 0x0ec8, 2},
+		{0x0ec9, 0x0ecd, 1},
+		{0x0ed0, 0x0ed9, 1},
+		{0x0edc, 0x0edf, 1},
+		{0x0f00, 0x0f47, 1},
+		{0x0f49, 0x0f6c, 1},
+		{0x0f71, 0x0f97, 1},
+		{0x0f99, 0x0fbc, 1},
+		{0x0fbe, 0x0fcc, 1},
+		{0x0fce, 0x0fda, 1},
+		{0x1000, 0x10c5, 1},
+		{0x10c7, 0x10cd, 6},
+		{0x10d0, 0x1248, 1},
+		{0x124a, 0x124d, 1},
+		{0x1250, 0x1256, 1},
+		{0x1258, 0x125a, 2},
+		{0x125b, 0x125d, 1},
+		{0x1260, 0x1288, 1},
+		{0x128a, 0x128d, 1},
+		{0x1290, 0x12b0, 1},
+		{0x12b2, 0x12b5, 1},
+		{0x12b8, 0x12be, 1},
+		{0x12c0, 0x12c2, 2},
+		{0x12c3, 0x12c5, 1},
+		{0x12c8, 0x12d6, 1},
+		{0x12d8, 0x1310, 1},
+		{0x1312, 0x1315, 1},
+		{0x1318, 0x135a, 1},
+		{0x135d, 0x137c, 1},
+		{0x1380, 0x1399, 1},
+		{0x13a0, 0x13f4, 1},
+		{0x1400, 0x169c, 1},
+		{0x16a0, 0x16f8, 1},
+		{0x1700, 0x170c, 1},
+		{0x170e, 0x1714, 1},
+		{0x1720, 0x1736, 1},
+		{0x1740, 0x1753, 1},
+		{0x1760, 0x176c, 1},
+		{0x176e, 0x1770, 1},
+		{0x1772, 0x1773, 1},
+		{0x1780, 0x17dd, 1},
+		{0x17e0, 0x17e9, 1},
+		{0x17f0, 0x17f9, 1},
+		{0x1800, 0x180e, 1},
+		{0x1810, 0x1819, 1},
+		{0x1820, 0x1877, 1},
+		{0x1880, 0x18aa, 1},
+		{0x18b0, 0x18f5, 1},
+		{0x1900, 0x191e, 1},
+		{0x1920, 0x192b, 1},
+		{0x1930, 0x193b, 1},
+		{0x1940, 0x1944, 4},
+		{0x1945, 0x196d, 1},
+		{0x1970, 0x1974, 1},
+		{0x1980, 0x19ab, 1},
+		{0x19b0, 0x19c9, 1},
+		{0x19d0, 0x19da, 1},
+		{0x19de, 0x1a1b, 1},
+		{0x1a1e, 0x1a5e, 1},
+		{0x1a60, 0x1a7c, 1},
+		{0x1a7f, 0x1a89, 1},
+		{0x1a90, 0x1a99, 1},
+		{0x1aa0, 0x1aad, 1},
+		{0x1ab0, 0x1abe, 1},
+		{0x1b00, 0x1b4b, 1},
+		{0x1b50, 0x1b7c, 1},
+		{0x1b80, 0x1bf3, 1},
+		{0x1bfc, 0x1c37, 1},
+		{0x1c3b, 0x1c49, 1},
+		{0x1c4d, 0x1c7f, 1},
+		{0x1cc0, 0x1cc7, 1},
+		{0x1cd0, 0x1cf6, 1},
+		{0x1cf8, 0x1cf9, 1},
+		{0x1d00, 0x1df5, 1},
+		{0x1dfc, 0x1f15, 1},
+		{0x1f18, 0x1f1d, 1},
+		{0x1f20, 0x1f45, 1},
+		{0x1f48, 0x1f4d, 1},
+		{0x1f50, 0x1f57, 1},
+		{0x1f59, 0x1f5f, 2},
+		{0x1f60, 0x1f7d, 1},
+		{0x1f80, 0x1fb4, 1},
+		{0x1fb6, 0x1fc4, 1},
+		{0x1fc6, 0x1fd3, 1},
+		{0x1fd6, 0x1fdb, 1},
+		{0x1fdd, 0x1fef, 1},
+		{0x1ff2, 0x1ff4, 1},
+		{0x1ff6, 0x1ffe, 1},
+		{0x2000, 0x2064, 1},
+		{0x2066, 0x2071, 1},
+		{0x2074, 0x208e, 1},
+		{0x2090, 0x209c, 1},
+		{0x20a0, 0x20bd, 1},
+		{0x20d0, 0x20f0, 1},
+		{0x2100, 0x2189, 1},
+		{0x2190, 0x23fa, 1},
+		{0x2400, 0x2426, 1},
+		{0x2440, 0x244a, 1},
+		{0x2460, 0x2b73, 1},
+		{0x2b76, 0x2b95, 1},
+		{0x2b98, 0x2bb9, 1},
+		{0x2bbd, 0x2bc8, 1},
+		{0x2bca, 0x2bd1, 1},
+		{0x2c00, 0x2c2e, 1},
+		{0x2c30, 0x2c5e, 1},
+		{0x2c60, 0x2cf3, 1},
+		{0x2cf9, 0x2d25, 1},
+		{0x2d27, 0x2d2d, 6},
+		{0x2d30, 0x2d67, 1},
+		{0x2d6f, 0x2d70, 1},
+		{0x2d7f, 0x2d96, 1},
+		{0x2da0, 0x2da6, 1},
+		{0x2da8, 0x2dae, 1},
+		{0x2db0, 0x2db6, 1},
+		{0x2db8, 0x2dbe, 1},
+		{0x2dc0, 0x2dc6, 1},
+		{0x2dc8, 0x2dce, 1},
+		{0x2dd0, 0x2dd6, 1},
+		{0x2dd8, 0x2dde, 1},
+		{0x2de0, 0x2e42, 1},
+		{0x2e80, 0x2e99, 1},
+		{0x2e9b, 0x2ef3, 1},
+		{0x2f00, 0x2fd5, 1},
+		{0x2ff0, 0x2ffb, 1},
+		{0x3000, 0x303f, 1},
+		{0x3041, 0x3096, 1},
+		{0x3099, 0x30ff, 1},
+		{0x3105, 0x312d, 1},
+		{0x3131, 0x318e, 1},
+		{0x3190, 0x31ba, 1},
+		{0x31c0, 0x31e3, 1},
+		{0x31f0, 0x321e, 1},
+		{0x3220, 0x32fe, 1},
+		{0x3300, 0x4db5, 1},
+		{0x4dc0, 0x9fcc, 1},
+		{0xa000, 0xa48c, 1},
+		{0xa490, 0xa4c6, 1},
+		{0xa4d0, 0xa62b, 1},
+		{0xa640, 0xa69d, 1},
+		{0xa69f, 0xa6f7, 1},
+		{0xa700, 0xa78e, 1},
+		{0xa790, 0xa7ad, 1},
+		{0xa7b0, 0xa7b1, 1},
+		{0xa7f7, 0xa82b, 1},
+		{0xa830, 0xa839, 1},
+		{0xa840, 0xa877, 1},
+		{0xa880, 0xa8c4, 1},
+		{0xa8ce, 0xa8d9, 1},
+		{0xa8e0, 0xa8fb, 1},
+		{0xa900, 0xa953, 1},
+		{0xa95f, 0xa97c, 1},
+		{0xa980, 0xa9cd, 1},
+		{0xa9cf, 0xa9d9, 1},
+		{0xa9de, 0xa9fe, 1},
+		{0xaa00, 0xaa36, 1},
+		{0xaa40, 0xaa4d, 1},
+		{0xaa50, 0xaa59, 1},
+		{0xaa5c, 0xaac2, 1},
+		{0xaadb, 0xaaf6, 1},
+		{0xab01, 0xab06, 1},
+		{0xab09, 0xab0e, 1},
+		{0xab11, 0xab16, 1},
+		{0xab20, 0xab26, 1},
+		{0xab28, 0xab2e, 1},
+		{0xab30, 0xab5f, 1},
+		{0xab64, 0xab65, 1},
+		{0xabc0, 0xabed, 1},
+		{0xabf0, 0xabf9, 1},
+		{0xac00, 0xd7a3, 1},
+		{0xd7b0, 0xd7c6, 1},
+		{0xd7cb, 0xd7fb, 1},
+		{0xd800, 0xfa6d, 1},
+		{0xfa70, 0xfad9, 1},
+		{0xfb00, 0xfb06, 1},
+		{0xfb13, 0xfb17, 1},
+		{0xfb1d, 0xfb36, 1},
+		{0xfb38, 0xfb3c, 1},
+		{0xfb3e, 0xfb40, 2},
+		{0xfb41, 0xfb43, 2},
+		{0xfb44, 0xfb46, 2},
+		{0xfb47, 0xfbc1, 1},
+		{0xfbd3, 0xfd3f, 1},
+		{0xfd50, 0xfd8f, 1},
+		{0xfd92, 0xfdc7, 1},
+		{0xfdf0, 0xfdfd, 1},
+		{0xfe00, 0xfe19, 1},
+		{0xfe20, 0xfe2d, 1},
+		{0xfe30, 0xfe52, 1},
+		{0xfe54, 0xfe66, 1},
+		{0xfe68, 0xfe6b, 1},
+		{0xfe70, 0xfe74, 1},
+		{0xfe76, 0xfefc, 1},
+		{0xfeff, 0xff01, 2},
+		{0xff02, 0xffbe, 1},
+		{0xffc2, 0xffc7, 1},
+		{0xffca, 0xffcf, 1},
+		{0xffd2, 0xffd7, 1},
+		{0xffda, 0xffdc, 1},
+		{0xffe0, 0xffe6, 1},
+		{0xffe8, 0xffee, 1},
+		{0xfff9, 0xfffd, 1},
+	},
+	R32: []unicode.Range32{
+		{0x00010000, 0x0001000b, 1},
+		{0x0001000d, 0x00010026, 1},
+		{0x00010028, 0x0001003a, 1},
+		{0x0001003c, 0x0001003d, 1},
+		{0x0001003f, 0x0001004d, 1},
+		{0x00010050, 0x0001005d, 1},
+		{0x00010080, 0x000100fa, 1},
+		{0x00010100, 0x00010102, 1},
+		{0x00010107, 0x00010133, 1},
+		{0x00010137, 0x0001018c, 1},
+		{0x00010190, 0x0001019b, 1},
+		{0x000101a0, 0x000101d0, 48},
+		{0x000101d1, 0x000101fd, 1},
+		{0x00010280, 0x0001029c, 1},
+		{0x000102a0, 0x000102d0, 1},
+		{0x000102e0, 0x000102fb, 1},
+		{0x00010300, 0x00010323, 1},
+		{0x00010330, 0x0001034a, 1},
+		{0x00010350, 0x0001037a, 1},
+		{0x00010380, 0x0001039d, 1},
+		{0x0001039f, 0x000103c3, 1},
+		{0x000103c8, 0x000103d5, 1},
+		{0x00010400, 0x0001049d, 1},
+		{0x000104a0, 0x000104a9, 1},
+		{0x00010500, 0x00010527, 1},
+		{0x00010530, 0x00010563, 1},
+		{0x0001056f, 0x00010600, 145},
+		{0x00010601, 0x00010736, 1},
+		{0x00010740, 0x00010755, 1},
+		{0x00010760, 0x00010767, 1},
+		{0x00010800, 0x00010805, 1},
+		{0x00010808, 0x0001080a, 2},
+		{0x0001080b, 0x00010835, 1},
+		{0x00010837, 0x00010838, 1},
+		{0x0001083c, 0x0001083f, 3},
+		{0x00010840, 0x00010855, 1},
+		{0x00010857, 0x0001089e, 1},
+		{0x000108a7, 0x000108af, 1},
+		{0x00010900, 0x0001091b, 1},
+		{0x0001091f, 0x00010939, 1},
+		{0x0001093f, 0x00010980, 65},
+		{0x00010981, 0x000109b7, 1},
+		{0x000109be, 0x000109bf, 1},
+		{0x00010a00, 0x00010a03, 1},
+		{0x00010a05, 0x00010a06, 1},
+		{0x00010a0c, 0x00010a13, 1},
+		{0x00010a15, 0x00010a17, 1},
+		{0x00010a19, 0x00010a33, 1},
+		{0x00010a38, 0x00010a3a, 1},
+		{0x00010a3f, 0x00010a47, 1},
+		{0x00010a50, 0x00010a58, 1},
+		{0x00010a60, 0x00010a9f, 1},
+		{0x00010ac0, 0x00010ae6, 1},
+		{0x00010aeb, 0x00010af6, 1},
+		{0x00010b00, 0x00010b35, 1},
+		{0x00010b39, 0x00010b55, 1},
+		{0x00010b58, 0x00010b72, 1},
+		{0x00010b78, 0x00010b91, 1},
+		{0x00010b99, 0x00010b9c, 1},
+		{0x00010ba9, 0x00010baf, 1},
+		{0x00010c00, 0x00010c48, 1},
+		{0x00010e60, 0x00010e7e, 1},
+		{0x00011000, 0x0001104d, 1},
+		{0x00011052, 0x0001106f, 1},
+		{0x0001107f, 0x000110c1, 1},
+		{0x000110d0, 0x000110e8, 1},
+		{0x000110f0, 0x000110f9, 1},
+		{0x00011100, 0x00011134, 1},
+		{0x00011136, 0x00011143, 1},
+		{0x00011150, 0x00011176, 1},
+		{0x00011180, 0x000111c8, 1},
+		{0x000111cd, 0x000111d0, 3},
+		{0x000111d1, 0x000111da, 1},
+		{0x000111e1, 0x000111f4, 1},
+		{0x00011200, 0x00011211, 1},
+		{0x00011213, 0x0001123d, 1},
+		{0x000112b0, 0x000112ea, 1},
+		{0x000112f0, 0x000112f9, 1},
+		{0x00011301, 0x00011303, 1},
+		{0x00011305, 0x0001130c, 1},
+		{0x0001130f, 0x00011310, 1},
+		{0x00011313, 0x00011328, 1},
+		{0x0001132a, 0x00011330, 1},
+		{0x00011332, 0x00011333, 1},
+		{0x00011335, 0x00011339, 1},
+		{0x0001133c, 0x00011344, 1},
+		{0x00011347, 0x00011348, 1},
+		{0x0001134b, 0x0001134d, 1},
+		{0x00011357, 0x0001135d, 6},
+		{0x0001135e, 0x00011363, 1},
+		{0x00011366, 0x0001136c, 1},
+		{0x00011370, 0x00011374, 1},
+		{0x00011480, 0x000114c7, 1},
+		{0x000114d0, 0x000114d9, 1},
+		{0x00011580, 0x000115b5, 1},
+		{0x000115b8, 0x000115c9, 1},
+		{0x00011600, 0x00011644, 1},
+		{0x00011650, 0x00011659, 1},
+		{0x00011680, 0x000116b7, 1},
+		{0x000116c0, 0x000116c9, 1},
+		{0x000118a0, 0x000118f2, 1},
+		{0x000118ff, 0x00011ac0, 449},
+		{0x00011ac1, 0x00011af8, 1},
+		{0x00012000, 0x00012398, 1},
+		{0x00012400, 0x0001246e, 1},
+		{0x00012470, 0x00012474, 1},
+		{0x00013000, 0x0001342e, 1},
+		{0x00016800, 0x00016a38, 1},
+		{0x00016a40, 0x00016a5e, 1},
+		{0x00016a60, 0x00016a69, 1},
+		{0x00016a6e, 0x00016a6f, 1},
+		{0x00016ad0, 0x00016aed, 1},
+		{0x00016af0, 0x00016af5, 1},
+		{0x00016b00, 0x00016b45, 1},
+		{0x00016b50, 0x00016b59, 1},
+		{0x00016b5b, 0x00016b61, 1},
+		{0x00016b63, 0x00016b77, 1},
+		{0x00016b7d, 0x00016b8f, 1},
+		{0x00016f00, 0x00016f44, 1},
+		{0x00016f50, 0x00016f7e, 1},
+		{0x00016f8f, 0x00016f9f, 1},
+		{0x0001b000, 0x0001b001, 1},
+		{0x0001bc00, 0x0001bc6a, 1},
+		{0x0001bc70, 0x0001bc7c, 1},
+		{0x0001bc80, 0x0001bc88, 1},
+		{0x0001bc90, 0x0001bc99, 1},
+		{0x0001bc9c, 0x0001bca3, 1},
+		{0x0001d000, 0x0001d0f5, 1},
+		{0x0001d100, 0x0001d126, 1},
+		{0x0001d129, 0x0001d1dd, 1},
+		{0x0001d200, 0x0001d245, 1},
+		{0x0001d300, 0x0001d356, 1},
+		{0x0001d360, 0x0001d371, 1},
+		{0x0001d400, 0x0001d454, 1},
+		{0x0001d456, 0x0001d49c, 1},
+		{0x0001d49e, 0x0001d49f, 1},
+		{0x0001d4a2, 0x0001d4a5, 3},
+		{0x0001d4a6, 0x0001d4a9, 3},
+		{0x0001d4aa, 0x0001d4ac, 1},
+		{0x0001d4ae, 0x0001d4b9, 1},
+		{0x0001d4bb, 0x0001d4bd, 2},
+		{0x0001d4be, 0x0001d4c3, 1},
+		{0x0001d4c5, 0x0001d505, 1},
+		{0x0001d507, 0x0001d50a, 1},
+		{0x0001d50d, 0x0001d514, 1},
+		{0x0001d516, 0x0001d51c, 1},
+		{0x0001d51e, 0x0001d539, 1},
+		{0x0001d53b, 0x0001d53e, 1},
+		{0x0001d540, 0x0001d544, 1},
+		{0x0001d546, 0x0001d54a, 4},
+		{0x0001d54b, 0x0001d550, 1},
+		{0x0001d552, 0x0001d6a5, 1},
+		{0x0001d6a8, 0x0001d7cb, 1},
+		{0x0001d7ce, 0x0001d7ff, 1},
+		{0x0001e800, 0x0001e8c4, 1},
+		{0x0001e8c7, 0x0001e8d6, 1},
+		{0x0001ee00, 0x0001ee03, 1},
+		{0x0001ee05, 0x0001ee1f, 1},
+		{0x0001ee21, 0x0001ee22, 1},
+		{0x0001ee24, 0x0001ee27, 3},
+		{0x0001ee29, 0x0001ee32, 1},
+		{0x0001ee34, 0x0001ee37, 1},
+		{0x0001ee39, 0x0001ee3b, 2},
+		{0x0001ee42, 0x0001ee47, 5},
+		{0x0001ee49, 0x0001ee4d, 2},
+		{0x0001ee4e, 0x0001ee4f, 1},
+		{0x0001ee51, 0x0001ee52, 1},
+		{0x0001ee54, 0x0001ee57, 3},
+		{0x0001ee59, 0x0001ee61, 2},
+		{0x0001ee62, 0x0001ee64, 2},
+		{0x0001ee67, 0x0001ee6a, 1},
+		{0x0001ee6c, 0x0001ee72, 1},
+		{0x0001ee74, 0x0001ee77, 1},
+		{0x0001ee79, 0x0001ee7c, 1},
+		{0x0001ee7e, 0x0001ee80, 2},
+		{0x0001ee81, 0x0001ee89, 1},
+		{0x0001ee8b, 0x0001ee9b, 1},
+		{0x0001eea1, 0x0001eea3, 1},
+		{0x0001eea5, 0x0001eea9, 1},
+		{0x0001eeab, 0x0001eebb, 1},
+		{0x0001eef0, 0x0001eef1, 1},
+		{0x0001f000, 0x0001f02b, 1},
+		{0x0001f030, 0x0001f093, 1},
+		{0x0001f0a0, 0x0001f0ae, 1},
+		{0x0001f0b1, 0x0001f0bf, 1},
+		{0x0001f0c1, 0x0001f0cf, 1},
+		{0x0001f0d1, 0x0001f0f5, 1},
+		{0x0001f100, 0x0001f10c, 1},
+		{0x0001f110, 0x0001f12e, 1},
+		{0x0001f130, 0x0001f16b, 1},
+		{0x0001f170, 0x0001f19a, 1},
+		{0x0001f1e6, 0x0001f202, 1},
+		{0x0001f210, 0x0001f23a, 1},
+		{0x0001f240, 0x0001f248, 1},
+		{0x0001f250, 0x0001f251, 1},
+		{0x0001f300, 0x0001f32c, 1},
+		{0x0001f330, 0x0001f37d, 1},
+		{0x0001f380, 0x0001f3ce, 1},
+		{0x0001f3d4, 0x0001f3f7, 1},
+		{0x0001f400, 0x0001f4fe, 1},
+		{0x0001f500, 0x0001f54a, 1},
+		{0x0001f550, 0x0001f579, 1},
+		{0x0001f57b, 0x0001f5a3, 1},
+		{0x0001f5a5, 0x0001f642, 1},
+		{0x0001f645, 0x0001f6cf, 1},
+		{0x0001f6e0, 0x0001f6ec, 1},
+		{0x0001f6f0, 0x0001f6f3, 1},
+		{0x0001f700, 0x0001f773, 1},
+		{0x0001f780, 0x0001f7d4, 1},
+		{0x0001f800, 0x0001f80b, 1},
+		{0x0001f810, 0x0001f847, 1},
+		{0x0001f850, 0x0001f859, 1},
+		{0x0001f860, 0x0001f887, 1},
+		{0x0001f890, 0x0001f8ad, 1},
+		{0x00020000, 0x0002a6d6, 1},
+		{0x0002a700, 0x0002b734, 1},
+		{0x0002b740, 0x0002b81d, 1},
+		{0x0002f800, 0x0002fa1d, 1},
+		{0x000e0001, 0x000e0020, 31},
+		{0x000e0021, 0x000e007f, 1},
+		{0x000e0100, 0x000e01ef, 1},
+		{0x000f0000, 0x000ffffd, 1},
+		{0x00100000, 0x0010fffd, 1},
+	},
+	LatinOffset: 0,
+}
+
+// size 5048 bytes (4 KiB)
+var assigned8_0_0 = &unicode.RangeTable{
+	R16: []unicode.Range16{
+		{0x0000, 0x0377, 1},
+		{0x037a, 0x037f, 1},
+		{0x0384, 0x038a, 1},
+		{0x038c, 0x038e, 2},
+		{0x038f, 0x03a1, 1},
+		{0x03a3, 0x052f, 1},
+		{0x0531, 0x0556, 1},
+		{0x0559, 0x055f, 1},
+		{0x0561, 0x0587, 1},
+		{0x0589, 0x058a, 1},
+		{0x058d, 0x058f, 1},
+		{0x0591, 0x05c7, 1},
+		{0x05d0, 0x05ea, 1},
+		{0x05f0, 0x05f4, 1},
+		{0x0600, 0x061c, 1},
+		{0x061e, 0x070d, 1},
+		{0x070f, 0x074a, 1},
+		{0x074d, 0x07b1, 1},
+		{0x07c0, 0x07fa, 1},
+		{0x0800, 0x082d, 1},
+		{0x0830, 0x083e, 1},
+		{0x0840, 0x085b, 1},
+		{0x085e, 0x08a0, 66},
+		{0x08a1, 0x08b4, 1},
+		{0x08e3, 0x0983, 1},
+		{0x0985, 0x098c, 1},
+		{0x098f, 0x0990, 1},
+		{0x0993, 0x09a8, 1},
+		{0x09aa, 0x09b0, 1},
+		{0x09b2, 0x09b6, 4},
+		{0x09b7, 0x09b9, 1},
+		{0x09bc, 0x09c4, 1},
+		{0x09c7, 0x09c8, 1},
+		{0x09cb, 0x09ce, 1},
+		{0x09d7, 0x09dc, 5},
+		{0x09dd, 0x09df, 2},
+		{0x09e0, 0x09e3, 1},
+		{0x09e6, 0x09fb, 1},
+		{0x0a01, 0x0a03, 1},
+		{0x0a05, 0x0a0a, 1},
+		{0x0a0f, 0x0a10, 1},
+		{0x0a13, 0x0a28, 1},
+		{0x0a2a, 0x0a30, 1},
+		{0x0a32, 0x0a33, 1},
+		{0x0a35, 0x0a36, 1},
+		{0x0a38, 0x0a39, 1},
+		{0x0a3c, 0x0a3e, 2},
+		{0x0a3f, 0x0a42, 1},
+		{0x0a47, 0x0a48, 1},
+		{0x0a4b, 0x0a4d, 1},
+		{0x0a51, 0x0a59, 8},
+		{0x0a5a, 0x0a5c, 1},
+		{0x0a5e, 0x0a66, 8},
+		{0x0a67, 0x0a75, 1},
+		{0x0a81, 0x0a83, 1},
+		{0x0a85, 0x0a8d, 1},
+		{0x0a8f, 0x0a91, 1},
+		{0x0a93, 0x0aa8, 1},
+		{0x0aaa, 0x0ab0, 1},
+		{0x0ab2, 0x0ab3, 1},
+		{0x0ab5, 0x0ab9, 1},
+		{0x0abc, 0x0ac5, 1},
+		{0x0ac7, 0x0ac9, 1},
+		{0x0acb, 0x0acd, 1},
+		{0x0ad0, 0x0ae0, 16},
+		{0x0ae1, 0x0ae3, 1},
+		{0x0ae6, 0x0af1, 1},
+		{0x0af9, 0x0b01, 8},
+		{0x0b02, 0x0b03, 1},
+		{0x0b05, 0x0b0c, 1},
+		{0x0b0f, 0x0b10, 1},
+		{0x0b13, 0x0b28, 1},
+		{0x0b2a, 0x0b30, 1},
+		{0x0b32, 0x0b33, 1},
+		{0x0b35, 0x0b39, 1},
+		{0x0b3c, 0x0b44, 1},
+		{0x0b47, 0x0b48, 1},
+		{0x0b4b, 0x0b4d, 1},
+		{0x0b56, 0x0b57, 1},
+		{0x0b5c, 0x0b5d, 1},
+		{0x0b5f, 0x0b63, 1},
+		{0x0b66, 0x0b77, 1},
+		{0x0b82, 0x0b83, 1},
+		{0x0b85, 0x0b8a, 1},
+		{0x0b8e, 0x0b90, 1},
+		{0x0b92, 0x0b95, 1},
+		{0x0b99, 0x0b9a, 1},
+		{0x0b9c, 0x0b9e, 2},
+		{0x0b9f, 0x0ba3, 4},
+		{0x0ba4, 0x0ba8, 4},
+		{0x0ba9, 0x0baa, 1},
+		{0x0bae, 0x0bb9, 1},
+		{0x0bbe, 0x0bc2, 1},
+		{0x0bc6, 0x0bc8, 1},
+		{0x0bca, 0x0bcd, 1},
+		{0x0bd0, 0x0bd7, 7},
+		{0x0be6, 0x0bfa, 1},
+		{0x0c00, 0x0c03, 1},
+		{0x0c05, 0x0c0c, 1},
+		{0x0c0e, 0x0c10, 1},
+		{0x0c12, 0x0c28, 1},
+		{0x0c2a, 0x0c39, 1},
+		{0x0c3d, 0x0c44, 1},
+		{0x0c46, 0x0c48, 1},
+		{0x0c4a, 0x0c4d, 1},
+		{0x0c55, 0x0c56, 1},
+		{0x0c58, 0x0c5a, 1},
+		{0x0c60, 0x0c63, 1},
+		{0x0c66, 0x0c6f, 1},
+		{0x0c78, 0x0c7f, 1},
+		{0x0c81, 0x0c83, 1},
+		{0x0c85, 0x0c8c, 1},
+		{0x0c8e, 0x0c90, 1},
+		{0x0c92, 0x0ca8, 1},
+		{0x0caa, 0x0cb3, 1},
+		{0x0cb5, 0x0cb9, 1},
+		{0x0cbc, 0x0cc4, 1},
+		{0x0cc6, 0x0cc8, 1},
+		{0x0cca, 0x0ccd, 1},
+		{0x0cd5, 0x0cd6, 1},
+		{0x0cde, 0x0ce0, 2},
+		{0x0ce1, 0x0ce3, 1},
+		{0x0ce6, 0x0cef, 1},
+		{0x0cf1, 0x0cf2, 1},
+		{0x0d01, 0x0d03, 1},
+		{0x0d05, 0x0d0c, 1},
+		{0x0d0e, 0x0d10, 1},
+		{0x0d12, 0x0d3a, 1},
+		{0x0d3d, 0x0d44, 1},
+		{0x0d46, 0x0d48, 1},
+		{0x0d4a, 0x0d4e, 1},
+		{0x0d57, 0x0d5f, 8},
+		{0x0d60, 0x0d63, 1},
+		{0x0d66, 0x0d75, 1},
+		{0x0d79, 0x0d7f, 1},
+		{0x0d82, 0x0d83, 1},
+		{0x0d85, 0x0d96, 1},
+		{0x0d9a, 0x0db1, 1},
+		{0x0db3, 0x0dbb, 1},
+		{0x0dbd, 0x0dc0, 3},
+		{0x0dc1, 0x0dc6, 1},
+		{0x0dca, 0x0dcf, 5},
+		{0x0dd0, 0x0dd4, 1},
+		{0x0dd6, 0x0dd8, 2},
+		{0x0dd9, 0x0ddf, 1},
+		{0x0de6, 0x0def, 1},
+		{0x0df2, 0x0df4, 1},
+		{0x0e01, 0x0e3a, 1},
+		{0x0e3f, 0x0e5b, 1},
+		{0x0e81, 0x0e82, 1},
+		{0x0e84, 0x0e87, 3},
+		{0x0e88, 0x0e8a, 2},
+		{0x0e8d, 0x0e94, 7},
+		{0x0e95, 0x0e97, 1},
+		{0x0e99, 0x0e9f, 1},
+		{0x0ea1, 0x0ea3, 1},
+		{0x0ea5, 0x0ea7, 2},
+		{0x0eaa, 0x0eab, 1},
+		{0x0ead, 0x0eb9, 1},
+		{0x0ebb, 0x0ebd, 1},
+		{0x0ec0, 0x0ec4, 1},
+		{0x0ec6, 0x0ec8, 2},
+		{0x0ec9, 0x0ecd, 1},
+		{0x0ed0, 0x0ed9, 1},
+		{0x0edc, 0x0edf, 1},
+		{0x0f00, 0x0f47, 1},
+		{0x0f49, 0x0f6c, 1},
+		{0x0f71, 0x0f97, 1},
+		{0x0f99, 0x0fbc, 1},
+		{0x0fbe, 0x0fcc, 1},
+		{0x0fce, 0x0fda, 1},
+		{0x1000, 0x10c5, 1},
+		{0x10c7, 0x10cd, 6},
+		{0x10d0, 0x1248, 1},
+		{0x124a, 0x124d, 1},
+		{0x1250, 0x1256, 1},
+		{0x1258, 0x125a, 2},
+		{0x125b, 0x125d, 1},
+		{0x1260, 0x1288, 1},
+		{0x128a, 0x128d, 1},
+		{0x1290, 0x12b0, 1},
+		{0x12b2, 0x12b5, 1},
+		{0x12b8, 0x12be, 1},
+		{0x12c0, 0x12c2, 2},
+		{0x12c3, 0x12c5, 1},
+		{0x12c8, 0x12d6, 1},
+		{0x12d8, 0x1310, 1},
+		{0x1312, 0x1315, 1},
+		{0x1318, 0x135a, 1},
+		{0x135d, 0x137c, 1},
+		{0x1380, 0x1399, 1},
+		{0x13a0, 0x13f5, 1},
+		{0x13f8, 0x13fd, 1},
+		{0x1400, 0x169c, 1},
+		{0x16a0, 0x16f8, 1},
+		{0x1700, 0x170c, 1},
+		{0x170e, 0x1714, 1},
+		{0x1720, 0x1736, 1},
+		{0x1740, 0x1753, 1},
+		{0x1760, 0x176c, 1},
+		{0x176e, 0x1770, 1},
+		{0x1772, 0x1773, 1},
+		{0x1780, 0x17dd, 1},
+		{0x17e0, 0x17e9, 1},
+		{0x17f0, 0x17f9, 1},
+		{0x1800, 0x180e, 1},
+		{0x1810, 0x1819, 1},
+		{0x1820, 0x1877, 1},
+		{0x1880, 0x18aa, 1},
+		{0x18b0, 0x18f5, 1},
+		{0x1900, 0x191e, 1},
+		{0x1920, 0x192b, 1},
+		{0x1930, 0x193b, 1},
+		{0x1940, 0x1944, 4},
+		{0x1945, 0x196d, 1},
+		{0x1970, 0x1974, 1},
+		{0x1980, 0x19ab, 1},
+		{0x19b0, 0x19c9, 1},
+		{0x19d0, 0x19da, 1},
+		{0x19de, 0x1a1b, 1},
+		{0x1a1e, 0x1a5e, 1},
+		{0x1a60, 0x1a7c, 1},
+		{0x1a7f, 0x1a89, 1},
+		{0x1a90, 0x1a99, 1},
+		{0x1aa0, 0x1aad, 1},
+		{0x1ab0, 0x1abe, 1},
+		{0x1b00, 0x1b4b, 1},
+		{0x1b50, 0x1b7c, 1},
+		{0x1b80, 0x1bf3, 1},
+		{0x1bfc, 0x1c37, 1},
+		{0x1c3b, 0x1c49, 1},
+		{0x1c4d, 0x1c7f, 1},
+		{0x1cc0, 0x1cc7, 1},
+		{0x1cd0, 0x1cf6, 1},
+		{0x1cf8, 0x1cf9, 1},
+		{0x1d00, 0x1df5, 1},
+		{0x1dfc, 0x1f15, 1},
+		{0x1f18, 0x1f1d, 1},
+		{0x1f20, 0x1f45, 1},
+		{0x1f48, 0x1f4d, 1},
+		{0x1f50, 0x1f57, 1},
+		{0x1f59, 0x1f5f, 2},
+		{0x1f60, 0x1f7d, 1},
+		{0x1f80, 0x1fb4, 1},
+		{0x1fb6, 0x1fc4, 1},
+		{0x1fc6, 0x1fd3, 1},
+		{0x1fd6, 0x1fdb, 1},
+		{0x1fdd, 0x1fef, 1},
+		{0x1ff2, 0x1ff4, 1},
+		{0x1ff6, 0x1ffe, 1},
+		{0x2000, 0x2064, 1},
+		{0x2066, 0x2071, 1},
+		{0x2074, 0x208e, 1},
+		{0x2090, 0x209c, 1},
+		{0x20a0, 0x20be, 1},
+		{0x20d0, 0x20f0, 1},
+		{0x2100, 0x218b, 1},
+		{0x2190, 0x23fa, 1},
+		{0x2400, 0x2426, 1},
+		{0x2440, 0x244a, 1},
+		{0x2460, 0x2b73, 1},
+		{0x2b76, 0x2b95, 1},
+		{0x2b98, 0x2bb9, 1},
+		{0x2bbd, 0x2bc8, 1},
+		{0x2bca, 0x2bd1, 1},
+		{0x2bec, 0x2bef, 1},
+		{0x2c00, 0x2c2e, 1},
+		{0x2c30, 0x2c5e, 1},
+		{0x2c60, 0x2cf3, 1},
+		{0x2cf9, 0x2d25, 1},
+		{0x2d27, 0x2d2d, 6},
+		{0x2d30, 0x2d67, 1},
+		{0x2d6f, 0x2d70, 1},
+		{0x2d7f, 0x2d96, 1},
+		{0x2da0, 0x2da6, 1},
+		{0x2da8, 0x2dae, 1},
+		{0x2db0, 0x2db6, 1},
+		{0x2db8, 0x2dbe, 1},
+		{0x2dc0, 0x2dc6, 1},
+		{0x2dc8, 0x2dce, 1},
+		{0x2dd0, 0x2dd6, 1},
+		{0x2dd8, 0x2dde, 1},
+		{0x2de0, 0x2e42, 1},
+		{0x2e80, 0x2e99, 1},
+		{0x2e9b, 0x2ef3, 1},
+		{0x2f00, 0x2fd5, 1},
+		{0x2ff0, 0x2ffb, 1},
+		{0x3000, 0x303f, 1},
+		{0x3041, 0x3096, 1},
+		{0x3099, 0x30ff, 1},
+		{0x3105, 0x312d, 1},
+		{0x3131, 0x318e, 1},
+		{0x3190, 0x31ba, 1},
+		{0x31c0, 0x31e3, 1},
+		{0x31f0, 0x321e, 1},
+		{0x3220, 0x32fe, 1},
+		{0x3300, 0x4db5, 1},
+		{0x4dc0, 0x9fd5, 1},
+		{0xa000, 0xa48c, 1},
+		{0xa490, 0xa4c6, 1},
+		{0xa4d0, 0xa62b, 1},
+		{0xa640, 0xa6f7, 1},
+		{0xa700, 0xa7ad, 1},
+		{0xa7b0, 0xa7b7, 1},
+		{0xa7f7, 0xa82b, 1},
+		{0xa830, 0xa839, 1},
+		{0xa840, 0xa877, 1},
+		{0xa880, 0xa8c4, 1},
+		{0xa8ce, 0xa8d9, 1},
+		{0xa8e0, 0xa8fd, 1},
+		{0xa900, 0xa953, 1},
+		{0xa95f, 0xa97c, 1},
+		{0xa980, 0xa9cd, 1},
+		{0xa9cf, 0xa9d9, 1},
+		{0xa9de, 0xa9fe, 1},
+		{0xaa00, 0xaa36, 1},
+		{0xaa40, 0xaa4d, 1},
+		{0xaa50, 0xaa59, 1},
+		{0xaa5c, 0xaac2, 1},
+		{0xaadb, 0xaaf6, 1},
+		{0xab01, 0xab06, 1},
+		{0xab09, 0xab0e, 1},
+		{0xab11, 0xab16, 1},
+		{0xab20, 0xab26, 1},
+		{0xab28, 0xab2e, 1},
+		{0xab30, 0xab65, 1},
+		{0xab70, 0xabed, 1},
+		{0xabf0, 0xabf9, 1},
+		{0xac00, 0xd7a3, 1},
+		{0xd7b0, 0xd7c6, 1},
+		{0xd7cb, 0xd7fb, 1},
+		{0xd800, 0xfa6d, 1},
+		{0xfa70, 0xfad9, 1},
+		{0xfb00, 0xfb06, 1},
+		{0xfb13, 0xfb17, 1},
+		{0xfb1d, 0xfb36, 1},
+		{0xfb38, 0xfb3c, 1},
+		{0xfb3e, 0xfb40, 2},
+		{0xfb41, 0xfb43, 2},
+		{0xfb44, 0xfb46, 2},
+		{0xfb47, 0xfbc1, 1},
+		{0xfbd3, 0xfd3f, 1},
+		{0xfd50, 0xfd8f, 1},
+		{0xfd92, 0xfdc7, 1},
+		{0xfdf0, 0xfdfd, 1},
+		{0xfe00, 0xfe19, 1},
+		{0xfe20, 0xfe52, 1},
+		{0xfe54, 0xfe66, 1},
+		{0xfe68, 0xfe6b, 1},
+		{0xfe70, 0xfe74, 1},
+		{0xfe76, 0xfefc, 1},
+		{0xfeff, 0xff01, 2},
+		{0xff02, 0xffbe, 1},
+		{0xffc2, 0xffc7, 1},
+		{0xffca, 0xffcf, 1},
+		{0xffd2, 0xffd7, 1},
+		{0xffda, 0xffdc, 1},
+		{0xffe0, 0xffe6, 1},
+		{0xffe8, 0xffee, 1},
+		{0xfff9, 0xfffd, 1},
+	},
+	R32: []unicode.Range32{
+		{0x00010000, 0x0001000b, 1},
+		{0x0001000d, 0x00010026, 1},
+		{0x00010028, 0x0001003a, 1},
+		{0x0001003c, 0x0001003d, 1},
+		{0x0001003f, 0x0001004d, 1},
+		{0x00010050, 0x0001005d, 1},
+		{0x00010080, 0x000100fa, 1},
+		{0x00010100, 0x00010102, 1},
+		{0x00010107, 0x00010133, 1},
+		{0x00010137, 0x0001018c, 1},
+		{0x00010190, 0x0001019b, 1},
+		{0x000101a0, 0x000101d0, 48},
+		{0x000101d1, 0x000101fd, 1},
+		{0x00010280, 0x0001029c, 1},
+		{0x000102a0, 0x000102d0, 1},
+		{0x000102e0, 0x000102fb, 1},
+		{0x00010300, 0x00010323, 1},
+		{0x00010330, 0x0001034a, 1},
+		{0x00010350, 0x0001037a, 1},
+		{0x00010380, 0x0001039d, 1},
+		{0x0001039f, 0x000103c3, 1},
+		{0x000103c8, 0x000103d5, 1},
+		{0x00010400, 0x0001049d, 1},
+		{0x000104a0, 0x000104a9, 1},
+		{0x00010500, 0x00010527, 1},
+		{0x00010530, 0x00010563, 1},
+		{0x0001056f, 0x00010600, 145},
+		{0x00010601, 0x00010736, 1},
+		{0x00010740, 0x00010755, 1},
+		{0x00010760, 0x00010767, 1},
+		{0x00010800, 0x00010805, 1},
+		{0x00010808, 0x0001080a, 2},
+		{0x0001080b, 0x00010835, 1},
+		{0x00010837, 0x00010838, 1},
+		{0x0001083c, 0x0001083f, 3},
+		{0x00010840, 0x00010855, 1},
+		{0x00010857, 0x0001089e, 1},
+		{0x000108a7, 0x000108af, 1},
+		{0x000108e0, 0x000108f2, 1},
+		{0x000108f4, 0x000108f5, 1},
+		{0x000108fb, 0x0001091b, 1},
+		{0x0001091f, 0x00010939, 1},
+		{0x0001093f, 0x00010980, 65},
+		{0x00010981, 0x000109b7, 1},
+		{0x000109bc, 0x000109cf, 1},
+		{0x000109d2, 0x00010a03, 1},
+		{0x00010a05, 0x00010a06, 1},
+		{0x00010a0c, 0x00010a13, 1},
+		{0x00010a15, 0x00010a17, 1},
+		{0x00010a19, 0x00010a33, 1},
+		{0x00010a38, 0x00010a3a, 1},
+		{0x00010a3f, 0x00010a47, 1},
+		{0x00010a50, 0x00010a58, 1},
+		{0x00010a60, 0x00010a9f, 1},
+		{0x00010ac0, 0x00010ae6, 1},
+		{0x00010aeb, 0x00010af6, 1},
+		{0x00010b00, 0x00010b35, 1},
+		{0x00010b39, 0x00010b55, 1},
+		{0x00010b58, 0x00010b72, 1},
+		{0x00010b78, 0x00010b91, 1},
+		{0x00010b99, 0x00010b9c, 1},
+		{0x00010ba9, 0x00010baf, 1},
+		{0x00010c00, 0x00010c48, 1},
+		{0x00010c80, 0x00010cb2, 1},
+		{0x00010cc0, 0x00010cf2, 1},
+		{0x00010cfa, 0x00010cff, 1},
+		{0x00010e60, 0x00010e7e, 1},
+		{0x00011000, 0x0001104d, 1},
+		{0x00011052, 0x0001106f, 1},
+		{0x0001107f, 0x000110c1, 1},
+		{0x000110d0, 0x000110e8, 1},
+		{0x000110f0, 0x000110f9, 1},
+		{0x00011100, 0x00011134, 1},
+		{0x00011136, 0x00011143, 1},
+		{0x00011150, 0x00011176, 1},
+		{0x00011180, 0x000111cd, 1},
+		{0x000111d0, 0x000111df, 1},
+		{0x000111e1, 0x000111f4, 1},
+		{0x00011200, 0x00011211, 1},
+		{0x00011213, 0x0001123d, 1},
+		{0x00011280, 0x00011286, 1},
+		{0x00011288, 0x0001128a, 2},
+		{0x0001128b, 0x0001128d, 1},
+		{0x0001128f, 0x0001129d, 1},
+		{0x0001129f, 0x000112a9, 1},
+		{0x000112b0, 0x000112ea, 1},
+		{0x000112f0, 0x000112f9, 1},
+		{0x00011300, 0x00011303, 1},
+		{0x00011305, 0x0001130c, 1},
+		{0x0001130f, 0x00011310, 1},
+		{0x00011313, 0x00011328, 1},
+		{0x0001132a, 0x00011330, 1},
+		{0x00011332, 0x00011333, 1},
+		{0x00011335, 0x00011339, 1},
+		{0x0001133c, 0x00011344, 1},
+		{0x00011347, 0x00011348, 1},
+		{0x0001134b, 0x0001134d, 1},
+		{0x00011350, 0x00011357, 7},
+		{0x0001135d, 0x00011363, 1},
+		{0x00011366, 0x0001136c, 1},
+		{0x00011370, 0x00011374, 1},
+		{0x00011480, 0x000114c7, 1},
+		{0x000114d0, 0x000114d9, 1},
+		{0x00011580, 0x000115b5, 1},
+		{0x000115b8, 0x000115dd, 1},
+		{0x00011600, 0x00011644, 1},
+		{0x00011650, 0x00011659, 1},
+		{0x00011680, 0x000116b7, 1},
+		{0x000116c0, 0x000116c9, 1},
+		{0x00011700, 0x00011719, 1},
+		{0x0001171d, 0x0001172b, 1},
+		{0x00011730, 0x0001173f, 1},
+		{0x000118a0, 0x000118f2, 1},
+		{0x000118ff, 0x00011ac0, 449},
+		{0x00011ac1, 0x00011af8, 1},
+		{0x00012000, 0x00012399, 1},
+		{0x00012400, 0x0001246e, 1},
+		{0x00012470, 0x00012474, 1},
+		{0x00012480, 0x00012543, 1},
+		{0x00013000, 0x0001342e, 1},
+		{0x00014400, 0x00014646, 1},
+		{0x00016800, 0x00016a38, 1},
+		{0x00016a40, 0x00016a5e, 1},
+		{0x00016a60, 0x00016a69, 1},
+		{0x00016a6e, 0x00016a6f, 1},
+		{0x00016ad0, 0x00016aed, 1},
+		{0x00016af0, 0x00016af5, 1},
+		{0x00016b00, 0x00016b45, 1},
+		{0x00016b50, 0x00016b59, 1},
+		{0x00016b5b, 0x00016b61, 1},
+		{0x00016b63, 0x00016b77, 1},
+		{0x00016b7d, 0x00016b8f, 1},
+		{0x00016f00, 0x00016f44, 1},
+		{0x00016f50, 0x00016f7e, 1},
+		{0x00016f8f, 0x00016f9f, 1},
+		{0x0001b000, 0x0001b001, 1},
+		{0x0001bc00, 0x0001bc6a, 1},
+		{0x0001bc70, 0x0001bc7c, 1},
+		{0x0001bc80, 0x0001bc88, 1},
+		{0x0001bc90, 0x0001bc99, 1},
+		{0x0001bc9c, 0x0001bca3, 1},
+		{0x0001d000, 0x0001d0f5, 1},
+		{0x0001d100, 0x0001d126, 1},
+		{0x0001d129, 0x0001d1e8, 1},
+		{0x0001d200, 0x0001d245, 1},
+		{0x0001d300, 0x0001d356, 1},
+		{0x0001d360, 0x0001d371, 1},
+		{0x0001d400, 0x0001d454, 1},
+		{0x0001d456, 0x0001d49c, 1},
+		{0x0001d49e, 0x0001d49f, 1},
+		{0x0001d4a2, 0x0001d4a5, 3},
+		{0x0001d4a6, 0x0001d4a9, 3},
+		{0x0001d4aa, 0x0001d4ac, 1},
+		{0x0001d4ae, 0x0001d4b9, 1},
+		{0x0001d4bb, 0x0001d4bd, 2},
+		{0x0001d4be, 0x0001d4c3, 1},
+		{0x0001d4c5, 0x0001d505, 1},
+		{0x0001d507, 0x0001d50a, 1},
+		{0x0001d50d, 0x0001d514, 1},
+		{0x0001d516, 0x0001d51c, 1},
+		{0x0001d51e, 0x0001d539, 1},
+		{0x0001d53b, 0x0001d53e, 1},
+		{0x0001d540, 0x0001d544, 1},
+		{0x0001d546, 0x0001d54a, 4},
+		{0x0001d54b, 0x0001d550, 1},
+		{0x0001d552, 0x0001d6a5, 1},
+		{0x0001d6a8, 0x0001d7cb, 1},
+		{0x0001d7ce, 0x0001da8b, 1},
+		{0x0001da9b, 0x0001da9f, 1},
+		{0x0001daa1, 0x0001daaf, 1},
+		{0x0001e800, 0x0001e8c4, 1},
+		{0x0001e8c7, 0x0001e8d6, 1},
+		{0x0001ee00, 0x0001ee03, 1},
+		{0x0001ee05, 0x0001ee1f, 1},
+		{0x0001ee21, 0x0001ee22, 1},
+		{0x0001ee24, 0x0001ee27, 3},
+		{0x0001ee29, 0x0001ee32, 1},
+		{0x0001ee34, 0x0001ee37, 1},
+		{0x0001ee39, 0x0001ee3b, 2},
+		{0x0001ee42, 0x0001ee47, 5},
+		{0x0001ee49, 0x0001ee4d, 2},
+		{0x0001ee4e, 0x0001ee4f, 1},
+		{0x0001ee51, 0x0001ee52, 1},
+		{0x0001ee54, 0x0001ee57, 3},
+		{0x0001ee59, 0x0001ee61, 2},
+		{0x0001ee62, 0x0001ee64, 2},
+		{0x0001ee67, 0x0001ee6a, 1},
+		{0x0001ee6c, 0x0001ee72, 1},
+		{0x0001ee74, 0x0001ee77, 1},
+		{0x0001ee79, 0x0001ee7c, 1},
+		{0x0001ee7e, 0x0001ee80, 2},
+		{0x0001ee81, 0x0001ee89, 1},
+		{0x0001ee8b, 0x0001ee9b, 1},
+		{0x0001eea1, 0x0001eea3, 1},
+		{0x0001eea5, 0x0001eea9, 1},
+		{0x0001eeab, 0x0001eebb, 1},
+		{0x0001eef0, 0x0001eef1, 1},
+		{0x0001f000, 0x0001f02b, 1},
+		{0x0001f030, 0x0001f093, 1},
+		{0x0001f0a0, 0x0001f0ae, 1},
+		{0x0001f0b1, 0x0001f0bf, 1},
+		{0x0001f0c1, 0x0001f0cf, 1},
+		{0x0001f0d1, 0x0001f0f5, 1},
+		{0x0001f100, 0x0001f10c, 1},
+		{0x0001f110, 0x0001f12e, 1},
+		{0x0001f130, 0x0001f16b, 1},
+		{0x0001f170, 0x0001f19a, 1},
+		{0x0001f1e6, 0x0001f202, 1},
+		{0x0001f210, 0x0001f23a, 1},
+		{0x0001f240, 0x0001f248, 1},
+		{0x0001f250, 0x0001f251, 1},
+		{0x0001f300, 0x0001f579, 1},
+		{0x0001f57b, 0x0001f5a3, 1},
+		{0x0001f5a5, 0x0001f6d0, 1},
+		{0x0001f6e0, 0x0001f6ec, 1},
+		{0x0001f6f0, 0x0001f6f3, 1},
+		{0x0001f700, 0x0001f773, 1},
+		{0x0001f780, 0x0001f7d4, 1},
+		{0x0001f800, 0x0001f80b, 1},
+		{0x0001f810, 0x0001f847, 1},
+		{0x0001f850, 0x0001f859, 1},
+		{0x0001f860, 0x0001f887, 1},
+		{0x0001f890, 0x0001f8ad, 1},
+		{0x0001f910, 0x0001f918, 1},
+		{0x0001f980, 0x0001f984, 1},
+		{0x0001f9c0, 0x00020000, 1600},
+		{0x00020001, 0x0002a6d6, 1},
+		{0x0002a700, 0x0002b734, 1},
+		{0x0002b740, 0x0002b81d, 1},
+		{0x0002b820, 0x0002cea1, 1},
+		{0x0002f800, 0x0002fa1d, 1},
+		{0x000e0001, 0x000e0020, 31},
+		{0x000e0021, 0x000e007f, 1},
+		{0x000e0100, 0x000e01ef, 1},
+		{0x000f0000, 0x000ffffd, 1},
+		{0x00100000, 0x0010fffd, 1},
+	},
+	LatinOffset: 0,
+}
+
+// Total size 38858 bytes (37 KiB)
diff --git a/go/src/golang.org/x/text/width/common_test.go b/go/src/golang.org/x/text/width/common_test.go
new file mode 100644
index 0000000..0959b66
--- /dev/null
+++ b/go/src/golang.org/x/text/width/common_test.go
@@ -0,0 +1,106 @@
+// This file was generated by go generate; DO NOT EDIT
+
+package width
+
+// This code is shared between the main code generator and the test code.
+
+import (
+	"flag"
+	"log"
+	"strconv"
+	"strings"
+
+	"golang.org/x/text/internal/gen"
+	"golang.org/x/text/internal/ucd"
+)
+
+var (
+	outputFile = flag.String("out", "tables.go", "output file")
+)
+
+var typeMap = map[string]elem{
+	"A":  tagAmbiguous,
+	"N":  tagNeutral,
+	"Na": tagNarrow,
+	"W":  tagWide,
+	"F":  tagFullwidth,
+	"H":  tagHalfwidth,
+}
+
+// getWidthData calls f for every entry for which it is defined.
+//
+// f may be called multiple times for the same rune. The last call to f is the
+// correct value. f is not called for all runes. The default tag type is
+// Neutral.
+func getWidthData(f func(r rune, tag elem, alt rune)) {
+	// Set the default values for Unified Ideographs. In line with Annex 11,
+	// we encode full ranges instead of the defined runes in Unified_Ideograph.
+	for _, b := range []struct{ lo, hi rune }{
+		{0x4E00, 0x9FFF},   // the CJK Unified Ideographs block,
+		{0x3400, 0x4DBF},   // the CJK Unified Ideographs Externsion A block,
+		{0xF900, 0xFAFF},   // the CJK Compatibility Ideographs block,
+		{0x20000, 0x2FFFF}, // the Supplementary Ideographic Plane,
+		{0x30000, 0x3FFFF}, // the Tertiary Ideographic Plane,
+	} {
+		for r := b.lo; r <= b.hi; r++ {
+			f(r, tagWide, 0)
+		}
+	}
+
+	inverse := map[rune]rune{}
+	maps := map[string]bool{
+		"<wide>":   true,
+		"<narrow>": true,
+	}
+
+	// We cannot reuse package norm's decomposition, as we need an unexpanded
+	// decomposition. We make use of the opportunity to verify that the
+	// decomposition type is as expected.
+	parse("UnicodeData.txt", func(p *ucd.Parser) {
+		r := p.Rune(0)
+		s := strings.SplitN(p.String(ucd.DecompMapping), " ", 2)
+		if !maps[s[0]] {
+			return
+		}
+		x, err := strconv.ParseUint(s[1], 16, 32)
+		if err != nil {
+			log.Fatalf("Error parsing rune %q", s[1])
+		}
+		if inverse[r] != 0 || inverse[rune(x)] != 0 {
+			log.Fatalf("Circular dependency in mapping between %U and %U", r, x)
+		}
+		inverse[r] = rune(x)
+		inverse[rune(x)] = r
+	})
+
+	// <rune range>;<type>
+	parse("EastAsianWidth.txt", func(p *ucd.Parser) {
+		tag, ok := typeMap[p.String(1)]
+		if !ok {
+			log.Fatalf("Unknown width type %q", p.String(1))
+		}
+		r := p.Rune(0)
+		alt, ok := inverse[r]
+		if tag == tagFullwidth || tag == tagHalfwidth && r != wonSign {
+			tag |= tagNeedsFold
+			if !ok {
+				log.Fatalf("Narrow or wide rune %U has no decomposition", r)
+			}
+		}
+		f(r, tag, alt)
+	})
+}
+
+// parse calls f for each entry in the given UCD file.
+func parse(filename string, f func(p *ucd.Parser)) {
+	r := gen.OpenUCDFile(filename)
+	defer r.Close()
+
+	p := ucd.New(r)
+	for p.Next() {
+		f(p)
+	}
+	if err := p.Err(); err != nil {
+		log.Fatal(err)
+	}
+}
diff --git a/go/src/golang.org/x/text/width/example_test.go b/go/src/golang.org/x/text/width/example_test.go
new file mode 100644
index 0000000..62adba6
--- /dev/null
+++ b/go/src/golang.org/x/text/width/example_test.go
@@ -0,0 +1,52 @@
+// Copyright 2015 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 width_test
+
+import (
+	"fmt"
+
+	"golang.org/x/text/width"
+)
+
+func ExampleTransformer_fold() {
+	s := "abヲ₩○¥A"
+	f := width.Fold.String(s)
+	fmt.Printf("%U: %s\n", []rune(s), s)
+	fmt.Printf("%U: %s\n", []rune(f), f)
+
+	// Output:
+	// [U+0061 U+0062 U+FF66 U+FFE6 U+FFEE U+FFE5 U+FF21]: abヲ₩○¥A
+	// [U+0061 U+0062 U+30F2 U+20A9 U+25CB U+00A5 U+0041]: abヲ₩○¥A
+}
+
+func ExampleTransformer_widen() {
+	s := "ab¥ヲ₩○"
+	w := width.Widen.String(s)
+	fmt.Printf("%U: %s\n", []rune(s), s)
+	fmt.Printf("%U: %s\n", []rune(w), w)
+
+	// Output:
+	// [U+0061 U+0062 U+00A5 U+FF66 U+20A9 U+FFEE]: ab¥ヲ₩○
+	// [U+FF41 U+FF42 U+FFE5 U+30F2 U+FFE6 U+25CB]: ab¥ヲ₩○
+}
+
+func ExampleTransformer_narrow() {
+	s := "abヲ₩○¥A"
+	n := width.Narrow.String(s)
+	fmt.Printf("%U: %s\n", []rune(s), s)
+	fmt.Printf("%U: %s\n", []rune(n), n)
+
+	// Ambiguous characters with a halfwidth equivalent get mapped as well.
+	s = "←"
+	n = width.Narrow.String(s)
+	fmt.Printf("%U: %s\n", []rune(s), s)
+	fmt.Printf("%U: %s\n", []rune(n), n)
+
+	// Output:
+	// [U+0061 U+0062 U+30F2 U+FFE6 U+25CB U+FFE5 U+FF21]: abヲ₩○¥A
+	// [U+0061 U+0062 U+FF66 U+20A9 U+FFEE U+00A5 U+0041]: abヲ₩○¥A
+	// [U+2190]: ←
+	// [U+FFE9]: ←
+}
diff --git a/go/src/golang.org/x/text/width/gen.go b/go/src/golang.org/x/text/width/gen.go
new file mode 100644
index 0000000..89aaba8
--- /dev/null
+++ b/go/src/golang.org/x/text/width/gen.go
@@ -0,0 +1,133 @@
+// Copyright 2015 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.
+
+// +build ignore
+
+// This program generates the trie for width operations. The generated table
+// includes width category information as well as the normalization mappings.
+package main
+
+import (
+	"bytes"
+	"fmt"
+	"io"
+	"io/ioutil"
+	"log"
+	"math"
+	"unicode/utf8"
+
+	"golang.org/x/text/internal/gen"
+	"golang.org/x/text/internal/triegen"
+)
+
+// See gen_common.go for flags.
+
+func main() {
+	gen.Init()
+	genTables()
+	genTests()
+	repackage("gen_trieval.go", "trieval.go")
+	repackage("gen_common.go", "common_test.go")
+}
+
+func genTables() {
+	t := triegen.NewTrie("width")
+	// fold and inverse mappings. See mapComment for a description of the format
+	// of each entry. Add dummy value to make an index of 0 mean no mapping.
+	inverse := [][4]byte{{}}
+	mapping := map[[4]byte]int{[4]byte{}: 0}
+
+	getWidthData(func(r rune, tag elem, alt rune) {
+		idx := 0
+		if alt != 0 {
+			var buf [4]byte
+			buf[0] = byte(utf8.EncodeRune(buf[1:], alt))
+			s := string(r)
+			buf[buf[0]] ^= s[len(s)-1]
+			var ok bool
+			if idx, ok = mapping[buf]; !ok {
+				idx = len(mapping)
+				if idx > math.MaxUint8 {
+					log.Fatalf("Index %d does not fit in a byte.", idx)
+				}
+				mapping[buf] = idx
+				inverse = append(inverse, buf)
+			}
+		}
+		t.Insert(r, uint64(tag|elem(idx)))
+	})
+
+	w := &bytes.Buffer{}
+	gen.WriteUnicodeVersion(w)
+
+	sz, err := t.Gen(w)
+	if err != nil {
+		log.Fatal(err)
+	}
+
+	sz += writeMappings(w, inverse)
+
+	fmt.Fprintf(w, "// Total table size %d bytes (%dKiB)\n", sz, sz/1024)
+
+	gen.WriteGoFile(*outputFile, "width", w.Bytes())
+}
+
+const inverseDataComment = `
+// inverseData contains 4-byte entries of the following format:
+//   <length> <modified UTF-8-encoded rune> <0 padding>
+// The last byte of the UTF-8-encoded rune is xor-ed with the last byte of the
+// UTF-8 encoding of the original rune. Mappings often have the following
+// pattern:
+//   A -> A  (U+FF21 -> U+0041)
+//   B -> B  (U+FF22 -> U+0042)
+//   ...
+// By xor-ing the last byte the same entry can be shared by many mappings. This
+// reduces the total number of distinct entries by about two thirds.
+// The resulting entry for the aforementioned mappings is
+//   { 0x01, 0xE0, 0x00, 0x00 }
+// Using this entry to map U+FF21 (UTF-8 [EF BC A1]), we get
+//   E0 ^ A1 = 41.
+// Similarly, for U+FF22 (UTF-8 [EF BC A2]), we get
+//   E0 ^ A2 = 42.
+// Note that because of the xor-ing, the byte sequence stored in the entry is
+// not valid UTF-8.`
+
+func writeMappings(w io.Writer, data [][4]byte) int {
+	fmt.Fprintln(w, inverseDataComment)
+	fmt.Fprintf(w, "var inverseData = [%d][4]byte{\n", len(data))
+	for _, x := range data {
+		fmt.Fprintf(w, "{ 0x%02x, 0x%02x, 0x%02x, 0x%02x },\n", x[0], x[1], x[2], x[3])
+	}
+	fmt.Fprintln(w, "}")
+	return len(data) * 4
+}
+
+func genTests() {
+	w := &bytes.Buffer{}
+	fmt.Fprintf(w, "\nvar mapRunes = map[rune]struct{r rune; e elem}{\n")
+	getWidthData(func(r rune, tag elem, alt rune) {
+		if alt != 0 {
+			fmt.Fprintf(w, "\t0x%X: {0x%X, 0x%X},\n", r, alt, tag)
+		}
+	})
+	fmt.Fprintln(w, "}")
+	gen.WriteGoFile("runes_test.go", "width", w.Bytes())
+}
+
+// repackage rewrites a file from belonging to package main to belonging to
+// package width.
+func repackage(inFile, outFile string) {
+	src, err := ioutil.ReadFile(inFile)
+	if err != nil {
+		log.Fatalf("reading %s: %v", inFile, err)
+	}
+	const toDelete = "package main\n\n"
+	i := bytes.Index(src, []byte(toDelete))
+	if i < 0 {
+		log.Fatalf("Could not find %q in gen_trieval.go", toDelete)
+	}
+	w := &bytes.Buffer{}
+	w.Write(src[i+len(toDelete):])
+	gen.WriteGoFile(outFile, "width", w.Bytes())
+}
diff --git a/go/src/golang.org/x/text/width/gen_common.go b/go/src/golang.org/x/text/width/gen_common.go
new file mode 100644
index 0000000..813792c
--- /dev/null
+++ b/go/src/golang.org/x/text/width/gen_common.go
@@ -0,0 +1,110 @@
+// Copyright 2015 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.
+
+// +build ignore
+
+package main
+
+// This code is shared between the main code generator and the test code.
+
+import (
+	"flag"
+	"log"
+	"strconv"
+	"strings"
+
+	"golang.org/x/text/internal/gen"
+	"golang.org/x/text/internal/ucd"
+)
+
+var (
+	outputFile = flag.String("out", "tables.go", "output file")
+)
+
+var typeMap = map[string]elem{
+	"A":  tagAmbiguous,
+	"N":  tagNeutral,
+	"Na": tagNarrow,
+	"W":  tagWide,
+	"F":  tagFullwidth,
+	"H":  tagHalfwidth,
+}
+
+// getWidthData calls f for every entry for which it is defined.
+//
+// f may be called multiple times for the same rune. The last call to f is the
+// correct value. f is not called for all runes. The default tag type is
+// Neutral.
+func getWidthData(f func(r rune, tag elem, alt rune)) {
+	// Set the default values for Unified Ideographs. In line with Annex 11,
+	// we encode full ranges instead of the defined runes in Unified_Ideograph.
+	for _, b := range []struct{ lo, hi rune }{
+		{0x4E00, 0x9FFF},   // the CJK Unified Ideographs block,
+		{0x3400, 0x4DBF},   // the CJK Unified Ideographs Externsion A block,
+		{0xF900, 0xFAFF},   // the CJK Compatibility Ideographs block,
+		{0x20000, 0x2FFFF}, // the Supplementary Ideographic Plane,
+		{0x30000, 0x3FFFF}, // the Tertiary Ideographic Plane,
+	} {
+		for r := b.lo; r <= b.hi; r++ {
+			f(r, tagWide, 0)
+		}
+	}
+
+	inverse := map[rune]rune{}
+	maps := map[string]bool{
+		"<wide>":   true,
+		"<narrow>": true,
+	}
+
+	// We cannot reuse package norm's decomposition, as we need an unexpanded
+	// decomposition. We make use of the opportunity to verify that the
+	// decomposition type is as expected.
+	parse("UnicodeData.txt", func(p *ucd.Parser) {
+		r := p.Rune(0)
+		s := strings.SplitN(p.String(ucd.DecompMapping), " ", 2)
+		if !maps[s[0]] {
+			return
+		}
+		x, err := strconv.ParseUint(s[1], 16, 32)
+		if err != nil {
+			log.Fatalf("Error parsing rune %q", s[1])
+		}
+		if inverse[r] != 0 || inverse[rune(x)] != 0 {
+			log.Fatalf("Circular dependency in mapping between %U and %U", r, x)
+		}
+		inverse[r] = rune(x)
+		inverse[rune(x)] = r
+	})
+
+	// <rune range>;<type>
+	parse("EastAsianWidth.txt", func(p *ucd.Parser) {
+		tag, ok := typeMap[p.String(1)]
+		if !ok {
+			log.Fatalf("Unknown width type %q", p.String(1))
+		}
+		r := p.Rune(0)
+		alt, ok := inverse[r]
+		if tag == tagFullwidth || tag == tagHalfwidth && r != wonSign {
+			tag |= tagNeedsFold
+			if !ok {
+				log.Fatalf("Narrow or wide rune %U has no decomposition", r)
+			}
+		}
+		f(r, tag, alt)
+	})
+}
+
+// parse calls f for each entry in the given UCD file.
+func parse(filename string, f func(p *ucd.Parser)) {
+	r := gen.OpenUCDFile(filename)
+	defer r.Close()
+
+	p := ucd.New(r)
+	for p.Next() {
+		f(p)
+	}
+	if err := p.Err(); err != nil {
+		log.Fatal(err)
+	}
+}
diff --git a/go/src/golang.org/x/text/width/gen_trieval.go b/go/src/golang.org/x/text/width/gen_trieval.go
new file mode 100644
index 0000000..c17334a
--- /dev/null
+++ b/go/src/golang.org/x/text/width/gen_trieval.go
@@ -0,0 +1,34 @@
+// Copyright 2015 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.
+
+// +build ignore
+
+package main
+
+// elem is an entry of the width trie. The high byte is used to encode the type
+// of the rune. The low byte is used to store the index to a mapping entry in
+// the inverseData array.
+type elem uint16
+
+const (
+	tagNeutral elem = iota << typeShift
+	tagAmbiguous
+	tagWide
+	tagNarrow
+	tagFullwidth
+	tagHalfwidth
+)
+
+const (
+	numTypeBits = 3
+	typeShift   = 16 - numTypeBits
+
+	// tagNeedsFold is true for all fullwidth and halfwidth runes except for
+	// the Won sign U+20A9.
+	tagNeedsFold = 0x1000
+
+	// The Korean Won sign is halfwidth, but SHOULD NOT be mapped to a wide
+	// variant.
+	wonSign rune = 0x20A9
+)
diff --git a/go/src/golang.org/x/text/width/kind_string.go b/go/src/golang.org/x/text/width/kind_string.go
new file mode 100644
index 0000000..7028c25
--- /dev/null
+++ b/go/src/golang.org/x/text/width/kind_string.go
@@ -0,0 +1,16 @@
+// generated by stringer -type=Kind; DO NOT EDIT
+
+package width
+
+import "fmt"
+
+const _Kind_name = "NeutralEastAsianAmbiguousEastAsianWideEastAsianNarrowEastAsianFullwidthEastAsianHalfwidth"
+
+var _Kind_index = [...]uint8{0, 7, 25, 38, 53, 71, 89}
+
+func (i Kind) String() string {
+	if i < 0 || i+1 >= Kind(len(_Kind_index)) {
+		return fmt.Sprintf("Kind(%d)", i)
+	}
+	return _Kind_name[_Kind_index[i]:_Kind_index[i+1]]
+}
diff --git a/go/src/golang.org/x/text/width/runes_test.go b/go/src/golang.org/x/text/width/runes_test.go
new file mode 100644
index 0000000..2a48c40
--- /dev/null
+++ b/go/src/golang.org/x/text/width/runes_test.go
@@ -0,0 +1,461 @@
+// This file was generated by go generate; DO NOT EDIT
+
+package width
+
+var mapRunes = map[rune]struct {
+	r rune
+	e elem
+}{
+	0x20:   {0x3000, 0x6000},
+	0x21:   {0xFF01, 0x6000},
+	0x22:   {0xFF02, 0x6000},
+	0x23:   {0xFF03, 0x6000},
+	0x24:   {0xFF04, 0x6000},
+	0x25:   {0xFF05, 0x6000},
+	0x26:   {0xFF06, 0x6000},
+	0x27:   {0xFF07, 0x6000},
+	0x28:   {0xFF08, 0x6000},
+	0x29:   {0xFF09, 0x6000},
+	0x2A:   {0xFF0A, 0x6000},
+	0x2B:   {0xFF0B, 0x6000},
+	0x2C:   {0xFF0C, 0x6000},
+	0x2D:   {0xFF0D, 0x6000},
+	0x2E:   {0xFF0E, 0x6000},
+	0x2F:   {0xFF0F, 0x6000},
+	0x30:   {0xFF10, 0x6000},
+	0x31:   {0xFF11, 0x6000},
+	0x32:   {0xFF12, 0x6000},
+	0x33:   {0xFF13, 0x6000},
+	0x34:   {0xFF14, 0x6000},
+	0x35:   {0xFF15, 0x6000},
+	0x36:   {0xFF16, 0x6000},
+	0x37:   {0xFF17, 0x6000},
+	0x38:   {0xFF18, 0x6000},
+	0x39:   {0xFF19, 0x6000},
+	0x3A:   {0xFF1A, 0x6000},
+	0x3B:   {0xFF1B, 0x6000},
+	0x3C:   {0xFF1C, 0x6000},
+	0x3D:   {0xFF1D, 0x6000},
+	0x3E:   {0xFF1E, 0x6000},
+	0x3F:   {0xFF1F, 0x6000},
+	0x40:   {0xFF20, 0x6000},
+	0x41:   {0xFF21, 0x6000},
+	0x42:   {0xFF22, 0x6000},
+	0x43:   {0xFF23, 0x6000},
+	0x44:   {0xFF24, 0x6000},
+	0x45:   {0xFF25, 0x6000},
+	0x46:   {0xFF26, 0x6000},
+	0x47:   {0xFF27, 0x6000},
+	0x48:   {0xFF28, 0x6000},
+	0x49:   {0xFF29, 0x6000},
+	0x4A:   {0xFF2A, 0x6000},
+	0x4B:   {0xFF2B, 0x6000},
+	0x4C:   {0xFF2C, 0x6000},
+	0x4D:   {0xFF2D, 0x6000},
+	0x4E:   {0xFF2E, 0x6000},
+	0x4F:   {0xFF2F, 0x6000},
+	0x50:   {0xFF30, 0x6000},
+	0x51:   {0xFF31, 0x6000},
+	0x52:   {0xFF32, 0x6000},
+	0x53:   {0xFF33, 0x6000},
+	0x54:   {0xFF34, 0x6000},
+	0x55:   {0xFF35, 0x6000},
+	0x56:   {0xFF36, 0x6000},
+	0x57:   {0xFF37, 0x6000},
+	0x58:   {0xFF38, 0x6000},
+	0x59:   {0xFF39, 0x6000},
+	0x5A:   {0xFF3A, 0x6000},
+	0x5B:   {0xFF3B, 0x6000},
+	0x5C:   {0xFF3C, 0x6000},
+	0x5D:   {0xFF3D, 0x6000},
+	0x5E:   {0xFF3E, 0x6000},
+	0x5F:   {0xFF3F, 0x6000},
+	0x60:   {0xFF40, 0x6000},
+	0x61:   {0xFF41, 0x6000},
+	0x62:   {0xFF42, 0x6000},
+	0x63:   {0xFF43, 0x6000},
+	0x64:   {0xFF44, 0x6000},
+	0x65:   {0xFF45, 0x6000},
+	0x66:   {0xFF46, 0x6000},
+	0x67:   {0xFF47, 0x6000},
+	0x68:   {0xFF48, 0x6000},
+	0x69:   {0xFF49, 0x6000},
+	0x6A:   {0xFF4A, 0x6000},
+	0x6B:   {0xFF4B, 0x6000},
+	0x6C:   {0xFF4C, 0x6000},
+	0x6D:   {0xFF4D, 0x6000},
+	0x6E:   {0xFF4E, 0x6000},
+	0x6F:   {0xFF4F, 0x6000},
+	0x70:   {0xFF50, 0x6000},
+	0x71:   {0xFF51, 0x6000},
+	0x72:   {0xFF52, 0x6000},
+	0x73:   {0xFF53, 0x6000},
+	0x74:   {0xFF54, 0x6000},
+	0x75:   {0xFF55, 0x6000},
+	0x76:   {0xFF56, 0x6000},
+	0x77:   {0xFF57, 0x6000},
+	0x78:   {0xFF58, 0x6000},
+	0x79:   {0xFF59, 0x6000},
+	0x7A:   {0xFF5A, 0x6000},
+	0x7B:   {0xFF5B, 0x6000},
+	0x7C:   {0xFF5C, 0x6000},
+	0x7D:   {0xFF5D, 0x6000},
+	0x7E:   {0xFF5E, 0x6000},
+	0xA2:   {0xFFE0, 0x6000},
+	0xA3:   {0xFFE1, 0x6000},
+	0xA5:   {0xFFE5, 0x6000},
+	0xA6:   {0xFFE4, 0x6000},
+	0xAC:   {0xFFE2, 0x6000},
+	0xAF:   {0xFFE3, 0x6000},
+	0x20A9: {0xFFE6, 0xA000},
+	0x2190: {0xFFE9, 0x2000},
+	0x2191: {0xFFEA, 0x2000},
+	0x2192: {0xFFEB, 0x2000},
+	0x2193: {0xFFEC, 0x2000},
+	0x2502: {0xFFE8, 0x2000},
+	0x25A0: {0xFFED, 0x2000},
+	0x25CB: {0xFFEE, 0x2000},
+	0x2985: {0xFF5F, 0x6000},
+	0x2986: {0xFF60, 0x6000},
+	0x3000: {0x20, 0x9000},
+	0x3001: {0xFF64, 0x4000},
+	0x3002: {0xFF61, 0x4000},
+	0x300C: {0xFF62, 0x4000},
+	0x300D: {0xFF63, 0x4000},
+	0x3099: {0xFF9E, 0x4000},
+	0x309A: {0xFF9F, 0x4000},
+	0x30A1: {0xFF67, 0x4000},
+	0x30A2: {0xFF71, 0x4000},
+	0x30A3: {0xFF68, 0x4000},
+	0x30A4: {0xFF72, 0x4000},
+	0x30A5: {0xFF69, 0x4000},
+	0x30A6: {0xFF73, 0x4000},
+	0x30A7: {0xFF6A, 0x4000},
+	0x30A8: {0xFF74, 0x4000},
+	0x30A9: {0xFF6B, 0x4000},
+	0x30AA: {0xFF75, 0x4000},
+	0x30AB: {0xFF76, 0x4000},
+	0x30AD: {0xFF77, 0x4000},
+	0x30AF: {0xFF78, 0x4000},
+	0x30B1: {0xFF79, 0x4000},
+	0x30B3: {0xFF7A, 0x4000},
+	0x30B5: {0xFF7B, 0x4000},
+	0x30B7: {0xFF7C, 0x4000},
+	0x30B9: {0xFF7D, 0x4000},
+	0x30BB: {0xFF7E, 0x4000},
+	0x30BD: {0xFF7F, 0x4000},
+	0x30BF: {0xFF80, 0x4000},
+	0x30C1: {0xFF81, 0x4000},
+	0x30C3: {0xFF6F, 0x4000},
+	0x30C4: {0xFF82, 0x4000},
+	0x30C6: {0xFF83, 0x4000},
+	0x30C8: {0xFF84, 0x4000},
+	0x30CA: {0xFF85, 0x4000},
+	0x30CB: {0xFF86, 0x4000},
+	0x30CC: {0xFF87, 0x4000},
+	0x30CD: {0xFF88, 0x4000},
+	0x30CE: {0xFF89, 0x4000},
+	0x30CF: {0xFF8A, 0x4000},
+	0x30D2: {0xFF8B, 0x4000},
+	0x30D5: {0xFF8C, 0x4000},
+	0x30D8: {0xFF8D, 0x4000},
+	0x30DB: {0xFF8E, 0x4000},
+	0x30DE: {0xFF8F, 0x4000},
+	0x30DF: {0xFF90, 0x4000},
+	0x30E0: {0xFF91, 0x4000},
+	0x30E1: {0xFF92, 0x4000},
+	0x30E2: {0xFF93, 0x4000},
+	0x30E3: {0xFF6C, 0x4000},
+	0x30E4: {0xFF94, 0x4000},
+	0x30E5: {0xFF6D, 0x4000},
+	0x30E6: {0xFF95, 0x4000},
+	0x30E7: {0xFF6E, 0x4000},
+	0x30E8: {0xFF96, 0x4000},
+	0x30E9: {0xFF97, 0x4000},
+	0x30EA: {0xFF98, 0x4000},
+	0x30EB: {0xFF99, 0x4000},
+	0x30EC: {0xFF9A, 0x4000},
+	0x30ED: {0xFF9B, 0x4000},
+	0x30EF: {0xFF9C, 0x4000},
+	0x30F2: {0xFF66, 0x4000},
+	0x30F3: {0xFF9D, 0x4000},
+	0x30FB: {0xFF65, 0x4000},
+	0x30FC: {0xFF70, 0x4000},
+	0x3131: {0xFFA1, 0x4000},
+	0x3132: {0xFFA2, 0x4000},
+	0x3133: {0xFFA3, 0x4000},
+	0x3134: {0xFFA4, 0x4000},
+	0x3135: {0xFFA5, 0x4000},
+	0x3136: {0xFFA6, 0x4000},
+	0x3137: {0xFFA7, 0x4000},
+	0x3138: {0xFFA8, 0x4000},
+	0x3139: {0xFFA9, 0x4000},
+	0x313A: {0xFFAA, 0x4000},
+	0x313B: {0xFFAB, 0x4000},
+	0x313C: {0xFFAC, 0x4000},
+	0x313D: {0xFFAD, 0x4000},
+	0x313E: {0xFFAE, 0x4000},
+	0x313F: {0xFFAF, 0x4000},
+	0x3140: {0xFFB0, 0x4000},
+	0x3141: {0xFFB1, 0x4000},
+	0x3142: {0xFFB2, 0x4000},
+	0x3143: {0xFFB3, 0x4000},
+	0x3144: {0xFFB4, 0x4000},
+	0x3145: {0xFFB5, 0x4000},
+	0x3146: {0xFFB6, 0x4000},
+	0x3147: {0xFFB7, 0x4000},
+	0x3148: {0xFFB8, 0x4000},
+	0x3149: {0xFFB9, 0x4000},
+	0x314A: {0xFFBA, 0x4000},
+	0x314B: {0xFFBB, 0x4000},
+	0x314C: {0xFFBC, 0x4000},
+	0x314D: {0xFFBD, 0x4000},
+	0x314E: {0xFFBE, 0x4000},
+	0x314F: {0xFFC2, 0x4000},
+	0x3150: {0xFFC3, 0x4000},
+	0x3151: {0xFFC4, 0x4000},
+	0x3152: {0xFFC5, 0x4000},
+	0x3153: {0xFFC6, 0x4000},
+	0x3154: {0xFFC7, 0x4000},
+	0x3155: {0xFFCA, 0x4000},
+	0x3156: {0xFFCB, 0x4000},
+	0x3157: {0xFFCC, 0x4000},
+	0x3158: {0xFFCD, 0x4000},
+	0x3159: {0xFFCE, 0x4000},
+	0x315A: {0xFFCF, 0x4000},
+	0x315B: {0xFFD2, 0x4000},
+	0x315C: {0xFFD3, 0x4000},
+	0x315D: {0xFFD4, 0x4000},
+	0x315E: {0xFFD5, 0x4000},
+	0x315F: {0xFFD6, 0x4000},
+	0x3160: {0xFFD7, 0x4000},
+	0x3161: {0xFFDA, 0x4000},
+	0x3162: {0xFFDB, 0x4000},
+	0x3163: {0xFFDC, 0x4000},
+	0x3164: {0xFFA0, 0x4000},
+	0xFF01: {0x21, 0x9000},
+	0xFF02: {0x22, 0x9000},
+	0xFF03: {0x23, 0x9000},
+	0xFF04: {0x24, 0x9000},
+	0xFF05: {0x25, 0x9000},
+	0xFF06: {0x26, 0x9000},
+	0xFF07: {0x27, 0x9000},
+	0xFF08: {0x28, 0x9000},
+	0xFF09: {0x29, 0x9000},
+	0xFF0A: {0x2A, 0x9000},
+	0xFF0B: {0x2B, 0x9000},
+	0xFF0C: {0x2C, 0x9000},
+	0xFF0D: {0x2D, 0x9000},
+	0xFF0E: {0x2E, 0x9000},
+	0xFF0F: {0x2F, 0x9000},
+	0xFF10: {0x30, 0x9000},
+	0xFF11: {0x31, 0x9000},
+	0xFF12: {0x32, 0x9000},
+	0xFF13: {0x33, 0x9000},
+	0xFF14: {0x34, 0x9000},
+	0xFF15: {0x35, 0x9000},
+	0xFF16: {0x36, 0x9000},
+	0xFF17: {0x37, 0x9000},
+	0xFF18: {0x38, 0x9000},
+	0xFF19: {0x39, 0x9000},
+	0xFF1A: {0x3A, 0x9000},
+	0xFF1B: {0x3B, 0x9000},
+	0xFF1C: {0x3C, 0x9000},
+	0xFF1D: {0x3D, 0x9000},
+	0xFF1E: {0x3E, 0x9000},
+	0xFF1F: {0x3F, 0x9000},
+	0xFF20: {0x40, 0x9000},
+	0xFF21: {0x41, 0x9000},
+	0xFF22: {0x42, 0x9000},
+	0xFF23: {0x43, 0x9000},
+	0xFF24: {0x44, 0x9000},
+	0xFF25: {0x45, 0x9000},
+	0xFF26: {0x46, 0x9000},
+	0xFF27: {0x47, 0x9000},
+	0xFF28: {0x48, 0x9000},
+	0xFF29: {0x49, 0x9000},
+	0xFF2A: {0x4A, 0x9000},
+	0xFF2B: {0x4B, 0x9000},
+	0xFF2C: {0x4C, 0x9000},
+	0xFF2D: {0x4D, 0x9000},
+	0xFF2E: {0x4E, 0x9000},
+	0xFF2F: {0x4F, 0x9000},
+	0xFF30: {0x50, 0x9000},
+	0xFF31: {0x51, 0x9000},
+	0xFF32: {0x52, 0x9000},
+	0xFF33: {0x53, 0x9000},
+	0xFF34: {0x54, 0x9000},
+	0xFF35: {0x55, 0x9000},
+	0xFF36: {0x56, 0x9000},
+	0xFF37: {0x57, 0x9000},
+	0xFF38: {0x58, 0x9000},
+	0xFF39: {0x59, 0x9000},
+	0xFF3A: {0x5A, 0x9000},
+	0xFF3B: {0x5B, 0x9000},
+	0xFF3C: {0x5C, 0x9000},
+	0xFF3D: {0x5D, 0x9000},
+	0xFF3E: {0x5E, 0x9000},
+	0xFF3F: {0x5F, 0x9000},
+	0xFF40: {0x60, 0x9000},
+	0xFF41: {0x61, 0x9000},
+	0xFF42: {0x62, 0x9000},
+	0xFF43: {0x63, 0x9000},
+	0xFF44: {0x64, 0x9000},
+	0xFF45: {0x65, 0x9000},
+	0xFF46: {0x66, 0x9000},
+	0xFF47: {0x67, 0x9000},
+	0xFF48: {0x68, 0x9000},
+	0xFF49: {0x69, 0x9000},
+	0xFF4A: {0x6A, 0x9000},
+	0xFF4B: {0x6B, 0x9000},
+	0xFF4C: {0x6C, 0x9000},
+	0xFF4D: {0x6D, 0x9000},
+	0xFF4E: {0x6E, 0x9000},
+	0xFF4F: {0x6F, 0x9000},
+	0xFF50: {0x70, 0x9000},
+	0xFF51: {0x71, 0x9000},
+	0xFF52: {0x72, 0x9000},
+	0xFF53: {0x73, 0x9000},
+	0xFF54: {0x74, 0x9000},
+	0xFF55: {0x75, 0x9000},
+	0xFF56: {0x76, 0x9000},
+	0xFF57: {0x77, 0x9000},
+	0xFF58: {0x78, 0x9000},
+	0xFF59: {0x79, 0x9000},
+	0xFF5A: {0x7A, 0x9000},
+	0xFF5B: {0x7B, 0x9000},
+	0xFF5C: {0x7C, 0x9000},
+	0xFF5D: {0x7D, 0x9000},
+	0xFF5E: {0x7E, 0x9000},
+	0xFF5F: {0x2985, 0x9000},
+	0xFF60: {0x2986, 0x9000},
+	0xFF61: {0x3002, 0xB000},
+	0xFF62: {0x300C, 0xB000},
+	0xFF63: {0x300D, 0xB000},
+	0xFF64: {0x3001, 0xB000},
+	0xFF65: {0x30FB, 0xB000},
+	0xFF66: {0x30F2, 0xB000},
+	0xFF67: {0x30A1, 0xB000},
+	0xFF68: {0x30A3, 0xB000},
+	0xFF69: {0x30A5, 0xB000},
+	0xFF6A: {0x30A7, 0xB000},
+	0xFF6B: {0x30A9, 0xB000},
+	0xFF6C: {0x30E3, 0xB000},
+	0xFF6D: {0x30E5, 0xB000},
+	0xFF6E: {0x30E7, 0xB000},
+	0xFF6F: {0x30C3, 0xB000},
+	0xFF70: {0x30FC, 0xB000},
+	0xFF71: {0x30A2, 0xB000},
+	0xFF72: {0x30A4, 0xB000},
+	0xFF73: {0x30A6, 0xB000},
+	0xFF74: {0x30A8, 0xB000},
+	0xFF75: {0x30AA, 0xB000},
+	0xFF76: {0x30AB, 0xB000},
+	0xFF77: {0x30AD, 0xB000},
+	0xFF78: {0x30AF, 0xB000},
+	0xFF79: {0x30B1, 0xB000},
+	0xFF7A: {0x30B3, 0xB000},
+	0xFF7B: {0x30B5, 0xB000},
+	0xFF7C: {0x30B7, 0xB000},
+	0xFF7D: {0x30B9, 0xB000},
+	0xFF7E: {0x30BB, 0xB000},
+	0xFF7F: {0x30BD, 0xB000},
+	0xFF80: {0x30BF, 0xB000},
+	0xFF81: {0x30C1, 0xB000},
+	0xFF82: {0x30C4, 0xB000},
+	0xFF83: {0x30C6, 0xB000},
+	0xFF84: {0x30C8, 0xB000},
+	0xFF85: {0x30CA, 0xB000},
+	0xFF86: {0x30CB, 0xB000},
+	0xFF87: {0x30CC, 0xB000},
+	0xFF88: {0x30CD, 0xB000},
+	0xFF89: {0x30CE, 0xB000},
+	0xFF8A: {0x30CF, 0xB000},
+	0xFF8B: {0x30D2, 0xB000},
+	0xFF8C: {0x30D5, 0xB000},
+	0xFF8D: {0x30D8, 0xB000},
+	0xFF8E: {0x30DB, 0xB000},
+	0xFF8F: {0x30DE, 0xB000},
+	0xFF90: {0x30DF, 0xB000},
+	0xFF91: {0x30E0, 0xB000},
+	0xFF92: {0x30E1, 0xB000},
+	0xFF93: {0x30E2, 0xB000},
+	0xFF94: {0x30E4, 0xB000},
+	0xFF95: {0x30E6, 0xB000},
+	0xFF96: {0x30E8, 0xB000},
+	0xFF97: {0x30E9, 0xB000},
+	0xFF98: {0x30EA, 0xB000},
+	0xFF99: {0x30EB, 0xB000},
+	0xFF9A: {0x30EC, 0xB000},
+	0xFF9B: {0x30ED, 0xB000},
+	0xFF9C: {0x30EF, 0xB000},
+	0xFF9D: {0x30F3, 0xB000},
+	0xFF9E: {0x3099, 0xB000},
+	0xFF9F: {0x309A, 0xB000},
+	0xFFA0: {0x3164, 0xB000},
+	0xFFA1: {0x3131, 0xB000},
+	0xFFA2: {0x3132, 0xB000},
+	0xFFA3: {0x3133, 0xB000},
+	0xFFA4: {0x3134, 0xB000},
+	0xFFA5: {0x3135, 0xB000},
+	0xFFA6: {0x3136, 0xB000},
+	0xFFA7: {0x3137, 0xB000},
+	0xFFA8: {0x3138, 0xB000},
+	0xFFA9: {0x3139, 0xB000},
+	0xFFAA: {0x313A, 0xB000},
+	0xFFAB: {0x313B, 0xB000},
+	0xFFAC: {0x313C, 0xB000},
+	0xFFAD: {0x313D, 0xB000},
+	0xFFAE: {0x313E, 0xB000},
+	0xFFAF: {0x313F, 0xB000},
+	0xFFB0: {0x3140, 0xB000},
+	0xFFB1: {0x3141, 0xB000},
+	0xFFB2: {0x3142, 0xB000},
+	0xFFB3: {0x3143, 0xB000},
+	0xFFB4: {0x3144, 0xB000},
+	0xFFB5: {0x3145, 0xB000},
+	0xFFB6: {0x3146, 0xB000},
+	0xFFB7: {0x3147, 0xB000},
+	0xFFB8: {0x3148, 0xB000},
+	0xFFB9: {0x3149, 0xB000},
+	0xFFBA: {0x314A, 0xB000},
+	0xFFBB: {0x314B, 0xB000},
+	0xFFBC: {0x314C, 0xB000},
+	0xFFBD: {0x314D, 0xB000},
+	0xFFBE: {0x314E, 0xB000},
+	0xFFC2: {0x314F, 0xB000},
+	0xFFC3: {0x3150, 0xB000},
+	0xFFC4: {0x3151, 0xB000},
+	0xFFC5: {0x3152, 0xB000},
+	0xFFC6: {0x3153, 0xB000},
+	0xFFC7: {0x3154, 0xB000},
+	0xFFCA: {0x3155, 0xB000},
+	0xFFCB: {0x3156, 0xB000},
+	0xFFCC: {0x3157, 0xB000},
+	0xFFCD: {0x3158, 0xB000},
+	0xFFCE: {0x3159, 0xB000},
+	0xFFCF: {0x315A, 0xB000},
+	0xFFD2: {0x315B, 0xB000},
+	0xFFD3: {0x315C, 0xB000},
+	0xFFD4: {0x315D, 0xB000},
+	0xFFD5: {0x315E, 0xB000},
+	0xFFD6: {0x315F, 0xB000},
+	0xFFD7: {0x3160, 0xB000},
+	0xFFDA: {0x3161, 0xB000},
+	0xFFDB: {0x3162, 0xB000},
+	0xFFDC: {0x3163, 0xB000},
+	0xFFE0: {0xA2, 0x9000},
+	0xFFE1: {0xA3, 0x9000},
+	0xFFE2: {0xAC, 0x9000},
+	0xFFE3: {0xAF, 0x9000},
+	0xFFE4: {0xA6, 0x9000},
+	0xFFE5: {0xA5, 0x9000},
+	0xFFE6: {0x20A9, 0x9000},
+	0xFFE8: {0x2502, 0xB000},
+	0xFFE9: {0x2190, 0xB000},
+	0xFFEA: {0x2191, 0xB000},
+	0xFFEB: {0x2192, 0xB000},
+	0xFFEC: {0x2193, 0xB000},
+	0xFFED: {0x25A0, 0xB000},
+	0xFFEE: {0x25CB, 0xB000},
+}
diff --git a/go/src/golang.org/x/text/width/tables.go b/go/src/golang.org/x/text/width/tables.go
new file mode 100644
index 0000000..7b7f0a9
--- /dev/null
+++ b/go/src/golang.org/x/text/width/tables.go
@@ -0,0 +1,1092 @@
+// This file was generated by go generate; DO NOT EDIT
+
+package width
+
+// UnicodeVersion is the Unicode version from which the tables in this package are derived.
+const UnicodeVersion = "8.0.0"
+
+// lookup returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *widthTrie) lookup(s []byte) (v uint16, sz int) {
+	c0 := s[0]
+	switch {
+	case c0 < 0x80: // is ASCII
+		return widthValues[c0], 1
+	case c0 < 0xC0:
+		return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+	case c0 < 0xE0: // 2-byte UTF-8
+		if len(s) < 2 {
+			return 0, 0
+		}
+		i := widthIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c1), 2
+	case c0 < 0xF0: // 3-byte UTF-8
+		if len(s) < 3 {
+			return 0, 0
+		}
+		i := widthIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = widthIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c2), 3
+	case c0 < 0xF8: // 4-byte UTF-8
+		if len(s) < 4 {
+			return 0, 0
+		}
+		i := widthIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = widthIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o = uint32(i)<<6 + uint32(c2)
+		i = widthIndex[o]
+		c3 := s[3]
+		if c3 < 0x80 || 0xC0 <= c3 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c3), 4
+	}
+	// Illegal rune
+	return 0, 1
+}
+
+// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *widthTrie) lookupUnsafe(s []byte) uint16 {
+	c0 := s[0]
+	if c0 < 0x80 { // is ASCII
+		return widthValues[c0]
+	}
+	i := widthIndex[c0]
+	if c0 < 0xE0 { // 2-byte UTF-8
+		return t.lookupValue(uint32(i), s[1])
+	}
+	i = widthIndex[uint32(i)<<6+uint32(s[1])]
+	if c0 < 0xF0 { // 3-byte UTF-8
+		return t.lookupValue(uint32(i), s[2])
+	}
+	i = widthIndex[uint32(i)<<6+uint32(s[2])]
+	if c0 < 0xF8 { // 4-byte UTF-8
+		return t.lookupValue(uint32(i), s[3])
+	}
+	return 0
+}
+
+// lookupString returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *widthTrie) lookupString(s string) (v uint16, sz int) {
+	c0 := s[0]
+	switch {
+	case c0 < 0x80: // is ASCII
+		return widthValues[c0], 1
+	case c0 < 0xC0:
+		return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+	case c0 < 0xE0: // 2-byte UTF-8
+		if len(s) < 2 {
+			return 0, 0
+		}
+		i := widthIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c1), 2
+	case c0 < 0xF0: // 3-byte UTF-8
+		if len(s) < 3 {
+			return 0, 0
+		}
+		i := widthIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = widthIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c2), 3
+	case c0 < 0xF8: // 4-byte UTF-8
+		if len(s) < 4 {
+			return 0, 0
+		}
+		i := widthIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = widthIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o = uint32(i)<<6 + uint32(c2)
+		i = widthIndex[o]
+		c3 := s[3]
+		if c3 < 0x80 || 0xC0 <= c3 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c3), 4
+	}
+	// Illegal rune
+	return 0, 1
+}
+
+// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *widthTrie) lookupStringUnsafe(s string) uint16 {
+	c0 := s[0]
+	if c0 < 0x80 { // is ASCII
+		return widthValues[c0]
+	}
+	i := widthIndex[c0]
+	if c0 < 0xE0 { // 2-byte UTF-8
+		return t.lookupValue(uint32(i), s[1])
+	}
+	i = widthIndex[uint32(i)<<6+uint32(s[1])]
+	if c0 < 0xF0 { // 3-byte UTF-8
+		return t.lookupValue(uint32(i), s[2])
+	}
+	i = widthIndex[uint32(i)<<6+uint32(s[2])]
+	if c0 < 0xF8 { // 4-byte UTF-8
+		return t.lookupValue(uint32(i), s[3])
+	}
+	return 0
+}
+
+// widthTrie. Total size: 10880 bytes (10.62 KiB). Checksum: 7248598b914622aa.
+type widthTrie struct{}
+
+func newWidthTrie(i int) *widthTrie {
+	return &widthTrie{}
+}
+
+// lookupValue determines the type of block n and looks up the value for b.
+func (t *widthTrie) lookupValue(n uint32, b byte) uint16 {
+	switch {
+	default:
+		return uint16(widthValues[n<<6+uint32(b)])
+	}
+}
+
+// widthValues: 75 blocks, 4800 entries, 9600 bytes
+// The third block is the zero block.
+var widthValues = [4800]uint16{
+	// Block 0x0, offset 0x0
+	0x20: 0x6001, 0x21: 0x6002, 0x22: 0x6002, 0x23: 0x6002,
+	0x24: 0x6002, 0x25: 0x6002, 0x26: 0x6002, 0x27: 0x6002, 0x28: 0x6002, 0x29: 0x6002,
+	0x2a: 0x6002, 0x2b: 0x6002, 0x2c: 0x6002, 0x2d: 0x6002, 0x2e: 0x6002, 0x2f: 0x6002,
+	0x30: 0x6002, 0x31: 0x6002, 0x32: 0x6002, 0x33: 0x6002, 0x34: 0x6002, 0x35: 0x6002,
+	0x36: 0x6002, 0x37: 0x6002, 0x38: 0x6002, 0x39: 0x6002, 0x3a: 0x6002, 0x3b: 0x6002,
+	0x3c: 0x6002, 0x3d: 0x6002, 0x3e: 0x6002, 0x3f: 0x6002,
+	// Block 0x1, offset 0x40
+	0x40: 0x6003, 0x41: 0x6003, 0x42: 0x6003, 0x43: 0x6003, 0x44: 0x6003, 0x45: 0x6003,
+	0x46: 0x6003, 0x47: 0x6003, 0x48: 0x6003, 0x49: 0x6003, 0x4a: 0x6003, 0x4b: 0x6003,
+	0x4c: 0x6003, 0x4d: 0x6003, 0x4e: 0x6003, 0x4f: 0x6003, 0x50: 0x6003, 0x51: 0x6003,
+	0x52: 0x6003, 0x53: 0x6003, 0x54: 0x6003, 0x55: 0x6003, 0x56: 0x6003, 0x57: 0x6003,
+	0x58: 0x6003, 0x59: 0x6003, 0x5a: 0x6003, 0x5b: 0x6003, 0x5c: 0x6003, 0x5d: 0x6003,
+	0x5e: 0x6003, 0x5f: 0x6003, 0x60: 0x6004, 0x61: 0x6004, 0x62: 0x6004, 0x63: 0x6004,
+	0x64: 0x6004, 0x65: 0x6004, 0x66: 0x6004, 0x67: 0x6004, 0x68: 0x6004, 0x69: 0x6004,
+	0x6a: 0x6004, 0x6b: 0x6004, 0x6c: 0x6004, 0x6d: 0x6004, 0x6e: 0x6004, 0x6f: 0x6004,
+	0x70: 0x6004, 0x71: 0x6004, 0x72: 0x6004, 0x73: 0x6004, 0x74: 0x6004, 0x75: 0x6004,
+	0x76: 0x6004, 0x77: 0x6004, 0x78: 0x6004, 0x79: 0x6004, 0x7a: 0x6004, 0x7b: 0x6004,
+	0x7c: 0x6004, 0x7d: 0x6004, 0x7e: 0x6004,
+	// Block 0x2, offset 0x80
+	// Block 0x3, offset 0xc0
+	0xe1: 0x2000, 0xe2: 0x6005, 0xe3: 0x6005,
+	0xe4: 0x2000, 0xe5: 0x6006, 0xe6: 0x6005, 0xe7: 0x2000, 0xe8: 0x2000,
+	0xea: 0x2000, 0xec: 0x6007, 0xed: 0x2000, 0xee: 0x2000, 0xef: 0x6008,
+	0xf0: 0x2000, 0xf1: 0x2000, 0xf2: 0x2000, 0xf3: 0x2000, 0xf4: 0x2000,
+	0xf6: 0x2000, 0xf7: 0x2000, 0xf8: 0x2000, 0xf9: 0x2000, 0xfa: 0x2000,
+	0xfc: 0x2000, 0xfd: 0x2000, 0xfe: 0x2000, 0xff: 0x2000,
+	// Block 0x4, offset 0x100
+	0x106: 0x2000,
+	0x110: 0x2000,
+	0x117: 0x2000,
+	0x118: 0x2000,
+	0x11e: 0x2000, 0x11f: 0x2000, 0x120: 0x2000, 0x121: 0x2000,
+	0x126: 0x2000, 0x128: 0x2000, 0x129: 0x2000,
+	0x12a: 0x2000, 0x12c: 0x2000, 0x12d: 0x2000,
+	0x130: 0x2000, 0x132: 0x2000, 0x133: 0x2000,
+	0x137: 0x2000, 0x138: 0x2000, 0x139: 0x2000, 0x13a: 0x2000,
+	0x13c: 0x2000, 0x13e: 0x2000,
+	// Block 0x5, offset 0x140
+	0x141: 0x2000,
+	0x151: 0x2000,
+	0x153: 0x2000,
+	0x15b: 0x2000,
+	0x166: 0x2000, 0x167: 0x2000,
+	0x16b: 0x2000,
+	0x171: 0x2000, 0x172: 0x2000, 0x173: 0x2000,
+	0x178: 0x2000,
+	0x17f: 0x2000,
+	// Block 0x6, offset 0x180
+	0x180: 0x2000, 0x181: 0x2000, 0x182: 0x2000, 0x184: 0x2000,
+	0x188: 0x2000, 0x189: 0x2000, 0x18a: 0x2000, 0x18b: 0x2000,
+	0x18d: 0x2000,
+	0x192: 0x2000, 0x193: 0x2000,
+	0x1a6: 0x2000, 0x1a7: 0x2000,
+	0x1ab: 0x2000,
+	// Block 0x7, offset 0x1c0
+	0x1ce: 0x2000, 0x1d0: 0x2000,
+	0x1d2: 0x2000, 0x1d4: 0x2000, 0x1d6: 0x2000,
+	0x1d8: 0x2000, 0x1da: 0x2000, 0x1dc: 0x2000,
+	// Block 0x8, offset 0x200
+	0x211: 0x2000,
+	0x221: 0x2000,
+	// Block 0x9, offset 0x240
+	0x244: 0x2000,
+	0x247: 0x2000, 0x249: 0x2000, 0x24a: 0x2000, 0x24b: 0x2000,
+	0x24d: 0x2000, 0x250: 0x2000,
+	0x258: 0x2000, 0x259: 0x2000, 0x25a: 0x2000, 0x25b: 0x2000, 0x25d: 0x2000,
+	0x25f: 0x2000,
+	// Block 0xa, offset 0x280
+	0x280: 0x2000, 0x281: 0x2000, 0x282: 0x2000, 0x283: 0x2000, 0x284: 0x2000, 0x285: 0x2000,
+	0x286: 0x2000, 0x287: 0x2000, 0x288: 0x2000, 0x289: 0x2000, 0x28a: 0x2000, 0x28b: 0x2000,
+	0x28c: 0x2000, 0x28d: 0x2000, 0x28e: 0x2000, 0x28f: 0x2000, 0x290: 0x2000, 0x291: 0x2000,
+	0x292: 0x2000, 0x293: 0x2000, 0x294: 0x2000, 0x295: 0x2000, 0x296: 0x2000, 0x297: 0x2000,
+	0x298: 0x2000, 0x299: 0x2000, 0x29a: 0x2000, 0x29b: 0x2000, 0x29c: 0x2000, 0x29d: 0x2000,
+	0x29e: 0x2000, 0x29f: 0x2000, 0x2a0: 0x2000, 0x2a1: 0x2000, 0x2a2: 0x2000, 0x2a3: 0x2000,
+	0x2a4: 0x2000, 0x2a5: 0x2000, 0x2a6: 0x2000, 0x2a7: 0x2000, 0x2a8: 0x2000, 0x2a9: 0x2000,
+	0x2aa: 0x2000, 0x2ab: 0x2000, 0x2ac: 0x2000, 0x2ad: 0x2000, 0x2ae: 0x2000, 0x2af: 0x2000,
+	0x2b0: 0x2000, 0x2b1: 0x2000, 0x2b2: 0x2000, 0x2b3: 0x2000, 0x2b4: 0x2000, 0x2b5: 0x2000,
+	0x2b6: 0x2000, 0x2b7: 0x2000, 0x2b8: 0x2000, 0x2b9: 0x2000, 0x2ba: 0x2000, 0x2bb: 0x2000,
+	0x2bc: 0x2000, 0x2bd: 0x2000, 0x2be: 0x2000, 0x2bf: 0x2000,
+	// Block 0xb, offset 0x2c0
+	0x2c0: 0x2000, 0x2c1: 0x2000, 0x2c2: 0x2000, 0x2c3: 0x2000, 0x2c4: 0x2000, 0x2c5: 0x2000,
+	0x2c6: 0x2000, 0x2c7: 0x2000, 0x2c8: 0x2000, 0x2c9: 0x2000, 0x2ca: 0x2000, 0x2cb: 0x2000,
+	0x2cc: 0x2000, 0x2cd: 0x2000, 0x2ce: 0x2000, 0x2cf: 0x2000, 0x2d0: 0x2000, 0x2d1: 0x2000,
+	0x2d2: 0x2000, 0x2d3: 0x2000, 0x2d4: 0x2000, 0x2d5: 0x2000, 0x2d6: 0x2000, 0x2d7: 0x2000,
+	0x2d8: 0x2000, 0x2d9: 0x2000, 0x2da: 0x2000, 0x2db: 0x2000, 0x2dc: 0x2000, 0x2dd: 0x2000,
+	0x2de: 0x2000, 0x2df: 0x2000, 0x2e0: 0x2000, 0x2e1: 0x2000, 0x2e2: 0x2000, 0x2e3: 0x2000,
+	0x2e4: 0x2000, 0x2e5: 0x2000, 0x2e6: 0x2000, 0x2e7: 0x2000, 0x2e8: 0x2000, 0x2e9: 0x2000,
+	0x2ea: 0x2000, 0x2eb: 0x2000, 0x2ec: 0x2000, 0x2ed: 0x2000, 0x2ee: 0x2000, 0x2ef: 0x2000,
+	// Block 0xc, offset 0x300
+	0x311: 0x2000,
+	0x312: 0x2000, 0x313: 0x2000, 0x314: 0x2000, 0x315: 0x2000, 0x316: 0x2000, 0x317: 0x2000,
+	0x318: 0x2000, 0x319: 0x2000, 0x31a: 0x2000, 0x31b: 0x2000, 0x31c: 0x2000, 0x31d: 0x2000,
+	0x31e: 0x2000, 0x31f: 0x2000, 0x320: 0x2000, 0x321: 0x2000, 0x323: 0x2000,
+	0x324: 0x2000, 0x325: 0x2000, 0x326: 0x2000, 0x327: 0x2000, 0x328: 0x2000, 0x329: 0x2000,
+	0x331: 0x2000, 0x332: 0x2000, 0x333: 0x2000, 0x334: 0x2000, 0x335: 0x2000,
+	0x336: 0x2000, 0x337: 0x2000, 0x338: 0x2000, 0x339: 0x2000, 0x33a: 0x2000, 0x33b: 0x2000,
+	0x33c: 0x2000, 0x33d: 0x2000, 0x33e: 0x2000, 0x33f: 0x2000,
+	// Block 0xd, offset 0x340
+	0x340: 0x2000, 0x341: 0x2000, 0x343: 0x2000, 0x344: 0x2000, 0x345: 0x2000,
+	0x346: 0x2000, 0x347: 0x2000, 0x348: 0x2000, 0x349: 0x2000,
+	// Block 0xe, offset 0x380
+	0x381: 0x2000,
+	0x390: 0x2000, 0x391: 0x2000,
+	0x392: 0x2000, 0x393: 0x2000, 0x394: 0x2000, 0x395: 0x2000, 0x396: 0x2000, 0x397: 0x2000,
+	0x398: 0x2000, 0x399: 0x2000, 0x39a: 0x2000, 0x39b: 0x2000, 0x39c: 0x2000, 0x39d: 0x2000,
+	0x39e: 0x2000, 0x39f: 0x2000, 0x3a0: 0x2000, 0x3a1: 0x2000, 0x3a2: 0x2000, 0x3a3: 0x2000,
+	0x3a4: 0x2000, 0x3a5: 0x2000, 0x3a6: 0x2000, 0x3a7: 0x2000, 0x3a8: 0x2000, 0x3a9: 0x2000,
+	0x3aa: 0x2000, 0x3ab: 0x2000, 0x3ac: 0x2000, 0x3ad: 0x2000, 0x3ae: 0x2000, 0x3af: 0x2000,
+	0x3b0: 0x2000, 0x3b1: 0x2000, 0x3b2: 0x2000, 0x3b3: 0x2000, 0x3b4: 0x2000, 0x3b5: 0x2000,
+	0x3b6: 0x2000, 0x3b7: 0x2000, 0x3b8: 0x2000, 0x3b9: 0x2000, 0x3ba: 0x2000, 0x3bb: 0x2000,
+	0x3bc: 0x2000, 0x3bd: 0x2000, 0x3be: 0x2000, 0x3bf: 0x2000,
+	// Block 0xf, offset 0x3c0
+	0x3c0: 0x2000, 0x3c1: 0x2000, 0x3c2: 0x2000, 0x3c3: 0x2000, 0x3c4: 0x2000, 0x3c5: 0x2000,
+	0x3c6: 0x2000, 0x3c7: 0x2000, 0x3c8: 0x2000, 0x3c9: 0x2000, 0x3ca: 0x2000, 0x3cb: 0x2000,
+	0x3cc: 0x2000, 0x3cd: 0x2000, 0x3ce: 0x2000, 0x3cf: 0x2000, 0x3d1: 0x2000,
+	// Block 0x10, offset 0x400
+	0x400: 0x4000, 0x401: 0x4000, 0x402: 0x4000, 0x403: 0x4000, 0x404: 0x4000, 0x405: 0x4000,
+	0x406: 0x4000, 0x407: 0x4000, 0x408: 0x4000, 0x409: 0x4000, 0x40a: 0x4000, 0x40b: 0x4000,
+	0x40c: 0x4000, 0x40d: 0x4000, 0x40e: 0x4000, 0x40f: 0x4000, 0x410: 0x4000, 0x411: 0x4000,
+	0x412: 0x4000, 0x413: 0x4000, 0x414: 0x4000, 0x415: 0x4000, 0x416: 0x4000, 0x417: 0x4000,
+	0x418: 0x4000, 0x419: 0x4000, 0x41a: 0x4000, 0x41b: 0x4000, 0x41c: 0x4000, 0x41d: 0x4000,
+	0x41e: 0x4000, 0x41f: 0x4000, 0x420: 0x4000, 0x421: 0x4000, 0x422: 0x4000, 0x423: 0x4000,
+	0x424: 0x4000, 0x425: 0x4000, 0x426: 0x4000, 0x427: 0x4000, 0x428: 0x4000, 0x429: 0x4000,
+	0x42a: 0x4000, 0x42b: 0x4000, 0x42c: 0x4000, 0x42d: 0x4000, 0x42e: 0x4000, 0x42f: 0x4000,
+	0x430: 0x4000, 0x431: 0x4000, 0x432: 0x4000, 0x433: 0x4000, 0x434: 0x4000, 0x435: 0x4000,
+	0x436: 0x4000, 0x437: 0x4000, 0x438: 0x4000, 0x439: 0x4000, 0x43a: 0x4000, 0x43b: 0x4000,
+	0x43c: 0x4000, 0x43d: 0x4000, 0x43e: 0x4000, 0x43f: 0x4000,
+	// Block 0x11, offset 0x440
+	0x440: 0x4000, 0x441: 0x4000, 0x442: 0x4000, 0x443: 0x4000, 0x444: 0x4000, 0x445: 0x4000,
+	0x446: 0x4000, 0x447: 0x4000, 0x448: 0x4000, 0x449: 0x4000, 0x44a: 0x4000, 0x44b: 0x4000,
+	0x44c: 0x4000, 0x44d: 0x4000, 0x44e: 0x4000, 0x44f: 0x4000, 0x450: 0x4000, 0x451: 0x4000,
+	0x452: 0x4000, 0x453: 0x4000, 0x454: 0x4000, 0x455: 0x4000, 0x456: 0x4000, 0x457: 0x4000,
+	0x458: 0x4000, 0x459: 0x4000, 0x45a: 0x4000, 0x45b: 0x4000, 0x45c: 0x4000, 0x45d: 0x4000,
+	0x45e: 0x4000, 0x45f: 0x4000,
+	// Block 0x12, offset 0x480
+	0x490: 0x2000,
+	0x493: 0x2000, 0x494: 0x2000, 0x495: 0x2000, 0x496: 0x2000,
+	0x498: 0x2000, 0x499: 0x2000, 0x49c: 0x2000, 0x49d: 0x2000,
+	0x4a0: 0x2000, 0x4a1: 0x2000, 0x4a2: 0x2000,
+	0x4a4: 0x2000, 0x4a5: 0x2000, 0x4a6: 0x2000, 0x4a7: 0x2000,
+	0x4b0: 0x2000, 0x4b2: 0x2000, 0x4b3: 0x2000, 0x4b5: 0x2000,
+	0x4bb: 0x2000,
+	0x4be: 0x2000,
+	// Block 0x13, offset 0x4c0
+	0x4f4: 0x2000,
+	0x4ff: 0x2000,
+	// Block 0x14, offset 0x500
+	0x501: 0x2000, 0x502: 0x2000, 0x503: 0x2000, 0x504: 0x2000,
+	0x529: 0xa009,
+	0x52c: 0x2000,
+	// Block 0x15, offset 0x540
+	0x543: 0x2000, 0x545: 0x2000,
+	0x549: 0x2000,
+	0x553: 0x2000, 0x556: 0x2000,
+	0x561: 0x2000, 0x562: 0x2000,
+	0x566: 0x2000,
+	0x56b: 0x2000,
+	// Block 0x16, offset 0x580
+	0x593: 0x2000, 0x594: 0x2000,
+	0x59b: 0x2000, 0x59c: 0x2000, 0x59d: 0x2000,
+	0x59e: 0x2000, 0x5a0: 0x2000, 0x5a1: 0x2000, 0x5a2: 0x2000, 0x5a3: 0x2000,
+	0x5a4: 0x2000, 0x5a5: 0x2000, 0x5a6: 0x2000, 0x5a7: 0x2000, 0x5a8: 0x2000, 0x5a9: 0x2000,
+	0x5aa: 0x2000, 0x5ab: 0x2000,
+	0x5b0: 0x2000, 0x5b1: 0x2000, 0x5b2: 0x2000, 0x5b3: 0x2000, 0x5b4: 0x2000, 0x5b5: 0x2000,
+	0x5b6: 0x2000, 0x5b7: 0x2000, 0x5b8: 0x2000, 0x5b9: 0x2000,
+	// Block 0x17, offset 0x5c0
+	0x5c9: 0x2000,
+	0x5d0: 0x200a, 0x5d1: 0x200b,
+	0x5d2: 0x200a, 0x5d3: 0x200c, 0x5d4: 0x2000, 0x5d5: 0x2000, 0x5d6: 0x2000, 0x5d7: 0x2000,
+	0x5d8: 0x2000, 0x5d9: 0x2000,
+	0x5f8: 0x2000, 0x5f9: 0x2000,
+	// Block 0x18, offset 0x600
+	0x612: 0x2000, 0x614: 0x2000,
+	0x627: 0x2000,
+	// Block 0x19, offset 0x640
+	0x640: 0x2000, 0x642: 0x2000, 0x643: 0x2000,
+	0x647: 0x2000, 0x648: 0x2000, 0x64b: 0x2000,
+	0x64f: 0x2000, 0x651: 0x2000,
+	0x655: 0x2000,
+	0x65a: 0x2000, 0x65d: 0x2000,
+	0x65e: 0x2000, 0x65f: 0x2000, 0x660: 0x2000, 0x663: 0x2000,
+	0x665: 0x2000, 0x667: 0x2000, 0x668: 0x2000, 0x669: 0x2000,
+	0x66a: 0x2000, 0x66b: 0x2000, 0x66c: 0x2000, 0x66e: 0x2000,
+	0x674: 0x2000, 0x675: 0x2000,
+	0x676: 0x2000, 0x677: 0x2000,
+	0x67c: 0x2000, 0x67d: 0x2000,
+	// Block 0x1a, offset 0x680
+	0x688: 0x2000,
+	0x68c: 0x2000,
+	0x692: 0x2000,
+	0x6a0: 0x2000, 0x6a1: 0x2000,
+	0x6a4: 0x2000, 0x6a5: 0x2000, 0x6a6: 0x2000, 0x6a7: 0x2000,
+	0x6aa: 0x2000, 0x6ab: 0x2000, 0x6ae: 0x2000, 0x6af: 0x2000,
+	// Block 0x1b, offset 0x6c0
+	0x6c2: 0x2000, 0x6c3: 0x2000,
+	0x6c6: 0x2000, 0x6c7: 0x2000,
+	0x6d5: 0x2000,
+	0x6d9: 0x2000,
+	0x6e5: 0x2000,
+	0x6ff: 0x2000,
+	// Block 0x1c, offset 0x700
+	0x712: 0x2000,
+	0x729: 0x4000,
+	0x72a: 0x4000,
+	// Block 0x1d, offset 0x740
+	0x760: 0x2000, 0x761: 0x2000, 0x762: 0x2000, 0x763: 0x2000,
+	0x764: 0x2000, 0x765: 0x2000, 0x766: 0x2000, 0x767: 0x2000, 0x768: 0x2000, 0x769: 0x2000,
+	0x76a: 0x2000, 0x76b: 0x2000, 0x76c: 0x2000, 0x76d: 0x2000, 0x76e: 0x2000, 0x76f: 0x2000,
+	0x770: 0x2000, 0x771: 0x2000, 0x772: 0x2000, 0x773: 0x2000, 0x774: 0x2000, 0x775: 0x2000,
+	0x776: 0x2000, 0x777: 0x2000, 0x778: 0x2000, 0x779: 0x2000, 0x77a: 0x2000, 0x77b: 0x2000,
+	0x77c: 0x2000, 0x77d: 0x2000, 0x77e: 0x2000, 0x77f: 0x2000,
+	// Block 0x1e, offset 0x780
+	0x780: 0x2000, 0x781: 0x2000, 0x782: 0x2000, 0x783: 0x2000, 0x784: 0x2000, 0x785: 0x2000,
+	0x786: 0x2000, 0x787: 0x2000, 0x788: 0x2000, 0x789: 0x2000, 0x78a: 0x2000, 0x78b: 0x2000,
+	0x78c: 0x2000, 0x78d: 0x2000, 0x78e: 0x2000, 0x78f: 0x2000, 0x790: 0x2000, 0x791: 0x2000,
+	0x792: 0x2000, 0x793: 0x2000, 0x794: 0x2000, 0x795: 0x2000, 0x796: 0x2000, 0x797: 0x2000,
+	0x798: 0x2000, 0x799: 0x2000, 0x79a: 0x2000, 0x79b: 0x2000, 0x79c: 0x2000, 0x79d: 0x2000,
+	0x79e: 0x2000, 0x79f: 0x2000, 0x7a0: 0x2000, 0x7a1: 0x2000, 0x7a2: 0x2000, 0x7a3: 0x2000,
+	0x7a4: 0x2000, 0x7a5: 0x2000, 0x7a6: 0x2000, 0x7a7: 0x2000, 0x7a8: 0x2000, 0x7a9: 0x2000,
+	0x7ab: 0x2000, 0x7ac: 0x2000, 0x7ad: 0x2000, 0x7ae: 0x2000, 0x7af: 0x2000,
+	0x7b0: 0x2000, 0x7b1: 0x2000, 0x7b2: 0x2000, 0x7b3: 0x2000, 0x7b4: 0x2000, 0x7b5: 0x2000,
+	0x7b6: 0x2000, 0x7b7: 0x2000, 0x7b8: 0x2000, 0x7b9: 0x2000, 0x7ba: 0x2000, 0x7bb: 0x2000,
+	0x7bc: 0x2000, 0x7bd: 0x2000, 0x7be: 0x2000, 0x7bf: 0x2000,
+	// Block 0x1f, offset 0x7c0
+	0x7c0: 0x2000, 0x7c1: 0x2000, 0x7c2: 0x200d, 0x7c3: 0x2000, 0x7c4: 0x2000, 0x7c5: 0x2000,
+	0x7c6: 0x2000, 0x7c7: 0x2000, 0x7c8: 0x2000, 0x7c9: 0x2000, 0x7ca: 0x2000, 0x7cb: 0x2000,
+	0x7cc: 0x2000, 0x7cd: 0x2000, 0x7ce: 0x2000, 0x7cf: 0x2000, 0x7d0: 0x2000, 0x7d1: 0x2000,
+	0x7d2: 0x2000, 0x7d3: 0x2000, 0x7d4: 0x2000, 0x7d5: 0x2000, 0x7d6: 0x2000, 0x7d7: 0x2000,
+	0x7d8: 0x2000, 0x7d9: 0x2000, 0x7da: 0x2000, 0x7db: 0x2000, 0x7dc: 0x2000, 0x7dd: 0x2000,
+	0x7de: 0x2000, 0x7df: 0x2000, 0x7e0: 0x2000, 0x7e1: 0x2000, 0x7e2: 0x2000, 0x7e3: 0x2000,
+	0x7e4: 0x2000, 0x7e5: 0x2000, 0x7e6: 0x2000, 0x7e7: 0x2000, 0x7e8: 0x2000, 0x7e9: 0x2000,
+	0x7ea: 0x2000, 0x7eb: 0x2000, 0x7ec: 0x2000, 0x7ed: 0x2000, 0x7ee: 0x2000, 0x7ef: 0x2000,
+	0x7f0: 0x2000, 0x7f1: 0x2000, 0x7f2: 0x2000, 0x7f3: 0x2000, 0x7f4: 0x2000, 0x7f5: 0x2000,
+	0x7f6: 0x2000, 0x7f7: 0x2000, 0x7f8: 0x2000, 0x7f9: 0x2000, 0x7fa: 0x2000, 0x7fb: 0x2000,
+	0x7fc: 0x2000, 0x7fd: 0x2000, 0x7fe: 0x2000, 0x7ff: 0x2000,
+	// Block 0x20, offset 0x800
+	0x800: 0x2000, 0x801: 0x2000, 0x802: 0x2000, 0x803: 0x2000, 0x804: 0x2000, 0x805: 0x2000,
+	0x806: 0x2000, 0x807: 0x2000, 0x808: 0x2000, 0x809: 0x2000, 0x80a: 0x2000, 0x80b: 0x2000,
+	0x810: 0x2000, 0x811: 0x2000,
+	0x812: 0x2000, 0x813: 0x2000, 0x814: 0x2000, 0x815: 0x2000, 0x816: 0x2000, 0x817: 0x2000,
+	0x818: 0x2000, 0x819: 0x2000, 0x81a: 0x2000, 0x81b: 0x2000, 0x81c: 0x2000, 0x81d: 0x2000,
+	0x81e: 0x2000, 0x81f: 0x2000, 0x820: 0x2000, 0x821: 0x2000, 0x822: 0x2000, 0x823: 0x2000,
+	0x824: 0x2000, 0x825: 0x2000, 0x826: 0x2000, 0x827: 0x2000, 0x828: 0x2000, 0x829: 0x2000,
+	0x82a: 0x2000, 0x82b: 0x2000, 0x82c: 0x2000, 0x82d: 0x2000, 0x82e: 0x2000, 0x82f: 0x2000,
+	0x830: 0x2000, 0x831: 0x2000, 0x832: 0x2000, 0x833: 0x2000,
+	// Block 0x21, offset 0x840
+	0x840: 0x2000, 0x841: 0x2000, 0x842: 0x2000, 0x843: 0x2000, 0x844: 0x2000, 0x845: 0x2000,
+	0x846: 0x2000, 0x847: 0x2000, 0x848: 0x2000, 0x849: 0x2000, 0x84a: 0x2000, 0x84b: 0x2000,
+	0x84c: 0x2000, 0x84d: 0x2000, 0x84e: 0x2000, 0x84f: 0x2000,
+	0x852: 0x2000, 0x853: 0x2000, 0x854: 0x2000, 0x855: 0x2000,
+	0x860: 0x200e, 0x861: 0x2000, 0x863: 0x2000,
+	0x864: 0x2000, 0x865: 0x2000, 0x866: 0x2000, 0x867: 0x2000, 0x868: 0x2000, 0x869: 0x2000,
+	0x872: 0x2000, 0x873: 0x2000,
+	0x876: 0x2000, 0x877: 0x2000,
+	0x87c: 0x2000, 0x87d: 0x2000,
+	// Block 0x22, offset 0x880
+	0x880: 0x2000, 0x881: 0x2000,
+	0x886: 0x2000, 0x887: 0x2000, 0x888: 0x2000, 0x88b: 0x200f,
+	0x88e: 0x2000, 0x88f: 0x2000, 0x890: 0x2000, 0x891: 0x2000,
+	0x8a2: 0x2000, 0x8a3: 0x2000,
+	0x8a4: 0x2000, 0x8a5: 0x2000,
+	0x8af: 0x2000,
+	// Block 0x23, offset 0x8c0
+	0x8c5: 0x2000,
+	0x8c6: 0x2000, 0x8c9: 0x2000,
+	0x8ce: 0x2000, 0x8cf: 0x2000,
+	0x8d4: 0x2000, 0x8d5: 0x2000,
+	0x8dc: 0x2000,
+	0x8de: 0x2000,
+	// Block 0x24, offset 0x900
+	0x900: 0x2000, 0x902: 0x2000,
+	0x920: 0x2000, 0x921: 0x2000, 0x923: 0x2000,
+	0x924: 0x2000, 0x925: 0x2000, 0x927: 0x2000, 0x928: 0x2000, 0x929: 0x2000,
+	0x92a: 0x2000, 0x92c: 0x2000, 0x92d: 0x2000, 0x92f: 0x2000,
+	// Block 0x25, offset 0x940
+	0x95e: 0x2000, 0x95f: 0x2000,
+	0x97e: 0x2000, 0x97f: 0x2000,
+	// Block 0x26, offset 0x980
+	0x984: 0x2000, 0x985: 0x2000,
+	0x986: 0x2000, 0x987: 0x2000, 0x988: 0x2000, 0x989: 0x2000, 0x98a: 0x2000, 0x98b: 0x2000,
+	0x98c: 0x2000, 0x98d: 0x2000, 0x98f: 0x2000, 0x990: 0x2000, 0x991: 0x2000,
+	0x992: 0x2000, 0x993: 0x2000, 0x994: 0x2000, 0x995: 0x2000, 0x996: 0x2000, 0x997: 0x2000,
+	0x998: 0x2000, 0x999: 0x2000, 0x99a: 0x2000, 0x99b: 0x2000, 0x99c: 0x2000, 0x99d: 0x2000,
+	0x99e: 0x2000, 0x99f: 0x2000, 0x9a0: 0x2000, 0x9a1: 0x2000, 0x9a3: 0x2000,
+	0x9a8: 0x2000, 0x9a9: 0x2000,
+	0x9aa: 0x2000, 0x9ab: 0x2000, 0x9ac: 0x2000, 0x9ad: 0x2000, 0x9ae: 0x2000, 0x9af: 0x2000,
+	0x9b0: 0x2000, 0x9b1: 0x2000, 0x9b2: 0x2000, 0x9b3: 0x2000, 0x9b4: 0x2000, 0x9b5: 0x2000,
+	0x9b6: 0x2000, 0x9b7: 0x2000, 0x9b8: 0x2000, 0x9b9: 0x2000, 0x9ba: 0x2000, 0x9bb: 0x2000,
+	0x9bc: 0x2000, 0x9bd: 0x2000, 0x9be: 0x2000, 0x9bf: 0x2000,
+	// Block 0x27, offset 0x9c0
+	0x9fd: 0x2000,
+	// Block 0x28, offset 0xa00
+	0xa17: 0x2000,
+	0xa36: 0x2000, 0xa37: 0x2000, 0xa38: 0x2000, 0xa39: 0x2000, 0xa3a: 0x2000, 0xa3b: 0x2000,
+	0xa3c: 0x2000, 0xa3d: 0x2000, 0xa3e: 0x2000, 0xa3f: 0x2000,
+	// Block 0x29, offset 0xa40
+	0xa66: 0x6000, 0xa67: 0x6000, 0xa68: 0x6000, 0xa69: 0x6000,
+	0xa6a: 0x6000, 0xa6b: 0x6000, 0xa6c: 0x6000, 0xa6d: 0x6000,
+	// Block 0x2a, offset 0xa80
+	0xa85: 0x6010,
+	0xa86: 0x6011,
+	// Block 0x2b, offset 0xac0
+	0xad5: 0x2000, 0xad6: 0x2000, 0xad7: 0x2000,
+	0xad8: 0x2000, 0xad9: 0x2000,
+	// Block 0x2c, offset 0xb00
+	0xb00: 0x4000, 0xb01: 0x4000, 0xb02: 0x4000, 0xb03: 0x4000, 0xb04: 0x4000, 0xb05: 0x4000,
+	0xb06: 0x4000, 0xb07: 0x4000, 0xb08: 0x4000, 0xb09: 0x4000, 0xb0a: 0x4000, 0xb0b: 0x4000,
+	0xb0c: 0x4000, 0xb0d: 0x4000, 0xb0e: 0x4000, 0xb0f: 0x4000, 0xb10: 0x4000, 0xb11: 0x4000,
+	0xb12: 0x4000, 0xb13: 0x4000, 0xb14: 0x4000, 0xb15: 0x4000, 0xb16: 0x4000, 0xb17: 0x4000,
+	0xb18: 0x4000, 0xb19: 0x4000, 0xb1b: 0x4000, 0xb1c: 0x4000, 0xb1d: 0x4000,
+	0xb1e: 0x4000, 0xb1f: 0x4000, 0xb20: 0x4000, 0xb21: 0x4000, 0xb22: 0x4000, 0xb23: 0x4000,
+	0xb24: 0x4000, 0xb25: 0x4000, 0xb26: 0x4000, 0xb27: 0x4000, 0xb28: 0x4000, 0xb29: 0x4000,
+	0xb2a: 0x4000, 0xb2b: 0x4000, 0xb2c: 0x4000, 0xb2d: 0x4000, 0xb2e: 0x4000, 0xb2f: 0x4000,
+	0xb30: 0x4000, 0xb31: 0x4000, 0xb32: 0x4000, 0xb33: 0x4000, 0xb34: 0x4000, 0xb35: 0x4000,
+	0xb36: 0x4000, 0xb37: 0x4000, 0xb38: 0x4000, 0xb39: 0x4000, 0xb3a: 0x4000, 0xb3b: 0x4000,
+	0xb3c: 0x4000, 0xb3d: 0x4000, 0xb3e: 0x4000, 0xb3f: 0x4000,
+	// Block 0x2d, offset 0xb40
+	0xb40: 0x4000, 0xb41: 0x4000, 0xb42: 0x4000, 0xb43: 0x4000, 0xb44: 0x4000, 0xb45: 0x4000,
+	0xb46: 0x4000, 0xb47: 0x4000, 0xb48: 0x4000, 0xb49: 0x4000, 0xb4a: 0x4000, 0xb4b: 0x4000,
+	0xb4c: 0x4000, 0xb4d: 0x4000, 0xb4e: 0x4000, 0xb4f: 0x4000, 0xb50: 0x4000, 0xb51: 0x4000,
+	0xb52: 0x4000, 0xb53: 0x4000, 0xb54: 0x4000, 0xb55: 0x4000, 0xb56: 0x4000, 0xb57: 0x4000,
+	0xb58: 0x4000, 0xb59: 0x4000, 0xb5a: 0x4000, 0xb5b: 0x4000, 0xb5c: 0x4000, 0xb5d: 0x4000,
+	0xb5e: 0x4000, 0xb5f: 0x4000, 0xb60: 0x4000, 0xb61: 0x4000, 0xb62: 0x4000, 0xb63: 0x4000,
+	0xb64: 0x4000, 0xb65: 0x4000, 0xb66: 0x4000, 0xb67: 0x4000, 0xb68: 0x4000, 0xb69: 0x4000,
+	0xb6a: 0x4000, 0xb6b: 0x4000, 0xb6c: 0x4000, 0xb6d: 0x4000, 0xb6e: 0x4000, 0xb6f: 0x4000,
+	0xb70: 0x4000, 0xb71: 0x4000, 0xb72: 0x4000, 0xb73: 0x4000,
+	// Block 0x2e, offset 0xb80
+	0xb80: 0x4000, 0xb81: 0x4000, 0xb82: 0x4000, 0xb83: 0x4000, 0xb84: 0x4000, 0xb85: 0x4000,
+	0xb86: 0x4000, 0xb87: 0x4000, 0xb88: 0x4000, 0xb89: 0x4000, 0xb8a: 0x4000, 0xb8b: 0x4000,
+	0xb8c: 0x4000, 0xb8d: 0x4000, 0xb8e: 0x4000, 0xb8f: 0x4000, 0xb90: 0x4000, 0xb91: 0x4000,
+	0xb92: 0x4000, 0xb93: 0x4000, 0xb94: 0x4000, 0xb95: 0x4000,
+	0xbb0: 0x4000, 0xbb1: 0x4000, 0xbb2: 0x4000, 0xbb3: 0x4000, 0xbb4: 0x4000, 0xbb5: 0x4000,
+	0xbb6: 0x4000, 0xbb7: 0x4000, 0xbb8: 0x4000, 0xbb9: 0x4000, 0xbba: 0x4000, 0xbbb: 0x4000,
+	// Block 0x2f, offset 0xbc0
+	0xbc0: 0x9012, 0xbc1: 0x4013, 0xbc2: 0x4014, 0xbc3: 0x4000, 0xbc4: 0x4000, 0xbc5: 0x4000,
+	0xbc6: 0x4000, 0xbc7: 0x4000, 0xbc8: 0x4000, 0xbc9: 0x4000, 0xbca: 0x4000, 0xbcb: 0x4000,
+	0xbcc: 0x4015, 0xbcd: 0x4015, 0xbce: 0x4000, 0xbcf: 0x4000, 0xbd0: 0x4000, 0xbd1: 0x4000,
+	0xbd2: 0x4000, 0xbd3: 0x4000, 0xbd4: 0x4000, 0xbd5: 0x4000, 0xbd6: 0x4000, 0xbd7: 0x4000,
+	0xbd8: 0x4000, 0xbd9: 0x4000, 0xbda: 0x4000, 0xbdb: 0x4000, 0xbdc: 0x4000, 0xbdd: 0x4000,
+	0xbde: 0x4000, 0xbdf: 0x4000, 0xbe0: 0x4000, 0xbe1: 0x4000, 0xbe2: 0x4000, 0xbe3: 0x4000,
+	0xbe4: 0x4000, 0xbe5: 0x4000, 0xbe6: 0x4000, 0xbe7: 0x4000, 0xbe8: 0x4000, 0xbe9: 0x4000,
+	0xbea: 0x4000, 0xbeb: 0x4000, 0xbec: 0x4000, 0xbed: 0x4000, 0xbee: 0x4000, 0xbef: 0x4000,
+	0xbf0: 0x4000, 0xbf1: 0x4000, 0xbf2: 0x4000, 0xbf3: 0x4000, 0xbf4: 0x4000, 0xbf5: 0x4000,
+	0xbf6: 0x4000, 0xbf7: 0x4000, 0xbf8: 0x4000, 0xbf9: 0x4000, 0xbfa: 0x4000, 0xbfb: 0x4000,
+	0xbfc: 0x4000, 0xbfd: 0x4000, 0xbfe: 0x4000,
+	// Block 0x30, offset 0xc00
+	0xc01: 0x4000, 0xc02: 0x4000, 0xc03: 0x4000, 0xc04: 0x4000, 0xc05: 0x4000,
+	0xc06: 0x4000, 0xc07: 0x4000, 0xc08: 0x4000, 0xc09: 0x4000, 0xc0a: 0x4000, 0xc0b: 0x4000,
+	0xc0c: 0x4000, 0xc0d: 0x4000, 0xc0e: 0x4000, 0xc0f: 0x4000, 0xc10: 0x4000, 0xc11: 0x4000,
+	0xc12: 0x4000, 0xc13: 0x4000, 0xc14: 0x4000, 0xc15: 0x4000, 0xc16: 0x4000, 0xc17: 0x4000,
+	0xc18: 0x4000, 0xc19: 0x4000, 0xc1a: 0x4000, 0xc1b: 0x4000, 0xc1c: 0x4000, 0xc1d: 0x4000,
+	0xc1e: 0x4000, 0xc1f: 0x4000, 0xc20: 0x4000, 0xc21: 0x4000, 0xc22: 0x4000, 0xc23: 0x4000,
+	0xc24: 0x4000, 0xc25: 0x4000, 0xc26: 0x4000, 0xc27: 0x4000, 0xc28: 0x4000, 0xc29: 0x4000,
+	0xc2a: 0x4000, 0xc2b: 0x4000, 0xc2c: 0x4000, 0xc2d: 0x4000, 0xc2e: 0x4000, 0xc2f: 0x4000,
+	0xc30: 0x4000, 0xc31: 0x4000, 0xc32: 0x4000, 0xc33: 0x4000, 0xc34: 0x4000, 0xc35: 0x4000,
+	0xc36: 0x4000, 0xc37: 0x4000, 0xc38: 0x4000, 0xc39: 0x4000, 0xc3a: 0x4000, 0xc3b: 0x4000,
+	0xc3c: 0x4000, 0xc3d: 0x4000, 0xc3e: 0x4000, 0xc3f: 0x4000,
+	// Block 0x31, offset 0xc40
+	0xc40: 0x4000, 0xc41: 0x4000, 0xc42: 0x4000, 0xc43: 0x4000, 0xc44: 0x4000, 0xc45: 0x4000,
+	0xc46: 0x4000, 0xc47: 0x4000, 0xc48: 0x4000, 0xc49: 0x4000, 0xc4a: 0x4000, 0xc4b: 0x4000,
+	0xc4c: 0x4000, 0xc4d: 0x4000, 0xc4e: 0x4000, 0xc4f: 0x4000, 0xc50: 0x4000, 0xc51: 0x4000,
+	0xc52: 0x4000, 0xc53: 0x4000, 0xc54: 0x4000, 0xc55: 0x4000, 0xc56: 0x4000,
+	0xc59: 0x4016, 0xc5a: 0x4017, 0xc5b: 0x4000, 0xc5c: 0x4000, 0xc5d: 0x4000,
+	0xc5e: 0x4000, 0xc5f: 0x4000, 0xc60: 0x4000, 0xc61: 0x4018, 0xc62: 0x4019, 0xc63: 0x401a,
+	0xc64: 0x401b, 0xc65: 0x401c, 0xc66: 0x401d, 0xc67: 0x401e, 0xc68: 0x401f, 0xc69: 0x4020,
+	0xc6a: 0x4021, 0xc6b: 0x4022, 0xc6c: 0x4000, 0xc6d: 0x4010, 0xc6e: 0x4000, 0xc6f: 0x4023,
+	0xc70: 0x4000, 0xc71: 0x4024, 0xc72: 0x4000, 0xc73: 0x4025, 0xc74: 0x4000, 0xc75: 0x4026,
+	0xc76: 0x4000, 0xc77: 0x401a, 0xc78: 0x4000, 0xc79: 0x4027, 0xc7a: 0x4000, 0xc7b: 0x4028,
+	0xc7c: 0x4000, 0xc7d: 0x4020, 0xc7e: 0x4000, 0xc7f: 0x4029,
+	// Block 0x32, offset 0xc80
+	0xc80: 0x4000, 0xc81: 0x402a, 0xc82: 0x4000, 0xc83: 0x402b, 0xc84: 0x402c, 0xc85: 0x4000,
+	0xc86: 0x4017, 0xc87: 0x4000, 0xc88: 0x402d, 0xc89: 0x4000, 0xc8a: 0x402e, 0xc8b: 0x402f,
+	0xc8c: 0x4030, 0xc8d: 0x4017, 0xc8e: 0x4016, 0xc8f: 0x4017, 0xc90: 0x4000, 0xc91: 0x4000,
+	0xc92: 0x4031, 0xc93: 0x4000, 0xc94: 0x4000, 0xc95: 0x4031, 0xc96: 0x4000, 0xc97: 0x4000,
+	0xc98: 0x4032, 0xc99: 0x4000, 0xc9a: 0x4000, 0xc9b: 0x4032, 0xc9c: 0x4000, 0xc9d: 0x4000,
+	0xc9e: 0x4033, 0xc9f: 0x402e, 0xca0: 0x4034, 0xca1: 0x4035, 0xca2: 0x4034, 0xca3: 0x4036,
+	0xca4: 0x4037, 0xca5: 0x4024, 0xca6: 0x4035, 0xca7: 0x4025, 0xca8: 0x4038, 0xca9: 0x4038,
+	0xcaa: 0x4039, 0xcab: 0x4039, 0xcac: 0x403a, 0xcad: 0x403a, 0xcae: 0x4000, 0xcaf: 0x4035,
+	0xcb0: 0x4000, 0xcb1: 0x4000, 0xcb2: 0x403b, 0xcb3: 0x403c, 0xcb4: 0x4000, 0xcb5: 0x4000,
+	0xcb6: 0x4000, 0xcb7: 0x4000, 0xcb8: 0x4000, 0xcb9: 0x4000, 0xcba: 0x4000, 0xcbb: 0x403d,
+	0xcbc: 0x401c, 0xcbd: 0x4000, 0xcbe: 0x4000, 0xcbf: 0x4000,
+	// Block 0x33, offset 0xcc0
+	0xcc5: 0x4000,
+	0xcc6: 0x4000, 0xcc7: 0x4000, 0xcc8: 0x4000, 0xcc9: 0x4000, 0xcca: 0x4000, 0xccb: 0x4000,
+	0xccc: 0x4000, 0xccd: 0x4000, 0xcce: 0x4000, 0xccf: 0x4000, 0xcd0: 0x4000, 0xcd1: 0x4000,
+	0xcd2: 0x4000, 0xcd3: 0x4000, 0xcd4: 0x4000, 0xcd5: 0x4000, 0xcd6: 0x4000, 0xcd7: 0x4000,
+	0xcd8: 0x4000, 0xcd9: 0x4000, 0xcda: 0x4000, 0xcdb: 0x4000, 0xcdc: 0x4000, 0xcdd: 0x4000,
+	0xcde: 0x4000, 0xcdf: 0x4000, 0xce0: 0x4000, 0xce1: 0x4000, 0xce2: 0x4000, 0xce3: 0x4000,
+	0xce4: 0x4000, 0xce5: 0x4000, 0xce6: 0x4000, 0xce7: 0x4000, 0xce8: 0x4000, 0xce9: 0x4000,
+	0xcea: 0x4000, 0xceb: 0x4000, 0xcec: 0x4000, 0xced: 0x4000,
+	0xcf1: 0x403e, 0xcf2: 0x403e, 0xcf3: 0x403e, 0xcf4: 0x403e, 0xcf5: 0x403e,
+	0xcf6: 0x403e, 0xcf7: 0x403e, 0xcf8: 0x403e, 0xcf9: 0x403e, 0xcfa: 0x403e, 0xcfb: 0x403e,
+	0xcfc: 0x403e, 0xcfd: 0x403e, 0xcfe: 0x403e, 0xcff: 0x403e,
+	// Block 0x34, offset 0xd00
+	0xd00: 0x4037, 0xd01: 0x4037, 0xd02: 0x4037, 0xd03: 0x4037, 0xd04: 0x4037, 0xd05: 0x4037,
+	0xd06: 0x4037, 0xd07: 0x4037, 0xd08: 0x4037, 0xd09: 0x4037, 0xd0a: 0x4037, 0xd0b: 0x4037,
+	0xd0c: 0x4037, 0xd0d: 0x4037, 0xd0e: 0x4037, 0xd0f: 0x400e, 0xd10: 0x403f, 0xd11: 0x4040,
+	0xd12: 0x4041, 0xd13: 0x4040, 0xd14: 0x403f, 0xd15: 0x4042, 0xd16: 0x4043, 0xd17: 0x4044,
+	0xd18: 0x4040, 0xd19: 0x4041, 0xd1a: 0x4040, 0xd1b: 0x4045, 0xd1c: 0x4009, 0xd1d: 0x4045,
+	0xd1e: 0x4046, 0xd1f: 0x4045, 0xd20: 0x4047, 0xd21: 0x400b, 0xd22: 0x400a, 0xd23: 0x400c,
+	0xd24: 0x4048, 0xd25: 0x4000, 0xd26: 0x4000, 0xd27: 0x4000, 0xd28: 0x4000, 0xd29: 0x4000,
+	0xd2a: 0x4000, 0xd2b: 0x4000, 0xd2c: 0x4000, 0xd2d: 0x4000, 0xd2e: 0x4000, 0xd2f: 0x4000,
+	0xd30: 0x4000, 0xd31: 0x4000, 0xd32: 0x4000, 0xd33: 0x4000, 0xd34: 0x4000, 0xd35: 0x4000,
+	0xd36: 0x4000, 0xd37: 0x4000, 0xd38: 0x4000, 0xd39: 0x4000, 0xd3a: 0x4000, 0xd3b: 0x4000,
+	0xd3c: 0x4000, 0xd3d: 0x4000, 0xd3e: 0x4000, 0xd3f: 0x4000,
+	// Block 0x35, offset 0xd40
+	0xd40: 0x4000, 0xd41: 0x4000, 0xd42: 0x4000, 0xd43: 0x4000, 0xd44: 0x4000, 0xd45: 0x4000,
+	0xd46: 0x4000, 0xd47: 0x4000, 0xd48: 0x4000, 0xd49: 0x4000, 0xd4a: 0x4000, 0xd4b: 0x4000,
+	0xd4c: 0x4000, 0xd4d: 0x4000, 0xd4e: 0x4000, 0xd50: 0x4000, 0xd51: 0x4000,
+	0xd52: 0x4000, 0xd53: 0x4000, 0xd54: 0x4000, 0xd55: 0x4000, 0xd56: 0x4000, 0xd57: 0x4000,
+	0xd58: 0x4000, 0xd59: 0x4000, 0xd5a: 0x4000, 0xd5b: 0x4000, 0xd5c: 0x4000, 0xd5d: 0x4000,
+	0xd5e: 0x4000, 0xd5f: 0x4000, 0xd60: 0x4000, 0xd61: 0x4000, 0xd62: 0x4000, 0xd63: 0x4000,
+	0xd64: 0x4000, 0xd65: 0x4000, 0xd66: 0x4000, 0xd67: 0x4000, 0xd68: 0x4000, 0xd69: 0x4000,
+	0xd6a: 0x4000, 0xd6b: 0x4000, 0xd6c: 0x4000, 0xd6d: 0x4000, 0xd6e: 0x4000, 0xd6f: 0x4000,
+	0xd70: 0x4000, 0xd71: 0x4000, 0xd72: 0x4000, 0xd73: 0x4000, 0xd74: 0x4000, 0xd75: 0x4000,
+	0xd76: 0x4000, 0xd77: 0x4000, 0xd78: 0x4000, 0xd79: 0x4000, 0xd7a: 0x4000,
+	// Block 0x36, offset 0xd80
+	0xd80: 0x4000, 0xd81: 0x4000, 0xd82: 0x4000, 0xd83: 0x4000, 0xd84: 0x4000, 0xd85: 0x4000,
+	0xd86: 0x4000, 0xd87: 0x4000, 0xd88: 0x4000, 0xd89: 0x4000, 0xd8a: 0x4000, 0xd8b: 0x4000,
+	0xd8c: 0x4000, 0xd8d: 0x4000, 0xd8e: 0x4000, 0xd8f: 0x4000, 0xd90: 0x4000, 0xd91: 0x4000,
+	0xd92: 0x4000, 0xd93: 0x4000, 0xd94: 0x4000, 0xd95: 0x4000, 0xd96: 0x4000, 0xd97: 0x4000,
+	0xd98: 0x4000, 0xd99: 0x4000, 0xd9a: 0x4000, 0xd9b: 0x4000, 0xd9c: 0x4000, 0xd9d: 0x4000,
+	0xd9e: 0x4000, 0xd9f: 0x4000, 0xda0: 0x4000, 0xda1: 0x4000, 0xda2: 0x4000, 0xda3: 0x4000,
+	0xdb0: 0x4000, 0xdb1: 0x4000, 0xdb2: 0x4000, 0xdb3: 0x4000, 0xdb4: 0x4000, 0xdb5: 0x4000,
+	0xdb6: 0x4000, 0xdb7: 0x4000, 0xdb8: 0x4000, 0xdb9: 0x4000, 0xdba: 0x4000, 0xdbb: 0x4000,
+	0xdbc: 0x4000, 0xdbd: 0x4000, 0xdbe: 0x4000, 0xdbf: 0x4000,
+	// Block 0x37, offset 0xdc0
+	0xdc0: 0x4000, 0xdc1: 0x4000, 0xdc2: 0x4000, 0xdc3: 0x4000, 0xdc4: 0x4000, 0xdc5: 0x4000,
+	0xdc6: 0x4000, 0xdc7: 0x4000, 0xdc8: 0x4000, 0xdc9: 0x4000, 0xdca: 0x4000, 0xdcb: 0x4000,
+	0xdcc: 0x4000, 0xdcd: 0x4000, 0xdce: 0x4000, 0xdcf: 0x4000, 0xdd0: 0x4000, 0xdd1: 0x4000,
+	0xdd2: 0x4000, 0xdd3: 0x4000, 0xdd4: 0x4000, 0xdd5: 0x4000, 0xdd6: 0x4000, 0xdd7: 0x4000,
+	0xdd8: 0x4000, 0xdd9: 0x4000, 0xdda: 0x4000, 0xddb: 0x4000, 0xddc: 0x4000, 0xddd: 0x4000,
+	0xdde: 0x4000, 0xde0: 0x4000, 0xde1: 0x4000, 0xde2: 0x4000, 0xde3: 0x4000,
+	0xde4: 0x4000, 0xde5: 0x4000, 0xde6: 0x4000, 0xde7: 0x4000, 0xde8: 0x4000, 0xde9: 0x4000,
+	0xdea: 0x4000, 0xdeb: 0x4000, 0xdec: 0x4000, 0xded: 0x4000, 0xdee: 0x4000, 0xdef: 0x4000,
+	0xdf0: 0x4000, 0xdf1: 0x4000, 0xdf2: 0x4000, 0xdf3: 0x4000, 0xdf4: 0x4000, 0xdf5: 0x4000,
+	0xdf6: 0x4000, 0xdf7: 0x4000, 0xdf8: 0x4000, 0xdf9: 0x4000, 0xdfa: 0x4000, 0xdfb: 0x4000,
+	0xdfc: 0x4000, 0xdfd: 0x4000, 0xdfe: 0x4000, 0xdff: 0x4000,
+	// Block 0x38, offset 0xe00
+	0xe00: 0x4000, 0xe01: 0x4000, 0xe02: 0x4000, 0xe03: 0x4000, 0xe04: 0x4000, 0xe05: 0x4000,
+	0xe06: 0x4000, 0xe07: 0x4000, 0xe08: 0x2000, 0xe09: 0x2000, 0xe0a: 0x2000, 0xe0b: 0x2000,
+	0xe0c: 0x2000, 0xe0d: 0x2000, 0xe0e: 0x2000, 0xe0f: 0x2000, 0xe10: 0x4000, 0xe11: 0x4000,
+	0xe12: 0x4000, 0xe13: 0x4000, 0xe14: 0x4000, 0xe15: 0x4000, 0xe16: 0x4000, 0xe17: 0x4000,
+	0xe18: 0x4000, 0xe19: 0x4000, 0xe1a: 0x4000, 0xe1b: 0x4000, 0xe1c: 0x4000, 0xe1d: 0x4000,
+	0xe1e: 0x4000, 0xe1f: 0x4000, 0xe20: 0x4000, 0xe21: 0x4000, 0xe22: 0x4000, 0xe23: 0x4000,
+	0xe24: 0x4000, 0xe25: 0x4000, 0xe26: 0x4000, 0xe27: 0x4000, 0xe28: 0x4000, 0xe29: 0x4000,
+	0xe2a: 0x4000, 0xe2b: 0x4000, 0xe2c: 0x4000, 0xe2d: 0x4000, 0xe2e: 0x4000, 0xe2f: 0x4000,
+	0xe30: 0x4000, 0xe31: 0x4000, 0xe32: 0x4000, 0xe33: 0x4000, 0xe34: 0x4000, 0xe35: 0x4000,
+	0xe36: 0x4000, 0xe37: 0x4000, 0xe38: 0x4000, 0xe39: 0x4000, 0xe3a: 0x4000, 0xe3b: 0x4000,
+	0xe3c: 0x4000, 0xe3d: 0x4000, 0xe3e: 0x4000, 0xe3f: 0x4000,
+	// Block 0x39, offset 0xe40
+	0xe40: 0x4000, 0xe41: 0x4000, 0xe42: 0x4000, 0xe43: 0x4000, 0xe44: 0x4000, 0xe45: 0x4000,
+	0xe46: 0x4000, 0xe47: 0x4000, 0xe48: 0x4000, 0xe49: 0x4000, 0xe4a: 0x4000, 0xe4b: 0x4000,
+	0xe4c: 0x4000, 0xe4d: 0x4000, 0xe4e: 0x4000, 0xe4f: 0x4000, 0xe50: 0x4000, 0xe51: 0x4000,
+	0xe52: 0x4000, 0xe53: 0x4000, 0xe54: 0x4000, 0xe55: 0x4000, 0xe56: 0x4000, 0xe57: 0x4000,
+	0xe58: 0x4000, 0xe59: 0x4000, 0xe5a: 0x4000, 0xe5b: 0x4000, 0xe5c: 0x4000, 0xe5d: 0x4000,
+	0xe5e: 0x4000, 0xe5f: 0x4000, 0xe60: 0x4000, 0xe61: 0x4000, 0xe62: 0x4000, 0xe63: 0x4000,
+	0xe64: 0x4000, 0xe65: 0x4000, 0xe66: 0x4000, 0xe67: 0x4000, 0xe68: 0x4000, 0xe69: 0x4000,
+	0xe6a: 0x4000, 0xe6b: 0x4000, 0xe6c: 0x4000, 0xe6d: 0x4000, 0xe6e: 0x4000, 0xe6f: 0x4000,
+	0xe70: 0x4000, 0xe71: 0x4000, 0xe72: 0x4000, 0xe73: 0x4000, 0xe74: 0x4000, 0xe75: 0x4000,
+	0xe76: 0x4000, 0xe77: 0x4000, 0xe78: 0x4000, 0xe79: 0x4000, 0xe7a: 0x4000, 0xe7b: 0x4000,
+	0xe7c: 0x4000, 0xe7d: 0x4000, 0xe7e: 0x4000,
+	// Block 0x3a, offset 0xe80
+	0xe80: 0x4000, 0xe81: 0x4000, 0xe82: 0x4000, 0xe83: 0x4000, 0xe84: 0x4000, 0xe85: 0x4000,
+	0xe86: 0x4000, 0xe87: 0x4000, 0xe88: 0x4000, 0xe89: 0x4000, 0xe8a: 0x4000, 0xe8b: 0x4000,
+	0xe8c: 0x4000, 0xe90: 0x4000, 0xe91: 0x4000,
+	0xe92: 0x4000, 0xe93: 0x4000, 0xe94: 0x4000, 0xe95: 0x4000, 0xe96: 0x4000, 0xe97: 0x4000,
+	0xe98: 0x4000, 0xe99: 0x4000, 0xe9a: 0x4000, 0xe9b: 0x4000, 0xe9c: 0x4000, 0xe9d: 0x4000,
+	0xe9e: 0x4000, 0xe9f: 0x4000, 0xea0: 0x4000, 0xea1: 0x4000, 0xea2: 0x4000, 0xea3: 0x4000,
+	0xea4: 0x4000, 0xea5: 0x4000, 0xea6: 0x4000, 0xea7: 0x4000, 0xea8: 0x4000, 0xea9: 0x4000,
+	0xeaa: 0x4000, 0xeab: 0x4000, 0xeac: 0x4000, 0xead: 0x4000, 0xeae: 0x4000, 0xeaf: 0x4000,
+	0xeb0: 0x4000, 0xeb1: 0x4000, 0xeb2: 0x4000, 0xeb3: 0x4000, 0xeb4: 0x4000, 0xeb5: 0x4000,
+	0xeb6: 0x4000, 0xeb7: 0x4000, 0xeb8: 0x4000, 0xeb9: 0x4000, 0xeba: 0x4000, 0xebb: 0x4000,
+	0xebc: 0x4000, 0xebd: 0x4000, 0xebe: 0x4000, 0xebf: 0x4000,
+	// Block 0x3b, offset 0xec0
+	0xec0: 0x4000, 0xec1: 0x4000, 0xec2: 0x4000, 0xec3: 0x4000, 0xec4: 0x4000, 0xec5: 0x4000,
+	0xec6: 0x4000,
+	// Block 0x3c, offset 0xf00
+	0xf20: 0x4000, 0xf21: 0x4000, 0xf22: 0x4000, 0xf23: 0x4000,
+	0xf24: 0x4000, 0xf25: 0x4000, 0xf26: 0x4000, 0xf27: 0x4000, 0xf28: 0x4000, 0xf29: 0x4000,
+	0xf2a: 0x4000, 0xf2b: 0x4000, 0xf2c: 0x4000, 0xf2d: 0x4000, 0xf2e: 0x4000, 0xf2f: 0x4000,
+	0xf30: 0x4000, 0xf31: 0x4000, 0xf32: 0x4000, 0xf33: 0x4000, 0xf34: 0x4000, 0xf35: 0x4000,
+	0xf36: 0x4000, 0xf37: 0x4000, 0xf38: 0x4000, 0xf39: 0x4000, 0xf3a: 0x4000, 0xf3b: 0x4000,
+	0xf3c: 0x4000,
+	// Block 0x3d, offset 0xf40
+	0xf40: 0x4000, 0xf41: 0x4000, 0xf42: 0x4000, 0xf43: 0x4000, 0xf44: 0x4000, 0xf45: 0x4000,
+	0xf46: 0x4000, 0xf47: 0x4000, 0xf48: 0x4000, 0xf49: 0x4000, 0xf4a: 0x4000, 0xf4b: 0x4000,
+	0xf4c: 0x4000, 0xf4d: 0x4000, 0xf4e: 0x4000, 0xf4f: 0x4000, 0xf50: 0x4000, 0xf51: 0x4000,
+	0xf52: 0x4000, 0xf53: 0x4000, 0xf54: 0x4000, 0xf55: 0x4000, 0xf56: 0x4000, 0xf57: 0x4000,
+	0xf58: 0x4000, 0xf59: 0x4000, 0xf5a: 0x4000, 0xf5b: 0x4000, 0xf5c: 0x4000, 0xf5d: 0x4000,
+	0xf5e: 0x4000, 0xf5f: 0x4000, 0xf60: 0x4000, 0xf61: 0x4000, 0xf62: 0x4000, 0xf63: 0x4000,
+	// Block 0x3e, offset 0xf80
+	0xf80: 0x2000, 0xf81: 0x2000, 0xf82: 0x2000, 0xf83: 0x2000, 0xf84: 0x2000, 0xf85: 0x2000,
+	0xf86: 0x2000, 0xf87: 0x2000, 0xf88: 0x2000, 0xf89: 0x2000, 0xf8a: 0x2000, 0xf8b: 0x2000,
+	0xf8c: 0x2000, 0xf8d: 0x2000, 0xf8e: 0x2000, 0xf8f: 0x2000, 0xf90: 0x4000, 0xf91: 0x4000,
+	0xf92: 0x4000, 0xf93: 0x4000, 0xf94: 0x4000, 0xf95: 0x4000, 0xf96: 0x4000, 0xf97: 0x4000,
+	0xf98: 0x4000, 0xf99: 0x4000,
+	0xfb0: 0x4000, 0xfb1: 0x4000, 0xfb2: 0x4000, 0xfb3: 0x4000, 0xfb4: 0x4000, 0xfb5: 0x4000,
+	0xfb6: 0x4000, 0xfb7: 0x4000, 0xfb8: 0x4000, 0xfb9: 0x4000, 0xfba: 0x4000, 0xfbb: 0x4000,
+	0xfbc: 0x4000, 0xfbd: 0x4000, 0xfbe: 0x4000, 0xfbf: 0x4000,
+	// Block 0x3f, offset 0xfc0
+	0xfc0: 0x4000, 0xfc1: 0x4000, 0xfc2: 0x4000, 0xfc3: 0x4000, 0xfc4: 0x4000, 0xfc5: 0x4000,
+	0xfc6: 0x4000, 0xfc7: 0x4000, 0xfc8: 0x4000, 0xfc9: 0x4000, 0xfca: 0x4000, 0xfcb: 0x4000,
+	0xfcc: 0x4000, 0xfcd: 0x4000, 0xfce: 0x4000, 0xfcf: 0x4000, 0xfd0: 0x4000, 0xfd1: 0x4000,
+	0xfd2: 0x4000, 0xfd4: 0x4000, 0xfd5: 0x4000, 0xfd6: 0x4000, 0xfd7: 0x4000,
+	0xfd8: 0x4000, 0xfd9: 0x4000, 0xfda: 0x4000, 0xfdb: 0x4000, 0xfdc: 0x4000, 0xfdd: 0x4000,
+	0xfde: 0x4000, 0xfdf: 0x4000, 0xfe0: 0x4000, 0xfe1: 0x4000, 0xfe2: 0x4000, 0xfe3: 0x4000,
+	0xfe4: 0x4000, 0xfe5: 0x4000, 0xfe6: 0x4000, 0xfe8: 0x4000, 0xfe9: 0x4000,
+	0xfea: 0x4000, 0xfeb: 0x4000,
+	// Block 0x40, offset 0x1000
+	0x1001: 0x9012, 0x1002: 0x9012, 0x1003: 0x9012, 0x1004: 0x9012, 0x1005: 0x9012,
+	0x1006: 0x9012, 0x1007: 0x9012, 0x1008: 0x9012, 0x1009: 0x9012, 0x100a: 0x9012, 0x100b: 0x9012,
+	0x100c: 0x9012, 0x100d: 0x9012, 0x100e: 0x9012, 0x100f: 0x9012, 0x1010: 0x9012, 0x1011: 0x9012,
+	0x1012: 0x9012, 0x1013: 0x9012, 0x1014: 0x9012, 0x1015: 0x9012, 0x1016: 0x9012, 0x1017: 0x9012,
+	0x1018: 0x9012, 0x1019: 0x9012, 0x101a: 0x9012, 0x101b: 0x9012, 0x101c: 0x9012, 0x101d: 0x9012,
+	0x101e: 0x9012, 0x101f: 0x9012, 0x1020: 0x9049, 0x1021: 0x9049, 0x1022: 0x9049, 0x1023: 0x9049,
+	0x1024: 0x9049, 0x1025: 0x9049, 0x1026: 0x9049, 0x1027: 0x9049, 0x1028: 0x9049, 0x1029: 0x9049,
+	0x102a: 0x9049, 0x102b: 0x9049, 0x102c: 0x9049, 0x102d: 0x9049, 0x102e: 0x9049, 0x102f: 0x9049,
+	0x1030: 0x9049, 0x1031: 0x9049, 0x1032: 0x9049, 0x1033: 0x9049, 0x1034: 0x9049, 0x1035: 0x9049,
+	0x1036: 0x9049, 0x1037: 0x9049, 0x1038: 0x9049, 0x1039: 0x9049, 0x103a: 0x9049, 0x103b: 0x9049,
+	0x103c: 0x9049, 0x103d: 0x9049, 0x103e: 0x9049, 0x103f: 0x9049,
+	// Block 0x41, offset 0x1040
+	0x1040: 0x9049, 0x1041: 0x9049, 0x1042: 0x9049, 0x1043: 0x9049, 0x1044: 0x9049, 0x1045: 0x9049,
+	0x1046: 0x9049, 0x1047: 0x9049, 0x1048: 0x9049, 0x1049: 0x9049, 0x104a: 0x9049, 0x104b: 0x9049,
+	0x104c: 0x9049, 0x104d: 0x9049, 0x104e: 0x9049, 0x104f: 0x9049, 0x1050: 0x9049, 0x1051: 0x9049,
+	0x1052: 0x9049, 0x1053: 0x9049, 0x1054: 0x9049, 0x1055: 0x9049, 0x1056: 0x9049, 0x1057: 0x9049,
+	0x1058: 0x9049, 0x1059: 0x9049, 0x105a: 0x9049, 0x105b: 0x9049, 0x105c: 0x9049, 0x105d: 0x9049,
+	0x105e: 0x9049, 0x105f: 0x904a, 0x1060: 0x904b, 0x1061: 0xb04c, 0x1062: 0xb04d, 0x1063: 0xb04d,
+	0x1064: 0xb04e, 0x1065: 0xb04f, 0x1066: 0xb050, 0x1067: 0xb051, 0x1068: 0xb052, 0x1069: 0xb053,
+	0x106a: 0xb054, 0x106b: 0xb055, 0x106c: 0xb056, 0x106d: 0xb057, 0x106e: 0xb058, 0x106f: 0xb059,
+	0x1070: 0xb05a, 0x1071: 0xb05b, 0x1072: 0xb05c, 0x1073: 0xb05d, 0x1074: 0xb05e, 0x1075: 0xb05f,
+	0x1076: 0xb060, 0x1077: 0xb061, 0x1078: 0xb062, 0x1079: 0xb063, 0x107a: 0xb064, 0x107b: 0xb065,
+	0x107c: 0xb052, 0x107d: 0xb066, 0x107e: 0xb067, 0x107f: 0xb055,
+	// Block 0x42, offset 0x1080
+	0x1080: 0xb068, 0x1081: 0xb069, 0x1082: 0xb06a, 0x1083: 0xb06b, 0x1084: 0xb05a, 0x1085: 0xb056,
+	0x1086: 0xb06c, 0x1087: 0xb06d, 0x1088: 0xb06b, 0x1089: 0xb06e, 0x108a: 0xb06b, 0x108b: 0xb06f,
+	0x108c: 0xb06f, 0x108d: 0xb070, 0x108e: 0xb070, 0x108f: 0xb071, 0x1090: 0xb056, 0x1091: 0xb072,
+	0x1092: 0xb073, 0x1093: 0xb072, 0x1094: 0xb074, 0x1095: 0xb073, 0x1096: 0xb075, 0x1097: 0xb075,
+	0x1098: 0xb076, 0x1099: 0xb076, 0x109a: 0xb077, 0x109b: 0xb077, 0x109c: 0xb073, 0x109d: 0xb078,
+	0x109e: 0xb079, 0x109f: 0xb067, 0x10a0: 0xb07a, 0x10a1: 0xb07b, 0x10a2: 0xb07b, 0x10a3: 0xb07b,
+	0x10a4: 0xb07b, 0x10a5: 0xb07b, 0x10a6: 0xb07b, 0x10a7: 0xb07b, 0x10a8: 0xb07b, 0x10a9: 0xb07b,
+	0x10aa: 0xb07b, 0x10ab: 0xb07b, 0x10ac: 0xb07b, 0x10ad: 0xb07b, 0x10ae: 0xb07b, 0x10af: 0xb07b,
+	0x10b0: 0xb07c, 0x10b1: 0xb07c, 0x10b2: 0xb07c, 0x10b3: 0xb07c, 0x10b4: 0xb07c, 0x10b5: 0xb07c,
+	0x10b6: 0xb07c, 0x10b7: 0xb07c, 0x10b8: 0xb07c, 0x10b9: 0xb07c, 0x10ba: 0xb07c, 0x10bb: 0xb07c,
+	0x10bc: 0xb07c, 0x10bd: 0xb07c, 0x10be: 0xb07c,
+	// Block 0x43, offset 0x10c0
+	0x10c2: 0xb07d, 0x10c3: 0xb07e, 0x10c4: 0xb07f, 0x10c5: 0xb080,
+	0x10c6: 0xb07f, 0x10c7: 0xb07e, 0x10ca: 0xb081, 0x10cb: 0xb082,
+	0x10cc: 0xb083, 0x10cd: 0xb07f, 0x10ce: 0xb080, 0x10cf: 0xb07f,
+	0x10d2: 0xb084, 0x10d3: 0xb085, 0x10d4: 0xb084, 0x10d5: 0xb086, 0x10d6: 0xb084, 0x10d7: 0xb087,
+	0x10da: 0xb088, 0x10db: 0xb089, 0x10dc: 0xb08a,
+	0x10e0: 0x908b, 0x10e1: 0x908b, 0x10e2: 0x908c, 0x10e3: 0x908d,
+	0x10e4: 0x908b, 0x10e5: 0x908e, 0x10e6: 0x908f, 0x10e8: 0xb090, 0x10e9: 0xb091,
+	0x10ea: 0xb092, 0x10eb: 0xb091, 0x10ec: 0xb093, 0x10ed: 0xb094, 0x10ee: 0xb095,
+	0x10fd: 0x2000,
+	// Block 0x44, offset 0x1100
+	0x1100: 0x4000, 0x1101: 0x4000,
+	// Block 0x45, offset 0x1140
+	0x1140: 0x2000, 0x1141: 0x2000, 0x1142: 0x2000, 0x1143: 0x2000, 0x1144: 0x2000, 0x1145: 0x2000,
+	0x1146: 0x2000, 0x1147: 0x2000, 0x1148: 0x2000, 0x1149: 0x2000, 0x114a: 0x2000,
+	0x1150: 0x2000, 0x1151: 0x2000,
+	0x1152: 0x2000, 0x1153: 0x2000, 0x1154: 0x2000, 0x1155: 0x2000, 0x1156: 0x2000, 0x1157: 0x2000,
+	0x1158: 0x2000, 0x1159: 0x2000, 0x115a: 0x2000, 0x115b: 0x2000, 0x115c: 0x2000, 0x115d: 0x2000,
+	0x115e: 0x2000, 0x115f: 0x2000, 0x1160: 0x2000, 0x1161: 0x2000, 0x1162: 0x2000, 0x1163: 0x2000,
+	0x1164: 0x2000, 0x1165: 0x2000, 0x1166: 0x2000, 0x1167: 0x2000, 0x1168: 0x2000, 0x1169: 0x2000,
+	0x116a: 0x2000, 0x116b: 0x2000, 0x116c: 0x2000, 0x116d: 0x2000,
+	0x1170: 0x2000, 0x1171: 0x2000, 0x1172: 0x2000, 0x1173: 0x2000, 0x1174: 0x2000, 0x1175: 0x2000,
+	0x1176: 0x2000, 0x1177: 0x2000, 0x1178: 0x2000, 0x1179: 0x2000, 0x117a: 0x2000, 0x117b: 0x2000,
+	0x117c: 0x2000, 0x117d: 0x2000, 0x117e: 0x2000, 0x117f: 0x2000,
+	// Block 0x46, offset 0x1180
+	0x1180: 0x2000, 0x1181: 0x2000, 0x1182: 0x2000, 0x1183: 0x2000, 0x1184: 0x2000, 0x1185: 0x2000,
+	0x1186: 0x2000, 0x1187: 0x2000, 0x1188: 0x2000, 0x1189: 0x2000, 0x118a: 0x2000, 0x118b: 0x2000,
+	0x118c: 0x2000, 0x118d: 0x2000, 0x118e: 0x2000, 0x118f: 0x2000, 0x1190: 0x2000, 0x1191: 0x2000,
+	0x1192: 0x2000, 0x1193: 0x2000, 0x1194: 0x2000, 0x1195: 0x2000, 0x1196: 0x2000, 0x1197: 0x2000,
+	0x1198: 0x2000, 0x1199: 0x2000, 0x119a: 0x2000, 0x119b: 0x2000, 0x119c: 0x2000, 0x119d: 0x2000,
+	0x119e: 0x2000, 0x119f: 0x2000, 0x11a0: 0x2000, 0x11a1: 0x2000, 0x11a2: 0x2000, 0x11a3: 0x2000,
+	0x11a4: 0x2000, 0x11a5: 0x2000, 0x11a6: 0x2000, 0x11a7: 0x2000, 0x11a8: 0x2000, 0x11a9: 0x2000,
+	0x11b0: 0x2000, 0x11b1: 0x2000, 0x11b2: 0x2000, 0x11b3: 0x2000, 0x11b4: 0x2000, 0x11b5: 0x2000,
+	0x11b6: 0x2000, 0x11b7: 0x2000, 0x11b8: 0x2000, 0x11b9: 0x2000, 0x11ba: 0x2000, 0x11bb: 0x2000,
+	0x11bc: 0x2000, 0x11bd: 0x2000, 0x11be: 0x2000, 0x11bf: 0x2000,
+	// Block 0x47, offset 0x11c0
+	0x11c0: 0x2000, 0x11c1: 0x2000, 0x11c2: 0x2000, 0x11c3: 0x2000, 0x11c4: 0x2000, 0x11c5: 0x2000,
+	0x11c6: 0x2000, 0x11c7: 0x2000, 0x11c8: 0x2000, 0x11c9: 0x2000, 0x11ca: 0x2000, 0x11cb: 0x2000,
+	0x11cc: 0x2000, 0x11cd: 0x2000, 0x11ce: 0x2000, 0x11cf: 0x2000, 0x11d0: 0x2000, 0x11d1: 0x2000,
+	0x11d2: 0x2000, 0x11d3: 0x2000, 0x11d4: 0x2000, 0x11d5: 0x2000, 0x11d6: 0x2000, 0x11d7: 0x2000,
+	0x11d8: 0x2000, 0x11d9: 0x2000, 0x11da: 0x2000,
+	// Block 0x48, offset 0x1200
+	0x1200: 0x4000, 0x1201: 0x4000, 0x1202: 0x4000,
+	0x1210: 0x4000, 0x1211: 0x4000,
+	0x1212: 0x4000, 0x1213: 0x4000, 0x1214: 0x4000, 0x1215: 0x4000, 0x1216: 0x4000, 0x1217: 0x4000,
+	0x1218: 0x4000, 0x1219: 0x4000, 0x121a: 0x4000, 0x121b: 0x4000, 0x121c: 0x4000, 0x121d: 0x4000,
+	0x121e: 0x4000, 0x121f: 0x4000, 0x1220: 0x4000, 0x1221: 0x4000, 0x1222: 0x4000, 0x1223: 0x4000,
+	0x1224: 0x4000, 0x1225: 0x4000, 0x1226: 0x4000, 0x1227: 0x4000, 0x1228: 0x4000, 0x1229: 0x4000,
+	0x122a: 0x4000, 0x122b: 0x4000, 0x122c: 0x4000, 0x122d: 0x4000, 0x122e: 0x4000, 0x122f: 0x4000,
+	0x1230: 0x4000, 0x1231: 0x4000, 0x1232: 0x4000, 0x1233: 0x4000, 0x1234: 0x4000, 0x1235: 0x4000,
+	0x1236: 0x4000, 0x1237: 0x4000, 0x1238: 0x4000, 0x1239: 0x4000, 0x123a: 0x4000,
+	// Block 0x49, offset 0x1240
+	0x1240: 0x4000, 0x1241: 0x4000, 0x1242: 0x4000, 0x1243: 0x4000, 0x1244: 0x4000, 0x1245: 0x4000,
+	0x1246: 0x4000, 0x1247: 0x4000, 0x1248: 0x4000,
+	0x1250: 0x4000, 0x1251: 0x4000,
+	// Block 0x4a, offset 0x1280
+	0x1280: 0x2000, 0x1281: 0x2000, 0x1282: 0x2000, 0x1283: 0x2000, 0x1284: 0x2000, 0x1285: 0x2000,
+	0x1286: 0x2000, 0x1287: 0x2000, 0x1288: 0x2000, 0x1289: 0x2000, 0x128a: 0x2000, 0x128b: 0x2000,
+	0x128c: 0x2000, 0x128d: 0x2000, 0x128e: 0x2000, 0x128f: 0x2000, 0x1290: 0x2000, 0x1291: 0x2000,
+	0x1292: 0x2000, 0x1293: 0x2000, 0x1294: 0x2000, 0x1295: 0x2000, 0x1296: 0x2000, 0x1297: 0x2000,
+	0x1298: 0x2000, 0x1299: 0x2000, 0x129a: 0x2000, 0x129b: 0x2000, 0x129c: 0x2000, 0x129d: 0x2000,
+	0x129e: 0x2000, 0x129f: 0x2000, 0x12a0: 0x2000, 0x12a1: 0x2000, 0x12a2: 0x2000, 0x12a3: 0x2000,
+	0x12a4: 0x2000, 0x12a5: 0x2000, 0x12a6: 0x2000, 0x12a7: 0x2000, 0x12a8: 0x2000, 0x12a9: 0x2000,
+	0x12aa: 0x2000, 0x12ab: 0x2000, 0x12ac: 0x2000, 0x12ad: 0x2000, 0x12ae: 0x2000, 0x12af: 0x2000,
+	0x12b0: 0x2000, 0x12b1: 0x2000, 0x12b2: 0x2000, 0x12b3: 0x2000, 0x12b4: 0x2000, 0x12b5: 0x2000,
+	0x12b6: 0x2000, 0x12b7: 0x2000, 0x12b8: 0x2000, 0x12b9: 0x2000, 0x12ba: 0x2000, 0x12bb: 0x2000,
+	0x12bc: 0x2000, 0x12bd: 0x2000,
+}
+
+// widthIndex: 20 blocks, 1280 entries, 1280 bytes
+// Block 0 is the zero block.
+var widthIndex = [1280]uint8{
+	// Block 0x0, offset 0x0
+	// Block 0x1, offset 0x40
+	// Block 0x2, offset 0x80
+	// Block 0x3, offset 0xc0
+	0xc2: 0x01, 0xc3: 0x02, 0xc4: 0x03, 0xc5: 0x04, 0xc7: 0x05,
+	0xc9: 0x06, 0xcb: 0x07, 0xcc: 0x08, 0xcd: 0x09, 0xce: 0x0a, 0xcf: 0x0b,
+	0xd0: 0x0c, 0xd1: 0x0d,
+	0xe1: 0x02, 0xe2: 0x03, 0xe3: 0x04, 0xe4: 0x05, 0xe5: 0x06, 0xe6: 0x06, 0xe7: 0x06,
+	0xe8: 0x06, 0xe9: 0x06, 0xea: 0x07, 0xeb: 0x06, 0xec: 0x06, 0xed: 0x08, 0xee: 0x09, 0xef: 0x0a,
+	0xf0: 0x0d, 0xf3: 0x10, 0xf4: 0x11,
+	// Block 0x4, offset 0x100
+	0x104: 0x0e, 0x105: 0x0f,
+	// Block 0x5, offset 0x140
+	0x140: 0x10, 0x141: 0x11, 0x142: 0x12, 0x144: 0x13, 0x145: 0x14, 0x146: 0x15, 0x147: 0x16,
+	0x148: 0x17, 0x149: 0x18, 0x14a: 0x19, 0x14c: 0x1a,
+	0x151: 0x1b, 0x152: 0x08, 0x153: 0x1c, 0x154: 0x1d, 0x155: 0x1e, 0x156: 0x1f, 0x157: 0x20,
+	0x158: 0x21, 0x159: 0x22, 0x15a: 0x23, 0x15b: 0x24, 0x15c: 0x25, 0x15d: 0x26, 0x15f: 0x27,
+	0x166: 0x28,
+	0x16d: 0x29,
+	0x17a: 0x2a, 0x17b: 0x2b, 0x17c: 0x0e, 0x17d: 0x0e, 0x17e: 0x0e, 0x17f: 0x2c,
+	// Block 0x6, offset 0x180
+	0x180: 0x2d, 0x181: 0x2e, 0x182: 0x2f, 0x183: 0x30, 0x184: 0x31, 0x185: 0x32, 0x186: 0x33, 0x187: 0x34,
+	0x188: 0x35, 0x189: 0x36, 0x18a: 0x0e, 0x18b: 0x37, 0x18c: 0x0e, 0x18d: 0x0e, 0x18e: 0x0e, 0x18f: 0x0e,
+	0x190: 0x0e, 0x191: 0x0e, 0x192: 0x0e, 0x193: 0x0e, 0x194: 0x0e, 0x195: 0x0e, 0x196: 0x0e, 0x197: 0x0e,
+	0x198: 0x0e, 0x199: 0x0e, 0x19a: 0x0e, 0x19b: 0x0e, 0x19c: 0x0e, 0x19d: 0x0e, 0x19e: 0x0e, 0x19f: 0x0e,
+	0x1a0: 0x0e, 0x1a1: 0x0e, 0x1a2: 0x0e, 0x1a3: 0x0e, 0x1a4: 0x0e, 0x1a5: 0x0e, 0x1a6: 0x0e, 0x1a7: 0x0e,
+	0x1a8: 0x0e, 0x1a9: 0x0e, 0x1aa: 0x0e, 0x1ab: 0x0e, 0x1ac: 0x0e, 0x1ad: 0x0e, 0x1ae: 0x0e, 0x1af: 0x0e,
+	0x1b0: 0x0e, 0x1b1: 0x0e, 0x1b2: 0x0e, 0x1b3: 0x0e, 0x1b4: 0x0e, 0x1b5: 0x0e, 0x1b6: 0x0e, 0x1b7: 0x0e,
+	0x1b8: 0x0e, 0x1b9: 0x0e, 0x1ba: 0x0e, 0x1bb: 0x0e, 0x1bc: 0x0e, 0x1bd: 0x0e, 0x1be: 0x0e, 0x1bf: 0x0e,
+	// Block 0x7, offset 0x1c0
+	0x1c0: 0x0e, 0x1c1: 0x0e, 0x1c2: 0x0e, 0x1c3: 0x0e, 0x1c4: 0x0e, 0x1c5: 0x0e, 0x1c6: 0x0e, 0x1c7: 0x0e,
+	0x1c8: 0x0e, 0x1c9: 0x0e, 0x1ca: 0x0e, 0x1cb: 0x0e, 0x1cc: 0x0e, 0x1cd: 0x0e, 0x1ce: 0x0e, 0x1cf: 0x0e,
+	0x1d0: 0x0e, 0x1d1: 0x0e, 0x1d2: 0x0e, 0x1d3: 0x0e, 0x1d4: 0x0e, 0x1d5: 0x0e, 0x1d6: 0x0e, 0x1d7: 0x0e,
+	0x1d8: 0x0e, 0x1d9: 0x0e, 0x1da: 0x0e, 0x1db: 0x0e, 0x1dc: 0x0e, 0x1dd: 0x0e, 0x1de: 0x0e, 0x1df: 0x0e,
+	0x1e0: 0x0e, 0x1e1: 0x0e, 0x1e2: 0x0e, 0x1e3: 0x0e, 0x1e4: 0x0e, 0x1e5: 0x0e, 0x1e6: 0x0e, 0x1e7: 0x0e,
+	0x1e8: 0x0e, 0x1e9: 0x0e, 0x1ea: 0x0e, 0x1eb: 0x0e, 0x1ec: 0x0e, 0x1ed: 0x0e, 0x1ee: 0x0e, 0x1ef: 0x0e,
+	0x1f0: 0x0e, 0x1f1: 0x0e, 0x1f2: 0x0e, 0x1f3: 0x0e, 0x1f4: 0x0e, 0x1f5: 0x0e, 0x1f6: 0x0e,
+	0x1f8: 0x0e, 0x1f9: 0x0e, 0x1fa: 0x0e, 0x1fb: 0x0e, 0x1fc: 0x0e, 0x1fd: 0x0e, 0x1fe: 0x0e, 0x1ff: 0x0e,
+	// Block 0x8, offset 0x200
+	0x200: 0x0e, 0x201: 0x0e, 0x202: 0x0e, 0x203: 0x0e, 0x204: 0x0e, 0x205: 0x0e, 0x206: 0x0e, 0x207: 0x0e,
+	0x208: 0x0e, 0x209: 0x0e, 0x20a: 0x0e, 0x20b: 0x0e, 0x20c: 0x0e, 0x20d: 0x0e, 0x20e: 0x0e, 0x20f: 0x0e,
+	0x210: 0x0e, 0x211: 0x0e, 0x212: 0x0e, 0x213: 0x0e, 0x214: 0x0e, 0x215: 0x0e, 0x216: 0x0e, 0x217: 0x0e,
+	0x218: 0x0e, 0x219: 0x0e, 0x21a: 0x0e, 0x21b: 0x0e, 0x21c: 0x0e, 0x21d: 0x0e, 0x21e: 0x0e, 0x21f: 0x0e,
+	0x220: 0x0e, 0x221: 0x0e, 0x222: 0x0e, 0x223: 0x0e, 0x224: 0x0e, 0x225: 0x0e, 0x226: 0x0e, 0x227: 0x0e,
+	0x228: 0x0e, 0x229: 0x0e, 0x22a: 0x0e, 0x22b: 0x0e, 0x22c: 0x0e, 0x22d: 0x0e, 0x22e: 0x0e, 0x22f: 0x0e,
+	0x230: 0x0e, 0x231: 0x0e, 0x232: 0x0e, 0x233: 0x0e, 0x234: 0x0e, 0x235: 0x0e, 0x236: 0x0e, 0x237: 0x0e,
+	0x238: 0x0e, 0x239: 0x0e, 0x23a: 0x0e, 0x23b: 0x0e, 0x23c: 0x0e, 0x23d: 0x0e, 0x23e: 0x0e, 0x23f: 0x0e,
+	// Block 0x9, offset 0x240
+	0x240: 0x0e, 0x241: 0x0e, 0x242: 0x0e, 0x243: 0x0e, 0x244: 0x0e, 0x245: 0x0e, 0x246: 0x0e, 0x247: 0x0e,
+	0x248: 0x0e, 0x249: 0x0e, 0x24a: 0x0e, 0x24b: 0x0e, 0x24c: 0x0e, 0x24d: 0x0e, 0x24e: 0x0e, 0x24f: 0x0e,
+	0x250: 0x0e, 0x251: 0x0e, 0x252: 0x38, 0x253: 0x39,
+	0x265: 0x3a,
+	0x270: 0x0e, 0x271: 0x0e, 0x272: 0x0e, 0x273: 0x0e, 0x274: 0x0e, 0x275: 0x0e, 0x276: 0x0e, 0x277: 0x0e,
+	0x278: 0x0e, 0x279: 0x0e, 0x27a: 0x0e, 0x27b: 0x0e, 0x27c: 0x0e, 0x27d: 0x0e, 0x27e: 0x0e, 0x27f: 0x0e,
+	// Block 0xa, offset 0x280
+	0x280: 0x0e, 0x281: 0x0e, 0x282: 0x0e, 0x283: 0x0e, 0x284: 0x0e, 0x285: 0x0e, 0x286: 0x0e, 0x287: 0x0e,
+	0x288: 0x0e, 0x289: 0x0e, 0x28a: 0x0e, 0x28b: 0x0e, 0x28c: 0x0e, 0x28d: 0x0e, 0x28e: 0x0e, 0x28f: 0x0e,
+	0x290: 0x0e, 0x291: 0x0e, 0x292: 0x0e, 0x293: 0x0e, 0x294: 0x0e, 0x295: 0x0e, 0x296: 0x0e, 0x297: 0x0e,
+	0x298: 0x0e, 0x299: 0x0e, 0x29a: 0x0e, 0x29b: 0x0e, 0x29c: 0x0e, 0x29d: 0x0e, 0x29e: 0x3b,
+	// Block 0xb, offset 0x2c0
+	0x2c0: 0x08, 0x2c1: 0x08, 0x2c2: 0x08, 0x2c3: 0x08, 0x2c4: 0x08, 0x2c5: 0x08, 0x2c6: 0x08, 0x2c7: 0x08,
+	0x2c8: 0x08, 0x2c9: 0x08, 0x2ca: 0x08, 0x2cb: 0x08, 0x2cc: 0x08, 0x2cd: 0x08, 0x2ce: 0x08, 0x2cf: 0x08,
+	0x2d0: 0x08, 0x2d1: 0x08, 0x2d2: 0x08, 0x2d3: 0x08, 0x2d4: 0x08, 0x2d5: 0x08, 0x2d6: 0x08, 0x2d7: 0x08,
+	0x2d8: 0x08, 0x2d9: 0x08, 0x2da: 0x08, 0x2db: 0x08, 0x2dc: 0x08, 0x2dd: 0x08, 0x2de: 0x08, 0x2df: 0x08,
+	0x2e0: 0x08, 0x2e1: 0x08, 0x2e2: 0x08, 0x2e3: 0x08, 0x2e4: 0x08, 0x2e5: 0x08, 0x2e6: 0x08, 0x2e7: 0x08,
+	0x2e8: 0x08, 0x2e9: 0x08, 0x2ea: 0x08, 0x2eb: 0x08, 0x2ec: 0x08, 0x2ed: 0x08, 0x2ee: 0x08, 0x2ef: 0x08,
+	0x2f0: 0x08, 0x2f1: 0x08, 0x2f2: 0x08, 0x2f3: 0x08, 0x2f4: 0x08, 0x2f5: 0x08, 0x2f6: 0x08, 0x2f7: 0x08,
+	0x2f8: 0x08, 0x2f9: 0x08, 0x2fa: 0x08, 0x2fb: 0x08, 0x2fc: 0x08, 0x2fd: 0x08, 0x2fe: 0x08, 0x2ff: 0x08,
+	// Block 0xc, offset 0x300
+	0x300: 0x08, 0x301: 0x08, 0x302: 0x08, 0x303: 0x08, 0x304: 0x08, 0x305: 0x08, 0x306: 0x08, 0x307: 0x08,
+	0x308: 0x08, 0x309: 0x08, 0x30a: 0x08, 0x30b: 0x08, 0x30c: 0x08, 0x30d: 0x08, 0x30e: 0x08, 0x30f: 0x08,
+	0x310: 0x08, 0x311: 0x08, 0x312: 0x08, 0x313: 0x08, 0x314: 0x08, 0x315: 0x08, 0x316: 0x08, 0x317: 0x08,
+	0x318: 0x08, 0x319: 0x08, 0x31a: 0x08, 0x31b: 0x08, 0x31c: 0x08, 0x31d: 0x08, 0x31e: 0x08, 0x31f: 0x08,
+	0x320: 0x08, 0x321: 0x08, 0x322: 0x08, 0x323: 0x08, 0x324: 0x0e, 0x325: 0x0e, 0x326: 0x0e, 0x327: 0x0e,
+	0x328: 0x0e, 0x329: 0x0e, 0x32a: 0x0e, 0x32b: 0x0e,
+	0x338: 0x3c, 0x339: 0x3d, 0x33c: 0x3e, 0x33d: 0x3f, 0x33e: 0x40, 0x33f: 0x41,
+	// Block 0xd, offset 0x340
+	0x340: 0x42,
+	// Block 0xe, offset 0x380
+	0x384: 0x43, 0x385: 0x44, 0x386: 0x45,
+	0x388: 0x46, 0x389: 0x47,
+	// Block 0xf, offset 0x3c0
+	0x3db: 0x0b, 0x3df: 0x0c,
+	0x3e0: 0x06, 0x3e1: 0x06, 0x3e2: 0x06, 0x3e3: 0x06, 0x3e4: 0x06, 0x3e5: 0x06, 0x3e6: 0x06, 0x3e7: 0x06,
+	0x3e8: 0x06, 0x3e9: 0x06, 0x3ea: 0x06, 0x3eb: 0x06, 0x3ec: 0x06, 0x3ed: 0x06, 0x3ee: 0x06, 0x3ef: 0x06,
+	0x3f0: 0x06, 0x3f1: 0x06, 0x3f2: 0x06, 0x3f3: 0x06, 0x3f4: 0x06, 0x3f5: 0x06, 0x3f6: 0x06, 0x3f7: 0x06,
+	0x3f8: 0x06, 0x3f9: 0x06, 0x3fa: 0x06, 0x3fb: 0x06, 0x3fc: 0x06, 0x3fd: 0x06, 0x3fe: 0x06, 0x3ff: 0x06,
+	// Block 0x10, offset 0x400
+	0x404: 0x08, 0x405: 0x08, 0x406: 0x08, 0x407: 0x09,
+	// Block 0x11, offset 0x440
+	0x440: 0x08, 0x441: 0x08, 0x442: 0x08, 0x443: 0x08, 0x444: 0x08, 0x445: 0x08, 0x446: 0x08, 0x447: 0x08,
+	0x448: 0x08, 0x449: 0x08, 0x44a: 0x08, 0x44b: 0x08, 0x44c: 0x08, 0x44d: 0x08, 0x44e: 0x08, 0x44f: 0x08,
+	0x450: 0x08, 0x451: 0x08, 0x452: 0x08, 0x453: 0x08, 0x454: 0x08, 0x455: 0x08, 0x456: 0x08, 0x457: 0x08,
+	0x458: 0x08, 0x459: 0x08, 0x45a: 0x08, 0x45b: 0x08, 0x45c: 0x08, 0x45d: 0x08, 0x45e: 0x08, 0x45f: 0x08,
+	0x460: 0x08, 0x461: 0x08, 0x462: 0x08, 0x463: 0x08, 0x464: 0x08, 0x465: 0x08, 0x466: 0x08, 0x467: 0x08,
+	0x468: 0x08, 0x469: 0x08, 0x46a: 0x08, 0x46b: 0x08, 0x46c: 0x08, 0x46d: 0x08, 0x46e: 0x08, 0x46f: 0x08,
+	0x470: 0x08, 0x471: 0x08, 0x472: 0x08, 0x473: 0x08, 0x474: 0x08, 0x475: 0x08, 0x476: 0x08, 0x477: 0x08,
+	0x478: 0x08, 0x479: 0x08, 0x47a: 0x08, 0x47b: 0x08, 0x47c: 0x08, 0x47d: 0x08, 0x47e: 0x08, 0x47f: 0x48,
+	// Block 0x12, offset 0x480
+	0x4a0: 0x0e,
+	0x4b0: 0x09, 0x4b1: 0x09, 0x4b2: 0x09, 0x4b3: 0x09, 0x4b4: 0x09, 0x4b5: 0x09, 0x4b6: 0x09, 0x4b7: 0x09,
+	0x4b8: 0x09, 0x4b9: 0x09, 0x4ba: 0x09, 0x4bb: 0x09, 0x4bc: 0x09, 0x4bd: 0x09, 0x4be: 0x09, 0x4bf: 0x0f,
+	// Block 0x13, offset 0x4c0
+	0x4c0: 0x09, 0x4c1: 0x09, 0x4c2: 0x09, 0x4c3: 0x09, 0x4c4: 0x09, 0x4c5: 0x09, 0x4c6: 0x09, 0x4c7: 0x09,
+	0x4c8: 0x09, 0x4c9: 0x09, 0x4ca: 0x09, 0x4cb: 0x09, 0x4cc: 0x09, 0x4cd: 0x09, 0x4ce: 0x09, 0x4cf: 0x0f,
+}
+
+// inverseData contains 4-byte entries of the following format:
+//   <length> <modified UTF-8-encoded rune> <0 padding>
+// The last byte of the UTF-8-encoded rune is xor-ed with the last byte of the
+// UTF-8 encoding of the original rune. Mappings often have the following
+// pattern:
+//   A -> A  (U+FF21 -> U+0041)
+//   B -> B  (U+FF22 -> U+0042)
+//   ...
+// By xor-ing the last byte the same entry can be shared by many mappings. This
+// reduces the total number of distinct entries by about two thirds.
+// The resulting entry for the aforementioned mappings is
+//   { 0x01, 0xE0, 0x00, 0x00 }
+// Using this entry to map U+FF21 (UTF-8 [EF BC A1]), we get
+//   E0 ^ A1 = 41.
+// Similarly, for U+FF22 (UTF-8 [EF BC A2]), we get
+//   E0 ^ A2 = 42.
+// Note that because of the xor-ing, the byte sequence stored in the entry is
+// not valid UTF-8.
+var inverseData = [150][4]byte{
+	{0x00, 0x00, 0x00, 0x00},
+	{0x03, 0xe3, 0x80, 0xa0},
+	{0x03, 0xef, 0xbc, 0xa0},
+	{0x03, 0xef, 0xbc, 0xe0},
+	{0x03, 0xef, 0xbd, 0xe0},
+	{0x03, 0xef, 0xbf, 0x02},
+	{0x03, 0xef, 0xbf, 0x00},
+	{0x03, 0xef, 0xbf, 0x0e},
+	{0x03, 0xef, 0xbf, 0x0c},
+	{0x03, 0xef, 0xbf, 0x0f},
+	{0x03, 0xef, 0xbf, 0x39},
+	{0x03, 0xef, 0xbf, 0x3b},
+	{0x03, 0xef, 0xbf, 0x3f},
+	{0x03, 0xef, 0xbf, 0x2a},
+	{0x03, 0xef, 0xbf, 0x0d},
+	{0x03, 0xef, 0xbf, 0x25},
+	{0x03, 0xef, 0xbd, 0x1a},
+	{0x03, 0xef, 0xbd, 0x26},
+	{0x01, 0xa0, 0x00, 0x00},
+	{0x03, 0xef, 0xbd, 0x25},
+	{0x03, 0xef, 0xbd, 0x23},
+	{0x03, 0xef, 0xbd, 0x2e},
+	{0x03, 0xef, 0xbe, 0x07},
+	{0x03, 0xef, 0xbe, 0x05},
+	{0x03, 0xef, 0xbd, 0x06},
+	{0x03, 0xef, 0xbd, 0x13},
+	{0x03, 0xef, 0xbd, 0x0b},
+	{0x03, 0xef, 0xbd, 0x16},
+	{0x03, 0xef, 0xbd, 0x0c},
+	{0x03, 0xef, 0xbd, 0x15},
+	{0x03, 0xef, 0xbd, 0x0d},
+	{0x03, 0xef, 0xbd, 0x1c},
+	{0x03, 0xef, 0xbd, 0x02},
+	{0x03, 0xef, 0xbd, 0x1f},
+	{0x03, 0xef, 0xbd, 0x1d},
+	{0x03, 0xef, 0xbd, 0x17},
+	{0x03, 0xef, 0xbd, 0x08},
+	{0x03, 0xef, 0xbd, 0x09},
+	{0x03, 0xef, 0xbd, 0x0e},
+	{0x03, 0xef, 0xbd, 0x04},
+	{0x03, 0xef, 0xbd, 0x05},
+	{0x03, 0xef, 0xbe, 0x3f},
+	{0x03, 0xef, 0xbe, 0x00},
+	{0x03, 0xef, 0xbd, 0x2c},
+	{0x03, 0xef, 0xbe, 0x06},
+	{0x03, 0xef, 0xbe, 0x0c},
+	{0x03, 0xef, 0xbe, 0x0f},
+	{0x03, 0xef, 0xbe, 0x0d},
+	{0x03, 0xef, 0xbe, 0x0b},
+	{0x03, 0xef, 0xbe, 0x19},
+	{0x03, 0xef, 0xbe, 0x15},
+	{0x03, 0xef, 0xbe, 0x11},
+	{0x03, 0xef, 0xbe, 0x31},
+	{0x03, 0xef, 0xbe, 0x33},
+	{0x03, 0xef, 0xbd, 0x0f},
+	{0x03, 0xef, 0xbe, 0x30},
+	{0x03, 0xef, 0xbe, 0x3e},
+	{0x03, 0xef, 0xbe, 0x32},
+	{0x03, 0xef, 0xbe, 0x36},
+	{0x03, 0xef, 0xbd, 0x14},
+	{0x03, 0xef, 0xbe, 0x2e},
+	{0x03, 0xef, 0xbd, 0x1e},
+	{0x03, 0xef, 0xbe, 0x10},
+	{0x03, 0xef, 0xbf, 0x13},
+	{0x03, 0xef, 0xbf, 0x15},
+	{0x03, 0xef, 0xbf, 0x17},
+	{0x03, 0xef, 0xbf, 0x1f},
+	{0x03, 0xef, 0xbf, 0x1d},
+	{0x03, 0xef, 0xbf, 0x1b},
+	{0x03, 0xef, 0xbf, 0x09},
+	{0x03, 0xef, 0xbf, 0x0b},
+	{0x03, 0xef, 0xbf, 0x37},
+	{0x03, 0xef, 0xbe, 0x04},
+	{0x01, 0xe0, 0x00, 0x00},
+	{0x03, 0xe2, 0xa6, 0x1a},
+	{0x03, 0xe2, 0xa6, 0x26},
+	{0x03, 0xe3, 0x80, 0x23},
+	{0x03, 0xe3, 0x80, 0x2e},
+	{0x03, 0xe3, 0x80, 0x25},
+	{0x03, 0xe3, 0x83, 0x1e},
+	{0x03, 0xe3, 0x83, 0x14},
+	{0x03, 0xe3, 0x82, 0x06},
+	{0x03, 0xe3, 0x82, 0x0b},
+	{0x03, 0xe3, 0x82, 0x0c},
+	{0x03, 0xe3, 0x82, 0x0d},
+	{0x03, 0xe3, 0x82, 0x02},
+	{0x03, 0xe3, 0x83, 0x0f},
+	{0x03, 0xe3, 0x83, 0x08},
+	{0x03, 0xe3, 0x83, 0x09},
+	{0x03, 0xe3, 0x83, 0x2c},
+	{0x03, 0xe3, 0x83, 0x0c},
+	{0x03, 0xe3, 0x82, 0x13},
+	{0x03, 0xe3, 0x82, 0x16},
+	{0x03, 0xe3, 0x82, 0x15},
+	{0x03, 0xe3, 0x82, 0x1c},
+	{0x03, 0xe3, 0x82, 0x1f},
+	{0x03, 0xe3, 0x82, 0x1d},
+	{0x03, 0xe3, 0x82, 0x1a},
+	{0x03, 0xe3, 0x82, 0x17},
+	{0x03, 0xe3, 0x82, 0x08},
+	{0x03, 0xe3, 0x82, 0x09},
+	{0x03, 0xe3, 0x82, 0x0e},
+	{0x03, 0xe3, 0x82, 0x04},
+	{0x03, 0xe3, 0x82, 0x05},
+	{0x03, 0xe3, 0x82, 0x3f},
+	{0x03, 0xe3, 0x83, 0x00},
+	{0x03, 0xe3, 0x83, 0x06},
+	{0x03, 0xe3, 0x83, 0x05},
+	{0x03, 0xe3, 0x83, 0x0d},
+	{0x03, 0xe3, 0x83, 0x0b},
+	{0x03, 0xe3, 0x83, 0x07},
+	{0x03, 0xe3, 0x83, 0x19},
+	{0x03, 0xe3, 0x83, 0x15},
+	{0x03, 0xe3, 0x83, 0x11},
+	{0x03, 0xe3, 0x83, 0x31},
+	{0x03, 0xe3, 0x83, 0x33},
+	{0x03, 0xe3, 0x83, 0x30},
+	{0x03, 0xe3, 0x83, 0x3e},
+	{0x03, 0xe3, 0x83, 0x32},
+	{0x03, 0xe3, 0x83, 0x36},
+	{0x03, 0xe3, 0x83, 0x2e},
+	{0x03, 0xe3, 0x82, 0x07},
+	{0x03, 0xe3, 0x85, 0x04},
+	{0x03, 0xe3, 0x84, 0x10},
+	{0x03, 0xe3, 0x85, 0x30},
+	{0x03, 0xe3, 0x85, 0x0d},
+	{0x03, 0xe3, 0x85, 0x13},
+	{0x03, 0xe3, 0x85, 0x15},
+	{0x03, 0xe3, 0x85, 0x17},
+	{0x03, 0xe3, 0x85, 0x1f},
+	{0x03, 0xe3, 0x85, 0x1d},
+	{0x03, 0xe3, 0x85, 0x1b},
+	{0x03, 0xe3, 0x85, 0x09},
+	{0x03, 0xe3, 0x85, 0x0f},
+	{0x03, 0xe3, 0x85, 0x0b},
+	{0x03, 0xe3, 0x85, 0x37},
+	{0x03, 0xe3, 0x85, 0x3b},
+	{0x03, 0xe3, 0x85, 0x39},
+	{0x03, 0xe3, 0x85, 0x3f},
+	{0x02, 0xc2, 0x02, 0x00},
+	{0x02, 0xc2, 0x0e, 0x00},
+	{0x02, 0xc2, 0x0c, 0x00},
+	{0x02, 0xc2, 0x00, 0x00},
+	{0x03, 0xe2, 0x82, 0x0f},
+	{0x03, 0xe2, 0x94, 0x2a},
+	{0x03, 0xe2, 0x86, 0x39},
+	{0x03, 0xe2, 0x86, 0x3b},
+	{0x03, 0xe2, 0x86, 0x3f},
+	{0x03, 0xe2, 0x96, 0x0d},
+	{0x03, 0xe2, 0x97, 0x25},
+}
+
+// Total table size 11480 bytes (11KiB)
diff --git a/go/src/golang.org/x/text/width/tables_test.go b/go/src/golang.org/x/text/width/tables_test.go
new file mode 100644
index 0000000..bc9aab3
--- /dev/null
+++ b/go/src/golang.org/x/text/width/tables_test.go
@@ -0,0 +1,64 @@
+// Copyright 2015 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 width
+
+import (
+	"flag"
+	"testing"
+
+	"golang.org/x/text/internal/gen"
+)
+
+var long = flag.Bool("long", false,
+	"run time-consuming tests, such as tests that fetch data online")
+
+const (
+	loSurrogate = 0xD800
+	hiSurrogate = 0xDFFF
+)
+
+func TestTables(t *testing.T) {
+	if !gen.IsLocal() && !*long {
+		t.Skip("skipping test to prevent downloading; to run use -long or use -local to specify a local source")
+	}
+	runes := map[rune]Kind{}
+	getWidthData(func(r rune, tag elem, _ rune) {
+		runes[r] = tag.kind()
+	})
+	for r := rune(0); r < 0x10FFFF; r++ {
+		if loSurrogate <= r && r <= hiSurrogate {
+			continue
+		}
+		p := LookupRune(r)
+		if got, want := p.Kind(), runes[r]; got != want {
+			t.Errorf("Kind of %U was %s; want %s.", r, got, want)
+		}
+		want, mapped := foldRune(r)
+		if got := p.Folded(); (got == 0) == mapped || got != 0 && got != want {
+			t.Errorf("Folded(%U) = %U; want %U", r, got, want)
+		}
+		want, mapped = widenRune(r)
+		if got := p.Wide(); (got == 0) == mapped || got != 0 && got != want {
+			t.Errorf("Wide(%U) = %U; want %U", r, got, want)
+		}
+		want, mapped = narrowRune(r)
+		if got := p.Narrow(); (got == 0) == mapped || got != 0 && got != want {
+			t.Errorf("Narrow(%U) = %U; want %U", r, got, want)
+		}
+	}
+}
+
+// TestAmbiguous verifies that that ambiguous runes with a mapping always map to
+// a halfwidth rune.
+func TestAmbiguous(t *testing.T) {
+	for r, m := range mapRunes {
+		if m.e != tagAmbiguous {
+			continue
+		}
+		if k := mapRunes[m.r].e.kind(); k != EastAsianHalfwidth {
+			t.Errorf("Rune %U is ambiguous and maps to a rune of type %v", r, k)
+		}
+	}
+}
diff --git a/go/src/golang.org/x/text/width/transform.go b/go/src/golang.org/x/text/width/transform.go
new file mode 100644
index 0000000..8dd731c
--- /dev/null
+++ b/go/src/golang.org/x/text/width/transform.go
@@ -0,0 +1,150 @@
+// Copyright 2015 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 width
+
+import (
+	"unicode/utf8"
+
+	"golang.org/x/text/transform"
+)
+
+type foldTransform struct {
+	transform.NopResetter
+}
+
+func (foldTransform) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+	for nSrc < len(src) {
+		if src[nSrc] < utf8.RuneSelf {
+			// ASCII fast path.
+			start, end := nSrc, len(src)
+			if d := len(dst) - nDst; d < end-start {
+				end = nSrc + d
+			}
+			for nSrc++; nSrc < end && src[nSrc] < utf8.RuneSelf; nSrc++ {
+			}
+			nDst += copy(dst[nDst:], src[start:nSrc])
+			if nDst == len(dst) && nSrc < len(src) && src[nSrc] < utf8.RuneSelf {
+				return nDst, nSrc, transform.ErrShortDst
+			}
+			continue
+		}
+		v, size := trie.lookup(src[nSrc:])
+		if size == 0 { // incomplete UTF-8 encoding
+			if !atEOF {
+				return nDst, nSrc, transform.ErrShortSrc
+			}
+			size = 1 // gobble 1 byte
+		}
+		if elem(v)&tagNeedsFold == 0 {
+			if size != copy(dst[nDst:], src[nSrc:nSrc+size]) {
+				return nDst, nSrc, transform.ErrShortDst
+			}
+			nDst += size
+		} else {
+			data := inverseData[byte(v)]
+			if len(dst)-nDst < int(data[0]) {
+				return nDst, nSrc, transform.ErrShortDst
+			}
+			i := 1
+			for end := int(data[0]); i < end; i++ {
+				dst[nDst] = data[i]
+				nDst++
+			}
+			dst[nDst] = data[i] ^ src[nSrc+size-1]
+			nDst++
+		}
+		nSrc += size
+	}
+	return nDst, nSrc, nil
+}
+
+type narrowTransform struct {
+	transform.NopResetter
+}
+
+func (narrowTransform) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+	for nSrc < len(src) {
+		if src[nSrc] < utf8.RuneSelf {
+			// ASCII fast path.
+			start, end := nSrc, len(src)
+			if d := len(dst) - nDst; d < end-start {
+				end = nSrc + d
+			}
+			for nSrc++; nSrc < end && src[nSrc] < utf8.RuneSelf; nSrc++ {
+			}
+			nDst += copy(dst[nDst:], src[start:nSrc])
+			if nDst == len(dst) && nSrc < len(src) && src[nSrc] < utf8.RuneSelf {
+				return nDst, nSrc, transform.ErrShortDst
+			}
+			continue
+		}
+		v, size := trie.lookup(src[nSrc:])
+		if size == 0 { // incomplete UTF-8 encoding
+			if !atEOF {
+				return nDst, nSrc, transform.ErrShortSrc
+			}
+			size = 1 // gobble 1 byte
+		}
+		if k := elem(v).kind(); byte(v) == 0 || k != EastAsianFullwidth && k != EastAsianWide && k != EastAsianAmbiguous {
+			if size != copy(dst[nDst:], src[nSrc:nSrc+size]) {
+				return nDst, nSrc, transform.ErrShortDst
+			}
+			nDst += size
+		} else {
+			data := inverseData[byte(v)]
+			if len(dst)-nDst < int(data[0]) {
+				return nDst, nSrc, transform.ErrShortDst
+			}
+			i := 1
+			for end := int(data[0]); i < end; i++ {
+				dst[nDst] = data[i]
+				nDst++
+			}
+			dst[nDst] = data[i] ^ src[nSrc+size-1]
+			nDst++
+		}
+		nSrc += size
+	}
+	return nDst, nSrc, nil
+}
+
+type wideTransform struct {
+	transform.NopResetter
+}
+
+func (wideTransform) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+	for nSrc < len(src) {
+		// TODO: Consider ASCII fast path. Special-casing ASCII handling can
+		// reduce the ns/op of BenchmarkWideASCII by about 30%. This is probably
+		// not enough to warrant the extra code and complexity.
+		v, size := trie.lookup(src[nSrc:])
+		if size == 0 { // incomplete UTF-8 encoding
+			if !atEOF {
+				return nDst, nSrc, transform.ErrShortSrc
+			}
+			size = 1 // gobble 1 byte
+		}
+		if k := elem(v).kind(); byte(v) == 0 || k != EastAsianHalfwidth && k != EastAsianNarrow {
+			if size != copy(dst[nDst:], src[nSrc:nSrc+size]) {
+				return nDst, nSrc, transform.ErrShortDst
+			}
+			nDst += size
+		} else {
+			data := inverseData[byte(v)]
+			if len(dst)-nDst < int(data[0]) {
+				return nDst, nSrc, transform.ErrShortDst
+			}
+			i := 1
+			for end := int(data[0]); i < end; i++ {
+				dst[nDst] = data[i]
+				nDst++
+			}
+			dst[nDst] = data[i] ^ src[nSrc+size-1]
+			nDst++
+		}
+		nSrc += size
+	}
+	return nDst, nSrc, nil
+}
diff --git a/go/src/golang.org/x/text/width/transform_test.go b/go/src/golang.org/x/text/width/transform_test.go
new file mode 100644
index 0000000..f57e600
--- /dev/null
+++ b/go/src/golang.org/x/text/width/transform_test.go
@@ -0,0 +1,467 @@
+// Copyright 2015 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 width
+
+import (
+	"bytes"
+	"testing"
+
+	"golang.org/x/text/internal/testtext"
+	"golang.org/x/text/transform"
+)
+
+func foldRune(r rune) (folded rune, ok bool) {
+	alt, ok := mapRunes[r]
+	if ok && alt.e&tagNeedsFold != 0 {
+		return alt.r, true
+	}
+	return r, false
+}
+
+func widenRune(r rune) (wide rune, ok bool) {
+	alt, ok := mapRunes[r]
+	if k := alt.e.kind(); k == EastAsianHalfwidth || k == EastAsianNarrow {
+		return alt.r, true
+	}
+	return r, false
+}
+
+func narrowRune(r rune) (narrow rune, ok bool) {
+	alt, ok := mapRunes[r]
+	if k := alt.e.kind(); k == EastAsianFullwidth || k == EastAsianWide || k == EastAsianAmbiguous {
+		return alt.r, true
+	}
+	return r, false
+}
+
+func TestFoldSingleRunes(t *testing.T) {
+	for r := rune(0); r < 0x1FFFF; r++ {
+		if loSurrogate <= r && r <= hiSurrogate {
+			continue
+		}
+		x, _ := foldRune(r)
+		want := string(x)
+		got := Fold.String(string(r))
+		if got != want {
+			t.Errorf("Fold().String(%U) = %+q; want %+q", r, got, want)
+		}
+	}
+}
+
+func TestFold(t *testing.T) {
+	for _, tc := range []struct {
+		desc  string
+		src   string
+		nDst  int
+		atEOF bool
+		dst   string
+		nSrc  int
+		err   error
+	}{{
+		desc:  "empty",
+		src:   "",
+		dst:   "",
+		nDst:  10,
+		nSrc:  0,
+		atEOF: false,
+		err:   nil,
+	}, {
+		desc:  "short source 1",
+		src:   "a\xc0",
+		dst:   "a",
+		nDst:  10,
+		nSrc:  1,
+		atEOF: false,
+		err:   transform.ErrShortSrc,
+	}, {
+		desc:  "short source 2",
+		src:   "a\xe0\x80",
+		dst:   "a",
+		nDst:  10,
+		nSrc:  1,
+		atEOF: false,
+		err:   transform.ErrShortSrc,
+	}, {
+		desc:  "incomplete but terminated source 1",
+		src:   "a\xc0",
+		dst:   "a\xc0",
+		nDst:  10,
+		nSrc:  2,
+		atEOF: true,
+		err:   nil,
+	}, {
+		desc:  "incomplete but terminated source 2",
+		src:   "a\xe0\x80",
+		dst:   "a\xe0\x80",
+		nDst:  10,
+		nSrc:  3,
+		atEOF: true,
+		err:   nil,
+	}, {
+		desc:  "exact fit dst",
+		src:   "a\uff01",
+		dst:   "a!",
+		nDst:  2,
+		nSrc:  4,
+		atEOF: false,
+		err:   nil,
+	}, {
+		desc:  "short dst 1",
+		src:   "a\uffe0",
+		dst:   "a",
+		nDst:  2,
+		nSrc:  1,
+		atEOF: false,
+		err:   transform.ErrShortDst,
+	}, {
+		desc:  "short dst 2",
+		src:   "不夠",
+		dst:   "不",
+		nDst:  3,
+		nSrc:  3,
+		atEOF: true,
+		err:   transform.ErrShortDst,
+	}, {
+		desc:  "short dst fast path",
+		src:   "fast",
+		dst:   "fas",
+		nDst:  3,
+		nSrc:  3,
+		atEOF: true,
+		err:   transform.ErrShortDst,
+	}, {
+		desc:  "fast path alternation",
+		src:   "fast路徑fast路徑",
+		dst:   "fast路徑fast路徑",
+		nDst:  20,
+		nSrc:  20,
+		atEOF: true,
+		err:   nil,
+	}} {
+		b := make([]byte, tc.nDst)
+		nDst, nSrc, err := Fold.Transform(b, []byte(tc.src), tc.atEOF)
+		if got := string(b[:nDst]); got != tc.dst {
+			t.Errorf("%s: dst was %+q; want %+q", tc.desc, got, tc.dst)
+		}
+		if nSrc != tc.nSrc {
+			t.Errorf("%s: nSrc was %d; want %d", tc.desc, nSrc, tc.nSrc)
+		}
+		if err != tc.err {
+			t.Errorf("%s: error was %v; want %v", tc.desc, err, tc.err)
+		}
+	}
+}
+
+func TestWidenSingleRunes(t *testing.T) {
+	for r := rune(0); r < 0x1FFFF; r++ {
+		if loSurrogate <= r && r <= hiSurrogate {
+			continue
+		}
+		alt, _ := widenRune(r)
+		want := string(alt)
+		got := Widen.String(string(r))
+		if got != want {
+			t.Errorf("Widen().String(%U) = %+q; want %+q", r, got, want)
+		}
+	}
+}
+
+func TestWiden(t *testing.T) {
+	for _, tc := range []struct {
+		desc  string
+		src   string
+		nDst  int
+		atEOF bool
+		dst   string
+		nSrc  int
+		err   error
+	}{{
+		desc:  "empty",
+		src:   "",
+		dst:   "",
+		nDst:  10,
+		nSrc:  0,
+		atEOF: false,
+		err:   nil,
+	}, {
+		desc:  "short source 1",
+		src:   "a\xc0",
+		dst:   "a",
+		nDst:  10,
+		nSrc:  1,
+		atEOF: false,
+		err:   transform.ErrShortSrc,
+	}, {
+		desc:  "short source 2",
+		src:   "a\xe0\x80",
+		dst:   "a",
+		nDst:  10,
+		nSrc:  1,
+		atEOF: false,
+		err:   transform.ErrShortSrc,
+	}, {
+		desc:  "incomplete but terminated source 1",
+		src:   "a\xc0",
+		dst:   "a\xc0",
+		nDst:  10,
+		nSrc:  2,
+		atEOF: true,
+		err:   nil,
+	}, {
+		desc:  "incomplete but terminated source 2",
+		src:   "a\xe0\x80",
+		dst:   "a\xe0\x80",
+		nDst:  10,
+		nSrc:  3,
+		atEOF: true,
+		err:   nil,
+	}, {
+		desc:  "exact fit dst",
+		src:   "a!",
+		dst:   "a\uff01",
+		nDst:  6,
+		nSrc:  2,
+		atEOF: false,
+		err:   nil,
+	}, {
+		desc:  "short dst 1",
+		src:   "a\uffe0",
+		dst:   "a",
+		nDst:  4,
+		nSrc:  1,
+		atEOF: false,
+		err:   transform.ErrShortDst,
+	}, {
+		desc:  "short dst 2",
+		src:   "不夠",
+		dst:   "不",
+		nDst:  3,
+		nSrc:  3,
+		atEOF: true,
+		err:   transform.ErrShortDst,
+	}, {
+		desc:  "short dst ascii",
+		src:   "ascii",
+		dst:   "\uff41",
+		nDst:  3,
+		nSrc:  1,
+		atEOF: true,
+		err:   transform.ErrShortDst,
+	}, {
+		desc:  "ambiguous",
+		src:   "\uffe9",
+		dst:   "\u2190",
+		nDst:  4,
+		nSrc:  3,
+		atEOF: false,
+		err:   nil,
+	}} {
+		b := make([]byte, tc.nDst)
+		nDst, nSrc, err := Widen.Transform(b, []byte(tc.src), tc.atEOF)
+		if got := string(b[:nDst]); got != tc.dst {
+			t.Errorf("%s: dst was %+q; want %+q", tc.desc, got, tc.dst)
+		}
+		if nSrc != tc.nSrc {
+			t.Errorf("%s: nSrc was %d; want %d", tc.desc, nSrc, tc.nSrc)
+		}
+		if err != tc.err {
+			t.Errorf("%s: error was %v; want %v", tc.desc, err, tc.err)
+		}
+	}
+}
+
+func TestNarrowSingleRunes(t *testing.T) {
+	for r := rune(0); r < 0x1FFFF; r++ {
+		if loSurrogate <= r && r <= hiSurrogate {
+			continue
+		}
+		alt, _ := narrowRune(r)
+		want := string(alt)
+		got := Narrow.String(string(r))
+		if got != want {
+			t.Errorf("Narrow().String(%U) = %+q; want %+q", r, got, want)
+		}
+	}
+}
+
+func TestNarrow(t *testing.T) {
+	for _, tc := range []struct {
+		desc  string
+		src   string
+		nDst  int
+		atEOF bool
+		dst   string
+		nSrc  int
+		err   error
+	}{{
+		desc:  "empty",
+		src:   "",
+		dst:   "",
+		nDst:  10,
+		nSrc:  0,
+		atEOF: false,
+		err:   nil,
+	}, {
+		desc:  "short source 1",
+		src:   "a\xc0",
+		dst:   "a",
+		nDst:  10,
+		nSrc:  1,
+		atEOF: false,
+		err:   transform.ErrShortSrc,
+	}, {
+		desc:  "short source 2",
+		src:   "a\xe0\x80",
+		dst:   "a",
+		nDst:  10,
+		nSrc:  3,
+		atEOF: false,
+		err:   transform.ErrShortSrc,
+	}, {
+		desc:  "incomplete but terminated source 1",
+		src:   "a\xc0",
+		dst:   "a\xc0",
+		nDst:  10,
+		nSrc:  4,
+		atEOF: true,
+		err:   nil,
+	}, {
+		desc:  "incomplete but terminated source 2",
+		src:   "a\xe0\x80",
+		dst:   "a\xe0\x80",
+		nDst:  10,
+		nSrc:  5,
+		atEOF: true,
+		err:   nil,
+	}, {
+		desc:  "exact fit dst",
+		src:   "a\uff01",
+		dst:   "a!",
+		nDst:  2,
+		nSrc:  6,
+		atEOF: false,
+		err:   nil,
+	}, {
+		desc:  "short dst 1",
+		src:   "a\uffe0",
+		dst:   "a",
+		nDst:  2,
+		nSrc:  3,
+		atEOF: false,
+		err:   transform.ErrShortDst,
+	}, {
+		desc:  "short dst 2",
+		src:   "不夠",
+		dst:   "不",
+		nDst:  3,
+		nSrc:  3,
+		atEOF: true,
+		err:   transform.ErrShortDst,
+	}, {
+		// Create a narrow variant of ambiguous runes, if they exist.
+		desc:  "ambiguous",
+		src:   "\u2190",
+		dst:   "\uffe9",
+		nDst:  4,
+		nSrc:  3,
+		atEOF: false,
+		err:   nil,
+	}, {
+		desc:  "short dst fast path",
+		src:   "fast",
+		dst:   "fas",
+		nDst:  3,
+		nSrc:  3,
+		atEOF: true,
+		err:   transform.ErrShortDst,
+	}, {
+		desc:  "fast path alternation",
+		src:   "fast路徑fast路徑",
+		dst:   "fast路徑fast路徑",
+		nDst:  20,
+		nSrc:  20,
+		atEOF: true,
+		err:   nil,
+	}} {
+		b := make([]byte, tc.nDst)
+		nDst, nSrc, err := Narrow.Transform(b, []byte(tc.src), tc.atEOF)
+		if got := string(b[:nDst]); got != tc.dst {
+			t.Errorf("%s: dst was %+q; want %+q", tc.desc, got, tc.dst)
+		}
+		if nSrc != tc.nSrc {
+			t.Errorf("%s: nSrc was %d; want %d", tc.desc, nSrc, tc.nSrc)
+		}
+		if err != tc.err {
+			t.Errorf("%s: error was %v; want %v", tc.desc, err, tc.err)
+		}
+	}
+}
+func bench(b *testing.B, t Transformer, s string) {
+	dst := make([]byte, 1024)
+	src := []byte(s)
+	b.SetBytes(int64(len(src)))
+	b.ResetTimer()
+	for i := 0; i < b.N; i++ {
+		t.Transform(dst, src, true)
+	}
+}
+
+func changingRunes(f func(r rune) (rune, bool)) string {
+	buf := &bytes.Buffer{}
+	for r := rune(0); r <= 0xFFFF; r++ {
+		if _, ok := foldRune(r); ok {
+			buf.WriteRune(r)
+		}
+	}
+	return buf.String()
+}
+
+func BenchmarkFoldASCII(b *testing.B) {
+	bench(b, Fold, testtext.ASCII)
+}
+
+func BenchmarkFoldCJK(b *testing.B) {
+	bench(b, Fold, testtext.CJK)
+}
+
+func BenchmarkFoldNonCanonical(b *testing.B) {
+	bench(b, Fold, changingRunes(foldRune))
+}
+
+func BenchmarkFoldOther(b *testing.B) {
+	bench(b, Fold, testtext.TwoByteUTF8+testtext.ThreeByteUTF8)
+}
+
+func BenchmarkWideASCII(b *testing.B) {
+	bench(b, Widen, testtext.ASCII)
+}
+
+func BenchmarkWideCJK(b *testing.B) {
+	bench(b, Widen, testtext.CJK)
+}
+
+func BenchmarkWideNonCanonical(b *testing.B) {
+	bench(b, Widen, changingRunes(widenRune))
+}
+
+func BenchmarkWideOther(b *testing.B) {
+	bench(b, Widen, testtext.TwoByteUTF8+testtext.ThreeByteUTF8)
+}
+
+func BenchmarkNarrowASCII(b *testing.B) {
+	bench(b, Narrow, testtext.ASCII)
+}
+
+func BenchmarkNarrowCJK(b *testing.B) {
+	bench(b, Narrow, testtext.CJK)
+}
+
+func BenchmarkNarrowNonCanonical(b *testing.B) {
+	bench(b, Narrow, changingRunes(narrowRune))
+}
+
+func BenchmarkNarrowOther(b *testing.B) {
+	bench(b, Narrow, testtext.TwoByteUTF8+testtext.ThreeByteUTF8)
+}
diff --git a/go/src/golang.org/x/text/width/trieval.go b/go/src/golang.org/x/text/width/trieval.go
new file mode 100644
index 0000000..0ecffb4
--- /dev/null
+++ b/go/src/golang.org/x/text/width/trieval.go
@@ -0,0 +1,30 @@
+// This file was generated by go generate; DO NOT EDIT
+
+package width
+
+// elem is an entry of the width trie. The high byte is used to encode the type
+// of the rune. The low byte is used to store the index to a mapping entry in
+// the inverseData array.
+type elem uint16
+
+const (
+	tagNeutral elem = iota << typeShift
+	tagAmbiguous
+	tagWide
+	tagNarrow
+	tagFullwidth
+	tagHalfwidth
+)
+
+const (
+	numTypeBits = 3
+	typeShift   = 16 - numTypeBits
+
+	// tagNeedsFold is true for all fullwidth and halfwidth runes except for
+	// the Won sign U+20A9.
+	tagNeedsFold = 0x1000
+
+	// The Korean Won sign is halfwidth, but SHOULD NOT be mapped to a wide
+	// variant.
+	wonSign rune = 0x20A9
+)
diff --git a/go/src/golang.org/x/text/width/width.go b/go/src/golang.org/x/text/width/width.go
new file mode 100644
index 0000000..c32d772
--- /dev/null
+++ b/go/src/golang.org/x/text/width/width.go
@@ -0,0 +1,201 @@
+// Copyright 2015 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.
+
+//go:generate stringer -type=Kind
+//go:generate go run gen.go gen_common.go gen_trieval.go
+
+// Package width provides functionality for handling different widths in text.
+//
+// Wide characters behave like ideographs; they tend to allow line breaks after
+// each character and remain upright in vertical text layout. Narrow characters
+// are kept together in words or runs that are rotated sideways in vertical text
+// layout.
+//
+// For more information, see http://unicode.org/reports/tr11/.
+package width
+
+import (
+	"unicode/utf8"
+
+	"golang.org/x/text/transform"
+)
+
+// TODO
+// 1) Reduce table size by compressing blocks.
+// 2) API proposition for computing display length
+//    (approximation, fixed pitch only).
+// 3) Implement display length.
+
+// Kind indicates the type of width property as defined in http://unicode.org/reports/tr11/.
+type Kind int
+
+const (
+	// Neutral characters do not occur in legacy East Asian character sets.
+	Neutral Kind = iota
+
+	// EastAsianAmbiguous characters that can be sometimes wide and sometimes
+	// narrow and require additional information not contained in the character
+	// code to further resolve their width.
+	EastAsianAmbiguous
+
+	// EastAsianWide characters are wide in its usual form. They occur only in
+	// the context of East Asian typography. These runes may have explicit
+	// halfwidth counterparts.
+	EastAsianWide
+
+	// EastAsianNarrow characters are narrow in its usual form. They often have
+	// fullwidth counterparts.
+	EastAsianNarrow
+
+	// Note: there exist Narrow runes that do not have fullwidth or wide
+	// counterparts, despite what the definition says (e.g. U+27E6).
+
+	// EastAsianFullwidth characters have a compatibility decompositions of type
+	// wide that map to a narrow counterpart.
+	EastAsianFullwidth
+
+	// EastAsianHalfwidth characters have a compatibility decomposition of type
+	// narrow that map to a wide or ambiguous counterpart, plus U+20A9 ₩ WON
+	// SIGN.
+	EastAsianHalfwidth
+
+	// Note: there exist runes that have a halfwidth counterparts but that are
+	// classified as Ambiguous, rather than wide (e.g. U+2190).
+)
+
+// TODO: the generated tries need to return size 1 for invalid runes for the
+// width to be computed correctly (each byte should render width 1)
+
+var trie = newWidthTrie(0)
+
+// Lookup reports the Properties of the first rune in b and the number of bytes
+// of its UTF-8 encoding.
+func Lookup(b []byte) (p Properties, size int) {
+	v, sz := trie.lookup(b)
+	return Properties{elem(v), b[sz-1]}, sz
+}
+
+// LookupString reports the Properties of the first rune in s and the number of
+// bytes of its UTF-8 encoding.
+func LookupString(s string) (p Properties, size int) {
+	v, sz := trie.lookupString(s)
+	return Properties{elem(v), s[sz-1]}, sz
+}
+
+// LookupRune reports the Properties of rune r.
+func LookupRune(r rune) Properties {
+	var buf [4]byte
+	n := utf8.EncodeRune(buf[:], r)
+	v, _ := trie.lookup(buf[:n])
+	last := byte(r)
+	if r >= utf8.RuneSelf {
+		last = 0x80 + byte(r&0x3f)
+	}
+	return Properties{elem(v), last}
+}
+
+// Properties provides access to width properties of a rune.
+type Properties struct {
+	elem elem
+	last byte
+}
+
+func (e elem) kind() Kind {
+	return Kind(e >> typeShift)
+}
+
+// Kind returns the Kind of a rune as defined in Unicode TR #11.
+// See http://unicode.org/reports/tr11/ for more details.
+func (p Properties) Kind() Kind {
+	return p.elem.kind()
+}
+
+// Folded returns the folded variant of a rune or 0 if the rune is canonical.
+func (p Properties) Folded() rune {
+	if p.elem&tagNeedsFold != 0 {
+		buf := inverseData[byte(p.elem)]
+		buf[buf[0]] ^= p.last
+		r, _ := utf8.DecodeRune(buf[1 : 1+buf[0]])
+		return r
+	}
+	return 0
+}
+
+// Narrow returns the narrow variant of a rune or 0 if the rune is already
+// narrow or doesn't have a narrow variant.
+func (p Properties) Narrow() rune {
+	if k := p.elem.kind(); byte(p.elem) != 0 && (k == EastAsianFullwidth || k == EastAsianWide || k == EastAsianAmbiguous) {
+		buf := inverseData[byte(p.elem)]
+		buf[buf[0]] ^= p.last
+		r, _ := utf8.DecodeRune(buf[1 : 1+buf[0]])
+		return r
+	}
+	return 0
+}
+
+// Wide returns the wide variant of a rune or 0 if the rune is already
+// wide or doesn't have a wide variant.
+func (p Properties) Wide() rune {
+	if k := p.elem.kind(); byte(p.elem) != 0 && (k == EastAsianHalfwidth || k == EastAsianNarrow) {
+		buf := inverseData[byte(p.elem)]
+		buf[buf[0]] ^= p.last
+		r, _ := utf8.DecodeRune(buf[1 : 1+buf[0]])
+		return r
+	}
+	return 0
+}
+
+// TODO for Properties:
+// - Add Fullwidth/Halfwidth or Inverted methods for computing variants
+// mapping.
+// - Add width information (including information on non-spacing runes).
+
+// Transformer implements the transform.Transformer interface.
+type Transformer struct {
+	t transform.Transformer
+}
+
+// Reset implements the transform.Transformer interface.
+func (t Transformer) Reset() { t.t.Reset() }
+
+// Transform implements the Transformer interface.
+func (t Transformer) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+	return t.t.Transform(dst, src, atEOF)
+}
+
+// Bytes returns a new byte slice with the result of applying t to b.
+func (t Transformer) Bytes(b []byte) []byte {
+	b, _, _ = transform.Bytes(t, b)
+	return b
+}
+
+// String returns a string with the result of applying t to s.
+func (t Transformer) String(s string) string {
+	s, _, _ = transform.String(t, s)
+	return s
+}
+
+var (
+	// Fold is a transform that maps all runes to their canonical width.
+	//
+	// Note that the NFKC and NFKD transforms in golang.org/x/text/unicode/norm
+	// provide a more generic folding mechanism.
+	Fold Transformer = Transformer{foldTransform{}}
+
+	// Widen is a transform that maps runes to their wide variant, if
+	// available.
+	Widen Transformer = Transformer{wideTransform{}}
+
+	// Narrow is a transform that maps runes to their narrow variant, if
+	// available.
+	Narrow Transformer = Transformer{narrowTransform{}}
+)
+
+// TODO: Consider the following options:
+// - Treat Ambiguous runes that have a halfwidth counterpart as wide, or some
+//   generalized variant of this.
+// - Consider a wide Won character to be the default width (or some generalized
+//   variant of this).
+// - Filter the set of characters that gets converted (the preferred approach is
+//   to allow applying filters to transforms).
diff --git a/go/src/golang.org/x/tools/README.google b/go/src/golang.org/x/tools/README.google
index feaee90..5057fd8 100644
--- a/go/src/golang.org/x/tools/README.google
+++ b/go/src/golang.org/x/tools/README.google
@@ -1,5 +1,5 @@
-URL: https://go.googlesource.com/tools/+archive/69db398fe0e69396984e3967724820c1f631e971.tar.gz
-Version: 69db398fe0e69396984e3967724820c1f631e971
+URL: https://go.googlesource.com/tools/+archive/c5ca59aab8c27791ce3f820caad760cff360cfc8.tar.gz
+Version: c5ca59aab8c27791ce3f820caad760cff360cfc8
 License: New BSD
 License File: LICENSE
 
diff --git a/go/src/golang.org/x/tools/cmd/callgraph/main.go b/go/src/golang.org/x/tools/cmd/callgraph/main.go
index 0411395..29179dd 100644
--- a/go/src/golang.org/x/tools/cmd/callgraph/main.go
+++ b/go/src/golang.org/x/tools/cmd/callgraph/main.go
@@ -30,6 +30,7 @@
 	"runtime"
 	"text/template"
 
+	"golang.org/x/tools/go/buildutil"
 	"golang.org/x/tools/go/callgraph"
 	"golang.org/x/tools/go/callgraph/cha"
 	"golang.org/x/tools/go/callgraph/rta"
@@ -37,10 +38,11 @@
 	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/pointer"
 	"golang.org/x/tools/go/ssa"
+	"golang.org/x/tools/go/ssa/ssautil"
 )
 
 var algoFlag = flag.String("algo", "rta",
-	`Call graph construction algorithm, one of "rta" or "pta"`)
+	`Call graph construction algorithm (static, cha, rta, pta)`)
 
 var testFlag = flag.Bool("test", false,
 	"Loads test code (*_test.go) for imported packages")
@@ -49,6 +51,10 @@
 	"{{.Caller}}\t--{{.Dynamic}}-{{.Line}}:{{.Column}}-->\t{{.Callee}}",
 	"A template expression specifying how to format an edge")
 
+func init() {
+	flag.Var((*buildutil.TagsFlag)(&build.Default.BuildTags), "tags", buildutil.TagsFlagDoc)
+}
+
 const Usage = `callgraph: display the the call graph of a Go program.
 
 Usage:
@@ -173,7 +179,7 @@
 	}
 
 	// Create and build SSA-form program representation.
-	prog := ssa.Create(iprog, 0)
+	prog := ssautil.CreateProgram(iprog, 0)
 	prog.BuildAll()
 
 	// -- call graph construction ------------------------------------------
diff --git a/go/src/golang.org/x/tools/cmd/cover/README b/go/src/golang.org/x/tools/cmd/cover/README
new file mode 100644
index 0000000..ff9523d
--- /dev/null
+++ b/go/src/golang.org/x/tools/cmd/cover/README
@@ -0,0 +1,2 @@
+NOTE: For Go releases 1.5 and later, this tool lives in the
+standard repository. The code here is not maintained.
diff --git a/go/src/golang.org/x/tools/cmd/cover/cover.go b/go/src/golang.org/x/tools/cmd/cover/cover.go
index 3aaf246..31ec434 100644
--- a/go/src/golang.org/x/tools/cmd/cover/cover.go
+++ b/go/src/golang.org/x/tools/cmd/cover/cover.go
@@ -19,6 +19,7 @@
 	"path/filepath"
 	"sort"
 	"strconv"
+	"strings"
 )
 
 const usageMessage = "" +
@@ -220,6 +221,11 @@
 		if n.Body == nil || len(n.Body.List) == 0 {
 			return nil
 		}
+	case *ast.TypeSwitchStmt:
+		// Don't annotate an empty type switch - creates a syntax error.
+		if n.Body == nil || len(n.Body.List) == 0 {
+			return nil
+		}
 	}
 	return f
 }
@@ -324,10 +330,11 @@
 	if err != nil {
 		log.Fatalf("cover: %s: %s", name, err)
 	}
-	parsedFile, err := parser.ParseFile(fset, name, content, 0)
+	parsedFile, err := parser.ParseFile(fset, name, content, parser.ParseComments)
 	if err != nil {
 		log.Fatalf("cover: %s: %s", name, err)
 	}
+	parsedFile.Comments = trimComments(parsedFile, fset)
 
 	file := &File{
 		fset:    fset,
@@ -353,6 +360,26 @@
 	file.addVariables(fd)
 }
 
+// trimComments drops all but the //go: comments, some of which are semantically important.
+// We drop all others because they can appear in places that cause our counters
+// to appear in syntactically incorrect places. //go: appears at the beginning of
+// the line and is syntactically safe.
+func trimComments(file *ast.File, fset *token.FileSet) []*ast.CommentGroup {
+	var comments []*ast.CommentGroup
+	for _, group := range file.Comments {
+		var list []*ast.Comment
+		for _, comment := range group.List {
+			if strings.HasPrefix(comment.Text, "//go:") && fset.Position(comment.Slash).Column == 1 {
+				list = append(list, comment)
+			}
+		}
+		if list != nil {
+			comments = append(comments, &ast.CommentGroup{list})
+		}
+	}
+	return comments
+}
+
 func (f *File) print(w io.Writer) {
 	printer.Fprint(w, f.fset, f.astFile)
 }
@@ -476,6 +503,9 @@
 // Therefore we draw a line at the start of the body of the first function literal we find.
 // TODO: what if there's more than one? Probably doesn't matter much.
 func hasFuncLiteral(n ast.Node) (bool, token.Pos) {
+	if n == nil {
+		return false, 0
+	}
 	var literal funcLitFinder
 	ast.Walk(&literal, n)
 	return literal.found(), token.Pos(literal)
@@ -490,24 +520,54 @@
 		// Treat blocks like basic blocks to avoid overlapping counters.
 		return s.Lbrace
 	case *ast.IfStmt:
+		found, pos := hasFuncLiteral(s.Init)
+		if found {
+			return pos
+		}
+		found, pos = hasFuncLiteral(s.Cond)
+		if found {
+			return pos
+		}
 		return s.Body.Lbrace
 	case *ast.ForStmt:
+		found, pos := hasFuncLiteral(s.Init)
+		if found {
+			return pos
+		}
+		found, pos = hasFuncLiteral(s.Cond)
+		if found {
+			return pos
+		}
+		found, pos = hasFuncLiteral(s.Post)
+		if found {
+			return pos
+		}
 		return s.Body.Lbrace
 	case *ast.LabeledStmt:
 		return f.statementBoundary(s.Stmt)
 	case *ast.RangeStmt:
-		// Ranges might loop over things with function literals.: for _ = range []func(){ ... } {.
-		// TODO: There are a few other such possibilities, but they're extremely unlikely.
 		found, pos := hasFuncLiteral(s.X)
 		if found {
 			return pos
 		}
 		return s.Body.Lbrace
 	case *ast.SwitchStmt:
+		found, pos := hasFuncLiteral(s.Init)
+		if found {
+			return pos
+		}
+		found, pos = hasFuncLiteral(s.Tag)
+		if found {
+			return pos
+		}
 		return s.Body.Lbrace
 	case *ast.SelectStmt:
 		return s.Body.Lbrace
 	case *ast.TypeSwitchStmt:
+		found, pos := hasFuncLiteral(s.Init)
+		if found {
+			return pos
+		}
 		return s.Body.Lbrace
 	}
 	// If not a control flow statement, it is a declaration, expression, call, etc. and it may have a function literal.
@@ -545,6 +605,16 @@
 		return true
 	case *ast.TypeSwitchStmt:
 		return true
+	case *ast.ExprStmt:
+		// Calls to panic change the flow.
+		// We really should verify that "panic" is the predefined function,
+		// but without type checking we can't and the likelihood of it being
+		// an actual problem is vanishingly small.
+		if call, ok := s.X.(*ast.CallExpr); ok {
+			if ident, ok := call.Fun.(*ast.Ident); ok && ident.Name == "panic" && len(call.Args) == 1 {
+				return true
+			}
+		}
 	}
 	found, _ := hasFuncLiteral(s)
 	return found
diff --git a/go/src/golang.org/x/tools/cmd/cover/cover_test.go b/go/src/golang.org/x/tools/cmd/cover/cover_test.go
index 82c1ce5..d5219a7 100644
--- a/go/src/golang.org/x/tools/cmd/cover/cover_test.go
+++ b/go/src/golang.org/x/tools/cmd/cover/cover_test.go
@@ -50,6 +50,9 @@
 		lines[i] = bytes.Replace(line, []byte("LINE"), []byte(fmt.Sprint(i+1)), -1)
 	}
 	err = ioutil.WriteFile(coverInput, bytes.Join(lines, []byte("\n")), 0666)
+	if err != nil {
+		t.Fatal(err)
+	}
 
 	// defer removal of test_line.go
 	if !debug {
diff --git a/go/src/golang.org/x/tools/cmd/cover/doc.go b/go/src/golang.org/x/tools/cmd/cover/doc.go
index c90f460..b74d5b3 100644
--- a/go/src/golang.org/x/tools/cmd/cover/doc.go
+++ b/go/src/golang.org/x/tools/cmd/cover/doc.go
@@ -17,5 +17,11 @@
 For usage information, please see:
 	go help testflag
 	go tool cover -help
+
+No longer maintained:
+
+For Go releases 1.5 and later, this tool lives in the
+standard repository. The code here is not maintained.
+
 */
 package main // import "golang.org/x/tools/cmd/cover"
diff --git a/go/src/golang.org/x/tools/cmd/cover/testdata/main.go b/go/src/golang.org/x/tools/cmd/cover/testdata/main.go
index c704b15..6ed39c4 100644
--- a/go/src/golang.org/x/tools/cmd/cover/testdata/main.go
+++ b/go/src/golang.org/x/tools/cmd/cover/testdata/main.go
@@ -58,12 +58,31 @@
 			PASS = false
 		}
 	}
+	verifyPanic()
 	if !PASS {
 		fmt.Fprintf(os.Stderr, "FAIL\n")
 		os.Exit(2)
 	}
 }
 
+// verifyPanic is a special check for the known counter that should be
+// after the panic call in testPanic.
+func verifyPanic() {
+	if coverTest.Count[panicIndex-1] != 1 {
+		// Sanity check for test before panic.
+		fmt.Fprintf(os.Stderr, "bad before panic")
+		PASS = false
+	}
+	if coverTest.Count[panicIndex] != 0 {
+		fmt.Fprintf(os.Stderr, "bad at panic: %d should be 0\n", coverTest.Count[panicIndex])
+		PASS = false
+	}
+	if coverTest.Count[panicIndex+1] != 1 {
+		fmt.Fprintf(os.Stderr, "bad after panic")
+		PASS = false
+	}
+}
+
 // count returns the count and index for the counter at the specified line.
 func count(line uint32) (uint32, int) {
 	// Linear search is fine. Choose perfect fit over approximate.
diff --git a/go/src/golang.org/x/tools/cmd/cover/testdata/test.go b/go/src/golang.org/x/tools/cmd/cover/testdata/test.go
index 80b1f6b..9013950 100644
--- a/go/src/golang.org/x/tools/cmd/cover/testdata/test.go
+++ b/go/src/golang.org/x/tools/cmd/cover/testdata/test.go
@@ -22,6 +22,24 @@
 	testTypeSwitch()
 	testSelect1()
 	testSelect2()
+	testPanic()
+	testEmptySwitches()
+}
+
+// The indexes of the counters in testPanic are known to main.go
+const panicIndex = 3
+
+// This test appears first because the index of its counters is known to main.go
+func testPanic() {
+	defer func() {
+		recover()
+	}()
+	check(LINE, 1)
+	panic("should not get next line")
+	check(LINE, 0) // this is GoCover.Count[panicIndex]
+	// The next counter is in testSimple and it will be non-zero.
+	// If the panic above does not trigger a counter, the test will fail
+	// because GoCover.Count[panicIndex] will be the one in testSimple.
 }
 
 func testSimple() {
@@ -68,10 +86,13 @@
 			check(LINE, 0)
 		}
 	}
+	if func(a, b int) bool { return a < b }(3, 4) {
+		check(LINE, 1)
+	}
 }
 
 func testFor() {
-	for i := 0; i < 10; i++ {
+	for i := 0; i < 10; func() { i++; check(LINE, 10) }() {
 		check(LINE, 10)
 	}
 }
@@ -104,7 +125,7 @@
 }
 
 func testSwitch() {
-	for i := 0; i < 5; i++ {
+	for i := 0; i < 5; func() { i++; check(LINE, 5) }() {
 		switch i {
 		case 0:
 			check(LINE, 1)
@@ -121,7 +142,7 @@
 func testTypeSwitch() {
 	var x = []interface{}{1, 2.0, "hi"}
 	for _, v := range x {
-		switch v.(type) {
+		switch func() { check(LINE, 3) }(); v.(type) {
 		case int:
 			check(LINE, 1)
 		case float64:
@@ -175,3 +196,23 @@
 		}
 	}
 }
+
+// Empty control statements created syntax errors. This function
+// is here just to be sure that those are handled correctly now.
+func testEmptySwitches() {
+	check(LINE, 1)
+	switch 3 {
+	}
+	check(LINE, 1)
+	switch i := (interface{})(3).(int); i {
+	}
+	check(LINE, 1)
+	c := make(chan int)
+	go func() {
+		check(LINE, 1)
+		c <- 1
+		select {}
+	}()
+	<-c
+	check(LINE, 1)
+}
diff --git a/go/src/golang.org/x/tools/cmd/eg/eg.go b/go/src/golang.org/x/tools/cmd/eg/eg.go
index 0ad4331..5970c1a 100644
--- a/go/src/golang.org/x/tools/cmd/eg/eg.go
+++ b/go/src/golang.org/x/tools/cmd/eg/eg.go
@@ -6,6 +6,7 @@
 import (
 	"flag"
 	"fmt"
+	"go/build"
 	"go/parser"
 	"go/printer"
 	"go/token"
@@ -13,6 +14,7 @@
 	"os/exec"
 	"strings"
 
+	"golang.org/x/tools/go/buildutil"
 	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/refactor/eg"
 )
@@ -26,12 +28,21 @@
 	verboseFlag    = flag.Bool("v", false, "show verbose matcher diagnostics")
 )
 
+func init() {
+	flag.Var((*buildutil.TagsFlag)(&build.Default.BuildTags), "tags", buildutil.TagsFlagDoc)
+}
+
 const usage = `eg: an example-based refactoring tool.
 
 Usage: eg -t template.go [-w] [-transitive] <args>...
--t template.go	specifies the template file (use -help to see explanation)
--w          	causes files to be re-written in place.
--transitive 	causes all dependencies to be refactored too.
+
+-help            show detailed help message
+-t template.go	 specifies the template file (use -help to see explanation)
+-w          	 causes files to be re-written in place.
+-transitive 	 causes all dependencies to be refactored too.
+-v               show verbose matcher diagnostics
+-beforeedit cmd  a command to exec before each file is modified.
+                 "{}" represents the name of the file.
 ` + loader.FromArgsUsage
 
 func main() {
@@ -50,6 +61,11 @@
 		os.Exit(2)
 	}
 
+	if len(args) == 0 {
+		fmt.Fprint(os.Stderr, usage)
+		os.Exit(1)
+	}
+
 	if *templateFlag == "" {
 		return fmt.Errorf("no -t template.go file specified")
 	}
@@ -62,11 +78,6 @@
 	// The first Created package is the template.
 	conf.CreateFromFilenames("template", *templateFlag)
 
-	if len(args) == 0 {
-		fmt.Fprint(os.Stderr, usage)
-		os.Exit(1)
-	}
-
 	if _, err := conf.FromArgs(args, true); err != nil {
 		return err
 	}
diff --git a/go/src/golang.org/x/tools/cmd/fiximports/main.go b/go/src/golang.org/x/tools/cmd/fiximports/main.go
new file mode 100644
index 0000000..5a912e8
--- /dev/null
+++ b/go/src/golang.org/x/tools/cmd/fiximports/main.go
@@ -0,0 +1,387 @@
+// Copyright 2015 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 fiximports command fixes import declarations to use the canonical
+// import path for packages that have an "import comment" as defined by
+// https://golang.org/s/go14customimport.
+package main
+
+import (
+	"bytes"
+	"encoding/json"
+	"flag"
+	"fmt"
+	"go/ast"
+	"go/build"
+	"go/format"
+	"go/parser"
+	"go/token"
+	"io"
+	"io/ioutil"
+	"log"
+	"os"
+	"os/exec"
+	"path"
+	"path/filepath"
+	"sort"
+	"strconv"
+	"strings"
+)
+
+// flags
+var (
+	dryrun     = flag.Bool("n", false, "dry run: show changes, but don't apply them")
+	badDomains = flag.String("baddomains", "code.google.com",
+		"a comma-separated list of domains from which packages should not be imported")
+)
+
+// seams for testing
+var (
+	stderr    io.Writer = os.Stderr
+	writeFile           = ioutil.WriteFile
+)
+
+const usage = `fiximports: rewrite import paths to use canonical package names.
+
+Usage: fiximports [-n] package...
+
+The package... arguments specify a list of packages
+in the style of the go tool; see "go help packages".
+Hint: use "all" or "..." to match the entire workspace.
+
+Flags:
+  -n:	       dry run: show changes, but don't apply them
+  -baddomains  a comma-separated list of domains from which packages
+               should not be imported
+`
+
+func main() {
+	flag.Parse()
+
+	if len(flag.Args()) == 0 {
+		fmt.Fprintf(stderr, usage)
+		os.Exit(1)
+	}
+	if !fiximports(flag.Args()...) {
+		os.Exit(1)
+	}
+}
+
+// fiximports fixes imports in the specified packages.
+// Invariant: a false result implies an error was already printed.
+func fiximports(packages ...string) bool {
+	// importedBy is the transpose of the package import graph.
+	importedBy := make(map[string]map[*build.Package]bool)
+
+	// addEdge adds an edge to the import graph.
+	addEdge := func(from *build.Package, to string) {
+		if to == "C" || to == "unsafe" {
+			return // fake
+		}
+		pkgs := importedBy[to]
+		if pkgs == nil {
+			pkgs = make(map[*build.Package]bool)
+			importedBy[to] = pkgs
+		}
+		pkgs[from] = true
+	}
+
+	// List metadata for all packages in the workspace.
+	pkgs, err := list("...")
+	if err != nil {
+		fmt.Fprintf(stderr, "importfix: %v\n", err)
+		return false
+	}
+
+	// noncanonical maps each non-canonical package path to
+	// its canonical name.
+	// A present nil value indicates that the canonical package
+	// is unknown: hosted on a bad domain with no redirect.
+	noncanonical := make(map[string]*build.Package)
+	domains := strings.Split(*badDomains, ",")
+
+	// Find non-canonical packages and populate importedBy graph.
+	for _, p := range pkgs {
+		if p.Error != nil {
+			msg := p.Error.Err
+			if strings.Contains(msg, "code in directory") &&
+				strings.Contains(msg, "expects import") {
+				// don't show the very errors we're trying to fix
+			} else {
+				fmt.Fprintln(stderr, msg)
+			}
+		}
+
+		for _, imp := range p.Imports {
+			addEdge(&p.Package, imp)
+		}
+		for _, imp := range p.TestImports {
+			addEdge(&p.Package, imp)
+		}
+		for _, imp := range p.XTestImports {
+			addEdge(&p.Package, imp)
+		}
+
+		if p.ImportComment != "" {
+			if p.ImportComment != p.ImportPath {
+				noncanonical[p.ImportPath] = &p.Package
+			}
+		} else {
+			for _, domain := range domains {
+				slash := strings.Index(p.ImportPath, "/")
+				if slash < 0 {
+					continue // no slash: standard package
+				}
+				if p.ImportPath[:slash] == domain {
+					// Package comes from bad domain and has no import comment.
+					// Report an error each time this package is imported.
+					noncanonical[p.ImportPath] = nil
+
+					// TODO(adonovan): should we make an HTTP request to
+					// see if there's an HTTP redirect, a "go-import" meta tag,
+					// or an import comment in the the latest revision?
+					// It would duplicate a lot of logic from "go get".
+				}
+				break
+			}
+		}
+	}
+
+	// Find all clients (direct importers) of noncanonical packages.
+	// These are the packages that need fixing up.
+	clients := make(map[*build.Package]bool)
+	for path := range noncanonical {
+		for client := range importedBy[path] {
+			clients[client] = true
+		}
+	}
+
+	// Restrict rewrites to the set of packages specified by the user.
+	if len(packages) == 1 && (packages[0] == "all" || packages[0] == "...") {
+		// no restriction
+	} else {
+		pkgs, err := list(packages...)
+		if err != nil {
+			fmt.Fprintf(stderr, "importfix: %v\n", err)
+			return false
+		}
+		seen := make(map[string]bool)
+		for _, p := range pkgs {
+			seen[p.ImportPath] = true
+		}
+		for client := range clients {
+			if !seen[client.ImportPath] {
+				delete(clients, client)
+			}
+		}
+	}
+
+	// Rewrite selected client packages.
+	ok := true
+	for client := range clients {
+		if !rewritePackage(client, noncanonical) {
+			ok = false
+
+			// There were errors.
+			// Show direct and indirect imports of client.
+			seen := make(map[string]bool)
+			var direct, indirect []string
+			for p := range importedBy[client.ImportPath] {
+				direct = append(direct, p.ImportPath)
+				seen[p.ImportPath] = true
+			}
+
+			var visit func(path string)
+			visit = func(path string) {
+				for q := range importedBy[path] {
+					qpath := q.ImportPath
+					if !seen[qpath] {
+						seen[qpath] = true
+						indirect = append(indirect, qpath)
+						visit(qpath)
+					}
+				}
+			}
+
+			if direct != nil {
+				fmt.Fprintf(stderr, "\timported directly by:\n")
+				sort.Strings(direct)
+				for _, path := range direct {
+					fmt.Fprintf(stderr, "\t\t%s\n", path)
+					visit(path)
+				}
+
+				if indirect != nil {
+					fmt.Fprintf(stderr, "\timported indirectly by:\n")
+					sort.Strings(indirect)
+					for _, path := range indirect {
+						fmt.Fprintf(stderr, "\t\t%s\n", path)
+					}
+				}
+			}
+		}
+	}
+
+	return ok
+}
+
+// Invariant: false result => error already printed.
+func rewritePackage(client *build.Package, noncanonical map[string]*build.Package) bool {
+	ok := true
+
+	used := make(map[string]bool)
+	var filenames []string
+	filenames = append(filenames, client.GoFiles...)
+	filenames = append(filenames, client.TestGoFiles...)
+	filenames = append(filenames, client.XTestGoFiles...)
+	var first bool
+	for _, filename := range filenames {
+		if !first {
+			first = true
+			fmt.Fprintf(stderr, "%s\n", client.ImportPath)
+		}
+		err := rewriteFile(filepath.Join(client.Dir, filename), noncanonical, used)
+		if err != nil {
+			fmt.Fprintf(stderr, "\tERROR: %v\n", err)
+			ok = false
+		}
+	}
+
+	// Show which imports were renamed in this package.
+	var keys []string
+	for key := range used {
+		keys = append(keys, key)
+	}
+	sort.Strings(keys)
+	for _, key := range keys {
+		if p := noncanonical[key]; p != nil {
+			fmt.Fprintf(stderr, "\tfixed: %s -> %s\n", key, p.ImportComment)
+		} else {
+			fmt.Fprintf(stderr, "\tERROR: %s has no import comment\n", key)
+			ok = false
+		}
+	}
+
+	return ok
+}
+
+// rewrite reads, modifies, and writes filename, replacing all imports
+// of packages P in noncanonical by noncanonical[P].
+// It records in used which noncanonical packages were imported.
+// used[P]=="" indicates that P was imported but its canonical path is unknown.
+func rewriteFile(filename string, noncanonical map[string]*build.Package, used map[string]bool) error {
+	fset := token.NewFileSet()
+	f, err := parser.ParseFile(fset, filename, nil, parser.ParseComments)
+	if err != nil {
+		return err
+	}
+	var changed bool
+	for _, imp := range f.Imports {
+		impPath, err := strconv.Unquote(imp.Path.Value)
+		if err != nil {
+			log.Printf("%s: bad import spec %q: %v",
+				fset.Position(imp.Pos()), imp.Path.Value, err)
+			continue
+		}
+		p, ok := noncanonical[impPath]
+		if !ok {
+			continue // import path is canonical
+		}
+
+		used[impPath] = true
+
+		if p == nil {
+			// The canonical path is unknown.
+			// Show the offending import.
+			// TODO(adonovan): should we show the actual source text?
+			fmt.Fprintf(stderr, "\t%s:%d: import %q\n",
+				shortPath(filename),
+				fset.Position(imp.Pos()).Line, impPath)
+			continue
+		}
+
+		changed = true
+
+		imp.Path.Value = strconv.Quote(p.ImportComment)
+
+		// Add a renaming import if necessary.
+		//
+		// This is a guess at best.  We can't see whether a 'go
+		// get' of the canonical import path would have the same
+		// name or not.  Assume it's the last segment.
+		//
+		// TODO(adonovan): should we make an HTTP request?
+		newBase := path.Base(p.ImportComment)
+		if imp.Name == nil && newBase != p.Name {
+			imp.Name = &ast.Ident{Name: p.Name}
+		}
+	}
+
+	if changed && !*dryrun {
+		var buf bytes.Buffer
+		if err := format.Node(&buf, fset, f); err != nil {
+			return fmt.Errorf("%s: couldn't format file: %v", filename, err)
+		}
+		return writeFile(filename, buf.Bytes(), 0644)
+	}
+
+	return nil
+}
+
+// listPackage is a copy of cmd/go/list.Package.
+// It has more fields than build.Package and we need some of them.
+type listPackage struct {
+	build.Package
+	Error *packageError // error loading package
+}
+
+// A packageError describes an error loading information about a package.
+type packageError struct {
+	ImportStack []string // shortest path from package named on command line to this one
+	Pos         string   // position of error
+	Err         string   // the error itself
+}
+
+// list runs 'go list' with the specified arguments and returns the
+// metadata for matching packages.
+func list(args ...string) ([]*listPackage, error) {
+	cmd := exec.Command("go", append([]string{"list", "-e", "-json"}, args...)...)
+	cmd.Stdout = new(bytes.Buffer)
+	cmd.Stderr = stderr
+	if err := cmd.Run(); err != nil {
+		return nil, err
+	}
+
+	dec := json.NewDecoder(cmd.Stdout.(io.Reader))
+	var pkgs []*listPackage
+	for {
+		var p listPackage
+		if err := dec.Decode(&p); err == io.EOF {
+			break
+		} else if err != nil {
+			return nil, err
+		}
+		pkgs = append(pkgs, &p)
+	}
+	return pkgs, nil
+}
+
+var cwd string
+
+func init() {
+	var err error
+	cwd, err = os.Getwd()
+	if err != nil {
+		log.Fatalf("os.Getwd: %v", err)
+	}
+}
+
+// shortPath returns an absolute or relative name for path, whatever is shorter.
+// Plundered from $GOROOT/src/cmd/go/build.go.
+func shortPath(path string) string {
+	if rel, err := filepath.Rel(cwd, path); err == nil && len(rel) < len(path) {
+		return rel
+	}
+	return path
+}
diff --git a/go/src/golang.org/x/tools/cmd/fiximports/main_test.go b/go/src/golang.org/x/tools/cmd/fiximports/main_test.go
new file mode 100644
index 0000000..80adbc4
--- /dev/null
+++ b/go/src/golang.org/x/tools/cmd/fiximports/main_test.go
@@ -0,0 +1,157 @@
+// Copyright 2015 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"
+	"os"
+	"strings"
+	"testing"
+)
+
+// TODO(adonovan):
+// - test introduction of renaming imports.
+// - test induced failures of rewriteFile.
+
+// Guide to the test packages:
+//
+// new.com/one		-- canonical name for old.com/one
+// old.com/one		-- non-canonical; has import comment "new.com/one"
+// old.com/bad		-- has a parse error
+// fruit.io/orange	\
+// fruit.io/banana	 } orange -> pear -> banana -> titanic.biz/bar
+// fruit.io/pear	/
+// titanic.biz/bar	-- domain is sinking; package has jumped ship to new.com/bar
+// titanic.biz/foo	-- domain is sinking but package has no import comment yet
+
+func TestFixImports(t *testing.T) {
+	gopath := cwd + "/testdata"
+	if err := os.Setenv("GOPATH", gopath); err != nil {
+		t.Fatalf("os.Setenv: %v", err)
+	}
+	defer func() {
+		stderr = os.Stderr
+		*badDomains = "code.google.com"
+	}()
+
+	for i, test := range []struct {
+		packages    []string // packages to rewrite, "go list" syntax
+		badDomains  string   // -baddomains flag
+		wantOK      bool
+		wantStderr  string
+		wantRewrite map[string]string
+	}{
+		// #0. No errors.
+		{
+			packages:   []string{"all"},
+			badDomains: "code.google.com",
+			wantOK:     true,
+			wantStderr: `
+testdata/src/old.com/bad/bad.go:2:43: expected 'package', found 'EOF'
+fruit.io/banana
+	fixed: old.com/one -> new.com/one
+	fixed: titanic.biz/bar -> new.com/bar
+`,
+			wantRewrite: map[string]string{
+				"$GOPATH/src/fruit.io/banana/banana.go": `package banana
+
+import (
+	_ "new.com/bar"
+	_ "new.com/one"
+	_ "titanic.biz/foo"
+)`,
+			},
+		},
+		// #1. No packages needed rewriting.
+		{
+			packages:   []string{"titanic.biz/...", "old.com/...", "new.com/..."},
+			badDomains: "code.google.com",
+			wantOK:     true,
+			wantStderr: `
+testdata/src/old.com/bad/bad.go:2:43: expected 'package', found 'EOF'
+`,
+		},
+		// #2. Some packages without import comments matched bad domains.
+		{
+			packages:   []string{"all"},
+			badDomains: "titanic.biz",
+			wantOK:     false,
+			wantStderr: `
+testdata/src/old.com/bad/bad.go:2:43: expected 'package', found 'EOF'
+fruit.io/banana
+	testdata/src/fruit.io/banana/banana.go:6: import "titanic.biz/foo"
+	fixed: old.com/one -> new.com/one
+	fixed: titanic.biz/bar -> new.com/bar
+	ERROR: titanic.biz/foo has no import comment
+	imported directly by:
+		fruit.io/pear
+	imported indirectly by:
+		fruit.io/orange
+`,
+			wantRewrite: map[string]string{
+				"$GOPATH/src/fruit.io/banana/banana.go": `package banana
+
+import (
+	_ "new.com/bar"
+	_ "new.com/one"
+	_ "titanic.biz/foo"
+)`,
+			},
+		},
+	} {
+		*badDomains = test.badDomains
+
+		stderr = new(bytes.Buffer)
+		gotRewrite := make(map[string]string)
+		writeFile = func(filename string, content []byte, mode os.FileMode) error {
+			filename = strings.Replace(filename, gopath, "$GOPATH", 1)
+			gotRewrite[filename] = string(bytes.TrimSpace(content))
+			return nil
+		}
+
+		// Check status code.
+		if fiximports(test.packages...) != test.wantOK {
+			t.Errorf("#%d. fiximports() = %t", i, !test.wantOK)
+		}
+
+		// Compare stderr output.
+		if stderr.(*bytes.Buffer).String() != test.wantStderr {
+			t.Errorf("#%d. stderr: got <<%s>>, want <<%s>>",
+				i, stderr, test.wantStderr)
+		}
+
+		// Compare rewrites.
+		for k, v := range gotRewrite {
+			if test.wantRewrite[k] != v {
+				t.Errorf("#%d. rewrite[%s] = <<%s>>, want <<%s>>",
+					i, k, v, test.wantRewrite[k])
+			}
+			delete(test.wantRewrite, k)
+		}
+		for k, v := range test.wantRewrite {
+			t.Errorf("#%d. rewrite[%s] missing, want <<%s>>", i, k, v)
+		}
+	}
+}
+
+// TestDryRun tests that the -n flag suppresses calls to writeFile.
+func TestDryRun(t *testing.T) {
+	gopath := cwd + "/testdata"
+	if err := os.Setenv("GOPATH", gopath); err != nil {
+		t.Fatalf("os.Setenv: %v", err)
+	}
+
+	*dryrun = true
+	defer func() { *dryrun = false }() // restore
+	stderr = new(bytes.Buffer)
+	writeFile = func(filename string, content []byte, mode os.FileMode) error {
+		t.Fatalf("writeFile(%s) called in dryrun mode", filename)
+		return nil
+	}
+
+	if !fiximports("all") {
+		t.Fatalf("fiximports failed: %s", stderr)
+	}
+}
diff --git a/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/fruit.io/banana/banana.go b/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/fruit.io/banana/banana.go
new file mode 100644
index 0000000..04e0242
--- /dev/null
+++ b/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/fruit.io/banana/banana.go
@@ -0,0 +1,7 @@
+package banana
+
+import (
+	_ "old.com/one"
+	_ "titanic.biz/bar"
+	_ "titanic.biz/foo"
+)
diff --git a/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/fruit.io/orange/orange.go b/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/fruit.io/orange/orange.go
new file mode 100644
index 0000000..ae65daa
--- /dev/null
+++ b/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/fruit.io/orange/orange.go
@@ -0,0 +1,3 @@
+package orange
+
+import _ "fruit.io/pear"
diff --git a/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/fruit.io/pear/pear.go b/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/fruit.io/pear/pear.go
new file mode 100644
index 0000000..de92df0
--- /dev/null
+++ b/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/fruit.io/pear/pear.go
@@ -0,0 +1,3 @@
+package pear
+
+import _ "fruit.io/banana"
diff --git a/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/new.com/one/one.go b/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/new.com/one/one.go
new file mode 100644
index 0000000..a8c5e83
--- /dev/null
+++ b/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/new.com/one/one.go
@@ -0,0 +1 @@
+package one // import "new.com/one"
diff --git a/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/old.com/bad/bad.go b/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/old.com/bad/bad.go
new file mode 100644
index 0000000..a1a3d1a
--- /dev/null
+++ b/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/old.com/bad/bad.go
@@ -0,0 +1,2 @@
+// This ill-formed Go source file is here to ensure the tool is robust
+// against bad packages in the workspace.
diff --git a/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/old.com/one/one.go b/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/old.com/one/one.go
new file mode 100644
index 0000000..a8c5e83
--- /dev/null
+++ b/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/old.com/one/one.go
@@ -0,0 +1 @@
+package one // import "new.com/one"
diff --git a/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/titanic.biz/bar/bar.go b/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/titanic.biz/bar/bar.go
new file mode 100644
index 0000000..cc720bc
--- /dev/null
+++ b/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/titanic.biz/bar/bar.go
@@ -0,0 +1,2 @@
+// This package is moving to new.com too.
+package bar // import "new.com/bar"
diff --git a/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/titanic.biz/foo/foo.go b/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/titanic.biz/foo/foo.go
new file mode 100644
index 0000000..145c31b
--- /dev/null
+++ b/go/src/golang.org/x/tools/cmd/fiximports/testdata/src/titanic.biz/foo/foo.go
@@ -0,0 +1,2 @@
+// This package hasn't jumped ship yet.
+package foo
diff --git a/go/src/golang.org/x/tools/cmd/godoc/appinit.go b/go/src/golang.org/x/tools/cmd/godoc/appinit.go
index ad95b21..3d6a921 100644
--- a/go/src/golang.org/x/tools/cmd/godoc/appinit.go
+++ b/go/src/golang.org/x/tools/cmd/godoc/appinit.go
@@ -50,6 +50,7 @@
 	if err := corpus.Init(); err != nil {
 		log.Fatal(err)
 	}
+	corpus.IndexDirectory = indexDirectoryDefault
 	go corpus.RunIndexer()
 
 	pres = godoc.NewPresentation(corpus)
diff --git a/go/src/golang.org/x/tools/cmd/godoc/godoc_test.go b/go/src/golang.org/x/tools/cmd/godoc/godoc_test.go
index feaad2f..312cfc6 100644
--- a/go/src/golang.org/x/tools/cmd/godoc/godoc_test.go
+++ b/go/src/golang.org/x/tools/cmd/godoc/godoc_test.go
@@ -70,6 +70,9 @@
 // TODO(adonovan): opt: do this at most once, and do the cleanup
 // exactly once.  How though?  There's no atexit.
 func buildGodoc(t *testing.T) (bin string, cleanup func()) {
+	if runtime.GOARCH == "arm" {
+		t.Skip("skipping test on arm platforms; too slow")
+	}
 	tmp, err := ioutil.TempDir("", "godoc-regtest-")
 	if err != nil {
 		t.Fatal(err)
@@ -131,18 +134,30 @@
 	return ln.Addr().String()
 }
 
+const (
+	startTimeout = 5 * time.Minute
+	pollInterval = 200 * time.Millisecond
+)
+
+var indexingMsg = []byte("Indexing in progress: result may be inaccurate")
+
 func waitForServer(t *testing.T, address string) {
-	// Poll every 50ms for a total of 5s.
-	for i := 0; i < 100; i++ {
-		time.Sleep(50 * time.Millisecond)
-		conn, err := net.Dial("tcp", address)
+	// "health check" duplicated from x/tools/cmd/tipgodoc/tip.go
+	deadline := time.Now().Add(startTimeout)
+	for time.Now().Before(deadline) {
+		time.Sleep(pollInterval)
+		res, err := http.Get(fmt.Sprintf("http://%v/search?q=FALLTHROUGH", address))
 		if err != nil {
 			continue
 		}
-		conn.Close()
-		return
+		rbody, err := ioutil.ReadAll(res.Body)
+		res.Body.Close()
+		if err == nil && res.StatusCode == http.StatusOK &&
+			!bytes.Contains(rbody, indexingMsg) {
+			return
+		}
 	}
-	t.Fatalf("Server %q failed to respond in 5 seconds", address)
+	t.Fatalf("Server %q failed to respond in %v", address, startTimeout)
 }
 
 func killAndWait(cmd *exec.Cmd) {
@@ -155,7 +170,7 @@
 	bin, cleanup := buildGodoc(t)
 	defer cleanup()
 	addr := serverAddress(t)
-	cmd := exec.Command(bin, fmt.Sprintf("-http=%s", addr))
+	cmd := exec.Command(bin, fmt.Sprintf("-http=%s", addr), "-index", "-index_interval=-1s")
 	cmd.Stdout = os.Stderr
 	cmd.Stderr = os.Stderr
 	cmd.Args[0] = "godoc"
@@ -207,6 +222,15 @@
 				"cmd/gc",
 			},
 		},
+		{
+			path: "/search?q=notwithstanding",
+			match: []string{
+				"/src",
+			},
+			dontmatch: []string{
+				"/pkg/bootstrap",
+			},
+		},
 	}
 	for _, test := range tests {
 		url := fmt.Sprintf("http://%s%s", addr, test.path)
diff --git a/go/src/golang.org/x/tools/cmd/godoc/index.go b/go/src/golang.org/x/tools/cmd/godoc/index.go
new file mode 100644
index 0000000..f84b29a
--- /dev/null
+++ b/go/src/golang.org/x/tools/cmd/godoc/index.go
@@ -0,0 +1,11 @@
+// Copyright 2015 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 "strings"
+
+func indexDirectoryDefault(dir string) bool {
+	return dir != "/pkg" && !strings.HasPrefix(dir, "/pkg/")
+}
diff --git a/go/src/golang.org/x/tools/cmd/godoc/main.go b/go/src/golang.org/x/tools/cmd/godoc/main.go
index 03d29d0..3496013 100644
--- a/go/src/golang.org/x/tools/cmd/godoc/main.go
+++ b/go/src/golang.org/x/tools/cmd/godoc/main.go
@@ -97,6 +97,7 @@
 	// search index
 	indexEnabled  = flag.Bool("index", false, "enable search index")
 	indexFiles    = flag.String("index_files", "", "glob pattern specifying index files; if not empty, the index is read from these files in sorted order")
+	indexInterval = flag.Duration("index_interval", 0, "interval of indexing; 0 for default (5m), negative to only index once at startup")
 	maxResults    = flag.Int("maxresults", 10000, "maximum number of full text search results shown")
 	indexThrottle = flag.Float64("index_throttle", 0.75, "index throttle value; 0.0 = no time allocated, 1.0 = full throttle")
 
@@ -218,7 +219,9 @@
 		corpus.IndexFullText = false
 	}
 	corpus.IndexFiles = *indexFiles
+	corpus.IndexDirectory = indexDirectoryDefault
 	corpus.IndexThrottle = *indexThrottle
+	corpus.IndexInterval = *indexInterval
 	if *writeIndex {
 		corpus.IndexThrottle = 1.0
 		corpus.IndexEnabled = true
diff --git a/go/src/golang.org/x/tools/cmd/godoc/x.go b/go/src/golang.org/x/tools/cmd/godoc/x.go
index f638b68..b4af41a 100644
--- a/go/src/golang.org/x/tools/cmd/godoc/x.go
+++ b/go/src/golang.org/x/tools/cmd/godoc/x.go
@@ -52,6 +52,10 @@
 	if i := strings.Index(head, "/"); i != -1 {
 		head, tail = head[:i], head[i:]
 	}
+	if head == "" {
+		http.Redirect(w, r, "https://godoc.org/-/subrepo", http.StatusTemporaryRedirect)
+		return
+	}
 	repo, ok := xMap[head]
 	if !ok {
 		http.NotFound(w, r)
diff --git a/go/src/golang.org/x/tools/cmd/goimports/goimports.go b/go/src/golang.org/x/tools/cmd/goimports/goimports.go
index a008d82..b0b7aa8 100644
--- a/go/src/golang.org/x/tools/cmd/goimports/goimports.go
+++ b/go/src/golang.org/x/tools/cmd/goimports/goimports.go
@@ -135,9 +135,16 @@
 	os.Exit(exitCode)
 }
 
+// parseFlags parses command line flags and returns the paths to process.
+// It's a var so that custom implementations can replace it in other files.
+var parseFlags = func() []string {
+	flag.Parse()
+	return flag.Args()
+}
+
 func gofmtMain() {
 	flag.Usage = usage
-	flag.Parse()
+	paths := parseFlags()
 
 	if options.TabWidth < 0 {
 		fmt.Fprintf(os.Stderr, "negative tabwidth %d\n", options.TabWidth)
@@ -145,15 +152,14 @@
 		return
 	}
 
-	if flag.NArg() == 0 {
+	if len(paths) == 0 {
 		if err := processFile("<standard input>", os.Stdin, os.Stdout, true); err != nil {
 			report(err)
 		}
 		return
 	}
 
-	for i := 0; i < flag.NArg(); i++ {
-		path := flag.Arg(i)
+	for _, path := range paths {
 		switch dir, err := os.Stat(path); {
 		case err != nil:
 			report(err)
diff --git a/go/src/golang.org/x/tools/cmd/gomvpkg/main.go b/go/src/golang.org/x/tools/cmd/gomvpkg/main.go
index 86b8067..959b84e 100644
--- a/go/src/golang.org/x/tools/cmd/gomvpkg/main.go
+++ b/go/src/golang.org/x/tools/cmd/gomvpkg/main.go
@@ -12,6 +12,7 @@
 	"go/build"
 	"os"
 
+	"golang.org/x/tools/go/buildutil"
 	"golang.org/x/tools/refactor/rename"
 )
 
@@ -22,6 +23,10 @@
 	helpFlag     = flag.Bool("help", false, "show usage message")
 )
 
+func init() {
+	flag.Var((*buildutil.TagsFlag)(&build.Default.BuildTags), "tags", buildutil.TagsFlagDoc)
+}
+
 const Usage = `gomvpkg: moves a package, updating import declarations
 
 Usage:
diff --git a/go/src/golang.org/x/tools/cmd/gorename/main.go b/go/src/golang.org/x/tools/cmd/gorename/main.go
index ea08f88..922dc0c 100644
--- a/go/src/golang.org/x/tools/cmd/gorename/main.go
+++ b/go/src/golang.org/x/tools/cmd/gorename/main.go
@@ -14,6 +14,7 @@
 	"os"
 	"runtime"
 
+	"golang.org/x/tools/go/buildutil"
 	"golang.org/x/tools/refactor/rename"
 )
 
@@ -25,6 +26,7 @@
 )
 
 func init() {
+	flag.Var((*buildutil.TagsFlag)(&build.Default.BuildTags), "tags", buildutil.TagsFlagDoc)
 	flag.BoolVar(&rename.Force, "force", false, "proceed, even if conflicts were reported")
 	flag.BoolVar(&rename.DryRun, "dryrun", false, "show the change, but do not apply it")
 	flag.BoolVar(&rename.Verbose, "v", false, "print verbose information")
diff --git a/go/src/golang.org/x/tools/cmd/oracle/main.go b/go/src/golang.org/x/tools/cmd/oracle/main.go
index 294bde7..a7a1661 100644
--- a/go/src/golang.org/x/tools/cmd/oracle/main.go
+++ b/go/src/golang.org/x/tools/cmd/oracle/main.go
@@ -23,6 +23,7 @@
 	"runtime"
 	"runtime/pprof"
 
+	"golang.org/x/tools/go/buildutil"
 	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/oracle"
 )
@@ -38,6 +39,10 @@
 
 var reflectFlag = flag.Bool("reflect", false, "Analyze reflection soundly (slow).")
 
+func init() {
+	flag.Var((*buildutil.TagsFlag)(&build.Default.BuildTags), "tags", buildutil.TagsFlagDoc)
+}
+
 const useHelp = "Run 'oracle -help' for more information.\n"
 
 const helpMessage = `Go source code oracle.
@@ -49,17 +54,17 @@
 	json	structured data in JSON syntax.
 	xml	structured data in XML syntax.
 
-The -pos flag is required in all modes except 'callgraph'.
+The -pos flag is required in all modes.
 
 The mode argument determines the query to perform:
 
 	callees	  	show possible targets of selected function call
 	callers	  	show possible callers of selected function
-	callgraph 	show complete callgraph of program
 	callstack 	show path from callgraph root to selected function
+	definition	show declaration of selected identifier
 	describe  	describe selected syntax: definition, methods, etc
 	freevars  	show free variables of selection
-	implements	show 'implements' relation for selected type
+	implements	show 'implements' relation for selected type or method
 	peers     	show send/receive corresponding to selected channel op
 	referrers 	show all refs to entity denoted by selected identifier
 	what		show basic information about the selected syntax node
@@ -122,11 +127,6 @@
 		os.Exit(2)
 	}
 
-	if len(args) == 0 && mode != "what" {
-		fmt.Fprint(os.Stderr, "oracle: no package arguments.\n"+useHelp)
-		os.Exit(2)
-	}
-
 	// Set up points-to analysis log file.
 	var ptalog io.Writer
 	if *ptalogFlag != "" {
@@ -166,31 +166,39 @@
 	}
 
 	// Ask the oracle.
-	res, err := oracle.Query(args, mode, *posFlag, ptalog, &build.Default, *reflectFlag)
-	if err != nil {
-		fmt.Fprintf(os.Stderr, "oracle: %s.\n", err)
+	query := oracle.Query{
+		Mode:       mode,
+		Pos:        *posFlag,
+		Build:      &build.Default,
+		Scope:      args,
+		PTALog:     ptalog,
+		Reflection: *reflectFlag,
+	}
+
+	if err := oracle.Run(&query); err != nil {
+		fmt.Fprintf(os.Stderr, "oracle: %s\n", err)
 		os.Exit(1)
 	}
 
 	// Print the result.
 	switch *formatFlag {
 	case "json":
-		b, err := json.MarshalIndent(res.Serial(), "", "\t")
+		b, err := json.MarshalIndent(query.Serial(), "", "\t")
 		if err != nil {
-			fmt.Fprintf(os.Stderr, "oracle: JSON error: %s.\n", err)
+			fmt.Fprintf(os.Stderr, "oracle: JSON error: %s\n", err)
 			os.Exit(1)
 		}
 		os.Stdout.Write(b)
 
 	case "xml":
-		b, err := xml.MarshalIndent(res.Serial(), "", "\t")
+		b, err := xml.MarshalIndent(query.Serial(), "", "\t")
 		if err != nil {
-			fmt.Fprintf(os.Stderr, "oracle: XML error: %s.\n", err)
+			fmt.Fprintf(os.Stderr, "oracle: XML error: %s\n", err)
 			os.Exit(1)
 		}
 		os.Stdout.Write(b)
 
 	case "plain":
-		res.WriteTo(os.Stdout)
+		query.WriteTo(os.Stdout)
 	}
 }
diff --git a/go/src/golang.org/x/tools/cmd/oracle/oracle.el b/go/src/golang.org/x/tools/cmd/oracle/oracle.el
index f90a5fd..33c7409 100644
--- a/go/src/golang.org/x/tools/cmd/oracle/oracle.el
+++ b/go/src/golang.org/x/tools/cmd/oracle/oracle.el
@@ -22,8 +22,8 @@
   "Options specific to the Go oracle."
   :group 'go)
 
-(defcustom go-oracle-command (concat (car (go-root-and-paths)) "/bin/oracle")
-  "The Go oracle command; the default is $GOROOT/bin/oracle."
+(defcustom go-oracle-command "oracle"
+  "The Go oracle command."
   :type 'string
   :group 'go-oracle)
 
@@ -36,22 +36,21 @@
   nil
   "History of values supplied to `go-oracle-set-scope'.")
 
-;; TODO(adonovan): I'd like to get rid of this separate mode since it
-;; makes it harder to use the oracle.
-(defvar go-oracle-mode-map
-  (let ((m (make-sparse-keymap)))
-    (define-key m (kbd "C-c C-o t") #'go-oracle-describe) ; t for type
-    (define-key m (kbd "C-c C-o f") #'go-oracle-freevars)
-    (define-key m (kbd "C-c C-o g") #'go-oracle-callgraph)
-    (define-key m (kbd "C-c C-o i") #'go-oracle-implements)
-    (define-key m (kbd "C-c C-o c") #'go-oracle-peers)  ; c for channel
-    (define-key m (kbd "C-c C-o r") #'go-oracle-referrers)
-    (define-key m (kbd "C-c C-o d") #'go-oracle-definition)
-    (define-key m (kbd "C-c C-o p") #'go-oracle-pointsto)
-    (define-key m (kbd "C-c C-o s") #'go-oracle-callstack)
-    (define-key m (kbd "C-c C-o <") #'go-oracle-callers)
-    (define-key m (kbd "C-c C-o >") #'go-oracle-callees)
-    m))
+;; Extend go-mode-map.
+(let ((m go-mode-map))
+  (define-key m (kbd "C-c C-o t") #'go-oracle-describe) ; t for type
+  (define-key m (kbd "C-c C-o f") #'go-oracle-freevars)
+  (define-key m (kbd "C-c C-o g") #'go-oracle-callgraph)
+  (define-key m (kbd "C-c C-o i") #'go-oracle-implements)
+  (define-key m (kbd "C-c C-o c") #'go-oracle-peers)  ; c for channel
+  (define-key m (kbd "C-c C-o r") #'go-oracle-referrers)
+  (define-key m (kbd "C-c C-o d") #'go-oracle-definition)
+  (define-key m (kbd "C-c C-o p") #'go-oracle-pointsto)
+  (define-key m (kbd "C-c C-o s") #'go-oracle-callstack)
+  (define-key m (kbd "C-c C-o <") #'go-oracle-callers)
+  (define-key m (kbd "C-c C-o >") #'go-oracle-callees)
+  (define-key m (kbd "<f5>") #'go-oracle-describe)
+  (define-key m (kbd "<f6>") #'go-oracle-referrers))
 
 ;; TODO(dominikh): Rethink set-scope some. Setting it to a file is
 ;; painful because it doesn't use find-file, and variables/~ aren't
@@ -84,11 +83,11 @@
         (error "You must specify a non-empty scope for the Go oracle"))
     (setq go-oracle-scope scope)))
 
-(defun go-oracle--run (mode)
+(defun go-oracle--run (mode &optional need-scope)
   "Run the Go oracle in the specified MODE, passing it the
-selected region of the current buffer.  Process the output to
-replace each file name with a small hyperlink.  Display the
-result."
+selected region of the current buffer.  If NEED-SCOPE, prompt for
+a scope if not already set.  Process the output to replace each
+file name with a small hyperlink.  Display the result."
   (if (not buffer-file-name)
       (error "Cannot use oracle on a buffer without a file name"))
   ;; It's not sufficient to save a modified buffer since if
@@ -96,8 +95,9 @@
   ;; disturb the selected region.
   (if (buffer-modified-p)
       (error "Please save the buffer before invoking go-oracle"))
-  (if (string-equal "" go-oracle-scope)
-      (go-oracle-set-scope))
+  (and need-scope
+       (string-equal "" go-oracle-scope)
+       (go-oracle-set-scope))
   (let* ((filename (file-truename buffer-file-name))
          (posflag (if (use-region-p)
                       (format "-pos=%s:#%d,#%d"
@@ -107,7 +107,6 @@
                     (format "-pos=%s:#%d"
                             filename
                             (1- (position-bytes (point))))))
-         ;; This would be simpler if we could just run 'go tool oracle'.
          (env-vars (go-root-and-paths))
          (goroot-env (concat "GOROOT=" (car env-vars)))
          (gopath-env (concat "GOPATH=" (mapconcat #'identity (cdr env-vars) ":"))))
@@ -138,14 +137,23 @@
             (p 1))
         (while (not (null p))
           (let ((np (compilation-next-single-property-change p 'compilation-message)))
-            ;; TODO(adonovan): this can be verbose in the *Messages* buffer.
-            ;; (message "Post-processing link (%d%%)" (/ (* p 100) (point-max)))
             (if np
                 (when (equal (line-number-at-pos p) (line-number-at-pos np))
-                  ;; np is (typically) the space following ":"; consume it too.
-                  (put-text-property p np 'display "▶")
+                  ;; Using a fixed width greatly improves readability, so
+                  ;; if the filename is longer than 20, show ".../last/17chars.go".
+                  ;; This usually includes the last segment of the package name.
+                  ;; Don't show the line or column number.
+                  (let* ((loc (buffer-substring p np)) ; "/home/foo/go/pkg/file.go:1:2-3:4"
+                         (i (search ":" loc)))
+                    (setq loc (cond
+                               ((null i)  "...")
+                               ((>= i 17) (concat "..." (substring loc (- i 17) i)))
+                               (t         (substring loc 0 i))))
+                    ;; np is (typically) the space following ":"; consume it too.
+                    (put-text-property p np 'display (concat loc ":")))
                   (goto-char np)
-                  (insert " ")))
+                  (insert " ")
+                  (incf np))) ; so we don't get stuck (e.g. on a panic stack dump)
             (setq p np)))
         (message nil))
 
@@ -157,23 +165,23 @@
 (defun go-oracle-callees ()
   "Show possible callees of the function call at the current point."
   (interactive)
-  (go-oracle--run "callees"))
+  (go-oracle--run "callees" t))
 
 (defun go-oracle-callers ()
   "Show the set of callers of the function containing the current point."
   (interactive)
-  (go-oracle--run "callers"))
+  (go-oracle--run "callers" t))
 
 (defun go-oracle-callgraph ()
   "Show the callgraph of the current program."
   (interactive)
-  (go-oracle--run "callgraph"))
+  (go-oracle--run "callgraph" t))
 
 (defun go-oracle-callstack ()
   "Show an arbitrary path from a root of the call graph to the
 function containing the current point."
   (interactive)
-  (go-oracle--run "callstack"))
+  (go-oracle--run "callstack" t))
 
 (defun go-oracle-definition ()
   "Show the definition of the selected identifier."
@@ -188,7 +196,7 @@
 (defun go-oracle-pointsto ()
   "Show what the selected expression points to."
   (interactive)
-  (go-oracle--run "pointsto"))
+  (go-oracle--run "pointsto" t))
 
 (defun go-oracle-implements ()
   "Describe the 'implements' relation for types in the package
@@ -205,7 +213,7 @@
   "Enumerate the set of possible corresponding sends/receives for
 this channel receive/send operation."
   (interactive)
-  (go-oracle--run "peers"))
+  (go-oracle--run "peers" t))
 
 (defun go-oracle-referrers ()
   "Enumerate all references to the object denoted by the selected
@@ -217,13 +225,6 @@
   "Show globals, constants and types to which the selected
 expression (of type 'error') may refer."
   (interactive)
-  (go-oracle--run "whicherrs"))
-
-;; TODO(dominikh): better docstring
-(define-minor-mode go-oracle-mode "Oracle minor mode for go-mode
-
-Keys specific to go-oracle-mode:
-\\{go-oracle-mode-map}"
-  nil " oracle" go-oracle-mode-map)
+  (go-oracle--run "whicherrs" t))
 
 (provide 'go-oracle)
diff --git a/go/src/golang.org/x/tools/cmd/present/templates/dir.tmpl b/go/src/golang.org/x/tools/cmd/present/templates/dir.tmpl
index c5dbcaa..15cf97f 100644
--- a/go/src/golang.org/x/tools/cmd/present/templates/dir.tmpl
+++ b/go/src/golang.org/x/tools/cmd/present/templates/dir.tmpl
@@ -10,7 +10,7 @@
 
 <div id="topbar"><div class="container">
 
-<form method="GET" action="http://golang.org/search">
+<form method="GET" action="//golang.org/search">
 <div id="menu">
 <a href="http://golang.org/doc/">Documents</a>
 <a href="http://golang.org/ref">References</a>
diff --git a/go/src/golang.org/x/tools/cmd/ssadump/main.go b/go/src/golang.org/x/tools/cmd/ssadump/main.go
index 2f847ab..75f1601 100644
--- a/go/src/golang.org/x/tools/cmd/ssadump/main.go
+++ b/go/src/golang.org/x/tools/cmd/ssadump/main.go
@@ -13,17 +13,15 @@
 	"runtime"
 	"runtime/pprof"
 
+	"golang.org/x/tools/go/buildutil"
 	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/ssa"
 	"golang.org/x/tools/go/ssa/interp"
+	"golang.org/x/tools/go/ssa/ssautil"
 	"golang.org/x/tools/go/types"
 )
 
 var (
-	importbinFlag = flag.Bool("importbin", false,
-		"Import binary export data from gc's object files, not source. "+
-			"Imported functions will have no bodies.")
-
 	modeFlag = ssa.BuilderModeFlag(flag.CommandLine, "build", 0)
 
 	testFlag = flag.Bool("test", false, "Loads test code (*_test.go) for imported packages.")
@@ -42,7 +40,7 @@
 Use -help flag to display options.
 
 Examples:
-% ssadump -build=FPG hello.go            # quickly dump SSA form of a single package
+% ssadump -build=F hello.go              # dump SSA form of a single package
 % ssadump -run -interp=T hello.go        # interpret a program, with tracing
 % ssadump -run -test unicode -- -test.v  # interpret the unicode package's tests, verbosely
 ` + loader.FromArgsUsage +
@@ -56,6 +54,8 @@
 var cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file")
 
 func init() {
+	flag.Var((*buildutil.TagsFlag)(&build.Default.BuildTags), "tags", buildutil.TagsFlagDoc)
+
 	// If $GOMAXPROCS isn't set, use the full capacity of the machine.
 	// For small machines, use at least 4 threads.
 	if os.Getenv("GOMAXPROCS") == "" {
@@ -78,12 +78,9 @@
 	flag.Parse()
 	args := flag.Args()
 
-	conf := loader.Config{
-		Build:            &build.Default,
-		ImportFromBinary: *importbinFlag,
-	}
-	// TODO(adonovan): make go/types choose its default Sizes from
-	// build.Default or a specified *build.Context.
+	conf := loader.Config{Build: &build.Default}
+
+	// Choose types.Sizes from conf.Build.
 	var wordSize int64 = 8
 	switch conf.Build.GOARCH {
 	case "386", "arm":
@@ -140,11 +137,18 @@
 	}
 
 	// Create and build SSA-form program representation.
-	prog := ssa.Create(iprog, *modeFlag)
-	prog.BuildAll()
+	prog := ssautil.CreateProgram(iprog, *modeFlag)
+
+	// Build and display only the initial packages
+	// (and synthetic wrappers), unless -run is specified.
+	for _, info := range iprog.InitialPackages() {
+		prog.Package(info.Pkg).Build()
+	}
 
 	// Run the interpreter.
 	if *runFlag {
+		prog.BuildAll()
+
 		var main *ssa.Package
 		pkgs := prog.AllPackages()
 		if *testFlag {
diff --git a/go/src/golang.org/x/tools/cmd/stress/stress.go b/go/src/golang.org/x/tools/cmd/stress/stress.go
new file mode 100644
index 0000000..9aebbf6
--- /dev/null
+++ b/go/src/golang.org/x/tools/cmd/stress/stress.go
@@ -0,0 +1,110 @@
+// Copyright 2015 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 stress utility is intended for catching of episodic failures.
+// It runs a given process in parallel in a loop and collects any failures.
+// Usage:
+// 	$ stress ./fmt.test -test.run=TestSometing -test.cpu=10
+// You can also specify a number of parallel processes with -p flag;
+// instruct the utility to not kill hanged processes for gdb attach;
+// or specify the failure output you are looking for (if you want to
+// ignore some other episodic failures).
+package main
+
+import (
+	"flag"
+	"fmt"
+	"io/ioutil"
+	"os"
+	"os/exec"
+	"regexp"
+	"runtime"
+	"syscall"
+	"time"
+)
+
+var (
+	flagP       = flag.Int("p", runtime.NumCPU(), "run `N` processes in parallel")
+	flagTimeout = flag.Duration("timeout", 10*time.Minute, "timeout each process after `duration`")
+	flagKill    = flag.Bool("kill", true, "kill timed out processes if true, otherwise just print pid (to attach with gdb)")
+	flagFailure = flag.String("failure", "", "fail only if output matches `regexp`")
+)
+
+func main() {
+	flag.Parse()
+	if *flagP <= 0 || *flagTimeout <= 0 || len(flag.Args()) == 0 {
+		flag.Usage()
+		os.Exit(1)
+	}
+	var failureRe *regexp.Regexp
+	if *flagFailure != "" {
+		var err error
+		if failureRe, err = regexp.Compile(*flagFailure); err != nil {
+			fmt.Println("bad failure regexp:", err)
+			os.Exit(1)
+		}
+	}
+	res := make(chan []byte)
+	for i := 0; i < *flagP; i++ {
+		go func() {
+			for {
+				cmd := exec.Command(flag.Args()[0], flag.Args()[1:]...)
+				done := make(chan bool)
+				if *flagTimeout > 0 {
+					go func() {
+						select {
+						case <-done:
+							return
+						case <-time.After(*flagTimeout):
+						}
+						if !*flagKill {
+							fmt.Printf("process %v timed out\n", cmd.Process.Pid)
+							return
+						}
+						cmd.Process.Signal(syscall.SIGABRT)
+						select {
+						case <-done:
+							return
+						case <-time.After(10 * time.Second):
+						}
+						cmd.Process.Kill()
+					}()
+				}
+				out, err := cmd.CombinedOutput()
+				close(done)
+				if err != nil && (failureRe == nil || failureRe.Match(out)) {
+					out = append(out, fmt.Sprintf("\n\nERROR: %v\n", err)...)
+				} else {
+					out = []byte{}
+				}
+				res <- out
+			}
+		}()
+	}
+	runs, fails := 0, 0
+	ticker := time.NewTicker(5 * time.Second).C
+	for {
+		select {
+		case out := <-res:
+			runs++
+			if len(out) == 0 {
+				continue
+			}
+			fails++
+			f, err := ioutil.TempFile("", "go-stress")
+			if err != nil {
+				fmt.Printf("failed to create temp file: %v\n", err)
+				os.Exit(1)
+			}
+			f.Write(out)
+			f.Close()
+			if len(out) > 2<<10 {
+				out = out[:2<<10]
+			}
+			fmt.Printf("\n%s\n%s\n", f.Name(), out)
+		case <-ticker:
+			fmt.Printf("%v runs so far, %v failures\n", runs, fails)
+		}
+	}
+}
diff --git a/go/src/golang.org/x/tools/cmd/stringer/golden_test.go b/go/src/golang.org/x/tools/cmd/stringer/golden_test.go
index 76e81c3..12df238 100644
--- a/go/src/golang.org/x/tools/cmd/stringer/golden_test.go
+++ b/go/src/golang.org/x/tools/cmd/stringer/golden_test.go
@@ -51,7 +51,7 @@
 var _Day_index = [...]uint8{0, 6, 13, 22, 30, 36, 44, 50}
 
 func (i Day) String() string {
-	if i < 0 || i+1 >= Day(len(_Day_index)) {
+	if i < 0 || i >= Day(len(_Day_index)-1) {
 		return fmt.Sprintf("Day(%d)", i)
 	}
 	return _Day_name[_Day_index[i]:_Day_index[i+1]]
@@ -77,7 +77,7 @@
 
 func (i Number) String() string {
 	i -= 1
-	if i < 0 || i+1 >= Number(len(_Number_index)) {
+	if i < 0 || i >= Number(len(_Number_index)-1) {
 		return fmt.Sprintf("Number(%d)", i+1)
 	}
 	return _Number_name[_Number_index[i]:_Number_index[i+1]]
@@ -145,7 +145,7 @@
 
 func (i Num) String() string {
 	i -= -2
-	if i < 0 || i+1 >= Num(len(_Num_index)) {
+	if i < 0 || i >= Num(len(_Num_index)-1) {
 		return fmt.Sprintf("Num(%d)", i+-2)
 	}
 	return _Num_name[_Num_index[i]:_Num_index[i+1]]
diff --git a/go/src/golang.org/x/tools/cmd/stringer/stringer.go b/go/src/golang.org/x/tools/cmd/stringer/stringer.go
index 0bc7aa8..be87dec 100644
--- a/go/src/golang.org/x/tools/cmd/stringer/stringer.go
+++ b/go/src/golang.org/x/tools/cmd/stringer/stringer.go
@@ -94,7 +94,6 @@
 	fmt.Fprintf(os.Stderr, "\thttp://godoc.org/golang.org/x/tools/cmd/stringer\n")
 	fmt.Fprintf(os.Stderr, "Flags:\n")
 	flag.PrintDefaults()
-	os.Exit(2)
 }
 
 func main() {
@@ -563,7 +562,7 @@
 //	[2]: size of index element (8 for uint8 etc.)
 //	[3]: less than zero check (for signed types)
 const stringOneRun = `func (i %[1]s) String() string {
-	if %[3]si+1 >= %[1]s(len(_%[1]s_index)) {
+	if %[3]si >= %[1]s(len(_%[1]s_index)-1) {
 		return fmt.Sprintf("%[1]s(%%d)", i)
 	}
 	return _%[1]s_name[_%[1]s_index[i]:_%[1]s_index[i+1]]
@@ -579,7 +578,7 @@
  */
 const stringOneRunWithOffset = `func (i %[1]s) String() string {
 	i -= %[2]s
-	if %[4]si+1 >= %[1]s(len(_%[1]s_index)) {
+	if %[4]si >= %[1]s(len(_%[1]s_index)-1) {
 		return fmt.Sprintf("%[1]s(%%d)", i + %[2]s)
 	}
 	return _%[1]s_name[_%[1]s_index[i] : _%[1]s_index[i+1]]
diff --git a/go/src/golang.org/x/tools/cmd/stringer/testdata/unum2.go b/go/src/golang.org/x/tools/cmd/stringer/testdata/unum2.go
new file mode 100644
index 0000000..edbbedf
--- /dev/null
+++ b/go/src/golang.org/x/tools/cmd/stringer/testdata/unum2.go
@@ -0,0 +1,31 @@
+// Copyright 2014 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.
+
+// Unsigned integers - check maximum size
+
+package main
+
+import "fmt"
+
+type Unum2 uint8
+
+const (
+	Zero Unum2 = iota
+	One
+	Two
+)
+
+func main() {
+	ck(Zero, "Zero")
+	ck(One, "One")
+	ck(Two, "Two")
+	ck(3, "Unum2(3)")
+	ck(255, "Unum2(255)")
+}
+
+func ck(unum Unum2, str string) {
+	if fmt.Sprint(unum) != str {
+		panic("unum.go: " + str)
+	}
+}
diff --git a/go/src/golang.org/x/tools/cmd/tipgodoc/Dockerfile b/go/src/golang.org/x/tools/cmd/tipgodoc/Dockerfile
index ac95819..760ca0b 100644
--- a/go/src/golang.org/x/tools/cmd/tipgodoc/Dockerfile
+++ b/go/src/golang.org/x/tools/cmd/tipgodoc/Dockerfile
@@ -1,4 +1,4 @@
-FROM golang:1.4.1
+FROM golang:1.4.2
 
 RUN apt-get update && apt-get install --no-install-recommends -y -q build-essential git
 
diff --git a/go/src/golang.org/x/tools/cmd/tipgodoc/tip.go b/go/src/golang.org/x/tools/cmd/tipgodoc/tip.go
index 4a92a5c..2dd3a7b 100644
--- a/go/src/golang.org/x/tools/cmd/tipgodoc/tip.go
+++ b/go/src/golang.org/x/tools/cmd/tipgodoc/tip.go
@@ -8,6 +8,7 @@
 
 import (
 	"bufio"
+	"bytes"
 	"encoding/json"
 	"fmt"
 	"io"
@@ -24,15 +25,22 @@
 )
 
 const (
-	repoURL = "https://go.googlesource.com/"
-	metaURL = "https://go.googlesource.com/?b=master&format=JSON"
+	repoURL      = "https://go.googlesource.com/"
+	metaURL      = "https://go.googlesource.com/?b=master&format=JSON"
+	startTimeout = 5 * time.Minute
 )
 
+var indexingMsg = []byte("Indexing in progress: result may be inaccurate")
+
 func main() {
 	p := new(Proxy)
 	go p.run()
 	http.Handle("/", p)
-	log.Fatal(http.ListenAndServe(":8080", nil))
+
+	if err := http.ListenAndServe(":8080", nil); err != nil {
+		p.stop()
+		log.Fatal(err)
+	}
 }
 
 // Proxy implements the tip.golang.org server: a reverse-proxy
@@ -81,6 +89,14 @@
 	}
 }
 
+func (p *Proxy) stop() {
+	p.mu.Lock()
+	defer p.mu.Unlock()
+	if p.cmd != nil {
+		p.cmd.Process.Kill()
+	}
+}
+
 // poll runs from the run loop goroutine.
 func (p *Proxy) poll() {
 	heads := gerritMetaMap()
@@ -165,7 +181,7 @@
 	if side == "b" {
 		hostport = "localhost:8082"
 	}
-	godoc = exec.Command(godocBin, "-http="+hostport)
+	godoc = exec.Command(godocBin, "-http="+hostport, "-index", "-index_interval=-1s")
 	godoc.Env = []string{"GOROOT=" + goDir}
 	// TODO(adg): log this somewhere useful
 	godoc.Stdout = os.Stdout
@@ -180,18 +196,22 @@
 		}
 	}()
 
-	for i := 0; i < 15; i++ {
+	deadline := time.Now().Add(startTimeout)
+	for time.Now().Before(deadline) {
 		time.Sleep(time.Second)
 		var res *http.Response
-		res, err = http.Get(fmt.Sprintf("http://%v/", hostport))
+		res, err = http.Get(fmt.Sprintf("http://%v/search?q=FALLTHROUGH", hostport))
 		if err != nil {
 			continue
 		}
+		rbody, err := ioutil.ReadAll(res.Body)
 		res.Body.Close()
-		if res.StatusCode == http.StatusOK {
+		if err == nil && res.StatusCode == http.StatusOK &&
+			!bytes.Contains(rbody, indexingMsg) {
 			return godoc, hostport, nil
 		}
 	}
+	godoc.Process.Kill()
 	return nil, "", fmt.Errorf("timed out waiting for side %v at %v (%v)", side, hostport, err)
 }
 
diff --git a/go/src/golang.org/x/tools/cmd/vet/asmdecl.go b/go/src/golang.org/x/tools/cmd/vet/asmdecl.go
index 63095aa..6bdfdbf 100644
--- a/go/src/golang.org/x/tools/cmd/vet/asmdecl.go
+++ b/go/src/golang.org/x/tools/cmd/vet/asmdecl.go
@@ -60,6 +60,7 @@
 var (
 	asmArch386       = asmArch{"386", 4, 4, 4, false, "SP", false}
 	asmArchArm       = asmArch{"arm", 4, 4, 4, false, "R13", true}
+	asmArchArm64     = asmArch{"arm64", 8, 8, 8, false, "RSP", true}
 	asmArchAmd64     = asmArch{"amd64", 8, 8, 8, false, "SP", false}
 	asmArchAmd64p32  = asmArch{"amd64p32", 4, 4, 8, false, "SP", false}
 	asmArchPower64   = asmArch{"power64", 8, 8, 8, true, "R1", true}
@@ -68,6 +69,7 @@
 	arches = []*asmArch{
 		&asmArch386,
 		&asmArchArm,
+		&asmArchArm64,
 		&asmArchAmd64,
 		&asmArchAmd64p32,
 		&asmArchPower64,
diff --git a/go/src/golang.org/x/tools/cmd/vet/bool.go b/go/src/golang.org/x/tools/cmd/vet/bool.go
index 37aac68..07c2a93 100644
--- a/go/src/golang.org/x/tools/cmd/vet/bool.go
+++ b/go/src/golang.org/x/tools/cmd/vet/bool.go
@@ -9,8 +9,6 @@
 import (
 	"go/ast"
 	"go/token"
-
-	"golang.org/x/tools/go/ast/astutil"
 )
 
 func init() {
@@ -164,7 +162,7 @@
 // split returns []{d, c, b, a}.
 func (op boolOp) split(e ast.Expr) (exprs []ast.Expr) {
 	for {
-		e = astutil.Unparen(e)
+		e = unparen(e)
 		if b, ok := e.(*ast.BinaryExpr); ok && b.Op == op.tok {
 			exprs = append(exprs, op.split(b.Y)...)
 			e = b.X
@@ -175,3 +173,14 @@
 	}
 	return
 }
+
+// unparen returns e with any enclosing parentheses stripped.
+func unparen(e ast.Expr) ast.Expr {
+	for {
+		p, ok := e.(*ast.ParenExpr)
+		if !ok {
+			return e
+		}
+		e = p.X
+	}
+}
diff --git a/go/src/golang.org/x/tools/cmd/vet/doc.go b/go/src/golang.org/x/tools/cmd/vet/doc.go
index 2ae32d1..a19de3f 100644
--- a/go/src/golang.org/x/tools/cmd/vet/doc.go
+++ b/go/src/golang.org/x/tools/cmd/vet/doc.go
@@ -21,8 +21,7 @@
 
 By directory:
 	go tool vet source/directory
-recursively descends the directory, vetting each file in isolation.
-Package-level type-checking is disabled, so the vetting is weaker.
+recursively descends the directory, vetting each package it finds.
 
 Vet's exit code is 2 for erroneous invocation of the tool, 1 if a
 problem was reported, and 0 otherwise. Note that the tool does not
@@ -151,6 +150,15 @@
 because that word will be invisible to stack copying and to the garbage
 collector.
 
+Unused result of certain function calls
+
+Flag: -unusedresult
+
+Calls to well-known functions and methods that return a value that is
+discarded.  By default, this includes functions like fmt.Errorf and
+fmt.Sprintf and methods like String and Error. The flags -unusedfuncs
+and -unusedstringmethods control the set.
+
 Shifts
 
 Flag: -shift
diff --git a/go/src/golang.org/x/tools/cmd/vet/main.go b/go/src/golang.org/x/tools/cmd/vet/main.go
index a58e18a..e4b6877 100644
--- a/go/src/golang.org/x/tools/cmd/vet/main.go
+++ b/go/src/golang.org/x/tools/cmd/vet/main.go
@@ -25,10 +25,13 @@
 	"golang.org/x/tools/go/types"
 )
 
-// TODO: Need a flag to set build tags when parsing the package.
+var (
+	verbose  = flag.Bool("v", false, "verbose")
+	testFlag = flag.Bool("test", false, "for testing only: sets -all and -shadow")
+	tags     = flag.String("tags", "", "comma-separated list of build tags to apply when parsing")
+	tagList  = []string{} // exploded version of tags flag; set in main
+)
 
-var verbose = flag.Bool("v", false, "verbose")
-var testFlag = flag.Bool("test", false, "for testing only: sets -all and -shadow")
 var exitCode = 0
 
 // "all" is here only for the appearance of backwards compatibility.
@@ -128,6 +131,7 @@
 	binaryExpr    *ast.BinaryExpr
 	callExpr      *ast.CallExpr
 	compositeLit  *ast.CompositeLit
+	exprStmt      *ast.ExprStmt
 	field         *ast.Field
 	funcDecl      *ast.FuncDecl
 	funcLit       *ast.FuncLit
@@ -197,28 +201,10 @@
 		}
 	}
 
-	if *printfuncs != "" {
-		for _, name := range strings.Split(*printfuncs, ",") {
-			if len(name) == 0 {
-				flag.Usage()
-			}
-			skip := 0
-			if colon := strings.LastIndex(name, ":"); colon > 0 {
-				var err error
-				skip, err = strconv.Atoi(name[colon+1:])
-				if err != nil {
-					errorf(`illegal format for "Func:N" argument %q; %s`, name, err)
-				}
-				name = name[:colon]
-			}
-			name = strings.ToLower(name)
-			if name[len(name)-1] == 'f' {
-				printfList[name] = skip
-			} else {
-				printList[name] = skip
-			}
-		}
-	}
+	tagList = strings.Split(*tags, ",")
+
+	initPrintFlags()
+	initUnusedFlags()
 
 	if flag.NArg() == 0 {
 		Usage()
@@ -265,7 +251,13 @@
 // doPackageDir analyzes the single package found in the directory, if there is one,
 // plus a test package, if there is one.
 func doPackageDir(directory string) {
-	pkg, err := build.Default.ImportDir(directory, 0)
+	context := build.Default
+	if len(context.BuildTags) != 0 {
+		warnf("build tags %s previously set", context.BuildTags)
+	}
+	context.BuildTags = append(tagList, context.BuildTags...)
+
+	pkg, err := context.ImportDir(directory, 0)
 	if err != nil {
 		// If it's just that there are no go source files, that's fine.
 		if _, nogo := err.(*build.NoGoError); nogo {
@@ -291,13 +283,14 @@
 }
 
 type Package struct {
-	path     string
-	defs     map[*ast.Ident]types.Object
-	uses     map[*ast.Ident]types.Object
-	types    map[ast.Expr]types.TypeAndValue
-	spans    map[types.Object]Span
-	files    []*File
-	typesPkg *types.Package
+	path      string
+	defs      map[*ast.Ident]types.Object
+	uses      map[*ast.Ident]types.Object
+	selectors map[*ast.SelectorExpr]*types.Selection
+	types     map[ast.Expr]types.TypeAndValue
+	spans     map[types.Object]Span
+	files     []*File
+	typesPkg  *types.Package
 }
 
 // doPackage analyzes the single package constructed from the named files.
@@ -466,6 +459,8 @@
 		key = callExpr
 	case *ast.CompositeLit:
 		key = compositeLit
+	case *ast.ExprStmt:
+		key = exprStmt
 	case *ast.Field:
 		key = field
 	case *ast.FuncDecl:
diff --git a/go/src/golang.org/x/tools/cmd/vet/print.go b/go/src/golang.org/x/tools/cmd/vet/print.go
index 82edd81..b20d935 100644
--- a/go/src/golang.org/x/tools/cmd/vet/print.go
+++ b/go/src/golang.org/x/tools/cmd/vet/print.go
@@ -28,6 +28,32 @@
 		funcDecl, callExpr)
 }
 
+func initPrintFlags() {
+	if *printfuncs == "" {
+		return
+	}
+	for _, name := range strings.Split(*printfuncs, ",") {
+		if len(name) == 0 {
+			flag.Usage()
+		}
+		skip := 0
+		if colon := strings.LastIndex(name, ":"); colon > 0 {
+			var err error
+			skip, err = strconv.Atoi(name[colon+1:])
+			if err != nil {
+				errorf(`illegal format for "Func:N" argument %q; %s`, name, err)
+			}
+			name = name[:colon]
+		}
+		name = strings.ToLower(name)
+		if name[len(name)-1] == 'f' {
+			printfList[name] = skip
+		} else {
+			printList[name] = skip
+		}
+	}
+}
+
 // printfList records the formatted-print functions. The value is the location
 // of the format parameter. Names are lower-cased so the lookup is
 // case insensitive.
diff --git a/go/src/golang.org/x/tools/cmd/vet/shadow.go b/go/src/golang.org/x/tools/cmd/vet/shadow.go
index 34e5db9..fa680a0 100644
--- a/go/src/golang.org/x/tools/cmd/vet/shadow.go
+++ b/go/src/golang.org/x/tools/cmd/vet/shadow.go
@@ -213,7 +213,7 @@
 	}
 	// obj.Parent.Parent is the surrounding scope. If we can find another declaration
 	// starting from there, we have a shadowed identifier.
-	_, shadowed := obj.Parent().Parent().LookupParent(obj.Name())
+	_, shadowed := obj.Parent().Parent().LookupParent(obj.Name(), obj.Pos())
 	if shadowed == nil {
 		return
 	}
diff --git a/go/src/golang.org/x/tools/cmd/vet/testdata/print.go b/go/src/golang.org/x/tools/cmd/vet/testdata/print.go
index 22c6e0a..3390a31 100644
--- a/go/src/golang.org/x/tools/cmd/vet/testdata/print.go
+++ b/go/src/golang.org/x/tools/cmd/vet/testdata/print.go
@@ -130,7 +130,7 @@
 	fmt.Println()                              // not an error
 	fmt.Println("%s", "hi")                    // ERROR "possible formatting directive in Println call"
 	fmt.Printf("%s", "hi", 3)                  // ERROR "wrong number of args for format in Printf call"
-	fmt.Sprintf("%"+("s"), "hi", 3)            // ERROR "wrong number of args for format in Sprintf call"
+	_ = fmt.Sprintf("%"+("s"), "hi", 3)        // ERROR "wrong number of args for format in Sprintf call"
 	fmt.Printf("%s%%%d", "hi", 3)              // correct
 	fmt.Printf("%08s", "woo")                  // correct
 	fmt.Printf("% 8s", "woo")                  // correct
@@ -172,7 +172,7 @@
 	Printf("%[xd", 3)                    // ERROR "illegal syntax for printf argument index"
 	Printf("%[x]d", 3)                   // ERROR "illegal syntax for printf argument index"
 	Printf("%[3]*s", "hi", 2)            // ERROR "missing argument for Printf.* reads arg 3, have only 2"
-	fmt.Sprintf("%[3]d", 2)              // ERROR "missing argument for Sprintf.* reads arg 3, have only 1"
+	_ = fmt.Sprintf("%[3]d", 2)          // ERROR "missing argument for Sprintf.* reads arg 3, have only 1"
 	Printf("%[2]*.[1]*[3]d", 2, "hi", 4) // ERROR "arg .hi. for \* in printf format not of type int"
 	Printf("%[0]s", "arg1")              // ERROR "index value \[0\] for Printf.*; indexes start at 1"
 	Printf("%[0]d", 1)                   // ERROR "index value \[0\] for Printf.*; indexes start at 1"
@@ -292,18 +292,18 @@
 type recursiveStringer int
 
 func (s recursiveStringer) String() string {
-	fmt.Sprintf("%d", s)
-	fmt.Sprintf("%#v", s)
-	fmt.Sprintf("%v", s)   // ERROR "arg s for printf causes recursive call to String method"
-	fmt.Sprintf("%v", &s)  // ERROR "arg &s for printf causes recursive call to String method"
-	fmt.Sprintf("%T", s)   // ok; does not recursively call String
-	return fmt.Sprintln(s) // ERROR "arg s for print causes recursive call to String method"
+	_ = fmt.Sprintf("%d", s)
+	_ = fmt.Sprintf("%#v", s)
+	_ = fmt.Sprintf("%v", s)  // ERROR "arg s for printf causes recursive call to String method"
+	_ = fmt.Sprintf("%v", &s) // ERROR "arg &s for printf causes recursive call to String method"
+	_ = fmt.Sprintf("%T", s)  // ok; does not recursively call String
+	return fmt.Sprintln(s)    // ERROR "arg s for print causes recursive call to String method"
 }
 
 type recursivePtrStringer int
 
 func (p *recursivePtrStringer) String() string {
-	fmt.Sprintf("%v", *p)
+	_ = fmt.Sprintf("%v", *p)
 	return fmt.Sprintln(p) // ERROR "arg p for print causes recursive call to String method"
 }
 
diff --git a/go/src/golang.org/x/mobile/bind/java/noimpl.go b/go/src/golang.org/x/tools/cmd/vet/testdata/tagtest/file1.go
similarity index 75%
rename from go/src/golang.org/x/mobile/bind/java/noimpl.go
rename to go/src/golang.org/x/tools/cmd/vet/testdata/tagtest/file1.go
index c123645..22a1509 100644
--- a/go/src/golang.org/x/mobile/bind/java/noimpl.go
+++ b/go/src/golang.org/x/tools/cmd/vet/testdata/tagtest/file1.go
@@ -2,8 +2,9 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build !android
+// +build testtag
 
-package java
+package main
 
-func initSeq() {}
+func main() {
+}
diff --git a/go/src/golang.org/x/mobile/bind/java/noimpl.go b/go/src/golang.org/x/tools/cmd/vet/testdata/tagtest/file2.go
similarity index 75%
copy from go/src/golang.org/x/mobile/bind/java/noimpl.go
copy to go/src/golang.org/x/tools/cmd/vet/testdata/tagtest/file2.go
index c123645..ba7dd91 100644
--- a/go/src/golang.org/x/mobile/bind/java/noimpl.go
+++ b/go/src/golang.org/x/tools/cmd/vet/testdata/tagtest/file2.go
@@ -2,8 +2,9 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build !android
+// +build !testtag
 
-package java
+package main
 
-func initSeq() {}
+func ignore() {
+}
diff --git a/go/src/golang.org/x/tools/cmd/vet/testdata/unused.go b/go/src/golang.org/x/tools/cmd/vet/testdata/unused.go
new file mode 100644
index 0000000..d50f659
--- /dev/null
+++ b/go/src/golang.org/x/tools/cmd/vet/testdata/unused.go
@@ -0,0 +1,29 @@
+// Copyright 2015 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.
+
+// This file contains tests for the unusedresult checker.
+
+package testdata
+
+import (
+	"bytes"
+	"errors"
+	"fmt"
+)
+
+func _() {
+	fmt.Errorf("") // ERROR "result of fmt.Errorf call not used"
+	_ = fmt.Errorf("")
+
+	errors.New("") // ERROR "result of errors.New call not used"
+
+	err := errors.New("")
+	err.Error() // ERROR "result of \(error\).Error call not used"
+
+	var buf bytes.Buffer
+	buf.String() // ERROR "result of \(bytes.Buffer\).String call not used"
+
+	fmt.Sprint("")  // ERROR "result of fmt.Sprint call not used"
+	fmt.Sprintf("") // ERROR "result of fmt.Sprintf call not used"
+}
diff --git a/go/src/golang.org/x/tools/cmd/vet/types.go b/go/src/golang.org/x/tools/cmd/vet/types.go
index 8a0182b..084be85 100644
--- a/go/src/golang.org/x/tools/cmd/vet/types.go
+++ b/go/src/golang.org/x/tools/cmd/vet/types.go
@@ -18,28 +18,31 @@
 var imports = make(map[string]*types.Package)
 
 var (
-	stringerMethodType = types.New("func() string")
-	errorType          = types.New("error").Underlying().(*types.Interface)
-	stringerType       = types.New("interface{ String() string }").(*types.Interface)
-	formatterType      *types.Interface
+	errorType     *types.Interface
+	stringerType  *types.Interface // possibly nil
+	formatterType *types.Interface // possibly nil
 )
 
 func init() {
-	typ := importType("fmt", "Formatter")
-	if typ != nil {
+	errorType = types.Universe.Lookup("error").Type().Underlying().(*types.Interface)
+
+	if typ := importType("fmt", "Stringer"); typ != nil {
+		stringerType = typ.Underlying().(*types.Interface)
+	}
+
+	if typ := importType("fmt", "Formatter"); typ != nil {
 		formatterType = typ.Underlying().(*types.Interface)
 	}
 }
 
 // importType returns the type denoted by the qualified identifier
 // path.name, and adds the respective package to the imports map
-// as a side effect.
+// as a side effect. In case of an error, importType returns nil.
 func importType(path, name string) types.Type {
 	pkg, err := types.DefaultImport(imports, path)
 	if err != nil {
-		// This can happen if fmt hasn't been compiled yet.
-		// Since nothing uses formatterType anyway, don't complain.
-		//warnf("import failed: %v", err)
+		// This can happen if the package at path hasn't been compiled yet.
+		warnf("import failed: %v", err)
 		return nil
 	}
 	if obj, ok := pkg.Scope().Lookup(name).(*types.TypeName); ok {
@@ -52,6 +55,7 @@
 func (pkg *Package) check(fs *token.FileSet, astFiles []*ast.File) error {
 	pkg.defs = make(map[*ast.Ident]types.Object)
 	pkg.uses = make(map[*ast.Ident]types.Object)
+	pkg.selectors = make(map[*ast.SelectorExpr]*types.Selection)
 	pkg.spans = make(map[types.Object]Span)
 	pkg.types = make(map[ast.Expr]types.TypeAndValue)
 	config := types.Config{
@@ -63,9 +67,10 @@
 		Error: func(error) {},
 	}
 	info := &types.Info{
-		Types: pkg.types,
-		Defs:  pkg.defs,
-		Uses:  pkg.uses,
+		Selections: pkg.selectors,
+		Types:      pkg.types,
+		Defs:       pkg.defs,
+		Uses:       pkg.uses,
 	}
 	typesPkg, err := config.Check(pkg.path, fs, astFiles, info)
 	pkg.typesPkg = typesPkg
@@ -130,16 +135,13 @@
 		}
 	}
 	// If the type implements fmt.Formatter, we have nothing to check.
-	// But (see issue 6259) that's not easy to verify, so instead we see
-	// if its method set contains a Format function. We could do better,
-	// even now, but we don't need to be 100% accurate. Wait for 6259 to
-	// be fixed instead. TODO.
-	if f.hasMethod(typ, "Format") {
+	// formatterTyp may be nil - be conservative and check for Format method in that case.
+	if formatterType != nil && types.Implements(typ, formatterType) || f.hasMethod(typ, "Format") {
 		return true
 	}
 	// If we can use a string, might arg (dynamically) implement the Stringer or Error interface?
 	if t&argString != 0 {
-		if types.AssertableTo(errorType, typ) || types.AssertableTo(stringerType, typ) {
+		if types.AssertableTo(errorType, typ) || stringerType != nil && types.AssertableTo(stringerType, typ) {
 			return true
 		}
 	}
@@ -311,8 +313,11 @@
 func (f *File) isErrorMethodCall(call *ast.CallExpr) bool {
 	typ := f.pkg.types[call].Type
 	if typ != nil {
-		// We know it's called "Error", so just check the function signature.
-		return types.Identical(f.pkg.types[call.Fun].Type, stringerMethodType)
+		// We know it's called "Error", so just check the function signature
+		// (stringerType has exactly one method, String).
+		if stringerType != nil && stringerType.NumMethods() == 1 {
+			return types.Identical(f.pkg.types[call.Fun].Type, stringerType.Method(0).Type())
+		}
 	}
 	// Without types, we can still check by hand.
 	// Is it a selector expression? Otherwise it's a function call, not a method call.
diff --git a/go/src/golang.org/x/tools/cmd/vet/unused.go b/go/src/golang.org/x/tools/cmd/vet/unused.go
new file mode 100644
index 0000000..b9d7b65
--- /dev/null
+++ b/go/src/golang.org/x/tools/cmd/vet/unused.go
@@ -0,0 +1,94 @@
+// Copyright 2015 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.
+
+// This file defines the check for unused results of calls to certain
+// pure functions.
+
+package main
+
+import (
+	"flag"
+	"go/ast"
+	"go/token"
+	"strings"
+
+	"golang.org/x/tools/go/types"
+)
+
+var unusedFuncsFlag = flag.String("unusedfuncs",
+	"errors.New,fmt.Errorf,fmt.Sprintf,fmt.Sprint,sort.Reverse",
+	"comma-separated list of functions whose results must be used")
+
+var unusedStringMethodsFlag = flag.String("unusedstringmethods",
+	"Error,String",
+	"comma-separated list of names of methods of type func() string whose results must be used")
+
+func init() {
+	register("unusedresult",
+		"check for unused result of calls to functions in -unusedfuncs list and methods in -unusedstringmethods list",
+		checkUnusedResult,
+		exprStmt)
+}
+
+// func() string
+var sigNoArgsStringResult = types.NewSignature(nil, nil,
+	types.NewTuple(types.NewVar(token.NoPos, nil, "", types.Typ[types.String])),
+	false)
+
+var unusedFuncs = make(map[string]bool)
+var unusedStringMethods = make(map[string]bool)
+
+func initUnusedFlags() {
+	commaSplit := func(s string, m map[string]bool) {
+		if s != "" {
+			for _, name := range strings.Split(s, ",") {
+				if len(name) == 0 {
+					flag.Usage()
+				}
+				m[name] = true
+			}
+		}
+	}
+	commaSplit(*unusedFuncsFlag, unusedFuncs)
+	commaSplit(*unusedStringMethodsFlag, unusedStringMethods)
+}
+
+func checkUnusedResult(f *File, n ast.Node) {
+	call, ok := unparen(n.(*ast.ExprStmt).X).(*ast.CallExpr)
+	if !ok {
+		return // not a call statement
+	}
+	fun := unparen(call.Fun)
+
+	if f.pkg.types[fun].IsType() {
+		return // a conversion, not a call
+	}
+
+	selector, ok := fun.(*ast.SelectorExpr)
+	if !ok {
+		return // neither a method call nor a qualified ident
+	}
+
+	sel, ok := f.pkg.selectors[selector]
+	if ok && sel.Kind() == types.MethodVal {
+		// method (e.g. foo.String())
+		obj := sel.Obj().(*types.Func)
+		sig := sel.Type().(*types.Signature)
+		if types.Identical(sig, sigNoArgsStringResult) {
+			if unusedStringMethods[obj.Name()] {
+				f.Badf(call.Lparen, "result of (%s).%s call not used",
+					sig.Recv().Type(), obj.Name())
+			}
+		}
+	} else if !ok {
+		// package-qualified function (e.g. fmt.Errorf)
+		obj, _ := f.pkg.uses[selector.Sel]
+		if obj, ok := obj.(*types.Func); ok {
+			qname := obj.Pkg().Path() + "." + obj.Name()
+			if unusedFuncs[qname] {
+				f.Badf(call.Lparen, "result of %v call not used", qname)
+			}
+		}
+	}
+}
diff --git a/go/src/golang.org/x/tools/cmd/vet/vet_test.go b/go/src/golang.org/x/tools/cmd/vet/vet_test.go
index 65fefb9..0027a1f 100644
--- a/go/src/golang.org/x/tools/cmd/vet/vet_test.go
+++ b/go/src/golang.org/x/tools/cmd/vet/vet_test.go
@@ -72,3 +72,31 @@
 	}
 	return !bytes.Contains(output, []byte("BUG"))
 }
+
+// TestTags verifies that the -tags argument controls which files to check.
+func TestTags(t *testing.T) {
+	// go build
+	cmd := exec.Command("go", "build", "-o", binary)
+	run(cmd, t)
+
+	// defer removal of vet
+	defer os.Remove(binary)
+
+	args := []string{
+		"-tags=testtag",
+		"-v", // We're going to look at the files it examines.
+		"testdata/tagtest",
+	}
+	cmd = exec.Command("./"+binary, args...)
+	output, err := cmd.CombinedOutput()
+	if err != nil {
+		t.Fatal(err)
+	}
+	// file1 has testtag and file2 has !testtag.
+	if !bytes.Contains(output, []byte("tagtest/file1.go")) {
+		t.Error("file1 was excluded, should be included")
+	}
+	if bytes.Contains(output, []byte("tagtest/file2.go")) {
+		t.Error("file2 was included, should be excluded")
+	}
+}
diff --git a/go/src/golang.org/x/tools/codereview.cfg b/go/src/golang.org/x/tools/codereview.cfg
new file mode 100644
index 0000000..3f8b14b
--- /dev/null
+++ b/go/src/golang.org/x/tools/codereview.cfg
@@ -0,0 +1 @@
+issuerepo: golang/go
diff --git a/go/src/golang.org/x/tools/go/ast/astutil/imports.go b/go/src/golang.org/x/tools/go/ast/astutil/imports.go
index 29f52de..7f9b162 100644
--- a/go/src/golang.org/x/tools/go/ast/astutil/imports.go
+++ b/go/src/golang.org/x/tools/go/ast/astutil/imports.go
@@ -121,6 +121,9 @@
 		// so that the sorter sees it as being in the same block.
 		pos = impDecl.Specs[insertAt-1].Pos()
 	}
+	if newImport.Name != nil {
+		newImport.Name.NamePos = pos
+	}
 	newImport.Path.ValuePos = pos
 	newImport.EndPos = pos
 
@@ -308,13 +311,15 @@
 	return false
 }
 
-// matchLen returns the length of the longest prefix shared by x and y.
+// matchLen returns the length of the longest path segment prefix shared by x and y.
 func matchLen(x, y string) int {
-	i := 0
-	for i < len(x) && i < len(y) && x[i] == y[i] {
-		i++
+	n := 0
+	for i := 0; i < len(x) && i < len(y) && x[i] == y[i]; i++ {
+		if x[i] == '/' {
+			n++
+		}
 	}
-	return i
+	return n
 }
 
 // isTopName returns true if n is a top-level unresolved identifier with the given name.
diff --git a/go/src/golang.org/x/tools/go/ast/astutil/imports_test.go b/go/src/golang.org/x/tools/go/ast/astutil/imports_test.go
index 6bc940c..9134b19 100644
--- a/go/src/golang.org/x/tools/go/ast/astutil/imports_test.go
+++ b/go/src/golang.org/x/tools/go/ast/astutil/imports_test.go
@@ -315,6 +315,31 @@
 type T time.Time
 `,
 	},
+
+	// Issue 9961: Match prefixes using path segments rather than bytes
+	{
+		name: "issue 9961",
+		pkg:  "regexp",
+		in: `package main
+
+import (
+	"flag"
+	"testing"
+
+	"rsc.io/p"
+)
+`,
+		out: `package main
+
+import (
+	"flag"
+	"regexp"
+	"testing"
+
+	"rsc.io/p"
+)
+`,
+	},
 }
 
 func TestAddImport(t *testing.T) {
@@ -353,6 +378,22 @@
 	}
 }
 
+func TestDoubleAddNamedImport(t *testing.T) {
+	file := parse(t, "doublenamedimport", "package main\n")
+	AddNamedImport(fset, file, "o", "os")
+	AddNamedImport(fset, file, "i", "io")
+	want := `package main
+
+import (
+	i "io"
+	o "os"
+)
+`
+	if got := print(t, "doublenamedimport", file); got != want {
+		t.Errorf("got: %s\nwant: %s", got, want)
+	}
+}
+
 // Part of issue 8729.
 func TestDoubleAddImportWithDeclComment(t *testing.T) {
 	file := parse(t, "doubleimport", `package main
diff --git a/go/src/golang.org/x/tools/go/buildutil/allpackages.go b/go/src/golang.org/x/tools/go/buildutil/allpackages.go
index c95db42..0f909ee 100644
--- a/go/src/golang.org/x/tools/go/buildutil/allpackages.go
+++ b/go/src/golang.org/x/tools/go/buildutil/allpackages.go
@@ -30,11 +30,8 @@
 //
 func AllPackages(ctxt *build.Context) []string {
 	var list []string
-	var mu sync.Mutex
 	ForEachPackage(ctxt, func(pkg string, _ error) {
-		mu.Lock()
 		list = append(list, pkg)
-		mu.Unlock()
 	})
 	sort.Strings(list)
 	return list
@@ -47,27 +44,42 @@
 // If the package directory exists but could not be read, the second
 // argument to the found function provides the error.
 //
-// The found function and the build.Context file system interface
-// accessors must be concurrency safe.
+// All I/O is done via the build.Context file system interface,
+// which must be concurrency-safe.
 //
 func ForEachPackage(ctxt *build.Context, found func(importPath string, err error)) {
 	// We use a counting semaphore to limit
 	// the number of parallel calls to ReadDir.
 	sema := make(chan bool, 20)
 
+	ch := make(chan item)
+
 	var wg sync.WaitGroup
 	for _, root := range ctxt.SrcDirs() {
 		root := root
 		wg.Add(1)
 		go func() {
-			allPackages(ctxt, sema, root, found)
+			allPackages(ctxt, sema, root, ch)
 			wg.Done()
 		}()
 	}
-	wg.Wait()
+	go func() {
+		wg.Wait()
+		close(ch)
+	}()
+
+	// All calls to found occur in the caller's goroutine.
+	for i := range ch {
+		found(i.importPath, i.err)
+	}
 }
 
-func allPackages(ctxt *build.Context, sema chan bool, root string, found func(string, error)) {
+type item struct {
+	importPath string
+	err        error // (optional)
+}
+
+func allPackages(ctxt *build.Context, sema chan bool, root string, ch chan<- item) {
 	root = filepath.Clean(root) + string(os.PathSeparator)
 
 	var wg sync.WaitGroup
@@ -92,7 +104,7 @@
 		files, err := ReadDir(ctxt, dir)
 		<-sema
 		if pkg != "" || err != nil {
-			found(pkg, err)
+			ch <- item{pkg, err}
 		}
 		for _, fi := range files {
 			fi := fi
diff --git a/go/src/golang.org/x/tools/go/buildutil/tags.go b/go/src/golang.org/x/tools/go/buildutil/tags.go
new file mode 100644
index 0000000..9735094
--- /dev/null
+++ b/go/src/golang.org/x/tools/go/buildutil/tags.go
@@ -0,0 +1,73 @@
+package buildutil
+
+// This logic was copied from stringsFlag from $GOROOT/src/cmd/go/build.go.
+
+import "fmt"
+
+const TagsFlagDoc = "a list of `build tags` to consider satisfied during the build. " +
+	"For more information about build tags, see the description of " +
+	"build constraints in the documentation for the go/build package"
+
+// TagsFlag is an implementation of the flag.Value interface that parses
+// a flag value in the same manner as go build's -tags flag and
+// populates a []string slice.
+//
+// See $GOROOT/src/go/build/doc.go for description of build tags.
+// See $GOROOT/src/cmd/go/doc.go for description of 'go build -tags' flag.
+//
+// Example:
+//	flag.Var((*buildutil.TagsFlag)(&build.Default.BuildTags), "tags", buildutil.TagsDoc)
+type TagsFlag []string
+
+func (v *TagsFlag) Set(s string) error {
+	var err error
+	*v, err = splitQuotedFields(s)
+	if *v == nil {
+		*v = []string{}
+	}
+	return err
+}
+
+func splitQuotedFields(s string) ([]string, error) {
+	// Split fields allowing '' or "" around elements.
+	// Quotes further inside the string do not count.
+	var f []string
+	for len(s) > 0 {
+		for len(s) > 0 && isSpaceByte(s[0]) {
+			s = s[1:]
+		}
+		if len(s) == 0 {
+			break
+		}
+		// Accepted quoted string. No unescaping inside.
+		if s[0] == '"' || s[0] == '\'' {
+			quote := s[0]
+			s = s[1:]
+			i := 0
+			for i < len(s) && s[i] != quote {
+				i++
+			}
+			if i >= len(s) {
+				return nil, fmt.Errorf("unterminated %c string", quote)
+			}
+			f = append(f, s[:i])
+			s = s[i+1:]
+			continue
+		}
+		i := 0
+		for i < len(s) && !isSpaceByte(s[i]) {
+			i++
+		}
+		f = append(f, s[:i])
+		s = s[i:]
+	}
+	return f, nil
+}
+
+func (v *TagsFlag) String() string {
+	return "<tagsFlag>"
+}
+
+func isSpaceByte(c byte) bool {
+	return c == ' ' || c == '\t' || c == '\n' || c == '\r'
+}
diff --git a/go/src/golang.org/x/tools/go/buildutil/tags_test.go b/go/src/golang.org/x/tools/go/buildutil/tags_test.go
new file mode 100644
index 0000000..0fc2618
--- /dev/null
+++ b/go/src/golang.org/x/tools/go/buildutil/tags_test.go
@@ -0,0 +1,28 @@
+package buildutil_test
+
+import (
+	"flag"
+	"go/build"
+	"reflect"
+	"testing"
+
+	"golang.org/x/tools/go/buildutil"
+)
+
+func TestTags(t *testing.T) {
+	f := flag.NewFlagSet("TestTags", flag.PanicOnError)
+	var ctxt build.Context
+	f.Var((*buildutil.TagsFlag)(&ctxt.BuildTags), "tags", buildutil.TagsFlagDoc)
+	f.Parse([]string{"-tags", ` 'one'"two"	'three "four"'`, "rest"})
+
+	// BuildTags
+	want := []string{"one", "two", "three \"four\""}
+	if !reflect.DeepEqual(ctxt.BuildTags, want) {
+		t.Errorf("BuildTags = %q, want %q", ctxt.BuildTags, want)
+	}
+
+	// Args()
+	if want := []string{"rest"}; !reflect.DeepEqual(f.Args(), want) {
+		t.Errorf("f.Args() = %q, want %q", f.Args(), want)
+	}
+}
diff --git a/go/src/golang.org/x/tools/go/callgraph/callgraph.go b/go/src/golang.org/x/tools/go/callgraph/callgraph.go
index dad8c22..707a319 100644
--- a/go/src/golang.org/x/tools/go/callgraph/callgraph.go
+++ b/go/src/golang.org/x/tools/go/callgraph/callgraph.go
@@ -101,10 +101,16 @@
 }
 
 func (e Edge) Description() string {
-	if e.Site == nil {
+	var prefix string
+	switch e.Site.(type) {
+	case nil:
 		return "synthetic call"
+	case *ssa.Go:
+		prefix = "concurrent "
+	case *ssa.Defer:
+		prefix = "deferred "
 	}
-	return e.Site.Common().Description()
+	return prefix + e.Site.Common().Description()
 }
 
 func (e Edge) Pos() token.Pos {
diff --git a/go/src/golang.org/x/tools/go/callgraph/cha/cha_test.go b/go/src/golang.org/x/tools/go/callgraph/cha/cha_test.go
index 56c7c1f..e8ddda4 100644
--- a/go/src/golang.org/x/tools/go/callgraph/cha/cha_test.go
+++ b/go/src/golang.org/x/tools/go/callgraph/cha/cha_test.go
@@ -18,7 +18,7 @@
 	"golang.org/x/tools/go/callgraph"
 	"golang.org/x/tools/go/callgraph/cha"
 	"golang.org/x/tools/go/loader"
-	"golang.org/x/tools/go/ssa"
+	"golang.org/x/tools/go/ssa/ssautil"
 	"golang.org/x/tools/go/types"
 )
 
@@ -72,7 +72,7 @@
 			continue
 		}
 
-		prog := ssa.Create(iprog, 0)
+		prog := ssautil.CreateProgram(iprog, 0)
 		mainPkg := prog.Package(iprog.Created[0].Pkg)
 		prog.BuildAll()
 
diff --git a/go/src/golang.org/x/tools/go/callgraph/rta/rta_test.go b/go/src/golang.org/x/tools/go/callgraph/rta/rta_test.go
index 11fa1a5..26eec49 100644
--- a/go/src/golang.org/x/tools/go/callgraph/rta/rta_test.go
+++ b/go/src/golang.org/x/tools/go/callgraph/rta/rta_test.go
@@ -19,6 +19,7 @@
 	"golang.org/x/tools/go/callgraph/rta"
 	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/ssa"
+	"golang.org/x/tools/go/ssa/ssautil"
 	"golang.org/x/tools/go/types"
 )
 
@@ -76,7 +77,7 @@
 			continue
 		}
 
-		prog := ssa.Create(iprog, 0)
+		prog := ssautil.CreateProgram(iprog, 0)
 		mainPkg := prog.Package(iprog.Created[0].Pkg)
 		prog.BuildAll()
 
@@ -125,7 +126,7 @@
 	var rtypes []string
 	res.RuntimeTypes.Iterate(func(key types.Type, value interface{}) {
 		if value == false { // accessible to reflection
-			rtypes = append(rtypes, types.TypeString(from, key))
+			rtypes = append(rtypes, types.TypeString(key, types.RelativeTo(from)))
 		}
 	})
 	writeSorted(rtypes)
diff --git a/go/src/golang.org/x/tools/go/callgraph/static/static.go b/go/src/golang.org/x/tools/go/callgraph/static/static.go
index ebb183b..709bb7b 100644
--- a/go/src/golang.org/x/tools/go/callgraph/static/static.go
+++ b/go/src/golang.org/x/tools/go/callgraph/static/static.go
@@ -15,6 +15,8 @@
 	cg := callgraph.New(nil) // TODO(adonovan) eliminate concept of rooted callgraph
 
 	// TODO(adonovan): opt: use only a single pass over the ssa.Program.
+	// TODO(adonovan): opt: this is slower than RTA (perhaps because
+	// the lower precision means so many edges are allocated)!
 	for f := range ssautil.AllFunctions(prog) {
 		fnode := cg.CreateNode(f)
 		for _, b := range f.Blocks {
diff --git a/go/src/golang.org/x/tools/go/callgraph/static/static_test.go b/go/src/golang.org/x/tools/go/callgraph/static/static_test.go
index 5a74ca1..62297f7 100644
--- a/go/src/golang.org/x/tools/go/callgraph/static/static_test.go
+++ b/go/src/golang.org/x/tools/go/callgraph/static/static_test.go
@@ -14,7 +14,7 @@
 	"golang.org/x/tools/go/callgraph"
 	"golang.org/x/tools/go/callgraph/static"
 	"golang.org/x/tools/go/loader"
-	"golang.org/x/tools/go/ssa"
+	"golang.org/x/tools/go/ssa/ssautil"
 )
 
 const input = `package P
@@ -62,7 +62,7 @@
 
 	P := iprog.Created[0].Pkg
 
-	prog := ssa.Create(iprog, 0)
+	prog := ssautil.CreateProgram(iprog, 0)
 	prog.BuildAll()
 
 	cg := static.CallGraph(prog)
diff --git a/go/src/golang.org/x/tools/go/gccgoimporter/importer.go b/go/src/golang.org/x/tools/go/gccgoimporter/importer.go
index 59576ca..ac484af 100644
--- a/go/src/golang.org/x/tools/go/gccgoimporter/importer.go
+++ b/go/src/golang.org/x/tools/go/gccgoimporter/importer.go
@@ -91,6 +91,12 @@
 	if err != nil {
 		return
 	}
+	// reset to offset 0 - needed on Plan 9 (see issue #11265)
+	// TODO: remove once issue #11265 has been resolved.
+	_, err = f.Seek(0, 0)
+	if err != nil {
+		return
+	}
 
 	var elfreader io.ReaderAt
 	switch string(magic[:]) {
diff --git a/go/src/golang.org/x/tools/go/gccgoimporter/importer_test.go b/go/src/golang.org/x/tools/go/gccgoimporter/importer_test.go
index c7adb45..ee47425 100644
--- a/go/src/golang.org/x/tools/go/gccgoimporter/importer_test.go
+++ b/go/src/golang.org/x/tools/go/gccgoimporter/importer_test.go
@@ -34,7 +34,7 @@
 			return
 		}
 
-		got := types.ObjectString(pkg, obj)
+		got := types.ObjectString(obj, types.RelativeTo(pkg))
 		if got != test.want {
 			t.Errorf("%s: got %q; want %q", test.name, got, test.want)
 		}
diff --git a/go/src/golang.org/x/tools/go/gccgoimporter/parser.go b/go/src/golang.org/x/tools/go/gccgoimporter/parser.go
index 883c350..5bd1858 100644
--- a/go/src/golang.org/x/tools/go/gccgoimporter/parser.go
+++ b/go/src/golang.org/x/tools/go/gccgoimporter/parser.go
@@ -406,7 +406,7 @@
 		results := p.parseResultList(pkg)
 		p.expect(';')
 
-		sig := types.NewSignature(pkg.Scope(), receiver, params, results, isVariadic)
+		sig := types.NewSignature(receiver, params, results, isVariadic)
 		nt.AddMethod(types.NewFunc(token.NoPos, pkg, name, sig))
 	}
 
@@ -529,7 +529,7 @@
 func (p *parser) parseFunctionType(pkg *types.Package) *types.Signature {
 	params, isVariadic := p.parseParamList(pkg)
 	results := p.parseResultList(pkg)
-	return types.NewSignature(pkg.Scope(), nil, params, results, isVariadic)
+	return types.NewSignature(nil, params, results, isVariadic)
 }
 
 // Func = Name FunctionType .
diff --git a/go/src/golang.org/x/tools/go/gcimporter/gcimporter.go b/go/src/golang.org/x/tools/go/gcimporter/gcimporter.go
index 5df01a7..031e870 100644
--- a/go/src/golang.org/x/tools/go/gcimporter/gcimporter.go
+++ b/go/src/golang.org/x/tools/go/gcimporter/gcimporter.go
@@ -15,6 +15,7 @@
 	"io"
 	"os"
 	"path/filepath"
+	"sort"
 	"strconv"
 	"strings"
 	"text/scanner"
@@ -30,7 +31,7 @@
 	types.DefaultImport = Import
 }
 
-var pkgExts = [...]string{".a", ".5", ".6", ".8"}
+var pkgExts = [...]string{".a", ".5", ".6", ".7", ".8", ".9"}
 
 // FindPkg returns the filename and unique package id for an import
 // path based on package information provided by build.Import (using
@@ -79,18 +80,18 @@
 }
 
 // ImportData imports a package by reading the gc-generated export data,
-// adds the corresponding package object to the imports map indexed by id,
+// adds the corresponding package object to the packages map indexed by id,
 // and returns the object.
 //
-// The imports map must contains all packages already imported. The data
+// The packages map must contains all packages already imported. The data
 // reader position must be the beginning of the export data section. The
 // filename is only used in error messages.
 //
-// If imports[id] contains the completely imported package, that package
+// If packages[id] contains the completely imported package, that package
 // can be used directly, and there is no need to call this function (but
 // there is also no harm but for extra time used).
 //
-func ImportData(imports map[string]*types.Package, filename, id string, data io.Reader) (pkg *types.Package, err error) {
+func ImportData(packages map[string]*types.Package, filename, id string, data io.Reader) (pkg *types.Package, err error) {
 	// support for parser error handling
 	defer func() {
 		switch r := recover().(type) {
@@ -104,18 +105,18 @@
 	}()
 
 	var p parser
-	p.init(filename, id, data, imports)
+	p.init(filename, id, data, packages)
 	pkg = p.parseExport()
 
 	return
 }
 
 // Import imports a gc-generated package given its import path, adds the
-// corresponding package object to the imports map, and returns the object.
+// corresponding package object to the packages map, and returns the object.
 // Local import paths are interpreted relative to the current working directory.
-// The imports map must contains all packages already imported.
+// The packages map must contains all packages already imported.
 //
-func Import(imports map[string]*types.Package, path string) (pkg *types.Package, err error) {
+func Import(packages map[string]*types.Package, path string) (pkg *types.Package, err error) {
 	if path == "unsafe" {
 		return types.Unsafe, nil
 	}
@@ -135,7 +136,7 @@
 	}
 
 	// no need to re-import if the package was imported completely before
-	if pkg = imports[id]; pkg != nil && pkg.Complete() {
+	if pkg = packages[id]; pkg != nil && pkg.Complete() {
 		return
 	}
 
@@ -157,7 +158,7 @@
 		return
 	}
 
-	pkg, err = ImportData(imports, filename, id, buf)
+	pkg, err = ImportData(packages, filename, id, buf)
 
 	return
 }
@@ -174,14 +175,15 @@
 // parser parses the exports inside a gc compiler-produced
 // object/archive file and populates its scope with the results.
 type parser struct {
-	scanner scanner.Scanner
-	tok     rune                      // current token
-	lit     string                    // literal string; only valid for Ident, Int, String tokens
-	id      string                    // package id of imported package
-	imports map[string]*types.Package // package id -> package object
+	scanner    scanner.Scanner
+	tok        rune                      // current token
+	lit        string                    // literal string; only valid for Ident, Int, String tokens
+	id         string                    // package id of imported package
+	sharedPkgs map[string]*types.Package // package id -> package object (across importer)
+	localPkgs  map[string]*types.Package // package id -> package object (just this package)
 }
 
-func (p *parser) init(filename, id string, src io.Reader, imports map[string]*types.Package) {
+func (p *parser) init(filename, id string, src io.Reader, packages map[string]*types.Package) {
 	p.scanner.Init(src)
 	p.scanner.Error = func(_ *scanner.Scanner, msg string) { p.error(msg) }
 	p.scanner.Mode = scanner.ScanIdents | scanner.ScanInts | scanner.ScanChars | scanner.ScanStrings | scanner.ScanComments | scanner.SkipComments
@@ -189,10 +191,10 @@
 	p.scanner.Filename = filename // for good error messages
 	p.next()
 	p.id = id
-	p.imports = imports
+	p.sharedPkgs = packages
 	if debug {
-		// check consistency of imports map
-		for _, pkg := range imports {
+		// check consistency of packages map
+		for _, pkg := range packages {
 			if pkg.Name() == "" {
 				fmt.Printf("no package name for %s\n", pkg.Path())
 			}
@@ -338,17 +340,32 @@
 
 // getPkg returns the package for a given id. If the package is
 // not found but we have a package name, create the package and
-// add it to the p.imports map.
+// add it to the p.localPkgs and p.sharedPkgs maps.
+//
+// id identifies a package, usually by a canonical package path like
+// "encoding/json" but possibly by a non-canonical import path like
+// "./json".
 //
 func (p *parser) getPkg(id, name string) *types.Package {
-	// package unsafe is not in the imports map - handle explicitly
+	// package unsafe is not in the packages maps - handle explicitly
 	if id == "unsafe" {
 		return types.Unsafe
 	}
-	pkg := p.imports[id]
+
+	pkg := p.localPkgs[id]
 	if pkg == nil && name != "" {
-		pkg = types.NewPackage(id, name)
-		p.imports[id] = pkg
+		// first import of id from this package
+		pkg = p.sharedPkgs[id]
+		if pkg == nil {
+			// first import of id by this importer
+			pkg = types.NewPackage(id, name)
+			p.sharedPkgs[id] = pkg
+		}
+
+		if p.localPkgs == nil {
+			p.localPkgs = make(map[string]*types.Package)
+		}
+		p.localPkgs[id] = pkg
 	}
 	return pkg
 }
@@ -418,12 +435,12 @@
 func (p *parser) parseName(materializePkg bool) (pkg *types.Package, name string) {
 	switch p.tok {
 	case scanner.Ident:
-		pkg = p.imports[p.id]
+		pkg = p.sharedPkgs[p.id]
 		name = p.lit
 		p.next()
 	case '?':
 		// anonymous
-		pkg = p.imports[p.id]
+		pkg = p.sharedPkgs[p.id]
 		p.next()
 	case '@':
 		// exported name prefixed with package path
@@ -572,7 +589,7 @@
 		}
 	}
 
-	return types.NewSignature(nil, recv, types.NewTuple(params...), types.NewTuple(results...), isVariadic)
+	return types.NewSignature(recv, types.NewTuple(params...), types.NewTuple(results...), isVariadic)
 }
 
 // InterfaceType = "interface" "{" [ MethodList ] "}" .
@@ -954,8 +971,25 @@
 		p.errorf("expected no scanner errors, got %d", n)
 	}
 
+	// Record all referenced packages as imports.
+	var imports []*types.Package
+	for id, pkg2 := range p.localPkgs {
+		if id == p.id {
+			continue // avoid self-edge
+		}
+		imports = append(imports, pkg2)
+	}
+	sort.Sort(byPath(imports))
+	pkg.SetImports(imports)
+
 	// package was imported completely and without errors
 	pkg.MarkComplete()
 
 	return pkg
 }
+
+type byPath []*types.Package
+
+func (a byPath) Len() int           { return len(a) }
+func (a byPath) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
+func (a byPath) Less(i, j int) bool { return a[i].Path() < a[j].Path() }
diff --git a/go/src/golang.org/x/tools/go/gcimporter/gcimporter_test.go b/go/src/golang.org/x/tools/go/gcimporter/gcimporter_test.go
index a20853a..73a4747 100644
--- a/go/src/golang.org/x/tools/go/gcimporter/gcimporter_test.go
+++ b/go/src/golang.org/x/tools/go/gcimporter/gcimporter_test.go
@@ -5,6 +5,7 @@
 package gcimporter
 
 import (
+	"fmt"
 	"go/build"
 	"io/ioutil"
 	"os"
@@ -18,23 +19,28 @@
 	"golang.org/x/tools/go/types"
 )
 
+// skipSpecialPlatforms causes the test to be skipped for platforms where
+// builders (build.golang.org) don't have access to compiled packages for
+// import.
+func skipSpecialPlatforms(t *testing.T) {
+	switch platform := runtime.GOOS + "-" + runtime.GOARCH; platform {
+	case "nacl-amd64p32",
+		"nacl-386",
+		"nacl-arm",
+		"darwin-arm",
+		"darwin-arm64":
+		t.Skipf("no compiled packages available for import on %s", platform)
+	}
+}
+
 var gcPath string // Go compiler path
 
 func init() {
-	// determine compiler
-	var gc string
-	switch runtime.GOARCH {
-	case "386":
-		gc = "8g"
-	case "amd64":
-		gc = "6g"
-	case "arm":
-		gc = "5g"
-	default:
-		gcPath = "unknown-GOARCH-compiler"
+	if char, err := build.ArchChar(runtime.GOARCH); err == nil {
+		gcPath = filepath.Join(build.ToolDir, char+"g")
 		return
 	}
-	gcPath = filepath.Join(build.ToolDir, gc)
+	gcPath = "unknown-GOARCH-compiler"
 }
 
 func compile(t *testing.T, dirname, filename string) string {
@@ -54,15 +60,15 @@
 // as if all tested packages were imported into a single package.
 var imports = make(map[string]*types.Package)
 
-func testPath(t *testing.T, path string) bool {
+func testPath(t *testing.T, path string) *types.Package {
 	t0 := time.Now()
-	_, err := Import(imports, path)
+	pkg, err := Import(imports, path)
 	if err != nil {
 		t.Errorf("testPath(%s): %s", path, err)
-		return false
+		return nil
 	}
 	t.Logf("testPath(%s): %v", path, time.Since(t0))
-	return true
+	return pkg
 }
 
 const maxTime = 30 * time.Second
@@ -84,7 +90,7 @@
 			for _, ext := range pkgExts {
 				if strings.HasSuffix(f.Name(), ext) {
 					name := f.Name()[0 : len(f.Name())-len(ext)] // remove extension
-					if testPath(t, filepath.Join(dir, name)) {
+					if testPath(t, filepath.Join(dir, name)) != nil {
 						nimports++
 					}
 				}
@@ -97,8 +103,9 @@
 }
 
 func TestImport(t *testing.T) {
-	// This package does not handle gccgo export data.
-	if runtime.Compiler == "gccgo" {
+	// This package only handles gc export data.
+	if runtime.Compiler != "gc" {
+		t.Skipf("gc-built packages not available (compiler = %s)", runtime.Compiler)
 		return
 	}
 
@@ -113,8 +120,17 @@
 	}
 
 	nimports := 0
-	if testPath(t, "./testdata/exports") {
+	if pkg := testPath(t, "./testdata/exports"); pkg != nil {
 		nimports++
+		// The package's Imports should include all the types
+		// referenced by the exportdata, which may be more than
+		// the import statements in the package's source, but
+		// fewer than the transitive closure of dependencies.
+		want := `[package ast ("go/ast") package token ("go/token") package runtime ("runtime")]`
+		got := fmt.Sprint(pkg.Imports())
+		if got != want {
+			t.Errorf(`Package("exports").Imports() = %s, want %s`, got, want)
+		}
 	}
 	nimports += testDir(t, "", time.Now().Add(maxTime)) // installed packages
 	t.Logf("tested %d imports", nimports)
@@ -133,10 +149,14 @@
 }
 
 func TestImportedTypes(t *testing.T) {
-	// This package does not handle gccgo export data.
-	if runtime.Compiler == "gccgo" {
+	skipSpecialPlatforms(t)
+
+	// This package only handles gc export data.
+	if runtime.Compiler != "gc" {
+		t.Skipf("gc-built packages not available (compiler = %s)", runtime.Compiler)
 		return
 	}
+
 	for _, test := range importedObjectTests {
 		s := strings.Split(test.name, ".")
 		if len(s) != 2 {
@@ -157,7 +177,7 @@
 			continue
 		}
 
-		got := types.ObjectString(pkg, obj)
+		got := types.ObjectString(obj, types.RelativeTo(pkg))
 		if got != test.want {
 			t.Errorf("%s: got %q; want %q", test.name, got, test.want)
 		}
@@ -165,8 +185,11 @@
 }
 
 func TestIssue5815(t *testing.T) {
-	// This package does not handle gccgo export data.
-	if runtime.Compiler == "gccgo" {
+	skipSpecialPlatforms(t)
+
+	// This package only handles gc export data.
+	if runtime.Compiler != "gc" {
+		t.Skipf("gc-built packages not available (compiler = %s)", runtime.Compiler)
 		return
 	}
 
@@ -195,8 +218,11 @@
 
 // Smoke test to ensure that imported methods get the correct package.
 func TestCorrectMethodPackage(t *testing.T) {
-	// This package does not handle gccgo export data.
-	if runtime.Compiler == "gccgo" {
+	skipSpecialPlatforms(t)
+
+	// This package only handles gc export data.
+	if runtime.Compiler != "gc" {
+		t.Skipf("gc-built packages not available (compiler = %s)", runtime.Compiler)
 		return
 	}
 
diff --git a/go/src/golang.org/x/tools/go/importer/import.go b/go/src/golang.org/x/tools/go/importer/import.go
index 2b6e279..3fa37a5 100644
--- a/go/src/golang.org/x/tools/go/importer/import.go
+++ b/go/src/golang.org/x/tools/go/importer/import.go
@@ -382,7 +382,7 @@
 	if p.int() != 0 {
 		recv = p.param()
 	}
-	return types.NewSignature(nil, recv, p.tuple(), p.tuple(), p.int() != 0)
+	return types.NewSignature(recv, p.tuple(), p.tuple(), p.int() != 0)
 }
 
 func (p *importer) param() *types.Var {
diff --git a/go/src/golang.org/x/tools/go/loader/doc.go b/go/src/golang.org/x/tools/go/loader/doc.go
new file mode 100644
index 0000000..1ff4b15
--- /dev/null
+++ b/go/src/golang.org/x/tools/go/loader/doc.go
@@ -0,0 +1,189 @@
+// Copyright 2015 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 loader loads a complete Go program from source code, parsing
+// and type-checking the initial packages plus their transitive closure
+// of dependencies.  The ASTs and the derived facts are retained for
+// later use.
+//
+// THIS INTERFACE IS EXPERIMENTAL AND IS LIKELY TO CHANGE.
+//
+// The package defines two primary types: Config, which specifies a
+// set of initial packages to load and various other options; and
+// Program, which is the result of successfully loading the packages
+// specified by a configuration.
+//
+// The configuration can be set directly, but *Config provides various
+// convenience methods to simplify the common cases, each of which can
+// be called any number of times.  Finally, these are followed by a
+// call to Load() to actually load and type-check the program.
+//
+//      var conf loader.Config
+//
+//      // Use the command-line arguments to specify
+//      // a set of initial packages to load from source.
+//      // See FromArgsUsage for help.
+//      rest, err := conf.FromArgs(os.Args[1:], wantTests)
+//
+//      // Parse the specified files and create an ad hoc package with path "foo".
+//      // All files must have the same 'package' declaration.
+//      conf.CreateFromFilenames("foo", "foo.go", "bar.go")
+//
+//      // Create an ad hoc package with path "foo" from
+//      // the specified already-parsed files.
+//      // All ASTs must have the same 'package' declaration.
+//      conf.CreateFromFiles("foo", parsedFiles)
+//
+//      // Add "runtime" to the set of packages to be loaded.
+//      conf.Import("runtime")
+//
+//      // Adds "fmt" and "fmt_test" to the set of packages
+//      // to be loaded.  "fmt" will include *_test.go files.
+//      conf.ImportWithTests("fmt")
+//
+//      // Finally, load all the packages specified by the configuration.
+//      prog, err := conf.Load()
+//
+// See examples_test.go for examples of API usage.
+//
+//
+// CONCEPTS AND TERMINOLOGY
+//
+// An AD HOC package is one specified as a set of source files on the
+// command line.  In the simplest case, it may consist of a single file
+// such as $GOROOT/src/net/http/triv.go.
+//
+// EXTERNAL TEST packages are those comprised of a set of *_test.go
+// files all with the same 'package foo_test' declaration, all in the
+// same directory.  (go/build.Package calls these files XTestFiles.)
+//
+// An IMPORTABLE package is one that can be referred to by some import
+// spec.  The Path() of each importable package is unique within a
+// Program.
+//
+// ad hoc packages and external test packages are NON-IMPORTABLE.  The
+// Path() of an ad hoc package is inferred from the package
+// declarations of its files and is therefore not a unique package key.
+// For example, Config.CreatePkgs may specify two initial ad hoc
+// packages both called "main".
+//
+// An AUGMENTED package is an importable package P plus all the
+// *_test.go files with same 'package foo' declaration as P.
+// (go/build.Package calls these files TestFiles.)
+//
+// The INITIAL packages are those specified in the configuration.  A
+// DEPENDENCY is a package loaded to satisfy an import in an initial
+// package or another dependency.
+//
+package loader
+
+// IMPLEMENTATION NOTES
+//
+// 'go test', in-package test files, and import cycles
+// ---------------------------------------------------
+//
+// An external test package may depend upon members of the augmented
+// package that are not in the unaugmented package, such as functions
+// that expose internals.  (See bufio/export_test.go for an example.)
+// So, the loader must ensure that for each external test package
+// it loads, it also augments the corresponding non-test package.
+//
+// The import graph over n unaugmented packages must be acyclic; the
+// import graph over n-1 unaugmented packages plus one augmented
+// package must also be acyclic.  ('go test' relies on this.)  But the
+// import graph over n augmented packages may contain cycles.
+//
+// First, all the (unaugmented) non-test packages and their
+// dependencies are imported in the usual way; the loader reports an
+// error if it detects an import cycle.
+//
+// Then, each package P for which testing is desired is augmented by
+// the list P' of its in-package test files, by calling
+// (*types.Checker).Files.  This arrangement ensures that P' may
+// reference definitions within P, but P may not reference definitions
+// within P'.  Furthermore, P' may import any other package, including
+// ones that depend upon P, without an import cycle error.
+//
+// Consider two packages A and B, both of which have lists of
+// in-package test files we'll call A' and B', and which have the
+// following import graph edges:
+//    B  imports A
+//    B' imports A
+//    A' imports B
+// This last edge would be expected to create an error were it not
+// for the special type-checking discipline above.
+// Cycles of size greater than two are possible.  For example:
+//   compress/bzip2/bzip2_test.go (package bzip2)  imports "io/ioutil"
+//   io/ioutil/tempfile_test.go   (package ioutil) imports "regexp"
+//   regexp/exec_test.go          (package regexp) imports "compress/bzip2"
+//
+//
+// Concurrency
+// -----------
+//
+// Let us define the import dependency graph as follows.  Each node is a
+// list of files passed to (Checker).Files at once.  Many of these lists
+// are the production code of an importable Go package, so those nodes
+// are labelled by the package's import path.  The remaining nodes are
+// ad hoc packages and lists of in-package *_test.go files that augment
+// an importable package; those nodes have no label.
+//
+// The edges of the graph represent import statements appearing within a
+// file.  An edge connects a node (a list of files) to the node it
+// imports, which is importable and thus always labelled.
+//
+// Loading is controlled by this dependency graph.
+//
+// To reduce I/O latency, we start loading a package's dependencies
+// asynchronously as soon as we've parsed its files and enumerated its
+// imports (scanImports).  This performs a preorder traversal of the
+// import dependency graph.
+//
+// To exploit hardware parallelism, we type-check unrelated packages in
+// parallel, where "unrelated" means not ordered by the partial order of
+// the import dependency graph.
+//
+// We use a concurrency-safe blocking cache (importer.imported) to
+// record the results of type-checking, whether success or failure.  An
+// entry is created in this cache by startLoad the first time the
+// package is imported.  The first goroutine to request an entry becomes
+// responsible for completing the task and broadcasting completion to
+// subsequent requestors, which block until then.
+//
+// Type checking occurs in (parallel) postorder: we cannot type-check a
+// set of files until we have loaded and type-checked all of their
+// immediate dependencies (and thus all of their transitive
+// dependencies). If the input were guaranteed free of import cycles,
+// this would be trivial: we could simply wait for completion of the
+// dependencies and then invoke the typechecker.
+//
+// But as we saw in the 'go test' section above, some cycles in the
+// import graph over packages are actually legal, so long as the
+// cycle-forming edge originates in the in-package test files that
+// augment the package.  This explains why the nodes of the import
+// dependency graph are not packages, but lists of files: the unlabelled
+// nodes avoid the cycles.  Consider packages A and B where B imports A
+// and A's in-package tests AT import B.  The naively constructed import
+// graph over packages would contain a cycle (A+AT) --> B --> (A+AT) but
+// the graph over lists of files is AT --> B --> A, where AT is an
+// unlabelled node.
+//
+// Awaiting completion of the dependencies in a cyclic graph would
+// deadlock, so we must materialize the import dependency graph (as
+// importer.graph) and check whether each import edge forms a cycle.  If
+// x imports y, and the graph already contains a path from y to x, then
+// there is an import cycle, in which case the processing of x must not
+// wait for the completion of processing of y.
+//
+// When the type-checker makes a callback (doImport) to the loader for a
+// given import edge, there are two possible cases.  In the normal case,
+// the dependency has already been completely type-checked; doImport
+// does a cache lookup and returns it.  In the cyclic case, the entry in
+// the cache is still necessarily incomplete, indicating a cycle.  We
+// perform the cycle check again to obtain the error message, and return
+// the error.
+//
+// The result of using concurrency is about a 2.5x speedup for stdlib_test.
+
+// TODO(adonovan): overhaul the package documentation.
diff --git a/go/src/golang.org/x/tools/go/loader/example_test.go b/go/src/golang.org/x/tools/go/loader/example_test.go
new file mode 100644
index 0000000..9fb5fdc
--- /dev/null
+++ b/go/src/golang.org/x/tools/go/loader/example_test.go
@@ -0,0 +1,170 @@
+// Copyright 2015 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 loader_test
+
+import (
+	"fmt"
+	"go/token"
+	"log"
+	"path/filepath"
+	"runtime"
+	"sort"
+
+	"golang.org/x/tools/go/loader"
+)
+
+func printProgram(prog *loader.Program) {
+	// Created packages are the initial packages specified by a call
+	// to CreateFromFilenames or CreateFromFiles.
+	var names []string
+	for _, info := range prog.Created {
+		names = append(names, info.Pkg.Path())
+	}
+	fmt.Printf("created: %s\n", names)
+
+	// Imported packages are the initial packages specified by a
+	// call to Import or ImportWithTests.
+	names = nil
+	for _, info := range prog.Imported {
+		names = append(names, info.Pkg.Path())
+	}
+	sort.Strings(names)
+	fmt.Printf("imported: %s\n", names)
+
+	// InitialPackages contains the union of created and imported.
+	names = nil
+	for _, info := range prog.InitialPackages() {
+		names = append(names, info.Pkg.Path())
+	}
+	sort.Strings(names)
+	fmt.Printf("initial: %s\n", names)
+
+	// AllPackages contains all initial packages and their dependencies.
+	names = nil
+	for pkg := range prog.AllPackages {
+		names = append(names, pkg.Path())
+	}
+	sort.Strings(names)
+	fmt.Printf("all: %s\n", names)
+}
+
+func printFilenames(fset *token.FileSet, info *loader.PackageInfo) {
+	var names []string
+	for _, f := range info.Files {
+		names = append(names, filepath.Base(fset.File(f.Pos()).Name()))
+	}
+	fmt.Printf("%s.Files: %s\n", info.Pkg.Path(), names)
+}
+
+// This example loads a set of packages and all of their dependencies
+// from a typical command-line.  FromArgs parses a command line and
+// makes calls to the other methods of Config shown in the examples that
+// follow.
+func ExampleConfig_FromArgs() {
+	args := []string{"mytool", "unicode/utf8", "errors", "runtime", "--", "foo", "bar"}
+	const wantTests = false
+
+	var conf loader.Config
+	rest, err := conf.FromArgs(args[1:], wantTests)
+	prog, err := conf.Load()
+	if err != nil {
+		log.Fatal(err)
+	}
+
+	fmt.Printf("rest: %s\n", rest)
+	printProgram(prog)
+	// Output:
+	// rest: [foo bar]
+	// created: []
+	// imported: [errors runtime unicode/utf8]
+	// initial: [errors runtime unicode/utf8]
+	// all: [errors runtime unicode/utf8]
+}
+
+// This example creates and type-checks a single package (without tests)
+// from a list of filenames, and loads all of its dependencies.
+func ExampleConfig_CreateFromFilenames() {
+	var conf loader.Config
+	filename := filepath.Join(runtime.GOROOT(), "src/container/heap/heap.go")
+	conf.CreateFromFilenames("container/heap", filename)
+	prog, err := conf.Load()
+	if err != nil {
+		log.Fatal(err)
+	}
+
+	printProgram(prog)
+	// Output:
+	// created: [container/heap]
+	// imported: []
+	// initial: [container/heap]
+	// all: [container/heap sort]
+}
+
+// In the examples below, for stability, the chosen packages are
+// relatively small, platform-independent, and low-level (and thus
+// infrequently changing).
+// The strconv package has internal and external tests.
+
+const hello = `package main
+
+import "fmt"
+
+func main() {
+	fmt.Println("Hello, world.")
+}
+`
+
+// This example creates and type-checks a package from a list of
+// already-parsed files, and loads all its dependencies.
+func ExampleConfig_CreateFromFiles() {
+	var conf loader.Config
+	f, err := conf.ParseFile("hello.go", hello)
+	if err != nil {
+		log.Fatal(err)
+	}
+	conf.CreateFromFiles("hello", f)
+	prog, err := conf.Load()
+	if err != nil {
+		log.Fatal(err)
+	}
+
+	printProgram(prog)
+	printFilenames(prog.Fset, prog.Package("strconv"))
+	// Output:
+	// created: [hello]
+	// imported: []
+	// initial: [hello]
+	// all: [errors fmt hello io math os reflect runtime strconv sync sync/atomic syscall time unicode/utf8]
+	// strconv.Files: [atob.go atof.go atoi.go decimal.go extfloat.go ftoa.go isprint.go itoa.go quote.go]
+}
+
+// This example imports three packages, including the tests for one of
+// them, and loads all their dependencies.
+func ExampleConfig_Import() {
+	// ImportWithTest("strconv") causes strconv to include
+	// internal_test.go, and creates an external test package,
+	// strconv_test.
+	// (Compare with the example of CreateFromFiles.)
+
+	var conf loader.Config
+	conf.Import("unicode/utf8")
+	conf.Import("errors")
+	conf.ImportWithTests("strconv")
+	prog, err := conf.Load()
+	if err != nil {
+		log.Fatal(err)
+	}
+
+	printProgram(prog)
+	printFilenames(prog.Fset, prog.Package("strconv"))
+	printFilenames(prog.Fset, prog.Package("strconv_test"))
+	// Output:
+	// created: [strconv_test]
+	// imported: [errors strconv unicode/utf8]
+	// initial: [errors strconv strconv_test unicode/utf8]
+	// all: [bufio bytes errors flag fmt io math math/rand os reflect runtime runtime/pprof sort strconv strconv_test strings sync sync/atomic syscall testing text/tabwriter time unicode unicode/utf8]
+	// strconv.Files: [atob.go atof.go atoi.go decimal.go extfloat.go ftoa.go isprint.go itoa.go quote.go internal_test.go]
+	// strconv_test.Files: [atob_test.go atof_test.go atoi_test.go decimal_test.go fp_test.go ftoa_test.go itoa_test.go quote_example_test.go quote_test.go strconv_test.go]
+}
diff --git a/go/src/golang.org/x/tools/go/loader/loader.go b/go/src/golang.org/x/tools/go/loader/loader.go
index 74ac6ee..5555faa 100644
--- a/go/src/golang.org/x/tools/go/loader/loader.go
+++ b/go/src/golang.org/x/tools/go/loader/loader.go
@@ -2,189 +2,9 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// Package loader loads, parses and type-checks packages of Go code
-// plus their transitive closure, and retains both the ASTs and the
-// derived facts.
-//
-// THIS INTERFACE IS EXPERIMENTAL AND IS LIKELY TO CHANGE.
-//
-// The package defines two primary types: Config, which specifies a
-// set of initial packages to load and various other options; and
-// Program, which is the result of successfully loading the packages
-// specified by a configuration.
-//
-// The configuration can be set directly, but *Config provides various
-// convenience methods to simplify the common cases, each of which can
-// be called any number of times.  Finally, these are followed by a
-// call to Load() to actually load and type-check the program.
-//
-//      var conf loader.Config
-//
-//      // Use the command-line arguments to specify
-//      // a set of initial packages to load from source.
-//      // See FromArgsUsage for help.
-//      rest, err := conf.FromArgs(os.Args[1:], wantTests)
-//
-//      // Parse the specified files and create an ad-hoc package with path "foo".
-//      // All files must have the same 'package' declaration.
-//      conf.CreateFromFilenames("foo", "foo.go", "bar.go")
-//
-//      // Create an ad-hoc package with path "foo" from
-//      // the specified already-parsed files.
-//      // All ASTs must have the same 'package' declaration.
-//      conf.CreateFromFiles("foo", parsedFiles)
-//
-//      // Add "runtime" to the set of packages to be loaded.
-//      conf.Import("runtime")
-//
-//      // Adds "fmt" and "fmt_test" to the set of packages
-//      // to be loaded.  "fmt" will include *_test.go files.
-//      conf.ImportWithTests("fmt")
-//
-//      // Finally, load all the packages specified by the configuration.
-//      prog, err := conf.Load()
-//
-//
-// CONCEPTS AND TERMINOLOGY
-//
-// An AD-HOC package is one specified as a set of source files on the
-// command line.  In the simplest case, it may consist of a single file
-// such as $GOROOT/src/net/http/triv.go.
-//
-// EXTERNAL TEST packages are those comprised of a set of *_test.go
-// files all with the same 'package foo_test' declaration, all in the
-// same directory.  (go/build.Package calls these files XTestFiles.)
-//
-// An IMPORTABLE package is one that can be referred to by some import
-// spec.  The Path() of each importable package is unique within a
-// Program.
-//
-// Ad-hoc packages and external test packages are NON-IMPORTABLE.  The
-// Path() of an ad-hoc package is inferred from the package
-// declarations of its files and is therefore not a unique package key.
-// For example, Config.CreatePkgs may specify two initial ad-hoc
-// packages both called "main".
-//
-// An AUGMENTED package is an importable package P plus all the
-// *_test.go files with same 'package foo' declaration as P.
-// (go/build.Package calls these files TestFiles.)
-//
-// The INITIAL packages are those specified in the configuration.  A
-// DEPENDENCY is a package loaded to satisfy an import in an initial
-// package or another dependency.
-//
 package loader
 
-// 'go test', in-package test files, and import cycles
-// ---------------------------------------------------
-//
-// An external test package may depend upon members of the augmented
-// package that are not in the unaugmented package, such as functions
-// that expose internals.  (See bufio/export_test.go for an example.)
-// So, the loader must ensure that for each external test package
-// it loads, it also augments the corresponding non-test package.
-//
-// The import graph over n unaugmented packages must be acyclic; the
-// import graph over n-1 unaugmented packages plus one augmented
-// package must also be acyclic.  ('go test' relies on this.)  But the
-// import graph over n augmented packages may contain cycles.
-//
-// First, all the (unaugmented) non-test packages and their
-// dependencies are imported in the usual way; the loader reports an
-// error if it detects an import cycle.
-//
-// Then, each package P for which testing is desired is augmented by
-// the list P' of its in-package test files, by calling
-// (*types.Checker).Files.  This arrangement ensures that P' may
-// reference definitions within P, but P may not reference definitions
-// within P'.  Furthermore, P' may import any other package, including
-// ones that depend upon P, without an import cycle error.
-//
-// Consider two packages A and B, both of which have lists of
-// in-package test files we'll call A' and B', and which have the
-// following import graph edges:
-//    B  imports A
-//    B' imports A
-//    A' imports B
-// This last edge would be expected to create an error were it not
-// for the special type-checking discipline above.
-// Cycles of size greater than two are possible.  For example:
-//   compress/bzip2/bzip2_test.go (package bzip2)  imports "io/ioutil"
-//   io/ioutil/tempfile_test.go   (package ioutil) imports "regexp"
-//   regexp/exec_test.go          (package regexp) imports "compress/bzip2"
-//
-//
-// Concurrency
-// -----------
-//
-// Let us define the import dependency graph as follows.  Each node is a
-// list of files passed to (Checker).Files at once.  Many of these lists
-// are the production code of an importable Go package, so those nodes
-// are labelled by the package's import path.  The remaining nodes are
-// ad-hoc packages and lists of in-package *_test.go files that augment
-// an importable package; those nodes have no label.
-//
-// The edges of the graph represent import statements appearing within a
-// file.  An edge connects a node (a list of files) to the node it
-// imports, which is importable and thus always labelled.
-//
-// Loading is controlled by this dependency graph.
-//
-// To reduce I/O latency, we start loading a package's dependencies
-// asynchronously as soon as we've parsed its files and enumerated its
-// imports (scanImports).  This performs a preorder traversal of the
-// import dependency graph.
-//
-// To exploit hardware parallelism, we type-check unrelated packages in
-// parallel, where "unrelated" means not ordered by the partial order of
-// the import dependency graph.
-//
-// We use a concurrency-safe blocking cache (importer.imported) to
-// record the results of type-checking, whether success or failure.  An
-// entry is created in this cache by startLoad the first time the
-// package is imported.  The first goroutine to request an entry becomes
-// responsible for completing the task and broadcasting completion to
-// subsequent requestors, which block until then.
-//
-// Type checking occurs in (parallel) postorder: we cannot type-check a
-// set of files until we have loaded and type-checked all of their
-// immediate dependencies (and thus all of their transitive
-// dependencies). If the input were guaranteed free of import cycles,
-// this would be trivial: we could simply wait for completion of the
-// dependencies and then invoke the typechecker.
-//
-// But as we saw in the 'go test' section above, some cycles in the
-// import graph over packages are actually legal, so long as the
-// cycle-forming edge originates in the in-package test files that
-// augment the package.  This explains why the nodes of the import
-// dependency graph are not packages, but lists of files: the unlabelled
-// nodes avoid the cycles.  Consider packages A and B where B imports A
-// and A's in-package tests AT import B.  The naively constructed import
-// graph over packages would contain a cycle (A+AT) --> B --> (A+AT) but
-// the graph over lists of files is AT --> B --> A, where AT is an
-// unlabelled node.
-//
-// Awaiting completion of the dependencies in a cyclic graph would
-// deadlock, so we must materialize the import dependency graph (as
-// importer.graph) and check whether each import edge forms a cycle.  If
-// x imports y, and the graph already contains a path from y to x, then
-// there is an import cycle, in which case the processing of x must not
-// wait for the completion of processing of y.
-//
-// When the type-checker makes a callback (doImport) to the loader for a
-// given import edge, there are two possible cases.  In the normal case,
-// the dependency has already been completely type-checked; doImport
-// does a cache lookup and returns it.  In the cyclic case, the entry in
-// the cache is still necessarily incomplete, indicating a cycle.  We
-// perform the cycle check again to obtain the error message, and return
-// the error.
-//
-// The result of using concurrency is about a 2.5x speedup for stdlib_test.
-
-// TODO(adonovan):
-// - cache the calls to build.Import so we don't do it three times per
-//   test package.
-// - Thorough overhaul of package documentation.
+// See doc.go for package documentation and implementation notes.
 
 import (
 	"errors"
@@ -200,13 +20,13 @@
 	"time"
 
 	"golang.org/x/tools/go/ast/astutil"
-	"golang.org/x/tools/go/gcimporter"
 	"golang.org/x/tools/go/types"
 )
 
 const trace = false // show timing info for type-checking
 
-// Config specifies the configuration for a program to load.
+// Config specifies the configuration for loading a whole program from
+// Go source code.
 // The zero value for Config is a ready-to-use default configuration.
 type Config struct {
 	// Fset is the file set for the parser to use when loading the
@@ -222,8 +42,7 @@
 	//
 	// The supplied IgnoreFuncBodies is not used; the effective
 	// value comes from the TypeCheckFuncBodies func below.
-	//
-	// TypeChecker.Packages is lazily initialized during Load.
+	// The supplied Import function is not used either.
 	TypeChecker types.Config
 
 	// TypeCheckFuncBodies is a predicate over package import
@@ -234,31 +53,6 @@
 	// checked.
 	TypeCheckFuncBodies func(string) bool
 
-	// ImportFromBinary determines whether to satisfy dependencies by
-	// loading gc export data instead of Go source code.
-	//
-	// If false, the entire program---the initial packages and their
-	// transitive closure of dependencies---will be loaded from
-	// source, parsed, and type-checked.  This is required for
-	// whole-program analyses such as pointer analysis.
-	//
-	// If true, the go/gcimporter mechanism is used instead to read
-	// the binary export-data files written by the gc toolchain.
-	// They supply only the types of package-level declarations and
-	// values of constants, but no code, this option will not yield
-	// a whole program.  It is intended for analyses that perform
-	// modular analysis of a single package, e.g. traditional
-	// compilation.
-	//
-	// No check is made that the export data files are up-to-date.
-	//
-	// The initial packages (CreatePkgs and ImportPkgs) are always
-	// loaded from Go source, regardless of this flag's setting.
-	//
-	// NB: there is a bug when loading multiple initial packages with
-	// this flag enabled: https://github.com/golang/go/issues/9955.
-	ImportFromBinary bool
-
 	// If Build is non-nil, it is used to locate source packages.
 	// Otherwise &build.Default is used.
 	//
@@ -268,6 +62,11 @@
 	// to startup, or by setting Build.CgoEnabled=false.
 	Build *build.Context
 
+	// The current directory, used for resolving relative package
+	// references such as "./go/loader".  If empty, os.Getwd will be
+	// used instead.
+	Cwd string
+
 	// If DisplayPath is non-nil, it is used to transform each
 	// file name obtained from Build.Import().  This can be used
 	// to prevent a virtualized build.Config's file names from
@@ -304,19 +103,6 @@
 	//
 	// It must be safe to call concurrently from multiple goroutines.
 	FindPackage func(ctxt *build.Context, importPath string) (*build.Package, error)
-
-	// PackageCreated is a hook called when a types.Package
-	// is created but before it has been populated.
-	//
-	// The package's import Path() and Scope() are defined,
-	// but not its Name() since no package declaration has
-	// been seen yet.
-	//
-	// Clients may use this to insert synthetic items into
-	// the package scope, for example.
-	//
-	// It must be safe to call concurrently from multiple goroutines.
-	PackageCreated func(*types.Package)
 }
 
 // A PkgSpec specifies a non-importable package to be created by Load.
@@ -329,8 +115,7 @@
 	Filenames []string    // names of files to be parsed
 }
 
-// A Program is a Go program loaded from source or binary
-// as specified by a Config.
+// A Program is a Go program loaded from source as specified by a Config.
 type Program struct {
 	Fset *token.FileSet // the file set for this program
 
@@ -344,16 +129,15 @@
 	// as specified by Config.ImportPkgs.
 	Imported map[string]*PackageInfo
 
-	// ImportMap is the canonical mapping of import paths to
-	// packages used by the type-checker (Config.TypeChecker.Packages).
-	// It contains all Imported initial packages, but not Created
-	// ones, and all imported dependencies.
-	ImportMap map[string]*types.Package
-
 	// AllPackages contains the PackageInfo of every package
 	// encountered by Load: all initial packages and all
 	// dependencies, including incomplete ones.
 	AllPackages map[*types.Package]*PackageInfo
+
+	// importMap is the canonical mapping of import paths to
+	// packages.  It contains all Imported initial packages, but not
+	// Created ones, and all imported dependencies.
+	importMap map[string]*types.Package
 }
 
 // PackageInfo holds the ASTs and facts derived by the type-checker
@@ -455,7 +239,7 @@
 
 	if len(args) > 0 && strings.HasSuffix(args[0], ".go") {
 		// Assume args is a list of a *.go files
-		// denoting a single ad-hoc package.
+		// denoting a single ad hoc package.
 		for _, arg := range args {
 			if !strings.HasSuffix(arg, ".go") {
 				return nil, fmt.Errorf("named files must be .go files: %s", arg)
@@ -510,7 +294,7 @@
 func (conf *Config) Import(path string) { conf.addImport(path, false) }
 
 func (conf *Config) addImport(path string, tests bool) {
-	if path == "unsafe" {
+	if path == "C" || path == "unsafe" {
 		return // ignore; not a real package
 	}
 	if conf.ImportPkgs == nil {
@@ -529,6 +313,12 @@
 func (prog *Program) PathEnclosingInterval(start, end token.Pos) (pkg *PackageInfo, path []ast.Node, exact bool) {
 	for _, info := range prog.AllPackages {
 		for _, f := range info.Files {
+			if f.Pos() == token.NoPos {
+				// This can happen if the parser saw
+				// too many errors and bailed out.
+				// (Use parser.AllErrors to prevent that.)
+				continue
+			}
 			if !tokenFileContainsPos(prog.Fset.File(f.Pos()), start) {
 				continue
 			}
@@ -552,23 +342,31 @@
 	return infos
 }
 
+// Package returns the ASTs and results of type checking for the
+// specified package.
+func (prog *Program) Package(path string) *PackageInfo {
+	if info, ok := prog.AllPackages[prog.importMap[path]]; ok {
+		return info
+	}
+	for _, info := range prog.Created {
+		if path == info.Pkg.Path() {
+			return info
+		}
+	}
+	return nil
+}
+
 // ---------- Implementation ----------
 
 // importer holds the working state of the algorithm.
 type importer struct {
 	conf  *Config   // the client configuration
-	prog  *Program  // resulting program
 	start time.Time // for logging
 
-	// This mutex serializes access to prog.ImportMap (aka
-	// TypeChecker.Packages); we also use it for AllPackages.
-	//
-	// The TypeChecker.Packages map is not really used by this
-	// package, but may be used by the client's Import function,
-	// and by clients of the returned Program.
-	typecheckerMu sync.Mutex
+	progMu sync.Mutex // guards prog
+	prog   *Program   // the resulting program
 
-	importedMu sync.Mutex
+	importedMu sync.Mutex             // guards imported
 	imported   map[string]*importInfo // all imported packages (incl. failures) by import path
 
 	// import dependency graph: graph[x][y] => x imports y
@@ -629,25 +427,37 @@
 // It is an error if no packages were loaded.
 //
 func (conf *Config) Load() (*Program, error) {
-	// Initialize by setting the conf's copy, so all copies of
-	// TypeChecker agree on the identity of the map.
-	if conf.TypeChecker.Packages == nil {
-		conf.TypeChecker.Packages = make(map[string]*types.Package)
-	}
-
 	// Create a simple default error handler for parse/type errors.
 	if conf.TypeChecker.Error == nil {
 		conf.TypeChecker.Error = func(e error) { fmt.Fprintln(os.Stderr, e) }
 	}
 
+	// Set default working directory for relative package references.
+	if conf.Cwd == "" {
+		var err error
+		conf.Cwd, err = os.Getwd()
+		if err != nil {
+			return nil, err
+		}
+	}
+
+	// Install default FindPackage hook using go/build logic.
 	if conf.FindPackage == nil {
-		conf.FindPackage = defaultFindPackage
+		conf.FindPackage = func(ctxt *build.Context, path string) (*build.Package, error) {
+			// TODO(adonovan): cache calls to build.Import
+			// so we don't do it three times per test package.
+			bp, err := ctxt.Import(path, conf.Cwd, 0)
+			if _, ok := err.(*build.NoGoError); ok {
+				return bp, nil // empty directory is not an error
+			}
+			return bp, err
+		}
 	}
 
 	prog := &Program{
 		Fset:        conf.fset(),
 		Imported:    make(map[string]*PackageInfo),
-		ImportMap:   conf.TypeChecker.Packages,
+		importMap:   make(map[string]*types.Package),
 		AllPackages: make(map[*types.Package]*PackageInfo),
 	}
 
@@ -716,7 +526,7 @@
 			info.appendError(err)
 		}
 
-		// Ad-hoc packages are non-importable,
+		// Ad hoc packages are non-importable,
 		// so no cycle check is needed.
 		// addFiles loads dependencies in parallel.
 		imp.addFiles(info, files, false)
@@ -729,8 +539,12 @@
 		files = append(files, cp.Files...)
 
 		path := cp.Path
-		if path == "" && len(files) > 0 {
-			path = files[0].Name.Name
+		if path == "" {
+			if len(files) > 0 {
+				path = files[0].Name.Name
+			} else {
+				path = "(unnamed)"
+			}
 		}
 		createPkg(path, files, errs)
 	}
@@ -750,7 +564,7 @@
 
 	// Create infos for indirectly imported packages.
 	// e.g. incomplete packages without syntax, loaded from export data.
-	for _, obj := range prog.ImportMap {
+	for _, obj := range prog.importMap {
 		info := prog.AllPackages[obj]
 		if info == nil {
 			prog.AllPackages[obj] = &PackageInfo{Pkg: obj, Importable: true}
@@ -839,17 +653,6 @@
 	return &build.Default
 }
 
-// defaultFindPackage locates the specified (possibly empty) package
-// using go/build logic.  It returns an error if not found.
-func defaultFindPackage(ctxt *build.Context, path string) (*build.Package, error) {
-	// Import(srcDir="") disables local imports, e.g. import "./foo".
-	bp, err := ctxt.Import(path, "", 0)
-	if _, ok := err.(*build.NoGoError); ok {
-		return bp, nil // empty directory is not an error
-	}
-	return bp, err
-}
-
 // parsePackageFiles enumerates the files belonging to package path,
 // then loads, parses and returns them, plus a list of I/O or parse
 // errors that were encountered.
@@ -905,6 +708,13 @@
 	if to == "unsafe" {
 		return types.Unsafe, nil
 	}
+	if to == "C" {
+		// This should be unreachable, but ad hoc packages are
+		// not currently subject to cgo preprocessing.
+		// See https://github.com/golang/go/issues/11627.
+		return nil, fmt.Errorf(`the loader doesn't cgo-process ad hoc packages like %q; see Go issue 11627`,
+			from.Pkg.Path())
+	}
 
 	imp.importedMu.Lock()
 	ii := imp.imported[to]
@@ -1025,62 +835,24 @@
 		ii = &importInfo{path: path}
 		ii.complete.L = &ii.mu
 		imp.imported[path] = ii
-
-		go imp.load(path, ii)
+		go func() {
+			ii.Complete(imp.load(path))
+		}()
 	}
 	imp.importedMu.Unlock()
 
 	return ii
 }
 
-func (imp *importer) load(path string, ii *importInfo) {
-	var info *PackageInfo
-	var err error
-	// Find and create the actual package.
-	if _, ok := imp.conf.ImportPkgs[path]; ok || !imp.conf.ImportFromBinary {
-		info, err = imp.loadFromSource(path)
-	} else {
-		info, err = imp.importFromBinary(path)
-	}
-	ii.Complete(info, err)
-}
-
-// importFromBinary implements package loading from the client-supplied
-// external source, e.g. object files from the gc compiler.
-//
-func (imp *importer) importFromBinary(path string) (*PackageInfo, error) {
-	// Determine the caller's effective Import function.
-	importfn := imp.conf.TypeChecker.Import
-	if importfn == nil {
-		importfn = gcimporter.Import
-	}
-	imp.typecheckerMu.Lock()
-	pkg, err := importfn(imp.conf.TypeChecker.Packages, path)
-	if pkg != nil {
-		imp.conf.TypeChecker.Packages[path] = pkg
-	}
-	imp.typecheckerMu.Unlock()
-	if err != nil {
-		return nil, err
-	}
-	info := &PackageInfo{Pkg: pkg}
-	info.Importable = true
-	imp.typecheckerMu.Lock()
-	imp.prog.AllPackages[pkg] = info
-	imp.typecheckerMu.Unlock()
-	return info, nil
-}
-
-// loadFromSource implements package loading by parsing Go source files
+// load implements package loading by parsing Go source files
 // located by go/build.
-// The returned PackageInfo's typeCheck function must be called.
 //
-func (imp *importer) loadFromSource(path string) (*PackageInfo, error) {
+func (imp *importer) load(path string) (*PackageInfo, error) {
 	bp, err := imp.conf.FindPackage(imp.conf.build(), path)
 	if err != nil {
 		return nil, err // package not found
 	}
-	info := imp.newPackageInfo(path)
+	info := imp.newPackageInfo(bp.ImportPath)
 	info.Importable = true
 	files, errs := imp.conf.parsePackageFiles(bp, 'g')
 	for _, err := range errs {
@@ -1089,9 +861,9 @@
 
 	imp.addFiles(info, files, true)
 
-	imp.typecheckerMu.Lock()
-	imp.conf.TypeChecker.Packages[path] = info.Pkg
-	imp.typecheckerMu.Unlock()
+	imp.progMu.Lock()
+	imp.prog.importMap[path] = info.Pkg
+	imp.progMu.Unlock()
 
 	return info, nil
 }
@@ -1131,9 +903,6 @@
 
 func (imp *importer) newPackageInfo(path string) *PackageInfo {
 	pkg := types.NewPackage(path, "")
-	if imp.conf.PackageCreated != nil {
-		imp.conf.PackageCreated(pkg)
-	}
 	info := &PackageInfo{
 		Pkg: pkg,
 		Info: types.Info{
@@ -1159,8 +928,8 @@
 	tc.Error = info.appendError // appendError wraps the user's Error function
 
 	info.checker = types.NewChecker(&tc, imp.conf.fset(), pkg, &info.Info)
-	imp.typecheckerMu.Lock()
+	imp.progMu.Lock()
 	imp.prog.AllPackages[pkg] = info
-	imp.typecheckerMu.Unlock()
+	imp.progMu.Unlock()
 	return info
 }
diff --git a/go/src/golang.org/x/tools/go/loader/loader_test.go b/go/src/golang.org/x/tools/go/loader/loader_test.go
index 4e9f7d3..0b42e39 100644
--- a/go/src/golang.org/x/tools/go/loader/loader_test.go
+++ b/go/src/golang.org/x/tools/go/loader/loader_test.go
@@ -5,6 +5,7 @@
 package loader_test
 
 import (
+	"fmt"
 	"go/build"
 	"reflect"
 	"sort"
@@ -139,6 +140,49 @@
 	}
 }
 
+func TestCreateUnnamedPackage(t *testing.T) {
+	var conf loader.Config
+	conf.CreateFromFilenames("")
+	prog, err := conf.Load()
+	if err != nil {
+		t.Fatalf("Load failed: %v", err)
+	}
+	if got, want := fmt.Sprint(prog.InitialPackages()), "[(unnamed)]"; got != want {
+		t.Errorf("InitialPackages = %s, want %s", got, want)
+	}
+}
+
+func TestLoad_MissingFileInCreatedPackage(t *testing.T) {
+	var conf loader.Config
+	conf.CreateFromFilenames("", "missing.go")
+
+	const wantErr = "couldn't load packages due to errors: (unnamed)"
+
+	prog, err := conf.Load()
+	if prog != nil {
+		t.Errorf("Load unexpectedly returned a Program")
+	}
+	if err == nil {
+		t.Fatalf("Load succeeded unexpectedly, want %q", wantErr)
+	}
+	if err.Error() != wantErr {
+		t.Fatalf("Load failed with wrong error %q, want %q", err, wantErr)
+	}
+}
+
+func TestLoad_MissingFileInCreatedPackage_AllowErrors(t *testing.T) {
+	conf := loader.Config{AllowErrors: true}
+	conf.CreateFromFilenames("", "missing.go")
+
+	prog, err := conf.Load()
+	if err != nil {
+		t.Errorf("Load failed: %v", err)
+	}
+	if got, want := fmt.Sprint(prog.InitialPackages()), "[(unnamed)]"; got != want {
+		t.Fatalf("InitialPackages = %s, want %s", got, want)
+	}
+}
+
 func TestLoad_ParseError(t *testing.T) {
 	var conf loader.Config
 	conf.CreateFromFilenames("badpkg", "testdata/badpkgdecl.go")
@@ -146,14 +190,15 @@
 	const wantErr = "couldn't load packages due to errors: badpkg"
 
 	prog, err := conf.Load()
-	if err == nil {
-		t.Errorf("Load succeeded unexpectedly, want %q", wantErr)
-	} else if err.Error() != wantErr {
-		t.Errorf("Load failed with wrong error %q, want %q", err, wantErr)
-	}
 	if prog != nil {
 		t.Errorf("Load unexpectedly returned a Program")
 	}
+	if err == nil {
+		t.Fatalf("Load succeeded unexpectedly, want %q", wantErr)
+	}
+	if err.Error() != wantErr {
+		t.Fatalf("Load failed with wrong error %q, want %q", err, wantErr)
+	}
 }
 
 func TestLoad_ParseError_AllowErrors(t *testing.T) {
@@ -311,6 +356,38 @@
 	}
 }
 
+func TestCwd(t *testing.T) {
+	ctxt := fakeContext(map[string]string{"one/two/three": `package three`})
+	for _, test := range []struct {
+		cwd, arg, want string
+	}{
+		{cwd: "/go/src/one", arg: "./two/three", want: "one/two/three"},
+		{cwd: "/go/src/one", arg: "../one/two/three", want: "one/two/three"},
+		{cwd: "/go/src/one", arg: "one/two/three", want: "one/two/three"},
+		{cwd: "/go/src/one/two/three", arg: ".", want: "one/two/three"},
+		{cwd: "/go/src/one", arg: "two/three", want: ""},
+	} {
+		conf := loader.Config{
+			Cwd:   test.cwd,
+			Build: ctxt,
+		}
+		conf.Import(test.arg)
+
+		var got string
+		prog, err := conf.Load()
+		if prog != nil {
+			got = imported(prog)
+		}
+		if got != test.want {
+			t.Errorf("Load(%s) from %s: Imported = %s, want %s",
+				test.arg, test.cwd, got, test.want)
+			if err != nil {
+				t.Errorf("Load failed: %v", err)
+			}
+		}
+	}
+}
+
 // TODO(adonovan): more Load tests:
 //
 // failures:
diff --git a/go/src/golang.org/x/tools/go/loader/source_test.go b/go/src/golang.org/x/tools/go/loader/source_test.go
deleted file mode 100644
index f2e06be..0000000
--- a/go/src/golang.org/x/tools/go/loader/source_test.go
+++ /dev/null
@@ -1,126 +0,0 @@
-// Copyright 2013 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 loader_test
-
-// This file defines tests of source utilities.
-
-import (
-	"go/ast"
-	"go/parser"
-	"go/token"
-	"strings"
-	"testing"
-
-	"golang.org/x/tools/go/ast/astutil"
-	"golang.org/x/tools/go/loader"
-	"golang.org/x/tools/go/ssa"
-)
-
-// findInterval parses input and returns the [start, end) positions of
-// the first occurrence of substr in input.  f==nil indicates failure;
-// an error has already been reported in that case.
-//
-func findInterval(t *testing.T, fset *token.FileSet, input, substr string) (f *ast.File, start, end token.Pos) {
-	f, err := parser.ParseFile(fset, "<input>", input, 0)
-	if err != nil {
-		t.Errorf("parse error: %s", err)
-		return
-	}
-
-	i := strings.Index(input, substr)
-	if i < 0 {
-		t.Errorf("%q is not a substring of input", substr)
-		f = nil
-		return
-	}
-
-	filePos := fset.File(f.Package)
-	return f, filePos.Pos(i), filePos.Pos(i + len(substr))
-}
-
-func TestEnclosingFunction(t *testing.T) {
-	tests := []struct {
-		input  string // the input file
-		substr string // first occurrence of this string denotes interval
-		fn     string // name of expected containing function
-	}{
-		// We use distinctive numbers as syntactic landmarks.
-
-		// Ordinary function:
-		{`package main
-		  func f() { println(1003) }`,
-			"100", "main.f"},
-		// Methods:
-		{`package main
-                  type T int
-		  func (t T) f() { println(200) }`,
-			"200", "(main.T).f"},
-		// Function literal:
-		{`package main
-		  func f() { println(func() { print(300) }) }`,
-			"300", "main.f$1"},
-		// Doubly nested
-		{`package main
-		  func f() { println(func() { print(func() { print(350) })})}`,
-			"350", "main.f$1$1"},
-		// Implicit init for package-level var initializer.
-		{"package main; var a = 400", "400", "main.init"},
-		// No code for constants:
-		{"package main; const a = 500", "500", "(none)"},
-		// Explicit init()
-		{"package main; func init() { println(600) }", "600", "main.init#1"},
-		// Multiple explicit init functions:
-		{`package main
-		  func init() { println("foo") }
-		  func init() { println(800) }`,
-			"800", "main.init#2"},
-		// init() containing FuncLit.
-		{`package main
-		  func init() { println(func(){print(900)}) }`,
-			"900", "main.init#1$1"},
-	}
-	for _, test := range tests {
-		conf := loader.Config{Fset: token.NewFileSet()}
-		f, start, end := findInterval(t, conf.Fset, test.input, test.substr)
-		if f == nil {
-			continue
-		}
-		path, exact := astutil.PathEnclosingInterval(f, start, end)
-		if !exact {
-			t.Errorf("EnclosingFunction(%q) not exact", test.substr)
-			continue
-		}
-
-		conf.CreateFromFiles("main", f)
-
-		iprog, err := conf.Load()
-		if err != nil {
-			t.Error(err)
-			continue
-		}
-		prog := ssa.Create(iprog, 0)
-		pkg := prog.Package(iprog.Created[0].Pkg)
-		pkg.Build()
-
-		name := "(none)"
-		fn := ssa.EnclosingFunction(pkg, path)
-		if fn != nil {
-			name = fn.String()
-		}
-
-		if name != test.fn {
-			t.Errorf("EnclosingFunction(%q in %q) got %s, want %s",
-				test.substr, test.input, name, test.fn)
-			continue
-		}
-
-		// While we're here: test HasEnclosingFunction.
-		if has := ssa.HasEnclosingFunction(pkg, path); has != (fn != nil) {
-			t.Errorf("HasEnclosingFunction(%q in %q) got %v, want %v",
-				test.substr, test.input, has, fn != nil)
-			continue
-		}
-	}
-}
diff --git a/go/src/golang.org/x/tools/go/loader/stdlib_test.go b/go/src/golang.org/x/tools/go/loader/stdlib_test.go
index d14928a..f5c45ab 100644
--- a/go/src/golang.org/x/tools/go/loader/stdlib_test.go
+++ b/go/src/golang.org/x/tools/go/loader/stdlib_test.go
@@ -62,9 +62,10 @@
 		for pkg := range prog.AllPackages {
 			fmt.Printf("Package %s:\n", pkg.Path())
 			scope := pkg.Scope()
+			qualifier := types.RelativeTo(pkg)
 			for _, name := range scope.Names() {
 				if ast.IsExported(name) {
-					fmt.Printf("\t%s\n", types.ObjectString(pkg, scope.Lookup(name)))
+					fmt.Printf("\t%s\n", types.ObjectString(scope.Lookup(name), qualifier))
 				}
 			}
 			fmt.Println()
diff --git a/go/src/golang.org/x/tools/go/loader/util.go b/go/src/golang.org/x/tools/go/loader/util.go
index 1166c92..0404e99 100644
--- a/go/src/golang.org/x/tools/go/loader/util.go
+++ b/go/src/golang.org/x/tools/go/loader/util.go
@@ -17,6 +17,10 @@
 	"golang.org/x/tools/go/buildutil"
 )
 
+// We use a counting semaphore to limit
+// the number of parallel I/O calls per process.
+var sema = make(chan bool, 10)
+
 // parseFiles parses the Go source files within directory dir and
 // returns the ASTs of the ones that could be at least partially parsed,
 // along with a list of I/O and parse errors encountered.
@@ -38,7 +42,11 @@
 		}
 		wg.Add(1)
 		go func(i int, file string) {
-			defer wg.Done()
+			sema <- true // wait
+			defer func() {
+				wg.Done()
+				<-sema // signal
+			}()
 			var rd io.ReadCloser
 			var err error
 			if ctxt.OpenFile != nil {
diff --git a/go/src/golang.org/x/tools/go/pointer/analysis.go b/go/src/golang.org/x/tools/go/pointer/analysis.go
index f3b70f1..d02e536 100644
--- a/go/src/golang.org/x/tools/go/pointer/analysis.go
+++ b/go/src/golang.org/x/tools/go/pointer/analysis.go
@@ -255,7 +255,7 @@
 		// (This only checks that the package scope is complete,
 		// not that func bodies exist, but it's a good signal.)
 		if !pkg.Object.Complete() {
-			return nil, fmt.Errorf(`pointer analysis requires a complete program yet package %q was incomplete (don't set loader.Config.ImportFromBinary during loading)`, pkg.Object.Path())
+			return nil, fmt.Errorf(`pointer analysis requires a complete program yet package %q was incomplete`, pkg.Object.Path())
 		}
 	}
 
diff --git a/go/src/golang.org/x/tools/go/pointer/api.go b/go/src/golang.org/x/tools/go/pointer/api.go
index a81c586..8f9ae0a 100644
--- a/go/src/golang.org/x/tools/go/pointer/api.go
+++ b/go/src/golang.org/x/tools/go/pointer/api.go
@@ -21,6 +21,12 @@
 	// Mains contains the set of 'main' packages to analyze
 	// Clients must provide the analysis with at least one
 	// package defining a main() function.
+	//
+	// Non-main packages in the ssa.Program that are not
+	// dependencies of any main package may still affect the
+	// analysis result, because they contribute runtime types and
+	// thus methods.
+	// TODO(adonovan): investigate whether this is desirable.
 	Mains []*ssa.Package
 
 	// Reflection determines whether to handle reflection
diff --git a/go/src/golang.org/x/tools/go/pointer/example_test.go b/go/src/golang.org/x/tools/go/pointer/example_test.go
index 5f2e940..ba70557 100644
--- a/go/src/golang.org/x/tools/go/pointer/example_test.go
+++ b/go/src/golang.org/x/tools/go/pointer/example_test.go
@@ -12,6 +12,7 @@
 	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/pointer"
 	"golang.org/x/tools/go/ssa"
+	"golang.org/x/tools/go/ssa/ssautil"
 )
 
 // This program demonstrates how to use the pointer analysis to
@@ -61,7 +62,7 @@
 	}
 
 	// Create SSA-form program representation.
-	prog := ssa.Create(iprog, 0)
+	prog := ssautil.CreateProgram(iprog, 0)
 	mainPkg := prog.Package(iprog.Created[0].Pkg)
 
 	// Build SSA code for bodies of all functions in the whole program.
diff --git a/go/src/golang.org/x/tools/go/pointer/pointer_test.go b/go/src/golang.org/x/tools/go/pointer/pointer_test.go
index 1daf9c3..8dfce96 100644
--- a/go/src/golang.org/x/tools/go/pointer/pointer_test.go
+++ b/go/src/golang.org/x/tools/go/pointer/pointer_test.go
@@ -12,7 +12,6 @@
 	"bytes"
 	"errors"
 	"fmt"
-	"go/parser"
 	"go/token"
 	"io/ioutil"
 	"os"
@@ -172,7 +171,7 @@
 	mainPkgInfo := iprog.Created[0].Pkg
 
 	// SSA creation + building.
-	prog := ssa.Create(iprog, ssa.SanityCheckFunctions)
+	prog := ssautil.CreateProgram(iprog, ssa.SanityCheckFunctions)
 	prog.BuildAll()
 
 	mainpkg := prog.Package(mainPkgInfo)
@@ -240,15 +239,7 @@
 				for _, typstr := range split(rest, "|") {
 					var t types.Type = types.Typ[types.Invalid] // means "..."
 					if typstr != "..." {
-						texpr, err := parser.ParseExpr(typstr)
-						if err != nil {
-							ok = false
-							// Don't print err since its location is bad.
-							e.errorf("'%s' is not a valid type", typstr)
-							continue
-						}
-						mainFileScope := mainpkg.Object.Scope().Child(0)
-						tv, err := types.EvalNode(prog.Fset, texpr, mainpkg.Object, mainFileScope)
+						tv, err := types.Eval(prog.Fset, mainpkg.Object, f.Pos(), typstr)
 						if err != nil {
 							ok = false
 							// Don't print err since its location is bad.
diff --git a/go/src/golang.org/x/tools/go/pointer/reflect.go b/go/src/golang.org/x/tools/go/pointer/reflect.go
index 7e9c280..466995c 100644
--- a/go/src/golang.org/x/tools/go/pointer/reflect.go
+++ b/go/src/golang.org/x/tools/go/pointer/reflect.go
@@ -1849,7 +1849,7 @@
 	for i := 0; i < n; i++ {
 		p2[i+1] = params.At(i)
 	}
-	return types.NewSignature(nil, nil, types.NewTuple(p2...), sig.Results(), sig.Variadic())
+	return types.NewSignature(nil, types.NewTuple(p2...), sig.Results(), sig.Variadic())
 }
 
 func (c *rtypeMethodByNameConstraint) solve(a *analysis, delta *nodeset) {
diff --git a/go/src/golang.org/x/tools/go/pointer/stdlib_test.go b/go/src/golang.org/x/tools/go/pointer/stdlib_test.go
index 6365279..21afdf2 100644
--- a/go/src/golang.org/x/tools/go/pointer/stdlib_test.go
+++ b/go/src/golang.org/x/tools/go/pointer/stdlib_test.go
@@ -47,7 +47,7 @@
 	}
 
 	// Create SSA packages.
-	prog := ssa.Create(iprog, 0)
+	prog := ssautil.CreateProgram(iprog, 0)
 	prog.BuildAll()
 
 	numPkgs := len(prog.AllPackages())
diff --git a/go/src/golang.org/x/tools/go/ssa/builder.go b/go/src/golang.org/x/tools/go/ssa/builder.go
index 3e70a85..5b8ce0e 100644
--- a/go/src/golang.org/x/tools/go/ssa/builder.go
+++ b/go/src/golang.org/x/tools/go/ssa/builder.go
@@ -358,7 +358,9 @@
 			v = fn.addLocal(t, e.Lbrace)
 		}
 		v.Comment = "complit"
-		b.compLit(fn, v, e, true) // initialize in place
+		var sb storebuf
+		b.compLit(fn, v, e, true, &sb)
+		sb.emit(fn)
 		return &address{addr: v, pos: e.Lbrace, expr: e}
 
 	case *ast.ParenExpr:
@@ -420,15 +422,39 @@
 	panic(fmt.Sprintf("unexpected address expression: %T", e))
 }
 
-// exprInPlace emits to fn code to initialize the lvalue loc with the
-// value of expression e. If isZero is true, exprInPlace assumes that loc
-// holds the zero value for its type.
+type store struct {
+	lhs lvalue
+	rhs Value
+}
+
+type storebuf struct{ stores []store }
+
+func (sb *storebuf) store(lhs lvalue, rhs Value) {
+	sb.stores = append(sb.stores, store{lhs, rhs})
+}
+
+func (sb *storebuf) emit(fn *Function) {
+	for _, s := range sb.stores {
+		s.lhs.store(fn, s.rhs)
+	}
+}
+
+// assign emits to fn code to initialize the lvalue loc with the value
+// of expression e.  If isZero is true, assign assumes that loc holds
+// the zero value for its type.
 //
-// This is equivalent to loc.store(fn, b.expr(fn, e)) but may
-// generate better code in some cases, e.g. for composite literals
-// in an addressable location.
+// This is equivalent to loc.store(fn, b.expr(fn, e)), but may generate
+// better code in some cases, e.g., for composite literals in an
+// addressable location.
 //
-func (b *builder) exprInPlace(fn *Function, loc lvalue, e ast.Expr, isZero bool) {
+// If sb is not nil, assign generates code to evaluate expression e, but
+// not to update loc.  Instead, the necessary stores are appended to the
+// storebuf sb so that they can be executed later.  This allows correct
+// in-place update of existing variables when the RHS is a composite
+// literal that may reference parts of the LHS.
+//
+func (b *builder) assign(fn *Function, loc lvalue, e ast.Expr, isZero bool, sb *storebuf) {
+	// Can we initialize it in place?
 	if e, ok := unparen(e).(*ast.CompositeLit); ok {
 		// A CompositeLit never evaluates to a pointer,
 		// so if the type of the location is a pointer,
@@ -436,7 +462,12 @@
 		if _, ok := loc.(blank); !ok { // avoid calling blank.typ()
 			if isPointer(loc.typ()) {
 				ptr := b.addr(fn, e, true).address(fn)
-				loc.store(fn, ptr) // copy address
+				// copy address
+				if sb != nil {
+					sb.store(loc, ptr)
+				} else {
+					loc.store(fn, ptr)
+				}
 				return
 			}
 		}
@@ -447,14 +478,35 @@
 				// Can't in-place initialize an interface value.
 				// Fall back to copying.
 			} else {
+				// x = T{...} or x := T{...}
 				addr := loc.address(fn)
-				b.compLit(fn, addr, e, isZero) // in place
-				emitDebugRef(fn, e, addr, true)
+				if sb != nil {
+					b.compLit(fn, addr, e, isZero, sb)
+				} else {
+					var sb storebuf
+					b.compLit(fn, addr, e, isZero, &sb)
+					sb.emit(fn)
+				}
+
+				// Subtle: emit debug ref for aggregate types only;
+				// slice and map are handled by store ops in compLit.
+				switch loc.typ().Underlying().(type) {
+				case *types.Struct, *types.Array:
+					emitDebugRef(fn, e, addr, true)
+				}
+
 				return
 			}
 		}
 	}
-	loc.store(fn, b.expr(fn, e)) // copy value
+
+	// simple case: just copy
+	rhs := b.expr(fn, e)
+	if sb != nil {
+		sb.store(loc, rhs)
+	} else {
+		loc.store(fn, rhs)
+	}
 }
 
 // expr lowers a single-result expression e to SSA form, emitting code
@@ -938,7 +990,7 @@
 				fn.addLocalForIdent(id)
 			}
 			lval := b.addr(fn, id, false) // non-escaping
-			b.exprInPlace(fn, lval, spec.Values[i], true)
+			b.assign(fn, lval, spec.Values[i], true, nil)
 		}
 
 	case len(spec.Values) == 0:
@@ -973,37 +1025,33 @@
 //
 func (b *builder) assignStmt(fn *Function, lhss, rhss []ast.Expr, isDef bool) {
 	// Side effects of all LHSs and RHSs must occur in left-to-right order.
-	var lvals []lvalue
-	for _, lhs := range lhss {
+	lvals := make([]lvalue, len(lhss))
+	isZero := make([]bool, len(lhss))
+	for i, lhs := range lhss {
 		var lval lvalue = blank{}
 		if !isBlankIdent(lhs) {
 			if isDef {
 				if obj := fn.Pkg.info.Defs[lhs.(*ast.Ident)]; obj != nil {
 					fn.addNamedLocal(obj)
+					isZero[i] = true
 				}
 			}
 			lval = b.addr(fn, lhs, false) // non-escaping
 		}
-		lvals = append(lvals, lval)
+		lvals[i] = lval
 	}
 	if len(lhss) == len(rhss) {
-		// e.g. x, y = f(), g()
-		if len(lhss) == 1 {
-			// x = type{...}
-			// Optimization: in-place construction
-			// of composite literals.
-			b.exprInPlace(fn, lvals[0], rhss[0], false)
-		} else {
-			// Parallel assignment.  All reads must occur
-			// before all updates, precluding exprInPlace.
-			var rvals []Value
-			for _, rval := range rhss {
-				rvals = append(rvals, b.expr(fn, rval))
-			}
-			for i, lval := range lvals {
-				lval.store(fn, rvals[i])
-			}
+		// Simple assignment:   x     = f()        (!isDef)
+		// Parallel assignment: x, y  = f(), g()   (!isDef)
+		// or short var decl:   x, y := f(), g()   (isDef)
+		//
+		// In all cases, the RHSs may refer to the LHSs,
+		// so we need a storebuf.
+		var sb storebuf
+		for i := range rhss {
+			b.assign(fn, lvals[i], rhss[i], isZero[i], &sb)
 		}
+		sb.emit(fn)
 	} else {
 		// e.g. x, y = pos()
 		tuple := b.exprN(fn, rhss[0])
@@ -1031,22 +1079,32 @@
 }
 
 // compLit emits to fn code to initialize a composite literal e at
-// address addr with type typ, typically allocated by Alloc.
+// address addr with type typ.
+//
 // Nested composite literals are recursively initialized in place
 // where possible. If isZero is true, compLit assumes that addr
 // holds the zero value for typ.
 //
+// Because the elements of a composite literal may refer to the
+// variables being updated, as in the second line below,
+//	x := T{a: 1}
+//	x = T{a: x.a}
+// all the reads must occur before all the writes.  Thus all stores to
+// loc are emitted to the storebuf sb for later execution.
+//
 // A CompositeLit may have pointer type only in the recursive (nested)
 // case when the type name is implicit.  e.g. in []*T{{}}, the inner
 // literal has type *T behaves like &T{}.
 // In that case, addr must hold a T, not a *T.
 //
-func (b *builder) compLit(fn *Function, addr Value, e *ast.CompositeLit, isZero bool) {
+func (b *builder) compLit(fn *Function, addr Value, e *ast.CompositeLit, isZero bool, sb *storebuf) {
 	typ := deref(fn.Pkg.typeOf(e))
 	switch t := typ.Underlying().(type) {
 	case *types.Struct:
 		if !isZero && len(e.Elts) != t.NumFields() {
-			emitMemClear(fn, addr, e.Lbrace)
+			// memclear
+			sb.store(&address{addr, e.Lbrace, nil},
+				zeroValue(fn, deref(addr.Type())))
 			isZero = true
 		}
 		for i, e := range e.Elts {
@@ -1071,7 +1129,7 @@
 			}
 			faddr.setType(types.NewPointer(sf.Type()))
 			fn.emit(faddr)
-			b.exprInPlace(fn, &address{addr: faddr, pos: pos, expr: e}, e, isZero)
+			b.assign(fn, &address{addr: faddr, pos: pos, expr: e}, e, isZero, sb)
 		}
 
 	case *types.Array, *types.Slice:
@@ -1083,21 +1141,23 @@
 			alloc := emitNew(fn, at, e.Lbrace)
 			alloc.Comment = "slicelit"
 			array = alloc
-			isZero = true
 		case *types.Array:
 			at = t
 			array = addr
-		}
 
-		if !isZero && int64(len(e.Elts)) != at.Len() {
-			emitMemClear(fn, array, e.Lbrace)
-			isZero = true
+			if !isZero && int64(len(e.Elts)) != at.Len() {
+				// memclear
+				sb.store(&address{array, e.Lbrace, nil},
+					zeroValue(fn, deref(array.Type())))
+			}
 		}
 
 		var idx *Const
 		for _, e := range e.Elts {
+			pos := e.Pos()
 			if kv, ok := e.(*ast.KeyValueExpr); ok {
 				idx = b.expr(fn, kv.Key).(*Const)
+				pos = kv.Colon
 				e = kv.Value
 			} else {
 				var idxval int64
@@ -1112,30 +1172,44 @@
 			}
 			iaddr.setType(types.NewPointer(at.Elem()))
 			fn.emit(iaddr)
-			b.exprInPlace(fn, &address{addr: iaddr, pos: e.Pos(), expr: e}, e, isZero)
+			if t != at { // slice
+				// backing array is unaliased => storebuf not needed.
+				b.assign(fn, &address{addr: iaddr, pos: pos, expr: e}, e, true, nil)
+			} else {
+				b.assign(fn, &address{addr: iaddr, pos: pos, expr: e}, e, true, sb)
+			}
 		}
+
 		if t != at { // slice
 			s := &Slice{X: array}
 			s.setPos(e.Lbrace)
 			s.setType(typ)
-			emitStore(fn, addr, fn.emit(s), e.Lbrace)
+			sb.store(&address{addr: addr, pos: e.Lbrace, expr: e}, fn.emit(s))
 		}
 
 	case *types.Map:
 		m := &MakeMap{Reserve: intConst(int64(len(e.Elts)))}
 		m.setPos(e.Lbrace)
 		m.setType(typ)
-		emitStore(fn, addr, fn.emit(m), e.Lbrace)
+		fn.emit(m)
 		for _, e := range e.Elts {
 			e := e.(*ast.KeyValueExpr)
-			loc := &element{
+			loc := element{
 				m:   m,
 				k:   emitConv(fn, b.expr(fn, e.Key), t.Key()),
 				t:   t.Elem(),
 				pos: e.Colon,
 			}
-			b.exprInPlace(fn, loc, e.Value, true)
+
+			// We call assign() only because it takes care
+			// of any &-operation required in the recursive
+			// case, e.g.,
+			// map[int]*struct{}{0: {}} implies &struct{}{}.
+			// In-place update is of course impossible,
+			// and no storebuf is needed.
+			b.assign(fn, &loc, e.Value, true, nil)
 		}
+		sb.store(&address{addr: addr, pos: e.Lbrace, expr: e}, m)
 
 	default:
 		panic("unexpected CompositeLit type: " + t.String())
@@ -2125,24 +2199,12 @@
 	if isBlankIdent(id) {
 		return // discard
 	}
-	var fn *Function
+	fn := pkg.values[pkg.info.Defs[id]].(*Function)
 	if decl.Recv == nil && id.Name == "init" {
-		pkg.ninit++
-		fn = &Function{
-			name:      fmt.Sprintf("init#%d", pkg.ninit),
-			Signature: new(types.Signature),
-			pos:       decl.Name.NamePos,
-			Pkg:       pkg,
-			Prog:      pkg.Prog,
-			syntax:    decl,
-		}
-
 		var v Call
 		v.Call.Value = fn
 		v.setType(types.NewTuple())
 		pkg.init.emit(&v)
-	} else {
-		fn = pkg.values[pkg.info.Defs[id]].(*Function)
 	}
 	b.buildFunction(fn)
 }
@@ -2150,8 +2212,13 @@
 // BuildAll calls Package.Build() for each package in prog.
 // Building occurs in parallel unless the BuildSerially mode flag was set.
 //
+// BuildAll is intended for whole-program analysis; a typical compiler
+// need only build a single package.
+//
 // BuildAll is idempotent and thread-safe.
 //
+// TODO(adonovan): rename to Build.
+//
 func (prog *Program) BuildAll() {
 	var wg sync.WaitGroup
 	for _, p := range prog.packages {
@@ -2183,7 +2250,7 @@
 	if p.info == nil {
 		return // synthetic package, e.g. "testmain"
 	}
-	if len(p.info.Files) == 0 {
+	if p.files == nil {
 		p.info = nil
 		return // package loaded from export data
 	}
@@ -2214,7 +2281,7 @@
 		emitStore(init, initguard, vTrue, token.NoPos)
 
 		// Call the init() function of each package we import.
-		for _, pkg := range p.info.Pkg.Imports() {
+		for _, pkg := range p.Object.Imports() {
 			prereq := p.Prog.packages[pkg]
 			if prereq == nil {
 				panic(fmt.Sprintf("Package(%q).Build(): unsatisfied import: Program.CreatePackage(%q) was not called", p.Object.Path(), pkg.Path()))
@@ -2243,7 +2310,7 @@
 			} else {
 				lval = blank{}
 			}
-			b.exprInPlace(init, lval, varinit.Rhs, true)
+			b.assign(init, lval, varinit.Rhs, true, nil)
 		} else {
 			// n:1 initialization: var x, y :=  f()
 			tuple := b.exprN(init, varinit.Rhs)
@@ -2259,7 +2326,7 @@
 	// Build all package-level functions, init functions
 	// and methods, including unreachable/blank ones.
 	// We build them in source order, but it's not significant.
-	for _, file := range p.info.Files {
+	for _, file := range p.files {
 		for _, decl := range file.Decls {
 			if decl, ok := decl.(*ast.FuncDecl); ok {
 				b.buildFuncDecl(p, decl)
diff --git a/go/src/golang.org/x/tools/go/ssa/builder_test.go b/go/src/golang.org/x/tools/go/ssa/builder_test.go
index cb30ef6..e7ac838 100644
--- a/go/src/golang.org/x/tools/go/ssa/builder_test.go
+++ b/go/src/golang.org/x/tools/go/ssa/builder_test.go
@@ -6,6 +6,9 @@
 
 import (
 	"bytes"
+	"go/ast"
+	"go/parser"
+	"go/token"
 	"reflect"
 	"sort"
 	"strings"
@@ -15,14 +18,16 @@
 	"golang.org/x/tools/go/ssa"
 	"golang.org/x/tools/go/ssa/ssautil"
 	"golang.org/x/tools/go/types"
+
+	_ "golang.org/x/tools/go/gcimporter"
 )
 
 func isEmpty(f *ssa.Function) bool { return f.Blocks == nil }
 
 // Tests that programs partially loaded from gc object files contain
 // functions with no code for the external portions, but are otherwise ok.
-func TestImportFromBinary(t *testing.T) {
-	test := `
+func TestBuildPackage(t *testing.T) {
+	input := `
 package main
 
 import (
@@ -42,24 +47,22 @@
 }
 `
 
-	// Create a single-file main package.
-	conf := loader.Config{ImportFromBinary: true}
-	f, err := conf.ParseFile("<input>", test)
-	if err != nil {
-		t.Error(err)
-		return
-	}
-	conf.CreateFromFiles("main", f)
-
-	iprog, err := conf.Load()
+	// Parse the file.
+	fset := token.NewFileSet()
+	f, err := parser.ParseFile(fset, "input.go", input, 0)
 	if err != nil {
 		t.Error(err)
 		return
 	}
 
-	prog := ssa.Create(iprog, ssa.SanityCheckFunctions)
-	mainPkg := prog.Package(iprog.Created[0].Pkg)
-	mainPkg.Build()
+	// Build an SSA program from the parsed file.
+	// Load its dependencies from gc binary export data.
+	mainPkg, _, err := ssautil.BuildPackage(new(types.Config), fset,
+		types.NewPackage("main", ""), []*ast.File{f}, ssa.SanityCheckFunctions)
+	if err != nil {
+		t.Error(err)
+		return
+	}
 
 	// The main package, its direct and indirect dependencies are loaded.
 	deps := []string{
@@ -69,6 +72,7 @@
 		"errors", "fmt", "os", "runtime",
 	}
 
+	prog := mainPkg.Prog
 	all := prog.AllPackages()
 	if len(all) <= len(deps) {
 		t.Errorf("unexpected set of loaded packages: %q", all)
@@ -211,25 +215,25 @@
 		},
 	}
 	for _, test := range tests {
-		// Create a single-file main package.
-		conf := loader.Config{ImportFromBinary: true}
-		f, err := conf.ParseFile("<input>", test.input)
+		// Parse the file.
+		fset := token.NewFileSet()
+		f, err := parser.ParseFile(fset, "input.go", test.input, 0)
 		if err != nil {
 			t.Errorf("test %q: %s", test.input[:15], err)
 			continue
 		}
-		conf.CreateFromFiles("p", f)
 
-		iprog, err := conf.Load()
+		// Create a single-file main package.
+		// Load dependencies from gc binary export data.
+		ssapkg, _, err := ssautil.BuildPackage(new(types.Config), fset,
+			types.NewPackage("p", ""), []*ast.File{f}, ssa.SanityCheckFunctions)
 		if err != nil {
-			t.Errorf("test 'package %s': Load: %s", f.Name.Name, err)
+			t.Errorf("test %q: %s", test.input[:15], err)
 			continue
 		}
-		prog := ssa.Create(iprog, ssa.SanityCheckFunctions)
-		prog.BuildAll()
 
 		var typstrs []string
-		for _, T := range prog.RuntimeTypes() {
+		for _, T := range ssapkg.Prog.RuntimeTypes() {
 			typstrs = append(typstrs, T.String())
 		}
 		sort.Strings(typstrs)
@@ -241,7 +245,7 @@
 	}
 }
 
-// Tests that synthesized init functions are correctly formed.
+// TestInit tests that synthesized init functions are correctly formed.
 // Bare init functions omit calls to dependent init functions and the use of
 // an init guard. They are useful in cases where the client uses a different
 // calling convention for init functions, or cases where it is easier for a
@@ -292,13 +296,13 @@
 		}
 		conf.CreateFromFiles(f.Name.Name, f)
 
-		iprog, err := conf.Load()
+		lprog, err := conf.Load()
 		if err != nil {
 			t.Errorf("test 'package %s': Load: %s", f.Name.Name, err)
 			continue
 		}
-		prog := ssa.Create(iprog, test.mode)
-		mainPkg := prog.Package(iprog.Created[0].Pkg)
+		prog := ssautil.CreateProgram(lprog, test.mode)
+		mainPkg := prog.Package(lprog.Created[0].Pkg)
 		prog.BuildAll()
 		initFunc := mainPkg.Func("init")
 		if initFunc == nil {
@@ -363,13 +367,13 @@
 	conf.CreateFromFiles(f.Name.Name, f)
 
 	// Load
-	iprog, err := conf.Load()
+	lprog, err := conf.Load()
 	if err != nil {
 		t.Fatalf("Load: %v", err)
 	}
 
 	// Create and build SSA
-	prog := ssa.Create(iprog, 0)
+	prog := ssautil.CreateProgram(lprog, 0)
 	prog.BuildAll()
 
 	// Enumerate reachable synthetic functions
diff --git a/go/src/golang.org/x/tools/go/ssa/create.go b/go/src/golang.org/x/tools/go/ssa/create.go
index c2985eb..88226ae 100644
--- a/go/src/golang.org/x/tools/go/ssa/create.go
+++ b/go/src/golang.org/x/tools/go/ssa/create.go
@@ -8,27 +8,23 @@
 // See builder.go for explanation.
 
 import (
+	"fmt"
 	"go/ast"
 	"go/token"
 	"os"
 	"sync"
 
-	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/types"
 	"golang.org/x/tools/go/types/typeutil"
 )
 
-// Create returns a new SSA Program.  An SSA Package is created for
-// each transitively error-free package of iprog.
-//
-// Code for bodies of functions is not built until Build() is called
-// on the result.
+// NewProgram returns a new SSA Program.
 //
 // mode controls diagnostics and checking during SSA construction.
 //
-func Create(iprog *loader.Program, mode BuilderMode) *Program {
+func NewProgram(fset *token.FileSet, mode BuilderMode) *Program {
 	prog := &Program{
-		Fset:     iprog.Fset,
+		Fset:     fset,
 		imported: make(map[string]*Package),
 		packages: make(map[*types.Package]*Package),
 		thunks:   make(map[selectionKey]*Function),
@@ -40,14 +36,6 @@
 	prog.methodSets.SetHasher(h)
 	prog.canon.SetHasher(h)
 
-	for _, info := range iprog.AllPackages {
-		// TODO(adonovan): relax this constraint if the
-		// program contains only "soft" errors.
-		if info.TransitivelyErrorFree {
-			prog.CreatePackage(info)
-		}
-	}
-
 	return prog
 }
 
@@ -88,10 +76,15 @@
 		pkg.Members[name] = g
 
 	case *types.Func:
+		sig := obj.Type().(*types.Signature)
+		if sig.Recv() == nil && name == "init" {
+			pkg.ninit++
+			name = fmt.Sprintf("init#%d", pkg.ninit)
+		}
 		fn := &Function{
 			name:      name,
 			object:    obj,
-			Signature: obj.Type().(*types.Signature),
+			Signature: sig,
 			syntax:    syntax,
 			pos:       obj.Pos(),
 			Pkg:       pkg,
@@ -102,7 +95,7 @@
 		}
 
 		pkg.values[obj] = fn
-		if fn.Signature.Recv() == nil {
+		if sig.Recv() == nil {
 			pkg.Members[name] = fn // package-level function
 		}
 
@@ -148,35 +141,30 @@
 
 	case *ast.FuncDecl:
 		id := decl.Name
-		if decl.Recv == nil && id.Name == "init" {
-			return // no object
-		}
 		if !isBlankIdent(id) {
 			memberFromObject(pkg, pkg.info.Defs[id], decl)
 		}
 	}
 }
 
-// CreatePackage constructs and returns an SSA Package from an
-// error-free package described by info, and populates its Members
-// mapping.
+// CreatePackage constructs and returns an SSA Package from the
+// specified type-checked, error-free file ASTs, and populates its
+// Members mapping.
 //
-// Repeated calls with the same info return the same Package.
+// importable determines whether this package should be returned by a
+// subsequent call to ImportedPackage(pkg.Path()).
 //
 // The real work of building SSA form for each function is not done
 // until a subsequent call to Package.Build().
 //
-func (prog *Program) CreatePackage(info *loader.PackageInfo) *Package {
-	if p := prog.packages[info.Pkg]; p != nil {
-		return p // already loaded
-	}
-
+func (prog *Program) CreatePackage(pkg *types.Package, files []*ast.File, info *types.Info, importable bool) *Package {
 	p := &Package{
 		Prog:    prog,
 		Members: make(map[string]Member),
 		values:  make(map[types.Object]Value),
-		Object:  info.Pkg,
-		info:    info, // transient (CREATE and BUILD phases)
+		Object:  pkg,
+		info:    info,  // transient (CREATE and BUILD phases)
+		files:   files, // transient (CREATE and BUILD phases)
 	}
 
 	// Add init() function.
@@ -191,9 +179,9 @@
 
 	// CREATE phase.
 	// Allocate all package members: vars, funcs, consts and types.
-	if len(info.Files) > 0 {
+	if len(files) > 0 {
 		// Go source package.
-		for _, file := range info.Files {
+		for _, file := range files {
 			for _, decl := range file.Decls {
 				membersFromDecl(p, decl)
 			}
@@ -235,8 +223,8 @@
 		printMu.Unlock()
 	}
 
-	if info.Importable {
-		prog.imported[info.Pkg.Path()] = p
+	if importable {
+		prog.imported[p.Object.Path()] = p
 	}
 	prog.packages[p.Object] = p
 
diff --git a/go/src/golang.org/x/tools/go/ssa/emit.go b/go/src/golang.org/x/tools/go/ssa/emit.go
index f1ba0f7..fa9646b 100644
--- a/go/src/golang.org/x/tools/go/ssa/emit.go
+++ b/go/src/golang.org/x/tools/go/ssa/emit.go
@@ -430,12 +430,6 @@
 	}
 }
 
-// emitMemClear emits to f code to zero the value pointed to by ptr.
-func emitMemClear(f *Function, ptr Value, pos token.Pos) {
-	// TODO(adonovan): define and use a 'memclr' intrinsic for aggregate types.
-	emitStore(f, ptr, zeroValue(f, deref(ptr.Type())), pos)
-}
-
 // createRecoverBlock emits to f a block of code to return after a
 // recovered panic, and sets f.Recover to it.
 //
diff --git a/go/src/golang.org/x/tools/go/ssa/example_test.go b/go/src/golang.org/x/tools/go/ssa/example_test.go
index 5253c88..3e095b8 100644
--- a/go/src/golang.org/x/tools/go/ssa/example_test.go
+++ b/go/src/golang.org/x/tools/go/ssa/example_test.go
@@ -8,28 +8,17 @@
 	"fmt"
 	"os"
 
+	"go/ast"
+	"go/parser"
+	"go/token"
+
 	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/ssa"
+	"golang.org/x/tools/go/ssa/ssautil"
+	"golang.org/x/tools/go/types"
 )
 
-// This program demonstrates how to run the SSA builder on a "Hello,
-// World!" program and shows the printed representation of packages,
-// functions and instructions.
-//
-// Within the function listing, the name of each BasicBlock such as
-// ".0.entry" is printed left-aligned, followed by the block's
-// Instructions.
-//
-// For each instruction that defines an SSA virtual register
-// (i.e. implements Value), the type of that value is shown in the
-// right column.
-//
-// Build and run the ssadump.go program if you want a standalone tool
-// with similar functionality. It is located at
-// golang.org/x/tools/cmd/ssadump.
-//
-func Example() {
-	const hello = `
+const hello = `
 package main
 
 import "fmt"
@@ -40,49 +29,64 @@
 	fmt.Println(message)
 }
 `
-	var conf loader.Config
 
-	// Parse the input file.
-	file, err := conf.ParseFile("hello.go", hello)
+// This program demonstrates how to run the SSA builder on a single
+// package of one or more already-parsed files.  Its dependencies are
+// loaded from compiler export data.  This is what you'd typically use
+// for a compiler; it does not depend on golang.org/x/tools/go/loader.
+//
+// It shows the printed representation of packages, functions, and
+// instructions.  Within the function listing, the name of each
+// BasicBlock such as ".0.entry" is printed left-aligned, followed by
+// the block's Instructions.
+//
+// For each instruction that defines an SSA virtual register
+// (i.e. implements Value), the type of that value is shown in the
+// right column.
+//
+// Build and run the ssadump.go program if you want a standalone tool
+// with similar functionality. It is located at
+// golang.org/x/tools/cmd/ssadump.
+//
+func ExampleBuildPackage() {
+	// Parse the source files.
+	fset := token.NewFileSet()
+	f, err := parser.ParseFile(fset, "hello.go", hello, parser.ParseComments)
 	if err != nil {
 		fmt.Print(err) // parse error
 		return
 	}
+	files := []*ast.File{f}
 
-	// Create single-file main package.
-	conf.CreateFromFiles("main", file)
+	// Create the type-checker's package.
+	pkg := types.NewPackage("hello", "")
 
-	// Load the main package and its dependencies.
-	iprog, err := conf.Load()
+	// Type-check the package, load dependencies.
+	// Create and build the SSA program.
+	hello, _, err := ssautil.BuildPackage(
+		new(types.Config), fset, pkg, files, ssa.SanityCheckFunctions)
 	if err != nil {
 		fmt.Print(err) // type error in some package
 		return
 	}
 
-	// Create SSA-form program representation.
-	prog := ssa.Create(iprog, ssa.SanityCheckFunctions)
-	mainPkg := prog.Package(iprog.Created[0].Pkg)
-
 	// Print out the package.
-	mainPkg.WriteTo(os.Stdout)
-
-	// Build SSA code for bodies of functions in mainPkg.
-	mainPkg.Build()
+	hello.WriteTo(os.Stdout)
 
 	// Print out the package-level functions.
-	mainPkg.Func("init").WriteTo(os.Stdout)
-	mainPkg.Func("main").WriteTo(os.Stdout)
+	hello.Func("init").WriteTo(os.Stdout)
+	hello.Func("main").WriteTo(os.Stdout)
 
 	// Output:
 	//
-	// package main:
+	// package hello:
 	//   func  init       func()
 	//   var   init$guard bool
 	//   func  main       func()
 	//   const message    message = "Hello, World!":untyped string
 	//
-	// # Name: main.init
-	// # Package: main
+	// # Name: hello.init
+	// # Package: hello
 	// # Synthetic: package initializer
 	// func init():
 	// 0:                                                                entry P:0 S:2
@@ -95,8 +99,8 @@
 	// 2:                                                            init.done P:2 S:0
 	// 	return
 	//
-	// # Name: main.main
-	// # Package: main
+	// # Name: hello.main
+	// # Package: hello
 	// # Location: hello.go:8:6
 	// func main():
 	// 0:                                                                entry P:0 S:0
@@ -108,3 +112,27 @@
 	// 	t4 = fmt.Println(t3...)                              (n int, err error)
 	// 	return
 }
+
+// This program shows how to load a main package (cmd/nm) and all its
+// dependencies from source, using the loader, and then build SSA code
+// for the entire program.  This is what you'd typically use for a
+// whole-program analysis.
+//
+func ExampleLoadProgram() {
+	// Load cmd/nm and its dependencies.
+	var conf loader.Config
+	conf.Import("cmd/nm")
+	lprog, err := conf.Load()
+	if err != nil {
+		fmt.Print(err) // type error in some package
+		return
+	}
+
+	// Create SSA-form program representation.
+	prog := ssautil.CreateProgram(lprog, ssa.SanityCheckFunctions)
+
+	// Build SSA code for the entire cmd/nm program.
+	prog.BuildAll()
+
+	// Output:
+}
diff --git a/go/src/golang.org/x/tools/go/ssa/func.go b/go/src/golang.org/x/tools/go/ssa/func.go
index fec527b..a9c0f75 100644
--- a/go/src/golang.org/x/tools/go/ssa/func.go
+++ b/go/src/golang.org/x/tools/go/ssa/func.go
@@ -522,11 +522,11 @@
 			buf.WriteString(n)
 			buf.WriteString(" ")
 		}
-		types.WriteType(buf, from, params[0].Type())
+		types.WriteType(buf, params[0].Type(), types.RelativeTo(from))
 		buf.WriteString(") ")
 	}
 	buf.WriteString(name)
-	types.WriteSignature(buf, from, sig)
+	types.WriteSignature(buf, sig, types.RelativeTo(from))
 }
 
 func (f *Function) pkgobj() *types.Package {
diff --git a/go/src/golang.org/x/tools/go/ssa/interp/external.go b/go/src/golang.org/x/tools/go/ssa/interp/external.go
index fc43366..eb0757f 100644
--- a/go/src/golang.org/x/tools/go/ssa/interp/external.go
+++ b/go/src/golang.org/x/tools/go/ssa/interp/external.go
@@ -59,8 +59,10 @@
 		"(reflect.rtype).Bits":             ext۰reflect۰rtype۰Bits,
 		"(reflect.rtype).Elem":             ext۰reflect۰rtype۰Elem,
 		"(reflect.rtype).Field":            ext۰reflect۰rtype۰Field,
+		"(reflect.rtype).In":               ext۰reflect۰rtype۰In,
 		"(reflect.rtype).Kind":             ext۰reflect۰rtype۰Kind,
 		"(reflect.rtype).NumField":         ext۰reflect۰rtype۰NumField,
+		"(reflect.rtype).NumIn":            ext۰reflect۰rtype۰NumIn,
 		"(reflect.rtype).NumMethod":        ext۰reflect۰rtype۰NumMethod,
 		"(reflect.rtype).NumOut":           ext۰reflect۰rtype۰NumOut,
 		"(reflect.rtype).Out":              ext۰reflect۰rtype۰Out,
@@ -79,10 +81,12 @@
 		"math.Log":                         ext۰math۰Log,
 		"math.Min":                         ext۰math۰Min,
 		"os.runtime_args":                  ext۰os۰runtime_args,
+		"os.runtime_beforeExit":            ext۰os۰runtime_beforeExit,
 		"reflect.New":                      ext۰reflect۰New,
 		"reflect.SliceOf":                  ext۰reflect۰SliceOf,
 		"reflect.TypeOf":                   ext۰reflect۰TypeOf,
 		"reflect.ValueOf":                  ext۰reflect۰ValueOf,
+		"reflect.Zero":                     ext۰reflect۰Zero,
 		"reflect.init":                     ext۰reflect۰Init,
 		"reflect.valueInterface":           ext۰reflect۰valueInterface,
 		"runtime.Breakpoint":               ext۰runtime۰Breakpoint,
@@ -228,6 +232,10 @@
 	return fr.i.osArgs
 }
 
+func ext۰os۰runtime_beforeExit(fr *frame, args []value) value {
+	return nil
+}
+
 func ext۰runtime۰Breakpoint(fr *frame, args []value) value {
 	runtime.Breakpoint()
 	return nil
@@ -328,7 +336,9 @@
 }
 
 func ext۰runtime۰GOMAXPROCS(fr *frame, args []value) value {
-	return runtime.GOMAXPROCS(args[0].(int))
+	// Ignore args[0]; don't let the interpreted program
+	// set the interpreter's GOMAXPROCS!
+	return runtime.GOMAXPROCS(0)
 }
 
 func ext۰runtime۰Goexit(fr *frame, args []value) value {
diff --git a/go/src/golang.org/x/tools/go/ssa/interp/interp.go b/go/src/golang.org/x/tools/go/ssa/interp/interp.go
index 825d2d0..afe4939 100644
--- a/go/src/golang.org/x/tools/go/ssa/interp/interp.go
+++ b/go/src/golang.org/x/tools/go/ssa/interp/interp.go
@@ -239,10 +239,10 @@
 		panic(targetPanic{fr.get(instr.X)})
 
 	case *ssa.Send:
-		fr.get(instr.Chan).(chan value) <- copyVal(fr.get(instr.X))
+		fr.get(instr.Chan).(chan value) <- fr.get(instr.X)
 
 	case *ssa.Store:
-		*fr.get(instr.Addr).(*value) = copyVal(fr.get(instr.Val))
+		store(deref(instr.Addr.Type()), fr.get(instr.Addr).(*value), fr.get(instr.Val))
 
 	case *ssa.If:
 		succ := 1
@@ -307,10 +307,11 @@
 
 	case *ssa.FieldAddr:
 		x := fr.get(instr.X)
+		// FIXME wrong!  &global.f must not change if we do *global = zero!
 		fr.env[instr] = &(*x.(*value)).(structure)[instr.Field]
 
 	case *ssa.Field:
-		fr.env[instr] = copyVal(fr.get(instr.X).(structure)[instr.Field])
+		fr.env[instr] = fr.get(instr.X).(structure)[instr.Field]
 
 	case *ssa.IndexAddr:
 		x := fr.get(instr.X)
@@ -325,7 +326,7 @@
 		}
 
 	case *ssa.Index:
-		fr.env[instr] = copyVal(fr.get(instr.X).(array)[asInt(fr.get(instr.Index))])
+		fr.env[instr] = fr.get(instr.X).(array)[asInt(fr.get(instr.Index))]
 
 	case *ssa.Lookup:
 		fr.env[instr] = lookup(instr, fr.get(instr.X), fr.get(instr.Index))
@@ -436,7 +437,7 @@
 		} else {
 			fn = f
 		}
-		args = append(args, copyVal(recv.v))
+		args = append(args, recv.v)
 	}
 	for _, arg := range call.Args {
 		args = append(args, fr.get(arg))
diff --git a/go/src/golang.org/x/tools/go/ssa/interp/interp_test.go b/go/src/golang.org/x/tools/go/ssa/interp/interp_test.go
index 569d9ea..9c9f891 100644
--- a/go/src/golang.org/x/tools/go/ssa/interp/interp_test.go
+++ b/go/src/golang.org/x/tools/go/ssa/interp/interp_test.go
@@ -19,6 +19,7 @@
 	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/ssa"
 	"golang.org/x/tools/go/ssa/interp"
+	"golang.org/x/tools/go/ssa/ssautil"
 	"golang.org/x/tools/go/types"
 )
 
@@ -154,12 +155,9 @@
 // These are files and packages in $GOROOT/src/.
 var gorootSrcTests = []string{
 	"encoding/ascii85",
-	"encoding/csv",
 	"encoding/hex",
-	"encoding/pem",
-	"hash/crc32",
-	// "testing", // TODO(adonovan): implement runtime.Goexit correctly
-	"text/scanner",
+	// "encoding/pem", // TODO(adonovan): implement (reflect.Value).SetString
+	// "testing",      // TODO(adonovan): implement runtime.Goexit correctly
 	"unicode",
 
 	// Too slow:
@@ -167,10 +165,13 @@
 	// "hash/adler32",
 
 	// TODO(adonovan): packages with Examples require os.Pipe (unimplemented):
+	// "hash/crc32",
 	// "unicode/utf8",
 	// "log",
 	// "path",
 	// "flag",
+	// "encoding/csv"
+	// "text/scanner"
 }
 
 type successPredicate func(exitcode int, output string) error
@@ -217,7 +218,7 @@
 		return false
 	}
 
-	prog := ssa.Create(iprog, ssa.SanityCheckFunctions)
+	prog := ssautil.CreateProgram(iprog, ssa.SanityCheckFunctions)
 	prog.BuildAll()
 
 	var mainPkg *ssa.Package
@@ -345,7 +346,7 @@
 	if err != nil {
 		t.Fatalf("CreatePackages failed: %s", err)
 	}
-	prog := ssa.Create(iprog, ssa.SanityCheckFunctions)
+	prog := ssautil.CreateProgram(iprog, ssa.SanityCheckFunctions)
 	mainPkg := prog.Package(iprog.Created[0].Pkg)
 	if mainPkg.Func("main") != nil {
 		t.Fatalf("unexpected main function")
diff --git a/go/src/golang.org/x/tools/go/ssa/interp/ops.go b/go/src/golang.org/x/tools/go/ssa/interp/ops.go
index fe7d679..de89904 100644
--- a/go/src/golang.org/x/tools/go/ssa/interp/ops.go
+++ b/go/src/golang.org/x/tools/go/ssa/interp/ops.go
@@ -286,9 +286,7 @@
 			v = x.lookup(idx.(hashable))
 			ok = v != nil
 		}
-		if ok {
-			v = copyVal(v)
-		} else {
+		if !ok {
 			v = zero(instr.X.Type().Underlying().(*types.Map).Elem())
 		}
 		if instr.CommaOk {
@@ -844,7 +842,7 @@
 			return -x
 		}
 	case token.MUL:
-		return copyVal(*x.(*value)) // load
+		return load(deref(instr.X.Type()), x.(*value))
 	case token.NOT:
 		return !x.(bool)
 	case token.XOR:
@@ -891,7 +889,7 @@
 		err = checkInterface(i, idst, itf)
 
 	} else if types.Identical(itf.t, instr.AssertedType) {
-		v = copyVal(itf.v) // extract value
+		v = itf.v // extract value
 
 	} else {
 		err = fmt.Sprintf("interface conversion: interface is %s, not %s", itf.t, instr.AssertedType)
diff --git a/go/src/golang.org/x/tools/go/ssa/interp/reflect.go b/go/src/golang.org/x/tools/go/ssa/interp/reflect.go
index fd190df..468771b 100644
--- a/go/src/golang.org/x/tools/go/ssa/interp/reflect.go
+++ b/go/src/golang.org/x/tools/go/ssa/interp/reflect.go
@@ -31,8 +31,7 @@
 var reflectTypesPackage = types.NewPackage("reflect", "reflect")
 
 // rtype is the concrete type the interpreter uses to implement the
-// reflect.Type interface.  Since its type is opaque to the target
-// language, we use a types.Basic.
+// reflect.Type interface.
 //
 // type rtype <opaque>
 var rtypeType = makeNamedType("rtype", &opaqueType{nil, "rtype"})
@@ -107,6 +106,12 @@
 	}
 }
 
+func ext۰reflect۰rtype۰In(fr *frame, args []value) value {
+	// Signature: func (t reflect.rtype, i int) int
+	i := args[1].(int)
+	return makeReflectType(rtype{args[0].(rtype).t.(*types.Signature).Params().At(i).Type()})
+}
+
 func ext۰reflect۰rtype۰Kind(fr *frame, args []value) value {
 	// Signature: func (t reflect.rtype) uint
 	return uint(reflectKind(args[0].(rtype).t))
@@ -117,6 +122,11 @@
 	return args[0].(rtype).t.Underlying().(*types.Struct).NumFields()
 }
 
+func ext۰reflect۰rtype۰NumIn(fr *frame, args []value) value {
+	// Signature: func (t reflect.rtype) int
+	return args[0].(rtype).t.(*types.Signature).Params().Len()
+}
+
 func ext۰reflect۰rtype۰NumMethod(fr *frame, args []value) value {
 	// Signature: func (t reflect.rtype) int
 	return fr.i.prog.MethodSets.MethodSet(args[0].(rtype).t).Len()
@@ -166,6 +176,12 @@
 	return makeReflectValue(itf.t, itf.v)
 }
 
+func ext۰reflect۰Zero(fr *frame, args []value) value {
+	// Signature: func (t reflect.Type) reflect.Value
+	t := args[0].(iface).v.(rtype).t
+	return makeReflectValue(t, zero(t))
+}
+
 func reflectKind(t types.Type) reflect.Kind {
 	switch t := t.(type) {
 	case *types.Named:
@@ -495,7 +511,7 @@
 	// that is needed is the "pointerness" of Recv.Type, and for
 	// now, we'll set it to always be false since we're only
 	// concerned with rtype.  Encapsulate this better.
-	sig := types.NewSignature(nil, types.NewVar(token.NoPos, nil, "recv", recvType), nil, nil, false)
+	sig := types.NewSignature(types.NewVar(token.NoPos, nil, "recv", recvType), nil, nil, false)
 	fn := pkg.Prog.NewFunction(name, sig, "fake reflect method")
 	fn.Pkg = pkg
 	return fn
@@ -508,12 +524,44 @@
 		Members: make(map[string]ssa.Member),
 	}
 
+	// Clobber the type-checker's notion of reflect.Value's
+	// underlying type so that it more closely matches the fake one
+	// (at least in the number of fields---we lie about the type of
+	// the rtype field).
+	//
+	// We must ensure that calls to (ssa.Value).Type() return the
+	// fake type so that correct "shape" is used when allocating
+	// variables, making zero values, loading, and storing.
+	//
+	// TODO(adonovan): obviously this is a hack.  We need a cleaner
+	// way to fake the reflect package (almost---DeepEqual is fine).
+	// One approach would be not to even load its source code, but
+	// provide fake source files.  This would guarantee that no bad
+	// information leaks into other packages.
+	if r := i.prog.ImportedPackage("reflect"); r != nil {
+		rV := r.Object.Scope().Lookup("Value").Type().(*types.Named)
+
+		// delete bodies of the old methods
+		mset := i.prog.MethodSets.MethodSet(rV)
+		for j := 0; j < mset.Len(); j++ {
+			i.prog.Method(mset.At(j)).Blocks = nil
+		}
+
+		tEface := types.NewInterface(nil, nil).Complete()
+		rV.SetUnderlying(types.NewStruct([]*types.Var{
+			types.NewField(token.NoPos, r.Object, "t", tEface, false), // a lie
+			types.NewField(token.NoPos, r.Object, "v", tEface, false),
+		}, nil))
+	}
+
 	i.rtypeMethods = methodSet{
 		"Bits":      newMethod(i.reflectPackage, rtypeType, "Bits"),
 		"Elem":      newMethod(i.reflectPackage, rtypeType, "Elem"),
 		"Field":     newMethod(i.reflectPackage, rtypeType, "Field"),
+		"In":        newMethod(i.reflectPackage, rtypeType, "In"),
 		"Kind":      newMethod(i.reflectPackage, rtypeType, "Kind"),
 		"NumField":  newMethod(i.reflectPackage, rtypeType, "NumField"),
+		"NumIn":     newMethod(i.reflectPackage, rtypeType, "NumIn"),
 		"NumMethod": newMethod(i.reflectPackage, rtypeType, "NumMethod"),
 		"NumOut":    newMethod(i.reflectPackage, rtypeType, "NumOut"),
 		"Out":       newMethod(i.reflectPackage, rtypeType, "Out"),
diff --git a/go/src/golang.org/x/tools/go/ssa/interp/testdata/complit.go b/go/src/golang.org/x/tools/go/ssa/interp/testdata/complit.go
index c44fc00..02f9916 100644
--- a/go/src/golang.org/x/tools/go/ssa/interp/testdata/complit.go
+++ b/go/src/golang.org/x/tools/go/ssa/interp/testdata/complit.go
@@ -80,5 +80,89 @@
 	}
 }
 
+// Regression test for https://github.com/golang/go/issues/10127:
+// composite literal clobbers destination before reading from it.
+func init() {
+	// map
+	{
+		type M map[string]int
+		m := M{"x": 1, "y": 2}
+		m = M{"x": m["y"], "y": m["x"]}
+		if m["x"] != 2 || m["y"] != 1 {
+			panic(fmt.Sprint(m))
+		}
+
+		n := M{"x": 3}
+		m, n = M{"x": n["x"]}, M{"x": m["x"]} // parallel assignment
+		if got := fmt.Sprint(m["x"], n["x"]); got != "3 2" {
+			panic(got)
+		}
+	}
+
+	// struct
+	{
+		type T struct{ x, y, z int }
+		t := T{x: 1, y: 2, z: 3}
+
+		t = T{x: t.y, y: t.z, z: t.x} // all fields
+		if got := fmt.Sprint(t); got != "{2 3 1}" {
+			panic(got)
+		}
+
+		t = T{x: t.y, y: t.z + 3} // not all fields
+		if got := fmt.Sprint(t); got != "{3 4 0}" {
+			panic(got)
+		}
+
+		u := T{x: 5, y: 6, z: 7}
+		t, u = T{x: u.x}, T{x: t.x} // parallel assignment
+		if got := fmt.Sprint(t, u); got != "{5 0 0} {3 0 0}" {
+			panic(got)
+		}
+	}
+
+	// array
+	{
+		a := [3]int{0: 1, 1: 2, 2: 3}
+
+		a = [3]int{0: a[1], 1: a[2], 2: a[0]} //  all elements
+		if got := fmt.Sprint(a); got != "[2 3 1]" {
+			panic(got)
+		}
+
+		a = [3]int{0: a[1], 1: a[2] + 3} //  not all elements
+		if got := fmt.Sprint(a); got != "[3 4 0]" {
+			panic(got)
+		}
+
+		b := [3]int{0: 5, 1: 6, 2: 7}
+		a, b = [3]int{0: b[0]}, [3]int{0: a[0]} // parallel assignment
+		if got := fmt.Sprint(a, b); got != "[5 0 0] [3 0 0]" {
+			panic(got)
+		}
+	}
+
+	// slice
+	{
+		s := []int{0: 1, 1: 2, 2: 3}
+
+		s = []int{0: s[1], 1: s[2], 2: s[0]} //  all elements
+		if got := fmt.Sprint(s); got != "[2 3 1]" {
+			panic(got)
+		}
+
+		s = []int{0: s[1], 1: s[2] + 3} //  not all elements
+		if got := fmt.Sprint(s); got != "[3 4]" {
+			panic(got)
+		}
+
+		t := []int{0: 5, 1: 6, 2: 7}
+		s, t = []int{0: t[0]}, []int{0: s[0]} // parallel assignment
+		if got := fmt.Sprint(s, t); got != "[5] [3]" {
+			panic(got)
+		}
+	}
+}
+
 func main() {
 }
diff --git a/go/src/golang.org/x/tools/go/ssa/interp/testdata/coverage.go b/go/src/golang.org/x/tools/go/ssa/interp/testdata/coverage.go
index dc094da..0bc0586 100644
--- a/go/src/golang.org/x/tools/go/ssa/interp/testdata/coverage.go
+++ b/go/src/golang.org/x/tools/go/ssa/interp/testdata/coverage.go
@@ -91,8 +91,8 @@
 	}
 
 	pa1 := &[2]string{"foo", "bar"}
-	pa2 := pa1        // creates an alias
-	(*pa2)[0] = "wiz" // * required to workaround typechecker bug
+	pa2 := pa1 // creates an alias
+	pa2[0] = "wiz"
 	if x := fmt.Sprint(*pa1, *pa2); x != "[wiz bar] [wiz bar]" {
 		panic(x)
 	}
@@ -515,3 +515,20 @@
 	i.f()
 	panic("unreachable")
 }
+
+// Regression test for a subtle bug in which copying values would causes
+// subcomponents of aggregate variables to change address, breaking
+// aliases.
+func init() {
+	type T struct{ f int }
+	var x T
+	p := &x.f
+	x = T{}
+	*p = 1
+	if x.f != 1 {
+		panic("lost store")
+	}
+	if p != &x.f {
+		panic("unstable address")
+	}
+}
diff --git a/go/src/golang.org/x/tools/go/ssa/interp/value.go b/go/src/golang.org/x/tools/go/ssa/interp/value.go
index a8d27ee..2ab0c04 100644
--- a/go/src/golang.org/x/tools/go/ssa/interp/value.go
+++ b/go/src/golang.org/x/tools/go/ssa/interp/value.go
@@ -310,43 +310,53 @@
 	panic(fmt.Sprintf("%T is unhashable", x))
 }
 
-// copyVal returns a copy of value v.
-// TODO(adonovan): add tests of aliasing and mutation.
-func copyVal(v value) value {
-	if v == nil {
-		panic("copyVal(nil)")
-	}
-	switch v := v.(type) {
-	case bool, int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uintptr, float32, float64, complex64, complex128, string, unsafe.Pointer:
-		return v
-	case map[value]value:
-		return v
-	case *hashmap:
-		return v
-	case chan value:
-		return v
-	case *value:
-		return v
-	case *ssa.Function, *ssa.Builtin, *closure:
-		return v
-	case iface:
-		return v
-	case []value:
-		return v
-	case structure:
+// reflect.Value struct values don't have a fixed shape, since the
+// payload can be a scalar or an aggregate depending on the instance.
+// So store (and load) can't simply use recursion over the shape of the
+// rhs value, or the lhs, to copy the value; we need the static type
+// information.  (We can't make reflect.Value a new basic data type
+// because its "structness" is exposed to Go programs.)
+
+// load returns the value of type T in *addr.
+func load(T types.Type, addr *value) value {
+	switch T := T.Underlying().(type) {
+	case *types.Struct:
+		v := (*addr).(structure)
 		a := make(structure, len(v))
-		copy(a, v)
+		for i := range a {
+			a[i] = load(T.Field(i).Type(), &v[i])
+		}
 		return a
-	case array:
+	case *types.Array:
+		v := (*addr).(array)
 		a := make(array, len(v))
-		copy(a, v)
+		for i := range a {
+			a[i] = load(T.Elem(), &v[i])
+		}
 		return a
-	case tuple:
-		break
-	case rtype:
-		return v
+	default:
+		return *addr
 	}
-	panic(fmt.Sprintf("cannot copy %T", v))
+}
+
+// store stores value v of type T into *addr.
+func store(T types.Type, addr *value, v value) {
+	switch T := T.Underlying().(type) {
+	case *types.Struct:
+		lhs := (*addr).(structure)
+		rhs := v.(structure)
+		for i := range lhs {
+			store(T.Field(i).Type(), &lhs[i], rhs[i])
+		}
+	case *types.Array:
+		lhs := (*addr).(array)
+		rhs := v.(array)
+		for i := range lhs {
+			store(T.Elem(), &lhs[i], rhs[i])
+		}
+	default:
+		*addr = v
+	}
 }
 
 // Prints in the style of built-in println.
diff --git a/go/src/golang.org/x/tools/go/ssa/lvalue.go b/go/src/golang.org/x/tools/go/ssa/lvalue.go
index 8342645..4284b1c 100644
--- a/go/src/golang.org/x/tools/go/ssa/lvalue.go
+++ b/go/src/golang.org/x/tools/go/ssa/lvalue.go
@@ -29,7 +29,7 @@
 type address struct {
 	addr Value
 	pos  token.Pos // source position
-	expr ast.Expr  // source syntax [debug mode]
+	expr ast.Expr  // source syntax of the value (not address) [debug mode]
 }
 
 func (a *address) load(fn *Function) Value {
diff --git a/go/src/golang.org/x/tools/go/ssa/print.go b/go/src/golang.org/x/tools/go/ssa/print.go
index 9fda3a4..88c31f6 100644
--- a/go/src/golang.org/x/tools/go/ssa/print.go
+++ b/go/src/golang.org/x/tools/go/ssa/print.go
@@ -39,7 +39,7 @@
 }
 
 func relType(t types.Type, from *types.Package) string {
-	return types.TypeString(from, t)
+	return types.TypeString(t, types.RelativeTo(from))
 }
 
 func relString(m Member, from *types.Package) string {
@@ -407,7 +407,7 @@
 			fmt.Fprintf(buf, "  type  %-*s %s\n",
 				maxname, name, relType(mem.Type().Underlying(), from))
 			for _, meth := range typeutil.IntuitiveMethodSet(mem.Type(), &p.Prog.MethodSets) {
-				fmt.Fprintf(buf, "    %s\n", types.SelectionString(from, meth))
+				fmt.Fprintf(buf, "    %s\n", types.SelectionString(meth, types.RelativeTo(from)))
 			}
 
 		case *Global:
diff --git a/go/src/golang.org/x/tools/go/ssa/sanity.go b/go/src/golang.org/x/tools/go/ssa/sanity.go
index 3fd6747..b0593d0 100644
--- a/go/src/golang.org/x/tools/go/ssa/sanity.go
+++ b/go/src/golang.org/x/tools/go/ssa/sanity.go
@@ -505,8 +505,13 @@
 			continue // not all members have typechecker objects
 		}
 		if obj.Name() != name {
-			panic(fmt.Sprintf("%s: %T.Object().Name() = %s, want %s",
-				pkg.Object.Path(), mem, obj.Name(), name))
+			if obj.Name() == "init" && strings.HasPrefix(mem.Name(), "init#") {
+				// Ok.  The name of a declared init function varies between
+				// its types.Func ("init") and its ssa.Function ("init#%d").
+			} else {
+				panic(fmt.Sprintf("%s: %T.Object().Name() = %s, want %s",
+					pkg.Object.Path(), mem, obj.Name(), name))
+			}
 		}
 		if obj.Pos() != mem.Pos() {
 			panic(fmt.Sprintf("%s Pos=%d obj.Pos=%d", mem, mem.Pos(), obj.Pos()))
diff --git a/go/src/golang.org/x/tools/go/ssa/source.go b/go/src/golang.org/x/tools/go/ssa/source.go
index 02b0260..84e6f1d 100644
--- a/go/src/golang.org/x/tools/go/ssa/source.go
+++ b/go/src/golang.org/x/tools/go/ssa/source.go
@@ -140,11 +140,11 @@
 //    - f was not built with debug information; or
 //    - e is a constant expression.  (For efficiency, no debug
 //      information is stored for constants. Use
-//      loader.PackageInfo.ValueOf(e) instead.)
+//      go/types.Info.Types[e].Value instead.)
 //    - e is a reference to nil or a built-in function.
 //    - the value was optimised away.
 //
-// If e is an addressable expression used an an lvalue context,
+// If e is an addressable expression used in an lvalue context,
 // value is the address denoted by e, and isAddr is true.
 //
 // The types of e (or &e, if isAddr) and the result are equal
diff --git a/go/src/golang.org/x/tools/go/ssa/source_test.go b/go/src/golang.org/x/tools/go/ssa/source_test.go
index 68b5401..95df882 100644
--- a/go/src/golang.org/x/tools/go/ssa/source_test.go
+++ b/go/src/golang.org/x/tools/go/ssa/source_test.go
@@ -20,6 +20,7 @@
 	"golang.org/x/tools/go/exact"
 	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/ssa"
+	"golang.org/x/tools/go/ssa/ssautil"
 	"golang.org/x/tools/go/types"
 )
 
@@ -54,7 +55,7 @@
 		return
 	}
 
-	prog := ssa.Create(iprog, 0 /*|ssa.PrintFunctions*/)
+	prog := ssautil.CreateProgram(iprog, 0 /*|ssa.PrintFunctions*/)
 	mainInfo := iprog.Created[0]
 	mainPkg := prog.Package(mainInfo.Pkg)
 	mainPkg.SetDebugMode(true)
@@ -204,7 +205,7 @@
 
 	mainInfo := iprog.Created[0]
 
-	prog := ssa.Create(iprog, 0)
+	prog := ssautil.CreateProgram(iprog, 0)
 	mainPkg := prog.Package(mainInfo.Pkg)
 	mainPkg.SetDebugMode(true)
 	mainPkg.Build()
@@ -274,3 +275,110 @@
 		}
 	}
 }
+
+// findInterval parses input and returns the [start, end) positions of
+// the first occurrence of substr in input.  f==nil indicates failure;
+// an error has already been reported in that case.
+//
+func findInterval(t *testing.T, fset *token.FileSet, input, substr string) (f *ast.File, start, end token.Pos) {
+	f, err := parser.ParseFile(fset, "<input>", input, 0)
+	if err != nil {
+		t.Errorf("parse error: %s", err)
+		return
+	}
+
+	i := strings.Index(input, substr)
+	if i < 0 {
+		t.Errorf("%q is not a substring of input", substr)
+		f = nil
+		return
+	}
+
+	filePos := fset.File(f.Package)
+	return f, filePos.Pos(i), filePos.Pos(i + len(substr))
+}
+
+func TestEnclosingFunction(t *testing.T) {
+	tests := []struct {
+		input  string // the input file
+		substr string // first occurrence of this string denotes interval
+		fn     string // name of expected containing function
+	}{
+		// We use distinctive numbers as syntactic landmarks.
+
+		// Ordinary function:
+		{`package main
+		  func f() { println(1003) }`,
+			"100", "main.f"},
+		// Methods:
+		{`package main
+                  type T int
+		  func (t T) f() { println(200) }`,
+			"200", "(main.T).f"},
+		// Function literal:
+		{`package main
+		  func f() { println(func() { print(300) }) }`,
+			"300", "main.f$1"},
+		// Doubly nested
+		{`package main
+		  func f() { println(func() { print(func() { print(350) })})}`,
+			"350", "main.f$1$1"},
+		// Implicit init for package-level var initializer.
+		{"package main; var a = 400", "400", "main.init"},
+		// No code for constants:
+		{"package main; const a = 500", "500", "(none)"},
+		// Explicit init()
+		{"package main; func init() { println(600) }", "600", "main.init#1"},
+		// Multiple explicit init functions:
+		{`package main
+		  func init() { println("foo") }
+		  func init() { println(800) }`,
+			"800", "main.init#2"},
+		// init() containing FuncLit.
+		{`package main
+		  func init() { println(func(){print(900)}) }`,
+			"900", "main.init#1$1"},
+	}
+	for _, test := range tests {
+		conf := loader.Config{Fset: token.NewFileSet()}
+		f, start, end := findInterval(t, conf.Fset, test.input, test.substr)
+		if f == nil {
+			continue
+		}
+		path, exact := astutil.PathEnclosingInterval(f, start, end)
+		if !exact {
+			t.Errorf("EnclosingFunction(%q) not exact", test.substr)
+			continue
+		}
+
+		conf.CreateFromFiles("main", f)
+
+		iprog, err := conf.Load()
+		if err != nil {
+			t.Error(err)
+			continue
+		}
+		prog := ssautil.CreateProgram(iprog, 0)
+		pkg := prog.Package(iprog.Created[0].Pkg)
+		pkg.Build()
+
+		name := "(none)"
+		fn := ssa.EnclosingFunction(pkg, path)
+		if fn != nil {
+			name = fn.String()
+		}
+
+		if name != test.fn {
+			t.Errorf("EnclosingFunction(%q in %q) got %s, want %s",
+				test.substr, test.input, name, test.fn)
+			continue
+		}
+
+		// While we're here: test HasEnclosingFunction.
+		if has := ssa.HasEnclosingFunction(pkg, path); has != (fn != nil) {
+			t.Errorf("HasEnclosingFunction(%q in %q) got %v, want %v",
+				test.substr, test.input, has, fn != nil)
+			continue
+		}
+	}
+}
diff --git a/go/src/golang.org/x/tools/go/ssa/ssa.go b/go/src/golang.org/x/tools/go/ssa/ssa.go
index afffb3f..f4c64bb 100644
--- a/go/src/golang.org/x/tools/go/ssa/ssa.go
+++ b/go/src/golang.org/x/tools/go/ssa/ssa.go
@@ -14,7 +14,6 @@
 	"sync"
 
 	"golang.org/x/tools/go/exact"
-	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/types"
 	"golang.org/x/tools/go/types/typeutil"
 )
@@ -25,7 +24,7 @@
 	imported   map[string]*Package         // all importable Packages, keyed by import path
 	packages   map[*types.Package]*Package // all loaded Packages, keyed by object
 	mode       BuilderMode                 // set of mode bits for SSA construction
-	MethodSets types.MethodSetCache        // cache of type-checker's method-sets
+	MethodSets typeutil.MethodSetCache     // cache of type-checker's method-sets
 
 	methodsMu    sync.Mutex                 // guards the following maps:
 	methodSets   typeutil.Map               // maps type to its concrete methodSet
@@ -40,19 +39,24 @@
 // declares.  These may be accessed directly via Members, or via the
 // type-specific accessor methods Func, Type, Var and Const.
 //
+// Members also contains entries for "init" (the synthetic package
+// initializer) and "init#%d", the nth declared init function,
+// and unspecified other things too.
+//
 type Package struct {
 	Prog    *Program               // the owning program
 	Object  *types.Package         // the type checker's package object for this package
-	Members map[string]Member      // all package members keyed by name
+	Members map[string]Member      // all package members keyed by name (incl. init and init#%d)
 	values  map[types.Object]Value // package members (incl. types and methods), keyed by object
 	init    *Function              // Func("init"); the package's init function
 	debug   bool                   // include full debug info in this package
 
 	// The following fields are set transiently, then cleared
 	// after building.
-	started int32               // atomically tested and set at start of build phase
-	ninit   int32               // number of init functions
-	info    *loader.PackageInfo // package ASTs and type information
+	started int32       // atomically tested and set at start of build phase
+	ninit   int32       // number of init functions
+	info    *types.Info // package type information
+	files   []*ast.File // package ASTs
 }
 
 // A Member is a member of a Go package, implemented by *NamedConst,
@@ -281,6 +285,10 @@
 // If the function is a method (Signature.Recv() != nil) then the first
 // element of Params is the receiver parameter.
 //
+// A Go package may declare many functions called "init".
+// For each one, Object().Name() returns "init" but Name() returns
+// "init#1", etc, in declaration order.
+//
 // Pos() returns the declaring ast.FuncLit.Type.Func or the position
 // of the ast.FuncDecl.Name, if the function was explicit in the
 // source.  Synthetic wrappers, for which Synthetic != "", may share
diff --git a/go/src/golang.org/x/tools/go/ssa/ssautil/load.go b/go/src/golang.org/x/tools/go/ssa/ssautil/load.go
new file mode 100644
index 0000000..c2b8ce1
--- /dev/null
+++ b/go/src/golang.org/x/tools/go/ssa/ssautil/load.go
@@ -0,0 +1,95 @@
+// Copyright 2015 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 ssautil
+
+// This file defines utility functions for constructing programs in SSA form.
+
+import (
+	"go/ast"
+	"go/token"
+
+	"golang.org/x/tools/go/loader"
+	"golang.org/x/tools/go/ssa"
+	"golang.org/x/tools/go/types"
+)
+
+// CreateProgram returns a new program in SSA form, given a program
+// loaded from source.  An SSA package is created for each transitively
+// error-free package of lprog.
+//
+// Code for bodies of functions is not built until BuildAll() is called
+// on the result.
+//
+// mode controls diagnostics and checking during SSA construction.
+//
+func CreateProgram(lprog *loader.Program, mode ssa.BuilderMode) *ssa.Program {
+	prog := ssa.NewProgram(lprog.Fset, mode)
+
+	for _, info := range lprog.AllPackages {
+		if info.TransitivelyErrorFree {
+			prog.CreatePackage(info.Pkg, info.Files, &info.Info, info.Importable)
+		}
+	}
+
+	return prog
+}
+
+// BuildPackage builds an SSA program with IR for a single package.
+//
+// It populates pkg by type-checking the specified file ASTs.  All
+// dependencies are loaded using the importer specified by tc, which
+// typically loads compiler export data; SSA code cannot be built for
+// those packages.  BuildPackage then constructs an ssa.Program with all
+// dependency packages created, and builds and returns the SSA package
+// corresponding to pkg.
+//
+// The caller must have set pkg.Path() to the import path.
+//
+// The operation fails if there were any type-checking or import errors.
+//
+// See ../ssa/example_test.go for an example.
+//
+func BuildPackage(tc *types.Config, fset *token.FileSet, pkg *types.Package, files []*ast.File, mode ssa.BuilderMode) (*ssa.Package, *types.Info, error) {
+	if fset == nil {
+		panic("no token.FileSet")
+	}
+	if pkg.Path() == "" {
+		panic("package has no import path")
+	}
+
+	info := &types.Info{
+		Types:      make(map[ast.Expr]types.TypeAndValue),
+		Defs:       make(map[*ast.Ident]types.Object),
+		Uses:       make(map[*ast.Ident]types.Object),
+		Implicits:  make(map[ast.Node]types.Object),
+		Scopes:     make(map[ast.Node]*types.Scope),
+		Selections: make(map[*ast.SelectorExpr]*types.Selection),
+	}
+	if err := types.NewChecker(tc, fset, pkg, info).Files(files); err != nil {
+		return nil, nil, err
+	}
+
+	prog := ssa.NewProgram(fset, mode)
+
+	// Create SSA packages for all imports.
+	// Order is not significant.
+	created := make(map[*types.Package]bool)
+	var createAll func(pkgs []*types.Package)
+	createAll = func(pkgs []*types.Package) {
+		for _, p := range pkgs {
+			if !created[p] {
+				created[p] = true
+				prog.CreatePackage(p, nil, nil, true)
+				createAll(p.Imports())
+			}
+		}
+	}
+	createAll(pkg.Imports())
+
+	// Create and build the primary package.
+	ssapkg := prog.CreatePackage(pkg, files, info, false)
+	ssapkg.Build()
+	return ssapkg, info, nil
+}
diff --git a/go/src/golang.org/x/tools/go/ssa/ssautil/load_test.go b/go/src/golang.org/x/tools/go/ssa/ssautil/load_test.go
new file mode 100644
index 0000000..458d2dc
--- /dev/null
+++ b/go/src/golang.org/x/tools/go/ssa/ssautil/load_test.go
@@ -0,0 +1,65 @@
+// Copyright 2015 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 ssautil_test
+
+import (
+	"go/ast"
+	"go/parser"
+	"go/token"
+	"os"
+	"testing"
+
+	"golang.org/x/tools/go/ssa/ssautil"
+	"golang.org/x/tools/go/types"
+
+	_ "golang.org/x/tools/go/gcimporter"
+)
+
+const hello = `package main
+
+import "fmt"
+
+func main() {
+	fmt.Println("Hello, world")
+}
+`
+
+func TestBuildPackage(t *testing.T) {
+	// There is a more substantial test of BuildPackage and the
+	// SSA program it builds in ../ssa/builder_test.go.
+
+	fset := token.NewFileSet()
+	f, err := parser.ParseFile(fset, "hello.go", hello, 0)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	pkg := types.NewPackage("hello", "")
+	ssapkg, _, err := ssautil.BuildPackage(new(types.Config), fset, pkg, []*ast.File{f}, 0)
+	if err != nil {
+		t.Fatal(err)
+	}
+	if pkg.Name() != "main" {
+		t.Errorf("pkg.Name() = %s, want main", pkg.Name())
+	}
+	if ssapkg.Func("main") == nil {
+		ssapkg.WriteTo(os.Stderr)
+		t.Errorf("ssapkg has no main function")
+	}
+}
+
+func TestBuildPackage_MissingImport(t *testing.T) {
+	fset := token.NewFileSet()
+	f, err := parser.ParseFile(fset, "bad.go", `package bad; import "missing"`, 0)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	pkg := types.NewPackage("bad", "")
+	ssapkg, _, err := ssautil.BuildPackage(new(types.Config), fset, pkg, []*ast.File{f}, 0)
+	if err == nil || ssapkg != nil {
+		t.Fatal("BuildPackage succeeded unexpectedly")
+	}
+}
diff --git a/go/src/golang.org/x/tools/go/ssa/ssautil/switch_test.go b/go/src/golang.org/x/tools/go/ssa/ssautil/switch_test.go
index ae11058..2acbd7e 100644
--- a/go/src/golang.org/x/tools/go/ssa/ssautil/switch_test.go
+++ b/go/src/golang.org/x/tools/go/ssa/ssautil/switch_test.go
@@ -29,7 +29,7 @@
 		return
 	}
 
-	prog := ssa.Create(iprog, 0)
+	prog := ssautil.CreateProgram(iprog, 0)
 	mainPkg := prog.Package(iprog.Created[0].Pkg)
 	mainPkg.Build()
 
diff --git a/go/src/golang.org/x/tools/go/ssa/stdlib_test.go b/go/src/golang.org/x/tools/go/ssa/stdlib_test.go
index 63d031e..f64a93a 100644
--- a/go/src/golang.org/x/tools/go/ssa/stdlib_test.go
+++ b/go/src/golang.org/x/tools/go/ssa/stdlib_test.go
@@ -57,7 +57,7 @@
 	// Comment out these lines during benchmarking.  Approx SSA build costs are noted.
 	mode |= ssa.SanityCheckFunctions // + 2% space, + 4% time
 	mode |= ssa.GlobalDebug          // +30% space, +18% time
-	prog := ssa.Create(iprog, mode)
+	prog := ssautil.CreateProgram(iprog, mode)
 
 	t2 := time.Now()
 
diff --git a/go/src/golang.org/x/tools/go/ssa/testdata/valueforexpr.go b/go/src/golang.org/x/tools/go/ssa/testdata/valueforexpr.go
index 0697ec6..028c153 100644
--- a/go/src/golang.org/x/tools/go/ssa/testdata/valueforexpr.go
+++ b/go/src/golang.org/x/tools/go/ssa/testdata/valueforexpr.go
@@ -76,11 +76,11 @@
 	// 1. Slices
 	print( /*@Slice*/ ([]int{}))
 	print( /*@Alloc*/ (&[]int{}))
-	print(& /*@Alloc*/ ([]int{}))
+	print(& /*@Slice*/ ([]int{}))
 
 	sl1 := /*@Slice*/ ([]int{})
 	sl2 := /*@Alloc*/ (&[]int{})
-	sl3 := & /*@Alloc*/ ([]int{})
+	sl3 := & /*@Slice*/ ([]int{})
 	_, _, _ = sl1, sl2, sl3
 
 	_ = /*@Slice*/ ([]int{})
@@ -98,18 +98,18 @@
 	_, _, _ = arr1, arr2, arr3
 
 	_ = /*@UnOp*/ ([1]int{})
-	_ = /*@Alloc*/ (& /*@Alloc*/ ([1]int{})) // & optimized away
+	_ = /*@Alloc*/ (& /*@Alloc*/ ([1]int{}))
 	_ = & /*@Alloc*/ ([1]int{})
 
 	// 3. Maps
 	type M map[int]int
 	print( /*@MakeMap*/ (M{}))
 	print( /*@Alloc*/ (&M{}))
-	print(& /*@Alloc*/ (M{}))
+	print(& /*@MakeMap*/ (M{}))
 
 	m1 := /*@MakeMap*/ (M{})
 	m2 := /*@Alloc*/ (&M{})
-	m3 := & /*@Alloc*/ (M{})
+	m3 := & /*@MakeMap*/ (M{})
 	_, _, _ = m1, m2, m3
 
 	_ = /*@MakeMap*/ (M{})
diff --git a/go/src/golang.org/x/tools/go/ssa/testmain.go b/go/src/golang.org/x/tools/go/ssa/testmain.go
index 7935f4e..a7b1242 100644
--- a/go/src/golang.org/x/tools/go/ssa/testmain.go
+++ b/go/src/golang.org/x/tools/go/ssa/testmain.go
@@ -31,9 +31,9 @@
 
 	// The first two of these may be nil: if the program doesn't import "testing",
 	// it can't contain any tests, but it may yet contain Examples.
-	var testSig *types.Signature                                   // func(*testing.T)
-	var benchmarkSig *types.Signature                              // func(*testing.B)
-	var exampleSig = types.NewSignature(nil, nil, nil, nil, false) // func()
+	var testSig *types.Signature                              // func(*testing.T)
+	var benchmarkSig *types.Signature                         // func(*testing.B)
+	var exampleSig = types.NewSignature(nil, nil, nil, false) // func()
 
 	// Obtain the types from the parameters of testing.Main().
 	if testingPkg := prog.ImportedPackage("testing"); testingPkg != nil {
diff --git a/go/src/golang.org/x/tools/go/ssa/testmain_test.go b/go/src/golang.org/x/tools/go/ssa/testmain_test.go
index 04a41fc..56cb604 100644
--- a/go/src/golang.org/x/tools/go/ssa/testmain_test.go
+++ b/go/src/golang.org/x/tools/go/ssa/testmain_test.go
@@ -14,6 +14,7 @@
 
 	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/ssa"
+	"golang.org/x/tools/go/ssa/ssautil"
 )
 
 func create(t *testing.T, content string) []*ssa.Package {
@@ -30,7 +31,7 @@
 	}
 
 	// We needn't call Build.
-	return ssa.Create(iprog, ssa.SanityCheckFunctions).AllPackages()
+	return ssautil.CreateProgram(iprog, ssa.SanityCheckFunctions).AllPackages()
 }
 
 func TestFindTests(t *testing.T) {
diff --git a/go/src/golang.org/x/tools/go/ssa/util.go b/go/src/golang.org/x/tools/go/ssa/util.go
index 10ebb8c..4f9d43d 100644
--- a/go/src/golang.org/x/tools/go/ssa/util.go
+++ b/go/src/golang.org/x/tools/go/ssa/util.go
@@ -114,6 +114,6 @@
 	lenParams := types.NewTuple(anonVar(T))
 	return &Builtin{
 		name: "len",
-		sig:  types.NewSignature(nil, nil, lenParams, lenResults, false),
+		sig:  types.NewSignature(nil, lenParams, lenResults, false),
 	}
 }
diff --git a/go/src/golang.org/x/tools/go/ssa/wrappers.go b/go/src/golang.org/x/tools/go/ssa/wrappers.go
index 3c7e7f0..ff1eac5 100644
--- a/go/src/golang.org/x/tools/go/ssa/wrappers.go
+++ b/go/src/golang.org/x/tools/go/ssa/wrappers.go
@@ -89,7 +89,7 @@
 			var c Call
 			c.Call.Value = &Builtin{
 				name: "ssa:wrapnilchk",
-				sig: types.NewSignature(nil, nil,
+				sig: types.NewSignature(nil,
 					types.NewTuple(anonVar(sel.Recv()), anonVar(tString), anonVar(tString)),
 					types.NewTuple(anonVar(sel.Recv())), false),
 			}
@@ -281,7 +281,7 @@
 }
 
 func changeRecv(s *types.Signature, recv *types.Var) *types.Signature {
-	return types.NewSignature(nil, recv, s.Params(), s.Results(), s.Variadic())
+	return types.NewSignature(recv, s.Params(), s.Results(), s.Variadic())
 }
 
 // selectionKey is like types.Selection but a usable map key.
diff --git a/go/src/golang.org/x/tools/go/types/api_test.go b/go/src/golang.org/x/tools/go/types/api_test.go
index 57f7edc..96e10d4 100644
--- a/go/src/golang.org/x/tools/go/types/api_test.go
+++ b/go/src/golang.org/x/tools/go/types/api_test.go
@@ -10,6 +10,9 @@
 	"go/ast"
 	"go/parser"
 	"go/token"
+	"reflect"
+	"regexp"
+	"runtime"
 	"strings"
 	"testing"
 
@@ -17,6 +20,20 @@
 	. "golang.org/x/tools/go/types"
 )
 
+// skipSpecialPlatforms causes the test to be skipped for platforms where
+// builders (build.golang.org) don't have access to compiled packages for
+// import.
+func skipSpecialPlatforms(t *testing.T) {
+	switch platform := runtime.GOOS + "-" + runtime.GOARCH; platform {
+	case "nacl-amd64p32",
+		"nacl-386",
+		"nacl-arm",
+		"darwin-arm",
+		"darwin-arm64":
+		t.Skipf("no compiled packages available for import on %s", platform)
+	}
+}
+
 func pkgFor(path, source string, info *Info) (*Package, error) {
 	fset := token.NewFileSet()
 	f, err := parser.ParseFile(fset, path, source, 0)
@@ -284,6 +301,8 @@
 }
 
 func TestPredicatesInfo(t *testing.T) {
+	skipSpecialPlatforms(t)
+
 	var tests = []struct {
 		src  string
 		expr string
@@ -368,6 +387,8 @@
 }
 
 func TestScopesInfo(t *testing.T) {
+	skipSpecialPlatforms(t)
+
 	var tests = []struct {
 		src    string
 		scopes []string // list of scope descriptors of the form kind:varlist
@@ -844,7 +865,7 @@
 	}
 
 	const libSrc = `
-package a 
+package a
 import "missing"
 const C1 = foo
 const C2 = missing.C
@@ -934,3 +955,105 @@
 	}
 	return true
 }
+
+// TestScopeLookupParent ensures that (*Scope).LookupParent returns
+// the correct result at various positions with the source.
+func TestScopeLookupParent(t *testing.T) {
+	fset := token.NewFileSet()
+	conf := Config{
+		Packages: make(map[string]*Package),
+		Import: func(imports map[string]*Package, path string) (*Package, error) {
+			return imports[path], nil
+		},
+	}
+	mustParse := func(src string) *ast.File {
+		f, err := parser.ParseFile(fset, "dummy.go", src, parser.ParseComments)
+		if err != nil {
+			t.Fatal(err)
+		}
+		return f
+	}
+	var info Info
+	makePkg := func(path string, files ...*ast.File) {
+		conf.Packages[path], _ = conf.Check(path, fset, files, &info)
+	}
+
+	makePkg("lib", mustParse("package lib; var X int"))
+	// Each /*name=kind:line*/ comment makes the test look up the
+	// name at that point and checks that it resolves to a decl of
+	// the specified kind and line number.  "undef" means undefined.
+	mainSrc := `
+package main
+import "lib"
+var Y = lib.X
+func f() {
+	print(Y) /*Y=var:4*/
+	z /*z=undef*/ := /*z=undef*/ 1 /*z=var:7*/
+	print(z)
+	/*f=func:5*/ /*lib=pkgname:3*/
+	type /*T=undef*/ T /*T=typename:10*/ *T
+}
+`
+	info.Uses = make(map[*ast.Ident]Object)
+	f := mustParse(mainSrc)
+	makePkg("main", f)
+	mainScope := conf.Packages["main"].Scope()
+	rx := regexp.MustCompile(`^/\*(\w*)=([\w:]*)\*/$`)
+	for _, group := range f.Comments {
+		for _, comment := range group.List {
+			// Parse the assertion in the comment.
+			m := rx.FindStringSubmatch(comment.Text)
+			if m == nil {
+				t.Errorf("%s: bad comment: %s",
+					fset.Position(comment.Pos()), comment.Text)
+				continue
+			}
+			name, want := m[1], m[2]
+
+			// Look up the name in the innermost enclosing scope.
+			inner := mainScope.Innermost(comment.Pos())
+			if inner == nil {
+				t.Errorf("%s: at %s: can't find innermost scope",
+					fset.Position(comment.Pos()), comment.Text)
+				continue
+			}
+			got := "undef"
+			if _, obj := inner.LookupParent(name, comment.Pos()); obj != nil {
+				kind := strings.ToLower(strings.TrimPrefix(reflect.TypeOf(obj).String(), "*types."))
+				got = fmt.Sprintf("%s:%d", kind, fset.Position(obj.Pos()).Line)
+			}
+			if got != want {
+				t.Errorf("%s: at %s: %s resolved to %s, want %s",
+					fset.Position(comment.Pos()), comment.Text, name, got, want)
+			}
+		}
+	}
+
+	// Check that for each referring identifier,
+	// a lookup of its name on the innermost
+	// enclosing scope returns the correct object.
+
+	for id, wantObj := range info.Uses {
+		inner := mainScope.Innermost(id.Pos())
+		if inner == nil {
+			t.Errorf("%s: can't find innermost scope enclosing %q",
+				fset.Position(id.Pos()), id.Name)
+			continue
+		}
+
+		// Exclude selectors and qualified identifiers---lexical
+		// refs only.  (Ideally, we'd see if the AST parent is a
+		// SelectorExpr, but that requires PathEnclosingInterval
+		// from golang.org/x/tools/go/ast/astutil.)
+		if id.Name == "X" {
+			continue
+		}
+
+		_, gotObj := inner.LookupParent(id.Name, id.Pos())
+		if gotObj != wantObj {
+			t.Errorf("%s: got %v, want %v",
+				fset.Position(id.Pos()), gotObj, wantObj)
+			continue
+		}
+	}
+}
diff --git a/go/src/golang.org/x/tools/go/types/assignments.go b/go/src/golang.org/x/tools/go/types/assignments.go
index 14ee286..93b842e 100644
--- a/go/src/golang.org/x/tools/go/types/assignments.go
+++ b/go/src/golang.org/x/tools/go/types/assignments.go
@@ -161,7 +161,7 @@
 	var v *Var
 	var v_used bool
 	if ident != nil {
-		if _, obj := check.scope.LookupParent(ident.Name); obj != nil {
+		if _, obj := check.scope.LookupParent(ident.Name, token.NoPos); obj != nil {
 			v, _ = obj.(*Var)
 			if v != nil {
 				v_used = v.used
@@ -314,8 +314,13 @@
 
 	// declare new variables
 	if len(newVars) > 0 {
+		// spec: "The scope of a constant or variable identifier declared inside
+		// a function begins at the end of the ConstSpec or VarSpec (ShortVarDecl
+		// for short variable declarations) and ends at the end of the innermost
+		// containing block."
+		scopePos := rhs[len(rhs)-1].End()
 		for _, obj := range newVars {
-			check.declare(scope, nil, obj) // recordObject already called
+			check.declare(scope, nil, obj, scopePos) // recordObject already called
 		}
 	} else {
 		check.softErrorf(pos, "no new variables on left side of :=")
diff --git a/go/src/golang.org/x/tools/go/types/builtins.go b/go/src/golang.org/x/tools/go/types/builtins.go
index f3e8855..3da49b9 100644
--- a/go/src/golang.org/x/tools/go/types/builtins.go
+++ b/go/src/golang.org/x/tools/go/types/builtins.go
@@ -10,7 +10,6 @@
 	"go/ast"
 	"go/token"
 
-	"golang.org/x/tools/go/ast/astutil"
 	"golang.org/x/tools/go/exact"
 )
 
@@ -608,7 +607,16 @@
 	return typ
 }
 
-func unparen(x ast.Expr) ast.Expr { return astutil.Unparen(x) }
+// unparen returns e with any enclosing parentheses stripped.
+func unparen(e ast.Expr) ast.Expr {
+	for {
+		p, ok := e.(*ast.ParenExpr)
+		if !ok {
+			return e
+		}
+		e = p.X
+	}
+}
 
 func (check *Checker) complexArg(x *operand) bool {
 	t, _ := x.typ.Underlying().(*Basic)
diff --git a/go/src/golang.org/x/tools/go/types/call.go b/go/src/golang.org/x/tools/go/types/call.go
index 7f366a8..1e94212 100644
--- a/go/src/golang.org/x/tools/go/types/call.go
+++ b/go/src/golang.org/x/tools/go/types/call.go
@@ -280,7 +280,7 @@
 	// can only appear in qualified identifiers which are mapped to
 	// selector expressions.
 	if ident, ok := e.X.(*ast.Ident); ok {
-		_, obj := check.scope.LookupParent(ident.Name)
+		_, obj := check.scope.LookupParent(ident.Name, check.pos)
 		if pkg, _ := obj.(*PkgName); pkg != nil {
 			assert(pkg.pkg == check.pkg)
 			check.recordUse(ident, pkg)
diff --git a/go/src/golang.org/x/tools/go/types/check.go b/go/src/golang.org/x/tools/go/types/check.go
index b48a8ab..964d2bd 100644
--- a/go/src/golang.org/x/tools/go/types/check.go
+++ b/go/src/golang.org/x/tools/go/types/check.go
@@ -84,6 +84,7 @@
 	// context within which the current object is type-checked
 	// (valid only for the duration of type-checking a specific object)
 	context
+	pos token.Pos // if valid, identifiers are looked up as if at position pos (used by Eval)
 
 	// debugging
 	indent int // indentation for tracing
diff --git a/go/src/golang.org/x/tools/go/types/check_test.go b/go/src/golang.org/x/tools/go/types/check_test.go
index aefaa5a..b6caccb 100644
--- a/go/src/golang.org/x/tools/go/types/check_test.go
+++ b/go/src/golang.org/x/tools/go/types/check_test.go
@@ -278,6 +278,8 @@
 }
 
 func TestCheck(t *testing.T) {
+	skipSpecialPlatforms(t)
+
 	// Declare builtins for testing.
 	DefPredeclaredTestFuncs()
 
diff --git a/go/src/golang.org/x/tools/go/types/conversions.go b/go/src/golang.org/x/tools/go/types/conversions.go
index f7b2a56..6e279ca 100644
--- a/go/src/golang.org/x/tools/go/types/conversions.go
+++ b/go/src/golang.org/x/tools/go/types/conversions.go
@@ -20,7 +20,7 @@
 		switch t := T.Underlying().(*Basic); {
 		case representableConst(x.val, check.conf, t.kind, &x.val):
 			ok = true
-		case x.isInteger() && isString(t):
+		case isInteger(x.typ) && isString(t):
 			codepoint := int64(-1)
 			if i, ok := exact.Int64Val(x.val); ok {
 				codepoint = i
diff --git a/go/src/golang.org/x/tools/go/types/decl.go b/go/src/golang.org/x/tools/go/types/decl.go
index 3273fd4..9eba85c 100644
--- a/go/src/golang.org/x/tools/go/types/decl.go
+++ b/go/src/golang.org/x/tools/go/types/decl.go
@@ -20,7 +20,7 @@
 	}
 }
 
-func (check *Checker) declare(scope *Scope, id *ast.Ident, obj Object) {
+func (check *Checker) declare(scope *Scope, id *ast.Ident, obj Object, pos token.Pos) {
 	// spec: "The blank identifier, represented by the underscore
 	// character _, may be used in a declaration like any other
 	// identifier but the declaration does not introduce a new
@@ -31,6 +31,7 @@
 			check.reportAltDecl(alt)
 			return
 		}
+		obj.setScopePos(pos)
 	}
 	if id != nil {
 		check.recordDef(id, obj)
@@ -348,8 +349,13 @@
 
 					check.arityMatch(s, last)
 
+					// spec: "The scope of a constant or variable identifier declared
+					// inside a function begins at the end of the ConstSpec or VarSpec
+					// (ShortVarDecl for short variable declarations) and ends at the
+					// end of the innermost containing block."
+					scopePos := s.End()
 					for i, name := range s.Names {
-						check.declare(check.scope, name, lhs[i])
+						check.declare(check.scope, name, lhs[i], scopePos)
 					}
 
 				case token.VAR:
@@ -395,8 +401,10 @@
 
 					// declare all variables
 					// (only at this point are the variable scopes (parents) set)
+					scopePos := s.End() // see constant declarations
 					for i, name := range s.Names {
-						check.declare(check.scope, name, lhs0[i])
+						// see constant declarations
+						check.declare(check.scope, name, lhs0[i], scopePos)
 					}
 
 				default:
@@ -405,7 +413,11 @@
 
 			case *ast.TypeSpec:
 				obj := NewTypeName(s.Name.Pos(), pkg, s.Name.Name, nil)
-				check.declare(check.scope, s.Name, obj)
+				// spec: "The scope of a type identifier declared inside a function
+				// begins at the identifier in the TypeSpec and ends at the end of
+				// the innermost containing block."
+				scopePos := s.Name.Pos()
+				check.declare(check.scope, s.Name, obj, scopePos)
 				check.typeDecl(obj, s.Type, nil, nil)
 
 			default:
diff --git a/go/src/golang.org/x/tools/go/types/errors.go b/go/src/golang.org/x/tools/go/types/errors.go
index 0a9dd0e..0c0049b 100644
--- a/go/src/golang.org/x/tools/go/types/errors.go
+++ b/go/src/golang.org/x/tools/go/types/errors.go
@@ -23,6 +23,13 @@
 	panic("unreachable")
 }
 
+func (check *Checker) qualifier(pkg *Package) string {
+	if pkg != check.pkg {
+		return pkg.path
+	}
+	return ""
+}
+
 func (check *Checker) sprintf(format string, args ...interface{}) string {
 	for i, arg := range args {
 		switch a := arg.(type) {
@@ -31,15 +38,15 @@
 		case operand:
 			panic("internal error: should always pass *operand")
 		case *operand:
-			arg = operandString(check.pkg, a)
+			arg = operandString(a, check.qualifier)
 		case token.Pos:
 			arg = check.fset.Position(a).String()
 		case ast.Expr:
 			arg = ExprString(a)
 		case Object:
-			arg = ObjectString(check.pkg, a)
+			arg = ObjectString(a, check.qualifier)
 		case Type:
-			arg = TypeString(check.pkg, a)
+			arg = TypeString(a, check.qualifier)
 		}
 		args[i] = arg
 	}
diff --git a/go/src/golang.org/x/tools/go/types/eval.go b/go/src/golang.org/x/tools/go/types/eval.go
index 7fa319e..c09f2a3 100644
--- a/go/src/golang.org/x/tools/go/types/eval.go
+++ b/go/src/golang.org/x/tools/go/types/eval.go
@@ -2,44 +2,30 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// This file implements New, Eval and EvalNode.
-
 package types
 
 import (
 	"fmt"
-	"go/ast"
 	"go/parser"
 	"go/token"
 )
 
-// New is a convenience function to create a new type from a given
-// expression or type literal string evaluated in Universe scope.
-// New(str) is shorthand for Eval(str, nil, nil), but only returns
-// the type result, and panics in case of an error.
-// Position info for objects in the result type is undefined.
-//
-func New(str string) Type {
-	tv, err := Eval(str, nil, nil)
-	if err != nil {
-		panic(err)
-	}
-	return tv.Type
-}
-
 // Eval returns the type and, if constant, the value for the
-// expression or type literal string str evaluated in scope.
-// If the expression contains function literals, the function
-// bodies are ignored (though they must be syntactically correct).
+// expression expr, evaluated at position pos of package pkg,
+// which must have been derived from type-checking an AST with
+// complete position information relative to the provided file
+// set.
+//
+// If the expression contains function literals, their bodies
+// are ignored (i.e., the bodies are not type-checked).
 //
 // If pkg == nil, the Universe scope is used and the provided
-// scope is ignored. Otherwise, the scope must belong to the
-// package (either the package scope, or nested within the
-// package scope).
+// position pos is ignored. If pkg != nil, and pos is invalid,
+// the package scope is used. Otherwise, pos must belong to the
+// package.
 //
-// An error is returned if the scope is incorrect, the string
-// has syntax errors, or if it cannot be evaluated in the scope.
-// Position info for objects in the result type is undefined.
+// An error is returned if pos is not within the package or
+// if the node cannot be evaluated.
 //
 // Note: Eval should not be used instead of running Check to compute
 // types and values, but in addition to Check. Eval will re-evaluate
@@ -48,48 +34,54 @@
 // level untyped constants will return an untyped type rather then the
 // respective context-specific type.
 //
-func Eval(str string, pkg *Package, scope *Scope) (TypeAndValue, error) {
-	node, err := parser.ParseExpr(str)
-	if err != nil {
-		return TypeAndValue{}, err
-	}
-
-	// Create a file set that looks structurally identical to the
-	// one created by parser.ParseExpr for correct error positions.
-	fset := token.NewFileSet()
-	fset.AddFile("", len(str), fset.Base()).SetLinesForContent([]byte(str))
-
-	return EvalNode(fset, node, pkg, scope)
-}
-
-// EvalNode is like Eval but instead of string it accepts
-// an expression node and respective file set.
-//
-// An error is returned if the scope is incorrect
-// if the node cannot be evaluated in the scope.
-//
-func EvalNode(fset *token.FileSet, node ast.Expr, pkg *Package, scope *Scope) (tv TypeAndValue, err error) {
-	// verify package/scope relationship
+func Eval(fset *token.FileSet, pkg *Package, pos token.Pos, expr string) (tv TypeAndValue, err error) {
+	// determine scope
+	var scope *Scope
 	if pkg == nil {
 		scope = Universe
+		pos = token.NoPos
+	} else if !pos.IsValid() {
+		scope = pkg.scope
 	} else {
-		s := scope
-		for s != nil && s != pkg.scope {
-			s = s.parent
+		// The package scope extent (position information) may be
+		// incorrect (files spread accross a wide range of fset
+		// positions) - ignore it and just consider its children
+		// (file scopes).
+		for _, fscope := range pkg.scope.children {
+			if scope = fscope.Innermost(pos); scope != nil {
+				break
+			}
 		}
-		// s == nil || s == pkg.scope
-		if s == nil {
-			return TypeAndValue{}, fmt.Errorf("scope does not belong to package %s", pkg.name)
+		if scope == nil || debug {
+			s := scope
+			for s != nil && s != pkg.scope {
+				s = s.parent
+			}
+			// s == nil || s == pkg.scope
+			if s == nil {
+				return TypeAndValue{}, fmt.Errorf("no position %s found in package %s", fset.Position(pos), pkg.name)
+			}
 		}
 	}
 
+	// parse expressions
+	// BUG(gri) In case of type-checking errors below, the type checker
+	//          doesn't have the correct file set for expr. The correct
+	//          solution requires a ParseExpr that uses the incoming
+	//          file set fset.
+	node, err := parser.ParseExpr(expr)
+	if err != nil {
+		return TypeAndValue{}, err
+	}
+
 	// initialize checker
 	check := NewChecker(nil, fset, pkg, nil)
 	check.scope = scope
+	check.pos = pos
 	defer check.handleBailout(&err)
 
 	// evaluate node
 	var x operand
 	check.rawExpr(&x, node, nil)
-	return TypeAndValue{x.mode, x.typ, x.val}, nil
+	return TypeAndValue{x.mode, x.typ, x.val}, err
 }
diff --git a/go/src/golang.org/x/tools/go/types/eval_test.go b/go/src/golang.org/x/tools/go/types/eval_test.go
index 40d70ac..b68b244 100644
--- a/go/src/golang.org/x/tools/go/types/eval_test.go
+++ b/go/src/golang.org/x/tools/go/types/eval_test.go
@@ -17,14 +17,14 @@
 	. "golang.org/x/tools/go/types"
 )
 
-func testEval(t *testing.T, pkg *Package, scope *Scope, str string, typ Type, typStr, valStr string) {
-	gotTv, err := Eval(str, pkg, scope)
+func testEval(t *testing.T, fset *token.FileSet, pkg *Package, pos token.Pos, expr string, typ Type, typStr, valStr string) {
+	gotTv, err := Eval(fset, pkg, pos, expr)
 	if err != nil {
-		t.Errorf("Eval(%q) failed: %s", str, err)
+		t.Errorf("Eval(%q) failed: %s", expr, err)
 		return
 	}
 	if gotTv.Type == nil {
-		t.Errorf("Eval(%q) got nil type but no error", str)
+		t.Errorf("Eval(%q) got nil type but no error", expr)
 		return
 	}
 
@@ -32,14 +32,14 @@
 	if typ != nil {
 		// we have a type, check identity
 		if !Identical(gotTv.Type, typ) {
-			t.Errorf("Eval(%q) got type %s, want %s", str, gotTv.Type, typ)
+			t.Errorf("Eval(%q) got type %s, want %s", expr, gotTv.Type, typ)
 			return
 		}
 	} else {
 		// we have a string, compare type string
 		gotStr := gotTv.Type.String()
 		if gotStr != typStr {
-			t.Errorf("Eval(%q) got type %s, want %s", str, gotStr, typStr)
+			t.Errorf("Eval(%q) got type %s, want %s", expr, gotStr, typStr)
 			return
 		}
 	}
@@ -50,19 +50,21 @@
 		gotStr = gotTv.Value.String()
 	}
 	if gotStr != valStr {
-		t.Errorf("Eval(%q) got value %s, want %s", str, gotStr, valStr)
+		t.Errorf("Eval(%q) got value %s, want %s", expr, gotStr, valStr)
 	}
 }
 
 func TestEvalBasic(t *testing.T) {
+	fset := token.NewFileSet()
 	for _, typ := range Typ[Bool : String+1] {
-		testEval(t, nil, nil, typ.Name(), typ, "", "")
+		testEval(t, fset, nil, token.NoPos, typ.Name(), typ, "", "")
 	}
 }
 
 func TestEvalComposite(t *testing.T) {
+	fset := token.NewFileSet()
 	for _, test := range independentTestTypes {
-		testEval(t, nil, nil, test.src, nil, test.str, "")
+		testEval(t, fset, nil, token.NoPos, test.src, nil, test.str, "")
 	}
 }
 
@@ -77,67 +79,103 @@
 		`"abc" <= "bcd"`,
 		`len([10]struct{}{}) == 2*5`,
 	}
-	for _, test := range tests {
-		testEval(t, nil, nil, test, Typ[UntypedBool], "", "true")
-	}
-}
-
-func TestEvalContext(t *testing.T) {
-	src := `
-package p
-import "fmt"
-import m "math"
-const c = 3.0
-type T []int
-func f(a int, s string) float64 {
-	fmt.Println("calling f")
-	_ = m.Pi // use package math
-	const d int = c + 1
-	var x int
-	x = a + len(s)
-	return float64(x)
-}
-`
 	fset := token.NewFileSet()
-	file, err := parser.ParseFile(fset, "p", src, 0)
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	pkg, err := Check("p", fset, []*ast.File{file})
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	pkgScope := pkg.Scope()
-	if n := pkgScope.NumChildren(); n != 1 {
-		t.Fatalf("got %d file scopes, want 1", n)
-	}
-
-	fileScope := pkgScope.Child(0)
-	if n := fileScope.NumChildren(); n != 1 {
-		t.Fatalf("got %d functions scopes, want 1", n)
-	}
-
-	funcScope := fileScope.Child(0)
-
-	var tests = []string{
-		`true => true, untyped bool`,
-		`fmt.Println => , func(a ...interface{}) (n int, err error)`,
-		`c => 3, untyped float`,
-		`T => , p.T`,
-		`a => , int`,
-		`s => , string`,
-		`d => 4, int`,
-		`x => , int`,
-		`d/c => 1, int`,
-		`c/2 => 3/2, untyped float`,
-		`m.Pi < m.E => false, untyped bool`,
-	}
 	for _, test := range tests {
-		str, typ := split(test, ", ")
-		str, val := split(str, "=>")
-		testEval(t, pkg, funcScope, str, nil, typ, val)
+		testEval(t, fset, nil, token.NoPos, test, Typ[UntypedBool], "", "true")
+	}
+}
+
+func TestEvalPos(t *testing.T) {
+	skipSpecialPlatforms(t)
+
+	// The contents of /*-style comments are of the form
+	//	expr => value, type
+	// where value may be the empty string.
+	// Each expr is evaluated at the position of the comment
+	// and the result is compared with the expected value
+	// and type.
+	var sources = []string{
+		`
+		package p
+		import "fmt"
+		import m "math"
+		const c = 3.0
+		type T []int
+		func f(a int, s string) float64 {
+			fmt.Println("calling f")
+			_ = m.Pi // use package math
+			const d int = c + 1
+			var x int
+			x = a + len(s)
+			return float64(x)
+			/* true => true, untyped bool */
+			/* fmt.Println => , func(a ...interface{}) (n int, err error) */
+			/* c => 3, untyped float */
+			/* T => , p.T */
+			/* a => , int */
+			/* s => , string */
+			/* d => 4, int */
+			/* x => , int */
+			/* d/c => 1, int */
+			/* c/2 => 3/2, untyped float */
+			/* m.Pi < m.E => false, untyped bool */
+		}
+		`,
+		`
+		package p
+		/* c => 3, untyped float */
+		type T1 /* T1 => , p.T1 */ struct {}
+		var v1 /* v1 => , int */ = 42
+		func /* f1 => , func(v1 float64) */ f1(v1 float64) {
+			/* f1 => , func(v1 float64) */
+			/* v1 => , float64 */
+			var c /* c => 3, untyped float */ = "foo" /* c => , string */
+			{
+				var c struct {
+					c /* c => , string */ int
+				}
+				/* c => , struct{c int} */
+				_ = c
+			}
+			_ = func(a, b, c int) /* c => , string */ {
+				/* c => , int */
+			}
+			_ = c
+			type FT /* FT => , p.FT */ interface{}
+		}
+		`,
+		`
+		package p
+		/* T => , p.T */
+		`,
+	}
+
+	fset := token.NewFileSet()
+	var files []*ast.File
+	for i, src := range sources {
+		file, err := parser.ParseFile(fset, "p", src, parser.ParseComments)
+		if err != nil {
+			t.Fatalf("could not parse file %d: %s", i, err)
+		}
+		files = append(files, file)
+	}
+
+	pkg, err := Check("p", fset, files)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	for _, file := range files {
+		for _, group := range file.Comments {
+			for _, comment := range group.List {
+				s := comment.Text
+				if len(s) >= 4 && s[:2] == "/*" && s[len(s)-2:] == "*/" {
+					str, typ := split(s[2:len(s)-2], ", ")
+					str, val := split(str, "=>")
+					testEval(t, fset, pkg, comment.Pos(), str, nil, typ, val)
+				}
+			}
+		}
 	}
 }
 
diff --git a/go/src/golang.org/x/tools/go/types/expr.go b/go/src/golang.org/x/tools/go/types/expr.go
index 67b91da..78b14e0 100644
--- a/go/src/golang.org/x/tools/go/types/expr.go
+++ b/go/src/golang.org/x/tools/go/types/expr.go
@@ -79,7 +79,8 @@
 	return true
 }
 
-func (check *Checker) unary(x *operand, op token.Token) {
+// The unary expression e may be nil. It's passed in for better error messages only.
+func (check *Checker) unary(x *operand, e *ast.UnaryExpr, op token.Token) {
 	switch op {
 	case token.AND:
 		// spec: "As an exception to the addressability
@@ -126,6 +127,9 @@
 		// Typed constants must be representable in
 		// their type after each constant operation.
 		if isTyped(typ) {
+			if e != nil {
+				x.expr = e // for better error message
+			}
 			check.representable(x, typ)
 		}
 		return
@@ -620,7 +624,7 @@
 
 	// The lhs must be of integer type or be representable
 	// as an integer; otherwise the shift has no chance.
-	if !isInteger(x.typ) && (!untypedx || !representableConst(x.val, nil, UntypedInt, nil)) {
+	if !x.isInteger() {
 		check.invalidOp(x.pos(), "shifted operand %s must be integer", x)
 		x.mode = invalid
 		return
@@ -646,6 +650,12 @@
 
 	if x.mode == constant {
 		if y.mode == constant {
+			// rhs must be an integer value
+			if !y.isInteger() {
+				check.invalidOp(y.pos(), "shift count %s must be unsigned integer", y)
+				x.mode = invalid
+				return
+			}
 			// rhs must be within reasonable bounds
 			const stupidShift = 1023 - 1 + 52 // so we can express smallestFloat64
 			s, ok := exact.Uint64Val(y.val)
@@ -716,7 +726,8 @@
 	token.LOR:  isBoolean,
 }
 
-func (check *Checker) binary(x *operand, lhs, rhs ast.Expr, op token.Token) {
+// The binary expression e may be nil. It's passed in for better error messages only.
+func (check *Checker) binary(x *operand, e *ast.BinaryExpr, lhs, rhs ast.Expr, op token.Token) {
 	var y operand
 
 	check.expr(x, lhs)
@@ -782,6 +793,9 @@
 		// Typed constants must be representable in
 		// their type after each constant operation.
 		if isTyped(typ) {
+			if e != nil {
+				x.expr = e // for better error message
+			}
 			check.representable(x, typ)
 		}
 		return
@@ -998,6 +1012,7 @@
 			}
 		}
 		if typ == nil {
+			// TODO(gri) provide better error messages depending on context
 			check.error(e.Pos(), "missing type in composite literal")
 			goto Error
 		}
@@ -1094,7 +1109,7 @@
 					check.error(e.Pos(), "missing key in map literal")
 					continue
 				}
-				check.expr(x, kv.Key)
+				check.exprWithHint(x, kv.Key, utyp.key)
 				if !check.assignment(x, utyp.key) {
 					if x.mode != invalid {
 						check.errorf(x.pos(), "cannot use %s as %s key in map literal", x, utyp.key)
@@ -1368,7 +1383,7 @@
 		if x.mode == invalid {
 			goto Error
 		}
-		check.unary(x, e.Op)
+		check.unary(x, e, e.Op)
 		if x.mode == invalid {
 			goto Error
 		}
@@ -1378,7 +1393,7 @@
 		}
 
 	case *ast.BinaryExpr:
-		check.binary(x, e.X, e.Y, e.Op)
+		check.binary(x, e, e.X, e.Y, e.Op)
 		if x.mode == invalid {
 			goto Error
 		}
diff --git a/go/src/golang.org/x/tools/go/types/labels.go b/go/src/golang.org/x/tools/go/types/labels.go
index d6ffc52..7364d4d 100644
--- a/go/src/golang.org/x/tools/go/types/labels.go
+++ b/go/src/golang.org/x/tools/go/types/labels.go
@@ -12,7 +12,7 @@
 // labels checks correct label use in body.
 func (check *Checker) labels(body *ast.BlockStmt) {
 	// set of all labels in this body
-	all := NewScope(nil, "label")
+	all := NewScope(nil, body.Pos(), body.End(), "label")
 
 	fwdJumps := check.blockBranches(all, nil, nil, body.List)
 
diff --git a/go/src/golang.org/x/tools/go/types/object.go b/go/src/golang.org/x/tools/go/types/object.go
index 30bc31a..a9b6c43 100644
--- a/go/src/golang.org/x/tools/go/types/object.go
+++ b/go/src/golang.org/x/tools/go/types/object.go
@@ -45,6 +45,12 @@
 
 	// sameId reports whether obj.Id() and Id(pkg, name) are the same.
 	sameId(pkg *Package, name string) bool
+
+	// scopePos returns the start position of the scope of this Object
+	scopePos() token.Pos
+
+	// setScopePos sets the start position of the scope for this Object.
+	setScopePos(pos token.Pos)
 }
 
 // Id returns name if it is exported, otherwise it
@@ -74,26 +80,29 @@
 
 // An object implements the common parts of an Object.
 type object struct {
-	parent *Scope
-	pos    token.Pos
-	pkg    *Package
-	name   string
-	typ    Type
-	order_ uint32
+	parent    *Scope
+	pos       token.Pos
+	pkg       *Package
+	name      string
+	typ       Type
+	order_    uint32
+	scopePos_ token.Pos
 }
 
-func (obj *object) Parent() *Scope { return obj.parent }
-func (obj *object) Pos() token.Pos { return obj.pos }
-func (obj *object) Pkg() *Package  { return obj.pkg }
-func (obj *object) Name() string   { return obj.name }
-func (obj *object) Type() Type     { return obj.typ }
-func (obj *object) Exported() bool { return ast.IsExported(obj.name) }
-func (obj *object) Id() string     { return Id(obj.pkg, obj.name) }
-func (obj *object) String() string { panic("abstract") }
-func (obj *object) order() uint32  { return obj.order_ }
+func (obj *object) Parent() *Scope      { return obj.parent }
+func (obj *object) Pos() token.Pos      { return obj.pos }
+func (obj *object) Pkg() *Package       { return obj.pkg }
+func (obj *object) Name() string        { return obj.name }
+func (obj *object) Type() Type          { return obj.typ }
+func (obj *object) Exported() bool      { return ast.IsExported(obj.name) }
+func (obj *object) Id() string          { return Id(obj.pkg, obj.name) }
+func (obj *object) String() string      { panic("abstract") }
+func (obj *object) order() uint32       { return obj.order_ }
+func (obj *object) scopePos() token.Pos { return obj.scopePos_ }
 
-func (obj *object) setOrder(order uint32)   { assert(order > 0); obj.order_ = order }
-func (obj *object) setParent(parent *Scope) { obj.parent = parent }
+func (obj *object) setParent(parent *Scope)   { obj.parent = parent }
+func (obj *object) setOrder(order uint32)     { assert(order > 0); obj.order_ = order }
+func (obj *object) setScopePos(pos token.Pos) { obj.scopePos_ = pos }
 
 func (obj *object) sameId(pkg *Package, name string) bool {
 	// spec:
@@ -125,7 +134,7 @@
 }
 
 func NewPkgName(pos token.Pos, pkg *Package, name string, imported *Package) *PkgName {
-	return &PkgName{object{nil, pos, pkg, name, Typ[Invalid], 0}, imported, false}
+	return &PkgName{object{nil, pos, pkg, name, Typ[Invalid], 0, token.NoPos}, imported, false}
 }
 
 // Imported returns the package that was imported.
@@ -140,7 +149,7 @@
 }
 
 func NewConst(pos token.Pos, pkg *Package, name string, typ Type, val exact.Value) *Const {
-	return &Const{object{nil, pos, pkg, name, typ, 0}, val, false}
+	return &Const{object{nil, pos, pkg, name, typ, 0, token.NoPos}, val, false}
 }
 
 func (obj *Const) Val() exact.Value { return obj.val }
@@ -151,7 +160,7 @@
 }
 
 func NewTypeName(pos token.Pos, pkg *Package, name string, typ Type) *TypeName {
-	return &TypeName{object{nil, pos, pkg, name, typ, 0}}
+	return &TypeName{object{nil, pos, pkg, name, typ, 0, token.NoPos}}
 }
 
 // A Variable represents a declared variable (including function parameters and results, and struct fields).
@@ -164,15 +173,15 @@
 }
 
 func NewVar(pos token.Pos, pkg *Package, name string, typ Type) *Var {
-	return &Var{object: object{nil, pos, pkg, name, typ, 0}}
+	return &Var{object: object{nil, pos, pkg, name, typ, 0, token.NoPos}}
 }
 
 func NewParam(pos token.Pos, pkg *Package, name string, typ Type) *Var {
-	return &Var{object: object{nil, pos, pkg, name, typ, 0}, used: true} // parameters are always 'used'
+	return &Var{object: object{nil, pos, pkg, name, typ, 0, token.NoPos}, used: true} // parameters are always 'used'
 }
 
 func NewField(pos token.Pos, pkg *Package, name string, typ Type, anonymous bool) *Var {
-	return &Var{object: object{nil, pos, pkg, name, typ, 0}, anonymous: anonymous, isField: true}
+	return &Var{object: object{nil, pos, pkg, name, typ, 0, token.NoPos}, anonymous: anonymous, isField: true}
 }
 
 func (obj *Var) Anonymous() bool { return obj.anonymous }
@@ -192,14 +201,14 @@
 	if sig != nil {
 		typ = sig
 	}
-	return &Func{object{nil, pos, pkg, name, typ, 0}}
+	return &Func{object{nil, pos, pkg, name, typ, 0, token.NoPos}}
 }
 
 // FullName returns the package- or receiver-type-qualified name of
 // function or method obj.
 func (obj *Func) FullName() string {
 	var buf bytes.Buffer
-	writeFuncName(&buf, nil, obj)
+	writeFuncName(&buf, obj, nil)
 	return buf.String()
 }
 
@@ -233,7 +242,7 @@
 	object
 }
 
-func writeObject(buf *bytes.Buffer, this *Package, obj Object) {
+func writeObject(buf *bytes.Buffer, obj Object, qf Qualifier) {
 	typ := obj.Type()
 	switch obj := obj.(type) {
 	case *PkgName:
@@ -259,9 +268,9 @@
 
 	case *Func:
 		buf.WriteString("func ")
-		writeFuncName(buf, this, obj)
+		writeFuncName(buf, obj, qf)
 		if typ != nil {
-			WriteSignature(buf, this, typ.(*Signature))
+			WriteSignature(buf, typ.(*Signature), qf)
 		}
 		return
 
@@ -283,39 +292,52 @@
 
 	buf.WriteByte(' ')
 
-	// For package-level objects, package-qualify the name,
-	// except for intra-package references (this != nil).
-	if pkg := obj.Pkg(); pkg != nil && this != pkg && pkg.scope.Lookup(obj.Name()) == obj {
-		buf.WriteString(pkg.path)
-		buf.WriteByte('.')
+	// For package-level objects, qualify the name.
+	if obj.Pkg() != nil && obj.Pkg().scope.Lookup(obj.Name()) == obj {
+		writePackage(buf, obj.Pkg(), qf)
 	}
 	buf.WriteString(obj.Name())
 	if typ != nil {
 		buf.WriteByte(' ')
-		WriteType(buf, this, typ)
+		WriteType(buf, typ, qf)
+	}
+}
+
+func writePackage(buf *bytes.Buffer, pkg *Package, qf Qualifier) {
+	if pkg == nil {
+		return
+	}
+	var s string
+	if qf != nil {
+		s = qf(pkg)
+	} else {
+		s = pkg.Path()
+	}
+	if s != "" {
+		buf.WriteString(s)
+		buf.WriteByte('.')
 	}
 }
 
 // ObjectString returns the string form of obj.
-// Object and type names are printed package-qualified
-// only if they do not belong to this package.
-//
-func ObjectString(this *Package, obj Object) string {
+// The Qualifier controls the printing of
+// package-level objects, and may be nil.
+func ObjectString(obj Object, qf Qualifier) string {
 	var buf bytes.Buffer
-	writeObject(&buf, this, obj)
+	writeObject(&buf, obj, qf)
 	return buf.String()
 }
 
-func (obj *PkgName) String() string  { return ObjectString(nil, obj) }
-func (obj *Const) String() string    { return ObjectString(nil, obj) }
-func (obj *TypeName) String() string { return ObjectString(nil, obj) }
-func (obj *Var) String() string      { return ObjectString(nil, obj) }
-func (obj *Func) String() string     { return ObjectString(nil, obj) }
-func (obj *Label) String() string    { return ObjectString(nil, obj) }
-func (obj *Builtin) String() string  { return ObjectString(nil, obj) }
-func (obj *Nil) String() string      { return ObjectString(nil, obj) }
+func (obj *PkgName) String() string  { return ObjectString(obj, nil) }
+func (obj *Const) String() string    { return ObjectString(obj, nil) }
+func (obj *TypeName) String() string { return ObjectString(obj, nil) }
+func (obj *Var) String() string      { return ObjectString(obj, nil) }
+func (obj *Func) String() string     { return ObjectString(obj, nil) }
+func (obj *Label) String() string    { return ObjectString(obj, nil) }
+func (obj *Builtin) String() string  { return ObjectString(obj, nil) }
+func (obj *Nil) String() string      { return ObjectString(obj, nil) }
 
-func writeFuncName(buf *bytes.Buffer, this *Package, f *Func) {
+func writeFuncName(buf *bytes.Buffer, f *Func, qf Qualifier) {
 	if f.typ != nil {
 		sig := f.typ.(*Signature)
 		if recv := sig.Recv(); recv != nil {
@@ -327,13 +349,12 @@
 				// Don't print it in full.
 				buf.WriteString("interface")
 			} else {
-				WriteType(buf, this, recv.Type())
+				WriteType(buf, recv.Type(), qf)
 			}
 			buf.WriteByte(')')
 			buf.WriteByte('.')
-		} else if f.pkg != nil && f.pkg != this {
-			buf.WriteString(f.pkg.path)
-			buf.WriteByte('.')
+		} else if f.pkg != nil {
+			writePackage(buf, f.pkg, qf)
 		}
 	}
 	buf.WriteString(f.name)
diff --git a/go/src/golang.org/x/tools/go/types/operand.go b/go/src/golang.org/x/tools/go/types/operand.go
index 7418eef..0ac6767 100644
--- a/go/src/golang.org/x/tools/go/types/operand.go
+++ b/go/src/golang.org/x/tools/go/types/operand.go
@@ -94,7 +94,7 @@
 // commaok    <expr> (<untyped kind> <mode>                    )
 // commaok    <expr> (               <mode>       of type <typ>)
 //
-func operandString(this *Package, x *operand) string {
+func operandString(x *operand, qf Qualifier) string {
 	var buf bytes.Buffer
 
 	var expr string
@@ -105,7 +105,7 @@
 		case builtin:
 			expr = predeclaredFuncs[x.id].name
 		case typexpr:
-			expr = TypeString(this, x.typ)
+			expr = TypeString(x.typ, qf)
 		case constant:
 			expr = x.val.String()
 		}
@@ -147,7 +147,7 @@
 	if hasType {
 		if x.typ != Typ[Invalid] {
 			buf.WriteString(" of type ")
-			WriteType(&buf, this, x.typ)
+			WriteType(&buf, x.typ, qf)
 		} else {
 			buf.WriteString(" with invalid type")
 		}
@@ -162,7 +162,7 @@
 }
 
 func (x *operand) String() string {
-	return operandString(nil, x)
+	return operandString(x, nil)
 }
 
 // setConst sets x to the untyped constant for literal lit.
diff --git a/go/src/golang.org/x/tools/go/types/package.go b/go/src/golang.org/x/tools/go/types/package.go
index 366ca39..48fe839 100644
--- a/go/src/golang.org/x/tools/go/types/package.go
+++ b/go/src/golang.org/x/tools/go/types/package.go
@@ -4,7 +4,10 @@
 
 package types
 
-import "fmt"
+import (
+	"fmt"
+	"go/token"
+)
 
 // A Package describes a Go package.
 type Package struct {
@@ -23,7 +26,7 @@
 	if name == "_" {
 		panic("invalid package name _")
 	}
-	scope := NewScope(Universe, fmt.Sprintf("package %q", path))
+	scope := NewScope(Universe, token.NoPos, token.NoPos, fmt.Sprintf("package %q", path))
 	return &Package{path: path, name: name, scope: scope}
 }
 
@@ -45,8 +48,12 @@
 // MarkComplete marks a package as complete.
 func (pkg *Package) MarkComplete() { pkg.complete = true }
 
-// Imports returns the list of packages explicitly imported by
+// Imports returns the list of packages directly imported by
 // pkg; the list is in source order. Package unsafe is excluded.
+//
+// If pkg was loaded from export data, Imports includes packages that
+// provide package-level objects referenced by pkg.  This may be more or
+// less than the set of packages directly imported by pkg's source code.
 func (pkg *Package) Imports() []*Package { return pkg.imports }
 
 // SetImports sets the list of explicitly imported packages to list.
diff --git a/go/src/golang.org/x/tools/go/types/resolver.go b/go/src/golang.org/x/tools/go/types/resolver.go
index 7eb18a2..374ffc2 100644
--- a/go/src/golang.org/x/tools/go/types/resolver.go
+++ b/go/src/golang.org/x/tools/go/types/resolver.go
@@ -108,7 +108,7 @@
 		return
 	}
 
-	check.declare(check.pkg.scope, ident, obj)
+	check.declare(check.pkg.scope, ident, obj, token.NoPos)
 	check.objMap[obj] = d
 	obj.setOrder(uint32(len(check.objMap)))
 }
@@ -153,7 +153,14 @@
 		// but there is no corresponding package object.
 		check.recordDef(file.Name, nil)
 
-		fileScope := NewScope(check.pkg.scope, check.filename(fileNo))
+		// Use the actual source file extent rather than *ast.File extent since the
+		// latter doesn't include comments which appear at the start or end of the file.
+		// Be conservative and use the *ast.File extent if we don't have a *token.File.
+		pos, end := file.Pos(), file.End()
+		if f := check.fset.File(file.Pos()); f != nil {
+			pos, end = token.Pos(f.Base()), token.Pos(f.Base()+f.Size())
+		}
+		fileScope := NewScope(check.pkg.scope, pos, end, check.filename(fileNo))
 		check.recordScope(file, fileScope)
 
 		for _, decl := range file.Decls {
@@ -232,7 +239,7 @@
 									// information because the same package - found
 									// via Config.Packages - may be dot-imported in
 									// another package!)
-									check.declare(fileScope, nil, obj)
+									check.declare(fileScope, nil, obj, token.NoPos)
 									check.recordImplicit(s, obj)
 								}
 							}
@@ -241,7 +248,7 @@
 							check.addUnusedDotImport(fileScope, imp, s.Pos())
 						} else {
 							// declare imported package object in file scope
-							check.declare(fileScope, nil, obj)
+							check.declare(fileScope, nil, obj, token.NoPos)
 						}
 
 					case *ast.ValueSpec:
@@ -331,7 +338,7 @@
 							check.softErrorf(obj.pos, "missing function body")
 						}
 					} else {
-						check.declare(pkg.scope, d.Name, obj)
+						check.declare(pkg.scope, d.Name, obj, token.NoPos)
 					}
 				} else {
 					// method
diff --git a/go/src/golang.org/x/tools/go/types/resolver_test.go b/go/src/golang.org/x/tools/go/types/resolver_test.go
index d8af7a0..2ef1f18 100644
--- a/go/src/golang.org/x/tools/go/types/resolver_test.go
+++ b/go/src/golang.org/x/tools/go/types/resolver_test.go
@@ -16,79 +16,81 @@
 	. "golang.org/x/tools/go/types"
 )
 
-var sources = []string{
-	`
-	package p
-	import "fmt"
-	import "math"
-	const pi = math.Pi
-	func sin(x float64) float64 {
-		return math.Sin(x)
-	}
-	var Println = fmt.Println
-	`,
-	`
-	package p
-	import "fmt"
-	type errorStringer struct { fmt.Stringer; error }
-	func f() string {
-		_ = "foo"
-		return fmt.Sprintf("%d", g())
-	}
-	func g() (x int) { return }
-	`,
-	`
-	package p
-	import . "go/parser"
-	import "sync"
-	func h() Mode { return ImportsOnly }
-	var _, x int = 1, 2
-	func init() {}
-	type T struct{ *sync.Mutex; a, b, c int}
-	type I interface{ m() }
-	var _ = T{a: 1, b: 2, c: 3}
-	func (_ T) m() {}
-	func (T) _() {}
-	var i I
-	var _ = i.m
-	func _(s []int) { for i, x := range s { _, _ = i, x } }
-	func _(x interface{}) {
-		switch x := x.(type) {
-		case int:
-			_ = x
-		}
-		switch {} // implicit 'true' tag
-	}
-	`,
-	`
-	package p
-	type S struct{}
-	func (T) _() {}
-	func (T) _() {}
-	`,
-	`
-	package p
-	func _() {
-	L0:
-	L1:
-		goto L0
-		for {
-			goto L1
-		}
-		if true {
-			goto L2
-		}
-	L2:
-	}
-	`,
-}
-
-var pkgnames = []string{
-	"fmt",
-	"math",
-}
-
 func TestResolveIdents(t *testing.T) {
+	skipSpecialPlatforms(t)
+
+	sources := []string{
+		`
+		package p
+		import "fmt"
+		import "math"
+		const pi = math.Pi
+		func sin(x float64) float64 {
+			return math.Sin(x)
+		}
+		var Println = fmt.Println
+		`,
+		`
+		package p
+		import "fmt"
+		type errorStringer struct { fmt.Stringer; error }
+		func f() string {
+			_ = "foo"
+			return fmt.Sprintf("%d", g())
+		}
+		func g() (x int) { return }
+		`,
+		`
+		package p
+		import . "go/parser"
+		import "sync"
+		func h() Mode { return ImportsOnly }
+		var _, x int = 1, 2
+		func init() {}
+		type T struct{ *sync.Mutex; a, b, c int}
+		type I interface{ m() }
+		var _ = T{a: 1, b: 2, c: 3}
+		func (_ T) m() {}
+		func (T) _() {}
+		var i I
+		var _ = i.m
+		func _(s []int) { for i, x := range s { _, _ = i, x } }
+		func _(x interface{}) {
+			switch x := x.(type) {
+			case int:
+				_ = x
+			}
+			switch {} // implicit 'true' tag
+		}
+		`,
+		`
+		package p
+		type S struct{}
+		func (T) _() {}
+		func (T) _() {}
+		`,
+		`
+		package p
+		func _() {
+		L0:
+		L1:
+			goto L0
+			for {
+				goto L1
+			}
+			if true {
+				goto L2
+			}
+		L2:
+		}
+		`,
+	}
+
+	pkgnames := []string{
+		"fmt",
+		"math",
+	}
+
 	// parse package files
 	fset := token.NewFileSet()
 	var files []*ast.File
diff --git a/go/src/golang.org/x/tools/go/types/return.go b/go/src/golang.org/x/tools/go/types/return.go
index df5a482..6628985 100644
--- a/go/src/golang.org/x/tools/go/types/return.go
+++ b/go/src/golang.org/x/tools/go/types/return.go
@@ -31,7 +31,7 @@
 		// the predeclared (possibly parenthesized) panic() function is terminating
 		if call, _ := unparen(s.X).(*ast.CallExpr); call != nil {
 			if id, _ := call.Fun.(*ast.Ident); id != nil {
-				if _, obj := check.scope.LookupParent(id.Name); obj != nil {
+				if _, obj := check.scope.LookupParent(id.Name, token.NoPos); obj != nil {
 					if b, _ := obj.(*Builtin); b != nil && b.id == _Panic {
 						return true
 					}
diff --git a/go/src/golang.org/x/tools/go/types/scope.go b/go/src/golang.org/x/tools/go/types/scope.go
index 8ab0f64..3502840 100644
--- a/go/src/golang.org/x/tools/go/types/scope.go
+++ b/go/src/golang.org/x/tools/go/types/scope.go
@@ -9,6 +9,7 @@
 import (
 	"bytes"
 	"fmt"
+	"go/token"
 	"io"
 	"sort"
 	"strings"
@@ -24,14 +25,15 @@
 type Scope struct {
 	parent   *Scope
 	children []*Scope
-	comment  string            // for debugging only
 	elems    map[string]Object // lazily allocated
+	pos, end token.Pos         // scope extent; may be invalid
+	comment  string            // for debugging only
 }
 
 // NewScope returns a new, empty scope contained in the given parent
 // scope, if any.  The comment is for debugging only.
-func NewScope(parent *Scope, comment string) *Scope {
-	s := &Scope{parent: parent, comment: comment}
+func NewScope(parent *Scope, pos, end token.Pos, comment string) *Scope {
+	s := &Scope{parent, nil, nil, pos, end, comment}
 	// don't add children to Universe scope!
 	if parent != nil && parent != Universe {
 		parent.children = append(parent.children, s)
@@ -71,15 +73,17 @@
 
 // LookupParent follows the parent chain of scopes starting with s until
 // it finds a scope where Lookup(name) returns a non-nil object, and then
-// returns that scope and object. If no such scope exists, the result is (nil, nil).
+// returns that scope and object. If a valid position pos is provided,
+// only objects that were declared at or before pos are considered.
+// If no such scope and object exists, the result is (nil, nil).
 //
 // Note that obj.Parent() may be different from the returned scope if the
 // object was inserted into the scope and already had a parent at that
 // time (see Insert, below). This can only happen for dot-imported objects
 // whose scope is the scope of the package that exported them.
-func (s *Scope) LookupParent(name string) (*Scope, Object) {
+func (s *Scope) LookupParent(name string, pos token.Pos) (*Scope, Object) {
 	for ; s != nil; s = s.parent {
-		if obj := s.elems[name]; obj != nil {
+		if obj := s.elems[name]; obj != nil && (!pos.IsValid() || obj.scopePos() <= pos) {
 			return s, obj
 		}
 	}
@@ -106,6 +110,47 @@
 	return nil
 }
 
+// Pos and End describe the scope's source code extent [pos, end).
+// The results are guaranteed to be valid only if the type-checked
+// AST has complete position information. The extent is undefined
+// for Universe and package scopes.
+func (s *Scope) Pos() token.Pos { return s.pos }
+func (s *Scope) End() token.Pos { return s.end }
+
+// Contains returns true if pos is within the scope's extent.
+// The result is guaranteed to be valid only if the type-checked
+// AST has complete position information.
+func (s *Scope) Contains(pos token.Pos) bool {
+	return s.pos <= pos && pos < s.end
+}
+
+// Innermost returns the innermost (child) scope containing
+// pos. If pos is not within any scope, the result is nil.
+// The result is also nil for the Universe scope.
+// The result is guaranteed to be valid only if the type-checked
+// AST has complete position information.
+func (s *Scope) Innermost(pos token.Pos) *Scope {
+	// Package scopes do not have extents since they may be
+	// discontiguous, so iterate over the package's files.
+	if s.parent == Universe {
+		for _, s := range s.children {
+			if inner := s.Innermost(pos); inner != nil {
+				return inner
+			}
+		}
+	}
+
+	if s.Contains(pos) {
+		for _, s := range s.children {
+			if s.Contains(pos) {
+				return s.Innermost(pos)
+			}
+		}
+		return s
+	}
+	return nil
+}
+
 // WriteTo writes a string representation of the scope to w,
 // with the scope elements sorted by name.
 // The level of indentation is controlled by n >= 0, with
diff --git a/go/src/golang.org/x/tools/go/types/selection.go b/go/src/golang.org/x/tools/go/types/selection.go
index 1c70165..124e0d3 100644
--- a/go/src/golang.org/x/tools/go/types/selection.go
+++ b/go/src/golang.org/x/tools/go/types/selection.go
@@ -105,18 +105,18 @@
 // x to f in x.f.
 func (s *Selection) Indirect() bool { return s.indirect }
 
-func (s *Selection) String() string { return SelectionString(nil, s) }
+func (s *Selection) String() string { return SelectionString(s, nil) }
 
 // SelectionString returns the string form of s.
-// Type names are printed package-qualified
-// only if they do not belong to this package.
+// The Qualifier controls the printing of
+// package-level objects, and may be nil.
 //
 // Examples:
 //	"field (T) f int"
 //	"method (T) f(X) Y"
 //	"method expr (T) f(X) Y"
 //
-func SelectionString(this *Package, s *Selection) string {
+func SelectionString(s *Selection, qf Qualifier) string {
 	var k string
 	switch s.kind {
 	case FieldVal:
@@ -131,13 +131,13 @@
 	var buf bytes.Buffer
 	buf.WriteString(k)
 	buf.WriteByte('(')
-	WriteType(&buf, this, s.Recv())
+	WriteType(&buf, s.Recv(), qf)
 	fmt.Fprintf(&buf, ") %s", s.obj.Name())
 	if T := s.Type(); s.kind == FieldVal {
 		buf.WriteByte(' ')
-		WriteType(&buf, this, T)
+		WriteType(&buf, T, qf)
 	} else {
-		WriteSignature(&buf, this, T.(*Signature))
+		WriteSignature(&buf, T.(*Signature), qf)
 	}
 	return buf.String()
 }
diff --git a/go/src/golang.org/x/tools/go/types/stdlib_test.go b/go/src/golang.org/x/tools/go/types/stdlib_test.go
index 8629022..02d00df 100644
--- a/go/src/golang.org/x/tools/go/types/stdlib_test.go
+++ b/go/src/golang.org/x/tools/go/types/stdlib_test.go
@@ -32,6 +32,8 @@
 )
 
 func TestStdlib(t *testing.T) {
+	skipSpecialPlatforms(t)
+
 	walkDirs(t, filepath.Join(runtime.GOROOT(), "src"))
 	if testing.Verbose() {
 		fmt.Println(pkgCount, "packages typechecked in", time.Since(start))
@@ -116,23 +118,37 @@
 }
 
 func TestStdTest(t *testing.T) {
+	skipSpecialPlatforms(t)
+
+	// test/recover4.go is only built for Linux and Darwin.
+	// TODO(gri) Remove once tests consider +build tags (issue 10370).
+	if runtime.GOOS != "linux" || runtime.GOOS != "darwin" {
+		return
+	}
+
 	testTestDir(t, filepath.Join(runtime.GOROOT(), "test"),
 		"cmplxdivide.go", // also needs file cmplxdivide1.go - ignore
 		"sigchld.go",     // don't work on Windows; testTestDir should consult build tags
-		"float_lit2.go",  // TODO(gri) enable for releases 1.4 and higher
 	)
 }
 
 func TestStdFixed(t *testing.T) {
+	skipSpecialPlatforms(t)
+
 	testTestDir(t, filepath.Join(runtime.GOROOT(), "test", "fixedbugs"),
 		"bug248.go", "bug302.go", "bug369.go", // complex test instructions - ignore
-		"bug459.go",    // possibly incorrect test - see issue 6703 (pending spec clarification)
-		"issue3924.go", // possibly incorrect test - see issue 6671 (pending spec clarification)
-		"issue6889.go", // gc-specific test
+		"bug459.go",      // possibly incorrect test - see issue 6703 (pending spec clarification)
+		"issue3924.go",   // possibly incorrect test - see issue 6671 (pending spec clarification)
+		"issue6889.go",   // gc-specific test
+		"issue7746.go",   // large constants - consumes too much memory
+		"issue11326.go",  // large constants
+		"issue11326b.go", // large constants
 	)
 }
 
 func TestStdKen(t *testing.T) {
+	skipSpecialPlatforms(t)
+
 	testTestDir(t, filepath.Join(runtime.GOROOT(), "test", "ken"))
 }
 
diff --git a/go/src/golang.org/x/tools/go/types/stmt.go b/go/src/golang.org/x/tools/go/types/stmt.go
index fa60f64..0aafb30 100644
--- a/go/src/golang.org/x/tools/go/types/stmt.go
+++ b/go/src/golang.org/x/tools/go/types/stmt.go
@@ -23,6 +23,10 @@
 		defer fmt.Println("--- <end>")
 	}
 
+	// set function scope extent
+	sig.scope.pos = body.Pos()
+	sig.scope.end = body.End()
+
 	// save/restore current context and setup function context
 	// (and use 0 indentation at function start)
 	defer func(ctxt context, indent int) {
@@ -119,7 +123,7 @@
 }
 
 func (check *Checker) openScope(s ast.Stmt, comment string) {
-	scope := NewScope(check.scope, comment)
+	scope := NewScope(check.scope, s.Pos(), s.End(), comment)
 	check.recordScope(s, scope)
 	check.scope = scope
 }
@@ -274,7 +278,7 @@
 		}
 		var x operand
 		Y := &ast.BasicLit{ValuePos: s.X.Pos(), Kind: token.INT, Value: "1"} // use x's position
-		check.binary(&x, s.X, Y, op)
+		check.binary(&x, nil, s.X, Y, op)
 		if x.mode == invalid {
 			return
 		}
@@ -306,7 +310,7 @@
 				return
 			}
 			var x operand
-			check.binary(&x, s.Lhs[0], s.Rhs[0], op)
+			check.binary(&x, nil, s.Lhs[0], s.Rhs[0], op)
 			if x.mode == invalid {
 				return
 			}
@@ -329,7 +333,7 @@
 				// list in a "return" statement if a different entity (constant, type, or variable)
 				// with the same name as a result parameter is in scope at the place of the return."
 				for _, obj := range res.vars {
-					if _, alt := check.scope.LookupParent(obj.name); alt != nil && alt != obj {
+					if _, alt := check.scope.LookupParent(obj.name, check.pos); alt != nil && alt != obj {
 						check.errorf(s.Pos(), "result parameter %s not in scope at return", obj.name)
 						check.errorf(alt.Pos(), "\tinner declaration of %s", obj)
 						// ok to continue
@@ -456,7 +460,14 @@
 				check.invalidAST(s.Pos(), "incorrect form of type switch guard")
 				return
 			}
-			check.recordDef(lhs, nil) // lhs variable is implicitly declared in each cause clause
+
+			if lhs.Name == "_" {
+				// _ := x.(type) is an invalid short variable declaration
+				check.softErrorf(lhs.Pos(), "no new variable on left side of :=")
+				lhs = nil // avoid declared but not used error below
+			} else {
+				check.recordDef(lhs, nil) // lhs variable is implicitly declared in each cause clause
+			}
 
 			rhs = guard.Rhs[0]
 
@@ -506,7 +517,11 @@
 					T = x.typ
 				}
 				obj := NewVar(lhs.Pos(), check.pkg, lhs.Name, T)
-				check.declare(check.scope, nil, obj)
+				scopePos := clause.End()
+				if len(clause.Body) > 0 {
+					scopePos = clause.Body[0].Pos()
+				}
+				check.declare(check.scope, nil, obj, scopePos)
 				check.recordImplicit(clause, obj)
 				// For the "declared but not used" error, all lhs variables act as
 				// one; i.e., if any one of them is 'used', all of them are 'used'.
@@ -604,60 +619,49 @@
 		defer check.closeScope()
 
 		// check expression to iterate over
-		decl := s.Tok == token.DEFINE
 		var x operand
 		check.expr(&x, s.X)
-		if x.mode == invalid {
-			// if we don't have a declaration, we can still check the loop's body
-			// (otherwise we can't because we are missing the declared variables)
-			if !decl {
-				check.stmt(inner, s.Body)
-			}
-			return
-		}
 
 		// determine key/value types
 		var key, val Type
-		switch typ := x.typ.Underlying().(type) {
-		case *Basic:
-			if isString(typ) {
-				key = Typ[Int]
-				val = UniverseRune // use 'rune' name
-			}
-		case *Array:
-			key = Typ[Int]
-			val = typ.elem
-		case *Slice:
-			key = Typ[Int]
-			val = typ.elem
-		case *Pointer:
-			if typ, _ := typ.base.Underlying().(*Array); typ != nil {
+		if x.mode != invalid {
+			switch typ := x.typ.Underlying().(type) {
+			case *Basic:
+				if isString(typ) {
+					key = Typ[Int]
+					val = UniverseRune // use 'rune' name
+				}
+			case *Array:
 				key = Typ[Int]
 				val = typ.elem
-			}
-		case *Map:
-			key = typ.key
-			val = typ.elem
-		case *Chan:
-			key = typ.elem
-			val = Typ[Invalid]
-			if typ.dir == SendOnly {
-				check.errorf(x.pos(), "cannot range over send-only channel %s", &x)
-				// ok to continue
-			}
-			if s.Value != nil {
-				check.errorf(s.Value.Pos(), "iteration over %s permits only one iteration variable", &x)
-				// ok to continue
+			case *Slice:
+				key = Typ[Int]
+				val = typ.elem
+			case *Pointer:
+				if typ, _ := typ.base.Underlying().(*Array); typ != nil {
+					key = Typ[Int]
+					val = typ.elem
+				}
+			case *Map:
+				key = typ.key
+				val = typ.elem
+			case *Chan:
+				key = typ.elem
+				val = Typ[Invalid]
+				if typ.dir == SendOnly {
+					check.errorf(x.pos(), "cannot range over send-only channel %s", &x)
+					// ok to continue
+				}
+				if s.Value != nil {
+					check.errorf(s.Value.Pos(), "iteration over %s permits only one iteration variable", &x)
+					// ok to continue
+				}
 			}
 		}
 
 		if key == nil {
 			check.errorf(x.pos(), "cannot range over %s", &x)
-			// if we don't have a declaration, we can still check the loop's body
-			if !decl {
-				check.stmt(inner, s.Body)
-			}
-			return
+			// ok to continue
 		}
 
 		// check assignment to/declaration of iteration variables
@@ -665,9 +669,9 @@
 
 		// lhs expressions and initialization value (rhs) types
 		lhs := [2]ast.Expr{s.Key, s.Value}
-		rhs := [2]Type{key, val}
+		rhs := [2]Type{key, val} // key, val may be nil
 
-		if decl {
+		if s.Tok == token.DEFINE {
 			// short variable declaration; variable scope starts after the range clause
 			// (the for loop opens a new scope, so variables on the lhs never redeclare
 			// previously declared variables)
@@ -694,16 +698,26 @@
 				}
 
 				// initialize lhs variable
-				x.mode = value
-				x.expr = lhs // we don't have a better rhs expression to use here
-				x.typ = rhs[i]
-				check.initVar(obj, &x, false)
+				if typ := rhs[i]; typ != nil {
+					x.mode = value
+					x.expr = lhs // we don't have a better rhs expression to use here
+					x.typ = typ
+					check.initVar(obj, &x, false)
+				} else {
+					obj.typ = Typ[Invalid]
+					obj.used = true // don't complain about unused variable
+				}
 			}
 
 			// declare variables
 			if len(vars) > 0 {
 				for _, obj := range vars {
-					check.declare(check.scope, nil /* recordDef already called */, obj)
+					// spec: "The scope of a constant or variable identifier declared inside
+					// a function begins at the end of the ConstSpec or VarSpec (ShortVarDecl
+					// for short variable declarations) and ends at the end of the innermost
+					// containing block."
+					scopePos := s.End()
+					check.declare(check.scope, nil /* recordDef already called */, obj, scopePos)
 				}
 			} else {
 				check.error(s.TokPos, "no new variables on left side of :=")
@@ -714,10 +728,12 @@
 				if lhs == nil {
 					continue
 				}
-				x.mode = value
-				x.expr = lhs // we don't have a better rhs expression to use here
-				x.typ = rhs[i]
-				check.assignVar(lhs, &x)
+				if typ := rhs[i]; typ != nil {
+					x.mode = value
+					x.expr = lhs // we don't have a better rhs expression to use here
+					x.typ = typ
+					check.assignVar(lhs, &x)
+				}
 			}
 		}
 
diff --git a/go/src/golang.org/x/tools/go/types/testdata/conversions.src b/go/src/golang.org/x/tools/go/types/testdata/conversions.src
index 4251424..e1336c0 100644
--- a/go/src/golang.org/x/tools/go/types/testdata/conversions.src
+++ b/go/src/golang.org/x/tools/go/types/testdata/conversions.src
@@ -32,6 +32,11 @@
 	const _ = string(true /* ERROR "cannot convert" */ )
 	const _ = string(1.2 /* ERROR "cannot convert" */ )
 	const _ = string(nil /* ERROR "cannot convert" */ )
+
+	// issues 11357, 11353: argument must be of integer type
+	_ = string(0.0 /* ERROR "cannot convert" */ )
+	_ = string(0i /* ERROR "cannot convert" */ )
+	_ = string(1 /* ERROR "cannot convert" */ + 2i)
 }
 
 func interface_conversions() {
diff --git a/go/src/golang.org/x/tools/go/types/testdata/expr0.src b/go/src/golang.org/x/tools/go/types/testdata/expr0.src
index 5afb5d7..3120c6f 100644
--- a/go/src/golang.org/x/tools/go/types/testdata/expr0.src
+++ b/go/src/golang.org/x/tools/go/types/testdata/expr0.src
@@ -25,6 +25,12 @@
 	b12 = <-b0 /* ERROR "cannot receive" */
 	b13 = & & /* ERROR "cannot take address" */ b0
 
+	// byte
+	_ = byte(0)
+	_ = byte(- /* ERROR "cannot convert" */ 1)
+	_ = - /* ERROR "-byte\(1\) \(constant -1 of type byte\) overflows byte" */ byte(1) // test for issue 11367
+	_ = byte /* ERROR "overflows byte" */ (0) - byte(1)
+
 	// int
 	i0 = 1
 	i1 int = i0
diff --git a/go/src/golang.org/x/tools/go/types/testdata/expr3.src b/go/src/golang.org/x/tools/go/types/testdata/expr3.src
index 125a850..5772095 100644
--- a/go/src/golang.org/x/tools/go/types/testdata/expr3.src
+++ b/go/src/golang.org/x/tools/go/types/testdata/expr3.src
@@ -186,7 +186,7 @@
 	_ = T1{a: 0, s: "foo", u: 0, a /* ERROR "duplicate field" */: 10}
 	_ = T1{a: "foo" /* ERROR "cannot convert" */ }
 	_ = T1{c /* ERROR "unknown field" */ : 0}
-	_ = T1{T0: { /* ERROR "missing type" */ }}
+	_ = T1{T0: { /* ERROR "missing type" */ }} // struct literal element type may not be elided
 	_ = T1{T0: T0{}}
 	_ = T1{T0 /* ERROR "invalid field name" */ .a: 0}
 
@@ -265,6 +265,15 @@
 	a4 := [...]complex128{0, 1, 2, 1<<10-2: -1i, 1i, 400: 10, 12, 14}
 	assert(len(a4) == 1024)
 
+	// composite literal element types may be elided
+	type T []int
+	_ = [10]T{T{}, {}, 5: T{1, 2, 3}, 7: {1, 2, 3}}
+	a6 := [...]T{T{}, {}, 5: T{1, 2, 3}, 7: {1, 2, 3}}
+	assert(len(a6) == 8)
+
+	// recursively so
+	_ = [10][10]T{{}, [10]T{{}}, {{1, 2, 3}}}
+
 	// from the spec
 	type Point struct { x, y float32 }
 	_ = [...]Point{Point{1.5, -3.5}, Point{0, 0}}
@@ -308,6 +317,13 @@
 	_ = S0{f /* ERROR "truncated" */ : 0}
 	_ = S0{s /* ERROR "cannot convert" */ : 0}
 
+	// composite literal element types may be elided
+	type T []int
+	_ = []T{T{}, {}, 5: T{1, 2, 3}, 7: {1, 2, 3}}
+	_ = [][]int{{1, 2, 3}, {4, 5}}
+
+	// recursively so
+	_ = [][]T{{}, []T{{}}, {{1, 2, 3}}}
 }
 
 const index2 int = 2
@@ -352,6 +368,31 @@
 	var value int
 	_ = M1{true: 1, false: 0}
 	_ = M2{nil: 0, &value: 1}
+
+	// composite literal element types may be elided
+	type T [2]int
+	_ = map[int]T{0: T{3, 4}, 1: {5, 6}}
+
+	// recursively so
+	_ = map[int][]T{0: {}, 1: {{}, T{1, 2}}}
+
+	// composite literal key types may be elided
+	_ = map[T]int{T{3, 4}: 0, {5, 6}: 1}
+
+	// recursively so
+	_ = map[[2]T]int{{}: 0, {{}}: 1, [2]T{{}}: 2, {T{1, 2}}: 3}
+
+	// composite literal element and key types may be elided
+	_ = map[T]T{{}: {}, {1, 2}: T{3, 4}, T{4, 5}: {}}
+	_ = map[T]M0{{} : {}, T{1, 2}: M0{"foo": 0}, {1, 3}: {"foo": 1}}
+
+	// recursively so
+	_ = map[[2]T][]T{{}: {}, {{}}: {{}, T{1, 2}}, [2]T{{}}: nil, {T{1, 2}}: {{}, {}}}
+
+	// from the spec
+	type Point struct { x, y float32 }
+	_ = map[string]Point{"orig": {0, 0}}
+	_ = map[*Point]string{{0, 0}: "orig"}
 }
 
 var key2 string = "bar"
diff --git a/go/src/golang.org/x/tools/go/types/testdata/issues.src b/go/src/golang.org/x/tools/go/types/testdata/issues.src
index d08e0fd..595a634 100644
--- a/go/src/golang.org/x/tools/go/types/testdata/issues.src
+++ b/go/src/golang.org/x/tools/go/types/testdata/issues.src
@@ -71,3 +71,27 @@
 	append_(f0(), f1()... /* ERROR cannot use */ )
 	append_(f0(), f2()... /* ERROR cannot use */ )
 }
+
+// Check that embedding a non-interface type in an interface results in a good error message.
+func issue10979() {
+	type _ interface {
+		int /* ERROR int is not an interface */
+	}
+	type T struct{}
+	type _ interface {
+		T /* ERROR T is not an interface */
+	}
+	type _ interface {
+		nosuchtype /* ERROR undeclared name: nosuchtype */
+	}
+	type _ interface {
+		fmt /* ERROR Nosuchtype not declared by package fmt */ .Nosuchtype
+	}
+	type _ interface {
+		nosuchpkg /* ERROR undeclared name: nosuchpkg */ .Nosuchtype
+	}
+	type I interface {
+		I /* ERROR I\.m \(value of type func\(I\)\) is not a type */ .m
+		m()
+	}
+}
diff --git a/go/src/golang.org/x/tools/go/types/testdata/shifts.src b/go/src/golang.org/x/tools/go/types/testdata/shifts.src
index 7f8ed06..2df2ccd 100644
--- a/go/src/golang.org/x/tools/go/types/testdata/shifts.src
+++ b/go/src/golang.org/x/tools/go/types/testdata/shifts.src
@@ -319,3 +319,15 @@
 	var x = 'a' << 1 // type of x must be rune
 	var _ rune = x
 }
+
+func issue11325() {
+	var _ = 0 >> 1.1 /* ERROR "must be unsigned integer" */ // example from issue 11325
+	_ = 0 >> 1.1 /* ERROR "must be unsigned integer" */
+	_ = 0 << 1.1 /* ERROR "must be unsigned integer" */
+	_ = 0 >> 1.
+	_ = 1 >> 1.1 /* ERROR "must be unsigned integer" */
+	_ = 1 >> 1.
+	_ = 1. >> 1
+	_ = 1. >> 1.
+	_ = 1.1 /* ERROR "must be integer" */ >> 1
+}
diff --git a/go/src/golang.org/x/tools/go/types/testdata/stmt0.src b/go/src/golang.org/x/tools/go/types/testdata/stmt0.src
index 4c84036..fd1ddba 100644
--- a/go/src/golang.org/x/tools/go/types/testdata/stmt0.src
+++ b/go/src/golang.org/x/tools/go/types/testdata/stmt0.src
@@ -540,6 +540,7 @@
 	}
 
 	switch x /* ERROR "declared but not used" */ := x.(type) {}
+	switch _ /* ERROR "no new variable on left side of :=" */ := x.(type) {}
 
 	switch x := x.(type) {
 	case int:
@@ -784,6 +785,21 @@
 	for a, a /* ERROR redeclared */ := range []int{1, 2, 3} { _ = a }
 }
 
+// Test that despite errors in the range clause,
+// the loop body is still type-checked (and thus
+// errors reported).
+func issue10148() {
+	for y /* ERROR declared but not used */ := range "" {
+		_ = "" /* ERROR cannot convert */ + 1
+	}
+	for range 1 /* ERROR cannot range over 1 */ {
+		_ = "" /* ERROR cannot convert */ + 1
+	}
+	for y := range 1 /* ERROR cannot range over 1 */ {
+		_ = "" /* ERROR cannot convert */ + 1
+	}
+}
+
 func labels0() {
 	goto L0
 	goto L1
diff --git a/go/src/golang.org/x/tools/go/types/type.go b/go/src/golang.org/x/tools/go/types/type.go
index 4b4e5f6..1df8b45 100644
--- a/go/src/golang.org/x/tools/go/types/type.go
+++ b/go/src/golang.org/x/tools/go/types/type.go
@@ -196,7 +196,11 @@
 
 // A Signature represents a (non-builtin) function or method type.
 type Signature struct {
-	scope    *Scope // function scope, always present
+	// We need to keep the scope in Signature (rather than passing it around
+	// and store it in the Func Object) because when type-checking a function
+	// literal we call the general type checker which returns a general Type.
+	// We then unpack the *Signature and use the scope for the literal body.
+	scope    *Scope // function scope, present for package-local signatures
 	recv     *Var   // nil if not a method
 	params   *Tuple // (incoming) parameters from left to right; or nil
 	results  *Tuple // (outgoing) results from left to right; or nil
@@ -207,9 +211,7 @@
 // and results, either of which may be nil. If variadic is set, the function
 // is variadic, it must have at least one parameter, and the last parameter
 // must be of unnamed slice type.
-func NewSignature(scope *Scope, recv *Var, params, results *Tuple, variadic bool) *Signature {
-	// TODO(gri) Should we rely on the correct (non-nil) incoming scope
-	//           or should this function allocate and populate a scope?
+func NewSignature(recv *Var, params, results *Tuple, variadic bool) *Signature {
 	if variadic {
 		n := params.Len()
 		if n == 0 {
@@ -219,7 +221,7 @@
 			panic("types.NewSignature: variadic parameter must be of unnamed slice type")
 		}
 	}
-	return &Signature{scope, recv, params, results, variadic}
+	return &Signature{nil, recv, params, results, variadic}
 }
 
 // Recv returns the receiver of signature s (if a method), or nil if a
@@ -439,14 +441,14 @@
 func (t *Chan) Underlying() Type      { return t }
 func (t *Named) Underlying() Type     { return t.underlying }
 
-func (t *Basic) String() string     { return TypeString(nil, t) }
-func (t *Array) String() string     { return TypeString(nil, t) }
-func (t *Slice) String() string     { return TypeString(nil, t) }
-func (t *Struct) String() string    { return TypeString(nil, t) }
-func (t *Pointer) String() string   { return TypeString(nil, t) }
-func (t *Tuple) String() string     { return TypeString(nil, t) }
-func (t *Signature) String() string { return TypeString(nil, t) }
-func (t *Interface) String() string { return TypeString(nil, t) }
-func (t *Map) String() string       { return TypeString(nil, t) }
-func (t *Chan) String() string      { return TypeString(nil, t) }
-func (t *Named) String() string     { return TypeString(nil, t) }
+func (t *Basic) String() string     { return TypeString(t, nil) }
+func (t *Array) String() string     { return TypeString(t, nil) }
+func (t *Slice) String() string     { return TypeString(t, nil) }
+func (t *Struct) String() string    { return TypeString(t, nil) }
+func (t *Pointer) String() string   { return TypeString(t, nil) }
+func (t *Tuple) String() string     { return TypeString(t, nil) }
+func (t *Signature) String() string { return TypeString(t, nil) }
+func (t *Interface) String() string { return TypeString(t, nil) }
+func (t *Map) String() string       { return TypeString(t, nil) }
+func (t *Chan) String() string      { return TypeString(t, nil) }
+func (t *Named) String() string     { return TypeString(t, nil) }
diff --git a/go/src/golang.org/x/tools/go/types/typestring.go b/go/src/golang.org/x/tools/go/types/typestring.go
index 9a537e8..abee8ab 100644
--- a/go/src/golang.org/x/tools/go/types/typestring.go
+++ b/go/src/golang.org/x/tools/go/types/typestring.go
@@ -11,6 +11,33 @@
 	"fmt"
 )
 
+// A Qualifier controls how named package-level objects are printed in
+// calls to TypeString, ObjectString, and SelectionString.
+//
+// These three formatting routines call the Qualifier for each
+// package-level object O, and if the Qualifier returns a non-empty
+// string p, the object is printed in the form p.O.
+// If it returns an empty string, only the object name O is printed.
+//
+// Using a nil Qualifier is equivalent to using (*Package).Path: the
+// object is qualified by the import path, e.g., "encoding/json.Marshal".
+//
+type Qualifier func(*Package) string
+
+// RelativeTo(pkg) returns a Qualifier that fully qualifies members of
+// all packages other than pkg.
+func RelativeTo(pkg *Package) Qualifier {
+	if pkg == nil {
+		return nil
+	}
+	return func(other *Package) string {
+		if pkg == other {
+			return "" // same package; unqualified
+		}
+		return other.Path()
+	}
+}
+
 // If GcCompatibilityMode is set, printing of types is modified
 // to match the representation of some types in the gc compiler:
 //
@@ -28,22 +55,22 @@
 var GcCompatibilityMode bool
 
 // TypeString returns the string representation of typ.
-// Named types are printed package-qualified if they
-// do not belong to this package.
-func TypeString(this *Package, typ Type) string {
+// The Qualifier controls the printing of
+// package-level objects, and may be nil.
+func TypeString(typ Type, qf Qualifier) string {
 	var buf bytes.Buffer
-	WriteType(&buf, this, typ)
+	WriteType(&buf, typ, qf)
 	return buf.String()
 }
 
 // WriteType writes the string representation of typ to buf.
-// Named types are printed package-qualified if they
-// do not belong to this package.
-func WriteType(buf *bytes.Buffer, this *Package, typ Type) {
-	writeType(buf, this, typ, make([]Type, 8))
+// The Qualifier controls the printing of
+// package-level objects, and may be nil.
+func WriteType(buf *bytes.Buffer, typ Type, qf Qualifier) {
+	writeType(buf, typ, qf, make([]Type, 8))
 }
 
-func writeType(buf *bytes.Buffer, this *Package, typ Type, visited []Type) {
+func writeType(buf *bytes.Buffer, typ Type, qf Qualifier, visited []Type) {
 	// Theoretically, this is a quadratic lookup algorithm, but in
 	// practice deeply nested composite types with unnamed component
 	// types are uncommon. This code is likely more efficient than
@@ -77,11 +104,11 @@
 
 	case *Array:
 		fmt.Fprintf(buf, "[%d]", t.len)
-		writeType(buf, this, t.elem, visited)
+		writeType(buf, t.elem, qf, visited)
 
 	case *Slice:
 		buf.WriteString("[]")
-		writeType(buf, this, t.elem, visited)
+		writeType(buf, t.elem, qf, visited)
 
 	case *Struct:
 		buf.WriteString("struct{")
@@ -93,7 +120,7 @@
 				buf.WriteString(f.name)
 				buf.WriteByte(' ')
 			}
-			writeType(buf, this, f.typ, visited)
+			writeType(buf, f.typ, qf, visited)
 			if tag := t.Tag(i); tag != "" {
 				fmt.Fprintf(buf, " %q", tag)
 			}
@@ -102,14 +129,14 @@
 
 	case *Pointer:
 		buf.WriteByte('*')
-		writeType(buf, this, t.base, visited)
+		writeType(buf, t.base, qf, visited)
 
 	case *Tuple:
-		writeTuple(buf, this, t, false, visited)
+		writeTuple(buf, t, false, qf, visited)
 
 	case *Signature:
 		buf.WriteString("func")
-		writeSignature(buf, this, t, visited)
+		writeSignature(buf, t, qf, visited)
 
 	case *Interface:
 		// We write the source-level methods and embedded types rather
@@ -132,7 +159,7 @@
 					buf.WriteString("; ")
 				}
 				buf.WriteString(m.name)
-				writeSignature(buf, this, m.typ.(*Signature), visited)
+				writeSignature(buf, m.typ.(*Signature), qf, visited)
 			}
 		} else {
 			// print explicit interface methods and embedded types
@@ -141,22 +168,22 @@
 					buf.WriteString("; ")
 				}
 				buf.WriteString(m.name)
-				writeSignature(buf, this, m.typ.(*Signature), visited)
+				writeSignature(buf, m.typ.(*Signature), qf, visited)
 			}
 			for i, typ := range t.embeddeds {
 				if i > 0 || len(t.methods) > 0 {
 					buf.WriteString("; ")
 				}
-				writeType(buf, this, typ, visited)
+				writeType(buf, typ, qf, visited)
 			}
 		}
 		buf.WriteByte('}')
 
 	case *Map:
 		buf.WriteString("map[")
-		writeType(buf, this, t.key, visited)
+		writeType(buf, t.key, qf, visited)
 		buf.WriteByte(']')
-		writeType(buf, this, t.elem, visited)
+		writeType(buf, t.elem, qf, visited)
 
 	case *Chan:
 		var s string
@@ -179,7 +206,7 @@
 		if parens {
 			buf.WriteByte('(')
 		}
-		writeType(buf, this, t.elem, visited)
+		writeType(buf, t.elem, qf, visited)
 		if parens {
 			buf.WriteByte(')')
 		}
@@ -187,9 +214,8 @@
 	case *Named:
 		s := "<Named w/o object>"
 		if obj := t.obj; obj != nil {
-			if pkg := obj.pkg; pkg != nil && pkg != this {
-				buf.WriteString(pkg.path)
-				buf.WriteByte('.')
+			if obj.pkg != nil {
+				writePackage(buf, obj.pkg, qf)
 			}
 			// TODO(gri): function-local named types should be displayed
 			// differently from named types at package level to avoid
@@ -204,7 +230,7 @@
 	}
 }
 
-func writeTuple(buf *bytes.Buffer, this *Package, tup *Tuple, variadic bool, visited []Type) {
+func writeTuple(buf *bytes.Buffer, tup *Tuple, variadic bool, qf Qualifier, visited []Type) {
 	buf.WriteByte('(')
 	if tup != nil {
 		for i, v := range tup.vars {
@@ -226,12 +252,12 @@
 					if t, ok := typ.Underlying().(*Basic); !ok || t.kind != String {
 						panic("internal error: string type expected")
 					}
-					writeType(buf, this, typ, visited)
+					writeType(buf, typ, qf, visited)
 					buf.WriteString("...")
 					continue
 				}
 			}
-			writeType(buf, this, typ, visited)
+			writeType(buf, typ, qf, visited)
 		}
 	}
 	buf.WriteByte(')')
@@ -239,14 +265,14 @@
 
 // WriteSignature writes the representation of the signature sig to buf,
 // without a leading "func" keyword.
-// Named types are printed package-qualified if they
-// do not belong to this package.
-func WriteSignature(buf *bytes.Buffer, this *Package, sig *Signature) {
-	writeSignature(buf, this, sig, make([]Type, 8))
+// The Qualifier controls the printing of
+// package-level objects, and may be nil.
+func WriteSignature(buf *bytes.Buffer, sig *Signature, qf Qualifier) {
+	writeSignature(buf, sig, qf, make([]Type, 8))
 }
 
-func writeSignature(buf *bytes.Buffer, this *Package, sig *Signature, visited []Type) {
-	writeTuple(buf, this, sig.params, sig.variadic, visited)
+func writeSignature(buf *bytes.Buffer, sig *Signature, qf Qualifier, visited []Type) {
+	writeTuple(buf, sig.params, sig.variadic, qf, visited)
 
 	n := sig.results.Len()
 	if n == 0 {
@@ -257,10 +283,10 @@
 	buf.WriteByte(' ')
 	if n == 1 && sig.results.vars[0].name == "" {
 		// single unnamed result
-		writeType(buf, this, sig.results.vars[0].typ, visited)
+		writeType(buf, sig.results.vars[0].typ, qf, visited)
 		return
 	}
 
 	// multiple or named result(s)
-	writeTuple(buf, this, sig.results, false, visited)
+	writeTuple(buf, sig.results, false, qf, visited)
 }
diff --git a/go/src/golang.org/x/tools/go/types/typestring_test.go b/go/src/golang.org/x/tools/go/types/typestring_test.go
index 9aacf85..975b623 100644
--- a/go/src/golang.org/x/tools/go/types/typestring_test.go
+++ b/go/src/golang.org/x/tools/go/types/typestring_test.go
@@ -116,6 +116,8 @@
 }
 
 func TestTypeString(t *testing.T) {
+	skipSpecialPlatforms(t)
+
 	var tests []testEntry
 	tests = append(tests, independentTestTypes...)
 	tests = append(tests, dependentTestTypes...)
@@ -150,7 +152,13 @@
 		{NewPointer(pT), p, "*T"},
 		{NewPointer(pT), q, "*p.T"},
 	} {
-		if got := TypeString(test.this, test.typ); got != test.want {
+		qualifier := func(pkg *Package) string {
+			if pkg != test.this {
+				return pkg.Name()
+			}
+			return ""
+		}
+		if got := TypeString(test.typ, qualifier); got != test.want {
 			t.Errorf("TypeString(%s, %s) = %s, want %s",
 				test.this, test.typ, got, test.want)
 		}
diff --git a/go/src/golang.org/x/tools/go/types/typeutil/example_test.go b/go/src/golang.org/x/tools/go/types/typeutil/example_test.go
index 67ee34f..9e3ada7 100644
--- a/go/src/golang.org/x/tools/go/types/typeutil/example_test.go
+++ b/go/src/golang.org/x/tools/go/types/typeutil/example_test.go
@@ -1,3 +1,7 @@
+// Copyright 2014 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 typeutil_test
 
 import (
diff --git a/go/src/golang.org/x/tools/go/types/typeutil/imports.go b/go/src/golang.org/x/tools/go/types/typeutil/imports.go
index 0f4a232..967fe1e 100644
--- a/go/src/golang.org/x/tools/go/types/typeutil/imports.go
+++ b/go/src/golang.org/x/tools/go/types/typeutil/imports.go
@@ -1,3 +1,7 @@
+// Copyright 2014 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 typeutil
 
 import "golang.org/x/tools/go/types"
diff --git a/go/src/golang.org/x/tools/go/types/typeutil/imports_test.go b/go/src/golang.org/x/tools/go/types/typeutil/imports_test.go
index 6f207cf..8071ae1 100644
--- a/go/src/golang.org/x/tools/go/types/typeutil/imports_test.go
+++ b/go/src/golang.org/x/tools/go/types/typeutil/imports_test.go
@@ -1,3 +1,7 @@
+// Copyright 2014 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 typeutil_test
 
 import (
diff --git a/go/src/golang.org/x/tools/go/types/typeutil/methodsetcache.go b/go/src/golang.org/x/tools/go/types/typeutil/methodsetcache.go
new file mode 100644
index 0000000..daad644
--- /dev/null
+++ b/go/src/golang.org/x/tools/go/types/typeutil/methodsetcache.go
@@ -0,0 +1,73 @@
+// Copyright 2014 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.
+
+// This file implements a cache of method sets.
+
+package typeutil
+
+import (
+	"sync"
+
+	"golang.org/x/tools/go/types"
+)
+
+// A MethodSetCache records the method set of each type T for which
+// MethodSet(T) is called so that repeat queries are fast.
+// The zero value is a ready-to-use cache instance.
+type MethodSetCache struct {
+	mu     sync.Mutex
+	named  map[*types.Named]struct{ value, pointer *types.MethodSet } // method sets for named N and *N
+	others map[types.Type]*types.MethodSet                            // all other types
+}
+
+// MethodSet returns the method set of type T.  It is thread-safe.
+//
+// If cache is nil, this function is equivalent to types.NewMethodSet(T).
+// Utility functions can thus expose an optional *MethodSetCache
+// parameter to clients that care about performance.
+//
+func (cache *MethodSetCache) MethodSet(T types.Type) *types.MethodSet {
+	if cache == nil {
+		return types.NewMethodSet(T)
+	}
+	cache.mu.Lock()
+	defer cache.mu.Unlock()
+
+	switch T := T.(type) {
+	case *types.Named:
+		return cache.lookupNamed(T).value
+
+	case *types.Pointer:
+		if N, ok := T.Elem().(*types.Named); ok {
+			return cache.lookupNamed(N).pointer
+		}
+	}
+
+	// all other types
+	// (The map uses pointer equivalence, not type identity.)
+	mset := cache.others[T]
+	if mset == nil {
+		mset = types.NewMethodSet(T)
+		if cache.others == nil {
+			cache.others = make(map[types.Type]*types.MethodSet)
+		}
+		cache.others[T] = mset
+	}
+	return mset
+}
+
+func (cache *MethodSetCache) lookupNamed(named *types.Named) struct{ value, pointer *types.MethodSet } {
+	if cache.named == nil {
+		cache.named = make(map[*types.Named]struct{ value, pointer *types.MethodSet })
+	}
+	// Avoid recomputing mset(*T) for each distinct Pointer
+	// instance whose underlying type is a named type.
+	msets, ok := cache.named[named]
+	if !ok {
+		msets.value = types.NewMethodSet(named)
+		msets.pointer = types.NewMethodSet(types.NewPointer(named))
+		cache.named[named] = msets
+	}
+	return msets
+}
diff --git a/go/src/golang.org/x/tools/go/types/typeutil/ui.go b/go/src/golang.org/x/tools/go/types/typeutil/ui.go
index af42d2d..20c5249 100644
--- a/go/src/golang.org/x/tools/go/types/typeutil/ui.go
+++ b/go/src/golang.org/x/tools/go/types/typeutil/ui.go
@@ -17,7 +17,7 @@
 //
 // The order of the result is as for types.MethodSet(T).
 //
-func IntuitiveMethodSet(T types.Type, msets *types.MethodSetCache) []*types.Selection {
+func IntuitiveMethodSet(T types.Type, msets *MethodSetCache) []*types.Selection {
 	var result []*types.Selection
 	mset := msets.MethodSet(T)
 	if _, ok := T.Underlying().(*types.Interface); ok {
diff --git a/go/src/golang.org/x/tools/go/types/typexpr.go b/go/src/golang.org/x/tools/go/types/typexpr.go
index 8c4b679..bd2d7ba 100644
--- a/go/src/golang.org/x/tools/go/types/typexpr.go
+++ b/go/src/golang.org/x/tools/go/types/typexpr.go
@@ -23,7 +23,7 @@
 	x.mode = invalid
 	x.expr = e
 
-	scope, obj := check.scope.LookupParent(e.Name)
+	scope, obj := check.scope.LookupParent(e.Name, check.pos)
 	if obj == nil {
 		if e.Name == "_" {
 			check.errorf(e.Pos(), "cannot use _ as value or type")
@@ -141,9 +141,9 @@
 	return check.typExpr(e, nil, nil)
 }
 
-// funcType type-checks a function or method type and returns its signature.
-func (check *Checker) funcType(sig *Signature, recvPar *ast.FieldList, ftyp *ast.FuncType) *Signature {
-	scope := NewScope(check.scope, "function")
+// funcType type-checks a function or method type.
+func (check *Checker) funcType(sig *Signature, recvPar *ast.FieldList, ftyp *ast.FuncType) {
+	scope := NewScope(check.scope, token.NoPos, token.NoPos, "function")
 	check.recordScope(ftyp, scope)
 
 	recvList, _ := check.collectParams(scope, recvPar, false)
@@ -203,8 +203,6 @@
 	sig.params = NewTuple(params...)
 	sig.results = NewTuple(results...)
 	sig.variadic = variadic
-
-	return sig
 }
 
 // typExprInternal drives type checking of types.
@@ -416,7 +414,7 @@
 					// ok to continue
 				}
 				par := NewParam(name.Pos(), check.pkg, name.Name, typ)
-				check.declare(scope, name, par)
+				check.declare(scope, name, par, scope.pos)
 				params = append(params, par)
 			}
 			named = true
@@ -526,20 +524,14 @@
 	for _, e := range embedded {
 		pos := e.Pos()
 		typ := check.typExpr(e, nil, path)
+		// Determine underlying embedded (possibly incomplete) type
+		// by following its forward chain.
 		named, _ := typ.(*Named)
-		if named == nil {
-			if typ != Typ[Invalid] {
-				check.invalidAST(pos, "%s is not named type", typ)
-			}
-			continue
-		}
-		// determine underlying (possibly incomplete) type
-		// by following its forward chain
-		u := underlying(named)
-		embed, _ := u.(*Interface)
+		under := underlying(named)
+		embed, _ := under.(*Interface)
 		if embed == nil {
-			if u != Typ[Invalid] {
-				check.errorf(pos, "%s is not an interface", named)
+			if typ != Typ[Invalid] {
+				check.errorf(pos, "%s is not an interface", typ)
 			}
 			continue
 		}
diff --git a/go/src/golang.org/x/tools/go/types/universe.go b/go/src/golang.org/x/tools/go/types/universe.go
index 420f938..472c6be 100644
--- a/go/src/golang.org/x/tools/go/types/universe.go
+++ b/go/src/golang.org/x/tools/go/types/universe.go
@@ -177,7 +177,7 @@
 }
 
 func init() {
-	Universe = NewScope(nil, "universe")
+	Universe = NewScope(nil, token.NoPos, token.NoPos, "universe")
 	Unsafe = NewPackage("unsafe", "unsafe")
 	Unsafe.complete = true
 
diff --git a/go/src/golang.org/x/tools/godoc/analysis/analysis.go b/go/src/golang.org/x/tools/godoc/analysis/analysis.go
index 1f59a4a..c11ecbd 100644
--- a/go/src/golang.org/x/tools/godoc/analysis/analysis.go
+++ b/go/src/golang.org/x/tools/godoc/analysis/analysis.go
@@ -393,7 +393,7 @@
 
 	// Create SSA-form program representation.
 	// Only the transitively error-free packages are used.
-	prog := ssa.Create(iprog, ssa.GlobalDebug)
+	prog := ssautil.CreateProgram(iprog, ssa.GlobalDebug)
 
 	// Compute the set of main packages, including testmain.
 	allPackages := prog.AllPackages()
diff --git a/go/src/golang.org/x/tools/godoc/analysis/callgraph.go b/go/src/golang.org/x/tools/godoc/analysis/callgraph.go
index 149b60c..a98d294 100644
--- a/go/src/golang.org/x/tools/godoc/analysis/callgraph.go
+++ b/go/src/golang.org/x/tools/godoc/analysis/callgraph.go
@@ -237,7 +237,7 @@
 func prettyFunc(this *types.Package, fn *ssa.Function) string {
 	if fn.Parent() != nil {
 		return fmt.Sprintf("%s in %s",
-			types.TypeString(this, fn.Signature),
+			types.TypeString(fn.Signature, types.RelativeTo(this)),
 			prettyFunc(this, fn.Parent()))
 	}
 	if fn.Synthetic != "" && fn.Name() == "init" {
diff --git a/go/src/golang.org/x/tools/godoc/analysis/implements.go b/go/src/golang.org/x/tools/godoc/analysis/implements.go
index f951df4..bee04d0 100644
--- a/go/src/golang.org/x/tools/godoc/analysis/implements.go
+++ b/go/src/golang.org/x/tools/godoc/analysis/implements.go
@@ -14,11 +14,12 @@
 	"sort"
 
 	"golang.org/x/tools/go/types"
+	"golang.org/x/tools/go/types/typeutil"
 )
 
 // computeImplements computes the "implements" relation over all pairs
 // of named types in allNamed.
-func computeImplements(cache *types.MethodSetCache, allNamed []*types.Named) map[*types.Named]implementsFacts {
+func computeImplements(cache *typeutil.MethodSetCache, allNamed []*types.Named) map[*types.Named]implementsFacts {
 	// Information about a single type's method set.
 	type msetInfo struct {
 		typ          types.Type
diff --git a/go/src/golang.org/x/tools/godoc/analysis/typeinfo.go b/go/src/golang.org/x/tools/godoc/analysis/typeinfo.go
index bd1b0c1..83e19c1 100644
--- a/go/src/golang.org/x/tools/godoc/analysis/typeinfo.go
+++ b/go/src/golang.org/x/tools/godoc/analysis/typeinfo.go
@@ -69,6 +69,7 @@
 	}
 
 	// RESOLUTION
+	qualifier := types.RelativeTo(info.Pkg)
 	for id, obj := range info.Uses {
 		// Position of the object definition.
 		pos := obj.Pos()
@@ -92,7 +93,7 @@
 		fi.addLink(aLink{
 			start: offset,
 			end:   offset + len(id.Name),
-			title: types.ObjectString(info.Pkg, obj),
+			title: types.ObjectString(obj, qualifier),
 			href:  a.posURL(pos, Len),
 		})
 	}
@@ -106,7 +107,7 @@
 }
 
 func (a *analysis) namedType(obj *types.TypeName, implements map[*types.Named]implementsFacts) {
-	this := obj.Pkg()
+	qualifier := types.RelativeTo(obj.Pkg())
 	T := obj.Type().(*types.Named)
 	v := &TypeInfoJSON{
 		Name:    obj.Name(),
@@ -130,7 +131,7 @@
 			ByKind: byKind,
 			Other: anchorJSON{
 				Href: a.posURL(Tobj.Pos(), len(Tobj.Name())),
-				Text: types.TypeString(this, T),
+				Text: types.TypeString(T, qualifier),
 			},
 		})
 	}
@@ -142,7 +143,7 @@
 			// "T is implemented by <iface>"...
 			// "T implements        <iface>"...
 			group := implGroupJSON{
-				Descr: types.TypeString(this, T),
+				Descr: types.TypeString(T, qualifier),
 			}
 			// Show concrete types first; use two passes.
 			for _, sub := range r.to {
@@ -164,7 +165,7 @@
 			if r.from != nil {
 				// "T implements <iface>"...
 				group := implGroupJSON{
-					Descr: types.TypeString(this, T),
+					Descr: types.TypeString(T, qualifier),
 				}
 				for _, super := range r.from {
 					addFact(&group, super, false)
@@ -174,7 +175,7 @@
 			if r.fromPtr != nil {
 				// "*C implements <iface>"...
 				group := implGroupJSON{
-					Descr: "*" + types.TypeString(this, T),
+					Descr: "*" + types.TypeString(T, qualifier),
 				}
 				for _, psuper := range r.fromPtr {
 					addFact(&group, psuper, false)
@@ -190,7 +191,7 @@
 		pos := meth.Pos() // may be 0 for error.Error
 		v.Methods = append(v.Methods, anchorJSON{
 			Href: a.posURL(pos, len(meth.Name())),
-			Text: types.SelectionString(this, sel),
+			Text: types.SelectionString(sel, qualifier),
 		})
 	}
 
@@ -207,9 +208,9 @@
 
 	// Add info for exported package-level types to the package info.
 	if obj.Exported() && isPackageLevel(obj) {
-		// TODO(adonovan): this.Path() is not unique!
+		// TODO(adonovan): Path is not unique!
 		// It is possible to declare a non-test package called x_test.
-		a.result.pkgInfo(this.Path()).addType(v)
+		a.result.pkgInfo(obj.Pkg().Path()).addType(v)
 	}
 }
 
diff --git a/go/src/golang.org/x/tools/godoc/cmdline.go b/go/src/golang.org/x/tools/godoc/cmdline.go
index 5452ca3..9502ebb 100644
--- a/go/src/golang.org/x/tools/godoc/cmdline.go
+++ b/go/src/golang.org/x/tools/godoc/cmdline.go
@@ -1,6 +1,7 @@
 // Copyright 2013 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 godoc
 
 import (
diff --git a/go/src/golang.org/x/tools/godoc/cmdline_test.go b/go/src/golang.org/x/tools/godoc/cmdline_test.go
index d21c55b..602f2bb 100644
--- a/go/src/golang.org/x/tools/godoc/cmdline_test.go
+++ b/go/src/golang.org/x/tools/godoc/cmdline_test.go
@@ -1,3 +1,7 @@
+// Copyright 2013 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 godoc
 
 import (
diff --git a/go/src/golang.org/x/tools/godoc/godoc.go b/go/src/golang.org/x/tools/godoc/godoc.go
index e77a81f..6b176c6 100644
--- a/go/src/golang.org/x/tools/godoc/godoc.go
+++ b/go/src/golang.org/x/tools/godoc/godoc.go
@@ -98,6 +98,9 @@
 
 		// formatting of Notes
 		"noteTitle": noteTitle,
+
+		// Number operation
+		"multiply": multiply,
 	}
 	if p.URLForSrc != nil {
 		p.funcMap["srcLink"] = p.URLForSrc
@@ -110,6 +113,8 @@
 	}
 }
 
+func multiply(a, b int) int { return a * b }
+
 func filenameFunc(path string) string {
 	_, localname := pathpkg.Split(path)
 	return localname
diff --git a/go/src/golang.org/x/tools/godoc/server_test.go b/go/src/golang.org/x/tools/godoc/server_test.go
index 9fa411f..95c2762 100644
--- a/go/src/golang.org/x/tools/godoc/server_test.go
+++ b/go/src/golang.org/x/tools/godoc/server_test.go
@@ -1,3 +1,7 @@
+// Copyright 2013 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 godoc
 
 import (
diff --git a/go/src/golang.org/x/tools/godoc/static/analysis/help.html b/go/src/golang.org/x/tools/godoc/static/analysis/help.html
index 82409fb..023c07d 100644
--- a/go/src/golang.org/x/tools/godoc/static/analysis/help.html
+++ b/go/src/golang.org/x/tools/godoc/static/analysis/help.html
@@ -18,18 +18,6 @@
   results in the source and package views.  This document provides a
   brief tour of these features.
 </p>
-<p>
-  The current status of the analysis features is that of a technology
-  preview; there are many problems and user-interface difficulties
-  which will be addressed in due course.  Some known problems are
-  mentioned in passing, accompanied by a warning triangle, <span
-  style='font-size:120%; color:darkred; background-color:
-  yellow'>⚠</span>.
-
-  Nonetheless, godoc's static analysis may be immediately useful today
-  for small-to-medium sized Go corpora, and it contains several
-  advances over the state of the art in code browsing.
-</p>
 
 <h2>Type analysis features</h2>
 <p>
@@ -50,10 +38,6 @@
   displays the error message.
 </p>
 <img class="ss" width='811' src='error1.png'><br/>
-<p>
-  <span class='err'>⚠</span> The mark-up for compilation errors may
-  cause duplication of portions of the input.
-</p>
 
 <h3>Identifier resolution</h3>
 <p>
@@ -114,8 +98,8 @@
   channel.
 </p>
 <p>
-  Pointer analysis is slower than type analysis, taking an additional
-  15 seconds or so for the standard libraries and their tests.
+  Compared to type analysis, pointer analysis requires more time and
+  memory, and is impractical for code bases exceeding a million lines.
 </p>
 
 <h3>Call graph navigation</h3>
@@ -249,19 +233,22 @@
 
 <h2>Known issues</h2>
 <p>
-  <span class='err'>⚠</span> All analysis results pertain to exactly
+  All analysis results pertain to exactly
   one configuration (e.g. amd64 linux).  Files that are conditionally
   compiled based on different platforms or build tags are not visible
-  to the analysis.<br/>
-
-  <span class='err'>⚠</span> Files that <code>import "C"</code> require
+  to the analysis.
+</p>
+<p>
+  Files that <code>import "C"</code> require
   preprocessing by the cgo tool.  The file offsets after preprocessing
-  do not align with the unpreprocessed file, so markup is misaligned.<br/>
-
-  <span class='err'>⚠</span> Files are not periodically re-analyzed.
+  do not align with the unpreprocessed file, so markup is misaligned.
+</p>
+<p>
+  Files are not periodically re-analyzed.
   If the files change underneath the running server, the displayed
-  markup is misaligned.<br/>
-
-  <span class='err'>⚠</span> Additional issues are listed at
-  <a href='https://go.googlesource.com/tools/+/master/godoc/analysis/README'>tools/godoc/analysis/README</a>.<br/>
+  markup is misaligned.
+</p>
+<p>
+  Additional issues are listed at
+  <a href='https://go.googlesource.com/tools/+/master/godoc/analysis/README'>tools/godoc/analysis/README</a>.
 </p>
diff --git a/go/src/golang.org/x/tools/godoc/static/godoc.html b/go/src/golang.org/x/tools/godoc/static/godoc.html
index c851c52..6d6d1b6 100644
--- a/go/src/golang.org/x/tools/godoc/static/godoc.html
+++ b/go/src/golang.org/x/tools/godoc/static/godoc.html
@@ -2,6 +2,8 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="theme-color" content="#375EAB">
 {{with .Tabtitle}}
   <title>{{html .}} - The Go Programming Language</title>
 {{else}}
@@ -21,7 +23,9 @@
 </div><!-- #lowframe -->
 
 <div id="topbar"{{if .Title}} class="wide"{{end}}><div class="container">
-
+<div class="top-heading" id="heading-wide"><a href="/">The Go Programming Language</a></div>
+<div class="top-heading" id="heading-narrow"><a href="/">Go</a></div>
+<a href="#" id="menu-button"><span id="menu-button-arrow">&#9661;</span></a>
 <form method="GET" action="/search">
 <div id="menu">
 <a href="/doc/">Documents</a>
@@ -34,7 +38,6 @@
 {{end}}
 <input type="text" id="search" name="q" class="inactive" value="Search" placeholder="Search">
 </div>
-<div id="heading"><a href="/">The Go Programming Language</a></div>
 </form>
 
 </div></div>
diff --git a/go/src/golang.org/x/tools/godoc/static/godocs.js b/go/src/golang.org/x/tools/godoc/static/godocs.js
index 9486d2c..27d2699 100644
--- a/go/src/golang.org/x/tools/godoc/static/godocs.js
+++ b/go/src/golang.org/x/tools/godoc/static/godocs.js
@@ -14,6 +14,19 @@
 (function() {
 'use strict';
 
+// Mobile-friendly topbar menu
+$(function() {
+  var menu = $('#menu');
+  var menuButton = $('#menu-button');
+  var menuButtonArrow = $('#menu-button-arrow');
+  menuButton.click(function(event) {
+    menu.toggleClass('menu-visible');
+    menuButtonArrow.toggleClass('vertical-flip');
+    event.preventDefault();
+    return false;
+  });
+});
+
 function bindSearchEvents() {
 
   var search = $('#search');
@@ -65,7 +78,7 @@
     if ($(node).is('h2')) {
       item = $('<dt/>');
     } else { // h3
-      item = $('<dd/>');
+      item = $('<dd class="indent"/>');
     }
     item.append(link);
     toc_items.push(item);
diff --git a/go/src/golang.org/x/tools/godoc/static/makestatic.go b/go/src/golang.org/x/tools/godoc/static/makestatic.go
index b3b9c5f..f5e3272 100644
--- a/go/src/golang.org/x/tools/godoc/static/makestatic.go
+++ b/go/src/golang.org/x/tools/godoc/static/makestatic.go
@@ -4,8 +4,9 @@
 
 // +build ignore
 
-// Command bake reads a set of files and writes a Go source file to "static.go"
+// Command makestatic reads a set of files and writes a Go source file to "static.go"
 // that declares a map of string constants containing contents of the input files.
+// It is intended to be invoked via "go generate" (directive in "gen.go").
 package main
 
 import (
@@ -70,13 +71,13 @@
 }
 
 func main() {
-	if err := bake(); err != nil {
+	if err := makestatic(); err != nil {
 		fmt.Fprintln(os.Stderr, err)
 		os.Exit(1)
 	}
 }
 
-func bake() error {
+func makestatic() error {
 	f, err := os.Create("static.go")
 	if err != nil {
 		return err
@@ -117,4 +118,4 @@
 	return bytes.Replace(b, []byte("\xEF\xBB\xBF"), []byte("`+\"\\xEF\\xBB\\xBF\"+`"), -1)
 }
 
-const warning = "// DO NOT EDIT ** This file was generated with the bake tool ** DO NOT EDIT //"
+const warning = "// DO NOT EDIT ** This file was generated by \"go generate\" ** DO NOT EDIT //"
diff --git a/go/src/golang.org/x/tools/godoc/static/package.html b/go/src/golang.org/x/tools/godoc/static/package.html
index cc69e61..58dc1fe 100644
--- a/go/src/golang.org/x/tools/godoc/static/package.html
+++ b/go/src/golang.org/x/tools/godoc/static/package.html
@@ -249,35 +249,47 @@
 		<h2 id="stdlib">Standard library</h2>
 		<img class="gopher" src="/doc/gopher/pkg.png"/>
 	{{end}}
-	<table class="dir">
-	<tr>
-	<th>Name</th>
-	<th>&nbsp;&nbsp;&nbsp;&nbsp;</th>
-	<th style="text-align: left; width: auto">Synopsis</th>
-	</tr>
-	{{if not (or (eq $.Dirname "/src") (eq $.Dirname "/src/cmd") $.DirFlat)}}
-		<tr>
-		<td><a href="..">..</a></td>
-		</tr>
-	{{end}}
-	{{range .List}}
-		{{if $.DirFlat}}
-			{{if .HasPkg}}
-				<tr>
-				<td class="name"><a href="{{html .Path}}/">{{html .Path}}</a></td>
-				<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
-				<td style="width: auto">{{html .Synopsis}}</td>
-				</tr>
-			{{end}}
-		{{else}}
+
+
+	<div class="pkg-dir">
+		<table>
 			<tr>
-			<td class="name">{{repeat `&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` .Depth}}<a href="{{html .Path}}/">{{html .Name}}</a></td>
-			<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
-			<td style="width: auto">{{html .Synopsis}}</td>
+				<th class="pkg-name">Name</th>
+				<th class="pkg-synopsis">Synopsis</th>
 			</tr>
-		{{end}}
-	{{end}}
-	</table>
+
+			{{if not (or (eq $.Dirname "/src") (eq $.Dirname "/src/cmd") $.DirFlat)}}
+			<tr>
+				<td colspan="2"><a href="..">..</a></td>
+			</tr>
+			{{end}}
+
+			{{range .List}}
+				{{if $.DirFlat}}
+					{{if .HasPkg}}
+						<tr>
+							<td class="pkg-name">
+								<a href="{{html .Path}}/">{{html .Path}}</a>
+							</td>
+							<td class="pkg-synopsis">
+								{{html .Synopsis}}
+							</td>
+						</tr>
+					{{end}}
+				{{else}}
+					<tr>
+						<td class="pkg-name" style="padding-left: {{multiply .Depth 20}}px;">
+							<a href="{{html .Path}}/">{{html .Name}}</a>
+						</td>
+						<td class="pkg-synopsis">
+							{{html .Synopsis}}
+						</td>
+					</tr>
+				{{end}}
+			{{end}}
+		</table>
+	</div>
+
 
 	{{if eq $.Dirname "/src"}}
 	<h2 id="other">Other packages</h2>
diff --git a/go/src/golang.org/x/tools/godoc/static/package.txt b/go/src/golang.org/x/tools/godoc/static/package.txt
index 868d064..e53fa6e 100644
--- a/go/src/golang.org/x/tools/godoc/static/package.txt
+++ b/go/src/golang.org/x/tools/godoc/static/package.txt
@@ -2,7 +2,9 @@
 
 ---------------------------------------
 
-*/}}{{if $filtered}}{{range .PAst}}{{range .Decls}}{{node $info .}}{{end}}{{end}}{{else}}{{with .PAst}}{{range $filename, $ast := .}}{{$filename}}:
+*/}}{{if $filtered}}{{range .PAst}}{{range .Decls}}{{node $info .}}
+
+{{end}}{{end}}{{else}}{{with .PAst}}{{range $filename, $ast := .}}{{$filename}}:
 {{node $ $ast}}{{end}}{{end}}{{end}}{{/*
 
 ---------------------------------------
diff --git a/go/src/golang.org/x/tools/godoc/static/search.txt b/go/src/golang.org/x/tools/godoc/static/search.txt
index 15c1941..0ae0c08 100644
--- a/go/src/golang.org/x/tools/godoc/static/search.txt
+++ b/go/src/golang.org/x/tools/godoc/static/search.txt
@@ -23,7 +23,7 @@
 ---------------------------------------
 
 */}}{{range $key, $val := .Idents}}{{if $val}}{{$key.Name}}
-{{range $val.Idents}}    {{.Path}}.{{.Name}}
+{{range $val}}    {{.Path}}.{{.Name}}
 {{end}}
 {{end}}{{end}}{{/* .Idents */}}{{/*
 
diff --git a/go/src/golang.org/x/tools/godoc/static/static.go b/go/src/golang.org/x/tools/godoc/static/static.go
index 593d433..da23d74 100644
--- a/go/src/golang.org/x/tools/godoc/static/static.go
+++ b/go/src/golang.org/x/tools/godoc/static/static.go
@@ -1,4 +1,4 @@
-// DO NOT EDIT ** This file was generated with the bake tool ** DO NOT EDIT //
+// DO NOT EDIT ** This file was generated by "go generate" ** DO NOT EDIT //
 
 package static
 
@@ -39,18 +39,6 @@
   results in the source and package views.  This document provides a
   brief tour of these features.
 </p>
-<p>
-  The current status of the analysis features is that of a technology
-  preview; there are many problems and user-interface difficulties
-  which will be addressed in due course.  Some known problems are
-  mentioned in passing, accompanied by a warning triangle, <span
-  style='font-size:120%; color:darkred; background-color:
-  yellow'>⚠</span>.
-
-  Nonetheless, godoc's static analysis may be immediately useful today
-  for small-to-medium sized Go corpora, and it contains several
-  advances over the state of the art in code browsing.
-</p>
 
 <h2>Type analysis features</h2>
 <p>
@@ -71,10 +59,6 @@
   displays the error message.
 </p>
 <img class="ss" width='811' src='error1.png'><br/>
-<p>
-  <span class='err'>⚠</span> The mark-up for compilation errors may
-  cause duplication of portions of the input.
-</p>
 
 <h3>Identifier resolution</h3>
 <p>
@@ -98,7 +82,8 @@
 <p>
   Clicking on the identifier that defines a named type causes a panel
   to appear, displaying information about the named type, including
-  its size and alignment in bytes, its <a href='http://golang.org/ref/spec#Method_sets'>method set</a>, and its
+  its size and alignment in bytes, its
+  <a href='http://golang.org/ref/spec#Method_sets'>method set</a>, and its
   <i>implements</i> relation: the set of types T that are assignable to
   or from this type U where at least one of T or U is an interface.
 
@@ -134,8 +119,8 @@
   channel.
 </p>
 <p>
-  Pointer analysis is slower than type analysis, taking an additional
-  15 seconds or so for the standard libraries and their tests.
+  Compared to type analysis, pointer analysis requires more time and
+  memory, and is impractical for code bases exceeding a million lines.
 </p>
 
 <h3>Call graph navigation</h3>
@@ -269,20 +254,24 @@
 
 <h2>Known issues</h2>
 <p>
-  <span class='err'>⚠</span> All analysis results pertain to exactly
+  All analysis results pertain to exactly
   one configuration (e.g. amd64 linux).  Files that are conditionally
   compiled based on different platforms or build tags are not visible
-  to the analysis.</br>
-
-  <span class='err'>⚠</span> Files that <code>import "C"</code> require
+  to the analysis.
+</p>
+<p>
+  Files that <code>import "C"</code> require
   preprocessing by the cgo tool.  The file offsets after preprocessing
-  do not align with the unpreprocessed file, so markup is misaligned.<br/>
-
-  <span class='err'>⚠</span> Files are not periodically re-analyzed.
+  do not align with the unpreprocessed file, so markup is misaligned.
+</p>
+<p>
+  Files are not periodically re-analyzed.
   If the files change underneath the running server, the displayed
-  markup is misaligned.</br>
-
-  <span class='err'>⚠</span> Additional issues are listed at <a href='https://code.google.com/p/go/source/browse/godoc/analysis/README?repo=tools'>go.tools/godoc/analysis/README</a>.</br>
+  markup is misaligned.
+</p>
+<p>
+  Additional issues are listed at
+  <a href='https://go.googlesource.com/tools/+/master/godoc/analysis/README'>tools/godoc/analysis/README</a>.
 </p>
 `,
 
@@ -471,6 +460,8 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="theme-color" content="#375EAB">
 {{with .Tabtitle}}
   <title>{{html .}} - The Go Programming Language</title>
 {{else}}
@@ -490,7 +481,9 @@
 </div><!-- #lowframe -->
 
 <div id="topbar"{{if .Title}} class="wide"{{end}}><div class="container">
-
+<div class="top-heading" id="heading-wide"><a href="/">The Go Programming Language</a></div>
+<div class="top-heading" id="heading-narrow"><a href="/">Go</a></div>
+<a href="#" id="menu-button"><span id="menu-button-arrow">&#9661;</span></a>
 <form method="GET" action="/search">
 <div id="menu">
 <a href="/doc/">Documents</a>
@@ -503,7 +496,6 @@
 {{end}}
 <input type="text" id="search" name="q" class="inactive" value="Search" placeholder="Search">
 </div>
-<div id="heading"><a href="/">The Go Programming Language</a></div>
 </form>
 
 </div></div>
@@ -587,6 +579,19 @@
 (function() {
 'use strict';
 
+// Mobile-friendly topbar menu
+$(function() {
+  var menu = $('#menu');
+  var menuButton = $('#menu-button');
+  var menuButtonArrow = $('#menu-button-arrow');
+  menuButton.click(function(event) {
+    menu.toggleClass('menu-visible');
+    menuButtonArrow.toggleClass('vertical-flip');
+    event.preventDefault();
+    return false;
+  });
+});
+
 function bindSearchEvents() {
 
   var search = $('#search');
@@ -638,7 +643,7 @@
     if ($(node).is('h2')) {
       item = $('<dt/>');
     } else { // h3
-      item = $('<dd/>');
+      item = $('<dd class="indent"/>');
     }
     item.append(link);
     toc_items.push(item);
@@ -1760,35 +1765,47 @@
 		<h2 id="stdlib">Standard library</h2>
 		<img class="gopher" src="/doc/gopher/pkg.png"/>
 	{{end}}
-	<table class="dir">
-	<tr>
-	<th>Name</th>
-	<th>&nbsp;&nbsp;&nbsp;&nbsp;</th>
-	<th style="text-align: left; width: auto">Synopsis</th>
-	</tr>
-	{{if not (or (eq $.Dirname "/src") (eq $.Dirname "/src/cmd") $.DirFlat)}}
-		<tr>
-		<td><a href="..">..</a></td>
-		</tr>
-	{{end}}
-	{{range .List}}
-		{{if $.DirFlat}}
-			{{if .HasPkg}}
-				<tr>
-				<td class="name"><a href="{{html .Path}}/">{{html .Path}}</a></td>
-				<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
-				<td style="width: auto">{{html .Synopsis}}</td>
-				</tr>
-			{{end}}
-		{{else}}
+
+
+	<div class="pkg-dir">
+		<table>
 			<tr>
-			<td class="name">{{repeat ` + "`" + `&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` + "`" + ` .Depth}}<a href="{{html .Path}}/">{{html .Name}}</a></td>
-			<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
-			<td style="width: auto">{{html .Synopsis}}</td>
+				<th class="pkg-name">Name</th>
+				<th class="pkg-synopsis">Synopsis</th>
 			</tr>
-		{{end}}
-	{{end}}
-	</table>
+
+			{{if not (or (eq $.Dirname "/src") (eq $.Dirname "/src/cmd") $.DirFlat)}}
+			<tr>
+				<td colspan="2"><a href="..">..</a></td>
+			</tr>
+			{{end}}
+
+			{{range .List}}
+				{{if $.DirFlat}}
+					{{if .HasPkg}}
+						<tr>
+							<td class="pkg-name">
+								<a href="{{html .Path}}/">{{html .Path}}</a>
+							</td>
+							<td class="pkg-synopsis">
+								{{html .Synopsis}}
+							</td>
+						</tr>
+					{{end}}
+				{{else}}
+					<tr>
+						<td class="pkg-name" style="padding-left: {{multiply .Depth 20}}px;">
+							<a href="{{html .Path}}/">{{html .Name}}</a>
+						</td>
+						<td class="pkg-synopsis">
+							{{html .Synopsis}}
+						</td>
+					</tr>
+				{{end}}
+			{{end}}
+		</table>
+	</div>
+
 
 	{{if eq $.Dirname "/src"}}
 	<h2 id="other">Other packages</h2>
@@ -1826,7 +1843,9 @@
 
 ---------------------------------------
 
-*/}}{{if $filtered}}{{range .PAst}}{{range .Decls}}{{node $info .}}{{end}}{{end}}{{else}}{{with .PAst}}{{range $filename, $ast := .}}{{$filename}}:
+*/}}{{if $filtered}}{{range .PAst}}{{range .Decls}}{{node $info .}}
+
+{{end}}{{end}}{{else}}{{with .PAst}}{{range $filename, $ast := .}}{{$filename}}:
 {{node $ $ast}}{{end}}{{end}}{{end}}{{/*
 
 ---------------------------------------
@@ -2523,7 +2542,7 @@
 ---------------------------------------
 
 */}}{{range $key, $val := .Idents}}{{if $val}}{{$key.Name}}
-{{range $val.Idents}}    {{.Path}}.{{.Name}}
+{{range $val}}    {{.Path}}.{{.Name}}
 {{end}}
 {{end}}{{end}}{{/* .Idents */}}{{/*
 
@@ -2692,8 +2711,10 @@
 
 	"style.css": `body {
 	margin: 0;
-	font-family: Helvetica, Arial, sans-serif;
+	font-family: Arial, sans-serif;
 	font-size: 16px;
+	background-color: #fff;
+	line-height: 1.3em;
 }
 pre,
 code {
@@ -2701,7 +2722,8 @@
 	font-size: 14px;
 }
 pre {
-	line-height: 18px;
+	line-height: 1.4em;
+	overflow-x: auto;
 }
 pre .comment {
 	color: #006600;
@@ -2731,6 +2753,10 @@
 .exampleHeading .text:hover {
 	text-decoration: underline;
 }
+p {
+	max-width: 800px;
+	word-wrap: break-word;
+}
 p,
 pre,
 ul,
@@ -2738,7 +2764,7 @@
 	margin: 20px;
 }
 pre {
-	background: #e9e9e9;
+	background: #EFEFEF;
 	padding: 10px;
 
 	-webkit-border-radius: 5px;
@@ -2751,18 +2777,24 @@
 h3,
 h4,
 .rootHeading {
-	margin: 20px 0;
+	margin: 40px 0 20px;
 	padding: 0;
 	color: #375EAB;
 	font-weight: bold;
 }
 h1 {
-	font-size: 24px;
+	font-size: 28px;
+	line-height: 1;
 }
 h2 {
 	font-size: 20px;
 	background: #E0EBF5;
-	padding: 2px 5px;
+	padding: 8px;
+	line-height: 1.25;
+	font-weight: normal;
+}
+h2 a {
+	font-weight: bold;
 }
 h3 {
 	font-size: 20px;
@@ -2783,7 +2815,10 @@
 	margin: 20px;
 }
 dd {
-	margin: 2px 20px;
+	margin: 0;
+}
+dd.indent {
+	margin: 0 20px;
 }
 dl,
 dd {
@@ -2793,28 +2828,28 @@
 	vertical-align: top;
 }
 
-table.dir th {
-	text-align: left;
+
+.pkg-dir {
+	padding: 0 10px;
 }
-table.dir td {
-	word-wrap: break-word;
-	vertical-align: top;
+.pkg-dir table {
+	border-collapse: collapse;
+	border-spacing: 0;
 }
-div#page.wide table.dir td.name {
-	white-space: nowrap;
+.pkg-name {
+	padding-right: 10px;
 }
 .alert {
 	color: #AA0000;
 }
 
-div#heading {
+.top-heading {
 	float: left;
-	margin: 0 0 10px 0;
 	padding: 21px 0;
 	font-size: 20px;
 	font-weight: normal;
 }
-div#heading a {
+.top-heading a {
 	color: #222;
 	text-decoration: none;
 }
@@ -2837,11 +2872,14 @@
 	margin-left: auto;
 	margin-right: auto;
 	padding: 0 20px;
-	width: 900px;
+}
+div#topbar > .container,
+div#page > .container {
+	max-width: 950px;
 }
 div#page.wide > .container,
 div#topbar.wide > .container {
-	width: auto;
+	max-width: none;
 }
 div#plusone {
 	float: right;
@@ -2860,7 +2898,8 @@
 div#menu > input,
 div#learn .buttons a,
 div.play .buttons a,
-div#blog .read a {
+div#blog .read a,
+#menu-button {
 	padding: 10px;
 
 	text-decoration: none;
@@ -2872,11 +2911,13 @@
 }
 div#playground .buttons a,
 div#menu > a,
-div#menu > input {
+div#menu > input,
+#menu-button {
 	border: 1px solid #375EAB;
 }
 div#playground .buttons a,
-div#menu > a {
+div#menu > a,
+#menu-button {
 	color: white;
 	background: #375EAB;
 }
@@ -2897,39 +2938,61 @@
 }
 
 div#menu {
-	float: right;
-	min-width: 590px;
-	padding: 10px 0;
 	text-align: right;
+	padding: 10px;
+	white-space: nowrap;
+	max-height: 0;
+	-moz-transition: max-height .25s linear;
+	transition: max-height .25s linear;
+	width: 100%;
 }
-div#menu > a {
-	margin-right: 5px;
-	margin-bottom: 10px;
-
+div#menu.menu-visible {
+	max-height: 500px;
+}
+div#menu > a,
+#menu-button {
+	margin: 10px 2px;
 	padding: 10px;
 }
 div#menu > input {
 	position: relative;
 	top: 1px;
-	width: 60px;
+	width: 140px;
 	background: white;
 	color: #222;
+	box-sizing: border-box;
 }
 div#menu > input.inactive {
 	color: #999;
 }
 
+#menu-button {
+	display: none;
+	position: absolute;
+	right: 5px;
+	top: 0;
+	margin-right: 5px;
+}
+#menu-button-arrow {
+	display: inline-block;
+}
+.vertical-flip {
+	transform: rotate(-180deg);
+}
+
 div.left {
 	float: left;
 	clear: left;
+	margin-right: 2.5%;
 }
 div.right {
 	float: right;
 	clear: right;
+	margin-left: 2.5%;
 }
 div.left,
 div.right {
-	width: 415px;
+	width: 45%;
 }
 
 div#learn,
@@ -2942,10 +3005,7 @@
 }
 div#about {
 	font-size: 20px;
-}
-
-div#about {
-	height: 96px;
+	margin: 0 auto 30px;
 }
 div#gopher {
 	background: url(/doc/gopher/frontpage.png) no-repeat;
@@ -3062,6 +3122,9 @@
 	display: none;
 }
 
+div#video {
+	max-width: 100%;
+}
 div#blog,
 div#video {
 	margin-top: 40px;
@@ -3285,5 +3348,134 @@
         border-top-right-radius: 4px;
         padding: 2px 4px 2px 4px; /* TRBL */
 }
-`,
+
+
+#heading-narrow {
+	display: none;
+}
+
+@media (max-width: 930px) {
+	#heading-wide {
+		display: none;
+	}
+	#heading-narrow {
+		display: block;
+	}
+}
+
+
+@media (max-width: 760px) {
+	.container .left,
+	.container .right {
+		width: auto;
+		float: none;
+	}
+
+	div#about {
+		max-width: 500px;
+		text-align: center;
+	}
+}
+
+@media (min-width: 700px) and (max-width: 1000px) {
+	div#menu > a {
+		margin: 5px 0;
+		font-size: 14px;
+	}
+
+	div#menu > input {
+		font-size: 14px;
+	}
+}
+
+@media (max-width: 700px) {
+	body {
+		font-size: 15px;
+	}
+
+	pre,
+	code {
+		font-size: 13px;
+	}
+
+	div#page > .container {
+		padding: 0 10px;
+	}
+
+	div#topbar {
+		height: auto;
+		padding: 10px;
+	}
+
+	div#topbar > .container {
+		padding: 0;
+	}
+
+	#heading-wide {
+		display: block;
+	}
+	#heading-narrow {
+		display: none;
+	}
+
+	.top-heading {
+		float: none;
+		display: inline-block;
+		padding: 12px;
+	}
+
+	div#menu {
+		padding: 0;
+		min-width: 0;
+		text-align: left;
+		float: left;
+	}
+
+	div#menu > a,
+	div#menu > input {
+		display: block;
+		margin-left: 0;
+		margin-right: 0;
+	}
+
+	div#menu > input {
+		width: 100%;
+	}
+
+	#menu-button {
+		display: inline-block;
+	}
+
+	p,
+	pre,
+	ul,
+	ol {
+		margin: 10px;
+	}
+
+	.pkg-synopsis {
+		display: none;
+	}
+
+	img.gopher {
+		display: none;
+	}
+}
+
+@media (max-width: 480px) {
+	#heading-wide {
+		display: none;
+	}
+	#heading-narrow {
+		display: block;
+	}
+}
+
+@media print {
+	pre {
+		background: #FFF;
+		border: 1px solid #BBB;
+		white-space: pre-wrap;
+	}
+}`,
 }
diff --git a/go/src/golang.org/x/tools/godoc/static/style.css b/go/src/golang.org/x/tools/godoc/static/style.css
index dd417a2..3ea4a11 100644
--- a/go/src/golang.org/x/tools/godoc/static/style.css
+++ b/go/src/golang.org/x/tools/godoc/static/style.css
@@ -1,7 +1,9 @@
 body {
 	margin: 0;
-	font-family: Helvetica, Arial, sans-serif;
+	font-family: Arial, sans-serif;
 	font-size: 16px;
+	background-color: #fff;
+	line-height: 1.3em;
 }
 pre,
 code {
@@ -9,7 +11,8 @@
 	font-size: 14px;
 }
 pre {
-	line-height: 18px;
+	line-height: 1.4em;
+	overflow-x: auto;
 }
 pre .comment {
 	color: #006600;
@@ -39,6 +42,10 @@
 .exampleHeading .text:hover {
 	text-decoration: underline;
 }
+p {
+	max-width: 800px;
+	word-wrap: break-word;
+}
 p,
 pre,
 ul,
@@ -46,7 +53,7 @@
 	margin: 20px;
 }
 pre {
-	background: #e9e9e9;
+	background: #EFEFEF;
 	padding: 10px;
 
 	-webkit-border-radius: 5px;
@@ -59,18 +66,24 @@
 h3,
 h4,
 .rootHeading {
-	margin: 20px 0;
+	margin: 40px 0 20px;
 	padding: 0;
 	color: #375EAB;
 	font-weight: bold;
 }
 h1 {
-	font-size: 24px;
+	font-size: 28px;
+	line-height: 1;
 }
 h2 {
 	font-size: 20px;
 	background: #E0EBF5;
-	padding: 2px 5px;
+	padding: 8px;
+	line-height: 1.25;
+	font-weight: normal;
+}
+h2 a {
+	font-weight: bold;
 }
 h3 {
 	font-size: 20px;
@@ -91,7 +104,10 @@
 	margin: 20px;
 }
 dd {
-	margin: 2px 20px;
+	margin: 0;
+}
+dd.indent {
+	margin: 0 20px;
 }
 dl,
 dd {
@@ -101,28 +117,28 @@
 	vertical-align: top;
 }
 
-table.dir th {
-	text-align: left;
+
+.pkg-dir {
+	padding: 0 10px;
 }
-table.dir td {
-	word-wrap: break-word;
-	vertical-align: top;
+.pkg-dir table {
+	border-collapse: collapse;
+	border-spacing: 0;
 }
-div#page.wide table.dir td.name {
-	white-space: nowrap;
+.pkg-name {
+	padding-right: 10px;
 }
 .alert {
 	color: #AA0000;
 }
 
-div#heading {
+.top-heading {
 	float: left;
-	margin: 0 0 10px 0;
 	padding: 21px 0;
 	font-size: 20px;
 	font-weight: normal;
 }
-div#heading a {
+.top-heading a {
 	color: #222;
 	text-decoration: none;
 }
@@ -145,11 +161,14 @@
 	margin-left: auto;
 	margin-right: auto;
 	padding: 0 20px;
-	width: 900px;
+}
+div#topbar > .container,
+div#page > .container {
+	max-width: 950px;
 }
 div#page.wide > .container,
 div#topbar.wide > .container {
-	width: auto;
+	max-width: none;
 }
 div#plusone {
 	float: right;
@@ -168,7 +187,8 @@
 div#menu > input,
 div#learn .buttons a,
 div.play .buttons a,
-div#blog .read a {
+div#blog .read a,
+#menu-button {
 	padding: 10px;
 
 	text-decoration: none;
@@ -180,11 +200,13 @@
 }
 div#playground .buttons a,
 div#menu > a,
-div#menu > input {
+div#menu > input,
+#menu-button {
 	border: 1px solid #375EAB;
 }
 div#playground .buttons a,
-div#menu > a {
+div#menu > a,
+#menu-button {
 	color: white;
 	background: #375EAB;
 }
@@ -205,39 +227,61 @@
 }
 
 div#menu {
-	float: right;
-	min-width: 590px;
-	padding: 10px 0;
 	text-align: right;
+	padding: 10px;
+	white-space: nowrap;
+	max-height: 0;
+	-moz-transition: max-height .25s linear;
+	transition: max-height .25s linear;
+	width: 100%;
 }
-div#menu > a {
-	margin-right: 5px;
-	margin-bottom: 10px;
-
+div#menu.menu-visible {
+	max-height: 500px;
+}
+div#menu > a,
+#menu-button {
+	margin: 10px 2px;
 	padding: 10px;
 }
 div#menu > input {
 	position: relative;
 	top: 1px;
-	width: 60px;
+	width: 140px;
 	background: white;
 	color: #222;
+	box-sizing: border-box;
 }
 div#menu > input.inactive {
 	color: #999;
 }
 
+#menu-button {
+	display: none;
+	position: absolute;
+	right: 5px;
+	top: 0;
+	margin-right: 5px;
+}
+#menu-button-arrow {
+	display: inline-block;
+}
+.vertical-flip {
+	transform: rotate(-180deg);
+}
+
 div.left {
 	float: left;
 	clear: left;
+	margin-right: 2.5%;
 }
 div.right {
 	float: right;
 	clear: right;
+	margin-left: 2.5%;
 }
 div.left,
 div.right {
-	width: 415px;
+	width: 45%;
 }
 
 div#learn,
@@ -250,10 +294,7 @@
 }
 div#about {
 	font-size: 20px;
-}
-
-div#about {
-	height: 96px;
+	margin: 0 auto 30px;
 }
 div#gopher {
 	background: url(/doc/gopher/frontpage.png) no-repeat;
@@ -370,6 +411,9 @@
 	display: none;
 }
 
+div#video {
+	max-width: 100%;
+}
 div#blog,
 div#video {
 	margin-top: 40px;
@@ -593,3 +637,133 @@
         border-top-right-radius: 4px;
         padding: 2px 4px 2px 4px; /* TRBL */
 }
+
+
+#heading-narrow {
+	display: none;
+}
+
+@media (max-width: 930px) {
+	#heading-wide {
+		display: none;
+	}
+	#heading-narrow {
+		display: block;
+	}
+}
+
+
+@media (max-width: 760px) {
+	.container .left,
+	.container .right {
+		width: auto;
+		float: none;
+	}
+
+	div#about {
+		max-width: 500px;
+		text-align: center;
+	}
+}
+
+@media (min-width: 700px) and (max-width: 1000px) {
+	div#menu > a {
+		margin: 5px 0;
+		font-size: 14px;
+	}
+
+	div#menu > input {
+		font-size: 14px;
+	}
+}
+
+@media (max-width: 700px) {
+	body {
+		font-size: 15px;
+	}
+
+	pre,
+	code {
+		font-size: 13px;
+	}
+
+	div#page > .container {
+		padding: 0 10px;
+	}
+
+	div#topbar {
+		height: auto;
+		padding: 10px;
+	}
+
+	div#topbar > .container {
+		padding: 0;
+	}
+
+	#heading-wide {
+		display: block;
+	}
+	#heading-narrow {
+		display: none;
+	}
+
+	.top-heading {
+		float: none;
+		display: inline-block;
+		padding: 12px;
+	}
+
+	div#menu {
+		padding: 0;
+		min-width: 0;
+		text-align: left;
+		float: left;
+	}
+
+	div#menu > a,
+	div#menu > input {
+		display: block;
+		margin-left: 0;
+		margin-right: 0;
+	}
+
+	div#menu > input {
+		width: 100%;
+	}
+
+	#menu-button {
+		display: inline-block;
+	}
+
+	p,
+	pre,
+	ul,
+	ol {
+		margin: 10px;
+	}
+
+	.pkg-synopsis {
+		display: none;
+	}
+
+	img.gopher {
+		display: none;
+	}
+}
+
+@media (max-width: 480px) {
+	#heading-wide {
+		display: none;
+	}
+	#heading-narrow {
+		display: block;
+	}
+}
+
+@media print {
+	pre {
+		background: #FFF;
+		border: 1px solid #BBB;
+		white-space: pre-wrap;
+	}
+}
\ No newline at end of file
diff --git a/go/src/golang.org/x/tools/godoc/tab.go b/go/src/golang.org/x/tools/godoc/tab.go
index 7973b74..d314ac7 100644
--- a/go/src/golang.org/x/tools/godoc/tab.go
+++ b/go/src/golang.org/x/tools/godoc/tab.go
@@ -1,3 +1,7 @@
+// Copyright 2013 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.
+
 // TODO(bradfitz,adg): move to util
 
 package godoc
diff --git a/go/src/golang.org/x/tools/godoc/vfs/os.go b/go/src/golang.org/x/tools/godoc/vfs/os.go
index 4063690..fa98142 100644
--- a/go/src/golang.org/x/tools/godoc/vfs/os.go
+++ b/go/src/golang.org/x/tools/godoc/vfs/os.go
@@ -42,9 +42,11 @@
 	}
 	fi, err := f.Stat()
 	if err != nil {
+		f.Close()
 		return nil, err
 	}
 	if fi.IsDir() {
+		f.Close()
 		return nil, fmt.Errorf("Open: %s is a directory", path)
 	}
 	return f, nil
diff --git a/go/src/golang.org/x/tools/imports/fix_test.go b/go/src/golang.org/x/tools/imports/fix_test.go
index 9382a19..6be1d57 100644
--- a/go/src/golang.org/x/tools/imports/fix_test.go
+++ b/go/src/golang.org/x/tools/imports/fix_test.go
@@ -671,19 +671,59 @@
 func main() { fmt.Println("pi:", math.Pi) }
 `,
 	},
+
+	// Too aggressive prefix matching
+	// golang.org/issue/9961
+	{
+		name: "issue 9961",
+		in: `package p
+
+import (
+	"zip"
+
+	"rsc.io/p"
+)
+
+var (
+	_ = fmt.Print
+	_ = zip.Store
+	_ p.P
+	_ = regexp.Compile
+)
+`,
+		out: `package p
+
+import (
+	"fmt"
+	"regexp"
+	"zip"
+
+	"rsc.io/p"
+)
+
+var (
+	_ = fmt.Print
+	_ = zip.Store
+	_ p.P
+	_ = regexp.Compile
+)
+`,
+	},
 }
 
 func TestFixImports(t *testing.T) {
 	simplePkgs := map[string]string{
-		"fmt":       "fmt",
-		"os":        "os",
-		"math":      "math",
 		"appengine": "appengine",
-		"user":      "appengine/user",
-		"zip":       "archive/zip",
 		"bytes":     "bytes",
+		"fmt":       "fmt",
+		"math":      "math",
+		"os":        "os",
+		"p":         "rsc.io/p",
+		"regexp":    "regexp",
 		"snappy":    "code.google.com/p/snappy-go/snappy",
 		"str":       "strings",
+		"user":      "appengine/user",
+		"zip":       "archive/zip",
 	}
 	findImport = func(pkgName string, symbols map[string]bool) (string, bool, error) {
 		return simplePkgs[pkgName], pkgName == "str", nil
diff --git a/go/src/golang.org/x/tools/oracle/TODO b/go/src/golang.org/x/tools/oracle/TODO
index b9d4271..8fbf5e8 100644
--- a/go/src/golang.org/x/tools/oracle/TODO
+++ b/go/src/golang.org/x/tools/oracle/TODO
@@ -6,15 +6,9 @@
 General
 =======
 
-Refactor control flow so that each mode has a "one-shot setup" function.
-
-Use a fault-tolerant parser that can recover from bad parses.
-
 Save unsaved editor buffers into an archive and provide that to the
 tools, which should act as if they were saved.
 
-Fix: make the guessImportPath hack work with external _test.go files too.
-
 Include complete pos/end information Serial output.
   But beware that sometimes a single token (e.g. +) is more helpful
   than the pos/end of the containing expression (e.g. x \n + \n y).
@@ -34,12 +28,6 @@
 
 definition, referrers
 
-  Use the parser's resolver information to answer the query
-  for local names.  Only run the type checker if that fails.
-  (NB: gri's new parser won't do any resolution.)
-
-  referrers: Show the text of the matching line of code, like grep.
-
   definition: Make it work with qualified identifiers (SelectorExpr) too.
 
   references: Make it work on things that are implicit idents, like
@@ -50,8 +38,6 @@
   Report def/ref info if available.
   Editors could use it to highlight all idents of the same local var.
 
-  Fix: support it in (*Oracle).Query (long-running tools).
-
   More tests.
 
 pointsto
@@ -95,5 +81,3 @@
    call it from within the source file, not the *go-oracle* buffer:
    the user may have switched workspaces and the oracle should run in
    the new one.
-
-Support other editors: vim, Eclipse, Sublime, etc.
diff --git a/go/src/golang.org/x/tools/oracle/callees.go b/go/src/golang.org/x/tools/oracle/callees.go
index c8be728..56e45e1 100644
--- a/go/src/golang.org/x/tools/oracle/callees.go
+++ b/go/src/golang.org/x/tools/oracle/callees.go
@@ -10,17 +10,33 @@
 	"go/token"
 	"sort"
 
+	"golang.org/x/tools/go/loader"
+	"golang.org/x/tools/go/pointer"
 	"golang.org/x/tools/go/ssa"
+	"golang.org/x/tools/go/ssa/ssautil"
 	"golang.org/x/tools/go/types"
 	"golang.org/x/tools/oracle/serial"
 )
 
 // Callees reports the possible callees of the function call site
 // identified by the specified source location.
-func callees(o *Oracle, qpos *QueryPos) (queryResult, error) {
-	pkg := o.prog.Package(qpos.info.Pkg)
-	if pkg == nil {
-		return nil, fmt.Errorf("no SSA package")
+func callees(q *Query) error {
+	lconf := loader.Config{Build: q.Build}
+
+	if err := setPTAScope(&lconf, q.Scope); err != nil {
+		return err
+	}
+
+	// Load/parse/type-check the program.
+	lprog, err := lconf.Load()
+	if err != nil {
+		return err
+	}
+	q.Fset = lprog.Fset
+
+	qpos, err := parseQueryPos(lprog, q.Pos, true) // needs exact pos
+	if err != nil {
+		return err
 	}
 
 	// Determine the enclosing call for the specified position.
@@ -31,7 +47,7 @@
 		}
 	}
 	if e == nil {
-		return nil, fmt.Errorf("there is no function call here")
+		return fmt.Errorf("there is no function call here")
 	}
 	// TODO(adonovan): issue an error if the call is "too far
 	// away" from the current selection, as this most likely is
@@ -39,53 +55,102 @@
 
 	// Reject type conversions.
 	if qpos.info.Types[e.Fun].IsType() {
-		return nil, fmt.Errorf("this is a type conversion, not a function call")
+		return fmt.Errorf("this is a type conversion, not a function call")
 	}
 
-	// Reject calls to built-ins.
-	if id, ok := unparen(e.Fun).(*ast.Ident); ok {
-		if b, ok := qpos.info.Uses[id].(*types.Builtin); ok {
-			return nil, fmt.Errorf("this is a call to the built-in '%s' operator", b.Name())
+	// Deal with obviously static calls before constructing SSA form.
+	// Some static calls may yet require SSA construction,
+	// e.g.  f := func(){}; f().
+	switch funexpr := unparen(e.Fun).(type) {
+	case *ast.Ident:
+		switch obj := qpos.info.Uses[funexpr].(type) {
+		case *types.Builtin:
+			// Reject calls to built-ins.
+			return fmt.Errorf("this is a call to the built-in '%s' operator", obj.Name())
+		case *types.Func:
+			// This is a static function call
+			q.result = &calleesTypesResult{
+				site:   e,
+				callee: obj,
+			}
+			return nil
+		}
+	case *ast.SelectorExpr:
+		sel := qpos.info.Selections[funexpr]
+		if sel == nil {
+			// qualified identifier.
+			// May refer to top level function variable
+			// or to top level function.
+			callee := qpos.info.Uses[funexpr.Sel]
+			if obj, ok := callee.(*types.Func); ok {
+				q.result = &calleesTypesResult{
+					site:   e,
+					callee: obj,
+				}
+				return nil
+			}
+		} else if sel.Kind() == types.MethodVal {
+			recvtype := sel.Recv()
+			if !types.IsInterface(recvtype) {
+				// static method call
+				q.result = &calleesTypesResult{
+					site:   e,
+					callee: sel.Obj().(*types.Func),
+				}
+				return nil
+			}
 		}
 	}
 
-	buildSSA(o)
+	prog := ssautil.CreateProgram(lprog, ssa.GlobalDebug)
+
+	ptaConfig, err := setupPTA(prog, lprog, q.PTALog, q.Reflection)
+	if err != nil {
+		return err
+	}
+
+	pkg := prog.Package(qpos.info.Pkg)
+	if pkg == nil {
+		return fmt.Errorf("no SSA package")
+	}
+
+	// Defer SSA construction till after errors are reported.
+	prog.BuildAll()
 
 	// Ascertain calling function and call site.
 	callerFn := ssa.EnclosingFunction(pkg, qpos.path)
 	if callerFn == nil {
-		return nil, fmt.Errorf("no SSA function built for this location (dead code?)")
+		return fmt.Errorf("no SSA function built for this location (dead code?)")
 	}
 
 	// Find the call site.
-	site, err := findCallSite(callerFn, e.Lparen)
+	site, err := findCallSite(callerFn, e)
 	if err != nil {
-		return nil, err
+		return err
 	}
 
-	funcs, err := findCallees(o, site)
+	funcs, err := findCallees(ptaConfig, site)
 	if err != nil {
-		return nil, err
+		return err
 	}
 
-	return &calleesResult{
+	q.result = &calleesSSAResult{
 		site:  site,
 		funcs: funcs,
-	}, nil
-}
-
-func findCallSite(fn *ssa.Function, lparen token.Pos) (ssa.CallInstruction, error) {
-	for _, b := range fn.Blocks {
-		for _, instr := range b.Instrs {
-			if site, ok := instr.(ssa.CallInstruction); ok && instr.Pos() == lparen {
-				return site, nil
-			}
-		}
 	}
-	return nil, fmt.Errorf("this call site is unreachable in this analysis")
+	return nil
 }
 
-func findCallees(o *Oracle, site ssa.CallInstruction) ([]*ssa.Function, error) {
+func findCallSite(fn *ssa.Function, call *ast.CallExpr) (ssa.CallInstruction, error) {
+	instr, _ := fn.ValueForExpr(call)
+	callInstr, _ := instr.(ssa.CallInstruction)
+	if instr == nil {
+		return nil, fmt.Errorf("this call site is unreachable in this analysis")
+	}
+	return callInstr, nil
+}
+
+func findCallees(conf *pointer.Config, site ssa.CallInstruction) ([]*ssa.Function, error) {
 	// Avoid running the pointer analysis for static calls.
 	if callee := site.Common().StaticCallee(); callee != nil {
 		switch callee.String() {
@@ -99,8 +164,8 @@
 	}
 
 	// Dynamic call: use pointer analysis.
-	o.ptaConfig.BuildCallGraph = true
-	cg := ptrAnalysis(o).CallGraph
+	conf.BuildCallGraph = true
+	cg := ptrAnalysis(conf).CallGraph
 	cg.DeleteSyntheticNodes()
 
 	// Find all call edges from the site.
@@ -124,12 +189,17 @@
 	return funcs, nil
 }
 
-type calleesResult struct {
+type calleesSSAResult struct {
 	site  ssa.CallInstruction
 	funcs []*ssa.Function
 }
 
-func (r *calleesResult) display(printf printfFunc) {
+type calleesTypesResult struct {
+	site   *ast.CallExpr
+	callee *types.Func
+}
+
+func (r *calleesSSAResult) display(printf printfFunc) {
 	if len(r.funcs) == 0 {
 		// dynamic call on a provably nil func/interface
 		printf(r.site, "%s on nil value", r.site.Common().Description())
@@ -141,7 +211,7 @@
 	}
 }
 
-func (r *calleesResult) toSerial(res *serial.Result, fset *token.FileSet) {
+func (r *calleesSSAResult) toSerial(res *serial.Result, fset *token.FileSet) {
 	j := &serial.Callees{
 		Pos:  fset.Position(r.site.Pos()).String(),
 		Desc: r.site.Common().Description(),
@@ -155,6 +225,27 @@
 	res.Callees = j
 }
 
+func (r *calleesTypesResult) display(printf printfFunc) {
+	printf(r.site, "this static function call dispatches to:")
+	printf(r.callee, "\t%s", r.callee.FullName())
+}
+
+func (r *calleesTypesResult) toSerial(res *serial.Result, fset *token.FileSet) {
+	j := &serial.Callees{
+		Pos:  fset.Position(r.site.Pos()).String(),
+		Desc: "static function call",
+	}
+	j.Callees = []*serial.CalleesItem{
+		&serial.CalleesItem{
+			Name: r.callee.FullName(),
+			Pos:  fset.Position(r.callee.Pos()).String(),
+		},
+	}
+	res.Callees = j
+}
+
+// NB: byFuncPos is not deterministic across packages since it depends on load order.
+// Use lessPos if the tests need it.
 type byFuncPos []*ssa.Function
 
 func (a byFuncPos) Len() int           { return len(a) }
diff --git a/go/src/golang.org/x/tools/oracle/callers.go b/go/src/golang.org/x/tools/oracle/callers.go
index dde803b..159a403 100644
--- a/go/src/golang.org/x/tools/oracle/callers.go
+++ b/go/src/golang.org/x/tools/oracle/callers.go
@@ -9,42 +9,75 @@
 	"go/token"
 
 	"golang.org/x/tools/go/callgraph"
+	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/ssa"
+	"golang.org/x/tools/go/ssa/ssautil"
 	"golang.org/x/tools/oracle/serial"
 )
 
 // Callers reports the possible callers of the function
 // immediately enclosing the specified source location.
 //
-func callers(o *Oracle, qpos *QueryPos) (queryResult, error) {
-	pkg := o.prog.Package(qpos.info.Pkg)
-	if pkg == nil {
-		return nil, fmt.Errorf("no SSA package")
-	}
-	if !ssa.HasEnclosingFunction(pkg, qpos.path) {
-		return nil, fmt.Errorf("this position is not inside a function")
+func callers(q *Query) error {
+	lconf := loader.Config{Build: q.Build}
+
+	if err := setPTAScope(&lconf, q.Scope); err != nil {
+		return err
 	}
 
-	buildSSA(o)
+	// Load/parse/type-check the program.
+	lprog, err := lconf.Load()
+	if err != nil {
+		return err
+	}
+	q.Fset = lprog.Fset
+
+	qpos, err := parseQueryPos(lprog, q.Pos, false)
+	if err != nil {
+		return err
+	}
+
+	prog := ssautil.CreateProgram(lprog, 0)
+
+	ptaConfig, err := setupPTA(prog, lprog, q.PTALog, q.Reflection)
+	if err != nil {
+		return err
+	}
+
+	pkg := prog.Package(qpos.info.Pkg)
+	if pkg == nil {
+		return fmt.Errorf("no SSA package")
+	}
+	if !ssa.HasEnclosingFunction(pkg, qpos.path) {
+		return fmt.Errorf("this position is not inside a function")
+	}
+
+	// Defer SSA construction till after errors are reported.
+	prog.BuildAll()
 
 	target := ssa.EnclosingFunction(pkg, qpos.path)
 	if target == nil {
-		return nil, fmt.Errorf("no SSA function built for this location (dead code?)")
+		return fmt.Errorf("no SSA function built for this location (dead code?)")
 	}
 
+	// TODO(adonovan): opt: if function is never address-taken, skip
+	// the pointer analysis.  Just look for direct calls.  This can
+	// be done in a single pass over the SSA.
+
 	// Run the pointer analysis, recording each
 	// call found to originate from target.
-	o.ptaConfig.BuildCallGraph = true
-	cg := ptrAnalysis(o).CallGraph
+	ptaConfig.BuildCallGraph = true
+	cg := ptrAnalysis(ptaConfig).CallGraph
 	cg.DeleteSyntheticNodes()
 	edges := cg.CreateNode(target).In
 	// TODO(adonovan): sort + dedup calls to ensure test determinism.
 
-	return &callersResult{
+	q.result = &callersResult{
 		target:    target,
 		callgraph: cg,
 		edges:     edges,
-	}, nil
+	}
+	return nil
 }
 
 type callersResult struct {
diff --git a/go/src/golang.org/x/tools/oracle/callgraph.go b/go/src/golang.org/x/tools/oracle/callgraph.go
deleted file mode 100644
index 09f2205..0000000
--- a/go/src/golang.org/x/tools/oracle/callgraph.go
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright 2013 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 oracle
-
-import (
-	"fmt"
-	"go/token"
-	"sort"
-
-	"golang.org/x/tools/go/callgraph"
-	"golang.org/x/tools/go/ssa"
-	"golang.org/x/tools/go/types"
-	"golang.org/x/tools/oracle/serial"
-)
-
-// doCallgraph displays the entire callgraph of the current program,
-// or if a query -pos was provided, the query package.
-func doCallgraph(o *Oracle, qpos *QueryPos) (queryResult, error) {
-	buildSSA(o)
-
-	// Run the pointer analysis and build the callgraph.
-	o.ptaConfig.BuildCallGraph = true
-	cg := ptrAnalysis(o).CallGraph
-	cg.DeleteSyntheticNodes()
-
-	var qpkg *types.Package
-	var isQueryPkg func(fn *ssa.Function) bool
-	var keep, remove, roots []*callgraph.Node
-	if qpos == nil {
-		// No -pos provided: show complete callgraph.
-		roots = append(roots, cg.Root)
-		isQueryPkg = func(fn *ssa.Function) bool { return true }
-	} else {
-		// A query -pos was provided: restrict result to
-		// functions belonging to the query package.
-		qpkg = qpos.info.Pkg
-		isQueryPkg = func(fn *ssa.Function) bool {
-			return fn.Pkg != nil && fn.Pkg.Object == qpkg
-		}
-	}
-
-	// First compute the nodes to keep and remove.
-	for fn, cgn := range cg.Nodes {
-		if isQueryPkg(fn) {
-			keep = append(keep, cgn)
-		} else {
-			remove = append(remove, cgn)
-		}
-	}
-
-	// Compact the Node.ID sequence of the kept nodes,
-	// preserving the original order.
-	sort.Sort(nodesByID(keep))
-	for i, cgn := range keep {
-		cgn.ID = i
-	}
-
-	// Compute the set of roots:
-	// in-package nodes with out-of-package callers.
-	// For determinism, roots are ordered by original Node.ID.
-	for _, cgn := range keep {
-		for _, e := range cgn.In {
-			if !isQueryPkg(e.Caller.Func) {
-				roots = append(roots, cgn)
-				break
-			}
-		}
-	}
-
-	// Finally, discard all out-of-package nodes.
-	for _, cgn := range remove {
-		cg.DeleteNode(cgn)
-	}
-
-	return &callgraphResult{qpkg, cg.Nodes, roots}, nil
-}
-
-type callgraphResult struct {
-	qpkg  *types.Package
-	nodes map[*ssa.Function]*callgraph.Node
-	roots []*callgraph.Node
-}
-
-func (r *callgraphResult) display(printf printfFunc) {
-	descr := "the entire program"
-	if r.qpkg != nil {
-		descr = fmt.Sprintf("package %s", r.qpkg.Path())
-	}
-
-	printf(nil, `
-Below is a call graph of %s.
-The numbered nodes form a spanning tree.
-Non-numbered nodes indicate back- or cross-edges to the node whose
- number follows in parentheses.
-`, descr)
-
-	printed := make(map[*callgraph.Node]int)
-	var print func(caller *callgraph.Node, indent int)
-	print = func(caller *callgraph.Node, indent int) {
-		if num, ok := printed[caller]; !ok {
-			num = len(printed)
-			printed[caller] = num
-
-			// Sort the children into name order for deterministic* output.
-			// (*mostly: anon funcs' names are not globally unique.)
-			var funcs funcsByName
-			for callee := range callgraph.CalleesOf(caller) {
-				funcs = append(funcs, callee.Func)
-			}
-			sort.Sort(funcs)
-
-			printf(caller.Func, "%d\t%*s%s", num, 4*indent, "", caller.Func.RelString(r.qpkg))
-			for _, callee := range funcs {
-				print(r.nodes[callee], indent+1)
-			}
-		} else {
-			printf(caller.Func, "\t%*s%s (%d)", 4*indent, "", caller.Func.RelString(r.qpkg), num)
-		}
-	}
-	for _, root := range r.roots {
-		print(root, 0)
-	}
-}
-
-type nodesByID []*callgraph.Node
-
-func (s nodesByID) Len() int           { return len(s) }
-func (s nodesByID) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
-func (s nodesByID) Less(i, j int) bool { return s[i].ID < s[j].ID }
-
-type funcsByName []*ssa.Function
-
-func (s funcsByName) Len() int           { return len(s) }
-func (s funcsByName) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
-func (s funcsByName) Less(i, j int) bool { return s[i].String() < s[j].String() }
-
-func (r *callgraphResult) toSerial(res *serial.Result, fset *token.FileSet) {
-	cg := make([]serial.CallGraph, len(r.nodes))
-	for _, n := range r.nodes {
-		j := &cg[n.ID]
-		fn := n.Func
-		j.Name = fn.String()
-		j.Pos = fset.Position(fn.Pos()).String()
-		for callee := range callgraph.CalleesOf(n) {
-			j.Children = append(j.Children, callee.ID)
-		}
-		sort.Ints(j.Children)
-	}
-	res.Callgraph = cg
-}
diff --git a/go/src/golang.org/x/tools/oracle/callstack.go b/go/src/golang.org/x/tools/oracle/callstack.go
index 4b2e380..6f04b60 100644
--- a/go/src/golang.org/x/tools/oracle/callstack.go
+++ b/go/src/golang.org/x/tools/oracle/callstack.go
@@ -9,7 +9,9 @@
 	"go/token"
 
 	"golang.org/x/tools/go/callgraph"
+	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/ssa"
+	"golang.org/x/tools/go/ssa/ssautil"
 	"golang.org/x/tools/oracle/serial"
 )
 
@@ -23,26 +25,52 @@
 // TODO(adonovan): permit user to specify a starting point other than
 // the analysis root.
 //
-func callstack(o *Oracle, qpos *QueryPos) (queryResult, error) {
-	pkg := o.prog.Package(qpos.info.Pkg)
+func callstack(q *Query) error {
+	fset := token.NewFileSet()
+	lconf := loader.Config{Fset: fset, Build: q.Build}
+
+	if err := setPTAScope(&lconf, q.Scope); err != nil {
+		return err
+	}
+
+	// Load/parse/type-check the program.
+	lprog, err := lconf.Load()
+	if err != nil {
+		return err
+	}
+
+	qpos, err := parseQueryPos(lprog, q.Pos, false)
+	if err != nil {
+		return err
+	}
+
+	prog := ssautil.CreateProgram(lprog, 0)
+
+	ptaConfig, err := setupPTA(prog, lprog, q.PTALog, q.Reflection)
+	if err != nil {
+		return err
+	}
+
+	pkg := prog.Package(qpos.info.Pkg)
 	if pkg == nil {
-		return nil, fmt.Errorf("no SSA package")
+		return fmt.Errorf("no SSA package")
 	}
 
 	if !ssa.HasEnclosingFunction(pkg, qpos.path) {
-		return nil, fmt.Errorf("this position is not inside a function")
+		return fmt.Errorf("this position is not inside a function")
 	}
 
-	buildSSA(o)
+	// Defer SSA construction till after errors are reported.
+	prog.BuildAll()
 
 	target := ssa.EnclosingFunction(pkg, qpos.path)
 	if target == nil {
-		return nil, fmt.Errorf("no SSA function built for this location (dead code?)")
+		return fmt.Errorf("no SSA function built for this location (dead code?)")
 	}
 
 	// Run the pointer analysis and build the complete call graph.
-	o.ptaConfig.BuildCallGraph = true
-	cg := ptrAnalysis(o).CallGraph
+	ptaConfig.BuildCallGraph = true
+	cg := ptrAnalysis(ptaConfig).CallGraph
 	cg.DeleteSyntheticNodes()
 
 	// Search for an arbitrary path from a root to the target function.
@@ -52,15 +80,17 @@
 		callpath = callpath[1:] // remove synthetic edge from <root>
 	}
 
-	return &callstackResult{
+	q.Fset = fset
+	q.result = &callstackResult{
 		qpos:     qpos,
 		target:   target,
 		callpath: callpath,
-	}, nil
+	}
+	return nil
 }
 
 type callstackResult struct {
-	qpos     *QueryPos
+	qpos     *queryPos
 	target   *ssa.Function
 	callpath []*callgraph.Edge
 }
diff --git a/go/src/golang.org/x/tools/oracle/definition.go b/go/src/golang.org/x/tools/oracle/definition.go
index 0f149b2..a0340c6 100644
--- a/go/src/golang.org/x/tools/oracle/definition.go
+++ b/go/src/golang.org/x/tools/oracle/definition.go
@@ -9,6 +9,7 @@
 	"go/ast"
 	"go/token"
 
+	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/types"
 	"golang.org/x/tools/oracle/serial"
 )
@@ -18,28 +19,50 @@
 // TODO(adonovan): opt: for intra-file references, the parser's
 // resolution might be enough; we should start with that.
 //
-func definition(o *Oracle, qpos *QueryPos) (queryResult, error) {
+func definition(q *Query) error {
+	lconf := loader.Config{Build: q.Build}
+	allowErrors(&lconf)
+
+	if err := importQueryPackage(q.Pos, &lconf); err != nil {
+		return err
+	}
+
+	// Load/parse/type-check the program.
+	lprog, err := lconf.Load()
+	if err != nil {
+		return err
+	}
+	q.Fset = lprog.Fset
+
+	qpos, err := parseQueryPos(lprog, q.Pos, false)
+	if err != nil {
+		return err
+	}
+
 	id, _ := qpos.path[0].(*ast.Ident)
 	if id == nil {
-		return nil, fmt.Errorf("no identifier here")
+		return fmt.Errorf("no identifier here")
 	}
 
 	obj := qpos.info.ObjectOf(id)
 	if obj == nil {
-		// Happens for y in "switch y := x.(type)", but I think that's all.
-		return nil, fmt.Errorf("no object for identifier")
+		// Happens for y in "switch y := x.(type)",
+		// and the package declaration,
+		// but I think that's all.
+		return fmt.Errorf("no object for identifier")
 	}
 
-	return &definitionResult{qpos, obj}, nil
+	q.result = &definitionResult{qpos, obj}
+	return nil
 }
 
 type definitionResult struct {
-	qpos *QueryPos
+	qpos *queryPos
 	obj  types.Object // object it denotes
 }
 
 func (r *definitionResult) display(printf printfFunc) {
-	printf(r.obj, "defined here as %s", r.qpos.ObjectString(r.obj))
+	printf(r.obj, "defined here as %s", r.qpos.objectString(r.obj))
 }
 
 func (r *definitionResult) toSerial(res *serial.Result, fset *token.FileSet) {
diff --git a/go/src/golang.org/x/tools/oracle/describe.go b/go/src/golang.org/x/tools/oracle/describe.go
index 1c329d0..ea1c5ec 100644
--- a/go/src/golang.org/x/tools/oracle/describe.go
+++ b/go/src/golang.org/x/tools/oracle/describe.go
@@ -27,32 +27,52 @@
 // - the definition of its referent (for identifiers) [now redundant]
 // - its type and method set (for an expression or type expression)
 //
-func describe(o *Oracle, qpos *QueryPos) (queryResult, error) {
+func describe(q *Query) error {
+	lconf := loader.Config{Build: q.Build}
+	allowErrors(&lconf)
+
+	if err := importQueryPackage(q.Pos, &lconf); err != nil {
+		return err
+	}
+
+	// Load/parse/type-check the program.
+	lprog, err := lconf.Load()
+	if err != nil {
+		return err
+	}
+	q.Fset = lprog.Fset
+
+	qpos, err := parseQueryPos(lprog, q.Pos, true) // (need exact pos)
+	if err != nil {
+		return err
+	}
+
 	if false { // debugging
-		fprintf(os.Stderr, o.fset, qpos.path[0], "you selected: %s %s",
+		fprintf(os.Stderr, lprog.Fset, qpos.path[0], "you selected: %s %s",
 			astutil.NodeDescription(qpos.path[0]), pathToString(qpos.path))
 	}
 
 	path, action := findInterestingNode(qpos.info, qpos.path)
 	switch action {
 	case actionExpr:
-		return describeValue(o, qpos, path)
+		q.result, err = describeValue(qpos, path)
 
 	case actionType:
-		return describeType(o, qpos, path)
+		q.result, err = describeType(qpos, path)
 
 	case actionPackage:
-		return describePackage(o, qpos, path)
+		q.result, err = describePackage(qpos, path)
 
 	case actionStmt:
-		return describeStmt(o, qpos, path)
+		q.result, err = describeStmt(qpos, path)
 
 	case actionUnknown:
-		return &describeUnknownResult{path[0]}, nil
+		q.result = &describeUnknownResult{path[0]}
 
 	default:
 		panic(action) // unreachable
 	}
+	return err
 }
 
 type describeUnknownResult struct {
@@ -215,13 +235,6 @@
 				return path, actionExpr
 
 			case *types.Func:
-				// For f in 'interface {f()}', return the interface type, for now.
-				if _, ok := path[1].(*ast.Field); ok {
-					_ = path[2].(*ast.FieldList) // assertion
-					if _, ok := path[3].(*ast.InterfaceType); ok {
-						return path[3:], actionType
-					}
-				}
 				return path, actionExpr
 
 			case *types.Builtin:
@@ -295,7 +308,7 @@
 	return nil, actionUnknown // unreachable
 }
 
-func describeValue(o *Oracle, qpos *QueryPos, path []ast.Node) (*describeValueResult, error) {
+func describeValue(qpos *queryPos, path []ast.Node) (*describeValueResult, error) {
 	var expr ast.Expr
 	var obj types.Object
 	switch n := path[0].(type) {
@@ -325,7 +338,7 @@
 }
 
 type describeValueResult struct {
-	qpos     *QueryPos
+	qpos     *queryPos
 	expr     ast.Expr     // query node
 	typ      types.Type   // type of expression
 	constVal exact.Value  // value of expression, if constant
@@ -352,10 +365,10 @@
 	if r.obj != nil {
 		if r.obj.Pos() == r.expr.Pos() {
 			// defining ident
-			printf(r.expr, "definition of %s%s%s", prefix, r.qpos.ObjectString(r.obj), suffix)
+			printf(r.expr, "definition of %s%s%s", prefix, r.qpos.objectString(r.obj), suffix)
 		} else {
 			// referring ident
-			printf(r.expr, "reference to %s%s%s", prefix, r.qpos.ObjectString(r.obj), suffix)
+			printf(r.expr, "reference to %s%s%s", prefix, r.qpos.objectString(r.obj), suffix)
 			if def := r.obj.Pos(); def != token.NoPos {
 				printf(def, "defined here")
 			}
@@ -367,7 +380,7 @@
 			printf(r.expr, "%s%s", desc, suffix)
 		} else {
 			// non-constant expression
-			printf(r.expr, "%s of type %s", desc, r.qpos.TypeString(r.typ))
+			printf(r.expr, "%s of type %s", desc, r.qpos.typeString(r.typ))
 		}
 	}
 }
@@ -386,7 +399,7 @@
 		Pos:    fset.Position(r.expr.Pos()).String(),
 		Detail: "value",
 		Value: &serial.DescribeValue{
-			Type:   r.qpos.TypeString(r.typ),
+			Type:   r.qpos.typeString(r.typ),
 			Value:  value,
 			ObjPos: objpos,
 		},
@@ -395,7 +408,7 @@
 
 // ---- TYPE ------------------------------------------------------------
 
-func describeType(o *Oracle, qpos *QueryPos, path []ast.Node) (*describeTypeResult, error) {
+func describeType(qpos *queryPos, path []ast.Node) (*describeTypeResult, error) {
 	var description string
 	var t types.Type
 	switch n := path[0].(type) {
@@ -422,14 +435,12 @@
 		return nil, fmt.Errorf("unexpected AST for type: %T", n)
 	}
 
-	description = description + "type " + qpos.TypeString(t)
+	description = description + "type " + qpos.typeString(t)
 
 	// Show sizes for structs and named types (it's fairly obvious for others).
 	switch t.(type) {
 	case *types.Named, *types.Struct:
-		// TODO(adonovan): use o.imp.Config().TypeChecker.Sizes when
-		// we add the Config() method (needs some thought).
-		szs := types.StdSizes{8, 8}
+		szs := types.StdSizes{8, 8} // assume amd64
 		description = fmt.Sprintf("%s (size %d, align %d)", description,
 			szs.Sizeof(t), szs.Alignof(t))
 	}
@@ -444,7 +455,7 @@
 }
 
 type describeTypeResult struct {
-	qpos        *QueryPos
+	qpos        *queryPos
 	node        ast.Node
 	description string
 	typ         types.Type
@@ -456,7 +467,7 @@
 
 	// Show the underlying type for a reference to a named type.
 	if nt, ok := r.typ.(*types.Named); ok && r.node.Pos() != nt.Obj().Pos() {
-		printf(nt.Obj(), "defined as %s", r.qpos.TypeString(nt.Underlying()))
+		printf(nt.Obj(), "defined as %s", r.qpos.typeString(nt.Underlying()))
 	}
 
 	// Print the method set, if the type kind is capable of bearing methods.
@@ -468,7 +479,7 @@
 				// TODO(adonovan): print these relative
 				// to the owning package, not the
 				// query package.
-				printf(meth.Obj(), "\t%s", r.qpos.SelectionString(meth))
+				printf(meth.Obj(), "\t%s", r.qpos.selectionString(meth))
 			}
 		} else {
 			printf(r.node, "No methods.")
@@ -487,7 +498,7 @@
 		Pos:    fset.Position(r.node.Pos()).String(),
 		Detail: "type",
 		Type: &serial.DescribeType{
-			Type:    r.qpos.TypeString(r.typ),
+			Type:    r.qpos.typeString(r.typ),
 			NamePos: namePos,
 			NameDef: nameDef,
 			Methods: methodsToSerial(r.qpos.info.Pkg, r.methods, fset),
@@ -497,7 +508,7 @@
 
 // ---- PACKAGE ------------------------------------------------------------
 
-func describePackage(o *Oracle, qpos *QueryPos, path []ast.Node) (*describePackageResult, error) {
+func describePackage(qpos *queryPos, path []ast.Node) (*describePackageResult, error) {
 	var description string
 	var pkg *types.Package
 	switch n := path[0].(type) {
@@ -549,7 +560,7 @@
 		}
 	}
 
-	return &describePackageResult{o.fset, path[0], description, pkg, members}, nil
+	return &describePackageResult{qpos.fset, path[0], description, pkg, members}, nil
 }
 
 type describePackageResult struct {
@@ -579,20 +590,21 @@
 	for _, mem := range r.members {
 		printf(mem.obj, "\t%s", formatMember(mem.obj, maxname))
 		for _, meth := range mem.methods {
-			printf(meth.Obj(), "\t\t%s", types.SelectionString(r.pkg, meth))
+			printf(meth.Obj(), "\t\t%s", types.SelectionString(meth, types.RelativeTo(r.pkg)))
 		}
 	}
 }
 
 func formatMember(obj types.Object, maxname int) string {
+	qualifier := types.RelativeTo(obj.Pkg())
 	var buf bytes.Buffer
 	fmt.Fprintf(&buf, "%-5s %-*s", tokenOf(obj), maxname, obj.Name())
 	switch obj := obj.(type) {
 	case *types.Const:
-		fmt.Fprintf(&buf, " %s = %s", types.TypeString(obj.Pkg(), obj.Type()), obj.Val().String())
+		fmt.Fprintf(&buf, " %s = %s", types.TypeString(obj.Type(), qualifier), obj.Val().String())
 
 	case *types.Func:
-		fmt.Fprintf(&buf, " %s", types.TypeString(obj.Pkg(), obj.Type()))
+		fmt.Fprintf(&buf, " %s", types.TypeString(obj.Type(), qualifier))
 
 	case *types.TypeName:
 		// Abbreviate long aggregate type names.
@@ -608,13 +620,13 @@
 			}
 		}
 		if abbrev == "" {
-			fmt.Fprintf(&buf, " %s", types.TypeString(obj.Pkg(), obj.Type().Underlying()))
+			fmt.Fprintf(&buf, " %s", types.TypeString(obj.Type().Underlying(), qualifier))
 		} else {
 			fmt.Fprintf(&buf, " %s", abbrev)
 		}
 
 	case *types.Var:
-		fmt.Fprintf(&buf, " %s", types.TypeString(obj.Pkg(), obj.Type()))
+		fmt.Fprintf(&buf, " %s", types.TypeString(obj.Type(), qualifier))
 	}
 	return buf.String()
 }
@@ -668,7 +680,7 @@
 
 // ---- STATEMENT ------------------------------------------------------------
 
-func describeStmt(o *Oracle, qpos *QueryPos, path []ast.Node) (*describeStmtResult, error) {
+func describeStmt(qpos *queryPos, path []ast.Node) (*describeStmtResult, error) {
 	var description string
 	switch n := path[0].(type) {
 	case *ast.Ident:
@@ -682,7 +694,7 @@
 		// Nothing much to say about statements.
 		description = astutil.NodeDescription(n)
 	}
-	return &describeStmtResult{o.fset, path[0], description}, nil
+	return &describeStmtResult{qpos.fset, path[0], description}, nil
 }
 
 type describeStmtResult struct {
@@ -735,12 +747,17 @@
 }
 
 func methodsToSerial(this *types.Package, methods []*types.Selection, fset *token.FileSet) []serial.DescribeMethod {
+	qualifier := types.RelativeTo(this)
 	var jmethods []serial.DescribeMethod
 	for _, meth := range methods {
-		jmethods = append(jmethods, serial.DescribeMethod{
-			Name: types.SelectionString(this, meth),
-			Pos:  fset.Position(meth.Obj().Pos()).String(),
-		})
+		var ser serial.DescribeMethod
+		if meth != nil { // may contain nils when called by implements (on a method)
+			ser = serial.DescribeMethod{
+				Name: types.SelectionString(meth, qualifier),
+				Pos:  fset.Position(meth.Obj().Pos()).String(),
+			}
+		}
+		jmethods = append(jmethods, ser)
 	}
 	return jmethods
 }
diff --git a/go/src/golang.org/x/tools/oracle/freevars.go b/go/src/golang.org/x/tools/oracle/freevars.go
index 84a06b0..400a118 100644
--- a/go/src/golang.org/x/tools/oracle/freevars.go
+++ b/go/src/golang.org/x/tools/oracle/freevars.go
@@ -11,6 +11,7 @@
 	"go/token"
 	"sort"
 
+	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/types"
 	"golang.org/x/tools/oracle/serial"
 )
@@ -28,7 +29,26 @@
 // these might be interesting.  Perhaps group the results into three
 // bands.
 //
-func freevars(o *Oracle, qpos *QueryPos) (queryResult, error) {
+func freevars(q *Query) error {
+	lconf := loader.Config{Build: q.Build}
+	allowErrors(&lconf)
+
+	if err := importQueryPackage(q.Pos, &lconf); err != nil {
+		return err
+	}
+
+	// Load/parse/type-check the program.
+	lprog, err := lconf.Load()
+	if err != nil {
+		return err
+	}
+	q.Fset = lprog.Fset
+
+	qpos, err := parseQueryPos(lprog, q.Pos, false)
+	if err != nil {
+		return err
+	}
+
 	file := qpos.path[len(qpos.path)-1] // the enclosing file
 	fileScope := qpos.info.Scopes[file]
 	pkgScope := fileScope.Parent()
@@ -118,7 +138,7 @@
 				}
 
 				typ := qpos.info.TypeOf(n.(ast.Expr))
-				ref := freevarsRef{kind, printNode(o.fset, n), typ, obj}
+				ref := freevarsRef{kind, printNode(lprog.Fset, n), typ, obj}
 				refsMap[ref.ref] = ref
 
 				if prune {
@@ -136,14 +156,15 @@
 	}
 	sort.Sort(byRef(refs))
 
-	return &freevarsResult{
+	q.result = &freevarsResult{
 		qpos: qpos,
 		refs: refs,
-	}, nil
+	}
+	return nil
 }
 
 type freevarsResult struct {
-	qpos *QueryPos
+	qpos *queryPos
 	refs []freevarsRef
 }
 
@@ -159,11 +180,12 @@
 		printf(r.qpos, "No free identifiers.")
 	} else {
 		printf(r.qpos, "Free identifiers:")
+		qualifier := types.RelativeTo(r.qpos.info.Pkg)
 		for _, ref := range r.refs {
 			// Avoid printing "type T T".
 			var typstr string
 			if ref.kind != "type" {
-				typstr = " " + types.TypeString(r.qpos.info.Pkg, ref.typ)
+				typstr = " " + types.TypeString(ref.typ, qualifier)
 			}
 			printf(ref.obj, "%s %s%s", ref.kind, ref.ref, typstr)
 		}
diff --git a/go/src/golang.org/x/tools/oracle/implements.go b/go/src/golang.org/x/tools/oracle/implements.go
index 8e54dea..3155ca2 100644
--- a/go/src/golang.org/x/tools/oracle/implements.go
+++ b/go/src/golang.org/x/tools/oracle/implements.go
@@ -12,23 +12,62 @@
 	"sort"
 	"strings"
 
+	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/types"
+	"golang.org/x/tools/go/types/typeutil"
 	"golang.org/x/tools/oracle/serial"
 )
 
 // Implements displays the "implements" relation as it pertains to the
-// selected type.
+// selected type within a single package.
+// If the selection is a method, 'implements' displays
+// the corresponding methods of the types that would have been reported
+// by an implements query on the receiver type.
 //
-func implements(o *Oracle, qpos *QueryPos) (queryResult, error) {
-	// Find the selected type.
-	// TODO(adonovan): fix: make it work on qualified Idents too.
-	path, action := findInterestingNode(qpos.info, qpos.path)
-	if action != actionType {
-		return nil, fmt.Errorf("no type here")
+func implements(q *Query) error {
+	lconf := loader.Config{Build: q.Build}
+	allowErrors(&lconf)
+
+	if err := importQueryPackage(q.Pos, &lconf); err != nil {
+		return err
 	}
-	T := qpos.info.TypeOf(path[0].(ast.Expr))
+
+	// Load/parse/type-check the program.
+	lprog, err := lconf.Load()
+	if err != nil {
+		return err
+	}
+	q.Fset = lprog.Fset
+
+	qpos, err := parseQueryPos(lprog, q.Pos, false)
+	if err != nil {
+		return err
+	}
+
+	// Find the selected type.
+	path, action := findInterestingNode(qpos.info, qpos.path)
+
+	var method *types.Func
+	var T types.Type // selected type (receiver if method != nil)
+
+	switch action {
+	case actionExpr:
+		// method?
+		if id, ok := path[0].(*ast.Ident); ok {
+			if obj, ok := qpos.info.ObjectOf(id).(*types.Func); ok {
+				recv := obj.Type().(*types.Signature).Recv()
+				if recv == nil {
+					return fmt.Errorf("this function is not a method")
+				}
+				method = obj
+				T = recv.Type()
+			}
+		}
+	case actionType:
+		T = qpos.info.TypeOf(path[0].(ast.Expr))
+	}
 	if T == nil {
-		return nil, fmt.Errorf("no type here")
+		return fmt.Errorf("no type or method here")
 	}
 
 	// Find all named types, even local types (which can have
@@ -38,7 +77,7 @@
 	// i.e. don't reduceScope?
 	//
 	var allNamed []types.Type
-	for _, info := range o.typeInfo {
+	for _, info := range lprog.AllPackages {
 		for _, obj := range info.Defs {
 			if obj, ok := obj.(*types.TypeName); ok {
 				allNamed = append(allNamed, obj.Type())
@@ -47,7 +86,7 @@
 	}
 	allNamed = append(allNamed, types.Universe.Lookup("error").Type())
 
-	var msets types.MethodSetCache
+	var msets typeutil.MethodSetCache
 
 	// Test each named type.
 	var to, from, fromPtr []types.Type
@@ -102,65 +141,156 @@
 	sort.Sort(typesByString(from))
 	sort.Sort(typesByString(fromPtr))
 
-	return &implementsResult{T, pos, to, from, fromPtr}, nil
+	var toMethod, fromMethod, fromPtrMethod []*types.Selection // contain nils
+	if method != nil {
+		for _, t := range to {
+			toMethod = append(toMethod,
+				types.NewMethodSet(t).Lookup(method.Pkg(), method.Name()))
+		}
+		for _, t := range from {
+			fromMethod = append(fromMethod,
+				types.NewMethodSet(t).Lookup(method.Pkg(), method.Name()))
+		}
+		for _, t := range fromPtr {
+			fromPtrMethod = append(fromPtrMethod,
+				types.NewMethodSet(t).Lookup(method.Pkg(), method.Name()))
+		}
+	}
+
+	q.result = &implementsResult{
+		qpos, T, pos, to, from, fromPtr, method, toMethod, fromMethod, fromPtrMethod,
+	}
+	return nil
 }
 
 type implementsResult struct {
+	qpos *queryPos
+
 	t       types.Type   // queried type (not necessarily named)
 	pos     interface{}  // pos of t (*types.Name or *QueryPos)
 	to      []types.Type // named or ptr-to-named types assignable to interface T
 	from    []types.Type // named interfaces assignable from T
 	fromPtr []types.Type // named interfaces assignable only from *T
+
+	// if a method was queried:
+	method        *types.Func        // queried method
+	toMethod      []*types.Selection // method of type to[i], if any
+	fromMethod    []*types.Selection // method of type from[i], if any
+	fromPtrMethod []*types.Selection // method of type fromPtrMethod[i], if any
 }
 
 func (r *implementsResult) display(printf printfFunc) {
+	relation := "is implemented by"
+
+	meth := func(sel *types.Selection) {
+		if sel != nil {
+			printf(sel.Obj(), "\t%s method (%s).%s",
+				relation, r.qpos.typeString(sel.Recv()), sel.Obj().Name())
+		}
+	}
+
 	if isInterface(r.t) {
 		if types.NewMethodSet(r.t).Len() == 0 { // TODO(adonovan): cache mset
-			printf(r.pos, "empty interface type %s", r.t)
+			printf(r.pos, "empty interface type %s", r.qpos.typeString(r.t))
 			return
 		}
 
-		printf(r.pos, "interface type %s", r.t)
-		// Show concrete types first; use two passes.
-		for _, sub := range r.to {
+		if r.method == nil {
+			printf(r.pos, "interface type %s", r.qpos.typeString(r.t))
+		} else {
+			printf(r.method, "abstract method %s", r.qpos.objectString(r.method))
+		}
+
+		// Show concrete types (or methods) first; use two passes.
+		for i, sub := range r.to {
 			if !isInterface(sub) {
-				printf(deref(sub).(*types.Named).Obj(), "\tis implemented by %s type %s",
-					typeKind(sub), sub)
+				if r.method == nil {
+					printf(deref(sub).(*types.Named).Obj(), "\t%s %s type %s",
+						relation, typeKind(sub), r.qpos.typeString(sub))
+				} else {
+					meth(r.toMethod[i])
+				}
 			}
 		}
-		for _, sub := range r.to {
+		for i, sub := range r.to {
 			if isInterface(sub) {
-				printf(deref(sub).(*types.Named).Obj(), "\tis implemented by %s type %s", typeKind(sub), sub)
+				if r.method == nil {
+					printf(sub.(*types.Named).Obj(), "\t%s %s type %s",
+						relation, typeKind(sub), r.qpos.typeString(sub))
+				} else {
+					meth(r.toMethod[i])
+				}
 			}
 		}
 
-		for _, super := range r.from {
-			printf(super.(*types.Named).Obj(), "\timplements %s", super)
+		relation = "implements"
+		for i, super := range r.from {
+			if r.method == nil {
+				printf(super.(*types.Named).Obj(), "\t%s %s",
+					relation, r.qpos.typeString(super))
+			} else {
+				meth(r.fromMethod[i])
+			}
 		}
 	} else {
+		relation = "implements"
+
 		if r.from != nil {
-			printf(r.pos, "%s type %s", typeKind(r.t), r.t)
-			for _, super := range r.from {
-				printf(super.(*types.Named).Obj(), "\timplements %s", super)
+			if r.method == nil {
+				printf(r.pos, "%s type %s",
+					typeKind(r.t), r.qpos.typeString(r.t))
+			} else {
+				printf(r.method, "concrete method %s",
+					r.qpos.objectString(r.method))
+			}
+			for i, super := range r.from {
+				if r.method == nil {
+					printf(super.(*types.Named).Obj(), "\t%s %s",
+						relation, r.qpos.typeString(super))
+				} else {
+					meth(r.fromMethod[i])
+				}
 			}
 		}
 		if r.fromPtr != nil {
-			printf(r.pos, "pointer type *%s", r.t)
-			for _, psuper := range r.fromPtr {
-				printf(psuper.(*types.Named).Obj(), "\timplements %s", psuper)
+			if r.method == nil {
+				printf(r.pos, "pointer type *%s", r.qpos.typeString(r.t))
+			} else {
+				// TODO(adonovan): de-dup (C).f and (*C).f implementing (I).f.
+				printf(r.method, "concrete method %s",
+					r.qpos.objectString(r.method))
+			}
+
+			for i, psuper := range r.fromPtr {
+				if r.method == nil {
+					printf(psuper.(*types.Named).Obj(), "\t%s %s",
+						relation, r.qpos.typeString(psuper))
+				} else {
+					meth(r.fromPtrMethod[i])
+				}
 			}
 		} else if r.from == nil {
-			printf(r.pos, "%s type %s implements only interface{}", typeKind(r.t), r.t)
+			printf(r.pos, "%s type %s implements only interface{}",
+				typeKind(r.t), r.qpos.typeString(r.t))
 		}
 	}
 }
 
 func (r *implementsResult) toSerial(res *serial.Result, fset *token.FileSet) {
 	res.Implements = &serial.Implements{
-		T:                 makeImplementsType(r.t, fset),
-		AssignableTo:      makeImplementsTypes(r.to, fset),
-		AssignableFrom:    makeImplementsTypes(r.from, fset),
-		AssignableFromPtr: makeImplementsTypes(r.fromPtr, fset),
+		T:                       makeImplementsType(r.t, fset),
+		AssignableTo:            makeImplementsTypes(r.to, fset),
+		AssignableFrom:          makeImplementsTypes(r.from, fset),
+		AssignableFromPtr:       makeImplementsTypes(r.fromPtr, fset),
+		AssignableToMethod:      methodsToSerial(r.qpos.info.Pkg, r.toMethod, fset),
+		AssignableFromMethod:    methodsToSerial(r.qpos.info.Pkg, r.fromMethod, fset),
+		AssignableFromPtrMethod: methodsToSerial(r.qpos.info.Pkg, r.fromPtrMethod, fset),
+	}
+	if r.method != nil {
+		res.Implements.Method = &serial.DescribeMethod{
+			Name: r.qpos.objectString(r.method),
+			Pos:  fset.Position(r.method.Pos()).String(),
+		}
 	}
 }
 
diff --git a/go/src/golang.org/x/tools/oracle/oracle.go b/go/src/golang.org/x/tools/oracle/oracle.go
index 3cff219..544cfa4 100644
--- a/go/src/golang.org/x/tools/oracle/oracle.go
+++ b/go/src/golang.org/x/tools/oracle/oracle.go
@@ -19,42 +19,14 @@
 // - show all places where an object of type T is created
 //   (&T{}, var t T, new(T), new(struct{array [3]T}), etc.
 
-// ORACLE CONTROL FLOW
-//
-// The Oracle is somewhat convoluted due to the need to support two
-// very different use-cases, "one-shot" and "long running", and to do
-// so quickly.
-//
-// The cmd/oracle tool issues "one-shot" queries via the exported
-// Query function, which creates an Oracle to answer a single query.
-// newOracle consults the 'needs' flags of the query mode and the
-// package containing the query to avoid doing more work than it needs
-// (loading, parsing, type checking, SSA construction).
-//
-// The Pythia tool (github.com/fzipp/pythia) is an example of a "long
-// running" tool.  It calls New() and then loops, calling
-// ParseQueryPos and (*Oracle).Query to handle each incoming HTTP
-// query.  Since New cannot see which queries will follow, it must
-// load, parse, type-check and SSA-build the entire transitive closure
-// of the analysis scope, retaining full debug information and all
-// typed ASTs.
-//
-// TODO(adonovan): experiment with inverting the control flow by
-// making each mode consist of two functions: a "one-shot setup"
-// function and the existing "impl" function.  The one-shot setup
-// function would do all of the work of Query and newOracle,
-// specialized to each mode, calling library utilities for the common
-// things.  This would give it more control over "scope reduction".
-// Long running tools would not call the one-shot setup function but
-// would have their own setup function equivalent to the existing
-// 'needsAll' flow path.
-
 import (
 	"fmt"
 	"go/ast"
 	"go/build"
+	"go/parser"
 	"go/token"
 	"io"
+	"path/filepath"
 
 	"golang.org/x/tools/go/ast/astutil"
 	"golang.org/x/tools/go/loader"
@@ -64,64 +36,6 @@
 	"golang.org/x/tools/oracle/serial"
 )
 
-// An Oracle holds the program state required for one or more queries.
-type Oracle struct {
-	fset      *token.FileSet                         // file set [all queries]
-	prog      *ssa.Program                           // the SSA program [needSSA]
-	ptaConfig pointer.Config                         // pointer analysis configuration [needPTA]
-	typeInfo  map[*types.Package]*loader.PackageInfo // type info for all ASTs in the program [needRetainTypeInfo]
-}
-
-// A set of bits indicating the analytical requirements of each mode.
-//
-// Typed ASTs for the whole program are always constructed
-// transiently; they are retained only for the queried package unless
-// needRetainTypeInfo is set.
-const (
-	needPos            = 1 << iota // needs a position
-	needExactPos                   // needs an exact AST selection; implies needPos
-	needRetainTypeInfo             // needs to retain type info for all ASTs in the program
-	needSSA                        // needs ssa.Packages for whole program
-	needSSADebug                   // needs debug info for ssa.Packages
-	needPTA            = needSSA   // needs pointer analysis
-	needAll            = -1        // needs everything (e.g. a sequence of queries)
-)
-
-type modeInfo struct {
-	name  string
-	needs int
-	impl  func(*Oracle, *QueryPos) (queryResult, error)
-}
-
-var modes = []*modeInfo{
-	// Pointer analyses, whole program:
-	{"callees", needPTA | needExactPos, callees},
-	{"callers", needPTA | needPos, callers},
-	{"callgraph", needPTA, doCallgraph},
-	{"callstack", needPTA | needPos, callstack},
-	{"peers", needPTA | needSSADebug | needPos, peers},
-	{"pointsto", needPTA | needSSADebug | needExactPos, pointsto},
-	{"whicherrs", needPTA | needSSADebug | needExactPos, whicherrs},
-
-	// Type-based, modular analyses:
-	{"definition", needPos, definition},
-	{"describe", needExactPos, describe},
-	{"freevars", needPos, freevars},
-
-	// Type-based, whole-program analyses:
-	{"implements", needRetainTypeInfo | needPos, implements},
-	{"referrers", needRetainTypeInfo | needPos, referrers},
-}
-
-func findMode(mode string) *modeInfo {
-	for _, m := range modes {
-		if m.name == mode {
-			return m
-		}
-	}
-	return nil
-}
-
 type printfFunc func(pos interface{}, format string, args ...interface{})
 
 // queryResult is the interface of each query-specific result type.
@@ -133,9 +47,8 @@
 // A QueryPos represents the position provided as input to a query:
 // a textual extent in the program's source code, the AST node it
 // corresponds to, and the package to which it belongs.
-// Instances are created by ParseQueryPos.
-//
-type QueryPos struct {
+// Instances are created by parseQueryPos.
+type queryPos struct {
 	fset       *token.FileSet
 	start, end token.Pos           // source extent of query
 	path       []ast.Node          // AST path from query node to root of ast.File
@@ -144,155 +57,155 @@
 }
 
 // TypeString prints type T relative to the query position.
-func (qpos *QueryPos) TypeString(T types.Type) string {
-	return types.TypeString(qpos.info.Pkg, T)
+func (qpos *queryPos) typeString(T types.Type) string {
+	return types.TypeString(T, types.RelativeTo(qpos.info.Pkg))
 }
 
 // ObjectString prints object obj relative to the query position.
-func (qpos *QueryPos) ObjectString(obj types.Object) string {
-	return types.ObjectString(qpos.info.Pkg, obj)
+func (qpos *queryPos) objectString(obj types.Object) string {
+	return types.ObjectString(obj, types.RelativeTo(qpos.info.Pkg))
 }
 
 // SelectionString prints selection sel relative to the query position.
-func (qpos *QueryPos) SelectionString(sel *types.Selection) string {
-	return types.SelectionString(qpos.info.Pkg, sel)
+func (qpos *queryPos) selectionString(sel *types.Selection) string {
+	return types.SelectionString(sel, types.RelativeTo(qpos.info.Pkg))
 }
 
-// A Result encapsulates the result of an oracle.Query.
-type Result struct {
-	fset     *token.FileSet
-	q        queryResult       // the query-specific result
-	mode     string            // query mode
-	warnings []pointer.Warning // pointer analysis warnings (TODO(adonovan): fix: never populated!)
+// A Query specifies a single oracle query.
+type Query struct {
+	Mode  string         // query mode ("callers", etc)
+	Pos   string         // query position
+	Build *build.Context // package loading configuration
+
+	// pointer analysis options
+	Scope      []string  // main packages in (*loader.Config).FromArgs syntax
+	PTALog     io.Writer // (optional) pointer-analysis log file
+	Reflection bool      // model reflection soundly (currently slow).
+
+	// Populated during Run()
+	Fset   *token.FileSet
+	result queryResult
 }
 
 // Serial returns an instance of serial.Result, which implements the
 // {xml,json}.Marshaler interfaces so that query results can be
 // serialized as JSON or XML.
 //
-func (res *Result) Serial() *serial.Result {
-	resj := &serial.Result{Mode: res.mode}
-	res.q.toSerial(resj, res.fset)
-	for _, w := range res.warnings {
-		resj.Warnings = append(resj.Warnings, serial.PTAWarning{
-			Pos:     res.fset.Position(w.Pos).String(),
-			Message: w.Message,
-		})
-	}
+func (q *Query) Serial() *serial.Result {
+	resj := &serial.Result{Mode: q.Mode}
+	q.result.toSerial(resj, q.Fset)
 	return resj
 }
 
-// Query runs a single oracle query.
-//
-// args specify the main package in (*loader.Config).FromArgs syntax.
-// mode is the query mode ("callers", etc).
-// ptalog is the (optional) pointer-analysis log file.
-// buildContext is the go/build configuration for locating packages.
-// reflection determines whether to model reflection soundly (currently slow).
-//
-// Clients that intend to perform multiple queries against the same
-// analysis scope should use this pattern instead:
-//
-//	conf := loader.Config{Build: buildContext}
-//	... populate config, e.g. conf.FromArgs(args) ...
-//	iprog, err := conf.Load()
-//	if err != nil { ... }
-// 	o, err := oracle.New(iprog, nil, false)
-//	if err != nil { ... }
-//	for ... {
-//		qpos, err := oracle.ParseQueryPos(imp, pos, needExact)
-//		if err != nil { ... }
-//
-//		res, err := o.Query(mode, qpos)
-//		if err != nil { ... }
-//
-//		// use res
-//	}
-//
-// TODO(adonovan): the ideal 'needsExact' parameter for ParseQueryPos
-// depends on the query mode; how should we expose this?
-//
-func Query(args []string, mode, pos string, ptalog io.Writer, buildContext *build.Context, reflection bool) (*Result, error) {
-	if mode == "what" {
-		// Bypass package loading, type checking, SSA construction.
-		return what(pos, buildContext)
+// WriteTo writes the oracle query result res to out in a compiler diagnostic format.
+func (q *Query) WriteTo(out io.Writer) {
+	printf := func(pos interface{}, format string, args ...interface{}) {
+		fprintf(out, q.Fset, pos, format, args...)
 	}
-
-	minfo := findMode(mode)
-	if minfo == nil {
-		return nil, fmt.Errorf("invalid mode type: %q", mode)
-	}
-
-	conf := loader.Config{Build: buildContext}
-
-	// Determine initial packages.
-	args, err := conf.FromArgs(args, true)
-	if err != nil {
-		return nil, err
-	}
-	if len(args) > 0 {
-		return nil, fmt.Errorf("surplus arguments: %q", args)
-	}
-
-	// For queries needing only a single typed package,
-	// reduce the analysis scope to that package.
-	if minfo.needs&(needSSA|needRetainTypeInfo) == 0 {
-		reduceScope(pos, &conf)
-	}
-
-	// TODO(adonovan): report type errors to the user via Serial
-	// types, not stderr?
-	// conf.TypeChecker.Error = func(err error) {
-	// 	E := err.(types.Error)
-	// 	fmt.Fprintf(os.Stderr, "%s: %s\n", E.Fset.Position(E.Pos), E.Msg)
-	// }
-
-	// Load/parse/type-check the program.
-	iprog, err := conf.Load()
-	if err != nil {
-		return nil, err
-	}
-
-	o, err := newOracle(iprog, ptalog, minfo.needs, reflection)
-	if err != nil {
-		return nil, err
-	}
-
-	qpos, err := ParseQueryPos(iprog, pos, minfo.needs&needExactPos != 0)
-	if err != nil && minfo.needs&(needPos|needExactPos) != 0 {
-		return nil, err
-	}
-
-	// SSA is built and we have the QueryPos.
-	// Release the other ASTs and type info to the GC.
-	iprog = nil
-
-	return o.query(minfo, qpos)
+	q.result.display(printf)
 }
 
-// reduceScope is called for one-shot queries that need only a single
-// typed package.  It attempts to guess the query package from pos and
-// reduce the analysis scope (set of loaded packages) to just that one
-// plus (the exported parts of) its dependencies.  It leaves its
-// arguments unchanged on failure.
-//
-// TODO(adonovan): this is a real mess... but it's fast.
-//
-func reduceScope(pos string, conf *loader.Config) {
-	fqpos, err := fastQueryPos(pos)
-	if err != nil {
-		return // bad query
+// Run runs an oracle query and populates its Fset and Result.
+func Run(q *Query) error {
+	switch q.Mode {
+	case "callees":
+		return callees(q)
+	case "callers":
+		return callers(q)
+	case "callstack":
+		return callstack(q)
+	case "peers":
+		return peers(q)
+	case "pointsto":
+		return pointsto(q)
+	case "whicherrs":
+		return whicherrs(q)
+	case "definition":
+		return definition(q)
+	case "describe":
+		return describe(q)
+	case "freevars":
+		return freevars(q)
+	case "implements":
+		return implements(q)
+	case "referrers":
+		return referrers(q)
+	case "what":
+		return what(q)
+	default:
+		return fmt.Errorf("invalid mode: %q", q.Mode)
+	}
+}
+
+func setPTAScope(lconf *loader.Config, scope []string) error {
+	if len(scope) == 0 {
+		return fmt.Errorf("no packages specified for pointer analysis scope")
 	}
 
-	// TODO(adonovan): fix: this gives the wrong results for files
-	// in non-importable packages such as tests and ad-hoc packages
-	// specified as a list of files (incl. the oracle's tests).
-	_, importPath, err := guessImportPath(fqpos.fset.File(fqpos.start).Name(), conf.Build)
+	// Determine initial packages for PTA.
+	args, err := lconf.FromArgs(scope, true)
 	if err != nil {
-		return // can't find GOPATH dir
+		return err
+	}
+	if len(args) > 0 {
+		return fmt.Errorf("surplus arguments: %q", args)
+	}
+	return nil
+}
+
+// Create a pointer.Config whose scope is the initial packages of lprog
+// and their dependencies.
+func setupPTA(prog *ssa.Program, lprog *loader.Program, ptaLog io.Writer, reflection bool) (*pointer.Config, error) {
+	// TODO(adonovan): the body of this function is essentially
+	// duplicated in all go/pointer clients.  Refactor.
+
+	// For each initial package (specified on the command line),
+	// if it has a main function, analyze that,
+	// otherwise analyze its tests, if any.
+	var testPkgs, mains []*ssa.Package
+	for _, info := range lprog.InitialPackages() {
+		initialPkg := prog.Package(info.Pkg)
+
+		// Add package to the pointer analysis scope.
+		if initialPkg.Func("main") != nil {
+			mains = append(mains, initialPkg)
+		} else {
+			testPkgs = append(testPkgs, initialPkg)
+		}
+	}
+	if testPkgs != nil {
+		if p := prog.CreateTestMainPackage(testPkgs...); p != nil {
+			mains = append(mains, p)
+		}
+	}
+	if mains == nil {
+		return nil, fmt.Errorf("analysis scope has no main and no tests")
+	}
+	return &pointer.Config{
+		Log:        ptaLog,
+		Reflection: reflection,
+		Mains:      mains,
+	}, nil
+}
+
+// importQueryPackage finds the package P containing the
+// query position and tells conf to import it.
+func importQueryPackage(pos string, conf *loader.Config) error {
+	fqpos, err := fastQueryPos(pos)
+	if err != nil {
+		return err // bad query
+	}
+	filename := fqpos.fset.File(fqpos.start).Name()
+
+	// This will not work for ad-hoc packages
+	// such as $GOROOT/src/net/http/triv.go.
+	// TODO(adonovan): ensure we report a clear error.
+	_, importPath, err := guessImportPath(filename, conf.Build)
+	if err != nil {
+		return err // can't find GOPATH dir
 	}
 	if importPath == "" {
-		return
+		return fmt.Errorf("can't guess import path from %s", filename)
 	}
 
 	// Check that it's possible to load the queried package.
@@ -302,180 +215,83 @@
 	cfg2.CgoEnabled = false
 	bp, err := cfg2.Import(importPath, "", 0)
 	if err != nil {
-		return // no files for package
+		return err // no files for package
 	}
 
-	// Check that the queried file appears in the package:
-	// it might be a '// +build ignore' from an ad-hoc main
-	// package, e.g. $GOROOT/src/net/http/triv.go.
-	if !pkgContainsFile(bp, fqpos.fset.File(fqpos.start).Name()) {
-		return // not found
+	switch pkgContainsFile(bp, filename) {
+	case 'T':
+		conf.ImportWithTests(importPath)
+	case 'X':
+		conf.ImportWithTests(importPath)
+		importPath += "_test" // for TypeCheckFuncBodies
+	case 'G':
+		conf.Import(importPath)
+	default:
+		return fmt.Errorf("package %q doesn't contain file %s",
+			importPath, filename)
 	}
 
 	conf.TypeCheckFuncBodies = func(p string) bool { return p == importPath }
 
-	// Ignore packages specified on command line.
-	conf.CreatePkgs = nil
-	conf.ImportPkgs = nil
-
-	// Instead load just the one containing the query position
-	// (and possibly its corresponding tests/production code).
-	// TODO(adonovan): set 'augment' based on which file list
-	// contains
-	conf.ImportWithTests(importPath)
+	return nil
 }
 
-func pkgContainsFile(bp *build.Package, filename string) bool {
-	for _, files := range [][]string{bp.GoFiles, bp.TestGoFiles, bp.XTestGoFiles} {
+// pkgContainsFile reports whether file was among the packages Go
+// files, Test files, eXternal test files, or not found.
+func pkgContainsFile(bp *build.Package, filename string) byte {
+	for i, files := range [][]string{bp.GoFiles, bp.TestGoFiles, bp.XTestGoFiles} {
 		for _, file := range files {
-			if sameFile(file, filename) {
-				return true
+			if sameFile(filepath.Join(bp.Dir, file), filename) {
+				return "GTX"[i]
 			}
 		}
 	}
-	return false
+	return 0 // not found
 }
 
-// New constructs a new Oracle that can be used for a sequence of queries.
-//
-// iprog specifies the program to analyze.
-// ptalog is the (optional) pointer-analysis log file.
-// reflection determines whether to model reflection soundly (currently slow).
-//
-func New(iprog *loader.Program, ptalog io.Writer, reflection bool) (*Oracle, error) {
-	return newOracle(iprog, ptalog, needAll, reflection)
-}
-
-func newOracle(iprog *loader.Program, ptalog io.Writer, needs int, reflection bool) (*Oracle, error) {
-	o := &Oracle{fset: iprog.Fset}
-
-	// Retain type info for all ASTs in the program.
-	if needs&needRetainTypeInfo != 0 {
-		o.typeInfo = iprog.AllPackages
-	}
-
-	// Create SSA package for the initial packages and their dependencies.
-	if needs&needSSA != 0 {
-		var mode ssa.BuilderMode
-		if needs&needSSADebug != 0 {
-			mode |= ssa.GlobalDebug
-		}
-		prog := ssa.Create(iprog, mode)
-
-		// For each initial package (specified on the command line),
-		// if it has a main function, analyze that,
-		// otherwise analyze its tests, if any.
-		var testPkgs, mains []*ssa.Package
-		for _, info := range iprog.InitialPackages() {
-			initialPkg := prog.Package(info.Pkg)
-
-			// Add package to the pointer analysis scope.
-			if initialPkg.Func("main") != nil {
-				mains = append(mains, initialPkg)
-			} else {
-				testPkgs = append(testPkgs, initialPkg)
-			}
-		}
-		if testPkgs != nil {
-			if p := prog.CreateTestMainPackage(testPkgs...); p != nil {
-				mains = append(mains, p)
-			}
-		}
-		if mains == nil {
-			return nil, fmt.Errorf("analysis scope has no main and no tests")
-		}
-		o.ptaConfig.Log = ptalog
-		o.ptaConfig.Reflection = reflection
-		o.ptaConfig.Mains = mains
-
-		o.prog = prog
-	}
-
-	return o, nil
-}
-
-// Query runs the query of the specified mode and selection.
-//
-// TODO(adonovan): fix: this function does not currently support the
-// "what" query, which needs to access the go/build.Context.
-//
-func (o *Oracle) Query(mode string, qpos *QueryPos) (*Result, error) {
-	minfo := findMode(mode)
-	if minfo == nil {
-		return nil, fmt.Errorf("invalid mode type: %q", mode)
-	}
-	return o.query(minfo, qpos)
-}
-
-func (o *Oracle) query(minfo *modeInfo, qpos *QueryPos) (*Result, error) {
-	// Clear out residue of previous query (for long-running clients).
-	o.ptaConfig.Queries = nil
-	o.ptaConfig.IndirectQueries = nil
-
-	res := &Result{
-		mode: minfo.name,
-		fset: o.fset,
-	}
-	var err error
-	res.q, err = minfo.impl(o, qpos)
-	if err != nil {
-		return nil, err
-	}
-	return res, nil
-}
-
-// ParseQueryPos parses the source query position pos.
+// ParseQueryPos parses the source query position pos and returns the
+// AST node of the loaded program lprog that it identifies.
 // If needExact, it must identify a single AST subtree;
 // this is appropriate for queries that allow fairly arbitrary syntax,
 // e.g. "describe".
 //
-func ParseQueryPos(iprog *loader.Program, posFlag string, needExact bool) (*QueryPos, error) {
+func parseQueryPos(lprog *loader.Program, posFlag string, needExact bool) (*queryPos, error) {
 	filename, startOffset, endOffset, err := parsePosFlag(posFlag)
 	if err != nil {
 		return nil, err
 	}
-	start, end, err := findQueryPos(iprog.Fset, filename, startOffset, endOffset)
+	start, end, err := findQueryPos(lprog.Fset, filename, startOffset, endOffset)
 	if err != nil {
 		return nil, err
 	}
-	info, path, exact := iprog.PathEnclosingInterval(start, end)
+	info, path, exact := lprog.PathEnclosingInterval(start, end)
 	if path == nil {
 		return nil, fmt.Errorf("no syntax here")
 	}
 	if needExact && !exact {
 		return nil, fmt.Errorf("ambiguous selection within %s", astutil.NodeDescription(path[0]))
 	}
-	return &QueryPos{iprog.Fset, start, end, path, exact, info}, nil
-}
-
-// WriteTo writes the oracle query result res to out in a compiler diagnostic format.
-func (res *Result) WriteTo(out io.Writer) {
-	printf := func(pos interface{}, format string, args ...interface{}) {
-		fprintf(out, res.fset, pos, format, args...)
-	}
-	res.q.display(printf)
-
-	// Print warnings after the main output.
-	if res.warnings != nil {
-		fmt.Fprintln(out, "\nPointer analysis warnings:")
-		for _, w := range res.warnings {
-			printf(w.Pos, "warning: "+w.Message)
-		}
-	}
+	return &queryPos{lprog.Fset, start, end, path, exact, info}, nil
 }
 
 // ---------- Utilities ----------
 
-// buildSSA constructs the SSA representation of Go-source function bodies.
-// Not needed in simpler modes, e.g. freevars.
-//
-func buildSSA(o *Oracle) {
-	o.prog.BuildAll()
+// allowErrors causes type errors to be silently ignored.
+// (Not suitable if SSA construction follows.)
+func allowErrors(lconf *loader.Config) {
+	ctxt := *lconf.Build // copy
+	ctxt.CgoEnabled = false
+	lconf.Build = &ctxt
+	lconf.AllowErrors = true
+	// AllErrors makes the parser always return an AST instead of
+	// bailing out after 10 errors and returning an empty ast.File.
+	lconf.ParserMode = parser.AllErrors
+	lconf.TypeChecker.Error = func(err error) {}
 }
 
 // ptrAnalysis runs the pointer analysis and returns its result.
-func ptrAnalysis(o *Oracle) *pointer.Result {
-	result, err := pointer.Analyze(&o.ptaConfig)
+func ptrAnalysis(conf *pointer.Config) *pointer.Result {
+	result, err := pointer.Analyze(conf)
 	if err != nil {
 		panic(err) // pointer analysis internal error
 	}
@@ -521,7 +337,7 @@
 	}:
 		start = pos.Pos()
 		end = start
-	case *QueryPos:
+	case *queryPos:
 		start = pos.start
 		end = pos.end
 	case nil:
diff --git a/go/src/golang.org/x/tools/oracle/oracle_test.go b/go/src/golang.org/x/tools/oracle/oracle_test.go
index bbceb60..f1353c7 100644
--- a/go/src/golang.org/x/tools/oracle/oracle_test.go
+++ b/go/src/golang.org/x/tools/oracle/oracle_test.go
@@ -44,7 +44,6 @@
 	"strings"
 	"testing"
 
-	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/oracle"
 )
 
@@ -151,9 +150,9 @@
 }
 
 // WriteResult writes res (-format=plain) to w, stripping file locations.
-func WriteResult(w io.Writer, res *oracle.Result) {
+func WriteResult(w io.Writer, q *oracle.Query) {
 	capture := new(bytes.Buffer) // capture standard output
-	res.WriteTo(capture)
+	q.WriteTo(capture)
 	for _, line := range strings.Split(capture.String(), "\n") {
 		// Remove a "file:line: " prefix.
 		if i := strings.Index(line, ": "); i >= 0 {
@@ -170,28 +169,30 @@
 
 	var buildContext = build.Default
 	buildContext.GOPATH = "testdata"
-	res, err := oracle.Query([]string{q.filename},
-		q.verb,
-		q.queryPos,
-		nil, // ptalog,
-		&buildContext,
-		true) // reflection
-	if err != nil {
+	query := oracle.Query{
+		Mode:       q.verb,
+		Pos:        q.queryPos,
+		Build:      &buildContext,
+		Scope:      []string{q.filename},
+		Reflection: true,
+	}
+	if err := oracle.Run(&query); err != nil {
 		fmt.Fprintf(out, "\nError: %s\n", err)
 		return
 	}
 
 	if useJson {
 		// JSON output
-		b, err := json.MarshalIndent(res.Serial(), "", "\t")
+		b, err := json.MarshalIndent(query.Serial(), "", "\t")
 		if err != nil {
 			fmt.Fprintf(out, "JSON error: %s\n", err.Error())
 			return
 		}
 		out.Write(b)
+		fmt.Fprintln(out)
 	} else {
 		// "plain" (compiler diagnostic format) output
-		WriteResult(out, res)
+		WriteResult(out, &query)
 	}
 }
 
@@ -202,30 +203,30 @@
 	}
 
 	for _, filename := range []string{
-		"testdata/src/main/calls.go",
-		"testdata/src/main/callgraph.go",
-		"testdata/src/main/callgraph2.go",
-		"testdata/src/main/describe.go",
-		"testdata/src/main/freevars.go",
-		"testdata/src/main/implements.go",
-		"testdata/src/main/imports.go",
-		"testdata/src/main/peers.go",
-		"testdata/src/main/pointsto.go",
-		"testdata/src/main/reflection.go",
-		"testdata/src/main/what.go",
-		"testdata/src/main/whicherrs.go",
+		"testdata/src/calls/main.go",
+		"testdata/src/describe/main.go",
+		"testdata/src/freevars/main.go",
+		"testdata/src/implements/main.go",
+		"testdata/src/implements-methods/main.go",
+		"testdata/src/imports/main.go",
+		"testdata/src/peers/main.go",
+		"testdata/src/pointsto/main.go",
+		"testdata/src/referrers/main.go",
+		"testdata/src/reflection/main.go",
+		"testdata/src/what/main.go",
+		"testdata/src/whicherrs/main.go",
 		// JSON:
 		// TODO(adonovan): most of these are very similar; combine them.
-		"testdata/src/main/callgraph-json.go",
-		"testdata/src/main/calls-json.go",
-		"testdata/src/main/peers-json.go",
-		"testdata/src/main/describe-json.go",
-		"testdata/src/main/implements-json.go",
-		"testdata/src/main/pointsto-json.go",
-		"testdata/src/main/referrers-json.go",
-		"testdata/src/main/what-json.go",
+		"testdata/src/calls-json/main.go",
+		"testdata/src/peers-json/main.go",
+		"testdata/src/describe-json/main.go",
+		"testdata/src/implements-json/main.go",
+		"testdata/src/implements-methods-json/main.go",
+		"testdata/src/pointsto-json/main.go",
+		"testdata/src/referrers-json/main.go",
+		"testdata/src/what-json/main.go",
 	} {
-		useJson := strings.HasSuffix(filename, "-json.go")
+		useJson := strings.Contains(filename, "-json/")
 		queries := parseQueries(t, filename)
 		golden := filename + "lden"
 		got := filename + "t"
@@ -267,54 +268,3 @@
 		}
 	}
 }
-
-func TestMultipleQueries(t *testing.T) {
-	// Loader
-	var buildContext = build.Default
-	buildContext.GOPATH = "testdata"
-	conf := loader.Config{Build: &buildContext}
-	filename := "testdata/src/main/multi.go"
-	conf.CreateFromFilenames("", filename)
-	iprog, err := conf.Load()
-	if err != nil {
-		t.Fatalf("Load failed: %s", err)
-	}
-
-	// Oracle
-	o, err := oracle.New(iprog, nil, true)
-	if err != nil {
-		t.Fatalf("oracle.New failed: %s", err)
-	}
-
-	// QueryPos
-	pos := filename + ":#54,#58"
-	qpos, err := oracle.ParseQueryPos(iprog, pos, true)
-	if err != nil {
-		t.Fatalf("oracle.ParseQueryPos(%q) failed: %s", pos, err)
-	}
-	// SSA is built and we have the QueryPos.
-	// Release the other ASTs and type info to the GC.
-	iprog = nil
-
-	// Run different query modes on same scope and selection.
-	out := new(bytes.Buffer)
-	for _, mode := range [...]string{"callers", "describe", "freevars"} {
-		res, err := o.Query(mode, qpos)
-		if err != nil {
-			t.Errorf("(*oracle.Oracle).Query(%q) failed: %s", pos, err)
-		}
-		WriteResult(out, res)
-	}
-	want := `multi.f is called from these 1 sites:
-	static function call from multi.main
-
-function call (or conversion) of type ()
-
-Free identifiers:
-var x int
-
-`
-	if got := out.String(); got != want {
-		t.Errorf("Query output differs; want <<%s>>, got <<%s>>\n", want, got)
-	}
-}
diff --git a/go/src/golang.org/x/tools/oracle/peers.go b/go/src/golang.org/x/tools/oracle/peers.go
index bcff11c..9c2a497 100644
--- a/go/src/golang.org/x/tools/oracle/peers.go
+++ b/go/src/golang.org/x/tools/oracle/peers.go
@@ -10,6 +10,7 @@
 	"go/token"
 	"sort"
 
+	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/ssa"
 	"golang.org/x/tools/go/ssa/ssautil"
 	"golang.org/x/tools/go/types"
@@ -22,20 +23,46 @@
 // TODO(adonovan): support reflect.{Select,Recv,Send,Close}.
 // TODO(adonovan): permit the user to query based on a MakeChan (not send/recv),
 // or the implicit receive in "for v := range ch".
-func peers(o *Oracle, qpos *QueryPos) (queryResult, error) {
-	opPos := findOp(qpos)
-	if opPos == token.NoPos {
-		return nil, fmt.Errorf("there is no channel operation here")
+func peers(q *Query) error {
+	lconf := loader.Config{Build: q.Build}
+
+	if err := setPTAScope(&lconf, q.Scope); err != nil {
+		return err
 	}
 
-	buildSSA(o)
+	// Load/parse/type-check the program.
+	lprog, err := lconf.Load()
+	if err != nil {
+		return err
+	}
+	q.Fset = lprog.Fset
+
+	qpos, err := parseQueryPos(lprog, q.Pos, false)
+	if err != nil {
+		return err
+	}
+
+	prog := ssautil.CreateProgram(lprog, ssa.GlobalDebug)
+
+	ptaConfig, err := setupPTA(prog, lprog, q.PTALog, q.Reflection)
+	if err != nil {
+		return err
+	}
+
+	opPos := findOp(qpos)
+	if opPos == token.NoPos {
+		return fmt.Errorf("there is no channel operation here")
+	}
+
+	// Defer SSA construction till after errors are reported.
+	prog.BuildAll()
 
 	var queryOp chanOp // the originating send or receive operation
 	var ops []chanOp   // all sends/receives of opposite direction
 
 	// Look at all channel operations in the whole ssa.Program.
 	// Build a list of those of same type as the query.
-	allFuncs := ssautil.AllFunctions(o.prog)
+	allFuncs := ssautil.AllFunctions(prog)
 	for fn := range allFuncs {
 		for _, b := range fn.Blocks {
 			for _, instr := range b.Instrs {
@@ -49,7 +76,7 @@
 		}
 	}
 	if queryOp.ch == nil {
-		return nil, fmt.Errorf("ssa.Instruction for send/receive not found")
+		return fmt.Errorf("ssa.Instruction for send/receive not found")
 	}
 
 	// Discard operations of wrong channel element type.
@@ -58,11 +85,11 @@
 	// ignore both directionality and type names.
 	queryType := queryOp.ch.Type()
 	queryElemType := queryType.Underlying().(*types.Chan).Elem()
-	o.ptaConfig.AddQuery(queryOp.ch)
+	ptaConfig.AddQuery(queryOp.ch)
 	i := 0
 	for _, op := range ops {
 		if types.Identical(op.ch.Type().Underlying().(*types.Chan).Elem(), queryElemType) {
-			o.ptaConfig.AddQuery(op.ch)
+			ptaConfig.AddQuery(op.ch)
 			ops[i] = op
 			i++
 		}
@@ -70,7 +97,7 @@
 	ops = ops[:i]
 
 	// Run the pointer analysis.
-	ptares := ptrAnalysis(o)
+	ptares := ptrAnalysis(ptaConfig)
 
 	// Find the points-to set.
 	queryChanPtr := ptares.Queries[queryOp.ch]
@@ -100,14 +127,15 @@
 	sort.Sort(byPos(receives))
 	sort.Sort(byPos(closes))
 
-	return &peersResult{
+	q.result = &peersResult{
 		queryPos:  opPos,
 		queryType: queryType,
 		makes:     makes,
 		sends:     sends,
 		receives:  receives,
 		closes:    closes,
-	}, nil
+	}
+	return nil
 }
 
 // findOp returns the position of the enclosing send/receive/close op.
@@ -115,7 +143,7 @@
 // for close operations, it's the Lparen of the function call.
 //
 // TODO(adonovan): handle implicit receive operations from 'for...range chan' statements.
-func findOp(qpos *QueryPos) token.Pos {
+func findOp(qpos *queryPos) token.Pos {
 	for _, n := range qpos.path {
 		switch n := n.(type) {
 		case *ast.UnaryExpr:
@@ -215,6 +243,8 @@
 
 // -------- utils --------
 
+// NB: byPos is not deterministic across packages since it depends on load order.
+// Use lessPos if the tests need it.
 type byPos []token.Pos
 
 func (p byPos) Len() int           { return len(p) }
diff --git a/go/src/golang.org/x/tools/oracle/pointsto.go b/go/src/golang.org/x/tools/oracle/pointsto.go
index 10ad069..d366dd3 100644
--- a/go/src/golang.org/x/tools/oracle/pointsto.go
+++ b/go/src/golang.org/x/tools/oracle/pointsto.go
@@ -14,6 +14,7 @@
 	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/pointer"
 	"golang.org/x/tools/go/ssa"
+	"golang.org/x/tools/go/ssa/ssautil"
 	"golang.org/x/tools/go/types"
 	"golang.org/x/tools/oracle/serial"
 )
@@ -25,10 +26,35 @@
 //
 // All printed sets are sorted to ensure determinism.
 //
-func pointsto(o *Oracle, qpos *QueryPos) (queryResult, error) {
+func pointsto(q *Query) error {
+	lconf := loader.Config{Build: q.Build}
+
+	if err := setPTAScope(&lconf, q.Scope); err != nil {
+		return err
+	}
+
+	// Load/parse/type-check the program.
+	lprog, err := lconf.Load()
+	if err != nil {
+		return err
+	}
+	q.Fset = lprog.Fset
+
+	qpos, err := parseQueryPos(lprog, q.Pos, true) // needs exact pos
+	if err != nil {
+		return err
+	}
+
+	prog := ssautil.CreateProgram(lprog, ssa.GlobalDebug)
+
+	ptaConfig, err := setupPTA(prog, lprog, q.PTALog, q.Reflection)
+	if err != nil {
+		return err
+	}
+
 	path, action := findInterestingNode(qpos.info, qpos.path)
 	if action != actionExpr {
-		return nil, fmt.Errorf("pointer analysis wants an expression; got %s",
+		return fmt.Errorf("pointer analysis wants an expression; got %s",
 			astutil.NodeDescription(qpos.path[0]))
 	}
 
@@ -37,7 +63,7 @@
 	switch n := path[0].(type) {
 	case *ast.ValueSpec:
 		// ambiguous ValueSpec containing multiple names
-		return nil, fmt.Errorf("multiple value specification")
+		return fmt.Errorf("multiple value specification")
 	case *ast.Ident:
 		obj = qpos.info.ObjectOf(n)
 		expr = n
@@ -45,41 +71,44 @@
 		expr = n
 	default:
 		// TODO(adonovan): is this reachable?
-		return nil, fmt.Errorf("unexpected AST for expr: %T", n)
+		return fmt.Errorf("unexpected AST for expr: %T", n)
 	}
 
 	// Reject non-pointerlike types (includes all constants---except nil).
 	// TODO(adonovan): reject nil too.
 	typ := qpos.info.TypeOf(expr)
 	if !pointer.CanPoint(typ) {
-		return nil, fmt.Errorf("pointer analysis wants an expression of reference type; got %s", typ)
+		return fmt.Errorf("pointer analysis wants an expression of reference type; got %s", typ)
 	}
 
 	// Determine the ssa.Value for the expression.
 	var value ssa.Value
 	var isAddr bool
-	var err error
 	if obj != nil {
 		// def/ref of func/var object
-		value, isAddr, err = ssaValueForIdent(o.prog, qpos.info, obj, path)
+		value, isAddr, err = ssaValueForIdent(prog, qpos.info, obj, path)
 	} else {
-		value, isAddr, err = ssaValueForExpr(o.prog, qpos.info, path)
+		value, isAddr, err = ssaValueForExpr(prog, qpos.info, path)
 	}
 	if err != nil {
-		return nil, err // e.g. trivially dead code
+		return err // e.g. trivially dead code
 	}
 
+	// Defer SSA construction till after errors are reported.
+	prog.BuildAll()
+
 	// Run the pointer analysis.
-	ptrs, err := runPTA(o, value, isAddr)
+	ptrs, err := runPTA(ptaConfig, value, isAddr)
 	if err != nil {
-		return nil, err // e.g. analytically unreachable
+		return err // e.g. analytically unreachable
 	}
 
-	return &pointstoResult{
+	q.result = &pointstoResult{
 		qpos: qpos,
 		typ:  typ,
 		ptrs: ptrs,
-	}, nil
+	}
+	return nil
 }
 
 // ssaValueForIdent returns the ssa.Value for the ast.Ident whose path
@@ -129,17 +158,15 @@
 }
 
 // runPTA runs the pointer analysis of the selected SSA value or address.
-func runPTA(o *Oracle, v ssa.Value, isAddr bool) (ptrs []pointerResult, err error) {
-	buildSSA(o)
-
+func runPTA(conf *pointer.Config, v ssa.Value, isAddr bool) (ptrs []pointerResult, err error) {
 	T := v.Type()
 	if isAddr {
-		o.ptaConfig.AddIndirectQuery(v)
+		conf.AddIndirectQuery(v)
 		T = deref(T)
 	} else {
-		o.ptaConfig.AddQuery(v)
+		conf.AddQuery(v)
 	}
-	ptares := ptrAnalysis(o)
+	ptares := ptrAnalysis(conf)
 
 	var ptr pointer.Pointer
 	if isAddr {
@@ -177,7 +204,7 @@
 }
 
 type pointstoResult struct {
-	qpos *QueryPos
+	qpos *queryPos
 	typ  types.Type      // type of expression
 	ptrs []pointerResult // pointer info (typ is concrete => len==1)
 }
@@ -188,17 +215,17 @@
 		// reflect.Value expression.
 
 		if len(r.ptrs) > 0 {
-			printf(r.qpos, "this %s may contain these dynamic types:", r.qpos.TypeString(r.typ))
+			printf(r.qpos, "this %s may contain these dynamic types:", r.qpos.typeString(r.typ))
 			for _, ptr := range r.ptrs {
 				var obj types.Object
 				if nt, ok := deref(ptr.typ).(*types.Named); ok {
 					obj = nt.Obj()
 				}
 				if len(ptr.labels) > 0 {
-					printf(obj, "\t%s, may point to:", r.qpos.TypeString(ptr.typ))
+					printf(obj, "\t%s, may point to:", r.qpos.typeString(ptr.typ))
 					printLabels(printf, ptr.labels, "\t\t")
 				} else {
-					printf(obj, "\t%s", r.qpos.TypeString(ptr.typ))
+					printf(obj, "\t%s", r.qpos.typeString(ptr.typ))
 				}
 			}
 		} else {
@@ -208,11 +235,11 @@
 		// Show labels for other expressions.
 		if ptr := r.ptrs[0]; len(ptr.labels) > 0 {
 			printf(r.qpos, "this %s may point to these objects:",
-				r.qpos.TypeString(r.typ))
+				r.qpos.typeString(r.typ))
 			printLabels(printf, ptr.labels, "\t")
 		} else {
 			printf(r.qpos, "this %s may not point to anything.",
-				r.qpos.TypeString(r.typ))
+				r.qpos.typeString(r.typ))
 		}
 	}
 }
@@ -232,7 +259,7 @@
 			})
 		}
 		pts = append(pts, serial.PointsTo{
-			Type:    r.qpos.TypeString(ptr.typ),
+			Type:    r.qpos.typeString(ptr.typ),
 			NamePos: namePos,
 			Labels:  labels,
 		})
diff --git a/go/src/golang.org/x/tools/oracle/pos.go b/go/src/golang.org/x/tools/oracle/pos.go
index d5d558b..3c706f3 100644
--- a/go/src/golang.org/x/tools/oracle/pos.go
+++ b/go/src/golang.org/x/tools/oracle/pos.go
@@ -117,13 +117,7 @@
 
 // fastQueryPos parses the -pos flag and returns a QueryPos.
 // It parses only a single file, and does not run the type checker.
-//
-// Caveat: the token.{FileSet,Pos} info it contains is not comparable
-// with that from the oracle's FileSet!  (We don't accept oracle.fset
-// as a parameter because we don't want the same filename to appear
-// multiple times in one FileSet.)
-//
-func fastQueryPos(posFlag string) (*QueryPos, error) {
+func fastQueryPos(posFlag string) (*queryPos, error) {
 	filename, startOffset, endOffset, err := parsePosFlag(posFlag)
 	if err != nil {
 		return nil, err
@@ -145,5 +139,5 @@
 		return nil, fmt.Errorf("no syntax here")
 	}
 
-	return &QueryPos{fset, start, end, path, exact, nil}, nil
+	return &queryPos{fset, start, end, path, exact, nil}, nil
 }
diff --git a/go/src/golang.org/x/tools/oracle/referrers.go b/go/src/golang.org/x/tools/oracle/referrers.go
index 037b6db..7383d1f 100644
--- a/go/src/golang.org/x/tools/oracle/referrers.go
+++ b/go/src/golang.org/x/tools/oracle/referrers.go
@@ -5,46 +5,115 @@
 package oracle
 
 import (
+	"bytes"
 	"fmt"
 	"go/ast"
 	"go/token"
+	"io/ioutil"
 	"sort"
 
+	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/types"
 	"golang.org/x/tools/oracle/serial"
+	"golang.org/x/tools/refactor/importgraph"
 )
 
 // Referrers reports all identifiers that resolve to the same object
 // as the queried identifier, within any package in the analysis scope.
-//
-func referrers(o *Oracle, qpos *QueryPos) (queryResult, error) {
-	id, _ := qpos.path[0].(*ast.Ident)
-	if id == nil {
-		return nil, fmt.Errorf("no identifier here")
+func referrers(q *Query) error {
+	lconf := loader.Config{Build: q.Build}
+	allowErrors(&lconf)
+
+	if err := importQueryPackage(q.Pos, &lconf); err != nil {
+		return err
 	}
 
-	obj := qpos.info.ObjectOf(id)
-	if obj == nil {
-		// Happens for y in "switch y := x.(type)", but I think that's all.
-		return nil, fmt.Errorf("no object for identifier")
+	var id *ast.Ident
+	var obj types.Object
+	var lprog *loader.Program
+	var pass2 bool
+	var qpos *queryPos
+	for {
+		// Load/parse/type-check the program.
+		var err error
+		lprog, err = lconf.Load()
+		if err != nil {
+			return err
+		}
+		q.Fset = lprog.Fset
+
+		qpos, err = parseQueryPos(lprog, q.Pos, false)
+		if err != nil {
+			return err
+		}
+
+		id, _ = qpos.path[0].(*ast.Ident)
+		if id == nil {
+			return fmt.Errorf("no identifier here")
+		}
+
+		obj = qpos.info.ObjectOf(id)
+		if obj == nil {
+			// Happens for y in "switch y := x.(type)",
+			// the package declaration,
+			// and unresolved identifiers.
+			if _, ok := qpos.path[1].(*ast.File); ok { // package decl?
+				pkg := qpos.info.Pkg
+				obj = types.NewPkgName(id.Pos(), pkg, pkg.Name(), pkg)
+			} else {
+				return fmt.Errorf("no object for identifier: %T", qpos.path[1])
+			}
+		}
+
+		if pass2 {
+			break
+		}
+
+		// If the identifier is exported, we must load all packages that
+		// depend transitively upon the package that defines it.
+		// Treat PkgNames as exported, even though they're lowercase.
+		if _, isPkg := obj.(*types.PkgName); !(isPkg || obj.Exported()) {
+			break // not exported
+		}
+
+		// Scan the workspace and build the import graph.
+		// Ignore broken packages.
+		_, rev, _ := importgraph.Build(q.Build)
+
+		// Re-load the larger program.
+		// Create a new file set so that ...
+		// External test packages are never imported,
+		// so they will never appear in the graph.
+		// (We must reset the Config here, not just reset the Fset field.)
+		lconf = loader.Config{
+			Fset:  token.NewFileSet(),
+			Build: q.Build,
+		}
+		allowErrors(&lconf)
+		for path := range rev.Search(obj.Pkg().Path()) {
+			lconf.ImportWithTests(path)
+		}
+		pass2 = true
 	}
 
 	// Iterate over all go/types' Uses facts for the entire program.
 	var refs []*ast.Ident
-	for _, info := range o.typeInfo {
+	for _, info := range lprog.AllPackages {
 		for id2, obj2 := range info.Uses {
 			if sameObj(obj, obj2) {
 				refs = append(refs, id2)
 			}
 		}
 	}
-	sort.Sort(byNamePos(refs))
+	sort.Sort(byNamePos{q.Fset, refs})
 
-	return &referrersResult{
+	q.result = &referrersResult{
+		qpos:  qpos,
 		query: id,
 		obj:   obj,
 		refs:  refs,
-	}, nil
+	}
+	return nil
 }
 
 // same reports whether x and y are identical, or both are PkgNames
@@ -64,28 +133,77 @@
 
 // -------- utils --------
 
-type byNamePos []*ast.Ident
+// An deterministic ordering for token.Pos that doesn't
+// depend on the order in which packages were loaded.
+func lessPos(fset *token.FileSet, x, y token.Pos) bool {
+	fx := fset.File(x)
+	fy := fset.File(y)
+	if fx != fy {
+		return fx.Name() < fy.Name()
+	}
+	return x < y
+}
 
-func (p byNamePos) Len() int           { return len(p) }
-func (p byNamePos) Less(i, j int) bool { return p[i].NamePos < p[j].NamePos }
-func (p byNamePos) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }
+type byNamePos struct {
+	fset *token.FileSet
+	ids  []*ast.Ident
+}
+
+func (p byNamePos) Len() int      { return len(p.ids) }
+func (p byNamePos) Swap(i, j int) { p.ids[i], p.ids[j] = p.ids[j], p.ids[i] }
+func (p byNamePos) Less(i, j int) bool {
+	return lessPos(p.fset, p.ids[i].NamePos, p.ids[j].NamePos)
+}
 
 type referrersResult struct {
+	qpos  *queryPos
 	query *ast.Ident   // identifier of query
 	obj   types.Object // object it denotes
 	refs  []*ast.Ident // set of all other references to it
 }
 
 func (r *referrersResult) display(printf printfFunc) {
-	if r.query.Pos() != r.obj.Pos() {
-		printf(r.query, "reference to %s", r.obj.Name())
+	printf(r.obj, "%d references to %s", len(r.refs), r.qpos.objectString(r.obj))
+
+	// Show referring lines, like grep.
+	type fileinfo struct {
+		refs     []*ast.Ident
+		linenums []int       // line number of refs[i]
+		data     chan []byte // file contents
 	}
-	// TODO(adonovan): pretty-print object using same logic as
-	// (*describeValueResult).display.
-	printf(r.obj, "defined here as %s", r.obj)
+	var fileinfos []*fileinfo
+	fileinfosByName := make(map[string]*fileinfo)
+
+	// First pass: start the file reads concurrently.
 	for _, ref := range r.refs {
-		if r.query != ref {
-			printf(ref, "referenced here")
+		posn := r.qpos.fset.Position(ref.Pos())
+		fi := fileinfosByName[posn.Filename]
+		if fi == nil {
+			fi = &fileinfo{data: make(chan []byte)}
+			fileinfosByName[posn.Filename] = fi
+			fileinfos = append(fileinfos, fi)
+
+			// First request for this file:
+			// start asynchronous read.
+			go func() {
+				content, err := ioutil.ReadFile(posn.Filename)
+				if err != nil {
+					content = []byte(fmt.Sprintf("error: %v", err))
+				}
+				fi.data <- content
+			}()
+		}
+		fi.refs = append(fi.refs, ref)
+		fi.linenums = append(fi.linenums, posn.Line)
+	}
+
+	// Second pass: print refs in original order.
+	// One line may have several refs at different columns.
+	for _, fi := range fileinfos {
+		content := <-fi.data // wait for I/O completion
+		lines := bytes.Split(content, []byte("\n"))
+		for i, ref := range fi.refs {
+			printf(ref, "%s", lines[fi.linenums[i]-1])
 		}
 	}
 }
diff --git a/go/src/golang.org/x/tools/oracle/serial/serial.go b/go/src/golang.org/x/tools/oracle/serial/serial.go
index 6432b61..65f0822 100644
--- a/go/src/golang.org/x/tools/oracle/serial/serial.go
+++ b/go/src/golang.org/x/tools/oracle/serial/serial.go
@@ -64,20 +64,6 @@
 	Caller string `json:"caller"`        // full name of calling function
 }
 
-// A CallGraph is one element of the slice returned by a 'callgraph' query.
-// The index of each item in the slice is used to identify it in the
-// Callers adjacency list.
-//
-// Multiple nodes may have the same Name due to context-sensitive
-// treatment of some functions.
-//
-// TODO(adonovan): perhaps include edge labels (i.e. callsites).
-type CallGraph struct {
-	Name     string `json:"name"`               // full name of function
-	Pos      string `json:"pos"`                // location of function
-	Children []int  `json:"children,omitempty"` // indices of child nodes in callgraph list
-}
-
 // A CallStack is the result of a 'callstack' query.
 // It indicates an arbitrary path from the root of the callgraph to
 // the query function.
@@ -101,7 +87,6 @@
 }
 
 // An Implements contains the result of an 'implements' query.
-
 // It describes the queried type, the set of named non-empty interface
 // types to which it is assignable, and the set of named/*named types
 // (concrete or non-empty interface) which may be assigned to it.
@@ -111,6 +96,15 @@
 	AssignableTo      []ImplementsType `json:"to,omitempty"`      // types assignable to T
 	AssignableFrom    []ImplementsType `json:"from,omitempty"`    // interface types assignable from T
 	AssignableFromPtr []ImplementsType `json:"fromptr,omitempty"` // interface types assignable only from *T
+
+	// The following fields are set only if the query was a method.
+	// Assignable{To,From,FromPtr}Method[i] is the corresponding
+	// method of type Assignable{To,From,FromPtr}[i], or blank
+	// {"",""} if that type lacks the method.
+	Method                  *DescribeMethod  `json:"method,omitempty"` //  the queried method
+	AssignableToMethod      []DescribeMethod `json:"to_method,omitempty"`
+	AssignableFromMethod    []DescribeMethod `json:"from_method,omitempty"`
+	AssignableFromPtrMethod []DescribeMethod `json:"fromptr_method,omitempty"`
 }
 
 // An ImplementsType describes a single type as part of an 'implements' query.
@@ -224,11 +218,6 @@
 	Value   *DescribeValue   `json:"value,omitempty"`
 }
 
-type PTAWarning struct {
-	Pos     string `json:"pos"`     // location associated with warning
-	Message string `json:"message"` // warning message
-}
-
 // A WhichErrs is the result of a 'whicherrs' query.
 // It contains the position of the queried error and the possible globals,
 // constants, and types it may point to.
@@ -256,7 +245,6 @@
 	// the one specified by 'mode'.
 	Callees    *Callees    `json:"callees,omitempty"`
 	Callers    []Caller    `json:"callers,omitempty"`
-	Callgraph  []CallGraph `json:"callgraph,omitempty"`
 	Callstack  *CallStack  `json:"callstack,omitempty"`
 	Definition *Definition `json:"definition,omitempty"`
 	Describe   *Describe   `json:"describe,omitempty"`
@@ -267,6 +255,4 @@
 	Referrers  *Referrers  `json:"referrers,omitempty"`
 	What       *What       `json:"what,omitempty"`
 	WhichErrs  *WhichErrs  `json:"whicherrs,omitempty"`
-
-	Warnings []PTAWarning `json:"warnings,omitempty"` // warnings from pointer analysis
 }
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/calls-json/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/calls-json/main.go
new file mode 100644
index 0000000..1c7a6c9
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/calls-json/main.go
@@ -0,0 +1,16 @@
+package main
+
+// Tests of call-graph queries, -format=json.
+// See go.tools/oracle/oracle_test.go for explanation.
+// See calls-json.golden for expected query results.
+
+func call(f func()) {
+	f() // @callees @callees-f "f"
+}
+
+func main() {
+	call(func() {
+		// @callers callers-main.anon "^"
+		// @callstack callstack-main.anon "^"
+	})
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/calls-json/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/calls-json/main.golden
new file mode 100644
index 0000000..f5eced6
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/calls-json/main.golden
@@ -0,0 +1,34 @@
+-------- @callees @callees-f --------
+{
+	"mode": "callees",
+	"callees": {
+		"pos": "testdata/src/calls-json/main.go:8:3",
+		"desc": "dynamic function call",
+		"callees": [
+			{
+				"name": "main.main$1",
+				"pos": "testdata/src/calls-json/main.go:12:7"
+			}
+		]
+	}
+}
+-------- @callstack callstack-main.anon --------
+{
+	"mode": "callstack",
+	"callstack": {
+		"pos": "testdata/src/calls-json/main.go:12:7",
+		"target": "main.main$1",
+		"callers": [
+			{
+				"pos": "testdata/src/calls-json/main.go:8:3",
+				"desc": "dynamic function call",
+				"caller": "main.call"
+			},
+			{
+				"pos": "testdata/src/calls-json/main.go:12:6",
+				"desc": "static function call",
+				"caller": "main.main"
+			}
+		]
+	}
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/calls/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/calls/main.go
new file mode 100644
index 0000000..54bb895
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/calls/main.go
@@ -0,0 +1,118 @@
+package main
+
+import (
+	"fmt"
+)
+
+// Tests of call-graph queries.
+// See go.tools/oracle/oracle_test.go for explanation.
+// See calls.golden for expected query results.
+
+func A(x *int) { // @pointsto pointsto-A-x "x"
+	// @callers callers-A "^"
+	// @callstack callstack-A "^"
+}
+
+func B(x *int) { // @pointsto pointsto-B-x "x"
+	// @callers callers-B "^"
+}
+
+func foo() {
+}
+
+// apply is not (yet) treated context-sensitively.
+func apply(f func(x *int), x *int) {
+	f(x) // @callees callees-apply "f"
+	// @callers callers-apply "^"
+}
+
+// store *is* treated context-sensitively,
+// so the points-to sets for pc, pd are precise.
+func store(ptr **int, value *int) {
+	*ptr = value
+	// @callers callers-store "^"
+}
+
+func call(f func() *int) {
+	// Result points to anon function.
+	f() // @pointsto pointsto-result-f "f"
+
+	// Target of call is anon function.
+	f() // @callees callees-main.call-f "f"
+
+	// @callers callers-main.call "^"
+}
+
+func main() {
+	var a, b int
+	go apply(A, &a) // @callees callees-main-apply1 "app"
+	defer apply(B, &b)
+
+	var c, d int
+	var pc, pd *int // @pointsto pointsto-pc "pc"
+	store(&pc, &c)
+	store(&pd, &d)
+	_ = pd // @pointsto pointsto-pd "pd"
+
+	call(func() *int {
+		// We are called twice from main.call
+		// @callers callers-main.anon "^"
+		return &a
+	})
+
+	// Errors
+	_ = "no function call here"   // @callees callees-err-no-call "no"
+	print("builtin")              // @callees callees-err-builtin "builtin"
+	_ = string("type conversion") // @callees callees-err-conversion "str"
+	call(nil)                     // @callees callees-err-bad-selection "call\\(nil"
+	if false {
+		main() // @callees callees-err-deadcode1 "main"
+	}
+	var nilFunc func()
+	nilFunc() // @callees callees-err-nil-func "nilFunc"
+	var i interface {
+		f()
+	}
+	i.f() // @callees callees-err-nil-interface "i.f"
+
+	i = new(myint)
+	i.f() // @callees callees-not-a-wrapper "f"
+
+	// statically dispatched calls. Handled specially by callees, so test that they work.
+	foo()         // @callees callees-static-call "foo"
+	fmt.Println() // @callees callees-qualified-call "Println"
+	m := new(method)
+	m.f() // @callees callees-static-method-call "f"
+}
+
+type myint int
+
+func (myint) f() {
+	// @callers callers-not-a-wrapper "^"
+}
+
+type method int
+
+func (method) f() {
+}
+
+var dynamic = func() {}
+
+func deadcode() {
+	main() // @callees callees-err-deadcode2 "main"
+	// @callers callers-err-deadcode "^"
+	// @callstack callstack-err-deadcode "^"
+
+	// Within dead code, dynamic calls have no callees.
+	dynamic() // @callees callees-err-deadcode3 "dynamic"
+}
+
+// This code belongs to init.
+var global = 123 // @callers callers-global "global"
+
+// The package initializer may be called by other packages' inits, or
+// in this case, the root of the callgraph.  The source-level init functions
+// are in turn called by it.
+func init() {
+	// @callstack callstack-init "^"
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/calls/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/calls/main.golden
new file mode 100644
index 0000000..b5e6547
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/calls/main.golden
@@ -0,0 +1,121 @@
+-------- @pointsto pointsto-A-x --------
+this *int may point to these objects:
+	a
+	b
+
+-------- @callstack callstack-A --------
+Found a call path from root to main.A
+main.A
+dynamic function call from main.apply
+concurrent static function call from main.main
+
+-------- @pointsto pointsto-B-x --------
+this *int may point to these objects:
+	a
+	b
+
+-------- @callers callers-B --------
+main.B is called from these 1 sites:
+	dynamic function call from main.apply
+
+-------- @callees callees-apply --------
+this dynamic function call dispatches to:
+	main.A
+	main.B
+
+-------- @callers callers-apply --------
+main.apply is called from these 2 sites:
+	concurrent static function call from main.main
+	deferred static function call from main.main
+
+-------- @callers callers-store --------
+main.store is called from these 2 sites:
+	static function call from main.main
+	static function call from main.main
+
+-------- @pointsto pointsto-result-f --------
+this func() *int may point to these objects:
+	main.main$1
+
+-------- @callees callees-main.call-f --------
+this dynamic function call dispatches to:
+	main.main$1
+
+-------- @callers callers-main.call --------
+main.call is called from these 2 sites:
+	static function call from main.main
+	static function call from main.main
+
+-------- @callees callees-main-apply1 --------
+this static function call dispatches to:
+	main.apply
+
+-------- @pointsto pointsto-pc --------
+this *int may point to these objects:
+	c
+
+-------- @pointsto pointsto-pd --------
+this *int may point to these objects:
+	d
+
+-------- @callees callees-err-no-call --------
+
+Error: there is no function call here
+-------- @callees callees-err-builtin --------
+
+Error: this is a call to the built-in 'print' operator
+-------- @callees callees-err-conversion --------
+
+Error: this is a type conversion, not a function call
+-------- @callees callees-err-bad-selection --------
+
+Error: ambiguous selection within function call (or conversion)
+-------- @callees callees-err-deadcode1 --------
+this static function call dispatches to:
+	main.main
+
+-------- @callees callees-err-nil-func --------
+dynamic function call on nil value
+
+-------- @callees callees-err-nil-interface --------
+dynamic method call on nil value
+
+-------- @callees callees-not-a-wrapper --------
+this dynamic method call dispatches to:
+	(main.myint).f
+
+-------- @callees callees-static-call --------
+this static function call dispatches to:
+	main.foo
+
+-------- @callees callees-qualified-call --------
+this static function call dispatches to:
+	fmt.Println
+
+-------- @callees callees-static-method-call --------
+this static function call dispatches to:
+	(main.method).f
+
+-------- @callers callers-not-a-wrapper --------
+(main.myint).f is called from these 1 sites:
+	dynamic method call from main.main
+
+-------- @callees callees-err-deadcode2 --------
+this static function call dispatches to:
+	main.main
+
+-------- @callstack callstack-err-deadcode --------
+main.deadcode is unreachable in this analysis scope
+
+-------- @callees callees-err-deadcode3 --------
+
+Error: this call site is unreachable in this analysis
+-------- @callers callers-global --------
+main.init is called from these 1 sites:
+the root of the call graph
+
+-------- @callstack callstack-init --------
+Found a call path from root to main.init#1
+main.init#1
+static function call from main.init
+
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/describe-json/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/describe-json/main.go
new file mode 100644
index 0000000..359c731
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/describe-json/main.go
@@ -0,0 +1,29 @@
+package describe // @describe pkgdecl "describe"
+
+// Tests of 'describe' query, -format=json.
+// See go.tools/oracle/oracle_test.go for explanation.
+// See describe-json.golden for expected query results.
+
+func main() {
+	var s struct{ x [3]int }
+	p := &s.x[0] // @describe desc-val-p "p"
+	_ = p
+
+	var i I = C(0)
+	if i == nil {
+		i = new(D)
+	}
+	print(i) // @describe desc-val-i "\\bi\\b"
+
+	go main() // @describe desc-stmt "go"
+}
+
+type I interface {
+	f()
+}
+
+type C int // @describe desc-type-C "C"
+type D struct{}
+
+func (c C) f()  {}
+func (d *D) f() {}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/describe-json/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/describe-json/main.golden
new file mode 100644
index 0000000..9d03661
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/describe-json/main.golden
@@ -0,0 +1,111 @@
+-------- @describe pkgdecl --------
+{
+	"mode": "describe",
+	"describe": {
+		"desc": "definition of package \"describe-json\"",
+		"pos": "testdata/src/describe-json/main.go:1:9",
+		"detail": "package",
+		"package": {
+			"path": "describe-json",
+			"members": [
+				{
+					"name": "C",
+					"type": "int",
+					"pos": "testdata/src/describe-json/main.go:25:6",
+					"kind": "type",
+					"methods": [
+						{
+							"name": "method (C) f()",
+							"pos": "testdata/src/describe-json/main.go:28:12"
+						}
+					]
+				},
+				{
+					"name": "D",
+					"type": "struct{}",
+					"pos": "testdata/src/describe-json/main.go:26:6",
+					"kind": "type",
+					"methods": [
+						{
+							"name": "method (*D) f()",
+							"pos": "testdata/src/describe-json/main.go:29:13"
+						}
+					]
+				},
+				{
+					"name": "I",
+					"type": "interface{f()}",
+					"pos": "testdata/src/describe-json/main.go:21:6",
+					"kind": "type",
+					"methods": [
+						{
+							"name": "method (I) f()",
+							"pos": "testdata/src/describe-json/main.go:22:2"
+						}
+					]
+				},
+				{
+					"name": "main",
+					"type": "func()",
+					"pos": "testdata/src/describe-json/main.go:7:6",
+					"kind": "func"
+				}
+			]
+		}
+	}
+}
+-------- @describe desc-val-p --------
+{
+	"mode": "describe",
+	"describe": {
+		"desc": "identifier",
+		"pos": "testdata/src/describe-json/main.go:9:2",
+		"detail": "value",
+		"value": {
+			"type": "*int",
+			"objpos": "testdata/src/describe-json/main.go:9:2"
+		}
+	}
+}
+-------- @describe desc-val-i --------
+{
+	"mode": "describe",
+	"describe": {
+		"desc": "identifier",
+		"pos": "testdata/src/describe-json/main.go:16:8",
+		"detail": "value",
+		"value": {
+			"type": "I",
+			"objpos": "testdata/src/describe-json/main.go:12:6"
+		}
+	}
+}
+-------- @describe desc-stmt --------
+{
+	"mode": "describe",
+	"describe": {
+		"desc": "go statement",
+		"pos": "testdata/src/describe-json/main.go:18:2",
+		"detail": "unknown"
+	}
+}
+-------- @describe desc-type-C --------
+{
+	"mode": "describe",
+	"describe": {
+		"desc": "definition of type C (size 8, align 8)",
+		"pos": "testdata/src/describe-json/main.go:25:6",
+		"detail": "type",
+		"type": {
+			"type": "C",
+			"namepos": "testdata/src/describe-json/main.go:25:6",
+			"namedef": "int",
+			"methods": [
+				{
+					"name": "method (C) f()",
+					"pos": "testdata/src/describe-json/main.go:28:12"
+				}
+			]
+		}
+	}
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/describe/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/describe/main.go
new file mode 100644
index 0000000..69e0a75
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/describe/main.go
@@ -0,0 +1,87 @@
+package describe // @describe pkgdecl "describe"
+
+// Tests of 'describe' query.
+// See go.tools/oracle/oracle_test.go for explanation.
+// See describe.golden for expected query results.
+
+// TODO(adonovan): more coverage of the (extensive) logic.
+
+type cake float64 // @describe type-ref-builtin "float64"
+
+const c = iota // @describe const-ref-iota "iota"
+
+const pi = 3.141     // @describe const-def-pi "pi"
+const pie = cake(pi) // @describe const-def-pie "pie"
+const _ = pi         // @describe const-ref-pi "pi"
+
+var global = new(string) // NB: ssa.Global is indirect, i.e. **string
+
+func main() { // @describe func-def-main "main"
+	// func objects
+	_ = main   // @describe func-ref-main "main"
+	_ = (*C).f // @describe func-ref-*C.f "..C..f"
+	_ = D.f    // @describe func-ref-D.f "D.f"
+	_ = I.f    // @describe func-ref-I.f "I.f"
+	var d D    // @describe type-D "D"
+	var i I    // @describe type-I "I"
+	_ = d.f    // @describe func-ref-d.f "d.f"
+	_ = i.f    // @describe func-ref-i.f "i.f"
+
+	// var objects
+	anon := func() {
+		_ = d // @describe ref-lexical-d "d"
+	}
+	_ = anon   // @describe ref-anon "anon"
+	_ = global // @describe ref-global "global"
+
+	// SSA affords some local flow sensitivity.
+	var a, b int
+	var x = &a // @describe var-def-x-1 "x"
+	_ = x      // @describe var-ref-x-1 "x"
+	x = &b     // @describe var-def-x-2 "x"
+	_ = x      // @describe var-ref-x-2 "x"
+
+	i = new(C) // @describe var-ref-i-C "i"
+	if i != nil {
+		i = D{} // @describe var-ref-i-D "i"
+	}
+	print(i) // @describe var-ref-i "\\bi\\b"
+
+	// const objects
+	const localpi = 3.141     // @describe const-local-pi "localpi"
+	const localpie = cake(pi) // @describe const-local-pie "localpie"
+	const _ = localpi         // @describe const-ref-localpi "localpi"
+
+	// type objects
+	type T int      // @describe type-def-T "T"
+	var three T = 3 // @describe type-ref-T "T"
+	_ = three
+
+	print(1 + 2*3)        // @describe const-expr " 2.3"
+	print(real(1+2i) - 3) // @describe const-expr2 "real.*3"
+
+	m := map[string]*int{"a": &a}
+	mapval, _ := m["a"] // @describe map-lookup,ok "m..a.."
+	_ = mapval          // @describe mapval "mapval"
+	_ = m               // @describe m "m"
+
+	defer main() // @describe defer-stmt "defer"
+	go main()    // @describe go-stmt "go"
+
+	panic(3) // @describe builtin-ref-panic "panic"
+
+	var a2 int // @describe var-decl-stmt "var a2 int"
+	_ = a2
+	var _ int // @describe var-decl-stmt2 "var _ int"
+	var _ int // @describe var-def-blank "_"
+}
+
+type I interface { // @describe def-iface-I "I"
+	f() // @describe def-imethod-I.f "f"
+}
+
+type C int
+type D struct{}
+
+func (c *C) f() {}
+func (d D) f()  {}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/describe/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/describe/main.golden
new file mode 100644
index 0000000..33d751a
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/describe/main.golden
@@ -0,0 +1,171 @@
+-------- @describe pkgdecl --------
+definition of package "describe"
+	type  C      int
+		method (*C) f()
+	type  D      struct{}
+		method (D) f()
+	type  I      interface{f()}
+		method (I) f()
+	const c      untyped int = 0
+	type  cake   float64
+	var   global *string
+	func  main   func()
+	const pi     untyped float = 3141/1000
+	const pie    cake = 1768225803696341/562949953421312
+
+-------- @describe type-ref-builtin --------
+reference to built-in type float64
+
+-------- @describe const-ref-iota --------
+reference to const iota untyped int of constant value 0
+
+-------- @describe const-def-pi --------
+definition of const pi untyped float
+
+-------- @describe const-def-pie --------
+definition of const pie cake
+
+-------- @describe const-ref-pi --------
+reference to const pi untyped float of constant value 3141/1000
+defined here
+
+-------- @describe func-def-main --------
+definition of func main()
+
+-------- @describe func-ref-main --------
+reference to func main()
+defined here
+
+-------- @describe func-ref-*C.f --------
+reference to method func (*C).f()
+defined here
+
+-------- @describe func-ref-D.f --------
+reference to method func (D).f()
+defined here
+
+-------- @describe func-ref-I.f --------
+reference to interface method func (I).f()
+defined here
+
+-------- @describe type-D --------
+reference to type D (size 0, align 1)
+defined as struct{}
+Method set:
+	method (D) f()
+
+-------- @describe type-I --------
+reference to type I (size 16, align 8)
+defined as interface{f()}
+Method set:
+	method (I) f()
+
+-------- @describe func-ref-d.f --------
+reference to method func (D).f()
+defined here
+
+-------- @describe func-ref-i.f --------
+reference to interface method func (I).f()
+defined here
+
+-------- @describe ref-lexical-d --------
+reference to var d D
+defined here
+
+-------- @describe ref-anon --------
+reference to var anon func()
+defined here
+
+-------- @describe ref-global --------
+reference to var global *string
+defined here
+
+-------- @describe var-def-x-1 --------
+definition of var x *int
+
+-------- @describe var-ref-x-1 --------
+reference to var x *int
+defined here
+
+-------- @describe var-def-x-2 --------
+reference to var x *int
+defined here
+
+-------- @describe var-ref-x-2 --------
+reference to var x *int
+defined here
+
+-------- @describe var-ref-i-C --------
+reference to var i I
+defined here
+
+-------- @describe var-ref-i-D --------
+reference to var i I
+defined here
+
+-------- @describe var-ref-i --------
+reference to var i I
+defined here
+
+-------- @describe const-local-pi --------
+definition of const localpi untyped float
+
+-------- @describe const-local-pie --------
+definition of const localpie cake
+
+-------- @describe const-ref-localpi --------
+reference to const localpi untyped float of constant value 3141/1000
+defined here
+
+-------- @describe type-def-T --------
+definition of type T (size 8, align 8)
+No methods.
+
+-------- @describe type-ref-T --------
+reference to type T (size 8, align 8)
+defined as int
+No methods.
+
+-------- @describe const-expr --------
+binary * operation of constant value 6
+
+-------- @describe const-expr2 --------
+binary - operation of constant value -2
+
+-------- @describe map-lookup,ok --------
+index expression of type (*int, bool)
+
+-------- @describe mapval --------
+reference to var mapval *int
+defined here
+
+-------- @describe m --------
+reference to var m map[string]*int
+defined here
+
+-------- @describe defer-stmt --------
+defer statement
+
+-------- @describe go-stmt --------
+go statement
+
+-------- @describe builtin-ref-panic --------
+function call (or conversion) of type ()
+
+-------- @describe var-decl-stmt --------
+definition of var a2 int
+
+-------- @describe var-decl-stmt2 --------
+definition of var _ int
+
+-------- @describe var-def-blank --------
+definition of var _ int
+
+-------- @describe def-iface-I --------
+definition of type I (size 16, align 8)
+Method set:
+	method (I) f()
+
+-------- @describe def-imethod-I.f --------
+definition of interface method func (I).f()
+
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/freevars/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/freevars/main.go
new file mode 100644
index 0000000..1ce0ae6
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/freevars/main.go
@@ -0,0 +1,41 @@
+package main
+
+// Tests of 'freevars' query.
+// See go.tools/oracle/oracle_test.go for explanation.
+// See freevars.golden for expected query results.
+
+// TODO(adonovan): it's hard to test this query in a single line of gofmt'd code.
+
+type T struct {
+	a, b int
+}
+
+type S struct {
+	x int
+	t T
+}
+
+func f(int) {}
+
+func main() {
+	type C int
+	x := 1
+	const exp = 6
+	if y := 2; x+y+int(C(3)) != exp { // @freevars fv1 "if.*{"
+		panic("expected 6")
+	}
+
+	var s S
+
+	for x, y := range "foo" {
+		println(s.x + s.t.a + s.t.b + x + int(y)) // @freevars fv2 "print.*y."
+	}
+
+	f(x) // @freevars fv3 "f.x."
+
+	// TODO(adonovan): enable when go/types supports labels.
+loop: // #@freevars fv-def-label "loop:"
+	for {
+		break loop // #@freevars fv-ref-label "break loop"
+	}
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/freevars/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/freevars/main.golden
new file mode 100644
index 0000000..b9eeab2
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/freevars/main.golden
@@ -0,0 +1,18 @@
+-------- @freevars fv1 --------
+Free identifiers:
+type C
+const exp int
+var x int
+
+-------- @freevars fv2 --------
+Free identifiers:
+var s.t.a int
+var s.t.b int
+var s.x int
+var x int
+var y rune
+
+-------- @freevars fv3 --------
+Free identifiers:
+var x int
+
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/implements-json/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/implements-json/main.go
new file mode 100644
index 0000000..d5f8102
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/implements-json/main.go
@@ -0,0 +1,27 @@
+package main
+
+// Tests of 'implements' query, -output=json.
+// See go.tools/oracle/oracle_test.go for explanation.
+// See implements.golden for expected query results.
+
+func main() {
+}
+
+type E interface{} // @implements E "E"
+
+type F interface { // @implements F "F"
+	f()
+}
+
+type FG interface { // @implements FG "FG"
+	f()
+	g() []int // @implements slice "..int"
+}
+
+type C int // @implements C "C"
+type D struct{}
+
+func (c *C) f() {} // @implements starC ".C"
+func (d D) f()  {} // @implements D "D"
+
+func (d *D) g() []int { return nil } // @implements starD ".D"
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/implements-json/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/implements-json/main.golden
new file mode 100644
index 0000000..7e37f9e
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/implements-json/main.golden
@@ -0,0 +1,159 @@
+-------- @implements E --------
+{
+	"mode": "implements",
+	"implements": {
+		"type": {
+			"name": "implements-json.E",
+			"pos": "testdata/src/implements-json/main.go:10:6",
+			"kind": "interface"
+		}
+	}
+}
+-------- @implements F --------
+{
+	"mode": "implements",
+	"implements": {
+		"type": {
+			"name": "implements-json.F",
+			"pos": "testdata/src/implements-json/main.go:12:6",
+			"kind": "interface"
+		},
+		"to": [
+			{
+				"name": "*implements-json.C",
+				"pos": "testdata/src/implements-json/main.go:21:6",
+				"kind": "pointer"
+			},
+			{
+				"name": "implements-json.D",
+				"pos": "testdata/src/implements-json/main.go:22:6",
+				"kind": "struct"
+			},
+			{
+				"name": "implements-json.FG",
+				"pos": "testdata/src/implements-json/main.go:16:6",
+				"kind": "interface"
+			}
+		]
+	}
+}
+-------- @implements FG --------
+{
+	"mode": "implements",
+	"implements": {
+		"type": {
+			"name": "implements-json.FG",
+			"pos": "testdata/src/implements-json/main.go:16:6",
+			"kind": "interface"
+		},
+		"to": [
+			{
+				"name": "*implements-json.D",
+				"pos": "testdata/src/implements-json/main.go:22:6",
+				"kind": "pointer"
+			}
+		],
+		"from": [
+			{
+				"name": "implements-json.F",
+				"pos": "testdata/src/implements-json/main.go:12:6",
+				"kind": "interface"
+			}
+		]
+	}
+}
+-------- @implements slice --------
+{
+	"mode": "implements",
+	"implements": {
+		"type": {
+			"name": "[]int",
+			"pos": "-",
+			"kind": "slice"
+		}
+	}
+}
+-------- @implements C --------
+{
+	"mode": "implements",
+	"implements": {
+		"type": {
+			"name": "implements-json.C",
+			"pos": "testdata/src/implements-json/main.go:21:6",
+			"kind": "basic"
+		},
+		"fromptr": [
+			{
+				"name": "implements-json.F",
+				"pos": "testdata/src/implements-json/main.go:12:6",
+				"kind": "interface"
+			}
+		]
+	}
+}
+-------- @implements starC --------
+{
+	"mode": "implements",
+	"implements": {
+		"type": {
+			"name": "*implements-json.C",
+			"pos": "testdata/src/implements-json/main.go:21:6",
+			"kind": "pointer"
+		},
+		"from": [
+			{
+				"name": "implements-json.F",
+				"pos": "testdata/src/implements-json/main.go:12:6",
+				"kind": "interface"
+			}
+		]
+	}
+}
+-------- @implements D --------
+{
+	"mode": "implements",
+	"implements": {
+		"type": {
+			"name": "implements-json.D",
+			"pos": "testdata/src/implements-json/main.go:22:6",
+			"kind": "struct"
+		},
+		"from": [
+			{
+				"name": "implements-json.F",
+				"pos": "testdata/src/implements-json/main.go:12:6",
+				"kind": "interface"
+			}
+		],
+		"fromptr": [
+			{
+				"name": "implements-json.FG",
+				"pos": "testdata/src/implements-json/main.go:16:6",
+				"kind": "interface"
+			}
+		]
+	}
+}
+-------- @implements starD --------
+{
+	"mode": "implements",
+	"implements": {
+		"type": {
+			"name": "*implements-json.D",
+			"pos": "testdata/src/implements-json/main.go:22:6",
+			"kind": "pointer"
+		},
+		"from": [
+			{
+				"name": "implements-json.F",
+				"pos": "testdata/src/implements-json/main.go:12:6",
+				"kind": "interface"
+			},
+			{
+				"name": "implements-json.FG",
+				"pos": "testdata/src/implements-json/main.go:16:6",
+				"kind": "interface"
+			}
+		]
+	}
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/implements-methods-json/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/implements-methods-json/main.go
new file mode 100644
index 0000000..6c5bbf4
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/implements-methods-json/main.go
@@ -0,0 +1,37 @@
+package main
+
+// Tests of 'implements' query applied to methods, -output=json.
+// See go.tools/oracle/oracle_test.go for explanation.
+// See implements-methods.golden for expected query results.
+
+import _ "lib"
+
+func main() {
+}
+
+type F interface {
+	f() // @implements F.f "f"
+}
+
+type FG interface {
+	f()       // @implements FG.f "f"
+	g() []int // @implements FG.g "g"
+}
+
+type C int
+type D struct{}
+
+func (c *C) f() {} // @implements *C.f "f"
+func (d D) f()  {} // @implements D.f "f"
+
+func (d *D) g() []int { return nil } // @implements *D.g "g"
+
+type sorter []int
+
+func (sorter) Len() int           { return 0 } // @implements Len "Len"
+func (sorter) Less(i, j int) bool { return false }
+func (sorter) Swap(i, j int)      {}
+
+type I interface {
+	Method(*int) *int // @implements I.Method "Method"
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/implements-methods-json/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/implements-methods-json/main.golden
new file mode 100644
index 0000000..fa117df
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/implements-methods-json/main.golden
@@ -0,0 +1,290 @@
+-------- @implements F.f --------
+{
+	"mode": "implements",
+	"implements": {
+		"type": {
+			"name": "implements-methods-json.F",
+			"pos": "testdata/src/implements-methods-json/main.go:12:6",
+			"kind": "interface"
+		},
+		"to": [
+			{
+				"name": "*implements-methods-json.C",
+				"pos": "testdata/src/implements-methods-json/main.go:21:6",
+				"kind": "pointer"
+			},
+			{
+				"name": "implements-methods-json.D",
+				"pos": "testdata/src/implements-methods-json/main.go:22:6",
+				"kind": "struct"
+			},
+			{
+				"name": "implements-methods-json.FG",
+				"pos": "testdata/src/implements-methods-json/main.go:16:6",
+				"kind": "interface"
+			}
+		],
+		"method": {
+			"name": "func (F).f()",
+			"pos": "testdata/src/implements-methods-json/main.go:13:2"
+		},
+		"to_method": [
+			{
+				"name": "method (*C) f()",
+				"pos": "testdata/src/implements-methods-json/main.go:24:13"
+			},
+			{
+				"name": "method (D) f()",
+				"pos": "testdata/src/implements-methods-json/main.go:25:12"
+			},
+			{
+				"name": "method (FG) f()",
+				"pos": "testdata/src/implements-methods-json/main.go:17:2"
+			}
+		]
+	}
+}
+-------- @implements FG.f --------
+{
+	"mode": "implements",
+	"implements": {
+		"type": {
+			"name": "implements-methods-json.FG",
+			"pos": "testdata/src/implements-methods-json/main.go:16:6",
+			"kind": "interface"
+		},
+		"to": [
+			{
+				"name": "*implements-methods-json.D",
+				"pos": "testdata/src/implements-methods-json/main.go:22:6",
+				"kind": "pointer"
+			}
+		],
+		"from": [
+			{
+				"name": "implements-methods-json.F",
+				"pos": "testdata/src/implements-methods-json/main.go:12:6",
+				"kind": "interface"
+			}
+		],
+		"method": {
+			"name": "func (FG).f()",
+			"pos": "testdata/src/implements-methods-json/main.go:17:2"
+		},
+		"to_method": [
+			{
+				"name": "method (*D) f()",
+				"pos": "testdata/src/implements-methods-json/main.go:25:12"
+			}
+		],
+		"from_method": [
+			{
+				"name": "method (F) f()",
+				"pos": "testdata/src/implements-methods-json/main.go:13:2"
+			}
+		]
+	}
+}
+-------- @implements FG.g --------
+{
+	"mode": "implements",
+	"implements": {
+		"type": {
+			"name": "implements-methods-json.FG",
+			"pos": "testdata/src/implements-methods-json/main.go:16:6",
+			"kind": "interface"
+		},
+		"to": [
+			{
+				"name": "*implements-methods-json.D",
+				"pos": "testdata/src/implements-methods-json/main.go:22:6",
+				"kind": "pointer"
+			}
+		],
+		"from": [
+			{
+				"name": "implements-methods-json.F",
+				"pos": "testdata/src/implements-methods-json/main.go:12:6",
+				"kind": "interface"
+			}
+		],
+		"method": {
+			"name": "func (FG).g() []int",
+			"pos": "testdata/src/implements-methods-json/main.go:18:2"
+		},
+		"to_method": [
+			{
+				"name": "method (*D) g() []int",
+				"pos": "testdata/src/implements-methods-json/main.go:27:13"
+			}
+		],
+		"from_method": [
+			{
+				"name": "",
+				"pos": ""
+			}
+		]
+	}
+}
+-------- @implements *C.f --------
+{
+	"mode": "implements",
+	"implements": {
+		"type": {
+			"name": "*implements-methods-json.C",
+			"pos": "testdata/src/implements-methods-json/main.go:21:6",
+			"kind": "pointer"
+		},
+		"from": [
+			{
+				"name": "implements-methods-json.F",
+				"pos": "testdata/src/implements-methods-json/main.go:12:6",
+				"kind": "interface"
+			}
+		],
+		"method": {
+			"name": "func (*C).f()",
+			"pos": "testdata/src/implements-methods-json/main.go:24:13"
+		},
+		"from_method": [
+			{
+				"name": "method (F) f()",
+				"pos": "testdata/src/implements-methods-json/main.go:13:2"
+			}
+		]
+	}
+}
+-------- @implements D.f --------
+{
+	"mode": "implements",
+	"implements": {
+		"type": {
+			"name": "implements-methods-json.D",
+			"pos": "testdata/src/implements-methods-json/main.go:22:6",
+			"kind": "struct"
+		},
+		"from": [
+			{
+				"name": "implements-methods-json.F",
+				"pos": "testdata/src/implements-methods-json/main.go:12:6",
+				"kind": "interface"
+			}
+		],
+		"fromptr": [
+			{
+				"name": "implements-methods-json.FG",
+				"pos": "testdata/src/implements-methods-json/main.go:16:6",
+				"kind": "interface"
+			}
+		],
+		"method": {
+			"name": "func (D).f()",
+			"pos": "testdata/src/implements-methods-json/main.go:25:12"
+		},
+		"from_method": [
+			{
+				"name": "method (F) f()",
+				"pos": "testdata/src/implements-methods-json/main.go:13:2"
+			}
+		],
+		"fromptr_method": [
+			{
+				"name": "method (FG) f()",
+				"pos": "testdata/src/implements-methods-json/main.go:17:2"
+			}
+		]
+	}
+}
+-------- @implements *D.g --------
+{
+	"mode": "implements",
+	"implements": {
+		"type": {
+			"name": "*implements-methods-json.D",
+			"pos": "testdata/src/implements-methods-json/main.go:22:6",
+			"kind": "pointer"
+		},
+		"from": [
+			{
+				"name": "implements-methods-json.F",
+				"pos": "testdata/src/implements-methods-json/main.go:12:6",
+				"kind": "interface"
+			},
+			{
+				"name": "implements-methods-json.FG",
+				"pos": "testdata/src/implements-methods-json/main.go:16:6",
+				"kind": "interface"
+			}
+		],
+		"method": {
+			"name": "func (*D).g() []int",
+			"pos": "testdata/src/implements-methods-json/main.go:27:13"
+		},
+		"from_method": [
+			{
+				"name": "",
+				"pos": ""
+			},
+			{
+				"name": "method (FG) g() []int",
+				"pos": "testdata/src/implements-methods-json/main.go:18:2"
+			}
+		]
+	}
+}
+-------- @implements Len --------
+{
+	"mode": "implements",
+	"implements": {
+		"type": {
+			"name": "implements-methods-json.sorter",
+			"pos": "testdata/src/implements-methods-json/main.go:29:6",
+			"kind": "slice"
+		},
+		"from": [
+			{
+				"name": "lib.Sorter",
+				"pos": "testdata/src/lib/lib.go:16:6",
+				"kind": "interface"
+			}
+		],
+		"method": {
+			"name": "func (sorter).Len() int",
+			"pos": "testdata/src/implements-methods-json/main.go:31:15"
+		},
+		"from_method": [
+			{
+				"name": "method (lib.Sorter) Len() int",
+				"pos": "testdata/src/lib/lib.go:17:2"
+			}
+		]
+	}
+}
+-------- @implements I.Method --------
+{
+	"mode": "implements",
+	"implements": {
+		"type": {
+			"name": "implements-methods-json.I",
+			"pos": "testdata/src/implements-methods-json/main.go:35:6",
+			"kind": "interface"
+		},
+		"to": [
+			{
+				"name": "lib.Type",
+				"pos": "testdata/src/lib/lib.go:3:6",
+				"kind": "basic"
+			}
+		],
+		"method": {
+			"name": "func (I).Method(*int) *int",
+			"pos": "testdata/src/implements-methods-json/main.go:36:2"
+		},
+		"to_method": [
+			{
+				"name": "method (lib.Type) Method(x *int) *int",
+				"pos": "testdata/src/lib/lib.go:5:13"
+			}
+		]
+	}
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/implements-methods/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/implements-methods/main.go
new file mode 100644
index 0000000..a24854a
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/implements-methods/main.go
@@ -0,0 +1,37 @@
+package main
+
+// Tests of 'implements' query applied to methods.
+// See go.tools/oracle/oracle_test.go for explanation.
+// See implements-methods.golden for expected query results.
+
+import _ "lib"
+
+func main() {
+}
+
+type F interface {
+	f() // @implements F.f "f"
+}
+
+type FG interface {
+	f()       // @implements FG.f "f"
+	g() []int // @implements FG.g "g"
+}
+
+type C int
+type D struct{}
+
+func (c *C) f() {} // @implements *C.f "f"
+func (d D) f()  {} // @implements D.f "f"
+
+func (d *D) g() []int { return nil } // @implements *D.g "g"
+
+type sorter []int
+
+func (sorter) Len() int           { return 0 } // @implements Len "Len"
+func (sorter) Less(i, j int) bool { return false }
+func (sorter) Swap(i, j int)      {}
+
+type I interface {
+	Method(*int) *int // @implements I.Method "Method"
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/implements-methods/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/implements-methods/main.golden
new file mode 100644
index 0000000..bd591e8
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/implements-methods/main.golden
@@ -0,0 +1,37 @@
+-------- @implements F.f --------
+abstract method func (F).f()
+	is implemented by method (*C).f
+	is implemented by method (D).f
+	is implemented by method (FG).f
+
+-------- @implements FG.f --------
+abstract method func (FG).f()
+	is implemented by method (*D).f
+	implements method (F).f
+
+-------- @implements FG.g --------
+abstract method func (FG).g() []int
+	is implemented by method (*D).g
+
+-------- @implements *C.f --------
+concrete method func (*C).f()
+	implements method (F).f
+
+-------- @implements D.f --------
+concrete method func (D).f()
+	implements method (F).f
+concrete method func (D).f()
+	implements method (FG).f
+
+-------- @implements *D.g --------
+concrete method func (*D).g() []int
+	implements method (FG).g
+
+-------- @implements Len --------
+concrete method func (sorter).Len() int
+	implements method (lib.Sorter).Len
+
+-------- @implements I.Method --------
+abstract method func (I).Method(*int) *int
+	is implemented by method (lib.Type).Method
+
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/implements/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/implements/main.go
new file mode 100644
index 0000000..14a2f16
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/implements/main.go
@@ -0,0 +1,39 @@
+package main
+
+// Tests of 'implements' query.
+// See go.tools/oracle/oracle_test.go for explanation.
+// See implements.golden for expected query results.
+
+import _ "lib"
+
+func main() {
+}
+
+type E interface{} // @implements E "E"
+
+type F interface { // @implements F "F"
+	f()
+}
+
+type FG interface { // @implements FG "FG"
+	f()
+	g() []int // @implements slice "..int"
+}
+
+type C int // @implements C "C"
+type D struct{}
+
+func (c *C) f() {} // @implements starC ".C"
+func (d D) f()  {} // @implements D "D"
+
+func (d *D) g() []int { return nil } // @implements starD ".D"
+
+type sorter []int // @implements sorter "sorter"
+
+func (sorter) Len() int           { return 0 }
+func (sorter) Less(i, j int) bool { return false }
+func (sorter) Swap(i, j int)      {}
+
+type I interface { // @implements I "I"
+	Method(*int) *int
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/implements/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/implements/main.golden
new file mode 100644
index 0000000..ee00f3d
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/implements/main.golden
@@ -0,0 +1,44 @@
+-------- @implements E --------
+empty interface type E
+
+-------- @implements F --------
+interface type F
+	is implemented by pointer type *C
+	is implemented by struct type D
+	is implemented by interface type FG
+
+-------- @implements FG --------
+interface type FG
+	is implemented by pointer type *D
+	implements F
+
+-------- @implements slice --------
+slice type []int implements only interface{}
+
+-------- @implements C --------
+pointer type *C
+	implements F
+
+-------- @implements starC --------
+pointer type *C
+	implements F
+
+-------- @implements D --------
+struct type D
+	implements F
+pointer type *D
+	implements FG
+
+-------- @implements starD --------
+pointer type *D
+	implements F
+	implements FG
+
+-------- @implements sorter --------
+slice type sorter
+	implements lib.Sorter
+
+-------- @implements I --------
+interface type I
+	is implemented by basic type lib.Type
+
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/imports/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/imports/main.go
new file mode 100644
index 0000000..0f616ab
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/imports/main.go
@@ -0,0 +1,29 @@
+package main
+
+import (
+	"hash/fnv" // @describe ref-pkg-import2 "fnv"
+	"lib"      // @describe ref-pkg-import "lib"
+)
+
+// Tests that import another package.  (To make the tests run quickly,
+// we avoid using imports in all the other tests.  Remember, each
+// query causes parsing and typechecking of the whole program.)
+//
+// See go.tools/oracle/oracle_test.go for explanation.
+// See imports.golden for expected query results.
+
+var a int
+
+func main() {
+	const c = lib.Const // @describe ref-const "Const"
+	lib.Func()          // @describe ref-func "Func"
+	lib.Var++           // @describe ref-var "Var"
+	var t lib.Type      // @describe ref-type "Type"
+	p := t.Method(&a)   // @describe ref-method "Method"
+
+	print(*p + 1) // @pointsto p "p "
+
+	var _ lib.Type // @describe ref-pkg "lib"
+
+	fnv.New32()
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/imports/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/imports/main.golden
new file mode 100644
index 0000000..9144210
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/imports/main.golden
@@ -0,0 +1,57 @@
+-------- @describe ref-pkg-import2 --------
+import of package "hash/fnv"
+	func  New32  func() hash.Hash32
+	func  New32a func() hash.Hash32
+	func  New64  func() hash.Hash64
+	func  New64a func() hash.Hash64
+
+-------- @describe ref-pkg-import --------
+import of package "lib"
+	const Const  untyped int = 3
+	func  Func   func()
+	type  Sorter interface{...}
+		method (Sorter) Len() int
+		method (Sorter) Less(i int, j int) bool
+		method (Sorter) Swap(i int, j int)
+	type  Type   int
+		method (Type) Method(x *int) *int
+	var   Var    int
+
+-------- @describe ref-const --------
+reference to const lib.Const untyped int
+defined here
+
+-------- @describe ref-func --------
+reference to func lib.Func()
+defined here
+
+-------- @describe ref-var --------
+reference to var lib.Var int
+defined here
+
+-------- @describe ref-type --------
+reference to type lib.Type (size 8, align 8)
+defined as int
+Method set:
+	method (lib.Type) Method(x *int) *int
+
+-------- @describe ref-method --------
+reference to method func (lib.Type).Method(x *int) *int
+defined here
+
+-------- @pointsto p --------
+this *int may point to these objects:
+	main.a
+
+-------- @describe ref-pkg --------
+reference to package "lib"
+	const Const  untyped int = 3
+	func  Func   func()
+	type  Sorter interface{...}
+		method (Sorter) Len() int
+		method (Sorter) Less(i int, j int) bool
+		method (Sorter) Swap(i int, j int)
+	type  Type   int
+		method (Type) Method(x *int) *int
+	var   Var    int
+
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/lib/lib.go b/go/src/golang.org/x/tools/oracle/testdata/src/lib/lib.go
index 0603d4b..9131c27 100644
--- a/go/src/golang.org/x/tools/oracle/testdata/src/lib/lib.go
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/lib/lib.go
@@ -12,3 +12,9 @@
 const Const = 3
 
 var Var = 0
+
+type Sorter interface {
+	Len() int
+	Less(i, j int) bool
+	Swap(i, j int)
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/main/multi.go b/go/src/golang.org/x/tools/oracle/testdata/src/main/multi.go
index 54caf15..8c650cd 100644
--- a/go/src/golang.org/x/tools/oracle/testdata/src/main/multi.go
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/main/multi.go
@@ -1,4 +1,4 @@
-package multi
+package main
 
 func g(x int) {
 }
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/peers-json/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/peers-json/main.go
new file mode 100644
index 0000000..1df550b
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/peers-json/main.go
@@ -0,0 +1,13 @@
+package main
+
+// Tests of channel 'peers' query, -format=json.
+// See go.tools/oracle/oracle_test.go for explanation.
+// See peers-json.golden for expected query results.
+
+func main() {
+	chA := make(chan *int)
+	<-chA
+	select {
+	case <-chA: // @peers peer-recv-chA "<-"
+	}
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/peers-json/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/peers-json/main.golden
new file mode 100644
index 0000000..8c2d06c
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/peers-json/main.golden
@@ -0,0 +1,15 @@
+-------- @peers peer-recv-chA --------
+{
+	"mode": "peers",
+	"peers": {
+		"pos": "testdata/src/peers-json/main.go:11:7",
+		"type": "chan *int",
+		"allocs": [
+			"testdata/src/peers-json/main.go:8:13"
+		],
+		"receives": [
+			"testdata/src/peers-json/main.go:9:2",
+			"testdata/src/peers-json/main.go:11:7"
+		]
+	}
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/peers/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/peers/main.go
new file mode 100644
index 0000000..a4cf91b
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/peers/main.go
@@ -0,0 +1,52 @@
+package main
+
+// Tests of channel 'peers' query.
+// See go.tools/oracle/oracle_test.go for explanation.
+// See peers.golden for expected query results.
+
+var a2 int
+
+func main() {
+	chA := make(chan *int)
+	a1 := 1
+	chA <- &a1
+
+	chA2 := make(chan *int, 2)
+	if a2 == 0 {
+		chA = chA2
+	}
+
+	chB := make(chan *int)
+	b := 3
+	chB <- &b
+
+	<-chA  // @pointsto pointsto-chA "chA"
+	<-chA2 // @pointsto pointsto-chA2 "chA2"
+	<-chB  // @pointsto pointsto-chB "chB"
+
+	select {
+	case rA := <-chA: // @peers peer-recv-chA "<-"
+		_ = rA // @pointsto pointsto-rA "rA"
+	case rB := <-chB: // @peers peer-recv-chB "<-"
+		_ = rB // @pointsto pointsto-rB "rB"
+
+	case <-chA: // @peers peer-recv-chA' "<-"
+
+	case chA2 <- &a2: // @peers peer-send-chA' "<-"
+	}
+
+	for _ = range chA {
+	}
+
+	close(chA) // @peers peer-close-chA "chA"
+
+	chC := make(chan *int)
+	(close)(chC) // @peers peer-close-chC "chC"
+
+	close := func(ch chan *int) chan *int {
+		return ch
+	}
+
+	close(chC) <- &b // @peers peer-send-chC "chC"
+	<-close(chC)     // @peers peer-recv-chC "chC"
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/peers/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/peers/main.golden
new file mode 100644
index 0000000..597a3c6
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/peers/main.golden
@@ -0,0 +1,100 @@
+-------- @pointsto pointsto-chA --------
+this chan *int may point to these objects:
+	makechan
+	makechan
+
+-------- @pointsto pointsto-chA2 --------
+this chan *int may point to these objects:
+	makechan
+
+-------- @pointsto pointsto-chB --------
+this chan *int may point to these objects:
+	makechan
+
+-------- @peers peer-recv-chA --------
+This channel of type chan *int may be:
+	allocated here
+	allocated here
+	sent to, here
+	sent to, here
+	received from, here
+	received from, here
+	received from, here
+	received from, here
+	received from, here
+	closed, here
+
+-------- @pointsto pointsto-rA --------
+this *int may point to these objects:
+	main.a2
+	a1
+
+-------- @peers peer-recv-chB --------
+This channel of type chan *int may be:
+	allocated here
+	sent to, here
+	received from, here
+	received from, here
+
+-------- @pointsto pointsto-rB --------
+this *int may point to these objects:
+	b
+
+-------- @peers peer-recv-chA' --------
+This channel of type chan *int may be:
+	allocated here
+	allocated here
+	sent to, here
+	sent to, here
+	received from, here
+	received from, here
+	received from, here
+	received from, here
+	received from, here
+	closed, here
+
+-------- @peers peer-send-chA' --------
+This channel of type chan *int may be:
+	allocated here
+	sent to, here
+	received from, here
+	received from, here
+	received from, here
+	received from, here
+	received from, here
+	closed, here
+
+-------- @peers peer-close-chA --------
+This channel of type chan *int may be:
+	allocated here
+	allocated here
+	sent to, here
+	sent to, here
+	received from, here
+	received from, here
+	received from, here
+	received from, here
+	received from, here
+	closed, here
+
+-------- @peers peer-close-chC --------
+This channel of type chan *int may be:
+	allocated here
+	sent to, here
+	received from, here
+	closed, here
+
+-------- @peers peer-send-chC --------
+This channel of type chan *int may be:
+	allocated here
+	sent to, here
+	received from, here
+	closed, here
+
+-------- @peers peer-recv-chC --------
+This channel of type chan *int may be:
+	allocated here
+	sent to, here
+	received from, here
+	closed, here
+
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/pointsto-json/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/pointsto-json/main.go
new file mode 100644
index 0000000..38f1148
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/pointsto-json/main.go
@@ -0,0 +1,27 @@
+package main
+
+// Tests of 'pointsto' queries, -format=json.
+// See go.tools/oracle/oracle_test.go for explanation.
+// See pointsto-json.golden for expected query results.
+
+func main() { //
+	var s struct{ x [3]int }
+	p := &s.x[0] // @pointsto val-p "p"
+	_ = p
+
+	var i I = C(0)
+	if i == nil {
+		i = new(D)
+	}
+	print(i) // @pointsto val-i "\\bi\\b"
+}
+
+type I interface {
+	f()
+}
+
+type C int
+type D struct{}
+
+func (c C) f()  {}
+func (d *D) f() {}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/pointsto-json/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/pointsto-json/main.golden
new file mode 100644
index 0000000..13ac1df
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/pointsto-json/main.golden
@@ -0,0 +1,35 @@
+-------- @pointsto val-p --------
+{
+	"mode": "pointsto",
+	"pointsto": [
+		{
+			"type": "*int",
+			"labels": [
+				{
+					"pos": "testdata/src/pointsto-json/main.go:8:6",
+					"desc": "s.x[*]"
+				}
+			]
+		}
+	]
+}
+-------- @pointsto val-i --------
+{
+	"mode": "pointsto",
+	"pointsto": [
+		{
+			"type": "*D",
+			"namepos": "testdata/src/pointsto-json/main.go:24:6",
+			"labels": [
+				{
+					"pos": "testdata/src/pointsto-json/main.go:14:10",
+					"desc": "new"
+				}
+			]
+		},
+		{
+			"type": "C",
+			"namepos": "testdata/src/pointsto-json/main.go:23:6"
+		}
+	]
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/pointsto/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/pointsto/main.go
new file mode 100644
index 0000000..9064e46
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/pointsto/main.go
@@ -0,0 +1,75 @@
+package main
+
+// Tests of 'pointsto' query.
+// See go.tools/oracle/oracle_test.go for explanation.
+// See pointsto.golden for expected query results.
+
+const pi = 3.141 // @pointsto const "pi"
+
+var global = new(string) // NB: ssa.Global is indirect, i.e. **string
+
+func main() {
+	livecode()
+
+	// func objects
+	_ = main   // @pointsto func-ref-main "main"
+	_ = (*C).f // @pointsto func-ref-*C.f "..C..f"
+	_ = D.f    // @pointsto func-ref-D.f "D.f"
+	_ = I.f    // @pointsto func-ref-I.f "I.f"
+	var d D
+	var i I
+	_ = d.f // @pointsto func-ref-d.f "d.f"
+	_ = i.f // @pointsto func-ref-i.f "i.f"
+
+	// var objects
+	anon := func() {
+		_ = d.f // @pointsto ref-lexical-d.f "d.f"
+	}
+	_ = anon   // @pointsto ref-anon "anon"
+	_ = global // @pointsto ref-global "global"
+
+	// SSA affords some local flow sensitivity.
+	var a, b int
+	var x = &a // @pointsto var-def-x-1 "x"
+	_ = x      // @pointsto var-ref-x-1 "x"
+	x = &b     // @pointsto var-def-x-2 "x"
+	_ = x      // @pointsto var-ref-x-2 "x"
+
+	i = new(C) // @pointsto var-ref-i-C "i"
+	if i != nil {
+		i = D{} // @pointsto var-ref-i-D "i"
+	}
+	print(i) // @pointsto var-ref-i "\\bi\\b"
+
+	m := map[string]*int{"a": &a}
+	mapval, _ := m["a"] // @pointsto map-lookup,ok "m..a.."
+	_ = mapval          // @pointsto mapval "mapval"
+	_ = m               // @pointsto m "m"
+
+	if false {
+		panic(3) // @pointsto builtin-panic "panic"
+	}
+
+	// NB: s.f is addressable per (*ssa.Program).VarValue,
+	// but our query concerns the object, not its address.
+	s := struct{ f interface{} }{f: make(chan bool)}
+	print(s.f) // @pointsto var-ref-s-f "s.f"
+}
+
+func livecode() {} // @pointsto func-live "livecode"
+
+func deadcode() { // @pointsto func-dead "deadcode"
+	// Pointer analysis can't run on dead code.
+	var b = new(int) // @pointsto b "b"
+	_ = b
+}
+
+type I interface {
+	f()
+}
+
+type C int
+type D struct{}
+
+func (c *C) f() {}
+func (d D) f()  {}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/pointsto/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/pointsto/main.golden
new file mode 100644
index 0000000..fd68bda
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/pointsto/main.golden
@@ -0,0 +1,96 @@
+-------- @pointsto const --------
+
+Error: pointer analysis wants an expression of reference type; got untyped float
+-------- @pointsto func-ref-main --------
+this func() may point to these objects:
+	main.main
+
+-------- @pointsto func-ref-*C.f --------
+this func() may point to these objects:
+	(*main.C).f
+
+-------- @pointsto func-ref-D.f --------
+this func() may point to these objects:
+	(main.D).f
+
+-------- @pointsto func-ref-I.f --------
+
+Error: func (main.I).f() is an interface method
+-------- @pointsto func-ref-d.f --------
+this func() may point to these objects:
+	(main.D).f
+
+-------- @pointsto func-ref-i.f --------
+
+Error: func (main.I).f() is an interface method
+-------- @pointsto ref-lexical-d.f --------
+this func() may point to these objects:
+	(main.D).f
+
+-------- @pointsto ref-anon --------
+this func() may point to these objects:
+	main.main$1
+
+-------- @pointsto ref-global --------
+this *string may point to these objects:
+	new
+
+-------- @pointsto var-def-x-1 --------
+this *int may point to these objects:
+	a
+
+-------- @pointsto var-ref-x-1 --------
+this *int may point to these objects:
+	a
+
+-------- @pointsto var-def-x-2 --------
+this *int may point to these objects:
+	b
+
+-------- @pointsto var-ref-x-2 --------
+this *int may point to these objects:
+	b
+
+-------- @pointsto var-ref-i-C --------
+this I may contain these dynamic types:
+	*C, may point to:
+		new
+
+-------- @pointsto var-ref-i-D --------
+this I may contain these dynamic types:
+	D
+
+-------- @pointsto var-ref-i --------
+this I may contain these dynamic types:
+	*C, may point to:
+		new
+	D
+
+-------- @pointsto map-lookup,ok --------
+
+Error: pointer analysis wants an expression of reference type; got (*int, bool)
+-------- @pointsto mapval --------
+this *int may point to these objects:
+	a
+
+-------- @pointsto m --------
+this map[string]*int may point to these objects:
+	makemap
+
+-------- @pointsto builtin-panic --------
+
+Error: pointer analysis wants an expression of reference type; got ()
+-------- @pointsto var-ref-s-f --------
+this interface{} may contain these dynamic types:
+	chan bool, may point to:
+		makechan
+
+-------- @pointsto func-live --------
+
+Error: pointer analysis did not find expression (dead code?)
+-------- @pointsto func-dead --------
+
+Error: pointer analysis did not find expression (dead code?)
+-------- @pointsto b --------
+
+Error: pointer analysis did not find expression (dead code?)
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/referrers-json/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/referrers-json/main.go
new file mode 100644
index 0000000..f551ee0
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/referrers-json/main.go
@@ -0,0 +1,24 @@
+package main
+
+// Tests of 'referrers' query.
+// See go.tools/oracle/oracle_test.go for explanation.
+// See referrers.golden for expected query results.
+
+import "lib"
+
+type s struct {
+	f int
+}
+
+func main() {
+	var v lib.Type = lib.Const // @referrers ref-package "lib"
+	_ = v.Method               // @referrers ref-method "Method"
+	_ = v.Method
+	v++ //@referrers ref-local "v"
+	v++
+
+	_ = s{}.f // @referrers ref-field "f"
+
+	var s2 s
+	s2.f = 1
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/referrers-json/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/referrers-json/main.golden
new file mode 100644
index 0000000..47a2d01
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/referrers-json/main.golden
@@ -0,0 +1,59 @@
+-------- @referrers ref-package --------
+{
+	"mode": "referrers",
+	"referrers": {
+		"pos": "testdata/src/referrers-json/main.go:14:8",
+		"objpos": "testdata/src/referrers-json/main.go:7:8",
+		"desc": "package lib",
+		"refs": [
+			"testdata/src/referrers-json/main.go:14:8",
+			"testdata/src/referrers-json/main.go:14:19"
+		]
+	}
+}
+-------- @referrers ref-method --------
+{
+	"mode": "referrers",
+	"referrers": {
+		"pos": "testdata/src/referrers-json/main.go:15:8",
+		"objpos": "testdata/src/lib/lib.go:5:13",
+		"desc": "func (lib.Type).Method(x *int) *int",
+		"refs": [
+			"testdata/src/imports/main.go:22:9",
+			"testdata/src/referrers-json/main.go:15:8",
+			"testdata/src/referrers-json/main.go:16:8",
+			"testdata/src/referrers/ext_test.go:10:17",
+			"testdata/src/referrers/int_test.go:7:17",
+			"testdata/src/referrers/main.go:17:8",
+			"testdata/src/referrers/main.go:18:8"
+		]
+	}
+}
+-------- @referrers ref-local --------
+{
+	"mode": "referrers",
+	"referrers": {
+		"pos": "testdata/src/referrers-json/main.go:17:2",
+		"objpos": "testdata/src/referrers-json/main.go:14:6",
+		"desc": "var v lib.Type",
+		"refs": [
+			"testdata/src/referrers-json/main.go:15:6",
+			"testdata/src/referrers-json/main.go:16:6",
+			"testdata/src/referrers-json/main.go:17:2",
+			"testdata/src/referrers-json/main.go:18:2"
+		]
+	}
+}
+-------- @referrers ref-field --------
+{
+	"mode": "referrers",
+	"referrers": {
+		"pos": "testdata/src/referrers-json/main.go:20:10",
+		"objpos": "testdata/src/referrers-json/main.go:10:2",
+		"desc": "field f int",
+		"refs": [
+			"testdata/src/referrers-json/main.go:20:10",
+			"testdata/src/referrers-json/main.go:23:5"
+		]
+	}
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/referrers/ext_test.go b/go/src/golang.org/x/tools/oracle/testdata/src/referrers/ext_test.go
new file mode 100644
index 0000000..35e3199
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/referrers/ext_test.go
@@ -0,0 +1,12 @@
+package main_test
+
+import (
+	"lib"
+	renamed "referrers" // package has name "main", path "referrers", local name "renamed"
+)
+
+func _() {
+	// This reference should be found by the ref-method query.
+	_ = (lib.Type).Method // ref from external test package
+	var _ renamed.T
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/referrers/int_test.go b/go/src/golang.org/x/tools/oracle/testdata/src/referrers/int_test.go
new file mode 100644
index 0000000..9102cd6
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/referrers/int_test.go
@@ -0,0 +1,8 @@
+package main
+
+import "lib"
+
+func _() {
+	// This reference should be found by the ref-method query.
+	_ = (lib.Type).Method // ref from internal test package
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/referrers/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/referrers/main.go
new file mode 100644
index 0000000..36cdb7a
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/referrers/main.go
@@ -0,0 +1,26 @@
+package main // @referrers package-decl "main"
+
+// Tests of 'referrers' query.
+// See go.tools/oracle/oracle_test.go for explanation.
+// See referrers.golden for expected query results.
+
+import "lib"
+
+type s struct { // @referrers type " s "
+	f int
+}
+
+type T int
+
+func main() {
+	var v lib.Type = lib.Const // @referrers ref-package "lib"
+	_ = v.Method               // @referrers ref-method "Method"
+	_ = v.Method
+	v++ //@referrers ref-local "v"
+	v++
+
+	_ = s{}.f // @referrers ref-field "f"
+
+	var s2 s
+	s2.f = 1
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/referrers/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/referrers/main.golden
new file mode 100644
index 0000000..1f04be5
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/referrers/main.golden
@@ -0,0 +1,38 @@
+-------- @referrers package-decl --------
+1 references to package main ("referrers")
+	var _ renamed.T
+
+-------- @referrers type --------
+2 references to type s struct{f int}
+	_ = s{}.f // @referrers ref-field "f"
+	var s2 s
+
+-------- @referrers ref-package --------
+4 references to package lib
+	_ = (lib.Type).Method // ref from external test package
+	_ = (lib.Type).Method // ref from internal test package
+	var v lib.Type = lib.Const // @referrers ref-package "lib"
+	var v lib.Type = lib.Const // @referrers ref-package "lib"
+
+-------- @referrers ref-method --------
+7 references to func (lib.Type).Method(x *int) *int
+	p := t.Method(&a)   // @describe ref-method "Method"
+	_ = v.Method               // @referrers ref-method "Method"
+	_ = v.Method
+	_ = (lib.Type).Method // ref from external test package
+	_ = (lib.Type).Method // ref from internal test package
+	_ = v.Method               // @referrers ref-method "Method"
+	_ = v.Method
+
+-------- @referrers ref-local --------
+4 references to var v lib.Type
+	_ = v.Method               // @referrers ref-method "Method"
+	_ = v.Method
+	v++ //@referrers ref-local "v"
+	v++
+
+-------- @referrers ref-field --------
+2 references to field f int
+	_ = s{}.f // @referrers ref-field "f"
+	s2.f = 1
+
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/reflection/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/reflection/main.go
new file mode 100644
index 0000000..392643b
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/reflection/main.go
@@ -0,0 +1,30 @@
+package main
+
+// This is a test of 'pointsto', but we split it into a separate file
+// so that pointsto.go doesn't have to import "reflect" each time.
+
+import "reflect"
+
+var a int
+var b bool
+
+func main() {
+	m := make(map[*int]*bool)
+	m[&a] = &b
+
+	mrv := reflect.ValueOf(m)
+	if a > 0 {
+		mrv = reflect.ValueOf(&b)
+	}
+	if a > 0 {
+		mrv = reflect.ValueOf(&a)
+	}
+
+	_ = mrv                  // @pointsto mrv "mrv"
+	p1 := mrv.Interface()    // @pointsto p1 "p1"
+	p2 := mrv.MapKeys()      // @pointsto p2 "p2"
+	p3 := p2[0]              // @pointsto p3 "p3"
+	p4 := reflect.TypeOf(p1) // @pointsto p4 "p4"
+
+	_, _, _, _ = p1, p2, p3, p4
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/reflection/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/reflection/main.golden
new file mode 100644
index 0000000..6190c06
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/reflection/main.golden
@@ -0,0 +1,34 @@
+-------- @pointsto mrv --------
+this reflect.Value may contain these dynamic types:
+	*bool, may point to:
+		main.b
+	*int, may point to:
+		main.a
+	map[*int]*bool, may point to:
+		makemap
+
+-------- @pointsto p1 --------
+this interface{} may contain these dynamic types:
+	*bool, may point to:
+		main.b
+	*int, may point to:
+		main.a
+	map[*int]*bool, may point to:
+		makemap
+
+-------- @pointsto p2 --------
+this []reflect.Value may point to these objects:
+	<alloc in (reflect.Value).MapKeys>
+
+-------- @pointsto p3 --------
+this reflect.Value may contain these dynamic types:
+	*int, may point to:
+		main.a
+
+-------- @pointsto p4 --------
+this reflect.Type may contain these dynamic types:
+	*reflect.rtype, may point to:
+		*bool
+		*int
+		map[*int]*bool
+
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/what-json/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/what-json/main.go
new file mode 100644
index 0000000..8d578c7
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/what-json/main.go
@@ -0,0 +1,9 @@
+package main
+
+// Tests of 'what' queries, -format=json.
+// See go.tools/oracle/oracle_test.go for explanation.
+// See what-json.golden for expected query results.
+
+func main() {
+	f() // @what call "f"
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/what-json/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/what-json/main.golden
new file mode 100644
index 0000000..9a31190
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/what-json/main.golden
@@ -0,0 +1,51 @@
+-------- @what call --------
+{
+	"mode": "what",
+	"what": {
+		"enclosing": [
+			{
+				"desc": "identifier",
+				"start": 179,
+				"end": 180
+			},
+			{
+				"desc": "function call (or conversion)",
+				"start": 179,
+				"end": 182
+			},
+			{
+				"desc": "expression statement",
+				"start": 179,
+				"end": 182
+			},
+			{
+				"desc": "block",
+				"start": 176,
+				"end": 202
+			},
+			{
+				"desc": "function declaration",
+				"start": 164,
+				"end": 202
+			},
+			{
+				"desc": "source file",
+				"start": 0,
+				"end": 202
+			}
+		],
+		"modes": [
+			"callees",
+			"callers",
+			"callstack",
+			"definition",
+			"describe",
+			"freevars",
+			"implements",
+			"pointsto",
+			"referrers"
+		],
+		"srcdir": "testdata/src",
+		"importpath": "what-json"
+	}
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/what/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/what/main.go
new file mode 100644
index 0000000..38e9dc7
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/what/main.go
@@ -0,0 +1,11 @@
+package main // @what pkgdecl "main"
+
+// Tests of 'what' queries.
+// See go.tools/oracle/oracle_test.go for explanation.
+// See what.golden for expected query results.
+
+func main() {
+	f()             // @what call "f"
+	var ch chan int // @what var "var"
+	<-ch            // @what recv "ch"
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/what/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/what/main.golden
new file mode 100644
index 0000000..56b97dd
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/what/main.golden
@@ -0,0 +1,39 @@
+-------- @what pkgdecl --------
+identifier
+source file
+modes: [definition describe freevars implements pointsto referrers]
+srcdir: testdata/src
+import path: what
+
+-------- @what call --------
+identifier
+function call (or conversion)
+expression statement
+block
+function declaration
+source file
+modes: [callees callers callstack definition describe freevars implements pointsto referrers]
+srcdir: testdata/src
+import path: what
+
+-------- @what var --------
+variable declaration
+variable declaration statement
+block
+function declaration
+source file
+modes: [callers callstack describe freevars pointsto]
+srcdir: testdata/src
+import path: what
+
+-------- @what recv --------
+identifier
+unary <- operation
+expression statement
+block
+function declaration
+source file
+modes: [callers callstack definition describe freevars implements peers pointsto referrers]
+srcdir: testdata/src
+import path: what
+
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/whicherrs/main.go b/go/src/golang.org/x/tools/oracle/testdata/src/whicherrs/main.go
new file mode 100644
index 0000000..27fe6b5
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/whicherrs/main.go
@@ -0,0 +1,27 @@
+package main
+
+type errType string
+
+const constErr errType = "blah"
+
+func (et errType) Error() string {
+	return string(et)
+}
+
+var errVar error = errType("foo")
+
+func genErr(i int) error {
+	switch i {
+	case 0:
+		return constErr
+	case 1:
+		return errVar
+	default:
+		return nil
+	}
+}
+
+func main() {
+	err := genErr(0) // @whicherrs localerrs "err"
+	_ = err
+}
diff --git a/go/src/golang.org/x/tools/oracle/testdata/src/whicherrs/main.golden b/go/src/golang.org/x/tools/oracle/testdata/src/whicherrs/main.golden
new file mode 100644
index 0000000..1118e0a
--- /dev/null
+++ b/go/src/golang.org/x/tools/oracle/testdata/src/whicherrs/main.golden
@@ -0,0 +1,8 @@
+-------- @whicherrs localerrs --------
+this error may point to these globals:
+	errVar
+this error may contain these constants:
+	constErr
+this error may contain these dynamic types:
+	errType
+
diff --git a/go/src/golang.org/x/tools/oracle/what.go b/go/src/golang.org/x/tools/oracle/what.go
index c1053f4..5a5c0cf 100644
--- a/go/src/golang.org/x/tools/oracle/what.go
+++ b/go/src/golang.org/x/tools/oracle/what.go
@@ -24,21 +24,19 @@
 // tools, e.g. to populate a menu of options of slower queries about
 // the selected location.
 //
-func what(posFlag string, buildContext *build.Context) (*Result, error) {
-	qpos, err := fastQueryPos(posFlag)
+func what(q *Query) error {
+	qpos, err := fastQueryPos(q.Pos)
 	if err != nil {
-		return nil, err
+		return err
 	}
+	q.Fset = qpos.fset
 
 	// (ignore errors)
-	srcdir, importPath, _ := guessImportPath(qpos.fset.File(qpos.start).Name(), buildContext)
+	srcdir, importPath, _ := guessImportPath(q.Fset.File(qpos.start).Name(), q.Build)
 
 	// Determine which query modes are applicable to the selection.
-	// TODO(adonovan): refactor: make each minfo have an 'enable'
-	// predicate over qpos.
 	enable := map[string]bool{
-		"callgraph": true, // whole program; always enabled
-		"describe":  true, // any syntax; always enabled
+		"describe": true, // any syntax; always enabled
 	}
 
 	if qpos.end > qpos.start {
@@ -100,11 +98,10 @@
 
 	// If we don't have an exact selection, disable modes that need one.
 	if !qpos.exact {
-		for _, minfo := range modes {
-			if minfo.needs&needExactPos != 0 {
-				enable[minfo.name] = false
-			}
-		}
+		enable["callees"] = false
+		enable["pointsto"] = false
+		enable["whicherrs"] = false
+		enable["describe"] = false
 	}
 
 	var modes []string
@@ -113,17 +110,13 @@
 	}
 	sort.Strings(modes)
 
-	return &Result{
-		mode: "what",
-		fset: qpos.fset,
-		q: &whatResult{
-			path:       qpos.path,
-			srcdir:     srcdir,
-			importPath: importPath,
-			modes:      modes,
-		},
-	}, nil
-
+	q.result = &whatResult{
+		path:       qpos.path,
+		srcdir:     srcdir,
+		importPath: importPath,
+		modes:      modes,
+	}
+	return nil
 }
 
 // guessImportPath finds the package containing filename, and returns
@@ -159,7 +152,8 @@
 		}
 	}
 	if srcdir == "" {
-		err = fmt.Errorf("can't find package for file %s", filename)
+		err = fmt.Errorf("directory %s is not beneath any of these GOROOT/GOPATH directories: %s",
+			filepath.Dir(absFile), strings.Join(buildContext.SrcDirs(), ", "))
 	}
 	return
 }
diff --git a/go/src/golang.org/x/tools/oracle/whicherrs.go b/go/src/golang.org/x/tools/oracle/whicherrs.go
index a73aa8d..aaa6068 100644
--- a/go/src/golang.org/x/tools/oracle/whicherrs.go
+++ b/go/src/golang.org/x/tools/oracle/whicherrs.go
@@ -11,6 +11,7 @@
 	"sort"
 
 	"golang.org/x/tools/go/ast/astutil"
+	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/ssa"
 	"golang.org/x/tools/go/ssa/ssautil"
 	"golang.org/x/tools/go/types"
@@ -27,10 +28,35 @@
 //
 // TODO(dmorsing): figure out if fields in errors like *os.PathError.Err
 // can be queried recursively somehow.
-func whicherrs(o *Oracle, qpos *QueryPos) (queryResult, error) {
+func whicherrs(q *Query) error {
+	lconf := loader.Config{Build: q.Build}
+
+	if err := setPTAScope(&lconf, q.Scope); err != nil {
+		return err
+	}
+
+	// Load/parse/type-check the program.
+	lprog, err := lconf.Load()
+	if err != nil {
+		return err
+	}
+	q.Fset = lprog.Fset
+
+	qpos, err := parseQueryPos(lprog, q.Pos, true) // needs exact pos
+	if err != nil {
+		return err
+	}
+
+	prog := ssautil.CreateProgram(lprog, ssa.GlobalDebug)
+
+	ptaConfig, err := setupPTA(prog, lprog, q.PTALog, q.Reflection)
+	if err != nil {
+		return err
+	}
+
 	path, action := findInterestingNode(qpos.info, qpos.path)
 	if action != actionExpr {
-		return nil, fmt.Errorf("whicherrs wants an expression; got %s",
+		return fmt.Errorf("whicherrs wants an expression; got %s",
 			astutil.NodeDescription(qpos.path[0]))
 	}
 	var expr ast.Expr
@@ -38,46 +64,50 @@
 	switch n := path[0].(type) {
 	case *ast.ValueSpec:
 		// ambiguous ValueSpec containing multiple names
-		return nil, fmt.Errorf("multiple value specification")
+		return fmt.Errorf("multiple value specification")
 	case *ast.Ident:
 		obj = qpos.info.ObjectOf(n)
 		expr = n
 	case ast.Expr:
 		expr = n
 	default:
-		return nil, fmt.Errorf("unexpected AST for expr: %T", n)
+		return fmt.Errorf("unexpected AST for expr: %T", n)
 	}
 
 	typ := qpos.info.TypeOf(expr)
 	if !types.Identical(typ, builtinErrorType) {
-		return nil, fmt.Errorf("selection is not an expression of type 'error'")
+		return fmt.Errorf("selection is not an expression of type 'error'")
 	}
 	// Determine the ssa.Value for the expression.
 	var value ssa.Value
-	var err error
 	if obj != nil {
 		// def/ref of func/var object
-		value, _, err = ssaValueForIdent(o.prog, qpos.info, obj, path)
+		value, _, err = ssaValueForIdent(prog, qpos.info, obj, path)
 	} else {
-		value, _, err = ssaValueForExpr(o.prog, qpos.info, path)
+		value, _, err = ssaValueForExpr(prog, qpos.info, path)
 	}
 	if err != nil {
-		return nil, err // e.g. trivially dead code
+		return err // e.g. trivially dead code
 	}
-	buildSSA(o)
 
-	globals := findVisibleErrs(o.prog, qpos)
-	constants := findVisibleConsts(o.prog, qpos)
+	// Defer SSA construction till after errors are reported.
+	prog.BuildAll()
+
+	globals := findVisibleErrs(prog, qpos)
+	constants := findVisibleConsts(prog, qpos)
 
 	res := &whicherrsResult{
 		qpos:   qpos,
 		errpos: expr.Pos(),
 	}
 
+	// TODO(adonovan): the following code is heavily duplicated
+	// w.r.t.  "pointsto".  Refactor?
+
 	// Find the instruction which initialized the
 	// global error. If more than one instruction has stored to the global
 	// remove the global from the set of values that we want to query.
-	allFuncs := ssautil.AllFunctions(o.prog)
+	allFuncs := ssautil.AllFunctions(prog)
 	for fn := range allFuncs {
 		for _, b := range fn.Blocks {
 			for _, instr := range b.Instrs {
@@ -104,12 +134,12 @@
 		}
 	}
 
-	o.ptaConfig.AddQuery(value)
+	ptaConfig.AddQuery(value)
 	for _, v := range globals {
-		o.ptaConfig.AddQuery(v)
+		ptaConfig.AddQuery(v)
 	}
 
-	ptares := ptrAnalysis(o)
+	ptares := ptrAnalysis(ptaConfig)
 	valueptr := ptares.Queries[value]
 	for g, v := range globals {
 		ptr, ok := ptares.Queries[v]
@@ -174,11 +204,13 @@
 	sort.Sort(membersByPosAndString(res.globals))
 	sort.Sort(membersByPosAndString(res.consts))
 	sort.Sort(sorterrorType(res.types))
-	return res, nil
+
+	q.result = res
+	return nil
 }
 
 // findVisibleErrs returns a mapping from each package-level variable of type "error" to nil.
-func findVisibleErrs(prog *ssa.Program, qpos *QueryPos) map[*ssa.Global]ssa.Value {
+func findVisibleErrs(prog *ssa.Program, qpos *queryPos) map[*ssa.Global]ssa.Value {
 	globals := make(map[*ssa.Global]ssa.Value)
 	for _, pkg := range prog.AllPackages() {
 		for _, mem := range pkg.Members {
@@ -201,7 +233,7 @@
 }
 
 // findVisibleConsts returns a mapping from each package-level constant assignable to type "error", to nil.
-func findVisibleConsts(prog *ssa.Program, qpos *QueryPos) map[ssa.Const]*ssa.NamedConst {
+func findVisibleConsts(prog *ssa.Program, qpos *queryPos) map[ssa.Const]*ssa.NamedConst {
 	constants := make(map[ssa.Const]*ssa.NamedConst)
 	for _, pkg := range prog.AllPackages() {
 		for _, mem := range pkg.Members {
@@ -247,7 +279,7 @@
 }
 
 type whicherrsResult struct {
-	qpos    *QueryPos
+	qpos    *queryPos
 	errpos  token.Pos
 	globals []ssa.Member
 	consts  []ssa.Member
@@ -270,7 +302,7 @@
 	if len(r.types) > 0 {
 		printf(r.qpos, "this error may contain these dynamic types:")
 		for _, t := range r.types {
-			printf(t.obj.Pos(), "\t%s", r.qpos.TypeString(t.typ))
+			printf(t.obj.Pos(), "\t%s", r.qpos.typeString(t.typ))
 		}
 	}
 }
@@ -286,7 +318,7 @@
 	}
 	for _, t := range r.types {
 		var et serial.WhichErrsType
-		et.Type = r.qpos.TypeString(t.typ)
+		et.Type = r.qpos.typeString(t.typ)
 		et.Position = fset.Position(t.obj.Pos()).String()
 		we.Types = append(we.Types, et)
 	}
diff --git a/go/src/golang.org/x/tools/playground/socket/socket.go b/go/src/golang.org/x/tools/playground/socket/socket.go
index 6905d0c..76527ae 100644
--- a/go/src/golang.org/x/tools/playground/socket/socket.go
+++ b/go/src/golang.org/x/tools/playground/socket/socket.go
@@ -316,7 +316,7 @@
 		m.Body = err.Error()
 	}
 	// Wait for any outstanding reads to finish (potential race here).
-	time.AfterFunc(msgDelay, func() { p.out <- m })
+	time.AfterFunc(4*msgDelay, func() { p.out <- m })
 }
 
 // cmd builds an *exec.Cmd that writes its standard output and error to the
diff --git a/go/src/golang.org/x/tools/refactor/eg/eg.go b/go/src/golang.org/x/tools/refactor/eg/eg.go
index a107204..a609255 100644
--- a/go/src/golang.org/x/tools/refactor/eg/eg.go
+++ b/go/src/golang.org/x/tools/refactor/eg/eg.go
@@ -6,6 +6,7 @@
 	"bytes"
 	"fmt"
 	"go/ast"
+	"go/format"
 	"go/printer"
 	"go/token"
 	"os"
@@ -83,6 +84,9 @@
 It is not possible to replace an expression by one of a different
 type, even in contexts where this is legal, such as x in fmt.Print(x).
 
+The struct literals T{x} and T{K: x} cannot both be matched by a single
+template.
+
 
 SAFETY
 
@@ -288,7 +292,7 @@
 			err = err2 // prefer earlier error
 		}
 	}()
-	return printer.Fprint(fh, fset, f)
+	return format.Node(fh, fset, f)
 }
 
 // -- utilities --------------------------------------------------------
diff --git a/go/src/golang.org/x/tools/refactor/eg/eg_test.go b/go/src/golang.org/x/tools/refactor/eg/eg_test.go
index c44256c..3c10bef 100644
--- a/go/src/golang.org/x/tools/refactor/eg/eg_test.go
+++ b/go/src/golang.org/x/tools/refactor/eg/eg_test.go
@@ -64,6 +64,12 @@
 		"testdata/F.template",
 		"testdata/F1.go",
 
+		"testdata/G.template",
+		"testdata/G1.go",
+
+		"testdata/H.template",
+		"testdata/H1.go",
+
 		"testdata/bad_type.template",
 		"testdata/no_before.template",
 		"testdata/no_after_return.template",
diff --git a/go/src/golang.org/x/tools/refactor/eg/match.go b/go/src/golang.org/x/tools/refactor/eg/match.go
index 298a258..d8590d4 100644
--- a/go/src/golang.org/x/tools/refactor/eg/match.go
+++ b/go/src/golang.org/x/tools/refactor/eg/match.go
@@ -185,7 +185,17 @@
 	}
 
 	// Check that y is assignable to the declared type of the param.
-	if yt := tr.info.TypeOf(y); !types.AssignableTo(yt, xobj.Type()) {
+	yt := tr.info.TypeOf(y)
+	if yt == nil {
+		// y has no type.
+		// Perhaps it is an *ast.Ellipsis in [...]T{}, or
+		// an *ast.KeyValueExpr in T{k: v}.
+		// Clearly these pseudo-expressions cannot match a
+		// wildcard, but it would nice if we had a way to ignore
+		// the difference between T{v} and T{k:v} for structs.
+		return false
+	}
+	if !types.AssignableTo(yt, xobj.Type()) {
 		if tr.verbose {
 			fmt.Fprintf(os.Stderr, "%s not assignable to %s\n", yt, xobj.Type())
 		}
diff --git a/go/src/golang.org/x/tools/refactor/eg/testdata/A1.golden b/go/src/golang.org/x/tools/refactor/eg/testdata/A1.golden
index 4f7ba82..7eb2934 100644
--- a/go/src/golang.org/x/tools/refactor/eg/testdata/A1.golden
+++ b/go/src/golang.org/x/tools/refactor/eg/testdata/A1.golden
@@ -3,8 +3,8 @@
 package A1
 
 import (
-	. "fmt"
 	"errors"
+	. "fmt"
 	myfmt "fmt"
 	"os"
 	"strings"
diff --git a/go/src/golang.org/x/tools/refactor/eg/testdata/A2.golden b/go/src/golang.org/x/tools/refactor/eg/testdata/A2.golden
index 5c2384b..b6e3a6d 100644
--- a/go/src/golang.org/x/tools/refactor/eg/testdata/A2.golden
+++ b/go/src/golang.org/x/tools/refactor/eg/testdata/A2.golden
@@ -6,8 +6,8 @@
 // TODO(adonovan): fix: it should also remove "fmt".
 
 import (
-	myfmt "fmt"
 	"errors"
+	myfmt "fmt"
 )
 
 func example(n int) {
diff --git a/go/src/golang.org/x/tools/refactor/eg/testdata/D1.golden b/go/src/golang.org/x/tools/refactor/eg/testdata/D1.golden
index 3f2dc59..2932652 100644
--- a/go/src/golang.org/x/tools/refactor/eg/testdata/D1.golden
+++ b/go/src/golang.org/x/tools/refactor/eg/testdata/D1.golden
@@ -5,8 +5,8 @@
 import "fmt"
 
 func example() {
-	fmt.Println(456, "!")		// match
-	fmt.Println(456, "!")		// match
-	fmt.Println(456, "!")		// match
-	fmt.Println(100+20+3, "a"+"")	// no match: constant expressions, but not basic literals
+	fmt.Println(456, "!")         // match
+	fmt.Println(456, "!")         // match
+	fmt.Println(456, "!")         // match
+	fmt.Println(100+20+3, "a"+"") // no match: constant expressions, but not basic literals
 }
diff --git a/go/src/golang.org/x/tools/refactor/eg/testdata/E1.golden b/go/src/golang.org/x/tools/refactor/eg/testdata/E1.golden
index a0adfc8..796364f 100644
--- a/go/src/golang.org/x/tools/refactor/eg/testdata/E1.golden
+++ b/go/src/golang.org/x/tools/refactor/eg/testdata/E1.golden
@@ -3,11 +3,11 @@
 package E1
 
 import (
+	"fmt"
 	"log"
 	"os"
-	"fmt"
 )
 
 func example() {
-	fmt.Fprintf(os.Stderr, "warning: %v", "oops")	// match
+	fmt.Fprintf(os.Stderr, "warning: %v", "oops") // match
 }
diff --git a/go/src/golang.org/x/tools/refactor/eg/testdata/G.template b/go/src/golang.org/x/tools/refactor/eg/testdata/G.template
new file mode 100644
index 0000000..69d84fe
--- /dev/null
+++ b/go/src/golang.org/x/tools/refactor/eg/testdata/G.template
@@ -0,0 +1,10 @@
+package templates
+
+import (
+	"go/ast" // defines many unencapsulated structs
+	"go/token"
+)
+
+func before(from, to token.Pos) ast.BadExpr { return ast.BadExpr{From: from, To: to} }
+func after(from, to token.Pos) ast.BadExpr  { return ast.BadExpr{from, to} }
+     
\ No newline at end of file
diff --git a/go/src/golang.org/x/tools/refactor/eg/testdata/G1.go b/go/src/golang.org/x/tools/refactor/eg/testdata/G1.go
new file mode 100644
index 0000000..07aaff9
--- /dev/null
+++ b/go/src/golang.org/x/tools/refactor/eg/testdata/G1.go
@@ -0,0 +1,12 @@
+// +build ignore
+
+package G1
+
+import "go/ast"
+
+func example() {
+	_ = ast.BadExpr{From: 123, To: 456} // match
+	_ = ast.BadExpr{123, 456}           // no match
+	_ = ast.BadExpr{From: 123}          // no match
+	_ = ast.BadExpr{To: 456}            // no match
+}
diff --git a/go/src/golang.org/x/tools/refactor/eg/testdata/G1.golden b/go/src/golang.org/x/tools/refactor/eg/testdata/G1.golden
new file mode 100644
index 0000000..c93c53f
--- /dev/null
+++ b/go/src/golang.org/x/tools/refactor/eg/testdata/G1.golden
@@ -0,0 +1,12 @@
+// +build ignore
+
+package G1
+
+import "go/ast"
+
+func example() {
+	_ = ast.BadExpr{123, 456}  // match
+	_ = ast.BadExpr{123, 456}  // no match
+	_ = ast.BadExpr{From: 123} // no match
+	_ = ast.BadExpr{To: 456}   // no match
+}
diff --git a/go/src/golang.org/x/tools/refactor/eg/testdata/H.template b/go/src/golang.org/x/tools/refactor/eg/testdata/H.template
new file mode 100644
index 0000000..fa6f802
--- /dev/null
+++ b/go/src/golang.org/x/tools/refactor/eg/testdata/H.template
@@ -0,0 +1,9 @@
+package templates
+
+import (
+	"go/ast" // defines many unencapsulated structs
+	"go/token"
+)
+
+func before(from, to token.Pos) ast.BadExpr { return ast.BadExpr{from, to} }
+func after(from, to token.Pos) ast.BadExpr  { return ast.BadExpr{From: from, To: to} }
diff --git a/go/src/golang.org/x/tools/refactor/eg/testdata/H1.go b/go/src/golang.org/x/tools/refactor/eg/testdata/H1.go
new file mode 100644
index 0000000..ef4291c
--- /dev/null
+++ b/go/src/golang.org/x/tools/refactor/eg/testdata/H1.go
@@ -0,0 +1,12 @@
+// +build ignore
+
+package H1
+
+import "go/ast"
+
+func example() {
+	_ = ast.BadExpr{From: 123, To: 456} // no match
+	_ = ast.BadExpr{123, 456}           // match
+	_ = ast.BadExpr{From: 123}          // no match
+	_ = ast.BadExpr{To: 456}            // no match
+}
diff --git a/go/src/golang.org/x/tools/refactor/eg/testdata/H1.golden b/go/src/golang.org/x/tools/refactor/eg/testdata/H1.golden
new file mode 100644
index 0000000..a1e5961
--- /dev/null
+++ b/go/src/golang.org/x/tools/refactor/eg/testdata/H1.golden
@@ -0,0 +1,12 @@
+// +build ignore
+
+package H1
+
+import "go/ast"
+
+func example() {
+	_ = ast.BadExpr{From: 123, To: 456} // no match
+	_ = ast.BadExpr{From: 123, To: 456} // match
+	_ = ast.BadExpr{From: 123}          // no match
+	_ = ast.BadExpr{To: 456}            // no match
+}
diff --git a/go/src/golang.org/x/tools/refactor/importgraph/graph.go b/go/src/golang.org/x/tools/refactor/importgraph/graph.go
index df73e23..8ad8014 100644
--- a/go/src/golang.org/x/tools/refactor/importgraph/graph.go
+++ b/go/src/golang.org/x/tools/refactor/importgraph/graph.go
@@ -54,7 +54,8 @@
 // Build scans the specified Go workspace and builds the forward and
 // reverse import dependency graphs for all its packages.
 // It also returns a mapping from import paths to errors for packages
-// that could not be loaded.
+// whose loading was not entirely successful.
+// A package may appear in the graph and in the errors mapping.
 func Build(ctxt *build.Context) (forward, reverse Graph, errors map[string]error) {
 	type importEdge struct {
 		from, to string
@@ -75,22 +76,26 @@
 				ch <- pathError{path, err}
 				return
 			}
+
 			bp, err := ctxt.Import(path, "", 0)
-			if _, ok := err.(*build.NoGoError); ok {
-				return // empty directory is not an error
-			}
 			if err != nil {
-				ch <- pathError{path, err}
-				return
+				if _, ok := err.(*build.NoGoError); ok {
+					// empty directory is not an error
+				} else {
+					ch <- pathError{path, err}
+				}
+				// Even in error cases, Import usually returns a package.
 			}
-			for _, imp := range bp.Imports {
-				ch <- importEdge{path, imp}
-			}
-			for _, imp := range bp.TestImports {
-				ch <- importEdge{path, imp}
-			}
-			for _, imp := range bp.XTestImports {
-				ch <- importEdge{path, imp}
+			if bp != nil {
+				for _, imp := range bp.Imports {
+					ch <- importEdge{path, imp}
+				}
+				for _, imp := range bp.TestImports {
+					ch <- importEdge{path, imp}
+				}
+				for _, imp := range bp.XTestImports {
+					ch <- importEdge{path, imp}
+				}
 			}
 		}()
 	})
diff --git a/go/src/golang.org/x/tools/refactor/lexical/lexical.go b/go/src/golang.org/x/tools/refactor/lexical/lexical.go
index 55ec391..c6567e4 100644
--- a/go/src/golang.org/x/tools/refactor/lexical/lexical.go
+++ b/go/src/golang.org/x/tools/refactor/lexical/lexical.go
@@ -189,6 +189,13 @@
 	return b
 }
 
+func (r *resolver) qualifier(pkg *types.Package) string {
+	if pkg == r.pkg {
+		return "" // unqualified intra-package reference
+	}
+	return pkg.Path()
+}
+
 func (r *resolver) use(id *ast.Ident, env Environment) {
 	if id.Name == "_" {
 		return // an error
@@ -199,12 +206,12 @@
 	} else if want := r.info.Uses[id]; obj != want {
 		// sanity check against go/types resolver
 		logf("%s: internal error: lookup of %s yielded wrong object: got %v (%s), want %v\n",
-			r.fset.Position(id.Pos()), id.Name, types.ObjectString(r.pkg, obj),
+			r.fset.Position(id.Pos()), id.Name, types.ObjectString(obj, r.qualifier),
 			r.fset.Position(obj.Pos()),
 			want)
 	}
 	if trace {
-		logf("use %s = %v in %s\n", id.Name, types.ObjectString(r.pkg, obj), env)
+		logf("use %s = %v in %s\n", id.Name, types.ObjectString(obj, r.qualifier), env)
 	}
 
 	r.result.Refs[obj] = append(r.result.Refs[obj], Reference{id, env})
@@ -248,7 +255,7 @@
 	b.bindings = append(b.bindings, obj)
 	b.index[name] = i
 	if trace {
-		logf("def %s = %s in %s\n", name, types.ObjectString(r.pkg, obj), b)
+		logf("def %s = %s in %s\n", name, types.ObjectString(obj, r.qualifier), b)
 	}
 	r.result.Defs[obj] = b
 }
@@ -323,7 +330,7 @@
 					//  id := kv.Key.(*ast.Ident)
 					//  obj := r.info.Uses[id]
 					//  logf("use %s = %v (field)\n",
-					// 	id.Name, types.ObjectString(r.pkg, obj))
+					// 	id.Name, types.ObjectString(obj, r.qualifier))
 					// TODO make a fake FieldVal selection?
 				} else {
 					r.expr(elt)
@@ -344,10 +351,10 @@
 		// 	switch sel.Kind() {
 		// 	case types.FieldVal:
 		// 		logf("use %s = %v (field)\n",
-		// 			n.Sel.Name, types.ObjectString(r.pkg, sel.Obj()))
+		// 			n.Sel.Name, types.ObjectString(sel.Obj(), r.qualifier))
 		// 	case types.MethodExpr, types.MethodVal:
 		// 		logf("use %s = %v (method)\n",
-		// 			n.Sel.Name, types.ObjectString(r.pkg, sel.Obj()))
+		// 			n.Sel.Name, types.ObjectString(sel.Obj(), r.qualifier))
 		// 	}
 		// } else { // qualified identifier
 		// 	obj := r.info.Uses[n.Sel]
diff --git a/go/src/golang.org/x/tools/refactor/rename/mvpkg.go b/go/src/golang.org/x/tools/refactor/rename/mvpkg.go
index 4d922f7..bcdbf8b 100644
--- a/go/src/golang.org/x/tools/refactor/rename/mvpkg.go
+++ b/go/src/golang.org/x/tools/refactor/rename/mvpkg.go
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // licence that can be found in the LICENSE file.
 
-// This file contains the implementation of the 'gomovepkg' command
-// whose main function is in golang.org/x/tools/cmd/gomovepkg.
+// This file contains the implementation of the 'gomvpkg' command
+// whose main function is in golang.org/x/tools/cmd/gomvpkg.
 
 package rename
 
@@ -26,7 +26,6 @@
 	"runtime"
 	"strconv"
 	"strings"
-	"sync"
 	"text/template"
 
 	"golang.org/x/tools/go/buildutil"
@@ -62,11 +61,12 @@
 	// Build the import graph and figure out which packages to update.
 	fwd, rev, errors := importgraph.Build(ctxt)
 	if len(errors) > 0 {
+		// With a large GOPATH tree, errors are inevitable.
+		// Report them but proceed.
 		fmt.Fprintf(os.Stderr, "While scanning Go workspace:\n")
 		for path, err := range errors {
 			fmt.Fprintf(os.Stderr, "Package %q: %s.\n", path, err)
 		}
-		return fmt.Errorf("failed to construct import graph")
 	}
 
 	// Determine the affected packages---the set of packages whose import
@@ -133,13 +133,12 @@
 // subpackages returns the set of packages in the given srcDir whose
 // import paths start with dir.
 func subpackages(ctxt *build.Context, srcDir string, dir string) map[string]bool {
-	var mu sync.Mutex
 	subs := map[string]bool{dir: true}
 
 	// Find all packages under srcDir whose import paths start with dir.
 	buildutil.ForEachPackage(ctxt, func(pkg string, err error) {
 		if err != nil {
-			log.Fatalf("unexpected error in ForEackPackage: %v", err)
+			log.Fatalf("unexpected error in ForEachPackage: %v", err)
 		}
 
 		if !strings.HasPrefix(pkg, path.Join(dir, "")) {
@@ -157,9 +156,7 @@
 			return
 		}
 
-		mu.Lock()
 		subs[pkg] = true
-		mu.Unlock()
 	})
 
 	return subs
@@ -248,9 +245,7 @@
 	// None of the subpackages will change their name---only the from package
 	// itself will.
 	for p := range m.rev[m.from] {
-		_, err := importName(
-			m.iprog, m.iprog.Imported[p], m.from, path.Base(m.from), newName)
-		if err != nil {
+		if err := importName(m.iprog, m.iprog.Imported[p], m.from, path.Base(m.from), newName); err != nil {
 			return err
 		}
 	}
diff --git a/go/src/golang.org/x/tools/refactor/rename/mvpkg_test.go b/go/src/golang.org/x/tools/refactor/rename/mvpkg_test.go
index b9f29d6..3c915b4 100644
--- a/go/src/golang.org/x/tools/refactor/rename/mvpkg_test.go
+++ b/go/src/golang.org/x/tools/refactor/rename/mvpkg_test.go
@@ -15,7 +15,6 @@
 	"path/filepath"
 	"regexp"
 	"strings"
-	"sync"
 	"testing"
 
 	"golang.org/x/tools/go/buildutil"
@@ -212,7 +211,6 @@
 	for _, test := range tests {
 		ctxt := test.ctxt
 
-		var mu sync.Mutex
 		got := make(map[string]string)
 		// Populate got with starting file set. rewriteFile and moveDirectory
 		// will mutate got to produce resulting file set.
@@ -225,19 +223,17 @@
 				return
 			}
 			f, err := ctxt.OpenFile(path)
-			defer f.Close()
 			if err != nil {
 				t.Errorf("unexpected error opening file: %s", err)
 				return
 			}
 			bytes, err := ioutil.ReadAll(f)
+			f.Close()
 			if err != nil {
 				t.Errorf("unexpected error reading file: %s", err)
 				return
 			}
-			mu.Lock()
 			got[path] = string(bytes)
-			defer mu.Unlock()
 		})
 		rewriteFile = func(fset *token.FileSet, f *ast.File, orig string) error {
 			var out bytes.Buffer
diff --git a/go/src/golang.org/x/tools/refactor/rename/rename.el b/go/src/golang.org/x/tools/refactor/rename/rename.el
index ea6c744..139bb47 100644
--- a/go/src/golang.org/x/tools/refactor/rename/rename.el
+++ b/go/src/golang.org/x/tools/refactor/rename/rename.el
@@ -65,12 +65,12 @@
 
       ;; On success, print the one-line result in the message bar,
       ;; and hide the *go-rename* buffer.
-      (let ((w (display-buffer (current-buffer))))
-        (if success
-            (progn
-              (message "%s" (go--buffer-string-no-trailing-space))
-              (delete-window w))
-          ;; failure
+      (if success
+          (progn
+            (message "%s" (go--buffer-string-no-trailing-space))
+            (gofmt--kill-error-buffer (current-buffer)))
+        ;; failure
+        (let ((w (display-buffer (current-buffer))))
           (message "gorename exited")
           (shrink-window-if-larger-than-buffer w)
           (set-window-point w (point-min)))))))
@@ -92,3 +92,5 @@
   (replace-regexp-in-string "[\t\n ]*\\'"
                             ""
                             (buffer-substring (point-min) (point-max))))
+
+(provide 'go-rename)
diff --git a/go/src/golang.org/x/tools/refactor/rename/rename.go b/go/src/golang.org/x/tools/refactor/rename/rename.go
index 2f86e2e..a028c21 100644
--- a/go/src/golang.org/x/tools/refactor/rename/rename.go
+++ b/go/src/golang.org/x/tools/refactor/rename/rename.go
@@ -8,6 +8,7 @@
 package rename // import "golang.org/x/tools/refactor/rename"
 
 import (
+	"bytes"
 	"errors"
 	"fmt"
 	"go/ast"
@@ -15,15 +16,16 @@
 	"go/format"
 	"go/parser"
 	"go/token"
+	"io/ioutil"
 	"os"
 	"path"
-	"path/filepath"
 	"sort"
 	"strconv"
 	"strings"
 
 	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/types"
+	"golang.org/x/tools/go/types/typeutil"
 	"golang.org/x/tools/refactor/importgraph"
 	"golang.org/x/tools/refactor/satisfy"
 )
@@ -153,7 +155,7 @@
 	to                 string
 	satisfyConstraints map[satisfy.Constraint]bool
 	packages           map[*types.Package]*loader.PackageInfo // subset of iprog.AllPackages to inspect
-	msets              types.MethodSetCache
+	msets              typeutil.MethodSetCache
 	changeMethods      bool
 }
 
@@ -163,10 +165,9 @@
 
 // importName renames imports of the package with the given path in
 // the given package.  If fromName is not empty, only imports as
-// fromName will be renamed.  Even if renaming is successful, there
-// may be some files that are unchanged; they are reported in
-// unchangedFiles.
-func importName(iprog *loader.Program, info *loader.PackageInfo, fromPath, fromName, to string) (unchangedFiles []string, err error) {
+// fromName will be renamed.  If the renaming would lead to a conflict,
+// the file is left unchanged.
+func importName(iprog *loader.Program, info *loader.PackageInfo, fromPath, fromName, to string) error {
 	for _, f := range info.Files {
 		var from types.Object
 		for _, imp := range f.Imports {
@@ -192,13 +193,12 @@
 		r.check(from)
 		if r.hadConflicts {
 			continue // ignore errors; leave the existing name
-			unchangedFiles = append(unchangedFiles, f.Name.Name)
 		}
 		if err := r.update(); err != nil {
-			return nil, err
+			return err
 		}
 	}
-	return unchangedFiles, nil
+	return nil
 }
 
 func Main(ctxt *build.Context, offsetFlag, fromFlag, to string) error {
@@ -254,6 +254,8 @@
 		// Scan the workspace and build the import graph.
 		_, rev, errors := importgraph.Build(ctxt)
 		if len(errors) > 0 {
+			// With a large GOPATH tree, errors are inevitable.
+			// Report them but proceed.
 			fmt.Fprintf(os.Stderr, "While scanning Go workspace:\n")
 			for path, err := range errors {
 				fmt.Fprintf(os.Stderr, "Package %q: %s.\n", path, err)
@@ -459,48 +461,15 @@
 	return ""
 }
 
-func writeFile(name string, fset *token.FileSet, f *ast.File, mode os.FileMode) error {
-	out, err := os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
-	if err != nil {
-		// assume error includes the filename
-		return fmt.Errorf("failed to open file: %s", err)
-	}
-
-	// Oddly, os.OpenFile doesn't preserve all the mode bits, hence
-	// this chmod.  (We use 0600 above to avoid a brief
-	// vulnerability if the user has an insecure umask.)
-	os.Chmod(name, mode) // ignore error
-
-	if err := format.Node(out, fset, f); err != nil {
-		out.Close() // ignore error
-		return fmt.Errorf("failed to write file: %s", err)
-	}
-
-	return out.Close()
-}
-
-var rewriteFile = func(fset *token.FileSet, f *ast.File, orig string) (err error) {
-	backup := orig + ".gorename.backup"
+var rewriteFile = func(fset *token.FileSet, f *ast.File, filename string) (err error) {
 	// TODO(adonovan): print packages and filenames in a form useful
 	// to editors (so they can reload files).
 	if Verbose {
-		fmt.Fprintf(os.Stderr, "\t%s\n", orig)
+		fmt.Fprintf(os.Stderr, "\t%s\n", filename)
 	}
-	// save file mode
-	var mode os.FileMode = 0666
-	if fi, err := os.Stat(orig); err == nil {
-		mode = fi.Mode()
+	var buf bytes.Buffer
+	if err := format.Node(&buf, fset, f); err != nil {
+		return fmt.Errorf("failed to pretty-print syntax tree: %v", err)
 	}
-	if err := os.Rename(orig, backup); err != nil {
-		return fmt.Errorf("failed to make backup %s -> %s: %s",
-			orig, filepath.Base(backup), err)
-	}
-	if err := writeFile(orig, fset, f, mode); err != nil {
-		// Restore the file from the backup.
-		os.Remove(orig)         // ignore error
-		os.Rename(backup, orig) // ignore error
-		return err
-	}
-	os.Remove(backup) // ignore error
-	return nil
+	return ioutil.WriteFile(filename, buf.Bytes(), 0644)
 }
diff --git a/go/src/golang.org/x/tools/refactor/satisfy/find.go b/go/src/golang.org/x/tools/refactor/satisfy/find.go
index 20fb288..acbcf62 100644
--- a/go/src/golang.org/x/tools/refactor/satisfy/find.go
+++ b/go/src/golang.org/x/tools/refactor/satisfy/find.go
@@ -51,6 +51,7 @@
 
 	"golang.org/x/tools/go/ast/astutil"
 	"golang.org/x/tools/go/types"
+	"golang.org/x/tools/go/types/typeutil"
 )
 
 // A Constraint records the fact that the RHS type does and must
@@ -71,7 +72,7 @@
 //
 type Finder struct {
 	Result    map[Constraint]bool
-	msetcache types.MethodSetCache
+	msetcache typeutil.MethodSetCache
 
 	// per-Find state
 	info *types.Info