summaryrefslogtreecommitdiffhomepage
path: root/vendor/golang.org/x/text/feature
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org/x/text/feature')
-rw-r--r--vendor/golang.org/x/text/feature/plural/common.go70
-rw-r--r--vendor/golang.org/x/text/feature/plural/message.go244
-rw-r--r--vendor/golang.org/x/text/feature/plural/plural.go262
-rw-r--r--vendor/golang.org/x/text/feature/plural/tables.go552
4 files changed, 0 insertions, 1128 deletions
diff --git a/vendor/golang.org/x/text/feature/plural/common.go b/vendor/golang.org/x/text/feature/plural/common.go
deleted file mode 100644
index fdcb373..0000000
--- a/vendor/golang.org/x/text/feature/plural/common.go
+++ /dev/null
@@ -1,70 +0,0 @@
-// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
-
-package plural
-
-// Form defines a plural form.
-//
-// Not all languages support all forms. Also, the meaning of each form varies
-// per language. It is important to note that the name of a form does not
-// necessarily correspond one-to-one with the set of numbers. For instance,
-// for Croation, One matches not only 1, but also 11, 21, etc.
-//
-// Each language must at least support the form "other".
-type Form byte
-
-const (
- Other Form = iota
- Zero
- One
- Two
- Few
- Many
-)
-
-var countMap = map[string]Form{
- "other": Other,
- "zero": Zero,
- "one": One,
- "two": Two,
- "few": Few,
- "many": Many,
-}
-
-type pluralCheck struct {
- // category:
- // 3..7: opID
- // 0..2: category
- cat byte
- setID byte
-}
-
-// opID identifies the type of operand in the plural rule, being i, n or f.
-// (v, w, and t are treated as filters in our implementation.)
-type opID byte
-
-const (
- opMod opID = 0x1 // is '%' used?
- opNotEqual opID = 0x2 // using "!=" to compare
- opI opID = 0 << 2 // integers after taking the absolute value
- opN opID = 1 << 2 // full number (must be integer)
- opF opID = 2 << 2 // fraction
- opV opID = 3 << 2 // number of visible digits
- opW opID = 4 << 2 // number of visible digits without trailing zeros
- opBretonM opID = 5 << 2 // hard-wired rule for Breton
- opItalian800 opID = 6 << 2 // hard-wired rule for Italian
- opAzerbaijan00s opID = 7 << 2 // hard-wired rule for Azerbaijan
-)
-const (
- // Use this plural form to indicate the next rule needs to match as well.
- // The last condition in the list will have the correct plural form.
- andNext = 0x7
- formMask = 0x7
-
- opShift = 3
-
- // numN indicates the maximum integer, or maximum mod value, for which we
- // have inclusion masks.
- numN = 100
- // The common denominator of the modulo that is taken.
- maxMod = 100
-)
diff --git a/vendor/golang.org/x/text/feature/plural/message.go b/vendor/golang.org/x/text/feature/plural/message.go
deleted file mode 100644
index 56d518c..0000000
--- a/vendor/golang.org/x/text/feature/plural/message.go
+++ /dev/null
@@ -1,244 +0,0 @@
-// Copyright 2017 The Go 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 plural
-
-import (
- "fmt"
- "io"
- "reflect"
- "strconv"
-
- "golang.org/x/text/internal/catmsg"
- "golang.org/x/text/internal/number"
- "golang.org/x/text/language"
- "golang.org/x/text/message/catalog"
-)
-
-// TODO: consider deleting this interface. Maybe VisibleDigits is always
-// sufficient and practical.
-
-// Interface is used for types that can determine their own plural form.
-type Interface interface {
- // PluralForm reports the plural form for the given language of the
- // underlying value. It also returns the integer value. If the integer value
- // is larger than fits in n, PluralForm may return a value modulo
- // 10,000,000.
- PluralForm(t language.Tag, scale int) (f Form, n int)
-}
-
-// Selectf returns the first case for which its selector is a match for the
-// arg-th substitution argument to a formatting call, formatting it as indicated
-// by format.
-//
-// The cases argument are pairs of selectors and messages. Selectors are of type
-// string or Form. Messages are of type string or catalog.Message. A selector
-// matches an argument if:
-// - it is "other" or Other
-// - it matches the plural form of the argument: "zero", "one", "two", "few",
-// or "many", or the equivalent Form
-// - it is of the form "=x" where x is an integer that matches the value of
-// the argument.
-// - it is of the form "<x" where x is an integer that is larger than the
-// argument.
-//
-// The format argument determines the formatting parameters for which to
-// determine the plural form. This is especially relevant for non-integer
-// values.
-//
-// The format string may be "", in which case a best-effort attempt is made to
-// find a reasonable representation on which to base the plural form. Examples
-// of format strings are:
-// - %.2f decimal with scale 2
-// - %.2e scientific notation with precision 3 (scale + 1)
-// - %d integer
-func Selectf(arg int, format string, cases ...interface{}) catalog.Message {
- var p parser
- // Intercept the formatting parameters of format by doing a dummy print.
- fmt.Fprintf(io.Discard, format, &p)
- m := &message{arg, kindDefault, 0, cases}
- switch p.verb {
- case 'g':
- m.kind = kindPrecision
- m.scale = p.scale
- case 'f':
- m.kind = kindScale
- m.scale = p.scale
- case 'e':
- m.kind = kindScientific
- m.scale = p.scale
- case 'd':
- m.kind = kindScale
- m.scale = 0
- default:
- // TODO: do we need to handle errors?
- }
- return m
-}
-
-type parser struct {
- verb rune
- scale int
-}
-
-func (p *parser) Format(s fmt.State, verb rune) {
- p.verb = verb
- p.scale = -1
- if prec, ok := s.Precision(); ok {
- p.scale = prec
- }
-}
-
-type message struct {
- arg int
- kind int
- scale int
- cases []interface{}
-}
-
-const (
- // Start with non-ASCII to allow skipping values.
- kindDefault = 0x80 + iota
- kindScale // verb f, number of fraction digits follows
- kindScientific // verb e, number of fraction digits follows
- kindPrecision // verb g, number of significant digits follows
-)
-
-var handle = catmsg.Register("golang.org/x/text/feature/plural:plural", execute)
-
-func (m *message) Compile(e *catmsg.Encoder) error {
- e.EncodeMessageType(handle)
-
- e.EncodeUint(uint64(m.arg))
-
- e.EncodeUint(uint64(m.kind))
- if m.kind > kindDefault {
- e.EncodeUint(uint64(m.scale))
- }
-
- forms := validForms(cardinal, e.Language())
-
- for i := 0; i < len(m.cases); {
- if err := compileSelector(e, forms, m.cases[i]); err != nil {
- return err
- }
- if i++; i >= len(m.cases) {
- return fmt.Errorf("plural: no message defined for selector %v", m.cases[i-1])
- }
- var msg catalog.Message
- switch x := m.cases[i].(type) {
- case string:
- msg = catalog.String(x)
- case catalog.Message:
- msg = x
- default:
- return fmt.Errorf("plural: message of type %T; must be string or catalog.Message", x)
- }
- if err := e.EncodeMessage(msg); err != nil {
- return err
- }
- i++
- }
- return nil
-}
-
-func compileSelector(e *catmsg.Encoder, valid []Form, selector interface{}) error {
- form := Other
- switch x := selector.(type) {
- case string:
- if x == "" {
- return fmt.Errorf("plural: empty selector")
- }
- if c := x[0]; c == '=' || c == '<' {
- val, err := strconv.ParseUint(x[1:], 10, 16)
- if err != nil {
- return fmt.Errorf("plural: invalid number in selector %q: %v", selector, err)
- }
- e.EncodeUint(uint64(c))
- e.EncodeUint(val)
- return nil
- }
- var ok bool
- form, ok = countMap[x]
- if !ok {
- return fmt.Errorf("plural: invalid plural form %q", selector)
- }
- case Form:
- form = x
- default:
- return fmt.Errorf("plural: selector of type %T; want string or Form", selector)
- }
-
- ok := false
- for _, f := range valid {
- if f == form {
- ok = true
- break
- }
- }
- if !ok {
- return fmt.Errorf("plural: form %q not supported for language %q", selector, e.Language())
- }
- e.EncodeUint(uint64(form))
- return nil
-}
-
-func execute(d *catmsg.Decoder) bool {
- lang := d.Language()
- argN := int(d.DecodeUint())
- kind := int(d.DecodeUint())
- scale := -1 // default
- if kind > kindDefault {
- scale = int(d.DecodeUint())
- }
- form := Other
- n := -1
- if arg := d.Arg(argN); arg == nil {
- // Default to Other.
- } else if x, ok := arg.(number.VisibleDigits); ok {
- d := x.Digits(nil, lang, scale)
- form, n = cardinal.matchDisplayDigits(lang, &d)
- } else if x, ok := arg.(Interface); ok {
- // This covers lists and formatters from the number package.
- form, n = x.PluralForm(lang, scale)
- } else {
- var f number.Formatter
- switch kind {
- case kindScale:
- f.InitDecimal(lang)
- f.SetScale(scale)
- case kindScientific:
- f.InitScientific(lang)
- f.SetScale(scale)
- case kindPrecision:
- f.InitDecimal(lang)
- f.SetPrecision(scale)
- case kindDefault:
- // sensible default
- f.InitDecimal(lang)
- if k := reflect.TypeOf(arg).Kind(); reflect.Int <= k && k <= reflect.Uintptr {
- f.SetScale(0)
- } else {
- f.SetScale(2)
- }
- }
- var dec number.Decimal // TODO: buffer in Printer
- dec.Convert(f.RoundingContext, arg)
- v := number.FormatDigits(&dec, f.RoundingContext)
- if !v.NaN && !v.Inf {
- form, n = cardinal.matchDisplayDigits(d.Language(), &v)
- }
- }
- for !d.Done() {
- f := d.DecodeUint()
- if (f == '=' && n == int(d.DecodeUint())) ||
- (f == '<' && 0 <= n && n < int(d.DecodeUint())) ||
- form == Form(f) ||
- Other == Form(f) {
- return d.ExecuteMessage()
- }
- d.SkipMessage()
- }
- return false
-}
diff --git a/vendor/golang.org/x/text/feature/plural/plural.go b/vendor/golang.org/x/text/feature/plural/plural.go
deleted file mode 100644
index e9f2d42..0000000
--- a/vendor/golang.org/x/text/feature/plural/plural.go
+++ /dev/null
@@ -1,262 +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.
-
-//go:generate go run gen.go gen_common.go
-
-// Package plural provides utilities for handling linguistic plurals in text.
-//
-// The definitions in this package are based on the plural rule handling defined
-// in CLDR. See
-// https://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules for
-// details.
-package plural
-
-import (
- "golang.org/x/text/internal/language/compact"
- "golang.org/x/text/internal/number"
- "golang.org/x/text/language"
-)
-
-// Rules defines the plural rules for all languages for a certain plural type.
-//
-// This package is UNDER CONSTRUCTION and its API may change.
-type Rules struct {
- rules []pluralCheck
- index []byte
- langToIndex []byte
- inclusionMasks []uint64
-}
-
-var (
- // Cardinal defines the plural rules for numbers indicating quantities.
- Cardinal *Rules = cardinal
-
- // Ordinal defines the plural rules for numbers indicating position
- // (first, second, etc.).
- Ordinal *Rules = ordinal
-
- ordinal = &Rules{
- ordinalRules,
- ordinalIndex,
- ordinalLangToIndex,
- ordinalInclusionMasks[:],
- }
-
- cardinal = &Rules{
- cardinalRules,
- cardinalIndex,
- cardinalLangToIndex,
- cardinalInclusionMasks[:],
- }
-)
-
-// getIntApprox converts the digits in slice digits[start:end] to an integer
-// according to the following rules:
-// - Let i be asInt(digits[start:end]), where out-of-range digits are assumed
-// to be zero.
-// - Result n is big if i / 10^nMod > 1.
-// - Otherwise the result is i % 10^nMod.
-//
-// For example, if digits is {1, 2, 3} and start:end is 0:5, then the result
-// for various values of nMod is:
-// - when nMod == 2, n == big
-// - when nMod == 3, n == big
-// - when nMod == 4, n == big
-// - when nMod == 5, n == 12300
-// - when nMod == 6, n == 12300
-// - when nMod == 7, n == 12300
-func getIntApprox(digits []byte, start, end, nMod, big int) (n int) {
- // Leading 0 digits just result in 0.
- p := start
- if p < 0 {
- p = 0
- }
- // Range only over the part for which we have digits.
- mid := end
- if mid >= len(digits) {
- mid = len(digits)
- }
- // Check digits more significant that nMod.
- if q := end - nMod; q > 0 {
- if q > mid {
- q = mid
- }
- for ; p < q; p++ {
- if digits[p] != 0 {
- return big
- }
- }
- }
- for ; p < mid; p++ {
- n = 10*n + int(digits[p])
- }
- // Multiply for trailing zeros.
- for ; p < end; p++ {
- n *= 10
- }
- return n
-}
-
-// MatchDigits computes the plural form for the given language and the given
-// decimal floating point digits. The digits are stored in big-endian order and
-// are of value byte(0) - byte(9). The floating point position is indicated by
-// exp and the number of visible decimals is scale. All leading and trailing
-// zeros may be omitted from digits.
-//
-// The following table contains examples of possible arguments to represent
-// the given numbers.
-//
-// decimal digits exp scale
-// 123 []byte{1, 2, 3} 3 0
-// 123.4 []byte{1, 2, 3, 4} 3 1
-// 123.40 []byte{1, 2, 3, 4} 3 2
-// 100000 []byte{1} 6 0
-// 100000.00 []byte{1} 6 3
-func (p *Rules) MatchDigits(t language.Tag, digits []byte, exp, scale int) Form {
- index := tagToID(t)
-
- // Differentiate up to including mod 1000000 for the integer part.
- n := getIntApprox(digits, 0, exp, 6, 1000000)
-
- // Differentiate up to including mod 100 for the fractional part.
- f := getIntApprox(digits, exp, exp+scale, 2, 100)
-
- return matchPlural(p, index, n, f, scale)
-}
-
-func (p *Rules) matchDisplayDigits(t language.Tag, d *number.Digits) (Form, int) {
- n := getIntApprox(d.Digits, 0, int(d.Exp), 6, 1000000)
- return p.MatchDigits(t, d.Digits, int(d.Exp), d.NumFracDigits()), n
-}
-
-func validForms(p *Rules, t language.Tag) (forms []Form) {
- offset := p.langToIndex[tagToID(t)]
- rules := p.rules[p.index[offset]:p.index[offset+1]]
-
- forms = append(forms, Other)
- last := Other
- for _, r := range rules {
- if cat := Form(r.cat & formMask); cat != andNext && last != cat {
- forms = append(forms, cat)
- last = cat
- }
- }
- return forms
-}
-
-func (p *Rules) matchComponents(t language.Tag, n, f, scale int) Form {
- return matchPlural(p, tagToID(t), n, f, scale)
-}
-
-// MatchPlural returns the plural form for the given language and plural
-// operands (as defined in
-// https://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules):
-//
-// where
-// n absolute value of the source number (integer and decimals)
-// input
-// i integer digits of n.
-// v number of visible fraction digits in n, with trailing zeros.
-// w number of visible fraction digits in n, without trailing zeros.
-// f visible fractional digits in n, with trailing zeros (f = t * 10^(v-w))
-// t visible fractional digits in n, without trailing zeros.
-//
-// If any of the operand values is too large to fit in an int, it is okay to
-// pass the value modulo 10,000,000.
-func (p *Rules) MatchPlural(lang language.Tag, i, v, w, f, t int) Form {
- return matchPlural(p, tagToID(lang), i, f, v)
-}
-
-func matchPlural(p *Rules, index compact.ID, n, f, v int) Form {
- nMask := p.inclusionMasks[n%maxMod]
- // Compute the fMask inline in the rules below, as it is relatively rare.
- // fMask := p.inclusionMasks[f%maxMod]
- vMask := p.inclusionMasks[v%maxMod]
-
- // Do the matching
- offset := p.langToIndex[index]
- rules := p.rules[p.index[offset]:p.index[offset+1]]
- for i := 0; i < len(rules); i++ {
- rule := rules[i]
- setBit := uint64(1 << rule.setID)
- var skip bool
- switch op := opID(rule.cat >> opShift); op {
- case opI: // i = x
- skip = n >= numN || nMask&setBit == 0
-
- case opI | opNotEqual: // i != x
- skip = n < numN && nMask&setBit != 0
-
- case opI | opMod: // i % m = x
- skip = nMask&setBit == 0
-
- case opI | opMod | opNotEqual: // i % m != x
- skip = nMask&setBit != 0
-
- case opN: // n = x
- skip = f != 0 || n >= numN || nMask&setBit == 0
-
- case opN | opNotEqual: // n != x
- skip = f == 0 && n < numN && nMask&setBit != 0
-
- case opN | opMod: // n % m = x
- skip = f != 0 || nMask&setBit == 0
-
- case opN | opMod | opNotEqual: // n % m != x
- skip = f == 0 && nMask&setBit != 0
-
- case opF: // f = x
- skip = f >= numN || p.inclusionMasks[f%maxMod]&setBit == 0
-
- case opF | opNotEqual: // f != x
- skip = f < numN && p.inclusionMasks[f%maxMod]&setBit != 0
-
- case opF | opMod: // f % m = x
- skip = p.inclusionMasks[f%maxMod]&setBit == 0
-
- case opF | opMod | opNotEqual: // f % m != x
- skip = p.inclusionMasks[f%maxMod]&setBit != 0
-
- case opV: // v = x
- skip = v < numN && vMask&setBit == 0
-
- case opV | opNotEqual: // v != x
- skip = v < numN && vMask&setBit != 0
-
- case opW: // w == 0
- skip = f != 0
-
- case opW | opNotEqual: // w != 0
- skip = f == 0
-
- // Hard-wired rules that cannot be handled by our algorithm.
-
- case opBretonM:
- skip = f != 0 || n == 0 || n%1000000 != 0
-
- case opAzerbaijan00s:
- // 100,200,300,400,500,600,700,800,900
- skip = n == 0 || n >= 1000 || n%100 != 0
-
- case opItalian800:
- skip = (f != 0 || n >= numN || nMask&setBit == 0) && n != 800
- }
- if skip {
- // advance over AND entries.
- for ; i < len(rules) && rules[i].cat&formMask == andNext; i++ {
- }
- continue
- }
- // return if we have a final entry.
- if cat := rule.cat & formMask; cat != andNext {
- return Form(cat)
- }
- }
- return Other
-}
-
-func tagToID(t language.Tag) compact.ID {
- id, _ := compact.RegionalID(compact.Tag(t))
- return id
-}
diff --git a/vendor/golang.org/x/text/feature/plural/tables.go b/vendor/golang.org/x/text/feature/plural/tables.go
deleted file mode 100644
index b06b9cb..0000000
--- a/vendor/golang.org/x/text/feature/plural/tables.go
+++ /dev/null
@@ -1,552 +0,0 @@
-// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
-
-package plural
-
-// CLDRVersion is the CLDR version from which the tables in this package are derived.
-const CLDRVersion = "32"
-
-var ordinalRules = []pluralCheck{ // 64 elements
- 0: {cat: 0x2f, setID: 0x4},
- 1: {cat: 0x3a, setID: 0x5},
- 2: {cat: 0x22, setID: 0x1},
- 3: {cat: 0x22, setID: 0x6},
- 4: {cat: 0x22, setID: 0x7},
- 5: {cat: 0x2f, setID: 0x8},
- 6: {cat: 0x3c, setID: 0x9},
- 7: {cat: 0x2f, setID: 0xa},
- 8: {cat: 0x3c, setID: 0xb},
- 9: {cat: 0x2c, setID: 0xc},
- 10: {cat: 0x24, setID: 0xd},
- 11: {cat: 0x2d, setID: 0xe},
- 12: {cat: 0x2d, setID: 0xf},
- 13: {cat: 0x2f, setID: 0x10},
- 14: {cat: 0x35, setID: 0x3},
- 15: {cat: 0xc5, setID: 0x11},
- 16: {cat: 0x2, setID: 0x1},
- 17: {cat: 0x5, setID: 0x3},
- 18: {cat: 0xd, setID: 0x12},
- 19: {cat: 0x22, setID: 0x1},
- 20: {cat: 0x2f, setID: 0x13},
- 21: {cat: 0x3d, setID: 0x14},
- 22: {cat: 0x2f, setID: 0x15},
- 23: {cat: 0x3a, setID: 0x16},
- 24: {cat: 0x2f, setID: 0x17},
- 25: {cat: 0x3b, setID: 0x18},
- 26: {cat: 0x2f, setID: 0xa},
- 27: {cat: 0x3c, setID: 0xb},
- 28: {cat: 0x22, setID: 0x1},
- 29: {cat: 0x23, setID: 0x19},
- 30: {cat: 0x24, setID: 0x1a},
- 31: {cat: 0x22, setID: 0x1b},
- 32: {cat: 0x23, setID: 0x2},
- 33: {cat: 0x24, setID: 0x1a},
- 34: {cat: 0xf, setID: 0x15},
- 35: {cat: 0x1a, setID: 0x16},
- 36: {cat: 0xf, setID: 0x17},
- 37: {cat: 0x1b, setID: 0x18},
- 38: {cat: 0xf, setID: 0x1c},
- 39: {cat: 0x1d, setID: 0x1d},
- 40: {cat: 0xa, setID: 0x1e},
- 41: {cat: 0xa, setID: 0x1f},
- 42: {cat: 0xc, setID: 0x20},
- 43: {cat: 0xe4, setID: 0x0},
- 44: {cat: 0x5, setID: 0x3},
- 45: {cat: 0xd, setID: 0xe},
- 46: {cat: 0xd, setID: 0x21},
- 47: {cat: 0x22, setID: 0x1},
- 48: {cat: 0x23, setID: 0x19},
- 49: {cat: 0x24, setID: 0x1a},
- 50: {cat: 0x25, setID: 0x22},
- 51: {cat: 0x22, setID: 0x23},
- 52: {cat: 0x23, setID: 0x19},
- 53: {cat: 0x24, setID: 0x1a},
- 54: {cat: 0x25, setID: 0x22},
- 55: {cat: 0x22, setID: 0x24},
- 56: {cat: 0x23, setID: 0x19},
- 57: {cat: 0x24, setID: 0x1a},
- 58: {cat: 0x25, setID: 0x22},
- 59: {cat: 0x21, setID: 0x25},
- 60: {cat: 0x22, setID: 0x1},
- 61: {cat: 0x23, setID: 0x2},
- 62: {cat: 0x24, setID: 0x26},
- 63: {cat: 0x25, setID: 0x27},
-} // Size: 152 bytes
-
-var ordinalIndex = []uint8{ // 22 elements
- 0x00, 0x00, 0x02, 0x03, 0x04, 0x05, 0x07, 0x09,
- 0x0b, 0x0f, 0x10, 0x13, 0x16, 0x1c, 0x1f, 0x22,
- 0x28, 0x2f, 0x33, 0x37, 0x3b, 0x40,
-} // Size: 46 bytes
-
-var ordinalLangToIndex = []uint8{ // 775 elements
- // Entry 0 - 3F
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x12, 0x12, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10,
- 0x10, 0x10, 0x10, 0x00, 0x00, 0x05, 0x05, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 40 - 7F
- 0x12, 0x12, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e,
- 0x0e, 0x0e, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 80 - BF
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c,
- 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
- 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
- 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
- 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
- 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
- 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
- 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
- // Entry C0 - FF
- 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
- 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
- 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
- 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
- 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
- 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 100 - 13F
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
- 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- // Entry 140 - 17F
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11,
- 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03,
- 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 180 - 1BF
- 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09,
- 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0a, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 1C0 - 1FF
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00,
- 0x00, 0x00, 0x02, 0x0d, 0x0d, 0x02, 0x02, 0x02,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 200 - 23F
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x13, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 240 - 27F
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
- 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 280 - 2BF
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x0b, 0x0b, 0x0b, 0x0b, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
- 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x07, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00,
- // Entry 2C0 - 2FF
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 300 - 33F
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0c,
-} // Size: 799 bytes
-
-var ordinalInclusionMasks = []uint64{ // 100 elements
- // Entry 0 - 1F
- 0x0000002000010009, 0x00000018482000d3, 0x0000000042840195, 0x000000410a040581,
- 0x00000041040c0081, 0x0000009840040041, 0x0000008400045001, 0x0000003850040001,
- 0x0000003850060001, 0x0000003800049001, 0x0000000800052001, 0x0000000040660031,
- 0x0000000041840331, 0x0000000100040f01, 0x00000001001c0001, 0x0000000040040001,
- 0x0000000000045001, 0x0000000070040001, 0x0000000070040001, 0x0000000000049001,
- 0x0000000080050001, 0x0000000040200011, 0x0000000040800111, 0x0000000100000501,
- 0x0000000100080001, 0x0000000040000001, 0x0000000000005001, 0x0000000050000001,
- 0x0000000050000001, 0x0000000000009001, 0x0000000000010001, 0x0000000040200011,
- // Entry 20 - 3F
- 0x0000000040800111, 0x0000000100000501, 0x0000000100080001, 0x0000000040000001,
- 0x0000000000005001, 0x0000000050000001, 0x0000000050000001, 0x0000000000009001,
- 0x0000000200050001, 0x0000000040200011, 0x0000000040800111, 0x0000000100000501,
- 0x0000000100080001, 0x0000000040000001, 0x0000000000005001, 0x0000000050000001,
- 0x0000000050000001, 0x0000000000009001, 0x0000000080010001, 0x0000000040200011,
- 0x0000000040800111, 0x0000000100000501, 0x0000000100080001, 0x0000000040000001,
- 0x0000000000005001, 0x0000000050000001, 0x0000000050000001, 0x0000000000009001,
- 0x0000000200050001, 0x0000000040200011, 0x0000000040800111, 0x0000000100000501,
- // Entry 40 - 5F
- 0x0000000100080001, 0x0000000040000001, 0x0000000000005001, 0x0000000050000001,
- 0x0000000050000001, 0x0000000000009001, 0x0000000080010001, 0x0000000040200011,
- 0x0000000040800111, 0x0000000100000501, 0x0000000100080001, 0x0000000040000001,
- 0x0000000000005001, 0x0000000050000001, 0x0000000050000001, 0x0000000000009001,
- 0x0000000080070001, 0x0000000040200011, 0x0000000040800111, 0x0000000100000501,
- 0x0000000100080001, 0x0000000040000001, 0x0000000000005001, 0x0000000050000001,
- 0x0000000050000001, 0x0000000000009001, 0x0000000200010001, 0x0000000040200011,
- 0x0000000040800111, 0x0000000100000501, 0x0000000100080001, 0x0000000040000001,
- // Entry 60 - 7F
- 0x0000000000005001, 0x0000000050000001, 0x0000000050000001, 0x0000000000009001,
-} // Size: 824 bytes
-
-// Slots used for ordinal: 40 of 0xFF rules; 16 of 0xFF indexes; 40 of 64 sets
-
-var cardinalRules = []pluralCheck{ // 166 elements
- 0: {cat: 0x2, setID: 0x3},
- 1: {cat: 0x22, setID: 0x1},
- 2: {cat: 0x2, setID: 0x4},
- 3: {cat: 0x2, setID: 0x4},
- 4: {cat: 0x7, setID: 0x1},
- 5: {cat: 0x62, setID: 0x3},
- 6: {cat: 0x22, setID: 0x4},
- 7: {cat: 0x7, setID: 0x3},
- 8: {cat: 0x42, setID: 0x1},
- 9: {cat: 0x22, setID: 0x4},
- 10: {cat: 0x22, setID: 0x4},
- 11: {cat: 0x22, setID: 0x5},
- 12: {cat: 0x22, setID: 0x1},
- 13: {cat: 0x22, setID: 0x1},
- 14: {cat: 0x7, setID: 0x4},
- 15: {cat: 0x92, setID: 0x3},
- 16: {cat: 0xf, setID: 0x6},
- 17: {cat: 0x1f, setID: 0x7},
- 18: {cat: 0x82, setID: 0x3},
- 19: {cat: 0x92, setID: 0x3},
- 20: {cat: 0xf, setID: 0x6},
- 21: {cat: 0x62, setID: 0x3},
- 22: {cat: 0x4a, setID: 0x6},
- 23: {cat: 0x7, setID: 0x8},
- 24: {cat: 0x62, setID: 0x3},
- 25: {cat: 0x1f, setID: 0x9},
- 26: {cat: 0x62, setID: 0x3},
- 27: {cat: 0x5f, setID: 0x9},
- 28: {cat: 0x72, setID: 0x3},
- 29: {cat: 0x29, setID: 0xa},
- 30: {cat: 0x29, setID: 0xb},
- 31: {cat: 0x4f, setID: 0xb},
- 32: {cat: 0x61, setID: 0x2},
- 33: {cat: 0x2f, setID: 0x6},
- 34: {cat: 0x3a, setID: 0x7},
- 35: {cat: 0x4f, setID: 0x6},
- 36: {cat: 0x5f, setID: 0x7},
- 37: {cat: 0x62, setID: 0x2},
- 38: {cat: 0x4f, setID: 0x6},
- 39: {cat: 0x72, setID: 0x2},
- 40: {cat: 0x21, setID: 0x3},
- 41: {cat: 0x7, setID: 0x4},
- 42: {cat: 0x32, setID: 0x3},
- 43: {cat: 0x21, setID: 0x3},
- 44: {cat: 0x22, setID: 0x1},
- 45: {cat: 0x22, setID: 0x1},
- 46: {cat: 0x23, setID: 0x2},
- 47: {cat: 0x2, setID: 0x3},
- 48: {cat: 0x22, setID: 0x1},
- 49: {cat: 0x24, setID: 0xc},
- 50: {cat: 0x7, setID: 0x1},
- 51: {cat: 0x62, setID: 0x3},
- 52: {cat: 0x74, setID: 0x3},
- 53: {cat: 0x24, setID: 0x3},
- 54: {cat: 0x2f, setID: 0xd},
- 55: {cat: 0x34, setID: 0x1},
- 56: {cat: 0xf, setID: 0x6},
- 57: {cat: 0x1f, setID: 0x7},
- 58: {cat: 0x62, setID: 0x3},
- 59: {cat: 0x4f, setID: 0x6},
- 60: {cat: 0x5a, setID: 0x7},
- 61: {cat: 0xf, setID: 0xe},
- 62: {cat: 0x1f, setID: 0xf},
- 63: {cat: 0x64, setID: 0x3},
- 64: {cat: 0x4f, setID: 0xe},
- 65: {cat: 0x5c, setID: 0xf},
- 66: {cat: 0x22, setID: 0x10},
- 67: {cat: 0x23, setID: 0x11},
- 68: {cat: 0x24, setID: 0x12},
- 69: {cat: 0xf, setID: 0x1},
- 70: {cat: 0x62, setID: 0x3},
- 71: {cat: 0xf, setID: 0x2},
- 72: {cat: 0x63, setID: 0x3},
- 73: {cat: 0xf, setID: 0x13},
- 74: {cat: 0x64, setID: 0x3},
- 75: {cat: 0x74, setID: 0x3},
- 76: {cat: 0xf, setID: 0x1},
- 77: {cat: 0x62, setID: 0x3},
- 78: {cat: 0x4a, setID: 0x1},
- 79: {cat: 0xf, setID: 0x2},
- 80: {cat: 0x63, setID: 0x3},
- 81: {cat: 0x4b, setID: 0x2},
- 82: {cat: 0xf, setID: 0x13},
- 83: {cat: 0x64, setID: 0x3},
- 84: {cat: 0x4c, setID: 0x13},
- 85: {cat: 0x7, setID: 0x1},
- 86: {cat: 0x62, setID: 0x3},
- 87: {cat: 0x7, setID: 0x2},
- 88: {cat: 0x63, setID: 0x3},
- 89: {cat: 0x2f, setID: 0xa},
- 90: {cat: 0x37, setID: 0x14},
- 91: {cat: 0x65, setID: 0x3},
- 92: {cat: 0x7, setID: 0x1},
- 93: {cat: 0x62, setID: 0x3},
- 94: {cat: 0x7, setID: 0x15},
- 95: {cat: 0x64, setID: 0x3},
- 96: {cat: 0x75, setID: 0x3},
- 97: {cat: 0x7, setID: 0x1},
- 98: {cat: 0x62, setID: 0x3},
- 99: {cat: 0xf, setID: 0xe},
- 100: {cat: 0x1f, setID: 0xf},
- 101: {cat: 0x64, setID: 0x3},
- 102: {cat: 0xf, setID: 0x16},
- 103: {cat: 0x17, setID: 0x1},
- 104: {cat: 0x65, setID: 0x3},
- 105: {cat: 0xf, setID: 0x17},
- 106: {cat: 0x65, setID: 0x3},
- 107: {cat: 0xf, setID: 0xf},
- 108: {cat: 0x65, setID: 0x3},
- 109: {cat: 0x2f, setID: 0x6},
- 110: {cat: 0x3a, setID: 0x7},
- 111: {cat: 0x2f, setID: 0xe},
- 112: {cat: 0x3c, setID: 0xf},
- 113: {cat: 0x2d, setID: 0xa},
- 114: {cat: 0x2d, setID: 0x17},
- 115: {cat: 0x2d, setID: 0x18},
- 116: {cat: 0x2f, setID: 0x6},
- 117: {cat: 0x3a, setID: 0xb},
- 118: {cat: 0x2f, setID: 0x19},
- 119: {cat: 0x3c, setID: 0xb},
- 120: {cat: 0x55, setID: 0x3},
- 121: {cat: 0x22, setID: 0x1},
- 122: {cat: 0x24, setID: 0x3},
- 123: {cat: 0x2c, setID: 0xc},
- 124: {cat: 0x2d, setID: 0xb},
- 125: {cat: 0xf, setID: 0x6},
- 126: {cat: 0x1f, setID: 0x7},
- 127: {cat: 0x62, setID: 0x3},
- 128: {cat: 0xf, setID: 0xe},
- 129: {cat: 0x1f, setID: 0xf},
- 130: {cat: 0x64, setID: 0x3},
- 131: {cat: 0xf, setID: 0xa},
- 132: {cat: 0x65, setID: 0x3},
- 133: {cat: 0xf, setID: 0x17},
- 134: {cat: 0x65, setID: 0x3},
- 135: {cat: 0xf, setID: 0x18},
- 136: {cat: 0x65, setID: 0x3},
- 137: {cat: 0x2f, setID: 0x6},
- 138: {cat: 0x3a, setID: 0x1a},
- 139: {cat: 0x2f, setID: 0x1b},
- 140: {cat: 0x3b, setID: 0x1c},
- 141: {cat: 0x2f, setID: 0x1d},
- 142: {cat: 0x3c, setID: 0x1e},
- 143: {cat: 0x37, setID: 0x3},
- 144: {cat: 0xa5, setID: 0x0},
- 145: {cat: 0x22, setID: 0x1},
- 146: {cat: 0x23, setID: 0x2},
- 147: {cat: 0x24, setID: 0x1f},
- 148: {cat: 0x25, setID: 0x20},
- 149: {cat: 0xf, setID: 0x6},
- 150: {cat: 0x62, setID: 0x3},
- 151: {cat: 0xf, setID: 0x1b},
- 152: {cat: 0x63, setID: 0x3},
- 153: {cat: 0xf, setID: 0x21},
- 154: {cat: 0x64, setID: 0x3},
- 155: {cat: 0x75, setID: 0x3},
- 156: {cat: 0x21, setID: 0x3},
- 157: {cat: 0x22, setID: 0x1},
- 158: {cat: 0x23, setID: 0x2},
- 159: {cat: 0x2c, setID: 0x22},
- 160: {cat: 0x2d, setID: 0x5},
- 161: {cat: 0x21, setID: 0x3},
- 162: {cat: 0x22, setID: 0x1},
- 163: {cat: 0x23, setID: 0x2},
- 164: {cat: 0x24, setID: 0x23},
- 165: {cat: 0x25, setID: 0x24},
-} // Size: 356 bytes
-
-var cardinalIndex = []uint8{ // 36 elements
- 0x00, 0x00, 0x02, 0x03, 0x04, 0x06, 0x09, 0x0a,
- 0x0c, 0x0d, 0x10, 0x14, 0x17, 0x1d, 0x28, 0x2b,
- 0x2d, 0x2f, 0x32, 0x38, 0x42, 0x45, 0x4c, 0x55,
- 0x5c, 0x61, 0x6d, 0x74, 0x79, 0x7d, 0x89, 0x91,
- 0x95, 0x9c, 0xa1, 0xa6,
-} // Size: 60 bytes
-
-var cardinalLangToIndex = []uint8{ // 775 elements
- // Entry 0 - 3F
- 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x06, 0x06,
- 0x01, 0x01, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
- 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
- 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
- 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
- 0x01, 0x01, 0x08, 0x08, 0x04, 0x04, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x00, 0x00, 0x1a, 0x1a, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x06, 0x00, 0x00,
- // Entry 40 - 7F
- 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x1e,
- 0x08, 0x08, 0x13, 0x13, 0x13, 0x13, 0x13, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x18, 0x18, 0x00, 0x00, 0x22, 0x22, 0x09, 0x09,
- 0x09, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x00, 0x00, 0x16, 0x16, 0x00,
- 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 80 - BF
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- // Entry C0 - FF
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- // Entry 100 - 13F
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04,
- 0x08, 0x08, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x0c, 0x0c,
- 0x08, 0x08, 0x08, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- // Entry 140 - 17F
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x08, 0x08, 0x04, 0x04, 0x1f, 0x1f,
- 0x14, 0x14, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08,
- 0x01, 0x01, 0x06, 0x00, 0x00, 0x20, 0x20, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x17, 0x17, 0x01,
- 0x01, 0x13, 0x13, 0x13, 0x16, 0x16, 0x08, 0x08,
- 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 180 - 1BF
- 0x00, 0x04, 0x0a, 0x0a, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x10, 0x17, 0x00, 0x00, 0x00, 0x08, 0x08,
- 0x04, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x02,
- 0x02, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01,
- 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08,
- 0x08, 0x08, 0x00, 0x00, 0x0f, 0x0f, 0x08, 0x10,
- // Entry 1C0 - 1FF
- 0x10, 0x08, 0x08, 0x0e, 0x0e, 0x08, 0x08, 0x08,
- 0x08, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x1b, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0d, 0x08,
- 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06,
- 0x00, 0x00, 0x08, 0x08, 0x0b, 0x0b, 0x08, 0x08,
- 0x08, 0x08, 0x12, 0x01, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 200 - 23F
- 0x00, 0x08, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00,
- 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x08,
- 0x06, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x06, 0x06,
- 0x06, 0x06, 0x06, 0x08, 0x19, 0x19, 0x0d, 0x0d,
- 0x08, 0x08, 0x03, 0x04, 0x03, 0x04, 0x04, 0x04,
- // Entry 240 - 27F
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x12,
- 0x12, 0x12, 0x08, 0x08, 0x1d, 0x1d, 0x1d, 0x1d,
- 0x1d, 0x1d, 0x1d, 0x00, 0x00, 0x08, 0x08, 0x00,
- 0x00, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x08,
- 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x00, 0x00,
- 0x00, 0x00, 0x13, 0x11, 0x11, 0x11, 0x11, 0x11,
- 0x05, 0x05, 0x18, 0x18, 0x15, 0x15, 0x10, 0x10,
- // Entry 280 - 2BF
- 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x13,
- 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
- 0x13, 0x13, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06,
- 0x08, 0x08, 0x08, 0x0c, 0x08, 0x00, 0x00, 0x08,
- // Entry 2C0 - 2FF
- 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x07,
- 0x07, 0x08, 0x08, 0x1d, 0x1d, 0x04, 0x04, 0x04,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08,
- 0x08, 0x08, 0x08, 0x06, 0x08, 0x08, 0x00, 0x00,
- 0x08, 0x08, 0x08, 0x00, 0x00, 0x04, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 300 - 33F
- 0x00, 0x00, 0x00, 0x01, 0x01, 0x04, 0x04,
-} // Size: 799 bytes
-
-var cardinalInclusionMasks = []uint64{ // 100 elements
- // Entry 0 - 1F
- 0x0000000200500419, 0x0000000000512153, 0x000000000a327105, 0x0000000ca23c7101,
- 0x00000004a23c7201, 0x0000000482943001, 0x0000001482943201, 0x0000000502943001,
- 0x0000000502943001, 0x0000000522943201, 0x0000000540543401, 0x00000000454128e1,
- 0x000000005b02e821, 0x000000006304e821, 0x000000006304ea21, 0x0000000042842821,
- 0x0000000042842a21, 0x0000000042842821, 0x0000000042842821, 0x0000000062842a21,
- 0x0000000200400421, 0x0000000000400061, 0x000000000a004021, 0x0000000022004021,
- 0x0000000022004221, 0x0000000002800021, 0x0000000002800221, 0x0000000002800021,
- 0x0000000002800021, 0x0000000022800221, 0x0000000000400421, 0x0000000000400061,
- // Entry 20 - 3F
- 0x000000000a004021, 0x0000000022004021, 0x0000000022004221, 0x0000000002800021,
- 0x0000000002800221, 0x0000000002800021, 0x0000000002800021, 0x0000000022800221,
- 0x0000000200400421, 0x0000000000400061, 0x000000000a004021, 0x0000000022004021,
- 0x0000000022004221, 0x0000000002800021, 0x0000000002800221, 0x0000000002800021,
- 0x0000000002800021, 0x0000000022800221, 0x0000000000400421, 0x0000000000400061,
- 0x000000000a004021, 0x0000000022004021, 0x0000000022004221, 0x0000000002800021,
- 0x0000000002800221, 0x0000000002800021, 0x0000000002800021, 0x0000000022800221,
- 0x0000000200400421, 0x0000000000400061, 0x000000000a004021, 0x0000000022004021,
- // Entry 40 - 5F
- 0x0000000022004221, 0x0000000002800021, 0x0000000002800221, 0x0000000002800021,
- 0x0000000002800021, 0x0000000022800221, 0x0000000040400421, 0x0000000044400061,
- 0x000000005a004021, 0x0000000062004021, 0x0000000062004221, 0x0000000042800021,
- 0x0000000042800221, 0x0000000042800021, 0x0000000042800021, 0x0000000062800221,
- 0x0000000200400421, 0x0000000000400061, 0x000000000a004021, 0x0000000022004021,
- 0x0000000022004221, 0x0000000002800021, 0x0000000002800221, 0x0000000002800021,
- 0x0000000002800021, 0x0000000022800221, 0x0000000040400421, 0x0000000044400061,
- 0x000000005a004021, 0x0000000062004021, 0x0000000062004221, 0x0000000042800021,
- // Entry 60 - 7F
- 0x0000000042800221, 0x0000000042800021, 0x0000000042800021, 0x0000000062800221,
-} // Size: 824 bytes
-
-// Slots used for cardinal: A6 of 0xFF rules; 24 of 0xFF indexes; 37 of 64 sets
-
-// Total table size 3860 bytes (3KiB); checksum: AAFBF21