From 2698d6168d01dd94b0df1b1cc271f69da0917719 Mon Sep 17 00:00:00 2001 From: Zhizhen He Date: Thu, 9 Jun 2022 11:38:52 +0800 Subject: [PATCH] Fix typo and remove unnecessary conversion --- README.md | 2 + ast/ast.go | 16 +- ast/block.go | 4 +- ast/inline.go | 23 +- commonmark_test.go | 2 +- markdown.go | 7 +- parser/attribute.go | 7 +- parser/auto_link.go | 3 +- parser/blockquote.go | 6 +- parser/code_block.go | 6 +- parser/code_span.go | 3 +- parser/delimiter.go | 11 +- parser/emphasis.go | 6 +- parser/fcode_block.go | 6 +- parser/html_block.go | 3 +- parser/link.go | 5 +- parser/link_ref.go | 2 +- parser/list.go | 8 +- parser/list_item.go | 6 +- parser/paragraph.go | 3 +- parser/parser.go | 26 +- parser/raw_html.go | 6 +- parser/thematic_break.go | 22 +- renderer/html/html.go | 6 +- renderer/renderer.go | 2 +- testutil/testutil.go | 12 +- text/reader.go | 18 +- text/segment.go | 1 + util/html5entities.go | 2 +- util/unicode_case_folding.go | 3062 +++++++++++++++++----------------- util/util.go | 78 +- 31 files changed, 1672 insertions(+), 1692 deletions(-) diff --git a/README.md b/README.md index e3d6918..271cb44 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,7 @@ Import packages: ```go import ( "bytes" + "github.com/yuin/goldmark" ) ``` @@ -106,6 +107,7 @@ Custom parser and renderer ```go import ( "bytes" + "github.com/yuin/goldmark" "github.com/yuin/goldmark/extension" "github.com/yuin/goldmark/parser" diff --git a/ast/ast.go b/ast/ast.go index 3719ebb..5375d84 100644 --- a/ast/ast.go +++ b/ast/ast.go @@ -97,17 +97,17 @@ type Node interface { SortChildren(comparator func(n1, n2 Node) int) // ReplaceChild replace a node v1 with a node insertee. - // If v1 is not children of this node, ReplaceChild append a insetee to the + // If v1 is not children of this node, ReplaceChild append an insetee to the // tail of the children. ReplaceChild(self, v1, insertee Node) // InsertBefore inserts a node insertee before a node v1. - // If v1 is not children of this node, InsertBefore append a insetee to the + // If v1 is not children of this node, InsertBefore append an insetee to the // tail of the children. InsertBefore(self, v1, insertee Node) - // InsertAfterinserts a node insertee after a node v1. - // If v1 is not children of this node, InsertBefore append a insetee to the + // InsertAfter inserts a node insertee after a node v1. + // If v1 is not children of this node, InsertBefore append an insetee to the // tail of the children. InsertAfter(self, v1, insertee Node) @@ -118,7 +118,7 @@ type Node interface { // Dump dumps an AST tree structure to stdout. // This function completely aimed for debugging. - // level is a indent level. Implementer should indent informations with + // level is an indent level. Implementer should indent information with // 2 * level spaces. Dump(source []byte, level int) @@ -169,7 +169,7 @@ type Node interface { RemoveAttributes() } -// A BaseNode struct implements the Node interface partialliy. +// A BaseNode struct implements the Node interface partially. type BaseNode struct { firstChild Node lastChild Node @@ -468,7 +468,7 @@ const ( // WalkStop indicates no more walking needed. WalkStop WalkStatus = iota + 1 - // WalkSkipChildren indicates that Walk wont walk on children of current + // WalkSkipChildren indicates that Walk won't walk on children of current // node. WalkSkipChildren @@ -482,7 +482,7 @@ const ( // If Walker returns error, Walk function immediately stop walking. type Walker func(n Node, entering bool) (WalkStatus, error) -// Walk walks a AST tree by the depth first search algorithm. +// Walk walks an AST tree by the depth first search algorithm. func Walk(n Node, walker Walker) error { _, err := walkHelper(n, walker) return err diff --git a/ast/block.go b/ast/block.go index 02e9d51..7ca949d 100644 --- a/ast/block.go +++ b/ast/block.go @@ -7,7 +7,7 @@ import ( textm "github.com/yuin/goldmark/text" ) -// A BaseBlock struct implements the Node interface partialliy. +// A BaseBlock struct implements the Node interface partially. type BaseBlock struct { BaseNode blankPreviousLines bool @@ -265,7 +265,7 @@ type FencedCodeBlock struct { language []byte } -// Language returns an language in an info string. +// Language returns a language in an info string. // Language returns nil if this node does not have an info string. func (n *FencedCodeBlock) Language(source []byte) []byte { if n.language == nil && n.Info != nil { diff --git a/ast/inline.go b/ast/inline.go index fa6fc34..e383381 100644 --- a/ast/inline.go +++ b/ast/inline.go @@ -8,7 +8,7 @@ import ( "github.com/yuin/goldmark/util" ) -// A BaseInline struct implements the Node interface partialliy. +// A BaseInline struct implements the Node interface partially. type BaseInline struct { BaseNode } @@ -378,9 +378,10 @@ type Link struct { // Dump implements Node.Dump. func (n *Link) Dump(source []byte, level int) { - m := map[string]string{} - m["Destination"] = string(n.Destination) - m["Title"] = string(n.Title) + m := map[string]string{ + "Destination": string(n.Destination), + "Title": string(n.Title), + } DumpHelper(n, source, level, m, nil) } @@ -409,9 +410,10 @@ type Image struct { // Dump implements Node.Dump. func (n *Image) Dump(source []byte, level int) { - m := map[string]string{} - m["Destination"] = string(n.Destination) - m["Title"] = string(n.Title) + m := map[string]string{ + "Destination": string(n.Destination), + "Title": string(n.Title), + } DumpHelper(n, source, level, m, nil) } @@ -522,13 +524,14 @@ func (n *RawHTML) Inline() {} // Dump implements Node.Dump. func (n *RawHTML) Dump(source []byte, level int) { - m := map[string]string{} - t := []string{} + var t []string for i := 0; i < n.Segments.Len(); i++ { segment := n.Segments.At(i) t = append(t, string(segment.Value(source))) } - m["RawText"] = strings.Join(t, "") + m := map[string]string{ + "RawText": strings.Join(t, ""), + } DumpHelper(n, source, level, m, nil) } diff --git a/commonmark_test.go b/commonmark_test.go index 7482ff1..cbbfa2c 100644 --- a/commonmark_test.go +++ b/commonmark_test.go @@ -28,7 +28,7 @@ func TestSpec(t *testing.T) { if err := json.Unmarshal(bs, &testCases); err != nil { panic(err) } - cases := []testutil.MarkdownTestCase{} + var cases []testutil.MarkdownTestCase nos := testutil.ParseCliCaseArg() for _, c := range testCases { shouldAdd := len(nos) == 0 diff --git a/markdown.go b/markdown.go index 86d12e2..ac6c58f 100644 --- a/markdown.go +++ b/markdown.go @@ -1,13 +1,14 @@ -// Package goldmark implements functions to convert markdown text to a desired format. +// Package goldmark implements functions to convert Markdown text to a desired format. package goldmark import ( + "io" + "github.com/yuin/goldmark/parser" "github.com/yuin/goldmark/renderer" "github.com/yuin/goldmark/renderer/html" "github.com/yuin/goldmark/text" "github.com/yuin/goldmark/util" - "io" ) // DefaultParser returns a new Parser that is configured by default values. @@ -44,7 +45,7 @@ type Markdown interface { // SetParser sets a Parser to this object. SetParser(parser.Parser) - // Parser returns a Renderer that will be used for conversion. + // Renderer returns a Renderer that will be used for conversion. Renderer() renderer.Renderer // SetRenderer sets a Renderer to this object. diff --git a/parser/attribute.go b/parser/attribute.go index f86c836..92347a2 100644 --- a/parser/attribute.go +++ b/parser/attribute.go @@ -170,7 +170,7 @@ func parseAttributeValue(reader text.Reader) (interface{}, bool) { func parseAttributeArray(reader text.Reader) ([]interface{}, bool) { reader.Advance(1) // skip [ - ret := []interface{}{} + var ret []interface{} for i := 0; ; i++ { c := reader.Peek() comma := false @@ -243,11 +243,10 @@ func parseAttributeString(reader text.Reader) ([]byte, bool) { func scanAttributeDecimal(reader text.Reader, w io.ByteWriter) { for { c := reader.Peek() - if util.IsNumeric(c) { - w.WriteByte(c) - } else { + if !util.IsNumeric(c) { return } + w.WriteByte(c) reader.Advance(1) } } diff --git a/parser/auto_link.go b/parser/auto_link.go index 726a505..20a6c05 100644 --- a/parser/auto_link.go +++ b/parser/auto_link.go @@ -6,8 +6,7 @@ import ( "github.com/yuin/goldmark/util" ) -type autoLinkParser struct { -} +type autoLinkParser struct{} var defaultAutoLinkParser = &autoLinkParser{} diff --git a/parser/blockquote.go b/parser/blockquote.go index e7778dc..da3283f 100644 --- a/parser/blockquote.go +++ b/parser/blockquote.go @@ -6,13 +6,11 @@ import ( "github.com/yuin/goldmark/util" ) -type blockquoteParser struct { -} +type blockquoteParser struct{} var defaultBlockquoteParser = &blockquoteParser{} -// NewBlockquoteParser returns a new BlockParser that -// parses blockquotes. +// NewBlockquoteParser returns a new BlockParser that parses blockquotes. func NewBlockquoteParser() BlockParser { return defaultBlockquoteParser } diff --git a/parser/code_block.go b/parser/code_block.go index 732f18c..4447b3c 100644 --- a/parser/code_block.go +++ b/parser/code_block.go @@ -6,14 +6,12 @@ import ( "github.com/yuin/goldmark/util" ) -type codeBlockParser struct { -} +type codeBlockParser struct{} // CodeBlockParser is a BlockParser implementation that parses indented code blocks. var defaultCodeBlockParser = &codeBlockParser{} -// NewCodeBlockParser returns a new BlockParser that -// parses code blocks. +// NewCodeBlockParser returns a new BlockParser that parses code blocks. func NewCodeBlockParser() BlockParser { return defaultCodeBlockParser } diff --git a/parser/code_span.go b/parser/code_span.go index a74b09b..ef2e800 100644 --- a/parser/code_span.go +++ b/parser/code_span.go @@ -5,8 +5,7 @@ import ( "github.com/yuin/goldmark/text" ) -type codeSpanParser struct { -} +type codeSpanParser struct{} var defaultCodeSpanParser = &codeSpanParser{} diff --git a/parser/delimiter.go b/parser/delimiter.go index eb843af..8ac95ad 100644 --- a/parser/delimiter.go +++ b/parser/delimiter.go @@ -9,8 +9,7 @@ import ( "github.com/yuin/goldmark/util" ) -// A DelimiterProcessor interface provides a set of functions about -// Delimiter nodes. +// A DelimiterProcessor interface provides a set of functions about Delimiter nodes. type DelimiterProcessor interface { // IsDelimiter returns true if given character is a delimiter, otherwise false. IsDelimiter(byte) bool @@ -82,9 +81,9 @@ func (d *Delimiter) ConsumeCharacters(n int) { d.Segment = d.Segment.WithStop(d.Segment.Start + d.Length) } -// CalcComsumption calculates how many characters should be used for opening +// CalcConsumption calculates how many characters should be used for opening // a new span correspond to given closer. -func (d *Delimiter) CalcComsumption(closer *Delimiter) int { +func (d *Delimiter) CalcConsumption(closer *Delimiter) int { if (d.CanClose || closer.CanOpen) && (d.OriginalLength+closer.OriginalLength)%3 == 0 && closer.OriginalLength%3 != 0 { return 0 } @@ -150,7 +149,7 @@ func ScanDelimiter(line []byte, before rune, min int, processor DelimiterProcess } // ProcessDelimiters processes the delimiter list in the context. -// Processing will be stop when reaching the bottom. +// Processing will stop when reaching the bottom. // // If you implement an inline parser that can have other inline nodes as // children, you should call this function when nesting span has closed. @@ -188,7 +187,7 @@ func ProcessDelimiters(bottom ast.Node, pc Context) { for opener = closer.PreviousDelimiter; opener != nil && opener != bottom; opener = opener.PreviousDelimiter { if opener.CanOpen && opener.Processor.CanOpenCloser(opener, closer) { maybeOpener = true - consume = opener.CalcComsumption(closer) + consume = opener.CalcConsumption(closer) if consume > 0 { found = true break diff --git a/parser/emphasis.go b/parser/emphasis.go index 4886471..4b27b05 100644 --- a/parser/emphasis.go +++ b/parser/emphasis.go @@ -5,8 +5,7 @@ import ( "github.com/yuin/goldmark/text" ) -type emphasisDelimiterProcessor struct { -} +type emphasisDelimiterProcessor struct{} func (p *emphasisDelimiterProcessor) IsDelimiter(b byte) bool { return b == '*' || b == '_' @@ -22,8 +21,7 @@ func (p *emphasisDelimiterProcessor) OnMatch(consumes int) ast.Node { var defaultEmphasisDelimiterProcessor = &emphasisDelimiterProcessor{} -type emphasisParser struct { -} +type emphasisParser struct{} var defaultEmphasisParser = &emphasisParser{} diff --git a/parser/fcode_block.go b/parser/fcode_block.go index 5914138..1de558e 100644 --- a/parser/fcode_block.go +++ b/parser/fcode_block.go @@ -8,13 +8,11 @@ import ( "github.com/yuin/goldmark/util" ) -type fencedCodeBlockParser struct { -} +type fencedCodeBlockParser struct{} var defaultFencedCodeBlockParser = &fencedCodeBlockParser{} -// NewFencedCodeBlockParser returns a new BlockParser that -// parses fenced code blocks. +// NewFencedCodeBlockParser returns a new BlockParser that parses fenced code blocks. func NewFencedCodeBlockParser() BlockParser { return defaultFencedCodeBlockParser } diff --git a/parser/html_block.go b/parser/html_block.go index 380e723..fd47ee7 100644 --- a/parser/html_block.go +++ b/parser/html_block.go @@ -100,8 +100,7 @@ type htmlBlockParser struct { var defaultHTMLBlockParser = &htmlBlockParser{} -// NewHTMLBlockParser return a new BlockParser that can parse html -// blocks. +// NewHTMLBlockParser return a new BlockParser that can parse html blocks. func NewHTMLBlockParser() BlockParser { return defaultHTMLBlockParser } diff --git a/parser/link.go b/parser/link.go index 99583ac..7ec4c03 100644 --- a/parser/link.go +++ b/parser/link.go @@ -105,8 +105,7 @@ func removeLinkLabelState(pc Context, d *linkLabelState) { d.Last = nil } -type linkParser struct { -} +type linkParser struct{} var defaultLinkParser = &linkParser{} @@ -244,7 +243,7 @@ func (s *linkParser) processLinkLabel(parent ast.Node, link *ast.Link, last *lin } } -var linkFindClosureOptions text.FindClosureOptions = text.FindClosureOptions{ +var linkFindClosureOptions = text.FindClosureOptions{ Nesting: false, Newline: true, Advance: true, diff --git a/parser/link_ref.go b/parser/link_ref.go index ea3f654..78fa3ea 100644 --- a/parser/link_ref.go +++ b/parser/link_ref.go @@ -16,7 +16,7 @@ var LinkReferenceParagraphTransformer = &linkReferenceParagraphTransformer{} func (p *linkReferenceParagraphTransformer) Transform(node *ast.Paragraph, reader text.Reader, pc Context) { lines := node.Lines() block := text.NewBlockReader(reader.Source(), lines) - removes := [][2]int{} + var removes [][2]int for { start, end := parseLinkReferenceDefinition(block, pc) if start > -1 { diff --git a/parser/list.go b/parser/list.go index 2a1c03a..5a70084 100644 --- a/parser/list.go +++ b/parser/list.go @@ -109,13 +109,11 @@ func lastOffset(node ast.Node) int { return 0 } -type listParser struct { -} +type listParser struct{} var defaultListParser = &listParser{} -// NewListParser returns a new BlockParser that -// parses lists. +// NewListParser returns a new BlockParser that parses lists. // This parser must take precedence over the ListItemParser. func NewListParser() BlockParser { return defaultListParser @@ -147,7 +145,7 @@ func (b *listParser) Open(parent ast.Node, reader text.Reader, pc Context) (ast. if typ == orderedList && start != 1 { return nil, NoChildren } - //an empty list item cannot interrupt a paragraph: + // an empty list item cannot interrupt a paragraph: if match[4] < 0 || util.IsBlank(line[match[4]:match[5]]) { return nil, NoChildren } diff --git a/parser/list_item.go b/parser/list_item.go index 81357a9..e89bf86 100644 --- a/parser/list_item.go +++ b/parser/list_item.go @@ -6,13 +6,11 @@ import ( "github.com/yuin/goldmark/util" ) -type listItemParser struct { -} +type listItemParser struct{} var defaultListItemParser = &listItemParser{} -// NewListItemParser returns a new BlockParser that -// parses list items. +// NewListItemParser returns a new BlockParser that parses list items. func NewListItemParser() BlockParser { return defaultListItemParser } diff --git a/parser/paragraph.go b/parser/paragraph.go index 2dd2b9a..dd0848a 100644 --- a/parser/paragraph.go +++ b/parser/paragraph.go @@ -10,8 +10,7 @@ type paragraphParser struct { var defaultParagraphParser = ¶graphParser{} -// NewParagraphParser returns a new BlockParser that -// parses paragraphs. +// NewParagraphParser returns a new BlockParser that parses paragraphs. func NewParagraphParser() BlockParser { return defaultParagraphParser } diff --git a/parser/parser.go b/parser/parser.go index bac0704..6c0e9e9 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -75,7 +75,7 @@ func newIDs() IDs { func (s *ids) Generate(value []byte, kind ast.NodeKind) []byte { value = util.TrimLeftSpace(value) value = util.TrimRightSpace(value) - result := []byte{} + var result []byte for i := 0; i < len(value); { v := value[i] l := util.UTF8Len(v) @@ -162,7 +162,7 @@ type Context interface { // BlockOffset returns -1 if current line is blank. BlockOffset() int - // BlockOffset sets a first non-space character position on current line. + // SetBlockOffset sets a first non-space character position on current line. // This value is valid only for BlockParser.Open. SetBlockOffset(int) @@ -171,7 +171,7 @@ type Context interface { // BlockIndent returns -1 if current line is blank. BlockIndent() int - // BlockIndent sets an indent width on current line. + // SetBlockIndent sets an indent width on current line. // This value is valid only for BlockParser.Open. SetBlockIndent(int) @@ -370,7 +370,7 @@ func (p *parseContext) References() []Reference { } func (p *parseContext) String() string { - refs := []string{} + var refs []string for _, r := range p.refs { refs = append(refs, r.String()) } @@ -451,11 +451,10 @@ type Option interface { // OptionName is a name of parser options. type OptionName string -// Attribute is an option name that spacify attributes of elements. +// Attribute is an option name that specifies attributes of elements. const optAttribute OptionName = "Attribute" -type withAttribute struct { -} +type withAttribute struct{} func (o *withAttribute) SetParserOption(c *Config) { c.Options[optAttribute] = true @@ -471,7 +470,7 @@ type Parser interface { // Parse parses the given Markdown text into AST nodes. Parse(reader text.Reader, opts ...ParseOption) ast.Node - // AddOption adds the given option to this parser. + // AddOptions adds the given option to this parser. AddOptions(...Option) } @@ -499,7 +498,7 @@ type BlockParser interface { // // If Open has not been able to parse the current line, Open should returns // (nil, NoChildren). If Open has been able to parse the current line, Open - // should returns a new Block node and returns HasChildren or NoChildren. + // should return a new Block node and returns HasChildren or NoChildren. Open(parent ast.Node, reader text.Reader, pc Context) (ast.Node, State) // Continue parses the current line and returns a result of parsing. @@ -509,9 +508,8 @@ type BlockParser interface { // a reader position by consumed byte length. // // If Continue has not been able to parse the current line, Continue should - // returns Close. If Continue has been able to parse the current line, - // Continue should returns (Continue | NoChildren) or - // (Continue | HasChildren) + // return Close. If Continue has been able to parse the current line, + // Continue should return (Continue | NoChildren) or (Continue | HasChildren) Continue(node ast.Node, reader text.Reader, pc Context) State // Close will be called when the parser returns Close. @@ -535,7 +533,7 @@ type InlineParser interface { // a head of line Trigger() []byte - // Parse parse the given block into an inline node. + // Parse parses the given block into an inline node. // // Parse can parse beyond the current line. // If Parse has been able to parse the current line, it must advance a reader @@ -907,7 +905,7 @@ const ( ) func (p *parser) openBlocks(parent ast.Node, blankLine bool, reader text.Reader, pc Context) blockOpenResult { - result := blockOpenResult(noBlocksOpened) + result := noBlocksOpened continuable := false lastBlock := pc.LastOpenedBlock() if lastBlock.Node != nil { diff --git a/parser/raw_html.go b/parser/raw_html.go index 55b9a99..493b671 100644 --- a/parser/raw_html.go +++ b/parser/raw_html.go @@ -14,8 +14,7 @@ type rawHTMLParser struct { var defaultRawHTMLParser = &rawHTMLParser{} -// NewRawHTMLParser return a new InlineParser that can parse -// inline htmls +// NewRawHTMLParser return a new InlineParser that can parse inline htmls func NewRawHTMLParser() InlineParser { return defaultRawHTMLParser } @@ -153,9 +152,8 @@ func (s *rawHTMLParser) parseMultiLineRegexp(reg *regexp.Regexp, block text.Read if l == eline { block.Advance(end - start) break - } else { - block.AdvanceLine() } + block.AdvanceLine() } return node } diff --git a/parser/thematic_break.go b/parser/thematic_break.go index db20a1e..bc964d2 100644 --- a/parser/thematic_break.go +++ b/parser/thematic_break.go @@ -6,15 +6,13 @@ import ( "github.com/yuin/goldmark/util" ) -type thematicBreakPraser struct { -} +type thematicBreakParser struct{} -var defaultThematicBreakPraser = &thematicBreakPraser{} +var defaultThematicBreakParser = &thematicBreakParser{} -// NewThematicBreakParser returns a new BlockParser that -// parses thematic breaks. +// NewThematicBreakParser returns a new BlockParser that parses thematic breaks. func NewThematicBreakParser() BlockParser { - return defaultThematicBreakPraser + return defaultThematicBreakParser } func isThematicBreak(line []byte, offset int) bool { @@ -45,11 +43,11 @@ func isThematicBreak(line []byte, offset int) bool { return count > 2 } -func (b *thematicBreakPraser) Trigger() []byte { +func (b *thematicBreakParser) Trigger() []byte { return []byte{'-', '*', '_'} } -func (b *thematicBreakPraser) Open(parent ast.Node, reader text.Reader, pc Context) (ast.Node, State) { +func (b *thematicBreakParser) Open(parent ast.Node, reader text.Reader, pc Context) (ast.Node, State) { line, segment := reader.PeekLine() if isThematicBreak(line, reader.LineOffset()) { reader.Advance(segment.Len() - 1) @@ -58,18 +56,18 @@ func (b *thematicBreakPraser) Open(parent ast.Node, reader text.Reader, pc Conte return nil, NoChildren } -func (b *thematicBreakPraser) Continue(node ast.Node, reader text.Reader, pc Context) State { +func (b *thematicBreakParser) Continue(node ast.Node, reader text.Reader, pc Context) State { return Close } -func (b *thematicBreakPraser) Close(node ast.Node, reader text.Reader, pc Context) { +func (b *thematicBreakParser) Close(node ast.Node, reader text.Reader, pc Context) { // nothing to do } -func (b *thematicBreakPraser) CanInterruptParagraph() bool { +func (b *thematicBreakParser) CanInterruptParagraph() bool { return true } -func (b *thematicBreakPraser) CanAcceptIndentedLine() bool { +func (b *thematicBreakParser) CanAcceptIndentedLine() bool { return false } diff --git a/renderer/html/html.go b/renderer/html/html.go index 12fa7ce..53a4c69 100644 --- a/renderer/html/html.go +++ b/renderer/html/html.go @@ -97,8 +97,7 @@ func WithHardWraps() interface { // XHTML is an option name used in WithXHTML. const optXHTML renderer.OptionName = "XHTML" -type withXHTML struct { -} +type withXHTML struct{} func (o *withXHTML) SetConfig(c *renderer.Config) { c.Options[optXHTML] = true @@ -683,8 +682,7 @@ type Writer interface { var replacementCharacter = []byte("\ufffd") -type defaultWriter struct { -} +type defaultWriter struct{} func escapeRune(writer util.BufWriter, r rune) { if r < 256 { diff --git a/renderer/renderer.go b/renderer/renderer.go index 10f6d40..1630c64 100644 --- a/renderer/renderer.go +++ b/renderer/renderer.go @@ -74,7 +74,7 @@ type NodeRendererFunc func(writer util.BufWriter, source []byte, n ast.Node, ent // A NodeRenderer interface offers NodeRendererFuncs. type NodeRenderer interface { - // RendererFuncs registers NodeRendererFuncs to given NodeRendererFuncRegisterer. + // RegisterFuncs registers NodeRendererFuncs to given NodeRendererFuncRegisterer. RegisterFuncs(NodeRendererFuncRegisterer) } diff --git a/testutil/testutil.go b/testutil/testutil.go index f7cb312..15bc5dc 100644 --- a/testutil/testutil.go +++ b/testutil/testutil.go @@ -65,11 +65,11 @@ type MarkdownTestCaseOptions struct { const attributeSeparator = "//- - - - - - - - -//" const caseSeparator = "//= = = = = = = = = = = = = = = = = = = = = = = =//" -var optionsRegexp *regexp.Regexp = regexp.MustCompile(`(?i)\s*options:(.*)`) +var optionsRegexp = regexp.MustCompile(`(?i)\s*options:(.*)`) // ParseCliCaseArg parses -case command line args. func ParseCliCaseArg() []int { - ret := []int{} + var ret []int for _, a := range os.Args { if strings.HasPrefix(a, "case=") { parts := strings.Split(a, "=") @@ -100,7 +100,7 @@ func DoTestCaseFile(m goldmark.Markdown, filename string, t TestingT, no ...int) Markdown: "", Expected: "", } - cases := []MarkdownTestCase{} + var cases []MarkdownTestCase line := 0 for scanner.Scan() { line++ @@ -135,7 +135,7 @@ func DoTestCaseFile(m goldmark.Markdown, filename string, t TestingT, no ...int) if scanner.Text() != attributeSeparator { panic(fmt.Sprintf("%s: invalid separator '%s' at line %d", filename, scanner.Text(), line)) } - buf := []string{} + var buf []string for scanner.Scan() { line++ text := scanner.Text() @@ -290,7 +290,7 @@ func simpleDiffAux(v1lines, v2lines [][]byte) []diff { overlap = newOverlap } if length == 0 { - diffs := []diff{} + var diffs []diff if len(v1lines) != 0 { diffs = append(diffs, diff{diffRemoved, v1lines}) } @@ -377,7 +377,7 @@ func applyEscapeSequence(b []byte) []byte { } case 'u', 'U': if len(b) > i+2 { - num := []byte{} + var num []byte for j := i + 2; j < len(b); j++ { if util.IsHexDecimal(b[j]) { num = append(num, b[j]) diff --git a/text/reader.go b/text/reader.go index 319f1c8..1976206 100644 --- a/text/reader.go +++ b/text/reader.go @@ -61,14 +61,14 @@ type Reader interface { // If it reaches EOF, returns false. SkipSpaces() (Segment, int, bool) - // SkipSpaces skips blank lines and returns a non-blank line. + // SkipBlankLines skips blank lines and returns a non-blank line. // If it reaches EOF, returns false. SkipBlankLines() (Segment, int, bool) // Match performs regular expression matching to current line. Match(reg *regexp.Regexp) bool - // Match performs regular expression searching to current line. + // FindSubMatch performs regular expression searching to current line. FindSubMatch(reg *regexp.Regexp) [][]byte // FindClosure finds corresponding closure. @@ -94,6 +94,7 @@ type FindClosureOptions struct { Advance bool } +// reader implements io.RuneReader interface type reader struct { source []byte sourceLength int @@ -153,7 +154,6 @@ func (r *reader) PeekLine() ([]byte, Segment) { return nil, r.pos } -// io.RuneReader interface func (r *reader) ReadRune() (rune, int, error) { return readRuneReader(r) } @@ -276,6 +276,7 @@ type BlockReader interface { Reset(segment *Segments) } +// blockReader implements io.RuneReader interface type blockReader struct { source []byte segments *Segments @@ -353,21 +354,20 @@ func (r *blockReader) Value(seg Segment) []byte { return ret } -// io.RuneReader interface func (r *blockReader) ReadRune() (rune, int, error) { return readRuneReader(r) } func (r *blockReader) PrecendingCharacter() rune { if r.pos.Padding != 0 { - return rune(' ') + return ' ' } if r.segments.Len() < 1 { - return rune('\n') + return '\n' } firstSegment := r.segments.At(0) if r.line == 0 && r.pos.Start <= firstSegment.Start { - return rune('\n') + return '\n' } l := len(r.source) i := r.pos.Start - 1 @@ -377,7 +377,7 @@ func (r *blockReader) PrecendingCharacter() rune { } } if i < 0 || i >= l { - return rune('\n') + return '\n' } rn, _ := utf8.DecodeRune(r.source[i:]) return rn @@ -549,7 +549,7 @@ func findSubMatchReader(r Reader, reg *regexp.Regexp) [][]byte { i += size runes = append(runes, r) } - result := [][]byte{} + var result [][]byte for i := 0; i < len(match); i += 2 { result = append(result, []byte(string(runes[match[i]:match[i+1]]))) } diff --git a/text/segment.go b/text/segment.go index badd4bc..06e46dc 100644 --- a/text/segment.go +++ b/text/segment.go @@ -2,6 +2,7 @@ package text import ( "bytes" + "github.com/yuin/goldmark/util" ) diff --git a/util/html5entities.go b/util/html5entities.go index b8e00a9..64cf4c9 100644 --- a/util/html5entities.go +++ b/util/html5entities.go @@ -1,6 +1,6 @@ package util -// An HTML5Entity struct represents HTML5 entitites. +// An HTML5Entity struct represents HTML5 entities. type HTML5Entity struct { Name string CodePoints []int diff --git a/util/unicode_case_folding.go b/util/unicode_case_folding.go index f0e6aa4..72b1468 100644 --- a/util/unicode_case_folding.go +++ b/util/unicode_case_folding.go @@ -1,1534 +1,1534 @@ package util -var unicodeCaseFoldings = map[rune][]rune { - 0x41 : []int32{97}, - 0x42 : []int32{98}, - 0x43 : []int32{99}, - 0x44 : []int32{100}, - 0x45 : []int32{101}, - 0x46 : []int32{102}, - 0x47 : []int32{103}, - 0x48 : []int32{104}, - 0x49 : []int32{105}, - 0x4a : []int32{106}, - 0x4b : []int32{107}, - 0x4c : []int32{108}, - 0x4d : []int32{109}, - 0x4e : []int32{110}, - 0x4f : []int32{111}, - 0x50 : []int32{112}, - 0x51 : []int32{113}, - 0x52 : []int32{114}, - 0x53 : []int32{115}, - 0x54 : []int32{116}, - 0x55 : []int32{117}, - 0x56 : []int32{118}, - 0x57 : []int32{119}, - 0x58 : []int32{120}, - 0x59 : []int32{121}, - 0x5a : []int32{122}, - 0xb5 : []int32{956}, - 0xc0 : []int32{224}, - 0xc1 : []int32{225}, - 0xc2 : []int32{226}, - 0xc3 : []int32{227}, - 0xc4 : []int32{228}, - 0xc5 : []int32{229}, - 0xc6 : []int32{230}, - 0xc7 : []int32{231}, - 0xc8 : []int32{232}, - 0xc9 : []int32{233}, - 0xca : []int32{234}, - 0xcb : []int32{235}, - 0xcc : []int32{236}, - 0xcd : []int32{237}, - 0xce : []int32{238}, - 0xcf : []int32{239}, - 0xd0 : []int32{240}, - 0xd1 : []int32{241}, - 0xd2 : []int32{242}, - 0xd3 : []int32{243}, - 0xd4 : []int32{244}, - 0xd5 : []int32{245}, - 0xd6 : []int32{246}, - 0xd8 : []int32{248}, - 0xd9 : []int32{249}, - 0xda : []int32{250}, - 0xdb : []int32{251}, - 0xdc : []int32{252}, - 0xdd : []int32{253}, - 0xde : []int32{254}, - 0xdf : []int32{115, 115}, - 0x100 : []int32{257}, - 0x102 : []int32{259}, - 0x104 : []int32{261}, - 0x106 : []int32{263}, - 0x108 : []int32{265}, - 0x10a : []int32{267}, - 0x10c : []int32{269}, - 0x10e : []int32{271}, - 0x110 : []int32{273}, - 0x112 : []int32{275}, - 0x114 : []int32{277}, - 0x116 : []int32{279}, - 0x118 : []int32{281}, - 0x11a : []int32{283}, - 0x11c : []int32{285}, - 0x11e : []int32{287}, - 0x120 : []int32{289}, - 0x122 : []int32{291}, - 0x124 : []int32{293}, - 0x126 : []int32{295}, - 0x128 : []int32{297}, - 0x12a : []int32{299}, - 0x12c : []int32{301}, - 0x12e : []int32{303}, - 0x130 : []int32{105, 775}, - 0x132 : []int32{307}, - 0x134 : []int32{309}, - 0x136 : []int32{311}, - 0x139 : []int32{314}, - 0x13b : []int32{316}, - 0x13d : []int32{318}, - 0x13f : []int32{320}, - 0x141 : []int32{322}, - 0x143 : []int32{324}, - 0x145 : []int32{326}, - 0x147 : []int32{328}, - 0x149 : []int32{700, 110}, - 0x14a : []int32{331}, - 0x14c : []int32{333}, - 0x14e : []int32{335}, - 0x150 : []int32{337}, - 0x152 : []int32{339}, - 0x154 : []int32{341}, - 0x156 : []int32{343}, - 0x158 : []int32{345}, - 0x15a : []int32{347}, - 0x15c : []int32{349}, - 0x15e : []int32{351}, - 0x160 : []int32{353}, - 0x162 : []int32{355}, - 0x164 : []int32{357}, - 0x166 : []int32{359}, - 0x168 : []int32{361}, - 0x16a : []int32{363}, - 0x16c : []int32{365}, - 0x16e : []int32{367}, - 0x170 : []int32{369}, - 0x172 : []int32{371}, - 0x174 : []int32{373}, - 0x176 : []int32{375}, - 0x178 : []int32{255}, - 0x179 : []int32{378}, - 0x17b : []int32{380}, - 0x17d : []int32{382}, - 0x17f : []int32{115}, - 0x181 : []int32{595}, - 0x182 : []int32{387}, - 0x184 : []int32{389}, - 0x186 : []int32{596}, - 0x187 : []int32{392}, - 0x189 : []int32{598}, - 0x18a : []int32{599}, - 0x18b : []int32{396}, - 0x18e : []int32{477}, - 0x18f : []int32{601}, - 0x190 : []int32{603}, - 0x191 : []int32{402}, - 0x193 : []int32{608}, - 0x194 : []int32{611}, - 0x196 : []int32{617}, - 0x197 : []int32{616}, - 0x198 : []int32{409}, - 0x19c : []int32{623}, - 0x19d : []int32{626}, - 0x19f : []int32{629}, - 0x1a0 : []int32{417}, - 0x1a2 : []int32{419}, - 0x1a4 : []int32{421}, - 0x1a6 : []int32{640}, - 0x1a7 : []int32{424}, - 0x1a9 : []int32{643}, - 0x1ac : []int32{429}, - 0x1ae : []int32{648}, - 0x1af : []int32{432}, - 0x1b1 : []int32{650}, - 0x1b2 : []int32{651}, - 0x1b3 : []int32{436}, - 0x1b5 : []int32{438}, - 0x1b7 : []int32{658}, - 0x1b8 : []int32{441}, - 0x1bc : []int32{445}, - 0x1c4 : []int32{454}, - 0x1c5 : []int32{454}, - 0x1c7 : []int32{457}, - 0x1c8 : []int32{457}, - 0x1ca : []int32{460}, - 0x1cb : []int32{460}, - 0x1cd : []int32{462}, - 0x1cf : []int32{464}, - 0x1d1 : []int32{466}, - 0x1d3 : []int32{468}, - 0x1d5 : []int32{470}, - 0x1d7 : []int32{472}, - 0x1d9 : []int32{474}, - 0x1db : []int32{476}, - 0x1de : []int32{479}, - 0x1e0 : []int32{481}, - 0x1e2 : []int32{483}, - 0x1e4 : []int32{485}, - 0x1e6 : []int32{487}, - 0x1e8 : []int32{489}, - 0x1ea : []int32{491}, - 0x1ec : []int32{493}, - 0x1ee : []int32{495}, - 0x1f0 : []int32{106, 780}, - 0x1f1 : []int32{499}, - 0x1f2 : []int32{499}, - 0x1f4 : []int32{501}, - 0x1f6 : []int32{405}, - 0x1f7 : []int32{447}, - 0x1f8 : []int32{505}, - 0x1fa : []int32{507}, - 0x1fc : []int32{509}, - 0x1fe : []int32{511}, - 0x200 : []int32{513}, - 0x202 : []int32{515}, - 0x204 : []int32{517}, - 0x206 : []int32{519}, - 0x208 : []int32{521}, - 0x20a : []int32{523}, - 0x20c : []int32{525}, - 0x20e : []int32{527}, - 0x210 : []int32{529}, - 0x212 : []int32{531}, - 0x214 : []int32{533}, - 0x216 : []int32{535}, - 0x218 : []int32{537}, - 0x21a : []int32{539}, - 0x21c : []int32{541}, - 0x21e : []int32{543}, - 0x220 : []int32{414}, - 0x222 : []int32{547}, - 0x224 : []int32{549}, - 0x226 : []int32{551}, - 0x228 : []int32{553}, - 0x22a : []int32{555}, - 0x22c : []int32{557}, - 0x22e : []int32{559}, - 0x230 : []int32{561}, - 0x232 : []int32{563}, - 0x23a : []int32{11365}, - 0x23b : []int32{572}, - 0x23d : []int32{410}, - 0x23e : []int32{11366}, - 0x241 : []int32{578}, - 0x243 : []int32{384}, - 0x244 : []int32{649}, - 0x245 : []int32{652}, - 0x246 : []int32{583}, - 0x248 : []int32{585}, - 0x24a : []int32{587}, - 0x24c : []int32{589}, - 0x24e : []int32{591}, - 0x345 : []int32{953}, - 0x370 : []int32{881}, - 0x372 : []int32{883}, - 0x376 : []int32{887}, - 0x37f : []int32{1011}, - 0x386 : []int32{940}, - 0x388 : []int32{941}, - 0x389 : []int32{942}, - 0x38a : []int32{943}, - 0x38c : []int32{972}, - 0x38e : []int32{973}, - 0x38f : []int32{974}, - 0x390 : []int32{953, 776, 769}, - 0x391 : []int32{945}, - 0x392 : []int32{946}, - 0x393 : []int32{947}, - 0x394 : []int32{948}, - 0x395 : []int32{949}, - 0x396 : []int32{950}, - 0x397 : []int32{951}, - 0x398 : []int32{952}, - 0x399 : []int32{953}, - 0x39a : []int32{954}, - 0x39b : []int32{955}, - 0x39c : []int32{956}, - 0x39d : []int32{957}, - 0x39e : []int32{958}, - 0x39f : []int32{959}, - 0x3a0 : []int32{960}, - 0x3a1 : []int32{961}, - 0x3a3 : []int32{963}, - 0x3a4 : []int32{964}, - 0x3a5 : []int32{965}, - 0x3a6 : []int32{966}, - 0x3a7 : []int32{967}, - 0x3a8 : []int32{968}, - 0x3a9 : []int32{969}, - 0x3aa : []int32{970}, - 0x3ab : []int32{971}, - 0x3b0 : []int32{965, 776, 769}, - 0x3c2 : []int32{963}, - 0x3cf : []int32{983}, - 0x3d0 : []int32{946}, - 0x3d1 : []int32{952}, - 0x3d5 : []int32{966}, - 0x3d6 : []int32{960}, - 0x3d8 : []int32{985}, - 0x3da : []int32{987}, - 0x3dc : []int32{989}, - 0x3de : []int32{991}, - 0x3e0 : []int32{993}, - 0x3e2 : []int32{995}, - 0x3e4 : []int32{997}, - 0x3e6 : []int32{999}, - 0x3e8 : []int32{1001}, - 0x3ea : []int32{1003}, - 0x3ec : []int32{1005}, - 0x3ee : []int32{1007}, - 0x3f0 : []int32{954}, - 0x3f1 : []int32{961}, - 0x3f4 : []int32{952}, - 0x3f5 : []int32{949}, - 0x3f7 : []int32{1016}, - 0x3f9 : []int32{1010}, - 0x3fa : []int32{1019}, - 0x3fd : []int32{891}, - 0x3fe : []int32{892}, - 0x3ff : []int32{893}, - 0x400 : []int32{1104}, - 0x401 : []int32{1105}, - 0x402 : []int32{1106}, - 0x403 : []int32{1107}, - 0x404 : []int32{1108}, - 0x405 : []int32{1109}, - 0x406 : []int32{1110}, - 0x407 : []int32{1111}, - 0x408 : []int32{1112}, - 0x409 : []int32{1113}, - 0x40a : []int32{1114}, - 0x40b : []int32{1115}, - 0x40c : []int32{1116}, - 0x40d : []int32{1117}, - 0x40e : []int32{1118}, - 0x40f : []int32{1119}, - 0x410 : []int32{1072}, - 0x411 : []int32{1073}, - 0x412 : []int32{1074}, - 0x413 : []int32{1075}, - 0x414 : []int32{1076}, - 0x415 : []int32{1077}, - 0x416 : []int32{1078}, - 0x417 : []int32{1079}, - 0x418 : []int32{1080}, - 0x419 : []int32{1081}, - 0x41a : []int32{1082}, - 0x41b : []int32{1083}, - 0x41c : []int32{1084}, - 0x41d : []int32{1085}, - 0x41e : []int32{1086}, - 0x41f : []int32{1087}, - 0x420 : []int32{1088}, - 0x421 : []int32{1089}, - 0x422 : []int32{1090}, - 0x423 : []int32{1091}, - 0x424 : []int32{1092}, - 0x425 : []int32{1093}, - 0x426 : []int32{1094}, - 0x427 : []int32{1095}, - 0x428 : []int32{1096}, - 0x429 : []int32{1097}, - 0x42a : []int32{1098}, - 0x42b : []int32{1099}, - 0x42c : []int32{1100}, - 0x42d : []int32{1101}, - 0x42e : []int32{1102}, - 0x42f : []int32{1103}, - 0x460 : []int32{1121}, - 0x462 : []int32{1123}, - 0x464 : []int32{1125}, - 0x466 : []int32{1127}, - 0x468 : []int32{1129}, - 0x46a : []int32{1131}, - 0x46c : []int32{1133}, - 0x46e : []int32{1135}, - 0x470 : []int32{1137}, - 0x472 : []int32{1139}, - 0x474 : []int32{1141}, - 0x476 : []int32{1143}, - 0x478 : []int32{1145}, - 0x47a : []int32{1147}, - 0x47c : []int32{1149}, - 0x47e : []int32{1151}, - 0x480 : []int32{1153}, - 0x48a : []int32{1163}, - 0x48c : []int32{1165}, - 0x48e : []int32{1167}, - 0x490 : []int32{1169}, - 0x492 : []int32{1171}, - 0x494 : []int32{1173}, - 0x496 : []int32{1175}, - 0x498 : []int32{1177}, - 0x49a : []int32{1179}, - 0x49c : []int32{1181}, - 0x49e : []int32{1183}, - 0x4a0 : []int32{1185}, - 0x4a2 : []int32{1187}, - 0x4a4 : []int32{1189}, - 0x4a6 : []int32{1191}, - 0x4a8 : []int32{1193}, - 0x4aa : []int32{1195}, - 0x4ac : []int32{1197}, - 0x4ae : []int32{1199}, - 0x4b0 : []int32{1201}, - 0x4b2 : []int32{1203}, - 0x4b4 : []int32{1205}, - 0x4b6 : []int32{1207}, - 0x4b8 : []int32{1209}, - 0x4ba : []int32{1211}, - 0x4bc : []int32{1213}, - 0x4be : []int32{1215}, - 0x4c0 : []int32{1231}, - 0x4c1 : []int32{1218}, - 0x4c3 : []int32{1220}, - 0x4c5 : []int32{1222}, - 0x4c7 : []int32{1224}, - 0x4c9 : []int32{1226}, - 0x4cb : []int32{1228}, - 0x4cd : []int32{1230}, - 0x4d0 : []int32{1233}, - 0x4d2 : []int32{1235}, - 0x4d4 : []int32{1237}, - 0x4d6 : []int32{1239}, - 0x4d8 : []int32{1241}, - 0x4da : []int32{1243}, - 0x4dc : []int32{1245}, - 0x4de : []int32{1247}, - 0x4e0 : []int32{1249}, - 0x4e2 : []int32{1251}, - 0x4e4 : []int32{1253}, - 0x4e6 : []int32{1255}, - 0x4e8 : []int32{1257}, - 0x4ea : []int32{1259}, - 0x4ec : []int32{1261}, - 0x4ee : []int32{1263}, - 0x4f0 : []int32{1265}, - 0x4f2 : []int32{1267}, - 0x4f4 : []int32{1269}, - 0x4f6 : []int32{1271}, - 0x4f8 : []int32{1273}, - 0x4fa : []int32{1275}, - 0x4fc : []int32{1277}, - 0x4fe : []int32{1279}, - 0x500 : []int32{1281}, - 0x502 : []int32{1283}, - 0x504 : []int32{1285}, - 0x506 : []int32{1287}, - 0x508 : []int32{1289}, - 0x50a : []int32{1291}, - 0x50c : []int32{1293}, - 0x50e : []int32{1295}, - 0x510 : []int32{1297}, - 0x512 : []int32{1299}, - 0x514 : []int32{1301}, - 0x516 : []int32{1303}, - 0x518 : []int32{1305}, - 0x51a : []int32{1307}, - 0x51c : []int32{1309}, - 0x51e : []int32{1311}, - 0x520 : []int32{1313}, - 0x522 : []int32{1315}, - 0x524 : []int32{1317}, - 0x526 : []int32{1319}, - 0x528 : []int32{1321}, - 0x52a : []int32{1323}, - 0x52c : []int32{1325}, - 0x52e : []int32{1327}, - 0x531 : []int32{1377}, - 0x532 : []int32{1378}, - 0x533 : []int32{1379}, - 0x534 : []int32{1380}, - 0x535 : []int32{1381}, - 0x536 : []int32{1382}, - 0x537 : []int32{1383}, - 0x538 : []int32{1384}, - 0x539 : []int32{1385}, - 0x53a : []int32{1386}, - 0x53b : []int32{1387}, - 0x53c : []int32{1388}, - 0x53d : []int32{1389}, - 0x53e : []int32{1390}, - 0x53f : []int32{1391}, - 0x540 : []int32{1392}, - 0x541 : []int32{1393}, - 0x542 : []int32{1394}, - 0x543 : []int32{1395}, - 0x544 : []int32{1396}, - 0x545 : []int32{1397}, - 0x546 : []int32{1398}, - 0x547 : []int32{1399}, - 0x548 : []int32{1400}, - 0x549 : []int32{1401}, - 0x54a : []int32{1402}, - 0x54b : []int32{1403}, - 0x54c : []int32{1404}, - 0x54d : []int32{1405}, - 0x54e : []int32{1406}, - 0x54f : []int32{1407}, - 0x550 : []int32{1408}, - 0x551 : []int32{1409}, - 0x552 : []int32{1410}, - 0x553 : []int32{1411}, - 0x554 : []int32{1412}, - 0x555 : []int32{1413}, - 0x556 : []int32{1414}, - 0x587 : []int32{1381, 1410}, - 0x10a0 : []int32{11520}, - 0x10a1 : []int32{11521}, - 0x10a2 : []int32{11522}, - 0x10a3 : []int32{11523}, - 0x10a4 : []int32{11524}, - 0x10a5 : []int32{11525}, - 0x10a6 : []int32{11526}, - 0x10a7 : []int32{11527}, - 0x10a8 : []int32{11528}, - 0x10a9 : []int32{11529}, - 0x10aa : []int32{11530}, - 0x10ab : []int32{11531}, - 0x10ac : []int32{11532}, - 0x10ad : []int32{11533}, - 0x10ae : []int32{11534}, - 0x10af : []int32{11535}, - 0x10b0 : []int32{11536}, - 0x10b1 : []int32{11537}, - 0x10b2 : []int32{11538}, - 0x10b3 : []int32{11539}, - 0x10b4 : []int32{11540}, - 0x10b5 : []int32{11541}, - 0x10b6 : []int32{11542}, - 0x10b7 : []int32{11543}, - 0x10b8 : []int32{11544}, - 0x10b9 : []int32{11545}, - 0x10ba : []int32{11546}, - 0x10bb : []int32{11547}, - 0x10bc : []int32{11548}, - 0x10bd : []int32{11549}, - 0x10be : []int32{11550}, - 0x10bf : []int32{11551}, - 0x10c0 : []int32{11552}, - 0x10c1 : []int32{11553}, - 0x10c2 : []int32{11554}, - 0x10c3 : []int32{11555}, - 0x10c4 : []int32{11556}, - 0x10c5 : []int32{11557}, - 0x10c7 : []int32{11559}, - 0x10cd : []int32{11565}, - 0x13f8 : []int32{5104}, - 0x13f9 : []int32{5105}, - 0x13fa : []int32{5106}, - 0x13fb : []int32{5107}, - 0x13fc : []int32{5108}, - 0x13fd : []int32{5109}, - 0x1c80 : []int32{1074}, - 0x1c81 : []int32{1076}, - 0x1c82 : []int32{1086}, - 0x1c83 : []int32{1089}, - 0x1c84 : []int32{1090}, - 0x1c85 : []int32{1090}, - 0x1c86 : []int32{1098}, - 0x1c87 : []int32{1123}, - 0x1c88 : []int32{42571}, - 0x1c90 : []int32{4304}, - 0x1c91 : []int32{4305}, - 0x1c92 : []int32{4306}, - 0x1c93 : []int32{4307}, - 0x1c94 : []int32{4308}, - 0x1c95 : []int32{4309}, - 0x1c96 : []int32{4310}, - 0x1c97 : []int32{4311}, - 0x1c98 : []int32{4312}, - 0x1c99 : []int32{4313}, - 0x1c9a : []int32{4314}, - 0x1c9b : []int32{4315}, - 0x1c9c : []int32{4316}, - 0x1c9d : []int32{4317}, - 0x1c9e : []int32{4318}, - 0x1c9f : []int32{4319}, - 0x1ca0 : []int32{4320}, - 0x1ca1 : []int32{4321}, - 0x1ca2 : []int32{4322}, - 0x1ca3 : []int32{4323}, - 0x1ca4 : []int32{4324}, - 0x1ca5 : []int32{4325}, - 0x1ca6 : []int32{4326}, - 0x1ca7 : []int32{4327}, - 0x1ca8 : []int32{4328}, - 0x1ca9 : []int32{4329}, - 0x1caa : []int32{4330}, - 0x1cab : []int32{4331}, - 0x1cac : []int32{4332}, - 0x1cad : []int32{4333}, - 0x1cae : []int32{4334}, - 0x1caf : []int32{4335}, - 0x1cb0 : []int32{4336}, - 0x1cb1 : []int32{4337}, - 0x1cb2 : []int32{4338}, - 0x1cb3 : []int32{4339}, - 0x1cb4 : []int32{4340}, - 0x1cb5 : []int32{4341}, - 0x1cb6 : []int32{4342}, - 0x1cb7 : []int32{4343}, - 0x1cb8 : []int32{4344}, - 0x1cb9 : []int32{4345}, - 0x1cba : []int32{4346}, - 0x1cbd : []int32{4349}, - 0x1cbe : []int32{4350}, - 0x1cbf : []int32{4351}, - 0x1e00 : []int32{7681}, - 0x1e02 : []int32{7683}, - 0x1e04 : []int32{7685}, - 0x1e06 : []int32{7687}, - 0x1e08 : []int32{7689}, - 0x1e0a : []int32{7691}, - 0x1e0c : []int32{7693}, - 0x1e0e : []int32{7695}, - 0x1e10 : []int32{7697}, - 0x1e12 : []int32{7699}, - 0x1e14 : []int32{7701}, - 0x1e16 : []int32{7703}, - 0x1e18 : []int32{7705}, - 0x1e1a : []int32{7707}, - 0x1e1c : []int32{7709}, - 0x1e1e : []int32{7711}, - 0x1e20 : []int32{7713}, - 0x1e22 : []int32{7715}, - 0x1e24 : []int32{7717}, - 0x1e26 : []int32{7719}, - 0x1e28 : []int32{7721}, - 0x1e2a : []int32{7723}, - 0x1e2c : []int32{7725}, - 0x1e2e : []int32{7727}, - 0x1e30 : []int32{7729}, - 0x1e32 : []int32{7731}, - 0x1e34 : []int32{7733}, - 0x1e36 : []int32{7735}, - 0x1e38 : []int32{7737}, - 0x1e3a : []int32{7739}, - 0x1e3c : []int32{7741}, - 0x1e3e : []int32{7743}, - 0x1e40 : []int32{7745}, - 0x1e42 : []int32{7747}, - 0x1e44 : []int32{7749}, - 0x1e46 : []int32{7751}, - 0x1e48 : []int32{7753}, - 0x1e4a : []int32{7755}, - 0x1e4c : []int32{7757}, - 0x1e4e : []int32{7759}, - 0x1e50 : []int32{7761}, - 0x1e52 : []int32{7763}, - 0x1e54 : []int32{7765}, - 0x1e56 : []int32{7767}, - 0x1e58 : []int32{7769}, - 0x1e5a : []int32{7771}, - 0x1e5c : []int32{7773}, - 0x1e5e : []int32{7775}, - 0x1e60 : []int32{7777}, - 0x1e62 : []int32{7779}, - 0x1e64 : []int32{7781}, - 0x1e66 : []int32{7783}, - 0x1e68 : []int32{7785}, - 0x1e6a : []int32{7787}, - 0x1e6c : []int32{7789}, - 0x1e6e : []int32{7791}, - 0x1e70 : []int32{7793}, - 0x1e72 : []int32{7795}, - 0x1e74 : []int32{7797}, - 0x1e76 : []int32{7799}, - 0x1e78 : []int32{7801}, - 0x1e7a : []int32{7803}, - 0x1e7c : []int32{7805}, - 0x1e7e : []int32{7807}, - 0x1e80 : []int32{7809}, - 0x1e82 : []int32{7811}, - 0x1e84 : []int32{7813}, - 0x1e86 : []int32{7815}, - 0x1e88 : []int32{7817}, - 0x1e8a : []int32{7819}, - 0x1e8c : []int32{7821}, - 0x1e8e : []int32{7823}, - 0x1e90 : []int32{7825}, - 0x1e92 : []int32{7827}, - 0x1e94 : []int32{7829}, - 0x1e96 : []int32{104, 817}, - 0x1e97 : []int32{116, 776}, - 0x1e98 : []int32{119, 778}, - 0x1e99 : []int32{121, 778}, - 0x1e9a : []int32{97, 702}, - 0x1e9b : []int32{7777}, - 0x1e9e : []int32{115, 115}, - 0x1ea0 : []int32{7841}, - 0x1ea2 : []int32{7843}, - 0x1ea4 : []int32{7845}, - 0x1ea6 : []int32{7847}, - 0x1ea8 : []int32{7849}, - 0x1eaa : []int32{7851}, - 0x1eac : []int32{7853}, - 0x1eae : []int32{7855}, - 0x1eb0 : []int32{7857}, - 0x1eb2 : []int32{7859}, - 0x1eb4 : []int32{7861}, - 0x1eb6 : []int32{7863}, - 0x1eb8 : []int32{7865}, - 0x1eba : []int32{7867}, - 0x1ebc : []int32{7869}, - 0x1ebe : []int32{7871}, - 0x1ec0 : []int32{7873}, - 0x1ec2 : []int32{7875}, - 0x1ec4 : []int32{7877}, - 0x1ec6 : []int32{7879}, - 0x1ec8 : []int32{7881}, - 0x1eca : []int32{7883}, - 0x1ecc : []int32{7885}, - 0x1ece : []int32{7887}, - 0x1ed0 : []int32{7889}, - 0x1ed2 : []int32{7891}, - 0x1ed4 : []int32{7893}, - 0x1ed6 : []int32{7895}, - 0x1ed8 : []int32{7897}, - 0x1eda : []int32{7899}, - 0x1edc : []int32{7901}, - 0x1ede : []int32{7903}, - 0x1ee0 : []int32{7905}, - 0x1ee2 : []int32{7907}, - 0x1ee4 : []int32{7909}, - 0x1ee6 : []int32{7911}, - 0x1ee8 : []int32{7913}, - 0x1eea : []int32{7915}, - 0x1eec : []int32{7917}, - 0x1eee : []int32{7919}, - 0x1ef0 : []int32{7921}, - 0x1ef2 : []int32{7923}, - 0x1ef4 : []int32{7925}, - 0x1ef6 : []int32{7927}, - 0x1ef8 : []int32{7929}, - 0x1efa : []int32{7931}, - 0x1efc : []int32{7933}, - 0x1efe : []int32{7935}, - 0x1f08 : []int32{7936}, - 0x1f09 : []int32{7937}, - 0x1f0a : []int32{7938}, - 0x1f0b : []int32{7939}, - 0x1f0c : []int32{7940}, - 0x1f0d : []int32{7941}, - 0x1f0e : []int32{7942}, - 0x1f0f : []int32{7943}, - 0x1f18 : []int32{7952}, - 0x1f19 : []int32{7953}, - 0x1f1a : []int32{7954}, - 0x1f1b : []int32{7955}, - 0x1f1c : []int32{7956}, - 0x1f1d : []int32{7957}, - 0x1f28 : []int32{7968}, - 0x1f29 : []int32{7969}, - 0x1f2a : []int32{7970}, - 0x1f2b : []int32{7971}, - 0x1f2c : []int32{7972}, - 0x1f2d : []int32{7973}, - 0x1f2e : []int32{7974}, - 0x1f2f : []int32{7975}, - 0x1f38 : []int32{7984}, - 0x1f39 : []int32{7985}, - 0x1f3a : []int32{7986}, - 0x1f3b : []int32{7987}, - 0x1f3c : []int32{7988}, - 0x1f3d : []int32{7989}, - 0x1f3e : []int32{7990}, - 0x1f3f : []int32{7991}, - 0x1f48 : []int32{8000}, - 0x1f49 : []int32{8001}, - 0x1f4a : []int32{8002}, - 0x1f4b : []int32{8003}, - 0x1f4c : []int32{8004}, - 0x1f4d : []int32{8005}, - 0x1f50 : []int32{965, 787}, - 0x1f52 : []int32{965, 787, 768}, - 0x1f54 : []int32{965, 787, 769}, - 0x1f56 : []int32{965, 787, 834}, - 0x1f59 : []int32{8017}, - 0x1f5b : []int32{8019}, - 0x1f5d : []int32{8021}, - 0x1f5f : []int32{8023}, - 0x1f68 : []int32{8032}, - 0x1f69 : []int32{8033}, - 0x1f6a : []int32{8034}, - 0x1f6b : []int32{8035}, - 0x1f6c : []int32{8036}, - 0x1f6d : []int32{8037}, - 0x1f6e : []int32{8038}, - 0x1f6f : []int32{8039}, - 0x1f80 : []int32{7936, 953}, - 0x1f81 : []int32{7937, 953}, - 0x1f82 : []int32{7938, 953}, - 0x1f83 : []int32{7939, 953}, - 0x1f84 : []int32{7940, 953}, - 0x1f85 : []int32{7941, 953}, - 0x1f86 : []int32{7942, 953}, - 0x1f87 : []int32{7943, 953}, - 0x1f88 : []int32{7936, 953}, - 0x1f89 : []int32{7937, 953}, - 0x1f8a : []int32{7938, 953}, - 0x1f8b : []int32{7939, 953}, - 0x1f8c : []int32{7940, 953}, - 0x1f8d : []int32{7941, 953}, - 0x1f8e : []int32{7942, 953}, - 0x1f8f : []int32{7943, 953}, - 0x1f90 : []int32{7968, 953}, - 0x1f91 : []int32{7969, 953}, - 0x1f92 : []int32{7970, 953}, - 0x1f93 : []int32{7971, 953}, - 0x1f94 : []int32{7972, 953}, - 0x1f95 : []int32{7973, 953}, - 0x1f96 : []int32{7974, 953}, - 0x1f97 : []int32{7975, 953}, - 0x1f98 : []int32{7968, 953}, - 0x1f99 : []int32{7969, 953}, - 0x1f9a : []int32{7970, 953}, - 0x1f9b : []int32{7971, 953}, - 0x1f9c : []int32{7972, 953}, - 0x1f9d : []int32{7973, 953}, - 0x1f9e : []int32{7974, 953}, - 0x1f9f : []int32{7975, 953}, - 0x1fa0 : []int32{8032, 953}, - 0x1fa1 : []int32{8033, 953}, - 0x1fa2 : []int32{8034, 953}, - 0x1fa3 : []int32{8035, 953}, - 0x1fa4 : []int32{8036, 953}, - 0x1fa5 : []int32{8037, 953}, - 0x1fa6 : []int32{8038, 953}, - 0x1fa7 : []int32{8039, 953}, - 0x1fa8 : []int32{8032, 953}, - 0x1fa9 : []int32{8033, 953}, - 0x1faa : []int32{8034, 953}, - 0x1fab : []int32{8035, 953}, - 0x1fac : []int32{8036, 953}, - 0x1fad : []int32{8037, 953}, - 0x1fae : []int32{8038, 953}, - 0x1faf : []int32{8039, 953}, - 0x1fb2 : []int32{8048, 953}, - 0x1fb3 : []int32{945, 953}, - 0x1fb4 : []int32{940, 953}, - 0x1fb6 : []int32{945, 834}, - 0x1fb7 : []int32{945, 834, 953}, - 0x1fb8 : []int32{8112}, - 0x1fb9 : []int32{8113}, - 0x1fba : []int32{8048}, - 0x1fbb : []int32{8049}, - 0x1fbc : []int32{945, 953}, - 0x1fbe : []int32{953}, - 0x1fc2 : []int32{8052, 953}, - 0x1fc3 : []int32{951, 953}, - 0x1fc4 : []int32{942, 953}, - 0x1fc6 : []int32{951, 834}, - 0x1fc7 : []int32{951, 834, 953}, - 0x1fc8 : []int32{8050}, - 0x1fc9 : []int32{8051}, - 0x1fca : []int32{8052}, - 0x1fcb : []int32{8053}, - 0x1fcc : []int32{951, 953}, - 0x1fd2 : []int32{953, 776, 768}, - 0x1fd3 : []int32{953, 776, 769}, - 0x1fd6 : []int32{953, 834}, - 0x1fd7 : []int32{953, 776, 834}, - 0x1fd8 : []int32{8144}, - 0x1fd9 : []int32{8145}, - 0x1fda : []int32{8054}, - 0x1fdb : []int32{8055}, - 0x1fe2 : []int32{965, 776, 768}, - 0x1fe3 : []int32{965, 776, 769}, - 0x1fe4 : []int32{961, 787}, - 0x1fe6 : []int32{965, 834}, - 0x1fe7 : []int32{965, 776, 834}, - 0x1fe8 : []int32{8160}, - 0x1fe9 : []int32{8161}, - 0x1fea : []int32{8058}, - 0x1feb : []int32{8059}, - 0x1fec : []int32{8165}, - 0x1ff2 : []int32{8060, 953}, - 0x1ff3 : []int32{969, 953}, - 0x1ff4 : []int32{974, 953}, - 0x1ff6 : []int32{969, 834}, - 0x1ff7 : []int32{969, 834, 953}, - 0x1ff8 : []int32{8056}, - 0x1ff9 : []int32{8057}, - 0x1ffa : []int32{8060}, - 0x1ffb : []int32{8061}, - 0x1ffc : []int32{969, 953}, - 0x2126 : []int32{969}, - 0x212a : []int32{107}, - 0x212b : []int32{229}, - 0x2132 : []int32{8526}, - 0x2160 : []int32{8560}, - 0x2161 : []int32{8561}, - 0x2162 : []int32{8562}, - 0x2163 : []int32{8563}, - 0x2164 : []int32{8564}, - 0x2165 : []int32{8565}, - 0x2166 : []int32{8566}, - 0x2167 : []int32{8567}, - 0x2168 : []int32{8568}, - 0x2169 : []int32{8569}, - 0x216a : []int32{8570}, - 0x216b : []int32{8571}, - 0x216c : []int32{8572}, - 0x216d : []int32{8573}, - 0x216e : []int32{8574}, - 0x216f : []int32{8575}, - 0x2183 : []int32{8580}, - 0x24b6 : []int32{9424}, - 0x24b7 : []int32{9425}, - 0x24b8 : []int32{9426}, - 0x24b9 : []int32{9427}, - 0x24ba : []int32{9428}, - 0x24bb : []int32{9429}, - 0x24bc : []int32{9430}, - 0x24bd : []int32{9431}, - 0x24be : []int32{9432}, - 0x24bf : []int32{9433}, - 0x24c0 : []int32{9434}, - 0x24c1 : []int32{9435}, - 0x24c2 : []int32{9436}, - 0x24c3 : []int32{9437}, - 0x24c4 : []int32{9438}, - 0x24c5 : []int32{9439}, - 0x24c6 : []int32{9440}, - 0x24c7 : []int32{9441}, - 0x24c8 : []int32{9442}, - 0x24c9 : []int32{9443}, - 0x24ca : []int32{9444}, - 0x24cb : []int32{9445}, - 0x24cc : []int32{9446}, - 0x24cd : []int32{9447}, - 0x24ce : []int32{9448}, - 0x24cf : []int32{9449}, - 0x2c00 : []int32{11312}, - 0x2c01 : []int32{11313}, - 0x2c02 : []int32{11314}, - 0x2c03 : []int32{11315}, - 0x2c04 : []int32{11316}, - 0x2c05 : []int32{11317}, - 0x2c06 : []int32{11318}, - 0x2c07 : []int32{11319}, - 0x2c08 : []int32{11320}, - 0x2c09 : []int32{11321}, - 0x2c0a : []int32{11322}, - 0x2c0b : []int32{11323}, - 0x2c0c : []int32{11324}, - 0x2c0d : []int32{11325}, - 0x2c0e : []int32{11326}, - 0x2c0f : []int32{11327}, - 0x2c10 : []int32{11328}, - 0x2c11 : []int32{11329}, - 0x2c12 : []int32{11330}, - 0x2c13 : []int32{11331}, - 0x2c14 : []int32{11332}, - 0x2c15 : []int32{11333}, - 0x2c16 : []int32{11334}, - 0x2c17 : []int32{11335}, - 0x2c18 : []int32{11336}, - 0x2c19 : []int32{11337}, - 0x2c1a : []int32{11338}, - 0x2c1b : []int32{11339}, - 0x2c1c : []int32{11340}, - 0x2c1d : []int32{11341}, - 0x2c1e : []int32{11342}, - 0x2c1f : []int32{11343}, - 0x2c20 : []int32{11344}, - 0x2c21 : []int32{11345}, - 0x2c22 : []int32{11346}, - 0x2c23 : []int32{11347}, - 0x2c24 : []int32{11348}, - 0x2c25 : []int32{11349}, - 0x2c26 : []int32{11350}, - 0x2c27 : []int32{11351}, - 0x2c28 : []int32{11352}, - 0x2c29 : []int32{11353}, - 0x2c2a : []int32{11354}, - 0x2c2b : []int32{11355}, - 0x2c2c : []int32{11356}, - 0x2c2d : []int32{11357}, - 0x2c2e : []int32{11358}, - 0x2c2f : []int32{11359}, - 0x2c60 : []int32{11361}, - 0x2c62 : []int32{619}, - 0x2c63 : []int32{7549}, - 0x2c64 : []int32{637}, - 0x2c67 : []int32{11368}, - 0x2c69 : []int32{11370}, - 0x2c6b : []int32{11372}, - 0x2c6d : []int32{593}, - 0x2c6e : []int32{625}, - 0x2c6f : []int32{592}, - 0x2c70 : []int32{594}, - 0x2c72 : []int32{11379}, - 0x2c75 : []int32{11382}, - 0x2c7e : []int32{575}, - 0x2c7f : []int32{576}, - 0x2c80 : []int32{11393}, - 0x2c82 : []int32{11395}, - 0x2c84 : []int32{11397}, - 0x2c86 : []int32{11399}, - 0x2c88 : []int32{11401}, - 0x2c8a : []int32{11403}, - 0x2c8c : []int32{11405}, - 0x2c8e : []int32{11407}, - 0x2c90 : []int32{11409}, - 0x2c92 : []int32{11411}, - 0x2c94 : []int32{11413}, - 0x2c96 : []int32{11415}, - 0x2c98 : []int32{11417}, - 0x2c9a : []int32{11419}, - 0x2c9c : []int32{11421}, - 0x2c9e : []int32{11423}, - 0x2ca0 : []int32{11425}, - 0x2ca2 : []int32{11427}, - 0x2ca4 : []int32{11429}, - 0x2ca6 : []int32{11431}, - 0x2ca8 : []int32{11433}, - 0x2caa : []int32{11435}, - 0x2cac : []int32{11437}, - 0x2cae : []int32{11439}, - 0x2cb0 : []int32{11441}, - 0x2cb2 : []int32{11443}, - 0x2cb4 : []int32{11445}, - 0x2cb6 : []int32{11447}, - 0x2cb8 : []int32{11449}, - 0x2cba : []int32{11451}, - 0x2cbc : []int32{11453}, - 0x2cbe : []int32{11455}, - 0x2cc0 : []int32{11457}, - 0x2cc2 : []int32{11459}, - 0x2cc4 : []int32{11461}, - 0x2cc6 : []int32{11463}, - 0x2cc8 : []int32{11465}, - 0x2cca : []int32{11467}, - 0x2ccc : []int32{11469}, - 0x2cce : []int32{11471}, - 0x2cd0 : []int32{11473}, - 0x2cd2 : []int32{11475}, - 0x2cd4 : []int32{11477}, - 0x2cd6 : []int32{11479}, - 0x2cd8 : []int32{11481}, - 0x2cda : []int32{11483}, - 0x2cdc : []int32{11485}, - 0x2cde : []int32{11487}, - 0x2ce0 : []int32{11489}, - 0x2ce2 : []int32{11491}, - 0x2ceb : []int32{11500}, - 0x2ced : []int32{11502}, - 0x2cf2 : []int32{11507}, - 0xa640 : []int32{42561}, - 0xa642 : []int32{42563}, - 0xa644 : []int32{42565}, - 0xa646 : []int32{42567}, - 0xa648 : []int32{42569}, - 0xa64a : []int32{42571}, - 0xa64c : []int32{42573}, - 0xa64e : []int32{42575}, - 0xa650 : []int32{42577}, - 0xa652 : []int32{42579}, - 0xa654 : []int32{42581}, - 0xa656 : []int32{42583}, - 0xa658 : []int32{42585}, - 0xa65a : []int32{42587}, - 0xa65c : []int32{42589}, - 0xa65e : []int32{42591}, - 0xa660 : []int32{42593}, - 0xa662 : []int32{42595}, - 0xa664 : []int32{42597}, - 0xa666 : []int32{42599}, - 0xa668 : []int32{42601}, - 0xa66a : []int32{42603}, - 0xa66c : []int32{42605}, - 0xa680 : []int32{42625}, - 0xa682 : []int32{42627}, - 0xa684 : []int32{42629}, - 0xa686 : []int32{42631}, - 0xa688 : []int32{42633}, - 0xa68a : []int32{42635}, - 0xa68c : []int32{42637}, - 0xa68e : []int32{42639}, - 0xa690 : []int32{42641}, - 0xa692 : []int32{42643}, - 0xa694 : []int32{42645}, - 0xa696 : []int32{42647}, - 0xa698 : []int32{42649}, - 0xa69a : []int32{42651}, - 0xa722 : []int32{42787}, - 0xa724 : []int32{42789}, - 0xa726 : []int32{42791}, - 0xa728 : []int32{42793}, - 0xa72a : []int32{42795}, - 0xa72c : []int32{42797}, - 0xa72e : []int32{42799}, - 0xa732 : []int32{42803}, - 0xa734 : []int32{42805}, - 0xa736 : []int32{42807}, - 0xa738 : []int32{42809}, - 0xa73a : []int32{42811}, - 0xa73c : []int32{42813}, - 0xa73e : []int32{42815}, - 0xa740 : []int32{42817}, - 0xa742 : []int32{42819}, - 0xa744 : []int32{42821}, - 0xa746 : []int32{42823}, - 0xa748 : []int32{42825}, - 0xa74a : []int32{42827}, - 0xa74c : []int32{42829}, - 0xa74e : []int32{42831}, - 0xa750 : []int32{42833}, - 0xa752 : []int32{42835}, - 0xa754 : []int32{42837}, - 0xa756 : []int32{42839}, - 0xa758 : []int32{42841}, - 0xa75a : []int32{42843}, - 0xa75c : []int32{42845}, - 0xa75e : []int32{42847}, - 0xa760 : []int32{42849}, - 0xa762 : []int32{42851}, - 0xa764 : []int32{42853}, - 0xa766 : []int32{42855}, - 0xa768 : []int32{42857}, - 0xa76a : []int32{42859}, - 0xa76c : []int32{42861}, - 0xa76e : []int32{42863}, - 0xa779 : []int32{42874}, - 0xa77b : []int32{42876}, - 0xa77d : []int32{7545}, - 0xa77e : []int32{42879}, - 0xa780 : []int32{42881}, - 0xa782 : []int32{42883}, - 0xa784 : []int32{42885}, - 0xa786 : []int32{42887}, - 0xa78b : []int32{42892}, - 0xa78d : []int32{613}, - 0xa790 : []int32{42897}, - 0xa792 : []int32{42899}, - 0xa796 : []int32{42903}, - 0xa798 : []int32{42905}, - 0xa79a : []int32{42907}, - 0xa79c : []int32{42909}, - 0xa79e : []int32{42911}, - 0xa7a0 : []int32{42913}, - 0xa7a2 : []int32{42915}, - 0xa7a4 : []int32{42917}, - 0xa7a6 : []int32{42919}, - 0xa7a8 : []int32{42921}, - 0xa7aa : []int32{614}, - 0xa7ab : []int32{604}, - 0xa7ac : []int32{609}, - 0xa7ad : []int32{620}, - 0xa7ae : []int32{618}, - 0xa7b0 : []int32{670}, - 0xa7b1 : []int32{647}, - 0xa7b2 : []int32{669}, - 0xa7b3 : []int32{43859}, - 0xa7b4 : []int32{42933}, - 0xa7b6 : []int32{42935}, - 0xa7b8 : []int32{42937}, - 0xa7ba : []int32{42939}, - 0xa7bc : []int32{42941}, - 0xa7be : []int32{42943}, - 0xa7c0 : []int32{42945}, - 0xa7c2 : []int32{42947}, - 0xa7c4 : []int32{42900}, - 0xa7c5 : []int32{642}, - 0xa7c6 : []int32{7566}, - 0xa7c7 : []int32{42952}, - 0xa7c9 : []int32{42954}, - 0xa7d0 : []int32{42961}, - 0xa7d6 : []int32{42967}, - 0xa7d8 : []int32{42969}, - 0xa7f5 : []int32{42998}, - 0xab70 : []int32{5024}, - 0xab71 : []int32{5025}, - 0xab72 : []int32{5026}, - 0xab73 : []int32{5027}, - 0xab74 : []int32{5028}, - 0xab75 : []int32{5029}, - 0xab76 : []int32{5030}, - 0xab77 : []int32{5031}, - 0xab78 : []int32{5032}, - 0xab79 : []int32{5033}, - 0xab7a : []int32{5034}, - 0xab7b : []int32{5035}, - 0xab7c : []int32{5036}, - 0xab7d : []int32{5037}, - 0xab7e : []int32{5038}, - 0xab7f : []int32{5039}, - 0xab80 : []int32{5040}, - 0xab81 : []int32{5041}, - 0xab82 : []int32{5042}, - 0xab83 : []int32{5043}, - 0xab84 : []int32{5044}, - 0xab85 : []int32{5045}, - 0xab86 : []int32{5046}, - 0xab87 : []int32{5047}, - 0xab88 : []int32{5048}, - 0xab89 : []int32{5049}, - 0xab8a : []int32{5050}, - 0xab8b : []int32{5051}, - 0xab8c : []int32{5052}, - 0xab8d : []int32{5053}, - 0xab8e : []int32{5054}, - 0xab8f : []int32{5055}, - 0xab90 : []int32{5056}, - 0xab91 : []int32{5057}, - 0xab92 : []int32{5058}, - 0xab93 : []int32{5059}, - 0xab94 : []int32{5060}, - 0xab95 : []int32{5061}, - 0xab96 : []int32{5062}, - 0xab97 : []int32{5063}, - 0xab98 : []int32{5064}, - 0xab99 : []int32{5065}, - 0xab9a : []int32{5066}, - 0xab9b : []int32{5067}, - 0xab9c : []int32{5068}, - 0xab9d : []int32{5069}, - 0xab9e : []int32{5070}, - 0xab9f : []int32{5071}, - 0xaba0 : []int32{5072}, - 0xaba1 : []int32{5073}, - 0xaba2 : []int32{5074}, - 0xaba3 : []int32{5075}, - 0xaba4 : []int32{5076}, - 0xaba5 : []int32{5077}, - 0xaba6 : []int32{5078}, - 0xaba7 : []int32{5079}, - 0xaba8 : []int32{5080}, - 0xaba9 : []int32{5081}, - 0xabaa : []int32{5082}, - 0xabab : []int32{5083}, - 0xabac : []int32{5084}, - 0xabad : []int32{5085}, - 0xabae : []int32{5086}, - 0xabaf : []int32{5087}, - 0xabb0 : []int32{5088}, - 0xabb1 : []int32{5089}, - 0xabb2 : []int32{5090}, - 0xabb3 : []int32{5091}, - 0xabb4 : []int32{5092}, - 0xabb5 : []int32{5093}, - 0xabb6 : []int32{5094}, - 0xabb7 : []int32{5095}, - 0xabb8 : []int32{5096}, - 0xabb9 : []int32{5097}, - 0xabba : []int32{5098}, - 0xabbb : []int32{5099}, - 0xabbc : []int32{5100}, - 0xabbd : []int32{5101}, - 0xabbe : []int32{5102}, - 0xabbf : []int32{5103}, - 0xfb00 : []int32{102, 102}, - 0xfb01 : []int32{102, 105}, - 0xfb02 : []int32{102, 108}, - 0xfb03 : []int32{102, 102, 105}, - 0xfb04 : []int32{102, 102, 108}, - 0xfb05 : []int32{115, 116}, - 0xfb06 : []int32{115, 116}, - 0xfb13 : []int32{1396, 1398}, - 0xfb14 : []int32{1396, 1381}, - 0xfb15 : []int32{1396, 1387}, - 0xfb16 : []int32{1406, 1398}, - 0xfb17 : []int32{1396, 1389}, - 0xff21 : []int32{65345}, - 0xff22 : []int32{65346}, - 0xff23 : []int32{65347}, - 0xff24 : []int32{65348}, - 0xff25 : []int32{65349}, - 0xff26 : []int32{65350}, - 0xff27 : []int32{65351}, - 0xff28 : []int32{65352}, - 0xff29 : []int32{65353}, - 0xff2a : []int32{65354}, - 0xff2b : []int32{65355}, - 0xff2c : []int32{65356}, - 0xff2d : []int32{65357}, - 0xff2e : []int32{65358}, - 0xff2f : []int32{65359}, - 0xff30 : []int32{65360}, - 0xff31 : []int32{65361}, - 0xff32 : []int32{65362}, - 0xff33 : []int32{65363}, - 0xff34 : []int32{65364}, - 0xff35 : []int32{65365}, - 0xff36 : []int32{65366}, - 0xff37 : []int32{65367}, - 0xff38 : []int32{65368}, - 0xff39 : []int32{65369}, - 0xff3a : []int32{65370}, - 0x10400 : []int32{66600}, - 0x10401 : []int32{66601}, - 0x10402 : []int32{66602}, - 0x10403 : []int32{66603}, - 0x10404 : []int32{66604}, - 0x10405 : []int32{66605}, - 0x10406 : []int32{66606}, - 0x10407 : []int32{66607}, - 0x10408 : []int32{66608}, - 0x10409 : []int32{66609}, - 0x1040a : []int32{66610}, - 0x1040b : []int32{66611}, - 0x1040c : []int32{66612}, - 0x1040d : []int32{66613}, - 0x1040e : []int32{66614}, - 0x1040f : []int32{66615}, - 0x10410 : []int32{66616}, - 0x10411 : []int32{66617}, - 0x10412 : []int32{66618}, - 0x10413 : []int32{66619}, - 0x10414 : []int32{66620}, - 0x10415 : []int32{66621}, - 0x10416 : []int32{66622}, - 0x10417 : []int32{66623}, - 0x10418 : []int32{66624}, - 0x10419 : []int32{66625}, - 0x1041a : []int32{66626}, - 0x1041b : []int32{66627}, - 0x1041c : []int32{66628}, - 0x1041d : []int32{66629}, - 0x1041e : []int32{66630}, - 0x1041f : []int32{66631}, - 0x10420 : []int32{66632}, - 0x10421 : []int32{66633}, - 0x10422 : []int32{66634}, - 0x10423 : []int32{66635}, - 0x10424 : []int32{66636}, - 0x10425 : []int32{66637}, - 0x10426 : []int32{66638}, - 0x10427 : []int32{66639}, - 0x104b0 : []int32{66776}, - 0x104b1 : []int32{66777}, - 0x104b2 : []int32{66778}, - 0x104b3 : []int32{66779}, - 0x104b4 : []int32{66780}, - 0x104b5 : []int32{66781}, - 0x104b6 : []int32{66782}, - 0x104b7 : []int32{66783}, - 0x104b8 : []int32{66784}, - 0x104b9 : []int32{66785}, - 0x104ba : []int32{66786}, - 0x104bb : []int32{66787}, - 0x104bc : []int32{66788}, - 0x104bd : []int32{66789}, - 0x104be : []int32{66790}, - 0x104bf : []int32{66791}, - 0x104c0 : []int32{66792}, - 0x104c1 : []int32{66793}, - 0x104c2 : []int32{66794}, - 0x104c3 : []int32{66795}, - 0x104c4 : []int32{66796}, - 0x104c5 : []int32{66797}, - 0x104c6 : []int32{66798}, - 0x104c7 : []int32{66799}, - 0x104c8 : []int32{66800}, - 0x104c9 : []int32{66801}, - 0x104ca : []int32{66802}, - 0x104cb : []int32{66803}, - 0x104cc : []int32{66804}, - 0x104cd : []int32{66805}, - 0x104ce : []int32{66806}, - 0x104cf : []int32{66807}, - 0x104d0 : []int32{66808}, - 0x104d1 : []int32{66809}, - 0x104d2 : []int32{66810}, - 0x104d3 : []int32{66811}, - 0x10570 : []int32{66967}, - 0x10571 : []int32{66968}, - 0x10572 : []int32{66969}, - 0x10573 : []int32{66970}, - 0x10574 : []int32{66971}, - 0x10575 : []int32{66972}, - 0x10576 : []int32{66973}, - 0x10577 : []int32{66974}, - 0x10578 : []int32{66975}, - 0x10579 : []int32{66976}, - 0x1057a : []int32{66977}, - 0x1057c : []int32{66979}, - 0x1057d : []int32{66980}, - 0x1057e : []int32{66981}, - 0x1057f : []int32{66982}, - 0x10580 : []int32{66983}, - 0x10581 : []int32{66984}, - 0x10582 : []int32{66985}, - 0x10583 : []int32{66986}, - 0x10584 : []int32{66987}, - 0x10585 : []int32{66988}, - 0x10586 : []int32{66989}, - 0x10587 : []int32{66990}, - 0x10588 : []int32{66991}, - 0x10589 : []int32{66992}, - 0x1058a : []int32{66993}, - 0x1058c : []int32{66995}, - 0x1058d : []int32{66996}, - 0x1058e : []int32{66997}, - 0x1058f : []int32{66998}, - 0x10590 : []int32{66999}, - 0x10591 : []int32{67000}, - 0x10592 : []int32{67001}, - 0x10594 : []int32{67003}, - 0x10595 : []int32{67004}, - 0x10c80 : []int32{68800}, - 0x10c81 : []int32{68801}, - 0x10c82 : []int32{68802}, - 0x10c83 : []int32{68803}, - 0x10c84 : []int32{68804}, - 0x10c85 : []int32{68805}, - 0x10c86 : []int32{68806}, - 0x10c87 : []int32{68807}, - 0x10c88 : []int32{68808}, - 0x10c89 : []int32{68809}, - 0x10c8a : []int32{68810}, - 0x10c8b : []int32{68811}, - 0x10c8c : []int32{68812}, - 0x10c8d : []int32{68813}, - 0x10c8e : []int32{68814}, - 0x10c8f : []int32{68815}, - 0x10c90 : []int32{68816}, - 0x10c91 : []int32{68817}, - 0x10c92 : []int32{68818}, - 0x10c93 : []int32{68819}, - 0x10c94 : []int32{68820}, - 0x10c95 : []int32{68821}, - 0x10c96 : []int32{68822}, - 0x10c97 : []int32{68823}, - 0x10c98 : []int32{68824}, - 0x10c99 : []int32{68825}, - 0x10c9a : []int32{68826}, - 0x10c9b : []int32{68827}, - 0x10c9c : []int32{68828}, - 0x10c9d : []int32{68829}, - 0x10c9e : []int32{68830}, - 0x10c9f : []int32{68831}, - 0x10ca0 : []int32{68832}, - 0x10ca1 : []int32{68833}, - 0x10ca2 : []int32{68834}, - 0x10ca3 : []int32{68835}, - 0x10ca4 : []int32{68836}, - 0x10ca5 : []int32{68837}, - 0x10ca6 : []int32{68838}, - 0x10ca7 : []int32{68839}, - 0x10ca8 : []int32{68840}, - 0x10ca9 : []int32{68841}, - 0x10caa : []int32{68842}, - 0x10cab : []int32{68843}, - 0x10cac : []int32{68844}, - 0x10cad : []int32{68845}, - 0x10cae : []int32{68846}, - 0x10caf : []int32{68847}, - 0x10cb0 : []int32{68848}, - 0x10cb1 : []int32{68849}, - 0x10cb2 : []int32{68850}, - 0x118a0 : []int32{71872}, - 0x118a1 : []int32{71873}, - 0x118a2 : []int32{71874}, - 0x118a3 : []int32{71875}, - 0x118a4 : []int32{71876}, - 0x118a5 : []int32{71877}, - 0x118a6 : []int32{71878}, - 0x118a7 : []int32{71879}, - 0x118a8 : []int32{71880}, - 0x118a9 : []int32{71881}, - 0x118aa : []int32{71882}, - 0x118ab : []int32{71883}, - 0x118ac : []int32{71884}, - 0x118ad : []int32{71885}, - 0x118ae : []int32{71886}, - 0x118af : []int32{71887}, - 0x118b0 : []int32{71888}, - 0x118b1 : []int32{71889}, - 0x118b2 : []int32{71890}, - 0x118b3 : []int32{71891}, - 0x118b4 : []int32{71892}, - 0x118b5 : []int32{71893}, - 0x118b6 : []int32{71894}, - 0x118b7 : []int32{71895}, - 0x118b8 : []int32{71896}, - 0x118b9 : []int32{71897}, - 0x118ba : []int32{71898}, - 0x118bb : []int32{71899}, - 0x118bc : []int32{71900}, - 0x118bd : []int32{71901}, - 0x118be : []int32{71902}, - 0x118bf : []int32{71903}, - 0x16e40 : []int32{93792}, - 0x16e41 : []int32{93793}, - 0x16e42 : []int32{93794}, - 0x16e43 : []int32{93795}, - 0x16e44 : []int32{93796}, - 0x16e45 : []int32{93797}, - 0x16e46 : []int32{93798}, - 0x16e47 : []int32{93799}, - 0x16e48 : []int32{93800}, - 0x16e49 : []int32{93801}, - 0x16e4a : []int32{93802}, - 0x16e4b : []int32{93803}, - 0x16e4c : []int32{93804}, - 0x16e4d : []int32{93805}, - 0x16e4e : []int32{93806}, - 0x16e4f : []int32{93807}, - 0x16e50 : []int32{93808}, - 0x16e51 : []int32{93809}, - 0x16e52 : []int32{93810}, - 0x16e53 : []int32{93811}, - 0x16e54 : []int32{93812}, - 0x16e55 : []int32{93813}, - 0x16e56 : []int32{93814}, - 0x16e57 : []int32{93815}, - 0x16e58 : []int32{93816}, - 0x16e59 : []int32{93817}, - 0x16e5a : []int32{93818}, - 0x16e5b : []int32{93819}, - 0x16e5c : []int32{93820}, - 0x16e5d : []int32{93821}, - 0x16e5e : []int32{93822}, - 0x16e5f : []int32{93823}, - 0x1e900 : []int32{125218}, - 0x1e901 : []int32{125219}, - 0x1e902 : []int32{125220}, - 0x1e903 : []int32{125221}, - 0x1e904 : []int32{125222}, - 0x1e905 : []int32{125223}, - 0x1e906 : []int32{125224}, - 0x1e907 : []int32{125225}, - 0x1e908 : []int32{125226}, - 0x1e909 : []int32{125227}, - 0x1e90a : []int32{125228}, - 0x1e90b : []int32{125229}, - 0x1e90c : []int32{125230}, - 0x1e90d : []int32{125231}, - 0x1e90e : []int32{125232}, - 0x1e90f : []int32{125233}, - 0x1e910 : []int32{125234}, - 0x1e911 : []int32{125235}, - 0x1e912 : []int32{125236}, - 0x1e913 : []int32{125237}, - 0x1e914 : []int32{125238}, - 0x1e915 : []int32{125239}, - 0x1e916 : []int32{125240}, - 0x1e917 : []int32{125241}, - 0x1e918 : []int32{125242}, - 0x1e919 : []int32{125243}, - 0x1e91a : []int32{125244}, - 0x1e91b : []int32{125245}, - 0x1e91c : []int32{125246}, - 0x1e91d : []int32{125247}, - 0x1e91e : []int32{125248}, - 0x1e91f : []int32{125249}, - 0x1e920 : []int32{125250}, - 0x1e921 : []int32{125251}, +var unicodeCaseFoldings = map[rune][]rune{ + 0x41: {97}, + 0x42: {98}, + 0x43: {99}, + 0x44: {100}, + 0x45: {101}, + 0x46: {102}, + 0x47: {103}, + 0x48: {104}, + 0x49: {105}, + 0x4a: {106}, + 0x4b: {107}, + 0x4c: {108}, + 0x4d: {109}, + 0x4e: {110}, + 0x4f: {111}, + 0x50: {112}, + 0x51: {113}, + 0x52: {114}, + 0x53: {115}, + 0x54: {116}, + 0x55: {117}, + 0x56: {118}, + 0x57: {119}, + 0x58: {120}, + 0x59: {121}, + 0x5a: {122}, + 0xb5: {956}, + 0xc0: {224}, + 0xc1: {225}, + 0xc2: {226}, + 0xc3: {227}, + 0xc4: {228}, + 0xc5: {229}, + 0xc6: {230}, + 0xc7: {231}, + 0xc8: {232}, + 0xc9: {233}, + 0xca: {234}, + 0xcb: {235}, + 0xcc: {236}, + 0xcd: {237}, + 0xce: {238}, + 0xcf: {239}, + 0xd0: {240}, + 0xd1: {241}, + 0xd2: {242}, + 0xd3: {243}, + 0xd4: {244}, + 0xd5: {245}, + 0xd6: {246}, + 0xd8: {248}, + 0xd9: {249}, + 0xda: {250}, + 0xdb: {251}, + 0xdc: {252}, + 0xdd: {253}, + 0xde: {254}, + 0xdf: {115, 115}, + 0x100: {257}, + 0x102: {259}, + 0x104: {261}, + 0x106: {263}, + 0x108: {265}, + 0x10a: {267}, + 0x10c: {269}, + 0x10e: {271}, + 0x110: {273}, + 0x112: {275}, + 0x114: {277}, + 0x116: {279}, + 0x118: {281}, + 0x11a: {283}, + 0x11c: {285}, + 0x11e: {287}, + 0x120: {289}, + 0x122: {291}, + 0x124: {293}, + 0x126: {295}, + 0x128: {297}, + 0x12a: {299}, + 0x12c: {301}, + 0x12e: {303}, + 0x130: {105, 775}, + 0x132: {307}, + 0x134: {309}, + 0x136: {311}, + 0x139: {314}, + 0x13b: {316}, + 0x13d: {318}, + 0x13f: {320}, + 0x141: {322}, + 0x143: {324}, + 0x145: {326}, + 0x147: {328}, + 0x149: {700, 110}, + 0x14a: {331}, + 0x14c: {333}, + 0x14e: {335}, + 0x150: {337}, + 0x152: {339}, + 0x154: {341}, + 0x156: {343}, + 0x158: {345}, + 0x15a: {347}, + 0x15c: {349}, + 0x15e: {351}, + 0x160: {353}, + 0x162: {355}, + 0x164: {357}, + 0x166: {359}, + 0x168: {361}, + 0x16a: {363}, + 0x16c: {365}, + 0x16e: {367}, + 0x170: {369}, + 0x172: {371}, + 0x174: {373}, + 0x176: {375}, + 0x178: {255}, + 0x179: {378}, + 0x17b: {380}, + 0x17d: {382}, + 0x17f: {115}, + 0x181: {595}, + 0x182: {387}, + 0x184: {389}, + 0x186: {596}, + 0x187: {392}, + 0x189: {598}, + 0x18a: {599}, + 0x18b: {396}, + 0x18e: {477}, + 0x18f: {601}, + 0x190: {603}, + 0x191: {402}, + 0x193: {608}, + 0x194: {611}, + 0x196: {617}, + 0x197: {616}, + 0x198: {409}, + 0x19c: {623}, + 0x19d: {626}, + 0x19f: {629}, + 0x1a0: {417}, + 0x1a2: {419}, + 0x1a4: {421}, + 0x1a6: {640}, + 0x1a7: {424}, + 0x1a9: {643}, + 0x1ac: {429}, + 0x1ae: {648}, + 0x1af: {432}, + 0x1b1: {650}, + 0x1b2: {651}, + 0x1b3: {436}, + 0x1b5: {438}, + 0x1b7: {658}, + 0x1b8: {441}, + 0x1bc: {445}, + 0x1c4: {454}, + 0x1c5: {454}, + 0x1c7: {457}, + 0x1c8: {457}, + 0x1ca: {460}, + 0x1cb: {460}, + 0x1cd: {462}, + 0x1cf: {464}, + 0x1d1: {466}, + 0x1d3: {468}, + 0x1d5: {470}, + 0x1d7: {472}, + 0x1d9: {474}, + 0x1db: {476}, + 0x1de: {479}, + 0x1e0: {481}, + 0x1e2: {483}, + 0x1e4: {485}, + 0x1e6: {487}, + 0x1e8: {489}, + 0x1ea: {491}, + 0x1ec: {493}, + 0x1ee: {495}, + 0x1f0: {106, 780}, + 0x1f1: {499}, + 0x1f2: {499}, + 0x1f4: {501}, + 0x1f6: {405}, + 0x1f7: {447}, + 0x1f8: {505}, + 0x1fa: {507}, + 0x1fc: {509}, + 0x1fe: {511}, + 0x200: {513}, + 0x202: {515}, + 0x204: {517}, + 0x206: {519}, + 0x208: {521}, + 0x20a: {523}, + 0x20c: {525}, + 0x20e: {527}, + 0x210: {529}, + 0x212: {531}, + 0x214: {533}, + 0x216: {535}, + 0x218: {537}, + 0x21a: {539}, + 0x21c: {541}, + 0x21e: {543}, + 0x220: {414}, + 0x222: {547}, + 0x224: {549}, + 0x226: {551}, + 0x228: {553}, + 0x22a: {555}, + 0x22c: {557}, + 0x22e: {559}, + 0x230: {561}, + 0x232: {563}, + 0x23a: {11365}, + 0x23b: {572}, + 0x23d: {410}, + 0x23e: {11366}, + 0x241: {578}, + 0x243: {384}, + 0x244: {649}, + 0x245: {652}, + 0x246: {583}, + 0x248: {585}, + 0x24a: {587}, + 0x24c: {589}, + 0x24e: {591}, + 0x345: {953}, + 0x370: {881}, + 0x372: {883}, + 0x376: {887}, + 0x37f: {1011}, + 0x386: {940}, + 0x388: {941}, + 0x389: {942}, + 0x38a: {943}, + 0x38c: {972}, + 0x38e: {973}, + 0x38f: {974}, + 0x390: {953, 776, 769}, + 0x391: {945}, + 0x392: {946}, + 0x393: {947}, + 0x394: {948}, + 0x395: {949}, + 0x396: {950}, + 0x397: {951}, + 0x398: {952}, + 0x399: {953}, + 0x39a: {954}, + 0x39b: {955}, + 0x39c: {956}, + 0x39d: {957}, + 0x39e: {958}, + 0x39f: {959}, + 0x3a0: {960}, + 0x3a1: {961}, + 0x3a3: {963}, + 0x3a4: {964}, + 0x3a5: {965}, + 0x3a6: {966}, + 0x3a7: {967}, + 0x3a8: {968}, + 0x3a9: {969}, + 0x3aa: {970}, + 0x3ab: {971}, + 0x3b0: {965, 776, 769}, + 0x3c2: {963}, + 0x3cf: {983}, + 0x3d0: {946}, + 0x3d1: {952}, + 0x3d5: {966}, + 0x3d6: {960}, + 0x3d8: {985}, + 0x3da: {987}, + 0x3dc: {989}, + 0x3de: {991}, + 0x3e0: {993}, + 0x3e2: {995}, + 0x3e4: {997}, + 0x3e6: {999}, + 0x3e8: {1001}, + 0x3ea: {1003}, + 0x3ec: {1005}, + 0x3ee: {1007}, + 0x3f0: {954}, + 0x3f1: {961}, + 0x3f4: {952}, + 0x3f5: {949}, + 0x3f7: {1016}, + 0x3f9: {1010}, + 0x3fa: {1019}, + 0x3fd: {891}, + 0x3fe: {892}, + 0x3ff: {893}, + 0x400: {1104}, + 0x401: {1105}, + 0x402: {1106}, + 0x403: {1107}, + 0x404: {1108}, + 0x405: {1109}, + 0x406: {1110}, + 0x407: {1111}, + 0x408: {1112}, + 0x409: {1113}, + 0x40a: {1114}, + 0x40b: {1115}, + 0x40c: {1116}, + 0x40d: {1117}, + 0x40e: {1118}, + 0x40f: {1119}, + 0x410: {1072}, + 0x411: {1073}, + 0x412: {1074}, + 0x413: {1075}, + 0x414: {1076}, + 0x415: {1077}, + 0x416: {1078}, + 0x417: {1079}, + 0x418: {1080}, + 0x419: {1081}, + 0x41a: {1082}, + 0x41b: {1083}, + 0x41c: {1084}, + 0x41d: {1085}, + 0x41e: {1086}, + 0x41f: {1087}, + 0x420: {1088}, + 0x421: {1089}, + 0x422: {1090}, + 0x423: {1091}, + 0x424: {1092}, + 0x425: {1093}, + 0x426: {1094}, + 0x427: {1095}, + 0x428: {1096}, + 0x429: {1097}, + 0x42a: {1098}, + 0x42b: {1099}, + 0x42c: {1100}, + 0x42d: {1101}, + 0x42e: {1102}, + 0x42f: {1103}, + 0x460: {1121}, + 0x462: {1123}, + 0x464: {1125}, + 0x466: {1127}, + 0x468: {1129}, + 0x46a: {1131}, + 0x46c: {1133}, + 0x46e: {1135}, + 0x470: {1137}, + 0x472: {1139}, + 0x474: {1141}, + 0x476: {1143}, + 0x478: {1145}, + 0x47a: {1147}, + 0x47c: {1149}, + 0x47e: {1151}, + 0x480: {1153}, + 0x48a: {1163}, + 0x48c: {1165}, + 0x48e: {1167}, + 0x490: {1169}, + 0x492: {1171}, + 0x494: {1173}, + 0x496: {1175}, + 0x498: {1177}, + 0x49a: {1179}, + 0x49c: {1181}, + 0x49e: {1183}, + 0x4a0: {1185}, + 0x4a2: {1187}, + 0x4a4: {1189}, + 0x4a6: {1191}, + 0x4a8: {1193}, + 0x4aa: {1195}, + 0x4ac: {1197}, + 0x4ae: {1199}, + 0x4b0: {1201}, + 0x4b2: {1203}, + 0x4b4: {1205}, + 0x4b6: {1207}, + 0x4b8: {1209}, + 0x4ba: {1211}, + 0x4bc: {1213}, + 0x4be: {1215}, + 0x4c0: {1231}, + 0x4c1: {1218}, + 0x4c3: {1220}, + 0x4c5: {1222}, + 0x4c7: {1224}, + 0x4c9: {1226}, + 0x4cb: {1228}, + 0x4cd: {1230}, + 0x4d0: {1233}, + 0x4d2: {1235}, + 0x4d4: {1237}, + 0x4d6: {1239}, + 0x4d8: {1241}, + 0x4da: {1243}, + 0x4dc: {1245}, + 0x4de: {1247}, + 0x4e0: {1249}, + 0x4e2: {1251}, + 0x4e4: {1253}, + 0x4e6: {1255}, + 0x4e8: {1257}, + 0x4ea: {1259}, + 0x4ec: {1261}, + 0x4ee: {1263}, + 0x4f0: {1265}, + 0x4f2: {1267}, + 0x4f4: {1269}, + 0x4f6: {1271}, + 0x4f8: {1273}, + 0x4fa: {1275}, + 0x4fc: {1277}, + 0x4fe: {1279}, + 0x500: {1281}, + 0x502: {1283}, + 0x504: {1285}, + 0x506: {1287}, + 0x508: {1289}, + 0x50a: {1291}, + 0x50c: {1293}, + 0x50e: {1295}, + 0x510: {1297}, + 0x512: {1299}, + 0x514: {1301}, + 0x516: {1303}, + 0x518: {1305}, + 0x51a: {1307}, + 0x51c: {1309}, + 0x51e: {1311}, + 0x520: {1313}, + 0x522: {1315}, + 0x524: {1317}, + 0x526: {1319}, + 0x528: {1321}, + 0x52a: {1323}, + 0x52c: {1325}, + 0x52e: {1327}, + 0x531: {1377}, + 0x532: {1378}, + 0x533: {1379}, + 0x534: {1380}, + 0x535: {1381}, + 0x536: {1382}, + 0x537: {1383}, + 0x538: {1384}, + 0x539: {1385}, + 0x53a: {1386}, + 0x53b: {1387}, + 0x53c: {1388}, + 0x53d: {1389}, + 0x53e: {1390}, + 0x53f: {1391}, + 0x540: {1392}, + 0x541: {1393}, + 0x542: {1394}, + 0x543: {1395}, + 0x544: {1396}, + 0x545: {1397}, + 0x546: {1398}, + 0x547: {1399}, + 0x548: {1400}, + 0x549: {1401}, + 0x54a: {1402}, + 0x54b: {1403}, + 0x54c: {1404}, + 0x54d: {1405}, + 0x54e: {1406}, + 0x54f: {1407}, + 0x550: {1408}, + 0x551: {1409}, + 0x552: {1410}, + 0x553: {1411}, + 0x554: {1412}, + 0x555: {1413}, + 0x556: {1414}, + 0x587: {1381, 1410}, + 0x10a0: {11520}, + 0x10a1: {11521}, + 0x10a2: {11522}, + 0x10a3: {11523}, + 0x10a4: {11524}, + 0x10a5: {11525}, + 0x10a6: {11526}, + 0x10a7: {11527}, + 0x10a8: {11528}, + 0x10a9: {11529}, + 0x10aa: {11530}, + 0x10ab: {11531}, + 0x10ac: {11532}, + 0x10ad: {11533}, + 0x10ae: {11534}, + 0x10af: {11535}, + 0x10b0: {11536}, + 0x10b1: {11537}, + 0x10b2: {11538}, + 0x10b3: {11539}, + 0x10b4: {11540}, + 0x10b5: {11541}, + 0x10b6: {11542}, + 0x10b7: {11543}, + 0x10b8: {11544}, + 0x10b9: {11545}, + 0x10ba: {11546}, + 0x10bb: {11547}, + 0x10bc: {11548}, + 0x10bd: {11549}, + 0x10be: {11550}, + 0x10bf: {11551}, + 0x10c0: {11552}, + 0x10c1: {11553}, + 0x10c2: {11554}, + 0x10c3: {11555}, + 0x10c4: {11556}, + 0x10c5: {11557}, + 0x10c7: {11559}, + 0x10cd: {11565}, + 0x13f8: {5104}, + 0x13f9: {5105}, + 0x13fa: {5106}, + 0x13fb: {5107}, + 0x13fc: {5108}, + 0x13fd: {5109}, + 0x1c80: {1074}, + 0x1c81: {1076}, + 0x1c82: {1086}, + 0x1c83: {1089}, + 0x1c84: {1090}, + 0x1c85: {1090}, + 0x1c86: {1098}, + 0x1c87: {1123}, + 0x1c88: {42571}, + 0x1c90: {4304}, + 0x1c91: {4305}, + 0x1c92: {4306}, + 0x1c93: {4307}, + 0x1c94: {4308}, + 0x1c95: {4309}, + 0x1c96: {4310}, + 0x1c97: {4311}, + 0x1c98: {4312}, + 0x1c99: {4313}, + 0x1c9a: {4314}, + 0x1c9b: {4315}, + 0x1c9c: {4316}, + 0x1c9d: {4317}, + 0x1c9e: {4318}, + 0x1c9f: {4319}, + 0x1ca0: {4320}, + 0x1ca1: {4321}, + 0x1ca2: {4322}, + 0x1ca3: {4323}, + 0x1ca4: {4324}, + 0x1ca5: {4325}, + 0x1ca6: {4326}, + 0x1ca7: {4327}, + 0x1ca8: {4328}, + 0x1ca9: {4329}, + 0x1caa: {4330}, + 0x1cab: {4331}, + 0x1cac: {4332}, + 0x1cad: {4333}, + 0x1cae: {4334}, + 0x1caf: {4335}, + 0x1cb0: {4336}, + 0x1cb1: {4337}, + 0x1cb2: {4338}, + 0x1cb3: {4339}, + 0x1cb4: {4340}, + 0x1cb5: {4341}, + 0x1cb6: {4342}, + 0x1cb7: {4343}, + 0x1cb8: {4344}, + 0x1cb9: {4345}, + 0x1cba: {4346}, + 0x1cbd: {4349}, + 0x1cbe: {4350}, + 0x1cbf: {4351}, + 0x1e00: {7681}, + 0x1e02: {7683}, + 0x1e04: {7685}, + 0x1e06: {7687}, + 0x1e08: {7689}, + 0x1e0a: {7691}, + 0x1e0c: {7693}, + 0x1e0e: {7695}, + 0x1e10: {7697}, + 0x1e12: {7699}, + 0x1e14: {7701}, + 0x1e16: {7703}, + 0x1e18: {7705}, + 0x1e1a: {7707}, + 0x1e1c: {7709}, + 0x1e1e: {7711}, + 0x1e20: {7713}, + 0x1e22: {7715}, + 0x1e24: {7717}, + 0x1e26: {7719}, + 0x1e28: {7721}, + 0x1e2a: {7723}, + 0x1e2c: {7725}, + 0x1e2e: {7727}, + 0x1e30: {7729}, + 0x1e32: {7731}, + 0x1e34: {7733}, + 0x1e36: {7735}, + 0x1e38: {7737}, + 0x1e3a: {7739}, + 0x1e3c: {7741}, + 0x1e3e: {7743}, + 0x1e40: {7745}, + 0x1e42: {7747}, + 0x1e44: {7749}, + 0x1e46: {7751}, + 0x1e48: {7753}, + 0x1e4a: {7755}, + 0x1e4c: {7757}, + 0x1e4e: {7759}, + 0x1e50: {7761}, + 0x1e52: {7763}, + 0x1e54: {7765}, + 0x1e56: {7767}, + 0x1e58: {7769}, + 0x1e5a: {7771}, + 0x1e5c: {7773}, + 0x1e5e: {7775}, + 0x1e60: {7777}, + 0x1e62: {7779}, + 0x1e64: {7781}, + 0x1e66: {7783}, + 0x1e68: {7785}, + 0x1e6a: {7787}, + 0x1e6c: {7789}, + 0x1e6e: {7791}, + 0x1e70: {7793}, + 0x1e72: {7795}, + 0x1e74: {7797}, + 0x1e76: {7799}, + 0x1e78: {7801}, + 0x1e7a: {7803}, + 0x1e7c: {7805}, + 0x1e7e: {7807}, + 0x1e80: {7809}, + 0x1e82: {7811}, + 0x1e84: {7813}, + 0x1e86: {7815}, + 0x1e88: {7817}, + 0x1e8a: {7819}, + 0x1e8c: {7821}, + 0x1e8e: {7823}, + 0x1e90: {7825}, + 0x1e92: {7827}, + 0x1e94: {7829}, + 0x1e96: {104, 817}, + 0x1e97: {116, 776}, + 0x1e98: {119, 778}, + 0x1e99: {121, 778}, + 0x1e9a: {97, 702}, + 0x1e9b: {7777}, + 0x1e9e: {115, 115}, + 0x1ea0: {7841}, + 0x1ea2: {7843}, + 0x1ea4: {7845}, + 0x1ea6: {7847}, + 0x1ea8: {7849}, + 0x1eaa: {7851}, + 0x1eac: {7853}, + 0x1eae: {7855}, + 0x1eb0: {7857}, + 0x1eb2: {7859}, + 0x1eb4: {7861}, + 0x1eb6: {7863}, + 0x1eb8: {7865}, + 0x1eba: {7867}, + 0x1ebc: {7869}, + 0x1ebe: {7871}, + 0x1ec0: {7873}, + 0x1ec2: {7875}, + 0x1ec4: {7877}, + 0x1ec6: {7879}, + 0x1ec8: {7881}, + 0x1eca: {7883}, + 0x1ecc: {7885}, + 0x1ece: {7887}, + 0x1ed0: {7889}, + 0x1ed2: {7891}, + 0x1ed4: {7893}, + 0x1ed6: {7895}, + 0x1ed8: {7897}, + 0x1eda: {7899}, + 0x1edc: {7901}, + 0x1ede: {7903}, + 0x1ee0: {7905}, + 0x1ee2: {7907}, + 0x1ee4: {7909}, + 0x1ee6: {7911}, + 0x1ee8: {7913}, + 0x1eea: {7915}, + 0x1eec: {7917}, + 0x1eee: {7919}, + 0x1ef0: {7921}, + 0x1ef2: {7923}, + 0x1ef4: {7925}, + 0x1ef6: {7927}, + 0x1ef8: {7929}, + 0x1efa: {7931}, + 0x1efc: {7933}, + 0x1efe: {7935}, + 0x1f08: {7936}, + 0x1f09: {7937}, + 0x1f0a: {7938}, + 0x1f0b: {7939}, + 0x1f0c: {7940}, + 0x1f0d: {7941}, + 0x1f0e: {7942}, + 0x1f0f: {7943}, + 0x1f18: {7952}, + 0x1f19: {7953}, + 0x1f1a: {7954}, + 0x1f1b: {7955}, + 0x1f1c: {7956}, + 0x1f1d: {7957}, + 0x1f28: {7968}, + 0x1f29: {7969}, + 0x1f2a: {7970}, + 0x1f2b: {7971}, + 0x1f2c: {7972}, + 0x1f2d: {7973}, + 0x1f2e: {7974}, + 0x1f2f: {7975}, + 0x1f38: {7984}, + 0x1f39: {7985}, + 0x1f3a: {7986}, + 0x1f3b: {7987}, + 0x1f3c: {7988}, + 0x1f3d: {7989}, + 0x1f3e: {7990}, + 0x1f3f: {7991}, + 0x1f48: {8000}, + 0x1f49: {8001}, + 0x1f4a: {8002}, + 0x1f4b: {8003}, + 0x1f4c: {8004}, + 0x1f4d: {8005}, + 0x1f50: {965, 787}, + 0x1f52: {965, 787, 768}, + 0x1f54: {965, 787, 769}, + 0x1f56: {965, 787, 834}, + 0x1f59: {8017}, + 0x1f5b: {8019}, + 0x1f5d: {8021}, + 0x1f5f: {8023}, + 0x1f68: {8032}, + 0x1f69: {8033}, + 0x1f6a: {8034}, + 0x1f6b: {8035}, + 0x1f6c: {8036}, + 0x1f6d: {8037}, + 0x1f6e: {8038}, + 0x1f6f: {8039}, + 0x1f80: {7936, 953}, + 0x1f81: {7937, 953}, + 0x1f82: {7938, 953}, + 0x1f83: {7939, 953}, + 0x1f84: {7940, 953}, + 0x1f85: {7941, 953}, + 0x1f86: {7942, 953}, + 0x1f87: {7943, 953}, + 0x1f88: {7936, 953}, + 0x1f89: {7937, 953}, + 0x1f8a: {7938, 953}, + 0x1f8b: {7939, 953}, + 0x1f8c: {7940, 953}, + 0x1f8d: {7941, 953}, + 0x1f8e: {7942, 953}, + 0x1f8f: {7943, 953}, + 0x1f90: {7968, 953}, + 0x1f91: {7969, 953}, + 0x1f92: {7970, 953}, + 0x1f93: {7971, 953}, + 0x1f94: {7972, 953}, + 0x1f95: {7973, 953}, + 0x1f96: {7974, 953}, + 0x1f97: {7975, 953}, + 0x1f98: {7968, 953}, + 0x1f99: {7969, 953}, + 0x1f9a: {7970, 953}, + 0x1f9b: {7971, 953}, + 0x1f9c: {7972, 953}, + 0x1f9d: {7973, 953}, + 0x1f9e: {7974, 953}, + 0x1f9f: {7975, 953}, + 0x1fa0: {8032, 953}, + 0x1fa1: {8033, 953}, + 0x1fa2: {8034, 953}, + 0x1fa3: {8035, 953}, + 0x1fa4: {8036, 953}, + 0x1fa5: {8037, 953}, + 0x1fa6: {8038, 953}, + 0x1fa7: {8039, 953}, + 0x1fa8: {8032, 953}, + 0x1fa9: {8033, 953}, + 0x1faa: {8034, 953}, + 0x1fab: {8035, 953}, + 0x1fac: {8036, 953}, + 0x1fad: {8037, 953}, + 0x1fae: {8038, 953}, + 0x1faf: {8039, 953}, + 0x1fb2: {8048, 953}, + 0x1fb3: {945, 953}, + 0x1fb4: {940, 953}, + 0x1fb6: {945, 834}, + 0x1fb7: {945, 834, 953}, + 0x1fb8: {8112}, + 0x1fb9: {8113}, + 0x1fba: {8048}, + 0x1fbb: {8049}, + 0x1fbc: {945, 953}, + 0x1fbe: {953}, + 0x1fc2: {8052, 953}, + 0x1fc3: {951, 953}, + 0x1fc4: {942, 953}, + 0x1fc6: {951, 834}, + 0x1fc7: {951, 834, 953}, + 0x1fc8: {8050}, + 0x1fc9: {8051}, + 0x1fca: {8052}, + 0x1fcb: {8053}, + 0x1fcc: {951, 953}, + 0x1fd2: {953, 776, 768}, + 0x1fd3: {953, 776, 769}, + 0x1fd6: {953, 834}, + 0x1fd7: {953, 776, 834}, + 0x1fd8: {8144}, + 0x1fd9: {8145}, + 0x1fda: {8054}, + 0x1fdb: {8055}, + 0x1fe2: {965, 776, 768}, + 0x1fe3: {965, 776, 769}, + 0x1fe4: {961, 787}, + 0x1fe6: {965, 834}, + 0x1fe7: {965, 776, 834}, + 0x1fe8: {8160}, + 0x1fe9: {8161}, + 0x1fea: {8058}, + 0x1feb: {8059}, + 0x1fec: {8165}, + 0x1ff2: {8060, 953}, + 0x1ff3: {969, 953}, + 0x1ff4: {974, 953}, + 0x1ff6: {969, 834}, + 0x1ff7: {969, 834, 953}, + 0x1ff8: {8056}, + 0x1ff9: {8057}, + 0x1ffa: {8060}, + 0x1ffb: {8061}, + 0x1ffc: {969, 953}, + 0x2126: {969}, + 0x212a: {107}, + 0x212b: {229}, + 0x2132: {8526}, + 0x2160: {8560}, + 0x2161: {8561}, + 0x2162: {8562}, + 0x2163: {8563}, + 0x2164: {8564}, + 0x2165: {8565}, + 0x2166: {8566}, + 0x2167: {8567}, + 0x2168: {8568}, + 0x2169: {8569}, + 0x216a: {8570}, + 0x216b: {8571}, + 0x216c: {8572}, + 0x216d: {8573}, + 0x216e: {8574}, + 0x216f: {8575}, + 0x2183: {8580}, + 0x24b6: {9424}, + 0x24b7: {9425}, + 0x24b8: {9426}, + 0x24b9: {9427}, + 0x24ba: {9428}, + 0x24bb: {9429}, + 0x24bc: {9430}, + 0x24bd: {9431}, + 0x24be: {9432}, + 0x24bf: {9433}, + 0x24c0: {9434}, + 0x24c1: {9435}, + 0x24c2: {9436}, + 0x24c3: {9437}, + 0x24c4: {9438}, + 0x24c5: {9439}, + 0x24c6: {9440}, + 0x24c7: {9441}, + 0x24c8: {9442}, + 0x24c9: {9443}, + 0x24ca: {9444}, + 0x24cb: {9445}, + 0x24cc: {9446}, + 0x24cd: {9447}, + 0x24ce: {9448}, + 0x24cf: {9449}, + 0x2c00: {11312}, + 0x2c01: {11313}, + 0x2c02: {11314}, + 0x2c03: {11315}, + 0x2c04: {11316}, + 0x2c05: {11317}, + 0x2c06: {11318}, + 0x2c07: {11319}, + 0x2c08: {11320}, + 0x2c09: {11321}, + 0x2c0a: {11322}, + 0x2c0b: {11323}, + 0x2c0c: {11324}, + 0x2c0d: {11325}, + 0x2c0e: {11326}, + 0x2c0f: {11327}, + 0x2c10: {11328}, + 0x2c11: {11329}, + 0x2c12: {11330}, + 0x2c13: {11331}, + 0x2c14: {11332}, + 0x2c15: {11333}, + 0x2c16: {11334}, + 0x2c17: {11335}, + 0x2c18: {11336}, + 0x2c19: {11337}, + 0x2c1a: {11338}, + 0x2c1b: {11339}, + 0x2c1c: {11340}, + 0x2c1d: {11341}, + 0x2c1e: {11342}, + 0x2c1f: {11343}, + 0x2c20: {11344}, + 0x2c21: {11345}, + 0x2c22: {11346}, + 0x2c23: {11347}, + 0x2c24: {11348}, + 0x2c25: {11349}, + 0x2c26: {11350}, + 0x2c27: {11351}, + 0x2c28: {11352}, + 0x2c29: {11353}, + 0x2c2a: {11354}, + 0x2c2b: {11355}, + 0x2c2c: {11356}, + 0x2c2d: {11357}, + 0x2c2e: {11358}, + 0x2c2f: {11359}, + 0x2c60: {11361}, + 0x2c62: {619}, + 0x2c63: {7549}, + 0x2c64: {637}, + 0x2c67: {11368}, + 0x2c69: {11370}, + 0x2c6b: {11372}, + 0x2c6d: {593}, + 0x2c6e: {625}, + 0x2c6f: {592}, + 0x2c70: {594}, + 0x2c72: {11379}, + 0x2c75: {11382}, + 0x2c7e: {575}, + 0x2c7f: {576}, + 0x2c80: {11393}, + 0x2c82: {11395}, + 0x2c84: {11397}, + 0x2c86: {11399}, + 0x2c88: {11401}, + 0x2c8a: {11403}, + 0x2c8c: {11405}, + 0x2c8e: {11407}, + 0x2c90: {11409}, + 0x2c92: {11411}, + 0x2c94: {11413}, + 0x2c96: {11415}, + 0x2c98: {11417}, + 0x2c9a: {11419}, + 0x2c9c: {11421}, + 0x2c9e: {11423}, + 0x2ca0: {11425}, + 0x2ca2: {11427}, + 0x2ca4: {11429}, + 0x2ca6: {11431}, + 0x2ca8: {11433}, + 0x2caa: {11435}, + 0x2cac: {11437}, + 0x2cae: {11439}, + 0x2cb0: {11441}, + 0x2cb2: {11443}, + 0x2cb4: {11445}, + 0x2cb6: {11447}, + 0x2cb8: {11449}, + 0x2cba: {11451}, + 0x2cbc: {11453}, + 0x2cbe: {11455}, + 0x2cc0: {11457}, + 0x2cc2: {11459}, + 0x2cc4: {11461}, + 0x2cc6: {11463}, + 0x2cc8: {11465}, + 0x2cca: {11467}, + 0x2ccc: {11469}, + 0x2cce: {11471}, + 0x2cd0: {11473}, + 0x2cd2: {11475}, + 0x2cd4: {11477}, + 0x2cd6: {11479}, + 0x2cd8: {11481}, + 0x2cda: {11483}, + 0x2cdc: {11485}, + 0x2cde: {11487}, + 0x2ce0: {11489}, + 0x2ce2: {11491}, + 0x2ceb: {11500}, + 0x2ced: {11502}, + 0x2cf2: {11507}, + 0xa640: {42561}, + 0xa642: {42563}, + 0xa644: {42565}, + 0xa646: {42567}, + 0xa648: {42569}, + 0xa64a: {42571}, + 0xa64c: {42573}, + 0xa64e: {42575}, + 0xa650: {42577}, + 0xa652: {42579}, + 0xa654: {42581}, + 0xa656: {42583}, + 0xa658: {42585}, + 0xa65a: {42587}, + 0xa65c: {42589}, + 0xa65e: {42591}, + 0xa660: {42593}, + 0xa662: {42595}, + 0xa664: {42597}, + 0xa666: {42599}, + 0xa668: {42601}, + 0xa66a: {42603}, + 0xa66c: {42605}, + 0xa680: {42625}, + 0xa682: {42627}, + 0xa684: {42629}, + 0xa686: {42631}, + 0xa688: {42633}, + 0xa68a: {42635}, + 0xa68c: {42637}, + 0xa68e: {42639}, + 0xa690: {42641}, + 0xa692: {42643}, + 0xa694: {42645}, + 0xa696: {42647}, + 0xa698: {42649}, + 0xa69a: {42651}, + 0xa722: {42787}, + 0xa724: {42789}, + 0xa726: {42791}, + 0xa728: {42793}, + 0xa72a: {42795}, + 0xa72c: {42797}, + 0xa72e: {42799}, + 0xa732: {42803}, + 0xa734: {42805}, + 0xa736: {42807}, + 0xa738: {42809}, + 0xa73a: {42811}, + 0xa73c: {42813}, + 0xa73e: {42815}, + 0xa740: {42817}, + 0xa742: {42819}, + 0xa744: {42821}, + 0xa746: {42823}, + 0xa748: {42825}, + 0xa74a: {42827}, + 0xa74c: {42829}, + 0xa74e: {42831}, + 0xa750: {42833}, + 0xa752: {42835}, + 0xa754: {42837}, + 0xa756: {42839}, + 0xa758: {42841}, + 0xa75a: {42843}, + 0xa75c: {42845}, + 0xa75e: {42847}, + 0xa760: {42849}, + 0xa762: {42851}, + 0xa764: {42853}, + 0xa766: {42855}, + 0xa768: {42857}, + 0xa76a: {42859}, + 0xa76c: {42861}, + 0xa76e: {42863}, + 0xa779: {42874}, + 0xa77b: {42876}, + 0xa77d: {7545}, + 0xa77e: {42879}, + 0xa780: {42881}, + 0xa782: {42883}, + 0xa784: {42885}, + 0xa786: {42887}, + 0xa78b: {42892}, + 0xa78d: {613}, + 0xa790: {42897}, + 0xa792: {42899}, + 0xa796: {42903}, + 0xa798: {42905}, + 0xa79a: {42907}, + 0xa79c: {42909}, + 0xa79e: {42911}, + 0xa7a0: {42913}, + 0xa7a2: {42915}, + 0xa7a4: {42917}, + 0xa7a6: {42919}, + 0xa7a8: {42921}, + 0xa7aa: {614}, + 0xa7ab: {604}, + 0xa7ac: {609}, + 0xa7ad: {620}, + 0xa7ae: {618}, + 0xa7b0: {670}, + 0xa7b1: {647}, + 0xa7b2: {669}, + 0xa7b3: {43859}, + 0xa7b4: {42933}, + 0xa7b6: {42935}, + 0xa7b8: {42937}, + 0xa7ba: {42939}, + 0xa7bc: {42941}, + 0xa7be: {42943}, + 0xa7c0: {42945}, + 0xa7c2: {42947}, + 0xa7c4: {42900}, + 0xa7c5: {642}, + 0xa7c6: {7566}, + 0xa7c7: {42952}, + 0xa7c9: {42954}, + 0xa7d0: {42961}, + 0xa7d6: {42967}, + 0xa7d8: {42969}, + 0xa7f5: {42998}, + 0xab70: {5024}, + 0xab71: {5025}, + 0xab72: {5026}, + 0xab73: {5027}, + 0xab74: {5028}, + 0xab75: {5029}, + 0xab76: {5030}, + 0xab77: {5031}, + 0xab78: {5032}, + 0xab79: {5033}, + 0xab7a: {5034}, + 0xab7b: {5035}, + 0xab7c: {5036}, + 0xab7d: {5037}, + 0xab7e: {5038}, + 0xab7f: {5039}, + 0xab80: {5040}, + 0xab81: {5041}, + 0xab82: {5042}, + 0xab83: {5043}, + 0xab84: {5044}, + 0xab85: {5045}, + 0xab86: {5046}, + 0xab87: {5047}, + 0xab88: {5048}, + 0xab89: {5049}, + 0xab8a: {5050}, + 0xab8b: {5051}, + 0xab8c: {5052}, + 0xab8d: {5053}, + 0xab8e: {5054}, + 0xab8f: {5055}, + 0xab90: {5056}, + 0xab91: {5057}, + 0xab92: {5058}, + 0xab93: {5059}, + 0xab94: {5060}, + 0xab95: {5061}, + 0xab96: {5062}, + 0xab97: {5063}, + 0xab98: {5064}, + 0xab99: {5065}, + 0xab9a: {5066}, + 0xab9b: {5067}, + 0xab9c: {5068}, + 0xab9d: {5069}, + 0xab9e: {5070}, + 0xab9f: {5071}, + 0xaba0: {5072}, + 0xaba1: {5073}, + 0xaba2: {5074}, + 0xaba3: {5075}, + 0xaba4: {5076}, + 0xaba5: {5077}, + 0xaba6: {5078}, + 0xaba7: {5079}, + 0xaba8: {5080}, + 0xaba9: {5081}, + 0xabaa: {5082}, + 0xabab: {5083}, + 0xabac: {5084}, + 0xabad: {5085}, + 0xabae: {5086}, + 0xabaf: {5087}, + 0xabb0: {5088}, + 0xabb1: {5089}, + 0xabb2: {5090}, + 0xabb3: {5091}, + 0xabb4: {5092}, + 0xabb5: {5093}, + 0xabb6: {5094}, + 0xabb7: {5095}, + 0xabb8: {5096}, + 0xabb9: {5097}, + 0xabba: {5098}, + 0xabbb: {5099}, + 0xabbc: {5100}, + 0xabbd: {5101}, + 0xabbe: {5102}, + 0xabbf: {5103}, + 0xfb00: {102, 102}, + 0xfb01: {102, 105}, + 0xfb02: {102, 108}, + 0xfb03: {102, 102, 105}, + 0xfb04: {102, 102, 108}, + 0xfb05: {115, 116}, + 0xfb06: {115, 116}, + 0xfb13: {1396, 1398}, + 0xfb14: {1396, 1381}, + 0xfb15: {1396, 1387}, + 0xfb16: {1406, 1398}, + 0xfb17: {1396, 1389}, + 0xff21: {65345}, + 0xff22: {65346}, + 0xff23: {65347}, + 0xff24: {65348}, + 0xff25: {65349}, + 0xff26: {65350}, + 0xff27: {65351}, + 0xff28: {65352}, + 0xff29: {65353}, + 0xff2a: {65354}, + 0xff2b: {65355}, + 0xff2c: {65356}, + 0xff2d: {65357}, + 0xff2e: {65358}, + 0xff2f: {65359}, + 0xff30: {65360}, + 0xff31: {65361}, + 0xff32: {65362}, + 0xff33: {65363}, + 0xff34: {65364}, + 0xff35: {65365}, + 0xff36: {65366}, + 0xff37: {65367}, + 0xff38: {65368}, + 0xff39: {65369}, + 0xff3a: {65370}, + 0x10400: {66600}, + 0x10401: {66601}, + 0x10402: {66602}, + 0x10403: {66603}, + 0x10404: {66604}, + 0x10405: {66605}, + 0x10406: {66606}, + 0x10407: {66607}, + 0x10408: {66608}, + 0x10409: {66609}, + 0x1040a: {66610}, + 0x1040b: {66611}, + 0x1040c: {66612}, + 0x1040d: {66613}, + 0x1040e: {66614}, + 0x1040f: {66615}, + 0x10410: {66616}, + 0x10411: {66617}, + 0x10412: {66618}, + 0x10413: {66619}, + 0x10414: {66620}, + 0x10415: {66621}, + 0x10416: {66622}, + 0x10417: {66623}, + 0x10418: {66624}, + 0x10419: {66625}, + 0x1041a: {66626}, + 0x1041b: {66627}, + 0x1041c: {66628}, + 0x1041d: {66629}, + 0x1041e: {66630}, + 0x1041f: {66631}, + 0x10420: {66632}, + 0x10421: {66633}, + 0x10422: {66634}, + 0x10423: {66635}, + 0x10424: {66636}, + 0x10425: {66637}, + 0x10426: {66638}, + 0x10427: {66639}, + 0x104b0: {66776}, + 0x104b1: {66777}, + 0x104b2: {66778}, + 0x104b3: {66779}, + 0x104b4: {66780}, + 0x104b5: {66781}, + 0x104b6: {66782}, + 0x104b7: {66783}, + 0x104b8: {66784}, + 0x104b9: {66785}, + 0x104ba: {66786}, + 0x104bb: {66787}, + 0x104bc: {66788}, + 0x104bd: {66789}, + 0x104be: {66790}, + 0x104bf: {66791}, + 0x104c0: {66792}, + 0x104c1: {66793}, + 0x104c2: {66794}, + 0x104c3: {66795}, + 0x104c4: {66796}, + 0x104c5: {66797}, + 0x104c6: {66798}, + 0x104c7: {66799}, + 0x104c8: {66800}, + 0x104c9: {66801}, + 0x104ca: {66802}, + 0x104cb: {66803}, + 0x104cc: {66804}, + 0x104cd: {66805}, + 0x104ce: {66806}, + 0x104cf: {66807}, + 0x104d0: {66808}, + 0x104d1: {66809}, + 0x104d2: {66810}, + 0x104d3: {66811}, + 0x10570: {66967}, + 0x10571: {66968}, + 0x10572: {66969}, + 0x10573: {66970}, + 0x10574: {66971}, + 0x10575: {66972}, + 0x10576: {66973}, + 0x10577: {66974}, + 0x10578: {66975}, + 0x10579: {66976}, + 0x1057a: {66977}, + 0x1057c: {66979}, + 0x1057d: {66980}, + 0x1057e: {66981}, + 0x1057f: {66982}, + 0x10580: {66983}, + 0x10581: {66984}, + 0x10582: {66985}, + 0x10583: {66986}, + 0x10584: {66987}, + 0x10585: {66988}, + 0x10586: {66989}, + 0x10587: {66990}, + 0x10588: {66991}, + 0x10589: {66992}, + 0x1058a: {66993}, + 0x1058c: {66995}, + 0x1058d: {66996}, + 0x1058e: {66997}, + 0x1058f: {66998}, + 0x10590: {66999}, + 0x10591: {67000}, + 0x10592: {67001}, + 0x10594: {67003}, + 0x10595: {67004}, + 0x10c80: {68800}, + 0x10c81: {68801}, + 0x10c82: {68802}, + 0x10c83: {68803}, + 0x10c84: {68804}, + 0x10c85: {68805}, + 0x10c86: {68806}, + 0x10c87: {68807}, + 0x10c88: {68808}, + 0x10c89: {68809}, + 0x10c8a: {68810}, + 0x10c8b: {68811}, + 0x10c8c: {68812}, + 0x10c8d: {68813}, + 0x10c8e: {68814}, + 0x10c8f: {68815}, + 0x10c90: {68816}, + 0x10c91: {68817}, + 0x10c92: {68818}, + 0x10c93: {68819}, + 0x10c94: {68820}, + 0x10c95: {68821}, + 0x10c96: {68822}, + 0x10c97: {68823}, + 0x10c98: {68824}, + 0x10c99: {68825}, + 0x10c9a: {68826}, + 0x10c9b: {68827}, + 0x10c9c: {68828}, + 0x10c9d: {68829}, + 0x10c9e: {68830}, + 0x10c9f: {68831}, + 0x10ca0: {68832}, + 0x10ca1: {68833}, + 0x10ca2: {68834}, + 0x10ca3: {68835}, + 0x10ca4: {68836}, + 0x10ca5: {68837}, + 0x10ca6: {68838}, + 0x10ca7: {68839}, + 0x10ca8: {68840}, + 0x10ca9: {68841}, + 0x10caa: {68842}, + 0x10cab: {68843}, + 0x10cac: {68844}, + 0x10cad: {68845}, + 0x10cae: {68846}, + 0x10caf: {68847}, + 0x10cb0: {68848}, + 0x10cb1: {68849}, + 0x10cb2: {68850}, + 0x118a0: {71872}, + 0x118a1: {71873}, + 0x118a2: {71874}, + 0x118a3: {71875}, + 0x118a4: {71876}, + 0x118a5: {71877}, + 0x118a6: {71878}, + 0x118a7: {71879}, + 0x118a8: {71880}, + 0x118a9: {71881}, + 0x118aa: {71882}, + 0x118ab: {71883}, + 0x118ac: {71884}, + 0x118ad: {71885}, + 0x118ae: {71886}, + 0x118af: {71887}, + 0x118b0: {71888}, + 0x118b1: {71889}, + 0x118b2: {71890}, + 0x118b3: {71891}, + 0x118b4: {71892}, + 0x118b5: {71893}, + 0x118b6: {71894}, + 0x118b7: {71895}, + 0x118b8: {71896}, + 0x118b9: {71897}, + 0x118ba: {71898}, + 0x118bb: {71899}, + 0x118bc: {71900}, + 0x118bd: {71901}, + 0x118be: {71902}, + 0x118bf: {71903}, + 0x16e40: {93792}, + 0x16e41: {93793}, + 0x16e42: {93794}, + 0x16e43: {93795}, + 0x16e44: {93796}, + 0x16e45: {93797}, + 0x16e46: {93798}, + 0x16e47: {93799}, + 0x16e48: {93800}, + 0x16e49: {93801}, + 0x16e4a: {93802}, + 0x16e4b: {93803}, + 0x16e4c: {93804}, + 0x16e4d: {93805}, + 0x16e4e: {93806}, + 0x16e4f: {93807}, + 0x16e50: {93808}, + 0x16e51: {93809}, + 0x16e52: {93810}, + 0x16e53: {93811}, + 0x16e54: {93812}, + 0x16e55: {93813}, + 0x16e56: {93814}, + 0x16e57: {93815}, + 0x16e58: {93816}, + 0x16e59: {93817}, + 0x16e5a: {93818}, + 0x16e5b: {93819}, + 0x16e5c: {93820}, + 0x16e5d: {93821}, + 0x16e5e: {93822}, + 0x16e5f: {93823}, + 0x1e900: {125218}, + 0x1e901: {125219}, + 0x1e902: {125220}, + 0x1e903: {125221}, + 0x1e904: {125222}, + 0x1e905: {125223}, + 0x1e906: {125224}, + 0x1e907: {125225}, + 0x1e908: {125226}, + 0x1e909: {125227}, + 0x1e90a: {125228}, + 0x1e90b: {125229}, + 0x1e90c: {125230}, + 0x1e90d: {125231}, + 0x1e90e: {125232}, + 0x1e90f: {125233}, + 0x1e910: {125234}, + 0x1e911: {125235}, + 0x1e912: {125236}, + 0x1e913: {125237}, + 0x1e914: {125238}, + 0x1e915: {125239}, + 0x1e916: {125240}, + 0x1e917: {125241}, + 0x1e918: {125242}, + 0x1e919: {125243}, + 0x1e91a: {125244}, + 0x1e91b: {125245}, + 0x1e91c: {125246}, + 0x1e91d: {125247}, + 0x1e91e: {125248}, + 0x1e91f: {125249}, + 0x1e920: {125250}, + 0x1e921: {125251}, } diff --git a/util/util.go b/util/util.go index a817ec6..fb053da 100644 --- a/util/util.go +++ b/util/util.go @@ -13,7 +13,7 @@ import ( ) // A CopyOnWriteBuffer is a byte buffer that copies buffer when -// it need to be changed. +// it needs to be changed. type CopyOnWriteBuffer struct { buffer []byte copied bool @@ -184,25 +184,25 @@ func IndentPositionPadding(bs []byte, currentPos, paddingv, width int) (pos, pad // // Deprecated: This function has bugs. Use util.IndentPositionPadding and util.FirstNonSpacePosition. func DedentPosition(bs []byte, currentPos, width int) (pos, padding int) { - if width == 0 { - return 0, 0 - } - w := 0 - l := len(bs) - i := 0 - for ; i < l; i++ { - if bs[i] == '\t' { - w += TabWidth(currentPos + w) - } else if bs[i] == ' ' { - w++ - } else { - break - } - } - if w >= width { - return i, w - width - } - return i, 0 + if width == 0 { + return 0, 0 + } + w := 0 + l := len(bs) + i := 0 + for ; i < l; i++ { + if bs[i] == '\t' { + w += TabWidth(currentPos + w) + } else if bs[i] == ' ' { + w++ + } else { + break + } + } + if w >= width { + return i, w - width + } + return i, 0 } // DedentPositionPadding dedents lines by the given width. @@ -211,26 +211,26 @@ func DedentPosition(bs []byte, currentPos, width int) (pos, padding int) { // // Deprecated: This function has bugs. Use util.IndentPositionPadding and util.FirstNonSpacePosition. func DedentPositionPadding(bs []byte, currentPos, paddingv, width int) (pos, padding int) { - if width == 0 { - return 0, paddingv - } + if width == 0 { + return 0, paddingv + } - w := 0 - i := 0 - l := len(bs) - for ; i < l; i++ { - if bs[i] == '\t' { - w += TabWidth(currentPos + w) - } else if bs[i] == ' ' { - w++ - } else { - break - } - } - if w >= width { - return i - paddingv, w - width - } - return i - paddingv, 0 + w := 0 + i := 0 + l := len(bs) + for ; i < l; i++ { + if bs[i] == '\t' { + w += TabWidth(currentPos + w) + } else if bs[i] == ' ' { + w++ + } else { + break + } + } + if w >= width { + return i - paddingv, w - width + } + return i - paddingv, 0 } // IndentWidth calculate an indent width for the given line.