Browse Source

Merge pull request #34047 from thaJeztah/revendor-dependencies

Bump vndr to 9909bb2b8a0b7ea464527b376dc50389c90df587
Victor Vieux 8 years ago
parent
commit
177d281b5c
36 changed files with 1 additions and 16021 deletions
  1. 1 1
      hack/dockerfile/binaries-commits
  2. 0 934
      vendor/github.com/Microsoft/hcsshim/mksyscall_windows.go
  3. 0 10
      vendor/github.com/kr/pty/types.go
  4. 0 15
      vendor/github.com/kr/pty/types_freebsd.go
  5. 0 266
      vendor/github.com/miekg/dns/types_generate.go
  6. 0 62
      vendor/golang.org/x/sys/unix/mkpost.go
  7. 0 250
      vendor/golang.org/x/sys/unix/types_darwin.go
  8. 0 242
      vendor/golang.org/x/sys/unix/types_dragonfly.go
  9. 0 353
      vendor/golang.org/x/sys/unix/types_freebsd.go
  10. 0 450
      vendor/golang.org/x/sys/unix/types_linux.go
  11. 0 232
      vendor/golang.org/x/sys/unix/types_netbsd.go
  12. 0 244
      vendor/golang.org/x/sys/unix/types_openbsd.go
  13. 0 262
      vendor/golang.org/x/sys/unix/types_solaris.go
  14. 0 351
      vendor/golang.org/x/text/internal/gen/code.go
  15. 0 281
      vendor/golang.org/x/text/internal/gen/gen.go
  16. 0 58
      vendor/golang.org/x/text/internal/triegen/compact.go
  17. 0 251
      vendor/golang.org/x/text/internal/triegen/print.go
  18. 0 494
      vendor/golang.org/x/text/internal/triegen/triegen.go
  19. 0 376
      vendor/golang.org/x/text/internal/ucd/ucd.go
  20. 0 133
      vendor/golang.org/x/text/unicode/bidi/gen.go
  21. 0 57
      vendor/golang.org/x/text/unicode/bidi/gen_ranges.go
  22. 0 64
      vendor/golang.org/x/text/unicode/bidi/gen_trieval.go
  23. 0 100
      vendor/golang.org/x/text/unicode/cldr/base.go
  24. 0 130
      vendor/golang.org/x/text/unicode/cldr/cldr.go
  25. 0 359
      vendor/golang.org/x/text/unicode/cldr/collate.go
  26. 0 171
      vendor/golang.org/x/text/unicode/cldr/decode.go
  27. 0 400
      vendor/golang.org/x/text/unicode/cldr/makexml.go
  28. 0 602
      vendor/golang.org/x/text/unicode/cldr/resolve.go
  29. 0 144
      vendor/golang.org/x/text/unicode/cldr/slice.go
  30. 0 1456
      vendor/golang.org/x/text/unicode/cldr/xml.go
  31. 0 978
      vendor/golang.org/x/text/unicode/norm/maketables.go
  32. 0 117
      vendor/golang.org/x/text/unicode/norm/triegen.go
  33. 0 113
      vendor/golang.org/x/text/unicode/rangetable/gen.go
  34. 0 260
      vendor/golang.org/x/text/unicode/rangetable/merge.go
  35. 0 70
      vendor/golang.org/x/text/unicode/rangetable/rangetable.go
  36. 0 5735
      vendor/golang.org/x/text/unicode/rangetable/tables.go

+ 1 - 1
hack/dockerfile/binaries-commits

@@ -7,7 +7,7 @@ RUNC_COMMIT=2d41c047c83e09a6d61d464906feb2a2f3c52aa4
 CONTAINERD_COMMIT=3addd840653146c90a254301d6c3a663c7fd6429
 TINI_COMMIT=949e6facb77383876aeff8a6944dde66b3089574
 LIBNETWORK_COMMIT=7b2b1feb1de4817d522cc372af149ff48d25028e
-VNDR_COMMIT=c56e082291115e369f77601f9c071dd0b87c7120
+VNDR_COMMIT=9909bb2b8a0b7ea464527b376dc50389c90df587
 
 # CLI
 DOCKERCLI_REPO=https://github.com/docker/cli

+ 0 - 934
vendor/github.com/Microsoft/hcsshim/mksyscall_windows.go

@@ -1,934 +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.
-
-// +build ignore
-
-/*
-mksyscall_windows generates windows system call bodies
-
-It parses all files specified on command line containing function
-prototypes (like syscall_windows.go) and prints system call bodies
-to standard output.
-
-The prototypes are marked by lines beginning with "//sys" and read
-like func declarations if //sys is replaced by func, but:
-
-* The parameter lists must give a name for each argument. This
-  includes return parameters.
-
-* The parameter lists must give a type for each argument:
-  the (x, y, z int) shorthand is not allowed.
-
-* If the return parameter is an error number, it must be named err.
-
-* If go func name needs to be different from it's winapi dll name,
-  the winapi name could be specified at the end, after "=" sign, like
-  //sys LoadLibrary(libname string) (handle uint32, err error) = LoadLibraryA
-
-* Each function that returns err needs to supply a condition, that
-  return value of winapi will be tested against to detect failure.
-  This would set err to windows "last-error", otherwise it will be nil.
-  The value can be provided at end of //sys declaration, like
-  //sys LoadLibrary(libname string) (handle uint32, err error) [failretval==-1] = LoadLibraryA
-  and is [failretval==0] by default.
-
-Usage:
-	mksyscall_windows [flags] [path ...]
-
-The flags are:
-	-output
-		Specify output file name (outputs to console if blank).
-	-trace
-		Generate print statement after every syscall.
-*/
-package main
-
-import (
-	"bufio"
-	"bytes"
-	"errors"
-	"flag"
-	"fmt"
-	"go/format"
-	"go/parser"
-	"go/token"
-	"io"
-	"io/ioutil"
-	"log"
-	"os"
-	"path/filepath"
-	"runtime"
-	"sort"
-	"strconv"
-	"strings"
-	"text/template"
-)
-
-var (
-	filename       = flag.String("output", "", "output file name (standard output if omitted)")
-	printTraceFlag = flag.Bool("trace", false, "generate print statement after every syscall")
-	systemDLL      = flag.Bool("systemdll", true, "whether all DLLs should be loaded from the Windows system directory")
-)
-
-func trim(s string) string {
-	return strings.Trim(s, " \t")
-}
-
-var packageName string
-
-func packagename() string {
-	return packageName
-}
-
-func syscalldot() string {
-	if packageName == "syscall" {
-		return ""
-	}
-	return "syscall."
-}
-
-// Param is function parameter
-type Param struct {
-	Name      string
-	Type      string
-	fn        *Fn
-	tmpVarIdx int
-}
-
-// tmpVar returns temp variable name that will be used to represent p during syscall.
-func (p *Param) tmpVar() string {
-	if p.tmpVarIdx < 0 {
-		p.tmpVarIdx = p.fn.curTmpVarIdx
-		p.fn.curTmpVarIdx++
-	}
-	return fmt.Sprintf("_p%d", p.tmpVarIdx)
-}
-
-// BoolTmpVarCode returns source code for bool temp variable.
-func (p *Param) BoolTmpVarCode() string {
-	const code = `var %s uint32
-	if %s {
-		%s = 1
-	} else {
-		%s = 0
-	}`
-	tmp := p.tmpVar()
-	return fmt.Sprintf(code, tmp, p.Name, tmp, tmp)
-}
-
-// SliceTmpVarCode returns source code for slice temp variable.
-func (p *Param) SliceTmpVarCode() string {
-	const code = `var %s *%s
-	if len(%s) > 0 {
-		%s = &%s[0]
-	}`
-	tmp := p.tmpVar()
-	return fmt.Sprintf(code, tmp, p.Type[2:], p.Name, tmp, p.Name)
-}
-
-// StringTmpVarCode returns source code for string temp variable.
-func (p *Param) StringTmpVarCode() string {
-	errvar := p.fn.Rets.ErrorVarName()
-	if errvar == "" {
-		errvar = "_"
-	}
-	tmp := p.tmpVar()
-	const code = `var %s %s
-	%s, %s = %s(%s)`
-	s := fmt.Sprintf(code, tmp, p.fn.StrconvType(), tmp, errvar, p.fn.StrconvFunc(), p.Name)
-	if errvar == "-" {
-		return s
-	}
-	const morecode = `
-	if %s != nil {
-		return
-	}`
-	return s + fmt.Sprintf(morecode, errvar)
-}
-
-// TmpVarCode returns source code for temp variable.
-func (p *Param) TmpVarCode() string {
-	switch {
-	case p.Type == "bool":
-		return p.BoolTmpVarCode()
-	case strings.HasPrefix(p.Type, "[]"):
-		return p.SliceTmpVarCode()
-	default:
-		return ""
-	}
-}
-
-// TmpVarHelperCode returns source code for helper's temp variable.
-func (p *Param) TmpVarHelperCode() string {
-	if p.Type != "string" {
-		return ""
-	}
-	return p.StringTmpVarCode()
-}
-
-// SyscallArgList returns source code fragments representing p parameter
-// in syscall. Slices are translated into 2 syscall parameters: pointer to
-// the first element and length.
-func (p *Param) SyscallArgList() []string {
-	t := p.HelperType()
-	var s string
-	switch {
-	case t[0] == '*':
-		s = fmt.Sprintf("unsafe.Pointer(%s)", p.Name)
-	case t == "bool":
-		s = p.tmpVar()
-	case strings.HasPrefix(t, "[]"):
-		return []string{
-			fmt.Sprintf("uintptr(unsafe.Pointer(%s))", p.tmpVar()),
-			fmt.Sprintf("uintptr(len(%s))", p.Name),
-		}
-	default:
-		s = p.Name
-	}
-	return []string{fmt.Sprintf("uintptr(%s)", s)}
-}
-
-// IsError determines if p parameter is used to return error.
-func (p *Param) IsError() bool {
-	return p.Name == "err" && p.Type == "error"
-}
-
-// HelperType returns type of parameter p used in helper function.
-func (p *Param) HelperType() string {
-	if p.Type == "string" {
-		return p.fn.StrconvType()
-	}
-	return p.Type
-}
-
-// join concatenates parameters ps into a string with sep separator.
-// Each parameter is converted into string by applying fn to it
-// before conversion.
-func join(ps []*Param, fn func(*Param) string, sep string) string {
-	if len(ps) == 0 {
-		return ""
-	}
-	a := make([]string, 0)
-	for _, p := range ps {
-		a = append(a, fn(p))
-	}
-	return strings.Join(a, sep)
-}
-
-// Rets describes function return parameters.
-type Rets struct {
-	Name         string
-	Type         string
-	ReturnsError bool
-	FailCond     string
-}
-
-// ErrorVarName returns error variable name for r.
-func (r *Rets) ErrorVarName() string {
-	if r.ReturnsError {
-		return "err"
-	}
-	if r.Type == "error" {
-		return r.Name
-	}
-	return ""
-}
-
-// ToParams converts r into slice of *Param.
-func (r *Rets) ToParams() []*Param {
-	ps := make([]*Param, 0)
-	if len(r.Name) > 0 {
-		ps = append(ps, &Param{Name: r.Name, Type: r.Type})
-	}
-	if r.ReturnsError {
-		ps = append(ps, &Param{Name: "err", Type: "error"})
-	}
-	return ps
-}
-
-// List returns source code of syscall return parameters.
-func (r *Rets) List() string {
-	s := join(r.ToParams(), func(p *Param) string { return p.Name + " " + p.Type }, ", ")
-	if len(s) > 0 {
-		s = "(" + s + ")"
-	}
-	return s
-}
-
-// PrintList returns source code of trace printing part correspondent
-// to syscall return values.
-func (r *Rets) PrintList() string {
-	return join(r.ToParams(), func(p *Param) string { return fmt.Sprintf(`"%s=", %s, `, p.Name, p.Name) }, `", ", `)
-}
-
-// SetReturnValuesCode returns source code that accepts syscall return values.
-func (r *Rets) SetReturnValuesCode() string {
-	if r.Name == "" && !r.ReturnsError {
-		return ""
-	}
-	retvar := "r0"
-	if r.Name == "" {
-		retvar = "r1"
-	}
-	errvar := "_"
-	if r.ReturnsError {
-		errvar = "e1"
-	}
-	return fmt.Sprintf("%s, _, %s := ", retvar, errvar)
-}
-
-func (r *Rets) useLongHandleErrorCode(retvar string) string {
-	const code = `if %s {
-		if e1 != 0 {
-			err = errnoErr(e1)
-		} else {
-			err = %sEINVAL
-		}
-	}`
-	cond := retvar + " == 0"
-	if r.FailCond != "" {
-		cond = strings.Replace(r.FailCond, "failretval", retvar, 1)
-	}
-	return fmt.Sprintf(code, cond, syscalldot())
-}
-
-// SetErrorCode returns source code that sets return parameters.
-func (r *Rets) SetErrorCode() string {
-	const code = `if r0 != 0 {
-		%s = %sErrno(r0)
-	}`
-	const hrCode = `if int32(r0) < 0 {
-		%s = %sErrno(win32FromHresult(r0))
-	}`
-	if r.Name == "" && !r.ReturnsError {
-		return ""
-	}
-	if r.Name == "" {
-		return r.useLongHandleErrorCode("r1")
-	}
-	if r.Type == "error" {
-		if r.Name == "hr" {
-			return fmt.Sprintf(hrCode, r.Name, syscalldot())
-		} else {
-			return fmt.Sprintf(code, r.Name, syscalldot())
-		}
-	}
-	s := ""
-	switch {
-	case r.Type[0] == '*':
-		s = fmt.Sprintf("%s = (%s)(unsafe.Pointer(r0))", r.Name, r.Type)
-	case r.Type == "bool":
-		s = fmt.Sprintf("%s = r0 != 0", r.Name)
-	default:
-		s = fmt.Sprintf("%s = %s(r0)", r.Name, r.Type)
-	}
-	if !r.ReturnsError {
-		return s
-	}
-	return s + "\n\t" + r.useLongHandleErrorCode(r.Name)
-}
-
-// Fn describes syscall function.
-type Fn struct {
-	Name        string
-	Params      []*Param
-	Rets        *Rets
-	PrintTrace  bool
-	confirmproc bool
-	dllname     string
-	dllfuncname string
-	src         string
-	// TODO: get rid of this field and just use parameter index instead
-	curTmpVarIdx int // insure tmp variables have uniq names
-}
-
-// extractParams parses s to extract function parameters.
-func extractParams(s string, f *Fn) ([]*Param, error) {
-	s = trim(s)
-	if s == "" {
-		return nil, nil
-	}
-	a := strings.Split(s, ",")
-	ps := make([]*Param, len(a))
-	for i := range ps {
-		s2 := trim(a[i])
-		b := strings.Split(s2, " ")
-		if len(b) != 2 {
-			b = strings.Split(s2, "\t")
-			if len(b) != 2 {
-				return nil, errors.New("Could not extract function parameter from \"" + s2 + "\"")
-			}
-		}
-		ps[i] = &Param{
-			Name:      trim(b[0]),
-			Type:      trim(b[1]),
-			fn:        f,
-			tmpVarIdx: -1,
-		}
-	}
-	return ps, nil
-}
-
-// extractSection extracts text out of string s starting after start
-// and ending just before end. found return value will indicate success,
-// and prefix, body and suffix will contain correspondent parts of string s.
-func extractSection(s string, start, end rune) (prefix, body, suffix string, found bool) {
-	s = trim(s)
-	if strings.HasPrefix(s, string(start)) {
-		// no prefix
-		body = s[1:]
-	} else {
-		a := strings.SplitN(s, string(start), 2)
-		if len(a) != 2 {
-			return "", "", s, false
-		}
-		prefix = a[0]
-		body = a[1]
-	}
-	a := strings.SplitN(body, string(end), 2)
-	if len(a) != 2 {
-		return "", "", "", false
-	}
-	return prefix, a[0], a[1], true
-}
-
-// newFn parses string s and return created function Fn.
-func newFn(s string) (*Fn, error) {
-	s = trim(s)
-	f := &Fn{
-		Rets:       &Rets{},
-		src:        s,
-		PrintTrace: *printTraceFlag,
-	}
-	// function name and args
-	prefix, body, s, found := extractSection(s, '(', ')')
-	if !found || prefix == "" {
-		return nil, errors.New("Could not extract function name and parameters from \"" + f.src + "\"")
-	}
-	f.Name = prefix
-	var err error
-	f.Params, err = extractParams(body, f)
-	if err != nil {
-		return nil, err
-	}
-	// return values
-	_, body, s, found = extractSection(s, '(', ')')
-	if found {
-		r, err := extractParams(body, f)
-		if err != nil {
-			return nil, err
-		}
-		switch len(r) {
-		case 0:
-		case 1:
-			if r[0].IsError() {
-				f.Rets.ReturnsError = true
-			} else {
-				f.Rets.Name = r[0].Name
-				f.Rets.Type = r[0].Type
-			}
-		case 2:
-			if !r[1].IsError() {
-				return nil, errors.New("Only last windows error is allowed as second return value in \"" + f.src + "\"")
-			}
-			f.Rets.ReturnsError = true
-			f.Rets.Name = r[0].Name
-			f.Rets.Type = r[0].Type
-		default:
-			return nil, errors.New("Too many return values in \"" + f.src + "\"")
-		}
-	}
-	// fail condition
-	_, body, s, found = extractSection(s, '[', ']')
-	if found {
-		f.Rets.FailCond = body
-	}
-	// dll and dll function names
-	s = trim(s)
-	if s == "" {
-		return f, nil
-	}
-	if !strings.HasPrefix(s, "=") {
-		return nil, errors.New("Could not extract dll name from \"" + f.src + "\"")
-	}
-	s = trim(s[1:])
-	a := strings.Split(s, ".")
-	switch len(a) {
-	case 1:
-		f.dllfuncname = a[0]
-	case 2:
-		f.dllname = a[0]
-		f.dllfuncname = a[1]
-	default:
-		return nil, errors.New("Could not extract dll name from \"" + f.src + "\"")
-	}
-	if f.dllfuncname[len(f.dllfuncname)-1] == '?' {
-		f.confirmproc = true
-		f.dllfuncname = f.dllfuncname[0 : len(f.dllfuncname)-1]
-	}
-	return f, nil
-}
-
-// DLLName returns DLL name for function f.
-func (f *Fn) DLLName() string {
-	if f.dllname == "" {
-		return "kernel32"
-	}
-	return f.dllname
-}
-
-// DLLName returns DLL function name for function f.
-func (f *Fn) DLLFuncName() string {
-	if f.dllfuncname == "" {
-		return f.Name
-	}
-	return f.dllfuncname
-}
-
-func (f *Fn) ConfirmProc() bool {
-	return f.confirmproc
-}
-
-// ParamList returns source code for function f parameters.
-func (f *Fn) ParamList() string {
-	return join(f.Params, func(p *Param) string { return p.Name + " " + p.Type }, ", ")
-}
-
-// HelperParamList returns source code for helper function f parameters.
-func (f *Fn) HelperParamList() string {
-	return join(f.Params, func(p *Param) string { return p.Name + " " + p.HelperType() }, ", ")
-}
-
-// ParamPrintList returns source code of trace printing part correspondent
-// to syscall input parameters.
-func (f *Fn) ParamPrintList() string {
-	return join(f.Params, func(p *Param) string { return fmt.Sprintf(`"%s=", %s, `, p.Name, p.Name) }, `", ", `)
-}
-
-// ParamCount return number of syscall parameters for function f.
-func (f *Fn) ParamCount() int {
-	n := 0
-	for _, p := range f.Params {
-		n += len(p.SyscallArgList())
-	}
-	return n
-}
-
-// SyscallParamCount determines which version of Syscall/Syscall6/Syscall9/...
-// to use. It returns parameter count for correspondent SyscallX function.
-func (f *Fn) SyscallParamCount() int {
-	n := f.ParamCount()
-	switch {
-	case n <= 3:
-		return 3
-	case n <= 6:
-		return 6
-	case n <= 9:
-		return 9
-	case n <= 12:
-		return 12
-	case n <= 15:
-		return 15
-	default:
-		panic("too many arguments to system call")
-	}
-}
-
-// Syscall determines which SyscallX function to use for function f.
-func (f *Fn) Syscall() string {
-	c := f.SyscallParamCount()
-	if c == 3 {
-		return syscalldot() + "Syscall"
-	}
-	return syscalldot() + "Syscall" + strconv.Itoa(c)
-}
-
-// SyscallParamList returns source code for SyscallX parameters for function f.
-func (f *Fn) SyscallParamList() string {
-	a := make([]string, 0)
-	for _, p := range f.Params {
-		a = append(a, p.SyscallArgList()...)
-	}
-	for len(a) < f.SyscallParamCount() {
-		a = append(a, "0")
-	}
-	return strings.Join(a, ", ")
-}
-
-// HelperCallParamList returns source code of call into function f helper.
-func (f *Fn) HelperCallParamList() string {
-	a := make([]string, 0, len(f.Params))
-	for _, p := range f.Params {
-		s := p.Name
-		if p.Type == "string" {
-			s = p.tmpVar()
-		}
-		a = append(a, s)
-	}
-	return strings.Join(a, ", ")
-}
-
-// IsUTF16 is true, if f is W (utf16) function. It is false
-// for all A (ascii) functions.
-func (_ *Fn) IsUTF16() bool {
-	return true
-}
-
-// StrconvFunc returns name of Go string to OS string function for f.
-func (f *Fn) StrconvFunc() string {
-	if f.IsUTF16() {
-		return syscalldot() + "UTF16PtrFromString"
-	}
-	return syscalldot() + "BytePtrFromString"
-}
-
-// StrconvType returns Go type name used for OS string for f.
-func (f *Fn) StrconvType() string {
-	if f.IsUTF16() {
-		return "*uint16"
-	}
-	return "*byte"
-}
-
-// HasStringParam is true, if f has at least one string parameter.
-// Otherwise it is false.
-func (f *Fn) HasStringParam() bool {
-	for _, p := range f.Params {
-		if p.Type == "string" {
-			return true
-		}
-	}
-	return false
-}
-
-var uniqDllFuncName = make(map[string]bool)
-
-// IsNotDuplicate is true if f is not a duplicated function
-func (f *Fn) IsNotDuplicate() bool {
-	funcName := f.DLLFuncName()
-	if uniqDllFuncName[funcName] == false {
-		uniqDllFuncName[funcName] = true
-		return true
-	}
-	return false
-}
-
-// HelperName returns name of function f helper.
-func (f *Fn) HelperName() string {
-	if !f.HasStringParam() {
-		return f.Name
-	}
-	return "_" + f.Name
-}
-
-// Source files and functions.
-type Source struct {
-	Funcs           []*Fn
-	Files           []string
-	StdLibImports   []string
-	ExternalImports []string
-}
-
-func (src *Source) Import(pkg string) {
-	src.StdLibImports = append(src.StdLibImports, pkg)
-	sort.Strings(src.StdLibImports)
-}
-
-func (src *Source) ExternalImport(pkg string) {
-	src.ExternalImports = append(src.ExternalImports, pkg)
-	sort.Strings(src.ExternalImports)
-}
-
-// ParseFiles parses files listed in fs and extracts all syscall
-// functions listed in  sys comments. It returns source files
-// and functions collection *Source if successful.
-func ParseFiles(fs []string) (*Source, error) {
-	src := &Source{
-		Funcs: make([]*Fn, 0),
-		Files: make([]string, 0),
-		StdLibImports: []string{
-			"unsafe",
-		},
-		ExternalImports: make([]string, 0),
-	}
-	for _, file := range fs {
-		if err := src.ParseFile(file); err != nil {
-			return nil, err
-		}
-	}
-	return src, nil
-}
-
-// DLLs return dll names for a source set src.
-func (src *Source) DLLs() []string {
-	uniq := make(map[string]bool)
-	r := make([]string, 0)
-	for _, f := range src.Funcs {
-		name := f.DLLName()
-		if _, found := uniq[name]; !found {
-			uniq[name] = true
-			r = append(r, name)
-		}
-	}
-	return r
-}
-
-// ParseFile adds additional file path to a source set src.
-func (src *Source) ParseFile(path string) error {
-	file, err := os.Open(path)
-	if err != nil {
-		return err
-	}
-	defer file.Close()
-
-	s := bufio.NewScanner(file)
-	for s.Scan() {
-		t := trim(s.Text())
-		if len(t) < 7 {
-			continue
-		}
-		if !strings.HasPrefix(t, "//sys") {
-			continue
-		}
-		t = t[5:]
-		if !(t[0] == ' ' || t[0] == '\t') {
-			continue
-		}
-		f, err := newFn(t[1:])
-		if err != nil {
-			return err
-		}
-		src.Funcs = append(src.Funcs, f)
-	}
-	if err := s.Err(); err != nil {
-		return err
-	}
-	src.Files = append(src.Files, path)
-
-	// get package name
-	fset := token.NewFileSet()
-	_, err = file.Seek(0, 0)
-	if err != nil {
-		return err
-	}
-	pkg, err := parser.ParseFile(fset, "", file, parser.PackageClauseOnly)
-	if err != nil {
-		return err
-	}
-	packageName = pkg.Name.Name
-
-	return nil
-}
-
-// IsStdRepo returns true if src is part of standard library.
-func (src *Source) IsStdRepo() (bool, error) {
-	if len(src.Files) == 0 {
-		return false, errors.New("no input files provided")
-	}
-	abspath, err := filepath.Abs(src.Files[0])
-	if err != nil {
-		return false, err
-	}
-	goroot := runtime.GOROOT()
-	if runtime.GOOS == "windows" {
-		abspath = strings.ToLower(abspath)
-		goroot = strings.ToLower(goroot)
-	}
-	sep := string(os.PathSeparator)
-	if !strings.HasSuffix(goroot, sep) {
-		goroot += sep
-	}
-	return strings.HasPrefix(abspath, goroot), nil
-}
-
-// Generate output source file from a source set src.
-func (src *Source) Generate(w io.Writer) error {
-	const (
-		pkgStd         = iota // any package in std library
-		pkgXSysWindows        // x/sys/windows package
-		pkgOther
-	)
-	isStdRepo, err := src.IsStdRepo()
-	if err != nil {
-		return err
-	}
-	var pkgtype int
-	switch {
-	case isStdRepo:
-		pkgtype = pkgStd
-	case packageName == "windows":
-		// TODO: this needs better logic than just using package name
-		pkgtype = pkgXSysWindows
-	default:
-		pkgtype = pkgOther
-	}
-	if *systemDLL {
-		switch pkgtype {
-		case pkgStd:
-			src.Import("internal/syscall/windows/sysdll")
-		case pkgXSysWindows:
-		default:
-			src.ExternalImport("golang.org/x/sys/windows")
-		}
-	}
-	src.ExternalImport("github.com/Microsoft/go-winio")
-	if packageName != "syscall" {
-		src.Import("syscall")
-	}
-	funcMap := template.FuncMap{
-		"packagename": packagename,
-		"syscalldot":  syscalldot,
-		"newlazydll": func(dll string) string {
-			arg := "\"" + dll + ".dll\""
-			if !*systemDLL {
-				return syscalldot() + "NewLazyDLL(" + arg + ")"
-			}
-			switch pkgtype {
-			case pkgStd:
-				return syscalldot() + "NewLazyDLL(sysdll.Add(" + arg + "))"
-			case pkgXSysWindows:
-				return "NewLazySystemDLL(" + arg + ")"
-			default:
-				return "windows.NewLazySystemDLL(" + arg + ")"
-			}
-		},
-	}
-	t := template.Must(template.New("main").Funcs(funcMap).Parse(srcTemplate))
-	err = t.Execute(w, src)
-	if err != nil {
-		return errors.New("Failed to execute template: " + err.Error())
-	}
-	return nil
-}
-
-func usage() {
-	fmt.Fprintf(os.Stderr, "usage: mksyscall_windows [flags] [path ...]\n")
-	flag.PrintDefaults()
-	os.Exit(1)
-}
-
-func main() {
-	flag.Usage = usage
-	flag.Parse()
-	if len(flag.Args()) <= 0 {
-		fmt.Fprintf(os.Stderr, "no files to parse provided\n")
-		usage()
-	}
-
-	src, err := ParseFiles(flag.Args())
-	if err != nil {
-		log.Fatal(err)
-	}
-
-	var buf bytes.Buffer
-	if err := src.Generate(&buf); err != nil {
-		log.Fatal(err)
-	}
-
-	data, err := format.Source(buf.Bytes())
-	if err != nil {
-		log.Fatal(err)
-	}
-	if *filename == "" {
-		_, err = os.Stdout.Write(data)
-	} else {
-		err = ioutil.WriteFile(*filename, data, 0644)
-	}
-	if err != nil {
-		log.Fatal(err)
-	}
-}
-
-// TODO: use println instead to print in the following template
-const srcTemplate = `
-
-{{define "main"}}// MACHINE GENERATED BY 'go generate' COMMAND; DO NOT EDIT
-
-package {{packagename}}
-
-import (
-{{range .StdLibImports}}"{{.}}"
-{{end}}
-
-{{range .ExternalImports}}"{{.}}"
-{{end}}
-)
-
-var _ unsafe.Pointer
-
-// Do the interface allocations only once for common
-// Errno values.
-const (
-	errnoERROR_IO_PENDING = 997
-)
-
-var (
-	errERROR_IO_PENDING error = {{syscalldot}}Errno(errnoERROR_IO_PENDING)
-)
-
-// errnoErr returns common boxed Errno values, to prevent
-// allocations at runtime.
-func errnoErr(e {{syscalldot}}Errno) error {
-	switch e {
-	case 0:
-		return nil
-	case errnoERROR_IO_PENDING:
-		return errERROR_IO_PENDING
-	}
-	// TODO: add more here, after collecting data on the common
-	// error values see on Windows. (perhaps when running
-	// all.bat?)
-	return e
-}
-
-var (
-{{template "dlls" .}}
-{{template "funcnames" .}})
-{{range .Funcs}}{{if .HasStringParam}}{{template "helperbody" .}}{{end}}{{template "funcbody" .}}{{end}}
-{{end}}
-
-{{/* help functions */}}
-
-{{define "dlls"}}{{range .DLLs}}	mod{{.}} = {{newlazydll .}}
-{{end}}{{end}}
-
-{{define "funcnames"}}{{range .Funcs}}{{if .IsNotDuplicate}}	proc{{.DLLFuncName}} = mod{{.DLLName}}.NewProc("{{.DLLFuncName}}"){{end}}
-{{end}}{{end}}
-
-{{define "helperbody"}}
-func {{.Name}}({{.ParamList}}) {{template "results" .}}{
-{{template "helpertmpvars" .}}	return {{.HelperName}}({{.HelperCallParamList}})
-}
-{{end}}
-
-{{define "funcbody"}}
-func {{.HelperName}}({{.HelperParamList}}) {{template "results" .}}{
-{{template "tmpvars" .}}	{{template "syscallcheck" .}}{{template "syscall" .}}
-{{template "seterror" .}}{{template "printtrace" .}}	return
-}
-{{end}}
-
-{{define "helpertmpvars"}}{{range .Params}}{{if .TmpVarHelperCode}}	{{.TmpVarHelperCode}}
-{{end}}{{end}}{{end}}
-
-{{define "tmpvars"}}{{range .Params}}{{if .TmpVarCode}}	{{.TmpVarCode}}
-{{end}}{{end}}{{end}}
-
-{{define "results"}}{{if .Rets.List}}{{.Rets.List}} {{end}}{{end}}
-
-{{define "syscall"}}{{.Rets.SetReturnValuesCode}}{{.Syscall}}(proc{{.DLLFuncName}}.Addr(), {{.ParamCount}}, {{.SyscallParamList}}){{end}}
-
-{{define "syscallcheck"}}{{if .ConfirmProc}}if {{.Rets.ErrorVarName}} = proc{{.DLLFuncName}}.Find(); {{.Rets.ErrorVarName}} != nil {
-    return
-}
-{{end}}{{end}}
-
-
-{{define "seterror"}}{{if .Rets.SetErrorCode}}	{{.Rets.SetErrorCode}}
-{{end}}{{end}}
-
-{{define "printtrace"}}{{if .PrintTrace}}	print("SYSCALL: {{.Name}}(", {{.ParamPrintList}}") (", {{.Rets.PrintList}}")\n")
-{{end}}{{end}}
-
-`

+ 0 - 10
vendor/github.com/kr/pty/types.go

@@ -1,10 +0,0 @@
-// +build ignore
-
-package pty
-
-import "C"
-
-type (
-	_C_int  C.int
-	_C_uint C.uint
-)

+ 0 - 15
vendor/github.com/kr/pty/types_freebsd.go

@@ -1,15 +0,0 @@
-// +build ignore
-
-package pty
-
-/*
-#include <sys/param.h>
-#include <sys/filio.h>
-*/
-import "C"
-
-const (
-	_C_SPECNAMELEN = C.SPECNAMELEN /* max length of devicename */
-)
-
-type fiodgnameArg C.struct_fiodgname_arg

+ 0 - 266
vendor/github.com/miekg/dns/types_generate.go

@@ -1,266 +0,0 @@
-//+build ignore
-
-// types_generate.go is meant to run with go generate. It will use
-// go/{importer,types} to track down all the RR struct types. Then for each type
-// it will generate conversion tables (TypeToRR and TypeToString) and banal
-// methods (len, Header, copy) based on the struct tags. The generated source is
-// written to ztypes.go, and is meant to be checked into git.
-package main
-
-import (
-	"bytes"
-	"fmt"
-	"go/format"
-	"go/importer"
-	"go/types"
-	"log"
-	"os"
-	"strings"
-	"text/template"
-)
-
-var skipLen = map[string]struct{}{
-	"NSEC":     struct{}{},
-	"NSEC3":    struct{}{},
-	"OPT":      struct{}{},
-	"WKS":      struct{}{},
-	"IPSECKEY": struct{}{},
-}
-
-var packageHdr = `
-// *** DO NOT MODIFY ***
-// AUTOGENERATED BY go generate
-
-package dns
-
-import (
-	"encoding/base64"
-	"net"
-)
-
-`
-
-var TypeToRR = template.Must(template.New("TypeToRR").Parse(`
-// TypeToRR is a map of constructors for each RR type.
-var TypeToRR = map[uint16]func() RR{
-{{range .}}{{if ne . "RFC3597"}}  Type{{.}}:  func() RR { return new({{.}}) },
-{{end}}{{end}}                    }
-
-`))
-
-var typeToString = template.Must(template.New("typeToString").Parse(`
-// TypeToString is a map of strings for each RR type.
-var TypeToString = map[uint16]string{
-{{range .}}{{if ne . "NSAPPTR"}}  Type{{.}}: "{{.}}",
-{{end}}{{end}}                    TypeNSAPPTR:    "NSAP-PTR",
-}
-
-`))
-
-var headerFunc = template.Must(template.New("headerFunc").Parse(`
-// Header() functions
-{{range .}}  func (rr *{{.}}) Header() *RR_Header { return &rr.Hdr }
-{{end}}
-
-`))
-
-// getTypeStruct will take a type and the package scope, and return the
-// (innermost) struct if the type is considered a RR type (currently defined as
-// those structs beginning with a RR_Header, could be redefined as implementing
-// the RR interface). The bool return value indicates if embedded structs were
-// resolved.
-func getTypeStruct(t types.Type, scope *types.Scope) (*types.Struct, bool) {
-	st, ok := t.Underlying().(*types.Struct)
-	if !ok {
-		return nil, false
-	}
-	if st.Field(0).Type() == scope.Lookup("RR_Header").Type() {
-		return st, false
-	}
-	if st.Field(0).Anonymous() {
-		st, _ := getTypeStruct(st.Field(0).Type(), scope)
-		return st, true
-	}
-	return nil, false
-}
-
-func main() {
-	// Import and type-check the package
-	pkg, err := importer.Default().Import("github.com/miekg/dns")
-	fatalIfErr(err)
-	scope := pkg.Scope()
-
-	// Collect constants like TypeX
-	var numberedTypes []string
-	for _, name := range scope.Names() {
-		o := scope.Lookup(name)
-		if o == nil || !o.Exported() {
-			continue
-		}
-		b, ok := o.Type().(*types.Basic)
-		if !ok || b.Kind() != types.Uint16 {
-			continue
-		}
-		if !strings.HasPrefix(o.Name(), "Type") {
-			continue
-		}
-		name := strings.TrimPrefix(o.Name(), "Type")
-		if name == "PrivateRR" {
-			continue
-		}
-		numberedTypes = append(numberedTypes, name)
-	}
-
-	// Collect actual types (*X)
-	var namedTypes []string
-	for _, name := range scope.Names() {
-		o := scope.Lookup(name)
-		if o == nil || !o.Exported() {
-			continue
-		}
-		if st, _ := getTypeStruct(o.Type(), scope); st == nil {
-			continue
-		}
-		if name == "PrivateRR" {
-			continue
-		}
-
-		// Check if corresponding TypeX exists
-		if scope.Lookup("Type"+o.Name()) == nil && o.Name() != "RFC3597" {
-			log.Fatalf("Constant Type%s does not exist.", o.Name())
-		}
-
-		namedTypes = append(namedTypes, o.Name())
-	}
-
-	b := &bytes.Buffer{}
-	b.WriteString(packageHdr)
-
-	// Generate TypeToRR
-	fatalIfErr(TypeToRR.Execute(b, namedTypes))
-
-	// Generate typeToString
-	fatalIfErr(typeToString.Execute(b, numberedTypes))
-
-	// Generate headerFunc
-	fatalIfErr(headerFunc.Execute(b, namedTypes))
-
-	// Generate len()
-	fmt.Fprint(b, "// len() functions\n")
-	for _, name := range namedTypes {
-		if _, ok := skipLen[name]; ok {
-			continue
-		}
-		o := scope.Lookup(name)
-		st, isEmbedded := getTypeStruct(o.Type(), scope)
-		if isEmbedded {
-			continue
-		}
-		fmt.Fprintf(b, "func (rr *%s) len() int {\n", name)
-		fmt.Fprintf(b, "l := rr.Hdr.len()\n")
-		for i := 1; i < st.NumFields(); i++ {
-			o := func(s string) { fmt.Fprintf(b, s, st.Field(i).Name()) }
-
-			if _, ok := st.Field(i).Type().(*types.Slice); ok {
-				switch st.Tag(i) {
-				case `dns:"-"`:
-					// ignored
-				case `dns:"cdomain-name"`, `dns:"domain-name"`, `dns:"txt"`:
-					o("for _, x := range rr.%s { l += len(x) + 1 }\n")
-				default:
-					log.Fatalln(name, st.Field(i).Name(), st.Tag(i))
-				}
-				continue
-			}
-
-			switch st.Tag(i) {
-			case `dns:"-"`:
-				// ignored
-			case `dns:"cdomain-name"`, `dns:"domain-name"`:
-				o("l += len(rr.%s) + 1\n")
-			case `dns:"octet"`:
-				o("l += len(rr.%s)\n")
-			case `dns:"base64"`:
-				o("l += base64.StdEncoding.DecodedLen(len(rr.%s))\n")
-			case `dns:"size-hex"`, `dns:"hex"`:
-				o("l += len(rr.%s)/2 + 1\n")
-			case `dns:"a"`:
-				o("l += net.IPv4len // %s\n")
-			case `dns:"aaaa"`:
-				o("l += net.IPv6len // %s\n")
-			case `dns:"txt"`:
-				o("for _, t := range rr.%s { l += len(t) + 1 }\n")
-			case `dns:"uint48"`:
-				o("l += 6 // %s\n")
-			case "":
-				switch st.Field(i).Type().(*types.Basic).Kind() {
-				case types.Uint8:
-					o("l += 1 // %s\n")
-				case types.Uint16:
-					o("l += 2 // %s\n")
-				case types.Uint32:
-					o("l += 4 // %s\n")
-				case types.Uint64:
-					o("l += 8 // %s\n")
-				case types.String:
-					o("l += len(rr.%s) + 1\n")
-				default:
-					log.Fatalln(name, st.Field(i).Name())
-				}
-			default:
-				log.Fatalln(name, st.Field(i).Name(), st.Tag(i))
-			}
-		}
-		fmt.Fprintf(b, "return l }\n")
-	}
-
-	// Generate copy()
-	fmt.Fprint(b, "// copy() functions\n")
-	for _, name := range namedTypes {
-		o := scope.Lookup(name)
-		st, isEmbedded := getTypeStruct(o.Type(), scope)
-		if isEmbedded {
-			continue
-		}
-		fmt.Fprintf(b, "func (rr *%s) copy() RR {\n", name)
-		fields := []string{"*rr.Hdr.copyHeader()"}
-		for i := 1; i < st.NumFields(); i++ {
-			f := st.Field(i).Name()
-			if sl, ok := st.Field(i).Type().(*types.Slice); ok {
-				t := sl.Underlying().String()
-				t = strings.TrimPrefix(t, "[]")
-				t = strings.TrimPrefix(t, "github.com/miekg/dns.")
-				fmt.Fprintf(b, "%s := make([]%s, len(rr.%s)); copy(%s, rr.%s)\n",
-					f, t, f, f, f)
-				fields = append(fields, f)
-				continue
-			}
-			if st.Field(i).Type().String() == "net.IP" {
-				fields = append(fields, "copyIP(rr."+f+")")
-				continue
-			}
-			fields = append(fields, "rr."+f)
-		}
-		fmt.Fprintf(b, "return &%s{%s}\n", name, strings.Join(fields, ","))
-		fmt.Fprintf(b, "}\n")
-	}
-
-	// gofmt
-	res, err := format.Source(b.Bytes())
-	if err != nil {
-		b.WriteTo(os.Stderr)
-		log.Fatal(err)
-	}
-
-	// write result
-	f, err := os.Create("ztypes.go")
-	fatalIfErr(err)
-	defer f.Close()
-	f.Write(res)
-}
-
-func fatalIfErr(err error) {
-	if err != nil {
-		log.Fatal(err)
-	}
-}

+ 0 - 62
vendor/golang.org/x/sys/unix/mkpost.go

@@ -1,62 +0,0 @@
-// Copyright 2016 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
-
-// mkpost processes the output of cgo -godefs to
-// modify the generated types. It is used to clean up
-// the sys API in an architecture specific manner.
-//
-// mkpost is run after cgo -godefs by mkall.sh.
-package main
-
-import (
-	"fmt"
-	"go/format"
-	"io/ioutil"
-	"log"
-	"os"
-	"regexp"
-)
-
-func main() {
-	b, err := ioutil.ReadAll(os.Stdin)
-	if err != nil {
-		log.Fatal(err)
-	}
-	s := string(b)
-
-	goarch := os.Getenv("GOARCH")
-	goos := os.Getenv("GOOS")
-	if goarch == "s390x" && goos == "linux" {
-		// Export the types of PtraceRegs fields.
-		re := regexp.MustCompile("ptrace(Psw|Fpregs|Per)")
-		s = re.ReplaceAllString(s, "Ptrace$1")
-
-		// Replace padding fields inserted by cgo with blank identifiers.
-		re = regexp.MustCompile("Pad_cgo[A-Za-z0-9_]*")
-		s = re.ReplaceAllString(s, "_")
-
-		// Replace other unwanted fields with blank identifiers.
-		re = regexp.MustCompile("X_[A-Za-z0-9_]*")
-		s = re.ReplaceAllString(s, "_")
-
-		// Replace the control_regs union with a blank identifier for now.
-		re = regexp.MustCompile("(Control_regs)\\s+\\[0\\]uint64")
-		s = re.ReplaceAllString(s, "_ [0]uint64")
-	}
-
-	// gofmt
-	b, err = format.Source([]byte(s))
-	if err != nil {
-		log.Fatal(err)
-	}
-
-	// Append this command to the header to show where the new file
-	// came from.
-	re := regexp.MustCompile("(cgo -godefs [a-zA-Z0-9_]+\\.go.*)")
-	b = re.ReplaceAll(b, []byte("$1 | go run mkpost.go"))
-
-	fmt.Printf("%s", b)
-}

+ 0 - 250
vendor/golang.org/x/sys/unix/types_darwin.go

@@ -1,250 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-/*
-Input to cgo -godefs.  See also mkerrors.sh and mkall.sh
-*/
-
-// +godefs map struct_in_addr [4]byte /* in_addr */
-// +godefs map struct_in6_addr [16]byte /* in6_addr */
-
-package unix
-
-/*
-#define __DARWIN_UNIX03 0
-#define KERNEL
-#define _DARWIN_USE_64_BIT_INODE
-#include <dirent.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <termios.h>
-#include <unistd.h>
-#include <mach/mach.h>
-#include <mach/message.h>
-#include <sys/event.h>
-#include <sys/mman.h>
-#include <sys/mount.h>
-#include <sys/param.h>
-#include <sys/ptrace.h>
-#include <sys/resource.h>
-#include <sys/select.h>
-#include <sys/signal.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/uio.h>
-#include <sys/un.h>
-#include <sys/wait.h>
-#include <net/bpf.h>
-#include <net/if.h>
-#include <net/if_dl.h>
-#include <net/if_var.h>
-#include <net/route.h>
-#include <netinet/in.h>
-#include <netinet/icmp6.h>
-#include <netinet/tcp.h>
-
-enum {
-	sizeofPtr = sizeof(void*),
-};
-
-union sockaddr_all {
-	struct sockaddr s1;	// this one gets used for fields
-	struct sockaddr_in s2;	// these pad it out
-	struct sockaddr_in6 s3;
-	struct sockaddr_un s4;
-	struct sockaddr_dl s5;
-};
-
-struct sockaddr_any {
-	struct sockaddr addr;
-	char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
-};
-
-*/
-import "C"
-
-// Machine characteristics; for internal use.
-
-const (
-	sizeofPtr      = C.sizeofPtr
-	sizeofShort    = C.sizeof_short
-	sizeofInt      = C.sizeof_int
-	sizeofLong     = C.sizeof_long
-	sizeofLongLong = C.sizeof_longlong
-)
-
-// Basic types
-
-type (
-	_C_short     C.short
-	_C_int       C.int
-	_C_long      C.long
-	_C_long_long C.longlong
-)
-
-// Time
-
-type Timespec C.struct_timespec
-
-type Timeval C.struct_timeval
-
-type Timeval32 C.struct_timeval32
-
-// Processes
-
-type Rusage C.struct_rusage
-
-type Rlimit C.struct_rlimit
-
-type _Gid_t C.gid_t
-
-// Files
-
-type Stat_t C.struct_stat64
-
-type Statfs_t C.struct_statfs64
-
-type Flock_t C.struct_flock
-
-type Fstore_t C.struct_fstore
-
-type Radvisory_t C.struct_radvisory
-
-type Fbootstraptransfer_t C.struct_fbootstraptransfer
-
-type Log2phys_t C.struct_log2phys
-
-type Fsid C.struct_fsid
-
-type Dirent C.struct_dirent
-
-// Sockets
-
-type RawSockaddrInet4 C.struct_sockaddr_in
-
-type RawSockaddrInet6 C.struct_sockaddr_in6
-
-type RawSockaddrUnix C.struct_sockaddr_un
-
-type RawSockaddrDatalink C.struct_sockaddr_dl
-
-type RawSockaddr C.struct_sockaddr
-
-type RawSockaddrAny C.struct_sockaddr_any
-
-type _Socklen C.socklen_t
-
-type Linger C.struct_linger
-
-type Iovec C.struct_iovec
-
-type IPMreq C.struct_ip_mreq
-
-type IPv6Mreq C.struct_ipv6_mreq
-
-type Msghdr C.struct_msghdr
-
-type Cmsghdr C.struct_cmsghdr
-
-type Inet4Pktinfo C.struct_in_pktinfo
-
-type Inet6Pktinfo C.struct_in6_pktinfo
-
-type IPv6MTUInfo C.struct_ip6_mtuinfo
-
-type ICMPv6Filter C.struct_icmp6_filter
-
-const (
-	SizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in
-	SizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6
-	SizeofSockaddrAny      = C.sizeof_struct_sockaddr_any
-	SizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un
-	SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
-	SizeofLinger           = C.sizeof_struct_linger
-	SizeofIPMreq           = C.sizeof_struct_ip_mreq
-	SizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq
-	SizeofMsghdr           = C.sizeof_struct_msghdr
-	SizeofCmsghdr          = C.sizeof_struct_cmsghdr
-	SizeofInet4Pktinfo     = C.sizeof_struct_in_pktinfo
-	SizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo
-	SizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo
-	SizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter
-)
-
-// Ptrace requests
-
-const (
-	PTRACE_TRACEME = C.PT_TRACE_ME
-	PTRACE_CONT    = C.PT_CONTINUE
-	PTRACE_KILL    = C.PT_KILL
-)
-
-// Events (kqueue, kevent)
-
-type Kevent_t C.struct_kevent
-
-// Select
-
-type FdSet C.fd_set
-
-// Routing and interface messages
-
-const (
-	SizeofIfMsghdr    = C.sizeof_struct_if_msghdr
-	SizeofIfData      = C.sizeof_struct_if_data
-	SizeofIfaMsghdr   = C.sizeof_struct_ifa_msghdr
-	SizeofIfmaMsghdr  = C.sizeof_struct_ifma_msghdr
-	SizeofIfmaMsghdr2 = C.sizeof_struct_ifma_msghdr2
-	SizeofRtMsghdr    = C.sizeof_struct_rt_msghdr
-	SizeofRtMetrics   = C.sizeof_struct_rt_metrics
-)
-
-type IfMsghdr C.struct_if_msghdr
-
-type IfData C.struct_if_data
-
-type IfaMsghdr C.struct_ifa_msghdr
-
-type IfmaMsghdr C.struct_ifma_msghdr
-
-type IfmaMsghdr2 C.struct_ifma_msghdr2
-
-type RtMsghdr C.struct_rt_msghdr
-
-type RtMetrics C.struct_rt_metrics
-
-// Berkeley packet filter
-
-const (
-	SizeofBpfVersion = C.sizeof_struct_bpf_version
-	SizeofBpfStat    = C.sizeof_struct_bpf_stat
-	SizeofBpfProgram = C.sizeof_struct_bpf_program
-	SizeofBpfInsn    = C.sizeof_struct_bpf_insn
-	SizeofBpfHdr     = C.sizeof_struct_bpf_hdr
-)
-
-type BpfVersion C.struct_bpf_version
-
-type BpfStat C.struct_bpf_stat
-
-type BpfProgram C.struct_bpf_program
-
-type BpfInsn C.struct_bpf_insn
-
-type BpfHdr C.struct_bpf_hdr
-
-// Terminal handling
-
-type Termios C.struct_termios
-
-// fchmodat-like syscalls.
-
-const (
-	AT_FDCWD            = C.AT_FDCWD
-	AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
-)

+ 0 - 242
vendor/golang.org/x/sys/unix/types_dragonfly.go

@@ -1,242 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-/*
-Input to cgo -godefs.  See also mkerrors.sh and mkall.sh
-*/
-
-// +godefs map struct_in_addr [4]byte /* in_addr */
-// +godefs map struct_in6_addr [16]byte /* in6_addr */
-
-package unix
-
-/*
-#define KERNEL
-#include <dirent.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <termios.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <sys/event.h>
-#include <sys/mman.h>
-#include <sys/mount.h>
-#include <sys/param.h>
-#include <sys/ptrace.h>
-#include <sys/resource.h>
-#include <sys/select.h>
-#include <sys/signal.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/un.h>
-#include <sys/wait.h>
-#include <net/bpf.h>
-#include <net/if.h>
-#include <net/if_dl.h>
-#include <net/route.h>
-#include <netinet/in.h>
-#include <netinet/icmp6.h>
-#include <netinet/tcp.h>
-
-enum {
-	sizeofPtr = sizeof(void*),
-};
-
-union sockaddr_all {
-	struct sockaddr s1;	// this one gets used for fields
-	struct sockaddr_in s2;	// these pad it out
-	struct sockaddr_in6 s3;
-	struct sockaddr_un s4;
-	struct sockaddr_dl s5;
-};
-
-struct sockaddr_any {
-	struct sockaddr addr;
-	char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
-};
-
-*/
-import "C"
-
-// Machine characteristics; for internal use.
-
-const (
-	sizeofPtr      = C.sizeofPtr
-	sizeofShort    = C.sizeof_short
-	sizeofInt      = C.sizeof_int
-	sizeofLong     = C.sizeof_long
-	sizeofLongLong = C.sizeof_longlong
-)
-
-// Basic types
-
-type (
-	_C_short     C.short
-	_C_int       C.int
-	_C_long      C.long
-	_C_long_long C.longlong
-)
-
-// Time
-
-type Timespec C.struct_timespec
-
-type Timeval C.struct_timeval
-
-// Processes
-
-type Rusage C.struct_rusage
-
-type Rlimit C.struct_rlimit
-
-type _Gid_t C.gid_t
-
-// Files
-
-const ( // Directory mode bits
-	S_IFMT   = C.S_IFMT
-	S_IFIFO  = C.S_IFIFO
-	S_IFCHR  = C.S_IFCHR
-	S_IFDIR  = C.S_IFDIR
-	S_IFBLK  = C.S_IFBLK
-	S_IFREG  = C.S_IFREG
-	S_IFLNK  = C.S_IFLNK
-	S_IFSOCK = C.S_IFSOCK
-	S_ISUID  = C.S_ISUID
-	S_ISGID  = C.S_ISGID
-	S_ISVTX  = C.S_ISVTX
-	S_IRUSR  = C.S_IRUSR
-	S_IWUSR  = C.S_IWUSR
-	S_IXUSR  = C.S_IXUSR
-)
-
-type Stat_t C.struct_stat
-
-type Statfs_t C.struct_statfs
-
-type Flock_t C.struct_flock
-
-type Dirent C.struct_dirent
-
-type Fsid C.struct_fsid
-
-// Sockets
-
-type RawSockaddrInet4 C.struct_sockaddr_in
-
-type RawSockaddrInet6 C.struct_sockaddr_in6
-
-type RawSockaddrUnix C.struct_sockaddr_un
-
-type RawSockaddrDatalink C.struct_sockaddr_dl
-
-type RawSockaddr C.struct_sockaddr
-
-type RawSockaddrAny C.struct_sockaddr_any
-
-type _Socklen C.socklen_t
-
-type Linger C.struct_linger
-
-type Iovec C.struct_iovec
-
-type IPMreq C.struct_ip_mreq
-
-type IPv6Mreq C.struct_ipv6_mreq
-
-type Msghdr C.struct_msghdr
-
-type Cmsghdr C.struct_cmsghdr
-
-type Inet6Pktinfo C.struct_in6_pktinfo
-
-type IPv6MTUInfo C.struct_ip6_mtuinfo
-
-type ICMPv6Filter C.struct_icmp6_filter
-
-const (
-	SizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in
-	SizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6
-	SizeofSockaddrAny      = C.sizeof_struct_sockaddr_any
-	SizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un
-	SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
-	SizeofLinger           = C.sizeof_struct_linger
-	SizeofIPMreq           = C.sizeof_struct_ip_mreq
-	SizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq
-	SizeofMsghdr           = C.sizeof_struct_msghdr
-	SizeofCmsghdr          = C.sizeof_struct_cmsghdr
-	SizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo
-	SizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo
-	SizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter
-)
-
-// Ptrace requests
-
-const (
-	PTRACE_TRACEME = C.PT_TRACE_ME
-	PTRACE_CONT    = C.PT_CONTINUE
-	PTRACE_KILL    = C.PT_KILL
-)
-
-// Events (kqueue, kevent)
-
-type Kevent_t C.struct_kevent
-
-// Select
-
-type FdSet C.fd_set
-
-// Routing and interface messages
-
-const (
-	SizeofIfMsghdr         = C.sizeof_struct_if_msghdr
-	SizeofIfData           = C.sizeof_struct_if_data
-	SizeofIfaMsghdr        = C.sizeof_struct_ifa_msghdr
-	SizeofIfmaMsghdr       = C.sizeof_struct_ifma_msghdr
-	SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr
-	SizeofRtMsghdr         = C.sizeof_struct_rt_msghdr
-	SizeofRtMetrics        = C.sizeof_struct_rt_metrics
-)
-
-type IfMsghdr C.struct_if_msghdr
-
-type IfData C.struct_if_data
-
-type IfaMsghdr C.struct_ifa_msghdr
-
-type IfmaMsghdr C.struct_ifma_msghdr
-
-type IfAnnounceMsghdr C.struct_if_announcemsghdr
-
-type RtMsghdr C.struct_rt_msghdr
-
-type RtMetrics C.struct_rt_metrics
-
-// Berkeley packet filter
-
-const (
-	SizeofBpfVersion = C.sizeof_struct_bpf_version
-	SizeofBpfStat    = C.sizeof_struct_bpf_stat
-	SizeofBpfProgram = C.sizeof_struct_bpf_program
-	SizeofBpfInsn    = C.sizeof_struct_bpf_insn
-	SizeofBpfHdr     = C.sizeof_struct_bpf_hdr
-)
-
-type BpfVersion C.struct_bpf_version
-
-type BpfStat C.struct_bpf_stat
-
-type BpfProgram C.struct_bpf_program
-
-type BpfInsn C.struct_bpf_insn
-
-type BpfHdr C.struct_bpf_hdr
-
-// Terminal handling
-
-type Termios C.struct_termios

+ 0 - 353
vendor/golang.org/x/sys/unix/types_freebsd.go

@@ -1,353 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-/*
-Input to cgo -godefs.  See also mkerrors.sh and mkall.sh
-*/
-
-// +godefs map struct_in_addr [4]byte /* in_addr */
-// +godefs map struct_in6_addr [16]byte /* in6_addr */
-
-package unix
-
-/*
-#define KERNEL
-#include <dirent.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <termios.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <sys/event.h>
-#include <sys/mman.h>
-#include <sys/mount.h>
-#include <sys/param.h>
-#include <sys/ptrace.h>
-#include <sys/resource.h>
-#include <sys/select.h>
-#include <sys/signal.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/un.h>
-#include <sys/wait.h>
-#include <net/bpf.h>
-#include <net/if.h>
-#include <net/if_dl.h>
-#include <net/route.h>
-#include <netinet/in.h>
-#include <netinet/icmp6.h>
-#include <netinet/tcp.h>
-
-enum {
-	sizeofPtr = sizeof(void*),
-};
-
-union sockaddr_all {
-	struct sockaddr s1;	// this one gets used for fields
-	struct sockaddr_in s2;	// these pad it out
-	struct sockaddr_in6 s3;
-	struct sockaddr_un s4;
-	struct sockaddr_dl s5;
-};
-
-struct sockaddr_any {
-	struct sockaddr addr;
-	char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
-};
-
-// This structure is a duplicate of stat on FreeBSD 8-STABLE.
-// See /usr/include/sys/stat.h.
-struct stat8 {
-#undef st_atimespec	st_atim
-#undef st_mtimespec	st_mtim
-#undef st_ctimespec	st_ctim
-#undef st_birthtimespec	st_birthtim
-	__dev_t   st_dev;
-	ino_t     st_ino;
-	mode_t    st_mode;
-	nlink_t   st_nlink;
-	uid_t     st_uid;
-	gid_t     st_gid;
-	__dev_t   st_rdev;
-#if __BSD_VISIBLE
-	struct  timespec st_atimespec;
-	struct  timespec st_mtimespec;
-	struct  timespec st_ctimespec;
-#else
-	time_t    st_atime;
-	long      __st_atimensec;
-	time_t    st_mtime;
-	long      __st_mtimensec;
-	time_t    st_ctime;
-	long      __st_ctimensec;
-#endif
-	off_t     st_size;
-	blkcnt_t st_blocks;
-	blksize_t st_blksize;
-	fflags_t  st_flags;
-	__uint32_t st_gen;
-	__int32_t st_lspare;
-#if __BSD_VISIBLE
-	struct timespec st_birthtimespec;
-	unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
-	unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
-#else
-	time_t    st_birthtime;
-	long      st_birthtimensec;
-	unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec));
-	unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec));
-#endif
-};
-
-// This structure is a duplicate of if_data on FreeBSD 8-STABLE.
-// See /usr/include/net/if.h.
-struct if_data8 {
-	u_char  ifi_type;
-	u_char  ifi_physical;
-	u_char  ifi_addrlen;
-	u_char  ifi_hdrlen;
-	u_char  ifi_link_state;
-	u_char  ifi_spare_char1;
-	u_char  ifi_spare_char2;
-	u_char  ifi_datalen;
-	u_long  ifi_mtu;
-	u_long  ifi_metric;
-	u_long  ifi_baudrate;
-	u_long  ifi_ipackets;
-	u_long  ifi_ierrors;
-	u_long  ifi_opackets;
-	u_long  ifi_oerrors;
-	u_long  ifi_collisions;
-	u_long  ifi_ibytes;
-	u_long  ifi_obytes;
-	u_long  ifi_imcasts;
-	u_long  ifi_omcasts;
-	u_long  ifi_iqdrops;
-	u_long  ifi_noproto;
-	u_long  ifi_hwassist;
-	time_t  ifi_epoch;
-	struct  timeval ifi_lastchange;
-};
-
-// This structure is a duplicate of if_msghdr on FreeBSD 8-STABLE.
-// See /usr/include/net/if.h.
-struct if_msghdr8 {
-	u_short ifm_msglen;
-	u_char  ifm_version;
-	u_char  ifm_type;
-	int     ifm_addrs;
-	int     ifm_flags;
-	u_short ifm_index;
-	struct  if_data8 ifm_data;
-};
-*/
-import "C"
-
-// Machine characteristics; for internal use.
-
-const (
-	sizeofPtr      = C.sizeofPtr
-	sizeofShort    = C.sizeof_short
-	sizeofInt      = C.sizeof_int
-	sizeofLong     = C.sizeof_long
-	sizeofLongLong = C.sizeof_longlong
-)
-
-// Basic types
-
-type (
-	_C_short     C.short
-	_C_int       C.int
-	_C_long      C.long
-	_C_long_long C.longlong
-)
-
-// Time
-
-type Timespec C.struct_timespec
-
-type Timeval C.struct_timeval
-
-// Processes
-
-type Rusage C.struct_rusage
-
-type Rlimit C.struct_rlimit
-
-type _Gid_t C.gid_t
-
-// Files
-
-const ( // Directory mode bits
-	S_IFMT   = C.S_IFMT
-	S_IFIFO  = C.S_IFIFO
-	S_IFCHR  = C.S_IFCHR
-	S_IFDIR  = C.S_IFDIR
-	S_IFBLK  = C.S_IFBLK
-	S_IFREG  = C.S_IFREG
-	S_IFLNK  = C.S_IFLNK
-	S_IFSOCK = C.S_IFSOCK
-	S_ISUID  = C.S_ISUID
-	S_ISGID  = C.S_ISGID
-	S_ISVTX  = C.S_ISVTX
-	S_IRUSR  = C.S_IRUSR
-	S_IWUSR  = C.S_IWUSR
-	S_IXUSR  = C.S_IXUSR
-)
-
-type Stat_t C.struct_stat8
-
-type Statfs_t C.struct_statfs
-
-type Flock_t C.struct_flock
-
-type Dirent C.struct_dirent
-
-type Fsid C.struct_fsid
-
-// Advice to Fadvise
-
-const (
-	FADV_NORMAL     = C.POSIX_FADV_NORMAL
-	FADV_RANDOM     = C.POSIX_FADV_RANDOM
-	FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL
-	FADV_WILLNEED   = C.POSIX_FADV_WILLNEED
-	FADV_DONTNEED   = C.POSIX_FADV_DONTNEED
-	FADV_NOREUSE    = C.POSIX_FADV_NOREUSE
-)
-
-// Sockets
-
-type RawSockaddrInet4 C.struct_sockaddr_in
-
-type RawSockaddrInet6 C.struct_sockaddr_in6
-
-type RawSockaddrUnix C.struct_sockaddr_un
-
-type RawSockaddrDatalink C.struct_sockaddr_dl
-
-type RawSockaddr C.struct_sockaddr
-
-type RawSockaddrAny C.struct_sockaddr_any
-
-type _Socklen C.socklen_t
-
-type Linger C.struct_linger
-
-type Iovec C.struct_iovec
-
-type IPMreq C.struct_ip_mreq
-
-type IPMreqn C.struct_ip_mreqn
-
-type IPv6Mreq C.struct_ipv6_mreq
-
-type Msghdr C.struct_msghdr
-
-type Cmsghdr C.struct_cmsghdr
-
-type Inet6Pktinfo C.struct_in6_pktinfo
-
-type IPv6MTUInfo C.struct_ip6_mtuinfo
-
-type ICMPv6Filter C.struct_icmp6_filter
-
-const (
-	SizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in
-	SizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6
-	SizeofSockaddrAny      = C.sizeof_struct_sockaddr_any
-	SizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un
-	SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
-	SizeofLinger           = C.sizeof_struct_linger
-	SizeofIPMreq           = C.sizeof_struct_ip_mreq
-	SizeofIPMreqn          = C.sizeof_struct_ip_mreqn
-	SizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq
-	SizeofMsghdr           = C.sizeof_struct_msghdr
-	SizeofCmsghdr          = C.sizeof_struct_cmsghdr
-	SizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo
-	SizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo
-	SizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter
-)
-
-// Ptrace requests
-
-const (
-	PTRACE_TRACEME = C.PT_TRACE_ME
-	PTRACE_CONT    = C.PT_CONTINUE
-	PTRACE_KILL    = C.PT_KILL
-)
-
-// Events (kqueue, kevent)
-
-type Kevent_t C.struct_kevent
-
-// Select
-
-type FdSet C.fd_set
-
-// Routing and interface messages
-
-const (
-	sizeofIfMsghdr         = C.sizeof_struct_if_msghdr
-	SizeofIfMsghdr         = C.sizeof_struct_if_msghdr8
-	sizeofIfData           = C.sizeof_struct_if_data
-	SizeofIfData           = C.sizeof_struct_if_data8
-	SizeofIfaMsghdr        = C.sizeof_struct_ifa_msghdr
-	SizeofIfmaMsghdr       = C.sizeof_struct_ifma_msghdr
-	SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr
-	SizeofRtMsghdr         = C.sizeof_struct_rt_msghdr
-	SizeofRtMetrics        = C.sizeof_struct_rt_metrics
-)
-
-type ifMsghdr C.struct_if_msghdr
-
-type IfMsghdr C.struct_if_msghdr8
-
-type ifData C.struct_if_data
-
-type IfData C.struct_if_data8
-
-type IfaMsghdr C.struct_ifa_msghdr
-
-type IfmaMsghdr C.struct_ifma_msghdr
-
-type IfAnnounceMsghdr C.struct_if_announcemsghdr
-
-type RtMsghdr C.struct_rt_msghdr
-
-type RtMetrics C.struct_rt_metrics
-
-// Berkeley packet filter
-
-const (
-	SizeofBpfVersion    = C.sizeof_struct_bpf_version
-	SizeofBpfStat       = C.sizeof_struct_bpf_stat
-	SizeofBpfZbuf       = C.sizeof_struct_bpf_zbuf
-	SizeofBpfProgram    = C.sizeof_struct_bpf_program
-	SizeofBpfInsn       = C.sizeof_struct_bpf_insn
-	SizeofBpfHdr        = C.sizeof_struct_bpf_hdr
-	SizeofBpfZbufHeader = C.sizeof_struct_bpf_zbuf_header
-)
-
-type BpfVersion C.struct_bpf_version
-
-type BpfStat C.struct_bpf_stat
-
-type BpfZbuf C.struct_bpf_zbuf
-
-type BpfProgram C.struct_bpf_program
-
-type BpfInsn C.struct_bpf_insn
-
-type BpfHdr C.struct_bpf_hdr
-
-type BpfZbufHeader C.struct_bpf_zbuf_header
-
-// Terminal handling
-
-type Termios C.struct_termios

+ 0 - 450
vendor/golang.org/x/sys/unix/types_linux.go

@@ -1,450 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-/*
-Input to cgo -godefs.  See also mkerrors.sh and mkall.sh
-*/
-
-// +godefs map struct_in_addr [4]byte /* in_addr */
-// +godefs map struct_in6_addr [16]byte /* in6_addr */
-
-package unix
-
-/*
-#define _LARGEFILE_SOURCE
-#define _LARGEFILE64_SOURCE
-#define _FILE_OFFSET_BITS 64
-#define _GNU_SOURCE
-
-#include <dirent.h>
-#include <fcntl.h>
-#include <netinet/in.h>
-#include <netinet/tcp.h>
-#include <netpacket/packet.h>
-#include <poll.h>
-#include <signal.h>
-#include <stdio.h>
-#include <sys/epoll.h>
-#include <sys/inotify.h>
-#include <sys/mman.h>
-#include <sys/mount.h>
-#include <sys/param.h>
-#include <sys/ptrace.h>
-#include <sys/resource.h>
-#include <sys/select.h>
-#include <sys/signal.h>
-#include <sys/stat.h>
-#include <sys/statfs.h>
-#include <sys/sysinfo.h>
-#include <sys/time.h>
-#include <sys/times.h>
-#include <sys/timex.h>
-#include <sys/types.h>
-#include <sys/un.h>
-#include <sys/user.h>
-#include <sys/utsname.h>
-#include <sys/wait.h>
-#include <linux/filter.h>
-#include <linux/netlink.h>
-#include <linux/rtnetlink.h>
-#include <linux/icmpv6.h>
-#include <asm/termbits.h>
-#include <time.h>
-#include <unistd.h>
-#include <ustat.h>
-#include <utime.h>
-#include <bluetooth/bluetooth.h>
-#include <bluetooth/hci.h>
-
-#ifdef TCSETS2
-// On systems that have "struct termios2" use this as type Termios.
-typedef struct termios2 termios_t;
-#else
-typedef struct termios termios_t;
-#endif
-
-enum {
-	sizeofPtr = sizeof(void*),
-};
-
-union sockaddr_all {
-	struct sockaddr s1;	// this one gets used for fields
-	struct sockaddr_in s2;	// these pad it out
-	struct sockaddr_in6 s3;
-	struct sockaddr_un s4;
-	struct sockaddr_ll s5;
-	struct sockaddr_nl s6;
-};
-
-struct sockaddr_any {
-	struct sockaddr addr;
-	char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
-};
-
-// copied from /usr/include/linux/un.h
-struct my_sockaddr_un {
-	sa_family_t sun_family;
-#if defined(__ARM_EABI__) || defined(__powerpc64__)
-	// on ARM char is by default unsigned
-	signed char sun_path[108];
-#else
-	char sun_path[108];
-#endif
-};
-
-#ifdef __ARM_EABI__
-typedef struct user_regs PtraceRegs;
-#elif defined(__aarch64__)
-typedef struct user_pt_regs PtraceRegs;
-#elif defined(__powerpc64__)
-typedef struct pt_regs PtraceRegs;
-#elif defined(__mips__)
-typedef struct user PtraceRegs;
-#elif defined(__s390x__)
-typedef struct _user_regs_struct PtraceRegs;
-#else
-typedef struct user_regs_struct PtraceRegs;
-#endif
-
-#if defined(__s390x__)
-typedef struct _user_psw_struct ptracePsw;
-typedef struct _user_fpregs_struct ptraceFpregs;
-typedef struct _user_per_struct ptracePer;
-#else
-typedef struct {} ptracePsw;
-typedef struct {} ptraceFpregs;
-typedef struct {} ptracePer;
-#endif
-
-// The real epoll_event is a union, and godefs doesn't handle it well.
-struct my_epoll_event {
-	uint32_t events;
-#if defined(__ARM_EABI__) || defined(__aarch64__)
-	// padding is not specified in linux/eventpoll.h but added to conform to the
-	// alignment requirements of EABI
-	int32_t padFd;
-#elif defined(__powerpc64__) || defined(__s390x__)
-	int32_t _padFd;
-#endif
-	int32_t fd;
-	int32_t pad;
-};
-
-*/
-import "C"
-
-// Machine characteristics; for internal use.
-
-const (
-	sizeofPtr      = C.sizeofPtr
-	sizeofShort    = C.sizeof_short
-	sizeofInt      = C.sizeof_int
-	sizeofLong     = C.sizeof_long
-	sizeofLongLong = C.sizeof_longlong
-	PathMax        = C.PATH_MAX
-)
-
-// Basic types
-
-type (
-	_C_short     C.short
-	_C_int       C.int
-	_C_long      C.long
-	_C_long_long C.longlong
-)
-
-// Time
-
-type Timespec C.struct_timespec
-
-type Timeval C.struct_timeval
-
-type Timex C.struct_timex
-
-type Time_t C.time_t
-
-type Tms C.struct_tms
-
-type Utimbuf C.struct_utimbuf
-
-// Processes
-
-type Rusage C.struct_rusage
-
-type Rlimit C.struct_rlimit
-
-type _Gid_t C.gid_t
-
-// Files
-
-type Stat_t C.struct_stat
-
-type Statfs_t C.struct_statfs
-
-type Dirent C.struct_dirent
-
-type Fsid C.fsid_t
-
-type Flock_t C.struct_flock
-
-// Advice to Fadvise
-
-const (
-	FADV_NORMAL     = C.POSIX_FADV_NORMAL
-	FADV_RANDOM     = C.POSIX_FADV_RANDOM
-	FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL
-	FADV_WILLNEED   = C.POSIX_FADV_WILLNEED
-	FADV_DONTNEED   = C.POSIX_FADV_DONTNEED
-	FADV_NOREUSE    = C.POSIX_FADV_NOREUSE
-)
-
-// Sockets
-
-type RawSockaddrInet4 C.struct_sockaddr_in
-
-type RawSockaddrInet6 C.struct_sockaddr_in6
-
-type RawSockaddrUnix C.struct_my_sockaddr_un
-
-type RawSockaddrLinklayer C.struct_sockaddr_ll
-
-type RawSockaddrNetlink C.struct_sockaddr_nl
-
-type RawSockaddrHCI C.struct_sockaddr_hci
-
-type RawSockaddr C.struct_sockaddr
-
-type RawSockaddrAny C.struct_sockaddr_any
-
-type _Socklen C.socklen_t
-
-type Linger C.struct_linger
-
-type Iovec C.struct_iovec
-
-type IPMreq C.struct_ip_mreq
-
-type IPMreqn C.struct_ip_mreqn
-
-type IPv6Mreq C.struct_ipv6_mreq
-
-type Msghdr C.struct_msghdr
-
-type Cmsghdr C.struct_cmsghdr
-
-type Inet4Pktinfo C.struct_in_pktinfo
-
-type Inet6Pktinfo C.struct_in6_pktinfo
-
-type IPv6MTUInfo C.struct_ip6_mtuinfo
-
-type ICMPv6Filter C.struct_icmp6_filter
-
-type Ucred C.struct_ucred
-
-type TCPInfo C.struct_tcp_info
-
-const (
-	SizeofSockaddrInet4     = C.sizeof_struct_sockaddr_in
-	SizeofSockaddrInet6     = C.sizeof_struct_sockaddr_in6
-	SizeofSockaddrAny       = C.sizeof_struct_sockaddr_any
-	SizeofSockaddrUnix      = C.sizeof_struct_sockaddr_un
-	SizeofSockaddrLinklayer = C.sizeof_struct_sockaddr_ll
-	SizeofSockaddrNetlink   = C.sizeof_struct_sockaddr_nl
-	SizeofSockaddrHCI       = C.sizeof_struct_sockaddr_hci
-	SizeofLinger            = C.sizeof_struct_linger
-	SizeofIPMreq            = C.sizeof_struct_ip_mreq
-	SizeofIPMreqn           = C.sizeof_struct_ip_mreqn
-	SizeofIPv6Mreq          = C.sizeof_struct_ipv6_mreq
-	SizeofMsghdr            = C.sizeof_struct_msghdr
-	SizeofCmsghdr           = C.sizeof_struct_cmsghdr
-	SizeofInet4Pktinfo      = C.sizeof_struct_in_pktinfo
-	SizeofInet6Pktinfo      = C.sizeof_struct_in6_pktinfo
-	SizeofIPv6MTUInfo       = C.sizeof_struct_ip6_mtuinfo
-	SizeofICMPv6Filter      = C.sizeof_struct_icmp6_filter
-	SizeofUcred             = C.sizeof_struct_ucred
-	SizeofTCPInfo           = C.sizeof_struct_tcp_info
-)
-
-// Netlink routing and interface messages
-
-const (
-	IFA_UNSPEC          = C.IFA_UNSPEC
-	IFA_ADDRESS         = C.IFA_ADDRESS
-	IFA_LOCAL           = C.IFA_LOCAL
-	IFA_LABEL           = C.IFA_LABEL
-	IFA_BROADCAST       = C.IFA_BROADCAST
-	IFA_ANYCAST         = C.IFA_ANYCAST
-	IFA_CACHEINFO       = C.IFA_CACHEINFO
-	IFA_MULTICAST       = C.IFA_MULTICAST
-	IFLA_UNSPEC         = C.IFLA_UNSPEC
-	IFLA_ADDRESS        = C.IFLA_ADDRESS
-	IFLA_BROADCAST      = C.IFLA_BROADCAST
-	IFLA_IFNAME         = C.IFLA_IFNAME
-	IFLA_MTU            = C.IFLA_MTU
-	IFLA_LINK           = C.IFLA_LINK
-	IFLA_QDISC          = C.IFLA_QDISC
-	IFLA_STATS          = C.IFLA_STATS
-	IFLA_COST           = C.IFLA_COST
-	IFLA_PRIORITY       = C.IFLA_PRIORITY
-	IFLA_MASTER         = C.IFLA_MASTER
-	IFLA_WIRELESS       = C.IFLA_WIRELESS
-	IFLA_PROTINFO       = C.IFLA_PROTINFO
-	IFLA_TXQLEN         = C.IFLA_TXQLEN
-	IFLA_MAP            = C.IFLA_MAP
-	IFLA_WEIGHT         = C.IFLA_WEIGHT
-	IFLA_OPERSTATE      = C.IFLA_OPERSTATE
-	IFLA_LINKMODE       = C.IFLA_LINKMODE
-	IFLA_LINKINFO       = C.IFLA_LINKINFO
-	IFLA_NET_NS_PID     = C.IFLA_NET_NS_PID
-	IFLA_IFALIAS        = C.IFLA_IFALIAS
-	IFLA_MAX            = C.IFLA_MAX
-	RT_SCOPE_UNIVERSE   = C.RT_SCOPE_UNIVERSE
-	RT_SCOPE_SITE       = C.RT_SCOPE_SITE
-	RT_SCOPE_LINK       = C.RT_SCOPE_LINK
-	RT_SCOPE_HOST       = C.RT_SCOPE_HOST
-	RT_SCOPE_NOWHERE    = C.RT_SCOPE_NOWHERE
-	RT_TABLE_UNSPEC     = C.RT_TABLE_UNSPEC
-	RT_TABLE_COMPAT     = C.RT_TABLE_COMPAT
-	RT_TABLE_DEFAULT    = C.RT_TABLE_DEFAULT
-	RT_TABLE_MAIN       = C.RT_TABLE_MAIN
-	RT_TABLE_LOCAL      = C.RT_TABLE_LOCAL
-	RT_TABLE_MAX        = C.RT_TABLE_MAX
-	RTA_UNSPEC          = C.RTA_UNSPEC
-	RTA_DST             = C.RTA_DST
-	RTA_SRC             = C.RTA_SRC
-	RTA_IIF             = C.RTA_IIF
-	RTA_OIF             = C.RTA_OIF
-	RTA_GATEWAY         = C.RTA_GATEWAY
-	RTA_PRIORITY        = C.RTA_PRIORITY
-	RTA_PREFSRC         = C.RTA_PREFSRC
-	RTA_METRICS         = C.RTA_METRICS
-	RTA_MULTIPATH       = C.RTA_MULTIPATH
-	RTA_FLOW            = C.RTA_FLOW
-	RTA_CACHEINFO       = C.RTA_CACHEINFO
-	RTA_TABLE           = C.RTA_TABLE
-	RTN_UNSPEC          = C.RTN_UNSPEC
-	RTN_UNICAST         = C.RTN_UNICAST
-	RTN_LOCAL           = C.RTN_LOCAL
-	RTN_BROADCAST       = C.RTN_BROADCAST
-	RTN_ANYCAST         = C.RTN_ANYCAST
-	RTN_MULTICAST       = C.RTN_MULTICAST
-	RTN_BLACKHOLE       = C.RTN_BLACKHOLE
-	RTN_UNREACHABLE     = C.RTN_UNREACHABLE
-	RTN_PROHIBIT        = C.RTN_PROHIBIT
-	RTN_THROW           = C.RTN_THROW
-	RTN_NAT             = C.RTN_NAT
-	RTN_XRESOLVE        = C.RTN_XRESOLVE
-	RTNLGRP_NONE        = C.RTNLGRP_NONE
-	RTNLGRP_LINK        = C.RTNLGRP_LINK
-	RTNLGRP_NOTIFY      = C.RTNLGRP_NOTIFY
-	RTNLGRP_NEIGH       = C.RTNLGRP_NEIGH
-	RTNLGRP_TC          = C.RTNLGRP_TC
-	RTNLGRP_IPV4_IFADDR = C.RTNLGRP_IPV4_IFADDR
-	RTNLGRP_IPV4_MROUTE = C.RTNLGRP_IPV4_MROUTE
-	RTNLGRP_IPV4_ROUTE  = C.RTNLGRP_IPV4_ROUTE
-	RTNLGRP_IPV4_RULE   = C.RTNLGRP_IPV4_RULE
-	RTNLGRP_IPV6_IFADDR = C.RTNLGRP_IPV6_IFADDR
-	RTNLGRP_IPV6_MROUTE = C.RTNLGRP_IPV6_MROUTE
-	RTNLGRP_IPV6_ROUTE  = C.RTNLGRP_IPV6_ROUTE
-	RTNLGRP_IPV6_IFINFO = C.RTNLGRP_IPV6_IFINFO
-	RTNLGRP_IPV6_PREFIX = C.RTNLGRP_IPV6_PREFIX
-	RTNLGRP_IPV6_RULE   = C.RTNLGRP_IPV6_RULE
-	RTNLGRP_ND_USEROPT  = C.RTNLGRP_ND_USEROPT
-	SizeofNlMsghdr      = C.sizeof_struct_nlmsghdr
-	SizeofNlMsgerr      = C.sizeof_struct_nlmsgerr
-	SizeofRtGenmsg      = C.sizeof_struct_rtgenmsg
-	SizeofNlAttr        = C.sizeof_struct_nlattr
-	SizeofRtAttr        = C.sizeof_struct_rtattr
-	SizeofIfInfomsg     = C.sizeof_struct_ifinfomsg
-	SizeofIfAddrmsg     = C.sizeof_struct_ifaddrmsg
-	SizeofRtMsg         = C.sizeof_struct_rtmsg
-	SizeofRtNexthop     = C.sizeof_struct_rtnexthop
-)
-
-type NlMsghdr C.struct_nlmsghdr
-
-type NlMsgerr C.struct_nlmsgerr
-
-type RtGenmsg C.struct_rtgenmsg
-
-type NlAttr C.struct_nlattr
-
-type RtAttr C.struct_rtattr
-
-type IfInfomsg C.struct_ifinfomsg
-
-type IfAddrmsg C.struct_ifaddrmsg
-
-type RtMsg C.struct_rtmsg
-
-type RtNexthop C.struct_rtnexthop
-
-// Linux socket filter
-
-const (
-	SizeofSockFilter = C.sizeof_struct_sock_filter
-	SizeofSockFprog  = C.sizeof_struct_sock_fprog
-)
-
-type SockFilter C.struct_sock_filter
-
-type SockFprog C.struct_sock_fprog
-
-// Inotify
-
-type InotifyEvent C.struct_inotify_event
-
-const SizeofInotifyEvent = C.sizeof_struct_inotify_event
-
-// Ptrace
-
-// Register structures
-type PtraceRegs C.PtraceRegs
-
-// Structures contained in PtraceRegs on s390x (exported by mkpost.go)
-type ptracePsw C.ptracePsw
-
-type ptraceFpregs C.ptraceFpregs
-
-type ptracePer C.ptracePer
-
-// Misc
-
-type FdSet C.fd_set
-
-type Sysinfo_t C.struct_sysinfo
-
-type Utsname C.struct_utsname
-
-type Ustat_t C.struct_ustat
-
-type EpollEvent C.struct_my_epoll_event
-
-const (
-	AT_FDCWD            = C.AT_FDCWD
-	AT_REMOVEDIR        = C.AT_REMOVEDIR
-	AT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW
-	AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
-)
-
-type PollFd C.struct_pollfd
-
-const (
-	POLLIN    = C.POLLIN
-	POLLPRI   = C.POLLPRI
-	POLLOUT   = C.POLLOUT
-	POLLRDHUP = C.POLLRDHUP
-	POLLERR   = C.POLLERR
-	POLLHUP   = C.POLLHUP
-	POLLNVAL  = C.POLLNVAL
-)
-
-type Sigset_t C.sigset_t
-
-// Terminal handling
-
-type Termios C.termios_t

+ 0 - 232
vendor/golang.org/x/sys/unix/types_netbsd.go

@@ -1,232 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-/*
-Input to cgo -godefs.  See also mkerrors.sh and mkall.sh
-*/
-
-// +godefs map struct_in_addr [4]byte /* in_addr */
-// +godefs map struct_in6_addr [16]byte /* in6_addr */
-
-package unix
-
-/*
-#define KERNEL
-#include <dirent.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <termios.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/event.h>
-#include <sys/mman.h>
-#include <sys/mount.h>
-#include <sys/ptrace.h>
-#include <sys/resource.h>
-#include <sys/select.h>
-#include <sys/signal.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/sysctl.h>
-#include <sys/time.h>
-#include <sys/uio.h>
-#include <sys/un.h>
-#include <sys/wait.h>
-#include <net/bpf.h>
-#include <net/if.h>
-#include <net/if_dl.h>
-#include <net/route.h>
-#include <netinet/in.h>
-#include <netinet/icmp6.h>
-#include <netinet/tcp.h>
-
-enum {
-	sizeofPtr = sizeof(void*),
-};
-
-union sockaddr_all {
-	struct sockaddr s1;	// this one gets used for fields
-	struct sockaddr_in s2;	// these pad it out
-	struct sockaddr_in6 s3;
-	struct sockaddr_un s4;
-	struct sockaddr_dl s5;
-};
-
-struct sockaddr_any {
-	struct sockaddr addr;
-	char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
-};
-
-*/
-import "C"
-
-// Machine characteristics; for internal use.
-
-const (
-	sizeofPtr      = C.sizeofPtr
-	sizeofShort    = C.sizeof_short
-	sizeofInt      = C.sizeof_int
-	sizeofLong     = C.sizeof_long
-	sizeofLongLong = C.sizeof_longlong
-)
-
-// Basic types
-
-type (
-	_C_short     C.short
-	_C_int       C.int
-	_C_long      C.long
-	_C_long_long C.longlong
-)
-
-// Time
-
-type Timespec C.struct_timespec
-
-type Timeval C.struct_timeval
-
-// Processes
-
-type Rusage C.struct_rusage
-
-type Rlimit C.struct_rlimit
-
-type _Gid_t C.gid_t
-
-// Files
-
-type Stat_t C.struct_stat
-
-type Statfs_t C.struct_statfs
-
-type Flock_t C.struct_flock
-
-type Dirent C.struct_dirent
-
-type Fsid C.fsid_t
-
-// Sockets
-
-type RawSockaddrInet4 C.struct_sockaddr_in
-
-type RawSockaddrInet6 C.struct_sockaddr_in6
-
-type RawSockaddrUnix C.struct_sockaddr_un
-
-type RawSockaddrDatalink C.struct_sockaddr_dl
-
-type RawSockaddr C.struct_sockaddr
-
-type RawSockaddrAny C.struct_sockaddr_any
-
-type _Socklen C.socklen_t
-
-type Linger C.struct_linger
-
-type Iovec C.struct_iovec
-
-type IPMreq C.struct_ip_mreq
-
-type IPv6Mreq C.struct_ipv6_mreq
-
-type Msghdr C.struct_msghdr
-
-type Cmsghdr C.struct_cmsghdr
-
-type Inet6Pktinfo C.struct_in6_pktinfo
-
-type IPv6MTUInfo C.struct_ip6_mtuinfo
-
-type ICMPv6Filter C.struct_icmp6_filter
-
-const (
-	SizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in
-	SizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6
-	SizeofSockaddrAny      = C.sizeof_struct_sockaddr_any
-	SizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un
-	SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
-	SizeofLinger           = C.sizeof_struct_linger
-	SizeofIPMreq           = C.sizeof_struct_ip_mreq
-	SizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq
-	SizeofMsghdr           = C.sizeof_struct_msghdr
-	SizeofCmsghdr          = C.sizeof_struct_cmsghdr
-	SizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo
-	SizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo
-	SizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter
-)
-
-// Ptrace requests
-
-const (
-	PTRACE_TRACEME = C.PT_TRACE_ME
-	PTRACE_CONT    = C.PT_CONTINUE
-	PTRACE_KILL    = C.PT_KILL
-)
-
-// Events (kqueue, kevent)
-
-type Kevent_t C.struct_kevent
-
-// Select
-
-type FdSet C.fd_set
-
-// Routing and interface messages
-
-const (
-	SizeofIfMsghdr         = C.sizeof_struct_if_msghdr
-	SizeofIfData           = C.sizeof_struct_if_data
-	SizeofIfaMsghdr        = C.sizeof_struct_ifa_msghdr
-	SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr
-	SizeofRtMsghdr         = C.sizeof_struct_rt_msghdr
-	SizeofRtMetrics        = C.sizeof_struct_rt_metrics
-)
-
-type IfMsghdr C.struct_if_msghdr
-
-type IfData C.struct_if_data
-
-type IfaMsghdr C.struct_ifa_msghdr
-
-type IfAnnounceMsghdr C.struct_if_announcemsghdr
-
-type RtMsghdr C.struct_rt_msghdr
-
-type RtMetrics C.struct_rt_metrics
-
-type Mclpool C.struct_mclpool
-
-// Berkeley packet filter
-
-const (
-	SizeofBpfVersion = C.sizeof_struct_bpf_version
-	SizeofBpfStat    = C.sizeof_struct_bpf_stat
-	SizeofBpfProgram = C.sizeof_struct_bpf_program
-	SizeofBpfInsn    = C.sizeof_struct_bpf_insn
-	SizeofBpfHdr     = C.sizeof_struct_bpf_hdr
-)
-
-type BpfVersion C.struct_bpf_version
-
-type BpfStat C.struct_bpf_stat
-
-type BpfProgram C.struct_bpf_program
-
-type BpfInsn C.struct_bpf_insn
-
-type BpfHdr C.struct_bpf_hdr
-
-type BpfTimeval C.struct_bpf_timeval
-
-// Terminal handling
-
-type Termios C.struct_termios
-
-// Sysctl
-
-type Sysctlnode C.struct_sysctlnode

+ 0 - 244
vendor/golang.org/x/sys/unix/types_openbsd.go

@@ -1,244 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-/*
-Input to cgo -godefs.  See also mkerrors.sh and mkall.sh
-*/
-
-// +godefs map struct_in_addr [4]byte /* in_addr */
-// +godefs map struct_in6_addr [16]byte /* in6_addr */
-
-package unix
-
-/*
-#define KERNEL
-#include <dirent.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <termios.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/event.h>
-#include <sys/mman.h>
-#include <sys/mount.h>
-#include <sys/ptrace.h>
-#include <sys/resource.h>
-#include <sys/select.h>
-#include <sys/signal.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <sys/uio.h>
-#include <sys/un.h>
-#include <sys/wait.h>
-#include <net/bpf.h>
-#include <net/if.h>
-#include <net/if_dl.h>
-#include <net/route.h>
-#include <netinet/in.h>
-#include <netinet/icmp6.h>
-#include <netinet/tcp.h>
-
-enum {
-	sizeofPtr = sizeof(void*),
-};
-
-union sockaddr_all {
-	struct sockaddr s1;	// this one gets used for fields
-	struct sockaddr_in s2;	// these pad it out
-	struct sockaddr_in6 s3;
-	struct sockaddr_un s4;
-	struct sockaddr_dl s5;
-};
-
-struct sockaddr_any {
-	struct sockaddr addr;
-	char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
-};
-
-*/
-import "C"
-
-// Machine characteristics; for internal use.
-
-const (
-	sizeofPtr      = C.sizeofPtr
-	sizeofShort    = C.sizeof_short
-	sizeofInt      = C.sizeof_int
-	sizeofLong     = C.sizeof_long
-	sizeofLongLong = C.sizeof_longlong
-)
-
-// Basic types
-
-type (
-	_C_short     C.short
-	_C_int       C.int
-	_C_long      C.long
-	_C_long_long C.longlong
-)
-
-// Time
-
-type Timespec C.struct_timespec
-
-type Timeval C.struct_timeval
-
-// Processes
-
-type Rusage C.struct_rusage
-
-type Rlimit C.struct_rlimit
-
-type _Gid_t C.gid_t
-
-// Files
-
-const ( // Directory mode bits
-	S_IFMT   = C.S_IFMT
-	S_IFIFO  = C.S_IFIFO
-	S_IFCHR  = C.S_IFCHR
-	S_IFDIR  = C.S_IFDIR
-	S_IFBLK  = C.S_IFBLK
-	S_IFREG  = C.S_IFREG
-	S_IFLNK  = C.S_IFLNK
-	S_IFSOCK = C.S_IFSOCK
-	S_ISUID  = C.S_ISUID
-	S_ISGID  = C.S_ISGID
-	S_ISVTX  = C.S_ISVTX
-	S_IRUSR  = C.S_IRUSR
-	S_IWUSR  = C.S_IWUSR
-	S_IXUSR  = C.S_IXUSR
-)
-
-type Stat_t C.struct_stat
-
-type Statfs_t C.struct_statfs
-
-type Flock_t C.struct_flock
-
-type Dirent C.struct_dirent
-
-type Fsid C.fsid_t
-
-// Sockets
-
-type RawSockaddrInet4 C.struct_sockaddr_in
-
-type RawSockaddrInet6 C.struct_sockaddr_in6
-
-type RawSockaddrUnix C.struct_sockaddr_un
-
-type RawSockaddrDatalink C.struct_sockaddr_dl
-
-type RawSockaddr C.struct_sockaddr
-
-type RawSockaddrAny C.struct_sockaddr_any
-
-type _Socklen C.socklen_t
-
-type Linger C.struct_linger
-
-type Iovec C.struct_iovec
-
-type IPMreq C.struct_ip_mreq
-
-type IPv6Mreq C.struct_ipv6_mreq
-
-type Msghdr C.struct_msghdr
-
-type Cmsghdr C.struct_cmsghdr
-
-type Inet6Pktinfo C.struct_in6_pktinfo
-
-type IPv6MTUInfo C.struct_ip6_mtuinfo
-
-type ICMPv6Filter C.struct_icmp6_filter
-
-const (
-	SizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in
-	SizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6
-	SizeofSockaddrAny      = C.sizeof_struct_sockaddr_any
-	SizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un
-	SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
-	SizeofLinger           = C.sizeof_struct_linger
-	SizeofIPMreq           = C.sizeof_struct_ip_mreq
-	SizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq
-	SizeofMsghdr           = C.sizeof_struct_msghdr
-	SizeofCmsghdr          = C.sizeof_struct_cmsghdr
-	SizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo
-	SizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo
-	SizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter
-)
-
-// Ptrace requests
-
-const (
-	PTRACE_TRACEME = C.PT_TRACE_ME
-	PTRACE_CONT    = C.PT_CONTINUE
-	PTRACE_KILL    = C.PT_KILL
-)
-
-// Events (kqueue, kevent)
-
-type Kevent_t C.struct_kevent
-
-// Select
-
-type FdSet C.fd_set
-
-// Routing and interface messages
-
-const (
-	SizeofIfMsghdr         = C.sizeof_struct_if_msghdr
-	SizeofIfData           = C.sizeof_struct_if_data
-	SizeofIfaMsghdr        = C.sizeof_struct_ifa_msghdr
-	SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr
-	SizeofRtMsghdr         = C.sizeof_struct_rt_msghdr
-	SizeofRtMetrics        = C.sizeof_struct_rt_metrics
-)
-
-type IfMsghdr C.struct_if_msghdr
-
-type IfData C.struct_if_data
-
-type IfaMsghdr C.struct_ifa_msghdr
-
-type IfAnnounceMsghdr C.struct_if_announcemsghdr
-
-type RtMsghdr C.struct_rt_msghdr
-
-type RtMetrics C.struct_rt_metrics
-
-type Mclpool C.struct_mclpool
-
-// Berkeley packet filter
-
-const (
-	SizeofBpfVersion = C.sizeof_struct_bpf_version
-	SizeofBpfStat    = C.sizeof_struct_bpf_stat
-	SizeofBpfProgram = C.sizeof_struct_bpf_program
-	SizeofBpfInsn    = C.sizeof_struct_bpf_insn
-	SizeofBpfHdr     = C.sizeof_struct_bpf_hdr
-)
-
-type BpfVersion C.struct_bpf_version
-
-type BpfStat C.struct_bpf_stat
-
-type BpfProgram C.struct_bpf_program
-
-type BpfInsn C.struct_bpf_insn
-
-type BpfHdr C.struct_bpf_hdr
-
-type BpfTimeval C.struct_bpf_timeval
-
-// Terminal handling
-
-type Termios C.struct_termios

+ 0 - 262
vendor/golang.org/x/sys/unix/types_solaris.go

@@ -1,262 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-/*
-Input to cgo -godefs.  See also mkerrors.sh and mkall.sh
-*/
-
-// +godefs map struct_in_addr [4]byte /* in_addr */
-// +godefs map struct_in6_addr [16]byte /* in6_addr */
-
-package unix
-
-/*
-#define KERNEL
-// These defines ensure that builds done on newer versions of Solaris are
-// backwards-compatible with older versions of Solaris and
-// OpenSolaris-based derivatives.
-#define __USE_SUNOS_SOCKETS__          // msghdr
-#define __USE_LEGACY_PROTOTYPES__      // iovec
-#include <dirent.h>
-#include <fcntl.h>
-#include <netdb.h>
-#include <limits.h>
-#include <signal.h>
-#include <termios.h>
-#include <termio.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <sys/mman.h>
-#include <sys/mount.h>
-#include <sys/param.h>
-#include <sys/resource.h>
-#include <sys/select.h>
-#include <sys/signal.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <sys/times.h>
-#include <sys/types.h>
-#include <sys/utsname.h>
-#include <sys/un.h>
-#include <sys/wait.h>
-#include <net/bpf.h>
-#include <net/if.h>
-#include <net/if_dl.h>
-#include <net/route.h>
-#include <netinet/in.h>
-#include <netinet/icmp6.h>
-#include <netinet/tcp.h>
-#include <ustat.h>
-#include <utime.h>
-
-enum {
-	sizeofPtr = sizeof(void*),
-};
-
-union sockaddr_all {
-	struct sockaddr s1;	// this one gets used for fields
-	struct sockaddr_in s2;	// these pad it out
-	struct sockaddr_in6 s3;
-	struct sockaddr_un s4;
-	struct sockaddr_dl s5;
-};
-
-struct sockaddr_any {
-	struct sockaddr addr;
-	char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
-};
-
-*/
-import "C"
-
-// Machine characteristics; for internal use.
-
-const (
-	sizeofPtr      = C.sizeofPtr
-	sizeofShort    = C.sizeof_short
-	sizeofInt      = C.sizeof_int
-	sizeofLong     = C.sizeof_long
-	sizeofLongLong = C.sizeof_longlong
-	PathMax        = C.PATH_MAX
-	MaxHostNameLen = C.MAXHOSTNAMELEN
-)
-
-// Basic types
-
-type (
-	_C_short     C.short
-	_C_int       C.int
-	_C_long      C.long
-	_C_long_long C.longlong
-)
-
-// Time
-
-type Timespec C.struct_timespec
-
-type Timeval C.struct_timeval
-
-type Timeval32 C.struct_timeval32
-
-type Tms C.struct_tms
-
-type Utimbuf C.struct_utimbuf
-
-// Processes
-
-type Rusage C.struct_rusage
-
-type Rlimit C.struct_rlimit
-
-type _Gid_t C.gid_t
-
-// Files
-
-const ( // Directory mode bits
-	S_IFMT   = C.S_IFMT
-	S_IFIFO  = C.S_IFIFO
-	S_IFCHR  = C.S_IFCHR
-	S_IFDIR  = C.S_IFDIR
-	S_IFBLK  = C.S_IFBLK
-	S_IFREG  = C.S_IFREG
-	S_IFLNK  = C.S_IFLNK
-	S_IFSOCK = C.S_IFSOCK
-	S_ISUID  = C.S_ISUID
-	S_ISGID  = C.S_ISGID
-	S_ISVTX  = C.S_ISVTX
-	S_IRUSR  = C.S_IRUSR
-	S_IWUSR  = C.S_IWUSR
-	S_IXUSR  = C.S_IXUSR
-)
-
-type Stat_t C.struct_stat
-
-type Flock_t C.struct_flock
-
-type Dirent C.struct_dirent
-
-// Sockets
-
-type RawSockaddrInet4 C.struct_sockaddr_in
-
-type RawSockaddrInet6 C.struct_sockaddr_in6
-
-type RawSockaddrUnix C.struct_sockaddr_un
-
-type RawSockaddrDatalink C.struct_sockaddr_dl
-
-type RawSockaddr C.struct_sockaddr
-
-type RawSockaddrAny C.struct_sockaddr_any
-
-type _Socklen C.socklen_t
-
-type Linger C.struct_linger
-
-type Iovec C.struct_iovec
-
-type IPMreq C.struct_ip_mreq
-
-type IPv6Mreq C.struct_ipv6_mreq
-
-type Msghdr C.struct_msghdr
-
-type Cmsghdr C.struct_cmsghdr
-
-type Inet6Pktinfo C.struct_in6_pktinfo
-
-type IPv6MTUInfo C.struct_ip6_mtuinfo
-
-type ICMPv6Filter C.struct_icmp6_filter
-
-const (
-	SizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in
-	SizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6
-	SizeofSockaddrAny      = C.sizeof_struct_sockaddr_any
-	SizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un
-	SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
-	SizeofLinger           = C.sizeof_struct_linger
-	SizeofIPMreq           = C.sizeof_struct_ip_mreq
-	SizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq
-	SizeofMsghdr           = C.sizeof_struct_msghdr
-	SizeofCmsghdr          = C.sizeof_struct_cmsghdr
-	SizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo
-	SizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo
-	SizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter
-)
-
-// Select
-
-type FdSet C.fd_set
-
-// Misc
-
-type Utsname C.struct_utsname
-
-type Ustat_t C.struct_ustat
-
-const (
-	AT_FDCWD            = C.AT_FDCWD
-	AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
-	AT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW
-	AT_REMOVEDIR        = C.AT_REMOVEDIR
-	AT_EACCESS          = C.AT_EACCESS
-)
-
-// Routing and interface messages
-
-const (
-	SizeofIfMsghdr  = C.sizeof_struct_if_msghdr
-	SizeofIfData    = C.sizeof_struct_if_data
-	SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr
-	SizeofRtMsghdr  = C.sizeof_struct_rt_msghdr
-	SizeofRtMetrics = C.sizeof_struct_rt_metrics
-)
-
-type IfMsghdr C.struct_if_msghdr
-
-type IfData C.struct_if_data
-
-type IfaMsghdr C.struct_ifa_msghdr
-
-type RtMsghdr C.struct_rt_msghdr
-
-type RtMetrics C.struct_rt_metrics
-
-// Berkeley packet filter
-
-const (
-	SizeofBpfVersion = C.sizeof_struct_bpf_version
-	SizeofBpfStat    = C.sizeof_struct_bpf_stat
-	SizeofBpfProgram = C.sizeof_struct_bpf_program
-	SizeofBpfInsn    = C.sizeof_struct_bpf_insn
-	SizeofBpfHdr     = C.sizeof_struct_bpf_hdr
-)
-
-type BpfVersion C.struct_bpf_version
-
-type BpfStat C.struct_bpf_stat
-
-type BpfProgram C.struct_bpf_program
-
-type BpfInsn C.struct_bpf_insn
-
-type BpfTimeval C.struct_bpf_timeval
-
-type BpfHdr C.struct_bpf_hdr
-
-// sysconf information
-
-const _SC_PAGESIZE = C._SC_PAGESIZE
-
-// Terminal handling
-
-type Termios C.struct_termios
-
-type Termio C.struct_termio
-
-type Winsize C.struct_winsize

+ 0 - 351
vendor/golang.org/x/text/internal/gen/code.go

@@ -1,351 +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 gen
-
-import (
-	"bytes"
-	"encoding/gob"
-	"fmt"
-	"hash"
-	"hash/fnv"
-	"io"
-	"log"
-	"os"
-	"reflect"
-	"strings"
-	"unicode"
-	"unicode/utf8"
-)
-
-// This file contains utilities for generating code.
-
-// TODO: other write methods like:
-// - slices, maps, types, etc.
-
-// CodeWriter is a utility for writing structured code. It computes the content
-// hash and size of written content. It ensures there are newlines between
-// written code blocks.
-type CodeWriter struct {
-	buf  bytes.Buffer
-	Size int
-	Hash hash.Hash32 // content hash
-	gob  *gob.Encoder
-	// For comments we skip the usual one-line separator if they are followed by
-	// a code block.
-	skipSep bool
-}
-
-func (w *CodeWriter) Write(p []byte) (n int, err error) {
-	return w.buf.Write(p)
-}
-
-// NewCodeWriter returns a new CodeWriter.
-func NewCodeWriter() *CodeWriter {
-	h := fnv.New32()
-	return &CodeWriter{Hash: h, gob: gob.NewEncoder(h)}
-}
-
-// WriteGoFile appends the buffer with the total size of all created structures
-// and writes it as a Go file to the the given file with the given package name.
-func (w *CodeWriter) WriteGoFile(filename, pkg string) {
-	f, err := os.Create(filename)
-	if err != nil {
-		log.Fatalf("Could not create file %s: %v", filename, err)
-	}
-	defer f.Close()
-	if _, err = w.WriteGo(f, pkg); err != nil {
-		log.Fatalf("Error writing file %s: %v", filename, err)
-	}
-}
-
-// WriteGo appends the buffer with the total size of all created structures and
-// writes it as a Go file to the the given writer with the given package name.
-func (w *CodeWriter) WriteGo(out io.Writer, pkg string) (n int, err error) {
-	sz := w.Size
-	w.WriteComment("Total table size %d bytes (%dKiB); checksum: %X\n", sz, sz/1024, w.Hash.Sum32())
-	defer w.buf.Reset()
-	return WriteGo(out, pkg, w.buf.Bytes())
-}
-
-func (w *CodeWriter) printf(f string, x ...interface{}) {
-	fmt.Fprintf(w, f, x...)
-}
-
-func (w *CodeWriter) insertSep() {
-	if w.skipSep {
-		w.skipSep = false
-		return
-	}
-	// Use at least two newlines to ensure a blank space between the previous
-	// block. WriteGoFile will remove extraneous newlines.
-	w.printf("\n\n")
-}
-
-// WriteComment writes a comment block. All line starts are prefixed with "//".
-// Initial empty lines are gobbled. The indentation for the first line is
-// stripped from consecutive lines.
-func (w *CodeWriter) WriteComment(comment string, args ...interface{}) {
-	s := fmt.Sprintf(comment, args...)
-	s = strings.Trim(s, "\n")
-
-	// Use at least two newlines to ensure a blank space between the previous
-	// block. WriteGoFile will remove extraneous newlines.
-	w.printf("\n\n// ")
-	w.skipSep = true
-
-	// strip first indent level.
-	sep := "\n"
-	for ; len(s) > 0 && (s[0] == '\t' || s[0] == ' '); s = s[1:] {
-		sep += s[:1]
-	}
-
-	strings.NewReplacer(sep, "\n// ", "\n", "\n// ").WriteString(w, s)
-
-	w.printf("\n")
-}
-
-func (w *CodeWriter) writeSizeInfo(size int) {
-	w.printf("// Size: %d bytes\n", size)
-}
-
-// WriteConst writes a constant of the given name and value.
-func (w *CodeWriter) WriteConst(name string, x interface{}) {
-	w.insertSep()
-	v := reflect.ValueOf(x)
-
-	switch v.Type().Kind() {
-	case reflect.String:
-		w.printf("const %s %s = ", name, typeName(x))
-		w.WriteString(v.String())
-		w.printf("\n")
-	default:
-		w.printf("const %s = %#v\n", name, x)
-	}
-}
-
-// WriteVar writes a variable of the given name and value.
-func (w *CodeWriter) WriteVar(name string, x interface{}) {
-	w.insertSep()
-	v := reflect.ValueOf(x)
-	oldSize := w.Size
-	sz := int(v.Type().Size())
-	w.Size += sz
-
-	switch v.Type().Kind() {
-	case reflect.String:
-		w.printf("var %s %s = ", name, typeName(x))
-		w.WriteString(v.String())
-	case reflect.Struct:
-		w.gob.Encode(x)
-		fallthrough
-	case reflect.Slice, reflect.Array:
-		w.printf("var %s = ", name)
-		w.writeValue(v)
-		w.writeSizeInfo(w.Size - oldSize)
-	default:
-		w.printf("var %s %s = ", name, typeName(x))
-		w.gob.Encode(x)
-		w.writeValue(v)
-		w.writeSizeInfo(w.Size - oldSize)
-	}
-	w.printf("\n")
-}
-
-func (w *CodeWriter) writeValue(v reflect.Value) {
-	x := v.Interface()
-	switch v.Kind() {
-	case reflect.String:
-		w.WriteString(v.String())
-	case reflect.Array:
-		// Don't double count: callers of WriteArray count on the size being
-		// added, so we need to discount it here.
-		w.Size -= int(v.Type().Size())
-		w.writeSlice(x, true)
-	case reflect.Slice:
-		w.writeSlice(x, false)
-	case reflect.Struct:
-		w.printf("%s{\n", typeName(v.Interface()))
-		t := v.Type()
-		for i := 0; i < v.NumField(); i++ {
-			w.printf("%s: ", t.Field(i).Name)
-			w.writeValue(v.Field(i))
-			w.printf(",\n")
-		}
-		w.printf("}")
-	default:
-		w.printf("%#v", x)
-	}
-}
-
-// WriteString writes a string literal.
-func (w *CodeWriter) WriteString(s string) {
-	s = strings.Replace(s, `\`, `\\`, -1)
-	io.WriteString(w.Hash, s) // content hash
-	w.Size += len(s)
-
-	const maxInline = 40
-	if len(s) <= maxInline {
-		w.printf("%q", s)
-		return
-	}
-
-	// We will render the string as a multi-line string.
-	const maxWidth = 80 - 4 - len(`"`) - len(`" +`)
-
-	// When starting on its own line, go fmt indents line 2+ an extra level.
-	n, max := maxWidth, maxWidth-4
-
-	// As per https://golang.org/issue/18078, the compiler has trouble
-	// compiling the concatenation of many strings, s0 + s1 + s2 + ... + sN,
-	// for large N. We insert redundant, explicit parentheses to work around
-	// that, lowering the N at any given step: (s0 + s1 + ... + s63) + (s64 +
-	// ... + s127) + etc + (etc + ... + sN).
-	explicitParens, extraComment := len(s) > 128*1024, ""
-	if explicitParens {
-		w.printf(`(`)
-		extraComment = "; the redundant, explicit parens are for https://golang.org/issue/18078"
-	}
-
-	// Print "" +\n, if a string does not start on its own line.
-	b := w.buf.Bytes()
-	if p := len(bytes.TrimRight(b, " \t")); p > 0 && b[p-1] != '\n' {
-		w.printf("\"\" + // Size: %d bytes%s\n", len(s), extraComment)
-		n, max = maxWidth, maxWidth
-	}
-
-	w.printf(`"`)
-
-	for sz, p, nLines := 0, 0, 0; p < len(s); {
-		var r rune
-		r, sz = utf8.DecodeRuneInString(s[p:])
-		out := s[p : p+sz]
-		chars := 1
-		if !unicode.IsPrint(r) || r == utf8.RuneError || r == '"' {
-			switch sz {
-			case 1:
-				out = fmt.Sprintf("\\x%02x", s[p])
-			case 2, 3:
-				out = fmt.Sprintf("\\u%04x", r)
-			case 4:
-				out = fmt.Sprintf("\\U%08x", r)
-			}
-			chars = len(out)
-		}
-		if n -= chars; n < 0 {
-			nLines++
-			if explicitParens && nLines&63 == 63 {
-				w.printf("\") + (\"")
-			}
-			w.printf("\" +\n\"")
-			n = max - len(out)
-		}
-		w.printf("%s", out)
-		p += sz
-	}
-	w.printf(`"`)
-	if explicitParens {
-		w.printf(`)`)
-	}
-}
-
-// WriteSlice writes a slice value.
-func (w *CodeWriter) WriteSlice(x interface{}) {
-	w.writeSlice(x, false)
-}
-
-// WriteArray writes an array value.
-func (w *CodeWriter) WriteArray(x interface{}) {
-	w.writeSlice(x, true)
-}
-
-func (w *CodeWriter) writeSlice(x interface{}, isArray bool) {
-	v := reflect.ValueOf(x)
-	w.gob.Encode(v.Len())
-	w.Size += v.Len() * int(v.Type().Elem().Size())
-	name := typeName(x)
-	if isArray {
-		name = fmt.Sprintf("[%d]%s", v.Len(), name[strings.Index(name, "]")+1:])
-	}
-	if isArray {
-		w.printf("%s{\n", name)
-	} else {
-		w.printf("%s{ // %d elements\n", name, v.Len())
-	}
-
-	switch kind := v.Type().Elem().Kind(); kind {
-	case reflect.String:
-		for _, s := range x.([]string) {
-			w.WriteString(s)
-			w.printf(",\n")
-		}
-	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
-		reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
-		// nLine and nBlock are the number of elements per line and block.
-		nLine, nBlock, format := 8, 64, "%d,"
-		switch kind {
-		case reflect.Uint8:
-			format = "%#02x,"
-		case reflect.Uint16:
-			format = "%#04x,"
-		case reflect.Uint32:
-			nLine, nBlock, format = 4, 32, "%#08x,"
-		case reflect.Uint, reflect.Uint64:
-			nLine, nBlock, format = 4, 32, "%#016x,"
-		case reflect.Int8:
-			nLine = 16
-		}
-		n := nLine
-		for i := 0; i < v.Len(); i++ {
-			if i%nBlock == 0 && v.Len() > nBlock {
-				w.printf("// Entry %X - %X\n", i, i+nBlock-1)
-			}
-			x := v.Index(i).Interface()
-			w.gob.Encode(x)
-			w.printf(format, x)
-			if n--; n == 0 {
-				n = nLine
-				w.printf("\n")
-			}
-		}
-		w.printf("\n")
-	case reflect.Struct:
-		zero := reflect.Zero(v.Type().Elem()).Interface()
-		for i := 0; i < v.Len(); i++ {
-			x := v.Index(i).Interface()
-			w.gob.EncodeValue(v)
-			if !reflect.DeepEqual(zero, x) {
-				line := fmt.Sprintf("%#v,\n", x)
-				line = line[strings.IndexByte(line, '{'):]
-				w.printf("%d: ", i)
-				w.printf(line)
-			}
-		}
-	case reflect.Array:
-		for i := 0; i < v.Len(); i++ {
-			w.printf("%d: %#v,\n", i, v.Index(i).Interface())
-		}
-	default:
-		panic("gen: slice elem type not supported")
-	}
-	w.printf("}")
-}
-
-// WriteType writes a definition of the type of the given value and returns the
-// type name.
-func (w *CodeWriter) WriteType(x interface{}) string {
-	t := reflect.TypeOf(x)
-	w.printf("type %s struct {\n", t.Name())
-	for i := 0; i < t.NumField(); i++ {
-		w.printf("\t%s %s\n", t.Field(i).Name, t.Field(i).Type)
-	}
-	w.printf("}\n")
-	return t.Name()
-}
-
-// typeName returns the name of the go type of x.
-func typeName(x interface{}) string {
-	t := reflect.ValueOf(x).Type()
-	return strings.Replace(fmt.Sprint(t), "main.", "", 1)
-}

+ 0 - 281
vendor/golang.org/x/text/internal/gen/gen.go

@@ -1,281 +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 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 "golang.org/x/text/internal/gen"
-
-import (
-	"bytes"
-	"flag"
-	"fmt"
-	"go/build"
-	"go/format"
-	"io"
-	"io/ioutil"
-	"log"
-	"net/http"
-	"os"
-	"path"
-	"path/filepath"
-	"sync"
-	"unicode"
-
-	"golang.org/x/text/unicode/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")
-)
-
-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 data files are available locally.
-func IsLocal() bool {
-	dir, err := localReadmeFile()
-	if err != nil {
-		return false
-	}
-	if _, err = os.Stat(dir); err != nil {
-		return false
-	}
-	return true
-}
-
-// 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)
-}
-
-var (
-	dirMutex sync.Mutex
-	localDir string
-)
-
-const permissions = 0755
-
-func localReadmeFile() (string, error) {
-	p, err := build.Import("golang.org/x/text", "", build.FindOnly)
-	if err != nil {
-		return "", fmt.Errorf("Could not locate package: %v", err)
-	}
-	return filepath.Join(p.Dir, "DATA", "README"), nil
-}
-
-func getLocalDir() string {
-	dirMutex.Lock()
-	defer dirMutex.Unlock()
-
-	readme, err := localReadmeFile()
-	if err != nil {
-		log.Fatal(err)
-	}
-	dir := filepath.Dir(readme)
-	if _, err := os.Stat(readme); err != nil {
-		if err := os.MkdirAll(dir, permissions); err != nil {
-			log.Fatalf("Could not create directory: %v", err)
-		}
-		ioutil.WriteFile(readme, []byte(readmeTxt), permissions)
-	}
-	return dir
-}
-
-const readmeTxt = `Generated by golang.org/x/text/internal/gen. DO NOT EDIT.
-
-This directory contains downloaded files used to generate the various tables
-in the golang.org/x/text subrepo.
-
-Note that the language subtag repo (iana/assignments/language-subtag-registry)
-and all other times in the iana subdirectory are not versioned and will need
-to be periodically manually updated. The easiest way to do this is to remove
-the entire iana directory. This is mostly of concern when updating the language
-package.
-`
-
-// 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 {
-	file := filepath.Join(getLocalDir(), subdir, filepath.FromSlash(path))
-	return open(file, urlRoot, path)
-}
-
-func openUnicode(path string) io.ReadCloser {
-	file := filepath.Join(getLocalDir(), filepath.FromSlash(path))
-	return open(file, *url, path)
-}
-
-// TODO: automatically periodically update non-versioned files.
-
-func open(file, urlRoot, path string) io.ReadCloser {
-	if f, err := os.Open(file); err == nil {
-		return f
-	}
-	r := get(urlRoot, path)
-	defer r.Close()
-	b, err := ioutil.ReadAll(r)
-	if err != nil {
-		log.Fatalf("Could not download file: %v", err)
-	}
-	os.MkdirAll(filepath.Dir(file), permissions)
-	if err := ioutil.WriteFile(file, b, permissions); err != nil {
-		log.Fatalf("Could not create file: %v", err)
-	}
-	return ioutil.NopCloser(bytes.NewReader(b))
-}
-
-func get(root, path string) io.ReadCloser {
-	url := root + "/" + path
-	fmt.Printf("Fetching %s...", url)
-	defer fmt.Println(" done.")
-	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())
-}
-
-// WriteGoFile 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()
-	if _, err = WriteGo(w, pkg, b); err != nil {
-		log.Fatalf("Error writing file %s: %v", filename, err)
-	}
-}
-
-// WriteGo prepends a standard file comment and package statement to the given
-// bytes, applies gofmt, and writes them to w.
-func WriteGo(w io.Writer, pkg string, b []byte) (n int, err error) {
-	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.
-		n, _ = w.Write(src)
-		return n, err
-	}
-	return w.Write(formatted)
-}
-
-// Repackage rewrites a Go file from belonging to package main to belonging to
-// the given package.
-func Repackage(inFile, outFile, pkg 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 %s.", toDelete, inFile)
-	}
-	w := &bytes.Buffer{}
-	w.Write(src[i+len(toDelete):])
-	WriteGoFile(outFile, pkg, w.Bytes())
-}

+ 0 - 58
vendor/golang.org/x/text/internal/triegen/compact.go

@@ -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 triegen
-
-// This file defines Compacter and its implementations.
-
-import "io"
-
-// A Compacter generates an alternative, more space-efficient way to store a
-// trie value block. A trie value block holds all possible values for the last
-// byte of a UTF-8 encoded rune. Excluding ASCII characters, a trie value block
-// always has 64 values, as a UTF-8 encoding ends with a byte in [0x80, 0xC0).
-type Compacter interface {
-	// Size returns whether the Compacter could encode the given block as well
-	// as its size in case it can. len(v) is always 64.
-	Size(v []uint64) (sz int, ok bool)
-
-	// Store stores the block using the Compacter's compression method.
-	// It returns a handle with which the block can be retrieved.
-	// len(v) is always 64.
-	Store(v []uint64) uint32
-
-	// Print writes the data structures associated to the given store to w.
-	Print(w io.Writer) error
-
-	// Handler returns the name of a function that gets called during trie
-	// lookup for blocks generated by the Compacter. The function should be of
-	// the form func (n uint32, b byte) uint64, where n is the index returned by
-	// the Compacter's Store method and b is the last byte of the UTF-8
-	// encoding, where 0x80 <= b < 0xC0, for which to do the lookup in the
-	// block.
-	Handler() string
-}
-
-// simpleCompacter is the default Compacter used by builder. It implements a
-// normal trie block.
-type simpleCompacter builder
-
-func (b *simpleCompacter) Size([]uint64) (sz int, ok bool) {
-	return blockSize * b.ValueSize, true
-}
-
-func (b *simpleCompacter) Store(v []uint64) uint32 {
-	h := uint32(len(b.ValueBlocks) - blockOffset)
-	b.ValueBlocks = append(b.ValueBlocks, v)
-	return h
-}
-
-func (b *simpleCompacter) Print(io.Writer) error {
-	// Structures are printed in print.go.
-	return nil
-}
-
-func (b *simpleCompacter) Handler() string {
-	panic("Handler should be special-cased for this Compacter")
-}

+ 0 - 251
vendor/golang.org/x/text/internal/triegen/print.go

@@ -1,251 +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 triegen
-
-import (
-	"bytes"
-	"fmt"
-	"io"
-	"strings"
-	"text/template"
-)
-
-// print writes all the data structures as well as the code necessary to use the
-// trie to w.
-func (b *builder) print(w io.Writer) error {
-	b.Stats.NValueEntries = len(b.ValueBlocks) * blockSize
-	b.Stats.NValueBytes = len(b.ValueBlocks) * blockSize * b.ValueSize
-	b.Stats.NIndexEntries = len(b.IndexBlocks) * blockSize
-	b.Stats.NIndexBytes = len(b.IndexBlocks) * blockSize * b.IndexSize
-	b.Stats.NHandleBytes = len(b.Trie) * 2 * b.IndexSize
-
-	// If we only have one root trie, all starter blocks are at position 0 and
-	// we can access the arrays directly.
-	if len(b.Trie) == 1 {
-		// At this point we cannot refer to the generated tables directly.
-		b.ASCIIBlock = b.Name + "Values"
-		b.StarterBlock = b.Name + "Index"
-	} else {
-		// Otherwise we need to have explicit starter indexes in the trie
-		// structure.
-		b.ASCIIBlock = "t.ascii"
-		b.StarterBlock = "t.utf8Start"
-	}
-
-	b.SourceType = "[]byte"
-	if err := lookupGen.Execute(w, b); err != nil {
-		return err
-	}
-
-	b.SourceType = "string"
-	if err := lookupGen.Execute(w, b); err != nil {
-		return err
-	}
-
-	if err := trieGen.Execute(w, b); err != nil {
-		return err
-	}
-
-	for _, c := range b.Compactions {
-		if err := c.c.Print(w); err != nil {
-			return err
-		}
-	}
-
-	return nil
-}
-
-func printValues(n int, values []uint64) string {
-	w := &bytes.Buffer{}
-	boff := n * blockSize
-	fmt.Fprintf(w, "\t// Block %#x, offset %#x", n, boff)
-	var newline bool
-	for i, v := range values {
-		if i%6 == 0 {
-			newline = true
-		}
-		if v != 0 {
-			if newline {
-				fmt.Fprintf(w, "\n")
-				newline = false
-			}
-			fmt.Fprintf(w, "\t%#02x:%#04x, ", boff+i, v)
-		}
-	}
-	return w.String()
-}
-
-func printIndex(b *builder, nr int, n *node) string {
-	w := &bytes.Buffer{}
-	boff := nr * blockSize
-	fmt.Fprintf(w, "\t// Block %#x, offset %#x", nr, boff)
-	var newline bool
-	for i, c := range n.children {
-		if i%8 == 0 {
-			newline = true
-		}
-		if c != nil {
-			v := b.Compactions[c.index.compaction].Offset + uint32(c.index.index)
-			if v != 0 {
-				if newline {
-					fmt.Fprintf(w, "\n")
-					newline = false
-				}
-				fmt.Fprintf(w, "\t%#02x:%#02x, ", boff+i, v)
-			}
-		}
-	}
-	return w.String()
-}
-
-var (
-	trieGen = template.Must(template.New("trie").Funcs(template.FuncMap{
-		"printValues": printValues,
-		"printIndex":  printIndex,
-		"title":       strings.Title,
-		"dec":         func(x int) int { return x - 1 },
-		"psize": func(n int) string {
-			return fmt.Sprintf("%d bytes (%.2f KiB)", n, float64(n)/1024)
-		},
-	}).Parse(trieTemplate))
-	lookupGen = template.Must(template.New("lookup").Parse(lookupTemplate))
-)
-
-// TODO: consider the return type of lookup. It could be uint64, even if the
-// internal value type is smaller. We will have to verify this with the
-// performance of unicode/norm, which is very sensitive to such changes.
-const trieTemplate = `{{$b := .}}{{$multi := gt (len .Trie) 1}}
-// {{.Name}}Trie. Total size: {{psize .Size}}. Checksum: {{printf "%08x" .Checksum}}.
-type {{.Name}}Trie struct { {{if $multi}}
-	ascii []{{.ValueType}} // index for ASCII bytes
-	utf8Start  []{{.IndexType}} // index for UTF-8 bytes >= 0xC0
-{{end}}}
-
-func new{{title .Name}}Trie(i int) *{{.Name}}Trie { {{if $multi}}
-	h := {{.Name}}TrieHandles[i]
-	return &{{.Name}}Trie{ {{.Name}}Values[uint32(h.ascii)<<6:], {{.Name}}Index[uint32(h.multi)<<6:] }
-}
-
-type {{.Name}}TrieHandle struct {
-	ascii, multi {{.IndexType}}
-}
-
-// {{.Name}}TrieHandles: {{len .Trie}} handles, {{.Stats.NHandleBytes}} bytes
-var {{.Name}}TrieHandles = [{{len .Trie}}]{{.Name}}TrieHandle{
-{{range .Trie}}	{ {{.ASCIIIndex}}, {{.StarterIndex}} }, // {{printf "%08x" .Checksum}}: {{.Name}}
-{{end}}}{{else}}
-	return &{{.Name}}Trie{}
-}
-{{end}}
-// lookupValue determines the type of block n and looks up the value for b.
-func (t *{{.Name}}Trie) lookupValue(n uint32, b byte) {{.ValueType}}{{$last := dec (len .Compactions)}} {
-	switch { {{range $i, $c := .Compactions}}
-		{{if eq $i $last}}default{{else}}case n < {{$c.Cutoff}}{{end}}:{{if ne $i 0}}
-			n -= {{$c.Offset}}{{end}}
-			return {{print $b.ValueType}}({{$c.Handler}}){{end}}
-	}
-}
-
-// {{.Name}}Values: {{len .ValueBlocks}} blocks, {{.Stats.NValueEntries}} entries, {{.Stats.NValueBytes}} bytes
-// The third block is the zero block.
-var {{.Name}}Values = [{{.Stats.NValueEntries}}]{{.ValueType}} {
-{{range $i, $v := .ValueBlocks}}{{printValues $i $v}}
-{{end}}}
-
-// {{.Name}}Index: {{len .IndexBlocks}} blocks, {{.Stats.NIndexEntries}} entries, {{.Stats.NIndexBytes}} bytes
-// Block 0 is the zero block.
-var {{.Name}}Index = [{{.Stats.NIndexEntries}}]{{.IndexType}} {
-{{range $i, $v := .IndexBlocks}}{{printIndex $b $i $v}}
-{{end}}}
-`
-
-// TODO: consider allowing zero-length strings after evaluating performance with
-// unicode/norm.
-const lookupTemplate = `
-// lookup{{if eq .SourceType "string"}}String{{end}} 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 *{{.Name}}Trie) lookup{{if eq .SourceType "string"}}String{{end}}(s {{.SourceType}}) (v {{.ValueType}}, sz int) {
-	c0 := s[0]
-	switch {
-	case c0 < 0x80: // is ASCII
-		return {{.ASCIIBlock}}[c0], 1
-	case c0 < 0xC2:
-		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 := {{.StarterBlock}}[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 := {{.StarterBlock}}[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 = {{.Name}}Index[o]
-		c2 := s[2]
-		if c2 < 0x80 || 0xC0 <= c2 {
-			return 0, 2 // 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 := {{.StarterBlock}}[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 = {{.Name}}Index[o]
-		c2 := s[2]
-		if c2 < 0x80 || 0xC0 <= c2 {
-			return 0, 2 // Illegal UTF-8: not a continuation byte.
-		}
-		o = uint32(i)<<6 + uint32(c2)
-		i = {{.Name}}Index[o]
-		c3 := s[3]
-		if c3 < 0x80 || 0xC0 <= c3 {
-			return 0, 3 // Illegal UTF-8: not a continuation byte.
-		}
-		return t.lookupValue(uint32(i), c3), 4
-	}
-	// Illegal rune
-	return 0, 1
-}
-
-// lookup{{if eq .SourceType "string"}}String{{end}}Unsafe 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 *{{.Name}}Trie) lookup{{if eq .SourceType "string"}}String{{end}}Unsafe(s {{.SourceType}}) {{.ValueType}} {
-	c0 := s[0]
-	if c0 < 0x80 { // is ASCII
-		return {{.ASCIIBlock}}[c0]
-	}
-	i := {{.StarterBlock}}[c0]
-	if c0 < 0xE0 { // 2-byte UTF-8
-		return t.lookupValue(uint32(i), s[1])
-	}
-	i = {{.Name}}Index[uint32(i)<<6+uint32(s[1])]
-	if c0 < 0xF0 { // 3-byte UTF-8
-		return t.lookupValue(uint32(i), s[2])
-	}
-	i = {{.Name}}Index[uint32(i)<<6+uint32(s[2])]
-	if c0 < 0xF8 { // 4-byte UTF-8
-		return t.lookupValue(uint32(i), s[3])
-	}
-	return 0
-}
-`

+ 0 - 494
vendor/golang.org/x/text/internal/triegen/triegen.go

@@ -1,494 +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 triegen implements a code generator for a trie for associating
-// unsigned integer values with UTF-8 encoded runes.
-//
-// Many of the go.text packages use tries for storing per-rune information.  A
-// trie is especially useful if many of the runes have the same value. If this
-// is the case, many blocks can be expected to be shared allowing for
-// information on many runes to be stored in little space.
-//
-// As most of the lookups are done directly on []byte slices, the tries use the
-// UTF-8 bytes directly for the lookup. This saves a conversion from UTF-8 to
-// runes and contributes a little bit to better performance. It also naturally
-// provides a fast path for ASCII.
-//
-// Space is also an issue. There are many code points defined in Unicode and as
-// a result tables can get quite large. So every byte counts. The triegen
-// package automatically chooses the smallest integer values to represent the
-// tables. Compacters allow further compression of the trie by allowing for
-// alternative representations of individual trie blocks.
-//
-// triegen allows generating multiple tries as a single structure. This is
-// useful when, for example, one wants to generate tries for several languages
-// that have a lot of values in common. Some existing libraries for
-// internationalization store all per-language data as a dynamically loadable
-// chunk. The go.text packages are designed with the assumption that the user
-// typically wants to compile in support for all supported languages, in line
-// with the approach common to Go to create a single standalone binary. The
-// multi-root trie approach can give significant storage savings in this
-// scenario.
-//
-// triegen generates both tables and code. The code is optimized to use the
-// automatically chosen data types. The following code is generated for a Trie
-// or multiple Tries named "foo":
-//	- type fooTrie
-//		The trie type.
-//
-//	- func newFooTrie(x int) *fooTrie
-//		Trie constructor, where x is the index of the trie passed to Gen.
-//
-//	- func (t *fooTrie) lookup(s []byte) (v uintX, sz int)
-//		The lookup method, where uintX is automatically chosen.
-//
-//	- func lookupString, lookupUnsafe and lookupStringUnsafe
-//		Variants of the above.
-//
-//	- var fooValues and fooIndex and any tables generated by Compacters.
-//		The core trie data.
-//
-//	- var fooTrieHandles
-//		Indexes of starter blocks in case of multiple trie roots.
-//
-// It is recommended that users test the generated trie by checking the returned
-// value for every rune. Such exhaustive tests are possible as the the number of
-// runes in Unicode is limited.
-package triegen // import "golang.org/x/text/internal/triegen"
-
-// TODO: Arguably, the internally optimized data types would not have to be
-// exposed in the generated API. We could also investigate not generating the
-// code, but using it through a package. We would have to investigate the impact
-// on performance of making such change, though. For packages like unicode/norm,
-// small changes like this could tank performance.
-
-import (
-	"encoding/binary"
-	"fmt"
-	"hash/crc64"
-	"io"
-	"log"
-	"unicode/utf8"
-)
-
-// builder builds a set of tries for associating values with runes. The set of
-// tries can share common index and value blocks.
-type builder struct {
-	Name string
-
-	// ValueType is the type of the trie values looked up.
-	ValueType string
-
-	// ValueSize is the byte size of the ValueType.
-	ValueSize int
-
-	// IndexType is the type of trie index values used for all UTF-8 bytes of
-	// a rune except the last one.
-	IndexType string
-
-	// IndexSize is the byte size of the IndexType.
-	IndexSize int
-
-	// SourceType is used when generating the lookup functions. If the user
-	// requests StringSupport, all lookup functions will be generated for
-	// string input as well.
-	SourceType string
-
-	Trie []*Trie
-
-	IndexBlocks []*node
-	ValueBlocks [][]uint64
-	Compactions []compaction
-	Checksum    uint64
-
-	ASCIIBlock   string
-	StarterBlock string
-
-	indexBlockIdx map[uint64]int
-	valueBlockIdx map[uint64]nodeIndex
-	asciiBlockIdx map[uint64]int
-
-	// Stats are used to fill out the template.
-	Stats struct {
-		NValueEntries int
-		NValueBytes   int
-		NIndexEntries int
-		NIndexBytes   int
-		NHandleBytes  int
-	}
-
-	err error
-}
-
-// A nodeIndex encodes the index of a node, which is defined by the compaction
-// which stores it and an index within the compaction. For internal nodes, the
-// compaction is always 0.
-type nodeIndex struct {
-	compaction int
-	index      int
-}
-
-// compaction keeps track of stats used for the compaction.
-type compaction struct {
-	c         Compacter
-	blocks    []*node
-	maxHandle uint32
-	totalSize int
-
-	// Used by template-based generator and thus exported.
-	Cutoff  uint32
-	Offset  uint32
-	Handler string
-}
-
-func (b *builder) setError(err error) {
-	if b.err == nil {
-		b.err = err
-	}
-}
-
-// An Option can be passed to Gen.
-type Option func(b *builder) error
-
-// Compact configures the trie generator to use the given Compacter.
-func Compact(c Compacter) Option {
-	return func(b *builder) error {
-		b.Compactions = append(b.Compactions, compaction{
-			c:       c,
-			Handler: c.Handler() + "(n, b)"})
-		return nil
-	}
-}
-
-// Gen writes Go code for a shared trie lookup structure to w for the given
-// Tries. The generated trie type will be called nameTrie. newNameTrie(x) will
-// return the *nameTrie for tries[x]. A value can be looked up by using one of
-// the various lookup methods defined on nameTrie. It returns the table size of
-// the generated trie.
-func Gen(w io.Writer, name string, tries []*Trie, opts ...Option) (sz int, err error) {
-	// The index contains two dummy blocks, followed by the zero block. The zero
-	// block is at offset 0x80, so that the offset for the zero block for
-	// continuation bytes is 0.
-	b := &builder{
-		Name:        name,
-		Trie:        tries,
-		IndexBlocks: []*node{{}, {}, {}},
-		Compactions: []compaction{{
-			Handler: name + "Values[n<<6+uint32(b)]",
-		}},
-		// The 0 key in indexBlockIdx and valueBlockIdx is the hash of the zero
-		// block.
-		indexBlockIdx: map[uint64]int{0: 0},
-		valueBlockIdx: map[uint64]nodeIndex{0: {}},
-		asciiBlockIdx: map[uint64]int{},
-	}
-	b.Compactions[0].c = (*simpleCompacter)(b)
-
-	for _, f := range opts {
-		if err := f(b); err != nil {
-			return 0, err
-		}
-	}
-	b.build()
-	if b.err != nil {
-		return 0, b.err
-	}
-	if err = b.print(w); err != nil {
-		return 0, err
-	}
-	return b.Size(), nil
-}
-
-// A Trie represents a single root node of a trie. A builder may build several
-// overlapping tries at once.
-type Trie struct {
-	root *node
-
-	hiddenTrie
-}
-
-// hiddenTrie contains values we want to be visible to the template generator,
-// but hidden from the API documentation.
-type hiddenTrie struct {
-	Name         string
-	Checksum     uint64
-	ASCIIIndex   int
-	StarterIndex int
-}
-
-// NewTrie returns a new trie root.
-func NewTrie(name string) *Trie {
-	return &Trie{
-		&node{
-			children: make([]*node, blockSize),
-			values:   make([]uint64, utf8.RuneSelf),
-		},
-		hiddenTrie{Name: name},
-	}
-}
-
-// Gen is a convenience wrapper around the Gen func passing t as the only trie
-// and uses the name passed to NewTrie. It returns the size of the generated
-// tables.
-func (t *Trie) Gen(w io.Writer, opts ...Option) (sz int, err error) {
-	return Gen(w, t.Name, []*Trie{t}, opts...)
-}
-
-// node is a node of the intermediate trie structure.
-type node struct {
-	// children holds this node's children. It is always of length 64.
-	// A child node may be nil.
-	children []*node
-
-	// values contains the values of this node. If it is non-nil, this node is
-	// either a root or leaf node:
-	// For root nodes, len(values) == 128 and it maps the bytes in [0x00, 0x7F].
-	// For leaf nodes, len(values) ==  64 and it maps the bytes in [0x80, 0xBF].
-	values []uint64
-
-	index nodeIndex
-}
-
-// Insert associates value with the given rune. Insert will panic if a non-zero
-// value is passed for an invalid rune.
-func (t *Trie) Insert(r rune, value uint64) {
-	if value == 0 {
-		return
-	}
-	s := string(r)
-	if []rune(s)[0] != r && value != 0 {
-		// Note: The UCD tables will always assign what amounts to a zero value
-		// to a surrogate. Allowing a zero value for an illegal rune allows
-		// users to iterate over [0..MaxRune] without having to explicitly
-		// exclude surrogates, which would be tedious.
-		panic(fmt.Sprintf("triegen: non-zero value for invalid rune %U", r))
-	}
-	if len(s) == 1 {
-		// It is a root node value (ASCII).
-		t.root.values[s[0]] = value
-		return
-	}
-
-	n := t.root
-	for ; len(s) > 1; s = s[1:] {
-		if n.children == nil {
-			n.children = make([]*node, blockSize)
-		}
-		p := s[0] % blockSize
-		c := n.children[p]
-		if c == nil {
-			c = &node{}
-			n.children[p] = c
-		}
-		if len(s) > 2 && c.values != nil {
-			log.Fatalf("triegen: insert(%U): found internal node with values", r)
-		}
-		n = c
-	}
-	if n.values == nil {
-		n.values = make([]uint64, blockSize)
-	}
-	if n.children != nil {
-		log.Fatalf("triegen: insert(%U): found leaf node that also has child nodes", r)
-	}
-	n.values[s[0]-0x80] = value
-}
-
-// Size returns the number of bytes the generated trie will take to store. It
-// needs to be exported as it is used in the templates.
-func (b *builder) Size() int {
-	// Index blocks.
-	sz := len(b.IndexBlocks) * blockSize * b.IndexSize
-
-	// Skip the first compaction, which represents the normal value blocks, as
-	// its totalSize does not account for the ASCII blocks, which are managed
-	// separately.
-	sz += len(b.ValueBlocks) * blockSize * b.ValueSize
-	for _, c := range b.Compactions[1:] {
-		sz += c.totalSize
-	}
-
-	// TODO: this computation does not account for the fixed overhead of a using
-	// a compaction, either code or data. As for data, though, the typical
-	// overhead of data is in the order of bytes (2 bytes for cases). Further,
-	// the savings of using a compaction should anyway be substantial for it to
-	// be worth it.
-
-	// For multi-root tries, we also need to account for the handles.
-	if len(b.Trie) > 1 {
-		sz += 2 * b.IndexSize * len(b.Trie)
-	}
-	return sz
-}
-
-func (b *builder) build() {
-	// Compute the sizes of the values.
-	var vmax uint64
-	for _, t := range b.Trie {
-		vmax = maxValue(t.root, vmax)
-	}
-	b.ValueType, b.ValueSize = getIntType(vmax)
-
-	// Compute all block allocations.
-	// TODO: first compute the ASCII blocks for all tries and then the other
-	// nodes. ASCII blocks are more restricted in placement, as they require two
-	// blocks to be placed consecutively. Processing them first may improve
-	// sharing (at least one zero block can be expected to be saved.)
-	for _, t := range b.Trie {
-		b.Checksum += b.buildTrie(t)
-	}
-
-	// Compute the offsets for all the Compacters.
-	offset := uint32(0)
-	for i := range b.Compactions {
-		c := &b.Compactions[i]
-		c.Offset = offset
-		offset += c.maxHandle + 1
-		c.Cutoff = offset
-	}
-
-	// Compute the sizes of indexes.
-	// TODO: different byte positions could have different sizes. So far we have
-	// not found a case where this is beneficial.
-	imax := uint64(b.Compactions[len(b.Compactions)-1].Cutoff)
-	for _, ib := range b.IndexBlocks {
-		if x := uint64(ib.index.index); x > imax {
-			imax = x
-		}
-	}
-	b.IndexType, b.IndexSize = getIntType(imax)
-}
-
-func maxValue(n *node, max uint64) uint64 {
-	if n == nil {
-		return max
-	}
-	for _, c := range n.children {
-		max = maxValue(c, max)
-	}
-	for _, v := range n.values {
-		if max < v {
-			max = v
-		}
-	}
-	return max
-}
-
-func getIntType(v uint64) (string, int) {
-	switch {
-	case v < 1<<8:
-		return "uint8", 1
-	case v < 1<<16:
-		return "uint16", 2
-	case v < 1<<32:
-		return "uint32", 4
-	}
-	return "uint64", 8
-}
-
-const (
-	blockSize = 64
-
-	// Subtract two blocks to offset 0x80, the first continuation byte.
-	blockOffset = 2
-
-	// Subtract three blocks to offset 0xC0, the first non-ASCII starter.
-	rootBlockOffset = 3
-)
-
-var crcTable = crc64.MakeTable(crc64.ISO)
-
-func (b *builder) buildTrie(t *Trie) uint64 {
-	n := t.root
-
-	// Get the ASCII offset. For the first trie, the ASCII block will be at
-	// position 0.
-	hasher := crc64.New(crcTable)
-	binary.Write(hasher, binary.BigEndian, n.values)
-	hash := hasher.Sum64()
-
-	v, ok := b.asciiBlockIdx[hash]
-	if !ok {
-		v = len(b.ValueBlocks)
-		b.asciiBlockIdx[hash] = v
-
-		b.ValueBlocks = append(b.ValueBlocks, n.values[:blockSize], n.values[blockSize:])
-		if v == 0 {
-			// Add the zero block at position 2 so that it will be assigned a
-			// zero reference in the lookup blocks.
-			// TODO: always do this? This would allow us to remove a check from
-			// the trie lookup, but at the expense of extra space. Analyze
-			// performance for unicode/norm.
-			b.ValueBlocks = append(b.ValueBlocks, make([]uint64, blockSize))
-		}
-	}
-	t.ASCIIIndex = v
-
-	// Compute remaining offsets.
-	t.Checksum = b.computeOffsets(n, true)
-	// We already subtracted the normal blockOffset from the index. Subtract the
-	// difference for starter bytes.
-	t.StarterIndex = n.index.index - (rootBlockOffset - blockOffset)
-	return t.Checksum
-}
-
-func (b *builder) computeOffsets(n *node, root bool) uint64 {
-	// For the first trie, the root lookup block will be at position 3, which is
-	// the offset for UTF-8 non-ASCII starter bytes.
-	first := len(b.IndexBlocks) == rootBlockOffset
-	if first {
-		b.IndexBlocks = append(b.IndexBlocks, n)
-	}
-
-	// We special-case the cases where all values recursively are 0. This allows
-	// for the use of a zero block to which all such values can be directed.
-	hash := uint64(0)
-	if n.children != nil || n.values != nil {
-		hasher := crc64.New(crcTable)
-		for _, c := range n.children {
-			var v uint64
-			if c != nil {
-				v = b.computeOffsets(c, false)
-			}
-			binary.Write(hasher, binary.BigEndian, v)
-		}
-		binary.Write(hasher, binary.BigEndian, n.values)
-		hash = hasher.Sum64()
-	}
-
-	if first {
-		b.indexBlockIdx[hash] = rootBlockOffset - blockOffset
-	}
-
-	// Compacters don't apply to internal nodes.
-	if n.children != nil {
-		v, ok := b.indexBlockIdx[hash]
-		if !ok {
-			v = len(b.IndexBlocks) - blockOffset
-			b.IndexBlocks = append(b.IndexBlocks, n)
-			b.indexBlockIdx[hash] = v
-		}
-		n.index = nodeIndex{0, v}
-	} else {
-		h, ok := b.valueBlockIdx[hash]
-		if !ok {
-			bestI, bestSize := 0, blockSize*b.ValueSize
-			for i, c := range b.Compactions[1:] {
-				if sz, ok := c.c.Size(n.values); ok && bestSize > sz {
-					bestI, bestSize = i+1, sz
-				}
-			}
-			c := &b.Compactions[bestI]
-			c.totalSize += bestSize
-			v := c.c.Store(n.values)
-			if c.maxHandle < v {
-				c.maxHandle = v
-			}
-			h = nodeIndex{bestI, int(v)}
-			b.valueBlockIdx[hash] = h
-		}
-		n.index = h
-	}
-	return hash
-}

+ 0 - 376
vendor/golang.org/x/text/internal/ucd/ucd.go

@@ -1,376 +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 ucd provides a parser for Unicode Character Database files, the
-// format of which is defined in http://www.unicode.org/reports/tr44/. See
-// http://www.unicode.org/Public/UCD/latest/ucd/ for example files.
-//
-// It currently does not support substitutions of missing fields.
-package ucd // import "golang.org/x/text/internal/ucd"
-
-import (
-	"bufio"
-	"bytes"
-	"errors"
-	"io"
-	"log"
-	"regexp"
-	"strconv"
-	"strings"
-)
-
-// UnicodeData.txt fields.
-const (
-	CodePoint = iota
-	Name
-	GeneralCategory
-	CanonicalCombiningClass
-	BidiClass
-	DecompMapping
-	DecimalValue
-	DigitValue
-	NumericValue
-	BidiMirrored
-	Unicode1Name
-	ISOComment
-	SimpleUppercaseMapping
-	SimpleLowercaseMapping
-	SimpleTitlecaseMapping
-)
-
-// Parse calls f for each entry in the given reader of a UCD file. It will close
-// the reader upon return. It will call log.Fatal if any error occurred.
-//
-// This implements the most common usage pattern of using Parser.
-func Parse(r io.ReadCloser, f func(p *Parser)) {
-	defer r.Close()
-
-	p := New(r)
-	for p.Next() {
-		f(p)
-	}
-	if err := p.Err(); err != nil {
-		r.Close() // os.Exit will cause defers not to be called.
-		log.Fatal(err)
-	}
-}
-
-// An Option is used to configure a Parser.
-type Option func(p *Parser)
-
-func keepRanges(p *Parser) {
-	p.keepRanges = true
-}
-
-var (
-	// KeepRanges prevents the expansion of ranges. The raw ranges can be
-	// obtained by calling Range(0) on the parser.
-	KeepRanges Option = keepRanges
-)
-
-// The Part option register a handler for lines starting with a '@'. The text
-// after a '@' is available as the first field. Comments are handled as usual.
-func Part(f func(p *Parser)) Option {
-	return func(p *Parser) {
-		p.partHandler = f
-	}
-}
-
-// The CommentHandler option passes comments that are on a line by itself to
-// a given handler.
-func CommentHandler(f func(s string)) Option {
-	return func(p *Parser) {
-		p.commentHandler = f
-	}
-}
-
-// A Parser parses Unicode Character Database (UCD) files.
-type Parser struct {
-	scanner *bufio.Scanner
-
-	keepRanges bool // Don't expand rune ranges in field 0.
-
-	err     error
-	comment []byte
-	field   [][]byte
-	// parsedRange is needed in case Range(0) is called more than once for one
-	// field. In some cases this requires scanning ahead.
-	parsedRange          bool
-	rangeStart, rangeEnd rune
-
-	partHandler    func(p *Parser)
-	commentHandler func(s string)
-}
-
-func (p *Parser) setError(err error) {
-	if p.err == nil {
-		p.err = err
-	}
-}
-
-func (p *Parser) getField(i int) []byte {
-	if i >= len(p.field) {
-		return nil
-	}
-	return p.field[i]
-}
-
-// Err returns a non-nil error if any error occurred during parsing.
-func (p *Parser) Err() error {
-	return p.err
-}
-
-// New returns a Parser for the given Reader.
-func New(r io.Reader, o ...Option) *Parser {
-	p := &Parser{
-		scanner: bufio.NewScanner(r),
-	}
-	for _, f := range o {
-		f(p)
-	}
-	return p
-}
-
-// Next parses the next line in the file. It returns true if a line was parsed
-// and false if it reached the end of the file.
-func (p *Parser) Next() bool {
-	if !p.keepRanges && p.rangeStart < p.rangeEnd {
-		p.rangeStart++
-		return true
-	}
-	p.comment = nil
-	p.field = p.field[:0]
-	p.parsedRange = false
-
-	for p.scanner.Scan() {
-		b := p.scanner.Bytes()
-		if len(b) == 0 {
-			continue
-		}
-		if b[0] == '#' {
-			if p.commentHandler != nil {
-				p.commentHandler(strings.TrimSpace(string(b[1:])))
-			}
-			continue
-		}
-
-		// Parse line
-		if i := bytes.IndexByte(b, '#'); i != -1 {
-			p.comment = bytes.TrimSpace(b[i+1:])
-			b = b[:i]
-		}
-		if b[0] == '@' {
-			if p.partHandler != nil {
-				p.field = append(p.field, bytes.TrimSpace(b[1:]))
-				p.partHandler(p)
-				p.field = p.field[:0]
-			}
-			p.comment = nil
-			continue
-		}
-		for {
-			i := bytes.IndexByte(b, ';')
-			if i == -1 {
-				p.field = append(p.field, bytes.TrimSpace(b))
-				break
-			}
-			p.field = append(p.field, bytes.TrimSpace(b[:i]))
-			b = b[i+1:]
-		}
-		if !p.keepRanges {
-			p.rangeStart, p.rangeEnd = p.getRange(0)
-		}
-		return true
-	}
-	p.setError(p.scanner.Err())
-	return false
-}
-
-func parseRune(b []byte) (rune, error) {
-	if len(b) > 2 && b[0] == 'U' && b[1] == '+' {
-		b = b[2:]
-	}
-	x, err := strconv.ParseUint(string(b), 16, 32)
-	return rune(x), err
-}
-
-func (p *Parser) parseRune(b []byte) rune {
-	x, err := parseRune(b)
-	p.setError(err)
-	return x
-}
-
-// Rune parses and returns field i as a rune.
-func (p *Parser) Rune(i int) rune {
-	if i > 0 || p.keepRanges {
-		return p.parseRune(p.getField(i))
-	}
-	return p.rangeStart
-}
-
-// Runes interprets and returns field i as a sequence of runes.
-func (p *Parser) Runes(i int) (runes []rune) {
-	add := func(b []byte) {
-		if b = bytes.TrimSpace(b); len(b) > 0 {
-			runes = append(runes, p.parseRune(b))
-		}
-	}
-	for b := p.getField(i); ; {
-		i := bytes.IndexByte(b, ' ')
-		if i == -1 {
-			add(b)
-			break
-		}
-		add(b[:i])
-		b = b[i+1:]
-	}
-	return
-}
-
-var (
-	errIncorrectLegacyRange = errors.New("ucd: unmatched <* First>")
-
-	// reRange matches one line of a legacy rune range.
-	reRange = regexp.MustCompile("^([0-9A-F]*);<([^,]*), ([^>]*)>(.*)$")
-)
-
-// Range parses and returns field i as a rune range. A range is inclusive at
-// both ends. If the field only has one rune, first and last will be identical.
-// It supports the legacy format for ranges used in UnicodeData.txt.
-func (p *Parser) Range(i int) (first, last rune) {
-	if !p.keepRanges {
-		return p.rangeStart, p.rangeStart
-	}
-	return p.getRange(i)
-}
-
-func (p *Parser) getRange(i int) (first, last rune) {
-	b := p.getField(i)
-	if k := bytes.Index(b, []byte("..")); k != -1 {
-		return p.parseRune(b[:k]), p.parseRune(b[k+2:])
-	}
-	// The first field may not be a rune, in which case we may ignore any error
-	// and set the range as 0..0.
-	x, err := parseRune(b)
-	if err != nil {
-		// Disable range parsing henceforth. This ensures that an error will be
-		// returned if the user subsequently will try to parse this field as
-		// a Rune.
-		p.keepRanges = true
-	}
-	// Special case for UnicodeData that was retained for backwards compatibility.
-	if i == 0 && len(p.field) > 1 && bytes.HasSuffix(p.field[1], []byte("First>")) {
-		if p.parsedRange {
-			return p.rangeStart, p.rangeEnd
-		}
-		mf := reRange.FindStringSubmatch(p.scanner.Text())
-		if mf == nil || !p.scanner.Scan() {
-			p.setError(errIncorrectLegacyRange)
-			return x, x
-		}
-		// Using Bytes would be more efficient here, but Text is a lot easier
-		// and this is not a frequent case.
-		ml := reRange.FindStringSubmatch(p.scanner.Text())
-		if ml == nil || mf[2] != ml[2] || ml[3] != "Last" || mf[4] != ml[4] {
-			p.setError(errIncorrectLegacyRange)
-			return x, x
-		}
-		p.rangeStart, p.rangeEnd = x, p.parseRune(p.scanner.Bytes()[:len(ml[1])])
-		p.parsedRange = true
-		return p.rangeStart, p.rangeEnd
-	}
-	return x, x
-}
-
-// bools recognizes all valid UCD boolean values.
-var bools = map[string]bool{
-	"":      false,
-	"N":     false,
-	"No":    false,
-	"F":     false,
-	"False": false,
-	"Y":     true,
-	"Yes":   true,
-	"T":     true,
-	"True":  true,
-}
-
-// Bool parses and returns field i as a boolean value.
-func (p *Parser) Bool(i int) bool {
-	b := p.getField(i)
-	for s, v := range bools {
-		if bstrEq(b, s) {
-			return v
-		}
-	}
-	p.setError(strconv.ErrSyntax)
-	return false
-}
-
-// Int parses and returns field i as an integer value.
-func (p *Parser) Int(i int) int {
-	x, err := strconv.ParseInt(string(p.getField(i)), 10, 64)
-	p.setError(err)
-	return int(x)
-}
-
-// Uint parses and returns field i as an unsigned integer value.
-func (p *Parser) Uint(i int) uint {
-	x, err := strconv.ParseUint(string(p.getField(i)), 10, 64)
-	p.setError(err)
-	return uint(x)
-}
-
-// Float parses and returns field i as a decimal value.
-func (p *Parser) Float(i int) float64 {
-	x, err := strconv.ParseFloat(string(p.getField(i)), 64)
-	p.setError(err)
-	return x
-}
-
-// String parses and returns field i as a string value.
-func (p *Parser) String(i int) string {
-	return string(p.getField(i))
-}
-
-// Strings parses and returns field i as a space-separated list of strings.
-func (p *Parser) Strings(i int) []string {
-	ss := strings.Split(string(p.getField(i)), " ")
-	for i, s := range ss {
-		ss[i] = strings.TrimSpace(s)
-	}
-	return ss
-}
-
-// Comment returns the comments for the current line.
-func (p *Parser) Comment() string {
-	return string(p.comment)
-}
-
-var errUndefinedEnum = errors.New("ucd: undefined enum value")
-
-// Enum interprets and returns field i as a value that must be one of the values
-// in enum.
-func (p *Parser) Enum(i int, enum ...string) string {
-	b := p.getField(i)
-	for _, s := range enum {
-		if bstrEq(b, s) {
-			return s
-		}
-	}
-	p.setError(errUndefinedEnum)
-	return ""
-}
-
-func bstrEq(b []byte, s string) bool {
-	if len(b) != len(s) {
-		return false
-	}
-	for i, c := range b {
-		if c != s[i] {
-			return false
-		}
-	}
-	return true
-}

+ 0 - 133
vendor/golang.org/x/text/unicode/bidi/gen.go

@@ -1,133 +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
-
-package main
-
-import (
-	"flag"
-	"log"
-
-	"golang.org/x/text/internal/gen"
-	"golang.org/x/text/internal/triegen"
-	"golang.org/x/text/internal/ucd"
-)
-
-var outputFile = flag.String("out", "tables.go", "output file")
-
-func main() {
-	gen.Init()
-	gen.Repackage("gen_trieval.go", "trieval.go", "bidi")
-	gen.Repackage("gen_ranges.go", "ranges_test.go", "bidi")
-
-	genTables()
-}
-
-// bidiClass names and codes taken from class "bc" in
-// http://www.unicode.org/Public/8.0.0/ucd/PropertyValueAliases.txt
-var bidiClass = map[string]Class{
-	"AL":  AL,  // ArabicLetter
-	"AN":  AN,  // ArabicNumber
-	"B":   B,   // ParagraphSeparator
-	"BN":  BN,  // BoundaryNeutral
-	"CS":  CS,  // CommonSeparator
-	"EN":  EN,  // EuropeanNumber
-	"ES":  ES,  // EuropeanSeparator
-	"ET":  ET,  // EuropeanTerminator
-	"L":   L,   // LeftToRight
-	"NSM": NSM, // NonspacingMark
-	"ON":  ON,  // OtherNeutral
-	"R":   R,   // RightToLeft
-	"S":   S,   // SegmentSeparator
-	"WS":  WS,  // WhiteSpace
-
-	"FSI": Control,
-	"PDF": Control,
-	"PDI": Control,
-	"LRE": Control,
-	"LRI": Control,
-	"LRO": Control,
-	"RLE": Control,
-	"RLI": Control,
-	"RLO": Control,
-}
-
-func genTables() {
-	if numClass > 0x0F {
-		log.Fatalf("Too many Class constants (%#x > 0x0F).", numClass)
-	}
-	w := gen.NewCodeWriter()
-	defer w.WriteGoFile(*outputFile, "bidi")
-
-	gen.WriteUnicodeVersion(w)
-
-	t := triegen.NewTrie("bidi")
-
-	// Build data about bracket mapping. These bits need to be or-ed with
-	// any other bits.
-	orMask := map[rune]uint64{}
-
-	xorMap := map[rune]int{}
-	xorMasks := []rune{0} // First value is no-op.
-
-	ucd.Parse(gen.OpenUCDFile("BidiBrackets.txt"), func(p *ucd.Parser) {
-		r1 := p.Rune(0)
-		r2 := p.Rune(1)
-		xor := r1 ^ r2
-		if _, ok := xorMap[xor]; !ok {
-			xorMap[xor] = len(xorMasks)
-			xorMasks = append(xorMasks, xor)
-		}
-		entry := uint64(xorMap[xor]) << xorMaskShift
-		switch p.String(2) {
-		case "o":
-			entry |= openMask
-		case "c", "n":
-		default:
-			log.Fatalf("Unknown bracket class %q.", p.String(2))
-		}
-		orMask[r1] = entry
-	})
-
-	w.WriteComment(`
-	xorMasks contains masks to be xor-ed with brackets to get the reverse
-	version.`)
-	w.WriteVar("xorMasks", xorMasks)
-
-	done := map[rune]bool{}
-
-	insert := func(r rune, c Class) {
-		if !done[r] {
-			t.Insert(r, orMask[r]|uint64(c))
-			done[r] = true
-		}
-	}
-
-	// Insert the derived BiDi properties.
-	ucd.Parse(gen.OpenUCDFile("extracted/DerivedBidiClass.txt"), func(p *ucd.Parser) {
-		r := p.Rune(0)
-		class, ok := bidiClass[p.String(1)]
-		if !ok {
-			log.Fatalf("%U: Unknown BiDi class %q", r, p.String(1))
-		}
-		insert(r, class)
-	})
-	visitDefaults(insert)
-
-	// TODO: use sparse blocks. This would reduce table size considerably
-	// from the looks of it.
-
-	sz, err := t.Gen(w)
-	if err != nil {
-		log.Fatal(err)
-	}
-	w.Size += sz
-}
-
-// dummy values to make methods in gen_common compile. The real versions
-// will be generated by this file to tables.go.
-var (
-	xorMasks []rune
-)

+ 0 - 57
vendor/golang.org/x/text/unicode/bidi/gen_ranges.go

@@ -1,57 +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
-
-package main
-
-import (
-	"unicode"
-
-	"golang.org/x/text/internal/gen"
-	"golang.org/x/text/internal/ucd"
-	"golang.org/x/text/unicode/rangetable"
-)
-
-// These tables are hand-extracted from:
-// http://www.unicode.org/Public/8.0.0/ucd/extracted/DerivedBidiClass.txt
-func visitDefaults(fn func(r rune, c Class)) {
-	// first write default values for ranges listed above.
-	visitRunes(fn, AL, []rune{
-		0x0600, 0x07BF, // Arabic
-		0x08A0, 0x08FF, // Arabic Extended-A
-		0xFB50, 0xFDCF, // Arabic Presentation Forms
-		0xFDF0, 0xFDFF,
-		0xFE70, 0xFEFF,
-		0x0001EE00, 0x0001EEFF, // Arabic Mathematical Alpha Symbols
-	})
-	visitRunes(fn, R, []rune{
-		0x0590, 0x05FF, // Hebrew
-		0x07C0, 0x089F, // Nko et al.
-		0xFB1D, 0xFB4F,
-		0x00010800, 0x00010FFF, // Cypriot Syllabary et. al.
-		0x0001E800, 0x0001EDFF,
-		0x0001EF00, 0x0001EFFF,
-	})
-	visitRunes(fn, ET, []rune{ // European Terminator
-		0x20A0, 0x20Cf, // Currency symbols
-	})
-	rangetable.Visit(unicode.Noncharacter_Code_Point, func(r rune) {
-		fn(r, BN) // Boundary Neutral
-	})
-	ucd.Parse(gen.OpenUCDFile("DerivedCoreProperties.txt"), func(p *ucd.Parser) {
-		if p.String(1) == "Default_Ignorable_Code_Point" {
-			fn(p.Rune(0), BN) // Boundary Neutral
-		}
-	})
-}
-
-func visitRunes(fn func(r rune, c Class), c Class, runes []rune) {
-	for i := 0; i < len(runes); i += 2 {
-		lo, hi := runes[i], runes[i+1]
-		for j := lo; j <= hi; j++ {
-			fn(j, c)
-		}
-	}
-}

+ 0 - 64
vendor/golang.org/x/text/unicode/bidi/gen_trieval.go

@@ -1,64 +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
-
-package main
-
-// Class is the Unicode BiDi class. Each rune has a single class.
-type Class uint
-
-const (
-	L       Class = iota // LeftToRight
-	R                    // RightToLeft
-	EN                   // EuropeanNumber
-	ES                   // EuropeanSeparator
-	ET                   // EuropeanTerminator
-	AN                   // ArabicNumber
-	CS                   // CommonSeparator
-	B                    // ParagraphSeparator
-	S                    // SegmentSeparator
-	WS                   // WhiteSpace
-	ON                   // OtherNeutral
-	BN                   // BoundaryNeutral
-	NSM                  // NonspacingMark
-	AL                   // ArabicLetter
-	Control              // Control LRO - PDI
-
-	numClass
-
-	LRO // LeftToRightOverride
-	RLO // RightToLeftOverride
-	LRE // LeftToRightEmbedding
-	RLE // RightToLeftEmbedding
-	PDF // PopDirectionalFormat
-	LRI // LeftToRightIsolate
-	RLI // RightToLeftIsolate
-	FSI // FirstStrongIsolate
-	PDI // PopDirectionalIsolate
-
-	unknownClass = ^Class(0)
-)
-
-var controlToClass = map[rune]Class{
-	0x202D: LRO, // LeftToRightOverride,
-	0x202E: RLO, // RightToLeftOverride,
-	0x202A: LRE, // LeftToRightEmbedding,
-	0x202B: RLE, // RightToLeftEmbedding,
-	0x202C: PDF, // PopDirectionalFormat,
-	0x2066: LRI, // LeftToRightIsolate,
-	0x2067: RLI, // RightToLeftIsolate,
-	0x2068: FSI, // FirstStrongIsolate,
-	0x2069: PDI, // PopDirectionalIsolate,
-}
-
-// A trie entry has the following bits:
-// 7..5  XOR mask for brackets
-// 4     1: Bracket open, 0: Bracket close
-// 3..0  Class type
-
-const (
-	openMask     = 0x10
-	xorMaskShift = 5
-)

+ 0 - 100
vendor/golang.org/x/text/unicode/cldr/base.go

@@ -1,100 +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 cldr
-
-import (
-	"encoding/xml"
-	"regexp"
-	"strconv"
-)
-
-// Elem is implemented by every XML element.
-type Elem interface {
-	setEnclosing(Elem)
-	setName(string)
-	enclosing() Elem
-
-	GetCommon() *Common
-}
-
-type hidden struct {
-	CharData string `xml:",chardata"`
-	Alias    *struct {
-		Common
-		Source string `xml:"source,attr"`
-		Path   string `xml:"path,attr"`
-	} `xml:"alias"`
-	Def *struct {
-		Common
-		Choice string `xml:"choice,attr,omitempty"`
-		Type   string `xml:"type,attr,omitempty"`
-	} `xml:"default"`
-}
-
-// Common holds several of the most common attributes and sub elements
-// of an XML element.
-type Common struct {
-	XMLName         xml.Name
-	name            string
-	enclElem        Elem
-	Type            string `xml:"type,attr,omitempty"`
-	Reference       string `xml:"reference,attr,omitempty"`
-	Alt             string `xml:"alt,attr,omitempty"`
-	ValidSubLocales string `xml:"validSubLocales,attr,omitempty"`
-	Draft           string `xml:"draft,attr,omitempty"`
-	hidden
-}
-
-// Default returns the default type to select from the enclosed list
-// or "" if no default value is specified.
-func (e *Common) Default() string {
-	if e.Def == nil {
-		return ""
-	}
-	if e.Def.Choice != "" {
-		return e.Def.Choice
-	} else if e.Def.Type != "" {
-		// Type is still used by the default element in collation.
-		return e.Def.Type
-	}
-	return ""
-}
-
-// GetCommon returns e. It is provided such that Common implements Elem.
-func (e *Common) GetCommon() *Common {
-	return e
-}
-
-// Data returns the character data accumulated for this element.
-func (e *Common) Data() string {
-	e.CharData = charRe.ReplaceAllStringFunc(e.CharData, replaceUnicode)
-	return e.CharData
-}
-
-func (e *Common) setName(s string) {
-	e.name = s
-}
-
-func (e *Common) enclosing() Elem {
-	return e.enclElem
-}
-
-func (e *Common) setEnclosing(en Elem) {
-	e.enclElem = en
-}
-
-// Escape characters that can be escaped without further escaping the string.
-var charRe = regexp.MustCompile(`&#x[0-9a-fA-F]*;|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|\\x[0-9a-fA-F]{2}|\\[0-7]{3}|\\[abtnvfr]`)
-
-// replaceUnicode converts hexadecimal Unicode codepoint notations to a one-rune string.
-// It assumes the input string is correctly formatted.
-func replaceUnicode(s string) string {
-	if s[1] == '#' {
-		r, _ := strconv.ParseInt(s[3:len(s)-1], 16, 32)
-		return string(r)
-	}
-	r, _, _, _ := strconv.UnquoteChar(s, 0)
-	return string(r)
-}

+ 0 - 130
vendor/golang.org/x/text/unicode/cldr/cldr.go

@@ -1,130 +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.
-
-//go:generate go run makexml.go -output xml.go
-
-// Package cldr provides a parser for LDML and related XML formats.
-// This package is intended to be used by the table generation tools
-// for the various internationalization-related packages.
-// As the XML types are generated from the CLDR DTD, and as the CLDR standard
-// is periodically amended, this package may change considerably over time.
-// This mostly means that data may appear and disappear between versions.
-// That is, old code should keep compiling for newer versions, but data
-// may have moved or changed.
-// CLDR version 22 is the first version supported by this package.
-// Older versions may not work.
-package cldr // import "golang.org/x/text/unicode/cldr"
-
-import (
-	"fmt"
-	"sort"
-)
-
-// CLDR provides access to parsed data of the Unicode Common Locale Data Repository.
-type CLDR struct {
-	parent   map[string][]string
-	locale   map[string]*LDML
-	resolved map[string]*LDML
-	bcp47    *LDMLBCP47
-	supp     *SupplementalData
-}
-
-func makeCLDR() *CLDR {
-	return &CLDR{
-		parent:   make(map[string][]string),
-		locale:   make(map[string]*LDML),
-		resolved: make(map[string]*LDML),
-		bcp47:    &LDMLBCP47{},
-		supp:     &SupplementalData{},
-	}
-}
-
-// BCP47 returns the parsed BCP47 LDML data. If no such data was parsed, nil is returned.
-func (cldr *CLDR) BCP47() *LDMLBCP47 {
-	return nil
-}
-
-// Draft indicates the draft level of an element.
-type Draft int
-
-const (
-	Approved Draft = iota
-	Contributed
-	Provisional
-	Unconfirmed
-)
-
-var drafts = []string{"unconfirmed", "provisional", "contributed", "approved", ""}
-
-// ParseDraft returns the Draft value corresponding to the given string. The
-// empty string corresponds to Approved.
-func ParseDraft(level string) (Draft, error) {
-	if level == "" {
-		return Approved, nil
-	}
-	for i, s := range drafts {
-		if level == s {
-			return Unconfirmed - Draft(i), nil
-		}
-	}
-	return Approved, fmt.Errorf("cldr: unknown draft level %q", level)
-}
-
-func (d Draft) String() string {
-	return drafts[len(drafts)-1-int(d)]
-}
-
-// SetDraftLevel sets which draft levels to include in the evaluated LDML.
-// Any draft element for which the draft level is higher than lev will be excluded.
-// If multiple draft levels are available for a single element, the one with the
-// lowest draft level will be selected, unless preferDraft is true, in which case
-// the highest draft will be chosen.
-// It is assumed that the underlying LDML is canonicalized.
-func (cldr *CLDR) SetDraftLevel(lev Draft, preferDraft bool) {
-	// TODO: implement
-	cldr.resolved = make(map[string]*LDML)
-}
-
-// RawLDML returns the LDML XML for id in unresolved form.
-// id must be one of the strings returned by Locales.
-func (cldr *CLDR) RawLDML(loc string) *LDML {
-	return cldr.locale[loc]
-}
-
-// LDML returns the fully resolved LDML XML for loc, which must be one of
-// the strings returned by Locales.
-func (cldr *CLDR) LDML(loc string) (*LDML, error) {
-	return cldr.resolve(loc)
-}
-
-// Supplemental returns the parsed supplemental data. If no such data was parsed,
-// nil is returned.
-func (cldr *CLDR) Supplemental() *SupplementalData {
-	return cldr.supp
-}
-
-// Locales returns the locales for which there exist files.
-// Valid sublocales for which there is no file are not included.
-// The root locale is always sorted first.
-func (cldr *CLDR) Locales() []string {
-	loc := []string{"root"}
-	hasRoot := false
-	for l, _ := range cldr.locale {
-		if l == "root" {
-			hasRoot = true
-			continue
-		}
-		loc = append(loc, l)
-	}
-	sort.Strings(loc[1:])
-	if !hasRoot {
-		return loc[1:]
-	}
-	return loc
-}
-
-// Get fills in the fields of x based on the XPath path.
-func Get(e Elem, path string) (res Elem, err error) {
-	return walkXPath(e, path)
-}

+ 0 - 359
vendor/golang.org/x/text/unicode/cldr/collate.go

@@ -1,359 +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 cldr
-
-import (
-	"bufio"
-	"encoding/xml"
-	"errors"
-	"fmt"
-	"strconv"
-	"strings"
-	"unicode"
-	"unicode/utf8"
-)
-
-// RuleProcessor can be passed to Collator's Process method, which
-// parses the rules and calls the respective method for each rule found.
-type RuleProcessor interface {
-	Reset(anchor string, before int) error
-	Insert(level int, str, context, extend string) error
-	Index(id string)
-}
-
-const (
-	// cldrIndex is a Unicode-reserved sentinel value used to mark the start
-	// of a grouping within an index.
-	// We ignore any rule that starts with this rune.
-	// See http://unicode.org/reports/tr35/#Collation_Elements for details.
-	cldrIndex = "\uFDD0"
-
-	// specialAnchor is the format in which to represent logical reset positions,
-	// such as "first tertiary ignorable".
-	specialAnchor = "<%s/>"
-)
-
-// Process parses the rules for the tailorings of this collation
-// and calls the respective methods of p for each rule found.
-func (c Collation) Process(p RuleProcessor) (err error) {
-	if len(c.Cr) > 0 {
-		if len(c.Cr) > 1 {
-			return fmt.Errorf("multiple cr elements, want 0 or 1")
-		}
-		return processRules(p, c.Cr[0].Data())
-	}
-	if c.Rules.Any != nil {
-		return c.processXML(p)
-	}
-	return errors.New("no tailoring data")
-}
-
-// processRules parses rules in the Collation Rule Syntax defined in
-// http://www.unicode.org/reports/tr35/tr35-collation.html#Collation_Tailorings.
-func processRules(p RuleProcessor, s string) (err error) {
-	chk := func(s string, e error) string {
-		if err == nil {
-			err = e
-		}
-		return s
-	}
-	i := 0 // Save the line number for use after the loop.
-	scanner := bufio.NewScanner(strings.NewReader(s))
-	for ; scanner.Scan() && err == nil; i++ {
-		for s := skipSpace(scanner.Text()); s != "" && s[0] != '#'; s = skipSpace(s) {
-			level := 5
-			var ch byte
-			switch ch, s = s[0], s[1:]; ch {
-			case '&': // followed by <anchor> or '[' <key> ']'
-				if s = skipSpace(s); consume(&s, '[') {
-					s = chk(parseSpecialAnchor(p, s))
-				} else {
-					s = chk(parseAnchor(p, 0, s))
-				}
-			case '<': // sort relation '<'{1,4}, optionally followed by '*'.
-				for level = 1; consume(&s, '<'); level++ {
-				}
-				if level > 4 {
-					err = fmt.Errorf("level %d > 4", level)
-				}
-				fallthrough
-			case '=': // identity relation, optionally followed by *.
-				if consume(&s, '*') {
-					s = chk(parseSequence(p, level, s))
-				} else {
-					s = chk(parseOrder(p, level, s))
-				}
-			default:
-				chk("", fmt.Errorf("illegal operator %q", ch))
-				break
-			}
-		}
-	}
-	if chk("", scanner.Err()); err != nil {
-		return fmt.Errorf("%d: %v", i, err)
-	}
-	return nil
-}
-
-// parseSpecialAnchor parses the anchor syntax which is either of the form
-//    ['before' <level>] <anchor>
-// or
-//    [<label>]
-// The starting should already be consumed.
-func parseSpecialAnchor(p RuleProcessor, s string) (tail string, err error) {
-	i := strings.IndexByte(s, ']')
-	if i == -1 {
-		return "", errors.New("unmatched bracket")
-	}
-	a := strings.TrimSpace(s[:i])
-	s = s[i+1:]
-	if strings.HasPrefix(a, "before ") {
-		l, err := strconv.ParseUint(skipSpace(a[len("before "):]), 10, 3)
-		if err != nil {
-			return s, err
-		}
-		return parseAnchor(p, int(l), s)
-	}
-	return s, p.Reset(fmt.Sprintf(specialAnchor, a), 0)
-}
-
-func parseAnchor(p RuleProcessor, level int, s string) (tail string, err error) {
-	anchor, s, err := scanString(s)
-	if err != nil {
-		return s, err
-	}
-	return s, p.Reset(anchor, level)
-}
-
-func parseOrder(p RuleProcessor, level int, s string) (tail string, err error) {
-	var value, context, extend string
-	if value, s, err = scanString(s); err != nil {
-		return s, err
-	}
-	if strings.HasPrefix(value, cldrIndex) {
-		p.Index(value[len(cldrIndex):])
-		return
-	}
-	if consume(&s, '|') {
-		if context, s, err = scanString(s); err != nil {
-			return s, errors.New("missing string after context")
-		}
-	}
-	if consume(&s, '/') {
-		if extend, s, err = scanString(s); err != nil {
-			return s, errors.New("missing string after extension")
-		}
-	}
-	return s, p.Insert(level, value, context, extend)
-}
-
-// scanString scans a single input string.
-func scanString(s string) (str, tail string, err error) {
-	if s = skipSpace(s); s == "" {
-		return s, s, errors.New("missing string")
-	}
-	buf := [16]byte{} // small but enough to hold most cases.
-	value := buf[:0]
-	for s != "" {
-		if consume(&s, '\'') {
-			i := strings.IndexByte(s, '\'')
-			if i == -1 {
-				return "", "", errors.New(`unmatched single quote`)
-			}
-			if i == 0 {
-				value = append(value, '\'')
-			} else {
-				value = append(value, s[:i]...)
-			}
-			s = s[i+1:]
-			continue
-		}
-		r, sz := utf8.DecodeRuneInString(s)
-		if unicode.IsSpace(r) || strings.ContainsRune("&<=#", r) {
-			break
-		}
-		value = append(value, s[:sz]...)
-		s = s[sz:]
-	}
-	return string(value), skipSpace(s), nil
-}
-
-func parseSequence(p RuleProcessor, level int, s string) (tail string, err error) {
-	if s = skipSpace(s); s == "" {
-		return s, errors.New("empty sequence")
-	}
-	last := rune(0)
-	for s != "" {
-		r, sz := utf8.DecodeRuneInString(s)
-		s = s[sz:]
-
-		if r == '-' {
-			// We have a range. The first element was already written.
-			if last == 0 {
-				return s, errors.New("range without starter value")
-			}
-			r, sz = utf8.DecodeRuneInString(s)
-			s = s[sz:]
-			if r == utf8.RuneError || r < last {
-				return s, fmt.Errorf("invalid range %q-%q", last, r)
-			}
-			for i := last + 1; i <= r; i++ {
-				if err := p.Insert(level, string(i), "", ""); err != nil {
-					return s, err
-				}
-			}
-			last = 0
-			continue
-		}
-
-		if unicode.IsSpace(r) || unicode.IsPunct(r) {
-			break
-		}
-
-		// normal case
-		if err := p.Insert(level, string(r), "", ""); err != nil {
-			return s, err
-		}
-		last = r
-	}
-	return s, nil
-}
-
-func skipSpace(s string) string {
-	return strings.TrimLeftFunc(s, unicode.IsSpace)
-}
-
-// consumes returns whether the next byte is ch. If so, it gobbles it by
-// updating s.
-func consume(s *string, ch byte) (ok bool) {
-	if *s == "" || (*s)[0] != ch {
-		return false
-	}
-	*s = (*s)[1:]
-	return true
-}
-
-// The following code parses Collation rules of CLDR version 24 and before.
-
-var lmap = map[byte]int{
-	'p': 1,
-	's': 2,
-	't': 3,
-	'i': 5,
-}
-
-type rulesElem struct {
-	Rules struct {
-		Common
-		Any []*struct {
-			XMLName xml.Name
-			rule
-		} `xml:",any"`
-	} `xml:"rules"`
-}
-
-type rule struct {
-	Value  string `xml:",chardata"`
-	Before string `xml:"before,attr"`
-	Any    []*struct {
-		XMLName xml.Name
-		rule
-	} `xml:",any"`
-}
-
-var emptyValueError = errors.New("cldr: empty rule value")
-
-func (r *rule) value() (string, error) {
-	// Convert hexadecimal Unicode codepoint notation to a string.
-	s := charRe.ReplaceAllStringFunc(r.Value, replaceUnicode)
-	r.Value = s
-	if s == "" {
-		if len(r.Any) != 1 {
-			return "", emptyValueError
-		}
-		r.Value = fmt.Sprintf(specialAnchor, r.Any[0].XMLName.Local)
-		r.Any = nil
-	} else if len(r.Any) != 0 {
-		return "", fmt.Errorf("cldr: XML elements found in collation rule: %v", r.Any)
-	}
-	return r.Value, nil
-}
-
-func (r rule) process(p RuleProcessor, name, context, extend string) error {
-	v, err := r.value()
-	if err != nil {
-		return err
-	}
-	switch name {
-	case "p", "s", "t", "i":
-		if strings.HasPrefix(v, cldrIndex) {
-			p.Index(v[len(cldrIndex):])
-			return nil
-		}
-		if err := p.Insert(lmap[name[0]], v, context, extend); err != nil {
-			return err
-		}
-	case "pc", "sc", "tc", "ic":
-		level := lmap[name[0]]
-		for _, s := range v {
-			if err := p.Insert(level, string(s), context, extend); err != nil {
-				return err
-			}
-		}
-	default:
-		return fmt.Errorf("cldr: unsupported tag: %q", name)
-	}
-	return nil
-}
-
-// processXML parses the format of CLDR versions 24 and older.
-func (c Collation) processXML(p RuleProcessor) (err error) {
-	// Collation is generated and defined in xml.go.
-	var v string
-	for _, r := range c.Rules.Any {
-		switch r.XMLName.Local {
-		case "reset":
-			level := 0
-			switch r.Before {
-			case "primary", "1":
-				level = 1
-			case "secondary", "2":
-				level = 2
-			case "tertiary", "3":
-				level = 3
-			case "":
-			default:
-				return fmt.Errorf("cldr: unknown level %q", r.Before)
-			}
-			v, err = r.value()
-			if err == nil {
-				err = p.Reset(v, level)
-			}
-		case "x":
-			var context, extend string
-			for _, r1 := range r.Any {
-				v, err = r1.value()
-				switch r1.XMLName.Local {
-				case "context":
-					context = v
-				case "extend":
-					extend = v
-				}
-			}
-			for _, r1 := range r.Any {
-				if t := r1.XMLName.Local; t == "context" || t == "extend" {
-					continue
-				}
-				r1.rule.process(p, r1.XMLName.Local, context, extend)
-			}
-		default:
-			err = r.rule.process(p, r.XMLName.Local, "", "")
-		}
-		if err != nil {
-			return err
-		}
-	}
-	return nil
-}

+ 0 - 171
vendor/golang.org/x/text/unicode/cldr/decode.go

@@ -1,171 +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 cldr
-
-import (
-	"archive/zip"
-	"bytes"
-	"encoding/xml"
-	"fmt"
-	"io"
-	"io/ioutil"
-	"log"
-	"os"
-	"path/filepath"
-	"regexp"
-)
-
-// A Decoder loads an archive of CLDR data.
-type Decoder struct {
-	dirFilter     []string
-	sectionFilter []string
-	loader        Loader
-	cldr          *CLDR
-	curLocale     string
-}
-
-// SetSectionFilter takes a list top-level LDML element names to which
-// evaluation of LDML should be limited.  It automatically calls SetDirFilter.
-func (d *Decoder) SetSectionFilter(filter ...string) {
-	d.sectionFilter = filter
-	// TODO: automatically set dir filter
-}
-
-// SetDirFilter limits the loading of LDML XML files of the specied directories.
-// Note that sections may be split across directories differently for different CLDR versions.
-// For more robust code, use SetSectionFilter.
-func (d *Decoder) SetDirFilter(dir ...string) {
-	d.dirFilter = dir
-}
-
-// A Loader provides access to the files of a CLDR archive.
-type Loader interface {
-	Len() int
-	Path(i int) string
-	Reader(i int) (io.ReadCloser, error)
-}
-
-var fileRe = regexp.MustCompile(".*/(.*)/(.*)\\.xml")
-
-// Decode loads and decodes the files represented by l.
-func (d *Decoder) Decode(l Loader) (cldr *CLDR, err error) {
-	d.cldr = makeCLDR()
-	for i := 0; i < l.Len(); i++ {
-		fname := l.Path(i)
-		if m := fileRe.FindStringSubmatch(fname); m != nil {
-			if len(d.dirFilter) > 0 && !in(d.dirFilter, m[1]) {
-				continue
-			}
-			var r io.Reader
-			if r, err = l.Reader(i); err == nil {
-				err = d.decode(m[1], m[2], r)
-			}
-			if err != nil {
-				return nil, err
-			}
-		}
-	}
-	d.cldr.finalize(d.sectionFilter)
-	return d.cldr, nil
-}
-
-func (d *Decoder) decode(dir, id string, r io.Reader) error {
-	var v interface{}
-	var l *LDML
-	cldr := d.cldr
-	switch {
-	case dir == "supplemental":
-		v = cldr.supp
-	case dir == "transforms":
-		return nil
-	case dir == "bcp47":
-		v = cldr.bcp47
-	case dir == "validity":
-		return nil
-	default:
-		ok := false
-		if v, ok = cldr.locale[id]; !ok {
-			l = &LDML{}
-			v, cldr.locale[id] = l, l
-		}
-	}
-	x := xml.NewDecoder(r)
-	if err := x.Decode(v); err != nil {
-		log.Printf("%s/%s: %v", dir, id, err)
-		return err
-	}
-	if l != nil {
-		if l.Identity == nil {
-			return fmt.Errorf("%s/%s: missing identity element", dir, id)
-		}
-		// TODO: verify when CLDR bug http://unicode.org/cldr/trac/ticket/8970
-		// is resolved.
-		// path := strings.Split(id, "_")
-		// if lang := l.Identity.Language.Type; lang != path[0] {
-		// 	return fmt.Errorf("%s/%s: language was %s; want %s", dir, id, lang, path[0])
-		// }
-	}
-	return nil
-}
-
-type pathLoader []string
-
-func makePathLoader(path string) (pl pathLoader, err error) {
-	err = filepath.Walk(path, func(path string, _ os.FileInfo, err error) error {
-		pl = append(pl, path)
-		return err
-	})
-	return pl, err
-}
-
-func (pl pathLoader) Len() int {
-	return len(pl)
-}
-
-func (pl pathLoader) Path(i int) string {
-	return pl[i]
-}
-
-func (pl pathLoader) Reader(i int) (io.ReadCloser, error) {
-	return os.Open(pl[i])
-}
-
-// DecodePath loads CLDR data from the given path.
-func (d *Decoder) DecodePath(path string) (cldr *CLDR, err error) {
-	loader, err := makePathLoader(path)
-	if err != nil {
-		return nil, err
-	}
-	return d.Decode(loader)
-}
-
-type zipLoader struct {
-	r *zip.Reader
-}
-
-func (zl zipLoader) Len() int {
-	return len(zl.r.File)
-}
-
-func (zl zipLoader) Path(i int) string {
-	return zl.r.File[i].Name
-}
-
-func (zl zipLoader) Reader(i int) (io.ReadCloser, error) {
-	return zl.r.File[i].Open()
-}
-
-// DecodeZip loads CLDR data from the zip archive for which r is the source.
-func (d *Decoder) DecodeZip(r io.Reader) (cldr *CLDR, err error) {
-	buffer, err := ioutil.ReadAll(r)
-	if err != nil {
-		return nil, err
-	}
-	archive, err := zip.NewReader(bytes.NewReader(buffer), int64(len(buffer)))
-	if err != nil {
-		return nil, err
-	}
-	return d.Decode(zipLoader{archive})
-}

+ 0 - 400
vendor/golang.org/x/text/unicode/cldr/makexml.go

@@ -1,400 +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.
-
-// +build ignore
-
-// This tool generates types for the various XML formats of CLDR.
-package main
-
-import (
-	"archive/zip"
-	"bytes"
-	"encoding/xml"
-	"flag"
-	"fmt"
-	"io"
-	"io/ioutil"
-	"log"
-	"os"
-	"regexp"
-	"strings"
-
-	"golang.org/x/text/internal/gen"
-)
-
-var outputFile = flag.String("output", "xml.go", "output file name")
-
-func main() {
-	flag.Parse()
-
-	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
-
-	version := gen.CLDRVersion()
-
-	for _, dtd := range files {
-		for _, f := range z.File {
-			if strings.HasSuffix(f.Name, dtd.file+".dtd") {
-				r, err := f.Open()
-				failOnError(err)
-
-				b := makeBuilder(&buf, dtd)
-				b.parseDTD(r)
-				b.resolve(b.index[dtd.top[0]])
-				b.write()
-				if b.version != "" && version != b.version {
-					println(f.Name)
-					log.Fatalf("main: inconsistent versions: found %s; want %s", b.version, version)
-				}
-				break
-			}
-		}
-	}
-	fmt.Fprintln(&buf, "// Version is the version of CLDR from which the XML definitions are generated.")
-	fmt.Fprintf(&buf, "const Version = %q\n", version)
-
-	gen.WriteGoFile(*outputFile, "cldr", buf.Bytes())
-}
-
-func failOnError(err error) {
-	if err != nil {
-		log.New(os.Stderr, "", log.Lshortfile).Output(2, err.Error())
-		os.Exit(1)
-	}
-}
-
-// configuration data per DTD type
-type dtd struct {
-	file string   // base file name
-	root string   // Go name of the root XML element
-	top  []string // create a different type for this section
-
-	skipElem    []string // hard-coded or deprecated elements
-	skipAttr    []string // attributes to exclude
-	predefined  []string // hard-coded elements exist of the form <name>Elem
-	forceRepeat []string // elements to make slices despite DTD
-}
-
-var files = []dtd{
-	{
-		file: "ldmlBCP47",
-		root: "LDMLBCP47",
-		top:  []string{"ldmlBCP47"},
-		skipElem: []string{
-			"cldrVersion", // deprecated, not used
-		},
-	},
-	{
-		file: "ldmlSupplemental",
-		root: "SupplementalData",
-		top:  []string{"supplementalData"},
-		skipElem: []string{
-			"cldrVersion", // deprecated, not used
-		},
-		forceRepeat: []string{
-			"plurals", // data defined in plurals.xml and ordinals.xml
-		},
-	},
-	{
-		file: "ldml",
-		root: "LDML",
-		top: []string{
-			"ldml", "collation", "calendar", "timeZoneNames", "localeDisplayNames", "numbers",
-		},
-		skipElem: []string{
-			"cp",       // not used anywhere
-			"special",  // not used anywhere
-			"fallback", // deprecated, not used
-			"alias",    // in Common
-			"default",  // in Common
-		},
-		skipAttr: []string{
-			"hiraganaQuarternary", // typo in DTD, correct version included as well
-		},
-		predefined: []string{"rules"},
-	},
-}
-
-var comments = map[string]string{
-	"ldmlBCP47": `
-// LDMLBCP47 holds information on allowable values for various variables in LDML.
-`,
-	"supplementalData": `
-// SupplementalData holds information relevant for internationalization
-// and proper use of CLDR, but that is not contained in the locale hierarchy.
-`,
-	"ldml": `
-// LDML is the top-level type for locale-specific data.
-`,
-	"collation": `
-// Collation contains rules that specify a certain sort-order,
-// as a tailoring of the root order. 
-// The parsed rules are obtained by passing a RuleProcessor to Collation's
-// Process method.
-`,
-	"calendar": `
-// Calendar specifies the fields used for formatting and parsing dates and times.
-// The month and quarter names are identified numerically, starting at 1.
-// The day (of the week) names are identified with short strings, since there is
-// no universally-accepted numeric designation.
-`,
-	"dates": `
-// Dates contains information regarding the format and parsing of dates and times.
-`,
-	"localeDisplayNames": `
-// LocaleDisplayNames specifies localized display names for for scripts, languages,
-// countries, currencies, and variants.
-`,
-	"numbers": `
-// Numbers supplies information for formatting and parsing numbers and currencies.
-`,
-}
-
-type element struct {
-	name      string // XML element name
-	category  string // elements contained by this element
-	signature string // category + attrKey*
-
-	attr []*attribute // attributes supported by this element.
-	sub  []struct {   // parsed and evaluated sub elements of this element.
-		e      *element
-		repeat bool // true if the element needs to be a slice
-	}
-
-	resolved bool // prevent multiple resolutions of this element.
-}
-
-type attribute struct {
-	name string
-	key  string
-	list []string
-
-	tag string // Go tag
-}
-
-var (
-	reHead  = regexp.MustCompile(` *(\w+) +([\w\-]+)`)
-	reAttr  = regexp.MustCompile(` *(\w+) *(?:(\w+)|\(([\w\- \|]+)\)) *(?:#([A-Z]*) *(?:\"([\.\d+])\")?)? *("[\w\-:]*")?`)
-	reElem  = regexp.MustCompile(`^ *(EMPTY|ANY|\(.*\)[\*\+\?]?) *$`)
-	reToken = regexp.MustCompile(`\w\-`)
-)
-
-// builder is used to read in the DTD files from CLDR and generate Go code
-// to be used with the encoding/xml package.
-type builder struct {
-	w       io.Writer
-	index   map[string]*element
-	elem    []*element
-	info    dtd
-	version string
-}
-
-func makeBuilder(w io.Writer, d dtd) builder {
-	return builder{
-		w:     w,
-		index: make(map[string]*element),
-		elem:  []*element{},
-		info:  d,
-	}
-}
-
-// parseDTD parses a DTD file.
-func (b *builder) parseDTD(r io.Reader) {
-	for d := xml.NewDecoder(r); ; {
-		t, err := d.Token()
-		if t == nil {
-			break
-		}
-		failOnError(err)
-		dir, ok := t.(xml.Directive)
-		if !ok {
-			continue
-		}
-		m := reHead.FindSubmatch(dir)
-		dir = dir[len(m[0]):]
-		ename := string(m[2])
-		el, elementFound := b.index[ename]
-		switch string(m[1]) {
-		case "ELEMENT":
-			if elementFound {
-				log.Fatal("parseDTD: duplicate entry for element %q", ename)
-			}
-			m := reElem.FindSubmatch(dir)
-			if m == nil {
-				log.Fatalf("parseDTD: invalid element %q", string(dir))
-			}
-			if len(m[0]) != len(dir) {
-				log.Fatal("parseDTD: invalid element %q", string(dir), len(dir), len(m[0]), string(m[0]))
-			}
-			s := string(m[1])
-			el = &element{
-				name:     ename,
-				category: s,
-			}
-			b.index[ename] = el
-		case "ATTLIST":
-			if !elementFound {
-				log.Fatalf("parseDTD: unknown element %q", ename)
-			}
-			s := string(dir)
-			m := reAttr.FindStringSubmatch(s)
-			if m == nil {
-				log.Fatal(fmt.Errorf("parseDTD: invalid attribute %q", string(dir)))
-			}
-			if m[4] == "FIXED" {
-				b.version = m[5]
-			} else {
-				switch m[1] {
-				case "draft", "references", "alt", "validSubLocales", "standard" /* in Common */ :
-				case "type", "choice":
-				default:
-					el.attr = append(el.attr, &attribute{
-						name: m[1],
-						key:  s,
-						list: reToken.FindAllString(m[3], -1),
-					})
-					el.signature = fmt.Sprintf("%s=%s+%s", el.signature, m[1], m[2])
-				}
-			}
-		}
-	}
-}
-
-var reCat = regexp.MustCompile(`[ ,\|]*(?:(\(|\)|\#?[\w_-]+)([\*\+\?]?))?`)
-
-// resolve takes a parsed element and converts it into structured data
-// that can be used to generate the XML code.
-func (b *builder) resolve(e *element) {
-	if e.resolved {
-		return
-	}
-	b.elem = append(b.elem, e)
-	e.resolved = true
-	s := e.category
-	found := make(map[string]bool)
-	sequenceStart := []int{}
-	for len(s) > 0 {
-		m := reCat.FindStringSubmatch(s)
-		if m == nil {
-			log.Fatalf("%s: invalid category string %q", e.name, s)
-		}
-		repeat := m[2] == "*" || m[2] == "+" || in(b.info.forceRepeat, m[1])
-		switch m[1] {
-		case "":
-		case "(":
-			sequenceStart = append(sequenceStart, len(e.sub))
-		case ")":
-			if len(sequenceStart) == 0 {
-				log.Fatalf("%s: unmatched closing parenthesis", e.name)
-			}
-			for i := sequenceStart[len(sequenceStart)-1]; i < len(e.sub); i++ {
-				e.sub[i].repeat = e.sub[i].repeat || repeat
-			}
-			sequenceStart = sequenceStart[:len(sequenceStart)-1]
-		default:
-			if in(b.info.skipElem, m[1]) {
-			} else if sub, ok := b.index[m[1]]; ok {
-				if !found[sub.name] {
-					e.sub = append(e.sub, struct {
-						e      *element
-						repeat bool
-					}{sub, repeat})
-					found[sub.name] = true
-					b.resolve(sub)
-				}
-			} else if m[1] == "#PCDATA" || m[1] == "ANY" {
-			} else if m[1] != "EMPTY" {
-				log.Fatalf("resolve:%s: element %q not found", e.name, m[1])
-			}
-		}
-		s = s[len(m[0]):]
-	}
-}
-
-// return true if s is contained in set.
-func in(set []string, s string) bool {
-	for _, v := range set {
-		if v == s {
-			return true
-		}
-	}
-	return false
-}
-
-var repl = strings.NewReplacer("-", " ", "_", " ")
-
-// title puts the first character or each character following '_' in title case and
-// removes all occurrences of '_'.
-func title(s string) string {
-	return strings.Replace(strings.Title(repl.Replace(s)), " ", "", -1)
-}
-
-// writeElem generates Go code for a single element, recursively.
-func (b *builder) writeElem(tab int, e *element) {
-	p := func(f string, x ...interface{}) {
-		f = strings.Replace(f, "\n", "\n"+strings.Repeat("\t", tab), -1)
-		fmt.Fprintf(b.w, f, x...)
-	}
-	if len(e.sub) == 0 && len(e.attr) == 0 {
-		p("Common")
-		return
-	}
-	p("struct {")
-	tab++
-	p("\nCommon")
-	for _, attr := range e.attr {
-		if !in(b.info.skipAttr, attr.name) {
-			p("\n%s string `xml:\"%s,attr\"`", title(attr.name), attr.name)
-		}
-	}
-	for _, sub := range e.sub {
-		if in(b.info.predefined, sub.e.name) {
-			p("\n%sElem", sub.e.name)
-			continue
-		}
-		if in(b.info.skipElem, sub.e.name) {
-			continue
-		}
-		p("\n%s ", title(sub.e.name))
-		if sub.repeat {
-			p("[]")
-		}
-		p("*")
-		if in(b.info.top, sub.e.name) {
-			p(title(sub.e.name))
-		} else {
-			b.writeElem(tab, sub.e)
-		}
-		p(" `xml:\"%s\"`", sub.e.name)
-	}
-	tab--
-	p("\n}")
-}
-
-// write generates the Go XML code.
-func (b *builder) write() {
-	for i, name := range b.info.top {
-		e := b.index[name]
-		if e != nil {
-			fmt.Fprintf(b.w, comments[name])
-			name := title(e.name)
-			if i == 0 {
-				name = b.info.root
-			}
-			fmt.Fprintf(b.w, "type %s ", name)
-			b.writeElem(0, e)
-			fmt.Fprint(b.w, "\n")
-		}
-	}
-}

+ 0 - 602
vendor/golang.org/x/text/unicode/cldr/resolve.go

@@ -1,602 +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 cldr
-
-// This file implements the various inheritance constructs defined by LDML.
-// See http://www.unicode.org/reports/tr35/#Inheritance_and_Validity
-// for more details.
-
-import (
-	"fmt"
-	"log"
-	"reflect"
-	"regexp"
-	"sort"
-	"strings"
-)
-
-// fieldIter iterates over fields in a struct. It includes
-// fields of embedded structs.
-type fieldIter struct {
-	v        reflect.Value
-	index, n []int
-}
-
-func iter(v reflect.Value) fieldIter {
-	if v.Kind() != reflect.Struct {
-		log.Panicf("value %v must be a struct", v)
-	}
-	i := fieldIter{
-		v:     v,
-		index: []int{0},
-		n:     []int{v.NumField()},
-	}
-	i.descent()
-	return i
-}
-
-func (i *fieldIter) descent() {
-	for f := i.field(); f.Anonymous && f.Type.NumField() > 0; f = i.field() {
-		i.index = append(i.index, 0)
-		i.n = append(i.n, f.Type.NumField())
-	}
-}
-
-func (i *fieldIter) done() bool {
-	return len(i.index) == 1 && i.index[0] >= i.n[0]
-}
-
-func skip(f reflect.StructField) bool {
-	return !f.Anonymous && (f.Name[0] < 'A' || f.Name[0] > 'Z')
-}
-
-func (i *fieldIter) next() {
-	for {
-		k := len(i.index) - 1
-		i.index[k]++
-		if i.index[k] < i.n[k] {
-			if !skip(i.field()) {
-				break
-			}
-		} else {
-			if k == 0 {
-				return
-			}
-			i.index = i.index[:k]
-			i.n = i.n[:k]
-		}
-	}
-	i.descent()
-}
-
-func (i *fieldIter) value() reflect.Value {
-	return i.v.FieldByIndex(i.index)
-}
-
-func (i *fieldIter) field() reflect.StructField {
-	return i.v.Type().FieldByIndex(i.index)
-}
-
-type visitor func(v reflect.Value) error
-
-var stopDescent = fmt.Errorf("do not recurse")
-
-func (f visitor) visit(x interface{}) error {
-	return f.visitRec(reflect.ValueOf(x))
-}
-
-// visit recursively calls f on all nodes in v.
-func (f visitor) visitRec(v reflect.Value) error {
-	if v.Kind() == reflect.Ptr {
-		if v.IsNil() {
-			return nil
-		}
-		return f.visitRec(v.Elem())
-	}
-	if err := f(v); err != nil {
-		if err == stopDescent {
-			return nil
-		}
-		return err
-	}
-	switch v.Kind() {
-	case reflect.Struct:
-		for i := iter(v); !i.done(); i.next() {
-			if err := f.visitRec(i.value()); err != nil {
-				return err
-			}
-		}
-	case reflect.Slice:
-		for i := 0; i < v.Len(); i++ {
-			if err := f.visitRec(v.Index(i)); err != nil {
-				return err
-			}
-		}
-	}
-	return nil
-}
-
-// getPath is used for error reporting purposes only.
-func getPath(e Elem) string {
-	if e == nil {
-		return "<nil>"
-	}
-	if e.enclosing() == nil {
-		return e.GetCommon().name
-	}
-	if e.GetCommon().Type == "" {
-		return fmt.Sprintf("%s.%s", getPath(e.enclosing()), e.GetCommon().name)
-	}
-	return fmt.Sprintf("%s.%s[type=%s]", getPath(e.enclosing()), e.GetCommon().name, e.GetCommon().Type)
-}
-
-// xmlName returns the xml name of the element or attribute
-func xmlName(f reflect.StructField) (name string, attr bool) {
-	tags := strings.Split(f.Tag.Get("xml"), ",")
-	for _, s := range tags {
-		attr = attr || s == "attr"
-	}
-	return tags[0], attr
-}
-
-func findField(v reflect.Value, key string) (reflect.Value, error) {
-	v = reflect.Indirect(v)
-	for i := iter(v); !i.done(); i.next() {
-		if n, _ := xmlName(i.field()); n == key {
-			return i.value(), nil
-		}
-	}
-	return reflect.Value{}, fmt.Errorf("cldr: no field %q in element %#v", key, v.Interface())
-}
-
-var xpathPart = regexp.MustCompile(`(\pL+)(?:\[@(\pL+)='([\w-]+)'\])?`)
-
-func walkXPath(e Elem, path string) (res Elem, err error) {
-	for _, c := range strings.Split(path, "/") {
-		if c == ".." {
-			if e = e.enclosing(); e == nil {
-				panic("path ..")
-				return nil, fmt.Errorf(`cldr: ".." moves past root in path %q`, path)
-			}
-			continue
-		} else if c == "" {
-			continue
-		}
-		m := xpathPart.FindStringSubmatch(c)
-		if len(m) == 0 || len(m[0]) != len(c) {
-			return nil, fmt.Errorf("cldr: syntax error in path component %q", c)
-		}
-		v, err := findField(reflect.ValueOf(e), m[1])
-		if err != nil {
-			return nil, err
-		}
-		switch v.Kind() {
-		case reflect.Slice:
-			i := 0
-			if m[2] != "" || v.Len() > 1 {
-				if m[2] == "" {
-					m[2] = "type"
-					if m[3] = e.GetCommon().Default(); m[3] == "" {
-						return nil, fmt.Errorf("cldr: type selector or default value needed for element %s", m[1])
-					}
-				}
-				for ; i < v.Len(); i++ {
-					vi := v.Index(i)
-					key, err := findField(vi.Elem(), m[2])
-					if err != nil {
-						return nil, err
-					}
-					key = reflect.Indirect(key)
-					if key.Kind() == reflect.String && key.String() == m[3] {
-						break
-					}
-				}
-			}
-			if i == v.Len() || v.Index(i).IsNil() {
-				return nil, fmt.Errorf("no %s found with %s==%s", m[1], m[2], m[3])
-			}
-			e = v.Index(i).Interface().(Elem)
-		case reflect.Ptr:
-			if v.IsNil() {
-				return nil, fmt.Errorf("cldr: element %q not found within element %q", m[1], e.GetCommon().name)
-			}
-			var ok bool
-			if e, ok = v.Interface().(Elem); !ok {
-				return nil, fmt.Errorf("cldr: %q is not an XML element", m[1])
-			} else if m[2] != "" || m[3] != "" {
-				return nil, fmt.Errorf("cldr: no type selector allowed for element %s", m[1])
-			}
-		default:
-			return nil, fmt.Errorf("cldr: %q is not an XML element", m[1])
-		}
-	}
-	return e, nil
-}
-
-const absPrefix = "//ldml/"
-
-func (cldr *CLDR) resolveAlias(e Elem, src, path string) (res Elem, err error) {
-	if src != "locale" {
-		if !strings.HasPrefix(path, absPrefix) {
-			return nil, fmt.Errorf("cldr: expected absolute path, found %q", path)
-		}
-		path = path[len(absPrefix):]
-		if e, err = cldr.resolve(src); err != nil {
-			return nil, err
-		}
-	}
-	return walkXPath(e, path)
-}
-
-func (cldr *CLDR) resolveAndMergeAlias(e Elem) error {
-	alias := e.GetCommon().Alias
-	if alias == nil {
-		return nil
-	}
-	a, err := cldr.resolveAlias(e, alias.Source, alias.Path)
-	if err != nil {
-		return fmt.Errorf("%v: error evaluating path %q: %v", getPath(e), alias.Path, err)
-	}
-	// Ensure alias node was already evaluated. TODO: avoid double evaluation.
-	err = cldr.resolveAndMergeAlias(a)
-	v := reflect.ValueOf(e).Elem()
-	for i := iter(reflect.ValueOf(a).Elem()); !i.done(); i.next() {
-		if vv := i.value(); vv.Kind() != reflect.Ptr || !vv.IsNil() {
-			if _, attr := xmlName(i.field()); !attr {
-				v.FieldByIndex(i.index).Set(vv)
-			}
-		}
-	}
-	return err
-}
-
-func (cldr *CLDR) aliasResolver() visitor {
-	return func(v reflect.Value) (err error) {
-		if e, ok := v.Addr().Interface().(Elem); ok {
-			err = cldr.resolveAndMergeAlias(e)
-			if err == nil && blocking[e.GetCommon().name] {
-				return stopDescent
-			}
-		}
-		return err
-	}
-}
-
-// elements within blocking elements do not inherit.
-// Taken from CLDR's supplementalMetaData.xml.
-var blocking = map[string]bool{
-	"identity":         true,
-	"supplementalData": true,
-	"cldrTest":         true,
-	"collation":        true,
-	"transform":        true,
-}
-
-// Distinguishing attributes affect inheritance; two elements with different
-// distinguishing attributes are treated as different for purposes of inheritance,
-// except when such attributes occur in the indicated elements.
-// Taken from CLDR's supplementalMetaData.xml.
-var distinguishing = map[string][]string{
-	"key":        nil,
-	"request_id": nil,
-	"id":         nil,
-	"registry":   nil,
-	"alt":        nil,
-	"iso4217":    nil,
-	"iso3166":    nil,
-	"mzone":      nil,
-	"from":       nil,
-	"to":         nil,
-	"type": []string{
-		"abbreviationFallback",
-		"default",
-		"mapping",
-		"measurementSystem",
-		"preferenceOrdering",
-	},
-	"numberSystem": nil,
-}
-
-func in(set []string, s string) bool {
-	for _, v := range set {
-		if v == s {
-			return true
-		}
-	}
-	return false
-}
-
-// attrKey computes a key based on the distinguishable attributes of
-// an element and it's values.
-func attrKey(v reflect.Value, exclude ...string) string {
-	parts := []string{}
-	ename := v.Interface().(Elem).GetCommon().name
-	v = v.Elem()
-	for i := iter(v); !i.done(); i.next() {
-		if name, attr := xmlName(i.field()); attr {
-			if except, ok := distinguishing[name]; ok && !in(exclude, name) && !in(except, ename) {
-				v := i.value()
-				if v.Kind() == reflect.Ptr {
-					v = v.Elem()
-				}
-				if v.IsValid() {
-					parts = append(parts, fmt.Sprintf("%s=%s", name, v.String()))
-				}
-			}
-		}
-	}
-	sort.Strings(parts)
-	return strings.Join(parts, ";")
-}
-
-// Key returns a key for e derived from all distinguishing attributes
-// except those specified by exclude.
-func Key(e Elem, exclude ...string) string {
-	return attrKey(reflect.ValueOf(e), exclude...)
-}
-
-// linkEnclosing sets the enclosing element as well as the name
-// for all sub-elements of child, recursively.
-func linkEnclosing(parent, child Elem) {
-	child.setEnclosing(parent)
-	v := reflect.ValueOf(child).Elem()
-	for i := iter(v); !i.done(); i.next() {
-		vf := i.value()
-		if vf.Kind() == reflect.Slice {
-			for j := 0; j < vf.Len(); j++ {
-				linkEnclosing(child, vf.Index(j).Interface().(Elem))
-			}
-		} else if vf.Kind() == reflect.Ptr && !vf.IsNil() && vf.Elem().Kind() == reflect.Struct {
-			linkEnclosing(child, vf.Interface().(Elem))
-		}
-	}
-}
-
-func setNames(e Elem, name string) {
-	e.setName(name)
-	v := reflect.ValueOf(e).Elem()
-	for i := iter(v); !i.done(); i.next() {
-		vf := i.value()
-		name, _ = xmlName(i.field())
-		if vf.Kind() == reflect.Slice {
-			for j := 0; j < vf.Len(); j++ {
-				setNames(vf.Index(j).Interface().(Elem), name)
-			}
-		} else if vf.Kind() == reflect.Ptr && !vf.IsNil() && vf.Elem().Kind() == reflect.Struct {
-			setNames(vf.Interface().(Elem), name)
-		}
-	}
-}
-
-// deepCopy copies elements of v recursively.  All elements of v that may
-// be modified by inheritance are explicitly copied.
-func deepCopy(v reflect.Value) reflect.Value {
-	switch v.Kind() {
-	case reflect.Ptr:
-		if v.IsNil() || v.Elem().Kind() != reflect.Struct {
-			return v
-		}
-		nv := reflect.New(v.Elem().Type())
-		nv.Elem().Set(v.Elem())
-		deepCopyRec(nv.Elem(), v.Elem())
-		return nv
-	case reflect.Slice:
-		nv := reflect.MakeSlice(v.Type(), v.Len(), v.Len())
-		for i := 0; i < v.Len(); i++ {
-			deepCopyRec(nv.Index(i), v.Index(i))
-		}
-		return nv
-	}
-	panic("deepCopy: must be called with pointer or slice")
-}
-
-// deepCopyRec is only called by deepCopy.
-func deepCopyRec(nv, v reflect.Value) {
-	if v.Kind() == reflect.Struct {
-		t := v.Type()
-		for i := 0; i < v.NumField(); i++ {
-			if name, attr := xmlName(t.Field(i)); name != "" && !attr {
-				deepCopyRec(nv.Field(i), v.Field(i))
-			}
-		}
-	} else {
-		nv.Set(deepCopy(v))
-	}
-}
-
-// newNode is used to insert a missing node during inheritance.
-func (cldr *CLDR) newNode(v, enc reflect.Value) reflect.Value {
-	n := reflect.New(v.Type())
-	for i := iter(v); !i.done(); i.next() {
-		if name, attr := xmlName(i.field()); name == "" || attr {
-			n.Elem().FieldByIndex(i.index).Set(i.value())
-		}
-	}
-	n.Interface().(Elem).GetCommon().setEnclosing(enc.Addr().Interface().(Elem))
-	return n
-}
-
-// v, parent must be pointers to struct
-func (cldr *CLDR) inheritFields(v, parent reflect.Value) (res reflect.Value, err error) {
-	t := v.Type()
-	nv := reflect.New(t)
-	nv.Elem().Set(v)
-	for i := iter(v); !i.done(); i.next() {
-		vf := i.value()
-		f := i.field()
-		name, attr := xmlName(f)
-		if name == "" || attr {
-			continue
-		}
-		pf := parent.FieldByIndex(i.index)
-		if blocking[name] {
-			if vf.IsNil() {
-				vf = pf
-			}
-			nv.Elem().FieldByIndex(i.index).Set(deepCopy(vf))
-			continue
-		}
-		switch f.Type.Kind() {
-		case reflect.Ptr:
-			if f.Type.Elem().Kind() == reflect.Struct {
-				if !vf.IsNil() {
-					if vf, err = cldr.inheritStructPtr(vf, pf); err != nil {
-						return reflect.Value{}, err
-					}
-					vf.Interface().(Elem).setEnclosing(nv.Interface().(Elem))
-					nv.Elem().FieldByIndex(i.index).Set(vf)
-				} else if !pf.IsNil() {
-					n := cldr.newNode(pf.Elem(), v)
-					if vf, err = cldr.inheritStructPtr(n, pf); err != nil {
-						return reflect.Value{}, err
-					}
-					vf.Interface().(Elem).setEnclosing(nv.Interface().(Elem))
-					nv.Elem().FieldByIndex(i.index).Set(vf)
-				}
-			}
-		case reflect.Slice:
-			vf, err := cldr.inheritSlice(nv.Elem(), vf, pf)
-			if err != nil {
-				return reflect.Zero(t), err
-			}
-			nv.Elem().FieldByIndex(i.index).Set(vf)
-		}
-	}
-	return nv, nil
-}
-
-func root(e Elem) *LDML {
-	for ; e.enclosing() != nil; e = e.enclosing() {
-	}
-	return e.(*LDML)
-}
-
-// inheritStructPtr first merges possible aliases in with v and then inherits
-// any underspecified elements from parent.
-func (cldr *CLDR) inheritStructPtr(v, parent reflect.Value) (r reflect.Value, err error) {
-	if !v.IsNil() {
-		e := v.Interface().(Elem).GetCommon()
-		alias := e.Alias
-		if alias == nil && !parent.IsNil() {
-			alias = parent.Interface().(Elem).GetCommon().Alias
-		}
-		if alias != nil {
-			a, err := cldr.resolveAlias(v.Interface().(Elem), alias.Source, alias.Path)
-			if a != nil {
-				if v, err = cldr.inheritFields(v.Elem(), reflect.ValueOf(a).Elem()); err != nil {
-					return reflect.Value{}, err
-				}
-			}
-		}
-		if !parent.IsNil() {
-			return cldr.inheritFields(v.Elem(), parent.Elem())
-		}
-	} else if parent.IsNil() {
-		panic("should not reach here")
-	}
-	return v, nil
-}
-
-// Must be slice of struct pointers.
-func (cldr *CLDR) inheritSlice(enc, v, parent reflect.Value) (res reflect.Value, err error) {
-	t := v.Type()
-	index := make(map[string]reflect.Value)
-	if !v.IsNil() {
-		for i := 0; i < v.Len(); i++ {
-			vi := v.Index(i)
-			key := attrKey(vi)
-			index[key] = vi
-		}
-	}
-	if !parent.IsNil() {
-		for i := 0; i < parent.Len(); i++ {
-			vi := parent.Index(i)
-			key := attrKey(vi)
-			if w, ok := index[key]; ok {
-				index[key], err = cldr.inheritStructPtr(w, vi)
-			} else {
-				n := cldr.newNode(vi.Elem(), enc)
-				index[key], err = cldr.inheritStructPtr(n, vi)
-			}
-			index[key].Interface().(Elem).setEnclosing(enc.Addr().Interface().(Elem))
-			if err != nil {
-				return v, err
-			}
-		}
-	}
-	keys := make([]string, 0, len(index))
-	for k, _ := range index {
-		keys = append(keys, k)
-	}
-	sort.Strings(keys)
-	sl := reflect.MakeSlice(t, len(index), len(index))
-	for i, k := range keys {
-		sl.Index(i).Set(index[k])
-	}
-	return sl, nil
-}
-
-func parentLocale(loc string) string {
-	parts := strings.Split(loc, "_")
-	if len(parts) == 1 {
-		return "root"
-	}
-	parts = parts[:len(parts)-1]
-	key := strings.Join(parts, "_")
-	return key
-}
-
-func (cldr *CLDR) resolve(loc string) (res *LDML, err error) {
-	if r := cldr.resolved[loc]; r != nil {
-		return r, nil
-	}
-	x := cldr.RawLDML(loc)
-	if x == nil {
-		return nil, fmt.Errorf("cldr: unknown locale %q", loc)
-	}
-	var v reflect.Value
-	if loc == "root" {
-		x = deepCopy(reflect.ValueOf(x)).Interface().(*LDML)
-		linkEnclosing(nil, x)
-		err = cldr.aliasResolver().visit(x)
-	} else {
-		key := parentLocale(loc)
-		var parent *LDML
-		for ; cldr.locale[key] == nil; key = parentLocale(key) {
-		}
-		if parent, err = cldr.resolve(key); err != nil {
-			return nil, err
-		}
-		v, err = cldr.inheritFields(reflect.ValueOf(x).Elem(), reflect.ValueOf(parent).Elem())
-		x = v.Interface().(*LDML)
-		linkEnclosing(nil, x)
-	}
-	if err != nil {
-		return nil, err
-	}
-	cldr.resolved[loc] = x
-	return x, err
-}
-
-// finalize finalizes the initialization of the raw LDML structs.  It also
-// removed unwanted fields, as specified by filter, so that they will not
-// be unnecessarily evaluated.
-func (cldr *CLDR) finalize(filter []string) {
-	for _, x := range cldr.locale {
-		if filter != nil {
-			v := reflect.ValueOf(x).Elem()
-			t := v.Type()
-			for i := 0; i < v.NumField(); i++ {
-				f := t.Field(i)
-				name, _ := xmlName(f)
-				if name != "" && name != "identity" && !in(filter, name) {
-					v.Field(i).Set(reflect.Zero(f.Type))
-				}
-			}
-		}
-		linkEnclosing(nil, x) // for resolving aliases and paths
-		setNames(x, "ldml")
-	}
-}

+ 0 - 144
vendor/golang.org/x/text/unicode/cldr/slice.go

@@ -1,144 +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 cldr
-
-import (
-	"fmt"
-	"reflect"
-	"sort"
-)
-
-// Slice provides utilities for modifying slices of elements.
-// It can be wrapped around any slice of which the element type implements
-// interface Elem.
-type Slice struct {
-	ptr reflect.Value
-	typ reflect.Type
-}
-
-// Value returns the reflect.Value of the underlying slice.
-func (s *Slice) Value() reflect.Value {
-	return s.ptr.Elem()
-}
-
-// MakeSlice wraps a pointer to a slice of Elems.
-// It replaces the array pointed to by the slice so that subsequent modifications
-// do not alter the data in a CLDR type.
-// It panics if an incorrect type is passed.
-func MakeSlice(slicePtr interface{}) Slice {
-	ptr := reflect.ValueOf(slicePtr)
-	if ptr.Kind() != reflect.Ptr {
-		panic(fmt.Sprintf("MakeSlice: argument must be pointer to slice, found %v", ptr.Type()))
-	}
-	sl := ptr.Elem()
-	if sl.Kind() != reflect.Slice {
-		panic(fmt.Sprintf("MakeSlice: argument must point to a slice, found %v", sl.Type()))
-	}
-	intf := reflect.TypeOf((*Elem)(nil)).Elem()
-	if !sl.Type().Elem().Implements(intf) {
-		panic(fmt.Sprintf("MakeSlice: element type of slice (%v) does not implement Elem", sl.Type().Elem()))
-	}
-	nsl := reflect.MakeSlice(sl.Type(), sl.Len(), sl.Len())
-	reflect.Copy(nsl, sl)
-	sl.Set(nsl)
-	return Slice{
-		ptr: ptr,
-		typ: sl.Type().Elem().Elem(),
-	}
-}
-
-func (s Slice) indexForAttr(a string) []int {
-	for i := iter(reflect.Zero(s.typ)); !i.done(); i.next() {
-		if n, _ := xmlName(i.field()); n == a {
-			return i.index
-		}
-	}
-	panic(fmt.Sprintf("MakeSlice: no attribute %q for type %v", a, s.typ))
-}
-
-// Filter filters s to only include elements for which fn returns true.
-func (s Slice) Filter(fn func(e Elem) bool) {
-	k := 0
-	sl := s.Value()
-	for i := 0; i < sl.Len(); i++ {
-		vi := sl.Index(i)
-		if fn(vi.Interface().(Elem)) {
-			sl.Index(k).Set(vi)
-			k++
-		}
-	}
-	sl.Set(sl.Slice(0, k))
-}
-
-// Group finds elements in s for which fn returns the same value and groups
-// them in a new Slice.
-func (s Slice) Group(fn func(e Elem) string) []Slice {
-	m := make(map[string][]reflect.Value)
-	sl := s.Value()
-	for i := 0; i < sl.Len(); i++ {
-		vi := sl.Index(i)
-		key := fn(vi.Interface().(Elem))
-		m[key] = append(m[key], vi)
-	}
-	keys := []string{}
-	for k, _ := range m {
-		keys = append(keys, k)
-	}
-	sort.Strings(keys)
-	res := []Slice{}
-	for _, k := range keys {
-		nsl := reflect.New(sl.Type())
-		nsl.Elem().Set(reflect.Append(nsl.Elem(), m[k]...))
-		res = append(res, MakeSlice(nsl.Interface()))
-	}
-	return res
-}
-
-// SelectAnyOf filters s to contain only elements for which attr matches
-// any of the values.
-func (s Slice) SelectAnyOf(attr string, values ...string) {
-	index := s.indexForAttr(attr)
-	s.Filter(func(e Elem) bool {
-		vf := reflect.ValueOf(e).Elem().FieldByIndex(index)
-		return in(values, vf.String())
-	})
-}
-
-// SelectOnePerGroup filters s to include at most one element e per group of
-// elements matching Key(attr), where e has an attribute a that matches any
-// the values in v.
-// If more than one element in a group matches a value in v preference
-// is given to the element that matches the first value in v.
-func (s Slice) SelectOnePerGroup(a string, v []string) {
-	index := s.indexForAttr(a)
-	grouped := s.Group(func(e Elem) string { return Key(e, a) })
-	sl := s.Value()
-	sl.Set(sl.Slice(0, 0))
-	for _, g := range grouped {
-		e := reflect.Value{}
-		found := len(v)
-		gsl := g.Value()
-		for i := 0; i < gsl.Len(); i++ {
-			vi := gsl.Index(i).Elem().FieldByIndex(index)
-			j := 0
-			for ; j < len(v) && v[j] != vi.String(); j++ {
-			}
-			if j < found {
-				found = j
-				e = gsl.Index(i)
-			}
-		}
-		if found < len(v) {
-			sl.Set(reflect.Append(sl, e))
-		}
-	}
-}
-
-// SelectDraft drops all elements from the list with a draft level smaller than d
-// and selects the highest draft level of the remaining.
-// This method assumes that the input CLDR is canonicalized.
-func (s Slice) SelectDraft(d Draft) {
-	s.SelectOnePerGroup("draft", drafts[len(drafts)-2-int(d):])
-}

+ 0 - 1456
vendor/golang.org/x/text/unicode/cldr/xml.go

@@ -1,1456 +0,0 @@
-// This file was generated by go generate; DO NOT EDIT
-
-package cldr
-
-// LDMLBCP47 holds information on allowable values for various variables in LDML.
-type LDMLBCP47 struct {
-	Common
-	Version *struct {
-		Common
-		Number string `xml:"number,attr"`
-	} `xml:"version"`
-	Generation *struct {
-		Common
-		Date string `xml:"date,attr"`
-	} `xml:"generation"`
-	Keyword []*struct {
-		Common
-		Key []*struct {
-			Common
-			Extension   string `xml:"extension,attr"`
-			Name        string `xml:"name,attr"`
-			Description string `xml:"description,attr"`
-			Deprecated  string `xml:"deprecated,attr"`
-			Preferred   string `xml:"preferred,attr"`
-			Alias       string `xml:"alias,attr"`
-			ValueType   string `xml:"valueType,attr"`
-			Since       string `xml:"since,attr"`
-			Type        []*struct {
-				Common
-				Name        string `xml:"name,attr"`
-				Description string `xml:"description,attr"`
-				Deprecated  string `xml:"deprecated,attr"`
-				Preferred   string `xml:"preferred,attr"`
-				Alias       string `xml:"alias,attr"`
-				Since       string `xml:"since,attr"`
-			} `xml:"type"`
-		} `xml:"key"`
-	} `xml:"keyword"`
-	Attribute []*struct {
-		Common
-		Name        string `xml:"name,attr"`
-		Description string `xml:"description,attr"`
-		Deprecated  string `xml:"deprecated,attr"`
-		Preferred   string `xml:"preferred,attr"`
-		Since       string `xml:"since,attr"`
-	} `xml:"attribute"`
-}
-
-// SupplementalData holds information relevant for internationalization
-// and proper use of CLDR, but that is not contained in the locale hierarchy.
-type SupplementalData struct {
-	Common
-	Version *struct {
-		Common
-		Number string `xml:"number,attr"`
-	} `xml:"version"`
-	Generation *struct {
-		Common
-		Date string `xml:"date,attr"`
-	} `xml:"generation"`
-	CurrencyData *struct {
-		Common
-		Fractions []*struct {
-			Common
-			Info []*struct {
-				Common
-				Iso4217      string `xml:"iso4217,attr"`
-				Digits       string `xml:"digits,attr"`
-				Rounding     string `xml:"rounding,attr"`
-				CashDigits   string `xml:"cashDigits,attr"`
-				CashRounding string `xml:"cashRounding,attr"`
-			} `xml:"info"`
-		} `xml:"fractions"`
-		Region []*struct {
-			Common
-			Iso3166  string `xml:"iso3166,attr"`
-			Currency []*struct {
-				Common
-				Before       string `xml:"before,attr"`
-				From         string `xml:"from,attr"`
-				To           string `xml:"to,attr"`
-				Iso4217      string `xml:"iso4217,attr"`
-				Digits       string `xml:"digits,attr"`
-				Rounding     string `xml:"rounding,attr"`
-				CashRounding string `xml:"cashRounding,attr"`
-				Tender       string `xml:"tender,attr"`
-				Alternate    []*struct {
-					Common
-					Iso4217 string `xml:"iso4217,attr"`
-				} `xml:"alternate"`
-			} `xml:"currency"`
-		} `xml:"region"`
-	} `xml:"currencyData"`
-	TerritoryContainment *struct {
-		Common
-		Group []*struct {
-			Common
-			Contains string `xml:"contains,attr"`
-			Grouping string `xml:"grouping,attr"`
-			Status   string `xml:"status,attr"`
-		} `xml:"group"`
-	} `xml:"territoryContainment"`
-	SubdivisionContainment *struct {
-		Common
-		Subgroup []*struct {
-			Common
-			Subtype  string `xml:"subtype,attr"`
-			Contains string `xml:"contains,attr"`
-		} `xml:"subgroup"`
-	} `xml:"subdivisionContainment"`
-	LanguageData *struct {
-		Common
-		Language []*struct {
-			Common
-			Scripts     string `xml:"scripts,attr"`
-			Territories string `xml:"territories,attr"`
-			Variants    string `xml:"variants,attr"`
-		} `xml:"language"`
-	} `xml:"languageData"`
-	TerritoryInfo *struct {
-		Common
-		Territory []*struct {
-			Common
-			Gdp                string `xml:"gdp,attr"`
-			LiteracyPercent    string `xml:"literacyPercent,attr"`
-			Population         string `xml:"population,attr"`
-			LanguagePopulation []*struct {
-				Common
-				WritingPercent    string `xml:"writingPercent,attr"`
-				PopulationPercent string `xml:"populationPercent,attr"`
-				OfficialStatus    string `xml:"officialStatus,attr"`
-			} `xml:"languagePopulation"`
-		} `xml:"territory"`
-	} `xml:"territoryInfo"`
-	PostalCodeData *struct {
-		Common
-		PostCodeRegex []*struct {
-			Common
-			TerritoryId string `xml:"territoryId,attr"`
-		} `xml:"postCodeRegex"`
-	} `xml:"postalCodeData"`
-	CalendarData *struct {
-		Common
-		Calendar []*struct {
-			Common
-			Territories    string  `xml:"territories,attr"`
-			CalendarSystem *Common `xml:"calendarSystem"`
-			Eras           *struct {
-				Common
-				Era []*struct {
-					Common
-					Start string `xml:"start,attr"`
-					End   string `xml:"end,attr"`
-				} `xml:"era"`
-			} `xml:"eras"`
-		} `xml:"calendar"`
-	} `xml:"calendarData"`
-	CalendarPreferenceData *struct {
-		Common
-		CalendarPreference []*struct {
-			Common
-			Territories string `xml:"territories,attr"`
-			Ordering    string `xml:"ordering,attr"`
-		} `xml:"calendarPreference"`
-	} `xml:"calendarPreferenceData"`
-	WeekData *struct {
-		Common
-		MinDays []*struct {
-			Common
-			Count       string `xml:"count,attr"`
-			Territories string `xml:"territories,attr"`
-		} `xml:"minDays"`
-		FirstDay []*struct {
-			Common
-			Day         string `xml:"day,attr"`
-			Territories string `xml:"territories,attr"`
-		} `xml:"firstDay"`
-		WeekendStart []*struct {
-			Common
-			Day         string `xml:"day,attr"`
-			Territories string `xml:"territories,attr"`
-		} `xml:"weekendStart"`
-		WeekendEnd []*struct {
-			Common
-			Day         string `xml:"day,attr"`
-			Territories string `xml:"territories,attr"`
-		} `xml:"weekendEnd"`
-		WeekOfPreference []*struct {
-			Common
-			Locales  string `xml:"locales,attr"`
-			Ordering string `xml:"ordering,attr"`
-		} `xml:"weekOfPreference"`
-	} `xml:"weekData"`
-	TimeData *struct {
-		Common
-		Hours []*struct {
-			Common
-			Allowed   string `xml:"allowed,attr"`
-			Preferred string `xml:"preferred,attr"`
-			Regions   string `xml:"regions,attr"`
-		} `xml:"hours"`
-	} `xml:"timeData"`
-	MeasurementData *struct {
-		Common
-		MeasurementSystem []*struct {
-			Common
-			Category    string `xml:"category,attr"`
-			Territories string `xml:"territories,attr"`
-		} `xml:"measurementSystem"`
-		PaperSize []*struct {
-			Common
-			Territories string `xml:"territories,attr"`
-		} `xml:"paperSize"`
-	} `xml:"measurementData"`
-	UnitPreferenceData *struct {
-		Common
-		UnitPreferences []*struct {
-			Common
-			Category       string `xml:"category,attr"`
-			Usage          string `xml:"usage,attr"`
-			Scope          string `xml:"scope,attr"`
-			UnitPreference []*struct {
-				Common
-				Regions string `xml:"regions,attr"`
-			} `xml:"unitPreference"`
-		} `xml:"unitPreferences"`
-	} `xml:"unitPreferenceData"`
-	TimezoneData *struct {
-		Common
-		MapTimezones []*struct {
-			Common
-			OtherVersion string `xml:"otherVersion,attr"`
-			TypeVersion  string `xml:"typeVersion,attr"`
-			MapZone      []*struct {
-				Common
-				Other     string `xml:"other,attr"`
-				Territory string `xml:"territory,attr"`
-			} `xml:"mapZone"`
-		} `xml:"mapTimezones"`
-		ZoneFormatting []*struct {
-			Common
-			Multizone   string `xml:"multizone,attr"`
-			TzidVersion string `xml:"tzidVersion,attr"`
-			ZoneItem    []*struct {
-				Common
-				Territory string `xml:"territory,attr"`
-				Aliases   string `xml:"aliases,attr"`
-			} `xml:"zoneItem"`
-		} `xml:"zoneFormatting"`
-	} `xml:"timezoneData"`
-	Characters *struct {
-		Common
-		CharacterFallback []*struct {
-			Common
-			Character []*struct {
-				Common
-				Value      string    `xml:"value,attr"`
-				Substitute []*Common `xml:"substitute"`
-			} `xml:"character"`
-		} `xml:"character-fallback"`
-	} `xml:"characters"`
-	Transforms *struct {
-		Common
-		Transform []*struct {
-			Common
-			Source        string    `xml:"source,attr"`
-			Target        string    `xml:"target,attr"`
-			Variant       string    `xml:"variant,attr"`
-			Direction     string    `xml:"direction,attr"`
-			Alias         string    `xml:"alias,attr"`
-			BackwardAlias string    `xml:"backwardAlias,attr"`
-			Visibility    string    `xml:"visibility,attr"`
-			Comment       []*Common `xml:"comment"`
-			TRule         []*Common `xml:"tRule"`
-		} `xml:"transform"`
-	} `xml:"transforms"`
-	Metadata *struct {
-		Common
-		AttributeOrder *Common `xml:"attributeOrder"`
-		ElementOrder   *Common `xml:"elementOrder"`
-		SerialElements *Common `xml:"serialElements"`
-		Suppress       *struct {
-			Common
-			Attributes []*struct {
-				Common
-				Element        string `xml:"element,attr"`
-				Attribute      string `xml:"attribute,attr"`
-				AttributeValue string `xml:"attributeValue,attr"`
-			} `xml:"attributes"`
-		} `xml:"suppress"`
-		Validity *struct {
-			Common
-			Variable []*struct {
-				Common
-				Id string `xml:"id,attr"`
-			} `xml:"variable"`
-			AttributeValues []*struct {
-				Common
-				Dtds       string `xml:"dtds,attr"`
-				Elements   string `xml:"elements,attr"`
-				Attributes string `xml:"attributes,attr"`
-				Order      string `xml:"order,attr"`
-			} `xml:"attributeValues"`
-		} `xml:"validity"`
-		Alias *struct {
-			Common
-			LanguageAlias []*struct {
-				Common
-				Replacement string `xml:"replacement,attr"`
-				Reason      string `xml:"reason,attr"`
-			} `xml:"languageAlias"`
-			ScriptAlias []*struct {
-				Common
-				Replacement string `xml:"replacement,attr"`
-				Reason      string `xml:"reason,attr"`
-			} `xml:"scriptAlias"`
-			TerritoryAlias []*struct {
-				Common
-				Replacement string `xml:"replacement,attr"`
-				Reason      string `xml:"reason,attr"`
-			} `xml:"territoryAlias"`
-			SubdivisionAlias []*struct {
-				Common
-				Replacement string `xml:"replacement,attr"`
-				Reason      string `xml:"reason,attr"`
-			} `xml:"subdivisionAlias"`
-			VariantAlias []*struct {
-				Common
-				Replacement string `xml:"replacement,attr"`
-				Reason      string `xml:"reason,attr"`
-			} `xml:"variantAlias"`
-			ZoneAlias []*struct {
-				Common
-				Replacement string `xml:"replacement,attr"`
-				Reason      string `xml:"reason,attr"`
-			} `xml:"zoneAlias"`
-		} `xml:"alias"`
-		Deprecated *struct {
-			Common
-			DeprecatedItems []*struct {
-				Common
-				Elements   string `xml:"elements,attr"`
-				Attributes string `xml:"attributes,attr"`
-				Values     string `xml:"values,attr"`
-			} `xml:"deprecatedItems"`
-		} `xml:"deprecated"`
-		Distinguishing *struct {
-			Common
-			DistinguishingItems []*struct {
-				Common
-				Exclude    string `xml:"exclude,attr"`
-				Elements   string `xml:"elements,attr"`
-				Attributes string `xml:"attributes,attr"`
-			} `xml:"distinguishingItems"`
-		} `xml:"distinguishing"`
-		Blocking *struct {
-			Common
-			BlockingItems []*struct {
-				Common
-				Elements string `xml:"elements,attr"`
-			} `xml:"blockingItems"`
-		} `xml:"blocking"`
-		CoverageAdditions *struct {
-			Common
-			LanguageCoverage []*struct {
-				Common
-				Values string `xml:"values,attr"`
-			} `xml:"languageCoverage"`
-			ScriptCoverage []*struct {
-				Common
-				Values string `xml:"values,attr"`
-			} `xml:"scriptCoverage"`
-			TerritoryCoverage []*struct {
-				Common
-				Values string `xml:"values,attr"`
-			} `xml:"territoryCoverage"`
-			CurrencyCoverage []*struct {
-				Common
-				Values string `xml:"values,attr"`
-			} `xml:"currencyCoverage"`
-			TimezoneCoverage []*struct {
-				Common
-				Values string `xml:"values,attr"`
-			} `xml:"timezoneCoverage"`
-		} `xml:"coverageAdditions"`
-		SkipDefaultLocale *struct {
-			Common
-			Services string `xml:"services,attr"`
-		} `xml:"skipDefaultLocale"`
-		DefaultContent *struct {
-			Common
-			Locales string `xml:"locales,attr"`
-		} `xml:"defaultContent"`
-	} `xml:"metadata"`
-	CodeMappings *struct {
-		Common
-		LanguageCodes []*struct {
-			Common
-			Alpha3 string `xml:"alpha3,attr"`
-		} `xml:"languageCodes"`
-		TerritoryCodes []*struct {
-			Common
-			Numeric  string `xml:"numeric,attr"`
-			Alpha3   string `xml:"alpha3,attr"`
-			Fips10   string `xml:"fips10,attr"`
-			Internet string `xml:"internet,attr"`
-		} `xml:"territoryCodes"`
-		CurrencyCodes []*struct {
-			Common
-			Numeric string `xml:"numeric,attr"`
-		} `xml:"currencyCodes"`
-	} `xml:"codeMappings"`
-	ParentLocales *struct {
-		Common
-		ParentLocale []*struct {
-			Common
-			Parent  string `xml:"parent,attr"`
-			Locales string `xml:"locales,attr"`
-		} `xml:"parentLocale"`
-	} `xml:"parentLocales"`
-	LikelySubtags *struct {
-		Common
-		LikelySubtag []*struct {
-			Common
-			From string `xml:"from,attr"`
-			To   string `xml:"to,attr"`
-		} `xml:"likelySubtag"`
-	} `xml:"likelySubtags"`
-	MetazoneInfo *struct {
-		Common
-		Timezone []*struct {
-			Common
-			UsesMetazone []*struct {
-				Common
-				From  string `xml:"from,attr"`
-				To    string `xml:"to,attr"`
-				Mzone string `xml:"mzone,attr"`
-			} `xml:"usesMetazone"`
-		} `xml:"timezone"`
-	} `xml:"metazoneInfo"`
-	Plurals []*struct {
-		Common
-		PluralRules []*struct {
-			Common
-			Locales    string `xml:"locales,attr"`
-			PluralRule []*struct {
-				Common
-				Count string `xml:"count,attr"`
-			} `xml:"pluralRule"`
-		} `xml:"pluralRules"`
-		PluralRanges []*struct {
-			Common
-			Locales     string `xml:"locales,attr"`
-			PluralRange []*struct {
-				Common
-				Start  string `xml:"start,attr"`
-				End    string `xml:"end,attr"`
-				Result string `xml:"result,attr"`
-			} `xml:"pluralRange"`
-		} `xml:"pluralRanges"`
-	} `xml:"plurals"`
-	TelephoneCodeData *struct {
-		Common
-		CodesByTerritory []*struct {
-			Common
-			Territory            string `xml:"territory,attr"`
-			TelephoneCountryCode []*struct {
-				Common
-				Code string `xml:"code,attr"`
-				From string `xml:"from,attr"`
-				To   string `xml:"to,attr"`
-			} `xml:"telephoneCountryCode"`
-		} `xml:"codesByTerritory"`
-	} `xml:"telephoneCodeData"`
-	NumberingSystems *struct {
-		Common
-		NumberingSystem []*struct {
-			Common
-			Id     string `xml:"id,attr"`
-			Radix  string `xml:"radix,attr"`
-			Digits string `xml:"digits,attr"`
-			Rules  string `xml:"rules,attr"`
-		} `xml:"numberingSystem"`
-	} `xml:"numberingSystems"`
-	Bcp47KeywordMappings *struct {
-		Common
-		MapKeys *struct {
-			Common
-			KeyMap []*struct {
-				Common
-				Bcp47 string `xml:"bcp47,attr"`
-			} `xml:"keyMap"`
-		} `xml:"mapKeys"`
-		MapTypes []*struct {
-			Common
-			TypeMap []*struct {
-				Common
-				Bcp47 string `xml:"bcp47,attr"`
-			} `xml:"typeMap"`
-		} `xml:"mapTypes"`
-	} `xml:"bcp47KeywordMappings"`
-	Gender *struct {
-		Common
-		PersonList []*struct {
-			Common
-			Locales string `xml:"locales,attr"`
-		} `xml:"personList"`
-	} `xml:"gender"`
-	References *struct {
-		Common
-		Reference []*struct {
-			Common
-			Uri string `xml:"uri,attr"`
-		} `xml:"reference"`
-	} `xml:"references"`
-	LanguageMatching *struct {
-		Common
-		LanguageMatches []*struct {
-			Common
-			LanguageMatch []*struct {
-				Common
-				Desired   string `xml:"desired,attr"`
-				Oneway    string `xml:"oneway,attr"`
-				Percent   string `xml:"percent,attr"`
-				Supported string `xml:"supported,attr"`
-			} `xml:"languageMatch"`
-		} `xml:"languageMatches"`
-	} `xml:"languageMatching"`
-	DayPeriodRuleSet []*struct {
-		Common
-		DayPeriodRules []*struct {
-			Common
-			Locales       string `xml:"locales,attr"`
-			DayPeriodRule []*struct {
-				Common
-				At     string `xml:"at,attr"`
-				After  string `xml:"after,attr"`
-				Before string `xml:"before,attr"`
-				From   string `xml:"from,attr"`
-				To     string `xml:"to,attr"`
-			} `xml:"dayPeriodRule"`
-		} `xml:"dayPeriodRules"`
-	} `xml:"dayPeriodRuleSet"`
-	MetaZones *struct {
-		Common
-		MetazoneInfo *struct {
-			Common
-			Timezone []*struct {
-				Common
-				UsesMetazone []*struct {
-					Common
-					From  string `xml:"from,attr"`
-					To    string `xml:"to,attr"`
-					Mzone string `xml:"mzone,attr"`
-				} `xml:"usesMetazone"`
-			} `xml:"timezone"`
-		} `xml:"metazoneInfo"`
-		MapTimezones *struct {
-			Common
-			OtherVersion string `xml:"otherVersion,attr"`
-			TypeVersion  string `xml:"typeVersion,attr"`
-			MapZone      []*struct {
-				Common
-				Other     string `xml:"other,attr"`
-				Territory string `xml:"territory,attr"`
-			} `xml:"mapZone"`
-		} `xml:"mapTimezones"`
-	} `xml:"metaZones"`
-	PrimaryZones *struct {
-		Common
-		PrimaryZone []*struct {
-			Common
-			Iso3166 string `xml:"iso3166,attr"`
-		} `xml:"primaryZone"`
-	} `xml:"primaryZones"`
-	WindowsZones *struct {
-		Common
-		MapTimezones *struct {
-			Common
-			OtherVersion string `xml:"otherVersion,attr"`
-			TypeVersion  string `xml:"typeVersion,attr"`
-			MapZone      []*struct {
-				Common
-				Other     string `xml:"other,attr"`
-				Territory string `xml:"territory,attr"`
-			} `xml:"mapZone"`
-		} `xml:"mapTimezones"`
-	} `xml:"windowsZones"`
-	CoverageLevels *struct {
-		Common
-		ApprovalRequirements *struct {
-			Common
-			ApprovalRequirement []*struct {
-				Common
-				Votes   string `xml:"votes,attr"`
-				Locales string `xml:"locales,attr"`
-				Paths   string `xml:"paths,attr"`
-			} `xml:"approvalRequirement"`
-		} `xml:"approvalRequirements"`
-		CoverageVariable []*struct {
-			Common
-			Key   string `xml:"key,attr"`
-			Value string `xml:"value,attr"`
-		} `xml:"coverageVariable"`
-		CoverageLevel []*struct {
-			Common
-			InLanguage  string `xml:"inLanguage,attr"`
-			InScript    string `xml:"inScript,attr"`
-			InTerritory string `xml:"inTerritory,attr"`
-			Value       string `xml:"value,attr"`
-			Match       string `xml:"match,attr"`
-		} `xml:"coverageLevel"`
-	} `xml:"coverageLevels"`
-	IdValidity *struct {
-		Common
-		Id []*struct {
-			Common
-			IdStatus string `xml:"idStatus,attr"`
-		} `xml:"id"`
-	} `xml:"idValidity"`
-	RgScope *struct {
-		Common
-		RgPath []*struct {
-			Common
-			Path string `xml:"path,attr"`
-		} `xml:"rgPath"`
-	} `xml:"rgScope"`
-}
-
-// LDML is the top-level type for locale-specific data.
-type LDML struct {
-	Common
-	Version  string `xml:"version,attr"`
-	Identity *struct {
-		Common
-		Version *struct {
-			Common
-			Number string `xml:"number,attr"`
-		} `xml:"version"`
-		Generation *struct {
-			Common
-			Date string `xml:"date,attr"`
-		} `xml:"generation"`
-		Language  *Common `xml:"language"`
-		Script    *Common `xml:"script"`
-		Territory *Common `xml:"territory"`
-		Variant   *Common `xml:"variant"`
-	} `xml:"identity"`
-	LocaleDisplayNames *LocaleDisplayNames `xml:"localeDisplayNames"`
-	Layout             *struct {
-		Common
-		Orientation []*struct {
-			Common
-			Characters     string    `xml:"characters,attr"`
-			Lines          string    `xml:"lines,attr"`
-			CharacterOrder []*Common `xml:"characterOrder"`
-			LineOrder      []*Common `xml:"lineOrder"`
-		} `xml:"orientation"`
-		InList []*struct {
-			Common
-			Casing string `xml:"casing,attr"`
-		} `xml:"inList"`
-		InText []*Common `xml:"inText"`
-	} `xml:"layout"`
-	ContextTransforms *struct {
-		Common
-		ContextTransformUsage []*struct {
-			Common
-			ContextTransform []*Common `xml:"contextTransform"`
-		} `xml:"contextTransformUsage"`
-	} `xml:"contextTransforms"`
-	Characters *struct {
-		Common
-		ExemplarCharacters []*Common `xml:"exemplarCharacters"`
-		Ellipsis           []*Common `xml:"ellipsis"`
-		MoreInformation    []*Common `xml:"moreInformation"`
-		Stopwords          []*struct {
-			Common
-			StopwordList []*Common `xml:"stopwordList"`
-		} `xml:"stopwords"`
-		IndexLabels []*struct {
-			Common
-			IndexSeparator           []*Common `xml:"indexSeparator"`
-			CompressedIndexSeparator []*Common `xml:"compressedIndexSeparator"`
-			IndexRangePattern        []*Common `xml:"indexRangePattern"`
-			IndexLabelBefore         []*Common `xml:"indexLabelBefore"`
-			IndexLabelAfter          []*Common `xml:"indexLabelAfter"`
-			IndexLabel               []*struct {
-				Common
-				IndexSource string `xml:"indexSource,attr"`
-				Priority    string `xml:"priority,attr"`
-			} `xml:"indexLabel"`
-		} `xml:"indexLabels"`
-		Mapping []*struct {
-			Common
-			Registry string `xml:"registry,attr"`
-		} `xml:"mapping"`
-	} `xml:"characters"`
-	Delimiters *struct {
-		Common
-		QuotationStart          []*Common `xml:"quotationStart"`
-		QuotationEnd            []*Common `xml:"quotationEnd"`
-		AlternateQuotationStart []*Common `xml:"alternateQuotationStart"`
-		AlternateQuotationEnd   []*Common `xml:"alternateQuotationEnd"`
-	} `xml:"delimiters"`
-	Measurement *struct {
-		Common
-		MeasurementSystem []*Common `xml:"measurementSystem"`
-		PaperSize         []*struct {
-			Common
-			Height []*Common `xml:"height"`
-			Width  []*Common `xml:"width"`
-		} `xml:"paperSize"`
-	} `xml:"measurement"`
-	Dates *struct {
-		Common
-		LocalizedPatternChars []*Common `xml:"localizedPatternChars"`
-		DateRangePattern      []*Common `xml:"dateRangePattern"`
-		Calendars             *struct {
-			Common
-			Calendar []*Calendar `xml:"calendar"`
-		} `xml:"calendars"`
-		Fields *struct {
-			Common
-			Field []*struct {
-				Common
-				DisplayName []*struct {
-					Common
-					Count string `xml:"count,attr"`
-				} `xml:"displayName"`
-				Relative     []*Common `xml:"relative"`
-				RelativeTime []*struct {
-					Common
-					RelativeTimePattern []*struct {
-						Common
-						Count string `xml:"count,attr"`
-					} `xml:"relativeTimePattern"`
-				} `xml:"relativeTime"`
-				RelativePeriod []*Common `xml:"relativePeriod"`
-			} `xml:"field"`
-		} `xml:"fields"`
-		TimeZoneNames *TimeZoneNames `xml:"timeZoneNames"`
-	} `xml:"dates"`
-	Numbers *Numbers `xml:"numbers"`
-	Units   *struct {
-		Common
-		Unit []*struct {
-			Common
-			DisplayName []*struct {
-				Common
-				Count string `xml:"count,attr"`
-			} `xml:"displayName"`
-			UnitPattern []*struct {
-				Common
-				Count string `xml:"count,attr"`
-			} `xml:"unitPattern"`
-			PerUnitPattern []*Common `xml:"perUnitPattern"`
-		} `xml:"unit"`
-		UnitLength []*struct {
-			Common
-			CompoundUnit []*struct {
-				Common
-				CompoundUnitPattern []*Common `xml:"compoundUnitPattern"`
-			} `xml:"compoundUnit"`
-			Unit []*struct {
-				Common
-				DisplayName []*struct {
-					Common
-					Count string `xml:"count,attr"`
-				} `xml:"displayName"`
-				UnitPattern []*struct {
-					Common
-					Count string `xml:"count,attr"`
-				} `xml:"unitPattern"`
-				PerUnitPattern []*Common `xml:"perUnitPattern"`
-			} `xml:"unit"`
-			CoordinateUnit []*struct {
-				Common
-				CoordinateUnitPattern []*Common `xml:"coordinateUnitPattern"`
-			} `xml:"coordinateUnit"`
-		} `xml:"unitLength"`
-		DurationUnit []*struct {
-			Common
-			DurationUnitPattern []*Common `xml:"durationUnitPattern"`
-		} `xml:"durationUnit"`
-	} `xml:"units"`
-	ListPatterns *struct {
-		Common
-		ListPattern []*struct {
-			Common
-			ListPatternPart []*Common `xml:"listPatternPart"`
-		} `xml:"listPattern"`
-	} `xml:"listPatterns"`
-	Collations *struct {
-		Common
-		Version          string       `xml:"version,attr"`
-		DefaultCollation *Common      `xml:"defaultCollation"`
-		Collation        []*Collation `xml:"collation"`
-	} `xml:"collations"`
-	Posix *struct {
-		Common
-		Messages []*struct {
-			Common
-			Yesstr  []*Common `xml:"yesstr"`
-			Nostr   []*Common `xml:"nostr"`
-			Yesexpr []*Common `xml:"yesexpr"`
-			Noexpr  []*Common `xml:"noexpr"`
-		} `xml:"messages"`
-	} `xml:"posix"`
-	CharacterLabels *struct {
-		Common
-		CharacterLabelPattern []*struct {
-			Common
-			Count string `xml:"count,attr"`
-		} `xml:"characterLabelPattern"`
-		CharacterLabel []*Common `xml:"characterLabel"`
-	} `xml:"characterLabels"`
-	Segmentations *struct {
-		Common
-		Segmentation []*struct {
-			Common
-			Variables *struct {
-				Common
-				Variable []*struct {
-					Common
-					Id string `xml:"id,attr"`
-				} `xml:"variable"`
-			} `xml:"variables"`
-			SegmentRules *struct {
-				Common
-				Rule []*struct {
-					Common
-					Id string `xml:"id,attr"`
-				} `xml:"rule"`
-			} `xml:"segmentRules"`
-			Exceptions *struct {
-				Common
-				Exception []*Common `xml:"exception"`
-			} `xml:"exceptions"`
-			Suppressions *struct {
-				Common
-				Suppression []*Common `xml:"suppression"`
-			} `xml:"suppressions"`
-		} `xml:"segmentation"`
-	} `xml:"segmentations"`
-	Rbnf *struct {
-		Common
-		RulesetGrouping []*struct {
-			Common
-			Ruleset []*struct {
-				Common
-				Access        string `xml:"access,attr"`
-				AllowsParsing string `xml:"allowsParsing,attr"`
-				Rbnfrule      []*struct {
-					Common
-					Value  string `xml:"value,attr"`
-					Radix  string `xml:"radix,attr"`
-					Decexp string `xml:"decexp,attr"`
-				} `xml:"rbnfrule"`
-			} `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 {
-			Common
-			CasingItem []*struct {
-				Common
-				Override   string `xml:"override,attr"`
-				ForceError string `xml:"forceError,attr"`
-			} `xml:"casingItem"`
-		} `xml:"casingData"`
-	} `xml:"metadata"`
-	References *struct {
-		Common
-		Reference []*struct {
-			Common
-			Uri string `xml:"uri,attr"`
-		} `xml:"reference"`
-	} `xml:"references"`
-}
-
-// Collation contains rules that specify a certain sort-order,
-// as a tailoring of the root order.
-// The parsed rules are obtained by passing a RuleProcessor to Collation's
-// Process method.
-type Collation struct {
-	Common
-	Visibility string  `xml:"visibility,attr"`
-	Base       *Common `xml:"base"`
-	Import     []*struct {
-		Common
-		Source string `xml:"source,attr"`
-	} `xml:"import"`
-	Settings *struct {
-		Common
-		Strength           string `xml:"strength,attr"`
-		Alternate          string `xml:"alternate,attr"`
-		Backwards          string `xml:"backwards,attr"`
-		Normalization      string `xml:"normalization,attr"`
-		CaseLevel          string `xml:"caseLevel,attr"`
-		CaseFirst          string `xml:"caseFirst,attr"`
-		HiraganaQuaternary string `xml:"hiraganaQuaternary,attr"`
-		MaxVariable        string `xml:"maxVariable,attr"`
-		Numeric            string `xml:"numeric,attr"`
-		Private            string `xml:"private,attr"`
-		VariableTop        string `xml:"variableTop,attr"`
-		Reorder            string `xml:"reorder,attr"`
-	} `xml:"settings"`
-	SuppressContractions *Common   `xml:"suppress_contractions"`
-	Optimize             *Common   `xml:"optimize"`
-	Cr                   []*Common `xml:"cr"`
-	rulesElem
-}
-
-// Calendar specifies the fields used for formatting and parsing dates and times.
-// The month and quarter names are identified numerically, starting at 1.
-// The day (of the week) names are identified with short strings, since there is
-// no universally-accepted numeric designation.
-type Calendar struct {
-	Common
-	Months *struct {
-		Common
-		MonthContext []*struct {
-			Common
-			MonthWidth []*struct {
-				Common
-				Month []*struct {
-					Common
-					Yeartype string `xml:"yeartype,attr"`
-				} `xml:"month"`
-			} `xml:"monthWidth"`
-		} `xml:"monthContext"`
-	} `xml:"months"`
-	MonthNames *struct {
-		Common
-		Month []*struct {
-			Common
-			Yeartype string `xml:"yeartype,attr"`
-		} `xml:"month"`
-	} `xml:"monthNames"`
-	MonthAbbr *struct {
-		Common
-		Month []*struct {
-			Common
-			Yeartype string `xml:"yeartype,attr"`
-		} `xml:"month"`
-	} `xml:"monthAbbr"`
-	MonthPatterns *struct {
-		Common
-		MonthPatternContext []*struct {
-			Common
-			MonthPatternWidth []*struct {
-				Common
-				MonthPattern []*Common `xml:"monthPattern"`
-			} `xml:"monthPatternWidth"`
-		} `xml:"monthPatternContext"`
-	} `xml:"monthPatterns"`
-	Days *struct {
-		Common
-		DayContext []*struct {
-			Common
-			DayWidth []*struct {
-				Common
-				Day []*Common `xml:"day"`
-			} `xml:"dayWidth"`
-		} `xml:"dayContext"`
-	} `xml:"days"`
-	DayNames *struct {
-		Common
-		Day []*Common `xml:"day"`
-	} `xml:"dayNames"`
-	DayAbbr *struct {
-		Common
-		Day []*Common `xml:"day"`
-	} `xml:"dayAbbr"`
-	Quarters *struct {
-		Common
-		QuarterContext []*struct {
-			Common
-			QuarterWidth []*struct {
-				Common
-				Quarter []*Common `xml:"quarter"`
-			} `xml:"quarterWidth"`
-		} `xml:"quarterContext"`
-	} `xml:"quarters"`
-	Week *struct {
-		Common
-		MinDays []*struct {
-			Common
-			Count string `xml:"count,attr"`
-		} `xml:"minDays"`
-		FirstDay []*struct {
-			Common
-			Day string `xml:"day,attr"`
-		} `xml:"firstDay"`
-		WeekendStart []*struct {
-			Common
-			Day  string `xml:"day,attr"`
-			Time string `xml:"time,attr"`
-		} `xml:"weekendStart"`
-		WeekendEnd []*struct {
-			Common
-			Day  string `xml:"day,attr"`
-			Time string `xml:"time,attr"`
-		} `xml:"weekendEnd"`
-	} `xml:"week"`
-	Am         []*Common `xml:"am"`
-	Pm         []*Common `xml:"pm"`
-	DayPeriods *struct {
-		Common
-		DayPeriodContext []*struct {
-			Common
-			DayPeriodWidth []*struct {
-				Common
-				DayPeriod []*Common `xml:"dayPeriod"`
-			} `xml:"dayPeriodWidth"`
-		} `xml:"dayPeriodContext"`
-	} `xml:"dayPeriods"`
-	Eras *struct {
-		Common
-		EraNames *struct {
-			Common
-			Era []*Common `xml:"era"`
-		} `xml:"eraNames"`
-		EraAbbr *struct {
-			Common
-			Era []*Common `xml:"era"`
-		} `xml:"eraAbbr"`
-		EraNarrow *struct {
-			Common
-			Era []*Common `xml:"era"`
-		} `xml:"eraNarrow"`
-	} `xml:"eras"`
-	CyclicNameSets *struct {
-		Common
-		CyclicNameSet []*struct {
-			Common
-			CyclicNameContext []*struct {
-				Common
-				CyclicNameWidth []*struct {
-					Common
-					CyclicName []*Common `xml:"cyclicName"`
-				} `xml:"cyclicNameWidth"`
-			} `xml:"cyclicNameContext"`
-		} `xml:"cyclicNameSet"`
-	} `xml:"cyclicNameSets"`
-	DateFormats *struct {
-		Common
-		DateFormatLength []*struct {
-			Common
-			DateFormat []*struct {
-				Common
-				Pattern []*struct {
-					Common
-					Numbers string `xml:"numbers,attr"`
-					Count   string `xml:"count,attr"`
-				} `xml:"pattern"`
-				DisplayName []*struct {
-					Common
-					Count string `xml:"count,attr"`
-				} `xml:"displayName"`
-			} `xml:"dateFormat"`
-		} `xml:"dateFormatLength"`
-	} `xml:"dateFormats"`
-	TimeFormats *struct {
-		Common
-		TimeFormatLength []*struct {
-			Common
-			TimeFormat []*struct {
-				Common
-				Pattern []*struct {
-					Common
-					Numbers string `xml:"numbers,attr"`
-					Count   string `xml:"count,attr"`
-				} `xml:"pattern"`
-				DisplayName []*struct {
-					Common
-					Count string `xml:"count,attr"`
-				} `xml:"displayName"`
-			} `xml:"timeFormat"`
-		} `xml:"timeFormatLength"`
-	} `xml:"timeFormats"`
-	DateTimeFormats *struct {
-		Common
-		DateTimeFormatLength []*struct {
-			Common
-			DateTimeFormat []*struct {
-				Common
-				Pattern []*struct {
-					Common
-					Numbers string `xml:"numbers,attr"`
-					Count   string `xml:"count,attr"`
-				} `xml:"pattern"`
-				DisplayName []*struct {
-					Common
-					Count string `xml:"count,attr"`
-				} `xml:"displayName"`
-			} `xml:"dateTimeFormat"`
-		} `xml:"dateTimeFormatLength"`
-		AvailableFormats []*struct {
-			Common
-			DateFormatItem []*struct {
-				Common
-				Id    string `xml:"id,attr"`
-				Count string `xml:"count,attr"`
-			} `xml:"dateFormatItem"`
-		} `xml:"availableFormats"`
-		AppendItems []*struct {
-			Common
-			AppendItem []*struct {
-				Common
-				Request string `xml:"request,attr"`
-			} `xml:"appendItem"`
-		} `xml:"appendItems"`
-		IntervalFormats []*struct {
-			Common
-			IntervalFormatFallback []*Common `xml:"intervalFormatFallback"`
-			IntervalFormatItem     []*struct {
-				Common
-				Id                 string `xml:"id,attr"`
-				GreatestDifference []*struct {
-					Common
-					Id string `xml:"id,attr"`
-				} `xml:"greatestDifference"`
-			} `xml:"intervalFormatItem"`
-		} `xml:"intervalFormats"`
-	} `xml:"dateTimeFormats"`
-	Fields []*struct {
-		Common
-		Field []*struct {
-			Common
-			DisplayName []*struct {
-				Common
-				Count string `xml:"count,attr"`
-			} `xml:"displayName"`
-			Relative     []*Common `xml:"relative"`
-			RelativeTime []*struct {
-				Common
-				RelativeTimePattern []*struct {
-					Common
-					Count string `xml:"count,attr"`
-				} `xml:"relativeTimePattern"`
-			} `xml:"relativeTime"`
-			RelativePeriod []*Common `xml:"relativePeriod"`
-		} `xml:"field"`
-	} `xml:"fields"`
-}
-type TimeZoneNames struct {
-	Common
-	HourFormat           []*Common `xml:"hourFormat"`
-	HoursFormat          []*Common `xml:"hoursFormat"`
-	GmtFormat            []*Common `xml:"gmtFormat"`
-	GmtZeroFormat        []*Common `xml:"gmtZeroFormat"`
-	RegionFormat         []*Common `xml:"regionFormat"`
-	FallbackFormat       []*Common `xml:"fallbackFormat"`
-	FallbackRegionFormat []*Common `xml:"fallbackRegionFormat"`
-	AbbreviationFallback []*Common `xml:"abbreviationFallback"`
-	PreferenceOrdering   []*Common `xml:"preferenceOrdering"`
-	SingleCountries      []*struct {
-		Common
-		List string `xml:"list,attr"`
-	} `xml:"singleCountries"`
-	Zone []*struct {
-		Common
-		Long []*struct {
-			Common
-			Generic  []*Common `xml:"generic"`
-			Standard []*Common `xml:"standard"`
-			Daylight []*Common `xml:"daylight"`
-		} `xml:"long"`
-		Short []*struct {
-			Common
-			Generic  []*Common `xml:"generic"`
-			Standard []*Common `xml:"standard"`
-			Daylight []*Common `xml:"daylight"`
-		} `xml:"short"`
-		CommonlyUsed []*struct {
-			Common
-			Used string `xml:"used,attr"`
-		} `xml:"commonlyUsed"`
-		ExemplarCity []*Common `xml:"exemplarCity"`
-	} `xml:"zone"`
-	Metazone []*struct {
-		Common
-		Long []*struct {
-			Common
-			Generic  []*Common `xml:"generic"`
-			Standard []*Common `xml:"standard"`
-			Daylight []*Common `xml:"daylight"`
-		} `xml:"long"`
-		Short []*struct {
-			Common
-			Generic  []*Common `xml:"generic"`
-			Standard []*Common `xml:"standard"`
-			Daylight []*Common `xml:"daylight"`
-		} `xml:"short"`
-		CommonlyUsed []*struct {
-			Common
-			Used string `xml:"used,attr"`
-		} `xml:"commonlyUsed"`
-	} `xml:"metazone"`
-}
-
-// LocaleDisplayNames specifies localized display names for for scripts, languages,
-// countries, currencies, and variants.
-type LocaleDisplayNames struct {
-	Common
-	LocaleDisplayPattern *struct {
-		Common
-		LocalePattern        []*Common `xml:"localePattern"`
-		LocaleSeparator      []*Common `xml:"localeSeparator"`
-		LocaleKeyTypePattern []*Common `xml:"localeKeyTypePattern"`
-	} `xml:"localeDisplayPattern"`
-	Languages *struct {
-		Common
-		Language []*Common `xml:"language"`
-	} `xml:"languages"`
-	Scripts *struct {
-		Common
-		Script []*Common `xml:"script"`
-	} `xml:"scripts"`
-	Territories *struct {
-		Common
-		Territory []*Common `xml:"territory"`
-	} `xml:"territories"`
-	Subdivisions *struct {
-		Common
-		Subdivision []*Common `xml:"subdivision"`
-	} `xml:"subdivisions"`
-	Variants *struct {
-		Common
-		Variant []*Common `xml:"variant"`
-	} `xml:"variants"`
-	Keys *struct {
-		Common
-		Key []*Common `xml:"key"`
-	} `xml:"keys"`
-	Types *struct {
-		Common
-		Type []*struct {
-			Common
-			Key string `xml:"key,attr"`
-		} `xml:"type"`
-	} `xml:"types"`
-	TransformNames *struct {
-		Common
-		TransformName []*Common `xml:"transformName"`
-	} `xml:"transformNames"`
-	MeasurementSystemNames *struct {
-		Common
-		MeasurementSystemName []*Common `xml:"measurementSystemName"`
-	} `xml:"measurementSystemNames"`
-	CodePatterns *struct {
-		Common
-		CodePattern []*Common `xml:"codePattern"`
-	} `xml:"codePatterns"`
-}
-
-// Numbers supplies information for formatting and parsing numbers and currencies.
-type Numbers struct {
-	Common
-	DefaultNumberingSystem []*Common `xml:"defaultNumberingSystem"`
-	OtherNumberingSystems  []*struct {
-		Common
-		Native      []*Common `xml:"native"`
-		Traditional []*Common `xml:"traditional"`
-		Finance     []*Common `xml:"finance"`
-	} `xml:"otherNumberingSystems"`
-	MinimumGroupingDigits []*Common `xml:"minimumGroupingDigits"`
-	Symbols               []*struct {
-		Common
-		NumberSystem string `xml:"numberSystem,attr"`
-		Decimal      []*struct {
-			Common
-			NumberSystem string `xml:"numberSystem,attr"`
-		} `xml:"decimal"`
-		Group []*struct {
-			Common
-			NumberSystem string `xml:"numberSystem,attr"`
-		} `xml:"group"`
-		List []*struct {
-			Common
-			NumberSystem string `xml:"numberSystem,attr"`
-		} `xml:"list"`
-		PercentSign []*struct {
-			Common
-			NumberSystem string `xml:"numberSystem,attr"`
-		} `xml:"percentSign"`
-		NativeZeroDigit []*struct {
-			Common
-			NumberSystem string `xml:"numberSystem,attr"`
-		} `xml:"nativeZeroDigit"`
-		PatternDigit []*struct {
-			Common
-			NumberSystem string `xml:"numberSystem,attr"`
-		} `xml:"patternDigit"`
-		PlusSign []*struct {
-			Common
-			NumberSystem string `xml:"numberSystem,attr"`
-		} `xml:"plusSign"`
-		MinusSign []*struct {
-			Common
-			NumberSystem string `xml:"numberSystem,attr"`
-		} `xml:"minusSign"`
-		Exponential []*struct {
-			Common
-			NumberSystem string `xml:"numberSystem,attr"`
-		} `xml:"exponential"`
-		SuperscriptingExponent []*Common `xml:"superscriptingExponent"`
-		PerMille               []*struct {
-			Common
-			NumberSystem string `xml:"numberSystem,attr"`
-		} `xml:"perMille"`
-		Infinity []*struct {
-			Common
-			NumberSystem string `xml:"numberSystem,attr"`
-		} `xml:"infinity"`
-		Nan []*struct {
-			Common
-			NumberSystem string `xml:"numberSystem,attr"`
-		} `xml:"nan"`
-		CurrencyDecimal []*struct {
-			Common
-			NumberSystem string `xml:"numberSystem,attr"`
-		} `xml:"currencyDecimal"`
-		CurrencyGroup []*struct {
-			Common
-			NumberSystem string `xml:"numberSystem,attr"`
-		} `xml:"currencyGroup"`
-		TimeSeparator []*Common `xml:"timeSeparator"`
-	} `xml:"symbols"`
-	DecimalFormats []*struct {
-		Common
-		NumberSystem        string `xml:"numberSystem,attr"`
-		DecimalFormatLength []*struct {
-			Common
-			DecimalFormat []*struct {
-				Common
-				Pattern []*struct {
-					Common
-					Numbers string `xml:"numbers,attr"`
-					Count   string `xml:"count,attr"`
-				} `xml:"pattern"`
-			} `xml:"decimalFormat"`
-		} `xml:"decimalFormatLength"`
-	} `xml:"decimalFormats"`
-	ScientificFormats []*struct {
-		Common
-		NumberSystem           string `xml:"numberSystem,attr"`
-		ScientificFormatLength []*struct {
-			Common
-			ScientificFormat []*struct {
-				Common
-				Pattern []*struct {
-					Common
-					Numbers string `xml:"numbers,attr"`
-					Count   string `xml:"count,attr"`
-				} `xml:"pattern"`
-			} `xml:"scientificFormat"`
-		} `xml:"scientificFormatLength"`
-	} `xml:"scientificFormats"`
-	PercentFormats []*struct {
-		Common
-		NumberSystem        string `xml:"numberSystem,attr"`
-		PercentFormatLength []*struct {
-			Common
-			PercentFormat []*struct {
-				Common
-				Pattern []*struct {
-					Common
-					Numbers string `xml:"numbers,attr"`
-					Count   string `xml:"count,attr"`
-				} `xml:"pattern"`
-			} `xml:"percentFormat"`
-		} `xml:"percentFormatLength"`
-	} `xml:"percentFormats"`
-	CurrencyFormats []*struct {
-		Common
-		NumberSystem    string `xml:"numberSystem,attr"`
-		CurrencySpacing []*struct {
-			Common
-			BeforeCurrency []*struct {
-				Common
-				CurrencyMatch    []*Common `xml:"currencyMatch"`
-				SurroundingMatch []*Common `xml:"surroundingMatch"`
-				InsertBetween    []*Common `xml:"insertBetween"`
-			} `xml:"beforeCurrency"`
-			AfterCurrency []*struct {
-				Common
-				CurrencyMatch    []*Common `xml:"currencyMatch"`
-				SurroundingMatch []*Common `xml:"surroundingMatch"`
-				InsertBetween    []*Common `xml:"insertBetween"`
-			} `xml:"afterCurrency"`
-		} `xml:"currencySpacing"`
-		CurrencyFormatLength []*struct {
-			Common
-			CurrencyFormat []*struct {
-				Common
-				Pattern []*struct {
-					Common
-					Numbers string `xml:"numbers,attr"`
-					Count   string `xml:"count,attr"`
-				} `xml:"pattern"`
-			} `xml:"currencyFormat"`
-		} `xml:"currencyFormatLength"`
-		UnitPattern []*struct {
-			Common
-			Count string `xml:"count,attr"`
-		} `xml:"unitPattern"`
-	} `xml:"currencyFormats"`
-	Currencies *struct {
-		Common
-		Currency []*struct {
-			Common
-			Pattern []*struct {
-				Common
-				Numbers string `xml:"numbers,attr"`
-				Count   string `xml:"count,attr"`
-			} `xml:"pattern"`
-			DisplayName []*struct {
-				Common
-				Count string `xml:"count,attr"`
-			} `xml:"displayName"`
-			Symbol  []*Common `xml:"symbol"`
-			Decimal []*struct {
-				Common
-				NumberSystem string `xml:"numberSystem,attr"`
-			} `xml:"decimal"`
-			Group []*struct {
-				Common
-				NumberSystem string `xml:"numberSystem,attr"`
-			} `xml:"group"`
-		} `xml:"currency"`
-	} `xml:"currencies"`
-	MiscPatterns []*struct {
-		Common
-		NumberSystem string `xml:"numberSystem,attr"`
-		Pattern      []*struct {
-			Common
-			Numbers string `xml:"numbers,attr"`
-			Count   string `xml:"count,attr"`
-		} `xml:"pattern"`
-	} `xml:"miscPatterns"`
-}
-
-// Version is the version of CLDR from which the XML definitions are generated.
-const Version = "30"

+ 0 - 978
vendor/golang.org/x/text/unicode/norm/maketables.go

@@ -1,978 +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.
-
-// +build ignore
-
-// Normalization table generator.
-// Data read from the web.
-// See forminfo.go for a description of the trie values associated with each rune.
-
-package main
-
-import (
-	"bytes"
-	"flag"
-	"fmt"
-	"io"
-	"log"
-	"sort"
-	"strconv"
-	"strings"
-
-	"golang.org/x/text/internal/gen"
-	"golang.org/x/text/internal/triegen"
-	"golang.org/x/text/internal/ucd"
-)
-
-func main() {
-	gen.Init()
-	loadUnicodeData()
-	compactCCC()
-	loadCompositionExclusions()
-	completeCharFields(FCanonical)
-	completeCharFields(FCompatibility)
-	computeNonStarterCounts()
-	verifyComputed()
-	printChars()
-	if *test {
-		testDerived()
-		printTestdata()
-	} else {
-		makeTables()
-	}
-}
-
-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
-
-// Quick Check properties of runes allow us to quickly
-// determine whether a rune may occur in a normal form.
-// For a given normal form, a rune may be guaranteed to occur
-// verbatim (QC=Yes), may or may not combine with another
-// rune (QC=Maybe), or may not occur (QC=No).
-type QCResult int
-
-const (
-	QCUnknown QCResult = iota
-	QCYes
-	QCNo
-	QCMaybe
-)
-
-func (r QCResult) String() string {
-	switch r {
-	case QCYes:
-		return "Yes"
-	case QCNo:
-		return "No"
-	case QCMaybe:
-		return "Maybe"
-	}
-	return "***UNKNOWN***"
-}
-
-const (
-	FCanonical     = iota // NFC or NFD
-	FCompatibility        // NFKC or NFKD
-	FNumberOfFormTypes
-)
-
-const (
-	MComposed   = iota // NFC or NFKC
-	MDecomposed        // NFD or NFKD
-	MNumberOfModes
-)
-
-// This contains only the properties we're interested in.
-type Char struct {
-	name          string
-	codePoint     rune  // if zero, this index is not a valid code point.
-	ccc           uint8 // canonical combining class
-	origCCC       uint8
-	excludeInComp bool // from CompositionExclusions.txt
-	compatDecomp  bool // it has a compatibility expansion
-
-	nTrailingNonStarters uint8
-	nLeadingNonStarters  uint8 // must be equal to trailing if non-zero
-
-	forms [FNumberOfFormTypes]FormInfo // For FCanonical and FCompatibility
-
-	state State
-}
-
-var chars = make([]Char, MaxChar+1)
-var cccMap = make(map[uint8]uint8)
-
-func (c Char) String() string {
-	buf := new(bytes.Buffer)
-
-	fmt.Fprintf(buf, "%U [%s]:\n", c.codePoint, c.name)
-	fmt.Fprintf(buf, "  ccc: %v\n", c.ccc)
-	fmt.Fprintf(buf, "  excludeInComp: %v\n", c.excludeInComp)
-	fmt.Fprintf(buf, "  compatDecomp: %v\n", c.compatDecomp)
-	fmt.Fprintf(buf, "  state: %v\n", c.state)
-	fmt.Fprintf(buf, "  NFC:\n")
-	fmt.Fprint(buf, c.forms[FCanonical])
-	fmt.Fprintf(buf, "  NFKC:\n")
-	fmt.Fprint(buf, c.forms[FCompatibility])
-
-	return buf.String()
-}
-
-// In UnicodeData.txt, some ranges are marked like this:
-//	3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
-//	4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
-// parseCharacter keeps a state variable indicating the weirdness.
-type State int
-
-const (
-	SNormal State = iota // known to be zero for the type
-	SFirst
-	SLast
-	SMissing
-)
-
-var lastChar = rune('\u0000')
-
-func (c Char) isValid() bool {
-	return c.codePoint != 0 && c.state != SMissing
-}
-
-type FormInfo struct {
-	quickCheck [MNumberOfModes]QCResult // index: MComposed or MDecomposed
-	verified   [MNumberOfModes]bool     // index: MComposed or MDecomposed
-
-	combinesForward  bool // May combine with rune on the right
-	combinesBackward bool // May combine with rune on the left
-	isOneWay         bool // Never appears in result
-	inDecomp         bool // Some decompositions result in this char.
-	decomp           Decomposition
-	expandedDecomp   Decomposition
-}
-
-func (f FormInfo) String() string {
-	buf := bytes.NewBuffer(make([]byte, 0))
-
-	fmt.Fprintf(buf, "    quickCheck[C]: %v\n", f.quickCheck[MComposed])
-	fmt.Fprintf(buf, "    quickCheck[D]: %v\n", f.quickCheck[MDecomposed])
-	fmt.Fprintf(buf, "    cmbForward: %v\n", f.combinesForward)
-	fmt.Fprintf(buf, "    cmbBackward: %v\n", f.combinesBackward)
-	fmt.Fprintf(buf, "    isOneWay: %v\n", f.isOneWay)
-	fmt.Fprintf(buf, "    inDecomp: %v\n", f.inDecomp)
-	fmt.Fprintf(buf, "    decomposition: %X\n", f.decomp)
-	fmt.Fprintf(buf, "    expandedDecomp: %X\n", f.expandedDecomp)
-
-	return buf.String()
-}
-
-type Decomposition []rune
-
-func parseDecomposition(s string, skipfirst bool) (a []rune, err error) {
-	decomp := strings.Split(s, " ")
-	if len(decomp) > 0 && skipfirst {
-		decomp = decomp[1:]
-	}
-	for _, d := range decomp {
-		point, err := strconv.ParseUint(d, 16, 64)
-		if err != nil {
-			return a, err
-		}
-		a = append(a, rune(point))
-	}
-	return a, nil
-}
-
-func loadUnicodeData() {
-	f := gen.OpenUCDFile("UnicodeData.txt")
-	defer f.Close()
-	p := ucd.New(f)
-	for p.Next() {
-		r := p.Rune(ucd.CodePoint)
-		char := &chars[r]
-
-		char.ccc = uint8(p.Uint(ucd.CanonicalCombiningClass))
-		decmap := p.String(ucd.DecompMapping)
-
-		exp, err := parseDecomposition(decmap, false)
-		isCompat := false
-		if err != nil {
-			if len(decmap) > 0 {
-				exp, err = parseDecomposition(decmap, true)
-				if err != nil {
-					log.Fatalf(`%U: bad decomp |%v|: "%s"`, r, decmap, err)
-				}
-				isCompat = true
-			}
-		}
-
-		char.name = p.String(ucd.Name)
-		char.codePoint = r
-		char.forms[FCompatibility].decomp = exp
-		if !isCompat {
-			char.forms[FCanonical].decomp = exp
-		} else {
-			char.compatDecomp = true
-		}
-		if len(decmap) > 0 {
-			char.forms[FCompatibility].decomp = exp
-		}
-	}
-	if err := p.Err(); err != nil {
-		log.Fatal(err)
-	}
-}
-
-// compactCCC converts the sparse set of CCC values to a continguous one,
-// reducing the number of bits needed from 8 to 6.
-func compactCCC() {
-	m := make(map[uint8]uint8)
-	for i := range chars {
-		c := &chars[i]
-		m[c.ccc] = 0
-	}
-	cccs := []int{}
-	for v, _ := range m {
-		cccs = append(cccs, int(v))
-	}
-	sort.Ints(cccs)
-	for i, c := range cccs {
-		cccMap[uint8(i)] = uint8(c)
-		m[uint8(c)] = uint8(i)
-	}
-	for i := range chars {
-		c := &chars[i]
-		c.origCCC = c.ccc
-		c.ccc = m[c.ccc]
-	}
-	if len(m) >= 1<<6 {
-		log.Fatalf("too many difference CCC values: %d >= 64", len(m))
-	}
-}
-
-// CompositionExclusions.txt has form:
-// 0958    # ...
-// See http://unicode.org/reports/tr44/ for full explanation
-func loadCompositionExclusions() {
-	f := gen.OpenUCDFile("CompositionExclusions.txt")
-	defer f.Close()
-	p := ucd.New(f)
-	for p.Next() {
-		c := &chars[p.Rune(0)]
-		if c.excludeInComp {
-			log.Fatalf("%U: Duplicate entry in exclusions.", c.codePoint)
-		}
-		c.excludeInComp = true
-	}
-	if e := p.Err(); e != nil {
-		log.Fatal(e)
-	}
-}
-
-// hasCompatDecomp returns true if any of the recursive
-// decompositions contains a compatibility expansion.
-// In this case, the character may not occur in NFK*.
-func hasCompatDecomp(r rune) bool {
-	c := &chars[r]
-	if c.compatDecomp {
-		return true
-	}
-	for _, d := range c.forms[FCompatibility].decomp {
-		if hasCompatDecomp(d) {
-			return true
-		}
-	}
-	return false
-}
-
-// Hangul related constants.
-const (
-	HangulBase = 0xAC00
-	HangulEnd  = 0xD7A4 // hangulBase + Jamo combinations (19 * 21 * 28)
-
-	JamoLBase = 0x1100
-	JamoLEnd  = 0x1113
-	JamoVBase = 0x1161
-	JamoVEnd  = 0x1176
-	JamoTBase = 0x11A8
-	JamoTEnd  = 0x11C3
-
-	JamoLVTCount = 19 * 21 * 28
-	JamoTCount   = 28
-)
-
-func isHangul(r rune) bool {
-	return HangulBase <= r && r < HangulEnd
-}
-
-func isHangulWithoutJamoT(r rune) bool {
-	if !isHangul(r) {
-		return false
-	}
-	r -= HangulBase
-	return r < JamoLVTCount && r%JamoTCount == 0
-}
-
-func ccc(r rune) uint8 {
-	return chars[r].ccc
-}
-
-// Insert a rune in a buffer, ordered by Canonical Combining Class.
-func insertOrdered(b Decomposition, r rune) Decomposition {
-	n := len(b)
-	b = append(b, 0)
-	cc := ccc(r)
-	if cc > 0 {
-		// Use bubble sort.
-		for ; n > 0; n-- {
-			if ccc(b[n-1]) <= cc {
-				break
-			}
-			b[n] = b[n-1]
-		}
-	}
-	b[n] = r
-	return b
-}
-
-// Recursively decompose.
-func decomposeRecursive(form int, r rune, d Decomposition) Decomposition {
-	dcomp := chars[r].forms[form].decomp
-	if len(dcomp) == 0 {
-		return insertOrdered(d, r)
-	}
-	for _, c := range dcomp {
-		d = decomposeRecursive(form, c, d)
-	}
-	return d
-}
-
-func completeCharFields(form int) {
-	// Phase 0: pre-expand decomposition.
-	for i := range chars {
-		f := &chars[i].forms[form]
-		if len(f.decomp) == 0 {
-			continue
-		}
-		exp := make(Decomposition, 0)
-		for _, c := range f.decomp {
-			exp = decomposeRecursive(form, c, exp)
-		}
-		f.expandedDecomp = exp
-	}
-
-	// Phase 1: composition exclusion, mark decomposition.
-	for i := range chars {
-		c := &chars[i]
-		f := &c.forms[form]
-
-		// Marks script-specific exclusions and version restricted.
-		f.isOneWay = c.excludeInComp
-
-		// Singletons
-		f.isOneWay = f.isOneWay || len(f.decomp) == 1
-
-		// Non-starter decompositions
-		if len(f.decomp) > 1 {
-			chk := c.ccc != 0 || chars[f.decomp[0]].ccc != 0
-			f.isOneWay = f.isOneWay || chk
-		}
-
-		// Runes that decompose into more than two runes.
-		f.isOneWay = f.isOneWay || len(f.decomp) > 2
-
-		if form == FCompatibility {
-			f.isOneWay = f.isOneWay || hasCompatDecomp(c.codePoint)
-		}
-
-		for _, r := range f.decomp {
-			chars[r].forms[form].inDecomp = true
-		}
-	}
-
-	// Phase 2: forward and backward combining.
-	for i := range chars {
-		c := &chars[i]
-		f := &c.forms[form]
-
-		if !f.isOneWay && len(f.decomp) == 2 {
-			f0 := &chars[f.decomp[0]].forms[form]
-			f1 := &chars[f.decomp[1]].forms[form]
-			if !f0.isOneWay {
-				f0.combinesForward = true
-			}
-			if !f1.isOneWay {
-				f1.combinesBackward = true
-			}
-		}
-		if isHangulWithoutJamoT(rune(i)) {
-			f.combinesForward = true
-		}
-	}
-
-	// Phase 3: quick check values.
-	for i := range chars {
-		c := &chars[i]
-		f := &c.forms[form]
-
-		switch {
-		case len(f.decomp) > 0:
-			f.quickCheck[MDecomposed] = QCNo
-		case isHangul(rune(i)):
-			f.quickCheck[MDecomposed] = QCNo
-		default:
-			f.quickCheck[MDecomposed] = QCYes
-		}
-		switch {
-		case f.isOneWay:
-			f.quickCheck[MComposed] = QCNo
-		case (i & 0xffff00) == JamoLBase:
-			f.quickCheck[MComposed] = QCYes
-			if JamoLBase <= i && i < JamoLEnd {
-				f.combinesForward = true
-			}
-			if JamoVBase <= i && i < JamoVEnd {
-				f.quickCheck[MComposed] = QCMaybe
-				f.combinesBackward = true
-				f.combinesForward = true
-			}
-			if JamoTBase <= i && i < JamoTEnd {
-				f.quickCheck[MComposed] = QCMaybe
-				f.combinesBackward = true
-			}
-		case !f.combinesBackward:
-			f.quickCheck[MComposed] = QCYes
-		default:
-			f.quickCheck[MComposed] = QCMaybe
-		}
-	}
-}
-
-func computeNonStarterCounts() {
-	// Phase 4: leading and trailing non-starter count
-	for i := range chars {
-		c := &chars[i]
-
-		runes := []rune{rune(i)}
-		// We always use FCompatibility so that the CGJ insertion points do not
-		// change for repeated normalizations with different forms.
-		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 cr := &chars[r]; cr.ccc == 0 && !cr.forms[FCompatibility].combinesBackward {
-				break
-			}
-			c.nLeadingNonStarters++
-		}
-		for i := len(runes) - 1; i >= 0; i-- {
-			if cr := &chars[runes[i]]; cr.ccc == 0 && !cr.forms[FCompatibility].combinesBackward {
-				break
-			}
-			c.nTrailingNonStarters++
-		}
-		if c.nTrailingNonStarters > 3 {
-			log.Fatalf("%U: Decomposition with more than 3 (%d) trailing modifiers (%U)", i, c.nTrailingNonStarters, runes)
-		}
-
-		if isHangul(rune(i)) {
-			c.nTrailingNonStarters = 2
-			if isHangulWithoutJamoT(rune(i)) {
-				c.nTrailingNonStarters = 1
-			}
-		}
-
-		if l, t := c.nLeadingNonStarters, c.nTrailingNonStarters; l > 0 && l != t {
-			log.Fatalf("%U: number of leading and trailing non-starters should be equal (%d vs %d)", i, l, t)
-		}
-		if t := c.nTrailingNonStarters; t > 3 {
-			log.Fatalf("%U: number of trailing non-starters is %d > 3", t)
-		}
-	}
-}
-
-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.Fprintf(w, "\n// Bytes %x - %x\n", i, i+63)
-		case i%8 == 0:
-			fmt.Fprintf(w, "\n")
-		}
-		fmt.Fprintf(w, "0x%.2X, ", c)
-	}
-	fmt.Fprint(w, "\n}\n\n")
-}
-
-// See forminfo.go for format.
-func makeEntry(f *FormInfo, c *Char) uint16 {
-	e := uint16(0)
-	if r := c.codePoint; HangulBase <= r && r < HangulEnd {
-		e |= 0x40
-	}
-	if f.combinesForward {
-		e |= 0x20
-	}
-	if f.quickCheck[MDecomposed] == QCNo {
-		e |= 0x4
-	}
-	switch f.quickCheck[MComposed] {
-	case QCYes:
-	case QCNo:
-		e |= 0x10
-	case QCMaybe:
-		e |= 0x18
-	default:
-		log.Fatalf("Illegal quickcheck value %v.", f.quickCheck[MComposed])
-	}
-	e |= uint16(c.nTrailingNonStarters)
-	return e
-}
-
-// decompSet keeps track of unique decompositions, grouped by whether
-// the decomposition is followed by a trailing and/or leading CCC.
-type decompSet [7]map[string]bool
-
-const (
-	normalDecomp = iota
-	firstMulti
-	firstCCC
-	endMulti
-	firstLeadingCCC
-	firstCCCZeroExcept
-	firstStarterWithNLead
-	lastDecomp
-)
-
-var cname = []string{"firstMulti", "firstCCC", "endMulti", "firstLeadingCCC", "firstCCCZeroExcept", "firstStarterWithNLead", "lastDecomp"}
-
-func makeDecompSet() decompSet {
-	m := decompSet{}
-	for i := range m {
-		m[i] = make(map[string]bool)
-	}
-	return m
-}
-func (m *decompSet) insert(key int, s string) {
-	m[key][s] = true
-}
-
-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"
-			log.Fatalf(msg, r, len(s), max)
-		}
-		head := uint8(len(s))
-		if f.quickCheck[MComposed] != QCYes {
-			head |= 0x40
-		}
-		if f.combinesForward {
-			head |= 0x80
-		}
-		s = string([]byte{head}) + s
-
-		lccc := ccc(d[0])
-		tccc := ccc(d[len(d)-1])
-		cc := ccc(r)
-		if cc != 0 && lccc == 0 && tccc == 0 {
-			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)"
-			log.Fatalf(msg, r, lccc, tccc)
-		}
-		index := normalDecomp
-		nTrail := chars[r].nTrailingNonStarters
-		if tccc > 0 || lccc > 0 || nTrail > 0 {
-			tccc <<= 2
-			tccc |= nTrail
-			s += string([]byte{tccc})
-			index = endMulti
-			for _, r := range d[1:] {
-				if ccc(r) == 0 {
-					index = firstCCC
-				}
-			}
-			if lccc > 0 {
-				s += string([]byte{lccc})
-				if index == firstCCC {
-					log.Fatalf("%U: multi-segment decomposition not supported for decompositions with leading CCC != 0", r)
-				}
-				index = firstLeadingCCC
-			}
-			if cc != lccc {
-				if cc != 0 {
-					log.Fatalf("%U: for lccc != ccc, expected ccc to be 0; was %d", r, cc)
-				}
-				index = firstCCCZeroExcept
-			}
-		} else if len(d) > 1 {
-			index = firstMulti
-		}
-		return index, s
-	}
-
-	decompSet := makeDecompSet()
-	const nLeadStr = "\x00\x01" // 0-byte length and tccc with nTrail.
-	decompSet.insert(firstStarterWithNLead, nLeadStr)
-
-	// Store the uniqued decompositions in a byte buffer,
-	// preceded by their byte length.
-	for _, c := range chars {
-		for _, f := range c.forms {
-			if len(f.expandedDecomp) == 0 {
-				continue
-			}
-			if f.combinesBackward {
-				log.Fatalf("%U: combinesBackward and decompose", c.codePoint)
-			}
-			index, s := mkstr(c.codePoint, &f)
-			decompSet.insert(index, s)
-		}
-	}
-
-	decompositions := bytes.NewBuffer(make([]byte, 0, 10000))
-	size := 0
-	positionMap := make(map[string]uint16)
-	decompositions.WriteString("\000")
-	fmt.Fprintln(w, "const (")
-	for i, m := range decompSet {
-		sa := []string{}
-		for s := range m {
-			sa = append(sa, s)
-		}
-		sort.Strings(sa)
-		for _, s := range sa {
-			p := decompositions.Len()
-			decompositions.WriteString(s)
-			positionMap[s] = uint16(p)
-		}
-		if cname[i] != "" {
-			fmt.Fprintf(w, "%s = 0x%X\n", cname[i], decompositions.Len())
-		}
-	}
-	fmt.Fprintln(w, "maxDecomp = 0x8000")
-	fmt.Fprintln(w, ")")
-	b := decompositions.Bytes()
-	printBytes(w, b, "decomps")
-	size += len(b)
-
-	varnames := []string{"nfc", "nfkc"}
-	for i := 0; i < FNumberOfFormTypes; i++ {
-		trie := triegen.NewTrie(varnames[i])
-
-		for r, c := range chars {
-			f := c.forms[i]
-			d := f.expandedDecomp
-			if len(d) != 0 {
-				_, key := mkstr(c.codePoint, &f)
-				trie.Insert(rune(r), uint64(positionMap[key]))
-				if c.ccc != ccc(d[0]) {
-					// We assume the lead ccc of a decomposition !=0 in this case.
-					if ccc(d[0]) == 0 {
-						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 {
-				// Handle cases where it can't be detected that the nLead should be equal
-				// to nTrail.
-				trie.Insert(c.codePoint, uint64(positionMap[nLeadStr]))
-			} else if v := makeEntry(&f, &c)<<8 | uint16(c.ccc); v != 0 {
-				trie.Insert(c.codePoint, uint64(0x8000|v))
-			}
-		}
-		sz, err := trie.Gen(w, triegen.Compact(&normCompacter{name: varnames[i]}))
-		if err != nil {
-			log.Fatal(err)
-		}
-		size += sz
-	}
-	return size
-}
-
-func contains(sa []string, s string) bool {
-	for _, a := range sa {
-		if a == s {
-			return true
-		}
-	}
-	return false
-}
-
-func makeTables() {
-	w := &bytes.Buffer{}
-
-	size := 0
-	if *tablelist == "" {
-		return
-	}
-	list := strings.Split(*tablelist, ",")
-	if *tablelist == "all" {
-		list = []string{"recomp", "info"}
-	}
-
-	// Compute maximum decomposition size.
-	max := 0
-	for _, c := range chars {
-		if n := len(string(c.forms[FCompatibility].expandedDecomp)); n > max {
-			max = 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.Fprintf(w, "var ccc = [%d]uint8{", len(cccMap))
-	for i := 0; i < len(cccMap); i++ {
-		if i%8 == 0 {
-			fmt.Fprintln(w)
-		}
-		fmt.Fprintf(w, "%3d, ", cccMap[uint8(i)])
-	}
-	fmt.Fprintln(w, "\n}\n")
-
-	if contains(list, "info") {
-		size += printCharInfoTables(w)
-	}
-
-	if contains(list, "recomp") {
-		// Note that we use 32 bit keys, instead of 64 bit.
-		// This clips the bits of three entries, but we know
-		// this won't cause a collision. The compiler will catch
-		// any changes made to UnicodeData.txt that introduces
-		// a collision.
-		// Note that the recomposition map for NFC and NFKC
-		// are identical.
-
-		// Recomposition map
-		nrentries := 0
-		for _, c := range chars {
-			f := c.forms[FCanonical]
-			if !f.isOneWay && len(f.decomp) > 0 {
-				nrentries++
-			}
-		}
-		sz := nrentries * 8
-		size += sz
-		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.Fprintf(w, "0x%.8X: 0x%.4X,\n", key, i)
-			}
-		}
-		fmt.Fprintf(w, "}\n\n")
-	}
-
-	fmt.Fprintf(w, "// Total size of tables: %dKB (%d bytes)\n", (size+512)/1024, size)
-	gen.WriteGoFile("tables.go", "norm", w.Bytes())
-}
-
-func printChars() {
-	if *verbose {
-		for _, c := range chars {
-			if !c.isValid() || c.state == SMissing {
-				continue
-			}
-			fmt.Println(c)
-		}
-	}
-}
-
-// verifyComputed does various consistency tests.
-func verifyComputed() {
-	for i, c := range chars {
-		for _, f := range c.forms {
-			isNo := (f.quickCheck[MDecomposed] == QCNo)
-			if (len(f.decomp) > 0) != isNo && !isHangul(rune(i)) {
-				log.Fatalf("%U: NF*D QC must be No if rune decomposes", i)
-			}
-
-			isMaybe := f.quickCheck[MComposed] == QCMaybe
-			if f.combinesBackward != isMaybe {
-				log.Fatalf("%U: NF*C QC must be Maybe if combinesBackward", i)
-			}
-			if len(f.decomp) > 0 && f.combinesForward && isMaybe {
-				log.Fatalf("%U: NF*C QC must be Yes or No if combinesForward and decomposes", i)
-			}
-
-			if len(f.expandedDecomp) != 0 {
-				continue
-			}
-			if a, b := c.nLeadingNonStarters > 0, (c.ccc > 0 || f.combinesBackward); a != b {
-				// 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.
-				// 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)
-				}
-			}
-		}
-		nfc := c.forms[FCanonical]
-		nfkc := c.forms[FCompatibility]
-		if nfc.combinesBackward != nfkc.combinesBackward {
-			log.Fatalf("%U: Cannot combine combinesBackward\n", c.codePoint)
-		}
-	}
-}
-
-// Use values in DerivedNormalizationProps.txt to compare against the
-// values we computed.
-// DerivedNormalizationProps.txt has form:
-// 00C0..00C5    ; NFD_QC; N # ...
-// 0374          ; NFD_QC; N # ...
-// See http://unicode.org/reports/tr44/ for full explanation
-func testDerived() {
-	f := gen.OpenUCDFile("DerivedNormalizationProps.txt")
-	defer f.Close()
-	p := ucd.New(f)
-	for p.Next() {
-		r := p.Rune(0)
-		c := &chars[r]
-
-		var ftype, mode int
-		qt := p.String(1)
-		switch qt {
-		case "NFC_QC":
-			ftype, mode = FCanonical, MComposed
-		case "NFD_QC":
-			ftype, mode = FCanonical, MDecomposed
-		case "NFKC_QC":
-			ftype, mode = FCompatibility, MComposed
-		case "NFKD_QC":
-			ftype, mode = FCompatibility, MDecomposed
-		default:
-			continue
-		}
-		var qr QCResult
-		switch p.String(2) {
-		case "Y":
-			qr = QCYes
-		case "N":
-			qr = QCNo
-		case "M":
-			qr = QCMaybe
-		default:
-			log.Fatalf(`Unexpected quick check value "%s"`, p.String(2))
-		}
-		if got := c.forms[ftype].quickCheck[mode]; 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 {
-		log.Fatal(err)
-	}
-	// Any unspecified value must be QCYes. Verify this.
-	for i, c := range chars {
-		for j, fd := range c.forms {
-			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"
-					log.Printf(m, i, j, k, qr, c.name)
-				}
-			}
-		}
-	}
-}
-
-var testHeader = `const (
-	Yes = iota
-	No
-	Maybe
-)
-
-type formData struct {
-	qc              uint8
-	combinesForward bool
-	decomposition   string
-}
-
-type runeData struct {
-	r      rune
-	ccc    uint8
-	nLead  uint8
-	nTrail uint8
-	f      [2]formData // 0: canonical; 1: compatibility
-}
-
-func f(qc uint8, cf bool, dec string) [2]formData {
-	return [2]formData{{qc, cf, dec}, {qc, cf, dec}}
-}
-
-func g(qc, qck uint8, cf, cfk bool, d, dk string) [2]formData {
-	return [2]formData{{qc, cf, d}, {qck, cfk, dk}}
-}
-
-var testData = []runeData{
-`
-
-func printTestdata() {
-	type lastInfo struct {
-		ccc    uint8
-		nLead  uint8
-		nTrail uint8
-		f      string
-	}
-
-	last := lastInfo{}
-	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)
-		f = c.forms[FCompatibility]
-		qck, cfk, dk := f.quickCheck[MComposed], f.combinesForward, string(f.expandedDecomp)
-		s := ""
-		if d == dk && qc == qck && cf == cfk {
-			s = fmt.Sprintf("f(%s, %v, %q)", qc, cf, d)
-		} else {
-			s = fmt.Sprintf("g(%s, %s, %v, %v, %q, %q)", qc, qck, cf, cfk, d, dk)
-		}
-		current := lastInfo{c.ccc, c.nLeadingNonStarters, c.nTrailingNonStarters, s}
-		if last != current {
-			fmt.Fprintf(w, "\t{0x%x, %d, %d, %d, %s},\n", r, c.origCCC, c.nLeadingNonStarters, c.nTrailingNonStarters, s)
-			last = current
-		}
-	}
-	fmt.Fprintln(w, "}")
-	gen.WriteGoFile("data_test.go", "norm", w.Bytes())
-}

+ 0 - 117
vendor/golang.org/x/text/unicode/norm/triegen.go

@@ -1,117 +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.
-
-// +build ignore
-
-// Trie table generator.
-// Used by make*tables tools to generate a go file with trie data structures
-// for mapping UTF-8 to a 16-bit value. All but the last byte in a UTF-8 byte
-// sequence are used to lookup offsets in the index table to be used for the
-// next byte. The last byte is used to index into a table with 16-bit values.
-
-package main
-
-import (
-	"fmt"
-	"io"
-)
-
-const maxSparseEntries = 16
-
-type normCompacter struct {
-	sparseBlocks [][]uint64
-	sparseOffset []uint16
-	sparseCount  int
-	name         string
-}
-
-func mostFrequentStride(a []uint64) int {
-	counts := make(map[int]int)
-	var v int
-	for _, x := range a {
-		if stride := int(x) - v; v != 0 && stride >= 0 {
-			counts[stride]++
-		}
-		v = int(x)
-	}
-	var maxs, maxc int
-	for stride, cnt := range counts {
-		if cnt > maxc || (cnt == maxc && stride < maxs) {
-			maxs, maxc = stride, cnt
-		}
-	}
-	return maxs
-}
-
-func countSparseEntries(a []uint64) int {
-	stride := mostFrequentStride(a)
-	var v, count int
-	for _, tv := range a {
-		if int(tv)-v != stride {
-			if tv != 0 {
-				count++
-			}
-		}
-		v = int(tv)
-	}
-	return count
-}
-
-func (c *normCompacter) Size(v []uint64) (sz int, ok bool) {
-	if n := countSparseEntries(v); n <= maxSparseEntries {
-		return (n+1)*4 + 2, true
-	}
-	return 0, false
-}
-
-func (c *normCompacter) Store(v []uint64) uint32 {
-	h := uint32(len(c.sparseOffset))
-	c.sparseBlocks = append(c.sparseBlocks, v)
-	c.sparseOffset = append(c.sparseOffset, uint16(c.sparseCount))
-	c.sparseCount += countSparseEntries(v) + 1
-	return h
-}
-
-func (c *normCompacter) Handler() string {
-	return c.name + "Sparse.lookup"
-}
-
-func (c *normCompacter) Print(w io.Writer) (retErr error) {
-	p := func(f string, x ...interface{}) {
-		if _, err := fmt.Fprintf(w, f, x...); retErr == nil && err != nil {
-			retErr = err
-		}
-	}
-
-	ls := len(c.sparseBlocks)
-	p("// %sSparseOffset: %d entries, %d bytes\n", c.name, ls, ls*2)
-	p("var %sSparseOffset = %#v\n\n", c.name, c.sparseOffset)
-
-	ns := c.sparseCount
-	p("// %sSparseValues: %d entries, %d bytes\n", c.name, ns, ns*4)
-	p("var %sSparseValues = [%d]valueRange {", c.name, ns)
-	for i, b := range c.sparseBlocks {
-		p("\n// Block %#x, offset %#x", i, c.sparseOffset[i])
-		var v int
-		stride := mostFrequentStride(b)
-		n := countSparseEntries(b)
-		p("\n{value:%#04x,lo:%#02x},", stride, uint8(n))
-		for i, nv := range b {
-			if int(nv)-v != stride {
-				if v != 0 {
-					p(",hi:%#02x},", 0x80+i-1)
-				}
-				if nv != 0 {
-					p("\n{value:%#04x,lo:%#02x", nv, 0x80+i)
-				}
-			}
-			v = int(nv)
-		}
-		if v != 0 {
-			p(",hi:%#02x},", 0x80+len(b)-1)
-		}
-	}
-	p("\n}\n\n")
-	return
-}

+ 0 - 113
vendor/golang.org/x/text/unicode/rangetable/gen.go

@@ -1,113 +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
-
-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{}
-
-		r := gen.Open("http://www.unicode.org/Public/", "", v+"/ucd/UnicodeData.txt")
-		ucd.Parse(r, 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())
-}
-
-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")
-}

+ 0 - 260
vendor/golang.org/x/text/unicode/rangetable/merge.go

@@ -1,260 +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 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
-}

+ 0 - 70
vendor/golang.org/x/text/unicode/rangetable/rangetable.go

@@ -1,70 +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 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]
-}

+ 0 - 5735
vendor/golang.org/x/text/unicode/rangetable/tables.go

@@ -1,5735 +0,0 @@
-// 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,9.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,
-	"9.0.0": assigned9_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,
-}
-
-// size 5348 bytes (5 KiB)
-var assigned9_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},
-		{0x08b6, 0x08bd, 1},
-		{0x08d4, 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, 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, 0x0d4f, 1},
-		{0x0d54, 0x0d63, 1},
-		{0x0d66, 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, 0x1c88, 1},
-		{0x1cc0, 0x1cc7, 1},
-		{0x1cd0, 0x1cf6, 1},
-		{0x1cf8, 0x1cf9, 1},
-		{0x1d00, 0x1df5, 1},
-		{0x1dfb, 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, 0x23fe, 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, 0x2e44, 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, 0xa7ae, 1},
-		{0xa7b0, 0xa7b7, 1},
-		{0xa7f7, 0xa82b, 1},
-		{0xa830, 0xa839, 1},
-		{0xa840, 0xa877, 1},
-		{0xa880, 0xa8c5, 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, 0x0001018e, 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},
-		{0x000104b0, 0x000104d3, 1},
-		{0x000104d8, 0x000104fb, 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, 0x0001123e, 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},
-		{0x00011400, 0x00011459, 1},
-		{0x0001145b, 0x0001145d, 2},
-		{0x00011480, 0x000114c7, 1},
-		{0x000114d0, 0x000114d9, 1},
-		{0x00011580, 0x000115b5, 1},
-		{0x000115b8, 0x000115dd, 1},
-		{0x00011600, 0x00011644, 1},
-		{0x00011650, 0x00011659, 1},
-		{0x00011660, 0x0001166c, 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},
-		{0x00011c00, 0x00011c08, 1},
-		{0x00011c0a, 0x00011c36, 1},
-		{0x00011c38, 0x00011c45, 1},
-		{0x00011c50, 0x00011c6c, 1},
-		{0x00011c70, 0x00011c8f, 1},
-		{0x00011c92, 0x00011ca7, 1},
-		{0x00011ca9, 0x00011cb6, 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},
-		{0x00016fe0, 0x00017000, 32},
-		{0x00017001, 0x000187ec, 1},
-		{0x00018800, 0x00018af2, 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},
-		{0x0001e000, 0x0001e006, 1},
-		{0x0001e008, 0x0001e018, 1},
-		{0x0001e01b, 0x0001e021, 1},
-		{0x0001e023, 0x0001e024, 1},
-		{0x0001e026, 0x0001e02a, 1},
-		{0x0001e800, 0x0001e8c4, 1},
-		{0x0001e8c7, 0x0001e8d6, 1},
-		{0x0001e900, 0x0001e94a, 1},
-		{0x0001e950, 0x0001e959, 1},
-		{0x0001e95e, 0x0001e95f, 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, 0x0001f1ac, 1},
-		{0x0001f1e6, 0x0001f202, 1},
-		{0x0001f210, 0x0001f23b, 1},
-		{0x0001f240, 0x0001f248, 1},
-		{0x0001f250, 0x0001f251, 1},
-		{0x0001f300, 0x0001f6d2, 1},
-		{0x0001f6e0, 0x0001f6ec, 1},
-		{0x0001f6f0, 0x0001f6f6, 1},
-		{0x0001f700, 0x0001f773, 1},
-		{0x0001f780, 0x0001f7d4, 1},
-		{0x0001f800, 0x0001f80b, 1},
-		{0x0001f810, 0x0001f847, 1},
-		{0x0001f850, 0x0001f859, 1},
-		{0x0001f860, 0x0001f887, 1},
-		{0x0001f890, 0x0001f8ad, 1},
-		{0x0001f910, 0x0001f91e, 1},
-		{0x0001f920, 0x0001f927, 1},
-		{0x0001f930, 0x0001f933, 3},
-		{0x0001f934, 0x0001f93e, 1},
-		{0x0001f940, 0x0001f94b, 1},
-		{0x0001f950, 0x0001f95e, 1},
-		{0x0001f980, 0x0001f991, 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 44206 bytes (43 KiB)