From 15dbfbbe0bfb4d0d1f12611f4ba1b30af91b8c54 Mon Sep 17 00:00:00 2001 From: crc Date: Wed, 23 Sep 2020 17:45:28 +0000 Subject: [PATCH] begin work on xhtml generation for the Markdown FossilOrigin-Name: 0878cff65e3988b7000cc0fa5cd1fef4d3b8bbcc5b03fe5788a08eb47e319c3f --- example/export-as-xhtml.retro | 410 ++++++++++++++++++++ tools/html-chapters.retro | 2 +- vm/nga-c-native-x86/image.c | 710 +++++++++++++++++++++++++++++----- 3 files changed, 1033 insertions(+), 89 deletions(-) create mode 100755 example/export-as-xhtml.retro diff --git a/example/export-as-xhtml.retro b/example/export-as-xhtml.retro new file mode 100755 index 0000000..ab7c619 --- /dev/null +++ b/example/export-as-xhtml.retro @@ -0,0 +1,410 @@ +#! /usr/bin/env retro + +# RETRO Source to HTML + +RETRO programs are written using a literate format called +Unu which allows mixing of code and commentary in a somewhat +literate format. + +Code (and optionally tests) is extracted from fenced blocks, +and commentary normally uses a subset of Markdown. + +This tool processes both parts, generating formatted HTML +documents that look nice, and also provides syntax highlighting +for the test and code blocks. + +## Features + +For Markdown: + +- lists +- indented code blocks +- paragraphs +- headers +- fenced code and test blocks +- horizontal rules +- *inline* _formatting_ elements + +For RETRO: + +- syntax highlighting of most elements +- uses introspection to identify primitives + +For both: + +- easily customizable via CSS at the end of this file + +## Limitations + +This only supports a limited subset of full Markdown. I am +not adding support for the various linking formats, ordered +lists, underlined headers, doubled asterisk, doubled +underscores, multiple line/paragraph list entries, or images. + +The formatting must follow the following limits: + + # Title + ## Subtitle + ### Level 3 Title + + Paragraph. *Bold*, _italics_, `inline code`. + + Another paragraph. + + - list element + - list element + - nested list element + - nested list element + - list element + + ~~~ + :retro (code ; + ~~~ + + ``` + tests + ``` + + Sample code or output with four leading spaces is + note colorized. + + this will be code, but not run through the + colorizer. + + More paragraph text. + + ---- + + Above is a horizontal separator. + +This is not very intelligent. If you have text like `3 * 4`, +it'll happily treat the \* as the start of a bold sequence. +Use a leading backslash to avoid this. + +---- + +## The Code + +### Headers and CSS Injection + +HTML is pretty verbose and wants a bunch of boilerplate to +work nicely, so I start with some header stuff. + +~~~ +' s:put nl +' s:put nl +~~~ + +Locate and embed the CSS from the end of this file. + +~~~ +' s:put nl +FALSE script:name + [ over [ '##_CSS s:eq? or ] -if; s:put nl ] file:for-each-line +drop +' s:put nl +~~~ + +Finish the header boilerplate text and switch to the body. + +~~~ +' s:put nl +~~~ + +### Support Code + +The first couple of words are a variation of `s:put` that +generates HTML codes for specific characters. This ensures +that code output displays correctly. + +~~~ +:c:put + $< [ '< s:put ] case + $> [ '> s:put ] case + $& [ '& s:put ] case + ASCII:SPACE [ '  s:put ] case + c:put ; + +:s:put [ c:put ] s:for-each ; +~~~ + +For regular text, there are a couple of inline formatting things +to deal with. + +~~~ +'Emphasis var +'Strong var +'Escape var +'Code var + +:format + $` [ @Escape [ &Escape v:off $* c:put ] if; + @Code n:zero? [ ' &Code v:on ] + [ ' &Code v:off ] choose s:put ] case + $* [ @Escape @Code or [ &Escape v:off $* c:put ] if; + @Strong n:zero? [ ' &Strong v:on ] + [ ' &Strong v:off ] choose s:put ] case + $_ [ @Escape @Code or [ &Escape v:off $_ c:put ] if; + @Emphasis n:zero? [ ' &Emphasis v:on ] + [ ' &Emphasis v:off ] choose s:put ] case + $\ [ &Escape v:on ] case + c:put ; + +:s:put [ format ] s:for-each ; +~~~ + +### Markdown Elements + +*Code and Test Blocks* + +The biggest element is the code and test blocks. + +These will be generated in an enclosure that looks like: + +
+ ... code ... +
+ +The actual words in the code will be in `` elements. + +The fences need to start and end with `~~~` or three backticks +on a line by itself. + +So, identifying and generating an HTML container for a code +block is a matter of: + +~~~ +{{ + 'Block var + :begin '~~~ ; + :end '~~~ ; +---reveal--- + :in-code-block? (-f) @Block ; + :code-block? (s-sf) dup '~~~ s:eq? ; + :toggle-code (n-) + drop @Block n:zero? dup &begin &end choose s:put !Block ; +}} +~~~ + +And test blocks are basically the same, except for the +delimiters. + +~~~ +{{ + 'Block var + :begin '``` ; + :end '``` ; +---reveal--- + :in-test-block? (-f) @Block ; + :test-block? (s-sf) dup '``` s:eq? ; + :toggle-test (n-) + drop @Block n:zero? dup &begin &end choose s:put !Block ; +}} +~~~ + +On to generating the actual HTML for the syntax highlighted +source. This is driven by the prefix, then by word class via +a little quick introspection. + +~~~ +{{ + :span (s-) + ' s:put s:put '_ s:put ; +---reveal--- + :format-code (s-) + (ignore_empty_tokens) + dup s:length n:zero? [ '  s:put drop ] if; + + (tokens_with_prefixes) + dup fetch + $: [ 'colon span ] case + $( [ 'note span ] case + $' [ 'str span ] case + $# [ 'num span ] case + $. [ 'fnum span ] case + $& [ 'ptr span ] case + $$ [ 'char span ] case + $` [ 'inst span ] case + $\ [ 'inst span ] case + $| [ 'defer span ] case + $@ [ 'fetch span ] case + $! [ 'store span ] case + + (immediate_and_primitives) + drop dup + d:lookup d:class fetch + &class:macro [ 'imm span ] case + &class:primitive [ 'prim span ] case + drop + + (normal_words) + s:put sp ; + + :colorize + ASCII:SPACE s:tokenize &format-code a:for-each ; + + :format:code + ' s:put colorize ' s:put nl ; +}} +~~~ + +*Headers* + +After this, I define detection and formatting of headers. The +headers should look like: + + # Level 1 + ## Level 2 + ### Level 3 + +~~~ +:header? + dup [ '#_ s:begins-with? ] + [ '##_ s:begins-with? ] + [ '###_ s:begins-with? ] tri or or + over '####_ s:begins-with? or ; + +:format:head + ASCII:SPACE s:split + '# [ '

s:put n:inc s:put '

s:put nl ] s:case + '## [ '

s:put n:inc s:put '

s:put nl ] s:case + '### [ '

s:put n:inc s:put '

s:put nl ] s:case + '#### [ '

s:put n:inc s:put '

s:put nl ] s:case + drop ; +~~~ + +*Indented Code Blocks* + +Indented code blocks are lines indented by four spaces. +These are *not* syntax highlighted as they are ignored by +Unu. + +~~~ +:inline-code? dup '____ s:begins-with? ; +:format:inline-code + ' s:put + #4 + s:put + ' s:put nl ; +~~~ + +*Horizontal Rules* + +Horizonal rules consist of four or more - characters on +a line. E.g., + + ---- + -------- + +This also accepts sequences of `-+-+` which were used in +some older RETRO source files. + +~~~ +:rule? + dup [ '---- s:begins-with? ] [ '-+-+ s:begins-with? ] bi or ; +:format:rule drop '
s:put nl ; +~~~ + +*Lists* + +Lists start with a `-` or `*`, followed by a space, then +the item text. Additionally, this allows for nested lists starting +with two spaces before the list marker. + +~~~ +:list? + dup [ '-_ s:begins-with? ] [ '*_ s:begins-with? ] bi or ; +:format:list '•_ s:put #2 + s:put '
s:put nl ; + +:indented-list? + dup [ '__-_ s:begins-with? ] [ '__*_ s:begins-with? ] bi or ; +:format:indented-list + '• s:put + #3 + s:put '
s:put nl ; +~~~ + +*Paragraphs* + +Blank lines denote paragraph breaks. + +~~~ +:blank? dup s:length n:zero? ; +~~~ + +*The Formatter* + +This ties together the various words above, generating the +output. + +~~~ +:format + s:keep + code-block? [ toggle-code ] if; + in-code-block? [ format:code ] if; + test-block? [ toggle-test ] if; + in-test-block? [ format:code ] if; + blank? [ drop '

s:put nl ] if; + header? [ format:head ] if; + inline-code? [ format:inline-code ] if; + list? [ format:list ] if; + indented-list? [ format:indented-list ] if; + rule? [ format:rule ] if; + s:put nl ; + +#0 script:get-argument [ &Heap &format v:preserve ] file:for-each-line +reset +~~~ + +This concludes the Markdown (subset) in RETRO utility. All that's +left is the CSS. + +For the colors, I'm mostly using the _Tomorrow Night_ colors as +listed at https://github.com/chriskempson/tomorrow-theme + +## CSS + + * { + color: #cccccc; + background: #2d2d2d; + max-width: 700px; + } + + tt, pre { + background: #1d1f21; color: #b5bd68; font-family: monospace; + white-space: pre; + display: block; + width: 100%; + } + + .indentedcode { + margin-left: 2em; + margin-right: 2em; + } + + .codeblock { + background: #1d1f21; color: #b5bd68; font-family: monospace; + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); + padding: 7px; + } + + .indentedlist { + margin-left: 2em; + color: #cccccc; + background: #2d2d2d; + } + + span { white-space: pre; background: #1d1f21; } + .text { color: #c5c8c6; white-space: pre } + .colon { color: #cc6666; } + .note { color: #969896; } + .str { color: #f0c674; } + .num { color: #8abeb7; } + .fnum { color: #8abeb7; font-weight: bold; } + .ptr { color: #b294bb; font-weight: bold; } + .fetch { color: #b294bb; } + .store { color: #b294bb; } + .char { color: #81a2be; } + .inst { color: #de935f; } + .defer { color: #888888; } + .imm { color: #de935f; } + .prim { color: #b5bd68; font-weight: bold; } diff --git a/tools/html-chapters.retro b/tools/html-chapters.retro index 33a8998..0abd013 100755 --- a/tools/html-chapters.retro +++ b/tools/html-chapters.retro @@ -87,7 +87,7 @@ for me. ~~~ 'Out var -:import BOOK-BASE over OUT-BASE '>%s%s.html_retro_example/export-as-html.retro_%s%s s:format unix:system ; +:import BOOK-BASE over OUT-BASE '>%s%s.html_retro_example/export-as-xhtml.retro_%s%s s:format unix:system ; :/n ASCII:LF @Out file:write ; :add-to-book here [ @Out file:write ] s:for-each ; :process-files [ import $. c:put ] a:for-each nl ; diff --git a/vm/nga-c-native-x86/image.c b/vm/nga-c-native-x86/image.c index 635bf48..6cae615 100644 --- a/vm/nga-c-native-x86/image.c +++ b/vm/nga-c-native-x86/image.c @@ -2,24 +2,24 @@ #ifndef CELL #define CELL int32_t #endif -CELL ngaImageCells = 3159; -CELL ngaImage[] = { 1793,3128,3118,3158,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,10, +CELL ngaImageCells = 13833; +CELL ngaImage[] = { 1793,13744,13734,13832,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,10, 7,10,8,10,9,10,10,11,10,12,10,13,10,14,10,15,10,16,10,17, 10,18,10,19,10,20,10,21,10,22,10,23,10,24,10,25,10,68223234,1,2575, - 85000450,1,656912,355,337,268505089,63,62,135205121,63,10,101384453,0,9,10,2049,56,25,459011,74, + 85000450,1,656912,3211,3220,268505089,63,62,135205121,63,10,101384453,0,9,10,2049,56,25,459011,74, 524546,74,302256641,1,10,16974595,0,50529798,10,25,524547,93,50529798,10,17108738,1,251790353,101777669,1,17565186, 84,524545,88,64,167838467,-1,134287105,3,59,659457,3,459023,105,2049,56,25,2049,105,1793,112, 2049,112,117506307,0,105,0,524545,25,110,168820993,0,124,1642241,124,134283523,7,110,1793,105,7, 524545,2049,105,1793,105,16846593,124,139,138,1793,64,16846593,124,110,138,1793,64,7,10,659713, 1,659713,2,659713,3,1793,166,17108737,3,2,524559,105,2049,105,2049,105,2049,119,168820998,2, - 0,1025,167841793,179,5,17826049,0,179,2,15,25,524546,162,134287105,180,93,2305,181,459023,189, + 3196,1025,167841793,179,5,17826049,0,179,2,15,25,524546,162,134287105,180,93,2305,181,459023,189, 134287361,180,184,659201,179,2049,56,25,84152833,48,286458116,10,459014,204,184618754,45,25,16974851,-1,168886532, 1,134284289,1,213,134284289,0,204,660227,32,0,0,112,114,101,102,105,120,58,125,0, 285278479,230,7,2576,524546,79,1641217,1,167838467,227,2049,243,2049,239,524545,230,199,17826050,229,0, 2572,2563,2049,220,1793,131,459023,131,17760513,144,3,164,8,251727617,3,2,2049,158,16,168820993, -1,124,2049,199,2049,158,459023,131,285282049,3,2,134287105,124,278,524545,1793,105,16846593,3,0, 105,8,659201,3,524545,25,110,17043201,3,7,2049,110,2049,105,268505092,124,1642241,124,656131,659201, - 3,524545,7,110,2049,105,459009,19,110,459009,54,110,459009,15,110,459009,17,110,1793,5, + 3,524545,7,110,2049,105,459009,19,110,459009,54,110,459009,15,110,459009,17,110,1793,13800, 10,524546,158,134284303,160,1807,1025,0,0,1642241,229,285282049,345,1,459012,340,117509889,179,340,134287105, 345,199,16845825,0,355,337,1793,64,1793,369,17826050,345,249,8,117506305,346,358,64,2116,11340, 11700,11400,13685,13104,12432,12402,9603,9801,11514,11413,11110,12528,11948,10302,13340,9700,13455,12753,10500,10670, @@ -55,7 +55,474 @@ CELL ngaImage[] = { 1793,3128,3118,3158,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,1 115,105,111,110,0,973,414,144,105,0,984,105,144,100,0,989,408,144,114,0, 994,337,144,101,114,114,58,110,111,116,102,111,117,110,100,0,0,0,0,0, 0,0,0,0,0,0,125,125,0,45,104,111,111,107,0,111,117,110,100,0, - 100,0,72,0,83,0,45,45,45,45,0,70,79,85,78,68,0,0,0,0, + 100,0,72,0,83,0,45,45,45,45,0,70,79,85,78,68,0,125,126,0, + 72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,999,1543,144, + 69,79,77,0,1,-3,15,10,1536,1556,144,100,101,112,116,104,0,1,-1,15, + 10,1547,1570,144,100,58,108,97,115,116,0,1,2,15,10,1560,1587,144,100,58, + 108,97,115,116,46,120,116,0,2049,1570,2049,158,15,10,1574,1609,144,100,58,108, + 97,115,116,46,99,108,97,115,115,0,2049,1570,2049,160,15,10,1593,1630,144,100, + 58,108,97,115,116,46,110,97,109,101,0,2049,1570,2049,162,10,1615,1646,144,114, + 101,99,108,97,115,115,0,2049,1570,2049,160,16,10,1635,1665,144,105,109,109,101, + 100,105,97,116,101,0,1,156,2049,1646,10,1652,1678,144,100,97,116,97,0,1, + 131,2049,1646,10,1670,1696,144,112,114,105,109,105,116,105,118,101,0,1,150,2049, + 1646,10,1683,1706,156,40,0,10,1701,1712,156,41,0,10,1707,1728,144,99,111,109, + 112,105,108,101,58,108,105,116,0,1,1,2049,105,2049,105,10,1713,1751,144,99, + 111,109,112,105,108,101,58,106,117,109,112,0,1,1793,2049,105,2049,105,10,1735, + 1774,144,99,111,109,112,105,108,101,58,99,97,108,108,0,1,2049,2049,105,2049, + 105,10,1758,1796,144,99,111,109,112,105,108,101,58,114,101,116,0,1,10,2049, + 105,10,1781,1815,144,99,111,109,112,105,108,105,110,103,63,0,1,124,15,10, + 1801,1831,156,112,114,101,102,105,120,58,96,0,2049,220,2049,105,10,1819,1848,156, + 112,114,101,102,105,120,58,92,0,2049,414,10,1836,1863,156,112,114,101,102,105, + 120,58,94,0,2049,408,10,1851,1874,144,104,101,114,101,0,1,3,15,10,1866, + 1890,156,112,114,101,102,105,120,58,64,0,2049,199,2049,158,15,2049,1815,1793,1906, + 1,3841,2049,105,2049,105,10,1,1899,1793,1912,15,10,1,1910,2049,64,10,1878,1929, + 156,112,114,101,102,105,120,58,33,0,2049,199,2049,158,15,2049,1815,1793,1945,1, + 4097,2049,105,2049,105,10,1,1938,1793,1951,16,10,1,1949,2049,64,10,1917,1968,144, + 100,58,99,114,101,97,116,101,0,1,131,1,0,2049,164,2049,1874,2049,1570,2049, + 158,16,10,1956,1991,144,118,97,114,45,110,0,2049,1968,2049,105,10,1982,2003,144, + 118,97,114,0,134284289,0,1991,10,1996,2016,144,99,111,110,115,116,0,2049,1968,2049, + 1570,2049,158,16,10,2007,2032,150,116,117,99,107,0,100926722,10,2024,2042,150,111,118, + 101,114,0,67502597,10,2034,2051,150,110,105,112,0,772,10,2044,2066,150,100,114,111, + 112,45,112,97,105,114,0,771,10,2053,2076,150,63,100,117,112,0,6402,10,2068, + 2090,144,100,117,112,45,112,97,105,114,0,67502597,67502597,10,2078,2100,144,100,105,112, + 0,525572,6,10,2093,2110,144,115,105,112,0,67502597,1,21,2049,2100,10,2103,2122,144, + 98,105,0,1,2110,2049,2100,8,10,2116,2135,144,98,105,42,0,1,2100,2049,2100, + 8,10,2128,2148,144,98,105,64,0,2,2049,2135,10,2141,2159,144,116,114,105,0, + 1793,2168,1,2110,2049,2100,2049,2110,10,1,2161,2049,2100,8,10,2152,2182,144,116,114, + 105,42,0,1793,2199,1793,2192,4,1,2100,2049,2100,10,1,2186,2049,2100,2049,2100,10, + 1,2184,2049,2100,8,10,2174,2213,144,116,114,105,64,0,2,2,2049,2182,10,2205, + 2227,144,119,104,105,108,101,0,1793,2236,525570,1639430,3,1,2229,7,10,1,2229,8, + 3,10,2218,2250,144,117,110,116,105,108,0,1793,2261,525570,385942534,-1,25,3,1,2252, + 7,10,1,2252,8,3,10,2241,2275,144,116,105,109,101,115,0,1793,2287,4,25, + 33886721,1,2053,1542,1,2278,7,10,1,2277,8,3,10,2266,2304,156,112,114,101,102, + 105,120,58,124,0,2049,199,1793,2312,2049,158,15,10,1,2308,1793,2320,2049,160,15, + 10,1,2316,2049,2122,2049,1815,1793,2335,1,131,2049,2100,2049,1774,10,1,2328,1,21, + 2049,64,10,2292,2350,144,84,82,85,69,0,1,-1,10,2342,2362,144,70,65,76, + 83,69,0,1,0,10,2353,2373,144,99,97,115,101,0,1793,2378,67502597,11,10,1, + 2375,2049,2100,4,1793,2390,772,8,2049,2350,10,1,2385,1793,2398,3,2049,2362,10,1, + 2394,2049,64,25,6,3,3,10,2365,2417,144,115,58,99,97,115,101,0,1793,2423, + 67502597,2049,93,10,1,2419,2049,2100,4,1793,2435,772,8,2049,2350,10,1,2430,1793,2443, + 3,2049,2362,10,1,2439,2049,64,25,6,3,3,10,2407,2459,144,110,111,116,0, + 1,-1,23,10,2452,2472,144,108,116,101,113,63,0,2049,2090,101516555,22,10,2463,2486, + 144,103,116,101,113,63,0,4,2049,2472,10,2477,2499,144,110,58,77,65,88,0, + 1,-5,15,10,2490,2512,144,110,58,77,73,78,0,1,-4,15,10,2503,2527,144, + 110,58,122,101,114,111,63,0,1,0,11,10,2516,2543,144,110,58,45,122,101, + 114,111,63,0,1,0,12,10,2531,2562,144,110,58,110,101,103,97,116,105,118, + 101,63,0,1,0,13,10,2547,2581,144,110,58,112,111,115,105,116,105,118,101, + 63,0,1,-1,14,10,2566,2609,144,110,58,115,116,114,105,99,116,108,121,45, + 112,111,115,105,116,105,118,101,63,0,1,0,14,10,2585,2624,144,110,58,101, + 118,101,110,63,0,1,2,20,3,2049,2527,10,2613,2641,144,110,58,111,100,100, + 63,0,2049,2624,2049,2459,10,2631,2653,144,105,102,59,0,67502597,1,72,2049,2100,25, + 6,771,10,2646,2670,144,45,105,102,59,0,67502597,1,70,2049,2100,2049,2459,25,6, + 771,10,2662,2688,150,114,111,116,0,67503109,10,2681,2695,150,47,0,197652,10,2690,2704, + 150,109,111,100,0,788,10,2697,2715,144,110,58,112,111,119,0,1,1,4,1793, + 2723,67502597,19,10,1,2720,2049,2275,772,10,2706,2741,144,110,58,110,101,103,97,116, + 101,0,1,-1,19,10,2729,2757,144,110,58,115,113,117,97,114,101,0,4866,10, + 2745,2769,144,110,58,115,113,114,116,0,1,1,1793,2787,2049,2090,197652,67502597,18,1, + 2,197652,25,17,1,2773,7,10,1,2773,8,772,10,2759,2801,144,110,58,109,105, + 110,0,2049,2090,13,1793,2808,3,10,1,2806,1793,2814,772,10,1,2812,2049,64,10, + 2792,2828,144,110,58,109,97,120,0,2049,2090,14,1793,2835,3,10,1,2833,1793,2841, + 772,10,1,2839,2049,64,10,2819,2855,144,110,58,97,98,115,0,2,2049,2562,1, + 2741,9,10,2846,2873,144,110,58,108,105,109,105,116,0,4,5,2049,2801,6,2049, + 2828,10,2862,2890,144,110,58,105,110,99,0,1,1,17,10,2881,2903,144,110,58, + 100,101,99,0,1,1,18,10,2894,2921,144,110,58,98,101,116,119,101,101,110, + 63,0,67503109,1793,2929,67503109,67503109,2049,2873,10,1,2924,2049,2110,11,10,2907,2947,144,118, + 58,105,110,99,45,98,121,0,1793,2951,4367,10,1,2949,2049,2110,16,10,2935,2969, + 144,118,58,100,101,99,45,98,121,0,1793,2973,1180687,10,1,2971,2049,2110,16,10, + 2957,2988,144,118,58,105,110,99,0,1,1,4,2049,2947,10,2979,3003,144,118,58, + 100,101,99,0,1,1,4,2049,2969,10,2994,3020,144,118,58,108,105,109,105,116, + 0,251790597,1542,2049,2873,4100,10,3009,3034,144,118,58,111,110,0,2049,2350,4100,10,3026, + 3047,144,118,58,111,102,102,0,2049,2362,4100,10,3038,3060,144,97,108,108,111,116, + 0,1,3,2049,2947,10,3051,3079,144,118,58,112,114,101,115,101,114,118,101,0, + 983556,1793,3087,1,21,2049,2100,10,1,3082,2049,2100,4100,10,3065,3105,144,118,58,117, + 112,100,97,116,101,0,4,1793,3112,15,4,8,10,1,3108,2049,2110,16,10,3093, + 3126,144,99,111,112,121,0,1793,3135,285278725,1,33951492,268767489,1,6,10,1,3128,2049,2275, + 771,10,3118,3154,144,83,99,111,112,101,76,105,115,116,0,13470,13569,10,3141,3163, + 144,123,123,0,2049,1570,2,1,3154,2049,59,16,10,3157,3188,144,45,45,45,114, + 101,118,101,97,108,45,45,45,0,2049,1570,1,3154,2049,2890,16,10,3172,3202,144, + 125,125,0,1,3154,2049,56,4,15,11,1793,3216,3841,3154,4097,2,10,1,3211,1793, + 3242,3841,3154,1793,3237,1,2,983567,1,3154,2049,2890,1641487,3,1,3226,7,10,1,3224, + 8,16,10,1,3220,2049,64,10,3196,3256,131,83,116,97,114,116,0,0,10,3247, + 3265,131,69,110,100,0,0,10,3258,3280,144,116,101,114,109,105,110,97,116,101, + 0,1,0,3841,3265,16,10,3196,3302,144,98,117,102,102,101,114,58,115,116,97, + 114,116,0,3841,3256,10,3286,3319,144,98,117,102,102,101,114,58,101,110,100,0, + 3841,3265,10,3305,3336,144,98,117,102,102,101,114,58,97,100,100,0,3841,3265,16, + 1,3265,2049,2988,2049,3280,10,3322,3360,144,98,117,102,102,101,114,58,103,101,116, + 0,1,3265,2049,3003,3841,3265,15,2049,3280,10,3346,3386,144,98,117,102,102,101,114, + 58,101,109,112,116,121,0,3841,3256,4097,3265,2049,3280,10,3370,3408,144,98,117,102, + 102,101,114,58,115,105,122,101,0,3841,3265,3841,3256,18,10,3393,3428,144,98,117, + 102,102,101,114,58,115,101,116,0,4097,3256,2049,3386,10,3414,3452,144,98,117,102, + 102,101,114,58,112,114,101,115,101,114,118,101,0,3841,3256,3841,3265,1793,3465,1, + 21,2049,2100,4097,3256,10,1,3458,2049,2100,4097,3265,10,3433,3487,131,84,101,109,112, + 83,116,114,105,110,103,115,0,32,3472,3505,131,84,101,109,112,83,116,114,105, + 110,103,77,97,120,0,512,3488,3517,144,83,84,82,73,78,71,83,0,2049,1543, + 3841,3487,3841,3505,19,18,10,3506,3537,131,67,117,114,114,101,110,116,0,4,10, + 3526,3552,144,115,58,112,111,105,110,116,101,114,0,3841,3537,3841,3505,19,2049,3517, + 17,10,3539,3571,144,115,58,110,101,120,116,0,1,3537,2049,2988,3841,3537,3841,3487, + 11,1793,3587,1,0,4097,3537,10,1,3582,9,10,3506,3601,144,115,58,116,101,109, + 112,0,2,2049,79,2049,2890,2049,3552,4,2049,3126,2049,3552,2049,3571,10,3591,3627,144, + 115,58,101,109,112,116,121,0,2049,3552,2049,3571,1,0,67502597,16,10,3616,3646,144, + 115,58,115,107,105,112,0,6,1793,3654,68223234,1,786703,0,10,1,3649,2049,2227,2049, + 2903,5,10,3636,3672,144,115,58,107,101,101,112,0,2049,1815,1793,3681,1,3646,2049, + 1774,10,1,3676,9,2049,1874,1,119,2049,2100,2049,131,10,3662,3705,156,112,114,101, + 102,105,120,58,39,0,2049,1815,1,3672,1,3601,2049,64,10,3693,3724,144,115,58, + 99,104,111,112,0,2049,3601,2,2049,79,67502597,17,2049,2903,1,0,4,16,10,3714, + 3751,144,115,58,114,101,118,101,114,115,101,0,1793,3793,2,2049,3601,2049,3428,1, + 79,1793,3769,2,2049,79,17,2049,2903,10,1,3762,2049,2122,4,1793,3783,2,15,2049, + 3336,2049,2903,10,1,3776,2049,2275,3,2049,3302,2049,3601,10,1,3753,2049,3452,10,3738, + 3811,144,115,58,112,114,101,112,101,110,100,0,2049,3601,1793,3835,2,2049,79,17, + 1793,3827,2,2049,79,2049,2890,10,1,3821,2049,2100,4,2049,3126,10,1,3815,2049,2110, + 10,3798,3852,144,115,58,97,112,112,101,110,100,0,4,2049,3811,10,3840,3870,144, + 115,58,102,111,114,45,101,97,99,104,0,1793,3885,67502597,6415,3,67502597,67502597,251987205,2054, + 101777670,1,1,3872,7,10,1,3872,8,771,10,3856,3904,144,115,58,105,110,100,101, + 120,45,111,102,0,4,1793,3918,68223234,1,6415,33883396,101450758,6404,3,1,3907,7,10,1, + 3907,1793,3927,18,2049,2903,772,10,1,3922,1793,3936,2049,79,67502597,11,10,1,3931,2049, + 2159,1793,3946,3,1,-1,10,1,3942,9,10,3890,3970,144,115,58,99,111,110,116, + 97,105,110,115,45,99,104,97,114,63,0,2049,3904,1,-1,12,10,3950,3986,144, + 115,58,104,97,115,104,0,1,5381,4,1793,3994,286458116,33,10,1,3991,2049,3870,10, + 3976,4006,131,83,114,99,0,0,3999,4014,131,84,97,114,0,0,4007,4022,131,80, + 97,100,0,0,4015,4028,131,73,0,0,4023,4034,131,70,0,0,4029,4041,131,65, + 116,0,0,4035,4055,144,116,101,114,109,105,110,97,116,101,0,1,0,3841,4022, + 3841,4014,2049,79,17,16,10,4042,4077,144,101,120,116,114,97,99,116,0,3841,4006, + 3841,4028,17,3841,4022,3841,4014,2049,79,2049,3126,10,4066,4102,144,99,111,109,112,97, + 114,101,0,3841,4022,3841,4014,2049,93,3841,4034,22,4097,4034,3841,4034,1793,4122,3841,4028, + 4097,4041,10,1,4117,2049,70,10,4091,4135,144,110,101,120,116,0,1,4028,2049,2988, + 10,3976,4162,144,115,58,99,111,110,116,97,105,110,115,45,115,116,114,105,110, + 103,63,0,4097,4014,4097,4006,2049,3627,4097,4022,1,0,4097,4028,1,0,4097,4034,3841, + 4006,2049,79,1793,4193,2049,4077,2049,4055,2049,4102,2049,4135,10,1,4184,2049,2275,3841,4034, + 10,4140,4207,131,83,116,114,0,0,4200,4219,144,101,120,116,114,97,99,116,0, + 2049,2090,3841,4207,4,2049,3126,3841,-1,67502597,17,1,0,4,16,10,4208,4244,144,99, + 104,101,99,107,0,1,4219,2049,2100,1793,4255,1,2890,2049,2100,10,1,4250,2049,2100, + 3841,4207,2049,3986,67502597,11,10,4235,4278,144,108,111,99,97,116,105,111,110,0,67503109, + 67503109,1793,4311,1793,4306,4,1793,4292,67502597,2049,2527,21,10,1,4287,2049,2100,4,1793,4302, + 772,2,10,1,4299,9,10,1,4284,2049,2100,10,1,4282,2049,2100,10,4266,4325,144, + 115,101,116,117,112,0,2049,3627,4097,4207,1,0,67503109,67503109,1,79,1,3986,2049,2122, + 2049,3627,2049,3428,1793,4349,67502597,2049,79,10,1,4345,2049,2100,4,10,4140,4376,144,115, + 58,105,110,100,101,120,45,111,102,45,115,116,114,105,110,103,0,67502597,1793,4402, + 1793,4395,2049,4325,1793,4390,2049,4244,2049,4278,10,1,4385,2049,2275,10,1,4381,2049,3452, + 771,3,10,1,4379,2049,2100,18,1,2,18,1,-1,2049,2828,10,4355,4427,144,115, + 58,102,105,108,116,101,114,0,1793,4455,2049,3627,2049,3428,4,1793,4447,2049,2090,4, + 8,1,3336,1,11,2049,64,10,1,4436,2049,3870,3,2049,3302,10,1,4429,2049,3452, + 10,4415,4469,144,115,58,109,97,112,0,1793,4491,2049,3627,2049,3428,4,1793,4483,67502597, + 8,2049,3336,10,1,4478,2049,3870,3,2049,3302,10,1,4471,2049,3452,10,4460,4508,144, + 115,58,115,117,98,115,116,114,0,1793,4514,17,2049,3627,10,1,4510,2049,2100,1793, + 4526,67502597,1,3126,2049,2100,10,1,4520,2049,2110,67502597,1793,4539,17,1,0,4,16,10, + 1,4533,2049,2100,10,4496,4555,144,115,58,114,105,103,104,116,0,67502597,2049,79,67502597, + 18,4,2049,4508,10,4544,4574,144,115,58,108,101,102,116,0,1,0,4,2049,4508, + 10,4564,4598,144,115,58,98,101,103,105,110,115,45,119,105,116,104,63,0,2, + 2049,79,1,13,2049,2100,2049,4574,2049,93,10,4580,4626,144,115,58,101,110,100,115, + 45,119,105,116,104,63,0,2,2049,79,1,13,2049,2100,2049,4555,2049,93,10,4610, + 4648,144,115,58,99,111,112,121,0,67502597,2049,79,2049,2890,2049,3126,10,4638,4668,144, + 115,58,68,73,71,73,84,83,0,2049,3646,48,49,50,51,52,53,54,55,56, + 57,0,1,4670,10,4656,4705,144,115,58,65,83,67,73,73,45,76,79,87,69, + 82,67,65,83,69,0,2049,3646,97,98,99,100,101,102,103,104,105,106,107,108, + 109,110,111,112,113,114,115,116,117,118,119,120,121,122,0,1,4707,10,4684,4758, + 144,115,58,65,83,67,73,73,45,85,80,80,69,82,67,65,83,69,0,2049, + 3646,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83, + 84,85,86,87,88,89,90,0,1,4760,10,4737,4809,144,115,58,65,83,67,73, + 73,45,76,69,84,84,69,82,83,0,2049,3646,97,98,99,100,101,102,103,104, + 105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,65,66, + 67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86, + 87,88,89,90,0,1,4811,10,4790,4884,144,115,58,80,85,78,67,84,85,65, + 84,73,79,78,0,2049,3646,95,33,34,35,36,37,38,39,40,41,42,43,44, + 45,46,47,58,59,60,61,62,63,64,91,92,93,94,96,123,124,125,126,0, + 1,4886,1,95,67502597,16,10,4867,4942,131,115,58,87,72,73,84,69,83,80,65, + 67,69,0,32,9,10,13,0,4926,4952,156,39,0,1,3627,2049,144,10,4947,4962, + 156,36,0,1,0,2049,131,10,4957,0,131,65,83,67,73,73,58,78,85,76, + 0,4967,27,131,65,83,67,73,73,58,69,83,67,0,4980,8,131,65,83,67, + 73,73,58,66,83,0,4993,9,131,65,83,67,73,73,58,72,84,0,5005,10, + 131,65,83,67,73,73,58,76,70,0,5017,11,131,65,83,67,73,73,58,86, + 84,0,5029,12,131,65,83,67,73,73,58,70,70,0,5041,13,131,65,83,67, + 73,73,58,67,82,0,5053,32,131,65,83,67,73,73,58,83,80,65,67,69, + 0,5065,127,131,65,83,67,73,73,58,68,69,76,0,5080,1,131,65,83,67, + 73,73,58,83,79,72,0,5093,2,131,65,83,67,73,73,58,83,84,88,0, + 5106,3,131,65,83,67,73,73,58,69,84,88,0,5119,4,131,65,83,67,73, + 73,58,69,79,84,0,5132,5,131,65,83,67,73,73,58,69,78,81,0,5145, + 6,131,65,83,67,73,73,58,65,67,75,0,5158,7,131,65,83,67,73,73, + 58,66,69,76,0,5171,14,131,65,83,67,73,73,58,83,79,0,5184,15,131, + 65,83,67,73,73,58,83,73,0,5196,16,131,65,83,67,73,73,58,68,76, + 69,0,5208,17,131,65,83,67,73,73,58,68,67,49,0,5221,18,131,65,83, + 67,73,73,58,68,67,50,0,5234,19,131,65,83,67,73,73,58,68,67,51, + 0,5247,20,131,65,83,67,73,73,58,68,67,52,0,5260,21,131,65,83,67, + 73,73,58,78,65,75,0,5273,22,131,65,83,67,73,73,58,83,89,78,0, + 5286,23,131,65,83,67,73,73,58,69,84,66,0,5299,24,131,65,83,67,73, + 73,58,67,65,78,0,5312,25,131,65,83,67,73,73,58,69,77,0,5325,26, + 131,65,83,67,73,73,58,83,85,66,0,5337,28,131,65,83,67,73,73,58, + 70,83,0,5350,29,131,65,83,67,73,73,58,71,83,0,5362,30,131,65,83, + 67,73,73,58,82,83,0,5374,31,131,65,83,67,73,73,58,85,83,0,5386, + 5414,144,99,58,108,111,119,101,114,99,97,115,101,63,0,1,97,1,122,2049, + 2921,10,5398,5437,144,99,58,117,112,112,101,114,99,97,115,101,63,0,1,65, + 1,90,2049,2921,10,5421,5457,144,99,58,108,101,116,116,101,114,63,0,1,5414, + 1,5437,2049,2122,22,10,5444,5477,144,99,58,100,105,103,105,116,63,0,1,48, + 1,57,2049,2921,10,5465,5498,144,99,58,118,105,115,105,98,108,101,63,0,1, + 32,1,126,2049,2921,10,5484,5517,144,99,58,118,111,119,101,108,63,0,2049,3646, + 97,101,105,111,117,65,69,73,79,85,0,1,5519,4,2049,3970,10,5505,5552,144, + 99,58,99,111,110,115,111,110,97,110,116,63,0,2,2049,5457,1793,5562,2049,5517, + 2049,2459,10,1,5557,1793,5570,3,2049,2362,10,1,5566,2049,64,10,5536,5592,144,99, + 58,119,104,105,116,101,115,112,97,99,101,63,0,1,4942,4,2049,3970,10,5575, + 5615,144,99,58,45,108,111,119,101,114,99,97,115,101,63,0,2049,5414,2049,2459, + 10,5598,5637,144,99,58,45,117,112,112,101,114,99,97,115,101,63,0,2049,5437, + 2049,2459,10,5620,5655,144,99,58,45,100,105,103,105,116,63,0,2049,5477,2049,2459, + 10,5642,5678,144,99,58,45,119,104,105,116,101,115,112,97,99,101,63,0,2049, + 5592,2049,2459,10,5660,5698,144,99,58,45,118,105,115,105,98,108,101,63,0,2049, + 5498,2049,2459,10,5683,5716,144,99,58,45,118,111,119,101,108,63,0,2049,5517,2049, + 2459,10,5703,5738,144,99,58,45,99,111,110,115,111,110,97,110,116,63,0,2049, + 5552,2049,2459,10,5721,5757,144,99,58,116,111,45,117,112,112,101,114,0,2,2049, + 5414,25,3,1,32,18,10,5743,5780,144,99,58,116,111,45,108,111,119,101,114, + 0,2,2049,5437,25,3,1,32,17,10,5766,5804,144,99,58,116,111,45,115,116, + 114,105,110,103,0,2049,3646,46,0,1,5806,2049,3601,1,36,2049,2110,10,5789,5834, + 144,99,58,116,111,103,103,108,101,45,99,97,115,101,0,2,2049,5414,1,5757, + 1,5780,2049,64,10,5817,5859,144,99,58,116,111,45,110,117,109,98,101,114,0, + 2,2049,5477,1793,5868,1,48,18,10,1,5864,1793,5876,3,1,0,10,1,5872,2049, + 64,10,5844,5895,144,115,58,116,111,45,117,112,112,101,114,0,1,5757,2049,4469, + 10,5881,5914,144,115,58,116,111,45,108,111,119,101,114,0,1,5780,2049,4469,10, + 5900,5934,144,115,58,116,114,105,109,45,108,101,102,116,0,2049,3601,1793,5948,2049, + 56,1,5592,1,2543,2049,2122,21,10,1,5938,2049,2227,2049,2903,10,5919,5971,144,115, + 58,116,114,105,109,45,114,105,103,104,116,0,2049,3601,2049,3751,2049,5934,2049,3751, + 10,5955,5990,144,115,58,116,114,105,109,0,2049,5971,2049,5934,10,5980,6006,144,99, + 111,114,114,101,99,116,0,2,1,48,13,1793,6021,1,48,67502597,18,1,2,19, + 17,10,1,6012,9,10,5980,6040,144,110,58,116,111,45,115,116,114,105,110,103, + 0,1793,6088,2049,1874,2049,3428,2,2049,2855,1793,6066,1,10,20,4,1,48,17,2049, + 6006,2049,3336,2,2049,2543,10,1,6051,2049,2227,3,2049,2562,1793,6080,1,45,2049,3336, + 10,1,6075,9,2049,3302,2049,3751,10,1,6042,2049,3452,10,6025,6115,131,82,101,119, + 114,105,116,101,85,110,100,101,114,115,99,111,114,101,115,0,-1,6093,6123,144, + 115,117,98,0,1,95,1793,6130,1,32,10,1,6127,2049,2373,10,6116,6146,144,114, + 101,119,114,105,116,101,0,3841,6115,1793,6155,1,6123,2049,4469,10,1,6150,9,10, + 6135,6169,144,104,97,110,100,108,101,0,1,3705,8,10,6093,6185,156,112,114,101, + 102,105,120,58,39,0,2049,6146,2049,6169,10,6173,6201,144,115,58,115,112,108,105, + 116,0,2049,2090,2049,3904,772,2049,2090,2049,4574,1,38,2049,2100,10,6190,6236,144,115, + 58,115,112,108,105,116,45,111,110,45,115,116,114,105,110,103,0,2049,2090,2049, + 4376,2049,2890,772,2049,2090,2049,4574,1,38,2049,2100,10,6215,6265,144,115,58,114,101, + 112,108,97,99,101,0,67502597,2049,79,2049,1874,16,1793,6281,2049,6236,4,2049,1874,15, + 17,10,1,6273,2049,2100,2049,3811,2049,3852,10,6252,6302,131,83,112,108,105,116,45, + 79,110,0,0,6290,6313,144,109,97,116,99,104,63,0,3841,6302,11,10,6303,6330, + 144,116,101,114,109,105,110,97,116,101,0,1,0,67502597,2049,2903,16,10,6317,6345, + 144,115,116,101,112,0,1,2890,2049,2100,2049,6313,1793,6359,2,2049,105,2049,6330,10, + 1,6353,9,10,6252,6377,144,115,58,116,111,107,101,110,105,122,101,0,4097,6302, + 2049,3672,2049,1874,1,0,2049,105,1793,6399,2,2049,105,2,1,6345,2049,3870,3,10, + 1,6389,2049,2100,2049,1874,67502597,18,2049,2903,67502597,16,10,6363,6422,131,78,101,101,100, + 108,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,6412,6557,131,76,101,110,0,0,6550, + 6568,131,84,111,107,101,110,115,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6558,6702,131, + 84,80,0,0,6696,6711,144,115,97,118,101,0,2049,3672,3841,6702,1,6568,17,2049, + 2890,16,1,6702,2049,2988,10,6703,6734,144,110,101,120,116,0,1793,6740,3841,6557,17, + 10,1,6736,2049,2110,10,6726,6754,144,100,111,110,101,63,0,2049,79,2049,2527,10, + 6363,6783,144,115,58,116,111,107,101,110,105,122,101,45,111,110,45,115,116,114, + 105,110,103,0,1,0,4097,6702,1793,6797,2,1,6422,2049,4648,2049,3852,10,1,6789, + 1793,6806,2049,79,4097,6557,10,1,6801,2049,2122,1793,6823,1,6422,2049,6236,2049,6711,2049, + 6734,2049,6754,10,1,6812,2049,2250,1,6568,3841,6702,2049,2903,4097,6568,10,6759,6848,144, + 102,111,114,45,101,97,99,104,0,4,2049,56,1,13,2049,2100,1793,6864,5,2049, + 56,84018692,525572,1542,10,1,6857,2049,2275,771,10,6836,6884,144,115,117,98,115,116,105, + 116,117,116,101,0,2049,3517,1,129,18,10,6870,6901,144,101,120,116,114,97,99, + 116,0,2049,6884,2049,4648,10,6890,6918,144,116,111,107,101,110,105,122,101,0,2049, + 6783,2049,3627,10,6906,6934,144,99,111,109,98,105,110,101,0,2049,6884,2049,3852,2049, + 3852,10,6923,6950,144,109,101,114,103,101,0,4,1,6934,2049,6848,772,10,6941,6969, + 144,102,105,110,100,45,101,110,100,0,2,2049,79,2049,6884,2049,79,18,67502597,17, + 10,6957,6989,144,99,108,101,97,110,0,2049,6969,1,0,4,16,10,6759,7013,144, + 115,58,114,101,112,108,97,99,101,45,97,108,108,0,1,3,1793,7028,2049,6901, + 2049,6918,2049,6950,2049,6989,2049,3601,10,1,7017,2049,3079,10,6996,7041,144,99,104,97, + 114,0,1,32,1793,7050,1,95,2049,3336,10,1,7045,2049,2373,1,114,1793,7063,1, + 13,2049,3336,10,1,7058,2049,2373,1,110,1793,7076,1,10,2049,3336,10,1,7071,2049, + 2373,1,116,1793,7089,1,9,2049,3336,10,1,7084,2049,2373,1,48,1793,7102,1,0, + 2049,3336,10,1,7097,2049,2373,2049,3336,10,7033,7117,144,116,121,112,101,0,1,99, + 1793,7125,4,2049,3336,10,1,7121,2049,2373,1,115,1793,7139,4,1,3336,2049,3870,10, + 1,7133,2049,2373,1,110,1793,7155,4,2049,6040,1,3336,2049,3870,10,1,7147,2049,2373, + 3,10,7109,7171,144,104,97,110,100,108,101,0,1,92,1793,7180,2049,56,2049,7041, + 10,1,7175,2049,2373,1,37,1793,7193,2049,56,2049,7117,10,1,7188,2049,2373,2049,3336, + 10,6996,7212,144,115,58,102,111,114,109,97,116,0,1793,7241,2049,3627,1793,7236,2049, + 3428,1793,7231,2049,56,25,2049,7171,1,7222,7,10,1,7222,8,3,10,1,7218,2049, + 2110,10,1,7214,2049,3452,10,7200,7257,144,115,58,99,111,110,115,116,0,1,3672, + 2049,2100,2049,2016,10,7246,7274,131,86,97,108,117,101,115,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,7264,7310,144,102,114,111,109,0,2049,79,2,1793,7328,1793,7321,1,7274, + 4113,10,1,7317,2049,2110,2049,2903,10,1,7315,2049,2275,3,10,7302,7340,144,116,111, + 0,2,2049,79,1793,7356,2049,56,1,97,18,2049,2890,1,7274,266001,10,1,7345,2049, + 2275,3,10,7246,7373,144,114,101,111,114,100,101,114,0,1,7310,2049,2100,2049,7340, + 10,7362,7389,144,99,117,114,114,121,0,2049,1874,1793,7399,4,2049,1728,2049,1751,10, + 1,7393,2049,2100,10,7380,7412,144,100,111,101,115,0,2049,1587,4,2049,7389,2049,1570, + 2049,158,16,1,144,2049,1646,10,7404,7441,144,100,58,102,111,114,45,101,97,99, + 104,0,1,2,1793,7467,6415,2049,2090,1793,7459,1793,7454,2052,10,1,7452,2049,2100,10, + 1,7450,2049,2100,1,7445,7,10,1,7445,8,3,10,7427,7487,144,100,58,108,111, + 111,107,117,112,45,120,116,0,1,0,4,1793,7512,2049,2090,2049,158,2831,1793,7505, + 4,1,2051,2049,2100,10,1,7499,1,11,2049,64,10,1,7492,2049,7441,3,10,7472, + 7530,144,97,58,108,101,110,103,116,104,0,15,10,7518,7553,144,97,58,99,111, + 117,110,116,101,100,45,114,101,115,117,108,116,115,0,8,2049,1874,1793,7566,2, + 2049,105,1,105,2049,2275,10,1,7558,2049,2100,10,7532,7588,144,97,58,102,114,111, + 109,45,115,116,114,105,110,103,0,2049,1874,1793,7602,2,2049,79,2049,105,1,105, + 2049,3870,10,1,7592,2049,2100,10,7571,7621,144,97,58,102,111,114,45,101,97,99, + 104,0,4,2049,56,1,13,2049,2100,1793,7637,5,2049,56,84018692,525572,1542,10,1,7630, + 2049,2275,771,10,7607,7652,144,97,58,100,117,112,0,2049,1874,1793,7665,2,15,2049, + 105,1,105,2049,7621,10,1,7656,2049,2100,10,7643,7680,144,97,58,99,111,112,121, + 0,1,3,1793,7696,4097,3,2,2049,7530,2049,105,1,105,2049,7621,10,1,7684,2049, + 3079,10,7670,7716,144,97,58,116,111,45,115,116,114,105,110,103,0,1,3,1793, + 7729,2049,7652,1,0,2049,105,2049,2890,10,1,7720,2049,3079,2049,3601,10,7701,7748,144, + 97,58,97,112,112,101,110,100,0,2049,2090,1,34,2049,2148,17,2049,1874,1793,7773, + 2049,105,1793,7768,1,105,2049,7621,10,1,7763,2049,2148,10,1,7759,2049,2100,10,7736, + 7791,144,97,58,112,114,101,112,101,110,100,0,4,2049,7748,10,7778,7805,144,97, + 58,99,104,111,112,0,2049,7652,1,-1,2049,3060,2,2049,3003,10,7795,7827,144,97, + 58,102,105,108,116,101,114,0,1793,7842,67502597,1,21,2049,2100,4,1,105,1,11, + 2049,64,10,1,7829,2049,7389,2049,1874,1793,7857,67502597,15,2049,105,2049,7621,10,1,7850, + 2049,2100,2049,1874,67502597,18,2049,2903,67502597,16,10,7815,7885,144,97,58,99,111,110,116, + 97,105,110,115,63,0,1,0,4,1793,7897,4,5,67502597,11,6,22,10,1,7890, + 2049,7621,772,10,7870,7925,144,97,58,99,111,110,116,97,105,110,115,45,115,116, + 114,105,110,103,63,0,1,0,4,1793,7938,4,5,67502597,2049,93,6,22,10,1, + 7930,2049,7621,772,10,7903,7953,144,97,58,109,97,112,0,1793,7959,8,2049,105,10, + 1,7955,2049,7389,2049,1874,1793,7974,67502597,15,2049,105,2049,7621,10,1,7967,2049,2100,10, + 7944,7992,144,97,58,114,101,118,101,114,115,101,0,2049,1874,1793,8026,2049,56,1793, + 8004,17,2049,2903,10,1,8000,2049,2110,2,2049,105,1793,8020,2,15,2049,105,2049,2903, + 10,1,8013,2049,2275,3,10,1,7996,2049,2100,10,7979,8039,144,97,58,116,104,0, + 17,2049,2890,10,8031,8054,144,97,58,102,101,116,99,104,0,2049,8039,15,10,8043, + 8069,144,97,58,115,116,111,114,101,0,2049,8039,16,10,8058,8085,144,97,58,114, + 101,100,117,99,101,0,1,13,2049,2100,2049,7621,10,8073,8104,144,105,100,101,110, + 116,105,102,121,0,1,-1,4,1,0,1793,8135,2049,2350,11,1793,8129,67502597,1,-1, + 11,1793,8125,772,2,10,1,8122,9,10,1,8116,9,2049,2890,10,1,8111,2049,8085, + 3,10,8073,8155,144,97,58,105,110,100,101,120,45,111,102,0,1,3,1793,8168, + 1,26,2049,7389,2049,7953,2049,8104,10,1,8159,2049,3079,10,8141,8194,144,97,58,105, + 110,100,101,120,45,111,102,45,115,116,114,105,110,103,0,1,3,1793,8207,1, + 93,2049,7389,2049,7953,2049,8104,10,1,8198,2049,3079,10,8173,8222,144,97,58,109,97, + 107,101,0,2049,7553,2,2,1,3,1793,8233,2049,7992,10,1,8230,2049,3079,4,2049, + 7680,10,8212,8246,156,123,0,1,287,2049,156,1,1556,2049,144,1,287,2049,156,10, + 8241,8264,156,125,0,1,303,2049,156,1,2100,2049,144,1,1556,2049,144,1,13,2049, + 150,1,40,2049,150,1,2903,2049,144,1,303,2049,156,1,8222,2049,144,10,8259,8308, + 144,98,111,117,110,100,115,63,0,67502597,2049,7530,67502597,13,10,8297,8322,144,99,111, + 112,121,0,2049,56,2049,105,10,8314,8337,144,116,111,45,101,110,100,0,2,2049, + 7530,17,2049,2890,10,8259,8354,144,97,58,108,101,102,116,0,2049,8308,1793,8362,771, + 1,-1,10,1,8358,2049,2653,2049,1874,67502597,2049,105,1793,8383,1,2890,2049,2100,1,8322, + 2049,2275,3,10,1,8373,2049,2100,10,8344,8399,144,97,58,114,105,103,104,116,0, + 2049,8308,1793,8407,771,1,-1,10,1,8403,2049,2653,2049,1874,67502597,2049,105,1793,8430,4, + 2049,8337,67502597,18,4,1,8322,2049,2275,3,10,1,8418,2049,2100,10,8388,8447,144,97, + 58,109,105,100,100,108,101,0,1,2042,2049,2100,4,67502597,2049,8308,1793,8462,771,3, + 1,-1,10,1,8457,2049,2653,771,2049,2090,4,18,2049,2890,2049,1874,67502597,2049,105,1793, + 8497,772,1793,8487,17,2049,2890,10,1,8483,2049,2100,1,8322,2049,2275,3,10,1,8480, + 2049,2100,10,8435,8510,131,70,108,97,103,0,0,8502,8522,144,99,111,109,112,97, + 114,101,0,67440386,184946434,10,8511,8535,144,108,101,110,103,116,104,0,659202,10,8525,8545, + 144,110,101,120,116,0,17043713,1,1,2577,10,8537,8563,144,110,111,116,45,101,113, + 117,97,108,0,50529030,2561,0,10,8550,8575,144,108,111,111,112,0,524549,8545,2049,8522, + 18157313,8510,8510,16,420610310,1,1,8575,7,10,8435,8598,144,97,58,101,113,63,0,1048833, + -1,8510,2049,8522,151066369,-1,8563,2049,8535,2049,8575,251724547,8510,10,8589,8623,144,97,58,45, + 101,113,63,0,2049,8598,2049,2459,10,8613,8646,144,97,58,98,101,103,105,110,115, + 45,119,105,116,104,63,0,1,3,1793,8662,2,2049,7530,1,13,2049,2100,2049,8354, + 2049,8598,10,1,8650,2049,3079,10,8628,8683,144,97,58,101,110,100,115,45,119,105, + 116,104,63,0,1,3,1793,8699,2,2049,7530,1,13,2049,2100,2049,8399,2049,8598,10, + 1,8687,2049,3079,10,8667,8720,144,99,117,114,114,101,110,116,45,108,105,110,101, + 0,2049,3517,1,1025,18,10,8704,8742,144,99,111,117,110,116,45,116,111,107,101, + 110,115,0,1793,8748,1,32,11,10,1,8744,2049,4427,2049,79,10,8726,8773,144,112, + 114,111,99,101,115,115,45,116,111,107,101,110,115,0,1793,8801,1,32,2049,6201, + 4,1793,8794,2,2049,79,2049,2543,1,367,1,11,2049,64,10,1,8782,2049,2100,2049, + 2890,10,1,8775,2049,2275,2049,367,10,8667,8822,144,115,58,101,118,97,108,117,97, + 116,101,0,2049,8720,2049,4648,2049,8720,2,2049,8742,2049,8773,10,8808,8840,131,76,80, + 0,0,8834,8850,131,73,110,100,101,120,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,8841,8890,144,110,101,120,116,0,3841,8840,1,8850,17,2049,2988,10,8882, + 8906,144,112,114,101,112,0,1,8840,2049,2988,1,0,3841,8840,1,8850,17,16,10, + 8898,8927,144,100,111,110,101,0,1,8840,2049,3003,10,8808,8937,144,73,0,3841,8840, + 1,8850,17,15,10,8932,8949,144,74,0,3841,8840,1,8850,17,2049,2903,15,10,8944, + 8963,144,75,0,3841,8840,1,8850,17,1,2,18,15,10,8958,8990,144,105,110,100, + 101,120,101,100,45,116,105,109,101,115,0,2049,8906,4,1793,9006,25,33886721,1,2053, + 1542,2049,8890,1,8995,7,10,1,8995,8,3,2049,8927,10,8973,9021,156,104,111,111, + 107,0,2049,3646,108,105,106,117,46,46,46,46,0,1,9023,2049,414,2049,1874,2049, + 2890,2049,105,10,9013,9055,144,115,101,116,45,104,111,111,107,0,2049,2890,16,10, + 9043,9069,144,117,110,104,111,111,107,0,2049,2890,2,2049,2890,4,16,10,9059,9093, + 144,105,111,58,101,110,117,109,101,114,97,116,101,0,27,10,9077,9107,144,105, + 111,58,113,117,101,114,121,0,28,10,9095,9122,144,105,111,58,105,110,118,111, + 107,101,0,29,10,9109,9139,144,105,111,58,115,99,97,110,45,102,111,114,0, + 1,-1,4,2049,9093,1793,9170,2049,8937,2049,9107,772,67502597,11,1793,9166,1793,9161,3,2049, + 8937,10,1,9157,2049,2100,10,1,9155,9,10,1,9146,2049,8990,3,10,9124,9185,144, + 99,58,112,117,116,0,1793,9187,1,0,2049,9122,10,9176,9198,144,110,108,0,1, + 10,2049,9185,10,9192,9209,144,115,112,0,1,32,2049,9185,10,9203,9221,144,116,97, + 98,0,1,9,2049,9185,10,9214,9235,144,115,58,112,117,116,0,1,9185,2049,3870, + 10,9226,9249,144,110,58,112,117,116,0,2049,6040,2049,9235,10,9240,9263,144,114,101, + 115,101,116,0,2049,1556,25,771,1,9263,7,10,9254,9285,144,100,117,109,112,45, + 115,116,97,99,107,0,2049,1556,25,134284547,9285,134283782,9249,2049,9209,10,9271,9303,144,70, + 82,69,69,0,2049,3517,1,1025,18,2049,1874,18,10,9295,9322,131,105,111,58,88, + 56,54,0,0,9312,9335,144,105,100,101,110,116,105,102,121,0,3841,9322,2049,2527, + 1793,9402,1,2000,2049,9139,2,2049,2562,1793,9390,3,2049,3646,73,79,32,68,69,86, + 73,67,69,32,84,89,80,69,32,50,48,48,48,32,78,79,84,32,70,79, + 85,78,68,0,1,9353,2049,9235,2049,9198,10,1,9350,1793,9397,4097,9322,10,1,9394, + 2049,64,10,1,9341,9,10,9295,9416,144,105,111,58,120,56,54,0,2049,9335,3841, + 9322,2049,9122,10,9406,9438,144,112,105,111,58,105,110,45,98,121,116,101,0,1, + 0,2049,9416,10,9423,9459,144,112,105,111,58,111,117,116,45,98,121,116,101,0, + 1,1,2049,9416,10,9443,9479,144,112,105,111,58,105,110,45,119,111,114,100,0, + 1,6,2049,9416,10,9464,9500,144,112,105,111,58,111,117,116,45,119,111,114,100, + 0,1,7,2049,9416,10,9484,9518,144,114,97,109,58,115,116,111,114,101,0,1, + 2,2049,9416,10,9505,9536,144,114,97,109,58,102,101,116,99,104,0,1,3,2049, + 9416,10,9523,9559,144,114,97,109,58,115,116,111,114,101,45,98,121,116,101,0, + 1,4,2049,9416,10,9541,9582,144,114,97,109,58,102,101,116,99,104,45,98,121, + 116,101,0,1,5,2049,9416,10,9564,9594,144,104,101,120,0,2,15,1,45,11, + 1793,9606,2049,2890,1,-1,10,1,9601,1793,9613,1,0,10,1,9610,2049,64,4,1, + 0,4,1793,9652,2049,3646,48,49,50,51,52,53,54,55,56,57,65,66,67,68, + 69,70,0,1,9625,4,2049,3904,17,1,16,19,10,1,9623,2049,3870,1,16,197652, + 4,25,19,10,9564,9675,156,112,114,101,102,105,120,58,48,0,2,2049,2903,2049, + 199,2049,2543,1793,9708,2049,2903,2049,199,1793,9694,2049,158,15,10,1,9690,1793,9702,2049, + 160,15,10,1,9698,2049,2122,8,10,1,9684,2049,2653,2049,2890,2049,9594,2049,131,10, + 9663,112,131,67,77,79,83,58,65,68,68,82,69,83,83,0,9719,113,131,67, + 77,79,83,58,68,65,84,65,0,9735,9761,144,114,116,99,58,113,117,101,114, + 121,0,1,112,2049,9459,1,113,2049,9438,10,9748,9784,144,114,116,99,58,115,101, + 99,111,110,100,0,1,0,2049,9761,10,9770,9803,144,114,116,99,58,109,105,110, + 117,116,101,0,1,2,2049,9761,10,9789,9820,144,114,116,99,58,104,111,117,114, + 0,1,4,2049,9761,10,9808,9836,144,114,116,99,58,100,97,121,0,1,7,2049, + 9761,10,9825,9854,144,114,116,99,58,109,111,110,116,104,0,1,8,2049,9761,10, + 9841,9871,144,114,116,99,58,121,101,97,114,0,1,9,2049,9761,10,9859,9884,144, + 116,105,109,101,0,2049,9820,2049,9249,1,58,2049,9185,2049,9803,2049,9249,2049,9198,10, + 9876,1016,131,115,101,114,105,97,108,58,67,79,77,49,0,9899,760,131,115,101, + 114,105,97,108,58,67,79,77,50,0,9914,1000,131,115,101,114,105,97,108,58, + 67,79,77,51,0,9929,744,131,115,101,114,105,97,108,58,67,79,77,52,0, + 9944,9974,131,115,101,114,105,97,108,58,80,111,114,116,0,1016,9959,9995,144,115, + 101,114,105,97,108,58,114,101,99,101,105,118,101,100,63,0,3841,9974,1,5, + 17,2049,9438,1,1,21,2049,2543,10,9975,10025,144,115,101,114,105,97,108,58,101, + 109,112,116,121,63,0,3841,9974,1,5,17,2049,9438,1,32,21,2049,2543,10,10008, + 10053,144,115,101,114,105,97,108,58,114,101,97,100,0,2049,9995,1793,10062,3841,9974, + 2049,9438,10,1,10057,2049,2653,2049,10053,10,10038,10085,144,115,101,114,105,97,108,58, + 119,114,105,116,101,0,2049,10025,1793,10094,3841,9974,2049,9459,10,1,10089,2049,2653,2049, + 10085,10,10069,10116,144,115,101,114,105,97,108,58,115,101,110,100,0,1793,10121,2049, + 10085,10,1,10118,2049,3870,10,10101,10141,144,115,101,114,105,97,108,58,105,110,105, + 116,0,1,0,3841,9974,1,1,17,2049,9459,1,128,3841,9974,1,3,17,2049,9459, + 1,3,3841,9974,2049,9459,1,0,3841,9974,1,1,17,2049,9459,1,3,3841,9974,1, + 3,17,2049,9459,1,199,3841,9974,1,2,17,2049,9459,1,11,3841,9974,1,4,17, + 2049,9459,10,10126,753664,131,86,71,65,45,66,65,83,69,0,10202,80,131,67,79, + 76,85,77,78,83,0,10214,25,131,82,79,87,83,0,10225,980,131,86,71,65, + 45,67,85,82,83,79,82,0,10233,981,131,86,71,65,45,68,65,84,65,0, + 10247,10270,131,118,103,97,58,82,111,119,0,0,10259,10285,131,118,103,97,58,67, + 111,108,117,109,110,0,0,10271,10307,144,118,103,97,58,117,112,100,97,116,101, + 45,99,117,114,115,111,114,0,3841,10270,1,80,19,3841,10285,17,2,1,15,1, + 980,2049,9459,1,255,21,1,981,2049,9459,1,14,1,980,2049,9459,1,8,24,1, + 255,21,1,981,2049,9459,10,10286,10365,144,118,103,97,58,109,111,118,101,45,99, + 117,114,115,111,114,0,4097,10285,4097,10270,2049,10307,10,10346,10387,131,118,103,97,58, + 68,105,115,112,108,97,121,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -79,85 +546,152 @@ CELL ngaImage[] = { 1793,3128,3118,3158,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,1 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,999,1548,144, - 105,100,101,110,116,105,102,121,0,1793,1567,1,2000,2,1793,1557,3,10,1,1555, - 1793,1562,10,1,1561,2049,64,10,1,1550,9,10,1536,1581,144,105,111,58,120,56, - 54,0,2049,1548,10,1571,1599,144,112,105,111,58,105,110,45,98,121,116,101,0, - 1,0,2049,1581,10,1584,1620,144,112,105,111,58,111,117,116,45,98,121,116,101, - 0,1,1,2049,1581,10,1604,1640,144,112,105,111,58,105,110,45,119,111,114,100, - 0,1,6,2049,1581,10,1625,1661,144,112,105,111,58,111,117,116,45,119,111,114, - 100,0,1,7,2049,1581,10,1645,1679,144,114,97,109,58,115,116,111,114,101,0, - 1,2,2049,1581,10,1666,1697,144,114,97,109,58,102,101,116,99,104,0,1,3, - 2049,1581,10,1684,1720,144,114,97,109,58,115,116,111,114,101,45,98,121,116,101, - 0,1,4,2049,1581,10,1702,1743,144,114,97,109,58,102,101,116,99,104,45,98, - 121,116,101,0,1,5,2049,1581,10,1725,1755,144,104,101,120,0,2,15,1,45, - 11,1793,1765,1,-1,10,1,1762,1793,1772,1,0,10,1,1769,2049,64,4,1,0, - 4,1793,1788,4,17,1,16,19,10,1,1782,1,16,4,25,19,10,1748,1808,144, - 112,114,101,102,105,120,58,48,0,2,2049,199,1793,1833,2049,199,1793,1821,2049,158, - 15,10,1,1817,1793,1829,2049,160,15,10,1,1825,8,10,1,1813,2049,1755,2049,131, - 10,1796,1853,144,114,116,99,58,113,117,101,114,121,0,2049,1620,2049,1599,10,1840, - 1872,144,114,116,99,58,115,101,99,111,110,100,0,1,0,2049,1853,10,1858,1891, - 144,114,116,99,58,109,105,110,117,116,101,0,1,2,2049,1853,10,1877,1908,144, - 114,116,99,58,104,111,117,114,0,1,4,2049,1853,10,1896,1924,144,114,116,99, - 58,100,97,121,0,1,7,2049,1853,10,1913,1942,144,114,116,99,58,109,111,110, - 116,104,0,1,8,2049,1853,10,1929,1959,144,114,116,99,58,121,101,97,114,0, - 1,9,2049,1853,10,1947,1972,144,116,105,109,101,0,2049,1908,1,58,2049,1891,10, - 1964,1999,144,115,101,114,105,97,108,58,114,101,99,101,105,118,101,100,63,0, - 1,5,17,2049,1599,1,1,21,10,1979,2025,144,115,101,114,105,97,108,58,101, - 109,112,116,121,63,0,1,5,17,2049,1599,1,32,21,10,2008,2049,144,115,101, - 114,105,97,108,58,114,101,97,100,0,2049,1999,1793,2056,2049,1599,10,1,2053,2049, - 2049,10,2034,2077,144,115,101,114,105,97,108,58,119,114,105,116,101,0,2049,2025, - 1793,2084,2049,1620,10,1,2081,2049,2077,10,2061,2104,144,115,101,114,105,97,108,58, - 115,101,110,100,0,1793,2109,2049,2077,10,1,2106,10,2089,2127,144,115,101,114,105, - 97,108,58,105,110,105,116,0,1,0,1,1,17,2049,1620,1,128,1,3,17, - 2049,1620,1,3,2049,1620,1,0,1,1,17,2049,1620,1,3,1,3,17,2049,1620, - 1,199,1,2,17,2049,1620,1,11,1,4,17,2049,1620,10,2112,2195,144,118,103, - 97,58,117,112,100,97,116,101,45,99,117,114,115,111,114,0,19,17,2,2049, - 1808,2049,1620,2049,1808,21,2049,1620,2049,1808,2049,1620,1,8,24,2049,1808,21,2049,1620, - 10,2174,2239,144,118,103,97,58,109,111,118,101,45,99,117,114,115,111,114,0, - 2049,2195,10,2220,2262,144,115,116,97,114,116,105,110,103,45,97,100,100,114,101, - 115,115,0,1,2,19,17,10,2242,2281,144,99,104,97,114,97,99,116,101,114, - 115,0,19,10,2267,2296,144,115,97,118,101,45,98,121,116,101,0,2,2049,1743, - 1,2,17,10,2283,2311,144,115,97,118,101,0,1793,2316,2049,2296,10,1,2313,3, - 10,2303,2335,144,97,108,108,45,98,117,116,45,116,111,112,0,1793,2346,1,-1, - 2049,2262,2049,2281,2049,2311,10,1,2337,10,2320,2360,144,109,111,118,101,45,117,112, - 0,1,-1,1793,2370,2049,1720,1,2,17,10,1,2364,3,10,2349,2387,144,108,97, - 115,116,45,108,105,110,101,0,19,1,2,19,17,10,2374,2402,144,101,114,97, - 115,101,0,2049,1720,1,2,17,10,2393,2427,144,101,114,97,115,101,45,108,97, - 115,116,45,108,105,110,101,0,2049,2387,1793,2434,2049,2402,10,1,2431,3,10,2408, - 2448,144,115,99,114,111,108,108,0,2049,2335,2049,2360,2049,2427,10,2438,2467,144,112, - 111,115,105,116,105,111,110,0,1,0,2049,2239,10,2455,2483,144,115,99,114,111, - 108,108,63,0,11,10,2472,2497,144,118,103,97,58,119,114,97,112,0,2049,2483, - 1793,2506,2049,2448,2049,2467,10,1,2501,9,2049,2195,10,2485,2524,144,112,111,115,105, - 116,105,111,110,0,19,1,2,19,1,2,19,17,17,10,2512,2542,144,110,101, - 120,116,0,1,-1,14,1793,2552,1,-1,1,0,10,1,2547,9,2049,2497,10,2534, - 2571,144,118,103,97,58,99,58,112,117,116,0,1,10,1793,2582,1,0,1,-1, - 2049,2497,10,1,2575,1,13,1793,2595,1,0,1,-1,2049,2497,10,1,2588,1,8, - 1793,2612,1,-1,1,32,2049,2571,1,-1,2049,2195,10,1,2601,2049,2524,2049,1720,2049, - 2542,10,2558,2630,144,99,108,101,97,114,0,1,0,1,0,2049,2239,19,1793,2645, - 2049,1720,1,2,17,10,1,2639,3,1,0,1,0,2049,2239,10,2621,2673,144,118, - 103,97,58,105,110,105,116,105,97,108,105,122,101,0,1,1793,1,-1,1,2, - 17,16,1,2571,1,-1,1,3,17,16,10,2655,2707,144,97,116,97,58,99,108, - 101,97,114,45,98,115,121,0,1793,0,2715,1599,2049,1808,21,10,1,1026,10,2690, - 2736,144,97,116,97,58,115,101,116,45,115,101,99,116,111,114,0,2049,1808,2049, - 1620,2049,1808,2049,1620,2049,1808,2049,1620,2,2049,1620,2,1,8,24,2049,1620,1,16, - 24,2049,1620,10,2718,2771,144,109,97,115,107,0,2049,1808,21,10,2763,2784,144,100, - 101,108,97,121,0,1793,2787,10,1,2786,10,2775,2807,144,97,116,97,58,114,101, - 97,100,45,119,111,114,100,0,2049,1640,10,2790,2824,144,115,116,111,114,101,45, - 119,111,114,100,0,1793,2830,2049,2771,16,10,1,2826,1,8,24,16,10,2810,2849, - 144,97,116,97,58,114,101,97,100,0,2049,2736,2049,1620,2049,2784,1,256,1793,2864, - 2049,2807,2049,2824,10,1,2859,3,10,2837,2886,144,97,116,97,58,119,114,105,116, - 101,45,119,111,114,100,0,2049,1661,10,2868,2903,144,102,101,116,99,104,45,119, - 111,114,100,0,2049,56,1793,2913,2049,56,1,-8,24,10,1,2907,17,10,2889,2930, - 144,97,116,97,58,119,114,105,116,101,0,2049,2736,2049,1620,2049,2784,1,256,1793, - 2945,2049,2903,2049,2886,10,1,2940,3,2049,1620,2049,2707,10,2917,2961,144,101,111,108, - 63,0,1793,2965,11,10,1,2963,1793,2971,11,10,1,2969,1793,2977,11,10,1,2975, - 22,22,10,2953,2992,144,118,97,108,105,100,63,0,2,2049,79,10,2982,3008,144, - 99,104,101,99,107,45,98,115,0,2,1793,3015,1,8,11,10,1,3011,1793,3023, - 1,127,11,10,1,3019,22,1793,3029,10,1,3028,9,10,2996,3042,144,99,58,103, - 101,116,0,2,10,3033,3058,144,115,58,103,101,116,45,119,111,114,100,0,1793, - 3075,1,1025,1793,3072,2049,3042,2,2049,3008,2049,2961,10,1,3064,10,1,3060,10,3044, - 3087,144,115,58,103,101,116,0,1793,3115,1,1025,1793,3112,2049,3042,2,2049,3008,1793, - 3102,11,10,1,3100,1793,3108,11,10,1,3106,22,10,1,3093,10,1,3089,10,3078, - 3128,144,108,105,115,116,101,110,0,2049,2673,2049,2630,1,100,20,1,46,2049,3058, - 2049,2992,1,367,1,11,2049,64,1,3137,7,10,1793,3156,1,63,10,1,3153,0 }; + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,10372,12408,144,115,116,97,114,116,105,110,103, + 45,97,100,100,114,101,115,115,0,1,753664,1,80,1,2,19,17,10,12388,12431, + 144,99,104,97,114,97,99,116,101,114,115,0,1,25,2049,2903,1,80,19,10, + 12417,12452,144,115,97,118,101,45,98,121,116,101,0,2,2049,9582,2049,3336,1,2, + 17,10,12439,12469,144,115,97,118,101,0,1793,12474,2049,12452,10,1,12471,2049,2275,3, + 10,12461,12495,144,97,108,108,45,98,117,116,45,116,111,112,0,1793,12508,1,10387, + 2049,3428,2049,12408,2049,12431,2049,12469,10,1,12497,2049,3452,10,12480,12524,144,109,111,118, + 101,45,117,112,0,1,753664,1,10387,1793,12537,67502597,2049,9559,1,2,17,10,1,12530, + 2049,3870,3,10,12513,12556,144,108,97,115,116,45,108,105,110,101,0,1,753664,1, + 25,2049,2903,1,80,19,1,2,19,17,10,12543,12579,144,101,114,97,115,101,0, + 1,32,67502597,2049,9559,1,2,17,10,12570,12607,144,101,114,97,115,101,45,108,97, + 115,116,45,108,105,110,101,0,2049,12556,1,80,1793,12616,2049,12579,10,1,12613,2049, + 2275,3,10,12588,12632,144,115,99,114,111,108,108,0,2049,12495,2049,12524,2049,12607,10, + 12622,12651,144,112,111,115,105,116,105,111,110,0,1,25,2049,2903,1,0,2049,10365, + 10,12639,12671,144,115,99,114,111,108,108,63,0,3841,10270,1,25,11,10,10346,12689, + 144,118,103,97,58,119,114,97,112,0,2049,12671,1793,12698,2049,12632,2049,12651,10,1, + 12693,9,2049,10307,10,12677,12716,144,112,111,115,105,116,105,111,110,0,3841,10270,1, + 80,19,1,2,19,3841,10285,1,2,19,17,1,753664,17,10,12704,12742,144,110,101, + 120,116,0,1,10285,2049,2988,3841,10285,1,80,14,1793,12762,1,10270,2049,2988,1,0, + 4097,10285,10,1,12753,9,2049,12689,10,12677,12781,144,118,103,97,58,99,58,112,117, + 116,0,1,10,1793,12796,1,0,4097,10285,1,10270,2049,2988,2049,12689,10,1,12785,2049, + 2373,1,13,1793,12815,1,0,4097,10285,1,10270,2049,2988,2049,12689,10,1,12804,2049,2373, + 1,8,1793,12838,1,10285,2049,3003,1,32,2049,12781,1,10285,2049,3003,2049,10307,10,1, + 12823,2049,2373,2049,12716,2049,9559,2049,12742,10,12768,12858,144,99,108,101,97,114,0,1, + 0,1,0,2049,10365,1,753664,1,80,1,25,19,1793,12882,1,32,67502597,2049,9559,1, + 2,17,10,1,12873,2049,2275,3,1,0,1,0,2049,10365,10,12849,12912,144,118,103, + 97,58,105,110,105,116,105,97,108,105,122,101,0,1,1793,1,9185,1,2,17, + 16,1,12781,1,9185,1,3,17,16,10,12894,12942,131,97,116,97,58,68,101,108, + 97,121,0,10000,12929,32,131,97,116,97,58,82,69,65,68,0,12943,48,131,97, + 116,97,58,87,82,73,84,69,0,12955,231,131,97,116,97,58,70,76,85,83, + 72,45,67,65,67,72,69,0,12968,496,131,97,116,97,58,80,82,73,77,65, + 82,89,0,12987,496,131,97,116,97,58,68,65,84,65,0,13002,497,131,97,116, + 97,58,69,82,82,79,82,0,13014,497,131,97,116,97,58,70,69,65,84,85, + 82,69,83,0,13027,498,131,97,116,97,58,83,69,67,84,79,82,45,67,79, + 85,78,84,0,13043,499,131,97,116,97,58,83,69,67,84,79,82,45,78,85, + 77,66,69,82,0,13063,500,131,97,116,97,58,67,89,76,73,78,68,69,82, + 45,76,79,87,0,13084,501,131,97,116,97,58,67,89,76,73,78,68,69,82, + 45,72,73,71,72,0,13104,502,131,97,116,97,58,68,82,73,86,69,0,13125, + 502,131,97,116,97,58,72,69,65,68,0,13138,503,131,97,116,97,58,83,84, + 65,84,85,83,0,13150,503,131,97,116,97,58,67,79,77,77,65,78,68,0, + 13164,1014,131,97,116,97,58,80,82,73,77,65,82,89,45,68,67,82,45,65, + 83,0,13179,13218,144,97,116,97,58,99,108,101,97,114,45,98,115,121,0,1793, + 13230,1,503,2049,9438,1,128,21,2049,2527,10,1,13220,2049,2250,10,13201,13253,144,97, + 116,97,58,115,101,116,45,115,101,99,116,111,114,0,1,224,1,502,2049,9459, + 1,0,1,497,2049,9459,1,1,1,498,2049,9459,2,1,499,2049,9459,2,1,8, + 24,1,500,2049,9459,1,16,24,1,501,2049,9459,10,13235,13300,144,109,97,115,107, + 0,1,255,21,10,13292,13313,144,100,101,108,97,121,0,3841,12942,1793,13318,10,1, + 13317,2049,2275,10,13304,13340,144,97,116,97,58,114,101,97,100,45,119,111,114,100, + 0,1,496,2049,9479,10,13323,13359,144,115,116,111,114,101,45,119,111,114,100,0, + 1793,13368,2049,13300,67502597,16,2049,2890,10,1,13361,2049,2110,1,8,24,67502597,16,2049,2890, + 10,13345,13392,144,97,116,97,58,114,101,97,100,0,2049,13253,1,32,1,503,2049, + 9459,2049,13313,1,256,1793,13411,2049,13340,2049,13359,10,1,13406,2049,2275,3,10,13380,13435, + 144,97,116,97,58,119,114,105,116,101,45,119,111,114,100,0,1,496,2049,9500, + 10,13417,13454,144,102,101,116,99,104,45,119,111,114,100,0,2049,56,1793,13464,2049, + 56,1,-8,24,10,1,13458,2049,2100,17,10,13440,13483,144,97,116,97,58,119,114, + 105,116,101,0,2049,13253,1,48,1,503,2049,9459,2049,13313,1,256,1793,13502,2049,13454, + 2049,13435,10,1,13497,2049,2275,3,1,231,1,503,2049,9459,2049,13218,10,13470,13524,144, + 101,111,108,63,0,1793,13530,1,13,11,10,1,13526,1793,13538,1,10,11,10,1, + 13534,1793,13546,1,32,11,10,1,13542,2049,2159,22,22,10,13516,13563,144,118,97,108, + 105,100,63,0,2,2049,79,2049,2543,10,13553,13581,144,99,104,101,99,107,45,98, + 115,0,2,1793,13588,1,8,11,10,1,13584,1793,13596,1,127,11,10,1,13592,2049, + 2122,22,1793,13609,2049,3360,2049,3360,771,10,1,13603,9,10,13470,13622,144,99,58,103, + 101,116,0,1793,13624,7425,1,2,2049,9185,10,13613,13644,144,115,58,103,101,116,45, + 119,111,114,100,0,1793,13671,1,1025,2049,3428,1793,13662,2049,13622,2,2049,3336,2049,13581, + 2049,13524,10,1,13652,2049,2250,2049,3302,2049,3724,10,1,13646,2049,3452,10,13630,13685,144, + 115,58,103,101,116,0,1793,13729,1,1025,2049,3428,1793,13720,2049,13622,2,2049,3336,2049, + 13581,1793,13706,1,13,11,10,1,13702,1793,13714,1,10,11,10,1,13710,2049,2122,22, + 10,1,13693,2049,2250,2049,3302,2049,3724,10,1,13687,2049,3452,10,13676,13744,144,108,105, + 115,116,101,110,0,2049,12912,2049,12858,2049,3646,82,69,84,82,79,47,78,97,116, + 105,118,101,0,1,13750,2049,9235,2049,9209,3841,4,1,100,20,2049,9249,1,46,2049, + 9185,2049,9249,2049,9198,2049,13644,2049,13563,1,367,1,11,2049,64,1,13784,7,10,1793, + 13830,1,63,2049,9185,2049,9209,2049,3646,119,111,114,100,32,110,111,116,32,102,111, + 117,110,100,0,1,13808,2049,9235,2049,9198,10,1,13800,0 };