use std::convert::TryInto;
use std::fmt;
use crate::{ParserOptions, ParserResult};
use crate::{Lexer, Builder, CurrentArgStack, StaticEnvironment, MaxNumparamStack, VariablesStack};
use crate::lex_states::*;
use crate::{Context as ParserContext, ContextItem};
use crate::builder::{LoopType, KeywordCmd, LogicalOp, PKwLabel, ArgsType};
use crate::builder::clone_value;
use crate::nodes::{Lvar, Mlhs};
use crate::parse_value::ParseValue as Value;
use crate::parse_value::*;
use crate::Node;
use crate::source::Range;
use crate::{Diagnostic, DiagnosticMessage, ErrorLevel};
use crate::error::Diagnostics;
#[derive(Debug)]
pub struct Parser {
pub yylexer: Lexer,
#[allow(dead_code)]
yy_error_verbose: bool,
yynerrs: i32,
pub yydebug: bool,
yyerrstatus_: i32,
result: Option<Node>,
builder: Builder,
current_arg_stack: CurrentArgStack,
pub static_env: StaticEnvironment,
context: ParserContext,
last_token: Token,
max_numparam_stack: MaxNumparamStack,
pattern_variables: VariablesStack,
pattern_hash_keys: VariablesStack,
tokens: Vec<Token>,
diagnostics: Diagnostics,
}
#[inline]
fn usize_to_i32(v: usize) -> i32 {
v.try_into().unwrap()
}
#[inline]
fn i32_to_usize(v: i32) -> usize {
v.try_into().unwrap()
}
#[derive(Debug, Clone)]
pub enum TokenValue {
String(String),
InvalidString(Vec<u8>),
}
impl TokenValue {
pub fn to_string_lossy(&self) -> String {
match &self {
Self::String(s) => s.clone(),
Self::InvalidString(bytes) => String::from_utf8_lossy(&bytes).into_owned(),
}
}
pub fn to_bytes(&self) -> Vec<u8> {
match &self {
Self::String(s) => s.as_bytes().to_vec(),
Self::InvalidString(bytes) => bytes.clone(),
}
}
}
pub fn token_name(id: i32) -> String {
let first_token = Lexer::YYerror;
if id > first_token + 1 {
let pos: usize = (id - first_token + 1)
.try_into()
.expect("failed to cast token id into usize, is it negative?");
Lexer::TOKEN_NAMES[pos].to_owned()
} else if id == 0 {
"EOF".to_owned()
} else {
panic!("token_name fails, {} (first token = {})", id, first_token)
}
}
#[derive(Clone)]
pub struct Token {
pub token_type: i32,
pub token_value: TokenValue,
pub loc: Loc
}
impl fmt::Debug for Token {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(&format!(
"[{}, {:?}, {}...{}]",
token_name(self.token_type),
self.token_value,
self.loc.begin,
self.loc.end
))
}
}
impl Token {
pub fn to_string_lossy(&self) -> String {
self.token_value.to_string_lossy()
}
pub fn to_bytes(&self) -> Vec<u8> {
self.token_value.to_bytes()
}
}
#[derive(Debug, Clone, PartialEq)]
pub struct Loc {
pub begin: usize,
pub end: usize,
}
impl Loc {
pub fn to_range(&self) -> std::ops::Range<usize> {
self.begin..self.end
}
}
impl Parser {
#[allow(dead_code)]
const BISON_VERSION: &'static str = "3.7.3";
}
fn make_yylloc(rhs: &YYStack, n: usize) -> Loc {
if 0 < n {
Loc { begin: rhs.location_at(n - 1).begin, end: rhs.location_at(0).end }
} else {
Loc { begin: rhs.location_at(0).end, end: rhs.location_at(0).end }
}
}
#[derive(Debug, Clone, PartialEq)]
pub struct SymbolKind { value: i32 }
impl SymbolKind {
#[allow(non_upper_case_globals)]
const S_YYEOF: i32 = 0;
#[allow(non_upper_case_globals)]
const S_YYerror: i32 = 1;
#[allow(non_upper_case_globals)]
const S_YYUNDEF: i32 = 2;
#[allow(non_upper_case_globals)]
const S_kCLASS: i32 = 3;
#[allow(non_upper_case_globals)]
const S_kMODULE: i32 = 4;
#[allow(non_upper_case_globals)]
const S_kDEF: i32 = 5;
#[allow(non_upper_case_globals)]
const S_kUNDEF: i32 = 6;
#[allow(non_upper_case_globals)]
const S_kBEGIN: i32 = 7;
#[allow(non_upper_case_globals)]
const S_kRESCUE: i32 = 8;
#[allow(non_upper_case_globals)]
const S_kENSURE: i32 = 9;
#[allow(non_upper_case_globals)]
const S_kEND: i32 = 10;
#[allow(non_upper_case_globals)]
const S_kIF: i32 = 11;
#[allow(non_upper_case_globals)]
const S_kUNLESS: i32 = 12;
#[allow(non_upper_case_globals)]
const S_kTHEN: i32 = 13;
#[allow(non_upper_case_globals)]
const S_kELSIF: i32 = 14;
#[allow(non_upper_case_globals)]
const S_kELSE: i32 = 15;
#[allow(non_upper_case_globals)]
const S_kCASE: i32 = 16;
#[allow(non_upper_case_globals)]
const S_kWHEN: i32 = 17;
#[allow(non_upper_case_globals)]
const S_kWHILE: i32 = 18;
#[allow(non_upper_case_globals)]
const S_kUNTIL: i32 = 19;
#[allow(non_upper_case_globals)]
const S_kFOR: i32 = 20;
#[allow(non_upper_case_globals)]
const S_kBREAK: i32 = 21;
#[allow(non_upper_case_globals)]
const S_kNEXT: i32 = 22;
#[allow(non_upper_case_globals)]
const S_kREDO: i32 = 23;
#[allow(non_upper_case_globals)]
const S_kRETRY: i32 = 24;
#[allow(non_upper_case_globals)]
const S_kIN: i32 = 25;
#[allow(non_upper_case_globals)]
const S_kDO: i32 = 26;
#[allow(non_upper_case_globals)]
const S_kDO_COND: i32 = 27;
#[allow(non_upper_case_globals)]
const S_kDO_BLOCK: i32 = 28;
#[allow(non_upper_case_globals)]
const S_kDO_LAMBDA: i32 = 29;
#[allow(non_upper_case_globals)]
const S_kRETURN: i32 = 30;
#[allow(non_upper_case_globals)]
const S_kYIELD: i32 = 31;
#[allow(non_upper_case_globals)]
const S_kSUPER: i32 = 32;
#[allow(non_upper_case_globals)]
const S_kSELF: i32 = 33;
#[allow(non_upper_case_globals)]
const S_kNIL: i32 = 34;
#[allow(non_upper_case_globals)]
const S_kTRUE: i32 = 35;
#[allow(non_upper_case_globals)]
const S_kFALSE: i32 = 36;
#[allow(non_upper_case_globals)]
const S_kAND: i32 = 37;
#[allow(non_upper_case_globals)]
const S_kOR: i32 = 38;
#[allow(non_upper_case_globals)]
const S_kNOT: i32 = 39;
#[allow(non_upper_case_globals)]
const S_kIF_MOD: i32 = 40;
#[allow(non_upper_case_globals)]
const S_kUNLESS_MOD: i32 = 41;
#[allow(non_upper_case_globals)]
const S_kWHILE_MOD: i32 = 42;
#[allow(non_upper_case_globals)]
const S_kUNTIL_MOD: i32 = 43;
#[allow(non_upper_case_globals)]
const S_kRESCUE_MOD: i32 = 44;
#[allow(non_upper_case_globals)]
const S_kALIAS: i32 = 45;
#[allow(non_upper_case_globals)]
const S_kDEFINED: i32 = 46;
#[allow(non_upper_case_globals)]
const S_klBEGIN: i32 = 47;
#[allow(non_upper_case_globals)]
const S_klEND: i32 = 48;
#[allow(non_upper_case_globals)]
const S_k__LINE__: i32 = 49;
#[allow(non_upper_case_globals)]
const S_k__FILE__: i32 = 50;
#[allow(non_upper_case_globals)]
const S_k__ENCODING__: i32 = 51;
#[allow(non_upper_case_globals)]
const S_tIDENTIFIER: i32 = 52;
#[allow(non_upper_case_globals)]
const S_tFID: i32 = 53;
#[allow(non_upper_case_globals)]
const S_tGVAR: i32 = 54;
#[allow(non_upper_case_globals)]
const S_tIVAR: i32 = 55;
#[allow(non_upper_case_globals)]
const S_tCONSTANT: i32 = 56;
#[allow(non_upper_case_globals)]
const S_tCVAR: i32 = 57;
#[allow(non_upper_case_globals)]
const S_tLABEL: i32 = 58;
#[allow(non_upper_case_globals)]
const S_tINTEGER: i32 = 59;
#[allow(non_upper_case_globals)]
const S_tFLOAT: i32 = 60;
#[allow(non_upper_case_globals)]
const S_tRATIONAL: i32 = 61;
#[allow(non_upper_case_globals)]
const S_tIMAGINARY: i32 = 62;
#[allow(non_upper_case_globals)]
const S_tCHAR: i32 = 63;
#[allow(non_upper_case_globals)]
const S_tNTH_REF: i32 = 64;
#[allow(non_upper_case_globals)]
const S_tBACK_REF: i32 = 65;
#[allow(non_upper_case_globals)]
const S_tSTRING_CONTENT: i32 = 66;
#[allow(non_upper_case_globals)]
const S_tREGEXP_END: i32 = 67;
#[allow(non_upper_case_globals)]
const S_tDOT: i32 = 68;
#[allow(non_upper_case_globals)]
const S_tBACKSLASH: i32 = 69;
#[allow(non_upper_case_globals)]
const S_tSP: i32 = 70;
#[allow(non_upper_case_globals)]
const S_tSLASH_T: i32 = 71;
#[allow(non_upper_case_globals)]
const S_tSLASH_F: i32 = 72;
#[allow(non_upper_case_globals)]
const S_tSLASH_R: i32 = 73;
#[allow(non_upper_case_globals)]
const S_tVTAB: i32 = 74;
#[allow(non_upper_case_globals)]
const S_tUPLUS: i32 = 75;
#[allow(non_upper_case_globals)]
const S_tUMINUS: i32 = 76;
#[allow(non_upper_case_globals)]
const S_tPOW: i32 = 77;
#[allow(non_upper_case_globals)]
const S_tCMP: i32 = 78;
#[allow(non_upper_case_globals)]
const S_tEQ: i32 = 79;
#[allow(non_upper_case_globals)]
const S_tEQQ: i32 = 80;
#[allow(non_upper_case_globals)]
const S_tNEQ: i32 = 81;
#[allow(non_upper_case_globals)]
const S_tGEQ: i32 = 82;
#[allow(non_upper_case_globals)]
const S_tLEQ: i32 = 83;
#[allow(non_upper_case_globals)]
const S_tANDOP: i32 = 84;
#[allow(non_upper_case_globals)]
const S_tOROP: i32 = 85;
#[allow(non_upper_case_globals)]
const S_tMATCH: i32 = 86;
#[allow(non_upper_case_globals)]
const S_tNMATCH: i32 = 87;
#[allow(non_upper_case_globals)]
const S_tDOT2: i32 = 88;
#[allow(non_upper_case_globals)]
const S_tDOT3: i32 = 89;
#[allow(non_upper_case_globals)]
const S_tBDOT2: i32 = 90;
#[allow(non_upper_case_globals)]
const S_tBDOT3: i32 = 91;
#[allow(non_upper_case_globals)]
const S_tAREF: i32 = 92;
#[allow(non_upper_case_globals)]
const S_tASET: i32 = 93;
#[allow(non_upper_case_globals)]
const S_tLSHFT: i32 = 94;
#[allow(non_upper_case_globals)]
const S_tRSHFT: i32 = 95;
#[allow(non_upper_case_globals)]
const S_tANDDOT: i32 = 96;
#[allow(non_upper_case_globals)]
const S_tCOLON2: i32 = 97;
#[allow(non_upper_case_globals)]
const S_tCOLON3: i32 = 98;
#[allow(non_upper_case_globals)]
const S_tOP_ASGN: i32 = 99;
#[allow(non_upper_case_globals)]
const S_tASSOC: i32 = 100;
#[allow(non_upper_case_globals)]
const S_tLPAREN: i32 = 101;
#[allow(non_upper_case_globals)]
const S_tLPAREN_ARG: i32 = 102;
#[allow(non_upper_case_globals)]
const S_tRPAREN: i32 = 103;
#[allow(non_upper_case_globals)]
const S_tLBRACK: i32 = 104;
#[allow(non_upper_case_globals)]
const S_tLBRACE: i32 = 105;
#[allow(non_upper_case_globals)]
const S_tLBRACE_ARG: i32 = 106;
#[allow(non_upper_case_globals)]
const S_tSTAR: i32 = 107;
#[allow(non_upper_case_globals)]
const S_tDSTAR: i32 = 108;
#[allow(non_upper_case_globals)]
const S_tAMPER: i32 = 109;
#[allow(non_upper_case_globals)]
const S_tLAMBDA: i32 = 110;
#[allow(non_upper_case_globals)]
const S_tSYMBEG: i32 = 111;
#[allow(non_upper_case_globals)]
const S_tSTRING_BEG: i32 = 112;
#[allow(non_upper_case_globals)]
const S_tXSTRING_BEG: i32 = 113;
#[allow(non_upper_case_globals)]
const S_tREGEXP_BEG: i32 = 114;
#[allow(non_upper_case_globals)]
const S_tWORDS_BEG: i32 = 115;
#[allow(non_upper_case_globals)]
const S_tQWORDS_BEG: i32 = 116;
#[allow(non_upper_case_globals)]
const S_tSYMBOLS_BEG: i32 = 117;
#[allow(non_upper_case_globals)]
const S_tQSYMBOLS_BEG: i32 = 118;
#[allow(non_upper_case_globals)]
const S_tSTRING_END: i32 = 119;
#[allow(non_upper_case_globals)]
const S_tSTRING_DEND: i32 = 120;
#[allow(non_upper_case_globals)]
const S_tSTRING_DBEG: i32 = 121;
#[allow(non_upper_case_globals)]
const S_tSTRING_DVAR: i32 = 122;
#[allow(non_upper_case_globals)]
const S_tLAMBEG: i32 = 123;
#[allow(non_upper_case_globals)]
const S_tLABEL_END: i32 = 124;
#[allow(non_upper_case_globals)]
const S_tCOMMA: i32 = 125;
#[allow(non_upper_case_globals)]
const S_tLCURLY: i32 = 126;
#[allow(non_upper_case_globals)]
const S_tRCURLY: i32 = 127;
#[allow(non_upper_case_globals)]
const S_tLBRACK2: i32 = 128;
#[allow(non_upper_case_globals)]
const S_tEQL: i32 = 129;
#[allow(non_upper_case_globals)]
const S_tPIPE: i32 = 130;
#[allow(non_upper_case_globals)]
const S_tAMPER2: i32 = 131;
#[allow(non_upper_case_globals)]
const S_tGT: i32 = 132;
#[allow(non_upper_case_globals)]
const S_tLT: i32 = 133;
#[allow(non_upper_case_globals)]
const S_tBACK_REF2: i32 = 134;
#[allow(non_upper_case_globals)]
const S_tCARET: i32 = 135;
#[allow(non_upper_case_globals)]
const S_tLPAREN2: i32 = 136;
#[allow(non_upper_case_globals)]
const S_tRBRACK: i32 = 137;
#[allow(non_upper_case_globals)]
const S_tSEMI: i32 = 138;
#[allow(non_upper_case_globals)]
const S_tSPACE: i32 = 139;
#[allow(non_upper_case_globals)]
const S_tNL: i32 = 140;
#[allow(non_upper_case_globals)]
const S_tPLUS: i32 = 141;
#[allow(non_upper_case_globals)]
const S_tMINUS: i32 = 142;
#[allow(non_upper_case_globals)]
const S_tSTAR2: i32 = 143;
#[allow(non_upper_case_globals)]
const S_tDIVIDE: i32 = 144;
#[allow(non_upper_case_globals)]
const S_tPERCENT: i32 = 145;
#[allow(non_upper_case_globals)]
const S_tTILDE: i32 = 146;
#[allow(non_upper_case_globals)]
const S_tBANG: i32 = 147;
#[allow(non_upper_case_globals)]
const S_tLOWEST: i32 = 148;
#[allow(non_upper_case_globals)]
const S_tEH: i32 = 149;
#[allow(non_upper_case_globals)]
const S_tCOLON: i32 = 150;
#[allow(non_upper_case_globals)]
const S_tUMINUS_NUM: i32 = 151;
#[allow(non_upper_case_globals)]
const S_tLAST_TOKEN: i32 = 152;
#[allow(non_upper_case_globals)]
const S_YYACCEPT: i32 = 153;
#[allow(non_upper_case_globals)]
const S_program: i32 = 154;
#[allow(non_upper_case_globals)]
const S_155_1: i32 = 155;
#[allow(non_upper_case_globals)]
const S_top_compstmt: i32 = 156;
#[allow(non_upper_case_globals)]
const S_top_stmts: i32 = 157;
#[allow(non_upper_case_globals)]
const S_top_stmt: i32 = 158;
#[allow(non_upper_case_globals)]
const S_begin_block: i32 = 159;
#[allow(non_upper_case_globals)]
const S_bodystmt: i32 = 160;
#[allow(non_upper_case_globals)]
const S_compstmt: i32 = 161;
#[allow(non_upper_case_globals)]
const S_stmts: i32 = 162;
#[allow(non_upper_case_globals)]
const S_stmt_or_begin: i32 = 163;
#[allow(non_upper_case_globals)]
const S_164_2: i32 = 164;
#[allow(non_upper_case_globals)]
const S_stmt: i32 = 165;
#[allow(non_upper_case_globals)]
const S_166_3: i32 = 166;
#[allow(non_upper_case_globals)]
const S_rassign: i32 = 167;
#[allow(non_upper_case_globals)]
const S_command_asgn: i32 = 168;
#[allow(non_upper_case_globals)]
const S_command_rhs: i32 = 169;
#[allow(non_upper_case_globals)]
const S_expr: i32 = 170;
#[allow(non_upper_case_globals)]
const S_171_4: i32 = 171;
#[allow(non_upper_case_globals)]
const S_def_name: i32 = 172;
#[allow(non_upper_case_globals)]
const S_defn_head: i32 = 173;
#[allow(non_upper_case_globals)]
const S_defs_head: i32 = 174;
#[allow(non_upper_case_globals)]
const S_175_5: i32 = 175;
#[allow(non_upper_case_globals)]
const S_expr_value: i32 = 176;
#[allow(non_upper_case_globals)]
const S_expr_value_do: i32 = 177;
#[allow(non_upper_case_globals)]
const S_178_6: i32 = 178;
#[allow(non_upper_case_globals)]
const S_command_call: i32 = 179;
#[allow(non_upper_case_globals)]
const S_block_command: i32 = 180;
#[allow(non_upper_case_globals)]
const S_cmd_brace_block: i32 = 181;
#[allow(non_upper_case_globals)]
const S_182_7: i32 = 182;
#[allow(non_upper_case_globals)]
const S_fcall: i32 = 183;
#[allow(non_upper_case_globals)]
const S_command: i32 = 184;
#[allow(non_upper_case_globals)]
const S_mlhs: i32 = 185;
#[allow(non_upper_case_globals)]
const S_mlhs_inner: i32 = 186;
#[allow(non_upper_case_globals)]
const S_mlhs_basic: i32 = 187;
#[allow(non_upper_case_globals)]
const S_mlhs_item: i32 = 188;
#[allow(non_upper_case_globals)]
const S_mlhs_head: i32 = 189;
#[allow(non_upper_case_globals)]
const S_mlhs_post: i32 = 190;
#[allow(non_upper_case_globals)]
const S_mlhs_node: i32 = 191;
#[allow(non_upper_case_globals)]
const S_lhs: i32 = 192;
#[allow(non_upper_case_globals)]
const S_cname: i32 = 193;
#[allow(non_upper_case_globals)]
const S_cpath: i32 = 194;
#[allow(non_upper_case_globals)]
const S_fname: i32 = 195;
#[allow(non_upper_case_globals)]
const S_fitem: i32 = 196;
#[allow(non_upper_case_globals)]
const S_undef_list: i32 = 197;
#[allow(non_upper_case_globals)]
const S_198_8: i32 = 198;
#[allow(non_upper_case_globals)]
const S_op: i32 = 199;
#[allow(non_upper_case_globals)]
const S_reswords: i32 = 200;
#[allow(non_upper_case_globals)]
const S_arg: i32 = 201;
#[allow(non_upper_case_globals)]
const S_relop: i32 = 202;
#[allow(non_upper_case_globals)]
const S_rel_expr: i32 = 203;
#[allow(non_upper_case_globals)]
const S_arg_value: i32 = 204;
#[allow(non_upper_case_globals)]
const S_aref_args: i32 = 205;
#[allow(non_upper_case_globals)]
const S_arg_rhs: i32 = 206;
#[allow(non_upper_case_globals)]
const S_paren_args: i32 = 207;
#[allow(non_upper_case_globals)]
const S_opt_paren_args: i32 = 208;
#[allow(non_upper_case_globals)]
const S_opt_call_args: i32 = 209;
#[allow(non_upper_case_globals)]
const S_call_args: i32 = 210;
#[allow(non_upper_case_globals)]
const S_command_args: i32 = 211;
#[allow(non_upper_case_globals)]
const S_212_9: i32 = 212;
#[allow(non_upper_case_globals)]
const S_block_arg: i32 = 213;
#[allow(non_upper_case_globals)]
const S_opt_block_arg: i32 = 214;
#[allow(non_upper_case_globals)]
const S_args: i32 = 215;
#[allow(non_upper_case_globals)]
const S_mrhs_arg: i32 = 216;
#[allow(non_upper_case_globals)]
const S_mrhs: i32 = 217;
#[allow(non_upper_case_globals)]
const S_primary: i32 = 218;
#[allow(non_upper_case_globals)]
const S_219_10: i32 = 219;
#[allow(non_upper_case_globals)]
const S_220_11: i32 = 220;
#[allow(non_upper_case_globals)]
const S_221_12: i32 = 221;
#[allow(non_upper_case_globals)]
const S_222_13: i32 = 222;
#[allow(non_upper_case_globals)]
const S_223_14: i32 = 223;
#[allow(non_upper_case_globals)]
const S_224_15: i32 = 224;
#[allow(non_upper_case_globals)]
const S_225_16: i32 = 225;
#[allow(non_upper_case_globals)]
const S_226_17: i32 = 226;
#[allow(non_upper_case_globals)]
const S_primary_value: i32 = 227;
#[allow(non_upper_case_globals)]
const S_k_begin: i32 = 228;
#[allow(non_upper_case_globals)]
const S_k_if: i32 = 229;
#[allow(non_upper_case_globals)]
const S_k_unless: i32 = 230;
#[allow(non_upper_case_globals)]
const S_k_while: i32 = 231;
#[allow(non_upper_case_globals)]
const S_k_until: i32 = 232;
#[allow(non_upper_case_globals)]
const S_k_case: i32 = 233;
#[allow(non_upper_case_globals)]
const S_k_for: i32 = 234;
#[allow(non_upper_case_globals)]
const S_k_class: i32 = 235;
#[allow(non_upper_case_globals)]
const S_k_module: i32 = 236;
#[allow(non_upper_case_globals)]
const S_k_def: i32 = 237;
#[allow(non_upper_case_globals)]
const S_k_do: i32 = 238;
#[allow(non_upper_case_globals)]
const S_k_do_block: i32 = 239;
#[allow(non_upper_case_globals)]
const S_k_rescue: i32 = 240;
#[allow(non_upper_case_globals)]
const S_k_ensure: i32 = 241;
#[allow(non_upper_case_globals)]
const S_k_when: i32 = 242;
#[allow(non_upper_case_globals)]
const S_k_else: i32 = 243;
#[allow(non_upper_case_globals)]
const S_k_elsif: i32 = 244;
#[allow(non_upper_case_globals)]
const S_k_end: i32 = 245;
#[allow(non_upper_case_globals)]
const S_k_return: i32 = 246;
#[allow(non_upper_case_globals)]
const S_then: i32 = 247;
#[allow(non_upper_case_globals)]
const S_do: i32 = 248;
#[allow(non_upper_case_globals)]
const S_if_tail: i32 = 249;
#[allow(non_upper_case_globals)]
const S_opt_else: i32 = 250;
#[allow(non_upper_case_globals)]
const S_for_var: i32 = 251;
#[allow(non_upper_case_globals)]
const S_f_marg: i32 = 252;
#[allow(non_upper_case_globals)]
const S_f_marg_list: i32 = 253;
#[allow(non_upper_case_globals)]
const S_f_margs: i32 = 254;
#[allow(non_upper_case_globals)]
const S_f_rest_marg: i32 = 255;
#[allow(non_upper_case_globals)]
const S_f_any_kwrest: i32 = 256;
#[allow(non_upper_case_globals)]
const S_block_args_tail: i32 = 257;
#[allow(non_upper_case_globals)]
const S_opt_block_args_tail: i32 = 258;
#[allow(non_upper_case_globals)]
const S_excessed_comma: i32 = 259;
#[allow(non_upper_case_globals)]
const S_block_param: i32 = 260;
#[allow(non_upper_case_globals)]
const S_opt_block_param: i32 = 261;
#[allow(non_upper_case_globals)]
const S_block_param_def: i32 = 262;
#[allow(non_upper_case_globals)]
const S_opt_bv_decl: i32 = 263;
#[allow(non_upper_case_globals)]
const S_bv_decls: i32 = 264;
#[allow(non_upper_case_globals)]
const S_bvar: i32 = 265;
#[allow(non_upper_case_globals)]
const S_lambda: i32 = 266;
#[allow(non_upper_case_globals)]
const S_267_18: i32 = 267;
#[allow(non_upper_case_globals)]
const S_268_19: i32 = 268;
#[allow(non_upper_case_globals)]
const S_f_larglist: i32 = 269;
#[allow(non_upper_case_globals)]
const S_lambda_body: i32 = 270;
#[allow(non_upper_case_globals)]
const S_271_20: i32 = 271;
#[allow(non_upper_case_globals)]
const S_272_21: i32 = 272;
#[allow(non_upper_case_globals)]
const S_do_block: i32 = 273;
#[allow(non_upper_case_globals)]
const S_274_22: i32 = 274;
#[allow(non_upper_case_globals)]
const S_block_call: i32 = 275;
#[allow(non_upper_case_globals)]
const S_method_call: i32 = 276;
#[allow(non_upper_case_globals)]
const S_brace_block: i32 = 277;
#[allow(non_upper_case_globals)]
const S_278_23: i32 = 278;
#[allow(non_upper_case_globals)]
const S_279_24: i32 = 279;
#[allow(non_upper_case_globals)]
const S_brace_body: i32 = 280;
#[allow(non_upper_case_globals)]
const S_281_25: i32 = 281;
#[allow(non_upper_case_globals)]
const S_do_body: i32 = 282;
#[allow(non_upper_case_globals)]
const S_283_26: i32 = 283;
#[allow(non_upper_case_globals)]
const S_case_args: i32 = 284;
#[allow(non_upper_case_globals)]
const S_case_body: i32 = 285;
#[allow(non_upper_case_globals)]
const S_cases: i32 = 286;
#[allow(non_upper_case_globals)]
const S_p_case_body: i32 = 287;
#[allow(non_upper_case_globals)]
const S_288_27: i32 = 288;
#[allow(non_upper_case_globals)]
const S_289_28: i32 = 289;
#[allow(non_upper_case_globals)]
const S_p_cases: i32 = 290;
#[allow(non_upper_case_globals)]
const S_p_top_expr: i32 = 291;
#[allow(non_upper_case_globals)]
const S_p_top_expr_body: i32 = 292;
#[allow(non_upper_case_globals)]
const S_p_expr: i32 = 293;
#[allow(non_upper_case_globals)]
const S_p_as: i32 = 294;
#[allow(non_upper_case_globals)]
const S_p_alt: i32 = 295;
#[allow(non_upper_case_globals)]
const S_p_lparen: i32 = 296;
#[allow(non_upper_case_globals)]
const S_p_lbracket: i32 = 297;
#[allow(non_upper_case_globals)]
const S_p_expr_basic: i32 = 298;
#[allow(non_upper_case_globals)]
const S_299_29: i32 = 299;
#[allow(non_upper_case_globals)]
const S_300_30: i32 = 300;
#[allow(non_upper_case_globals)]
const S_p_args: i32 = 301;
#[allow(non_upper_case_globals)]
const S_p_args_head: i32 = 302;
#[allow(non_upper_case_globals)]
const S_p_args_tail: i32 = 303;
#[allow(non_upper_case_globals)]
const S_p_find: i32 = 304;
#[allow(non_upper_case_globals)]
const S_p_rest: i32 = 305;
#[allow(non_upper_case_globals)]
const S_p_args_post: i32 = 306;
#[allow(non_upper_case_globals)]
const S_p_arg: i32 = 307;
#[allow(non_upper_case_globals)]
const S_p_kwargs: i32 = 308;
#[allow(non_upper_case_globals)]
const S_p_kwarg: i32 = 309;
#[allow(non_upper_case_globals)]
const S_p_kw: i32 = 310;
#[allow(non_upper_case_globals)]
const S_p_kw_label: i32 = 311;
#[allow(non_upper_case_globals)]
const S_p_kwrest: i32 = 312;
#[allow(non_upper_case_globals)]
const S_p_kwnorest: i32 = 313;
#[allow(non_upper_case_globals)]
const S_p_any_kwrest: i32 = 314;
#[allow(non_upper_case_globals)]
const S_p_value: i32 = 315;
#[allow(non_upper_case_globals)]
const S_p_primitive: i32 = 316;
#[allow(non_upper_case_globals)]
const S_p_variable: i32 = 317;
#[allow(non_upper_case_globals)]
const S_p_var_ref: i32 = 318;
#[allow(non_upper_case_globals)]
const S_p_const: i32 = 319;
#[allow(non_upper_case_globals)]
const S_opt_rescue: i32 = 320;
#[allow(non_upper_case_globals)]
const S_exc_list: i32 = 321;
#[allow(non_upper_case_globals)]
const S_exc_var: i32 = 322;
#[allow(non_upper_case_globals)]
const S_opt_ensure: i32 = 323;
#[allow(non_upper_case_globals)]
const S_literal: i32 = 324;
#[allow(non_upper_case_globals)]
const S_strings: i32 = 325;
#[allow(non_upper_case_globals)]
const S_string: i32 = 326;
#[allow(non_upper_case_globals)]
const S_string1: i32 = 327;
#[allow(non_upper_case_globals)]
const S_xstring: i32 = 328;
#[allow(non_upper_case_globals)]
const S_regexp: i32 = 329;
#[allow(non_upper_case_globals)]
const S_words: i32 = 330;
#[allow(non_upper_case_globals)]
const S_word_list: i32 = 331;
#[allow(non_upper_case_globals)]
const S_word: i32 = 332;
#[allow(non_upper_case_globals)]
const S_symbols: i32 = 333;
#[allow(non_upper_case_globals)]
const S_symbol_list: i32 = 334;
#[allow(non_upper_case_globals)]
const S_qwords: i32 = 335;
#[allow(non_upper_case_globals)]
const S_qsymbols: i32 = 336;
#[allow(non_upper_case_globals)]
const S_qword_list: i32 = 337;
#[allow(non_upper_case_globals)]
const S_qsym_list: i32 = 338;
#[allow(non_upper_case_globals)]
const S_string_contents: i32 = 339;
#[allow(non_upper_case_globals)]
const S_xstring_contents: i32 = 340;
#[allow(non_upper_case_globals)]
const S_regexp_contents: i32 = 341;
#[allow(non_upper_case_globals)]
const S_string_content: i32 = 342;
#[allow(non_upper_case_globals)]
const S_343_31: i32 = 343;
#[allow(non_upper_case_globals)]
const S_344_32: i32 = 344;
#[allow(non_upper_case_globals)]
const S_345_33: i32 = 345;
#[allow(non_upper_case_globals)]
const S_346_34: i32 = 346;
#[allow(non_upper_case_globals)]
const S_347_35: i32 = 347;
#[allow(non_upper_case_globals)]
const S_348_36: i32 = 348;
#[allow(non_upper_case_globals)]
const S_string_dvar: i32 = 349;
#[allow(non_upper_case_globals)]
const S_symbol: i32 = 350;
#[allow(non_upper_case_globals)]
const S_ssym: i32 = 351;
#[allow(non_upper_case_globals)]
const S_sym: i32 = 352;
#[allow(non_upper_case_globals)]
const S_dsym: i32 = 353;
#[allow(non_upper_case_globals)]
const S_numeric: i32 = 354;
#[allow(non_upper_case_globals)]
const S_simple_numeric: i32 = 355;
#[allow(non_upper_case_globals)]
const S_user_variable: i32 = 356;
#[allow(non_upper_case_globals)]
const S_keyword_variable: i32 = 357;
#[allow(non_upper_case_globals)]
const S_var_ref: i32 = 358;
#[allow(non_upper_case_globals)]
const S_var_lhs: i32 = 359;
#[allow(non_upper_case_globals)]
const S_backref: i32 = 360;
#[allow(non_upper_case_globals)]
const S_superclass: i32 = 361;
#[allow(non_upper_case_globals)]
const S_362_37: i32 = 362;
#[allow(non_upper_case_globals)]
const S_f_paren_args: i32 = 363;
#[allow(non_upper_case_globals)]
const S_f_arglist: i32 = 364;
#[allow(non_upper_case_globals)]
const S_365_38: i32 = 365;
#[allow(non_upper_case_globals)]
const S_args_tail: i32 = 366;
#[allow(non_upper_case_globals)]
const S_opt_args_tail: i32 = 367;
#[allow(non_upper_case_globals)]
const S_f_args: i32 = 368;
#[allow(non_upper_case_globals)]
const S_args_forward: i32 = 369;
#[allow(non_upper_case_globals)]
const S_f_bad_arg: i32 = 370;
#[allow(non_upper_case_globals)]
const S_f_norm_arg: i32 = 371;
#[allow(non_upper_case_globals)]
const S_f_arg_asgn: i32 = 372;
#[allow(non_upper_case_globals)]
const S_f_arg_item: i32 = 373;
#[allow(non_upper_case_globals)]
const S_f_arg: i32 = 374;
#[allow(non_upper_case_globals)]
const S_f_label: i32 = 375;
#[allow(non_upper_case_globals)]
const S_f_kw: i32 = 376;
#[allow(non_upper_case_globals)]
const S_f_block_kw: i32 = 377;
#[allow(non_upper_case_globals)]
const S_f_block_kwarg: i32 = 378;
#[allow(non_upper_case_globals)]
const S_f_kwarg: i32 = 379;
#[allow(non_upper_case_globals)]
const S_kwrest_mark: i32 = 380;
#[allow(non_upper_case_globals)]
const S_f_no_kwarg: i32 = 381;
#[allow(non_upper_case_globals)]
const S_f_kwrest: i32 = 382;
#[allow(non_upper_case_globals)]
const S_f_opt: i32 = 383;
#[allow(non_upper_case_globals)]
const S_f_block_opt: i32 = 384;
#[allow(non_upper_case_globals)]
const S_f_block_optarg: i32 = 385;
#[allow(non_upper_case_globals)]
const S_f_optarg: i32 = 386;
#[allow(non_upper_case_globals)]
const S_restarg_mark: i32 = 387;
#[allow(non_upper_case_globals)]
const S_f_rest_arg: i32 = 388;
#[allow(non_upper_case_globals)]
const S_blkarg_mark: i32 = 389;
#[allow(non_upper_case_globals)]
const S_f_block_arg: i32 = 390;
#[allow(non_upper_case_globals)]
const S_opt_f_block_arg: i32 = 391;
#[allow(non_upper_case_globals)]
const S_singleton: i32 = 392;
#[allow(non_upper_case_globals)]
const S_393_39: i32 = 393;
#[allow(non_upper_case_globals)]
const S_assoc_list: i32 = 394;
#[allow(non_upper_case_globals)]
const S_assocs: i32 = 395;
#[allow(non_upper_case_globals)]
const S_assoc: i32 = 396;
#[allow(non_upper_case_globals)]
const S_operation: i32 = 397;
#[allow(non_upper_case_globals)]
const S_operation2: i32 = 398;
#[allow(non_upper_case_globals)]
const S_operation3: i32 = 399;
#[allow(non_upper_case_globals)]
const S_dot_or_colon: i32 = 400;
#[allow(non_upper_case_globals)]
const S_call_op: i32 = 401;
#[allow(non_upper_case_globals)]
const S_call_op2: i32 = 402;
#[allow(non_upper_case_globals)]
const S_opt_terms: i32 = 403;
#[allow(non_upper_case_globals)]
const S_opt_nl: i32 = 404;
#[allow(non_upper_case_globals)]
const S_rparen: i32 = 405;
#[allow(non_upper_case_globals)]
const S_rbracket: i32 = 406;
#[allow(non_upper_case_globals)]
const S_rbrace: i32 = 407;
#[allow(non_upper_case_globals)]
const S_trailer: i32 = 408;
#[allow(non_upper_case_globals)]
const S_term: i32 = 409;
#[allow(non_upper_case_globals)]
const S_terms: i32 = 410;
#[allow(non_upper_case_globals)]
const S_none: i32 = 411;
const VALUES_: &'static [SymbolKind] = &[
SymbolKind { value: SymbolKind::S_YYEOF },
SymbolKind { value: SymbolKind::S_YYerror },
SymbolKind { value: SymbolKind::S_YYUNDEF },
SymbolKind { value: SymbolKind::S_kCLASS },
SymbolKind { value: SymbolKind::S_kMODULE },
SymbolKind { value: SymbolKind::S_kDEF },
SymbolKind { value: SymbolKind::S_kUNDEF },
SymbolKind { value: SymbolKind::S_kBEGIN },
SymbolKind { value: SymbolKind::S_kRESCUE },
SymbolKind { value: SymbolKind::S_kENSURE },
SymbolKind { value: SymbolKind::S_kEND },
SymbolKind { value: SymbolKind::S_kIF },
SymbolKind { value: SymbolKind::S_kUNLESS },
SymbolKind { value: SymbolKind::S_kTHEN },
SymbolKind { value: SymbolKind::S_kELSIF },
SymbolKind { value: SymbolKind::S_kELSE },
SymbolKind { value: SymbolKind::S_kCASE },
SymbolKind { value: SymbolKind::S_kWHEN },
SymbolKind { value: SymbolKind::S_kWHILE },
SymbolKind { value: SymbolKind::S_kUNTIL },
SymbolKind { value: SymbolKind::S_kFOR },
SymbolKind { value: SymbolKind::S_kBREAK },
SymbolKind { value: SymbolKind::S_kNEXT },
SymbolKind { value: SymbolKind::S_kREDO },
SymbolKind { value: SymbolKind::S_kRETRY },
SymbolKind { value: SymbolKind::S_kIN },
SymbolKind { value: SymbolKind::S_kDO },
SymbolKind { value: SymbolKind::S_kDO_COND },
SymbolKind { value: SymbolKind::S_kDO_BLOCK },
SymbolKind { value: SymbolKind::S_kDO_LAMBDA },
SymbolKind { value: SymbolKind::S_kRETURN },
SymbolKind { value: SymbolKind::S_kYIELD },
SymbolKind { value: SymbolKind::S_kSUPER },
SymbolKind { value: SymbolKind::S_kSELF },
SymbolKind { value: SymbolKind::S_kNIL },
SymbolKind { value: SymbolKind::S_kTRUE },
SymbolKind { value: SymbolKind::S_kFALSE },
SymbolKind { value: SymbolKind::S_kAND },
SymbolKind { value: SymbolKind::S_kOR },
SymbolKind { value: SymbolKind::S_kNOT },
SymbolKind { value: SymbolKind::S_kIF_MOD },
SymbolKind { value: SymbolKind::S_kUNLESS_MOD },
SymbolKind { value: SymbolKind::S_kWHILE_MOD },
SymbolKind { value: SymbolKind::S_kUNTIL_MOD },
SymbolKind { value: SymbolKind::S_kRESCUE_MOD },
SymbolKind { value: SymbolKind::S_kALIAS },
SymbolKind { value: SymbolKind::S_kDEFINED },
SymbolKind { value: SymbolKind::S_klBEGIN },
SymbolKind { value: SymbolKind::S_klEND },
SymbolKind { value: SymbolKind::S_k__LINE__ },
SymbolKind { value: SymbolKind::S_k__FILE__ },
SymbolKind { value: SymbolKind::S_k__ENCODING__ },
SymbolKind { value: SymbolKind::S_tIDENTIFIER },
SymbolKind { value: SymbolKind::S_tFID },
SymbolKind { value: SymbolKind::S_tGVAR },
SymbolKind { value: SymbolKind::S_tIVAR },
SymbolKind { value: SymbolKind::S_tCONSTANT },
SymbolKind { value: SymbolKind::S_tCVAR },
SymbolKind { value: SymbolKind::S_tLABEL },
SymbolKind { value: SymbolKind::S_tINTEGER },
SymbolKind { value: SymbolKind::S_tFLOAT },
SymbolKind { value: SymbolKind::S_tRATIONAL },
SymbolKind { value: SymbolKind::S_tIMAGINARY },
SymbolKind { value: SymbolKind::S_tCHAR },
SymbolKind { value: SymbolKind::S_tNTH_REF },
SymbolKind { value: SymbolKind::S_tBACK_REF },
SymbolKind { value: SymbolKind::S_tSTRING_CONTENT },
SymbolKind { value: SymbolKind::S_tREGEXP_END },
SymbolKind { value: SymbolKind::S_tDOT },
SymbolKind { value: SymbolKind::S_tBACKSLASH },
SymbolKind { value: SymbolKind::S_tSP },
SymbolKind { value: SymbolKind::S_tSLASH_T },
SymbolKind { value: SymbolKind::S_tSLASH_F },
SymbolKind { value: SymbolKind::S_tSLASH_R },
SymbolKind { value: SymbolKind::S_tVTAB },
SymbolKind { value: SymbolKind::S_tUPLUS },
SymbolKind { value: SymbolKind::S_tUMINUS },
SymbolKind { value: SymbolKind::S_tPOW },
SymbolKind { value: SymbolKind::S_tCMP },
SymbolKind { value: SymbolKind::S_tEQ },
SymbolKind { value: SymbolKind::S_tEQQ },
SymbolKind { value: SymbolKind::S_tNEQ },
SymbolKind { value: SymbolKind::S_tGEQ },
SymbolKind { value: SymbolKind::S_tLEQ },
SymbolKind { value: SymbolKind::S_tANDOP },
SymbolKind { value: SymbolKind::S_tOROP },
SymbolKind { value: SymbolKind::S_tMATCH },
SymbolKind { value: SymbolKind::S_tNMATCH },
SymbolKind { value: SymbolKind::S_tDOT2 },
SymbolKind { value: SymbolKind::S_tDOT3 },
SymbolKind { value: SymbolKind::S_tBDOT2 },
SymbolKind { value: SymbolKind::S_tBDOT3 },
SymbolKind { value: SymbolKind::S_tAREF },
SymbolKind { value: SymbolKind::S_tASET },
SymbolKind { value: SymbolKind::S_tLSHFT },
SymbolKind { value: SymbolKind::S_tRSHFT },
SymbolKind { value: SymbolKind::S_tANDDOT },
SymbolKind { value: SymbolKind::S_tCOLON2 },
SymbolKind { value: SymbolKind::S_tCOLON3 },
SymbolKind { value: SymbolKind::S_tOP_ASGN },
SymbolKind { value: SymbolKind::S_tASSOC },
SymbolKind { value: SymbolKind::S_tLPAREN },
SymbolKind { value: SymbolKind::S_tLPAREN_ARG },
SymbolKind { value: SymbolKind::S_tRPAREN },
SymbolKind { value: SymbolKind::S_tLBRACK },
SymbolKind { value: SymbolKind::S_tLBRACE },
SymbolKind { value: SymbolKind::S_tLBRACE_ARG },
SymbolKind { value: SymbolKind::S_tSTAR },
SymbolKind { value: SymbolKind::S_tDSTAR },
SymbolKind { value: SymbolKind::S_tAMPER },
SymbolKind { value: SymbolKind::S_tLAMBDA },
SymbolKind { value: SymbolKind::S_tSYMBEG },
SymbolKind { value: SymbolKind::S_tSTRING_BEG },
SymbolKind { value: SymbolKind::S_tXSTRING_BEG },
SymbolKind { value: SymbolKind::S_tREGEXP_BEG },
SymbolKind { value: SymbolKind::S_tWORDS_BEG },
SymbolKind { value: SymbolKind::S_tQWORDS_BEG },
SymbolKind { value: SymbolKind::S_tSYMBOLS_BEG },
SymbolKind { value: SymbolKind::S_tQSYMBOLS_BEG },
SymbolKind { value: SymbolKind::S_tSTRING_END },
SymbolKind { value: SymbolKind::S_tSTRING_DEND },
SymbolKind { value: SymbolKind::S_tSTRING_DBEG },
SymbolKind { value: SymbolKind::S_tSTRING_DVAR },
SymbolKind { value: SymbolKind::S_tLAMBEG },
SymbolKind { value: SymbolKind::S_tLABEL_END },
SymbolKind { value: SymbolKind::S_tCOMMA },
SymbolKind { value: SymbolKind::S_tLCURLY },
SymbolKind { value: SymbolKind::S_tRCURLY },
SymbolKind { value: SymbolKind::S_tLBRACK2 },
SymbolKind { value: SymbolKind::S_tEQL },
SymbolKind { value: SymbolKind::S_tPIPE },
SymbolKind { value: SymbolKind::S_tAMPER2 },
SymbolKind { value: SymbolKind::S_tGT },
SymbolKind { value: SymbolKind::S_tLT },
SymbolKind { value: SymbolKind::S_tBACK_REF2 },
SymbolKind { value: SymbolKind::S_tCARET },
SymbolKind { value: SymbolKind::S_tLPAREN2 },
SymbolKind { value: SymbolKind::S_tRBRACK },
SymbolKind { value: SymbolKind::S_tSEMI },
SymbolKind { value: SymbolKind::S_tSPACE },
SymbolKind { value: SymbolKind::S_tNL },
SymbolKind { value: SymbolKind::S_tPLUS },
SymbolKind { value: SymbolKind::S_tMINUS },
SymbolKind { value: SymbolKind::S_tSTAR2 },
SymbolKind { value: SymbolKind::S_tDIVIDE },
SymbolKind { value: SymbolKind::S_tPERCENT },
SymbolKind { value: SymbolKind::S_tTILDE },
SymbolKind { value: SymbolKind::S_tBANG },
SymbolKind { value: SymbolKind::S_tLOWEST },
SymbolKind { value: SymbolKind::S_tEH },
SymbolKind { value: SymbolKind::S_tCOLON },
SymbolKind { value: SymbolKind::S_tUMINUS_NUM },
SymbolKind { value: SymbolKind::S_tLAST_TOKEN },
SymbolKind { value: SymbolKind::S_YYACCEPT },
SymbolKind { value: SymbolKind::S_program },
SymbolKind { value: SymbolKind::S_155_1 },
SymbolKind { value: SymbolKind::S_top_compstmt },
SymbolKind { value: SymbolKind::S_top_stmts },
SymbolKind { value: SymbolKind::S_top_stmt },
SymbolKind { value: SymbolKind::S_begin_block },
SymbolKind { value: SymbolKind::S_bodystmt },
SymbolKind { value: SymbolKind::S_compstmt },
SymbolKind { value: SymbolKind::S_stmts },
SymbolKind { value: SymbolKind::S_stmt_or_begin },
SymbolKind { value: SymbolKind::S_164_2 },
SymbolKind { value: SymbolKind::S_stmt },
SymbolKind { value: SymbolKind::S_166_3 },
SymbolKind { value: SymbolKind::S_rassign },
SymbolKind { value: SymbolKind::S_command_asgn },
SymbolKind { value: SymbolKind::S_command_rhs },
SymbolKind { value: SymbolKind::S_expr },
SymbolKind { value: SymbolKind::S_171_4 },
SymbolKind { value: SymbolKind::S_def_name },
SymbolKind { value: SymbolKind::S_defn_head },
SymbolKind { value: SymbolKind::S_defs_head },
SymbolKind { value: SymbolKind::S_175_5 },
SymbolKind { value: SymbolKind::S_expr_value },
SymbolKind { value: SymbolKind::S_expr_value_do },
SymbolKind { value: SymbolKind::S_178_6 },
SymbolKind { value: SymbolKind::S_command_call },
SymbolKind { value: SymbolKind::S_block_command },
SymbolKind { value: SymbolKind::S_cmd_brace_block },
SymbolKind { value: SymbolKind::S_182_7 },
SymbolKind { value: SymbolKind::S_fcall },
SymbolKind { value: SymbolKind::S_command },
SymbolKind { value: SymbolKind::S_mlhs },
SymbolKind { value: SymbolKind::S_mlhs_inner },
SymbolKind { value: SymbolKind::S_mlhs_basic },
SymbolKind { value: SymbolKind::S_mlhs_item },
SymbolKind { value: SymbolKind::S_mlhs_head },
SymbolKind { value: SymbolKind::S_mlhs_post },
SymbolKind { value: SymbolKind::S_mlhs_node },
SymbolKind { value: SymbolKind::S_lhs },
SymbolKind { value: SymbolKind::S_cname },
SymbolKind { value: SymbolKind::S_cpath },
SymbolKind { value: SymbolKind::S_fname },
SymbolKind { value: SymbolKind::S_fitem },
SymbolKind { value: SymbolKind::S_undef_list },
SymbolKind { value: SymbolKind::S_198_8 },
SymbolKind { value: SymbolKind::S_op },
SymbolKind { value: SymbolKind::S_reswords },
SymbolKind { value: SymbolKind::S_arg },
SymbolKind { value: SymbolKind::S_relop },
SymbolKind { value: SymbolKind::S_rel_expr },
SymbolKind { value: SymbolKind::S_arg_value },
SymbolKind { value: SymbolKind::S_aref_args },
SymbolKind { value: SymbolKind::S_arg_rhs },
SymbolKind { value: SymbolKind::S_paren_args },
SymbolKind { value: SymbolKind::S_opt_paren_args },
SymbolKind { value: SymbolKind::S_opt_call_args },
SymbolKind { value: SymbolKind::S_call_args },
SymbolKind { value: SymbolKind::S_command_args },
SymbolKind { value: SymbolKind::S_212_9 },
SymbolKind { value: SymbolKind::S_block_arg },
SymbolKind { value: SymbolKind::S_opt_block_arg },
SymbolKind { value: SymbolKind::S_args },
SymbolKind { value: SymbolKind::S_mrhs_arg },
SymbolKind { value: SymbolKind::S_mrhs },
SymbolKind { value: SymbolKind::S_primary },
SymbolKind { value: SymbolKind::S_219_10 },
SymbolKind { value: SymbolKind::S_220_11 },
SymbolKind { value: SymbolKind::S_221_12 },
SymbolKind { value: SymbolKind::S_222_13 },
SymbolKind { value: SymbolKind::S_223_14 },
SymbolKind { value: SymbolKind::S_224_15 },
SymbolKind { value: SymbolKind::S_225_16 },
SymbolKind { value: SymbolKind::S_226_17 },
SymbolKind { value: SymbolKind::S_primary_value },
SymbolKind { value: SymbolKind::S_k_begin },
SymbolKind { value: SymbolKind::S_k_if },
SymbolKind { value: SymbolKind::S_k_unless },
SymbolKind { value: SymbolKind::S_k_while },
SymbolKind { value: SymbolKind::S_k_until },
SymbolKind { value: SymbolKind::S_k_case },
SymbolKind { value: SymbolKind::S_k_for },
SymbolKind { value: SymbolKind::S_k_class },
SymbolKind { value: SymbolKind::S_k_module },
SymbolKind { value: SymbolKind::S_k_def },
SymbolKind { value: SymbolKind::S_k_do },
SymbolKind { value: SymbolKind::S_k_do_block },
SymbolKind { value: SymbolKind::S_k_rescue },
SymbolKind { value: SymbolKind::S_k_ensure },
SymbolKind { value: SymbolKind::S_k_when },
SymbolKind { value: SymbolKind::S_k_else },
SymbolKind { value: SymbolKind::S_k_elsif },
SymbolKind { value: SymbolKind::S_k_end },
SymbolKind { value: SymbolKind::S_k_return },
SymbolKind { value: SymbolKind::S_then },
SymbolKind { value: SymbolKind::S_do },
SymbolKind { value: SymbolKind::S_if_tail },
SymbolKind { value: SymbolKind::S_opt_else },
SymbolKind { value: SymbolKind::S_for_var },
SymbolKind { value: SymbolKind::S_f_marg },
SymbolKind { value: SymbolKind::S_f_marg_list },
SymbolKind { value: SymbolKind::S_f_margs },
SymbolKind { value: SymbolKind::S_f_rest_marg },
SymbolKind { value: SymbolKind::S_f_any_kwrest },
SymbolKind { value: SymbolKind::S_block_args_tail },
SymbolKind { value: SymbolKind::S_opt_block_args_tail },
SymbolKind { value: SymbolKind::S_excessed_comma },
SymbolKind { value: SymbolKind::S_block_param },
SymbolKind { value: SymbolKind::S_opt_block_param },
SymbolKind { value: SymbolKind::S_block_param_def },
SymbolKind { value: SymbolKind::S_opt_bv_decl },
SymbolKind { value: SymbolKind::S_bv_decls },
SymbolKind { value: SymbolKind::S_bvar },
SymbolKind { value: SymbolKind::S_lambda },
SymbolKind { value: SymbolKind::S_267_18 },
SymbolKind { value: SymbolKind::S_268_19 },
SymbolKind { value: SymbolKind::S_f_larglist },
SymbolKind { value: SymbolKind::S_lambda_body },
SymbolKind { value: SymbolKind::S_271_20 },
SymbolKind { value: SymbolKind::S_272_21 },
SymbolKind { value: SymbolKind::S_do_block },
SymbolKind { value: SymbolKind::S_274_22 },
SymbolKind { value: SymbolKind::S_block_call },
SymbolKind { value: SymbolKind::S_method_call },
SymbolKind { value: SymbolKind::S_brace_block },
SymbolKind { value: SymbolKind::S_278_23 },
SymbolKind { value: SymbolKind::S_279_24 },
SymbolKind { value: SymbolKind::S_brace_body },
SymbolKind { value: SymbolKind::S_281_25 },
SymbolKind { value: SymbolKind::S_do_body },
SymbolKind { value: SymbolKind::S_283_26 },
SymbolKind { value: SymbolKind::S_case_args },
SymbolKind { value: SymbolKind::S_case_body },
SymbolKind { value: SymbolKind::S_cases },
SymbolKind { value: SymbolKind::S_p_case_body },
SymbolKind { value: SymbolKind::S_288_27 },
SymbolKind { value: SymbolKind::S_289_28 },
SymbolKind { value: SymbolKind::S_p_cases },
SymbolKind { value: SymbolKind::S_p_top_expr },
SymbolKind { value: SymbolKind::S_p_top_expr_body },
SymbolKind { value: SymbolKind::S_p_expr },
SymbolKind { value: SymbolKind::S_p_as },
SymbolKind { value: SymbolKind::S_p_alt },
SymbolKind { value: SymbolKind::S_p_lparen },
SymbolKind { value: SymbolKind::S_p_lbracket },
SymbolKind { value: SymbolKind::S_p_expr_basic },
SymbolKind { value: SymbolKind::S_299_29 },
SymbolKind { value: SymbolKind::S_300_30 },
SymbolKind { value: SymbolKind::S_p_args },
SymbolKind { value: SymbolKind::S_p_args_head },
SymbolKind { value: SymbolKind::S_p_args_tail },
SymbolKind { value: SymbolKind::S_p_find },
SymbolKind { value: SymbolKind::S_p_rest },
SymbolKind { value: SymbolKind::S_p_args_post },
SymbolKind { value: SymbolKind::S_p_arg },
SymbolKind { value: SymbolKind::S_p_kwargs },
SymbolKind { value: SymbolKind::S_p_kwarg },
SymbolKind { value: SymbolKind::S_p_kw },
SymbolKind { value: SymbolKind::S_p_kw_label },
SymbolKind { value: SymbolKind::S_p_kwrest },
SymbolKind { value: SymbolKind::S_p_kwnorest },
SymbolKind { value: SymbolKind::S_p_any_kwrest },
SymbolKind { value: SymbolKind::S_p_value },
SymbolKind { value: SymbolKind::S_p_primitive },
SymbolKind { value: SymbolKind::S_p_variable },
SymbolKind { value: SymbolKind::S_p_var_ref },
SymbolKind { value: SymbolKind::S_p_const },
SymbolKind { value: SymbolKind::S_opt_rescue },
SymbolKind { value: SymbolKind::S_exc_list },
SymbolKind { value: SymbolKind::S_exc_var },
SymbolKind { value: SymbolKind::S_opt_ensure },
SymbolKind { value: SymbolKind::S_literal },
SymbolKind { value: SymbolKind::S_strings },
SymbolKind { value: SymbolKind::S_string },
SymbolKind { value: SymbolKind::S_string1 },
SymbolKind { value: SymbolKind::S_xstring },
SymbolKind { value: SymbolKind::S_regexp },
SymbolKind { value: SymbolKind::S_words },
SymbolKind { value: SymbolKind::S_word_list },
SymbolKind { value: SymbolKind::S_word },
SymbolKind { value: SymbolKind::S_symbols },
SymbolKind { value: SymbolKind::S_symbol_list },
SymbolKind { value: SymbolKind::S_qwords },
SymbolKind { value: SymbolKind::S_qsymbols },
SymbolKind { value: SymbolKind::S_qword_list },
SymbolKind { value: SymbolKind::S_qsym_list },
SymbolKind { value: SymbolKind::S_string_contents },
SymbolKind { value: SymbolKind::S_xstring_contents },
SymbolKind { value: SymbolKind::S_regexp_contents },
SymbolKind { value: SymbolKind::S_string_content },
SymbolKind { value: SymbolKind::S_343_31 },
SymbolKind { value: SymbolKind::S_344_32 },
SymbolKind { value: SymbolKind::S_345_33 },
SymbolKind { value: SymbolKind::S_346_34 },
SymbolKind { value: SymbolKind::S_347_35 },
SymbolKind { value: SymbolKind::S_348_36 },
SymbolKind { value: SymbolKind::S_string_dvar },
SymbolKind { value: SymbolKind::S_symbol },
SymbolKind { value: SymbolKind::S_ssym },
SymbolKind { value: SymbolKind::S_sym },
SymbolKind { value: SymbolKind::S_dsym },
SymbolKind { value: SymbolKind::S_numeric },
SymbolKind { value: SymbolKind::S_simple_numeric },
SymbolKind { value: SymbolKind::S_user_variable },
SymbolKind { value: SymbolKind::S_keyword_variable },
SymbolKind { value: SymbolKind::S_var_ref },
SymbolKind { value: SymbolKind::S_var_lhs },
SymbolKind { value: SymbolKind::S_backref },
SymbolKind { value: SymbolKind::S_superclass },
SymbolKind { value: SymbolKind::S_362_37 },
SymbolKind { value: SymbolKind::S_f_paren_args },
SymbolKind { value: SymbolKind::S_f_arglist },
SymbolKind { value: SymbolKind::S_365_38 },
SymbolKind { value: SymbolKind::S_args_tail },
SymbolKind { value: SymbolKind::S_opt_args_tail },
SymbolKind { value: SymbolKind::S_f_args },
SymbolKind { value: SymbolKind::S_args_forward },
SymbolKind { value: SymbolKind::S_f_bad_arg },
SymbolKind { value: SymbolKind::S_f_norm_arg },
SymbolKind { value: SymbolKind::S_f_arg_asgn },
SymbolKind { value: SymbolKind::S_f_arg_item },
SymbolKind { value: SymbolKind::S_f_arg },
SymbolKind { value: SymbolKind::S_f_label },
SymbolKind { value: SymbolKind::S_f_kw },
SymbolKind { value: SymbolKind::S_f_block_kw },
SymbolKind { value: SymbolKind::S_f_block_kwarg },
SymbolKind { value: SymbolKind::S_f_kwarg },
SymbolKind { value: SymbolKind::S_kwrest_mark },
SymbolKind { value: SymbolKind::S_f_no_kwarg },
SymbolKind { value: SymbolKind::S_f_kwrest },
SymbolKind { value: SymbolKind::S_f_opt },
SymbolKind { value: SymbolKind::S_f_block_opt },
SymbolKind { value: SymbolKind::S_f_block_optarg },
SymbolKind { value: SymbolKind::S_f_optarg },
SymbolKind { value: SymbolKind::S_restarg_mark },
SymbolKind { value: SymbolKind::S_f_rest_arg },
SymbolKind { value: SymbolKind::S_blkarg_mark },
SymbolKind { value: SymbolKind::S_f_block_arg },
SymbolKind { value: SymbolKind::S_opt_f_block_arg },
SymbolKind { value: SymbolKind::S_singleton },
SymbolKind { value: SymbolKind::S_393_39 },
SymbolKind { value: SymbolKind::S_assoc_list },
SymbolKind { value: SymbolKind::S_assocs },
SymbolKind { value: SymbolKind::S_assoc },
SymbolKind { value: SymbolKind::S_operation },
SymbolKind { value: SymbolKind::S_operation2 },
SymbolKind { value: SymbolKind::S_operation3 },
SymbolKind { value: SymbolKind::S_dot_or_colon },
SymbolKind { value: SymbolKind::S_call_op },
SymbolKind { value: SymbolKind::S_call_op2 },
SymbolKind { value: SymbolKind::S_opt_terms },
SymbolKind { value: SymbolKind::S_opt_nl },
SymbolKind { value: SymbolKind::S_rparen },
SymbolKind { value: SymbolKind::S_rbracket },
SymbolKind { value: SymbolKind::S_rbrace },
SymbolKind { value: SymbolKind::S_trailer },
SymbolKind { value: SymbolKind::S_term },
SymbolKind { value: SymbolKind::S_terms },
SymbolKind { value: SymbolKind::S_none }
];
pub(crate) fn get(n: usize) -> &'static SymbolKind {
&Self::VALUES_[n]
}
pub(crate) fn code(&self) -> i32 {
self.value
}
#[allow(non_upper_case_globals)]
const yynames_: &'static [&'static str] = &[ "end-of-input", "error", "invalid token", "`class'", "`module'",
"`def'", "`undef'", "`begin'", "`rescue'", "`ensure'", "`end'", "`if'",
"`unless'", "`then'", "`elsif'", "`else'", "`case'", "`when'", "`while'",
"`until'", "`for'", "`break'", "`next'", "`redo'", "`retry'", "`in'",
"`do'", "`do' for condition", "`do' for block", "`do' for lambda",
"`return'", "`yield'", "`super'", "`self'", "`nil'", "`true'", "`false'",
"`and'", "`or'", "`not'", "`if' modifier", "`unless' modifier",
"`while' modifier", "`until' modifier", "`rescue' modifier", "`alias'",
"`defined?'", "`BEGIN'", "`END'", "`__LINE__'", "`__FILE__'",
"`__ENCODING__'", "local variable or method", "method",
"global variable", "instance variable", "constant", "class variable",
"label", "integer literal", "float literal", "rational literal",
"imaginary literal", "char literal", "numbered reference",
"back reference", "literal content", "tREGEXP_END", "tDOT", "backslash",
"escaped space", "escaped horizontal tab", "escaped form feed",
"escaped carriage return", "escaped vertical tab", "unary+", "unary-",
"**", "<=>", "==", "===", "!=", ">=", "<=", "&&", "||", "=~", "!~", "..",
"...", "(..", "(...", "[]", "[]=", "<<", ">>", "&.", "::",
":: at EXPR_BEG", "operator-assignment", "=>", "(", "( arg", ")", "[",
"{", "{ arg", "*", "**arg", "&", "->", "symbol literal", "string begin",
"backtick literal", "regexp literal", "word list", "verbatim word list",
"symbol list", "verbatim symbol list", "string end", "tRCURLY",
"tSTRING_DBEG", "tSTRING_DVAR", "tLAMBEG", "tLABEL_END", ",",
"{ (tLCURLY)", "}", "[ (tLBRACK2)", "=", "|", "& (tAMPER2)", ">", "<",
"`", "^", "( (tLPAREN2)", "]", ";", " ", "\n", "+", "-", "* (tSTAR2)",
"/", "%", "~", "!", "tLOWEST", "tEH", "tCOLON", "tUMINUS_NUM",
"tLAST_TOKEN", "$accept", "program", "@1", "top_compstmt", "top_stmts",
"top_stmt", "begin_block", "bodystmt", "compstmt", "stmts",
"stmt_or_begin", "$@2", "stmt", "@3", "rassign", "command_asgn",
"command_rhs", "expr", "@4", "def_name", "defn_head", "defs_head", "@5",
"expr_value", "expr_value_do", "@6", "command_call", "block_command",
"cmd_brace_block", "@7", "fcall", "command", "mlhs", "mlhs_inner",
"mlhs_basic", "mlhs_item", "mlhs_head", "mlhs_post", "mlhs_node", "lhs",
"cname", "cpath", "fname", "fitem", "undef_list", "@8", "op", "reswords",
"arg", "relop", "rel_expr", "arg_value", "aref_args", "arg_rhs",
"paren_args", "opt_paren_args", "opt_call_args", "call_args",
"command_args", "@9", "block_arg", "opt_block_arg", "args", "mrhs_arg",
"mrhs", "primary", "@10", "@11", "@12", "@13", "@14", "@15", "@16",
"@17", "primary_value", "k_begin", "k_if", "k_unless", "k_while",
"k_until", "k_case", "k_for", "k_class", "k_module", "k_def", "k_do",
"k_do_block", "k_rescue", "k_ensure", "k_when", "k_else", "k_elsif",
"k_end", "k_return", "then", "do", "if_tail", "opt_else", "for_var",
"f_marg", "f_marg_list", "f_margs", "f_rest_marg", "f_any_kwrest",
"block_args_tail", "opt_block_args_tail", "excessed_comma",
"block_param", "opt_block_param", "block_param_def", "opt_bv_decl",
"bv_decls", "bvar", "lambda", "@18", "@19", "f_larglist", "lambda_body",
"@20", "@21", "do_block", "@22", "block_call", "method_call",
"brace_block", "@23", "@24", "brace_body", "@25", "do_body", "@26",
"case_args", "case_body", "cases", "p_case_body", "@27", "@28",
"p_cases", "p_top_expr", "p_top_expr_body", "p_expr", "p_as", "p_alt",
"p_lparen", "p_lbracket", "p_expr_basic", "@29", "@30", "p_args",
"p_args_head", "p_args_tail", "p_find", "p_rest", "p_args_post", "p_arg",
"p_kwargs", "p_kwarg", "p_kw", "p_kw_label", "p_kwrest", "p_kwnorest",
"p_any_kwrest", "p_value", "p_primitive", "p_variable", "p_var_ref",
"p_const", "opt_rescue", "exc_list", "exc_var", "opt_ensure", "literal",
"strings", "string", "string1", "xstring", "regexp", "words",
"word_list", "word", "symbols", "symbol_list", "qwords", "qsymbols",
"qword_list", "qsym_list", "string_contents", "xstring_contents",
"regexp_contents", "string_content", "@31", "@32", "@33", "@34", "@35",
"@36", "string_dvar", "symbol", "ssym", "sym", "dsym", "numeric",
"simple_numeric", "user_variable", "keyword_variable", "var_ref",
"var_lhs", "backref", "superclass", "@37", "f_paren_args", "f_arglist",
"@38", "args_tail", "opt_args_tail", "f_args", "args_forward",
"f_bad_arg", "f_norm_arg", "f_arg_asgn", "f_arg_item", "f_arg",
"f_label", "f_kw", "f_block_kw", "f_block_kwarg", "f_kwarg",
"kwrest_mark", "f_no_kwarg", "f_kwrest", "f_opt", "f_block_opt",
"f_block_optarg", "f_optarg", "restarg_mark", "f_rest_arg",
"blkarg_mark", "f_block_arg", "opt_f_block_arg", "singleton", "@39",
"assoc_list", "assocs", "assoc", "operation", "operation2", "operation3",
"dot_or_colon", "call_op", "call_op2", "opt_terms", "opt_nl", "rparen",
"rbracket", "rbrace", "trailer", "term", "terms", "none", "<<NULL>>" ] ;
pub(crate) fn name(&self) -> String {
let code: usize = self.code().try_into().unwrap();
Self::yynames_[code].to_owned()
}
}
impl Lexer {
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const END_OF_INPUT: i32 = 0;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const YYerror: i32 = 256;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const YYUNDEF: i32 = 257;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kCLASS: i32 = 258;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kMODULE: i32 = 259;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kDEF: i32 = 260;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kUNDEF: i32 = 261;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kBEGIN: i32 = 262;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kRESCUE: i32 = 263;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kENSURE: i32 = 264;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kEND: i32 = 265;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kIF: i32 = 266;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kUNLESS: i32 = 267;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kTHEN: i32 = 268;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kELSIF: i32 = 269;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kELSE: i32 = 270;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kCASE: i32 = 271;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kWHEN: i32 = 272;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kWHILE: i32 = 273;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kUNTIL: i32 = 274;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kFOR: i32 = 275;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kBREAK: i32 = 276;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kNEXT: i32 = 277;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kREDO: i32 = 278;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kRETRY: i32 = 279;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kIN: i32 = 280;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kDO: i32 = 281;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kDO_COND: i32 = 282;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kDO_BLOCK: i32 = 283;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kDO_LAMBDA: i32 = 284;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kRETURN: i32 = 285;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kYIELD: i32 = 286;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kSUPER: i32 = 287;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kSELF: i32 = 288;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kNIL: i32 = 289;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kTRUE: i32 = 290;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kFALSE: i32 = 291;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kAND: i32 = 292;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kOR: i32 = 293;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kNOT: i32 = 294;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kIF_MOD: i32 = 295;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kUNLESS_MOD: i32 = 296;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kWHILE_MOD: i32 = 297;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kUNTIL_MOD: i32 = 298;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kRESCUE_MOD: i32 = 299;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kALIAS: i32 = 300;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kDEFINED: i32 = 301;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const klBEGIN: i32 = 302;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const klEND: i32 = 303;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const k__LINE__: i32 = 304;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const k__FILE__: i32 = 305;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const k__ENCODING__: i32 = 306;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tIDENTIFIER: i32 = 307;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tFID: i32 = 308;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tGVAR: i32 = 309;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tIVAR: i32 = 310;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCONSTANT: i32 = 311;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCVAR: i32 = 312;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLABEL: i32 = 313;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tINTEGER: i32 = 314;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tFLOAT: i32 = 315;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tRATIONAL: i32 = 316;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tIMAGINARY: i32 = 317;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCHAR: i32 = 318;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tNTH_REF: i32 = 319;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tBACK_REF: i32 = 320;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSTRING_CONTENT: i32 = 321;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tREGEXP_END: i32 = 322;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tDOT: i32 = 323;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tBACKSLASH: i32 = 324;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSP: i32 = 325;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSLASH_T: i32 = 326;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSLASH_F: i32 = 327;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSLASH_R: i32 = 328;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tVTAB: i32 = 329;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tUPLUS: i32 = 330;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tUMINUS: i32 = 331;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tPOW: i32 = 332;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCMP: i32 = 333;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tEQ: i32 = 334;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tEQQ: i32 = 335;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tNEQ: i32 = 336;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tGEQ: i32 = 337;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLEQ: i32 = 338;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tANDOP: i32 = 339;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tOROP: i32 = 340;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tMATCH: i32 = 341;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tNMATCH: i32 = 342;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tDOT2: i32 = 343;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tDOT3: i32 = 344;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tBDOT2: i32 = 345;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tBDOT3: i32 = 346;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tAREF: i32 = 347;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tASET: i32 = 348;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLSHFT: i32 = 349;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tRSHFT: i32 = 350;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tANDDOT: i32 = 351;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCOLON2: i32 = 352;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCOLON3: i32 = 353;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tOP_ASGN: i32 = 354;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tASSOC: i32 = 355;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLPAREN: i32 = 356;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLPAREN_ARG: i32 = 357;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tRPAREN: i32 = 358;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLBRACK: i32 = 359;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLBRACE: i32 = 360;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLBRACE_ARG: i32 = 361;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSTAR: i32 = 362;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tDSTAR: i32 = 363;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tAMPER: i32 = 364;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLAMBDA: i32 = 365;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSYMBEG: i32 = 366;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSTRING_BEG: i32 = 367;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tXSTRING_BEG: i32 = 368;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tREGEXP_BEG: i32 = 369;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tWORDS_BEG: i32 = 370;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tQWORDS_BEG: i32 = 371;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSYMBOLS_BEG: i32 = 372;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tQSYMBOLS_BEG: i32 = 373;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSTRING_END: i32 = 374;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSTRING_DEND: i32 = 375;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSTRING_DBEG: i32 = 376;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSTRING_DVAR: i32 = 377;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLAMBEG: i32 = 378;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLABEL_END: i32 = 379;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCOMMA: i32 = 380;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLCURLY: i32 = 381;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tRCURLY: i32 = 382;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLBRACK2: i32 = 383;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tEQL: i32 = 384;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tPIPE: i32 = 385;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tAMPER2: i32 = 386;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tGT: i32 = 387;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLT: i32 = 388;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tBACK_REF2: i32 = 389;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCARET: i32 = 390;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLPAREN2: i32 = 391;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tRBRACK: i32 = 392;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSEMI: i32 = 393;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSPACE: i32 = 394;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tNL: i32 = 395;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tPLUS: i32 = 396;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tMINUS: i32 = 397;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSTAR2: i32 = 398;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tDIVIDE: i32 = 399;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tPERCENT: i32 = 400;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tTILDE: i32 = 401;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tBANG: i32 = 402;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLOWEST: i32 = 403;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tEH: i32 = 404;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCOLON: i32 = 405;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tUMINUS_NUM: i32 = 406;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLAST_TOKEN: i32 = 407;
#[allow(dead_code)]
const EOF: i32 = Self::END_OF_INPUT;
#[allow(dead_code)]
pub(crate) const TOKEN_NAMES: &'static [&'static str] = & [
"END_OF_INPUT",
"YYerror",
"YYUNDEF",
"kCLASS",
"kMODULE",
"kDEF",
"kUNDEF",
"kBEGIN",
"kRESCUE",
"kENSURE",
"kEND",
"kIF",
"kUNLESS",
"kTHEN",
"kELSIF",
"kELSE",
"kCASE",
"kWHEN",
"kWHILE",
"kUNTIL",
"kFOR",
"kBREAK",
"kNEXT",
"kREDO",
"kRETRY",
"kIN",
"kDO",
"kDO_COND",
"kDO_BLOCK",
"kDO_LAMBDA",
"kRETURN",
"kYIELD",
"kSUPER",
"kSELF",
"kNIL",
"kTRUE",
"kFALSE",
"kAND",
"kOR",
"kNOT",
"kIF_MOD",
"kUNLESS_MOD",
"kWHILE_MOD",
"kUNTIL_MOD",
"kRESCUE_MOD",
"kALIAS",
"kDEFINED",
"klBEGIN",
"klEND",
"k__LINE__",
"k__FILE__",
"k__ENCODING__",
"tIDENTIFIER",
"tFID",
"tGVAR",
"tIVAR",
"tCONSTANT",
"tCVAR",
"tLABEL",
"tINTEGER",
"tFLOAT",
"tRATIONAL",
"tIMAGINARY",
"tCHAR",
"tNTH_REF",
"tBACK_REF",
"tSTRING_CONTENT",
"tREGEXP_END",
"tDOT",
"tBACKSLASH",
"tSP",
"tSLASH_T",
"tSLASH_F",
"tSLASH_R",
"tVTAB",
"tUPLUS",
"tUMINUS",
"tPOW",
"tCMP",
"tEQ",
"tEQQ",
"tNEQ",
"tGEQ",
"tLEQ",
"tANDOP",
"tOROP",
"tMATCH",
"tNMATCH",
"tDOT2",
"tDOT3",
"tBDOT2",
"tBDOT3",
"tAREF",
"tASET",
"tLSHFT",
"tRSHFT",
"tANDDOT",
"tCOLON2",
"tCOLON3",
"tOP_ASGN",
"tASSOC",
"tLPAREN",
"tLPAREN_ARG",
"tRPAREN",
"tLBRACK",
"tLBRACE",
"tLBRACE_ARG",
"tSTAR",
"tDSTAR",
"tAMPER",
"tLAMBDA",
"tSYMBEG",
"tSTRING_BEG",
"tXSTRING_BEG",
"tREGEXP_BEG",
"tWORDS_BEG",
"tQWORDS_BEG",
"tSYMBOLS_BEG",
"tQSYMBOLS_BEG",
"tSTRING_END",
"tSTRING_DEND",
"tSTRING_DBEG",
"tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tCOMMA",
"tLCURLY",
"tRCURLY",
"tLBRACK2",
"tEQL",
"tPIPE",
"tAMPER2",
"tGT",
"tLT",
"tBACK_REF2",
"tCARET",
"tLPAREN2",
"tRBRACK",
"tSEMI",
"tSPACE",
"tNL",
"tPLUS",
"tMINUS",
"tSTAR2",
"tDIVIDE",
"tPERCENT",
"tTILDE",
"tBANG",
"tLOWEST",
"tEH",
"tCOLON",
"tUMINUS_NUM",
"tLAST_TOKEN",
]
;
}
impl Parser {
fn yycdebug(&self, s: &str) {
if self.yydebug {
eprintln!("{}", s);
}
}
}
#[derive(Clone, Debug)]
pub struct YYStack {
state_stack: Vec<i32>,
loc_stack: Vec< Loc >,
value_stack: Vec< Value >,
}
impl YYStack {
pub(crate) fn new() -> Self {
Self {
state_stack: Vec::with_capacity(20),
loc_stack: Vec::with_capacity(20),
value_stack: Vec::with_capacity(20),
}
}
pub(crate) fn push(&mut self, state: i32, value: Value , loc: Loc ) {
self.state_stack.push(state);
self.loc_stack.push(loc);
self.value_stack.push(value);
}
pub(crate) fn pop(&mut self) {
self.pop_n(1);
}
pub(crate) fn pop_n(&mut self, num: usize) {
for _ in 0..num {
self.state_stack.pop();
self.loc_stack.pop();
self.value_stack.pop();
}
}
pub(crate) fn state_at(&self, i: usize) -> i32 {
self.state_stack[self.len() - 1 - i]
}
pub(crate) fn location_at(&self, i: usize) -> & Loc {
&self.loc_stack[self.len() - 1 - i]
}
pub(crate) fn borrow_value_at(&self, i: usize) -> & Value {
&self.value_stack[self.len() - 1 - i]
}
pub(crate) fn owned_value_at(&mut self, i: usize) -> Value {
let len = self.len();
std::mem::replace(&mut self.value_stack[len - 1 - i], Value ::Stolen)
}
pub(crate) fn len(&self) -> usize {
self.state_stack.len()
}
}
impl std::fmt::Display for YYStack {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let state = self.state_stack.iter().map(|e| e.to_string()).collect::<Vec<String>>().join(" ");
f.write_fmt(format_args!("Stack now {}", state))
}
}
impl Parser {
pub(crate) const YYACCEPT: i32 = 0;
pub(crate) const YYABORT: i32 = 1;
pub(crate) const YYERROR: i32 = 2;
pub(crate) const YYERRLAB: i32 = 3;
pub(crate) const YYNEWSTATE: i32 = 4;
pub(crate) const YYDEFAULT: i32 = 5;
pub(crate) const YYREDUCE: i32 = 6;
pub(crate) const YYERRLAB1: i32 = 7;
#[allow(dead_code)]
pub(crate) const YYRETURN: i32 = 8;
#[allow(dead_code)]
pub(crate) fn recovering(&self) -> bool {
self.yyerrstatus_ == 0
}
fn yy_lr_goto_state(&self, yystate: i32, yysym: usize) -> i32 {
let yysym = usize_to_i32(yysym);
let idx = i32_to_usize(yysym - Self::YYNTOKENS_);
let yyr = Self::yypgoto_[idx] + yystate;
if 0 <= yyr && yyr <= Self::YYLAST_ {
let yyr = i32_to_usize(yyr);
if Self::yycheck_[yyr] == yystate {
return Self::yytable_[yyr];
}
}
Self::yydefgoto_[idx]
}
fn yyaction(&mut self, yyn: i32, yystack: &mut YYStack, yylen: &mut usize) -> Result<i32, ()> {
#[allow(unused_assignments)]
let mut yyval: Value = Value ::Uninitialized;
let yyloc: Loc = make_yylloc(&yystack, *yylen);
self.yy_reduce_print(yyn, yystack);
match yyn {
2 =>
{
self.yylexer.lex_state.set(EXPR_BEG);
yyval = Value::None;
},
3 =>
{
let _trigger_locs = yystack.location_at (0);
self.result = MaybeNode::from(yystack.owned_value_at(0));
yyval = Value::None;
},
4 =>
{
yyval = Value::MaybeNode(
self.builder.compstmt( NodeList::from(yystack.owned_value_at(1)))
);
},
5 =>
{
yyval = Value::NodeList( vec![] );
},
6 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
7 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
8 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
9 =>
{
yyval = yystack.owned_value_at(0);
},
10 =>
{
let BeginBlock { begin_t, body, end_t } = BeginBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.preexe( Token::from(yystack.owned_value_at(1)), begin_t, body, end_t)
);
},
11 =>
{
yyval = Value::BeginBlock(
BeginBlock {
begin_t: Token::from(yystack.owned_value_at(2)),
body: MaybeNode::from(yystack.owned_value_at(1)),
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
12 =>
{
let compound_stmt = MaybeNode::from(yystack.owned_value_at(4));
let rescue_bodies = NodeList::from(yystack.owned_value_at(3));
if rescue_bodies.is_empty() {
return self.yyerror(&yystack.location_at (2), DiagnosticMessage::ElseWithoutRescue);
}
let else_ = Some(( Token::from(yystack.owned_value_at(2)), MaybeNode::from(yystack.owned_value_at(1)) ));
let ensure = OptEnsure::from(yystack.owned_value_at(0)).map(|ensure| (ensure.ensure_t, ensure.body));
yyval = Value::MaybeNode(
self.builder.begin_body(
compound_stmt,
rescue_bodies,
else_,
ensure
)
);
},
13 =>
{
let compound_stmt = MaybeNode::from(yystack.owned_value_at(2));
let rescue_bodies = NodeList::from(yystack.owned_value_at(1));
let ensure = OptEnsure::from(yystack.owned_value_at(0)).map(|ensure| (ensure.ensure_t, ensure.body));
yyval = Value::MaybeNode(
self.builder.begin_body(
compound_stmt,
rescue_bodies,
None,
ensure
)
);
},
14 =>
{
yyval = Value::MaybeNode(
self.builder.compstmt( NodeList::from(yystack.owned_value_at(1)))
);
},
15 =>
{
yyval = Value::NodeList( vec![] );
},
16 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
17 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
18 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
19 =>
{
yyval = yystack.owned_value_at(0);
},
20 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::BeginNotAtTopLevel);
},
21 =>
{
yyval = Value::None;
},
22 =>
{
self.yylexer.lex_state.set(EXPR_FNAME|EXPR_FITEM);
yyval = Value::None;
},
23 =>
{
yyval = Value::Node(
self.builder.alias( Token::from(yystack.owned_value_at(3)), Node::from(yystack.owned_value_at(2)), Node::from(yystack.owned_value_at(0)))
);
},
24 =>
{
yyval = Value::Node(
self.builder.alias(
Token::from(yystack.owned_value_at(2)),
self.builder.gvar( Token::from(yystack.owned_value_at(1))),
self.builder.gvar( Token::from(yystack.owned_value_at(0))),
)
)
},
25 =>
{
yyval = Value::Node(
self.builder.alias(
Token::from(yystack.owned_value_at(2)),
self.builder.gvar( Token::from(yystack.owned_value_at(1))),
self.builder.back_ref( Token::from(yystack.owned_value_at(0))),
)
)
},
26 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::AliasNthRef);
},
27 =>
{
yyval = Value::Node(
self.builder.undef_method(
Token::from(yystack.owned_value_at(1)),
NodeList::from(yystack.owned_value_at(0))
)
)
},
28 =>
{
yyval = Value::Node(
self.builder.condition_mod(
Some( Node::from(yystack.owned_value_at(2))),
None,
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0)),
)
);
},
29 =>
{
yyval = Value::Node(
self.builder.condition_mod(
None,
Some( Node::from(yystack.owned_value_at(2))),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0)),
)
);
},
30 =>
{
yyval = Value::Node(
self.builder.loop_mod(
LoopType::While,
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0)),
)
);
},
31 =>
{
yyval = Value::Node(
self.builder.loop_mod(
LoopType::Until,
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0)),
)
);
},
32 =>
{
let rescue_body = self.builder.rescue_body(
Token::from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( Node::from(yystack.owned_value_at(0)))
);
yyval = Value::Node(
self.builder.begin_body(
Some( Node::from(yystack.owned_value_at(2))),
vec![rescue_body],
None,
None,
).expect("expected begin_body to return Some (compound_stmt was given)")
);
},
33 =>
{
if self.context.is_in_def() {
self.warn(&yystack.location_at (3), DiagnosticMessage::EndInMethod);
}
yyval = Value::Node(
self.builder.postexe(
Token::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
MaybeNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0)),
)
);
},
34 =>
{
yyval = yystack.owned_value_at(0);
},
35 =>
{
let command_call = Node::from(yystack.owned_value_at(0));
self.value_expr(&command_call)?;
yyval = Value::Node(
self.builder.multi_assign(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
command_call
)
);
},
36 =>
{
let mrhs = self.builder.array(
None,
NodeList::from(yystack.owned_value_at(0)),
None
);
self.value_expr(&mrhs)?;
yyval = Value::Node(
self.builder.assign(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
mrhs
)
);
},
37 =>
{
let rescue_body = self.builder.rescue_body(
Token::from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( Node::from(yystack.owned_value_at(0)))
);
let mrhs_arg = Node::from(yystack.owned_value_at(2));
self.value_expr(&mrhs_arg)?;
let begin_body = self.builder.begin_body(
Some(mrhs_arg),
vec![ rescue_body ],
None,
None
).expect("expected begin_body to return Some (compound_stmt was given)");
yyval = Value::Node(
self.builder.multi_assign(
Node::from(yystack.owned_value_at(4)),
Token::from(yystack.owned_value_at(3)),
begin_body
)
);
},
38 =>
{
yyval = Value::Node(
self.builder.multi_assign(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)
);
},
39 =>
{
yyval = yystack.owned_value_at(0);
},
40 =>
{
yyval = yystack.owned_value_at(0);
},
41 =>
{
yyval = Value::Node(
self.builder.rassign(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)
);
},
42 =>
{
yyval = Value::Node(
self.builder.multi_rassign(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)
);
},
43 =>
{
yyval = Value::Node(
self.builder.rassign(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)
);
},
44 =>
{
yyval = Value::Node(
self.builder.multi_rassign(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)
);
},
45 =>
{
yyval = Value::Node(
self.builder.assign(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)
);
},
46 =>
{
yyval = Value::Node(
self.builder.op_assign(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
47 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.index(
Node::from(yystack.owned_value_at(5)),
Token::from(yystack.owned_value_at(4)),
NodeList::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2))
),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
48 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( Node::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
49 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( Node::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
50 =>
{
let const_ = self.builder.const_op_assignable(
self.builder.const_fetch(
Node::from(yystack.owned_value_at(4)),
Token::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2))
)
);
yyval = Value::Node(
self.builder.op_assign(
const_,
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
51 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( Node::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
52 =>
{
yyval = Value::Node(
self.builder.op_assign(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
53 =>
{
let command_call = Node::from(yystack.owned_value_at(0));
self.value_expr(&command_call)?;
yyval = Value::Node(command_call);
},
54 =>
{
let command_call = Node::from(yystack.owned_value_at(2));
self.value_expr(&command_call)?;
let rescue_body = self.builder.rescue_body(
Token::from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( Node::from(yystack.owned_value_at(0)))
);
yyval = Value::Node(
self.builder.begin_body(
Some(command_call),
vec![ rescue_body ],
None,
None
).expect("expected begin_body to return Some (compound_stmt was given)")
);
},
55 =>
{
yyval = yystack.owned_value_at(0);
},
56 =>
{
yyval = yystack.owned_value_at(0);
},
57 =>
{
yyval = Value::Node(
self.builder.logical_op(
LogicalOp::And,
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
58 =>
{
yyval = Value::Node(
self.builder.logical_op(
LogicalOp::Or,
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
59 =>
{
yyval = Value::Node(
self.builder.not_op(
Token::from(yystack.owned_value_at(2)),
None,
Some( Node::from(yystack.owned_value_at(0))),
None
)?
);
},
60 =>
{
yyval = Value::Node(
self.builder.not_op(
Token::from(yystack.owned_value_at(1)),
None,
Some( Node::from(yystack.owned_value_at(0))),
None
)?
);
},
61 =>
{
let arg = match yystack.borrow_value_at(1) {
Value::Node(node) => node,
other => unreachable!("expected Node, got {:?}", other)
};
self.value_expr(arg)?;
self.yylexer.lex_state.set(EXPR_BEG|EXPR_LABEL);
self.yylexer.command_start = true;
self.pattern_variables.push();
yyval = Value::Bool(self.yylexer.in_kwarg);
self.yylexer.in_kwarg = true;
},
62 =>
{
self.pattern_variables.pop();
self.yylexer.in_kwarg = Bool::from(yystack.owned_value_at(1));
yyval = Value::Node(
self.builder.in_match(
Node::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
Node::from(yystack.owned_value_at(0))
)
);
},
63 =>
{
yyval = yystack.owned_value_at(0);
},
64 =>
{
self.static_env.extend_static();
self.yylexer.cmdarg.push(false);
self.yylexer.cond.push(false);
self.current_arg_stack.push(None);
yyval = yystack.owned_value_at(0);
},
65 =>
{
self.context.push_def();
yyval = Value::DefnHead(
DefnHead {
def_t: Token::from(yystack.owned_value_at(1)),
name_t: Token::from(yystack.owned_value_at(0))
}
);
},
66 =>
{
self.yylexer.lex_state.set(EXPR_FNAME);
yyval = Value::None;
},
67 =>
{
self.yylexer.lex_state.set(EXPR_ENDFN|EXPR_LABEL);
self.context.push_defs();
yyval = Value::DefsHead(
DefsHead {
def_t: Token::from(yystack.owned_value_at(4)),
definee: Node::from(yystack.owned_value_at(3)),
dot_t: Token::from(yystack.owned_value_at(2)),
name_t: Token::from(yystack.owned_value_at(0))
}
);
},
68 =>
{
let expr = Node::from(yystack.owned_value_at(0));
self.value_expr(&expr)?;
yyval = Value::Node(expr);
},
69 =>
{
self.yylexer.cond.push(true);
yyval = Value::None;
},
70 =>
{
self.yylexer.cond.pop();
yyval = Value::ExprValueDo(
ExprValueDo {
value: Node::from(yystack.owned_value_at(1)),
do_t: Token::from(yystack.owned_value_at(0))
}
);
},
71 =>
{
yyval = yystack.owned_value_at(0);
},
72 =>
{
yyval = yystack.owned_value_at(0);
},
73 =>
{
yyval = yystack.owned_value_at(0);
},
74 =>
{
yyval = Value::Node(
self.builder.call_method(
Some( Node::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)
);
},
75 =>
{
self.context.push_block();
yyval = Value::None;
},
76 =>
{
self.context.pop();
let BraceBody { args_type, body } = BraceBody::from(yystack.owned_value_at(1));
yyval = Value::CmdBraceBlock(
CmdBraceBlock {
begin_t: Token::from(yystack.owned_value_at(3)),
args_type,
body,
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
77 =>
{
yyval = yystack.owned_value_at(0);
},
78 =>
{
yyval = Value::Node(
self.builder.call_method(
None,
None,
Some( Token::from(yystack.owned_value_at(1))),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)
);
},
79 =>
{
let method_call = self.builder.call_method(
None,
None,
Some( Token::from(yystack.owned_value_at(2))),
None,
NodeList::from(yystack.owned_value_at(1)),
None
);
let CmdBraceBlock { begin_t, args_type, body, end_t } = CmdBraceBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
80 =>
{
yyval = Value::Node(
self.builder.call_method(
Some( Node::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)
);
},
81 =>
{
let method_call = self.builder.call_method(
Some( Node::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
NodeList::from(yystack.owned_value_at(1)),
None
);
let CmdBraceBlock { begin_t, args_type, body, end_t } = CmdBraceBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
82 =>
{
yyval = Value::Node(
self.builder.call_method(
Some( Node::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)
);
},
83 =>
{
let method_call = self.builder.call_method(
Some( Node::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
NodeList::from(yystack.owned_value_at(1)),
None
);
let CmdBraceBlock { begin_t, args_type, body, end_t } = CmdBraceBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
84 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Super,
Token::from(yystack.owned_value_at(1)),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)?
);
},
85 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Yield,
Token::from(yystack.owned_value_at(1)),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)?
);
},
86 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Return,
Token::from(yystack.owned_value_at(1)),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)?
);
},
87 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Break,
Token::from(yystack.owned_value_at(1)),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)?
);
},
88 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Next,
Token::from(yystack.owned_value_at(1)),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)?
);
},
89 =>
{
yyval = Value::Node(
self.builder.multi_lhs(
None,
NodeList::from(yystack.owned_value_at(0)),
None
)
);
},
90 =>
{
yyval = Value::Node(
self.builder.begin(
Token::from(yystack.owned_value_at(2)),
Some( Node::from(yystack.owned_value_at(1))),
Token::from(yystack.owned_value_at(0))
)
);
},
91 =>
{
yyval = Value::Node(
self.builder.multi_lhs(
None,
NodeList::from(yystack.owned_value_at(0)),
None
)
);
},
92 =>
{
let mlhs_items: Vec<Node> = match Node::from(yystack.owned_value_at(1)) {
Node::Mlhs(Mlhs { items, .. }) => items,
other => unreachable!("unsupported mlhs item {:?}", other)
};
yyval = Value::Node(
self.builder.multi_lhs(
Some( Token::from(yystack.owned_value_at(2))),
mlhs_items,
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
93 =>
{
yyval = yystack.owned_value_at(0);
},
94 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
95 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( Node::from(yystack.owned_value_at(0)))) );
yyval = Value::NodeList(nodes);
},
96 =>
{
let nodes = [
NodeList::from(yystack.owned_value_at(4)),
vec![ self.builder.splat( Token::from(yystack.owned_value_at(3)), Some( Node::from(yystack.owned_value_at(2)))) ],
NodeList::from(yystack.owned_value_at(0))
].concat();
yyval = Value::NodeList(nodes);
},
97 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.push( self.builder.splat( Token::from(yystack.owned_value_at(0)), None) );
yyval = Value::NodeList(nodes);
},
98 =>
{
let nodes = [
NodeList::from(yystack.owned_value_at(3)),
vec![ self.builder.splat( Token::from(yystack.owned_value_at(2)), None) ],
NodeList::from(yystack.owned_value_at(0))
].concat();
yyval = Value::NodeList(nodes);
},
99 =>
{
yyval = Value::NodeList(
vec![
self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( Node::from(yystack.owned_value_at(0))))
]
);
},
100 =>
{
let nodes = [
vec![ self.builder.splat( Token::from(yystack.owned_value_at(3)), Some( Node::from(yystack.owned_value_at(2)))) ],
NodeList::from(yystack.owned_value_at(0))
].concat();
yyval = Value::NodeList(nodes);
},
101 =>
{
yyval = Value::NodeList(
vec![
self.builder.splat( Token::from(yystack.owned_value_at(0)), None)
]
);
},
102 =>
{
let nodes = [
vec![ self.builder.splat( Token::from(yystack.owned_value_at(2)), None) ],
NodeList::from(yystack.owned_value_at(0))
].concat();
yyval = Value::NodeList(nodes);
},
103 =>
{
yyval = yystack.owned_value_at(0);
},
104 =>
{
yyval = Value::Node(
self.builder.begin(
Token::from(yystack.owned_value_at(2)),
Some( Node::from(yystack.owned_value_at(1))),
Token::from(yystack.owned_value_at(0))
)
);
},
105 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(1)) ]);
},
106 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(1)) );
yyval = Value::NodeList(nodes);
},
107 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
108 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
109 =>
{
yyval = Value::Node(
self.builder.assignable( Node::from(yystack.owned_value_at(0)))?
);
},
110 =>
{
yyval = Value::Node(
self.builder.assignable( Node::from(yystack.owned_value_at(0)))?
);
},
111 =>
{
yyval = Value::Node(
self.builder.index_asgn(
Node::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
NodeList::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
112 =>
{
let op_t = Token::from(yystack.owned_value_at(1));
if op_t.token_type == Lexer::tANDDOT {
return self.yyerror(&yystack.location_at (1), DiagnosticMessage::CsendInsideMasgn);
}
yyval = Value::Node(
self.builder.attr_asgn(
Node::from(yystack.owned_value_at(2)),
op_t,
Token::from(yystack.owned_value_at(0))
)
);
},
113 =>
{
yyval = Value::Node(
self.builder.attr_asgn(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
114 =>
{
let op_t = Token::from(yystack.owned_value_at(1));
if op_t.token_type == Lexer::tANDDOT {
return self.yyerror(&yystack.location_at (1), DiagnosticMessage::CsendInsideMasgn);
}
yyval = Value::Node(
self.builder.attr_asgn(
Node::from(yystack.owned_value_at(2)),
op_t,
Token::from(yystack.owned_value_at(0))
)
);
},
115 =>
{
yyval = Value::Node(
self.builder.assignable(
self.builder.const_fetch(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
)?
);
},
116 =>
{
yyval = Value::Node(
self.builder.assignable(
self.builder.const_global(
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
)?
);
},
117 =>
{
yyval = Value::Node(
self.builder.assignable(
Node::from(yystack.owned_value_at(0))
)?
);
},
118 =>
{
yyval = Value::Node(
self.builder.assignable( Node::from(yystack.owned_value_at(0)))?
);
},
119 =>
{
yyval = Value::Node(
self.builder.assignable( Node::from(yystack.owned_value_at(0)))?
);
},
120 =>
{
yyval = Value::Node(
self.builder.index_asgn(
Node::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
NodeList::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
)
},
121 =>
{
yyval = Value::Node(
self.builder.attr_asgn(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
122 =>
{
yyval = Value::Node(
self.builder.attr_asgn(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
123 =>
{
yyval = Value::Node(
self.builder.attr_asgn(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
124 =>
{
yyval = Value::Node(
self.builder.assignable(
self.builder.const_fetch(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0)),
)
)?
);
},
125 =>
{
yyval = Value::Node(
self.builder.assignable(
self.builder.const_global(
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0)),
)
)?
);
},
126 =>
{
yyval = Value::Node(
self.builder.assignable(
Node::from(yystack.owned_value_at(0))
)?
);
},
127 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::ClassOrModuleNameMustBeConstant);
},
128 =>
{
yyval = yystack.owned_value_at(0);
},
129 =>
{
yyval = Value::Node(
self.builder.const_global( Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
);
},
130 =>
{
yyval = Value::Node(
self.builder.const_( Token::from(yystack.owned_value_at(0)))
);
},
131 =>
{
yyval = Value::Node(
self.builder.const_fetch(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0)),
)
);
},
132 =>
{
yyval = yystack.owned_value_at(0);
},
133 =>
{
yyval = yystack.owned_value_at(0);
},
134 =>
{
yyval = yystack.owned_value_at(0);
},
135 =>
{
self.yylexer.lex_state.set(EXPR_ENDFN);
yyval = yystack.owned_value_at(0);
},
136 =>
{
yyval = yystack.owned_value_at(0);
},
137 =>
{
yyval = Value::Node(
self.builder.symbol_internal( Token::from(yystack.owned_value_at(0)))
);
},
138 =>
{
yyval = yystack.owned_value_at(0);
},
139 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
140 =>
{
self.yylexer.lex_state.set(EXPR_FNAME|EXPR_FITEM);
yyval = Value::None;
},
141 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
142 =>
{ yyval = yystack.owned_value_at(0); },
143 =>
{ yyval = yystack.owned_value_at(0); },
144 =>
{ yyval = yystack.owned_value_at(0); },
145 =>
{ yyval = yystack.owned_value_at(0); },
146 =>
{ yyval = yystack.owned_value_at(0); },
147 =>
{ yyval = yystack.owned_value_at(0); },
148 =>
{ yyval = yystack.owned_value_at(0); },
149 =>
{ yyval = yystack.owned_value_at(0); },
150 =>
{ yyval = yystack.owned_value_at(0); },
151 =>
{ yyval = yystack.owned_value_at(0); },
152 =>
{ yyval = yystack.owned_value_at(0); },
153 =>
{ yyval = yystack.owned_value_at(0); },
154 =>
{ yyval = yystack.owned_value_at(0); },
155 =>
{ yyval = yystack.owned_value_at(0); },
156 =>
{ yyval = yystack.owned_value_at(0); },
157 =>
{ yyval = yystack.owned_value_at(0); },
158 =>
{ yyval = yystack.owned_value_at(0); },
159 =>
{ yyval = yystack.owned_value_at(0); },
160 =>
{ yyval = yystack.owned_value_at(0); },
161 =>
{ yyval = yystack.owned_value_at(0); },
162 =>
{ yyval = yystack.owned_value_at(0); },
163 =>
{ yyval = yystack.owned_value_at(0); },
164 =>
{ yyval = yystack.owned_value_at(0); },
165 =>
{ yyval = yystack.owned_value_at(0); },
166 =>
{ yyval = yystack.owned_value_at(0); },
167 =>
{ yyval = yystack.owned_value_at(0); },
168 =>
{ yyval = yystack.owned_value_at(0); },
169 =>
{ yyval = yystack.owned_value_at(0); },
170 =>
{ yyval = yystack.owned_value_at(0); },
171 =>
{ yyval = yystack.owned_value_at(0); },
172 =>
{ yyval = yystack.owned_value_at(0); },
173 =>
{ yyval = yystack.owned_value_at(0); },
174 =>
{ yyval = yystack.owned_value_at(0); },
175 =>
{ yyval = yystack.owned_value_at(0); },
176 =>
{ yyval = yystack.owned_value_at(0); },
177 =>
{ yyval = yystack.owned_value_at(0); },
178 =>
{ yyval = yystack.owned_value_at(0); },
179 =>
{ yyval = yystack.owned_value_at(0); },
180 =>
{ yyval = yystack.owned_value_at(0); },
181 =>
{ yyval = yystack.owned_value_at(0); },
182 =>
{ yyval = yystack.owned_value_at(0); },
183 =>
{ yyval = yystack.owned_value_at(0); },
184 =>
{ yyval = yystack.owned_value_at(0); },
185 =>
{ yyval = yystack.owned_value_at(0); },
186 =>
{ yyval = yystack.owned_value_at(0); },
187 =>
{ yyval = yystack.owned_value_at(0); },
188 =>
{ yyval = yystack.owned_value_at(0); },
189 =>
{ yyval = yystack.owned_value_at(0); },
190 =>
{ yyval = yystack.owned_value_at(0); },
191 =>
{ yyval = yystack.owned_value_at(0); },
192 =>
{ yyval = yystack.owned_value_at(0); },
193 =>
{ yyval = yystack.owned_value_at(0); },
194 =>
{ yyval = yystack.owned_value_at(0); },
195 =>
{ yyval = yystack.owned_value_at(0); },
196 =>
{ yyval = yystack.owned_value_at(0); },
197 =>
{ yyval = yystack.owned_value_at(0); },
198 =>
{ yyval = yystack.owned_value_at(0); },
199 =>
{ yyval = yystack.owned_value_at(0); },
200 =>
{ yyval = yystack.owned_value_at(0); },
201 =>
{ yyval = yystack.owned_value_at(0); },
202 =>
{ yyval = yystack.owned_value_at(0); },
203 =>
{ yyval = yystack.owned_value_at(0); },
204 =>
{ yyval = yystack.owned_value_at(0); },
205 =>
{ yyval = yystack.owned_value_at(0); },
206 =>
{ yyval = yystack.owned_value_at(0); },
207 =>
{ yyval = yystack.owned_value_at(0); },
208 =>
{ yyval = yystack.owned_value_at(0); },
209 =>
{ yyval = yystack.owned_value_at(0); },
210 =>
{ yyval = yystack.owned_value_at(0); },
211 =>
{ yyval = yystack.owned_value_at(0); },
212 =>
{ yyval = yystack.owned_value_at(0); },
213 =>
{
yyval = Value::Node(
self.builder.assign(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)
);
},
214 =>
{
yyval = Value::Node(
self.builder.op_assign(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
215 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.index(
Node::from(yystack.owned_value_at(5)),
Token::from(yystack.owned_value_at(4)),
NodeList::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2))
),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
216 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( Node::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
217 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( Node::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
218 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( Node::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
219 =>
{
let const_ = self.builder.const_op_assignable(
self.builder.const_fetch(
Node::from(yystack.owned_value_at(4)),
Token::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2))
)
);
yyval = Value::Node(
self.builder.op_assign(
const_,
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
220 =>
{
let const_ = self.builder.const_op_assignable(
self.builder.const_global(
Token::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2))
)
);
yyval = Value::Node(
self.builder.op_assign(
const_,
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
221 =>
{
yyval = Value::Node(
self.builder.op_assign(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
222 =>
{
let left = Node::from(yystack.owned_value_at(2));
self.value_expr(&left)?;
let right = Node::from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_inclusive(
Some(left),
Token::from(yystack.owned_value_at(1)),
Some(right)
)
);
},
223 =>
{
let left = Node::from(yystack.owned_value_at(2));
self.value_expr(&left)?;
let right = Node::from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_exclusive(
Some(left),
Token::from(yystack.owned_value_at(1)),
Some(right)
)
);
},
224 =>
{
let left = Node::from(yystack.owned_value_at(1));
self.value_expr(&left)?;
yyval = Value::Node(
self.builder.range_inclusive(
Some(left),
Token::from(yystack.owned_value_at(0)),
None
)
);
},
225 =>
{
let left = Node::from(yystack.owned_value_at(1));
self.value_expr(&left)?;
yyval = Value::Node(
self.builder.range_exclusive(
Some(left),
Token::from(yystack.owned_value_at(0)),
None
)
);
},
226 =>
{
let right = Node::from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_inclusive(
None,
Token::from(yystack.owned_value_at(1)),
Some(right)
)
);
},
227 =>
{
let right = Node::from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_exclusive(
None,
Token::from(yystack.owned_value_at(1)),
Some(right)
)
);
},
228 =>
{
yyval = Value::Node(
self.builder.binary_op( Node::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
229 =>
{
yyval = Value::Node(
self.builder.binary_op( Node::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
230 =>
{
yyval = Value::Node(
self.builder.binary_op( Node::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
231 =>
{
yyval = Value::Node(
self.builder.binary_op( Node::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
232 =>
{
yyval = Value::Node(
self.builder.binary_op( Node::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
233 =>
{
yyval = Value::Node(
self.builder.binary_op( Node::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
234 =>
{
yyval = Value::Node(
self.builder.unary_op(
Token::from(yystack.owned_value_at(3)),
self.builder.binary_op(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
)?
);
},
235 =>
{
yyval = Value::Node(
self.builder.unary_op(
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
236 =>
{
yyval = Value::Node(
self.builder.unary_op(
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
237 =>
{
yyval = Value::Node(
self.builder.binary_op( Node::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
238 =>
{
yyval = Value::Node(
self.builder.binary_op( Node::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
239 =>
{
yyval = Value::Node(
self.builder.binary_op( Node::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
240 =>
{
yyval = Value::Node(
self.builder.binary_op( Node::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
241 =>
{
yyval = yystack.owned_value_at(0);
},
242 =>
{
yyval = Value::Node(
self.builder.binary_op( Node::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
243 =>
{
yyval = Value::Node(
self.builder.binary_op( Node::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
244 =>
{
yyval = Value::Node(
self.builder.binary_op( Node::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
245 =>
{
yyval = Value::Node(
self.builder.match_op( Node::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
246 =>
{
yyval = Value::Node(
self.builder.binary_op(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
247 =>
{
yyval = Value::Node(
self.builder.not_op(
Token::from(yystack.owned_value_at(1)),
None,
Some( Node::from(yystack.owned_value_at(0))),
None
)?
);
},
248 =>
{
yyval = Value::Node(
self.builder.unary_op(
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
249 =>
{
yyval = Value::Node(
self.builder.binary_op( Node::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
250 =>
{
yyval = Value::Node(
self.builder.binary_op( Node::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
251 =>
{
yyval = Value::Node(
self.builder.logical_op(
LogicalOp::And,
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
252 =>
{
yyval = Value::Node(
self.builder.logical_op(
LogicalOp::Or,
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
253 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Defined,
Token::from(yystack.owned_value_at(2)),
None,
vec![ Node::from(yystack.owned_value_at(0)) ],
None
)?
);
},
254 =>
{
let expr = Node::from(yystack.owned_value_at(5));
self.value_expr(&expr)?;
yyval = Value::Node(
self.builder.ternary(
expr,
Token::from(yystack.owned_value_at(4)),
Node::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)
);
},
255 =>
{
let DefnHead { def_t, name_t } = DefnHead::from(yystack.owned_value_at(3));
let name = clone_value(&name_t);
if name.ends_with('=') {
return self.yyerror(&name_t.loc, DiagnosticMessage::EndlessSetterDefinition);
}
yyval = Value::Node(
self.builder.def_endless_method(
def_t,
name_t,
MaybeNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Some( Node::from(yystack.owned_value_at(0)))
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
256 =>
{
let DefnHead { def_t, name_t } = DefnHead::from(yystack.owned_value_at(5));
let rescue_body = self.builder.rescue_body(
Token::from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( Node::from(yystack.owned_value_at(0)))
);
let method_body = self.builder.begin_body(
Some( Node::from(yystack.owned_value_at(2))),
vec![ rescue_body ],
None,
None
);
yyval = Value::Node(
self.builder.def_endless_method(
def_t,
name_t,
MaybeNode::from(yystack.owned_value_at(4)),
Token::from(yystack.owned_value_at(3)),
method_body
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
257 =>
{
let DefsHead { def_t, definee, dot_t, name_t } = DefsHead::from(yystack.owned_value_at(3));
yyval = Value::Node(
self.builder.def_endless_singleton(
def_t,
definee,
dot_t,
name_t,
MaybeNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Some( Node::from(yystack.owned_value_at(0)))
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
258 =>
{
let DefsHead { def_t, definee, dot_t, name_t } = DefsHead::from(yystack.owned_value_at(5));
let rescue_body = self.builder.rescue_body(
Token::from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( Node::from(yystack.owned_value_at(0)))
);
let method_body = self.builder.begin_body(
Some( Node::from(yystack.owned_value_at(2))),
vec![ rescue_body ],
None,
None
);
yyval = Value::Node(
self.builder.def_endless_singleton(
def_t,
definee,
dot_t,
name_t,
MaybeNode::from(yystack.owned_value_at(4)),
Token::from(yystack.owned_value_at(3)),
method_body
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
259 =>
{
yyval = yystack.owned_value_at(0);
},
260 =>
{
yyval = yystack.owned_value_at(0);
},
261 =>
{
yyval = yystack.owned_value_at(0);
},
262 =>
{
yyval = yystack.owned_value_at(0);
},
263 =>
{
yyval = yystack.owned_value_at(0);
},
264 =>
{
yyval = Value::Node(
self.builder.binary_op(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
265 =>
{
let op_t = Token::from(yystack.owned_value_at(1));
self.warn(&yystack.location_at (1), DiagnosticMessage::ComparisonAfterComparison(clone_value(&op_t)));
yyval = Value::Node(
self.builder.binary_op(
Node::from(yystack.owned_value_at(2)),
op_t,
Node::from(yystack.owned_value_at(0))
)?
);
},
266 =>
{
let arg = Node::from(yystack.owned_value_at(0));
self.value_expr(&arg)?;
yyval = Value::Node(arg);
},
267 =>
{
yyval = Value::NodeList( vec![] );
},
268 =>
{
yyval = yystack.owned_value_at(1);
},
269 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
nodes.push(
self.builder.associate(None, NodeList::from(yystack.owned_value_at(1)), None)
);
yyval = Value::NodeList( nodes );
},
270 =>
{
yyval = Value::NodeList(
vec![
self.builder.associate(None, NodeList::from(yystack.owned_value_at(1)), None)
]
);
},
271 =>
{
let arg = Node::from(yystack.owned_value_at(0));
self.value_expr(&arg)?;
yyval = Value::Node(arg);
},
272 =>
{
let arg = Node::from(yystack.owned_value_at(2));
self.value_expr(&arg)?;
let rescue_body = self.builder.rescue_body(
Token::from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( Node::from(yystack.owned_value_at(0)))
);
yyval = Value::Node(
self.builder.begin_body(
Some(arg),
vec![ rescue_body ],
None,
None
).expect("expected begin_body to return Some (compound_stmt was given)")
);
},
273 =>
{
yyval = Value::ParenArgs(
ParenArgs {
begin_t: Token::from(yystack.owned_value_at(2)),
args: NodeList::from(yystack.owned_value_at(1)),
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
274 =>
{
if !self.static_env.is_forward_args_declared() {
return self.yyerror(&yystack.location_at (1), DiagnosticMessage::UnexpectedToken("tBDOT3".to_owned()));
}
let args = [
NodeList::from(yystack.owned_value_at(3)),
vec![ self.builder.forwarded_args( Token::from(yystack.owned_value_at(1))) ]
].concat();
yyval = Value::ParenArgs(
ParenArgs {
begin_t: Token::from(yystack.owned_value_at(4)),
args,
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
275 =>
{
if !self.static_env.is_forward_args_declared() {
return self.yyerror(&yystack.location_at (1), DiagnosticMessage::UnexpectedToken("tBDOT3".to_owned()));
}
yyval = Value::ParenArgs(
ParenArgs {
begin_t: Token::from(yystack.owned_value_at(2)),
args: vec![ self.builder.forwarded_args( Token::from(yystack.owned_value_at(1))) ],
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
276 =>
{
yyval = Value::OptParenArgs(
OptParenArgs {
begin_t: None,
args: vec![],
end_t: None
}
);
},
277 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
yyval = Value::OptParenArgs(
OptParenArgs {
begin_t: Some(begin_t),
args,
end_t: Some(end_t)
}
);
},
278 =>
{
yyval = Value::NodeList( vec![] );
},
279 =>
{
yyval = yystack.owned_value_at(0);
},
280 =>
{
yyval = yystack.owned_value_at(1);
},
281 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
nodes.push( self.builder.associate(None, NodeList::from(yystack.owned_value_at(1)), None) );
yyval = Value::NodeList( nodes );
},
282 =>
{
yyval = Value::NodeList(
vec![
self.builder.associate(None, NodeList::from(yystack.owned_value_at(1)), None)
]
);
},
283 =>
{
let command = Node::from(yystack.owned_value_at(0));
self.value_expr(&command)?;
yyval = Value::NodeList( vec![ command ] );
},
284 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
285 =>
{
let nodes = [
vec![ self.builder.associate(None, NodeList::from(yystack.owned_value_at(1)), None) ],
NodeList::from(yystack.owned_value_at(0))
].concat();
yyval = Value::NodeList( nodes );
},
286 =>
{
let nodes = [
NodeList::from(yystack.owned_value_at(3)),
vec![ self.builder.associate(None, NodeList::from(yystack.owned_value_at(1)), None) ],
NodeList::from(yystack.owned_value_at(0))
].concat();
yyval = Value::NodeList( nodes );
},
287 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
288 =>
{
let lookahead =
matches!(
self.last_token.token_type,
Lexer::tLPAREN2
| Lexer::tLPAREN
| Lexer:: tLPAREN_ARG
| Lexer::tLBRACK2
| Lexer::tLBRACK
);
if lookahead { self.yylexer.cmdarg.pop() }
self.yylexer.cmdarg.push(true);
if lookahead { self.yylexer.cmdarg.push(false) }
yyval = Value::None;
},
289 =>
{
let lookahead = matches!(self.last_token.token_type, Lexer::tLBRACE_ARG);
if lookahead { self.yylexer.cmdarg.pop() }
self.yylexer.cmdarg.pop();
if lookahead { self.yylexer.cmdarg.push(false) }
yyval = yystack.owned_value_at(0);
},
290 =>
{
yyval = Value::Node(
self.builder.block_pass(
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)
);
},
291 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
292 =>
{
yyval = Value::NodeList( vec![] );
},
293 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
294 =>
{
yyval = Value::NodeList(
vec![
self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( Node::from(yystack.owned_value_at(0))))
]
);
},
295 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
296 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
nodes.push( self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( Node::from(yystack.owned_value_at(0)))) );
yyval = Value::NodeList(nodes);
},
297 =>
{
yyval = Value::Node(
self.builder.array(None, NodeList::from(yystack.owned_value_at(0)), None)
);
},
298 =>
{
yyval = yystack.owned_value_at(0);
},
299 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
300 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
nodes.push(
self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( Node::from(yystack.owned_value_at(0))))
);
yyval = Value::NodeList(nodes);
},
301 =>
{
yyval = Value::NodeList(
vec![
self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( Node::from(yystack.owned_value_at(0))))
]
);
},
302 =>
{
yyval = yystack.owned_value_at(0);
},
303 =>
{
yyval = yystack.owned_value_at(0);
},
304 =>
{
yyval = yystack.owned_value_at(0);
},
305 =>
{
yyval = yystack.owned_value_at(0);
},
306 =>
{
yyval = yystack.owned_value_at(0);
},
307 =>
{
yyval = yystack.owned_value_at(0);
},
308 =>
{
yyval = yystack.owned_value_at(0);
},
309 =>
{
yyval = yystack.owned_value_at(0);
},
310 =>
{
yyval = yystack.owned_value_at(0);
},
311 =>
{
yyval = yystack.owned_value_at(0);
},
312 =>
{
yyval = Value::Node(
self.builder.call_method(
None,
None,
Some( Token::from(yystack.owned_value_at(0))),
None,
vec![],
None
)
);
},
313 =>
{
self.yylexer.cmdarg.push(false);
yyval = Value::None;
},
314 =>
{
self.yylexer.cmdarg.pop();
yyval = Value::Node(
self.builder.begin_keyword( Token::from(yystack.owned_value_at(3)), MaybeNode::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
);
},
315 =>
{ self.yylexer.lex_state.set(EXPR_ENDARG); yyval = Value::None; },
316 =>
{
yyval = Value::Node(
self.builder.begin(
Token::from(yystack.owned_value_at(2)),
None,
Token::from(yystack.owned_value_at(0))
)
);
},
317 =>
{ self.yylexer.lex_state.set(EXPR_ENDARG); yyval = Value::None; },
318 =>
{
yyval = Value::Node(
self.builder.begin(
Token::from(yystack.owned_value_at(3)),
Some( Node::from(yystack.owned_value_at(2))),
Token::from(yystack.owned_value_at(0))
)
);
},
319 =>
{
yyval = Value::Node(
self.builder.begin(
Token::from(yystack.owned_value_at(2)),
MaybeNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
320 =>
{
yyval = Value::Node(
self.builder.const_fetch(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0)),
)
);
},
321 =>
{
yyval = Value::Node(
self.builder.const_global( Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
);
},
322 =>
{
yyval = Value::Node(
self.builder.array(
Some( Token::from(yystack.owned_value_at(2))),
NodeList::from(yystack.owned_value_at(1)),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
323 =>
{
yyval = Value::Node(
self.builder.associate(
Some( Token::from(yystack.owned_value_at(2))),
NodeList::from(yystack.owned_value_at(1)),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
324 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Return,
Token::from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
325 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Yield,
Token::from(yystack.owned_value_at(3)),
Some( Token::from(yystack.owned_value_at(2))),
NodeList::from(yystack.owned_value_at(1)),
Some( Token::from(yystack.owned_value_at(0)))
)?
);
},
326 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Yield,
Token::from(yystack.owned_value_at(2)),
Some( Token::from(yystack.owned_value_at(1))),
vec![],
Some( Token::from(yystack.owned_value_at(0)))
)?
);
},
327 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Yield,
Token::from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
328 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Defined,
Token::from(yystack.owned_value_at(4)),
Some( Token::from(yystack.owned_value_at(2))),
vec![ Node::from(yystack.owned_value_at(1)) ],
Some( Token::from(yystack.owned_value_at(0)))
)?
);
},
329 =>
{
yyval = Value::Node(
self.builder.not_op(
Token::from(yystack.owned_value_at(3)),
Some( Token::from(yystack.owned_value_at(2))),
Some( Node::from(yystack.owned_value_at(1))),
Some( Token::from(yystack.owned_value_at(0)))
)?
);
},
330 =>
{
yyval = Value::Node(
self.builder.not_op(
Token::from(yystack.owned_value_at(2)),
Some( Token::from(yystack.owned_value_at(1))),
None,
Some( Token::from(yystack.owned_value_at(0)))
)?
);
},
331 =>
{
let method_call = self.builder.call_method(
None,
None,
Some( Token::from(yystack.owned_value_at(1))),
None,
vec![],
None
);
let BraceBlock { begin_t, args_type, body, end_t } = BraceBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
332 =>
{
yyval = yystack.owned_value_at(0);
},
333 =>
{
let BraceBlock { begin_t, args_type, body, end_t } = BraceBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
Node::from(yystack.owned_value_at(1)),
begin_t,
args_type,
body,
end_t
)?
);
},
334 =>
{
yyval = yystack.owned_value_at(0);
},
335 =>
{
let IfTail { keyword_t, body: else_body } = IfTail::from(yystack.owned_value_at(1));
yyval = Value::Node(
self.builder.condition(
Token::from(yystack.owned_value_at(5)),
Node::from(yystack.owned_value_at(4)),
Token::from(yystack.owned_value_at(3)),
MaybeNode::from(yystack.owned_value_at(2)),
keyword_t,
else_body,
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
336 =>
{
let (else_t, body) = OptElse::from(yystack.owned_value_at(1)).map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
yyval = Value::Node(
self.builder.condition(
Token::from(yystack.owned_value_at(5)),
Node::from(yystack.owned_value_at(4)),
Token::from(yystack.owned_value_at(3)),
body,
else_t,
MaybeNode::from(yystack.owned_value_at(2)),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
337 =>
{
let ExprValueDo { value, do_t } = ExprValueDo::from(yystack.owned_value_at(2));
yyval = Value::Node(
self.builder.loop_(
LoopType::While,
Token::from(yystack.owned_value_at(3)),
value,
do_t,
MaybeNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
338 =>
{
let ExprValueDo { value, do_t } = ExprValueDo::from(yystack.owned_value_at(2));
yyval = Value::Node(
self.builder.loop_(
LoopType::Until,
Token::from(yystack.owned_value_at(3)),
value,
do_t,
MaybeNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
339 =>
{
yyval = Value::None;
},
340 =>
{
let CaseBody { when_bodies, opt_else } = CaseBody::from(yystack.owned_value_at(1));
let (else_t, else_body) = opt_else.map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
yyval = Value::Node(
self.builder.case(
Token::from(yystack.owned_value_at(5)),
Some( Node::from(yystack.owned_value_at(4))),
when_bodies,
else_t,
else_body,
Token::from(yystack.owned_value_at(0))
)
);
},
341 =>
{
yyval = Value::None;
},
342 =>
{
let CaseBody { when_bodies, opt_else } = CaseBody::from(yystack.owned_value_at(1));
let (else_t, else_body) = opt_else.map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
yyval = Value::Node(
self.builder.case(
Token::from(yystack.owned_value_at(4)),
None,
when_bodies,
else_t,
else_body,
Token::from(yystack.owned_value_at(0))
)
);
},
343 =>
{
let PCaseBody { in_bodies, opt_else } = PCaseBody::from(yystack.owned_value_at(1));
let (else_t, else_body) = opt_else.map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
yyval = Value::Node(
self.builder.case_match(
Token::from(yystack.owned_value_at(4)),
Node::from(yystack.owned_value_at(3)),
in_bodies,
else_t,
else_body,
Token::from(yystack.owned_value_at(0))
)
);
},
344 =>
{
let ExprValueDo { value, do_t } = ExprValueDo::from(yystack.owned_value_at(2));
yyval = Value::Node(
self.builder.for_(
Token::from(yystack.owned_value_at(5)),
Node::from(yystack.owned_value_at(4)),
Token::from(yystack.owned_value_at(3)),
value,
do_t,
MaybeNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
345 =>
{
self.static_env.extend_static();
self.yylexer.cmdarg.push(false);
self.yylexer.cond.push(false);
self.context.push_class();
yyval = Value::None;
},
346 =>
{
if !self.context.is_class_definition_allowed() {
return self.yyerror(&yystack.location_at (5), DiagnosticMessage::ClassDefinitionInMethodBody);
}
let Superclass { lt_t, value } = Superclass::from(yystack.owned_value_at(3));
yyval = Value::Node(
self.builder.def_class(
Token::from(yystack.owned_value_at(5)),
Node::from(yystack.owned_value_at(4)),
lt_t,
value,
MaybeNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
},
347 =>
{
self.static_env.extend_static();
self.yylexer.cmdarg.push(false);
self.yylexer.cond.push(false);
self.context.push_sclass();
yyval = Value::None;
},
348 =>
{
yyval = Value::Node(
self.builder.def_sclass(
Token::from(yystack.owned_value_at(6)),
Token::from(yystack.owned_value_at(5)),
Node::from(yystack.owned_value_at(4)),
MaybeNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
},
349 =>
{
self.static_env.extend_static();
self.yylexer.cmdarg.push(false);
self.context.push_module();
yyval = Value::None;
},
350 =>
{
if !self.context.is_module_definition_allowed() {
return self.yyerror(&yystack.location_at (4), DiagnosticMessage::ModuleDefinitionInMethodBody);
}
yyval = Value::Node(
self.builder.def_module(
Token::from(yystack.owned_value_at(4)),
Node::from(yystack.owned_value_at(3)),
MaybeNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
self.yylexer.cmdarg.pop();
self.static_env.unextend();
self.context.pop();
},
351 =>
{
let DefnHead { def_t, name_t } = DefnHead::from(yystack.owned_value_at(3));
yyval = Value::Node(
self.builder.def_method(
def_t,
name_t,
MaybeNode::from(yystack.owned_value_at(2)),
MaybeNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
352 =>
{
let DefsHead { def_t, definee, dot_t, name_t } = DefsHead::from(yystack.owned_value_at(3));
yyval = Value::Node(
self.builder.def_singleton(
def_t,
definee,
dot_t,
name_t,
MaybeNode::from(yystack.owned_value_at(2)),
MaybeNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
353 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Break,
Token::from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
354 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Next,
Token::from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
355 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Redo,
Token::from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
356 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Retry,
Token::from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
357 =>
{
let primary = Node::from(yystack.owned_value_at(0));
self.value_expr(&primary)?;
yyval = Value::Node(primary);
},
358 =>
{
yyval = yystack.owned_value_at(0);
},
359 =>
{
self.warn_eol(&yystack.location_at (0), "if");
yyval = yystack.owned_value_at(0);
},
360 =>
{
yyval = yystack.owned_value_at(0);
},
361 =>
{
yyval = yystack.owned_value_at(0);
},
362 =>
{
yyval = yystack.owned_value_at(0);
},
363 =>
{
yyval = yystack.owned_value_at(0);
},
364 =>
{
yyval = yystack.owned_value_at(0);
},
365 =>
{
yyval = yystack.owned_value_at(0);
},
366 =>
{
yyval = yystack.owned_value_at(0);
},
367 =>
{
yyval = yystack.owned_value_at(0);
},
368 =>
{
yyval = yystack.owned_value_at(0);
},
369 =>
{
yyval = yystack.owned_value_at(0);
},
370 =>
{
yyval = yystack.owned_value_at(0);
},
371 =>
{
yyval = yystack.owned_value_at(0);
},
372 =>
{
yyval = yystack.owned_value_at(0);
},
373 =>
{
yyval = yystack.owned_value_at(0);
},
374 =>
{
self.warn_eol(&yystack.location_at (0), "elsif");
yyval = yystack.owned_value_at(0);
},
375 =>
{
yyval = yystack.owned_value_at(0);
},
376 =>
{
if self.context.is_in_class() {
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::InvalidReturnInClassOrModuleBody);
}
yyval = yystack.owned_value_at(0);
},
377 =>
{
yyval = yystack.owned_value_at(0);
},
378 =>
{
yyval = yystack.owned_value_at(0);
},
379 =>
{
yyval = yystack.owned_value_at(0);
},
380 =>
{
yyval = yystack.owned_value_at(0);
},
381 =>
{
yyval = yystack.owned_value_at(0);
},
382 =>
{
let (keyword_t, body) = OptElse::from(yystack.owned_value_at(0)).map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
yyval = Value::IfTail(IfTail { keyword_t, body });
},
383 =>
{
let IfTail { keyword_t, body: else_body } = IfTail::from(yystack.owned_value_at(0));
let elsif_t = Token::from(yystack.owned_value_at(4));
yyval = Value::IfTail(
IfTail {
keyword_t: Some(elsif_t.clone()),
body: Some(
self.builder.condition(
elsif_t,
Node::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
MaybeNode::from(yystack.owned_value_at(1)),
keyword_t,
else_body,
None
)
)
}
);
},
384 =>
{
yyval = Value::OptElse(None);
},
385 =>
{
let else_t = Token::from(yystack.owned_value_at(1));
let body = MaybeNode::from(yystack.owned_value_at(0));
yyval = Value::OptElse(Some(Else { else_t, body }));
},
386 =>
{
yyval = yystack.owned_value_at(0);
},
387 =>
{
yyval = yystack.owned_value_at(0);
},
388 =>
{
yyval = Value::Node(
self.builder.arg( Token::from(yystack.owned_value_at(0)))?
);
},
389 =>
{
yyval = Value::Node(
self.builder.multi_lhs(
Some( Token::from(yystack.owned_value_at(2))),
NodeList::from(yystack.owned_value_at(1)),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
390 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
391 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
392 =>
{
yyval = yystack.owned_value_at(0);
},
393 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
394 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(4)), vec![ Node::from(yystack.owned_value_at(2)) ], NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
395 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
396 =>
{
let nodes = [ vec![ Node::from(yystack.owned_value_at(2)) ], NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
397 =>
{
yyval = Value::Node(
self.builder.restarg( Token::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))))?
);
},
398 =>
{
yyval = Value::Node(
self.builder.restarg( Token::from(yystack.owned_value_at(0)), None)?
);
},
399 =>
{
yyval = yystack.owned_value_at(0);
},
400 =>
{
yyval = yystack.owned_value_at(0);
},
401 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
402 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
403 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
404 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
405 =>
{
yyval = yystack.owned_value_at(0);
},
406 =>
{
yyval = Value::NodeList( vec![] );
},
407 =>
{
yyval = yystack.owned_value_at(0);
},
408 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(5)), NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
409 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(7)), NodeList::from(yystack.owned_value_at(5)), NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
410 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
411 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(5)), NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
412 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
413 =>
{
yyval = yystack.owned_value_at(1);
},
414 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(5)), NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
415 =>
{
let mut f_arg = NodeList::from(yystack.owned_value_at(1));
let opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
let nodes: Vec<Node>;
if opt_block_args_tail.is_empty() && f_arg.len() == 1 {
nodes = vec![ self.builder.procarg0(f_arg.pop().expect("f_arg is non empty")) ];
} else {
nodes = [ f_arg, opt_block_args_tail ].concat();
}
yyval = Value::NodeList(nodes);
},
416 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
417 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(5)), NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
418 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
419 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
420 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
421 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
422 =>
{
yyval = yystack.owned_value_at(0);
},
423 =>
{
yyval = Value::MaybeNode(
self.builder.args(None, vec![], None)
);
},
424 =>
{
self.yylexer.command_start = true;
yyval = yystack.owned_value_at(0);
},
425 =>
{
self.max_numparam_stack.set_has_ordinary_params();
self.current_arg_stack.set(None);
yyval = Value::MaybeNode(
self.builder.args(
Some( Token::from(yystack.owned_value_at(2))),
NodeList::from(yystack.owned_value_at(1)),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
426 =>
{
self.max_numparam_stack.set_has_ordinary_params();
self.current_arg_stack.set(None);
yyval = Value::MaybeNode(
self.builder.args(
Some( Token::from(yystack.owned_value_at(3))),
[ NodeList::from(yystack.owned_value_at(2)), NodeList::from(yystack.owned_value_at(1)) ].concat(),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
427 =>
{
yyval = Value::NodeList( vec![] );
},
428 =>
{
yyval = yystack.owned_value_at(1);
},
429 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
430 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
431 =>
{
let ident_t = Token::from(yystack.owned_value_at(0));
self.static_env.declare(&clone_value(&ident_t));
yyval = Value::Node(
self.builder.shadowarg(ident_t)?
);
},
432 =>
{
yyval = Value::None;
},
433 =>
{
self.static_env.extend_dynamic();
self.max_numparam_stack.push();
self.context.push_lambda();
yyval = Value::Num(self.yylexer.lpar_beg);
self.yylexer.lpar_beg = self.yylexer.paren_nest;
},
434 =>
{
self.context.pop();
self.yylexer.cmdarg.push(false);
yyval = Value::None;
},
435 =>
{
self.yylexer.lpar_beg = Num::from(yystack.owned_value_at(3));
let lambda_call = self.builder.call_lambda( Token::from(yystack.owned_value_at(4)));
let args = if self.max_numparam_stack.has_numparams() {
ArgsType::Numargs(self.max_numparam_stack.top() as u8)
} else {
ArgsType::Args( MaybeNode::from(yystack.owned_value_at(2)))
};
let LambdaBody { begin_t, body, end_t } = LambdaBody::from(yystack.owned_value_at(0));
self.max_numparam_stack.pop();
self.static_env.unextend();
self.yylexer.cmdarg.pop();
yyval = Value::Node(
self.builder.block(
lambda_call,
begin_t,
args,
body,
end_t
)?
);
},
436 =>
{
self.max_numparam_stack.set_has_ordinary_params();
yyval = Value::MaybeNode(
self.builder.args(
Some( Token::from(yystack.owned_value_at(3))),
vec![ NodeList::from(yystack.owned_value_at(2)), NodeList::from(yystack.owned_value_at(1)) ].concat(),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
437 =>
{
let args = NodeList::from(yystack.owned_value_at(0));
if !args.is_empty() {
self.max_numparam_stack.set_has_ordinary_params();
}
yyval = Value::MaybeNode(
self.builder.args(None, args, None)
);
},
438 =>
{
self.context.push_lambda();
yyval = Value::None;
},
439 =>
{
self.context.pop();
yyval = Value::LambdaBody(
LambdaBody {
begin_t: Token::from(yystack.owned_value_at(3)),
body: MaybeNode::from(yystack.owned_value_at(1)),
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
440 =>
{
self.context.push_lambda();
yyval = Value::None;
},
441 =>
{
self.context.pop();
yyval = Value::LambdaBody(
LambdaBody {
begin_t: Token::from(yystack.owned_value_at(3)),
body: MaybeNode::from(yystack.owned_value_at(1)),
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
442 =>
{
self.context.push_block();
yyval = Value::None;
},
443 =>
{
let DoBody { args_type, body } = DoBody::from(yystack.owned_value_at(1));
self.context.pop();
yyval = Value::DoBlock(
DoBlock {
begin_t: Token::from(yystack.owned_value_at(3)),
args_type,
body,
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
444 =>
{
let DoBlock { begin_t, args_type, body, end_t } = DoBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
Node::from(yystack.owned_value_at(1)),
begin_t,
args_type,
body,
end_t
)?
);
},
445 =>
{
let OptParenArgs { begin_t, args, end_t } = OptParenArgs::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
Some( Node::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
begin_t,
args,
end_t
)
);
},
446 =>
{
let OptParenArgs { begin_t, args, end_t } = OptParenArgs::from(yystack.owned_value_at(1));
let method_call = self.builder.call_method(
Some( Node::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
begin_t,
args,
end_t
);
let BraceBlock { begin_t, args_type, body, end_t } = BraceBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
447 =>
{
let method_call = self.builder.call_method(
Some( Node::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
NodeList::from(yystack.owned_value_at(1)),
None
);
let DoBlock { begin_t, args_type, body, end_t } = DoBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
448 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
None,
None,
Some( Token::from(yystack.owned_value_at(1))),
Some(begin_t),
args,
Some(end_t)
)
);
},
449 =>
{
let OptParenArgs { begin_t, args, end_t } = OptParenArgs::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
Some( Node::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
begin_t,
args,
end_t
)
);
},
450 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
Some( Node::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
Some(begin_t),
args,
Some(end_t)
)
);
},
451 =>
{
yyval = Value::Node(
self.builder.call_method(
Some( Node::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
Some( Token::from(yystack.owned_value_at(0))),
None,
vec![],
None
)
);
},
452 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
Some( Node::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
None,
Some(begin_t),
args,
Some(end_t)
)
);
},
453 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
Some( Node::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
None,
Some(begin_t),
args,
Some(end_t)
)
);
},
454 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Super,
Token::from(yystack.owned_value_at(1)),
Some(begin_t),
args,
Some(end_t)
)?
);
},
455 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Zsuper,
Token::from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
456 =>
{
yyval = Value::Node(
self.builder.index(
Node::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
NodeList::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
457 =>
{
self.context.push_block();
yyval = Value::None;
},
458 =>
{
let BraceBody { args_type, body } = BraceBody::from(yystack.owned_value_at(1));
self.context.pop();
yyval = Value::BraceBlock(
BraceBlock {
begin_t: Token::from(yystack.owned_value_at(3)),
args_type,
body,
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
459 =>
{
self.context.push_block();
yyval = Value::None;
},
460 =>
{
let DoBody { args_type, body } = DoBody::from(yystack.owned_value_at(1));
self.context.pop();
yyval = Value::BraceBlock(
BraceBlock {
begin_t: Token::from(yystack.owned_value_at(3)),
args_type,
body,
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
461 =>
{
self.static_env.extend_dynamic();
self.max_numparam_stack.push();
yyval = Value::None;
},
462 =>
{
let args_type = if self.max_numparam_stack.has_numparams() {
ArgsType::Numargs(self.max_numparam_stack.top() as u8)
} else {
ArgsType::Args( MaybeNode::from(yystack.owned_value_at(1)))
};
self.max_numparam_stack.pop();
self.static_env.unextend();
yyval = Value::BraceBody(
BraceBody {
args_type,
body: MaybeNode::from(yystack.owned_value_at(0))
}
);
},
463 =>
{
self.static_env.extend_dynamic();
self.max_numparam_stack.push();
self.yylexer.cmdarg.push(false);
yyval = Value::None;
},
464 =>
{
let args_type = if self.max_numparam_stack.has_numparams() {
ArgsType::Numargs(self.max_numparam_stack.top() as u8)
} else {
ArgsType::Args( MaybeNode::from(yystack.owned_value_at(1)))
};
self.max_numparam_stack.pop();
self.static_env.unextend();
self.yylexer.cmdarg.pop();
yyval = Value::DoBody(
DoBody { args_type, body: MaybeNode::from(yystack.owned_value_at(0)) }
);
},
465 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
466 =>
{
yyval = Value::NodeList(
vec![
self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( Node::from(yystack.owned_value_at(0))))
]
);
},
467 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
468 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
nodes.push( self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( Node::from(yystack.owned_value_at(0)))) );
yyval = Value::NodeList( nodes );
},
469 =>
{
let when = self.builder.when( Token::from(yystack.owned_value_at(4)), NodeList::from(yystack.owned_value_at(3)), Token::from(yystack.owned_value_at(2)), MaybeNode::from(yystack.owned_value_at(1)));
let Cases { when_bodies, opt_else } = Cases::from(yystack.owned_value_at(0));
let when_bodies = [ vec![when], when_bodies ].concat();
yyval = Value::CaseBody(CaseBody { when_bodies, opt_else });
},
470 =>
{
yyval = Value::Cases(Cases { when_bodies: vec![], opt_else: OptElse::from(yystack.owned_value_at(0)) });
},
471 =>
{
let CaseBody { when_bodies, .. } = CaseBody::from(yystack.owned_value_at(0));
yyval = Value::Cases(Cases { when_bodies, opt_else: None });
},
472 =>
{
self.yylexer.lex_state.set(EXPR_BEG|EXPR_LABEL);
self.yylexer.command_start = false;
self.pattern_variables.push();
self.pattern_hash_keys.push();
yyval = Value::Bool(self.yylexer.in_kwarg);
self.yylexer.in_kwarg = true;
},
473 =>
{
self.yylexer.in_kwarg = Bool::from(yystack.owned_value_at(2));
yyval = Value::None;
},
474 =>
{
let PCases { in_bodies, opt_else } = PCases::from(yystack.owned_value_at(0));
let PTopExpr { pattern, guard } = PTopExpr::from(yystack.owned_value_at(4));
let in_bodies = [
vec![
self.builder.in_pattern(
Token::from(yystack.owned_value_at(6)),
pattern,
guard,
Token::from(yystack.owned_value_at(3)),
MaybeNode::from(yystack.owned_value_at(1))
)
],
in_bodies
].concat();
yyval = Value::PCaseBody(PCaseBody { in_bodies, opt_else });
},
475 =>
{
yyval = Value::PCases(PCases { in_bodies: vec![], opt_else: OptElse::from(yystack.owned_value_at(0)) });
},
476 =>
{
let PCaseBody { in_bodies, .. } = PCaseBody::from(yystack.owned_value_at(0));
yyval = Value::PCases(PCases { in_bodies, opt_else: None });
},
477 =>
{
yyval = Value::PTopExpr(PTopExpr { pattern: Node::from(yystack.owned_value_at(0)), guard: None });
},
478 =>
{
let guard = self.builder.if_guard( Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)));
yyval = Value::PTopExpr(PTopExpr { pattern: Node::from(yystack.owned_value_at(2)), guard: Some(guard) });
},
479 =>
{
let guard = self.builder.unless_guard( Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)));
yyval = Value::PTopExpr(PTopExpr { pattern: Node::from(yystack.owned_value_at(2)), guard: Some(guard) });
},
480 =>
{
yyval = yystack.owned_value_at(0);
},
481 =>
{
yyval = Value::Node(
self.builder.array_pattern(
None,
vec![ Node::from(yystack.owned_value_at(1)) ],
Some( Token::from(yystack.owned_value_at(0))),
None
)
);
},
482 =>
{
let MatchPatternWithTrailingComma { elements, trailing_comma } = MatchPatternWithTrailingComma::from(yystack.owned_value_at(0));
let elements = [ vec![ Node::from(yystack.owned_value_at(2))], elements ].concat();
yyval = Value::Node(
self.builder.array_pattern(None, elements, trailing_comma, None)
);
},
483 =>
{
yyval = Value::Node(
self.builder.find_pattern(None, NodeList::from(yystack.owned_value_at(0)), None)
);
},
484 =>
{
yyval = Value::Node(
self.builder.array_pattern(None, NodeList::from(yystack.owned_value_at(0)), None, None)
);
},
485 =>
{
yyval = Value::Node(
self.builder.hash_pattern(None, NodeList::from(yystack.owned_value_at(0)), None)
);
},
486 =>
{
yyval = yystack.owned_value_at(0);
},
487 =>
{
yyval = Value::Node(
self.builder.match_as(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)
);
},
488 =>
{
yyval = yystack.owned_value_at(0);
},
489 =>
{
yyval = Value::Node(
self.builder.match_alt(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)
);
},
490 =>
{
yyval = yystack.owned_value_at(0);
},
491 =>
{
yyval = yystack.owned_value_at(0);
self.pattern_hash_keys.push();
},
492 =>
{
yyval = yystack.owned_value_at(0);
self.pattern_hash_keys.push();
},
493 =>
{
yyval = yystack.owned_value_at(0);
},
494 =>
{
self.pattern_hash_keys.pop();
let MatchPatternWithTrailingComma { elements, trailing_comma } = MatchPatternWithTrailingComma::from(yystack.owned_value_at(1));
let pattern = self.builder.array_pattern(None, elements, trailing_comma, None);
yyval = Value::Node(
self.builder.const_pattern(
Node::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
pattern,
Token::from(yystack.owned_value_at(0))
)
);
},
495 =>
{
self.pattern_hash_keys.pop();
let pattern = self.builder.find_pattern(None, NodeList::from(yystack.owned_value_at(1)), None);
yyval = Value::Node(
self.builder.const_pattern(
Node::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
pattern,
Token::from(yystack.owned_value_at(0))
)
);
},
496 =>
{
self.pattern_hash_keys.pop();
let pattern = self.builder.hash_pattern(None, NodeList::from(yystack.owned_value_at(1)), None);
yyval = Value::Node(
self.builder.const_pattern(
Node::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
pattern,
Token::from(yystack.owned_value_at(0))
)
);
},
497 =>
{
let lparen = Token::from(yystack.owned_value_at(1));
let rparen = Token::from(yystack.owned_value_at(0));
let pattern = self.builder.array_pattern(Some(lparen.clone()), vec![], None, Some(rparen.clone()));
yyval = Value::Node(
self.builder.const_pattern(
Node::from(yystack.owned_value_at(2)),
lparen,
pattern,
rparen
)
);
},
498 =>
{
self.pattern_hash_keys.pop();
let MatchPatternWithTrailingComma { elements, trailing_comma } = MatchPatternWithTrailingComma::from(yystack.owned_value_at(1));
let pattern = self.builder.array_pattern(None, elements, trailing_comma, None);
yyval = Value::Node(
self.builder.const_pattern(
Node::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
pattern,
Token::from(yystack.owned_value_at(0))
)
);
},
499 =>
{
self.pattern_hash_keys.pop();
let pattern = self.builder.find_pattern(None, NodeList::from(yystack.owned_value_at(1)), None);
yyval = Value::Node(
self.builder.const_pattern(
Node::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
pattern,
Token::from(yystack.owned_value_at(0))
)
);
},
500 =>
{
self.pattern_hash_keys.pop();
let pattern = self.builder.hash_pattern(None, NodeList::from(yystack.owned_value_at(1)), None);
yyval = Value::Node(
self.builder.const_pattern(
Node::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
pattern,
Token::from(yystack.owned_value_at(0))
)
);
},
501 =>
{
let lparen = Token::from(yystack.owned_value_at(1));
let rparen = Token::from(yystack.owned_value_at(0));
let pattern = self.builder.array_pattern(Some(lparen.clone()), vec![], None, Some(rparen.clone()));
yyval = Value::Node(
self.builder.const_pattern(
Node::from(yystack.owned_value_at(2)),
lparen,
pattern,
rparen
)
);
},
502 =>
{
let MatchPatternWithTrailingComma { elements, trailing_comma } = MatchPatternWithTrailingComma::from(yystack.owned_value_at(1));
yyval = Value::Node(
self.builder.array_pattern(
Some( Token::from(yystack.owned_value_at(2))),
elements,
trailing_comma,
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
503 =>
{
yyval = Value::Node(
self.builder.find_pattern(
Some( Token::from(yystack.owned_value_at(2))),
NodeList::from(yystack.owned_value_at(1)),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
504 =>
{
yyval = Value::Node(
self.builder.array_pattern(
Some( Token::from(yystack.owned_value_at(1))),
vec![],
None,
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
505 =>
{
self.pattern_hash_keys.push();
yyval = Value::Bool(self.yylexer.in_kwarg);
self.yylexer.in_kwarg = false;
},
506 =>
{
self.pattern_hash_keys.pop();
self.yylexer.in_kwarg = Bool::from(yystack.owned_value_at(2));
yyval = Value::Node(
self.builder.hash_pattern(
Some( Token::from(yystack.owned_value_at(3))),
NodeList::from(yystack.owned_value_at(1)),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
507 =>
{
yyval = Value::Node(
self.builder.hash_pattern(
Some( Token::from(yystack.owned_value_at(1))),
vec![],
Some( Token::from(yystack.owned_value_at(0))),
)
);
},
508 =>
{
self.pattern_hash_keys.push();
yyval = Value::None;
},
509 =>
{
self.pattern_hash_keys.pop();
yyval = Value::Node(
self.builder.begin(
Token::from(yystack.owned_value_at(3)),
Some( Node::from(yystack.owned_value_at(1))),
Token::from(yystack.owned_value_at(0))
)
);
},
510 =>
{
yyval = Value::MatchPatternWithTrailingComma(
MatchPatternWithTrailingComma {
elements: vec![ Node::from(yystack.owned_value_at(0)) ],
trailing_comma: None
}
);
},
511 =>
{
yyval = yystack.owned_value_at(0);
},
512 =>
{
let elements = [ MatchPatternWithTrailingComma::from(yystack.owned_value_at(1)).elements, vec![ Node::from(yystack.owned_value_at(0)) ] ].concat();
yyval = Value::MatchPatternWithTrailingComma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: None
}
);
},
513 =>
{
let match_rest = self.builder.match_rest( Token::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))))?;
let elements = [ MatchPatternWithTrailingComma::from(yystack.owned_value_at(2)).elements, vec![ match_rest ] ].concat();
yyval = Value::MatchPatternWithTrailingComma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: None
}
);
},
514 =>
{
let match_rest = self.builder.match_rest( Token::from(yystack.owned_value_at(3)), Some( Token::from(yystack.owned_value_at(2))))?;
let elements = [ MatchPatternWithTrailingComma::from(yystack.owned_value_at(4)).elements, vec![ match_rest ], NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::MatchPatternWithTrailingComma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: None
}
);
},
515 =>
{
let match_rest = self.builder.match_rest( Token::from(yystack.owned_value_at(0)), None)?;
let elements = [ MatchPatternWithTrailingComma::from(yystack.owned_value_at(1)).elements, vec![ match_rest ] ].concat();
yyval = Value::MatchPatternWithTrailingComma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: None
}
);
},
516 =>
{
let match_rest = self.builder.match_rest( Token::from(yystack.owned_value_at(2)), None)?;
let elements = [ MatchPatternWithTrailingComma::from(yystack.owned_value_at(3)).elements, vec![ match_rest ], NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::MatchPatternWithTrailingComma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: None
}
);
},
517 =>
{
yyval = Value::MatchPatternWithTrailingComma(
MatchPatternWithTrailingComma {
elements: NodeList::from(yystack.owned_value_at(0)),
trailing_comma: None
}
);
},
518 =>
{
yyval = Value::MatchPatternWithTrailingComma(
MatchPatternWithTrailingComma {
elements: vec![ Node::from(yystack.owned_value_at(1))],
trailing_comma: Some( Token::from(yystack.owned_value_at(0))),
}
);
},
519 =>
{
let elements = [ MatchPatternWithTrailingComma::from(yystack.owned_value_at(2)).elements, vec![ Node::from(yystack.owned_value_at(1)) ] ].concat();
yyval = Value::MatchPatternWithTrailingComma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: Some( Token::from(yystack.owned_value_at(0))),
}
);
},
520 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
521 =>
{
let nodes = [ vec![ Node::from(yystack.owned_value_at(2)) ], NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
522 =>
{
let nodes = [ vec![ Node::from(yystack.owned_value_at(4)) ], NodeList::from(yystack.owned_value_at(2)), vec![ Node::from(yystack.owned_value_at(0)) ] ].concat();
yyval = Value::NodeList(nodes);
},
523 =>
{
yyval = Value::Node(
self.builder.match_rest( Token::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))))?
);
},
524 =>
{
yyval = Value::Node(
self.builder.match_rest( Token::from(yystack.owned_value_at(0)), None)?
);
},
525 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
526 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
527 =>
{
yyval = yystack.owned_value_at(0);
},
528 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(2)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
529 =>
{
yyval = yystack.owned_value_at(0);
},
530 =>
{
yyval = yystack.owned_value_at(1);
},
531 =>
{
yyval = yystack.owned_value_at(0);
},
532 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
533 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
534 =>
{
yyval = Value::Node(
self.builder.match_pair(
PKwLabel::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
535 =>
{
yyval = Value::Node(
self.builder.match_label(
PKwLabel::from(yystack.owned_value_at(0)),
)?
);
},
536 =>
{
yyval = Value::PKwLabel(
PKwLabel::PlainLabel( Token::from(yystack.owned_value_at(0)))
);
},
537 =>
{
yyval = Value::PKwLabel(
PKwLabel::QuotedLabel( ( Token::from(yystack.owned_value_at(2)), NodeList::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0))) )
);
},
538 =>
{
yyval = Value::NodeList(
vec![
self.builder.match_rest( Token::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))))?
]
);
},
539 =>
{
yyval = Value::NodeList(
vec![
self.builder.match_rest( Token::from(yystack.owned_value_at(0)), None)?
]
);
},
540 =>
{
yyval = Value::NodeList(
vec![
self.builder.match_nil_pattern( Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
]
);
},
541 =>
{
yyval = yystack.owned_value_at(0);
},
542 =>
{
yyval = yystack.owned_value_at(0);
},
543 =>
{
yyval = yystack.owned_value_at(0);
},
544 =>
{
let left = Node::from(yystack.owned_value_at(2));
self.value_expr(&left)?;
let right = Node::from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_inclusive(
Some(left),
Token::from(yystack.owned_value_at(1)),
Some(right)
)
);
},
545 =>
{
let left = Node::from(yystack.owned_value_at(2));
self.value_expr(&left)?;
let right = Node::from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_exclusive(
Some(left),
Token::from(yystack.owned_value_at(1)),
Some(right)
)
);
},
546 =>
{
let left = Node::from(yystack.owned_value_at(1));
self.value_expr(&left)?;
yyval = Value::Node(
self.builder.range_inclusive(
Some(left),
Token::from(yystack.owned_value_at(0)),
None
)
);
},
547 =>
{
let left = Node::from(yystack.owned_value_at(1));
self.value_expr(&left)?;
yyval = Value::Node(
self.builder.range_exclusive(
Some(left),
Token::from(yystack.owned_value_at(0)),
None
)
);
},
548 =>
{
yyval = yystack.owned_value_at(0);
},
549 =>
{
yyval = yystack.owned_value_at(0);
},
550 =>
{
yyval = yystack.owned_value_at(0);
},
551 =>
{
let right = Node::from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_inclusive(
None,
Token::from(yystack.owned_value_at(1)),
Some(right)
)
);
},
552 =>
{
let right = Node::from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_exclusive(
None,
Token::from(yystack.owned_value_at(1)),
Some(right)
)
);
},
553 =>
{
yyval = yystack.owned_value_at(0);
},
554 =>
{
yyval = yystack.owned_value_at(0);
},
555 =>
{
yyval = yystack.owned_value_at(0);
},
556 =>
{
yyval = yystack.owned_value_at(0);
},
557 =>
{
yyval = yystack.owned_value_at(0);
},
558 =>
{
yyval = yystack.owned_value_at(0);
},
559 =>
{
yyval = yystack.owned_value_at(0);
},
560 =>
{
yyval = yystack.owned_value_at(0);
},
561 =>
{
yyval = Value::Node(
self.builder.accessible( Node::from(yystack.owned_value_at(0)))
);
},
562 =>
{
yyval = yystack.owned_value_at(0);
},
563 =>
{
yyval = Value::Node(
self.builder.match_var( Token::from(yystack.owned_value_at(0)))?
);
},
564 =>
{
let ident_t = Token::from(yystack.owned_value_at(0));
let name = clone_value(&ident_t);
if !self.static_env.is_declared(&name) {
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::NoSuchLocalVariable(name));
}
let lvar = self.builder.accessible(self.builder.lvar(ident_t));
yyval = Value::Node(
self.builder.pin( Token::from(yystack.owned_value_at(1)), lvar)
);
},
565 =>
{
yyval = Value::Node(
self.builder.const_global( Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
);
},
566 =>
{
yyval = Value::Node(
self.builder.const_fetch(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0)),
)
);
},
567 =>
{
yyval = Value::Node(self.builder.const_( Token::from(yystack.owned_value_at(0))));
},
568 =>
{
let ExcVar { assoc_t, exc_var } = ExcVar::from(yystack.owned_value_at(3));
let exc_list = NodeList::from(yystack.owned_value_at(4));
let exc_list = if exc_list.is_empty() {
None
} else {
Some(self.builder.array(None, exc_list, None))
};
let rescue_body = self.builder.rescue_body(
Token::from(yystack.owned_value_at(5)),
exc_list,
assoc_t,
exc_var,
Some( Token::from(yystack.owned_value_at(2))),
MaybeNode::from(yystack.owned_value_at(1))
);
let nodes = [ vec![rescue_body], NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
569 =>
{
yyval = Value::NodeList( vec![] );
},
570 =>
{
yyval = Value::NodeList(vec![ Node::from(yystack.owned_value_at(0)) ]);
},
571 =>
{
yyval = yystack.owned_value_at(0);
},
572 =>
{
yyval = Value::NodeList( vec![] );
},
573 =>
{
let assoc_t = Some( Token::from(yystack.owned_value_at(1)));
let exc_var = Some( Node::from(yystack.owned_value_at(0)));
yyval = Value::ExcVar(ExcVar { assoc_t, exc_var });
},
574 =>
{
yyval = Value::ExcVar(ExcVar { assoc_t: None, exc_var: None });
},
575 =>
{
let ensure_t = Token::from(yystack.owned_value_at(1));
let body = MaybeNode::from(yystack.owned_value_at(0));
yyval = Value::OptEnsure(Some(Ensure { ensure_t, body }));
},
576 =>
{
yyval = Value::OptEnsure(None);
},
577 =>
{
yyval = yystack.owned_value_at(0);
},
578 =>
{
yyval = yystack.owned_value_at(0);
},
579 =>
{
yyval = Value::Node(
self.builder.string_compose(
None,
NodeList::from(yystack.owned_value_at(0)),
None
)
);
},
580 =>
{
yyval = Value::NodeList(
vec![
self.builder.character( Token::from(yystack.owned_value_at(0)))
]
);
},
581 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
582 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
583 =>
{
let mut string = self.builder.string_compose(Some( Token::from(yystack.owned_value_at(2))), NodeList::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))));
let indent = self.yylexer.buffer.heredoc_indent;
self.yylexer.buffer.heredoc_indent = 0;
self.builder.heredoc_dedent(&mut string, indent);
yyval = Value::Node(string);
},
584 =>
{
let mut string = self.builder.xstring_compose( Token::from(yystack.owned_value_at(2)), NodeList::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)));
let indent = self.yylexer.buffer.heredoc_indent;
self.yylexer.buffer.heredoc_indent = 0;
self.builder.heredoc_dedent(&mut string, indent);
yyval = Value::Node(string);
},
585 =>
{
let regexp_end = Token::from(yystack.owned_value_at(0));
let opts = self.builder.regexp_options(regexp_end.clone());
yyval = Value::Node(
self.builder.regexp_compose(
Token::from(yystack.owned_value_at(2)),
NodeList::from(yystack.owned_value_at(1)),
regexp_end,
opts
)
);
},
586 =>
{
yyval = Value::Node(
self.builder.words_compose(
Token::from(yystack.owned_value_at(3)),
NodeList::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
587 =>
{
yyval = Value::NodeList( vec![] );
},
588 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push(
self.builder.word( NodeList::from(yystack.owned_value_at(1)) )
);
yyval = Value::NodeList(nodes);
},
589 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
590 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
591 =>
{
yyval = Value::Node(
self.builder.symbols_compose(
Token::from(yystack.owned_value_at(3)),
NodeList::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
592 =>
{
yyval = Value::NodeList( vec![] );
},
593 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push(
self.builder.word( NodeList::from(yystack.owned_value_at(1)) )
);
yyval = Value::NodeList( nodes );
},
594 =>
{
yyval = Value::Node(
self.builder.words_compose(
Token::from(yystack.owned_value_at(3)),
NodeList::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
595 =>
{
yyval = Value::Node(
self.builder.symbols_compose(
Token::from(yystack.owned_value_at(3)),
NodeList::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
596 =>
{
yyval = Value::NodeList( vec![] );
},
597 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push(
self.builder.string_internal( Token::from(yystack.owned_value_at(1)) )
);
yyval = Value::NodeList( nodes );
},
598 =>
{
yyval = Value::NodeList( vec![] );
},
599 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push(
self.builder.symbol_internal( Token::from(yystack.owned_value_at(1)) )
);
yyval = Value::NodeList( nodes );
},
600 =>
{
yyval = Value::NodeList( vec![] );
},
601 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.push( Node::from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
602 =>
{
yyval = Value::NodeList( vec![] );
},
603 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.push( Node::from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
604 =>
{
yyval = Value::NodeList( vec![] );
},
605 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList( nodes );
},
606 =>
{
yyval = Value::Node(
self.builder.string_internal( Token::from(yystack.owned_value_at(0)))
);
},
607 =>
{
yyval = Value::MaybeStrTerm(std::mem::take(&mut self.yylexer.strterm));
self.yylexer.lex_state.set(EXPR_BEG);
},
608 =>
{
self.yylexer.strterm = MaybeStrTerm::from(yystack.owned_value_at(1));
yyval = yystack.owned_value_at(0);
},
609 =>
{
self.yylexer.cmdarg.push(false);
self.yylexer.cond.push(false);
yyval = Value::None;
},
610 =>
{
yyval = Value::MaybeStrTerm(std::mem::take(&mut self.yylexer.strterm));
},
611 =>
{
yyval = Value::Num( self.yylexer.lex_state.get() );
self.yylexer.lex_state.set(EXPR_BEG);
},
612 =>
{
yyval = Value::Num( self.yylexer.brace_nest );
self.yylexer.brace_nest = 0;
},
613 =>
{
yyval = Value::Num( self.yylexer.buffer.heredoc_indent );
self.yylexer.buffer.heredoc_indent = 0;
},
614 =>
{
self.yylexer.cond.pop();
self.yylexer.cmdarg.pop();
self.yylexer.strterm = MaybeStrTerm::from(yystack.owned_value_at(5));
self.yylexer.lex_state.set( Num::from(yystack.owned_value_at(4)));
self.yylexer.brace_nest = Num::from(yystack.owned_value_at(3));
self.yylexer.buffer.heredoc_indent = Num::from(yystack.owned_value_at(2));
self.yylexer.buffer.heredoc_line_indent = -1;
yyval = Value::Node(
self.builder.begin(
Token::from(yystack.owned_value_at(7)),
MaybeNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
615 =>
{
yyval = Value::Node(self.builder.gvar( Token::from(yystack.owned_value_at(0))));
},
616 =>
{
yyval = Value::Node(self.builder.ivar( Token::from(yystack.owned_value_at(0))));
},
617 =>
{
yyval = Value::Node(self.builder.cvar( Token::from(yystack.owned_value_at(0))));
},
618 =>
{
yyval = yystack.owned_value_at(0);
},
619 =>
{ yyval = yystack.owned_value_at(0); },
620 =>
{ yyval = yystack.owned_value_at(0); },
621 =>
{
self.yylexer.lex_state.set(EXPR_END);
yyval = Value::Node(
self.builder.symbol( Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
);
},
622 =>
{ yyval = yystack.owned_value_at(0); },
623 =>
{ yyval = yystack.owned_value_at(0); },
624 =>
{ yyval = yystack.owned_value_at(0); },
625 =>
{ yyval = yystack.owned_value_at(0); },
626 =>
{
self.yylexer.lex_state.set(EXPR_END);
yyval = Value::Node(
self.builder.symbol_compose( Token::from(yystack.owned_value_at(2)), NodeList::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
);
},
627 =>
{
yyval = yystack.owned_value_at(0);
},
628 =>
{
yyval = Value::Node(
self.builder.unary_num(
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)
);
},
629 =>
{
yyval = Value::Node(
self.builder.integer( Token::from(yystack.owned_value_at(0)))
);
},
630 =>
{
yyval = Value::Node(
self.builder.float( Token::from(yystack.owned_value_at(0)))
);
},
631 =>
{
yyval = Value::Node(
self.builder.rational( Token::from(yystack.owned_value_at(0)))
);
},
632 =>
{
yyval = Value::Node(
self.builder.complex( Token::from(yystack.owned_value_at(0)))
);
},
633 =>
{
yyval = Value::Node(
self.builder.lvar( Token::from(yystack.owned_value_at(0)))
);
},
634 =>
{
yyval = Value::Node(
self.builder.ivar( Token::from(yystack.owned_value_at(0)))
);
},
635 =>
{
yyval = Value::Node(
self.builder.gvar( Token::from(yystack.owned_value_at(0)))
);
},
636 =>
{
yyval = Value::Node(
self.builder.const_( Token::from(yystack.owned_value_at(0)))
);
},
637 =>
{
yyval = Value::Node(
self.builder.cvar( Token::from(yystack.owned_value_at(0)))
);
},
638 =>
{
yyval = Value::Node(
self.builder.nil( Token::from(yystack.owned_value_at(0)))
);
},
639 =>
{
yyval = Value::Node(
self.builder.self_( Token::from(yystack.owned_value_at(0)))
);
},
640 =>
{
yyval = Value::Node(
self.builder.true_( Token::from(yystack.owned_value_at(0)))
);
},
641 =>
{
yyval = Value::Node(
self.builder.false_( Token::from(yystack.owned_value_at(0)))
);
},
642 =>
{
yyval = Value::Node(
self.builder.__file__( Token::from(yystack.owned_value_at(0)))
);
},
643 =>
{
yyval = Value::Node(
self.builder.__line__( Token::from(yystack.owned_value_at(0)))
);
},
644 =>
{
yyval = Value::Node(
self.builder.__encoding__( Token::from(yystack.owned_value_at(0)))
);
},
645 =>
{
let node = Node::from(yystack.owned_value_at(0));
if let Node::Lvar(Lvar { name, .. }) = &node {
match name.chars().collect::<Vec<_>>()[..] {
['_', n] if n >= '1' && n <= '9' => {
if !self.static_env.is_declared(name) && self.context.is_in_dynamic_block() {
if self.max_numparam_stack.has_ordinary_params() {
return self.yyerror(
&yystack.location_at (0),
DiagnosticMessage::OrdinaryParamDefined,
);
}
let mut raw_context = self.context.inner_clone();
let mut raw_max_numparam_stack = self.max_numparam_stack.inner_clone();
raw_context.pop();
raw_max_numparam_stack.pop();
for outer_scope in raw_context.iter().rev() {
if *outer_scope == ContextItem::Block || *outer_scope == ContextItem::Lambda {
let outer_scope_has_numparams = raw_max_numparam_stack
.pop()
.expect("expected numparam stack to have element") > 0;
if outer_scope_has_numparams {
return self.yyerror(
&yystack.location_at (0),
DiagnosticMessage::NumparamUsed,
);
} else {
}
} else {
break;
}
}
self.static_env.declare(name);
self.max_numparam_stack.register(n.to_digit(10).expect("numparam must have a digit after _") as i32)
}
},
_ => {}
}
}
yyval = Value::Node(
self.builder.accessible(node)
);
},
646 =>
{
yyval = Value::Node(
self.builder.accessible( Node::from(yystack.owned_value_at(0)))
);
},
647 =>
{
yyval = Value::Node(
self.builder.assignable( Node::from(yystack.owned_value_at(0)))?
);
},
648 =>
{
yyval = Value::Node(
self.builder.assignable( Node::from(yystack.owned_value_at(0)))?
);
},
649 =>
{
yyval = Value::Node(
self.builder.nth_ref( Token::from(yystack.owned_value_at(0)))
);
},
650 =>
{
yyval = Value::Node(
self.builder.back_ref( Token::from(yystack.owned_value_at(0)))
);
},
651 =>
{
self.yylexer.lex_state.set(EXPR_BEG);
self.yylexer.command_start = true;
yyval = Value::None;
},
652 =>
{
let lt_t = Some( Token::from(yystack.owned_value_at(3)));
let value = Some( Node::from(yystack.owned_value_at(1)));
yyval = Value::Superclass(
Superclass { lt_t, value }
);
},
653 =>
{
yyval = Value::Superclass(Superclass { lt_t: None, value: None });
},
654 =>
{
yyval = Value::MaybeNode(
self.builder.args(Some( Token::from(yystack.owned_value_at(2))), NodeList::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))))
);
self.yylexer.lex_state.set(EXPR_BEG);
self.yylexer.command_start = true;
},
655 =>
{
let args = [
NodeList::from(yystack.owned_value_at(3)),
vec![ self.builder.forward_arg( Token::from(yystack.owned_value_at(1))) ]
].concat();
yyval = Value::MaybeNode(
self.builder.args(
Some( Token::from(yystack.owned_value_at(4))),
args,
Some( Token::from(yystack.owned_value_at(0)))
)
);
self.static_env.declare_forward_args();
self.yylexer.lex_state.set(EXPR_BEG);
self.yylexer.command_start = true;
},
656 =>
{
yyval = Value::MaybeNode(
Some(
self.builder.forward_only_args( Token::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
)
);
self.static_env.declare_forward_args();
self.yylexer.lex_state.set(EXPR_BEG);
self.yylexer.command_start = true;
},
657 =>
{
yyval = yystack.owned_value_at(0);
},
658 =>
{
yyval = Value::Bool(self.yylexer.in_kwarg);
self.yylexer.in_kwarg = true;
self.yylexer.lex_state.set(self.yylexer.lex_state.get()|EXPR_LABEL);
},
659 =>
{
self.yylexer.in_kwarg = Bool::from(yystack.owned_value_at(2));
yyval = Value::MaybeNode(
self.builder.args(None, NodeList::from(yystack.owned_value_at(1)), None)
);
self.yylexer.lex_state.set(EXPR_BEG);
self.yylexer.command_start = true;
},
660 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
661 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
662 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
663 =>
{
yyval = Value::NodeList(vec![ Node::from(yystack.owned_value_at(0)) ]);
},
664 =>
{
yyval = yystack.owned_value_at(0);
},
665 =>
{
yyval = Value::NodeList( vec![] );
},
666 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(5)), NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
667 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(7)), NodeList::from(yystack.owned_value_at(5)), NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
668 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
669 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(5)), NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
670 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
671 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(5)), NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
672 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
673 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
674 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(5)), NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
675 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
676 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
677 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
678 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(3)), NodeList::from(yystack.owned_value_at(1)), NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
679 =>
{
let nodes = [ NodeList::from(yystack.owned_value_at(0)) ].concat();
yyval = Value::NodeList(nodes);
},
680 =>
{
yyval = Value::NodeList( vec![] );
},
681 =>
{
yyval = yystack.owned_value_at(0);
},
682 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::ConstArgument);
},
683 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::IvarArgument);
},
684 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::GvarArgument);
},
685 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::CvarArgument);
},
686 =>
{
yyval = yystack.owned_value_at(0);
},
687 =>
{
let ident_t = Token::from(yystack.owned_value_at(0));
let name = clone_value(&ident_t);
self.static_env.declare(&name);
self.max_numparam_stack.set_has_ordinary_params();
yyval = Value::Token(ident_t);
},
688 =>
{
let arg_t = Token::from(yystack.owned_value_at(0));
let arg_name = clone_value(&arg_t);
self.current_arg_stack.set(Some(arg_name));
yyval = Value::Token(arg_t);
},
689 =>
{
self.current_arg_stack.set(None);
yyval = Value::Node(
self.builder.arg( Token::from(yystack.owned_value_at(0)))?
);
},
690 =>
{
yyval = Value::Node(
self.builder.multi_lhs(
Some( Token::from(yystack.owned_value_at(2))),
NodeList::from(yystack.owned_value_at(1)),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
691 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
692 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
693 =>
{
let ident_t = Token::from(yystack.owned_value_at(0));
self.check_kwarg_name(&ident_t)?;
let ident = clone_value(&ident_t);
self.static_env.declare(&ident);
self.max_numparam_stack.set_has_ordinary_params();
self.current_arg_stack.set(Some(ident));
yyval = Value::Token(ident_t);
},
694 =>
{
self.current_arg_stack.set(None);
yyval = Value::Node(
self.builder.kwoptarg( Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
695 =>
{
self.current_arg_stack.set(None);
yyval = Value::Node(
self.builder.kwarg( Token::from(yystack.owned_value_at(0)))?
);
},
696 =>
{
yyval = Value::Node(
self.builder.kwoptarg( Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))?
);
},
697 =>
{
yyval = Value::Node(
self.builder.kwarg( Token::from(yystack.owned_value_at(0)))?
);
},
698 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
699 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
700 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
701 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
702 =>
{
yyval = yystack.owned_value_at(0);
},
703 =>
{
yyval = yystack.owned_value_at(0);
},
704 =>
{
yyval = Value::NodeList(
vec![
self.builder.kwnilarg( Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
]
);
},
705 =>
{
let ident_t = Token::from(yystack.owned_value_at(0));
self.static_env.declare(&clone_value(&ident_t));
yyval = Value::NodeList(
vec![
self.builder.kwrestarg( Token::from(yystack.owned_value_at(1)), Some(ident_t))?
]
);
},
706 =>
{
yyval = Value::NodeList(
vec![
self.builder.kwrestarg( Token::from(yystack.owned_value_at(0)), None)?
]
);
},
707 =>
{
self.current_arg_stack.set(None);
yyval = Value::Node(
self.builder.optarg(
Token::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
708 =>
{
self.current_arg_stack.set(None);
yyval = Value::Node(
self.builder.optarg(
Token::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)?
);
},
709 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
710 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
711 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
712 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
713 =>
{
yyval = yystack.owned_value_at(0);
},
714 =>
{
yyval = yystack.owned_value_at(0);
},
715 =>
{
let ident_t = Token::from(yystack.owned_value_at(0));
self.static_env.declare(&clone_value(&ident_t));
yyval = Value::NodeList(
vec![
self.builder.restarg( Token::from(yystack.owned_value_at(1)), Some(ident_t))?
]
);
},
716 =>
{
yyval = Value::NodeList(
vec![
self.builder.restarg( Token::from(yystack.owned_value_at(0)), None)?
]
);
},
717 =>
{
yyval = yystack.owned_value_at(0);
},
718 =>
{
yyval = yystack.owned_value_at(0);
},
719 =>
{
let ident_t = Token::from(yystack.owned_value_at(0));
self.static_env.declare(&clone_value(&ident_t));
yyval = Value::Node(
self.builder.blockarg( Token::from(yystack.owned_value_at(1)), ident_t)?
);
},
720 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] )
},
721 =>
{
yyval = Value::NodeList( vec![] );
},
722 =>
{
let var_ref = Node::from(yystack.owned_value_at(0));
self.value_expr(&var_ref)?;
yyval = Value::Node(var_ref);
},
723 =>
{ self.yylexer.lex_state.set(EXPR_BEG); yyval = Value::None; },
724 =>
{
let expr = Node::from(yystack.owned_value_at(1));
match &expr {
Node::Int(_)
| Node::Float(_)
| Node::Rational(_)
| Node::Complex(_)
| Node::Str(_)
| Node::Dstr(_)
| Node::Sym(_)
| Node::Dsym(_)
| Node::Heredoc(_)
| Node::XHeredoc(_)
| Node::Regexp(_)
| Node::Array(_)
| Node::Hash(_) => {
self.yyerror1(
DiagnosticMessage::SingletonLiteral,
expr.expression().clone(),
)?;
}
other => {
self.value_expr(other)?
},
}
yyval = Value::Node(expr);
},
725 =>
{
yyval = Value::NodeList(vec![]);
},
726 =>
{
yyval = yystack.owned_value_at(1);
},
727 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
728 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)));
yyval = Value::NodeList( nodes );
},
729 =>
{
yyval = Value::Node(
self.builder.pair(
Node::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)
);
},
730 =>
{
yyval = Value::Node(
self.builder.pair_keyword(
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)
);
},
731 =>
{
yyval = Value::Node(
self.builder.pair_quoted(
Token::from(yystack.owned_value_at(3)),
NodeList::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Node::from(yystack.owned_value_at(0))
)
);
},
732 =>
{
yyval = Value::Node(
self.builder.kwsplat( Token::from(yystack.owned_value_at(1)), Node::from(yystack.owned_value_at(0)))
);
},
733 =>
{
yyval = yystack.owned_value_at(0);
},
734 =>
{
yyval = yystack.owned_value_at(0);
},
735 =>
{
yyval = yystack.owned_value_at(0);
},
736 =>
{
yyval = yystack.owned_value_at(0);
},
737 =>
{
yyval = yystack.owned_value_at(0);
},
738 =>
{
yyval = yystack.owned_value_at(0);
},
739 =>
{
yyval = yystack.owned_value_at(0);
},
740 =>
{
yyval = yystack.owned_value_at(0);
},
741 =>
{
yyval = yystack.owned_value_at(0);
},
742 =>
{
yyval = yystack.owned_value_at(0);
},
743 =>
{
yyval = yystack.owned_value_at(0);
},
744 =>
{
yyval = yystack.owned_value_at(0);
},
745 =>
{
yyval = yystack.owned_value_at(0);
},
746 =>
{
yyval = yystack.owned_value_at(0);
},
747 =>
{
yyval = yystack.owned_value_at(0);
},
748 =>
{
yyval = yystack.owned_value_at(0);
},
749 =>
{
yyval = Value::None;
},
750 =>
{
yyval = Value::None;
},
751 =>
{
yyval = Value::None;
},
752 =>
{
yyval = Value::None;
},
753 =>
{
yyval = yystack.owned_value_at(0);
},
754 =>
{
yyval = yystack.owned_value_at(0);
},
755 =>
{
yyval = yystack.owned_value_at(0);
},
756 =>
{
yyval = Value::None;
},
757 =>
{
yyval = Value::None;
},
758 =>
{
yyval = Value::None;
},
759 =>
{
yyval = yystack.owned_value_at(0);
},
760 =>
{
yyval = yystack.owned_value_at(0);
},
761 =>
{
yyval = Value::TokenList(vec![]);
},
762 =>
{
yyval = Value::TokenList(vec![]);
},
763 =>
{
yyval = Value::None;
},
_ => {}
}
if let Value ::Uninitialized = yyval {
panic!("yyval is Uninitialized in rule at line {}", Self::yyrline_[i32_to_usize(yyn)]);
}
self.yy_symbol_print("-> $$ =", SymbolKind::get(Self::yyr1_[i32_to_usize(yyn)]), &yyval, &yyloc);
yystack.pop_n(*yylen);
*yylen = 0;
let yystate = self.yy_lr_goto_state(yystack.state_at(0), Self::yyr1_[i32_to_usize(yyn)]);
yystack.push(yystate, yyval, yyloc);
Ok(Self::YYNEWSTATE)
}
fn yy_symbol_print(&self, s: &str, yykind: &SymbolKind,
yyvalue: & Value , yylocation: & Loc ) {
if self.yydebug {
self.yycdebug(
&format!("{}{} {:?} ( {:?}: {:?} )",
s,
if yykind.code() < Self::YYNTOKENS_ { " token " } else { " nterm " },
yykind.name(),
yylocation,
yyvalue
)
)
}
}
pub fn parse(&mut self) -> bool
{
let mut yyloc: Loc ;
let mut yychar: i32 = Self::YYEMPTY_;
let mut yytoken: SymbolKind = SymbolKind { value: 0 };
let mut yyn: i32 = 0;
let mut yylen: usize = 0;
let mut yystate: i32 = 0;
let mut yystack = YYStack::new();
let mut label: i32 = Self::YYNEWSTATE;
let mut yyerrloc: Loc = Loc { begin: 0, end: 0};
let mut yylloc: Loc = Loc { begin: 0, end: 0 };
let mut yylval: Value = Value ::Uninitialized;
self.yycdebug("Starting parse");
self.yyerrstatus_ = 0;
self.yynerrs = 0;
yystack.push(yystate, yylval.clone(), yylloc.clone());
loop {
match label {
Self::YYNEWSTATE => {
self.yycdebug(&format!("Entering state {}", yystate));
if self.yydebug { eprintln!("{}", yystack) }
if yystate == Self::YYFINAL_ {
return true;
}
yyn = Self::yypact_[i32_to_usize(yystate)];
if yy_pact_value_is_default(yyn) {
label = Self::YYDEFAULT;
continue;
}
if yychar == Self::YYEMPTY_ {
self.yycdebug("Reading a token");
let token = self.next_token();
yychar = token.token_type;
yylloc = token.loc.clone();
yylval = Value ::from_token(token);
}
yytoken = Self::yytranslate_(yychar);
self.yy_symbol_print("Next token is", &yytoken,
&yylval, &yylloc);
if yytoken == (SymbolKind { value: SymbolKind::S_YYerror }) {
yychar = Lexer::YYUNDEF;
yytoken = SymbolKind { value: SymbolKind::S_YYUNDEF };
yyerrloc = yylloc.clone();
label = Self::YYERRLAB1;
} else {
yyn += yytoken.code();
if yyn < 0 || Self::YYLAST_ < yyn || Self::yycheck_[i32_to_usize(yyn)] != yytoken.code() {
label = Self::YYDEFAULT;
}
else {
yyn = Self::yytable_[i32_to_usize(yyn)];
if yyn <= 0 {
if yy_table_value_is_error(yyn) {
label = Self::YYERRLAB;
} else {
yyn = -yyn;
label = Self::YYREDUCE;
}
} else {
self.yy_symbol_print("Shifting", &yytoken,
&yylval, &yylloc);
yychar = Self::YYEMPTY_;
if self.yyerrstatus_ > 0 {
self.yyerrstatus_ -= 1;
}
yystate = yyn;
yystack.push(yystate, yylval.clone(), yylloc.clone());
label = Self::YYNEWSTATE;
}
}
}
continue;
},
Self::YYDEFAULT => {
yyn = usize_to_i32(Self::yydefact_[i32_to_usize(yystate)]);
if yyn == 0 {
label = Self::YYERRLAB;
} else {
label = Self::YYREDUCE;
}
continue;
}
Self::YYREDUCE => {
yylen = Self::yyr2_[i32_to_usize(yyn)];
label = match self.yyaction(yyn, &mut yystack, &mut yylen) {
Ok(label) => label,
Err(_) => Self::YYERROR
};
yystate = yystack.state_at(0);
continue;
},
Self::YYERRLAB => {
if self.yyerrstatus_ == 0 {
self.yynerrs += 1;
if yychar == Self::YYEMPTY_ {
yytoken = SymbolKind { value: 0 };
}
self.report_syntax_error(&Context::new(yystack.clone(), yytoken.clone(), yylloc.clone()));
}
yyerrloc = yylloc.clone();
if self.yyerrstatus_ == 3 {
if yychar <= Lexer::END_OF_INPUT {
if yychar == Lexer::END_OF_INPUT {
return false;
}
}
else {
yychar = Self::YYEMPTY_;
}
}
label = Self::YYERRLAB1;
continue;
},
Self::YYERROR => {
yystack.pop_n(yylen);
yylen = 0;
yystate = yystack.state_at(0);
label = Self::YYERRLAB1;
continue;
},
Self::YYERRLAB1 => {
self.yyerrstatus_ = 3;
loop {
yyn = Self::yypact_[i32_to_usize(yystate)];
if !yy_pact_value_is_default(yyn) {
yyn += SymbolKind { value: SymbolKind::S_YYerror }.code();
if 0 <= yyn && yyn <= Self::YYLAST_ {
let yyn_usize = i32_to_usize(yyn);
if Self::yycheck_[yyn_usize] == SymbolKind::S_YYerror {
yyn = Self::yytable_[yyn_usize];
if 0 < yyn {
break;
}
}
}
}
if yystack.len() == 1 {
return false;
}
yyerrloc = yystack.location_at(0).clone();
yystack.pop();
yystate = yystack.state_at(0);
if self.yydebug {
eprintln!("{}", yystack);
}
}
if label == Self::YYABORT {
continue;
}
yystack.push(0, Value ::Uninitialized, yylloc.clone());
yystack.push(0, Value ::Uninitialized, yyerrloc.clone());
yyloc = make_yylloc(&yystack, 2);
yystack.pop_n(2);
self.yy_symbol_print("Shifting", SymbolKind::get(Self::yystos_[i32_to_usize(yyn)]),
&yylval, &yyloc);
yystate = yyn;
yystack.push(yyn, yylval.clone(), yyloc.clone());
label = Self::YYNEWSTATE;
continue;
},
Self::YYACCEPT => {
},
Self::YYABORT => {
},
_ => {
panic!("internal bison error: unknown label {}", label);
}
}
}
}
}
#[derive(Debug)]
pub(crate) struct Context {
yystack: YYStack,
yytoken: SymbolKind,
loc: Loc
}
impl Context {
pub(crate) fn new(stack: YYStack, token: SymbolKind, loc: Loc ) -> Self {
Self { yystack: stack, yytoken: token, loc }
}
#[allow(dead_code)]
pub(crate) fn token(&self) -> &SymbolKind {
&self.yytoken
}
#[allow(dead_code)]
pub(crate) fn location(&self) -> & Loc {
&self.loc
}
}
fn yy_pact_value_is_default(yyvalue: i32) -> bool {
yyvalue == YYPACT_NINF_
}
fn yy_table_value_is_error(yyvalue: i32) -> bool {
yyvalue == YYTABLE_NINF_
}
const YYPACT_NINF_: i32 = -1080;
const YYTABLE_NINF_: i32 = -764;
impl Parser {
#[allow(non_upper_case_globals)]
const yypact_: &'static [i32] = &[ -1080, 58, 3881, -1080, 8040, -1080, -1080, -1080, 12592, -1080,
-1080, -1080, -1080, -1080, -1080, -1080, 8315, 8315, -1080, -1080,
-1080, 7035, 6743, -1080, -1080, -1080, -1080, 322, 12447, -63,
74, 97, -1080, -1080, -1080, 5867, 6597, -1080, -1080, 6013,
-1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, 10646, 10646,
10646, 10646, 72, 4896, 8452, 9000, 9411, 11057, -1080, 12302,
-1080, -1080, -1080, 37, 122, 156, 194, 10646, 10783, 1396,
-1080, 43, -1080, 1299, 259, -1080, 645, 225, 225, -1080,
-1080, 264, 357, 278, -1080, 268, 11180, -1080, 287, 3651,
799, 383, 550, 667, -1080, 10920, 10920, -1080, -1080, 9548,
11302, 11424, 11669, 12157, 8315, -1080, 313, 62, -1080, -1080,
364, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
-1080, -1080, -1080, 602, 618, -1080, 400, 633, -1080, -1080,
-1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
-1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
-1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
-1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
-1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
-1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
-1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
-1080, -1080, -1080, -1080, -1080, -1080, -1080, 386, -1080, -1080,
-1080, 394, 10646, 511, 5034, 10646, 10646, 10646, -1080, 10646,
-1080, 410, 14681, 447, -1080, -1080, 456, 752, 11, 25,
500, 253, 481, -1080, -1080, 8177, -1080, 8315, 8589, -1080,
-1080, 9686, -1080, 10920, 1003, -1080, 9824, 5172, -1080, 5310,
-1080, -1080, 478, 484, 264, -1080, 858, -1080, 566, 14701,
14701, 681, 8452, -1080, 4896, 545, 43, -1080, 1299, -63,
528, -1080, 1299, -63, 525, 258, 402, -1080, 447, 544,
402, -1080, -63, 620, 11791, 1396, 225, 225, 560, -1080,
882, 954, 981, 1037, 1494, -1080, -1080, -1080, -1080, 649,
-1080, 892, 1017, 491, -1080, -1080, -1080, -1080, -1080, -1080,
-1080, 621, -1080, -1080, -1080, -1080, 7766, 10920, 10920, 10920,
10920, 8452, 11302, 10920, 10920, 1991, 585, 4057, 2398, 594,
4057, -1080, -1080, -1080, 639, -1080, -1080, -1080, -1080, -1080,
9961, -1080, 4896, 11546, 627, 9961, -1080, 10646, 10646, 10646,
10646, 10646, -1080, -1080, 10646, 10646, 10646, 10646, 10646, 10646,
10646, 10646, 10646, 10646, -1080, -1080, 10646, 10646, 10646, 10646,
10646, 10646, 10646, 10646, 10646, 11302, -1080, -1080, 13481, 8315,
13554, 4057, 645, 101, 12769, 101, 5448, 10920, 5448, 43,
-1080, 616, 701, -1080, -1080, 1077, 740, 832, 1112, 1160,
869, 1016, 10920, 165, -1080, 636, 1205, -1080, -1080, -1080,
-1080, 81, 151, 238, 329, 333, 384, 397, 526, 533,
-1080, -1080, -1080, -1080, 536, -1080, -1080, -1080, 14576, -1080,
-1080, 10783, 10783, -1080, -1080, 307, -1080, -1080, -1080, 516,
10646, 10646, 8726, -1080, -1080, 13627, 8315, 13700, 10646, 10646,
9137, -1080, -63, 674, -1080, -1080, 10646, -63, -1080, 669,
-63, 673, -1080, 80, -1080, -1080, -1080, -1080, -1080, 12592,
10920, 14681, 678, 680, 13627, 13700, 10646, 1299, 74, -63,
-1080, -1080, 7903, 688, -63, -1080, -1080, 9274, -1080, -1080,
9411, -1080, -1080, -1080, 686, 1210, -1080, 710, -1080, -1080,
11791, 13773, 8315, 13846, -1080, -1080, -1080, -1080, -1080, -1080,
-1080, 1454, -1080, -1080, -1080, -1080, 2398, -1080, 715, -1080,
-1080, -1080, -1080, -1080, 699, -1080, 730, 10646, -1080, 732,
181, -1080, -1080, -1080, 743, 813, 745, 827, -1080, -1080,
-1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, 1215,
73, 1347, 82, 10646, -1080, -1080, -1080, -1080, -1080, -1080,
-1080, -1080, -1080, -1080, -1080, -1080, -63, -63, 768, 10646,
886, 891, 43, 10646, 886, -1080, -1080, -1080, -1080, -1080,
10646, -1080, 776, 780, 859, -1080, -63, 11791, 783, -1080,
-1080, -1080, 876, 793, 13218, -1080, -1080, -1080, 1301, 375,
13220, 566, 4048, 4048, 4048, 4048, 4186, 3728, 4048, 4048,
14701, 14701, 641, 641, 1307, 1448, 1307, 548, 548, 566,
566, 566, 14608, 1168, 1168, -1080, -1080, 7181, 6159, 7473,
6305, -1080, 484, -1080, -63, 802, 842, -1080, 862, -1080,
-1080, 6889, 886, -1080, 4195, 926, 4609, 886, 46, 886,
927, 953, 1190, 13919, 8315, 13992, -1080, 645, -1080, 1210,
-1080, -1080, -1080, 14065, 8315, 14138, 4057, 10920, -1080, -1080,
-1080, -1080, -1080, 3440, -1080, 13295, -1080, -1080, -1080, 12592,
10646, -1080, 10646, 447, -1080, 481, 5721, 6451, -63, 376,
444, -1080, -1080, -1080, -1080, 8863, -1080, 9137, -1080, -1080,
80, -1080, -1080, 484, 484, -1080, -1080, 492, -1080, -1080,
402, 11791, 710, 1061, 1026, -63, 1095, 1164, 1454, 1434,
-1080, 851, -63, 855, -1080, -63, 163, -1080, -1080, 40,
10646, 2398, -1080, -1080, 479, -1080, -1080, -1080, 2398, -1080,
-1080, 1508, -1080, -1080, -1080, 1408, -1080, 75, -1080, 853,
-1080, -1080, 129, 857, -1080, 566, -1080, -1080, 1991, 13320,
-1080, -1080, -1080, 10098, 112, -1080, -1080, 13397, -1080, 861,
868, -1080, 886, 868, 886, 878, 10235, 8452, -1080, 710,
11791, 8452, 10783, 10646, 14211, 8315, 14284, -1080, -1080, 2502,
2502, 703, -1080, 12959, 539, 956, -1080, 906, -1080, 893,
-1080, -1080, 755, -1080, -1080, 404, -1080, -1080, -1080, -1080,
-1080, -1080, -1080, -1080, -1080, 879, 10783, 10783, -1080, 639,
884, 936, 8726, 10783, 10783, -1080, -1080, 639, -1080, -1080,
871, -1080, 1022, -1080, -1080, -1080, -1080, -1080, -1080, 953,
886, -1080, 10372, 886, 577, 849, -63, 741, 847, 5448,
43, 10920, 4057, 1061, 1026, -1080, -63, 886, 80, 12737,
62, 357, -1080, -1080, -1080, -1080, 10646, 10646, 463, 10646,
10646, -63, 915, -1080, -1080, -1080, 778, -63, -1080, 1454,
-1080, 1628, 945, 903, -1080, -1080, -1080, -1080, -1080, -1080,
-1080, 944, 946, -1080, 1000, 715, 950, -1080, 951, -1080,
950, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
-1080, -1080, -63, 10646, 776, -1080, 989, -1080, -1080, -1080,
5448, 4758, -1080, -1080, 10646, -1080, 2155, 5310, -1080, -1080,
965, -1080, 4057, -1080, 10646, 971, -1080, 710, -1080, 14681,
7327, 7619, -63, 527, 540, -1080, -1080, -1080, -1080, 13220,
1045, 212, -63, 13046, -1080, -63, 973, 977, -1080, 409,
976, -1080, -1080, 1055, 13220, 2502, 2502, 703, 281, 50,
12872, 12872, 10646, -1080, -1080, -1080, -1080, -1080, -1080, 10783,
-1080, -1080, -1080, -1080, -1080, -1080, 5448, 10920, 886, -1080,
-1080, 886, 12872, 886, -1080, 10646, -1080, 49, -1080, 483,
886, 4057, 43, 886, -1080, -1080, -1080, -1080, -1080, -1080,
10646, -1080, 9137, -1080, -1080, 985, 990, -1080, 1556, 4057,
5310, 2398, -1080, 1508, -1080, -1080, 1508, -1080, 1508, -1080,
-1080, -1080, -1080, 14681, 11913, 101, -1080, -1080, 1107, 14681,
715, -1080, -63, 988, 1008, 1021, 12035, -1080, 1023, -1080,
1025, 1030, -1080, -1080, -1080, -1080, 1031, 559, 35, -1080,
-1080, 34, 906, 1034, -1080, 13220, -1080, -1080, -1080, -63,
1035, -1080, 13220, -1080, -1080, -1080, 240, -1080, -1080, -1080,
-1080, -1080, -1080, -1080, -1080, -1080, -63, -63, -63, -63,
-63, -63, 14681, -1080, -1080, -1080, 101, -1080, -1080, 101,
895, 213, -1080, -1080, -1080, -1080, -1080, 10509, 4333, -1080,
886, -1080, -1080, 1628, 1628, -1080, 438, -1080, -1080, 886,
1024, 950, 1036, 950, 950, -1080, 1108, -1080, 1312, 102,
149, 164, 4057, -1080, -1080, 1041, -1080, 12035, 2398, -1080,
-1080, 1116, 1319, 479, -1080, 2398, -1080, 1508, -1080, -1080,
1050, 13220, -1080, 1051, -1080, 708, -1080, 409, 906, -1080,
-1080, 770, -1080, -1080, -1080, -1080, -1080, -1080, 4195, -1080,
10920, 10920, 13133, 10646, -1080, 91, -1080, 990, 1556, -1080,
-1080, -1080, -1080, 1508, -1080, -1080, -1080, 5586, 330, 14357,
8315, 14430, 891, -1080, 1319, -1080, 1053, 1056, -1080, 14503,
-1080, 715, 1058, -1080, 1063, 1058, 13220, 1070, 13133, -1080,
-1080, -1080, 871, 4471, -1080, -1080, -1080, 1071, -1080, -1080,
-1080, -1080, -1080, 950, 1078, 382, 414, -63, 426, 430,
-1080, 2398, -1080, 1508, -1080, 1064, 1067, -1080, 1508, -1080,
1508, -1080, -1080, 1070, 13220, -1080, -1080, -1080, 691, 13220,
-1080, -1080, 431, 1058, 1074, 1058, 1058, -1080, -1080, -1080,
1070, -1080, 1508, -1080, -1080, -1080, 1058, -1080 ];
#[allow(non_upper_case_globals)]
const yydefact_: &'static [usize] = &[ 2, 0, 0, 1, 0, 365, 366, 367, 0, 358,
359, 360, 363, 361, 362, 364, 353, 354, 355, 356,
376, 288, 288, 639, 638, 640, 641, 751, 0, 751,
0, 0, 643, 642, 644, 733, 735, 635, 634, 734,
637, 629, 630, 631, 632, 580, 649, 650, 0, 0,
0, 0, 0, 0, 315, 763, 763, 101, 433, 600,
600, 602, 604, 0, 0, 0, 0, 0, 0, 0,
3, 749, 6, 9, 39, 34, 40, 658, 658, 56,
72, 288, 71, 0, 89, 0, 93, 103, 0, 63,
241, 0, 259, 0, 313, 0, 0, 69, 69, 749,
0, 0, 0, 0, 324, 334, 73, 332, 302, 303,
579, 581, 304, 305, 306, 308, 307, 309, 578, 619,
620, 577, 627, 645, 646, 310, 0, 311, 77, 5,
8, 182, 193, 183, 206, 179, 199, 189, 188, 209,
210, 204, 187, 186, 181, 207, 211, 212, 191, 180,
194, 198, 200, 192, 185, 201, 208, 203, 202, 195,
205, 190, 178, 197, 196, 177, 184, 175, 176, 172,
173, 174, 132, 134, 133, 167, 168, 163, 145, 146,
147, 154, 151, 153, 148, 149, 169, 170, 155, 156,
160, 164, 142, 144, 150, 152, 171, 143, 157, 158,
159, 161, 162, 166, 165, 137, 139, 27, 135, 136,
138, 0, 0, 0, 0, 0, 0, 0, 600, 0,
283, 0, 266, 293, 87, 287, 763, 0, 645, 646,
0, 311, 763, 727, 88, 751, 85, 0, 763, 454,
84, 751, 752, 0, 0, 22, 0, 0, 10, 0,
353, 354, 327, 455, 0, 235, 0, 324, 236, 226,
227, 321, 0, 20, 0, 0, 749, 16, 19, 751,
91, 15, 317, 751, 0, 756, 756, 267, 0, 0,
756, 725, 751, 0, 0, 0, 658, 658, 99, 357,
0, 109, 110, 117, 680, 624, 623, 625, 622, 0,
621, 0, 0, 0, 587, 596, 592, 598, 248, 60,
247, 628, 759, 760, 4, 761, 750, 0, 0, 0,
0, 0, 0, 0, 0, 680, 657, 0, 680, 657,
0, 368, 457, 448, 78, 459, 331, 369, 442, 444,
0, 105, 0, 97, 94, 0, 61, 0, 0, 0,
0, 0, 262, 263, 0, 0, 0, 0, 224, 225,
0, 0, 0, 0, 260, 261, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 745, 746, 0, 763,
0, 0, 68, 0, 63, 0, 0, 0, 0, 749,
341, 750, 0, 387, 386, 0, 0, 118, 119, 126,
127, 128, 0, 0, 130, 653, 0, 645, 646, 311,
349, 202, 195, 205, 190, 172, 173, 174, 132, 133,
723, 65, 64, 722, 0, 86, 748, 747, 0, 333,
582, 0, 0, 140, 730, 321, 294, 732, 290, 0,
0, 0, 0, 284, 292, 0, 763, 0, 0, 0,
0, 285, 751, 0, 326, 289, 681, 751, 279, 763,
751, 763, 278, 751, 330, 59, 24, 26, 25, 0,
0, 253, 0, 0, 0, 0, 0, 18, 0, 751,
319, 14, 750, 90, 751, 316, 322, 758, 757, 268,
758, 270, 323, 726, 0, 116, 107, 102, 628, 657,
0, 0, 763, 0, 687, 684, 683, 682, 685, 693,
702, 0, 714, 703, 718, 717, 680, 713, 763, 434,
679, 437, 686, 688, 689, 691, 665, 695, 700, 763,
706, 400, 399, 711, 665, 716, 665, 0, 663, 606,
626, 609, 607, 601, 583, 584, 603, 585, 605, 0,
0, 0, 0, 0, 762, 7, 28, 29, 30, 31,
32, 44, 43, 57, 58, 681, 751, 751, 665, 0,
0, 763, 0, 0, 0, 461, 75, 79, 463, 463,
0, 35, 298, 0, 38, 297, 751, 0, 95, 106,
55, 45, 53, 0, 271, 293, 213, 36, 0, 311,
0, 233, 240, 242, 243, 244, 251, 252, 245, 246,
222, 223, 249, 250, 237, 239, 238, 228, 229, 230,
231, 232, 751, 264, 265, 42, 41, 736, 738, 737,
739, 453, 288, 451, 751, 763, 736, 738, 737, 739,
452, 288, 0, 378, 0, 377, 0, 0, 0, 0,
339, 0, 125, 0, 763, 0, 69, 347, 127, 128,
129, 651, 345, 0, 763, 0, 0, 0, 743, 744,
66, 736, 737, 288, 46, 271, 214, 52, 221, 0,
0, 729, 0, 295, 291, 763, 736, 737, 751, 736,
737, 728, 325, 753, 273, 280, 275, 282, 329, 23,
751, 11, 33, 0, 763, 220, 21, 92, 17, 318,
756, 0, 100, 113, 115, 751, 112, 114, 0, 398,
390, 392, 751, 395, 388, 751, 0, 662, 721, 0,
0, 0, 672, 694, 0, 661, 704, 705, 0, 675,
715, 0, 677, 719, 610, 0, 586, 0, 589, 0,
594, 591, 0, 0, 595, 234, 654, 656, 0, 255,
375, 351, 370, 763, 763, 569, 659, 257, 352, 0,
763, 461, 0, 763, 0, 301, 0, 0, 104, 98,
0, 0, 0, 0, 0, 763, 0, 563, 567, 0,
0, 0, 508, 751, 505, 0, 562, 62, 486, 488,
490, 493, 543, 548, 549, 550, 553, 554, 555, 556,
557, 559, 558, 560, 561, 0, 0, 0, 450, 82,
0, 456, 280, 0, 0, 277, 449, 80, 276, 314,
763, 379, 763, 337, 381, 70, 380, 338, 472, 0,
0, 372, 0, 0, 122, 124, 751, 121, 123, 0,
0, 0, 0, 127, 128, 131, 751, 0, 751, 0,
445, 74, 141, 731, 296, 286, 0, 0, 456, 0,
0, 751, 763, 328, 269, 108, 111, 751, 397, 0,
690, 0, 0, 427, 720, 440, 438, 435, 707, 664,
692, 665, 665, 701, 706, 763, 665, 712, 665, 689,
665, 611, 615, 616, 617, 608, 618, 588, 590, 597,
593, 599, 751, 0, 570, 571, 763, 572, 371, 373,
0, 0, 13, 576, 0, 458, 751, 0, 424, 423,
0, 460, 0, 443, 0, 299, 37, 96, 54, 272,
736, 737, 751, 736, 737, 551, 552, 128, 565, 0,
524, 510, 751, 511, 517, 751, 520, 0, 504, 0,
0, 507, 564, 0, 0, 546, 547, 0, 492, 491,
0, 0, 0, 51, 218, 50, 219, 83, 754, 0,
48, 216, 49, 217, 81, 374, 0, 0, 0, 382,
384, 0, 0, 0, 343, 0, 465, 0, 342, 120,
0, 0, 0, 0, 456, 350, 724, 67, 446, 447,
0, 274, 281, 389, 391, 393, 396, 436, 0, 0,
0, 0, 668, 0, 670, 660, 0, 676, 0, 673,
678, 612, 655, 256, 0, 0, 574, 575, 763, 258,
763, 422, 751, 0, 689, 406, 697, 698, 763, 709,
406, 406, 404, 462, 76, 464, 300, 456, 751, 523,
502, 515, 527, 512, 503, 0, 518, 536, 600, 751,
529, 532, 535, 541, 542, 531, 539, 755, 487, 489,
544, 545, 566, 501, 497, 600, 751, 751, 751, 751,
751, 751, 254, 47, 215, 385, 0, 335, 336, 0,
477, 480, 484, 483, 485, 340, 466, 0, 0, 344,
0, 652, 346, 0, 0, 431, 751, 429, 432, 0,
0, 665, 665, 665, 665, 613, 0, 573, 0, 645,
646, 311, 0, 12, 403, 0, 425, 0, 407, 415,
413, 0, 696, 0, 402, 0, 418, 0, 420, 509,
513, 0, 519, 521, 525, 0, 506, 530, 534, 540,
538, 0, 494, 495, 496, 498, 499, 500, 0, 473,
0, 0, 481, 0, 467, 763, 348, 394, 0, 428,
441, 439, 669, 0, 666, 671, 674, 0, 321, 0,
763, 0, 763, 426, 708, 405, 406, 406, 321, 0,
699, 763, 406, 710, 406, 406, 0, 516, 0, 537,
533, 528, 763, 0, 478, 479, 482, 520, 468, 470,
471, 469, 430, 665, 0, 740, 320, 751, 736, 737,
568, 0, 410, 0, 412, 740, 320, 401, 0, 419,
0, 416, 421, 514, 0, 522, 526, 383, 763, 0,
667, 614, 456, 406, 406, 406, 406, 475, 476, 474,
521, 411, 0, 408, 414, 417, 406, 409 ];
#[allow(non_upper_case_globals)]
const yypgoto_: &'static [i32] = &[ -1080, -1080, -1080, 960, -1080, 28, 736, -277, 104, -1080,
728, -1080, 83, -1080, -1080, -233, -360, -39, -1080, 358,
-52, 45, -1080, -90, -84, -1080, 10, -1080, -480, -1080,
2012, -13, -17, -126, -11, -46, -1080, -408, -19, 2846,
-367, 1118, -58, -9, -1080, -1080, 31, -1080, 1005, 1135,
-1080, 2867, -1080, 1028, 22, 553, -366, 127, -5, -1080,
-426, -212, 139, -1080, -316, 65, -1080, -1080, -1080, -1080,
-1080, -1080, -1080, -1080, 1417, -1080, -1080, -1080, -1080, -1080,
-1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
469, -1080, 1314, 2424, -363, -1080, 23, -795, -1080, -811,
-846, 523, 370, -609, 317, -343, -1080, -1080, 477, -1080,
-831, -1080, 77, 634, -1080, -1080, -1080, -1080, -1080, -1080,
392, -1080, -1080, -1080, -100, -1080, -1080, 488, -1080, 685,
-1080, -1080, -824, -1080, 17, -1080, -1080, -1080, -1080, -1080,
-557, -1080, -1080, -1080, -1080, 302, -1080, -1080, -845, -1080,
276, -251, -1079, -1076, -874, -129, -1080, 113, -1080, -1080,
-1080, 114, -1080, -657, 314, -1080, -1080, 84, -1080, -1080,
241, 704, 751, -1080, 1172, 1397, 1519, 1741, -1080, 733,
1766, -1080, 1806, 2165, -1080, -1080, -49, -1080, -1080, -3,
-1080, -1080, -1080, -1080, -1080, -1080, -1080, 2, -1080, -1080,
-1080, -1080, -28, 107, -2, 1180, 798, 2681, -1080, -1080,
938, -4, -1080, -122, -384, -209, -292, -952, -464, -205,
-661, -145, -324, 555, 150, -1080, -1080, -468, -1080, -711,
-675, -1049, 157, -472, -1080, -416, -1080, 267, -517, -1080,
-1080, -1080, 9, -396, -1080, -210, -1080, -1080, -85, -1080,
-32, 78, 1075, -530, 227, -249, -53, -10, 26 ];
#[allow(non_upper_case_globals)]
const yydefgoto_: &'static [i32] = &[ -1, 1, 2, 70, 71, 72, 248, 570, 571, 266,
267, 478, 268, 469, 74, 75, 591, 76, 600, 421,
77, 78, 859, 383, 386, 387, 79, 80, 577, 771,
254, 82, 83, 269, 84, 85, 86, 497, 87, 221,
404, 405, 205, 206, 207, 679, 630, 209, 222, 373,
90, 91, 274, 596, 631, 826, 457, 458, 236, 237,
225, 443, 635, 584, 585, 92, 381, 273, 484, 839,
651, 852, 850, 666, 256, 94, 95, 96, 97, 98,
99, 100, 101, 102, 103, 335, 338, 763, 920, 842,
986, 987, 761, 257, 644, 835, 988, 989, 396, 720,
721, 722, 723, 518, 1195, 1139, 1140, 1042, 927, 928,
882, 1116, 1117, 105, 294, 729, 519, 887, 1020, 1019,
339, 579, 106, 107, 336, 575, 578, 769, 770, 772,
773, 997, 843, 1221, 840, 992, 1213, 1259, 1099, 1100,
1062, 798, 799, 970, 971, 800, 959, 949, 952, 953,
954, 955, 956, 1153, 957, 1069, 1070, 1071, 1072, 1073,
1074, 1075, 801, 802, 803, 804, 805, 764, 916, 1035,
922, 108, 109, 110, 111, 112, 113, 114, 549, 747,
115, 551, 116, 117, 550, 552, 299, 302, 303, 543,
745, 744, 901, 1031, 1125, 1187, 905, 118, 119, 300,
120, 121, 122, 228, 229, 125, 230, 231, 662, 851,
499, 327, 328, 889, 732, 521, 460, 522, 523, 899,
525, 526, 527, 528, 1047, 1048, 529, 530, 531, 532,
533, 1049, 1050, 534, 535, 536, 537, 538, 727, 424,
667, 279, 461, 233, 128, 703, 633, 670, 665, 428,
314, 453, 454, 821, 961, 489, 645, 391, 271 ];
#[allow(non_upper_case_globals)]
const yytable_: &'static [i32] = &[ 124, 298, 124, 220, 220, 286, 385, 429, 380, 389,
210, 301, 735, 634, 388, 993, 684, 240, 315, 245,
451, 427, 646, 895, 684, 232, 232, 491, 129, 597,
210, 493, 130, 567, 286, 1016, 660, 991, 288, 208,
344, 311, 270, 797, 239, 422, 315, 724, 286, 286,
286, 124, 124, 574, 691, 292, 382, 382, 3, 208,
382, 316, 643, 897, 276, 280, 1118, 390, 1014, 885,
890, 674, 677, 834, 330, 1207, 334, 242, 309, 1063,
688, 277, 281, 393, 292, 73, 1150, 73, 331, 524,
208, 220, 712, 1217, 691, 1043, 1203, 890, 398, 408,
408, 408, 287, 333, 642, 243, 919, 246, 841, 123,
-647, 123, 590, 232, 643, -118, 566, 323, 324, 572,
524, 918, 289, 524, -648, 1086, 1089, 919, 261, 1245,
1243, 287, 945, 946, 208, 963, 715, 272, 479, 749,
-118, 539, 447, 224, 234, 287, 287, 287, 753, -639,
739, 289, 742, -751, -119, 226, 226, 265, 868, 1151,
123, 123, -119, 886, 291, 289, 289, 289, 632, 439,
641, 475, 520, 1260, 1107, 242, 304, -126, -639, 779,
568, 312, 1203, 313, 312, 876, 313, 312, 332, 313,
242, 1154, 750, 291, 275, 539, 541, 542, 590, 590,
247, 754, 463, 520, 465, 503, 520, 397, 407, 407,
407, 1135, 124, 315, 907, 736, 586, 658, 673, -638,
242, 659, 220, 249, 220, 220, 1118, 556, 557, 558,
559, 425, 286, 737, 481, 632, 951, 641, 496, 312,
-118, 313, -118, 226, 232, 124, 232, 124, -638, 451,
541, 542, 444, 270, 724, 878, 482, 498, 444, 891,
124, 305, 124, 958, 462, 704, 894, 1177, 910, 684,
286, 684, 514, 129, 1159, 239, 333, 1154, 382, 382,
382, 382, 292, 330, 563, 564, 891, -119, 846, -119,
331, 286, 1160, 704, 515, 306, 855, 648, 856, 546,
548, 691, -126, 1014, -126, 561, -640, 725, 1080, 1081,
655, 524, 963, 963, 124, 892, 999, 1040, 265, 124,
398, 123, 898, 286, 588, 124, 1004, 1216, 124, 287,
73, 270, 1154, 307, 1246, -640, 315, -527, 1172, 977,
124, 292, 892, -125, 555, 477, 897, 984, 382, 289,
581, 1220, 449, 473, 123, 592, 123, 650, 625, 322,
494, 325, 452, 657, 455, 890, 220, 287, 265, 123,
1246, 123, 937, 398, 226, 1154, 226, 459, 1025, 124,
1219, 376, -126, 487, 124, 337, 124, 289, 287, 857,
332, 291, 1058, 341, 520, -122, 684, -641, 488, 73,
238, -643, 640, 871, 560, 462, 476, 340, 289, 377,
426, 639, 1057, 951, 951, 724, 345, 724, -751, 942,
287, 242, 1060, 123, 948, 1064, -641, -124, 123, 397,
-643, 700, 1201, 220, 123, 1101, -125, 123, 1083, -121,
289, 592, 592, -123, -120, 704, 265, 915, 286, 123,
291, 685, -642, 1257, 496, 704, 973, 975, 241, 639,
699, 874, 242, 980, 982, -644, 912, 1067, -125, 640,
-125, 210, 462, 865, 432, 869, 60, 890, 639, 583,
124, -642, 397, 375, 583, 444, 510, 444, 123, 220,
647, 1076, 649, 123, -644, 123, 710, 640, 292, 431,
208, 967, 1076, 1076, -126, -121, 639, 1022, 1024, -456,
1051, 433, 1027, 786, 1029, 1158, 1030, 513, -736, 766,
-122, 1068, -122, 1134, 1076, 640, 524, 490, 462, 1040,
241, 1144, 968, 524, 639, 286, 1040, 509, 1040, 440,
969, 496, 488, 870, 728, 287, 748, 441, 748, 590,
-737, -456, -124, 524, -124, 728, 510, 539, 547, 1165,
1166, 1167, 1010, 1178, -121, 289, -121, 435, -123, -120,
-123, -120, 849, -123, 632, 1003, 641, 890, 242, -456,
-456, 442, 539, 590, 590, 292, 684, 513, 514, 123,
590, 590, -120, 896, -633, 836, 900, 765, 814, 448,
1082, -636, 1046, -740, 668, 1122, 450, 291, -111, -456,
515, -456, 541, 542, 235, 951, 691, -104, -357, 1093,
238, -90, 1040, -633, 1040, 347, 823, 819, 858, 1040,
-636, 1040, 287, 669, 1108, 544, 827, 541, 542, 824,
680, 220, 124, 347, 124, -740, -357, -357, 480, 724,
724, 220, 289, 1040, 818, 1055, -121, -89, 979, 286,
865, 444, 486, 825, 124, 875, -751, 828, 861, -123,
862, 492, 1132, -740, -740, 894, 495, 640, -357, 242,
462, 210, 323, 324, 1237, 500, 639, 640, -120, 1076,
462, 369, 370, 371, 291, 825, 639, 1252, 553, 828,
815, -647, -113, -740, 872, -740, 919, 1146, 1148, 292,
208, 444, 820, -736, 569, 539, 838, -648, 347, 1087,
1090, 1044, 1197, 573, 1110, 818, 825, -109, 286, 1204,
828, -118, 432, 1168, 496, 376, 1169, 1182, 1184, 1185,
1186, 1103, 1119, -110, 908, 576, 590, -119, 830, 908,
832, 123, 589, 123, 554, 658, 287, 652, -117, 947,
1008, 1002, -126, 377, 378, 656, 820, -736, 540, 661,
541, 542, 220, 123, 539, 124, 289, 693, 292, 124,
476, 1045, 367, 368, 369, 370, 371, 814, 814, 917,
923, 814, 592, 820, 695, 379, 929, 1001, 697, 929,
126, 422, 126, 883, -456, 701, -116, 702, 640, -736,
-125, 462, 382, -104, 1046, 1254, 524, 639, 291, 1046,
376, 1046, 470, 1046, 1227, 287, 592, 592, 730, 541,
542, 872, 1209, 592, 592, 711, 539, -736, -736, 1250,
726, 1088, 1091, 965, 966, 289, -456, 124, 377, 445,
124, 126, 126, 1232, 1234, 731, 990, 734, 990, 1239,
936, 1241, 1242, 1104, 938, 740, -112, -736, 738, -736,
741, 820, 960, -737, -456, -456, 1121, -736, 1123, 743,
446, 352, 353, 1124, 123, 985, 919, 291, 123, 544,
208, 541, 542, 758, 1209, -733, 760, 1096, 444, 762,
-645, -293, 583, 777, -456, 776, -456, 1046, 780, 1046,
1261, 1263, 1264, 1265, 1046, -737, 1046, -320, 124, 124,
781, 728, 782, 1267, 820, 124, 376, 822, -645, -645,
124, 364, 365, 1044, 820, 1170, 1171, -633, 1046, 831,
1044, 823, 1036, -737, -737, -320, -320, 814, 382, 1111,
376, 814, 838, 1000, 377, 474, 123, -109, 539, 123,
-645, 824, 814, 814, 814, -633, -633, -112, 814, 814,
841, -121, -114, -737, -115, -737, 879, -320, 377, 501,
881, 704, 286, -737, 124, -737, 446, -114, 925, 592,
814, -123, 909, 884, 286, -733, 911, -633, 926, 124,
1202, 884, 1205, -294, 883, -733, 963, 89, 962, 89,
502, 544, 126, 541, 542, 326, 329, 124, 124, 1155,
820, 978, -645, 964, 1037, 1038, 1044, 123, 123, 972,
820, 1053, 1130, 820, 123, 979, 1161, 919, 1223, 123,
1012, 1018, -734, 1191, 408, 126, 820, 126, 1017, -646,
-645, -645, 737, 255, 258, 259, 260, 466, 89, 89,
126, -111, 126, 814, 923, -120, 728, 467, 468, 1021,
814, 1023, 308, 310, 728, 1026, 1028, -646, -646, 287,
1214, 1215, -645, 539, -636, 286, 1253, -740, 1255, 1034,
1095, 287, 1054, 123, -320, 1256, -295, 1059, 1065, 289,
384, 384, 1066, 1077, 384, -311, 124, 787, 123, -646,
1113, 289, -636, -636, 126, 1114, 918, 1266, 1136, 126,
883, -736, -320, -320, 1120, 126, 123, 123, 126, -740,
124, 382, 382, -311, -311, 408, 545, 1137, 541, 542,
126, 1129, -734, 126, -636, 376, 1138, 960, 1143, 814,
1145, 1181, -734, 407, -320, 1147, -296, -740, -740, 1152,
1157, 1183, -737, -736, 1188, -311, 124, 820, 820, 820,
814, 1193, 1198, 377, 653, 1206, 1208, 220, 1231, 126,
-646, 1233, 287, 1238, 126, 124, 126, -740, 1240, -740,
-737, -736, -736, 1052, 1179, 1244, 1249, -736, 1251, 1262,
-736, 990, 289, -737, 814, 654, 814, 472, -646, -646,
708, 124, 1175, 640, 706, 123, 462, 1007, 765, 89,
410, -736, 639, -736, 310, 374, 860, 728, -311, 126,
126, -736, -737, 921, 796, 1247, 1192, -110, 990, 123,
-646, 877, 814, 1041, 407, 347, 384, 814, 384, 1015,
932, 471, 89, 1009, 89, 1222, -311, -311, -321, 930,
-737, -737, 360, 361, 774, 1258, 1079, 89, 1102, 89,
1210, 1211, 1212, 376, 990, 123, 1230, 1078, -321, 1133,
126, 539, 430, 423, 752, -117, -321, -321, -311, 893,
-737, 1224, -737, 1200, 123, 1196, 1156, 0, 362, 363,
-737, 377, 663, 366, 806, 820, -321, -321, 0, 367,
368, 369, 370, 371, 0, -116, 464, 1248, -321, 0,
123, 89, 384, 384, 384, 384, 89, 0, 384, 384,
0, 0, 89, 664, 746, 89, 541, 542, -321, 317,
318, 319, 320, 321, 483, 0, 0, 89, 485, 0,
594, 807, 601, 602, 603, 604, 605, 0, 0, 606,
607, 608, 609, 610, 611, 612, 613, 614, 615, 376,
0, 616, 617, 618, 619, 620, 621, 622, 623, 624,
376, 0, 0, 0, 347, 0, 89, 376, 0, 0,
0, 89, 384, 89, 0, 0, 0, 377, 784, 0,
0, 360, 361, 0, 0, 1052, 0, 384, 377, 1189,
884, 0, 1052, 539, 1052, 377, 1199, 0, 0, 93,
0, 93, 0, 796, 796, 0, 0, 796, 0, 785,
0, 0, 0, 227, 227, 0, 675, 675, 363, 0,
1190, 0, 126, 0, 126, 675, 0, 664, 367, 368,
369, 370, 371, 675, 675, 41, 42, 43, 44, 676,
678, 260, 902, 903, 126, 904, 751, 0, 541, 542,
93, 93, 46, 47, 290, 384, 676, 678, 0, 0,
0, 675, 0, 0, 0, 227, 504, 89, 505, 506,
507, 508, 0, 806, 806, 0, 0, 806, 1052, 0,
1052, 0, 0, 290, 705, 1052, 504, 1052, 505, 506,
507, 508, 227, 227, 0, 0, 227, 395, 406, 406,
0, 227, 0, 0, 0, 347, 0, 692, 0, 1052,
0, 0, 694, 0, 0, 696, 0, 0, 698, 0,
807, 807, 360, 361, 807, 0, 504, 0, 505, 506,
507, 508, 509, 0, 707, 718, 0, 0, 755, 709,
504, 719, 505, 506, 507, 508, 509, 0, 0, 0,
0, 510, 0, 0, 759, 126, 0, 0, 767, 126,
126, 0, 0, 796, 0, 510, 0, 796, 0, 367,
368, 369, 370, 371, 0, 511, 0, 0, 796, 796,
796, 512, 513, 514, 796, 796, 0, 0, 1115, 511,
505, 506, 507, 508, 126, 126, 513, 514, 0, 0,
0, 126, 126, 0, 0, 515, 796, 0, 0, 0,
516, 93, 0, 0, 0, 0, 0, 517, 0, 515,
0, 756, 757, 0, 0, 0, 0, 126, 0, 89,
126, 89, 227, 806, 227, 227, 0, 806, 227, 0,
227, 778, 0, 0, 93, 0, 93, 0, 806, 806,
806, 89, 384, 0, 806, 806, 0, 0, 0, 93,
504, 93, 505, 506, 507, 508, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 806, 0, 0, 796,
807, 290, 0, 0, 807, 0, 796, 0, 0, 0,
0, 0, 0, 0, 0, 807, 807, 807, 126, 126,
0, 807, 807, 0, 0, 126, 0, 0, 0, 718,
126, 0, 0, 93, 227, 227, 227, 227, 93, 395,
227, 227, 0, 807, 93, 0, 0, 93, 0, 0,
0, 0, 0, 0, 0, 0, 0, 227, 0, 93,
290, 0, 598, 0, 0, 0, 0, 0, 0, 806,
0, 0, 0, 0, 0, 873, 806, 126, 0, 0,
0, 0, 89, 0, 126, 796, 89, 675, 939, 0,
0, 0, 395, 0, 0, 0, 227, 880, 93, 126,
0, 0, 0, 93, 227, 93, 796, 0, 0, 0,
0, 0, 0, 0, 0, 0, 807, 126, 126, 227,
0, 675, 675, 807, 0, 0, 0, 0, 675, 675,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
796, 0, 796, 0, 974, 976, 0, 0, 598, 598,
0, 981, 983, 0, 89, 806, 384, 89, 0, 0,
0, 0, 0, 227, 0, 0, 0, 0, 0, 0,
0, 675, 675, 0, 675, 675, 806, 0, 796, 0,
0, 0, 0, 796, 0, 0, 0, 227, 768, 0,
0, 0, 0, 0, 974, 976, 0, 981, 983, 93,
0, 0, 807, 0, 0, 0, 126, 0, 0, 0,
806, 0, 806, 0, 0, 0, 0, 290, 1033, 227,
0, 0, 0, 807, 0, 89, 89, 0, 0, 1039,
126, 0, 89, 1006, 0, 0, 0, 89, 0, 0,
0, 0, 0, 0, 0, 0, 1011, 0, 806, 0,
0, 0, 1013, 806, 0, 0, 829, 807, 0, 807,
0, 833, 0, 837, 0, 0, 126, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1092, 0, 0,
0, 0, 0, 0, 675, 126, 0, 1032, 0, 0,
0, 89, 384, 0, 0, 807, 0, 808, 0, 0,
807, 0, 0, 0, 290, 0, 89, 1094, 0, 0,
0, 126, 0, 0, 81, 675, 81, 0, 0, 0,
0, 0, 0, 0, 89, 89, 0, 0, 81, 81,
0, 0, 0, 0, 0, 0, 0, 0, 1094, 0,
0, 0, 0, 504, 1084, 505, 506, 507, 508, 509,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 93, 0, 93, 0, 81, 81, 0, 510, 0,
0, 227, 0, 0, 0, 0, 0, 0, 0, 0,
81, 227, 565, 93, 227, 0, 931, 0, 933, 0,
0, 0, 511, 0, 0, 0, 0, 0, 512, 513,
514, 0, 0, 0, 0, 0, 0, 81, 81, 0,
0, 81, 0, 89, 0, 0, 81, 0, 0, 809,
0, 0, 515, 0, 0, 0, 0, 0, 290, 0,
0, 0, 0, 1149, 517, 0, 0, 89, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 994, 0, 0, 998, 0, 0,
0, 1162, 1163, 1164, 0, 0, 0, 0, 0, 0,
0, 1005, 0, 89, 0, 384, 384, 0, 0, 0,
0, 0, 0, 0, 0, 0, 808, 808, 0, 0,
808, 0, 89, 0, 93, 0, 0, 290, 93, 598,
0, 0, 227, 0, 0, 0, 0, 504, 0, 505,
506, 507, 508, 509, 0, 0, 0, 0, 89, 0,
0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
0, 0, 510, 598, 598, 0, 0, 0, 0, 0,
598, 598, 0, 0, 0, 0, 0, 81, 0, 81,
81, 0, 0, 81, 0, 81, 511, 0, 0, 81,
0, 81, 512, 513, 514, 0, 93, 0, 227, 93,
0, 0, 0, 0, 81, 0, 81, 0, 0, 0,
0, 0, 0, 0, 0, 0, 515, 0, 0, 0,
0, 0, 0, 0, 0, 242, 0, 0, 517, 0,
0, 0, 1097, 0, 0, 1098, 0, 1105, 809, 809,
0, 0, 809, 0, 1109, 0, 0, 1112, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 81, 81,
81, 81, 81, 81, 0, 81, 81, 93, 93, 81,
0, 810, 81, 0, 93, 0, 808, 0, 0, 93,
808, 0, 81, 0, 81, 0, 0, 81, 0, 0,
0, 808, 808, 808, 0, 0, 811, 808, 808, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 808,
0, 81, 0, 81, 0, 0, 598, 0, 81, 81,
81, 0, 0, 93, 227, 0, 812, 0, 0, 0,
0, 0, 0, 0, 81, 0, 0, 0, 93, 0,
0, 0, 0, 0, 1176, 0, 104, 0, 104, 0,
0, 0, 0, 1180, 0, 0, 93, 93, 0, 0,
104, 104, 0, 81, 81, 0, 0, 0, 0, 0,
504, 1128, 505, 506, 507, 508, 509, 0, 81, 0,
0, 0, 808, 1142, 0, 0, 0, 0, 809, 808,
0, 0, 809, 0, 0, 510, 0, 104, 104, 0,
0, 0, 81, 809, 809, 809, 0, 0, 0, 809,
809, 0, 104, 0, 81, 0, 0, 0, 0, 511,
0, 0, 0, 0, 0, 512, 513, 514, 0, 0,
0, 809, 0, 0, 81, 0, 0, 0, 0, 104,
104, 0, 0, 104, 0, 93, 0, 0, 104, 515,
810, 810, 0, 0, 810, 23, 24, 25, 26, 0,
0, 517, 0, 0, 0, 0, 0, 0, 808, 93,
0, 32, 33, 34, 1194, 811, 811, 0, 0, 811,
0, 41, 42, 43, 44, 45, 0, 0, 0, 808,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 809, 93, 0, 227, 227, 0,
0, 809, 0, 0, 0, 812, 812, 0, 0, 812,
0, 0, 0, 808, 93, 808, 0, 227, 0, 0,
0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
93, 0, 0, 0, 0, 0, 0, 0, 104, 0,
0, 808, 0, 0, 0, 0, 808, 0, 0, 0,
0, 0, 0, 285, 0, 0, 81, 0, 81, 104,
0, 104, 104, 0, 0, 104, 81, 104, 0, 0,
809, 104, 0, 104, 0, 0, 81, 0, 81, 81,
0, 0, 0, 127, 0, 127, 104, 0, 104, 0,
810, 809, 0, 0, 810, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 810, 810, 810, 0, 0,
0, 810, 810, 0, 0, 811, 0, 0, 0, 811,
0, 0, 0, 0, 0, 809, 0, 809, 0, 0,
811, 811, 811, 810, 127, 127, 811, 811, 293, 0,
104, 104, 104, 104, 104, 104, 0, 104, 104, 0,
0, 104, 0, 0, 104, 812, 0, 0, 811, 812,
0, 0, 0, 809, 104, 813, 104, 293, 809, 104,
812, 812, 812, 0, 0, 0, 812, 812, 0, 0,
0, 399, 409, 409, 0, 0, 0, 0, 0, 81,
0, 0, 0, 81, 81, 0, 0, 81, 812, 0,
0, 0, 0, 104, 0, 104, 810, 0, 0, 0,
104, 104, 104, 810, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 104, 0, 81, 81,
0, 811, 0, 0, 0, 81, 81, 0, 811, 0,
0, 0, 0, 0, 0, 0, 0, 0, 88, 0,
88, 0, 0, 0, 0, 104, 104, 0, 0, 0,
0, 81, 0, 81, 81, 0, 0, 0, 0, 0,
104, 812, 0, 0, 0, 0, 0, 0, 812, 0,
0, 0, 0, 223, 223, 0, 0, 0, 0, 0,
0, 0, 810, 0, 104, 127, 0, 0, 0, 88,
88, 0, 0, 0, 0, 0, 104, 0, 0, 0,
0, 0, 0, 810, 0, 0, 0, 811, 0, 0,
0, 0, 223, 278, 0, 0, 104, 0, 127, 0,
127, 0, 81, 81, 0, 0, 0, 0, 811, 81,
0, 0, 0, 127, 81, 127, 394, 810, 0, 810,
0, 0, 0, 0, 813, 813, 0, 812, 813, 0,
0, 0, 0, 0, 0, 293, 0, 0, 0, 0,
0, 223, 811, 0, 811, 0, 0, 0, 812, 0,
0, 0, 0, 0, 0, 810, 0, 0, 0, 0,
810, 81, 0, 0, 0, 0, 0, 127, 81, 81,
0, 0, 127, 399, 0, 0, 0, 0, 127, 0,
811, 127, 812, 81, 812, 811, 0, 0, 0, 0,
0, 0, 0, 127, 293, 0, 599, 0, 0, 0,
0, 81, 81, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
812, 0, 0, 0, 0, 812, 399, 0, 0, 0,
88, 0, 127, 0, 0, 0, 0, 127, 104, 127,
104, 0, 0, 0, 0, 0, 0, 0, 104, 434,
0, 0, 436, 437, 438, 0, 0, 0, 104, 0,
104, 104, 0, 88, 0, 88, 0, 0, 0, 0,
0, 0, 223, 0, 223, 223, 0, 0, 88, 0,
88, 0, 599, 599, 813, 0, 0, 0, 813, 0,
81, 0, 0, 0, 0, 0, 0, 0, 0, 813,
813, 813, 0, 0, 0, 813, 813, 0, 0, 0,
0, 0, 0, 0, 81, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 813, 0, 0,
0, 0, 88, 127, 0, 0, 0, 88, 562, 0,
0, 0, 0, 88, 0, 0, 88, 0, 0, 0,
81, 293, 81, 81, 0, 0, 0, 0, 88, 0,
0, 593, 0, 0, 0, 0, 0, 0, 0, 81,
0, 104, 81, 0, 0, 104, 104, 582, 0, 104,
0, 0, 595, 0, 0, 0, 0, 0, 0, 0,
0, 626, 0, 0, 0, 81, 0, 88, 0, 0,
813, 0, 88, 0, 88, 0, 0, 813, 0, 0,
104, 104, 0, 0, 0, 0, 223, 104, 104, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 293, 0,
0, 0, 0, 104, 0, 104, 104, 593, 593, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 681, 683,
0, 0, 0, 223, 0, 0, 813, 278, 0, 0,
0, 0, 0, 0, 0, 127, 0, 127, 88, 0,
0, 0, 0, 0, 0, 0, 0, 813, 0, 0,
0, 0, 0, 0, 104, 104, 0, 127, 0, 0,
0, 104, 0, 0, 683, 0, 104, 278, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 223,
0, 813, 0, 813, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 293, 0, 733, 0, 0, 0, 0, 0,
0, 0, 0, 104, 0, 0, 0, 0, 0, 813,
104, 104, 0, 0, 813, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 104, 906, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-763, 0, 0, 104, 104, 0, 0, 775, -763, -763,
-763, 0, 0, -763, -763, -763, 0, -763, 127, 0,
0, 293, 127, 599, 0, -763, -763, -763, 0, 0,
0, 0, 0, 0, 0, 0, 0, -763, -763, 0,
-763, -763, -763, -763, -763, 0, 0, 0, 0, 0,
88, 0, 88, 0, 0, 0, 0, 599, 599, 0,
0, 0, 0, 0, 599, 599, 0, 0, -763, 0,
0, 0, 88, 0, 0, 0, 0, 0, 0, 0,
0, 223, 0, 0, 0, 0, 0, 0, 0, 0,
127, 223, 104, 127, 0, 0, -763, -763, 0, 0,
0, 0, 0, -763, 0, 0, 0, 863, 0, 864,
0, 0, 0, 0, 0, 0, 104, 0, 0, 0,
-763, 0, 683, 0, 278, 0, -763, -763, 0, 0,
0, 0, 0, 0, 0, 0, 238, 0, -763, 0,
-763, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 104, 0, 104, 104, 0, 888, 0, 0,
0, 127, 127, 0, 0, 0, 0, 0, 127, 0,
0, 104, 0, 127, 104, 0, 0, 0, 0, 0,
0, 0, 0, 88, 0, 0, 0, 88, 593, 0,
914, 0, 0, 0, 0, 0, 0, 104, 0, 0,
0, 0, 0, 935, 0, 0, 0, 0, 0, 0,
0, 0, 223, 0, 0, 0, 0, 0, 0, 0,
599, 0, 593, 593, 0, 0, 0, 127, 0, 593,
593, 0, 0, 0, 0, 0, 346, 0, 0, 0,
0, 0, 127, 0, 0, 0, 0, 0, 0, 683,
0, 0, 0, 0, 0, 88, 0, 0, 88, 0,
127, 127, 0, 0, 0, 0, 0, 0, 0, 996,
0, 0, 0, 0, 0, 1131, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 409, 347, 348,
349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
359, 0, 0, 0, 0, 360, 361, 0, 0, 0,
0, -266, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 88, 88, 0, 0,
0, 0, 0, 88, 0, 0, 0, 0, 88, 0,
0, 362, 363, 364, 365, 0, 366, 0, 0, 127,
0, 0, 367, 368, 369, 370, 371, 0, 0, 0,
372, 1056, 0, 0, 0, 347, 348, 349, 350, 351,
352, 353, 354, 127, 356, 357, 0, 0, 409, 0,
0, 0, 360, 361, 0, 593, 0, 0, 0, 0,
0, 0, 88, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 88, 0, 127,
0, 0, 0, 0, 0, 0, 0, 0, 362, 363,
364, 365, 1106, 366, 0, 88, 88, 0, 127, 367,
368, 369, 370, 371, 0, 0, 0, 0, 0, 278,
1127, -763, 4, 0, 5, 6, 7, 8, 9, 0,
0, 0, 10, 11, 127, 0, 0, 12, 0, 13,
14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 88, 0, 48, 49, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 50, 51, 0, 1174, 0, 0, 0, 88, 52,
0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 88, 0, 0, 0, 0, -763,
0, -763, 0, 0, 0, 0, 0, 67, 68, 0,
0, 0, 69, 88, 0, 0, 0, 0, 0, 0,
1218, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 223, 262, 88,
5, 6, 7, 8, 9, -763, -763, -763, 10, 11,
0, 0, -763, 12, 0, 13, 14, 15, 16, 17,
18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
0, 0, 28, 29, 263, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
45, 46, 47, 0, 0, 347, -764, -764, -764, -764,
352, 353, 48, 49, -764, -764, 0, 0, 0, 0,
0, 0, 360, 361, 0, 0, 0, 50, 51, 0,
0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
61, 62, 63, 64, 65, 66, 0, 0, 362, 363,
364, 365, 0, 366, 0, 0, 0, 0, 0, 367,
368, 369, 370, 371, 0, -763, 262, -763, 5, 6,
7, 8, 9, 67, 68, -763, 10, 11, 69, -763,
-763, 12, 0, 13, 14, 15, 16, 17, 18, 19,
0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
28, 29, 263, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
47, 0, 0, 347, 348, 349, 350, 351, 352, 353,
48, 49, 356, 357, 0, 0, 0, 0, 0, 0,
360, 361, 0, 0, 0, 50, 51, 0, 0, 0,
0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
63, 64, 65, 66, 0, 0, 362, 363, 364, 365,
0, 366, 0, 0, 0, 0, 0, 367, 368, 369,
370, 371, 0, -763, 262, -763, 5, 6, 7, 8,
9, 67, 68, -763, 10, 11, 69, 0, -763, 12,
-763, 13, 14, 15, 16, 17, 18, 19, 0, 0,
0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
263, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -763, 262, -763, 5, 6, 7, 8, 9, 67,
68, -763, 10, 11, 69, 0, -763, 12, 0, 13,
14, 15, 16, 17, 18, 19, -763, 0, 0, 0,
0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
27, 0, 0, 0, 0, 0, 28, 29, 263, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -763,
262, -763, 5, 6, 7, 8, 9, 67, 68, -763,
10, 11, 69, 0, -763, 12, 0, 13, 14, 15,
16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
0, 0, 0, 0, 28, 29, 263, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -763, 0, -763,
0, 0, 0, 0, 0, 67, 68, 0, 0, 262,
69, 5, 6, 7, 8, 9, 0, -763, -763, 10,
11, 0, 0, 0, 12, 0, 13, 14, 15, 16,
17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
0, 0, 0, 28, 29, 263, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -763, 262, -763, 5,
6, 7, 8, 9, 67, 68, 0, 10, 11, 69,
0, 0, 12, 0, 13, 14, 15, 16, 17, 18,
19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
0, 28, 29, 263, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
0, 0, 0, 0, 52, 0, 0, 264, 54, -763,
55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -763, 262, -763, 5, 6, 7,
8, 9, 67, 68, 0, 10, 11, 69, 0, 0,
12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
29, 263, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
0, 0, 52, 0, 0, 53, 54, -763, 55, 56,
0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -763, 4, -763, 5, 6, 7, 8, 9,
67, 68, 0, 10, 11, 69, 0, 0, 12, 0,
13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
66, 0, 0, 0, 0, 0, 0, 0, 0, -763,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-763, 262, -763, 5, 6, 7, 8, 9, 67, 68,
0, 10, 11, 69, 0, 0, 12, 0, 13, 14,
15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
0, 0, 0, 0, 0, 28, 29, 263, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
0, 0, 0, 0, 0, 0, 0, -763, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -763, 262,
-763, 5, 6, 7, 8, 9, 67, 68, -763, 10,
11, 69, 0, 0, 12, 0, 13, 14, 15, 16,
17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
0, 0, 0, 28, 29, 263, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -763, 262, -763, 5,
6, 7, 8, 9, 67, 68, 0, 10, 11, 69,
0, 0, 12, 0, 13, 14, 15, 16, 17, 18,
19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
0, 28, 29, 263, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
62, 63, 64, 65, 66, 0, -763, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -740, 0, 0, -763, 0, -763, 0, 0, -740,
-740, -740, 67, 68, -740, -740, -740, 69, -740, 0,
0, 0, 0, 0, 0, 0, -740, -740, -740, -740,
-740, 0, 0, 0, 0, 0, 0, 0, -740, -740,
0, -740, -740, -740, -740, -740, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -740,
0, 0, 0, 0, 0, 0, 0, 0, -740, -740,
-740, -740, -740, -740, -740, -740, -740, -740, -740, -740,
-740, 0, 0, 0, 0, -740, -740, -740, -740, 0,
866, -740, 0, 0, -740, 0, 0, -740, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -740, 0, 0, -740, 0, -740, -740, -740, -740,
-122, -740, -740, -740, -740, 0, -740, 0, -740, -740,
0, -740, -740, -740, -740, -740, -740, -633, 0, 0,
-740, -740, 0, 0, 0, -633, -633, -633, 0, 0,
-633, -633, -633, 0, -633, 0, 0, 0, 0, 0,
0, 0, -633, 0, -633, -633, -633, 0, 0, 0,
0, 0, 0, 0, -633, -633, 0, -633, -633, -633,
-633, -633, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -633, 0, 0, 0, 0,
0, 0, 0, 0, -633, -633, -633, -633, -633, -633,
-633, -633, -633, -633, -633, -633, -633, 0, 0, 0,
0, -633, -633, -633, -633, 0, -633, -633, 0, 0,
-633, 0, 0, -633, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -633, 0, 0,
-633, 0, -633, 0, -633, -633, -633, -633, -633, -633,
-633, 0, -633, 0, -633, -633, 0, -633, -633, -633,
-633, -633, -633, -636, 0, 0, -633, -633, 0, 0,
0, -636, -636, -636, 0, 0, -636, -636, -636, 0,
-636, 0, 0, 0, 0, 0, 0, 0, -636, 0,
-636, -636, -636, 0, 0, 0, 0, 0, 0, 0,
-636, -636, 0, -636, -636, -636, -636, -636, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -636, 0, 0, 0, 0, 0, 0, 0, 0,
-636, -636, -636, -636, -636, -636, -636, -636, -636, -636,
-636, -636, -636, 0, 0, 0, 0, -636, -636, -636,
-636, 0, -636, -636, 0, 0, -636, 0, 0, -636,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -636, 0, 0, -636, 0, -636, 0,
-636, -636, -636, -636, -636, -636, -636, 0, -636, 0,
-636, -636, 0, -636, -636, -636, -636, -636, -636, -741,
0, 0, -636, -636, 0, 0, 0, -741, -741, -741,
0, 0, -741, -741, -741, 0, -741, 0, 0, 0,
0, 0, 0, 0, -741, -741, -741, -741, -741, 0,
0, 0, 0, 0, 0, 0, -741, -741, 0, -741,
-741, -741, -741, -741, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -741, 0, 0,
0, 0, 0, 0, 0, 0, -741, -741, -741, -741,
-741, -741, -741, -741, -741, -741, -741, -741, -741, 0,
0, 0, 0, -741, -741, -741, -741, 0, 0, -741,
0, 0, -741, 0, 0, -741, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -741,
0, 0, -741, 0, -741, -741, -741, -741, 0, -741,
-741, -741, -741, 0, -741, 0, -741, -741, 0, -741,
-741, -741, -741, -741, -741, -742, 0, 0, -741, -741,
0, 0, 0, -742, -742, -742, 0, 0, -742, -742,
-742, 0, -742, 0, 0, 0, 0, 0, 0, 0,
-742, -742, -742, -742, -742, 0, 0, 0, 0, 0,
0, 0, -742, -742, 0, -742, -742, -742, -742, -742,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -742, 0, 0, 0, 0, 0, 0,
0, 0, -742, -742, -742, -742, -742, -742, -742, -742,
-742, -742, -742, -742, -742, 0, 0, 0, 0, -742,
-742, -742, -742, 0, 0, -742, 0, 0, -742, 0,
0, -742, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -742, 0, 0, -742, 0,
-742, -742, -742, -742, 0, -742, -742, -742, -742, 0,
-742, 0, -742, -742, 0, -742, -742, -742, -742, -742,
-742, -320, 0, 0, -742, -742, 0, 0, 0, -320,
-320, -320, 0, 0, -320, -320, -320, 0, -320, 0,
0, 0, 0, 0, 0, 0, -320, 0, -320, -320,
-320, 0, 0, 0, 0, 0, 0, 0, -320, -320,
0, -320, -320, -320, -320, -320, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -320,
0, 0, 0, 0, 0, 0, 0, 0, -320, -320,
-320, -320, -320, -320, -320, -320, -320, -320, -320, -320,
-320, 0, 0, 0, 0, -320, -320, -320, -320, 0,
867, -320, 0, 0, -320, 0, 0, -320, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -320, 0, 0, -320, 0, -320, 0, -320, -320,
-124, -320, -320, -320, -320, 0, -320, 0, -320, -320,
0, -320, -320, -320, -320, -320, -320, -312, 0, 0,
-320, -320, 0, 0, 0, -312, -312, -312, 0, 0,
-312, -312, -312, 0, -312, 0, 0, 0, 0, 0,
0, 0, -312, 0, -312, -312, -312, 0, 0, 0,
0, 0, 0, 0, -312, -312, 0, -312, -312, -312,
-312, -312, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -312, 0, 0, 0, 0,
0, 0, 0, 0, -312, -312, -312, -312, -312, -312,
-312, -312, -312, -312, -312, -312, -312, 0, 0, 0,
0, -312, -312, -312, -312, 0, 0, -312, 0, 0,
-312, 0, 0, -312, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -312, 0, 0,
-312, 0, -312, 0, -312, -312, 0, -312, -312, -312,
-312, 0, -312, 0, -312, -312, 0, -312, -312, -312,
-312, -312, -312, -455, 0, 0, -312, -312, 0, 0,
0, -455, -455, -455, 0, 0, -455, -455, -455, 0,
-455, 0, 0, 0, 0, 0, 0, 0, -455, -455,
-455, -455, 0, 0, 0, 0, 0, 0, 0, 0,
-455, -455, 0, -455, -455, -455, -455, -455, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -455, 0, 0, 0, 0, 0, 0, 0, 0,
-455, -455, -455, -455, -455, -455, -455, -455, -455, -455,
-455, -455, -455, 0, 0, 0, 0, -455, -455, -455,
-455, 0, 0, -455, 0, 0, -455, 0, 0, -455,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -455, 0, 0, 0, 0, -455, -455,
-455, -455, 0, -455, -455, -455, -455, 0, -455, 238,
-455, -455, 0, -455, -455, -455, -455, -455, -455, -763,
0, 0, -455, 0, 0, 0, 0, -763, -763, -763,
0, 0, -763, -763, -763, 0, -763, 0, 0, 0,
0, 0, 0, 0, -763, -763, -763, -763, 0, 0,
0, 0, 0, 0, 0, 0, -763, -763, 0, -763,
-763, -763, -763, -763, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -763, 0, 0,
0, 0, 0, 0, 0, 0, -763, -763, -763, -763,
-763, -763, -763, -763, -763, -763, -763, -763, -763, 0,
0, 0, 0, -763, -763, -763, -763, 0, 0, -763,
0, 0, -763, 0, 0, -763, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -763,
0, 0, 0, 0, -763, -763, -763, -763, 0, -763,
-763, -763, -763, 0, -763, 238, -763, -763, 0, -763,
-763, -763, -763, -763, -763, -327, 0, 0, -763, 0,
0, 0, 0, -327, -327, -327, 0, 0, -327, -327,
-327, 0, -327, 0, 0, 0, 0, 0, 0, 0,
-327, 0, -327, -327, 0, 0, 0, 0, 0, 0,
0, 0, -327, -327, 0, -327, -327, -327, -327, -327,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -327, 0, 0, 0, 0, 0, 0,
0, 0, -327, -327, -327, -327, -327, -327, -327, -327,
-327, -327, -327, -327, -327, 0, 0, 0, 0, -327,
-327, -327, -327, 0, 0, -327, 0, 0, -327, 0,
0, -327, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -327, 0, 0, 0, 0,
-327, 0, -327, -327, 0, -327, -327, -327, -327, 0,
-327, 235, -327, -327, 0, -327, -327, -327, -327, -327,
-327, -740, 0, 0, -327, 0, 0, 0, 0, -740,
-740, -740, 0, 0, 0, -740, -740, 0, -740, 0,
0, 0, 0, 0, 0, 0, -740, -740, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -740, -740,
0, -740, -740, -740, -740, -740, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -740,
0, 0, 0, 0, 0, 0, 0, 0, -740, -740,
-740, -740, -740, -740, -740, -740, -740, -740, -740, -740,
-740, 0, 0, 0, 0, -740, -740, -740, -740, 0,
816, -740, 0, 0, -740, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -740, 0, 0, 0, 0, -113, -740, -740, -740,
-122, -740, -740, -740, -740, 0, -740, 0, 0, -740,
0, -740, -740, -740, -740, -740, -740, -740, 0, 0,
-740, 0, 0, 0, 0, -740, -740, -740, 0, 0,
0, -740, -740, 0, -740, 0, 0, 0, 0, 0,
0, 0, -740, -740, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -740, -740, 0, -740, -740, -740,
-740, -740, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -740, 0, 0, 0, 0,
0, 0, 0, 0, -740, -740, -740, -740, -740, -740,
-740, -740, -740, -740, -740, -740, -740, 0, 0, 0,
0, -740, -740, -740, -740, 0, 816, -740, 0, 0,
-740, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -740, 0, 0,
0, 0, -740, -740, -740, -740, -122, -740, -740, -740,
-740, 0, -740, 0, 0, -740, 0, -740, -740, -740,
-740, -740, -740, -320, 0, 0, -740, 0, 0, 0,
0, -320, -320, -320, 0, 0, 0, -320, -320, 0,
-320, 0, 0, 0, 0, 0, 0, 0, -320, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-320, -320, 0, -320, -320, -320, -320, -320, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -320, 0, 0, 0, 0, 0, 0, 0, 0,
-320, -320, -320, -320, -320, -320, -320, -320, -320, -320,
-320, -320, -320, 0, 0, 0, 0, -320, -320, -320,
-320, 0, 817, -320, 0, 0, -320, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -320, 0, 0, 0, 0, -115, 0,
-320, -320, -124, -320, -320, -320, -320, 0, -320, 0,
0, -320, 0, -320, -320, -320, -320, -320, -320, -320,
0, 0, -320, 0, 0, 0, 0, -320, -320, -320,
0, 0, 0, -320, -320, 0, -320, 0, 0, 0,
0, 0, 0, 0, -320, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -320, -320, 0, -320,
-320, -320, -320, -320, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -320, 0, 0,
0, 0, 0, 0, 0, 0, -320, -320, -320, -320,
-320, -320, -320, -320, -320, -320, -320, -320, -320, 0,
0, 0, 0, -320, -320, -320, -320, 0, 817, -320,
0, 0, -320, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -320,
0, 0, 0, 0, -320, 0, -320, -320, -124, -320,
-320, -320, -320, 0, -320, 0, 0, -320, 0, -320,
-320, -320, -320, -320, -320, 0, 0, 0, -320, 5,
6, 7, 8, 9, 0, 0, 0, 10, 11, 0,
0, 0, 12, 0, 13, 14, 15, 16, 17, 18,
19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
0, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 554, 0, 5, 6, 7, 8,
9, 0, 67, 68, 10, 11, 0, 69, 0, 12,
0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
263, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 554, 0, 5, 6, 7, 8, 9, 0, 67,
68, 10, 11, 0, 69, 0, 12, 0, 13, 14,
15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
0, 0, 0, 0, 0, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5, 6, 7, 0, 9, 0, 67, 68, 10, 11,
0, 69, 0, 12, 0, 13, 14, 15, 16, 17,
18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
23, 24, 25, 26, 0, 0, 211, 0, 0, 0,
0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
36, 37, 38, 39, 40, 212, 41, 42, 43, 44,
45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
0, 0, 0, 0, 0, 213, 0, 0, 214, 54,
0, 55, 56, 0, 215, 216, 217, 58, 59, 218,
61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 242, 5, 6,
7, 0, 9, 67, 219, 0, 10, 11, 69, 0,
0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
25, 26, 0, 0, 211, 0, 0, 0, 0, 0,
0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
38, 39, 40, 212, 41, 42, 43, 44, 45, 46,
47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
0, 0, 0, 213, 0, 0, 214, 54, 0, 55,
56, 0, 215, 216, 217, 58, 59, 218, 61, 62,
63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 5, 6, 7, 8, 9,
0, 67, 219, 10, 11, 0, 69, 0, 12, 0,
13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
0, 27, 0, 0, 0, 0, 0, 28, 29, 0,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 5, 6, 7, 0, 9, 0, 67, 68,
10, 11, 0, 69, 0, 12, 0, 13, 14, 15,
16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
21, 22, 23, 24, 25, 26, 0, 0, 211, 0,
0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
34, 35, 36, 37, 38, 39, 40, 212, 41, 42,
43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
456, 0, 0, 0, 0, 0, 0, 213, 0, 0,
214, 54, 0, 55, 56, 0, 215, 216, 217, 58,
59, 218, 61, 62, 63, 64, 65, 66, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
6, 7, 0, 9, 0, 67, 219, 10, 11, 0,
69, 0, 12, 0, 13, 14, 15, 250, 251, 18,
19, 0, 0, 0, 0, 0, 20, 252, 253, 23,
24, 25, 26, 0, 0, 211, 0, 0, 0, 0,
0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
37, 38, 39, 40, 212, 41, 42, 43, 44, 45,
46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
0, 0, 0, 0, 213, 0, 0, 214, 54, 0,
55, 56, 0, 682, 216, 217, 58, 59, 218, 61,
62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
9, 0, 67, 219, 10, 11, 0, 69, 0, 12,
0, 13, 14, 15, 250, 251, 18, 19, 0, 0,
0, 0, 0, 20, 252, 253, 23, 24, 25, 26,
0, 0, 211, 0, 0, 0, 0, 0, 0, 29,
0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
40, 212, 41, 42, 43, 44, 45, 46, 47, 0,
0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 50, 456, 0, 0, 0, 0, 0,
0, 213, 0, 0, 214, 54, 0, 55, 56, 0,
682, 216, 217, 58, 59, 218, 61, 62, 63, 64,
65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 5, 6, 7, 0, 9, 0, 67,
219, 10, 11, 0, 69, 0, 12, 0, 13, 14,
15, 250, 251, 18, 19, 0, 0, 0, 0, 0,
20, 252, 253, 23, 24, 25, 26, 0, 0, 211,
0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
33, 34, 35, 36, 37, 38, 39, 40, 212, 41,
42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
50, 51, 0, 0, 0, 0, 0, 0, 213, 0,
0, 214, 54, 0, 55, 56, 0, 215, 216, 0,
58, 59, 218, 61, 62, 63, 64, 65, 66, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5, 6, 7, 0, 9, 0, 67, 219, 10, 11,
0, 69, 0, 12, 0, 13, 14, 15, 250, 251,
18, 19, 0, 0, 0, 0, 0, 20, 252, 253,
23, 24, 25, 26, 0, 0, 211, 0, 0, 0,
0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
36, 37, 38, 39, 40, 212, 41, 42, 43, 44,
45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
0, 0, 0, 0, 0, 213, 0, 0, 214, 54,
0, 55, 56, 0, 0, 216, 217, 58, 59, 218,
61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
0, 9, 0, 67, 219, 10, 11, 0, 69, 0,
12, 0, 13, 14, 15, 250, 251, 18, 19, 0,
0, 0, 0, 0, 20, 252, 253, 23, 24, 25,
26, 0, 0, 211, 0, 0, 0, 0, 0, 0,
29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
39, 40, 212, 41, 42, 43, 44, 45, 46, 47,
0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
0, 0, 213, 0, 0, 214, 54, 0, 55, 56,
0, 682, 216, 0, 58, 59, 218, 61, 62, 63,
64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
67, 219, 10, 11, 0, 69, 0, 12, 0, 13,
14, 15, 250, 251, 18, 19, 0, 0, 0, 0,
0, 20, 252, 253, 23, 24, 25, 26, 0, 0,
211, 0, 0, 0, 0, 0, 0, 29, 0, 0,
32, 33, 34, 35, 36, 37, 38, 39, 40, 212,
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 50, 51, 0, 0, 0, 0, 0, 0, 213,
0, 0, 214, 54, 0, 55, 56, 0, 0, 216,
0, 58, 59, 218, 61, 62, 63, 64, 65, 66,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 5, 6, 7, 0, 9, 0, 67, 219, 10,
11, 0, 69, 0, 12, 0, 13, 14, 15, 16,
17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
0, 0, 0, 0, 0, 0, 213, 0, 0, 214,
54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 312, 0, 313, 5,
6, 7, 0, 9, 67, 68, 0, 10, 11, 69,
0, 0, 12, 0, 13, 14, 15, 16, 17, 18,
19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
0, 0, 0, 0, 213, 0, 0, 214, 54, 0,
55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 242, 5, 6, 7,
0, 9, 67, 68, 0, 10, 11, 69, 0, 0,
12, 0, 13, 14, 15, 250, 251, 18, 19, 0,
0, 0, 0, 0, 20, 252, 253, 23, 24, 25,
26, 0, 0, 211, 0, 0, 0, 0, 0, 0,
29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
0, 0, 213, 0, 0, 214, 54, 0, 55, 56,
0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
470, 0, 0, 0, 5, 6, 7, 0, 9, 0,
67, 219, 10, 11, 0, 69, 0, 12, 0, 13,
14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
211, 0, 0, 0, 0, 0, 0, 29, 0, 0,
32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 50, 51, 0, 0, 0, 0, 0, 0, 213,
0, 0, 214, 54, 0, 55, 56, 0, 580, 0,
0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 5, 6, 7, 0, 9, 0, 67, 219, 10,
11, 0, 69, 0, 12, 0, 13, 14, 15, 250,
251, 18, 19, 0, 0, 0, 0, 0, 20, 252,
253, 23, 24, 25, 26, 0, 0, 211, 0, 0,
0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
0, 0, 0, 0, 0, 0, 213, 0, 0, 214,
54, 0, 55, 56, 0, 580, 0, 0, 58, 59,
60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
7, 0, 9, 0, 67, 219, 10, 11, 0, 69,
0, 12, 0, 13, 14, 15, 250, 251, 18, 19,
0, 0, 0, 0, 0, 20, 252, 253, 23, 24,
25, 26, 0, 0, 211, 0, 0, 0, 0, 0,
0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
0, 0, 0, 213, 0, 0, 214, 54, 0, 55,
56, 0, 934, 0, 0, 58, 59, 60, 61, 62,
63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
0, 67, 219, 10, 11, 0, 69, 0, 12, 0,
13, 14, 15, 250, 251, 18, 19, 0, 0, 0,
0, 0, 20, 252, 253, 23, 24, 25, 26, 0,
0, 211, 0, 0, 0, 0, 0, 0, 29, 0,
0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
213, 0, 0, 214, 54, 0, 55, 56, 0, 995,
0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 5, 6, 7, 0, 9, 0, 67, 219,
10, 11, 0, 69, 0, 12, 0, 13, 14, 15,
250, 251, 18, 19, 0, 0, 0, 0, 0, 20,
252, 253, 23, 24, 25, 26, 0, 0, 211, 0,
0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
51, 0, 0, 0, 0, 0, 0, 213, 0, 0,
214, 54, 0, 55, 56, 0, 1173, 0, 0, 58,
59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
6, 7, 0, 9, 0, 67, 219, 10, 11, 0,
69, 0, 12, 0, 13, 14, 15, 250, 251, 18,
19, 0, 0, 0, 0, 0, 20, 252, 253, 23,
24, 25, 26, 0, 0, 211, 0, 0, 0, 0,
0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
0, 0, 0, 0, 213, 0, 0, 214, 54, 0,
55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
9, 0, 67, 219, 10, 11, 0, 69, 0, 12,
0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
0, 0, 211, 0, 0, 0, 0, 0, 0, 29,
0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
0, 213, 0, 0, 214, 54, 0, 55, 56, 0,
0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 5, 6, 7, 0, 9, 0, 67,
219, 10, 11, 0, 69, 0, 12, 0, 13, 14,
15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
50, 51, 0, 0, 0, 0, 0, 0, 213, 0,
0, 214, 54, 0, 55, 56, 0, 0, 0, 0,
58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5, 6, 7, 0, 9, 0, 67, 68, 10, 11,
0, 69, 0, 12, 0, 13, 14, 15, 250, 251,
18, 19, 0, 0, 0, 0, 0, 20, 252, 253,
23, 24, 25, 26, 0, 0, 211, 0, 0, 0,
0, 0, 0, 282, 0, 0, 32, 33, 34, 35,
36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 283, 0, 0, 214, 54,
0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
0, 0, 284, 5, 6, 7, 0, 9, 0, 0,
0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
15, 250, 251, 18, 19, 0, 0, 0, 285, 0,
20, 252, 253, 23, 24, 25, 26, 0, 0, 211,
0, 0, 0, 0, 0, 0, 282, 0, 0, 32,
33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 283, 0,
0, 342, 54, 0, 55, 56, 0, 343, 0, 0,
58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
13, 14, 15, 250, 251, 18, 19, 0, 0, 0,
0, 285, 20, 252, 253, 23, 24, 25, 26, 0,
0, 211, 0, 0, 0, 0, 0, 0, 282, 0,
0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
392, 0, 0, 53, 54, 0, 55, 56, 0, 57,
0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
66, 0, 0, 0, 0, 0, 0, 5, 6, 7,
0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
12, 0, 13, 14, 15, 250, 251, 18, 19, 0,
0, 0, 0, 285, 20, 252, 253, 23, 24, 25,
26, 0, 0, 211, 0, 0, 0, 0, 0, 0,
282, 0, 0, 32, 33, 34, 400, 36, 37, 38,
401, 40, 0, 41, 42, 43, 44, 45, 46, 47,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 402, 0,
0, 0, 403, 0, 0, 214, 54, 0, 55, 56,
0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
64, 65, 66, 0, 0, 0, 0, 0, 0, 5,
6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
0, 0, 12, 0, 13, 14, 15, 250, 251, 18,
19, 0, 0, 0, 0, 285, 20, 252, 253, 23,
24, 25, 26, 0, 0, 211, 0, 0, 0, 0,
0, 0, 282, 0, 0, 32, 33, 34, 35, 36,
37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 283, 0, 0, 214, 54, 0,
55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
0, 587, 5, 6, 7, 0, 9, 0, 0, 0,
10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
250, 251, 18, 19, 0, 0, 0, 285, 0, 20,
252, 253, 23, 24, 25, 26, 0, 0, 211, 0,
0, 0, 0, 0, 0, 282, 0, 0, 32, 33,
34, 400, 36, 37, 38, 401, 40, 0, 41, 42,
43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 403, 0, 0,
214, 54, 0, 55, 56, 0, 0, 0, 0, 58,
59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
14, 15, 250, 251, 18, 19, 0, 0, 0, 0,
285, 20, 252, 253, 23, 24, 25, 26, 0, 0,
211, 0, 0, 0, 0, 0, 0, 282, 0, 0,
32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 283,
0, 0, 342, 54, 0, 55, 56, 0, 0, 0,
0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
0, 13, 14, 15, 250, 251, 18, 19, 0, 0,
0, 0, 285, 20, 252, 253, 23, 24, 25, 26,
0, 0, 211, 0, 0, 0, 0, 0, 0, 282,
0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1126, 0, 0, 214, 54, 0, 55, 56, 0,
0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
65, 66, 0, 0, 0, 0, 0, 0, 5, 6,
7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
0, 12, 0, 13, 14, 15, 250, 251, 18, 19,
0, 0, 0, 0, 285, 20, 252, 253, 23, 24,
25, 26, 0, 0, 211, 0, 0, 0, 0, 0,
0, 282, 0, 0, 32, 33, 34, 35, 36, 37,
38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1141, 0, 0, 214, 54, 0, 55,
56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
151, 152, 153, 154, 0, 0, 285, 155, 156, 157,
411, 412, 413, 414, 162, 163, 164, 0, 0, 0,
0, 0, 165, 166, 167, 168, 415, 416, 417, 418,
173, 37, 38, 419, 40, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 175, 176, 177, 178, 179, 180, 181, 182,
183, 0, 0, 184, 185, 0, 0, 0, 0, 186,
187, 188, 189, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 190, 191, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 192, 193, 194,
195, 196, 197, 420, 0, 0, 0, 0, 198, 199,
200, 201, 202, 203, 204, 131, 132, 133, 134, 135,
136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
146, 147, 148, 149, 150, 151, 152, 153, 154, 0,
0, 0, 155, 156, 157, 158, 159, 160, 161, 162,
163, 164, 0, 0, 0, 0, 0, 165, 166, 167,
168, 169, 170, 171, 172, 173, 295, 296, 174, 297,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 175, 176, 177,
178, 179, 180, 181, 182, 183, 0, 0, 184, 185,
0, 0, 0, 0, 186, 187, 188, 189, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 190,
191, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 192, 193, 194, 195, 196, 197, 0, 0,
0, 0, 0, 198, 199, 200, 201, 202, 203, 204,
131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
151, 152, 153, 154, 0, 0, 0, 155, 156, 157,
158, 159, 160, 161, 162, 163, 164, 0, 0, 0,
0, 0, 165, 166, 167, 168, 169, 170, 171, 172,
173, 244, 0, 174, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 175, 176, 177, 178, 179, 180, 181, 182,
183, 0, 0, 184, 185, 0, 0, 0, 0, 186,
187, 188, 189, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 190, 191, 0, 0, 59, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 192, 193, 194,
195, 196, 197, 0, 0, 0, 0, 0, 198, 199,
200, 201, 202, 203, 204, 131, 132, 133, 134, 135,
136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
146, 147, 148, 149, 150, 151, 152, 153, 154, 0,
0, 0, 155, 156, 157, 158, 159, 160, 161, 162,
163, 164, 0, 0, 0, 0, 0, 165, 166, 167,
168, 169, 170, 171, 172, 173, 0, 0, 174, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 175, 176, 177,
178, 179, 180, 181, 182, 183, 0, 0, 184, 185,
0, 0, 0, 0, 186, 187, 188, 189, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 190,
191, 0, 0, 59, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 192, 193, 194, 195, 196, 197, 0, 0,
0, 0, 0, 198, 199, 200, 201, 202, 203, 204,
131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
151, 152, 153, 154, 0, 0, 0, 155, 156, 157,
158, 159, 160, 161, 162, 163, 164, 0, 0, 0,
0, 0, 165, 166, 167, 168, 169, 170, 171, 172,
173, 0, 0, 174, 346, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 175, 176, 177, 178, 179, 180, 181, 182,
183, 0, 0, 184, 185, 0, 0, 0, 0, 186,
187, 188, 189, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 190, 191, 347, 348, 349, 350,
351, 352, 353, 354, 355, 356, 357, 358, 359, 0,
0, 0, 0, 360, 361, 0, 0, 192, 193, 194,
195, 196, 197, 0, 0, 0, 0, 0, 198, 199,
200, 201, 202, 203, 204, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 362,
363, 364, 365, 0, 366, 23, 24, 25, 26, 0,
367, 368, 369, 370, 371, 0, 0, 0, 372, 0,
0, 32, 33, 34, 787, 0, 0, 0, 788, 0,
1067, 41, 42, 43, 44, 45, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 510,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 789, 790, 0, 0, 0, 0, 0, 0,
791, 0, 0, 792, 0, 0, 793, 794, 0, 950,
513, 0, 58, 59, 1085, 61, 62, 63, 64, 65,
66, 0, 23, 24, 25, 26, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 795, 32, 33,
34, 787, 0, 0, 0, 788, 0, 0, 41, 42,
43, 44, 45, 285, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 789,
790, 0, 0, 0, 0, 0, 0, 791, 0, 0,
792, 0, 0, 793, 794, 0, 950, 0, 0, 58,
59, 60, 61, 62, 63, 64, 65, 66, 0, 23,
24, 25, 26, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 795, 32, 33, 34, 787, 242,
0, 0, 788, 0, 0, 41, 42, 43, 44, 45,
285, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 789, 790, 0, 0,
0, 0, 0, 0, 791, 0, 0, 792, 0, 0,
793, 794, 0, 1061, 0, 0, 58, 59, 60, 61,
62, 63, 64, 65, 66, 0, 23, 24, 25, 26,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 795, 32, 33, 34, 787, 0, 0, 0, 788,
0, 0, 41, 42, 43, 44, 45, 285, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 789, 790, 0, 0, 0, 0, 0,
0, 791, 0, 0, 792, 0, 0, 793, 794, 0,
950, 0, 0, 58, 59, 60, 61, 62, 63, 64,
65, 66, 0, 23, 24, 25, 26, 0, 0, 0,
0, 0, 783, 0, 0, 0, 0, 0, 795, 32,
33, 34, 787, 0, 0, 0, 788, 0, 0, 41,
42, 43, 44, 45, 285, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 347, 348, 349, 350, 351,
352, 353, 354, 355, 356, 357, 358, 359, 0, 0,
789, 790, 360, 361, 0, 0, 0, 0, 791, 0,
0, 792, 0, 0, 793, 794, 0, 0, 0, 0,
58, 59, 60, 61, 62, 63, 64, 65, 66, 783,
0, 0, 0, -266, 0, 0, 0, 0, 362, 363,
364, 365, 0, 366, 0, 795, 0, 0, 0, 367,
368, 369, 370, 371, 913, 0, 0, 372, 0, 0,
0, 285, 347, 348, 349, 350, 351, 352, 353, 354,
355, 356, 357, 358, 359, 0, 0, 0, 0, 360,
361, 0, 0, 0, 0, 0, 0, 347, 348, 349,
350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
0, 0, 0, 0, 360, 361, 0, 0, 0, 0,
0, 0, 0, 0, 0, 362, 363, 364, 365, 0,
366, 0, 0, 0, 0, 0, 367, 368, 369, 370,
371, 924, 0, 0, 372, 0, 0, 0, 0, 0,
362, 363, 364, 365, 0, 366, 0, 0, 0, 0,
0, 367, 368, 369, 370, 371, 0, 0, 0, 372,
0, 0, 0, 0, 347, 348, 349, 350, 351, 352,
353, 354, 355, 356, 357, 358, 359, 0, 0, 0,
0, 360, 361, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 362, 363, 364,
365, 0, 366, 627, 628, 0, 0, 629, 367, 368,
369, 370, 371, 0, 0, 0, 372, 0, 0, 0,
0, 0, 0, 0, 0, 0, 175, 176, 177, 178,
179, 180, 181, 182, 183, 0, 0, 184, 185, 0,
0, 0, 0, 186, 187, 188, 189, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 190, 191,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 636, 637, 0, 0,
638, 192, 193, 194, 195, 196, 197, 238, 0, 0,
0, 0, 198, 199, 200, 201, 202, 203, 204, 175,
176, 177, 178, 179, 180, 181, 182, 183, 0, 0,
184, 185, 0, 0, 0, 0, 186, 187, 188, 189,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 190, 191, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 686,
628, 0, 0, 687, 192, 193, 194, 195, 196, 197,
238, 0, 0, 0, 0, 198, 199, 200, 201, 202,
203, 204, 175, 176, 177, 178, 179, 180, 181, 182,
183, 0, 0, 184, 185, 0, 0, 0, 0, 186,
187, 188, 189, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 190, 191, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 689, 637, 0, 0, 690, 192, 193, 194,
195, 196, 197, 238, 0, 0, 0, 0, 198, 199,
200, 201, 202, 203, 204, 175, 176, 177, 178, 179,
180, 181, 182, 183, 0, 0, 184, 185, 0, 0,
0, 0, 186, 187, 188, 189, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 190, 191, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 713, 628, 0, 0, 714,
192, 193, 194, 195, 196, 197, 238, 0, 0, 0,
0, 198, 199, 200, 201, 202, 203, 204, 175, 176,
177, 178, 179, 180, 181, 182, 183, 0, 0, 184,
185, 0, 0, 0, 0, 186, 187, 188, 189, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
190, 191, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 716, 637,
0, 0, 717, 192, 193, 194, 195, 196, 197, 238,
0, 0, 0, 0, 198, 199, 200, 201, 202, 203,
204, 175, 176, 177, 178, 179, 180, 181, 182, 183,
0, 0, 184, 185, 0, 0, 0, 0, 186, 187,
188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 190, 191, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 844, 628, 0, 0, 845, 192, 193, 194, 195,
196, 197, 238, 0, 0, 0, 0, 198, 199, 200,
201, 202, 203, 204, 175, 176, 177, 178, 179, 180,
181, 182, 183, 0, 0, 184, 185, 0, 0, 0,
0, 186, 187, 188, 189, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 190, 191, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 847, 637, 0, 0, 848, 192,
193, 194, 195, 196, 197, 238, 0, 0, 0, 0,
198, 199, 200, 201, 202, 203, 204, 175, 176, 177,
178, 179, 180, 181, 182, 183, 0, 0, 184, 185,
0, 0, 0, 0, 186, 187, 188, 189, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 190,
191, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 853, 628, 0,
0, 854, 192, 193, 194, 195, 196, 197, 238, 0,
0, 0, 0, 198, 199, 200, 201, 202, 203, 204,
175, 176, 177, 178, 179, 180, 181, 182, 183, 0,
0, 184, 185, 0, 0, 0, 0, 186, 187, 188,
189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 190, 191, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
671, 637, 0, 0, 672, 192, 193, 194, 195, 196,
197, 238, 0, 0, 0, 0, 198, 199, 200, 201,
202, 203, 204, 175, 176, 177, 178, 179, 180, 181,
182, 183, 0, 0, 184, 185, 0, 0, 0, 0,
186, 187, 188, 189, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 190, 191, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 940, 628, 0, 0, 941, 192, 193,
194, 195, 196, 197, 238, 0, 0, 0, 0, 198,
199, 200, 201, 202, 203, 204, 175, 176, 177, 178,
179, 180, 181, 182, 183, 0, 0, 184, 185, 0,
0, 0, 0, 186, 187, 188, 189, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 190, 191,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 943, 637, 0, 0,
944, 192, 193, 194, 195, 196, 197, 238, 0, 0,
0, 0, 198, 199, 200, 201, 202, 203, 204, 175,
176, 177, 178, 179, 180, 181, 182, 183, 0, 0,
184, 185, 0, 0, 0, 0, 186, 187, 188, 189,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 190, 191, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1225,
628, 0, 0, 1226, 192, 193, 194, 195, 196, 197,
238, 0, 0, 0, 0, 198, 199, 200, 201, 202,
203, 204, 175, 176, 177, 178, 179, 180, 181, 182,
183, 0, 0, 184, 185, 0, 0, 0, 0, 186,
187, 188, 189, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 190, 191, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1228, 637, 0, 0, 1229, 192, 193, 194,
195, 196, 197, 238, 0, 0, 0, 0, 198, 199,
200, 201, 202, 203, 204, 175, 176, 177, 178, 179,
180, 181, 182, 183, 0, 0, 184, 185, 0, 0,
0, 0, 186, 187, 188, 189, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 190, 191, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1235, 628, 0, 0, 1236,
192, 193, 194, 195, 196, 197, 238, 0, 0, 0,
0, 198, 199, 200, 201, 202, 203, 204, 175, 176,
177, 178, 179, 180, 181, 182, 183, 0, 0, 184,
185, 0, 0, 0, 0, 186, 187, 188, 189, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
190, 191, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 671, 637,
0, 0, 672, 192, 193, 194, 195, 196, 197, 238,
0, 0, 0, 0, 198, 199, 200, 201, 202, 203,
204, 175, 176, 177, 178, 179, 180, 181, 182, 183,
0, 0, 184, 185, 0, 0, 0, 0, 186, 187,
188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 190, 191, 347, 348, 349, 350, 351,
352, 353, 354, 355, 356, 357, 358, 359, 0, 0,
0, 0, 360, 361, 0, 0, 192, 193, 194, 195,
196, 197, 0, 0, 0, 0, 0, 198, 199, 200,
201, 202, 203, 204, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 362, 363,
364, 365, 0, 366, 0, 0, 0, 0, 242, 367,
368, 369, 370, 371, 0, 0, 0, 372, 347, 348,
349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
359, 0, 0, 0, 0, 360, 361, 0, 347, 348,
349, 350, 351, 352, 353, 354, 355, 356, 357, -764,
-764, 0, 0, 0, 0, 360, 361, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 362, 363, 364, 365, 0, 366, 0, 0, 0,
0, 0, 367, 368, 369, 370, 371, 0, 0, 0,
372, 362, 363, 364, 365, 0, 366, 0, 0, 0,
0, 0, 367, 368, 369, 370, 371 ];
#[allow(non_upper_case_globals)]
const yycheck_: &'static [i32] = &[ 2, 59, 4, 16, 17, 57, 96, 107, 93, 99,
8, 60, 529, 379, 98, 839, 442, 22, 71, 28,
232, 106, 385, 734, 450, 16, 17, 276, 2, 345,
28, 280, 4, 325, 86, 881, 403, 832, 57, 8,
86, 69, 53, 600, 22, 103, 99, 511, 100, 101,
102, 53, 54, 330, 450, 57, 95, 96, 0, 28,
99, 71, 13, 738, 55, 56, 1018, 99, 879, 29,
731, 431, 432, 27, 78, 1151, 81, 140, 68, 953,
446, 55, 56, 100, 86, 2, 52, 4, 26, 294,
59, 104, 500, 1172, 490, 926, 1145, 758, 100, 101,
102, 103, 57, 81, 381, 27, 15, 29, 17, 2,
99, 4, 345, 104, 13, 13, 325, 37, 38, 328,
325, 9, 57, 328, 99, 970, 971, 15, 56, 1208,
1206, 86, 789, 790, 103, 100, 502, 54, 264, 66,
129, 66, 227, 16, 17, 100, 101, 102, 66, 68,
534, 86, 536, 103, 129, 16, 17, 53, 688, 125,
53, 54, 13, 123, 57, 100, 101, 102, 378, 218,
380, 256, 294, 1249, 125, 140, 139, 13, 97, 587,
325, 138, 1231, 140, 138, 715, 140, 138, 126, 140,
140, 1065, 119, 86, 55, 66, 121, 122, 431, 432,
126, 119, 241, 325, 243, 290, 328, 100, 101, 102,
103, 1042, 214, 266, 139, 34, 342, 52, 428, 68,
140, 56, 235, 126, 237, 238, 1178, 317, 318, 319,
320, 104, 284, 52, 266, 445, 793, 447, 284, 138,
138, 140, 140, 104, 235, 247, 237, 249, 97, 461,
121, 122, 226, 264, 718, 719, 266, 285, 232, 731,
262, 139, 264, 793, 238, 475, 734, 1113, 139, 695,
322, 697, 109, 247, 34, 253, 254, 1151, 317, 318,
319, 320, 284, 287, 323, 324, 758, 138, 654, 140,
26, 343, 52, 503, 131, 139, 663, 387, 664, 302,
303, 697, 138, 1114, 140, 322, 68, 516, 965, 966,
395, 516, 100, 100, 316, 731, 846, 926, 214, 321,
322, 214, 738, 375, 343, 327, 856, 1172, 330, 284,
247, 342, 1206, 139, 1208, 97, 389, 125, 125, 819,
342, 343, 758, 13, 316, 262, 1021, 827, 387, 284,
340, 1175, 99, 249, 247, 345, 249, 389, 375, 100,
282, 136, 235, 402, 237, 1026, 379, 322, 264, 262,
1244, 264, 780, 375, 235, 1249, 237, 238, 895, 381,
1175, 68, 129, 125, 386, 28, 388, 322, 343, 666,
126, 284, 949, 125, 516, 13, 822, 68, 140, 316,
136, 68, 380, 695, 321, 379, 99, 129, 343, 96,
97, 380, 942, 970, 971, 879, 129, 881, 137, 785,
375, 140, 952, 316, 791, 955, 97, 13, 321, 322,
97, 470, 1143, 446, 327, 992, 129, 330, 968, 13,
375, 431, 432, 13, 13, 655, 342, 763, 500, 342,
343, 442, 68, 1248, 500, 665, 816, 817, 136, 428,
469, 710, 140, 823, 824, 68, 758, 58, 138, 447,
140, 469, 446, 685, 99, 99, 112, 1138, 447, 340,
482, 97, 375, 100, 345, 459, 77, 461, 381, 502,
386, 959, 388, 386, 97, 388, 487, 475, 500, 99,
469, 97, 970, 971, 129, 129, 475, 891, 892, 26,
926, 125, 896, 598, 898, 1072, 900, 108, 136, 572,
138, 112, 140, 1040, 992, 503, 731, 125, 502, 1138,
136, 1048, 128, 738, 503, 587, 1145, 58, 1147, 129,
136, 587, 140, 99, 518, 500, 549, 100, 551, 782,
136, 68, 138, 758, 140, 529, 77, 66, 67, 1089,
1090, 1091, 99, 125, 138, 500, 140, 56, 138, 138,
140, 140, 656, 129, 784, 852, 786, 1238, 140, 96,
97, 125, 66, 816, 817, 587, 1012, 108, 109, 482,
823, 824, 129, 738, 68, 648, 741, 571, 600, 99,
967, 68, 926, 26, 68, 1021, 125, 500, 125, 126,
131, 128, 121, 122, 136, 1172, 1012, 125, 68, 979,
136, 129, 1231, 97, 1233, 77, 99, 632, 667, 1238,
97, 1240, 587, 97, 997, 119, 641, 121, 122, 99,
124, 654, 644, 77, 646, 68, 96, 97, 103, 1113,
1114, 664, 587, 1262, 632, 932, 129, 129, 99, 711,
872, 635, 137, 641, 666, 711, 127, 641, 673, 129,
679, 127, 1035, 96, 97, 1143, 56, 655, 128, 140,
654, 679, 37, 38, 1201, 125, 655, 665, 129, 1157,
664, 143, 144, 145, 587, 673, 665, 1227, 77, 673,
622, 99, 125, 126, 695, 128, 15, 1050, 1051, 711,
679, 685, 634, 136, 129, 66, 25, 99, 77, 970,
971, 926, 1138, 129, 1001, 703, 704, 125, 780, 1145,
704, 129, 99, 1096, 780, 68, 1099, 1121, 1122, 1123,
1124, 992, 1019, 125, 747, 106, 979, 129, 644, 752,
646, 644, 125, 646, 138, 52, 711, 56, 125, 56,
860, 851, 129, 96, 97, 25, 688, 26, 119, 133,
121, 122, 785, 666, 66, 777, 711, 103, 780, 781,
99, 926, 141, 142, 143, 144, 145, 789, 790, 763,
764, 793, 782, 715, 125, 128, 770, 850, 125, 773,
2, 859, 4, 725, 26, 127, 125, 127, 786, 68,
129, 785, 851, 125, 1138, 1231, 1021, 786, 711, 1143,
68, 1145, 136, 1147, 1190, 780, 816, 817, 129, 121,
122, 822, 124, 823, 824, 125, 66, 96, 97, 1223,
125, 970, 971, 88, 89, 780, 68, 849, 96, 97,
852, 53, 54, 1196, 1197, 125, 830, 125, 832, 1202,
777, 1204, 1205, 992, 781, 52, 125, 126, 125, 128,
125, 793, 794, 26, 96, 97, 1021, 136, 1023, 52,
128, 82, 83, 1028, 777, 14, 15, 780, 781, 119,
859, 121, 122, 125, 124, 26, 10, 987, 872, 8,
68, 125, 763, 44, 126, 125, 128, 1231, 125, 1233,
1253, 1254, 1255, 1256, 1238, 68, 1240, 68, 920, 921,
44, 895, 129, 1266, 846, 927, 68, 125, 96, 97,
932, 132, 133, 1138, 856, 40, 41, 68, 1262, 13,
1145, 99, 916, 96, 97, 96, 97, 949, 987, 1002,
68, 953, 25, 849, 96, 97, 849, 125, 66, 852,
128, 99, 964, 965, 966, 96, 97, 125, 970, 971,
17, 129, 125, 126, 125, 128, 125, 128, 96, 97,
125, 1191, 1034, 136, 986, 136, 128, 125, 127, 979,
992, 129, 139, 726, 1046, 126, 139, 128, 130, 1001,
1145, 734, 1147, 125, 926, 136, 100, 2, 52, 4,
128, 119, 214, 121, 122, 77, 78, 1019, 1020, 1068,
942, 137, 68, 130, 920, 921, 1231, 920, 921, 150,
952, 927, 1034, 955, 927, 99, 1085, 15, 1183, 932,
125, 138, 26, 1128, 1046, 247, 968, 249, 103, 68,
96, 97, 52, 48, 49, 50, 51, 54, 53, 54,
262, 125, 264, 1065, 1038, 129, 1040, 64, 65, 125,
1072, 125, 67, 68, 1048, 125, 125, 96, 97, 1034,
1170, 1171, 128, 66, 68, 1137, 1231, 26, 1233, 100,
986, 1046, 127, 986, 68, 1240, 125, 52, 125, 1034,
95, 96, 125, 127, 99, 68, 1108, 52, 1001, 128,
125, 1046, 96, 97, 316, 125, 9, 1262, 130, 321,
1042, 26, 96, 97, 1020, 327, 1019, 1020, 330, 68,
1132, 1170, 1171, 96, 97, 1137, 119, 129, 121, 122,
342, 1034, 126, 345, 128, 68, 125, 1069, 125, 1151,
125, 127, 136, 1046, 128, 125, 125, 96, 97, 125,
125, 125, 136, 68, 56, 128, 1168, 1089, 1090, 1091,
1172, 130, 56, 96, 97, 125, 125, 1190, 125, 381,
68, 125, 1137, 125, 386, 1187, 388, 126, 125, 128,
26, 96, 97, 926, 1116, 125, 125, 136, 120, 125,
136, 1175, 1137, 136, 1206, 128, 1208, 247, 96, 97,
482, 1213, 1108, 1191, 478, 1108, 1190, 859, 1192, 214,
102, 126, 1191, 128, 219, 90, 673, 1201, 68, 431,
432, 136, 68, 764, 600, 1212, 1132, 125, 1212, 1132,
128, 718, 1244, 926, 1137, 77, 241, 1249, 243, 879,
773, 246, 247, 861, 249, 1178, 96, 97, 68, 771,
96, 97, 94, 95, 579, 1248, 964, 262, 992, 264,
1157, 1157, 1168, 68, 1248, 1168, 1192, 963, 68, 1038,
482, 66, 110, 103, 551, 125, 96, 97, 128, 734,
126, 1187, 128, 1143, 1187, 1138, 1069, -1, 130, 131,
136, 96, 97, 135, 600, 1227, 96, 97, -1, 141,
142, 143, 144, 145, -1, 125, 241, 1213, 128, -1,
1213, 316, 317, 318, 319, 320, 321, -1, 323, 324,
-1, -1, 327, 128, 119, 330, 121, 122, 128, 40,
41, 42, 43, 44, 269, -1, -1, 342, 273, -1,
345, 600, 347, 348, 349, 350, 351, -1, -1, 354,
355, 356, 357, 358, 359, 360, 361, 362, 363, 68,
-1, 366, 367, 368, 369, 370, 371, 372, 373, 374,
68, -1, -1, -1, 77, -1, 381, 68, -1, -1,
-1, 386, 387, 388, -1, -1, -1, 96, 97, -1,
-1, 94, 95, -1, -1, 1138, -1, 402, 96, 97,
1143, -1, 1145, 66, 1147, 96, 97, -1, -1, 2,
-1, 4, -1, 789, 790, -1, -1, 793, -1, 128,
-1, -1, -1, 16, 17, -1, 431, 432, 131, -1,
128, -1, 644, -1, 646, 440, -1, 128, 141, 142,
143, 144, 145, 448, 449, 59, 60, 61, 62, 431,
432, 456, 54, 55, 666, 57, 119, -1, 121, 122,
53, 54, 64, 65, 57, 470, 448, 449, -1, -1,
-1, 476, -1, -1, -1, 68, 52, 482, 54, 55,
56, 57, -1, 789, 790, -1, -1, 793, 1231, -1,
1233, -1, -1, 86, 476, 1238, 52, 1240, 54, 55,
56, 57, 95, 96, -1, -1, 99, 100, 101, 102,
-1, 104, -1, -1, -1, 77, -1, 452, -1, 1262,
-1, -1, 457, -1, -1, 460, -1, -1, 463, -1,
789, 790, 94, 95, 793, -1, 52, -1, 54, 55,
56, 57, 58, -1, 479, 101, -1, -1, 553, 484,
52, 107, 54, 55, 56, 57, 58, -1, -1, -1,
-1, 77, -1, -1, 569, 777, -1, -1, 573, 781,
782, -1, -1, 949, -1, 77, -1, 953, -1, 141,
142, 143, 144, 145, -1, 101, -1, -1, 964, 965,
966, 107, 108, 109, 970, 971, -1, -1, 52, 101,
54, 55, 56, 57, 816, 817, 108, 109, -1, -1,
-1, 823, 824, -1, -1, 131, 992, -1, -1, -1,
136, 214, -1, -1, -1, -1, -1, 143, -1, 131,
-1, 566, 567, -1, -1, -1, -1, 849, -1, 644,
852, 646, 235, 949, 237, 238, -1, 953, 241, -1,
243, 586, -1, -1, 247, -1, 249, -1, 964, 965,
966, 666, 667, -1, 970, 971, -1, -1, -1, 262,
52, 264, 54, 55, 56, 57, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 992, -1, -1, 1065,
949, 284, -1, -1, 953, -1, 1072, -1, -1, -1,
-1, -1, -1, -1, -1, 964, 965, 966, 920, 921,
-1, 970, 971, -1, -1, 927, -1, -1, -1, 101,
932, -1, -1, 316, 317, 318, 319, 320, 321, 322,
323, 324, -1, 992, 327, -1, -1, 330, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 340, -1, 342,
343, -1, 345, -1, -1, -1, -1, -1, -1, 1065,
-1, -1, -1, -1, -1, 700, 1072, 979, -1, -1,
-1, -1, 777, -1, 986, 1151, 781, 782, 783, -1,
-1, -1, 375, -1, -1, -1, 379, 722, 381, 1001,
-1, -1, -1, 386, 387, 388, 1172, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 1065, 1019, 1020, 402,
-1, 816, 817, 1072, -1, -1, -1, -1, 823, 824,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1206, -1, 1208, -1, 816, 817, -1, -1, 431, 432,
-1, 823, 824, -1, 849, 1151, 851, 852, -1, -1,
-1, -1, -1, 446, -1, -1, -1, -1, -1, -1,
-1, 866, 867, -1, 869, 870, 1172, -1, 1244, -1,
-1, -1, -1, 1249, -1, -1, -1, 470, 574, -1,
-1, -1, -1, -1, 866, 867, -1, 869, 870, 482,
-1, -1, 1151, -1, -1, -1, 1108, -1, -1, -1,
1206, -1, 1208, -1, -1, -1, -1, 500, 913, 502,
-1, -1, -1, 1172, -1, 920, 921, -1, -1, 924,
1132, -1, 927, 858, -1, -1, -1, 932, -1, -1,
-1, -1, -1, -1, -1, -1, 871, -1, 1244, -1,
-1, -1, 877, 1249, -1, -1, 642, 1206, -1, 1208,
-1, 647, -1, 649, -1, -1, 1168, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 972, -1, -1,
-1, -1, -1, -1, 979, 1187, -1, 912, -1, -1,
-1, 986, 987, -1, -1, 1244, -1, 600, -1, -1,
1249, -1, -1, -1, 587, -1, 1001, 979, -1, -1,
-1, 1213, -1, -1, 2, 1010, 4, -1, -1, -1,
-1, -1, -1, -1, 1019, 1020, -1, -1, 16, 17,
-1, -1, -1, -1, -1, -1, -1, -1, 1010, -1,
-1, -1, -1, 52, 969, 54, 55, 56, 57, 58,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 644, -1, 646, -1, 53, 54, -1, 77, -1,
-1, 654, -1, -1, -1, -1, -1, -1, -1, -1,
68, 664, 91, 666, 667, -1, 772, -1, 774, -1,
-1, -1, 101, -1, -1, -1, -1, -1, 107, 108,
109, -1, -1, -1, -1, -1, -1, 95, 96, -1,
-1, 99, -1, 1108, -1, -1, 104, -1, -1, 600,
-1, -1, 131, -1, -1, -1, -1, -1, 711, -1,
-1, -1, -1, 1058, 143, -1, -1, 1132, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 840, -1, -1, 843, -1, -1,
-1, 1086, 1087, 1088, -1, -1, -1, -1, -1, -1,
-1, 857, -1, 1168, -1, 1170, 1171, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 789, 790, -1, -1,
793, -1, 1187, -1, 777, -1, -1, 780, 781, 782,
-1, -1, 785, -1, -1, -1, -1, 52, -1, 54,
55, 56, 57, 58, -1, -1, -1, -1, 1213, -1,
-1, -1, -1, -1, -1, -1, 214, -1, -1, -1,
-1, -1, 77, 816, 817, -1, -1, -1, -1, -1,
823, 824, -1, -1, -1, -1, -1, 235, -1, 237,
238, -1, -1, 241, -1, 243, 101, -1, -1, 247,
-1, 249, 107, 108, 109, -1, 849, -1, 851, 852,
-1, -1, -1, -1, 262, -1, 264, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 131, -1, -1, -1,
-1, -1, -1, -1, -1, 140, -1, -1, 143, -1,
-1, -1, 988, -1, -1, 991, -1, 993, 789, 790,
-1, -1, 793, -1, 1000, -1, -1, 1003, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 316, 317,
318, 319, 320, 321, -1, 323, 324, 920, 921, 327,
-1, 600, 330, -1, 927, -1, 949, -1, -1, 932,
953, -1, 340, -1, 342, -1, -1, 345, -1, -1,
-1, 964, 965, 966, -1, -1, 600, 970, 971, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 992,
-1, 379, -1, 381, -1, -1, 979, -1, 386, 387,
388, -1, -1, 986, 987, -1, 600, -1, -1, -1,
-1, -1, -1, -1, 402, -1, -1, -1, 1001, -1,
-1, -1, -1, -1, 1110, -1, 2, -1, 4, -1,
-1, -1, -1, 1119, -1, -1, 1019, 1020, -1, -1,
16, 17, -1, 431, 432, -1, -1, -1, -1, -1,
52, 1034, 54, 55, 56, 57, 58, -1, 446, -1,
-1, -1, 1065, 1046, -1, -1, -1, -1, 949, 1072,
-1, -1, 953, -1, -1, 77, -1, 53, 54, -1,
-1, -1, 470, 964, 965, 966, -1, -1, -1, 970,
971, -1, 68, -1, 482, -1, -1, -1, -1, 101,
-1, -1, -1, -1, -1, 107, 108, 109, -1, -1,
-1, 992, -1, -1, 502, -1, -1, -1, -1, 95,
96, -1, -1, 99, -1, 1108, -1, -1, 104, 131,
789, 790, -1, -1, 793, 33, 34, 35, 36, -1,
-1, 143, -1, -1, -1, -1, -1, -1, 1151, 1132,
-1, 49, 50, 51, 1137, 789, 790, -1, -1, 793,
-1, 59, 60, 61, 62, 63, -1, -1, -1, 1172,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 1065, 1168, -1, 1170, 1171, -1,
-1, 1072, -1, -1, -1, 789, 790, -1, -1, 793,
-1, -1, -1, 1206, 1187, 1208, -1, 1190, -1, -1,
-1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1213, -1, -1, -1, -1, -1, -1, -1, 214, -1,
-1, 1244, -1, -1, -1, -1, 1249, -1, -1, -1,
-1, -1, -1, 151, -1, -1, 644, -1, 646, 235,
-1, 237, 238, -1, -1, 241, 654, 243, -1, -1,
1151, 247, -1, 249, -1, -1, 664, -1, 666, 667,
-1, -1, -1, 2, -1, 4, 262, -1, 264, -1,
949, 1172, -1, -1, 953, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 964, 965, 966, -1, -1,
-1, 970, 971, -1, -1, 949, -1, -1, -1, 953,
-1, -1, -1, -1, -1, 1206, -1, 1208, -1, -1,
964, 965, 966, 992, 53, 54, 970, 971, 57, -1,
316, 317, 318, 319, 320, 321, -1, 323, 324, -1,
-1, 327, -1, -1, 330, 949, -1, -1, 992, 953,
-1, -1, -1, 1244, 340, 600, 342, 86, 1249, 345,
964, 965, 966, -1, -1, -1, 970, 971, -1, -1,
-1, 100, 101, 102, -1, -1, -1, -1, -1, 777,
-1, -1, -1, 781, 782, -1, -1, 785, 992, -1,
-1, -1, -1, 379, -1, 381, 1065, -1, -1, -1,
386, 387, 388, 1072, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 402, -1, 816, 817,
-1, 1065, -1, -1, -1, 823, 824, -1, 1072, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 2, -1,
4, -1, -1, -1, -1, 431, 432, -1, -1, -1,
-1, 849, -1, 851, 852, -1, -1, -1, -1, -1,
446, 1065, -1, -1, -1, -1, -1, -1, 1072, -1,
-1, -1, -1, 16, 17, -1, -1, -1, -1, -1,
-1, -1, 1151, -1, 470, 214, -1, -1, -1, 53,
54, -1, -1, -1, -1, -1, 482, -1, -1, -1,
-1, -1, -1, 1172, -1, -1, -1, 1151, -1, -1,
-1, -1, 55, 56, -1, -1, 502, -1, 247, -1,
249, -1, 920, 921, -1, -1, -1, -1, 1172, 927,
-1, -1, -1, 262, 932, 264, 100, 1206, -1, 1208,
-1, -1, -1, -1, 789, 790, -1, 1151, 793, -1,
-1, -1, -1, -1, -1, 284, -1, -1, -1, -1,
-1, 104, 1206, -1, 1208, -1, -1, -1, 1172, -1,
-1, -1, -1, -1, -1, 1244, -1, -1, -1, -1,
1249, 979, -1, -1, -1, -1, -1, 316, 986, 987,
-1, -1, 321, 322, -1, -1, -1, -1, 327, -1,
1244, 330, 1206, 1001, 1208, 1249, -1, -1, -1, -1,
-1, -1, -1, 342, 343, -1, 345, -1, -1, -1,
-1, 1019, 1020, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1244, -1, -1, -1, -1, 1249, 375, -1, -1, -1,
214, -1, 381, -1, -1, -1, -1, 386, 644, 388,
646, -1, -1, -1, -1, -1, -1, -1, 654, 212,
-1, -1, 215, 216, 217, -1, -1, -1, 664, -1,
666, 667, -1, 247, -1, 249, -1, -1, -1, -1,
-1, -1, 235, -1, 237, 238, -1, -1, 262, -1,
264, -1, 431, 432, 949, -1, -1, -1, 953, -1,
1108, -1, -1, -1, -1, -1, -1, -1, -1, 964,
965, 966, -1, -1, -1, 970, 971, -1, -1, -1,
-1, -1, -1, -1, 1132, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 992, -1, -1,
-1, -1, 316, 482, -1, -1, -1, 321, 322, -1,
-1, -1, -1, 327, -1, -1, 330, -1, -1, -1,
1168, 500, 1170, 1171, -1, -1, -1, -1, 342, -1,
-1, 345, -1, -1, -1, -1, -1, -1, -1, 1187,
-1, 777, 1190, -1, -1, 781, 782, 340, -1, 785,
-1, -1, 345, -1, -1, -1, -1, -1, -1, -1,
-1, 375, -1, -1, -1, 1213, -1, 381, -1, -1,
1065, -1, 386, -1, 388, -1, -1, 1072, -1, -1,
816, 817, -1, -1, -1, -1, 379, 823, 824, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 587, -1,
-1, -1, -1, 849, -1, 851, 852, 431, 432, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 441, 442,
-1, -1, -1, 446, -1, -1, 1151, 450, -1, -1,
-1, -1, -1, -1, -1, 644, -1, 646, 482, -1,
-1, -1, -1, -1, -1, -1, -1, 1172, -1, -1,
-1, -1, -1, -1, 920, 921, -1, 666, -1, -1,
-1, 927, -1, -1, 487, -1, 932, 490, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 502,
-1, 1206, -1, 1208, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 711, -1, 527, -1, -1, -1, -1, -1,
-1, -1, -1, 979, -1, -1, -1, -1, -1, 1244,
986, 987, -1, -1, 1249, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 1001, 745, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, -1, -1, 1019, 1020, -1, -1, 580, 8, 9,
10, -1, -1, 13, 14, 15, -1, 17, 777, -1,
-1, 780, 781, 782, -1, 25, 26, 27, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
644, -1, 646, -1, -1, -1, -1, 816, 817, -1,
-1, -1, -1, -1, 823, 824, -1, -1, 68, -1,
-1, -1, 666, -1, -1, -1, -1, -1, -1, -1,
-1, 654, -1, -1, -1, -1, -1, -1, -1, -1,
849, 664, 1108, 852, -1, -1, 96, 97, -1, -1,
-1, -1, -1, 103, -1, -1, -1, 680, -1, 682,
-1, -1, -1, -1, -1, -1, 1132, -1, -1, -1,
120, -1, 695, -1, 697, -1, 126, 127, -1, -1,
-1, -1, -1, -1, -1, -1, 136, -1, 138, -1,
140, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 1168, -1, 1170, 1171, -1, 730, -1, -1,
-1, 920, 921, -1, -1, -1, -1, -1, 927, -1,
-1, 1187, -1, 932, 1190, -1, -1, -1, -1, -1,
-1, -1, -1, 777, -1, -1, -1, 781, 782, -1,
763, -1, -1, -1, -1, -1, -1, 1213, -1, -1,
-1, -1, -1, 776, -1, -1, -1, -1, -1, -1,
-1, -1, 785, -1, -1, -1, -1, -1, -1, -1,
979, -1, 816, 817, -1, -1, -1, 986, -1, 823,
824, -1, -1, -1, -1, -1, 25, -1, -1, -1,
-1, -1, 1001, -1, -1, -1, -1, -1, -1, 822,
-1, -1, -1, -1, -1, 849, -1, -1, 852, -1,
1019, 1020, -1, -1, -1, -1, -1, -1, -1, 842,
-1, -1, -1, -1, -1, 1034, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 1046, 77, 78,
79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
89, -1, -1, -1, -1, 94, 95, -1, -1, -1,
-1, 100, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 920, 921, -1, -1,
-1, -1, -1, 927, -1, -1, -1, -1, 932, -1,
-1, 130, 131, 132, 133, -1, 135, -1, -1, 1108,
-1, -1, 141, 142, 143, 144, 145, -1, -1, -1,
149, 934, -1, -1, -1, 77, 78, 79, 80, 81,
82, 83, 84, 1132, 86, 87, -1, -1, 1137, -1,
-1, -1, 94, 95, -1, 979, -1, -1, -1, -1,
-1, -1, 986, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 1001, -1, 1168,
-1, -1, -1, -1, -1, -1, -1, -1, 130, 131,
132, 133, 995, 135, -1, 1019, 1020, -1, 1187, 141,
142, 143, 144, 145, -1, -1, -1, -1, -1, 1012,
1034, 0, 1, -1, 3, 4, 5, 6, 7, -1,
-1, -1, 11, 12, 1213, -1, -1, 16, -1, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
-1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
-1, -1, -1, -1, 1108, -1, 75, 76, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 90, 91, -1, 1107, -1, -1, -1, 1132, 98,
-1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
-1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 1168, -1, -1, -1, -1, 138,
-1, 140, -1, -1, -1, -1, -1, 146, 147, -1,
-1, -1, 151, 1187, -1, -1, -1, -1, -1, -1,
1173, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 1190, 1, 1213,
3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
-1, -1, 15, 16, -1, 18, 19, 20, 21, 22,
23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
-1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
63, 64, 65, -1, -1, 77, 78, 79, 80, 81,
82, 83, 75, 76, 86, 87, -1, -1, -1, -1,
-1, -1, 94, 95, -1, -1, -1, 90, 91, -1,
-1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
-1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
113, 114, 115, 116, 117, 118, -1, -1, 130, 131,
132, 133, -1, 135, -1, -1, -1, -1, -1, 141,
142, 143, 144, 145, -1, 138, 1, 140, 3, 4,
5, 6, 7, 146, 147, 10, 11, 12, 151, 14,
15, 16, -1, 18, 19, 20, 21, 22, 23, 24,
-1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
65, -1, -1, 77, 78, 79, 80, 81, 82, 83,
75, 76, 86, 87, -1, -1, -1, -1, -1, -1,
94, 95, -1, -1, -1, 90, 91, -1, -1, -1,
-1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, -1, 130, 131, 132, 133,
-1, 135, -1, -1, -1, -1, -1, 141, 142, 143,
144, 145, -1, 138, 1, 140, 3, 4, 5, 6,
7, 146, 147, 10, 11, 12, 151, -1, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, -1, -1,
-1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
-1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
-1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 138, 1, 140, 3, 4, 5, 6, 7, 146,
147, 10, 11, 12, 151, -1, 15, 16, -1, 18,
19, 20, 21, 22, 23, 24, 25, -1, -1, -1,
-1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
-1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
-1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
1, 140, 3, 4, 5, 6, 7, 146, 147, 10,
11, 12, 151, -1, 15, 16, -1, 18, 19, 20,
21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
-1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 138, -1, 140,
-1, -1, -1, -1, -1, 146, 147, -1, -1, 1,
151, 3, 4, 5, 6, 7, -1, 9, 10, 11,
12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
-1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
-1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 138, 1, 140, 3,
4, 5, 6, 7, 146, 147, -1, 11, 12, 151,
-1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
-1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
-1, -1, -1, -1, 98, -1, -1, 101, 102, 103,
104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 138, 1, 140, 3, 4, 5,
6, 7, 146, 147, -1, 11, 12, 151, -1, -1,
16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
-1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
-1, -1, 98, -1, -1, 101, 102, 103, 104, 105,
-1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 138, 1, 140, 3, 4, 5, 6, 7,
146, 147, -1, 11, 12, 151, -1, -1, 16, -1,
18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
-1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
-1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
-1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
-1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
118, -1, -1, -1, -1, -1, -1, -1, -1, 127,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
138, 1, 140, 3, 4, 5, 6, 7, 146, 147,
-1, 11, 12, 151, -1, -1, 16, -1, 18, 19,
20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
-1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
-1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
-1, -1, -1, -1, -1, -1, -1, 127, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 138, 1,
140, 3, 4, 5, 6, 7, 146, 147, 10, 11,
12, 151, -1, -1, 16, -1, 18, 19, 20, 21,
22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
-1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
-1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 138, 1, 140, 3,
4, 5, 6, 7, 146, 147, -1, 11, 12, 151,
-1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
-1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
-1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
114, 115, 116, 117, 118, -1, 120, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 0, -1, -1, 138, -1, 140, -1, -1, 8,
9, 10, 146, 147, 13, 14, 15, 151, 17, -1,
-1, -1, -1, -1, -1, -1, 25, 26, 27, 28,
29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
-1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
-1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
99, 100, -1, -1, 103, -1, -1, 106, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 120, -1, -1, 123, -1, 125, 126, 127, 128,
129, 130, 131, 132, 133, -1, 135, -1, 137, 138,
-1, 140, 141, 142, 143, 144, 145, 0, -1, -1,
149, 150, -1, -1, -1, 8, 9, 10, -1, -1,
13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
-1, -1, 25, -1, 27, 28, 29, -1, -1, -1,
-1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 68, -1, -1, -1, -1,
-1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
-1, 94, 95, 96, 97, -1, 99, 100, -1, -1,
103, -1, -1, 106, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
123, -1, 125, -1, 127, 128, 129, 130, 131, 132,
133, -1, 135, -1, 137, 138, -1, 140, 141, 142,
143, 144, 145, 0, -1, -1, 149, 150, -1, -1,
-1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
97, -1, 99, 100, -1, -1, 103, -1, -1, 106,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 120, -1, -1, 123, -1, 125, -1,
127, 128, 129, 130, 131, 132, 133, -1, 135, -1,
137, 138, -1, 140, 141, 142, 143, 144, 145, 0,
-1, -1, 149, 150, -1, -1, -1, 8, 9, 10,
-1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
-1, -1, -1, -1, 25, 26, 27, 28, 29, -1,
-1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 68, -1, -1,
-1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
-1, -1, -1, 94, 95, 96, 97, -1, -1, 100,
-1, -1, 103, -1, -1, 106, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
-1, -1, 123, -1, 125, 126, 127, 128, -1, 130,
131, 132, 133, -1, 135, -1, 137, 138, -1, 140,
141, 142, 143, 144, 145, 0, -1, -1, 149, 150,
-1, -1, -1, 8, 9, 10, -1, -1, 13, 14,
15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
25, 26, 27, 28, 29, -1, -1, -1, -1, -1,
-1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 68, -1, -1, -1, -1, -1, -1,
-1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
95, 96, 97, -1, -1, 100, -1, -1, 103, -1,
-1, 106, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 120, -1, -1, 123, -1,
125, 126, 127, 128, -1, 130, 131, 132, 133, -1,
135, -1, 137, 138, -1, 140, 141, 142, 143, 144,
145, 0, -1, -1, 149, 150, -1, -1, -1, 8,
9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
-1, -1, -1, -1, -1, -1, 25, -1, 27, 28,
29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
-1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
-1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
99, 100, -1, -1, 103, -1, -1, 106, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 120, -1, -1, 123, -1, 125, -1, 127, 128,
129, 130, 131, 132, 133, -1, 135, -1, 137, 138,
-1, 140, 141, 142, 143, 144, 145, 0, -1, -1,
149, 150, -1, -1, -1, 8, 9, 10, -1, -1,
13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
-1, -1, 25, -1, 27, 28, 29, -1, -1, -1,
-1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 68, -1, -1, -1, -1,
-1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
-1, 94, 95, 96, 97, -1, -1, 100, -1, -1,
103, -1, -1, 106, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
123, -1, 125, -1, 127, 128, -1, 130, 131, 132,
133, -1, 135, -1, 137, 138, -1, 140, 141, 142,
143, 144, 145, 0, -1, -1, 149, 150, -1, -1,
-1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
17, -1, -1, -1, -1, -1, -1, -1, 25, 26,
27, 28, -1, -1, -1, -1, -1, -1, -1, -1,
37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
97, -1, -1, 100, -1, -1, 103, -1, -1, 106,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 120, -1, -1, -1, -1, 125, 126,
127, 128, -1, 130, 131, 132, 133, -1, 135, 136,
137, 138, -1, 140, 141, 142, 143, 144, 145, 0,
-1, -1, 149, -1, -1, -1, -1, 8, 9, 10,
-1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
-1, -1, -1, -1, 25, 26, 27, 28, -1, -1,
-1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 68, -1, -1,
-1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
-1, -1, -1, 94, 95, 96, 97, -1, -1, 100,
-1, -1, 103, -1, -1, 106, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
-1, -1, -1, -1, 125, 126, 127, 128, -1, 130,
131, 132, 133, -1, 135, 136, 137, 138, -1, 140,
141, 142, 143, 144, 145, 0, -1, -1, 149, -1,
-1, -1, -1, 8, 9, 10, -1, -1, 13, 14,
15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
25, -1, 27, 28, -1, -1, -1, -1, -1, -1,
-1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 68, -1, -1, -1, -1, -1, -1,
-1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
95, 96, 97, -1, -1, 100, -1, -1, 103, -1,
-1, 106, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 120, -1, -1, -1, -1,
125, -1, 127, 128, -1, 130, 131, 132, 133, -1,
135, 136, 137, 138, -1, 140, 141, 142, 143, 144,
145, 0, -1, -1, 149, -1, -1, -1, -1, 8,
9, 10, -1, -1, -1, 14, 15, -1, 17, -1,
-1, -1, -1, -1, -1, -1, 25, 26, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
-1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
-1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
99, 100, -1, -1, 103, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 120, -1, -1, -1, -1, 125, 126, 127, 128,
129, 130, 131, 132, 133, -1, 135, -1, -1, 138,
-1, 140, 141, 142, 143, 144, 145, 0, -1, -1,
149, -1, -1, -1, -1, 8, 9, 10, -1, -1,
-1, 14, 15, -1, 17, -1, -1, -1, -1, -1,
-1, -1, 25, 26, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 68, -1, -1, -1, -1,
-1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
-1, 94, 95, 96, 97, -1, 99, 100, -1, -1,
103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
-1, -1, 125, 126, 127, 128, 129, 130, 131, 132,
133, -1, 135, -1, -1, 138, -1, 140, 141, 142,
143, 144, 145, 0, -1, -1, 149, -1, -1, -1,
-1, 8, 9, 10, -1, -1, -1, 14, 15, -1,
17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
97, -1, 99, 100, -1, -1, 103, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 120, -1, -1, -1, -1, 125, -1,
127, 128, 129, 130, 131, 132, 133, -1, 135, -1,
-1, 138, -1, 140, 141, 142, 143, 144, 145, 0,
-1, -1, 149, -1, -1, -1, -1, 8, 9, 10,
-1, -1, -1, 14, 15, -1, 17, -1, -1, -1,
-1, -1, -1, -1, 25, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 68, -1, -1,
-1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
-1, -1, -1, 94, 95, 96, 97, -1, 99, 100,
-1, -1, 103, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
-1, -1, -1, -1, 125, -1, 127, 128, 129, 130,
131, 132, 133, -1, 135, -1, -1, 138, -1, 140,
141, 142, 143, 144, 145, -1, -1, -1, 149, 3,
4, 5, 6, 7, -1, -1, -1, 11, 12, -1,
-1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
-1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
-1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 138, -1, 3, 4, 5, 6,
7, -1, 146, 147, 11, 12, -1, 151, -1, 16,
-1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
-1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
-1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
-1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 138, -1, 3, 4, 5, 6, 7, -1, 146,
147, 11, 12, -1, 151, -1, 16, -1, 18, 19,
20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
-1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
-1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3, 4, 5, -1, 7, -1, 146, 147, 11, 12,
-1, 151, -1, 16, -1, 18, 19, 20, 21, 22,
23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
-1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
-1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
-1, 104, 105, -1, 107, 108, 109, 110, 111, 112,
113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 140, 3, 4,
5, -1, 7, 146, 147, -1, 11, 12, 151, -1,
-1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
-1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
-1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
-1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
105, -1, 107, 108, 109, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 3, 4, 5, 6, 7,
-1, 146, 147, 11, 12, -1, 151, -1, 16, -1,
18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
-1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
-1, 39, -1, -1, -1, -1, -1, 45, 46, -1,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
-1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
-1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 3, 4, 5, -1, 7, -1, 146, 147,
11, 12, -1, 151, -1, 16, -1, 18, 19, 20,
21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
-1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
101, 102, -1, 104, 105, -1, 107, 108, 109, 110,
111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4, 5, -1, 7, -1, 146, 147, 11, 12, -1,
151, -1, 16, -1, 18, 19, 20, 21, 22, 23,
24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
-1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
-1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
104, 105, -1, 107, 108, 109, 110, 111, 112, 113,
114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
7, -1, 146, 147, 11, 12, -1, 151, -1, 16,
-1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
-1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
-1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
-1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
-1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 3, 4, 5, -1, 7, -1, 146,
147, 11, 12, -1, 151, -1, 16, -1, 18, 19,
20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
-1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
-1, 101, 102, -1, 104, 105, -1, 107, 108, -1,
110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3, 4, 5, -1, 7, -1, 146, 147, 11, 12,
-1, 151, -1, 16, -1, 18, 19, 20, 21, 22,
23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
-1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
-1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
-1, 104, 105, -1, -1, 108, 109, 110, 111, 112,
113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
-1, 7, -1, 146, 147, 11, 12, -1, 151, -1,
16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
-1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
-1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
-1, 107, 108, -1, 110, 111, 112, 113, 114, 115,
116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
146, 147, 11, 12, -1, 151, -1, 16, -1, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
-1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
-1, -1, 101, 102, -1, 104, 105, -1, -1, 108,
-1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 3, 4, 5, -1, 7, -1, 146, 147, 11,
12, -1, 151, -1, 16, -1, 18, 19, 20, 21,
22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
-1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
-1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 138, -1, 140, 3,
4, 5, -1, 7, 146, 147, -1, 11, 12, 151,
-1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
-1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
-1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 140, 3, 4, 5,
-1, 7, 146, 147, -1, 11, 12, 151, -1, -1,
16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
-1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
-1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
-1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
136, -1, -1, -1, 3, 4, 5, -1, 7, -1,
146, 147, 11, 12, -1, 151, -1, 16, -1, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
-1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
-1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
-1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 3, 4, 5, -1, 7, -1, 146, 147, 11,
12, -1, 151, -1, 16, -1, 18, 19, 20, 21,
22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
-1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
-1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5, -1, 7, -1, 146, 147, 11, 12, -1, 151,
-1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
-1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
-1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
-1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
-1, 146, 147, 11, 12, -1, 151, -1, 16, -1,
18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
-1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
-1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
-1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
-1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
-1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 3, 4, 5, -1, 7, -1, 146, 147,
11, 12, -1, 151, -1, 16, -1, 18, 19, 20,
21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
-1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4, 5, -1, 7, -1, 146, 147, 11, 12, -1,
151, -1, 16, -1, 18, 19, 20, 21, 22, 23,
24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
-1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
-1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
7, -1, 146, 147, 11, 12, -1, 151, -1, 16,
-1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
-1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
-1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
-1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
-1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
-1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 3, 4, 5, -1, 7, -1, 146,
147, 11, 12, -1, 151, -1, 16, -1, 18, 19,
20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
-1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
-1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3, 4, 5, -1, 7, -1, 146, 147, 11, 12,
-1, 151, -1, 16, -1, 18, 19, 20, 21, 22,
23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
-1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
-1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
-1, -1, 125, 3, 4, 5, -1, 7, -1, -1,
-1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
20, 21, 22, 23, 24, -1, -1, -1, 151, -1,
30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
-1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 98, -1,
-1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
-1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
-1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
-1, 151, 30, 31, 32, 33, 34, 35, 36, -1,
-1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
-1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
-1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
-1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
118, -1, -1, -1, -1, -1, -1, 3, 4, 5,
-1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
-1, -1, -1, 151, 30, 31, 32, 33, 34, 35,
36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 94, -1,
-1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
-1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
116, 117, 118, -1, -1, -1, -1, -1, -1, 3,
4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
-1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
24, -1, -1, -1, -1, 151, 30, 31, 32, 33,
34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
-1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
-1, 125, 3, 4, 5, -1, 7, -1, -1, -1,
11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
21, 22, 23, 24, -1, -1, -1, 151, -1, 30,
31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
-1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 98, -1, -1,
101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
-1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
-1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
151, 30, 31, 32, 33, 34, 35, 36, -1, -1,
39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 98,
-1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
-1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
-1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
-1, -1, 151, 30, 31, 32, 33, 34, 35, 36,
-1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
-1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
-1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
117, 118, -1, -1, -1, -1, -1, -1, 3, 4,
5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
-1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
-1, -1, -1, -1, 151, 30, 31, 32, 33, 34,
35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
-1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, -1, -1, 151, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
-1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 75, 76, 77, 78, 79, 80, 81, 82,
83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 130, 131, 132,
133, 134, 135, 136, -1, -1, -1, -1, 141, 142,
143, 144, 145, 146, 147, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
-1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 75, 76, 77,
78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
-1, -1, -1, -1, 92, 93, 94, 95, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 130, 131, 132, 133, 134, 135, -1, -1,
-1, -1, -1, 141, 142, 143, 144, 145, 146, 147,
3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
-1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, -1, 56, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 75, 76, 77, 78, 79, 80, 81, 82,
83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 107, 108, -1, -1, 111, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 130, 131, 132,
133, 134, 135, -1, -1, -1, -1, -1, 141, 142,
143, 144, 145, 146, 147, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
-1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 75, 76, 77,
78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
-1, -1, -1, -1, 92, 93, 94, 95, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
108, -1, -1, 111, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 130, 131, 132, 133, 134, 135, -1, -1,
-1, -1, -1, 141, 142, 143, 144, 145, 146, 147,
3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
-1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
53, -1, -1, 56, 25, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 75, 76, 77, 78, 79, 80, 81, 82,
83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 107, 108, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
-1, -1, -1, 94, 95, -1, -1, 130, 131, 132,
133, 134, 135, -1, -1, -1, -1, -1, 141, 142,
143, 144, 145, 146, 147, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 130,
131, 132, 133, -1, 135, 33, 34, 35, 36, -1,
141, 142, 143, 144, 145, -1, -1, -1, 149, -1,
-1, 49, 50, 51, 52, -1, -1, -1, 56, -1,
58, 59, 60, 61, 62, 63, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 77,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
98, -1, -1, 101, -1, -1, 104, 105, -1, 107,
108, -1, 110, 111, 112, 113, 114, 115, 116, 117,
118, -1, 33, 34, 35, 36, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 135, 49, 50,
51, 52, -1, -1, -1, 56, -1, -1, 59, 60,
61, 62, 63, 151, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
101, -1, -1, 104, 105, -1, 107, -1, -1, 110,
111, 112, 113, 114, 115, 116, 117, 118, -1, 33,
34, 35, 36, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 135, 49, 50, 51, 52, 140,
-1, -1, 56, -1, -1, 59, 60, 61, 62, 63,
151, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
-1, -1, -1, -1, 98, -1, -1, 101, -1, -1,
104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
114, 115, 116, 117, 118, -1, 33, 34, 35, 36,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 135, 49, 50, 51, 52, -1, -1, -1, 56,
-1, -1, 59, 60, 61, 62, 63, 151, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
-1, 98, -1, -1, 101, -1, -1, 104, 105, -1,
107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
117, 118, -1, 33, 34, 35, 36, -1, -1, -1,
-1, -1, 44, -1, -1, -1, -1, -1, 135, 49,
50, 51, 52, -1, -1, -1, 56, -1, -1, 59,
60, 61, 62, 63, 151, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
90, 91, 94, 95, -1, -1, -1, -1, 98, -1,
-1, 101, -1, -1, 104, 105, -1, -1, -1, -1,
110, 111, 112, 113, 114, 115, 116, 117, 118, 44,
-1, -1, -1, 125, -1, -1, -1, -1, 130, 131,
132, 133, -1, 135, -1, 135, -1, -1, -1, 141,
142, 143, 144, 145, 44, -1, -1, 149, -1, -1,
-1, 151, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
95, -1, -1, -1, -1, -1, -1, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
-1, -1, -1, -1, 94, 95, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 130, 131, 132, 133, -1,
135, -1, -1, -1, -1, -1, 141, 142, 143, 144,
145, 44, -1, -1, 149, -1, -1, -1, -1, -1,
130, 131, 132, 133, -1, 135, -1, -1, -1, -1,
-1, 141, 142, 143, 144, 145, -1, -1, -1, 149,
-1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
-1, 94, 95, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 130, 131, 132,
133, -1, 135, 52, 53, -1, -1, 56, 141, 142,
143, 144, 145, -1, -1, -1, 149, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 75, 76, 77, 78,
79, 80, 81, 82, 83, -1, -1, 86, 87, -1,
-1, -1, -1, 92, 93, 94, 95, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 52, 53, -1, -1,
56, 130, 131, 132, 133, 134, 135, 136, -1, -1,
-1, -1, 141, 142, 143, 144, 145, 146, 147, 75,
76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 52,
53, -1, -1, 56, 130, 131, 132, 133, 134, 135,
136, -1, -1, -1, -1, 141, 142, 143, 144, 145,
146, 147, 75, 76, 77, 78, 79, 80, 81, 82,
83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 52, 53, -1, -1, 56, 130, 131, 132,
133, 134, 135, 136, -1, -1, -1, -1, 141, 142,
143, 144, 145, 146, 147, 75, 76, 77, 78, 79,
80, 81, 82, 83, -1, -1, 86, 87, -1, -1,
-1, -1, 92, 93, 94, 95, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
130, 131, 132, 133, 134, 135, 136, -1, -1, -1,
-1, 141, 142, 143, 144, 145, 146, 147, 75, 76,
77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
87, -1, -1, -1, -1, 92, 93, 94, 95, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 52, 53,
-1, -1, 56, 130, 131, 132, 133, 134, 135, 136,
-1, -1, -1, -1, 141, 142, 143, 144, 145, 146,
147, 75, 76, 77, 78, 79, 80, 81, 82, 83,
-1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 52, 53, -1, -1, 56, 130, 131, 132, 133,
134, 135, 136, -1, -1, -1, -1, 141, 142, 143,
144, 145, 146, 147, 75, 76, 77, 78, 79, 80,
81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
-1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 52, 53, -1, -1, 56, 130,
131, 132, 133, 134, 135, 136, -1, -1, -1, -1,
141, 142, 143, 144, 145, 146, 147, 75, 76, 77,
78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
-1, -1, -1, -1, 92, 93, 94, 95, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 52, 53, -1,
-1, 56, 130, 131, 132, 133, 134, 135, 136, -1,
-1, -1, -1, 141, 142, 143, 144, 145, 146, 147,
75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
-1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
52, 53, -1, -1, 56, 130, 131, 132, 133, 134,
135, 136, -1, -1, -1, -1, 141, 142, 143, 144,
145, 146, 147, 75, 76, 77, 78, 79, 80, 81,
82, 83, -1, -1, 86, 87, -1, -1, -1, -1,
92, 93, 94, 95, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 52, 53, -1, -1, 56, 130, 131,
132, 133, 134, 135, 136, -1, -1, -1, -1, 141,
142, 143, 144, 145, 146, 147, 75, 76, 77, 78,
79, 80, 81, 82, 83, -1, -1, 86, 87, -1,
-1, -1, -1, 92, 93, 94, 95, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 52, 53, -1, -1,
56, 130, 131, 132, 133, 134, 135, 136, -1, -1,
-1, -1, 141, 142, 143, 144, 145, 146, 147, 75,
76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 52,
53, -1, -1, 56, 130, 131, 132, 133, 134, 135,
136, -1, -1, -1, -1, 141, 142, 143, 144, 145,
146, 147, 75, 76, 77, 78, 79, 80, 81, 82,
83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 52, 53, -1, -1, 56, 130, 131, 132,
133, 134, 135, 136, -1, -1, -1, -1, 141, 142,
143, 144, 145, 146, 147, 75, 76, 77, 78, 79,
80, 81, 82, 83, -1, -1, 86, 87, -1, -1,
-1, -1, 92, 93, 94, 95, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
130, 131, 132, 133, 134, 135, 136, -1, -1, -1,
-1, 141, 142, 143, 144, 145, 146, 147, 75, 76,
77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
87, -1, -1, -1, -1, 92, 93, 94, 95, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 52, 53,
-1, -1, 56, 130, 131, 132, 133, 134, 135, 136,
-1, -1, -1, -1, 141, 142, 143, 144, 145, 146,
147, 75, 76, 77, 78, 79, 80, 81, 82, 83,
-1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 107, 108, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
-1, -1, 94, 95, -1, -1, 130, 131, 132, 133,
134, 135, -1, -1, -1, -1, -1, 141, 142, 143,
144, 145, 146, 147, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 130, 131,
132, 133, -1, 135, -1, -1, -1, -1, 140, 141,
142, 143, 144, 145, -1, -1, -1, 149, 77, 78,
79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
89, -1, -1, -1, -1, 94, 95, -1, 77, 78,
79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
89, -1, -1, -1, -1, 94, 95, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 130, 131, 132, 133, -1, 135, -1, -1, -1,
-1, -1, 141, 142, 143, 144, 145, -1, -1, -1,
149, 130, 131, 132, 133, -1, 135, -1, -1, -1,
-1, -1, 141, 142, 143, 144, 145 ];
#[allow(non_upper_case_globals)]
const yystos_: &'static [usize] = &[ 0, 154, 155, 0, 1, 3, 4, 5, 6, 7,
11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, 59, 60, 61, 62, 63, 64, 65, 75, 76,
90, 91, 98, 101, 102, 104, 105, 107, 110, 111,
112, 113, 114, 115, 116, 117, 118, 146, 147, 151,
156, 157, 158, 165, 167, 168, 170, 173, 174, 179,
180, 183, 184, 185, 187, 188, 189, 191, 192, 201,
203, 204, 218, 227, 228, 229, 230, 231, 232, 233,
234, 235, 236, 237, 246, 266, 275, 276, 324, 325,
326, 327, 328, 329, 330, 333, 335, 336, 350, 351,
353, 354, 355, 356, 357, 358, 359, 360, 397, 411,
158, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 45, 46, 47, 48, 49,
50, 51, 52, 53, 56, 75, 76, 77, 78, 79,
80, 81, 82, 83, 86, 87, 92, 93, 94, 95,
107, 108, 130, 131, 132, 133, 134, 135, 141, 142,
143, 144, 145, 146, 147, 195, 196, 197, 199, 200,
350, 39, 58, 98, 101, 107, 108, 109, 112, 147,
184, 192, 201, 204, 210, 213, 215, 227, 356, 357,
359, 360, 395, 396, 210, 136, 211, 212, 136, 207,
211, 136, 140, 404, 54, 196, 404, 126, 159, 126,
21, 22, 31, 32, 183, 201, 227, 246, 201, 201,
201, 56, 1, 47, 101, 161, 162, 163, 165, 186,
187, 411, 165, 220, 205, 215, 395, 411, 204, 394,
395, 411, 46, 98, 125, 151, 173, 174, 191, 218,
227, 356, 357, 360, 267, 54, 55, 57, 195, 339,
352, 339, 340, 341, 139, 139, 139, 139, 201, 179,
201, 355, 138, 140, 403, 409, 410, 40, 41, 42,
43, 44, 100, 37, 38, 136, 363, 364, 365, 363,
364, 26, 126, 207, 211, 238, 277, 28, 239, 273,
129, 125, 101, 107, 188, 129, 25, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
94, 95, 130, 131, 132, 133, 135, 141, 142, 143,
144, 145, 149, 202, 202, 100, 68, 96, 97, 128,
401, 219, 170, 176, 201, 176, 177, 178, 177, 176,
403, 410, 98, 185, 192, 227, 251, 356, 357, 360,
52, 56, 94, 98, 193, 194, 227, 356, 357, 360,
194, 33, 34, 35, 36, 49, 50, 51, 52, 56,
136, 172, 195, 358, 392, 210, 97, 401, 402, 277,
327, 99, 99, 125, 204, 56, 204, 204, 204, 339,
129, 100, 125, 214, 411, 97, 128, 401, 99, 99,
125, 214, 210, 404, 405, 210, 91, 209, 210, 215,
369, 395, 411, 170, 405, 170, 54, 64, 65, 166,
136, 201, 156, 161, 97, 401, 99, 165, 164, 186,
103, 403, 410, 405, 221, 405, 137, 125, 140, 408,
125, 408, 127, 408, 404, 56, 188, 190, 355, 363,
125, 97, 128, 401, 52, 54, 55, 56, 57, 58,
77, 101, 107, 108, 109, 131, 136, 143, 256, 269,
366, 368, 370, 371, 372, 373, 374, 375, 376, 379,
380, 381, 382, 383, 386, 387, 388, 389, 390, 66,
119, 121, 122, 342, 119, 119, 342, 67, 342, 331,
337, 334, 338, 77, 138, 158, 176, 176, 176, 176,
165, 185, 192, 170, 170, 91, 368, 369, 374, 129,
160, 161, 368, 129, 160, 278, 106, 181, 279, 274,
107, 179, 204, 215, 216, 217, 186, 125, 191, 125,
168, 169, 179, 192, 201, 204, 206, 217, 227, 360,
171, 201, 201, 201, 201, 201, 201, 201, 201, 201,
201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
201, 201, 201, 201, 201, 185, 192, 52, 53, 56,
199, 207, 398, 399, 209, 215, 52, 53, 56, 199,
207, 398, 160, 13, 247, 409, 247, 161, 176, 161,
403, 223, 56, 97, 128, 401, 25, 170, 52, 56,
193, 133, 361, 97, 128, 401, 226, 393, 68, 97,
400, 52, 56, 398, 169, 201, 206, 169, 206, 198,
124, 204, 107, 204, 213, 395, 52, 56, 209, 52,
56, 396, 405, 103, 405, 125, 405, 125, 405, 196,
170, 127, 127, 398, 398, 206, 159, 405, 163, 405,
395, 125, 190, 52, 56, 209, 52, 56, 101, 107,
252, 253, 254, 255, 371, 368, 125, 391, 411, 268,
129, 125, 367, 204, 125, 391, 34, 52, 125, 367,
52, 125, 367, 52, 344, 343, 119, 332, 342, 66,
119, 119, 332, 66, 119, 201, 405, 405, 125, 201,
10, 245, 8, 240, 320, 411, 409, 201, 245, 280,
281, 182, 282, 283, 282, 204, 125, 44, 405, 190,
125, 44, 129, 44, 97, 128, 401, 52, 56, 90,
91, 98, 101, 104, 105, 135, 266, 293, 294, 295,
298, 315, 316, 317, 318, 319, 324, 325, 328, 329,
330, 333, 335, 336, 357, 404, 99, 99, 207, 211,
404, 406, 125, 99, 99, 207, 208, 211, 411, 245,
161, 13, 161, 245, 27, 248, 409, 245, 25, 222,
287, 17, 242, 285, 52, 56, 209, 52, 56, 177,
225, 362, 224, 52, 56, 193, 209, 160, 170, 175,
208, 211, 196, 204, 204, 214, 99, 99, 406, 99,
99, 369, 395, 405, 408, 188, 406, 254, 371, 125,
405, 125, 263, 404, 390, 29, 123, 270, 204, 366,
373, 386, 388, 376, 380, 382, 374, 383, 388, 372,
374, 345, 54, 55, 57, 349, 360, 139, 342, 139,
139, 139, 369, 44, 204, 217, 321, 411, 9, 15,
241, 243, 323, 411, 44, 127, 130, 261, 262, 411,
280, 245, 261, 245, 107, 204, 165, 190, 165, 201,
52, 56, 209, 52, 56, 316, 316, 56, 193, 300,
107, 293, 301, 302, 303, 304, 305, 307, 406, 299,
404, 407, 52, 100, 130, 88, 89, 97, 128, 136,
296, 297, 150, 169, 206, 169, 206, 181, 137, 99,
169, 206, 169, 206, 181, 14, 243, 244, 249, 250,
411, 250, 288, 285, 245, 107, 204, 284, 245, 406,
161, 409, 176, 160, 406, 245, 405, 172, 277, 273,
99, 405, 125, 405, 252, 255, 253, 103, 138, 272,
271, 125, 367, 125, 367, 391, 125, 367, 125, 367,
367, 346, 405, 201, 100, 322, 411, 161, 161, 201,
256, 257, 260, 263, 372, 374, 375, 377, 378, 384,
385, 388, 390, 161, 127, 160, 204, 406, 293, 52,
406, 107, 293, 307, 406, 125, 125, 58, 112, 308,
309, 310, 311, 312, 313, 314, 380, 127, 317, 298,
316, 316, 193, 406, 405, 112, 301, 304, 308, 301,
304, 308, 201, 169, 206, 161, 176, 245, 245, 291,
292, 293, 303, 304, 308, 245, 204, 125, 247, 245,
160, 409, 245, 125, 125, 52, 264, 265, 370, 160,
161, 374, 388, 374, 374, 347, 98, 192, 227, 356,
357, 360, 247, 323, 391, 263, 130, 129, 125, 258,
259, 98, 227, 125, 391, 125, 258, 125, 258, 405,
52, 125, 125, 306, 307, 339, 407, 125, 293, 34,
52, 339, 405, 405, 405, 406, 406, 406, 247, 247,
40, 41, 125, 107, 204, 161, 245, 253, 125, 404,
245, 127, 367, 125, 367, 367, 367, 348, 56, 97,
128, 401, 161, 130, 227, 257, 385, 388, 56, 97,
377, 382, 374, 384, 388, 374, 125, 306, 125, 124,
310, 314, 161, 289, 176, 176, 301, 305, 204, 250,
285, 286, 265, 374, 161, 52, 56, 209, 52, 56,
320, 125, 258, 125, 258, 52, 56, 391, 125, 258,
125, 258, 258, 306, 125, 305, 307, 249, 161, 125,
367, 120, 406, 374, 388, 374, 374, 250, 287, 290,
306, 258, 125, 258, 258, 258, 374, 258 ];
#[allow(non_upper_case_globals)]
const yyr1_: &'static [usize] = &[ 0, 153, 155, 154, 156, 157, 157, 157, 157, 158,
158, 159, 160, 160, 161, 162, 162, 162, 162, 163,
164, 163, 166, 165, 165, 165, 165, 165, 165, 165,
165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
165, 167, 167, 167, 167, 168, 168, 168, 168, 168,
168, 168, 168, 169, 169, 169, 170, 170, 170, 170,
170, 171, 170, 170, 172, 173, 175, 174, 176, 178,
177, 179, 179, 180, 180, 182, 181, 183, 184, 184,
184, 184, 184, 184, 184, 184, 184, 184, 184, 185,
185, 186, 186, 187, 187, 187, 187, 187, 187, 187,
187, 187, 187, 188, 188, 189, 189, 190, 190, 191,
191, 191, 191, 191, 191, 191, 191, 191, 192, 192,
192, 192, 192, 192, 192, 192, 192, 193, 193, 194,
194, 194, 195, 195, 195, 195, 195, 196, 196, 197,
198, 197, 199, 199, 199, 199, 199, 199, 199, 199,
199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
199, 199, 200, 200, 200, 200, 200, 200, 200, 200,
200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
200, 200, 200, 201, 201, 201, 201, 201, 201, 201,
201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
202, 202, 202, 202, 203, 203, 204, 205, 205, 205,
205, 206, 206, 207, 207, 207, 208, 208, 209, 209,
209, 209, 209, 210, 210, 210, 210, 210, 212, 211,
213, 214, 214, 215, 215, 215, 215, 216, 216, 217,
217, 217, 218, 218, 218, 218, 218, 218, 218, 218,
218, 218, 218, 219, 218, 220, 218, 221, 218, 218,
218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
218, 218, 218, 218, 218, 218, 218, 218, 218, 222,
218, 223, 218, 218, 218, 224, 218, 225, 218, 226,
218, 218, 218, 218, 218, 218, 218, 227, 228, 229,
230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
240, 241, 242, 243, 244, 245, 246, 247, 247, 247,
248, 248, 249, 249, 250, 250, 251, 251, 252, 252,
253, 253, 254, 254, 254, 254, 254, 255, 255, 256,
256, 257, 257, 257, 257, 258, 258, 259, 260, 260,
260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
260, 260, 260, 261, 261, 262, 262, 263, 263, 264,
264, 265, 265, 267, 268, 266, 269, 269, 271, 270,
272, 270, 274, 273, 275, 275, 275, 275, 276, 276,
276, 276, 276, 276, 276, 276, 276, 278, 277, 279,
277, 281, 280, 283, 282, 284, 284, 284, 284, 285,
286, 286, 288, 289, 287, 290, 290, 291, 291, 291,
292, 292, 292, 292, 292, 292, 293, 294, 294, 295,
295, 296, 297, 298, 298, 298, 298, 298, 298, 298,
298, 298, 298, 298, 298, 299, 298, 298, 300, 298,
301, 301, 301, 301, 301, 301, 301, 301, 302, 302,
303, 303, 304, 305, 305, 306, 306, 307, 308, 308,
308, 308, 309, 309, 310, 310, 311, 311, 312, 312,
313, 314, 314, 315, 315, 315, 315, 315, 315, 315,
315, 315, 315, 316, 316, 316, 316, 316, 316, 316,
316, 316, 316, 317, 318, 319, 319, 319, 320, 320,
321, 321, 321, 322, 322, 323, 323, 324, 324, 325,
326, 326, 326, 327, 328, 329, 330, 331, 331, 332,
332, 333, 334, 334, 335, 336, 337, 337, 338, 338,
339, 339, 340, 340, 341, 341, 342, 343, 342, 344,
345, 346, 347, 348, 342, 349, 349, 349, 349, 350,
350, 351, 352, 352, 352, 352, 353, 354, 354, 355,
355, 355, 355, 356, 356, 356, 356, 356, 357, 357,
357, 357, 357, 357, 357, 358, 358, 359, 359, 360,
360, 362, 361, 361, 363, 363, 363, 364, 365, 364,
366, 366, 366, 366, 367, 367, 368, 368, 368, 368,
368, 368, 368, 368, 368, 368, 368, 368, 368, 368,
368, 369, 370, 370, 370, 370, 371, 371, 372, 373,
373, 374, 374, 375, 376, 376, 377, 377, 378, 378,
379, 379, 380, 380, 381, 382, 382, 383, 384, 385,
385, 386, 386, 387, 387, 388, 388, 389, 389, 390,
391, 391, 392, 393, 392, 394, 394, 395, 395, 396,
396, 396, 396, 397, 397, 397, 398, 398, 398, 398,
399, 399, 399, 400, 400, 401, 401, 402, 402, 403,
403, 404, 404, 405, 406, 407, 408, 408, 408, 409,
409, 410, 410, 411 ];
#[allow(non_upper_case_globals)]
const yyr2_: &'static [usize] = &[ 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
2, 3, 5, 3, 2, 1, 1, 3, 2, 1,
0, 3, 0, 4, 3, 3, 3, 2, 3, 3,
3, 3, 3, 4, 1, 3, 3, 5, 3, 1,
1, 3, 3, 3, 3, 3, 3, 6, 5, 5,
5, 5, 3, 1, 3, 1, 1, 3, 3, 3,
2, 0, 4, 1, 1, 2, 0, 5, 1, 0,
3, 1, 1, 1, 4, 0, 4, 1, 2, 3,
4, 5, 4, 5, 2, 2, 2, 2, 2, 1,
3, 1, 3, 1, 2, 3, 5, 2, 4, 2,
4, 1, 3, 1, 3, 2, 3, 1, 3, 1,
1, 4, 3, 3, 3, 3, 2, 1, 1, 1,
4, 3, 3, 3, 3, 2, 1, 1, 1, 2,
1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
0, 4, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 3, 3, 6, 5, 5, 5, 5,
4, 3, 3, 3, 2, 2, 2, 2, 3, 3,
3, 3, 3, 3, 4, 2, 2, 3, 3, 3,
3, 1, 3, 3, 3, 3, 3, 2, 2, 3,
3, 3, 3, 3, 6, 4, 6, 4, 6, 1,
1, 1, 1, 1, 3, 3, 1, 1, 2, 4,
2, 1, 3, 3, 5, 3, 1, 1, 1, 1,
2, 4, 2, 1, 2, 2, 4, 1, 0, 2,
2, 2, 1, 1, 2, 3, 4, 1, 1, 3,
4, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 0, 4, 0, 3, 0, 4, 3,
3, 2, 3, 3, 1, 4, 3, 1, 5, 4,
3, 2, 1, 2, 1, 6, 6, 4, 4, 0,
6, 0, 5, 5, 6, 0, 6, 0, 7, 0,
5, 4, 4, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
1, 1, 1, 5, 1, 2, 1, 1, 1, 3,
1, 3, 1, 3, 5, 1, 3, 2, 1, 1,
1, 4, 2, 2, 1, 2, 0, 1, 6, 8,
4, 6, 4, 2, 6, 2, 4, 6, 2, 4,
2, 4, 1, 1, 1, 3, 4, 1, 4, 1,
3, 1, 1, 0, 0, 5, 4, 1, 0, 4,
0, 4, 0, 4, 2, 4, 5, 5, 2, 4,
4, 3, 3, 3, 2, 1, 4, 0, 4, 0,
4, 0, 3, 0, 3, 1, 2, 3, 4, 5,
1, 1, 0, 0, 7, 1, 1, 1, 3, 3,
1, 2, 3, 1, 1, 1, 1, 3, 1, 3,
1, 1, 1, 1, 4, 4, 4, 3, 4, 4,
4, 3, 3, 3, 2, 0, 4, 2, 0, 4,
1, 1, 2, 3, 5, 2, 4, 1, 2, 3,
1, 3, 5, 2, 1, 1, 3, 1, 3, 1,
2, 1, 1, 3, 2, 1, 1, 3, 2, 1,
2, 1, 1, 1, 3, 3, 2, 2, 1, 1,
1, 2, 2, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 2, 2, 3, 1, 6, 1,
1, 1, 1, 2, 1, 2, 1, 1, 1, 1,
1, 1, 2, 3, 3, 3, 4, 0, 3, 1,
2, 4, 0, 3, 4, 4, 0, 3, 0, 3,
0, 2, 0, 2, 0, 2, 1, 0, 3, 0,
0, 0, 0, 0, 8, 1, 1, 1, 1, 1,
1, 2, 1, 1, 1, 1, 3, 1, 2, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 4, 0, 3, 5, 3, 1, 0, 3,
4, 2, 2, 1, 2, 0, 6, 8, 4, 6,
4, 6, 2, 4, 6, 2, 4, 2, 4, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3, 1, 3, 1, 2, 1, 2, 1, 1, 3,
1, 3, 1, 1, 2, 2, 1, 3, 3, 1,
3, 1, 3, 1, 1, 2, 1, 1, 1, 2,
2, 1, 1, 0, 4, 1, 2, 1, 3, 3,
2, 4, 2, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
1, 0, 1, 2, 2, 2, 0, 1, 1, 1,
1, 1, 2, 0 ];
#[allow(non_upper_case_globals)]
const yyrline_: &'static [usize] = &[ 0, 310, 310, 310, 322, 331, 335, 339, 345, 351,
355, 364, 376, 399, 418, 427, 431, 435, 441, 447,
452, 451, 462, 461, 472, 482, 492, 496, 505, 516,
527, 538, 549, 569, 584, 588, 601, 618, 647, 657,
661, 667, 677, 687, 697, 709, 719, 729, 744, 761,
778, 795, 812, 824, 830, 853, 859, 863, 874, 885,
896, 908, 907, 935, 941, 952, 966, 965, 986, 994,
994, 1012, 1016, 1022, 1026, 1042, 1041, 1061, 1067, 1080,
1102, 1115, 1137, 1150, 1172, 1184, 1196, 1208, 1220, 1234,
1244, 1256, 1266, 1283, 1287, 1293, 1299, 1308, 1314, 1323,
1331, 1339, 1347, 1357, 1361, 1373, 1377, 1385, 1389, 1397,
1403, 1409, 1420, 1435, 1445, 1460, 1472, 1483, 1493, 1499,
1505, 1516, 1526, 1536, 1546, 1558, 1569, 1579, 1583, 1589,
1595, 1601, 1613, 1617, 1621, 1625, 1630, 1636, 1642, 1648,
1653, 1652, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672,
1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682,
1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692,
1693, 1694, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704,
1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714,
1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724,
1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734,
1735, 1736, 1737, 1740, 1750, 1760, 1775, 1792, 1809, 1826,
1843, 1859, 1869, 1885, 1901, 1914, 1927, 1940, 1953, 1959,
1965, 1971, 1977, 1983, 1989, 2002, 2011, 2020, 2026, 2032,
2038, 2044, 2048, 2054, 2060, 2066, 2072, 2082, 2093, 2102,
2108, 2114, 2125, 2136, 2148, 2163, 2188, 2224, 2246, 2284,
2290, 2294, 2298, 2302, 2308, 2318, 2332, 2340, 2344, 2348,
2356, 2366, 2372, 2397, 2407, 2425, 2441, 2451, 2464, 2468,
2472, 2476, 2482, 2492, 2498, 2503, 2511, 2520, 2526, 2526,
2554, 2565, 2569, 2575, 2579, 2587, 2593, 2601, 2607, 2613,
2619, 2627, 2637, 2641, 2645, 2649, 2653, 2657, 2661, 2665,
2669, 2673, 2677, 2691, 2690, 2704, 2704, 2714, 2714, 2724,
2734, 2744, 2750, 2760, 2770, 2782, 2794, 2806, 2818, 2830,
2841, 2852, 2874, 2878, 2891, 2895, 2914, 2933, 2949, 2966,
2965, 2989, 2988, 3011, 3029, 3047, 3046, 3080, 3079, 3107,
3106, 3133, 3156, 3181, 3193, 3205, 3217, 3231, 3239, 3245,
3252, 3258, 3264, 3270, 3276, 3282, 3288, 3294, 3300, 3306,
3312, 3318, 3324, 3330, 3336, 3343, 3349, 3358, 3362, 3366,
3372, 3376, 3382, 3387, 3414, 3418, 3426, 3430, 3436, 3442,
3454, 3458, 3466, 3470, 3476, 3481, 3485, 3492, 3498, 3506,
3510, 3516, 3521, 3526, 3531, 3538, 3543, 3548, 3554, 3559,
3564, 3569, 3574, 3579, 3583, 3588, 3602, 3607, 3612, 3617,
3622, 3627, 3632, 3638, 3644, 3651, 3664, 3680, 3684, 3690,
3694, 3702, 3710, 3717, 3725, 3716, 3758, 3769, 3782, 3781,
3798, 3797, 3816, 3815, 3835, 3848, 3862, 3885, 3909, 3924,
3939, 3954, 3967, 3982, 3997, 4011, 4023, 4037, 4036, 4056,
4055, 4076, 4076, 4101, 4101, 4125, 4129, 4137, 4143, 4151,
4162, 4166, 4174, 4184, 4173, 4210, 4214, 4221, 4225, 4230,
4237, 4241, 4252, 4260, 4266, 4272, 4280, 4286, 4296, 4302,
4312, 4318, 4325, 4332, 4336, 4350, 4363, 4376, 4390, 4404,
4417, 4430, 4444, 4456, 4466, 4478, 4477, 4495, 4506, 4505,
4523, 4532, 4536, 4546, 4557, 4568, 4579, 4590, 4601, 4610,
4622, 4626, 4633, 4641, 4647, 4655, 4659, 4667, 4673, 4678,
4682, 4686, 4692, 4696, 4704, 4713, 4723, 4729, 4737, 4745,
4755, 4765, 4769, 4775, 4779, 4795, 4811, 4824, 4837, 4841,
4845, 4849, 4862, 4877, 4881, 4885, 4889, 4893, 4897, 4901,
4905, 4909, 4915, 4921, 4929, 4945, 4951, 4961, 4967, 4992,
4998, 5002, 5006, 5012, 5018, 5024, 5030, 5036, 5040, 5046,
5058, 5066, 5070, 5078, 5088, 5098, 5113, 5126, 5130, 5140,
5144, 5152, 5165, 5168, 5178, 5190, 5203, 5206, 5217, 5220,
5231, 5234, 5243, 5246, 5255, 5258, 5266, 5273, 5272, 5283,
5288, 5291, 5295, 5299, 5282, 5323, 5327, 5332, 5336, 5342,
5343, 5346, 5355, 5356, 5357, 5358, 5361, 5370, 5374, 5385,
5391, 5397, 5403, 5411, 5417, 5423, 5429, 5435, 5443, 5449,
5455, 5461, 5467, 5473, 5479, 5487, 5544, 5552, 5558, 5566,
5572, 5581, 5580, 5595, 5600, 5609, 5627, 5641, 5645, 5645,
5661, 5666, 5671, 5676, 5682, 5687, 5692, 5697, 5702, 5707,
5712, 5717, 5722, 5727, 5732, 5737, 5742, 5747, 5752, 5757,
5763, 5768, 5774, 5778, 5782, 5786, 5792, 5796, 5806, 5815,
5822, 5834, 5838, 5847, 5863, 5870, 5879, 5885, 5893, 5897,
5906, 5910, 5918, 5922, 5928, 5938, 5948, 5958, 5971, 5984,
5988, 5996, 6000, 6008, 6012, 6018, 6029, 6039, 6043, 6049,
6059, 6063, 6069, 6075, 6075, 6105, 6109, 6115, 6119, 6127,
6137, 6146, 6157, 6165, 6169, 6173, 6179, 6183, 6187, 6191,
6197, 6201, 6205, 6211, 6215, 6221, 6225, 6231, 6235, 6242,
6245, 6252, 6255, 6261, 6267, 6273, 6280, 6283, 6287, 6293,
6297, 6303, 6307, 6314 ];
fn yy_reduce_print(&self, yyrule: i32, yystack: &YYStack) {
if !self.yydebug {
return;
}
let yylno = Self::yyrline_[i32_to_usize(yyrule)];
let yynrhs = Self::yyr2_[i32_to_usize(yyrule)];
self.yycdebug(&format!("Reducing stack by rule {} (line {}):", yyrule - 1,
yylno));
for yyi in 0..yynrhs {
let state: usize = i32_to_usize(yystack.state_at(yynrhs - (yyi + 1)));
self.yy_symbol_print(&format!(" ${} =", yyi + 1),
SymbolKind::get(Self::yystos_[state]),
yystack.borrow_value_at(yynrhs - (yyi + 1)),
yystack.location_at(yynrhs - (yyi + 1)));
}
}
fn yytranslate_(t: i32) -> SymbolKind
{
let code_max: i32 = 407;
if t <= 0 {
SymbolKind { value: SymbolKind::S_YYEOF }
} else if t <= code_max {
let t = i32_to_usize(t);
SymbolKind::get(Self::yytranslate_table_[t]).clone()
} else {
SymbolKind { value: SymbolKind::S_YYUNDEF }
}
}
#[allow(non_upper_case_globals)]
const yytranslate_table_: &'static [usize] = &[ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
145, 146, 147, 148, 149, 150, 151, 152 ];
const YYLAST_: i32 = 14846;
const YYEMPTY_: i32 = -2;
const YYFINAL_: i32 = 3;
const YYNTOKENS_: i32 = 153;
}
impl Parser {
pub fn new(input: &[u8], options: ParserOptions) -> Self {
let ParserOptions {
buffer_name,
debug,
decoder,
} = options;
let mut lexer = Lexer::new(input, &buffer_name, decoder);
lexer.set_debug(debug);
let current_arg_stack = CurrentArgStack::new();
let max_numparam_stack = MaxNumparamStack::new();
let pattern_variables = VariablesStack::new();
let pattern_hash_keys = VariablesStack::new();
let builder = Builder::new(
lexer.static_env.clone(),
lexer.context.clone(),
current_arg_stack.clone(),
max_numparam_stack.clone(),
pattern_variables.clone(),
pattern_hash_keys.clone(),
lexer.diagnostics.clone(),
);
let last_token = Token {
token_type: 0,
token_value: TokenValue::String("".to_owned()),
loc: Loc { begin: 0, end: 0 }
};
Self {
yy_error_verbose: true,
yynerrs: 0,
yydebug: debug,
yyerrstatus_: 0,
result: None,
builder,
context: lexer.context.clone(),
current_arg_stack,
max_numparam_stack,
pattern_variables,
pattern_hash_keys,
static_env: lexer.static_env.clone(),
last_token,
tokens: vec![],
diagnostics: lexer.diagnostics.clone(),
yylexer: lexer,
}
}
pub fn do_parse(mut self) -> ParserResult {
self.parse();
ParserResult {
ast: self.result,
tokens: std::mem::take(&mut self.tokens),
diagnostics: self.diagnostics.take(),
comments: self.yylexer.comments,
magic_comments: self.yylexer.magic_comments,
input: self.yylexer.buffer.input,
}
}
pub fn set_debug(&mut self, debug: bool) {
self.yydebug = debug;
self.yylexer.set_debug(debug);
}
fn warn(&mut self, loc: &Loc, message: DiagnosticMessage) {
let diagnostic = Diagnostic::new(
ErrorLevel::Warning,
message,
Range::new(loc.begin, loc.end)
);
self.diagnostics.emit(diagnostic);
}
fn next_token(&mut self) -> Token {
let token = self.yylexer.yylex();
self.last_token = token.clone();
self.tokens.push(token.clone());
token
}
fn check_kwarg_name(&self, ident_t: &Token) -> Result<(), ()> {
let name = clone_value(&ident_t);
let first_char = name.chars().next().expect("kwarg name can't be empty");
if first_char.is_lowercase() || first_char == '_' {
Ok(())
} else {
let range = Range::new(ident_t.loc.begin, ident_t.loc.end);
self.diagnostics.emit(
Diagnostic::new(
ErrorLevel::Error,
DiagnosticMessage::ConstArgument,
range
)
);
Err(())
}
}
fn yyerror(&mut self, loc: &Loc, message: DiagnosticMessage) -> Result<i32, ()> {
self.yyerror1(
message,
Range::new(loc.begin, loc.end)
)
}
fn yyerror1(&mut self, message: DiagnosticMessage, range: Range) -> Result<i32, ()> {
let diagnostic = Diagnostic::new(ErrorLevel::Error, message, range);
self.diagnostics.emit(diagnostic);
Err(())
}
fn report_syntax_error(&mut self, ctx: &Context) {
let id: usize = ctx.token().code().try_into().expect("failed to convert token code into i32, is it too big?");
let diagnostic = Diagnostic::new(
ErrorLevel::Error,
DiagnosticMessage::UnexpectedToken(Lexer::TOKEN_NAMES[id].to_owned()),
Range::new(ctx.location().begin, ctx.location().end)
);
self.diagnostics.emit(diagnostic);
}
fn warn_eol(&mut self, loc: &Loc, tok: &str) {
if self.yylexer.buffer.is_looking_at_eol() {
self.warn(loc, DiagnosticMessage::TokAtEolWithoutExpression(tok.to_owned()));
}
}
fn value_expr(&self, node: &Node) -> Result<(), ()> {
self.builder.value_expr(node)
}
}
impl TokenValue {
pub fn into_string_lossy(self) -> String {
match self {
Self::String(s) => s,
Self::InvalidString(bytes) => String::from_utf8_lossy(&bytes).into_owned(),
}
}
pub fn into_bytes(self) -> Vec<u8> {
match self {
Self::String(s) => s.into_bytes(),
Self::InvalidString(bytes) => bytes,
}
}
}
impl Token {
pub fn into_string_lossy(self) -> String {
self.token_value.into_string_lossy()
}
pub fn into_bytes(self) -> Vec<u8> {
self.token_value.into_bytes()
}
}