Try to get lwb-parser to work

feat/lwb-parser
Julius 2022-07-08 12:10:55 +02:00
parent 31c3827e96
commit e03f3088d2
Signed by: j00lz
GPG Key ID: AF241B0AA237BBA2
11 changed files with 2307 additions and 16 deletions

504
Cargo.lock generated
View File

@ -2,6 +2,71 @@
# It is not intended for manual editing.
version = 3
[[package]]
name = "addr2line"
version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b"
dependencies = [
"gimli",
]
[[package]]
name = "adler"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
name = "aho-corasick"
version = "0.7.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
dependencies = [
"memchr",
]
[[package]]
name = "atty"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [
"hermit-abi",
"libc",
"winapi",
]
[[package]]
name = "autocfg"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "backtrace"
version = "0.3.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7"
dependencies = [
"addr2line",
"cc",
"cfg-if",
"libc",
"miniz_oxide",
"object",
"rustc-demangle",
]
[[package]]
name = "bincode"
version = "1.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
dependencies = [
"serde",
]
[[package]]
name = "block-buffer"
version = "0.7.3"
@ -23,6 +88,12 @@ dependencies = [
"byte-tools",
]
[[package]]
name = "by_address"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e245704f60eb4eb45810d65cf14eb54d2eb50a6f3715fe2d7cd01ee905c2944f"
[[package]]
name = "byte-tools"
version = "0.3.1"
@ -35,6 +106,56 @@ version = "1.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
[[package]]
name = "cc"
version = "1.0.73"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chrono"
version = "0.4.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
dependencies = [
"libc",
"num-integer",
"num-traits",
"time",
"winapi",
]
[[package]]
name = "convert_case"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
[[package]]
name = "convert_case"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8"
[[package]]
name = "derive_more"
version = "0.99.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
dependencies = [
"convert_case 0.4.0",
"proc-macro2",
"quote",
"rustc_version",
"syn",
]
[[package]]
name = "digest"
version = "0.8.1"
@ -50,6 +171,32 @@ version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "140206b78fb2bc3edbcfc9b5ccbd0b30699cfe8d348b8b31b330e47df5291a5a"
[[package]]
name = "either"
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be"
[[package]]
name = "enum-iterator"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4eeac5c5edb79e4e39fe8439ef35207780a11f69c52cbe424ce3dfad4cb78de6"
dependencies = [
"enum-iterator-derive",
]
[[package]]
name = "enum-iterator-derive"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c134c37760b27a871ba422106eedbb8247da973a09e82558bf26d619c882b159"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "fake-simd"
version = "0.1.2"
@ -65,18 +212,168 @@ dependencies = [
"typenum",
]
[[package]]
name = "gimli"
version = "0.26.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4"
[[package]]
name = "hermit-abi"
version = "0.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
dependencies = [
"libc",
]
[[package]]
name = "is_ci"
version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "616cde7c720bb2bb5824a224687d8f77bfd38922027f01d825cd7453be5099fb"
[[package]]
name = "itertools"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
dependencies = [
"either",
]
[[package]]
name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
version = "0.2.126"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
[[package]]
name = "lwb-parser"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2979cd39b4c303b9943535680650d59a1b940212e69ad26b97e3e675cc6f308d"
dependencies = [
"bincode",
"by_address",
"chrono",
"convert_case 0.5.0",
"derive_more",
"enum-iterator",
"itertools",
"lazy_static",
"miette",
"proc-macro2",
"quote",
"serde",
"thiserror",
"toml",
"typed-arena",
]
[[package]]
name = "maplit"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
[[package]]
name = "memchr"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
[[package]]
name = "miette"
version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd2adcfcced5d625bf90a958a82ae5b93231f57f3df1383fee28c9b5096d35ed"
dependencies = [
"atty",
"backtrace",
"miette-derive",
"once_cell",
"owo-colors",
"supports-color",
"supports-hyperlinks",
"supports-unicode",
"terminal_size",
"textwrap",
"thiserror",
]
[[package]]
name = "miette-derive"
version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c01a8b61312d367ce87956bb686731f87e4c6dd5dbc550e8f06e3c24fb1f67f"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "miniz_oxide"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc"
dependencies = [
"adler",
]
[[package]]
name = "num-integer"
version = "0.1.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
dependencies = [
"autocfg",
"num-traits",
]
[[package]]
name = "num-traits"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
dependencies = [
"autocfg",
]
[[package]]
name = "object"
version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53"
dependencies = [
"memchr",
]
[[package]]
name = "once_cell"
version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1"
[[package]]
name = "opaque-debug"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
[[package]]
name = "owo-colors"
version = "3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "decf7381921fea4dcb2549c5667eda59b3ec297ab7e2b5fc33eac69d2e7da87b"
[[package]]
name = "pest"
version = "2.1.3"
@ -138,6 +435,64 @@ dependencies = [
"proc-macro2",
]
[[package]]
name = "regex"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.6.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
[[package]]
name = "rustc-demangle"
version = "0.1.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342"
[[package]]
name = "rustc_version"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
dependencies = [
"semver",
]
[[package]]
name = "semver"
version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2333e6df6d6598f2b1974829f853c2b4c5f4a6e503c10af918081aa6f8564e1"
[[package]]
name = "serde"
version = "1.0.138"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1578c6245786b9d168c5447eeacfb96856573ca56c9d68fdcf394be134882a47"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.138"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "023e9b1467aef8a10fb88f25611870ada9800ef7e22afce356bb0d2387b6f27c"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "sha-1"
version = "0.8.2"
@ -150,15 +505,50 @@ dependencies = [
"opaque-debug",
]
[[package]]
name = "smawk"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043"
[[package]]
name = "sunflower"
version = "0.1.0"
dependencies = [
"dyn-clone",
"lwb-parser",
"pest",
"pest_derive",
]
[[package]]
name = "supports-color"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4872ced36b91d47bae8a214a683fe54e7078875b399dfa251df346c9b547d1f9"
dependencies = [
"atty",
"is_ci",
]
[[package]]
name = "supports-hyperlinks"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "590b34f7c5f01ecc9d78dba4b3f445f31df750a67621cf31626f3b7441ce6406"
dependencies = [
"atty",
]
[[package]]
name = "supports-unicode"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8b945e45b417b125a8ec51f1b7df2f8df7920367700d1f98aedd21e5735f8b2"
dependencies = [
"atty",
]
[[package]]
name = "syn"
version = "1.0.98"
@ -170,6 +560,73 @@ dependencies = [
"unicode-ident",
]
[[package]]
name = "terminal_size"
version = "0.1.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df"
dependencies = [
"libc",
"winapi",
]
[[package]]
name = "textwrap"
version = "0.14.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0066c8d12af8b5acd21e00547c3797fde4e8677254a7ee429176ccebbe93dd80"
dependencies = [
"smawk",
"unicode-linebreak",
"unicode-width",
]
[[package]]
name = "thiserror"
version = "1.0.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "time"
version = "0.1.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
dependencies = [
"libc",
"wasi",
"winapi",
]
[[package]]
name = "toml"
version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
dependencies = [
"serde",
]
[[package]]
name = "typed-arena"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0685c84d5d54d1c26f7d3eb96cd41550adb97baed141a761cf335d3d33bcd0ae"
[[package]]
name = "typenum"
version = "1.15.0"
@ -178,12 +635,55 @@ checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
[[package]]
name = "ucd-trie"
version = "0.1.3"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c"
checksum = "89570599c4fe5585de2b388aab47e99f7fa4e9238a1399f707a02e356058141c"
[[package]]
name = "unicode-ident"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c"
[[package]]
name = "unicode-linebreak"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a52dcaab0c48d931f7cc8ef826fa51690a08e1ea55117ef26f89864f532383f"
dependencies = [
"regex",
]
[[package]]
name = "unicode-width"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
[[package]]
name = "wasi"
version = "0.10.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
[[package]]
name = "winapi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
dependencies = [
"winapi-i686-pc-windows-gnu",
"winapi-x86_64-pc-windows-gnu",
]
[[package]]
name = "winapi-i686-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"

View File

@ -2,11 +2,16 @@
name = "sunflower"
version = "0.1.0"
edition = "2021"
build = "src/build.rs"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
dyn-clone = "1.0.6"
lwb-parser = "0.1.3"
pest = "2.1.3"
pest_derive = "2.1.0"
[build-dependencies]
lwb-parser = "0.1.3"

9
lwb.toml Normal file
View File

@ -0,0 +1,9 @@
[syntax]
definition = "src/sunflower.syntax"
destination = "src/sunflower"
serde = true
[language]
name = "Sunflower"
extensions = ["sunflower", "sfl"]

6
src/build.rs Normal file
View File

@ -0,0 +1,6 @@
use lwb_parser::codegen::manager::Codegen;
fn main() {
let m = Codegen::new();
m.codegen();
}

View File

@ -1,10 +1,9 @@
use std::{
any::Any,
fs::read_to_string,
};
use std::{any::Any, fs::read_to_string};
use env::Env;
use expression::Expression;
use function::FunctionMap;
use lwb_parser::{codegen_prelude::AstInfo, language::Language, sources::source_file::SourceFile};
use statement::Statement;
use value::{custom::CustomValue, Value};
@ -18,6 +17,10 @@ mod value;
// mod parser;
mod pest_parser;
#[rustfmt::skip]
mod sunflower;
lwb_parser::language!(SFL at mod sunflower);
fn run(functions: &FunctionMap, statement: &Statement) {
let env = Env::new();
statement.eval(&env, functions);
@ -69,16 +72,120 @@ impl CustomValue for Foo {
}
fn main() {
let f = read_to_string("./test.foo").unwrap();
let (res, funcs) = pest_parser::parse(&f);
// let f = read_to_string("./test.foo").unwrap();
// let (res, funcs) = pest_parser::parse(&f);
let mut m = FunctionMap::new();
m.insert_holder(funcs);
m.insert_native("print", |a: &Value| {
println!("{}", a);
});
m.insert_native("waluigi", || "Waluigi");
m.insert_native("native_test", || Foo { x: 41 });
m.insert_native("other_foo", || Foo { x: 1 });
// m.insert_holder(funcs);
// m.insert_native("print", |a: &Value| {
// println!("{}", a);
// });
// m.insert_native("waluigi", || "Waluigi");
// m.insert_native("native_test", || Foo { x: 41 });
// m.insert_native("other_foo", || Foo { x: 1 });
run(&m, &res);
// run(&m, &res);
let res = SFL::try_parse(&SourceFile::new(
"
10 / 2 + 3 * 4;
",
"based.sfl",
))
.unwrap();
// println!("{:?}", res);
for r in res.1 {
if let sunflower::Statement::Expression(_, e) = r {
println!("{}", e.eval())
}
}
// for r in res.1 {
// r.eval(&Env::new(), &m)
// }
}
impl<M: AstInfo> sunflower::Expression<M> {
fn eval(&self) -> Value {
self.1.eval()
}
}
impl<M: AstInfo> sunflower::Equality<M> {
fn eval(&self) -> Value {
match self {
sunflower::Equality::Equal(_, lhs, rhs) => (lhs.eval() == rhs.eval()).into(),
sunflower::Equality::NotEqual(_, rhs, lhs) => (lhs.eval() != rhs.eval()).into(),
sunflower::Equality::Inequality(_, all) => all.eval(),
}
}
}
impl<M: AstInfo> sunflower::Inequality<M> {
fn eval(&self) -> Value {
match self {
sunflower::Inequality::LessThan(_, lhs, rhs) => (lhs.eval() < rhs.eval()).into(),
sunflower::Inequality::LessThanOrEqual(_, lhs, rhs) => {
(lhs.eval() <= rhs.eval()).into()
}
sunflower::Inequality::GreaterThan(_, lhs, rhs) => (lhs.eval() > rhs.eval()).into(),
sunflower::Inequality::GreaterThanOrEqual(_, lhs, rhs) => {
(lhs.eval() >= rhs.eval()).into()
}
sunflower::Inequality::Plus(_, all) => all.eval(),
}
}
}
impl<M: AstInfo> sunflower::Plus<M> {
fn eval(&self) -> Value {
match self {
sunflower::Plus::Plus(_, lhs, rhs) => {
println!("doing plus");
(lhs.eval() + rhs.eval()).into()
}
sunflower::Plus::Minus(_, lhs, rhs) => (lhs.eval() - rhs.eval()).into(),
sunflower::Plus::Times(_, all) => all.eval(),
}
}
}
impl<M: AstInfo> sunflower::Times<M> {
fn eval(&self) -> Value {
match self {
sunflower::Times::Times(_, lhs, rhs) => {
println!("doing times");
(lhs.eval() * rhs.eval()).into()
}
sunflower::Times::Divide(_, lhs, rhs) => {
println!("doing divide");
(lhs.eval() / rhs.eval()).into()
}
sunflower::Times::Value(_, all) => all.eval(),
}
}
}
impl<M: AstInfo> sunflower::Value<M> {
fn eval(&self) -> Value {
match self {
sunflower::Value::Const(_, c) => {
println!("doing const");
c.eval()
}
sunflower::Value::Call(_, _) => todo!(),
sunflower::Value::Identifier(_, _) => todo!(),
sunflower::Value::Parens(_, inner) => inner.eval(),
}
}
}
impl<M: AstInfo> sunflower::ConstValue<M> {
fn eval(&self) -> Value {
match self {
sunflower::ConstValue::Int(_, i) => i.1.parse::<i32>().unwrap().into(),
sunflower::ConstValue::Bool(_, b) => match b {
sunflower::Bool::True(_) => true.into(),
sunflower::Bool::False(_) => false.into(),
},
sunflower::ConstValue::String(_, _) => todo!(),
sunflower::ConstValue::Char(_, _) => todo!(),
}
}
}

60
src/sunflower.syntax Normal file
View File

@ -0,0 +1,60 @@
identifier = [A-Za-z_][A-Za-z0-9-_]*; {single-string, no-layout}
string = "\"" [^\"]* "\""; {single-string, no-layout}
char = "'" [^\'] "'"; {single-string, no-layout}
int = [0-9]+; {single-string, no-layout}
bool:
true = "true";
false = "false";
const_value:
int = int;
bool = bool;
string = string;
char = char;
call = identifier "(" delimited(expression, ",", *) ")";
value:
const = const_value;
call = call;
identifier = identifier;
parens = "(" expression ")";
equality:
equal = inequality "==" expression;
not_equal = inequality "!=" expression;
inequality = inequality;
inequality:
less_than = plus "<" expression;
less_than_or_equal = plus "<=" expression;
greater_than = plus ">" expression;
greater_than_or_equal = plus ">=" expression;
plus = plus;
expression:
equality = equality;
plus:
plus = times "+" times;
minus = times "-" times;
times = times;
times:
times = value "*" expression;
divide = value "/" expression;
value = value;
statement:
expression = expression ";";
let = "let" identifier "=" expression ";";
program = statement*;
start at program;
layout = [\r\n\t ];

93
src/sunflower/ast.rs Normal file
View File

@ -0,0 +1,93 @@
#![allow(unused)]
#![allow(non_snake_case)]
#![allow(non_camel_case_types)]
#![allow(clippy::all)]
// |==========================================================|
// | WARNING: THIS FILE IS AUTOMATICALLY GENERATED. |
// | CHANGES TO IT WILL BE DELETED WHEN REGENERATED. |
// | IN GENERAL, THIS FILE SHOULD NOT BE MODIFIED IN ANY WAY. |
// |==========================================================|
use super::prelude::*;
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub struct Program<M: AstInfo>(pub M, pub Vec<Statement<M>>);
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub enum Statement<M: AstInfo> {
Expression(M, Expression<M>),
Let(M, Identifier<M>, Expression<M>),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub struct Expression<M: AstInfo>(pub M, pub Equality<M>);
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub struct Identifier<M: AstInfo>(pub M, pub std::string::String);
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub enum Equality<M: AstInfo> {
Equal(M, Inequality<M>, Box<Expression<M>>),
NotEqual(M, Inequality<M>, Box<Expression<M>>),
Inequality(M, Inequality<M>),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub enum Inequality<M: AstInfo> {
LessThan(M, Plus<M>, Box<Expression<M>>),
LessThanOrEqual(M, Plus<M>, Box<Expression<M>>),
GreaterThan(M, Plus<M>, Box<Expression<M>>),
GreaterThanOrEqual(M, Plus<M>, Box<Expression<M>>),
Plus(M, Plus<M>),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub enum Plus<M: AstInfo> {
Plus(M, Times<M>, Times<M>),
Minus(M, Times<M>, Times<M>),
Times(M, Times<M>),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub enum Times<M: AstInfo> {
Times(M, Value<M>, Box<Expression<M>>),
Divide(M, Value<M>, Box<Expression<M>>),
Value(M, Value<M>),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub enum Value<M: AstInfo> {
Const(M, ConstValue<M>),
Call(M, Call<M>),
Identifier(M, Identifier<M>),
Parens(M, Box<Expression<M>>),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub enum ConstValue<M: AstInfo> {
Int(M, Int<M>),
Bool(M, Bool<M>),
String(M, String<M>),
Char(M, Char<M>),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub struct Call<M: AstInfo>(pub M, pub Identifier<M>, pub Vec<Box<Expression<M>>>);
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub struct Int<M: AstInfo>(pub M, pub std::string::String);
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub enum Bool<M: AstInfo> {
True(M),
False(M),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub struct String<M: AstInfo>(pub M, pub std::string::String);
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub struct Char<M: AstInfo>(pub M, pub std::string::String);
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub struct Layout<M: AstInfo>(pub M, pub std::string::String);
pub type AST_ROOT<M> = Program<M>;

278
src/sunflower/ast_impls.rs Normal file
View File

@ -0,0 +1,278 @@
#![allow(unused)]
#![allow(non_snake_case)]
#![allow(non_camel_case_types)]
#![allow(clippy::all)]
// |==========================================================|
// | WARNING: THIS FILE IS AUTOMATICALLY GENERATED. |
// | CHANGES TO IT WILL BE DELETED WHEN REGENERATED. |
// | IN GENERAL, THIS FILE SHOULD NOT BE MODIFIED IN ANY WAY. |
// |==========================================================|
use super::prelude::*;
impl<M: AstInfo> AstNode<M> for Identifier<M> {
fn ast_info(&self) -> &M {
let Self(meta, ..) = self;
meta
}
fn constructor(&self) -> &'static str {
"identifier"
}
fn sort(&self) -> &'static str {
"identifier"
}
}
impl<M: AstInfo> AstNode<M> for Times<M> {
fn ast_info(&self) -> &M {
match self {
Self::Times(meta, ..) => meta,
Self::Divide(meta, ..) => meta,
Self::Value(meta, ..) => meta,
_ => unreachable!(),
}
}
fn constructor(&self) -> &'static str {
match self {
Self::Times(..) => "times",
Self::Divide(..) => "divide",
Self::Value(..) => "value",
_ => unreachable!(),
}
}
fn sort(&self) -> &'static str {
"times"
}
}
impl<M: AstInfo> AstNode<M> for Equality<M> {
fn ast_info(&self) -> &M {
match self {
Self::Equal(meta, ..) => meta,
Self::NotEqual(meta, ..) => meta,
Self::Inequality(meta, ..) => meta,
_ => unreachable!(),
}
}
fn constructor(&self) -> &'static str {
match self {
Self::Equal(..) => "equal",
Self::NotEqual(..) => "not_equal",
Self::Inequality(..) => "inequality",
_ => unreachable!(),
}
}
fn sort(&self) -> &'static str {
"equality"
}
}
impl<M: AstInfo> AstNode<M> for Program<M> {
fn ast_info(&self) -> &M {
let Self(meta, ..) = self;
meta
}
fn constructor(&self) -> &'static str {
"program"
}
fn sort(&self) -> &'static str {
"program"
}
}
impl<M: AstInfo> AstNode<M> for Int<M> {
fn ast_info(&self) -> &M {
let Self(meta, ..) = self;
meta
}
fn constructor(&self) -> &'static str {
"int"
}
fn sort(&self) -> &'static str {
"int"
}
}
impl<M: AstInfo> AstNode<M> for Statement<M> {
fn ast_info(&self) -> &M {
match self {
Self::Expression(meta, ..) => meta,
Self::Let(meta, ..) => meta,
_ => unreachable!(),
}
}
fn constructor(&self) -> &'static str {
match self {
Self::Expression(..) => "expression",
Self::Let(..) => "let",
_ => unreachable!(),
}
}
fn sort(&self) -> &'static str {
"statement"
}
}
impl<M: AstInfo> AstNode<M> for Bool<M> {
fn ast_info(&self) -> &M {
match self {
Self::True(meta, ..) => meta,
Self::False(meta, ..) => meta,
_ => unreachable!(),
}
}
fn constructor(&self) -> &'static str {
match self {
Self::True(..) => "true",
Self::False(..) => "false",
_ => unreachable!(),
}
}
fn sort(&self) -> &'static str {
"bool"
}
}
impl<M: AstInfo> AstNode<M> for Value<M> {
fn ast_info(&self) -> &M {
match self {
Self::Const(meta, ..) => meta,
Self::Call(meta, ..) => meta,
Self::Identifier(meta, ..) => meta,
Self::Parens(meta, ..) => meta,
_ => unreachable!(),
}
}
fn constructor(&self) -> &'static str {
match self {
Self::Const(..) => "const",
Self::Call(..) => "call",
Self::Identifier(..) => "identifier",
Self::Parens(..) => "parens",
_ => unreachable!(),
}
}
fn sort(&self) -> &'static str {
"value"
}
}
impl<M: AstInfo> AstNode<M> for Char<M> {
fn ast_info(&self) -> &M {
let Self(meta, ..) = self;
meta
}
fn constructor(&self) -> &'static str {
"char"
}
fn sort(&self) -> &'static str {
"char"
}
}
impl<M: AstInfo> AstNode<M> for Inequality<M> {
fn ast_info(&self) -> &M {
match self {
Self::LessThan(meta, ..) => meta,
Self::LessThanOrEqual(meta, ..) => meta,
Self::GreaterThan(meta, ..) => meta,
Self::GreaterThanOrEqual(meta, ..) => meta,
Self::Plus(meta, ..) => meta,
_ => unreachable!(),
}
}
fn constructor(&self) -> &'static str {
match self {
Self::LessThan(..) => "less_than",
Self::LessThanOrEqual(..) => "less_than_or_equal",
Self::GreaterThan(..) => "greater_than",
Self::GreaterThanOrEqual(..) => "greater_than_or_equal",
Self::Plus(..) => "plus",
_ => unreachable!(),
}
}
fn sort(&self) -> &'static str {
"inequality"
}
}
impl<M: AstInfo> AstNode<M> for Expression<M> {
fn ast_info(&self) -> &M {
let Self(meta, ..) = self;
meta
}
fn constructor(&self) -> &'static str {
"equality"
}
fn sort(&self) -> &'static str {
"expression"
}
}
impl<M: AstInfo> AstNode<M> for Call<M> {
fn ast_info(&self) -> &M {
let Self(meta, ..) = self;
meta
}
fn constructor(&self) -> &'static str {
"call"
}
fn sort(&self) -> &'static str {
"call"
}
}
impl<M: AstInfo> AstNode<M> for String<M> {
fn ast_info(&self) -> &M {
let Self(meta, ..) = self;
meta
}
fn constructor(&self) -> &'static str {
"string"
}
fn sort(&self) -> &'static str {
"string"
}
}
impl<M: AstInfo> AstNode<M> for Plus<M> {
fn ast_info(&self) -> &M {
match self {
Self::Plus(meta, ..) => meta,
Self::Minus(meta, ..) => meta,
Self::Times(meta, ..) => meta,
_ => unreachable!(),
}
}
fn constructor(&self) -> &'static str {
match self {
Self::Plus(..) => "plus",
Self::Minus(..) => "minus",
Self::Times(..) => "times",
_ => unreachable!(),
}
}
fn sort(&self) -> &'static str {
"plus"
}
}
impl<M: AstInfo> AstNode<M> for Layout<M> {
fn ast_info(&self) -> &M {
let Self(meta, ..) = self;
meta
}
fn constructor(&self) -> &'static str {
"layout"
}
fn sort(&self) -> &'static str {
"layout"
}
}
impl<M: AstInfo> AstNode<M> for ConstValue<M> {
fn ast_info(&self) -> &M {
match self {
Self::Int(meta, ..) => meta,
Self::Bool(meta, ..) => meta,
Self::String(meta, ..) => meta,
Self::Char(meta, ..) => meta,
_ => unreachable!(),
}
}
fn constructor(&self) -> &'static str {
match self {
Self::Int(..) => "int",
Self::Bool(..) => "bool",
Self::String(..) => "string",
Self::Char(..) => "char",
_ => unreachable!(),
}
}
fn sort(&self) -> &'static str {
"const_value"
}
}

581
src/sunflower/from_pairs.rs Normal file
View File

@ -0,0 +1,581 @@
#![allow(unused)]
#![allow(non_snake_case)]
#![allow(non_camel_case_types)]
#![allow(clippy::all)]
// |==========================================================|
// | WARNING: THIS FILE IS AUTOMATICALLY GENERATED. |
// | CHANGES TO IT WILL BE DELETED WHEN REGENERATED. |
// | IN GENERAL, THIS FILE SHOULD NOT BE MODIFIED IN ANY WAY. |
// |==========================================================|
use super::prelude::*;
impl<M: AstInfo> FromPairs<M> for Program<M> {
fn from_pairs<G: GenerateAstInfo<Result = M>>(pair: &ParsePairSort, generator: &mut G) -> Self {
assert_eq!(pair.sort, "program");
let info = generator.generate(&pair);
Self(
info,
if let ParsePairExpression::List(_, ref l) = pair.constructor_value {
l . iter () . map (| x | if let ParsePairExpression :: Sort (_ , ref s) = x { Statement :: from_pairs (s , generator) } else { unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "program") ; }) . collect ()
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"program"
);
},
)
}
}
impl<M: AstInfo> FromPairs<M> for Statement<M> {
fn from_pairs<G: GenerateAstInfo<Result = M>>(pair: &ParsePairSort, generator: &mut G) -> Self {
assert_eq!(pair.sort, "statement");
let info = generator.generate(&pair);
match pair.constructor_name {
"expression" => {
if let ParsePairExpression::List(_, ref l) = pair.constructor_value {
Self::Expression(
info,
if let ParsePairExpression::Sort(_, ref s) = l[0usize] {
Expression::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "statement");
},
)
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"statement"
);
}
}
"let" => {
if let ParsePairExpression::List(_, ref l) = pair.constructor_value {
Self::Let(
info,
if let ParsePairExpression::Sort(_, ref s) = l[1usize] {
Identifier::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "statement");
},
if let ParsePairExpression::Sort(_, ref s) = l[3usize] {
Expression::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "statement");
},
)
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"statement"
);
}
}
a => unreachable!("{}", a),
}
}
}
impl<M: AstInfo> FromPairs<M> for Expression<M> {
fn from_pairs<G: GenerateAstInfo<Result = M>>(pair: &ParsePairSort, generator: &mut G) -> Self {
assert_eq!(pair.sort, "expression");
let info = generator.generate(&pair);
Self(
info,
if let ParsePairExpression::Sort(_, ref s) = pair.constructor_value {
Equality::from_pairs(s, generator)
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"expression"
);
},
)
}
}
impl<M: AstInfo> FromPairs<M> for Identifier<M> {
fn from_pairs<G: GenerateAstInfo<Result = M>>(pair: &ParsePairSort, generator: &mut G) -> Self {
assert_eq!(pair.sort, "identifier");
let info = generator.generate(&pair);
return Self(info, pair.constructor_value.span().as_str().to_string());
}
}
impl<M: AstInfo> FromPairs<M> for Equality<M> {
fn from_pairs<G: GenerateAstInfo<Result = M>>(pair: &ParsePairSort, generator: &mut G) -> Self {
assert_eq!(pair.sort, "equality");
let info = generator.generate(&pair);
match pair.constructor_name {
"equal" => {
if let ParsePairExpression::List(_, ref l) = pair.constructor_value {
Self::Equal(
info,
if let ParsePairExpression::Sort(_, ref s) = l[0usize] {
Inequality::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "equality");
},
if let ParsePairExpression::Sort(_, ref s) = l[2usize] {
Box::new(Expression::from_pairs(s, generator))
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "equality");
},
)
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"equality"
);
}
}
"not_equal" => {
if let ParsePairExpression::List(_, ref l) = pair.constructor_value {
Self::NotEqual(
info,
if let ParsePairExpression::Sort(_, ref s) = l[0usize] {
Inequality::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "equality");
},
if let ParsePairExpression::Sort(_, ref s) = l[2usize] {
Box::new(Expression::from_pairs(s, generator))
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "equality");
},
)
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"equality"
);
}
}
"inequality" => {
Self::Inequality(
info,
if let ParsePairExpression::Sort(_, ref s) = pair.constructor_value {
Inequality::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "equality");
},
)
}
a => unreachable!("{}", a),
}
}
}
impl<M: AstInfo> FromPairs<M> for Inequality<M> {
fn from_pairs<G: GenerateAstInfo<Result = M>>(pair: &ParsePairSort, generator: &mut G) -> Self {
assert_eq!(pair.sort, "inequality");
let info = generator.generate(&pair);
match pair.constructor_name {
"less_than" => {
if let ParsePairExpression::List(_, ref l) = pair.constructor_value {
Self::LessThan(
info,
if let ParsePairExpression::Sort(_, ref s) = l[0usize] {
Plus::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "inequality");
},
if let ParsePairExpression::Sort(_, ref s) = l[2usize] {
Box::new(Expression::from_pairs(s, generator))
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "inequality");
},
)
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"inequality"
);
}
}
"less_than_or_equal" => {
if let ParsePairExpression::List(_, ref l) = pair.constructor_value {
Self::LessThanOrEqual(
info,
if let ParsePairExpression::Sort(_, ref s) = l[0usize] {
Plus::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "inequality");
},
if let ParsePairExpression::Sort(_, ref s) = l[2usize] {
Box::new(Expression::from_pairs(s, generator))
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "inequality");
},
)
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"inequality"
);
}
}
"greater_than" => {
if let ParsePairExpression::List(_, ref l) = pair.constructor_value {
Self::GreaterThan(
info,
if let ParsePairExpression::Sort(_, ref s) = l[0usize] {
Plus::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "inequality");
},
if let ParsePairExpression::Sort(_, ref s) = l[2usize] {
Box::new(Expression::from_pairs(s, generator))
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "inequality");
},
)
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"inequality"
);
}
}
"greater_than_or_equal" => {
if let ParsePairExpression::List(_, ref l) = pair.constructor_value {
Self::GreaterThanOrEqual(
info,
if let ParsePairExpression::Sort(_, ref s) = l[0usize] {
Plus::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "inequality");
},
if let ParsePairExpression::Sort(_, ref s) = l[2usize] {
Box::new(Expression::from_pairs(s, generator))
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "inequality");
},
)
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"inequality"
);
}
}
"plus" => {
Self::Plus(
info,
if let ParsePairExpression::Sort(_, ref s) = pair.constructor_value {
Plus::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "inequality");
},
)
}
a => unreachable!("{}", a),
}
}
}
impl<M: AstInfo> FromPairs<M> for Plus<M> {
fn from_pairs<G: GenerateAstInfo<Result = M>>(pair: &ParsePairSort, generator: &mut G) -> Self {
assert_eq!(pair.sort, "plus");
let info = generator.generate(&pair);
match pair.constructor_name {
"plus" => {
if let ParsePairExpression::List(_, ref l) = pair.constructor_value {
Self::Plus(
info,
if let ParsePairExpression::Sort(_, ref s) = l[0usize] {
Times::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "plus");
},
if let ParsePairExpression::Sort(_, ref s) = l[2usize] {
Times::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "plus");
},
)
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"plus"
);
}
}
"minus" => {
if let ParsePairExpression::List(_, ref l) = pair.constructor_value {
Self::Minus(
info,
if let ParsePairExpression::Sort(_, ref s) = l[0usize] {
Times::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "plus");
},
if let ParsePairExpression::Sort(_, ref s) = l[2usize] {
Times::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "plus");
},
)
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"plus"
);
}
}
"times" => {
Self::Times(
info,
if let ParsePairExpression::Sort(_, ref s) = pair.constructor_value {
Times::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "plus");
},
)
}
a => unreachable!("{}", a),
}
}
}
impl<M: AstInfo> FromPairs<M> for Times<M> {
fn from_pairs<G: GenerateAstInfo<Result = M>>(pair: &ParsePairSort, generator: &mut G) -> Self {
assert_eq!(pair.sort, "times");
let info = generator.generate(&pair);
match pair.constructor_name {
"times" => {
if let ParsePairExpression::List(_, ref l) = pair.constructor_value {
Self::Times(
info,
if let ParsePairExpression::Sort(_, ref s) = l[0usize] {
Value::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "times");
},
if let ParsePairExpression::Sort(_, ref s) = l[2usize] {
Box::new(Expression::from_pairs(s, generator))
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "times");
},
)
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"times"
);
}
}
"divide" => {
if let ParsePairExpression::List(_, ref l) = pair.constructor_value {
Self::Divide(
info,
if let ParsePairExpression::Sort(_, ref s) = l[0usize] {
Value::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "times");
},
if let ParsePairExpression::Sort(_, ref s) = l[2usize] {
Box::new(Expression::from_pairs(s, generator))
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "times");
},
)
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"times"
);
}
}
"value" => {
Self::Value(
info,
if let ParsePairExpression::Sort(_, ref s) = pair.constructor_value {
Value::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "times");
},
)
}
a => unreachable!("{}", a),
}
}
}
impl<M: AstInfo> FromPairs<M> for Value<M> {
fn from_pairs<G: GenerateAstInfo<Result = M>>(pair: &ParsePairSort, generator: &mut G) -> Self {
assert_eq!(pair.sort, "value");
let info = generator.generate(&pair);
match pair.constructor_name {
"const" => {
Self::Const(
info,
if let ParsePairExpression::Sort(_, ref s) = pair.constructor_value {
ConstValue::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "value");
},
)
}
"call" => {
Self::Call(
info,
if let ParsePairExpression::Sort(_, ref s) = pair.constructor_value {
Call::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "value");
},
)
}
"identifier" => {
Self::Identifier(
info,
if let ParsePairExpression::Sort(_, ref s) = pair.constructor_value {
Identifier::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "value");
},
)
}
"parens" => {
if let ParsePairExpression::List(_, ref l) = pair.constructor_value {
Self::Parens(
info,
if let ParsePairExpression::Sort(_, ref s) = l[1usize] {
Box::new(Expression::from_pairs(s, generator))
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "value");
},
)
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"value"
);
}
}
a => unreachable!("{}", a),
}
}
}
impl<M: AstInfo> FromPairs<M> for ConstValue<M> {
fn from_pairs<G: GenerateAstInfo<Result = M>>(pair: &ParsePairSort, generator: &mut G) -> Self {
assert_eq!(pair.sort, "const_value");
let info = generator.generate(&pair);
match pair.constructor_name {
"int" => {
Self::Int(
info,
if let ParsePairExpression::Sort(_, ref s) = pair.constructor_value {
Int::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "const_value");
},
)
}
"bool" => {
Self::Bool(
info,
if let ParsePairExpression::Sort(_, ref s) = pair.constructor_value {
Bool::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "const_value");
},
)
}
"string" => {
Self::String(
info,
if let ParsePairExpression::Sort(_, ref s) = pair.constructor_value {
String::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "const_value");
},
)
}
"char" => {
Self::Char(
info,
if let ParsePairExpression::Sort(_, ref s) = pair.constructor_value {
Char::from_pairs(s, generator)
} else {
unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "const_value");
},
)
}
a => unreachable!("{}", a),
}
}
}
impl<M: AstInfo> FromPairs<M> for Call<M> {
fn from_pairs<G: GenerateAstInfo<Result = M>>(pair: &ParsePairSort, generator: &mut G) -> Self {
assert_eq!(pair.sort, "call");
let info = generator.generate(&pair);
if let ParsePairExpression::List(_, ref l) = pair.constructor_value {
Self(
info,
if let ParsePairExpression::Sort(_, ref s) = l[0usize] {
Identifier::from_pairs(s, generator)
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"call"
);
},
if let ParsePairExpression::List(_, ref l) = l[2usize] {
l . iter () . map (| x | if let ParsePairExpression :: Sort (_ , ref s) = x { Box :: new (Expression :: from_pairs (s , generator)) } else { unreachable ! ("expected different parse pair expression in pair to ast conversion of {}" , "call") ; }) . collect ()
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"call"
);
},
)
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"call"
);
}
}
}
impl<M: AstInfo> FromPairs<M> for Int<M> {
fn from_pairs<G: GenerateAstInfo<Result = M>>(pair: &ParsePairSort, generator: &mut G) -> Self {
assert_eq!(pair.sort, "int");
let info = generator.generate(&pair);
return Self(info, pair.constructor_value.span().as_str().to_string());
}
}
impl<M: AstInfo> FromPairs<M> for Bool<M> {
fn from_pairs<G: GenerateAstInfo<Result = M>>(pair: &ParsePairSort, generator: &mut G) -> Self {
assert_eq!(pair.sort, "bool");
let info = generator.generate(&pair);
match pair.constructor_name {
"true" => Self::True(info),
"false" => Self::False(info),
a => unreachable!("{}", a),
}
}
}
impl<M: AstInfo> FromPairs<M> for String<M> {
fn from_pairs<G: GenerateAstInfo<Result = M>>(pair: &ParsePairSort, generator: &mut G) -> Self {
assert_eq!(pair.sort, "string");
let info = generator.generate(&pair);
return Self(info, pair.constructor_value.span().as_str().to_string());
}
}
impl<M: AstInfo> FromPairs<M> for Char<M> {
fn from_pairs<G: GenerateAstInfo<Result = M>>(pair: &ParsePairSort, generator: &mut G) -> Self {
assert_eq!(pair.sort, "char");
let info = generator.generate(&pair);
return Self(info, pair.constructor_value.span().as_str().to_string());
}
}
impl<M: AstInfo> FromPairs<M> for Layout<M> {
fn from_pairs<G: GenerateAstInfo<Result = M>>(pair: &ParsePairSort, generator: &mut G) -> Self {
assert_eq!(pair.sort, "layout");
let info = generator.generate(&pair);
Self(
info,
if let ParsePairExpression::Empty(ref span) = pair.constructor_value {
span.as_str().to_string()
} else {
unreachable!(
"expected different parse pair expression in pair to ast conversion of {}",
"layout"
);
},
)
}
}

21
src/sunflower/mod.rs Normal file
View File

@ -0,0 +1,21 @@
#![allow(unused)]
#![allow(non_snake_case)]
#![allow(non_camel_case_types)]
#![allow(clippy::all)]
// |==========================================================|
// | WARNING: THIS FILE IS AUTOMATICALLY GENERATED. |
// | CHANGES TO IT WILL BE DELETED WHEN REGENERATED. |
// | IN GENERAL, THIS FILE SHOULD NOT BE MODIFIED IN ANY WAY. |
// |==========================================================|
mod ast;
pub use ast::*;
mod from_pairs;
pub use from_pairs::*;
mod ast_impls;
pub use ast_impls::*;
mod parser;
pub use parser::*;
mod prelude {
pub use super::*;
pub use lwb_parser::codegen_prelude::*;
}

631
src/sunflower/parser.rs Normal file
View File

@ -0,0 +1,631 @@
#![allow(unused)]
#![allow(non_snake_case)]
#![allow(non_camel_case_types)]
#![allow(clippy::all)]
// |==========================================================|
// | WARNING: THIS FILE IS AUTOMATICALLY GENERATED. |
// | CHANGES TO IT WILL BE DELETED WHEN REGENERATED. |
// | IN GENERAL, THIS FILE SHOULD NOT BE MODIFIED IN ANY WAY. |
// |==========================================================|
pub const PARSER: &[u8] = &[
1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 187u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 17u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 1u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 64u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 64u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 105u8, 100u8, 101u8, 110u8, 116u8, 105u8, 102u8,
105u8, 101u8, 114u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 14u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 14u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 15u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 6u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 15u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 7u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 65u8, 1u8, 0u8, 0u8, 0u8, 17u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 8u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 90u8, 0u8, 0u8, 0u8, 0u8, 18u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
0u8, 18u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 97u8, 1u8, 0u8, 0u8,
0u8, 20u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 11u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 122u8, 1u8, 0u8,
0u8, 0u8, 21u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
12u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 21u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 13u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 95u8, 0u8, 0u8, 0u8, 0u8, 23u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 14u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 14u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
10u8, 0u8, 0u8, 0u8, 23u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 13u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 15u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 23u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
13u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 16u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 24u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 17u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
0u8, 24u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 18u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 65u8, 1u8, 0u8, 0u8,
0u8, 26u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 19u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 90u8, 0u8, 0u8, 0u8,
0u8, 27u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 20u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 27u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 21u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 97u8, 1u8, 0u8, 0u8, 0u8, 29u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 22u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 122u8, 0u8, 0u8, 0u8, 0u8, 30u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 23u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
0u8, 30u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 24u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 48u8, 1u8, 0u8, 0u8,
0u8, 32u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 25u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 57u8, 1u8, 0u8, 0u8,
0u8, 33u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 26u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 33u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 27u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 45u8, 1u8, 0u8, 0u8, 0u8, 34u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 28u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
0u8, 34u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 29u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 95u8, 1u8, 39u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 26u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 30u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 40u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 13u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 31u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
13u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 115u8, 105u8, 110u8, 103u8, 108u8, 101u8, 45u8, 115u8,
116u8, 114u8, 105u8, 110u8, 103u8, 55u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 32u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 110u8, 111u8, 45u8, 108u8, 97u8, 121u8, 111u8, 117u8, 116u8, 1u8, 0u8, 0u8, 0u8, 67u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 53u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 33u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8, 67u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 53u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 34u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 67u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 6u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 35u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 6u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 115u8, 116u8, 114u8, 105u8, 110u8, 103u8,
3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 6u8, 0u8, 0u8, 0u8, 76u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 36u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 77u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 37u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 34u8, 0u8, 0u8, 0u8, 0u8, 81u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 6u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 38u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8,
0u8, 81u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 39u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 81u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 40u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 83u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 41u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 83u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 42u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 92u8, 1u8, 0u8, 0u8, 0u8, 84u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 43u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 84u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 44u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
34u8, 6u8, 0u8, 0u8, 0u8, 88u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 45u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 89u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 46u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 34u8,
1u8, 94u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 26u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 47u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 95u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 13u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 48u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 13u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 115u8, 105u8, 110u8, 103u8, 108u8, 101u8,
45u8, 115u8, 116u8, 114u8, 105u8, 110u8, 103u8, 110u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 49u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 110u8, 111u8, 45u8, 108u8, 97u8, 121u8, 111u8, 117u8, 116u8, 1u8, 0u8, 0u8,
0u8, 122u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 48u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 50u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8, 122u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 48u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 51u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 122u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 52u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 99u8, 104u8, 97u8, 114u8, 3u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 6u8, 0u8, 0u8, 0u8, 129u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 53u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 130u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 54u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 39u8, 10u8, 0u8, 0u8, 0u8, 133u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 55u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 133u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 56u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 1u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 135u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 57u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 135u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 58u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 92u8, 1u8, 0u8, 0u8, 0u8, 136u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 59u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 136u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 60u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 39u8, 6u8, 0u8, 0u8, 0u8, 139u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 61u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 140u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 62u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 39u8, 1u8, 144u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 26u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 63u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 145u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 13u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 64u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 13u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 115u8, 105u8, 110u8, 103u8, 108u8, 101u8, 45u8, 115u8, 116u8, 114u8, 105u8,
110u8, 103u8, 160u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
65u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 110u8, 111u8,
45u8, 108u8, 97u8, 121u8, 111u8, 117u8, 116u8, 1u8, 0u8, 0u8, 0u8, 172u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 40u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 66u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 2u8, 0u8, 0u8, 0u8, 172u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 40u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 67u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 172u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 68u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 105u8, 110u8, 116u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8,
0u8, 0u8, 0u8, 178u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 6u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 69u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 178u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 70u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
178u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 71u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
179u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 72u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 179u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 73u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 48u8, 1u8, 0u8, 0u8, 0u8, 181u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 74u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 57u8, 1u8, 186u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 26u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 75u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 187u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 13u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
76u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 13u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 115u8, 105u8,
110u8, 103u8, 108u8, 101u8, 45u8, 115u8, 116u8, 114u8, 105u8, 110u8, 103u8, 202u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 77u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 110u8, 111u8, 45u8, 108u8, 97u8, 121u8,
111u8, 117u8, 116u8, 1u8, 0u8, 0u8, 0u8, 214u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 46u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 78u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8,
214u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 46u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 79u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 214u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 80u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 98u8, 111u8, 111u8, 108u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8,
220u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 19u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 81u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 224u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 82u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 116u8, 114u8, 117u8, 101u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 6u8, 0u8, 0u8, 0u8,
231u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 6u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 83u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8,
232u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 84u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 116u8, 1u8, 0u8, 0u8,
0u8, 233u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 85u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 114u8, 1u8, 0u8,
0u8, 0u8, 234u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
86u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 117u8, 1u8,
0u8, 0u8, 0u8, 235u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 87u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8,
0u8, 1u8, 0u8, 0u8, 0u8, 239u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 21u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 88u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 243u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 89u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 102u8, 97u8, 108u8, 115u8, 101u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 6u8, 0u8, 0u8, 0u8, 251u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 7u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 90u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 1u8, 0u8, 0u8, 0u8, 252u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 91u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
102u8, 1u8, 0u8, 0u8, 0u8, 253u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 92u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
97u8, 1u8, 0u8, 0u8, 0u8, 254u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 93u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
108u8, 1u8, 0u8, 0u8, 0u8, 255u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 94u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
115u8, 1u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 95u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
101u8, 0u8, 1u8, 0u8, 0u8, 0u8, 5u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 83u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 96u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 5u8, 1u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 83u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 97u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 5u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 11u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
98u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 11u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 99u8, 111u8,
110u8, 115u8, 116u8, 95u8, 118u8, 97u8, 108u8, 117u8, 101u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 1u8, 0u8, 0u8, 0u8, 18u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 15u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 99u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 22u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 100u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 105u8, 110u8, 116u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
9u8, 0u8, 0u8, 0u8, 28u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 101u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 28u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 102u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 105u8, 110u8, 116u8, 0u8, 1u8, 0u8, 0u8, 0u8, 33u8, 1u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 17u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 103u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 37u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
104u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 98u8, 111u8,
111u8, 108u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 44u8, 1u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 105u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 44u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
106u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 98u8, 111u8,
111u8, 108u8, 0u8, 1u8, 0u8, 0u8, 0u8, 50u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 21u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 107u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 54u8, 1u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 6u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 108u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 6u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 115u8, 116u8, 114u8, 105u8, 110u8, 103u8, 1u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 63u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
6u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 109u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 63u8, 1u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 6u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 110u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 6u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 115u8, 116u8, 114u8, 105u8, 110u8,
103u8, 0u8, 1u8, 0u8, 0u8, 0u8, 71u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 17u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 111u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 75u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 112u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 99u8, 104u8, 97u8, 114u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 82u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 113u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 82u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 114u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 99u8, 104u8, 97u8, 114u8, 0u8, 1u8, 0u8, 0u8, 0u8, 89u8,
1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 56u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 115u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8, 89u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 56u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 116u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 89u8, 1u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 117u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 99u8, 97u8, 108u8, 108u8, 4u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 96u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 118u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 96u8, 1u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 119u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 105u8, 100u8, 101u8, 110u8, 116u8,
105u8, 102u8, 105u8, 101u8, 114u8, 6u8, 0u8, 0u8, 0u8, 107u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 120u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 108u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 121u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 40u8, 8u8, 0u8, 0u8, 0u8, 111u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 29u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 122u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
9u8, 0u8, 0u8, 0u8, 121u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 123u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 121u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 124u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 120u8, 112u8, 114u8, 101u8, 115u8, 115u8, 105u8, 111u8,
110u8, 6u8, 0u8, 0u8, 0u8, 133u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 125u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 1u8, 0u8, 0u8, 0u8, 134u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 126u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 44u8, 3u8, 0u8, 0u8, 0u8, 138u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 127u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 6u8, 0u8, 0u8, 0u8, 141u8,
1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 128u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 142u8,
1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 129u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 41u8, 0u8, 1u8, 0u8, 0u8, 0u8,
147u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 111u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 130u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 147u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
111u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 131u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 147u8, 1u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 132u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 118u8, 97u8, 108u8, 117u8, 101u8,
4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 154u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 25u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 133u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
158u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 134u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 99u8, 111u8, 110u8,
115u8, 116u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 166u8, 1u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 11u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 135u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 166u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 11u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
136u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 11u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 99u8, 111u8,
110u8, 115u8, 116u8, 95u8, 118u8, 97u8, 108u8, 117u8, 101u8, 0u8, 1u8, 0u8, 0u8, 0u8, 179u8,
1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 17u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 137u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 183u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 138u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 99u8, 97u8, 108u8, 108u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8,
190u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 139u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 190u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 140u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 99u8, 97u8, 108u8, 108u8, 0u8, 1u8, 0u8, 0u8, 0u8, 196u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 29u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 141u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
200u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 142u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 105u8, 100u8, 101u8,
110u8, 116u8, 105u8, 102u8, 105u8, 101u8, 114u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8,
0u8, 0u8, 0u8, 213u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 143u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 213u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 144u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 105u8, 100u8, 101u8, 110u8, 116u8, 105u8, 102u8, 105u8, 101u8, 114u8,
0u8, 1u8, 0u8, 0u8, 0u8, 225u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 33u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 145u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 229u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 6u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 146u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 6u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 112u8, 97u8, 114u8, 101u8, 110u8, 115u8, 3u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 6u8, 0u8, 0u8, 0u8, 238u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 147u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 239u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 148u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 40u8, 9u8, 0u8, 0u8, 0u8, 242u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 149u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 242u8, 1u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 150u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 120u8, 112u8, 114u8, 101u8,
115u8, 115u8, 105u8, 111u8, 110u8, 6u8, 0u8, 0u8, 0u8, 253u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 151u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 254u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 152u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 41u8, 0u8, 1u8, 0u8, 0u8, 0u8, 3u8, 2u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 123u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 153u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
1u8, 0u8, 0u8, 0u8, 3u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 123u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 154u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
8u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 155u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 8u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 113u8, 117u8, 97u8, 108u8, 105u8, 116u8, 121u8, 3u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 13u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
40u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 156u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 17u8, 2u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 157u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 113u8, 117u8, 97u8, 108u8,
3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 25u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 158u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 25u8,
2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 159u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 105u8, 110u8, 101u8, 113u8,
117u8, 97u8, 108u8, 105u8, 116u8, 121u8, 6u8, 0u8, 0u8, 0u8, 36u8, 2u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 160u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 37u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 161u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 61u8, 1u8, 0u8, 0u8, 0u8, 38u8, 2u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 162u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 61u8, 9u8, 0u8, 0u8, 0u8, 41u8, 2u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 163u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 41u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 164u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 120u8,
112u8, 114u8, 101u8, 115u8, 115u8, 105u8, 111u8, 110u8, 0u8, 1u8, 0u8, 0u8, 0u8, 53u8, 2u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 44u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 165u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 57u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 166u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 110u8,
111u8, 116u8, 95u8, 101u8, 113u8, 117u8, 97u8, 108u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
9u8, 0u8, 0u8, 0u8, 69u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 167u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 69u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 168u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 105u8, 110u8, 101u8, 113u8, 117u8, 97u8, 108u8, 105u8, 116u8,
121u8, 6u8, 0u8, 0u8, 0u8, 80u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 169u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 1u8, 0u8, 0u8, 0u8, 81u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 170u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
33u8, 1u8, 0u8, 0u8, 0u8, 82u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 171u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 61u8, 9u8, 0u8, 0u8, 0u8, 85u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 172u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 85u8, 2u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 173u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 120u8, 112u8, 114u8, 101u8, 115u8, 115u8,
105u8, 111u8, 110u8, 0u8, 1u8, 0u8, 0u8, 0u8, 97u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 29u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 174u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 2u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 175u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 105u8, 110u8, 101u8, 113u8, 117u8,
97u8, 108u8, 105u8, 116u8, 121u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8,
114u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 176u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 114u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 177u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 105u8, 110u8, 101u8, 113u8, 117u8, 97u8, 108u8, 105u8, 116u8, 121u8, 0u8, 1u8, 0u8,
0u8, 0u8, 127u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 203u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
178u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 127u8, 2u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 203u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 179u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
127u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 180u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 105u8, 110u8, 101u8,
113u8, 117u8, 97u8, 108u8, 105u8, 116u8, 121u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8,
0u8, 0u8, 0u8, 139u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 37u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 181u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 143u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 182u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 108u8, 101u8, 115u8, 115u8, 95u8, 116u8, 104u8, 97u8, 110u8, 3u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 155u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 183u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 155u8, 2u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 184u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 112u8, 108u8, 117u8, 115u8, 6u8,
0u8, 0u8, 0u8, 160u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 185u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8,
0u8, 0u8, 0u8, 161u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 186u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 60u8,
9u8, 0u8, 0u8, 0u8, 164u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 187u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 164u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 188u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 120u8, 112u8, 114u8, 101u8, 115u8, 115u8, 105u8, 111u8,
110u8, 0u8, 1u8, 0u8, 0u8, 0u8, 176u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 47u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 189u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 180u8, 2u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 18u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 190u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
18u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 108u8, 101u8, 115u8, 115u8, 95u8, 116u8, 104u8, 97u8,
110u8, 95u8, 111u8, 114u8, 95u8, 101u8, 113u8, 117u8, 97u8, 108u8, 3u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 201u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 191u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 201u8, 2u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 192u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 112u8, 108u8, 117u8, 115u8, 6u8, 0u8, 0u8, 0u8,
206u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 193u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8,
207u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 194u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 60u8, 1u8, 0u8, 0u8, 0u8,
208u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 195u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 61u8, 9u8, 0u8, 0u8, 0u8,
211u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 196u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 211u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 197u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 101u8, 120u8, 112u8, 114u8, 101u8, 115u8, 115u8, 105u8, 111u8, 110u8, 0u8, 1u8, 0u8,
0u8, 0u8, 223u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 40u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
198u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 227u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 12u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 199u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 12u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 103u8, 114u8, 101u8, 97u8, 116u8, 101u8, 114u8, 95u8, 116u8, 104u8, 97u8,
110u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 242u8, 2u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 200u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 242u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 201u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 112u8, 108u8, 117u8,
115u8, 6u8, 0u8, 0u8, 0u8, 247u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 202u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 1u8, 0u8, 0u8, 0u8, 248u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 203u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 62u8, 9u8, 0u8, 0u8, 0u8, 251u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 204u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 251u8, 2u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 205u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 120u8, 112u8, 114u8, 101u8, 115u8, 115u8,
105u8, 111u8, 110u8, 0u8, 1u8, 0u8, 0u8, 0u8, 7u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 50u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 206u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 11u8, 3u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 21u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 207u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 21u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 103u8, 114u8, 101u8, 97u8, 116u8,
101u8, 114u8, 95u8, 116u8, 104u8, 97u8, 110u8, 95u8, 111u8, 114u8, 95u8, 101u8, 113u8, 117u8,
97u8, 108u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 35u8, 3u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 208u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 35u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
209u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 112u8, 108u8,
117u8, 115u8, 6u8, 0u8, 0u8, 0u8, 40u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 210u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 41u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 211u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 62u8, 1u8, 0u8, 0u8, 0u8, 42u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 212u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 61u8, 9u8, 0u8, 0u8, 0u8, 45u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 213u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 45u8, 3u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 214u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 120u8, 112u8, 114u8, 101u8, 115u8, 115u8,
105u8, 111u8, 110u8, 0u8, 1u8, 0u8, 0u8, 0u8, 57u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 17u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 215u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 61u8, 3u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 216u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 112u8, 108u8, 117u8, 115u8, 1u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 68u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 217u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 68u8, 3u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 218u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 112u8, 108u8, 117u8, 115u8, 0u8, 1u8,
0u8, 0u8, 0u8, 75u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 37u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 219u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 75u8, 3u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 37u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 220u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 75u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 221u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 120u8,
112u8, 114u8, 101u8, 115u8, 115u8, 105u8, 111u8, 110u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
1u8, 0u8, 0u8, 0u8, 87u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 25u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 222u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 91u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
8u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 223u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 8u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 113u8, 117u8, 97u8, 108u8, 105u8, 116u8, 121u8, 1u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 102u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
8u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 224u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 102u8, 3u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 8u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 225u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 8u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 113u8, 117u8, 97u8, 108u8,
105u8, 116u8, 121u8, 0u8, 1u8, 0u8, 0u8, 0u8, 113u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 82u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 226u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
0u8, 113u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 82u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 227u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 113u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 228u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 112u8, 108u8, 117u8, 115u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8,
0u8, 0u8, 119u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 28u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
229u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 123u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 230u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 112u8, 108u8, 117u8, 115u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8,
0u8, 0u8, 0u8, 130u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 231u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 130u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 232u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 116u8, 105u8, 109u8, 101u8, 115u8, 6u8, 0u8, 0u8, 0u8, 136u8, 3u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 233u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 137u8, 3u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 234u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 43u8, 9u8, 0u8, 0u8, 0u8, 140u8,
3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 235u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 140u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 236u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 116u8, 105u8, 109u8, 101u8, 115u8, 0u8, 1u8, 0u8, 0u8, 0u8, 147u8, 3u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 29u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 237u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 151u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 238u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 109u8, 105u8, 110u8,
117u8, 115u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 159u8, 3u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 239u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 159u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
240u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 116u8, 105u8,
109u8, 101u8, 115u8, 6u8, 0u8, 0u8, 0u8, 165u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 241u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 166u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 242u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 45u8, 9u8, 0u8, 0u8, 0u8, 169u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 243u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 169u8, 3u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 244u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 116u8, 105u8, 109u8, 101u8, 115u8, 0u8,
1u8, 0u8, 0u8, 0u8, 176u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 19u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 245u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 180u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 246u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 116u8, 105u8, 109u8, 101u8, 115u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 188u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 247u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 188u8, 3u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 248u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 116u8, 105u8, 109u8, 101u8, 115u8, 0u8, 1u8, 0u8, 0u8,
0u8, 196u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 95u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 249u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 196u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 95u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 250u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 196u8,
3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 251u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 116u8, 105u8, 109u8, 101u8,
115u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 203u8, 3u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 34u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 252u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 207u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 253u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 116u8, 105u8, 109u8,
101u8, 115u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 215u8, 3u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 254u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 215u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
255u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 118u8, 97u8,
108u8, 117u8, 101u8, 6u8, 0u8, 0u8, 0u8, 221u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 222u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 42u8, 9u8, 0u8, 0u8, 0u8, 225u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 225u8, 3u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 120u8, 112u8, 114u8, 101u8, 115u8, 115u8,
105u8, 111u8, 110u8, 0u8, 1u8, 0u8, 0u8, 0u8, 237u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 35u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 241u8, 3u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 6u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 6u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 100u8, 105u8, 118u8, 105u8, 100u8, 101u8,
3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 250u8, 3u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 6u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
250u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 7u8, 1u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 118u8, 97u8, 108u8,
117u8, 101u8, 6u8, 0u8, 0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 8u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 1u8, 0u8, 0u8, 0u8, 1u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 9u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 47u8,
9u8, 0u8, 0u8, 0u8, 4u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 10u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 4u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 11u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 120u8, 112u8, 114u8, 101u8, 115u8, 115u8, 105u8, 111u8, 110u8,
0u8, 1u8, 0u8, 0u8, 0u8, 16u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 19u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 12u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 20u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 13u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 118u8, 97u8, 108u8, 117u8, 101u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 28u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 14u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 28u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 15u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 118u8, 97u8, 108u8, 117u8, 101u8, 0u8, 1u8, 0u8, 0u8, 0u8, 36u8,
4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 91u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 16u8, 1u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 36u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 91u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 17u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 36u8, 4u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 18u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 115u8, 116u8, 97u8, 116u8, 101u8, 109u8,
101u8, 110u8, 116u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 47u8, 4u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 33u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 19u8, 1u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 51u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 20u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
101u8, 120u8, 112u8, 114u8, 101u8, 115u8, 115u8, 105u8, 111u8, 110u8, 2u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 64u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 21u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 64u8, 4u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 22u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 120u8, 112u8, 114u8, 101u8, 115u8, 115u8,
105u8, 111u8, 110u8, 6u8, 0u8, 0u8, 0u8, 75u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 23u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 76u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 24u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 59u8, 0u8, 1u8, 0u8, 0u8, 0u8, 80u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 47u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 25u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 84u8, 4u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 26u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 108u8, 101u8, 116u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 6u8, 0u8, 0u8, 0u8, 90u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 5u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 27u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8,
0u8, 0u8, 0u8, 91u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
28u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 108u8, 1u8,
0u8, 0u8, 0u8, 92u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
29u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 1u8,
0u8, 0u8, 0u8, 93u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
30u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 116u8, 9u8,
0u8, 0u8, 0u8, 96u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 31u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 96u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 32u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 105u8, 100u8, 101u8, 110u8, 116u8, 105u8, 102u8, 105u8, 101u8, 114u8,
6u8, 0u8, 0u8, 0u8, 107u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 33u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8,
0u8, 0u8, 0u8, 108u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 34u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 61u8,
9u8, 0u8, 0u8, 0u8, 111u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 35u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 111u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 36u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 101u8, 120u8, 112u8, 114u8, 101u8, 115u8, 115u8, 105u8, 111u8,
110u8, 6u8, 0u8, 0u8, 0u8, 122u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 3u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 37u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
1u8, 0u8, 0u8, 0u8, 123u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 38u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
59u8, 0u8, 1u8, 0u8, 0u8, 0u8, 128u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 21u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 39u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8, 128u8, 4u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 21u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 40u8, 1u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 128u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 7u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 41u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 7u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
112u8, 114u8, 111u8, 103u8, 114u8, 97u8, 109u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 138u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 42u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 138u8, 4u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 43u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
138u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 44u8, 1u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 115u8, 116u8, 97u8,
116u8, 101u8, 109u8, 101u8, 110u8, 116u8, 0u8, 0u8, 0u8, 0u8, 0u8, 151u8, 4u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 17u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 45u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 151u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 17u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 46u8,
1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 160u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 7u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 47u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 7u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 112u8, 114u8, 111u8, 103u8, 114u8, 97u8, 109u8, 1u8, 0u8, 0u8, 0u8, 169u8, 4u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 19u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 48u8, 1u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8, 169u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 19u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 49u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 169u8, 4u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 6u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 50u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
6u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 108u8, 97u8, 121u8, 111u8, 117u8, 116u8, 1u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 10u8, 0u8, 0u8, 0u8, 178u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 9u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 51u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 178u8, 4u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 9u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 52u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 179u8, 4u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 53u8, 1u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 179u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 54u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 114u8, 1u8, 0u8, 0u8, 0u8, 181u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 55u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 181u8, 4u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 56u8, 1u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 110u8, 1u8, 0u8, 0u8, 0u8, 183u8, 4u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 57u8, 1u8, 0u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 183u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 58u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
0u8, 0u8, 116u8, 1u8, 0u8, 0u8, 0u8, 185u8, 4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 0u8, 59u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 185u8,
4u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 60u8, 1u8, 0u8, 0u8,
0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 32u8, 0u8,
];