diff --git a/SYNTAX.md b/SYNTAX.md
index 94469a37..e91f9f5c 100644
--- a/SYNTAX.md
+++ b/SYNTAX.md
@@ -21,7 +21,6 @@ This document provides a comprehensive guide to the grammar definition syntax us
   - [Operator Precedence (`%left`, `%right`, `%precedence`, `%prec`)](#operator-precedence)
 - [Error Type (`%error`)](#error-type-optional)
 - [Disabling Table Optimization (`%nooptim`)](#no-optimization)
-- [Dense Parser Tables (`%dense`)](#dense-parser-table)
 - [Location Tracking (`%location`)](#location-tracking)
 - [Variable Substitution](#variable-substitution)
 - [Advanced Parser Controls](#advanced-parser-controls)
@@ -449,17 +448,7 @@ Defines a custom error type returned by reduce actions. If your reduce action re
 
 Disables optimization passes on the generated table (which merge states and group equivalent terminals). Use this for debugging or to speed up the parser generation compilation phase itself.
 
----
-
-## Dense Parser Table
 
-```
-%dense;
-```
-
-Forces the generated parser table to use flat `Vec` indexes instead of `HashMap` lookups. This significantly speeds up token feeding, but can drastically increase the binary size of the generated parser.
-
----
 
 ## Location Tracking
 
diff --git a/example/json/src/parser.rs b/example/json/src/parser.rs
index 24bb79b5..5afe1ad9 100644
--- a/example/json/src/parser.rs
+++ b/example/json/src/parser.rs
@@ -5,7 +5,6 @@
 %tokentype char;
 %start Json;
 %userdata Vec<std::ops::Range<usize>>;
-%dense;
 %location std::ops::Range<usize>;
 
 Json: Element;
diff --git a/rusty_lr_buildscript/src/lib.rs b/rusty_lr_buildscript/src/lib.rs
index f5581da2..22036358 100644
--- a/rusty_lr_buildscript/src/lib.rs
+++ b/rusty_lr_buildscript/src/lib.rs
@@ -16,6 +16,7 @@
 //!
 
 pub mod output;
+pub use rusty_lr_parser::TableLayout;
 mod split;
 mod utils;
 
@@ -68,7 +69,8 @@ pub struct Builder {
 
     /// if Some, override the settings with these values
     glr: Option<bool>,
-    dense: Option<bool>,
+    layout: Option<rusty_lr_parser::TableLayout>,
+    dense_limit: Option<usize>,
 }
 
 impl Builder {
@@ -83,7 +85,8 @@ impl Builder {
             is_executable: false,
 
             glr: None,
-            dense: None,
+            layout: None,
+            dense_limit: None,
         }
     }
 
@@ -93,8 +96,24 @@ impl Builder {
         self
     }
     /// override the settings
+    /// Set layout strategy (dense, sparse, auto)
+    pub fn layout(&mut self, layout: rusty_lr_parser::TableLayout) -> &mut Self {
+        self.layout = Some(layout);
+        self
+    }
+    /// Set dense limit in bytes for auto-layout detection
+    pub fn dense_limit(&mut self, limit: usize) -> &mut Self {
+        self.dense_limit = Some(limit);
+        self
+    }
+    /// Deprecated: use layout(TableLayout::Dense) instead
+    #[deprecated(since = "0.66.0", note = "Use `layout(TableLayout::Dense)` instead")]
     pub fn dense(&mut self, dense: bool) -> &mut Self {
-        self.dense = Some(dense);
+        self.layout = Some(if dense {
+            rusty_lr_parser::TableLayout::Dense
+        } else {
+            rusty_lr_parser::TableLayout::Sparse
+        });
         self
     }
 
@@ -576,8 +595,11 @@ impl Builder {
         if let Some(glr) = self.glr {
             grammar_args.glr = glr;
         }
-        if let Some(dense) = self.dense {
-            grammar_args.dense = dense;
+        if let Some(layout) = self.layout {
+            grammar_args.layout = layout;
+        }
+        if let Some(limit) = self.dense_limit {
+            grammar_args.dense_limit = limit;
         }
 
         let span_manager = grammar_args.span_manager.clone();
diff --git a/rusty_lr_core/src/parser/state.rs b/rusty_lr_core/src/parser/state.rs
index b3d2dd3a..0fa54af3 100644
--- a/rusty_lr_core/src/parser/state.rs
+++ b/rusty_lr_core/src/parser/state.rs
@@ -134,9 +134,6 @@ pub trait State {
     /// Get the set of production rule for reduce in this state
     fn expected_reduce_rule(&self) -> impl Iterator<Item = impl Index> + '_;
 
-    /// Get the set of rules that this state is trying to parse
-    fn get_rules(&self) -> &[crate::rule::ShiftedRuleRef];
-
     fn can_accept_error(&self) -> TriState;
 }
 
@@ -152,9 +149,6 @@ pub struct SparseState<TermClass, NonTerm, RuleContainer, StateIndex> {
     /// terminal symbol -> reduce rule index
     pub(crate) reduce_map: HashMap<TermClass, RuleContainer>,
 
-    /// set of rules that this state is trying to parse
-    pub(crate) ruleset: Vec<crate::rule::ShiftedRuleRef>,
-
     pub(crate) can_accept_error: TriState,
 }
 
@@ -193,9 +187,6 @@ impl<
     fn expected_reduce_rule(&self) -> impl Iterator<Item = impl Index> + '_ {
         self.reduce_map.values().flat_map(RuleContainer::to_iter)
     }
-    fn get_rules(&self) -> &[crate::rule::ShiftedRuleRef] {
-        &self.ruleset
-    }
     fn can_accept_error(&self) -> TriState {
         self.can_accept_error
     }
@@ -222,9 +213,6 @@ pub struct DenseState<TermClass, NonTerm, RuleContainer, StateIndex> {
     /// reduce_map[i] will contain i+offset 'th class's reduce rule.
     pub(crate) reduce_offset: usize,
 
-    /// set of rules that this state is trying to parse
-    pub(crate) ruleset: Vec<crate::rule::ShiftedRuleRef>,
-
     pub(crate) can_accept_error: TriState,
 }
 impl<
@@ -274,10 +262,6 @@ impl<
             .flat_map(RuleContainer::to_iter)
     }
 
-    fn get_rules(&self) -> &[crate::rule::ShiftedRuleRef] {
-        &self.ruleset
-    }
-
     fn can_accept_error(&self) -> TriState {
         self.can_accept_error
     }
@@ -326,7 +310,6 @@ where
                     )
                 })
                 .collect(),
-            ruleset: builder_state.ruleset.into_iter().collect(),
             can_accept_error: builder_state.can_accept_error,
         }
     }
@@ -435,7 +418,6 @@ where
             shift_nonterm_offset: nonterm_min,
             reduce_map,
             reduce_offset: reduce_min,
-            ruleset: builder_state.ruleset.into_iter().collect(),
             can_accept_error: builder_state.can_accept_error,
         }
     }
diff --git a/rusty_lr_executable/src/arg.rs b/rusty_lr_executable/src/arg.rs
index ba344345..3f65c25e 100644
--- a/rusty_lr_executable/src/arg.rs
+++ b/rusty_lr_executable/src/arg.rs
@@ -42,11 +42,32 @@ pub struct Args {
     #[arg(long)]
     pub glr: Option<bool>,
 
-    /// Override the written code and set generated parser table to use dense arrays
-    #[arg(long)]
-    pub dense: Option<bool>,
+    /// Set generated parser table layout representation (auto: optimal choice based on table size, dense: O(1) array, sparse: binary search)
+    #[arg(long, value_enum, default_value_t = TableLayoutArg::Auto)]
+    pub layout: TableLayoutArg,
+
+    /// Set dense limit in bytes for auto-layout detection
+    #[arg(long, default_value_t = 32768)]
+    pub dense_limit: usize,
 
     /// Print the details of a specific state
     #[arg(long)]
     pub state: Option<usize>,
 }
+
+#[derive(clap::ValueEnum, Clone, Copy, Debug, PartialEq, Eq)]
+pub enum TableLayoutArg {
+    Auto,
+    Dense,
+    Sparse,
+}
+
+impl From<TableLayoutArg> for rusty_lr_buildscript::TableLayout {
+    fn from(arg: TableLayoutArg) -> Self {
+        match arg {
+            TableLayoutArg::Auto => rusty_lr_buildscript::TableLayout::Auto,
+            TableLayoutArg::Dense => rusty_lr_buildscript::TableLayout::Dense,
+            TableLayoutArg::Sparse => rusty_lr_buildscript::TableLayout::Sparse,
+        }
+    }
+}
diff --git a/rusty_lr_executable/src/main.rs b/rusty_lr_executable/src/main.rs
index 3fef05f4..7bbc89da 100644
--- a/rusty_lr_executable/src/main.rs
+++ b/rusty_lr_executable/src/main.rs
@@ -31,9 +31,8 @@ fn main() {
     if let Some(glr) = args.glr {
         builder.glr(glr);
     }
-    if let Some(dense) = args.dense {
-        builder.dense(dense);
-    }
+    builder.layout(args.layout.into());
+    builder.dense_limit(args.dense_limit);
 
     let out = match builder.build_impl() {
         Ok(out) => out,
diff --git a/rusty_lr_parser/src/emit.rs b/rusty_lr_parser/src/emit.rs
index 26eac079..6555e73a 100644
--- a/rusty_lr_parser/src/emit.rs
+++ b/rusty_lr_parser/src/emit.rs
@@ -718,14 +718,11 @@ impl Grammar {
         let mut shift_nonterm_offsets = Vec::new();
         let mut reduce_data = Vec::new();
         let mut reduce_offsets = Vec::new();
-        let mut ruleset_data = Vec::new();
-        let mut ruleset_offsets = Vec::new();
         let mut can_accept_error = Vec::new();
 
         shift_term_offsets.push(0);
         shift_nonterm_offsets.push(0);
         reduce_offsets.push(0);
-        ruleset_offsets.push(0);
 
         for state in &self.states {
             // 1. shift_goto_map_term
@@ -797,25 +794,6 @@ impl Grammar {
             }
             reduce_offsets.push(reduce_data.len() as u32);
 
-            // 4. ruleset: Vec<ShiftedRuleRef>
-            for &rule in &state.ruleset {
-                let rule_val = rule.rule;
-                let shifted_val = rule.shifted;
-                assert!(
-                    rule_val < 65536,
-                    "Rule index {} in ruleset exceeds 16-bit limit (65536)",
-                    rule_val
-                );
-                assert!(
-                    shifted_val < 65536,
-                    "Shifted index {} in ruleset exceeds 16-bit limit (65536)",
-                    shifted_val
-                );
-                let val = (rule_val as u32) | ((shifted_val as u32) << 16);
-                ruleset_data.push(val);
-            }
-            ruleset_offsets.push(ruleset_data.len() as u32);
-
             // 5. can_accept_error: TriState
             let tri_val = match state.can_accept_error {
                 rusty_lr_core::TriState::False => 0u8,
@@ -829,6 +807,42 @@ impl Grammar {
         let num_states = self.states.len();
         let error_used = self.error_used;
 
+        // to remove suffix from generated data
+        let rule_names = rule_names
+            .into_iter()
+            .map(proc_macro2::Literal::u32_unsuffixed);
+        let rule_precedences = rule_precedences
+            .into_iter()
+            .map(proc_macro2::Literal::u32_unsuffixed);
+        let rule_tokens_data = rule_tokens_data
+            .into_iter()
+            .map(proc_macro2::Literal::u32_unsuffixed);
+        let rule_tokens_offsets = rule_tokens_offsets
+            .into_iter()
+            .map(proc_macro2::Literal::u32_unsuffixed);
+
+        let shift_term_data = shift_term_data
+            .into_iter()
+            .map(proc_macro2::Literal::u32_unsuffixed);
+        let shift_term_offsets = shift_term_offsets
+            .into_iter()
+            .map(proc_macro2::Literal::u32_unsuffixed);
+        let shift_nonterm_data = shift_nonterm_data
+            .into_iter()
+            .map(proc_macro2::Literal::u32_unsuffixed);
+        let shift_nonterm_offsets = shift_nonterm_offsets
+            .into_iter()
+            .map(proc_macro2::Literal::u32_unsuffixed);
+        let reduce_data = reduce_data
+            .into_iter()
+            .map(proc_macro2::Literal::u32_unsuffixed);
+        let reduce_offsets = reduce_offsets
+            .into_iter()
+            .map(proc_macro2::Literal::u32_unsuffixed);
+        let can_accept_error = can_accept_error
+            .into_iter()
+            .map(proc_macro2::Literal::u8_unsuffixed);
+
         // range-compressed Vec based terminal-class_id map
         stream.extend(quote! {
             /// A lightweight parser struct that references the static parser tables and production rules.
@@ -920,8 +934,6 @@ impl Grammar {
                         // - SHIFT_TERM_OFFSETS & SHIFT_NONTERM_OFFSETS: Boundaries separating transitions for each state
                         // - REDUCE_DATA: Variable-length reduce map encoding (term_class, len, rules...)
                         // - REDUCE_OFFSETS: Boundaries separating reduce maps for each state
-                        // - RULESET_DATA: Packed shifted rule references (shifted_idx << 16) | (rule_idx)
-                        // - RULESET_OFFSETS: Boundaries separating ruleset references for each state
                         // - CAN_ACCEPT_ERROR: TriState (0 = False, 1 = True, 2 = Maybe)
                         static SHIFT_TERM_DATA: &[u32] = &[ #(#shift_term_data),* ];
                         static SHIFT_TERM_OFFSETS: &[u32] = &[ #(#shift_term_offsets),* ];
@@ -929,8 +941,6 @@ impl Grammar {
                         static SHIFT_NONTERM_OFFSETS: &[u32] = &[ #(#shift_nonterm_offsets),* ];
                         static REDUCE_DATA: &[u32] = &[ #(#reduce_data),* ];
                         static REDUCE_OFFSETS: &[u32] = &[ #(#reduce_offsets),* ];
-                        static RULESET_DATA: &[u32] = &[ #(#ruleset_data),* ];
-                        static RULESET_OFFSETS: &[u32] = &[ #(#ruleset_offsets),* ];
                         static CAN_ACCEPT_ERROR: &[u8] = &[ #(#can_accept_error),* ];
 
                         let num_states = #num_states;
@@ -977,17 +987,6 @@ impl Grammar {
                                 idx += 2 + len;
                             }
 
-                            // Decode the ruleset containing shifted rule references (rule index, shifted dot index)
-                            let ruleset_start = RULESET_OFFSETS[i] as usize;
-                            let ruleset_end = RULESET_OFFSETS[i + 1] as usize;
-                            let mut ruleset = Vec::with_capacity(ruleset_end - ruleset_start);
-                            for idx in ruleset_start..ruleset_end {
-                                let val = RULESET_DATA[idx];
-                                let rule = (val & 0xffff) as usize;
-                                let shifted = (val >> 16) as usize;
-                                ruleset.push(#module_prefix::rule::ShiftedRuleRef { rule, shifted });
-                            }
-
                             let can_accept_error = match CAN_ACCEPT_ERROR[i] {
                                 0 => #module_prefix::TriState::False,
                                 1 => #module_prefix::TriState::True,
@@ -999,7 +998,7 @@ impl Grammar {
                                 shift_goto_map_term,
                                 shift_goto_map_nonterm,
                                 reduce_map,
-                                ruleset,
+                                ruleset: Vec::new(),
                                 can_accept_error,
                             };
                             states.push(intermediate.into());
diff --git a/rusty_lr_parser/src/grammar.rs b/rusty_lr_parser/src/grammar.rs
index e4716560..a7d6dc9d 100644
--- a/rusty_lr_parser/src/grammar.rs
+++ b/rusty_lr_parser/src/grammar.rs
@@ -19,6 +19,7 @@ use crate::nonterminal_info::ReduceAction;
 use crate::nonterminal_info::Rule;
 use crate::parser::args::GrammarArgs;
 use crate::parser::args::IdentOrLiteral;
+use crate::parser::args::TableLayout;
 use crate::parser::location::Located;
 use crate::parser::location::Location;
 use crate::parser::location::SpanManager;
@@ -136,6 +137,8 @@ pub struct Grammar {
 
     /// in the generated parser, the dense table `Vec` will be used instead of the sparse table `HashMap`.
     pub emit_dense: bool,
+    pub layout: TableLayout,
+    pub dense_limit: usize,
 
     /// type for location
     pub location_typename: TokenStream,
@@ -904,7 +907,9 @@ impl Grammar {
             other_terminal_index: 0,
             range_resolver: RangeResolver::new(),
 
-            emit_dense: grammar_args.dense,
+            emit_dense: false,
+            layout: grammar_args.layout,
+            dense_limit: grammar_args.dense_limit,
 
             location_typename,
             error_precedence: None,
@@ -2726,6 +2731,78 @@ impl Grammar {
 
         self.states = new_states;
 
+        // Resolve table layout choice (DenseState vs SparseState) dynamically.
+        // Performance considerations:
+        // - DenseState: Uses O(1) direct array indexing lookup. It is extremely fast but requires a contiguous array
+        //   allocation spanning from min_symbol to max_symbol. This can lead to memory bloat for large, sparse tables.
+        // - SparseState: Uses O(log K) binary search on a sorted static slice. It has zero memory bloat but takes
+        //   slightly more CPU cycles and has higher branching overhead in the hot parsing loop.
+        // - Default/Auto mode: We calculate the estimated memory footprints for both layout types. If the estimated
+        //   DenseState table size fits within `dense_limit` (defaults to 32KB, which comfortably fits inside CPU L1/L2
+        //   caches), or if the ratio of Dense-to-Sparse size is small (< 2.5x), we favor the O(1) speed of DenseState.
+        //   Otherwise, we default to SparseState to minimize memory and binary footprint.
+        self.emit_dense = match self.layout {
+            TableLayout::Dense => true,
+            TableLayout::Sparse => false,
+            TableLayout::Auto => {
+                let mut total_dense_size = 0;
+                let mut total_sparse_size = 0;
+
+                let term_to_usize = |term: TerminalSymbol<usize>| -> usize {
+                    match term {
+                        TerminalSymbol::Term(t) => t,
+                        TerminalSymbol::Error => self.terminal_classes.len(),
+                        TerminalSymbol::Eof => self.terminal_classes.len() + 1,
+                    }
+                };
+
+                for state in &self.states {
+                    // Terminal class transitions
+                    let term_span = if !state.shift_goto_map_term.is_empty() {
+                        let min = term_to_usize(state.shift_goto_map_term.first().unwrap().0);
+                        let max = term_to_usize(state.shift_goto_map_term.last().unwrap().0);
+                        max - min + 1
+                    } else {
+                        0
+                    };
+                    let term_count = state.shift_goto_map_term.len();
+
+                    // Non-terminal transitions
+                    let nonterm_span = if !state.shift_goto_map_nonterm.is_empty() {
+                        let min = state.shift_goto_map_nonterm.first().unwrap().0;
+                        let max = state.shift_goto_map_nonterm.last().unwrap().0;
+                        max - min + 1
+                    } else {
+                        0
+                    };
+                    let nonterm_count = state.shift_goto_map_nonterm.len();
+
+                    // Reduce rule transitions
+                    let reduce_span = if !state.reduce_map.is_empty() {
+                        let min = term_to_usize(state.reduce_map.first().unwrap().0);
+                        let max = term_to_usize(state.reduce_map.last().unwrap().0);
+                        max - min + 1
+                    } else {
+                        0
+                    };
+                    let reduce_count = state.reduce_map.len();
+
+                    // Dense table memory estimation:
+                    // Each slot is an Option<ShiftTarget<StateIndex>>, which takes ~4 bytes (assuming 16-bit state index).
+                    total_dense_size += (term_span + nonterm_span + reduce_span) * 4;
+
+                    // Sparse table memory estimation:
+                    // Each slot stores a tuple (Symbol, ShiftTarget), taking ~8 bytes.
+                    total_sparse_size += (term_count + nonterm_count + reduce_count) * 8;
+                }
+
+                // Choose DenseState if it fits in the cache limit, or if the size overhead is reasonable.
+                total_dense_size <= self.dense_limit
+                    || (total_sparse_size > 0
+                        && (total_dense_size as f64 / total_sparse_size as f64) < 2.5)
+            }
+        };
+
         collector
     }
 }
@@ -2905,13 +2982,12 @@ mod tests {
             %tokentype u8;
             %start Expr;
             %glr;
-            %dense;
             Expr : b'a';
         };
         let grammar_args = Grammar::parse_args(input).expect("Failed glr");
         assert!(grammar_args.error_recovered.is_empty());
         assert!(grammar_args.glr);
-        assert!(grammar_args.dense);
+        assert_eq!(grammar_args.layout, TableLayout::Auto);
     }
 
     #[test]
diff --git a/rusty_lr_parser/src/lib.rs b/rusty_lr_parser/src/lib.rs
index e84b8583..d8419524 100644
--- a/rusty_lr_parser/src/lib.rs
+++ b/rusty_lr_parser/src/lib.rs
@@ -16,6 +16,7 @@ pub(crate) mod terminalset;
 pub(crate) mod token;
 pub mod utils;
 
+pub use parser::args::TableLayout;
 /// Re-export Location for use by external crates (e.g. rusty_lr_buildscript)
 pub use parser::location::Location;
 
diff --git a/rusty_lr_parser/src/parser/args.rs b/rusty_lr_parser/src/parser/args.rs
index fcab2387..b86d6330 100644
--- a/rusty_lr_parser/src/parser/args.rs
+++ b/rusty_lr_parser/src/parser/args.rs
@@ -605,6 +605,13 @@ pub struct RecoveredError {
     pub location: Location,
 }
 
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub enum TableLayout {
+    Auto,
+    Dense,
+    Sparse,
+}
+
 /// parsed arguments for the grammar
 #[derive(Clone)]
 pub struct GrammarArgs {
@@ -623,7 +630,8 @@ pub struct GrammarArgs {
     pub lalr: bool,
     pub glr: bool,
     pub no_optim: bool,
-    pub dense: bool,
+    pub layout: TableLayout,
+    pub dense_limit: usize,
     pub location_typename: Vec<(Location, TokenStream)>,
 
     pub error_recovered: Vec<RecoveredError>,
@@ -644,7 +652,8 @@ impl Default for GrammarArgs {
             lalr: false,
             glr: false,
             no_optim: false,
-            dense: false,
+            layout: TableLayout::Auto,
+            dense_limit: 32768, // default 32KB
             location_typename: Vec::new(),
             error_recovered: Vec::new(),
             span_manager: crate::parser::location::SpanManager::default(),
diff --git a/rusty_lr_parser/src/parser/lexer.rs b/rusty_lr_parser/src/parser/lexer.rs
index f8e653cd..c95f416f 100644
--- a/rusty_lr_parser/src/parser/lexer.rs
+++ b/rusty_lr_parser/src/parser/lexer.rs
@@ -63,7 +63,6 @@ pub enum Lexed {
     Prec(Ident),         // %prec
     Precedence(Ident),   // %precedence
     NoOptim(Ident),      // %nooptim
-    Dense(Ident),        // %dense
     DPrec(Ident),        // %dprec
     Location(Ident),     // %location
 }
@@ -145,9 +144,6 @@ impl Lexed {
             Lexed::NoOptim(ident) => {
                 stream.append(ident);
             }
-            Lexed::Dense(ident) => {
-                stream.append(ident);
-            }
             Lexed::DPrec(ident) => {
                 stream.append(ident);
             }
@@ -207,7 +203,6 @@ impl std::fmt::Display for Lexed {
             Lexed::Prec(_) => write!(f, "prec"),
             Lexed::Precedence(_) => write!(f, "precedence"),
             Lexed::NoOptim(_) => write!(f, "nooptim"),
-            Lexed::Dense(_) => write!(f, "dense"),
             Lexed::DPrec(_) => write!(f, "dprec"),
             Lexed::Location(_) => write!(f, "location"),
         }
@@ -229,7 +224,6 @@ fn ident_to_keyword(ident: Ident) -> Option<Lexed> {
         "prec" => Some(Lexed::Prec(ident)),
         "precedence" => Some(Lexed::Precedence(ident)),
         "nooptim" => Some(Lexed::NoOptim(ident)),
-        "dense" => Some(Lexed::Dense(ident)),
         "dprec" => Some(Lexed::DPrec(ident)),
         "location" => Some(Lexed::Location(ident)),
         _ => None,
diff --git a/rusty_lr_parser/src/parser/parser.rs b/rusty_lr_parser/src/parser/parser.rs
index 3dfbf037..a53da9de 100644
--- a/rusty_lr_parser/src/parser/parser.rs
+++ b/rusty_lr_parser/src/parser/parser.rs
@@ -77,7 +77,6 @@ use rusty_lr_core::rule::ReduceType;
 %token prec Lexed::Prec(_);
 %token precedence Lexed::Precedence(_);
 %token nooptim Lexed::NoOptim(_);
-%token dense Lexed::Dense(_);
 %token dprec Lexed::DPrec(_);
 %token location Lexed::Location(_);
 
@@ -616,16 +615,7 @@ Directive
             location: @error,
         });
     }
-    | percent dense semicolon {
-        data.dense = true;
-    }
-    | percent dense error semicolon {
-        data.error_recovered.push( RecoveredError {
-            message: "Expected semicolon".to_string(),
-            link: "https://github.com/ehwan/RustyLR/blob/main/SYNTAX.md#dense-parser-table".to_string(),
-            location: @error,
-        });
-    }
+
 
 
     | percent location! RustCode semicolon! {
diff --git a/rusty_lr_parser/src/parser/parser_expanded.rs b/rusty_lr_parser/src/parser/parser_expanded.rs
index 1e1e81e2..8367681c 100644
--- a/rusty_lr_parser/src/parser/parser_expanded.rs
+++ b/rusty_lr_parser/src/parser/parser_expanded.rs
@@ -25,8 +25,8 @@ use std::boxed::Box;
 /*
 ====================================Grammar=====================================
 
-# of terminal classes: 43
-# of states: 171
+# of terminal classes: 42
+# of states: 167
 
 0: Rule -> ident RuleType colon RuleLines semicolon
 1: RuleType -> parengroup
@@ -100,85 +100,82 @@ use std::boxed::Box;
 69: Directive -> percent lalr error semicolon
 70: Directive -> percent nooptim semicolon
 71: Directive -> percent nooptim error semicolon
-72: Directive -> percent dense semicolon
-73: Directive -> percent dense error semicolon
-74: Directive -> percent location [^semicolon]+ semicolon
-75: Directive -> percent location semicolon
-76: Directive -> percent error semicolon
-77: GrammarLine -> Rule
-78: GrammarLine -> Directive
-79: Grammar -> GrammarLine+
-80: TokenMapped+ -> TokenMapped
-81: TokenMapped+ -> TokenMapped+ TokenMapped
-82: TokenMapped* -> TokenMapped+
-83: TokenMapped* ->
-84: PrecDef+ -> PrecDef
-85: PrecDef+ -> PrecDef+ PrecDef
-86: PrecDef* -> PrecDef+
-87: PrecDef* ->
-88: caret? -> caret
-89: caret? ->
-90: TerminalSetItem+ -> TerminalSetItem
-91: TerminalSetItem+ -> TerminalSetItem+ TerminalSetItem
-92: TerminalSetItem* -> TerminalSetItem+
-93: TerminalSetItem* ->
-94: Pattern+ -> Pattern
-95: Pattern+ -> Pattern+ Pattern
-96: Pattern* -> Pattern+
-97: Pattern* ->
-98: $sep(Pattern*, pipe, +) -> Pattern*
-99: $sep(Pattern*, pipe, +) -> $sep(Pattern*, pipe, +) pipe Pattern*
-100: comma? -> comma
-101: comma? ->
-102: [^semicolon] -> ident
-103: [^semicolon] -> colon
-104: [^semicolon] -> pipe
-105: [^semicolon] -> percent
-106: [^semicolon] -> equal
-107: [^semicolon] -> plus
-108: [^semicolon] -> star
-109: [^semicolon] -> question
-110: [^semicolon] -> caret
-111: [^semicolon] -> minus
-112: [^semicolon] -> exclamation
-113: [^semicolon] -> dot
-114: [^semicolon] -> dollar
-115: [^semicolon] -> comma
-116: [^semicolon] -> int_literal
-117: [^semicolon] -> byte_literal
-118: [^semicolon] -> byte_str_literal
-119: [^semicolon] -> char_literal
-120: [^semicolon] -> str_literal
-121: [^semicolon] -> [other_literal, <Others>]
-122: [^semicolon] -> parengroup
-123: [^semicolon] -> bracegroup
-124: [^semicolon] -> lparen
-125: [^semicolon] -> rparen
-126: [^semicolon] -> lbracket
-127: [^semicolon] -> rbracket
-128: [^semicolon] -> left
-129: [^semicolon] -> right
-130: [^semicolon] -> token
-131: [^semicolon] -> start
-132: [^semicolon] -> tokentype
-133: [^semicolon] -> userdata
-134: [^semicolon] -> errortype
-135: [^semicolon] -> moduleprefix
-136: [^semicolon] -> lalr
-137: [^semicolon] -> glr
-138: [^semicolon] -> prec
-139: [^semicolon] -> precedence
-140: [^semicolon] -> nooptim
-141: [^semicolon] -> dense
-142: [^semicolon] -> dprec
-143: [^semicolon] -> location
-144: [^semicolon]+ -> [^semicolon]
-145: [^semicolon]+ -> [^semicolon]+ [^semicolon]
-146: IdentOrLiteral+ -> IdentOrLiteral
-147: IdentOrLiteral+ -> IdentOrLiteral+ IdentOrLiteral
-148: GrammarLine+ -> GrammarLine
-149: GrammarLine+ -> GrammarLine GrammarLine+
-150: Augmented -> Grammar eof
+72: Directive -> percent location [^semicolon]+ semicolon
+73: Directive -> percent location semicolon
+74: Directive -> percent error semicolon
+75: GrammarLine -> Rule
+76: GrammarLine -> Directive
+77: Grammar -> GrammarLine+
+78: TokenMapped+ -> TokenMapped
+79: TokenMapped+ -> TokenMapped+ TokenMapped
+80: TokenMapped* -> TokenMapped+
+81: TokenMapped* ->
+82: PrecDef+ -> PrecDef
+83: PrecDef+ -> PrecDef+ PrecDef
+84: PrecDef* -> PrecDef+
+85: PrecDef* ->
+86: caret? -> caret
+87: caret? ->
+88: TerminalSetItem+ -> TerminalSetItem
+89: TerminalSetItem+ -> TerminalSetItem+ TerminalSetItem
+90: TerminalSetItem* -> TerminalSetItem+
+91: TerminalSetItem* ->
+92: Pattern+ -> Pattern
+93: Pattern+ -> Pattern+ Pattern
+94: Pattern* -> Pattern+
+95: Pattern* ->
+96: $sep(Pattern*, pipe, +) -> Pattern*
+97: $sep(Pattern*, pipe, +) -> $sep(Pattern*, pipe, +) pipe Pattern*
+98: comma? -> comma
+99: comma? ->
+100: [^semicolon] -> ident
+101: [^semicolon] -> colon
+102: [^semicolon] -> pipe
+103: [^semicolon] -> percent
+104: [^semicolon] -> equal
+105: [^semicolon] -> plus
+106: [^semicolon] -> star
+107: [^semicolon] -> question
+108: [^semicolon] -> caret
+109: [^semicolon] -> minus
+110: [^semicolon] -> exclamation
+111: [^semicolon] -> dot
+112: [^semicolon] -> dollar
+113: [^semicolon] -> comma
+114: [^semicolon] -> int_literal
+115: [^semicolon] -> byte_literal
+116: [^semicolon] -> byte_str_literal
+117: [^semicolon] -> char_literal
+118: [^semicolon] -> str_literal
+119: [^semicolon] -> [other_literal, <Others>]
+120: [^semicolon] -> parengroup
+121: [^semicolon] -> bracegroup
+122: [^semicolon] -> lparen
+123: [^semicolon] -> rparen
+124: [^semicolon] -> lbracket
+125: [^semicolon] -> rbracket
+126: [^semicolon] -> left
+127: [^semicolon] -> right
+128: [^semicolon] -> token
+129: [^semicolon] -> start
+130: [^semicolon] -> tokentype
+131: [^semicolon] -> userdata
+132: [^semicolon] -> errortype
+133: [^semicolon] -> moduleprefix
+134: [^semicolon] -> lalr
+135: [^semicolon] -> glr
+136: [^semicolon] -> prec
+137: [^semicolon] -> precedence
+138: [^semicolon] -> nooptim
+139: [^semicolon] -> dprec
+140: [^semicolon] -> location
+141: [^semicolon]+ -> [^semicolon]
+142: [^semicolon]+ -> [^semicolon]+ [^semicolon]
+143: IdentOrLiteral+ -> IdentOrLiteral
+144: IdentOrLiteral+ -> IdentOrLiteral+ IdentOrLiteral
+145: GrammarLine+ -> GrammarLine
+146: GrammarLine+ -> GrammarLine GrammarLine+
+147: Augmented -> Grammar eof
 
 */
 // =============================Generated Codes Begin==============================
@@ -192,12 +189,8 @@ pub type GrammarRule =
     ::rusty_lr_core::rule::ProductionRule<GrammarTerminalClasses, GrammarNonTerminals>;
 /// type alias for DFA state
 #[allow(non_camel_case_types, dead_code)]
-pub type GrammarState = ::rusty_lr_core::parser::state::SparseState<
-    GrammarTerminalClasses,
-    GrammarNonTerminals,
-    u8,
-    u8,
->;
+pub type GrammarState =
+    ::rusty_lr_core::parser::state::DenseState<GrammarTerminalClasses, GrammarNonTerminals, u8, u8>;
 /// type alias for `ParseError`
 #[allow(non_camel_case_types, dead_code)]
 pub type GrammarParseError = ::rusty_lr_core::parser::deterministic::ParseError<
@@ -252,7 +245,6 @@ pub enum GrammarTerminalClasses {
     prec,
     precedence,
     nooptim,
-    dense,
     dprec,
     location,
     semicolon,
@@ -268,10 +260,10 @@ impl GrammarTerminalClasses {
     #[inline]
     pub fn from_usize(value: usize) -> Self {
         debug_assert!(
-            value < 45usize,
+            value < 44usize,
             "Terminal class index {} is out of bounds (max {})",
             value,
-            45usize
+            44usize
         );
         unsafe { ::std::mem::transmute(value) }
     }
@@ -316,7 +308,6 @@ impl ::rusty_lr_core::parser::terminalclass::TerminalClass for GrammarTerminalCl
             GrammarTerminalClasses::prec => "prec",
             GrammarTerminalClasses::precedence => "precedence",
             GrammarTerminalClasses::nooptim => "nooptim",
-            GrammarTerminalClasses::dense => "dense",
             GrammarTerminalClasses::dprec => "dprec",
             GrammarTerminalClasses::location => "location",
             GrammarTerminalClasses::semicolon => "semicolon",
@@ -381,7 +372,6 @@ impl ::rusty_lr_core::parser::terminalclass::TerminalClass for GrammarTerminalCl
             Lexed::Prec(_) => GrammarTerminalClasses::prec,
             Lexed::Precedence(_) => GrammarTerminalClasses::precedence,
             Lexed::NoOptim(_) => GrammarTerminalClasses::nooptim,
-            Lexed::Dense(_) => GrammarTerminalClasses::dense,
             Lexed::DPrec(_) => GrammarTerminalClasses::dprec,
             Lexed::Location(_) => GrammarTerminalClasses::location,
             Lexed::Semicolon(_) => GrammarTerminalClasses::semicolon,
@@ -4085,94 +4075,9 @@ impl GrammarDataStack {
         __data_stack.__stack.push(GrammarData::Empty);
         Ok(())
     }
-    ///Directive -> percent dense semicolon
-    #[inline]
-    fn reduce_Directive_25(
-        __data_stack: &mut Self,
-        __location_stack: &mut Vec<Location>,
-        __push_data: bool,
-        shift: &mut bool,
-        lookahead: &::rusty_lr_core::TerminalSymbol<Lexed>,
-        data: &mut GrammarArgs,
-        __rustylr_location0: &mut Location,
-    ) -> Result<(), ::rusty_lr_core::DefaultReduceActionError> {
-        #[cfg(debug_assertions)]
-        {
-            debug_assert!(
-                matches!(__data_stack.__stack.get(__data_stack.__stack.len() - 1 -
-                0usize), Some(& GrammarData::Empty))
-            );
-            debug_assert!(
-                matches!(__data_stack.__stack.get(__data_stack.__stack.len() - 1 -
-                1usize), Some(& GrammarData::__terminals(_)))
-            );
-            debug_assert!(
-                matches!(__data_stack.__stack.get(__data_stack.__stack.len() - 1 -
-                2usize), Some(& GrammarData::__terminals(_)))
-            );
-        }
-        __location_stack.truncate(__location_stack.len() - 3);
-        __data_stack.__stack.pop();
-        let mut dense = match __data_stack.__stack.pop().unwrap() {
-            GrammarData::__terminals(val) => val,
-            _ => unreachable!(),
-        };
-        __data_stack.__stack.pop();
-        {
-            data.dense = true;
-        };
-        __data_stack.__stack.push(GrammarData::Empty);
-        Ok(())
-    }
-    ///Directive -> percent dense error semicolon
-    #[inline]
-    fn reduce_Directive_26(
-        __data_stack: &mut Self,
-        __location_stack: &mut Vec<Location>,
-        __push_data: bool,
-        shift: &mut bool,
-        lookahead: &::rusty_lr_core::TerminalSymbol<Lexed>,
-        data: &mut GrammarArgs,
-        __rustylr_location0: &mut Location,
-    ) -> Result<(), ::rusty_lr_core::DefaultReduceActionError> {
-        #[cfg(debug_assertions)]
-        {
-            debug_assert!(
-                matches!(__data_stack.__stack.get(__data_stack.__stack.len() - 1 -
-                0usize), Some(& GrammarData::Empty))
-            );
-            debug_assert!(
-                matches!(__data_stack.__stack.get(__data_stack.__stack.len() - 1 -
-                1usize), Some(& GrammarData::Empty))
-            );
-            debug_assert!(
-                matches!(__data_stack.__stack.get(__data_stack.__stack.len() - 1 -
-                2usize), Some(& GrammarData::__terminals(_)))
-            );
-            debug_assert!(
-                matches!(__data_stack.__stack.get(__data_stack.__stack.len() - 1 -
-                3usize), Some(& GrammarData::__terminals(_)))
-            );
-        }
-        __location_stack.pop();
-        let mut __rustylr_location_error = __location_stack.pop().unwrap();
-        __location_stack.truncate(__location_stack.len() - 2);
-        __data_stack.__stack.truncate(__data_stack.__stack.len() - 4);
-        {
-            data.error_recovered
-                .push(RecoveredError {
-                    message: "Expected semicolon".to_string(),
-                    link: "https://github.com/ehwan/RustyLR/blob/main/SYNTAX.md#dense-parser-table"
-                        .to_string(),
-                    location: __rustylr_location_error,
-                });
-        };
-        __data_stack.__stack.push(GrammarData::Empty);
-        Ok(())
-    }
     ///Directive -> percent location [^semicolon]+ semicolon
     #[inline]
-    fn reduce_Directive_27(
+    fn reduce_Directive_25(
         __data_stack: &mut Self,
         __location_stack: &mut Vec<Location>,
         __push_data: bool,
@@ -4223,7 +4128,7 @@ impl GrammarDataStack {
     }
     ///Directive -> percent location semicolon
     #[inline]
-    fn reduce_Directive_28(
+    fn reduce_Directive_26(
         __data_stack: &mut Self,
         __location_stack: &mut Vec<Location>,
         __push_data: bool,
@@ -4270,7 +4175,7 @@ impl GrammarDataStack {
     }
     ///Directive -> percent error semicolon
     #[inline]
-    fn reduce_Directive_29(
+    fn reduce_Directive_27(
         __data_stack: &mut Self,
         __location_stack: &mut Vec<Location>,
         __push_data: bool,
@@ -6084,28 +5989,6 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                 )
             }
             75usize => {
-                Self::reduce_Directive_28(
-                    data_stack,
-                    location_stack,
-                    push_data,
-                    shift,
-                    lookahead,
-                    user_data,
-                    location0,
-                )
-            }
-            76usize => {
-                Self::reduce_Directive_29(
-                    data_stack,
-                    location_stack,
-                    push_data,
-                    shift,
-                    lookahead,
-                    user_data,
-                    location0,
-                )
-            }
-            77usize => {
                 Self::reduce_GrammarLine_0(
                     data_stack,
                     location_stack,
@@ -6116,7 +5999,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            80usize => {
+            78usize => {
                 Self::reduce__TokenMappedPlus15_0(
                     data_stack,
                     location_stack,
@@ -6127,7 +6010,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            81usize => {
+            79usize => {
                 Self::reduce__TokenMappedPlus15_1(
                     data_stack,
                     location_stack,
@@ -6138,7 +6021,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            82usize => {
+            80usize => {
                 Self::reduce__TokenMappedStar16_0(
                     data_stack,
                     location_stack,
@@ -6149,7 +6032,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            83usize => {
+            81usize => {
                 Self::reduce__TokenMappedStar16_1(
                     data_stack,
                     location_stack,
@@ -6160,7 +6043,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            84usize => {
+            82usize => {
                 Self::reduce__PrecDefPlus17_0(
                     data_stack,
                     location_stack,
@@ -6171,7 +6054,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            85usize => {
+            83usize => {
                 Self::reduce__PrecDefPlus17_1(
                     data_stack,
                     location_stack,
@@ -6182,7 +6065,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            86usize => {
+            84usize => {
                 Self::reduce__PrecDefStar18_0(
                     data_stack,
                     location_stack,
@@ -6193,7 +6076,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            87usize => {
+            85usize => {
                 Self::reduce__PrecDefStar18_1(
                     data_stack,
                     location_stack,
@@ -6204,7 +6087,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            88usize => {
+            86usize => {
                 Self::reduce__caretQuestion19_0(
                     data_stack,
                     location_stack,
@@ -6215,7 +6098,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            89usize => {
+            87usize => {
                 Self::reduce__caretQuestion19_1(
                     data_stack,
                     location_stack,
@@ -6226,7 +6109,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            90usize => {
+            88usize => {
                 Self::reduce__TerminalSetItemPlus20_0(
                     data_stack,
                     location_stack,
@@ -6237,7 +6120,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            91usize => {
+            89usize => {
                 Self::reduce__TerminalSetItemPlus20_1(
                     data_stack,
                     location_stack,
@@ -6248,7 +6131,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            92usize => {
+            90usize => {
                 Self::reduce__TerminalSetItemStar21_0(
                     data_stack,
                     location_stack,
@@ -6259,7 +6142,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            93usize => {
+            91usize => {
                 Self::reduce__TerminalSetItemStar21_1(
                     data_stack,
                     location_stack,
@@ -6270,7 +6153,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            94usize => {
+            92usize => {
                 Self::reduce__PatternPlus22_0(
                     data_stack,
                     location_stack,
@@ -6281,7 +6164,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            95usize => {
+            93usize => {
                 Self::reduce__PatternPlus22_1(
                     data_stack,
                     location_stack,
@@ -6292,7 +6175,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            96usize => {
+            94usize => {
                 Self::reduce__PatternStar23_0(
                     data_stack,
                     location_stack,
@@ -6303,7 +6186,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            97usize => {
+            95usize => {
                 Self::reduce__PatternStar23_1(
                     data_stack,
                     location_stack,
@@ -6314,7 +6197,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            98usize => {
+            96usize => {
                 Self::reduce___PatternStar23SepPlus24_0(
                     data_stack,
                     location_stack,
@@ -6325,7 +6208,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            99usize => {
+            97usize => {
                 Self::reduce___PatternStar23SepPlus24_1(
                     data_stack,
                     location_stack,
@@ -6336,7 +6219,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            100usize => {
+            98usize => {
                 Self::reduce__commaQuestion25_0(
                     data_stack,
                     location_stack,
@@ -6347,7 +6230,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            101usize => {
+            99usize => {
                 Self::reduce__commaQuestion25_1(
                     data_stack,
                     location_stack,
@@ -6358,7 +6241,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            144usize => {
+            141usize => {
                 Self::reduce___TermSet26Plus27_0(
                     data_stack,
                     location_stack,
@@ -6369,7 +6252,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            145usize => {
+            142usize => {
                 Self::reduce___TermSet26Plus27_1(
                     data_stack,
                     location_stack,
@@ -6380,7 +6263,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            146usize => {
+            143usize => {
                 Self::reduce__IdentOrLiteralPlus28_0(
                     data_stack,
                     location_stack,
@@ -6391,7 +6274,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            147usize => {
+            144usize => {
                 Self::reduce__IdentOrLiteralPlus28_1(
                     data_stack,
                     location_stack,
@@ -6402,7 +6285,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            148usize => {
+            145usize => {
                 Self::reduce__GrammarLinePlus29_0(
                     data_stack,
                     location_stack,
@@ -6413,7 +6296,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack {
                     location0,
                 )
             }
-            149usize => {
+            146usize => {
                 Self::reduce__GrammarLinePlus29_1(
                     data_stack,
                     location_stack,
@@ -6464,93 +6347,59 @@ impl ::rusty_lr_core::parser::Parser for GrammarParser {
         RULES
             .get_or_init(|| {
                 static RULE_NAMES: &[u32] = &[
-                    0u32, 1u32, 1u32, 2u32, 2u32, 3u32, 4u32, 4u32, 4u32, 4u32, 4u32,
-                    5u32, 5u32, 6u32, 6u32, 6u32, 6u32, 6u32, 6u32, 6u32, 6u32, 6u32,
-                    7u32, 7u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32,
-                    8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 9u32, 9u32,
-                    10u32, 10u32, 10u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32,
-                    11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32,
-                    11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32,
-                    11u32, 11u32, 11u32, 12u32, 12u32, 13u32, 14u32, 14u32, 15u32, 15u32,
-                    16u32, 16u32, 17u32, 17u32, 18u32, 18u32, 19u32, 19u32, 20u32, 20u32,
-                    21u32, 21u32, 22u32, 22u32, 23u32, 23u32, 24u32, 24u32, 25u32, 25u32,
-                    25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32,
-                    25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32,
-                    25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32,
-                    25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32,
-                    26u32, 26u32, 27u32, 27u32, 28u32, 28u32, 29u32,
+                    0, 1, 1, 2, 2, 3, 4, 4, 4, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
+                    7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 10,
+                    10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+                    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 13, 14,
+                    14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
+                    23, 23, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
+                    25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
+                    25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 27, 27, 28, 28,
+                    29,
                 ];
                 static RULE_PRECEDENCES: &[u32] = &[
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 1u32, 1u32, 0u32, 1u32, 1u32, 0u32, 1u32, 1u32,
-                    0u32, 0u32, 0u32, 5u32, 5u32, 5u32, 5u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 1u32, 0u32, 5u32, 5u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0,
+                    0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 5, 0, 0, 0, 0, 0, 0,
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                 ];
                 static RULE_TOKENS_DATA: &[u32] = &[
-                    0u32, 3u32, 4u32, 5u32, 74u32, 30u32, 5u32, 6u32, 7u32, 7u32, 31u32,
-                    35u32, 19u32, 8u32, 62u32, 21u32, 8u32, 62u32, 86u32, 8u32, 70u32,
-                    20u32, 8u32, 70u32, 86u32, 8u32, 86u32, 17u32, 0u32, 10u32, 17u32,
-                    0u32, 0u32, 84u32, 0u32, 0u32, 84u32, 86u32, 26u32, 26u32, 84u32,
-                    26u32, 26u32, 84u32, 86u32, 22u32, 22u32, 84u32, 22u32, 22u32, 84u32,
-                    86u32, 38u32, 37u32, 41u32, 40u32, 14u32, 0u32, 17u32, 76u32, 17u32,
-                    78u32, 17u32, 80u32, 17u32, 82u32, 15u32, 34u32, 47u32, 36u32, 34u32,
-                    86u32, 36u32, 22u32, 24u32, 26u32, 28u32, 17u32, 84u32, 17u32, 16u32,
-                    0u32, 34u32, 17u32, 18u32, 17u32, 49u32, 36u32, 16u32, 0u32, 34u32,
-                    17u32, 18u32, 17u32, 18u32, 76u32, 36u32, 16u32, 0u32, 34u32, 17u32,
-                    18u32, 17u32, 18u32, 78u32, 36u32, 16u32, 0u32, 34u32, 17u32, 18u32,
-                    17u32, 86u32, 36u32, 16u32, 0u32, 34u32, 17u32, 18u32, 17u32, 18u32,
-                    86u32, 36u32, 32u32, 0u32, 22u32, 26u32, 8u32, 46u32, 0u32, 53u32,
-                    74u32, 8u32, 46u32, 0u32, 74u32, 8u32, 46u32, 86u32, 74u32, 8u32,
-                    48u32, 0u32, 74u32, 8u32, 48u32, 86u32, 74u32, 8u32, 50u32, 53u32,
-                    74u32, 8u32, 50u32, 74u32, 8u32, 52u32, 53u32, 74u32, 8u32, 52u32,
-                    74u32, 8u32, 42u32, 55u32, 74u32, 8u32, 42u32, 86u32, 74u32, 8u32,
-                    44u32, 55u32, 74u32, 8u32, 44u32, 86u32, 74u32, 8u32, 64u32, 55u32,
-                    74u32, 8u32, 64u32, 86u32, 74u32, 8u32, 54u32, 53u32, 74u32, 8u32,
-                    54u32, 74u32, 8u32, 56u32, 53u32, 74u32, 8u32, 56u32, 74u32, 8u32,
-                    60u32, 74u32, 8u32, 60u32, 86u32, 74u32, 8u32, 58u32, 74u32, 8u32,
-                    58u32, 86u32, 74u32, 8u32, 66u32, 74u32, 8u32, 66u32, 86u32, 74u32,
-                    8u32, 68u32, 74u32, 8u32, 68u32, 86u32, 74u32, 8u32, 72u32, 53u32,
-                    74u32, 8u32, 72u32, 74u32, 8u32, 86u32, 74u32, 1u32, 23u32, 57u32,
-                    11u32, 29u32, 11u32, 29u32, 9u32, 33u32, 9u32, 33u32, 12u32, 13u32,
-                    39u32, 13u32, 39u32, 17u32, 43u32, 17u32, 43u32, 45u32, 47u32, 6u32,
-                    45u32, 18u32, 0u32, 4u32, 6u32, 8u32, 10u32, 76u32, 78u32, 80u32,
-                    12u32, 84u32, 82u32, 14u32, 16u32, 18u32, 20u32, 22u32, 24u32, 26u32,
-                    28u32, 2u32, 30u32, 32u32, 34u32, 36u32, 38u32, 40u32, 42u32, 44u32,
-                    46u32, 48u32, 50u32, 52u32, 54u32, 56u32, 58u32, 60u32, 62u32, 64u32,
-                    66u32, 68u32, 70u32, 72u32, 51u32, 53u32, 51u32, 21u32, 55u32, 21u32,
-                    25u32, 25u32, 57u32, 27u32, 88u32,
+                    0, 3, 4, 5, 72, 30, 5, 6, 7, 7, 31, 35, 19, 8, 62, 21, 8, 62, 84, 8,
+                    68, 20, 8, 68, 84, 8, 84, 17, 0, 10, 17, 0, 0, 82, 0, 0, 82, 84, 26,
+                    26, 82, 26, 26, 82, 84, 22, 22, 82, 22, 22, 82, 84, 38, 37, 41, 40,
+                    14, 0, 17, 74, 17, 76, 17, 78, 17, 80, 15, 34, 47, 36, 34, 84, 36,
+                    22, 24, 26, 28, 17, 82, 17, 16, 0, 34, 17, 18, 17, 49, 36, 16, 0, 34,
+                    17, 18, 17, 18, 74, 36, 16, 0, 34, 17, 18, 17, 18, 76, 36, 16, 0, 34,
+                    17, 18, 17, 84, 36, 16, 0, 34, 17, 18, 17, 18, 84, 36, 32, 0, 22, 26,
+                    8, 46, 0, 53, 72, 8, 46, 0, 72, 8, 46, 84, 72, 8, 48, 0, 72, 8, 48,
+                    84, 72, 8, 50, 53, 72, 8, 50, 72, 8, 52, 53, 72, 8, 52, 72, 8, 42,
+                    55, 72, 8, 42, 84, 72, 8, 44, 55, 72, 8, 44, 84, 72, 8, 64, 55, 72,
+                    8, 64, 84, 72, 8, 54, 53, 72, 8, 54, 72, 8, 56, 53, 72, 8, 56, 72, 8,
+                    60, 72, 8, 60, 84, 72, 8, 58, 72, 8, 58, 84, 72, 8, 66, 72, 8, 66,
+                    84, 72, 8, 70, 53, 72, 8, 70, 72, 8, 84, 72, 1, 23, 57, 11, 29, 11,
+                    29, 9, 33, 9, 33, 12, 13, 39, 13, 39, 17, 43, 17, 43, 45, 47, 6, 45,
+                    18, 0, 4, 6, 8, 10, 74, 76, 78, 12, 82, 80, 14, 16, 18, 20, 22, 24,
+                    26, 28, 2, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56,
+                    58, 60, 62, 64, 66, 68, 70, 51, 53, 51, 21, 55, 21, 25, 25, 57, 27,
+                    86,
                 ];
                 static RULE_TOKENS_OFFSETS: &[u32] = &[
-                    0u32, 5u32, 6u32, 6u32, 9u32, 10u32, 13u32, 16u32, 19u32, 22u32,
-                    25u32, 27u32, 28u32, 31u32, 32u32, 35u32, 38u32, 39u32, 42u32, 45u32,
-                    46u32, 49u32, 52u32, 56u32, 57u32, 58u32, 60u32, 62u32, 64u32, 66u32,
-                    67u32, 70u32, 73u32, 74u32, 75u32, 76u32, 77u32, 80u32, 88u32, 97u32,
-                    106u32, 114u32, 123u32, 124u32, 124u32, 125u32, 126u32, 127u32,
-                    132u32, 136u32, 140u32, 144u32, 148u32, 152u32, 155u32, 159u32,
-                    162u32, 166u32, 170u32, 174u32, 178u32, 182u32, 186u32, 190u32,
-                    193u32, 197u32, 200u32, 203u32, 207u32, 210u32, 214u32, 217u32,
-                    221u32, 224u32, 228u32, 232u32, 235u32, 238u32, 239u32, 240u32,
-                    241u32, 242u32, 244u32, 245u32, 245u32, 246u32, 248u32, 249u32,
-                    249u32, 250u32, 250u32, 251u32, 253u32, 254u32, 254u32, 255u32,
-                    257u32, 258u32, 258u32, 259u32, 262u32, 263u32, 263u32, 264u32,
-                    265u32, 266u32, 267u32, 268u32, 269u32, 270u32, 271u32, 272u32,
-                    273u32, 274u32, 275u32, 276u32, 277u32, 278u32, 279u32, 280u32,
-                    281u32, 282u32, 283u32, 284u32, 285u32, 286u32, 287u32, 288u32,
-                    289u32, 290u32, 291u32, 292u32, 293u32, 294u32, 295u32, 296u32,
-                    297u32, 298u32, 299u32, 300u32, 301u32, 302u32, 303u32, 304u32,
-                    305u32, 306u32, 308u32, 309u32, 311u32, 312u32, 314u32, 316u32,
+                    0, 5, 6, 6, 9, 10, 13, 16, 19, 22, 25, 27, 28, 31, 32, 35, 38, 39,
+                    42, 45, 46, 49, 52, 56, 57, 58, 60, 62, 64, 66, 67, 70, 73, 74, 75,
+                    76, 77, 80, 88, 97, 106, 114, 123, 124, 124, 125, 126, 127, 132, 136,
+                    140, 144, 148, 152, 155, 159, 162, 166, 170, 174, 178, 182, 186, 190,
+                    193, 197, 200, 203, 207, 210, 214, 217, 221, 225, 228, 231, 232, 233,
+                    234, 235, 237, 238, 238, 239, 241, 242, 242, 243, 243, 244, 246, 247,
+                    247, 248, 250, 251, 251, 252, 255, 256, 256, 257, 258, 259, 260, 261,
+                    262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+                    276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+                    290, 291, 292, 293, 294, 295, 296, 297, 298, 300, 301, 303, 304, 306,
+                    308,
                 ];
-                let num_rules = 151usize;
+                let num_rules = 148usize;
                 let mut rules = Vec::with_capacity(num_rules);
                 for i in 0..num_rules {
                     let name = GrammarNonTerminals::from_usize(RULE_NAMES[i] as usize);
@@ -6606,734 +6455,357 @@ impl ::rusty_lr_core::parser::Parser for GrammarParser {
         STATES
             .get_or_init(|| {
                 static SHIFT_TERM_DATA: &[u32] = &[
-                    2147516416u32, 2150629380u32, 2147549199u32, 2147614722u32,
-                    2147647488u32, 2147745799u32, 2147778568u32, 2147876875u32,
-                    2147909644u32, 2147942413u32, 2147975182u32, 2148007953u32,
-                    2148040723u32, 2147680261u32, 2147713024u32, 2147745799u32,
-                    2147778568u32, 2147876875u32, 2147909644u32, 2147942413u32,
-                    2147975182u32, 2148007953u32, 2148040723u32, 2147811328u32,
-                    2147844113u32, 2147713024u32, 2147745799u32, 2147778568u32,
-                    2147876875u32, 2147909644u32, 2147942413u32, 2147975182u32,
-                    2148007953u32, 2148040723u32, 2147713024u32, 2147745799u32,
-                    2147778568u32, 2147876875u32, 2147909644u32, 2147942413u32,
-                    2147975182u32, 2148007953u32, 2148040723u32, 2148794411u32,
-                    2148073478u32, 2148139008u32, 2148270091u32, 2148401165u32,
-                    2148171818u32, 2148204544u32, 2148237355u32, 2148302890u32,
-                    2148335627u32, 2148368427u32, 2148433962u32, 2148466701u32,
-                    2148499499u32, 2148139008u32, 2148270091u32, 2148401165u32,
-                    2148663316u32, 2148761609u32, 2148892710u32, 2148925479u32,
-                    2148958248u32, 2148991017u32, 2149023786u32, 2147713024u32,
-                    2147745799u32, 2147778568u32, 2147876875u32, 2147909644u32,
-                    2147942413u32, 2147975182u32, 2148007953u32, 2148040723u32,
-                    2148827154u32, 2148892710u32, 2148925479u32, 2148958248u32,
-                    2148991017u32, 2149023786u32, 2147713024u32, 2147745799u32,
-                    2147778568u32, 2147876875u32, 2147909644u32, 2147942413u32,
-                    2147975182u32, 2148007953u32, 2148040723u32, 2148892710u32,
-                    2148925479u32, 2148958248u32, 2148991017u32, 2147713024u32,
-                    2147745799u32, 2147778568u32, 2147876875u32, 2147909644u32,
-                    2147942413u32, 2147975182u32, 2148007953u32, 2148040723u32,
-                    2148892710u32, 2148925479u32, 2148958248u32, 2148991017u32,
-                    2149023786u32, 2149220355u32, 2149285906u32, 2147713024u32,
-                    2147745799u32, 2147778568u32, 2147876875u32, 2147909644u32,
-                    2147942413u32, 2147975182u32, 2148007953u32, 2148040723u32,
-                    2149351433u32, 2148892710u32, 2148925479u32, 2148958248u32,
-                    2148991017u32, 2149023786u32, 2149580843u32, 2149384230u32,
-                    2149449767u32, 2149515307u32, 2149416978u32, 2149482514u32,
-                    2149548050u32, 2149613586u32, 2149679122u32, 2148892710u32,
-                    2148925479u32, 2148958248u32, 2148991017u32, 2149023786u32,
-                    2149777411u32, 3080229u32, 2147647488u32, 2147745799u32,
-                    2147778568u32, 2147876875u32, 2147909644u32, 2147942413u32,
-                    2147975182u32, 2148007953u32, 2148040723u32, 2148892710u32,
-                    2148925479u32, 2148958248u32, 2148991017u32, 2149023786u32,
-                    2147647488u32, 2147745799u32, 2147778568u32, 2147876875u32,
-                    2147909644u32, 2147942413u32, 2147975182u32, 2148007953u32,
-                    2148040723u32, 2150006788u32, 2150039583u32, 2150236195u32,
-                    2150334507u32, 2150072320u32, 2150105099u32, 2150137869u32,
-                    2150170667u32, 2150268938u32, 2150301739u32, 2150006788u32,
-                    2150498320u32, 2150662165u32, 2150891542u32, 2151055383u32,
-                    2151350296u32, 2151514137u32, 2151645210u32, 2151776283u32,
-                    2151907356u32, 2152038429u32, 2152169502u32, 2152300576u32,
-                    2152464417u32, 2152595490u32, 2152726564u32, 2152857643u32,
-                    2150072320u32, 2150105099u32, 2150137869u32, 2150694955u32,
-                    3244069u32, 2150072320u32, 2150105099u32, 2150137869u32, 3342373u32,
-                    2150072320u32, 2150105099u32, 2150137869u32, 2150924331u32,
-                    3473445u32, 2150072320u32, 2150105099u32, 2150137869u32, 3538981u32,
-                    2151088128u32, 2151284779u32, 2151153664u32, 2151153665u32,
-                    2151153666u32, 2151153667u32, 2151153668u32, 2151153669u32,
-                    2151153670u32, 2151153671u32, 2151153672u32, 2151153673u32,
-                    2151153674u32, 2151153675u32, 2151153676u32, 2151153677u32,
-                    2151153678u32, 2151153679u32, 2151153680u32, 2151153681u32,
-                    2151153682u32, 2151153683u32, 2151153684u32, 2151153685u32,
-                    2151153686u32, 2151153687u32, 2151153688u32, 2151153689u32,
-                    2151153690u32, 2151153691u32, 2151153692u32, 2151153693u32,
-                    2151153694u32, 2151153695u32, 2151153696u32, 2151153697u32,
-                    2151153698u32, 2151153699u32, 2151153700u32, 3637285u32,
-                    2151153702u32, 2151153703u32, 2151153704u32, 2151153705u32,
-                    2151153706u32, 2151251968u32, 2151251969u32, 2151251970u32,
-                    2151251971u32, 2151251972u32, 2151251973u32, 2151251974u32,
-                    2151251975u32, 2151251976u32, 2151251977u32, 2151251978u32,
-                    2151251979u32, 2151251980u32, 2151251981u32, 2151251982u32,
-                    2151251983u32, 2151251984u32, 2151251985u32, 2151251986u32,
-                    2151251987u32, 2151251988u32, 2151251989u32, 2151251990u32,
-                    2151251991u32, 2151251992u32, 2151251993u32, 2151251994u32,
-                    2151251995u32, 2151251996u32, 2151251997u32, 2151251998u32,
-                    2151251999u32, 2151252000u32, 2151252001u32, 2151252002u32,
-                    2151252003u32, 2151252004u32, 3735589u32, 2151252006u32,
-                    2151252007u32, 2151252008u32, 2151252009u32, 2151252010u32,
-                    3833893u32, 2151383040u32, 2151448619u32, 3932197u32, 3997733u32,
-                    2151153664u32, 2151153665u32, 2151153666u32, 2151153667u32,
-                    2151153668u32, 2151153669u32, 2151153670u32, 2151153671u32,
-                    2151153672u32, 2151153673u32, 2151153674u32, 2151153675u32,
-                    2151153676u32, 2151153677u32, 2151153678u32, 2151153679u32,
-                    2151153680u32, 2151153681u32, 2151153682u32, 2151153683u32,
-                    2151153684u32, 2151153685u32, 2151153686u32, 2151153687u32,
-                    2151153688u32, 2151153689u32, 2151153690u32, 2151153691u32,
-                    2151153692u32, 2151153693u32, 2151153694u32, 2151153695u32,
-                    2151153696u32, 2151153697u32, 2151153698u32, 2151153699u32,
-                    2151153700u32, 4063269u32, 2151153702u32, 2151153703u32,
-                    2151153704u32, 2151153705u32, 2151153706u32, 2151251968u32,
-                    2151251969u32, 2151251970u32, 2151251971u32, 2151251972u32,
-                    2151251973u32, 2151251974u32, 2151251975u32, 2151251976u32,
-                    2151251977u32, 2151251978u32, 2151251979u32, 2151251980u32,
-                    2151251981u32, 2151251982u32, 2151251983u32, 2151251984u32,
-                    2151251985u32, 2151251986u32, 2151251987u32, 2151251988u32,
-                    2151251989u32, 2151251990u32, 2151251991u32, 2151251992u32,
-                    2151251993u32, 2151251994u32, 2151251995u32, 2151251996u32,
-                    2151251997u32, 2151251998u32, 2151251999u32, 2151252000u32,
-                    2151252001u32, 2151252002u32, 2151252003u32, 2151252004u32,
-                    4128805u32, 2151252006u32, 2151252007u32, 2151252008u32,
-                    2151252009u32, 2151252010u32, 2151153664u32, 2151153665u32,
-                    2151153666u32, 2151153667u32, 2151153668u32, 2151153669u32,
-                    2151153670u32, 2151153671u32, 2151153672u32, 2151153673u32,
-                    2151153674u32, 2151153675u32, 2151153676u32, 2151153677u32,
-                    2151153678u32, 2151153679u32, 2151153680u32, 2151153681u32,
-                    2151153682u32, 2151153683u32, 2151153684u32, 2151153685u32,
-                    2151153686u32, 2151153687u32, 2151153688u32, 2151153689u32,
-                    2151153690u32, 2151153691u32, 2151153692u32, 2151153693u32,
-                    2151153694u32, 2151153695u32, 2151153696u32, 2151153697u32,
-                    2151153698u32, 2151153699u32, 2151153700u32, 4194341u32,
-                    2151153702u32, 2151153703u32, 2151153704u32, 2151153705u32,
-                    2151153706u32, 2151251968u32, 2151251969u32, 2151251970u32,
-                    2151251971u32, 2151251972u32, 2151251973u32, 2151251974u32,
-                    2151251975u32, 2151251976u32, 2151251977u32, 2151251978u32,
-                    2151251979u32, 2151251980u32, 2151251981u32, 2151251982u32,
-                    2151251983u32, 2151251984u32, 2151251985u32, 2151251986u32,
-                    2151251987u32, 2151251988u32, 2151251989u32, 2151251990u32,
-                    2151251991u32, 2151251992u32, 2151251993u32, 2151251994u32,
-                    2151251995u32, 2151251996u32, 2151251997u32, 2151251998u32,
-                    2151251999u32, 2151252000u32, 2151252001u32, 2151252002u32,
-                    2151252003u32, 2151252004u32, 4259877u32, 2151252006u32,
-                    2151252007u32, 2151252008u32, 2151252009u32, 2151252010u32,
-                    2151153664u32, 2151153665u32, 2151153666u32, 2151153667u32,
-                    2151153668u32, 2151153669u32, 2151153670u32, 2151153671u32,
-                    2151153672u32, 2151153673u32, 2151153674u32, 2151153675u32,
-                    2151153676u32, 2151153677u32, 2151153678u32, 2151153679u32,
-                    2151153680u32, 2151153681u32, 2151153682u32, 2151153683u32,
-                    2151153684u32, 2151153685u32, 2151153686u32, 2151153687u32,
-                    2151153688u32, 2151153689u32, 2151153690u32, 2151153691u32,
-                    2151153692u32, 2151153693u32, 2151153694u32, 2151153695u32,
-                    2151153696u32, 2151153697u32, 2151153698u32, 2151153699u32,
-                    2151153700u32, 4325413u32, 2151153702u32, 2151153703u32,
-                    2151153704u32, 2151153705u32, 2151153706u32, 2151251968u32,
-                    2151251969u32, 2151251970u32, 2151251971u32, 2151251972u32,
-                    2151251973u32, 2151251974u32, 2151251975u32, 2151251976u32,
-                    2151251977u32, 2151251978u32, 2151251979u32, 2151251980u32,
-                    2151251981u32, 2151251982u32, 2151251983u32, 2151251984u32,
-                    2151251985u32, 2151251986u32, 2151251987u32, 2151251988u32,
-                    2151251989u32, 2151251990u32, 2151251991u32, 2151251992u32,
-                    2151251993u32, 2151251994u32, 2151251995u32, 2151251996u32,
-                    2151251997u32, 2151251998u32, 2151251999u32, 2151252000u32,
-                    2151252001u32, 2151252002u32, 2151252003u32, 2151252004u32,
-                    4390949u32, 2151252006u32, 2151252007u32, 2151252008u32,
-                    2151252009u32, 2151252010u32, 2151153664u32, 2151153665u32,
-                    2151153666u32, 2151153667u32, 2151153668u32, 2151153669u32,
-                    2151153670u32, 2151153671u32, 2151153672u32, 2151153673u32,
-                    2151153674u32, 2151153675u32, 2151153676u32, 2151153677u32,
-                    2151153678u32, 2151153679u32, 2151153680u32, 2151153681u32,
-                    2151153682u32, 2151153683u32, 2151153684u32, 2151153685u32,
-                    2151153686u32, 2151153687u32, 2151153688u32, 2151153689u32,
-                    2151153690u32, 2151153691u32, 2151153692u32, 2151153693u32,
-                    2151153694u32, 2151153695u32, 2151153696u32, 2151153697u32,
-                    2151153698u32, 2151153699u32, 2151153700u32, 4456485u32,
-                    2151153702u32, 2151153703u32, 2151153704u32, 2151153705u32,
-                    2151153706u32, 2151251968u32, 2151251969u32, 2151251970u32,
-                    2151251971u32, 2151251972u32, 2151251973u32, 2151251974u32,
-                    2151251975u32, 2151251976u32, 2151251977u32, 2151251978u32,
-                    2151251979u32, 2151251980u32, 2151251981u32, 2151251982u32,
-                    2151251983u32, 2151251984u32, 2151251985u32, 2151251986u32,
-                    2151251987u32, 2151251988u32, 2151251989u32, 2151251990u32,
-                    2151251991u32, 2151251992u32, 2151251993u32, 2151251994u32,
-                    2151251995u32, 2151251996u32, 2151251997u32, 2151251998u32,
-                    2151251999u32, 2151252000u32, 2151252001u32, 2151252002u32,
-                    2151252003u32, 2151252004u32, 4522021u32, 2151252006u32,
-                    2151252007u32, 2151252008u32, 2151252009u32, 2151252010u32,
-                    4587557u32, 2152103979u32, 4653093u32, 4718629u32, 2152235051u32,
-                    4784165u32, 2150072320u32, 2150105099u32, 2150137869u32,
-                    2152333355u32, 4882469u32, 2150072320u32, 2150105099u32,
-                    2150137869u32, 4948005u32, 5013541u32, 2152529963u32, 5079077u32,
-                    5144613u32, 2152661035u32, 5210149u32, 2151153664u32, 2151153665u32,
-                    2151153666u32, 2151153667u32, 2151153668u32, 2151153669u32,
-                    2151153670u32, 2151153671u32, 2151153672u32, 2151153673u32,
-                    2151153674u32, 2151153675u32, 2151153676u32, 2151153677u32,
-                    2151153678u32, 2151153679u32, 2151153680u32, 2151153681u32,
-                    2151153682u32, 2151153683u32, 2151153684u32, 2151153685u32,
-                    2151153686u32, 2151153687u32, 2151153688u32, 2151153689u32,
-                    2151153690u32, 2151153691u32, 2151153692u32, 2151153693u32,
-                    2151153694u32, 2151153695u32, 2151153696u32, 2151153697u32,
-                    2151153698u32, 2151153699u32, 2151153700u32, 5275685u32,
-                    2151153702u32, 2151153703u32, 2151153704u32, 2151153705u32,
-                    2151153706u32, 2151251968u32, 2151251969u32, 2151251970u32,
-                    2151251971u32, 2151251972u32, 2151251973u32, 2151251974u32,
-                    2151251975u32, 2151251976u32, 2151251977u32, 2151251978u32,
-                    2151251979u32, 2151251980u32, 2151251981u32, 2151251982u32,
-                    2151251983u32, 2151251984u32, 2151251985u32, 2151251986u32,
-                    2151251987u32, 2151251988u32, 2151251989u32, 2151251990u32,
-                    2151251991u32, 2151251992u32, 2151251993u32, 2151251994u32,
-                    2151251995u32, 2151251996u32, 2151251997u32, 2151251998u32,
-                    2151251999u32, 2151252000u32, 2151252001u32, 2151252002u32,
-                    2151252003u32, 2151252004u32, 5341221u32, 2151252006u32,
-                    2151252007u32, 2151252008u32, 2151252009u32, 2151252010u32,
-                    5406757u32, 2147516416u32, 2150629380u32, 2153054252u32,
+                    2147516416, 2150629380, 2147549199, 2147614722, 2147647488,
+                    2147745799, 2147778568, 2147876875, 2147909644, 2147942413,
+                    2147975182, 2148007953, 2148040723, 2147680261, 2147713024,
+                    2147745799, 2147778568, 2147876875, 2147909644, 2147942413,
+                    2147975182, 2148007953, 2148040723, 2147811328, 2147844113,
+                    2147713024, 2147745799, 2147778568, 2147876875, 2147909644,
+                    2147942413, 2147975182, 2148007953, 2148040723, 2147713024,
+                    2147745799, 2147778568, 2147876875, 2147909644, 2147942413,
+                    2147975182, 2148007953, 2148040723, 2148794410, 2148073478,
+                    2148139008, 2148270091, 2148401165, 2148171817, 2148204544,
+                    2148237354, 2148302889, 2148335627, 2148368426, 2148433961,
+                    2148466701, 2148499498, 2148139008, 2148270091, 2148401165,
+                    2148663316, 2148761609, 2148892709, 2148925478, 2148958247,
+                    2148991016, 2149023785, 2147713024, 2147745799, 2147778568,
+                    2147876875, 2147909644, 2147942413, 2147975182, 2148007953,
+                    2148040723, 2148827154, 2148892709, 2148925478, 2148958247,
+                    2148991016, 2149023785, 2147713024, 2147745799, 2147778568,
+                    2147876875, 2147909644, 2147942413, 2147975182, 2148007953,
+                    2148040723, 2148892709, 2148925478, 2148958247, 2148991016,
+                    2147713024, 2147745799, 2147778568, 2147876875, 2147909644,
+                    2147942413, 2147975182, 2148007953, 2148040723, 2148892709,
+                    2148925478, 2148958247, 2148991016, 2149023785, 2149220355,
+                    2149285906, 2147713024, 2147745799, 2147778568, 2147876875,
+                    2147909644, 2147942413, 2147975182, 2148007953, 2148040723,
+                    2149351433, 2148892709, 2148925478, 2148958247, 2148991016,
+                    2149023785, 2149580842, 2149384229, 2149449766, 2149515306,
+                    2149416978, 2149482514, 2149548050, 2149613586, 2149679122,
+                    2148892709, 2148925478, 2148958247, 2148991016, 2149023785,
+                    2149777411, 3080228, 2147647488, 2147745799, 2147778568, 2147876875,
+                    2147909644, 2147942413, 2147975182, 2148007953, 2148040723,
+                    2148892709, 2148925478, 2148958247, 2148991016, 2149023785,
+                    2147647488, 2147745799, 2147778568, 2147876875, 2147909644,
+                    2147942413, 2147975182, 2148007953, 2148040723, 2150006788,
+                    2150039583, 2150236194, 2150334506, 2150072320, 2150105099,
+                    2150137869, 2150170666, 2150268938, 2150301738, 2150006788,
+                    2150498320, 2150662165, 2150891542, 2151055383, 2151350296,
+                    2151514137, 2151645210, 2151776283, 2151907356, 2152038429,
+                    2152169502, 2152300576, 2152464417, 2152595491, 2152726570,
+                    2150072320, 2150105099, 2150137869, 2150694954, 3244068, 2150072320,
+                    2150105099, 2150137869, 3342372, 2150072320, 2150105099, 2150137869,
+                    2150924330, 3473444, 2150072320, 2150105099, 2150137869, 3538980,
+                    2151088128, 2151284778, 2151153664, 2151153665, 2151153666,
+                    2151153667, 2151153668, 2151153669, 2151153670, 2151153671,
+                    2151153672, 2151153673, 2151153674, 2151153675, 2151153676,
+                    2151153677, 2151153678, 2151153679, 2151153680, 2151153681,
+                    2151153682, 2151153683, 2151153684, 2151153685, 2151153686,
+                    2151153687, 2151153688, 2151153689, 2151153690, 2151153691,
+                    2151153692, 2151153693, 2151153694, 2151153695, 2151153696,
+                    2151153697, 2151153698, 2151153699, 3637284, 2151153701, 2151153702,
+                    2151153703, 2151153704, 2151153705, 2151251968, 2151251969,
+                    2151251970, 2151251971, 2151251972, 2151251973, 2151251974,
+                    2151251975, 2151251976, 2151251977, 2151251978, 2151251979,
+                    2151251980, 2151251981, 2151251982, 2151251983, 2151251984,
+                    2151251985, 2151251986, 2151251987, 2151251988, 2151251989,
+                    2151251990, 2151251991, 2151251992, 2151251993, 2151251994,
+                    2151251995, 2151251996, 2151251997, 2151251998, 2151251999,
+                    2151252000, 2151252001, 2151252002, 2151252003, 3735588, 2151252005,
+                    2151252006, 2151252007, 2151252008, 2151252009, 3833892, 2151383040,
+                    2151448618, 3932196, 3997732, 2151153664, 2151153665, 2151153666,
+                    2151153667, 2151153668, 2151153669, 2151153670, 2151153671,
+                    2151153672, 2151153673, 2151153674, 2151153675, 2151153676,
+                    2151153677, 2151153678, 2151153679, 2151153680, 2151153681,
+                    2151153682, 2151153683, 2151153684, 2151153685, 2151153686,
+                    2151153687, 2151153688, 2151153689, 2151153690, 2151153691,
+                    2151153692, 2151153693, 2151153694, 2151153695, 2151153696,
+                    2151153697, 2151153698, 2151153699, 4063268, 2151153701, 2151153702,
+                    2151153703, 2151153704, 2151153705, 2151251968, 2151251969,
+                    2151251970, 2151251971, 2151251972, 2151251973, 2151251974,
+                    2151251975, 2151251976, 2151251977, 2151251978, 2151251979,
+                    2151251980, 2151251981, 2151251982, 2151251983, 2151251984,
+                    2151251985, 2151251986, 2151251987, 2151251988, 2151251989,
+                    2151251990, 2151251991, 2151251992, 2151251993, 2151251994,
+                    2151251995, 2151251996, 2151251997, 2151251998, 2151251999,
+                    2151252000, 2151252001, 2151252002, 2151252003, 4128804, 2151252005,
+                    2151252006, 2151252007, 2151252008, 2151252009, 2151153664,
+                    2151153665, 2151153666, 2151153667, 2151153668, 2151153669,
+                    2151153670, 2151153671, 2151153672, 2151153673, 2151153674,
+                    2151153675, 2151153676, 2151153677, 2151153678, 2151153679,
+                    2151153680, 2151153681, 2151153682, 2151153683, 2151153684,
+                    2151153685, 2151153686, 2151153687, 2151153688, 2151153689,
+                    2151153690, 2151153691, 2151153692, 2151153693, 2151153694,
+                    2151153695, 2151153696, 2151153697, 2151153698, 2151153699, 4194340,
+                    2151153701, 2151153702, 2151153703, 2151153704, 2151153705,
+                    2151251968, 2151251969, 2151251970, 2151251971, 2151251972,
+                    2151251973, 2151251974, 2151251975, 2151251976, 2151251977,
+                    2151251978, 2151251979, 2151251980, 2151251981, 2151251982,
+                    2151251983, 2151251984, 2151251985, 2151251986, 2151251987,
+                    2151251988, 2151251989, 2151251990, 2151251991, 2151251992,
+                    2151251993, 2151251994, 2151251995, 2151251996, 2151251997,
+                    2151251998, 2151251999, 2151252000, 2151252001, 2151252002,
+                    2151252003, 4259876, 2151252005, 2151252006, 2151252007, 2151252008,
+                    2151252009, 2151153664, 2151153665, 2151153666, 2151153667,
+                    2151153668, 2151153669, 2151153670, 2151153671, 2151153672,
+                    2151153673, 2151153674, 2151153675, 2151153676, 2151153677,
+                    2151153678, 2151153679, 2151153680, 2151153681, 2151153682,
+                    2151153683, 2151153684, 2151153685, 2151153686, 2151153687,
+                    2151153688, 2151153689, 2151153690, 2151153691, 2151153692,
+                    2151153693, 2151153694, 2151153695, 2151153696, 2151153697,
+                    2151153698, 2151153699, 4325412, 2151153701, 2151153702, 2151153703,
+                    2151153704, 2151153705, 2151251968, 2151251969, 2151251970,
+                    2151251971, 2151251972, 2151251973, 2151251974, 2151251975,
+                    2151251976, 2151251977, 2151251978, 2151251979, 2151251980,
+                    2151251981, 2151251982, 2151251983, 2151251984, 2151251985,
+                    2151251986, 2151251987, 2151251988, 2151251989, 2151251990,
+                    2151251991, 2151251992, 2151251993, 2151251994, 2151251995,
+                    2151251996, 2151251997, 2151251998, 2151251999, 2151252000,
+                    2151252001, 2151252002, 2151252003, 4390948, 2151252005, 2151252006,
+                    2151252007, 2151252008, 2151252009, 2151153664, 2151153665,
+                    2151153666, 2151153667, 2151153668, 2151153669, 2151153670,
+                    2151153671, 2151153672, 2151153673, 2151153674, 2151153675,
+                    2151153676, 2151153677, 2151153678, 2151153679, 2151153680,
+                    2151153681, 2151153682, 2151153683, 2151153684, 2151153685,
+                    2151153686, 2151153687, 2151153688, 2151153689, 2151153690,
+                    2151153691, 2151153692, 2151153693, 2151153694, 2151153695,
+                    2151153696, 2151153697, 2151153698, 2151153699, 4456484, 2151153701,
+                    2151153702, 2151153703, 2151153704, 2151153705, 2151251968,
+                    2151251969, 2151251970, 2151251971, 2151251972, 2151251973,
+                    2151251974, 2151251975, 2151251976, 2151251977, 2151251978,
+                    2151251979, 2151251980, 2151251981, 2151251982, 2151251983,
+                    2151251984, 2151251985, 2151251986, 2151251987, 2151251988,
+                    2151251989, 2151251990, 2151251991, 2151251992, 2151251993,
+                    2151251994, 2151251995, 2151251996, 2151251997, 2151251998,
+                    2151251999, 2151252000, 2151252001, 2151252002, 2151252003, 4522020,
+                    2151252005, 2151252006, 2151252007, 2151252008, 2151252009, 4587556,
+                    2152103978, 4653092, 4718628, 2152235050, 4784164, 2150072320,
+                    2150105099, 2150137869, 2152333354, 4882468, 2150072320, 2150105099,
+                    2150137869, 4948004, 5013540, 2152529962, 5079076, 2151153664,
+                    2151153665, 2151153666, 2151153667, 2151153668, 2151153669,
+                    2151153670, 2151153671, 2151153672, 2151153673, 2151153674,
+                    2151153675, 2151153676, 2151153677, 2151153678, 2151153679,
+                    2151153680, 2151153681, 2151153682, 2151153683, 2151153684,
+                    2151153685, 2151153686, 2151153687, 2151153688, 2151153689,
+                    2151153690, 2151153691, 2151153692, 2151153693, 2151153694,
+                    2151153695, 2151153696, 2151153697, 2151153698, 2151153699, 5144612,
+                    2151153701, 2151153702, 2151153703, 2151153704, 2151153705,
+                    2151251968, 2151251969, 2151251970, 2151251971, 2151251972,
+                    2151251973, 2151251974, 2151251975, 2151251976, 2151251977,
+                    2151251978, 2151251979, 2151251980, 2151251981, 2151251982,
+                    2151251983, 2151251984, 2151251985, 2151251986, 2151251987,
+                    2151251988, 2151251989, 2151251990, 2151251991, 2151251992,
+                    2151251993, 2151251994, 2151251995, 2151251996, 2151251997,
+                    2151251998, 2151251999, 2151252000, 2151252001, 2151252002,
+                    2151252003, 5210148, 2151252005, 2151252006, 2151252007, 2151252008,
+                    2151252009, 5275684, 2147516416, 2150629380, 2152923179,
                 ];
                 static SHIFT_TERM_OFFSETS: &[u32] = &[
-                    0u32, 2u32, 3u32, 3u32, 4u32, 13u32, 14u32, 23u32, 23u32, 23u32,
-                    24u32, 25u32, 34u32, 34u32, 34u32, 34u32, 34u32, 44u32, 45u32, 45u32,
-                    48u32, 49u32, 51u32, 51u32, 51u32, 52u32, 54u32, 54u32, 54u32, 55u32,
-                    57u32, 57u32, 57u32, 57u32, 60u32, 60u32, 61u32, 61u32, 61u32, 67u32,
-                    76u32, 77u32, 77u32, 82u32, 82u32, 82u32, 82u32, 82u32, 91u32, 95u32,
-                    104u32, 109u32, 109u32, 111u32, 120u32, 120u32, 120u32, 127u32,
-                    130u32, 131u32, 131u32, 132u32, 132u32, 133u32, 133u32, 134u32,
-                    134u32, 135u32, 135u32, 140u32, 142u32, 151u32, 151u32, 151u32,
-                    156u32, 165u32, 165u32, 166u32, 169u32, 173u32, 173u32, 173u32,
-                    173u32, 173u32, 173u32, 175u32, 175u32, 175u32, 175u32, 175u32,
-                    176u32, 176u32, 177u32, 177u32, 177u32, 177u32, 177u32, 192u32,
-                    196u32, 197u32, 197u32, 197u32, 201u32, 201u32, 201u32, 205u32,
-                    206u32, 206u32, 210u32, 210u32, 212u32, 255u32, 255u32, 255u32,
-                    298u32, 298u32, 298u32, 299u32, 299u32, 301u32, 302u32, 302u32,
-                    303u32, 303u32, 346u32, 346u32, 389u32, 389u32, 432u32, 432u32,
-                    475u32, 475u32, 518u32, 518u32, 561u32, 561u32, 604u32, 604u32,
-                    647u32, 647u32, 649u32, 649u32, 650u32, 650u32, 652u32, 652u32,
-                    653u32, 653u32, 657u32, 658u32, 658u32, 662u32, 662u32, 664u32,
-                    664u32, 665u32, 665u32, 667u32, 667u32, 668u32, 668u32, 711u32,
-                    711u32, 754u32, 754u32, 755u32, 755u32, 755u32, 757u32, 757u32,
-                    758u32, 758u32,
+                    0, 2, 3, 3, 4, 13, 14, 23, 23, 23, 24, 25, 34, 34, 34, 34, 34, 44,
+                    45, 45, 48, 49, 51, 51, 51, 52, 54, 54, 54, 55, 57, 57, 57, 57, 60,
+                    60, 61, 61, 61, 67, 76, 77, 77, 82, 82, 82, 82, 82, 91, 95, 104, 109,
+                    109, 111, 120, 120, 120, 127, 130, 131, 131, 132, 132, 133, 133, 134,
+                    134, 135, 135, 140, 142, 151, 151, 151, 156, 165, 165, 166, 169, 173,
+                    173, 173, 173, 173, 173, 175, 175, 175, 175, 175, 176, 176, 177, 177,
+                    177, 177, 177, 191, 195, 196, 196, 196, 200, 200, 200, 204, 205, 205,
+                    209, 209, 211, 253, 253, 253, 295, 295, 295, 296, 296, 298, 299, 299,
+                    300, 300, 342, 342, 384, 384, 426, 426, 468, 468, 510, 510, 552, 552,
+                    594, 594, 636, 636, 638, 638, 639, 639, 641, 641, 642, 642, 646, 647,
+                    647, 651, 651, 653, 653, 654, 654, 696, 696, 738, 738, 739, 739, 739,
+                    741, 741, 742, 742,
                 ];
                 static SHIFT_NONTERM_DATA: &[u32] = &[
-                    2152923136u32, 5472267u32, 2152955916u32, 2153021453u32, 5537820u32,
-                    2147581953u32, 2149744642u32, 2150596611u32, 2149842949u32,
-                    2148696071u32, 2149875720u32, 2149908494u32, 2149974031u32,
-                    2148696071u32, 2149711880u32, 2148696071u32, 2148728840u32,
-                    2148696071u32, 2148859912u32, 2149089301u32, 2149154838u32,
-                    2149187607u32, 2148106258u32, 2148532230u32, 2148565011u32,
-                    2148630548u32, 2148597766u32, 2148696071u32, 2149318664u32,
-                    2148696071u32, 2149056520u32, 2148696071u32, 2149122056u32,
-                    2148696071u32, 2148859912u32, 2149089301u32, 2149253142u32,
-                    2149646360u32, 2149810179u32, 2149842949u32, 2148696071u32,
-                    2149875720u32, 2149908494u32, 2149974031u32, 2149941253u32,
-                    2148696071u32, 2149875720u32, 2150367236u32, 2150400016u32,
-                    2150465553u32, 2150203402u32, 2150432772u32, 2150531081u32,
-                    2150760458u32, 2150793243u32, 2150858762u32, 2150760458u32,
-                    2150989851u32, 2150858762u32, 2151153689u32, 2151186458u32,
-                    2151251993u32, 2151153689u32, 2151579674u32, 2151251993u32,
-                    2151153689u32, 2151710746u32, 2151251993u32, 2151153689u32,
-                    2151841818u32, 2151251993u32, 2151153689u32, 2151972890u32,
-                    2151251993u32, 2150760458u32, 2152398875u32, 2150858762u32,
-                    2151153689u32, 2152792090u32, 2151251993u32, 2152923136u32,
-                    5472267u32, 2152955916u32, 2152988700u32,
+                    2152792064, 5341195, 2152824844, 2152890381, 5406748, 2147581953,
+                    2149744642, 2150596611, 2149842949, 2148696071, 2149875720,
+                    2149908494, 2149974031, 2148696071, 2149711880, 2148696071,
+                    2148728840, 2148696071, 2148859912, 2149089301, 2149154838,
+                    2149187607, 2148106258, 2148532230, 2148565011, 2148630548,
+                    2148597766, 2148696071, 2149318664, 2148696071, 2149056520,
+                    2148696071, 2149122056, 2148696071, 2148859912, 2149089301,
+                    2149253142, 2149646360, 2149810179, 2149842949, 2148696071,
+                    2149875720, 2149908494, 2149974031, 2149941253, 2148696071,
+                    2149875720, 2150367236, 2150400016, 2150465553, 2150203402,
+                    2150432772, 2150531081, 2150760458, 2150793243, 2150858762,
+                    2150760458, 2150989851, 2150858762, 2151153689, 2151186458,
+                    2151251993, 2151153689, 2151579674, 2151251993, 2151153689,
+                    2151710746, 2151251993, 2151153689, 2151841818, 2151251993,
+                    2151153689, 2151972890, 2151251993, 2150760458, 2152398875,
+                    2150858762, 2151153689, 2152661018, 2151251993, 2152792064, 5341195,
+                    2152824844, 2152857628,
                 ];
                 static SHIFT_NONTERM_OFFSETS: &[u32] = &[
-                    0u32, 5u32, 6u32, 6u32, 6u32, 13u32, 13u32, 15u32, 15u32, 15u32,
-                    15u32, 15u32, 17u32, 17u32, 17u32, 17u32, 17u32, 22u32, 23u32, 23u32,
-                    26u32, 26u32, 26u32, 26u32, 26u32, 26u32, 26u32, 26u32, 26u32, 26u32,
-                    26u32, 26u32, 26u32, 26u32, 27u32, 27u32, 27u32, 27u32, 27u32, 27u32,
-                    29u32, 29u32, 29u32, 29u32, 29u32, 29u32, 29u32, 29u32, 31u32, 31u32,
-                    33u32, 33u32, 33u32, 33u32, 37u32, 37u32, 37u32, 38u32, 38u32, 38u32,
-                    38u32, 38u32, 38u32, 38u32, 38u32, 38u32, 38u32, 38u32, 38u32, 38u32,
-                    38u32, 44u32, 44u32, 44u32, 44u32, 47u32, 47u32, 50u32, 50u32, 51u32,
-                    51u32, 51u32, 51u32, 51u32, 51u32, 51u32, 51u32, 51u32, 51u32, 51u32,
-                    52u32, 52u32, 53u32, 53u32, 53u32, 53u32, 53u32, 53u32, 55u32, 55u32,
-                    55u32, 55u32, 56u32, 56u32, 56u32, 58u32, 58u32, 58u32, 59u32, 59u32,
-                    59u32, 61u32, 61u32, 61u32, 62u32, 62u32, 62u32, 62u32, 62u32, 62u32,
-                    62u32, 62u32, 62u32, 62u32, 64u32, 64u32, 65u32, 65u32, 67u32, 67u32,
-                    68u32, 68u32, 70u32, 70u32, 71u32, 71u32, 73u32, 73u32, 74u32, 74u32,
-                    74u32, 74u32, 74u32, 74u32, 74u32, 74u32, 74u32, 74u32, 76u32, 76u32,
-                    76u32, 77u32, 77u32, 77u32, 77u32, 77u32, 77u32, 77u32, 77u32, 77u32,
-                    77u32, 79u32, 79u32, 80u32, 80u32, 80u32, 80u32, 80u32, 84u32, 84u32,
-                    84u32, 84u32,
+                    0, 5, 6, 6, 6, 13, 13, 15, 15, 15, 15, 15, 17, 17, 17, 17, 17, 22,
+                    23, 23, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27,
+                    27, 27, 27, 27, 27, 29, 29, 29, 29, 29, 29, 29, 29, 31, 31, 33, 33,
+                    33, 33, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+                    38, 38, 44, 44, 44, 44, 47, 47, 50, 50, 51, 51, 51, 51, 51, 51, 51,
+                    51, 51, 51, 51, 52, 52, 53, 53, 53, 53, 53, 53, 55, 55, 55, 55, 56,
+                    56, 56, 58, 58, 58, 59, 59, 59, 61, 61, 61, 62, 62, 62, 62, 62, 62,
+                    62, 62, 62, 62, 64, 64, 65, 65, 67, 67, 68, 68, 70, 70, 71, 71, 73,
+                    73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 76, 76, 76, 77, 77, 77,
+                    77, 77, 77, 79, 79, 80, 80, 80, 80, 80, 84, 84, 84, 84,
                 ];
                 static REDUCE_DATA: &[u32] = &[
-                    2u32, 1u32, 2u32, 2u32, 1u32, 1u32, 3u32, 1u32, 83u32, 4u32, 1u32,
-                    83u32, 16u32, 1u32, 83u32, 37u32, 1u32, 83u32, 0u32, 1u32, 24u32,
-                    3u32, 1u32, 24u32, 4u32, 1u32, 24u32, 7u32, 1u32, 24u32, 8u32, 1u32,
-                    24u32, 11u32, 1u32, 24u32, 12u32, 1u32, 24u32, 13u32, 1u32, 24u32,
-                    14u32, 1u32, 24u32, 16u32, 1u32, 24u32, 17u32, 1u32, 24u32, 19u32,
-                    1u32, 24u32, 37u32, 1u32, 24u32, 38u32, 1u32, 24u32, 39u32, 1u32,
-                    24u32, 40u32, 1u32, 24u32, 41u32, 1u32, 24u32, 42u32, 1u32, 24u32,
-                    0u32, 1u32, 24u32, 3u32, 1u32, 24u32, 4u32, 1u32, 24u32, 7u32, 1u32,
-                    24u32, 8u32, 1u32, 24u32, 9u32, 1u32, 24u32, 11u32, 1u32, 24u32,
-                    12u32, 1u32, 24u32, 13u32, 1u32, 24u32, 14u32, 1u32, 24u32, 16u32,
-                    1u32, 24u32, 17u32, 1u32, 24u32, 18u32, 1u32, 24u32, 19u32, 1u32,
-                    24u32, 37u32, 1u32, 24u32, 38u32, 1u32, 24u32, 39u32, 1u32, 24u32,
-                    40u32, 1u32, 24u32, 41u32, 1u32, 24u32, 42u32, 1u32, 24u32, 43u32,
-                    1u32, 24u32, 0u32, 1u32, 23u32, 3u32, 1u32, 23u32, 4u32, 1u32, 23u32,
-                    7u32, 1u32, 23u32, 8u32, 1u32, 23u32, 9u32, 1u32, 23u32, 11u32, 1u32,
-                    23u32, 12u32, 1u32, 23u32, 13u32, 1u32, 23u32, 14u32, 1u32, 23u32,
-                    16u32, 1u32, 23u32, 17u32, 1u32, 23u32, 18u32, 1u32, 23u32, 19u32,
-                    1u32, 23u32, 37u32, 1u32, 23u32, 38u32, 1u32, 23u32, 39u32, 1u32,
-                    23u32, 40u32, 1u32, 23u32, 41u32, 1u32, 23u32, 42u32, 1u32, 23u32,
-                    43u32, 1u32, 23u32, 0u32, 1u32, 32u32, 3u32, 1u32, 32u32, 4u32, 1u32,
-                    32u32, 7u32, 1u32, 32u32, 8u32, 1u32, 32u32, 9u32, 1u32, 32u32,
-                    11u32, 1u32, 32u32, 12u32, 1u32, 32u32, 13u32, 1u32, 32u32, 14u32,
-                    1u32, 32u32, 16u32, 1u32, 32u32, 17u32, 1u32, 32u32, 18u32, 1u32,
-                    32u32, 19u32, 1u32, 32u32, 37u32, 1u32, 32u32, 38u32, 1u32, 32u32,
-                    39u32, 1u32, 32u32, 40u32, 1u32, 32u32, 41u32, 1u32, 32u32, 42u32,
-                    1u32, 32u32, 43u32, 1u32, 32u32, 0u32, 1u32, 33u32, 3u32, 1u32,
-                    33u32, 4u32, 1u32, 33u32, 7u32, 1u32, 33u32, 8u32, 1u32, 33u32, 9u32,
-                    1u32, 33u32, 11u32, 1u32, 33u32, 12u32, 1u32, 33u32, 13u32, 1u32,
-                    33u32, 14u32, 1u32, 33u32, 16u32, 1u32, 33u32, 17u32, 1u32, 33u32,
-                    18u32, 1u32, 33u32, 19u32, 1u32, 33u32, 37u32, 1u32, 33u32, 38u32,
-                    1u32, 33u32, 39u32, 1u32, 33u32, 40u32, 1u32, 33u32, 41u32, 1u32,
-                    33u32, 42u32, 1u32, 33u32, 43u32, 1u32, 33u32, 0u32, 1u32, 34u32,
-                    3u32, 1u32, 34u32, 4u32, 1u32, 34u32, 7u32, 1u32, 34u32, 8u32, 1u32,
-                    34u32, 9u32, 1u32, 34u32, 11u32, 1u32, 34u32, 12u32, 1u32, 34u32,
-                    13u32, 1u32, 34u32, 14u32, 1u32, 34u32, 16u32, 1u32, 34u32, 17u32,
-                    1u32, 34u32, 18u32, 1u32, 34u32, 19u32, 1u32, 34u32, 37u32, 1u32,
-                    34u32, 38u32, 1u32, 34u32, 39u32, 1u32, 34u32, 40u32, 1u32, 34u32,
-                    41u32, 1u32, 34u32, 42u32, 1u32, 34u32, 43u32, 1u32, 34u32, 0u32,
-                    1u32, 35u32, 3u32, 1u32, 35u32, 4u32, 1u32, 35u32, 7u32, 1u32, 35u32,
-                    8u32, 1u32, 35u32, 9u32, 1u32, 35u32, 11u32, 1u32, 35u32, 12u32,
-                    1u32, 35u32, 13u32, 1u32, 35u32, 14u32, 1u32, 35u32, 16u32, 1u32,
-                    35u32, 17u32, 1u32, 35u32, 18u32, 1u32, 35u32, 19u32, 1u32, 35u32,
-                    37u32, 1u32, 35u32, 38u32, 1u32, 35u32, 39u32, 1u32, 35u32, 40u32,
-                    1u32, 35u32, 41u32, 1u32, 35u32, 42u32, 1u32, 35u32, 43u32, 1u32,
-                    35u32, 3u32, 1u32, 97u32, 18u32, 1u32, 97u32, 0u32, 1u32, 89u32,
-                    11u32, 1u32, 89u32, 13u32, 1u32, 89u32, 20u32, 1u32, 89u32, 0u32,
-                    1u32, 88u32, 11u32, 1u32, 88u32, 13u32, 1u32, 88u32, 20u32, 1u32,
-                    88u32, 20u32, 1u32, 93u32, 0u32, 1u32, 13u32, 11u32, 1u32, 13u32,
-                    13u32, 1u32, 13u32, 20u32, 1u32, 13u32, 0u32, 1u32, 14u32, 11u32,
-                    1u32, 14u32, 13u32, 1u32, 14u32, 20u32, 1u32, 14u32, 0u32, 1u32,
-                    15u32, 11u32, 1u32, 15u32, 13u32, 1u32, 15u32, 20u32, 1u32, 15u32,
-                    0u32, 1u32, 19u32, 11u32, 1u32, 19u32, 13u32, 1u32, 19u32, 20u32,
-                    1u32, 19u32, 0u32, 1u32, 20u32, 11u32, 1u32, 20u32, 13u32, 1u32,
-                    20u32, 20u32, 1u32, 20u32, 0u32, 1u32, 21u32, 11u32, 1u32, 21u32,
-                    13u32, 1u32, 21u32, 20u32, 1u32, 21u32, 0u32, 1u32, 16u32, 11u32,
-                    1u32, 16u32, 13u32, 1u32, 16u32, 20u32, 1u32, 16u32, 0u32, 1u32,
-                    17u32, 11u32, 1u32, 17u32, 13u32, 1u32, 17u32, 20u32, 1u32, 17u32,
-                    0u32, 1u32, 18u32, 11u32, 1u32, 18u32, 13u32, 1u32, 18u32, 20u32,
-                    1u32, 18u32, 0u32, 1u32, 90u32, 11u32, 1u32, 90u32, 13u32, 1u32,
-                    90u32, 20u32, 1u32, 90u32, 20u32, 1u32, 92u32, 0u32, 1u32, 91u32,
-                    11u32, 1u32, 91u32, 13u32, 1u32, 91u32, 20u32, 1u32, 91u32, 0u32,
-                    1u32, 22u32, 3u32, 1u32, 22u32, 4u32, 1u32, 22u32, 7u32, 1u32, 22u32,
-                    8u32, 1u32, 22u32, 9u32, 1u32, 22u32, 11u32, 1u32, 22u32, 12u32,
-                    1u32, 22u32, 13u32, 1u32, 22u32, 14u32, 1u32, 22u32, 16u32, 1u32,
-                    22u32, 17u32, 1u32, 22u32, 18u32, 1u32, 22u32, 19u32, 1u32, 22u32,
-                    37u32, 1u32, 22u32, 38u32, 1u32, 22u32, 39u32, 1u32, 22u32, 40u32,
-                    1u32, 22u32, 41u32, 1u32, 22u32, 42u32, 1u32, 22u32, 43u32, 1u32,
-                    22u32, 0u32, 1u32, 29u32, 3u32, 1u32, 29u32, 4u32, 1u32, 29u32, 7u32,
-                    1u32, 29u32, 8u32, 1u32, 29u32, 9u32, 1u32, 29u32, 11u32, 1u32,
-                    29u32, 12u32, 1u32, 29u32, 13u32, 1u32, 29u32, 14u32, 1u32, 29u32,
-                    16u32, 1u32, 29u32, 17u32, 1u32, 29u32, 18u32, 1u32, 29u32, 19u32,
-                    1u32, 29u32, 37u32, 1u32, 29u32, 38u32, 1u32, 29u32, 39u32, 1u32,
-                    29u32, 40u32, 1u32, 29u32, 41u32, 1u32, 29u32, 42u32, 1u32, 29u32,
-                    43u32, 1u32, 29u32, 0u32, 1u32, 31u32, 3u32, 1u32, 31u32, 4u32, 1u32,
-                    31u32, 7u32, 1u32, 31u32, 8u32, 1u32, 31u32, 9u32, 1u32, 31u32,
-                    11u32, 1u32, 31u32, 12u32, 1u32, 31u32, 13u32, 1u32, 31u32, 14u32,
-                    1u32, 31u32, 16u32, 1u32, 31u32, 17u32, 1u32, 31u32, 18u32, 1u32,
-                    31u32, 19u32, 1u32, 31u32, 37u32, 1u32, 31u32, 38u32, 1u32, 31u32,
-                    39u32, 1u32, 31u32, 40u32, 1u32, 31u32, 41u32, 1u32, 31u32, 42u32,
-                    1u32, 31u32, 43u32, 1u32, 31u32, 0u32, 1u32, 94u32, 3u32, 1u32,
-                    94u32, 7u32, 1u32, 94u32, 8u32, 1u32, 94u32, 11u32, 1u32, 94u32,
-                    12u32, 1u32, 94u32, 13u32, 1u32, 94u32, 14u32, 1u32, 94u32, 17u32,
-                    1u32, 94u32, 18u32, 1u32, 94u32, 19u32, 1u32, 94u32, 0u32, 1u32,
-                    25u32, 3u32, 1u32, 25u32, 4u32, 1u32, 25u32, 7u32, 1u32, 25u32, 8u32,
-                    1u32, 25u32, 9u32, 1u32, 25u32, 11u32, 1u32, 25u32, 12u32, 1u32,
-                    25u32, 13u32, 1u32, 25u32, 14u32, 1u32, 25u32, 16u32, 1u32, 25u32,
-                    17u32, 1u32, 25u32, 18u32, 1u32, 25u32, 19u32, 1u32, 25u32, 37u32,
-                    1u32, 25u32, 38u32, 1u32, 25u32, 39u32, 1u32, 25u32, 40u32, 1u32,
-                    25u32, 41u32, 1u32, 25u32, 42u32, 1u32, 25u32, 43u32, 1u32, 25u32,
-                    0u32, 1u32, 26u32, 3u32, 1u32, 26u32, 4u32, 1u32, 26u32, 7u32, 1u32,
-                    26u32, 8u32, 1u32, 26u32, 9u32, 1u32, 26u32, 11u32, 1u32, 26u32,
-                    12u32, 1u32, 26u32, 13u32, 1u32, 26u32, 14u32, 1u32, 26u32, 16u32,
-                    1u32, 26u32, 17u32, 1u32, 26u32, 18u32, 1u32, 26u32, 19u32, 1u32,
-                    26u32, 37u32, 1u32, 26u32, 38u32, 1u32, 26u32, 39u32, 1u32, 26u32,
-                    40u32, 1u32, 26u32, 41u32, 1u32, 26u32, 42u32, 1u32, 26u32, 43u32,
-                    1u32, 26u32, 0u32, 1u32, 27u32, 3u32, 1u32, 27u32, 4u32, 1u32, 27u32,
-                    7u32, 1u32, 27u32, 8u32, 1u32, 27u32, 9u32, 1u32, 27u32, 11u32, 1u32,
-                    27u32, 12u32, 1u32, 27u32, 13u32, 1u32, 27u32, 14u32, 1u32, 27u32,
-                    16u32, 1u32, 27u32, 17u32, 1u32, 27u32, 18u32, 1u32, 27u32, 19u32,
-                    1u32, 27u32, 37u32, 1u32, 27u32, 38u32, 1u32, 27u32, 39u32, 1u32,
-                    27u32, 40u32, 1u32, 27u32, 41u32, 1u32, 27u32, 42u32, 1u32, 27u32,
-                    43u32, 1u32, 27u32, 0u32, 1u32, 28u32, 3u32, 1u32, 28u32, 4u32, 1u32,
-                    28u32, 7u32, 1u32, 28u32, 8u32, 1u32, 28u32, 9u32, 1u32, 28u32,
-                    11u32, 1u32, 28u32, 12u32, 1u32, 28u32, 13u32, 1u32, 28u32, 14u32,
-                    1u32, 28u32, 16u32, 1u32, 28u32, 17u32, 1u32, 28u32, 18u32, 1u32,
-                    28u32, 19u32, 1u32, 28u32, 37u32, 1u32, 28u32, 38u32, 1u32, 28u32,
-                    39u32, 1u32, 28u32, 40u32, 1u32, 28u32, 41u32, 1u32, 28u32, 42u32,
-                    1u32, 28u32, 43u32, 1u32, 28u32, 0u32, 1u32, 36u32, 3u32, 1u32,
-                    36u32, 4u32, 1u32, 36u32, 7u32, 1u32, 36u32, 8u32, 1u32, 36u32, 9u32,
-                    1u32, 36u32, 11u32, 1u32, 36u32, 12u32, 1u32, 36u32, 13u32, 1u32,
-                    36u32, 14u32, 1u32, 36u32, 16u32, 1u32, 36u32, 17u32, 1u32, 36u32,
-                    18u32, 1u32, 36u32, 19u32, 1u32, 36u32, 37u32, 1u32, 36u32, 42u32,
-                    1u32, 36u32, 43u32, 1u32, 36u32, 3u32, 1u32, 96u32, 18u32, 1u32,
-                    96u32, 0u32, 1u32, 95u32, 3u32, 1u32, 95u32, 7u32, 1u32, 95u32, 8u32,
-                    1u32, 95u32, 11u32, 1u32, 95u32, 12u32, 1u32, 95u32, 13u32, 1u32,
-                    95u32, 14u32, 1u32, 95u32, 17u32, 1u32, 95u32, 18u32, 1u32, 95u32,
-                    19u32, 1u32, 95u32, 3u32, 1u32, 98u32, 18u32, 1u32, 98u32, 3u32,
-                    1u32, 97u32, 18u32, 1u32, 97u32, 3u32, 1u32, 99u32, 18u32, 1u32,
-                    99u32, 0u32, 1u32, 30u32, 3u32, 1u32, 30u32, 4u32, 1u32, 30u32, 7u32,
-                    1u32, 30u32, 8u32, 1u32, 30u32, 9u32, 1u32, 30u32, 11u32, 1u32,
-                    30u32, 12u32, 1u32, 30u32, 13u32, 1u32, 30u32, 14u32, 1u32, 30u32,
-                    16u32, 1u32, 30u32, 17u32, 1u32, 30u32, 18u32, 1u32, 30u32, 19u32,
-                    1u32, 30u32, 37u32, 1u32, 30u32, 38u32, 1u32, 30u32, 39u32, 1u32,
-                    30u32, 40u32, 1u32, 30u32, 41u32, 1u32, 30u32, 42u32, 1u32, 30u32,
-                    43u32, 1u32, 30u32, 18u32, 1u32, 101u32, 18u32, 1u32, 100u32, 0u32,
-                    1u32, 38u32, 3u32, 1u32, 38u32, 4u32, 1u32, 38u32, 7u32, 1u32, 38u32,
-                    8u32, 1u32, 38u32, 9u32, 1u32, 38u32, 11u32, 1u32, 38u32, 12u32,
-                    1u32, 38u32, 13u32, 1u32, 38u32, 14u32, 1u32, 38u32, 16u32, 1u32,
-                    38u32, 17u32, 1u32, 38u32, 18u32, 1u32, 38u32, 19u32, 1u32, 38u32,
-                    37u32, 1u32, 38u32, 38u32, 1u32, 38u32, 39u32, 1u32, 38u32, 40u32,
-                    1u32, 38u32, 41u32, 1u32, 38u32, 42u32, 1u32, 38u32, 43u32, 1u32,
-                    38u32, 0u32, 1u32, 39u32, 3u32, 1u32, 39u32, 4u32, 1u32, 39u32, 7u32,
-                    1u32, 39u32, 8u32, 1u32, 39u32, 9u32, 1u32, 39u32, 11u32, 1u32,
-                    39u32, 12u32, 1u32, 39u32, 13u32, 1u32, 39u32, 14u32, 1u32, 39u32,
-                    16u32, 1u32, 39u32, 17u32, 1u32, 39u32, 18u32, 1u32, 39u32, 19u32,
-                    1u32, 39u32, 37u32, 1u32, 39u32, 38u32, 1u32, 39u32, 39u32, 1u32,
-                    39u32, 40u32, 1u32, 39u32, 41u32, 1u32, 39u32, 42u32, 1u32, 39u32,
-                    43u32, 1u32, 39u32, 0u32, 1u32, 41u32, 3u32, 1u32, 41u32, 4u32, 1u32,
-                    41u32, 7u32, 1u32, 41u32, 8u32, 1u32, 41u32, 9u32, 1u32, 41u32,
-                    11u32, 1u32, 41u32, 12u32, 1u32, 41u32, 13u32, 1u32, 41u32, 14u32,
-                    1u32, 41u32, 16u32, 1u32, 41u32, 17u32, 1u32, 41u32, 18u32, 1u32,
-                    41u32, 19u32, 1u32, 41u32, 37u32, 1u32, 41u32, 38u32, 1u32, 41u32,
-                    39u32, 1u32, 41u32, 40u32, 1u32, 41u32, 41u32, 1u32, 41u32, 42u32,
-                    1u32, 41u32, 43u32, 1u32, 41u32, 0u32, 1u32, 40u32, 3u32, 1u32,
-                    40u32, 4u32, 1u32, 40u32, 7u32, 1u32, 40u32, 8u32, 1u32, 40u32, 9u32,
-                    1u32, 40u32, 11u32, 1u32, 40u32, 12u32, 1u32, 40u32, 13u32, 1u32,
-                    40u32, 14u32, 1u32, 40u32, 16u32, 1u32, 40u32, 17u32, 1u32, 40u32,
-                    18u32, 1u32, 40u32, 19u32, 1u32, 40u32, 37u32, 1u32, 40u32, 38u32,
-                    1u32, 40u32, 39u32, 1u32, 40u32, 40u32, 1u32, 40u32, 41u32, 1u32,
-                    40u32, 42u32, 1u32, 40u32, 43u32, 1u32, 40u32, 0u32, 1u32, 37u32,
-                    3u32, 1u32, 37u32, 4u32, 1u32, 37u32, 7u32, 1u32, 37u32, 8u32, 1u32,
-                    37u32, 9u32, 1u32, 37u32, 11u32, 1u32, 37u32, 12u32, 1u32, 37u32,
-                    13u32, 1u32, 37u32, 14u32, 1u32, 37u32, 16u32, 1u32, 37u32, 17u32,
-                    1u32, 37u32, 18u32, 1u32, 37u32, 19u32, 1u32, 37u32, 37u32, 1u32,
-                    37u32, 38u32, 1u32, 37u32, 39u32, 1u32, 37u32, 40u32, 1u32, 37u32,
-                    41u32, 1u32, 37u32, 42u32, 1u32, 37u32, 43u32, 1u32, 37u32, 0u32,
-                    1u32, 12u32, 3u32, 1u32, 12u32, 4u32, 1u32, 12u32, 7u32, 1u32, 12u32,
-                    8u32, 1u32, 12u32, 11u32, 1u32, 12u32, 12u32, 1u32, 12u32, 13u32,
-                    1u32, 12u32, 14u32, 1u32, 12u32, 16u32, 1u32, 12u32, 17u32, 1u32,
-                    12u32, 19u32, 1u32, 12u32, 37u32, 1u32, 12u32, 3u32, 1u32, 83u32,
-                    4u32, 1u32, 83u32, 16u32, 1u32, 83u32, 37u32, 1u32, 83u32, 3u32,
-                    1u32, 3u32, 37u32, 1u32, 3u32, 0u32, 1u32, 80u32, 3u32, 1u32, 80u32,
-                    4u32, 1u32, 80u32, 7u32, 1u32, 80u32, 8u32, 1u32, 80u32, 11u32, 1u32,
-                    80u32, 12u32, 1u32, 80u32, 13u32, 1u32, 80u32, 14u32, 1u32, 80u32,
-                    16u32, 1u32, 80u32, 17u32, 1u32, 80u32, 19u32, 1u32, 80u32, 37u32,
-                    1u32, 80u32, 0u32, 1u32, 11u32, 3u32, 1u32, 11u32, 4u32, 1u32, 11u32,
-                    7u32, 1u32, 11u32, 8u32, 1u32, 11u32, 11u32, 1u32, 11u32, 12u32,
-                    1u32, 11u32, 13u32, 1u32, 11u32, 14u32, 1u32, 11u32, 16u32, 1u32,
-                    11u32, 17u32, 1u32, 11u32, 19u32, 1u32, 11u32, 37u32, 1u32, 11u32,
-                    3u32, 1u32, 82u32, 4u32, 1u32, 82u32, 16u32, 1u32, 82u32, 37u32,
-                    1u32, 82u32, 0u32, 1u32, 81u32, 3u32, 1u32, 81u32, 4u32, 1u32, 81u32,
-                    7u32, 1u32, 81u32, 8u32, 1u32, 81u32, 11u32, 1u32, 81u32, 12u32,
-                    1u32, 81u32, 13u32, 1u32, 81u32, 14u32, 1u32, 81u32, 16u32, 1u32,
-                    81u32, 17u32, 1u32, 81u32, 19u32, 1u32, 81u32, 37u32, 1u32, 81u32,
-                    3u32, 1u32, 87u32, 16u32, 1u32, 87u32, 37u32, 1u32, 87u32, 0u32,
-                    1u32, 44u32, 3u32, 1u32, 44u32, 4u32, 1u32, 44u32, 11u32, 1u32,
-                    44u32, 13u32, 1u32, 44u32, 16u32, 1u32, 44u32, 37u32, 1u32, 44u32,
-                    0u32, 1u32, 45u32, 3u32, 1u32, 45u32, 4u32, 1u32, 45u32, 11u32, 1u32,
-                    45u32, 13u32, 1u32, 45u32, 16u32, 1u32, 45u32, 37u32, 1u32, 45u32,
-                    0u32, 1u32, 46u32, 3u32, 1u32, 46u32, 4u32, 1u32, 46u32, 11u32, 1u32,
-                    46u32, 13u32, 1u32, 46u32, 16u32, 1u32, 46u32, 37u32, 1u32, 46u32,
-                    3u32, 1u32, 7u32, 4u32, 1u32, 7u32, 16u32, 1u32, 7u32, 37u32, 1u32,
-                    7u32, 3u32, 1u32, 6u32, 4u32, 1u32, 6u32, 16u32, 1u32, 6u32, 37u32,
-                    1u32, 6u32, 3u32, 1u32, 8u32, 4u32, 1u32, 8u32, 16u32, 1u32, 8u32,
-                    37u32, 1u32, 8u32, 3u32, 1u32, 9u32, 4u32, 1u32, 9u32, 16u32, 1u32,
-                    9u32, 37u32, 1u32, 9u32, 3u32, 1u32, 10u32, 4u32, 1u32, 10u32, 16u32,
-                    1u32, 10u32, 37u32, 1u32, 10u32, 3u32, 1u32, 84u32, 4u32, 1u32,
-                    84u32, 16u32, 1u32, 84u32, 37u32, 1u32, 84u32, 3u32, 1u32, 86u32,
-                    16u32, 1u32, 86u32, 37u32, 1u32, 86u32, 3u32, 1u32, 85u32, 4u32,
-                    1u32, 85u32, 16u32, 1u32, 85u32, 37u32, 1u32, 85u32, 3u32, 1u32,
-                    43u32, 37u32, 1u32, 43u32, 3u32, 1u32, 42u32, 37u32, 1u32, 42u32,
-                    3u32, 1u32, 5u32, 37u32, 1u32, 5u32, 0u32, 1u32, 0u32, 4u32, 1u32,
-                    0u32, 44u32, 1u32, 0u32, 3u32, 1u32, 4u32, 37u32, 1u32, 4u32, 0u32,
-                    1u32, 57u32, 4u32, 1u32, 57u32, 44u32, 1u32, 57u32, 0u32, 1u32,
-                    146u32, 11u32, 1u32, 146u32, 13u32, 1u32, 146u32, 37u32, 1u32,
-                    146u32, 0u32, 1u32, 56u32, 4u32, 1u32, 56u32, 44u32, 1u32, 56u32,
-                    0u32, 1u32, 147u32, 11u32, 1u32, 147u32, 13u32, 1u32, 147u32, 37u32,
-                    1u32, 147u32, 0u32, 1u32, 59u32, 4u32, 1u32, 59u32, 44u32, 1u32,
-                    59u32, 0u32, 1u32, 58u32, 4u32, 1u32, 58u32, 44u32, 1u32, 58u32,
-                    0u32, 1u32, 48u32, 4u32, 1u32, 48u32, 44u32, 1u32, 48u32, 0u32, 1u32,
-                    144u32, 1u32, 1u32, 144u32, 2u32, 1u32, 144u32, 3u32, 1u32, 144u32,
-                    4u32, 1u32, 144u32, 5u32, 1u32, 144u32, 6u32, 1u32, 144u32, 7u32,
-                    1u32, 144u32, 8u32, 1u32, 144u32, 9u32, 1u32, 144u32, 10u32, 1u32,
-                    144u32, 11u32, 1u32, 144u32, 12u32, 1u32, 144u32, 13u32, 1u32,
-                    144u32, 14u32, 1u32, 144u32, 15u32, 1u32, 144u32, 16u32, 1u32,
-                    144u32, 17u32, 1u32, 144u32, 18u32, 1u32, 144u32, 19u32, 1u32,
-                    144u32, 20u32, 1u32, 144u32, 21u32, 1u32, 144u32, 22u32, 1u32,
-                    144u32, 23u32, 1u32, 144u32, 24u32, 1u32, 144u32, 25u32, 1u32,
-                    144u32, 26u32, 1u32, 144u32, 27u32, 1u32, 144u32, 28u32, 1u32,
-                    144u32, 29u32, 1u32, 144u32, 30u32, 1u32, 144u32, 31u32, 1u32,
-                    144u32, 32u32, 1u32, 144u32, 33u32, 1u32, 144u32, 34u32, 1u32,
-                    144u32, 35u32, 1u32, 144u32, 36u32, 1u32, 144u32, 37u32, 1u32,
-                    144u32, 38u32, 1u32, 144u32, 39u32, 1u32, 144u32, 40u32, 1u32,
-                    144u32, 41u32, 1u32, 144u32, 42u32, 1u32, 144u32, 0u32, 1u32, 47u32,
-                    4u32, 1u32, 47u32, 44u32, 1u32, 47u32, 0u32, 1u32, 145u32, 1u32,
-                    1u32, 145u32, 2u32, 1u32, 145u32, 3u32, 1u32, 145u32, 4u32, 1u32,
-                    145u32, 5u32, 1u32, 145u32, 6u32, 1u32, 145u32, 7u32, 1u32, 145u32,
-                    8u32, 1u32, 145u32, 9u32, 1u32, 145u32, 10u32, 1u32, 145u32, 11u32,
-                    1u32, 145u32, 12u32, 1u32, 145u32, 13u32, 1u32, 145u32, 14u32, 1u32,
-                    145u32, 15u32, 1u32, 145u32, 16u32, 1u32, 145u32, 17u32, 1u32,
-                    145u32, 18u32, 1u32, 145u32, 19u32, 1u32, 145u32, 20u32, 1u32,
-                    145u32, 21u32, 1u32, 145u32, 22u32, 1u32, 145u32, 23u32, 1u32,
-                    145u32, 24u32, 1u32, 145u32, 25u32, 1u32, 145u32, 26u32, 1u32,
-                    145u32, 27u32, 1u32, 145u32, 28u32, 1u32, 145u32, 29u32, 1u32,
-                    145u32, 30u32, 1u32, 145u32, 31u32, 1u32, 145u32, 32u32, 1u32,
-                    145u32, 33u32, 1u32, 145u32, 34u32, 1u32, 145u32, 35u32, 1u32,
-                    145u32, 36u32, 1u32, 145u32, 37u32, 1u32, 145u32, 38u32, 1u32,
-                    145u32, 39u32, 1u32, 145u32, 40u32, 1u32, 145u32, 41u32, 1u32,
-                    145u32, 42u32, 1u32, 145u32, 0u32, 1u32, 49u32, 4u32, 1u32, 49u32,
-                    44u32, 1u32, 49u32, 0u32, 1u32, 50u32, 4u32, 1u32, 50u32, 44u32,
-                    1u32, 50u32, 0u32, 1u32, 51u32, 4u32, 1u32, 51u32, 44u32, 1u32,
-                    51u32, 0u32, 1u32, 53u32, 4u32, 1u32, 53u32, 44u32, 1u32, 53u32,
-                    0u32, 1u32, 52u32, 4u32, 1u32, 52u32, 44u32, 1u32, 52u32, 0u32, 1u32,
-                    55u32, 4u32, 1u32, 55u32, 44u32, 1u32, 55u32, 0u32, 1u32, 54u32,
-                    4u32, 1u32, 54u32, 44u32, 1u32, 54u32, 0u32, 1u32, 63u32, 4u32, 1u32,
-                    63u32, 44u32, 1u32, 63u32, 0u32, 1u32, 62u32, 4u32, 1u32, 62u32,
-                    44u32, 1u32, 62u32, 0u32, 1u32, 65u32, 4u32, 1u32, 65u32, 44u32,
-                    1u32, 65u32, 0u32, 1u32, 64u32, 4u32, 1u32, 64u32, 44u32, 1u32,
-                    64u32, 0u32, 1u32, 68u32, 4u32, 1u32, 68u32, 44u32, 1u32, 68u32,
-                    0u32, 1u32, 69u32, 4u32, 1u32, 69u32, 44u32, 1u32, 69u32, 0u32, 1u32,
-                    66u32, 4u32, 1u32, 66u32, 44u32, 1u32, 66u32, 0u32, 1u32, 67u32,
-                    4u32, 1u32, 67u32, 44u32, 1u32, 67u32, 0u32, 1u32, 61u32, 4u32, 1u32,
-                    61u32, 44u32, 1u32, 61u32, 0u32, 1u32, 60u32, 4u32, 1u32, 60u32,
-                    44u32, 1u32, 60u32, 0u32, 1u32, 70u32, 4u32, 1u32, 70u32, 44u32,
-                    1u32, 70u32, 0u32, 1u32, 71u32, 4u32, 1u32, 71u32, 44u32, 1u32,
-                    71u32, 0u32, 1u32, 72u32, 4u32, 1u32, 72u32, 44u32, 1u32, 72u32,
-                    0u32, 1u32, 73u32, 4u32, 1u32, 73u32, 44u32, 1u32, 73u32, 0u32, 1u32,
-                    75u32, 4u32, 1u32, 75u32, 44u32, 1u32, 75u32, 0u32, 1u32, 74u32,
-                    4u32, 1u32, 74u32, 44u32, 1u32, 74u32, 0u32, 1u32, 76u32, 4u32, 1u32,
-                    76u32, 44u32, 1u32, 76u32, 0u32, 1u32, 77u32, 4u32, 1u32, 77u32,
-                    44u32, 1u32, 77u32, 44u32, 1u32, 148u32, 44u32, 1u32, 149u32,
+                    2, 1, 2, 2, 1, 1, 3, 1, 81, 4, 1, 81, 16, 1, 81, 36, 1, 81, 0, 1, 24,
+                    3, 1, 24, 4, 1, 24, 7, 1, 24, 8, 1, 24, 11, 1, 24, 12, 1, 24, 13, 1,
+                    24, 14, 1, 24, 16, 1, 24, 17, 1, 24, 19, 1, 24, 36, 1, 24, 37, 1, 24,
+                    38, 1, 24, 39, 1, 24, 40, 1, 24, 41, 1, 24, 0, 1, 24, 3, 1, 24, 4, 1,
+                    24, 7, 1, 24, 8, 1, 24, 9, 1, 24, 11, 1, 24, 12, 1, 24, 13, 1, 24,
+                    14, 1, 24, 16, 1, 24, 17, 1, 24, 18, 1, 24, 19, 1, 24, 36, 1, 24, 37,
+                    1, 24, 38, 1, 24, 39, 1, 24, 40, 1, 24, 41, 1, 24, 42, 1, 24, 0, 1,
+                    23, 3, 1, 23, 4, 1, 23, 7, 1, 23, 8, 1, 23, 9, 1, 23, 11, 1, 23, 12,
+                    1, 23, 13, 1, 23, 14, 1, 23, 16, 1, 23, 17, 1, 23, 18, 1, 23, 19, 1,
+                    23, 36, 1, 23, 37, 1, 23, 38, 1, 23, 39, 1, 23, 40, 1, 23, 41, 1, 23,
+                    42, 1, 23, 0, 1, 32, 3, 1, 32, 4, 1, 32, 7, 1, 32, 8, 1, 32, 9, 1,
+                    32, 11, 1, 32, 12, 1, 32, 13, 1, 32, 14, 1, 32, 16, 1, 32, 17, 1, 32,
+                    18, 1, 32, 19, 1, 32, 36, 1, 32, 37, 1, 32, 38, 1, 32, 39, 1, 32, 40,
+                    1, 32, 41, 1, 32, 42, 1, 32, 0, 1, 33, 3, 1, 33, 4, 1, 33, 7, 1, 33,
+                    8, 1, 33, 9, 1, 33, 11, 1, 33, 12, 1, 33, 13, 1, 33, 14, 1, 33, 16,
+                    1, 33, 17, 1, 33, 18, 1, 33, 19, 1, 33, 36, 1, 33, 37, 1, 33, 38, 1,
+                    33, 39, 1, 33, 40, 1, 33, 41, 1, 33, 42, 1, 33, 0, 1, 34, 3, 1, 34,
+                    4, 1, 34, 7, 1, 34, 8, 1, 34, 9, 1, 34, 11, 1, 34, 12, 1, 34, 13, 1,
+                    34, 14, 1, 34, 16, 1, 34, 17, 1, 34, 18, 1, 34, 19, 1, 34, 36, 1, 34,
+                    37, 1, 34, 38, 1, 34, 39, 1, 34, 40, 1, 34, 41, 1, 34, 42, 1, 34, 0,
+                    1, 35, 3, 1, 35, 4, 1, 35, 7, 1, 35, 8, 1, 35, 9, 1, 35, 11, 1, 35,
+                    12, 1, 35, 13, 1, 35, 14, 1, 35, 16, 1, 35, 17, 1, 35, 18, 1, 35, 19,
+                    1, 35, 36, 1, 35, 37, 1, 35, 38, 1, 35, 39, 1, 35, 40, 1, 35, 41, 1,
+                    35, 42, 1, 35, 3, 1, 95, 18, 1, 95, 0, 1, 87, 11, 1, 87, 13, 1, 87,
+                    20, 1, 87, 0, 1, 86, 11, 1, 86, 13, 1, 86, 20, 1, 86, 20, 1, 91, 0,
+                    1, 13, 11, 1, 13, 13, 1, 13, 20, 1, 13, 0, 1, 14, 11, 1, 14, 13, 1,
+                    14, 20, 1, 14, 0, 1, 15, 11, 1, 15, 13, 1, 15, 20, 1, 15, 0, 1, 19,
+                    11, 1, 19, 13, 1, 19, 20, 1, 19, 0, 1, 20, 11, 1, 20, 13, 1, 20, 20,
+                    1, 20, 0, 1, 21, 11, 1, 21, 13, 1, 21, 20, 1, 21, 0, 1, 16, 11, 1,
+                    16, 13, 1, 16, 20, 1, 16, 0, 1, 17, 11, 1, 17, 13, 1, 17, 20, 1, 17,
+                    0, 1, 18, 11, 1, 18, 13, 1, 18, 20, 1, 18, 0, 1, 88, 11, 1, 88, 13,
+                    1, 88, 20, 1, 88, 20, 1, 90, 0, 1, 89, 11, 1, 89, 13, 1, 89, 20, 1,
+                    89, 0, 1, 22, 3, 1, 22, 4, 1, 22, 7, 1, 22, 8, 1, 22, 9, 1, 22, 11,
+                    1, 22, 12, 1, 22, 13, 1, 22, 14, 1, 22, 16, 1, 22, 17, 1, 22, 18, 1,
+                    22, 19, 1, 22, 36, 1, 22, 37, 1, 22, 38, 1, 22, 39, 1, 22, 40, 1, 22,
+                    41, 1, 22, 42, 1, 22, 0, 1, 29, 3, 1, 29, 4, 1, 29, 7, 1, 29, 8, 1,
+                    29, 9, 1, 29, 11, 1, 29, 12, 1, 29, 13, 1, 29, 14, 1, 29, 16, 1, 29,
+                    17, 1, 29, 18, 1, 29, 19, 1, 29, 36, 1, 29, 37, 1, 29, 38, 1, 29, 39,
+                    1, 29, 40, 1, 29, 41, 1, 29, 42, 1, 29, 0, 1, 31, 3, 1, 31, 4, 1, 31,
+                    7, 1, 31, 8, 1, 31, 9, 1, 31, 11, 1, 31, 12, 1, 31, 13, 1, 31, 14, 1,
+                    31, 16, 1, 31, 17, 1, 31, 18, 1, 31, 19, 1, 31, 36, 1, 31, 37, 1, 31,
+                    38, 1, 31, 39, 1, 31, 40, 1, 31, 41, 1, 31, 42, 1, 31, 0, 1, 92, 3,
+                    1, 92, 7, 1, 92, 8, 1, 92, 11, 1, 92, 12, 1, 92, 13, 1, 92, 14, 1,
+                    92, 17, 1, 92, 18, 1, 92, 19, 1, 92, 0, 1, 25, 3, 1, 25, 4, 1, 25, 7,
+                    1, 25, 8, 1, 25, 9, 1, 25, 11, 1, 25, 12, 1, 25, 13, 1, 25, 14, 1,
+                    25, 16, 1, 25, 17, 1, 25, 18, 1, 25, 19, 1, 25, 36, 1, 25, 37, 1, 25,
+                    38, 1, 25, 39, 1, 25, 40, 1, 25, 41, 1, 25, 42, 1, 25, 0, 1, 26, 3,
+                    1, 26, 4, 1, 26, 7, 1, 26, 8, 1, 26, 9, 1, 26, 11, 1, 26, 12, 1, 26,
+                    13, 1, 26, 14, 1, 26, 16, 1, 26, 17, 1, 26, 18, 1, 26, 19, 1, 26, 36,
+                    1, 26, 37, 1, 26, 38, 1, 26, 39, 1, 26, 40, 1, 26, 41, 1, 26, 42, 1,
+                    26, 0, 1, 27, 3, 1, 27, 4, 1, 27, 7, 1, 27, 8, 1, 27, 9, 1, 27, 11,
+                    1, 27, 12, 1, 27, 13, 1, 27, 14, 1, 27, 16, 1, 27, 17, 1, 27, 18, 1,
+                    27, 19, 1, 27, 36, 1, 27, 37, 1, 27, 38, 1, 27, 39, 1, 27, 40, 1, 27,
+                    41, 1, 27, 42, 1, 27, 0, 1, 28, 3, 1, 28, 4, 1, 28, 7, 1, 28, 8, 1,
+                    28, 9, 1, 28, 11, 1, 28, 12, 1, 28, 13, 1, 28, 14, 1, 28, 16, 1, 28,
+                    17, 1, 28, 18, 1, 28, 19, 1, 28, 36, 1, 28, 37, 1, 28, 38, 1, 28, 39,
+                    1, 28, 40, 1, 28, 41, 1, 28, 42, 1, 28, 0, 1, 36, 3, 1, 36, 4, 1, 36,
+                    7, 1, 36, 8, 1, 36, 9, 1, 36, 11, 1, 36, 12, 1, 36, 13, 1, 36, 14, 1,
+                    36, 16, 1, 36, 17, 1, 36, 18, 1, 36, 19, 1, 36, 36, 1, 36, 41, 1, 36,
+                    42, 1, 36, 3, 1, 94, 18, 1, 94, 0, 1, 93, 3, 1, 93, 7, 1, 93, 8, 1,
+                    93, 11, 1, 93, 12, 1, 93, 13, 1, 93, 14, 1, 93, 17, 1, 93, 18, 1, 93,
+                    19, 1, 93, 3, 1, 96, 18, 1, 96, 3, 1, 95, 18, 1, 95, 3, 1, 97, 18, 1,
+                    97, 0, 1, 30, 3, 1, 30, 4, 1, 30, 7, 1, 30, 8, 1, 30, 9, 1, 30, 11,
+                    1, 30, 12, 1, 30, 13, 1, 30, 14, 1, 30, 16, 1, 30, 17, 1, 30, 18, 1,
+                    30, 19, 1, 30, 36, 1, 30, 37, 1, 30, 38, 1, 30, 39, 1, 30, 40, 1, 30,
+                    41, 1, 30, 42, 1, 30, 18, 1, 99, 18, 1, 98, 0, 1, 38, 3, 1, 38, 4, 1,
+                    38, 7, 1, 38, 8, 1, 38, 9, 1, 38, 11, 1, 38, 12, 1, 38, 13, 1, 38,
+                    14, 1, 38, 16, 1, 38, 17, 1, 38, 18, 1, 38, 19, 1, 38, 36, 1, 38, 37,
+                    1, 38, 38, 1, 38, 39, 1, 38, 40, 1, 38, 41, 1, 38, 42, 1, 38, 0, 1,
+                    39, 3, 1, 39, 4, 1, 39, 7, 1, 39, 8, 1, 39, 9, 1, 39, 11, 1, 39, 12,
+                    1, 39, 13, 1, 39, 14, 1, 39, 16, 1, 39, 17, 1, 39, 18, 1, 39, 19, 1,
+                    39, 36, 1, 39, 37, 1, 39, 38, 1, 39, 39, 1, 39, 40, 1, 39, 41, 1, 39,
+                    42, 1, 39, 0, 1, 41, 3, 1, 41, 4, 1, 41, 7, 1, 41, 8, 1, 41, 9, 1,
+                    41, 11, 1, 41, 12, 1, 41, 13, 1, 41, 14, 1, 41, 16, 1, 41, 17, 1, 41,
+                    18, 1, 41, 19, 1, 41, 36, 1, 41, 37, 1, 41, 38, 1, 41, 39, 1, 41, 40,
+                    1, 41, 41, 1, 41, 42, 1, 41, 0, 1, 40, 3, 1, 40, 4, 1, 40, 7, 1, 40,
+                    8, 1, 40, 9, 1, 40, 11, 1, 40, 12, 1, 40, 13, 1, 40, 14, 1, 40, 16,
+                    1, 40, 17, 1, 40, 18, 1, 40, 19, 1, 40, 36, 1, 40, 37, 1, 40, 38, 1,
+                    40, 39, 1, 40, 40, 1, 40, 41, 1, 40, 42, 1, 40, 0, 1, 37, 3, 1, 37,
+                    4, 1, 37, 7, 1, 37, 8, 1, 37, 9, 1, 37, 11, 1, 37, 12, 1, 37, 13, 1,
+                    37, 14, 1, 37, 16, 1, 37, 17, 1, 37, 18, 1, 37, 19, 1, 37, 36, 1, 37,
+                    37, 1, 37, 38, 1, 37, 39, 1, 37, 40, 1, 37, 41, 1, 37, 42, 1, 37, 0,
+                    1, 12, 3, 1, 12, 4, 1, 12, 7, 1, 12, 8, 1, 12, 11, 1, 12, 12, 1, 12,
+                    13, 1, 12, 14, 1, 12, 16, 1, 12, 17, 1, 12, 19, 1, 12, 36, 1, 12, 3,
+                    1, 81, 4, 1, 81, 16, 1, 81, 36, 1, 81, 3, 1, 3, 36, 1, 3, 0, 1, 78,
+                    3, 1, 78, 4, 1, 78, 7, 1, 78, 8, 1, 78, 11, 1, 78, 12, 1, 78, 13, 1,
+                    78, 14, 1, 78, 16, 1, 78, 17, 1, 78, 19, 1, 78, 36, 1, 78, 0, 1, 11,
+                    3, 1, 11, 4, 1, 11, 7, 1, 11, 8, 1, 11, 11, 1, 11, 12, 1, 11, 13, 1,
+                    11, 14, 1, 11, 16, 1, 11, 17, 1, 11, 19, 1, 11, 36, 1, 11, 3, 1, 80,
+                    4, 1, 80, 16, 1, 80, 36, 1, 80, 0, 1, 79, 3, 1, 79, 4, 1, 79, 7, 1,
+                    79, 8, 1, 79, 11, 1, 79, 12, 1, 79, 13, 1, 79, 14, 1, 79, 16, 1, 79,
+                    17, 1, 79, 19, 1, 79, 36, 1, 79, 3, 1, 85, 16, 1, 85, 36, 1, 85, 0,
+                    1, 44, 3, 1, 44, 4, 1, 44, 11, 1, 44, 13, 1, 44, 16, 1, 44, 36, 1,
+                    44, 0, 1, 45, 3, 1, 45, 4, 1, 45, 11, 1, 45, 13, 1, 45, 16, 1, 45,
+                    36, 1, 45, 0, 1, 46, 3, 1, 46, 4, 1, 46, 11, 1, 46, 13, 1, 46, 16, 1,
+                    46, 36, 1, 46, 3, 1, 7, 4, 1, 7, 16, 1, 7, 36, 1, 7, 3, 1, 6, 4, 1,
+                    6, 16, 1, 6, 36, 1, 6, 3, 1, 8, 4, 1, 8, 16, 1, 8, 36, 1, 8, 3, 1, 9,
+                    4, 1, 9, 16, 1, 9, 36, 1, 9, 3, 1, 10, 4, 1, 10, 16, 1, 10, 36, 1,
+                    10, 3, 1, 82, 4, 1, 82, 16, 1, 82, 36, 1, 82, 3, 1, 84, 16, 1, 84,
+                    36, 1, 84, 3, 1, 83, 4, 1, 83, 16, 1, 83, 36, 1, 83, 3, 1, 43, 36, 1,
+                    43, 3, 1, 42, 36, 1, 42, 3, 1, 5, 36, 1, 5, 0, 1, 0, 4, 1, 0, 43, 1,
+                    0, 3, 1, 4, 36, 1, 4, 0, 1, 57, 4, 1, 57, 43, 1, 57, 0, 1, 143, 11,
+                    1, 143, 13, 1, 143, 36, 1, 143, 0, 1, 56, 4, 1, 56, 43, 1, 56, 0, 1,
+                    144, 11, 1, 144, 13, 1, 144, 36, 1, 144, 0, 1, 59, 4, 1, 59, 43, 1,
+                    59, 0, 1, 58, 4, 1, 58, 43, 1, 58, 0, 1, 48, 4, 1, 48, 43, 1, 48, 0,
+                    1, 141, 1, 1, 141, 2, 1, 141, 3, 1, 141, 4, 1, 141, 5, 1, 141, 6, 1,
+                    141, 7, 1, 141, 8, 1, 141, 9, 1, 141, 10, 1, 141, 11, 1, 141, 12, 1,
+                    141, 13, 1, 141, 14, 1, 141, 15, 1, 141, 16, 1, 141, 17, 1, 141, 18,
+                    1, 141, 19, 1, 141, 20, 1, 141, 21, 1, 141, 22, 1, 141, 23, 1, 141,
+                    24, 1, 141, 25, 1, 141, 26, 1, 141, 27, 1, 141, 28, 1, 141, 29, 1,
+                    141, 30, 1, 141, 31, 1, 141, 32, 1, 141, 33, 1, 141, 34, 1, 141, 35,
+                    1, 141, 36, 1, 141, 37, 1, 141, 38, 1, 141, 39, 1, 141, 40, 1, 141,
+                    41, 1, 141, 0, 1, 47, 4, 1, 47, 43, 1, 47, 0, 1, 142, 1, 1, 142, 2,
+                    1, 142, 3, 1, 142, 4, 1, 142, 5, 1, 142, 6, 1, 142, 7, 1, 142, 8, 1,
+                    142, 9, 1, 142, 10, 1, 142, 11, 1, 142, 12, 1, 142, 13, 1, 142, 14,
+                    1, 142, 15, 1, 142, 16, 1, 142, 17, 1, 142, 18, 1, 142, 19, 1, 142,
+                    20, 1, 142, 21, 1, 142, 22, 1, 142, 23, 1, 142, 24, 1, 142, 25, 1,
+                    142, 26, 1, 142, 27, 1, 142, 28, 1, 142, 29, 1, 142, 30, 1, 142, 31,
+                    1, 142, 32, 1, 142, 33, 1, 142, 34, 1, 142, 35, 1, 142, 36, 1, 142,
+                    37, 1, 142, 38, 1, 142, 39, 1, 142, 40, 1, 142, 41, 1, 142, 0, 1, 49,
+                    4, 1, 49, 43, 1, 49, 0, 1, 50, 4, 1, 50, 43, 1, 50, 0, 1, 51, 4, 1,
+                    51, 43, 1, 51, 0, 1, 53, 4, 1, 53, 43, 1, 53, 0, 1, 52, 4, 1, 52, 43,
+                    1, 52, 0, 1, 55, 4, 1, 55, 43, 1, 55, 0, 1, 54, 4, 1, 54, 43, 1, 54,
+                    0, 1, 63, 4, 1, 63, 43, 1, 63, 0, 1, 62, 4, 1, 62, 43, 1, 62, 0, 1,
+                    65, 4, 1, 65, 43, 1, 65, 0, 1, 64, 4, 1, 64, 43, 1, 64, 0, 1, 68, 4,
+                    1, 68, 43, 1, 68, 0, 1, 69, 4, 1, 69, 43, 1, 69, 0, 1, 66, 4, 1, 66,
+                    43, 1, 66, 0, 1, 67, 4, 1, 67, 43, 1, 67, 0, 1, 61, 4, 1, 61, 43, 1,
+                    61, 0, 1, 60, 4, 1, 60, 43, 1, 60, 0, 1, 70, 4, 1, 70, 43, 1, 70, 0,
+                    1, 71, 4, 1, 71, 43, 1, 71, 0, 1, 73, 4, 1, 73, 43, 1, 73, 0, 1, 72,
+                    4, 1, 72, 43, 1, 72, 0, 1, 74, 4, 1, 74, 43, 1, 74, 0, 1, 75, 4, 1,
+                    75, 43, 1, 75, 43, 1, 145, 43, 1, 146,
                 ];
                 static REDUCE_OFFSETS: &[u32] = &[
-                    0u32, 0u32, 3u32, 6u32, 6u32, 18u32, 72u32, 72u32, 135u32, 198u32,
-                    198u32, 198u32, 198u32, 261u32, 324u32, 387u32, 450u32, 456u32,
-                    468u32, 480u32, 483u32, 495u32, 495u32, 507u32, 519u32, 531u32,
-                    531u32, 543u32, 555u32, 567u32, 567u32, 579u32, 591u32, 603u32,
-                    606u32, 618u32, 618u32, 681u32, 744u32, 744u32, 744u32, 744u32,
-                    807u32, 840u32, 903u32, 966u32, 1029u32, 1092u32, 1092u32, 1143u32,
-                    1149u32, 1182u32, 1188u32, 1188u32, 1194u32, 1200u32, 1263u32,
-                    1266u32, 1269u32, 1269u32, 1332u32, 1332u32, 1395u32, 1395u32,
-                    1458u32, 1458u32, 1521u32, 1521u32, 1584u32, 1623u32, 1623u32,
-                    1635u32, 1641u32, 1680u32, 1719u32, 1731u32, 1770u32, 1779u32,
-                    1779u32, 1779u32, 1800u32, 1821u32, 1842u32, 1854u32, 1866u32,
-                    1866u32, 1878u32, 1890u32, 1902u32, 1914u32, 1923u32, 1935u32,
-                    1941u32, 1947u32, 1953u32, 1962u32, 1968u32, 1968u32, 1968u32,
-                    1968u32, 1977u32, 1989u32, 1989u32, 1998u32, 2010u32, 2010u32,
-                    2010u32, 2019u32, 2019u32, 2028u32, 2028u32, 2028u32, 2037u32,
-                    2166u32, 2166u32, 2175u32, 2304u32, 2304u32, 2313u32, 2313u32,
-                    2313u32, 2322u32, 2322u32, 2331u32, 2331u32, 2340u32, 2340u32,
-                    2349u32, 2349u32, 2358u32, 2358u32, 2367u32, 2367u32, 2376u32,
-                    2376u32, 2385u32, 2385u32, 2394u32, 2394u32, 2403u32, 2403u32,
-                    2412u32, 2412u32, 2421u32, 2421u32, 2430u32, 2430u32, 2439u32,
-                    2439u32, 2439u32, 2448u32, 2448u32, 2457u32, 2457u32, 2466u32,
-                    2466u32, 2475u32, 2475u32, 2484u32, 2484u32, 2493u32, 2493u32,
-                    2502u32, 2502u32, 2511u32, 2511u32, 2520u32, 2529u32, 2532u32,
-                    2535u32, 2535u32, 2535u32,
-                ];
-                static RULESET_DATA: &[u32] = &[
-                    0u32, 47u32, 48u32, 49u32, 50u32, 51u32, 52u32, 53u32, 54u32, 55u32,
-                    56u32, 57u32, 58u32, 59u32, 60u32, 61u32, 62u32, 63u32, 64u32, 65u32,
-                    66u32, 67u32, 68u32, 69u32, 70u32, 71u32, 72u32, 73u32, 74u32, 75u32,
-                    76u32, 77u32, 78u32, 79u32, 148u32, 149u32, 150u32, 65536u32, 1u32,
-                    2u32, 65537u32, 131072u32, 196608u32, 3u32, 4u32, 5u32, 11u32, 12u32,
-                    22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32,
-                    32u32, 33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32,
-                    80u32, 81u32, 82u32, 83u32, 65548u32, 65560u32, 131084u32, 22u32,
-                    23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32,
-                    33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32,
-                    65560u32, 65559u32, 65573u32, 65574u32, 65575u32, 65576u32, 65577u32,
-                    131109u32, 131110u32, 131111u32, 131112u32, 131113u32, 22u32, 23u32,
-                    24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32, 33u32,
-                    34u32, 35u32, 36u32, 37u32, 196645u32, 38u32, 196646u32, 39u32,
-                    196647u32, 40u32, 196648u32, 41u32, 196649u32, 65568u32, 65569u32,
-                    65570u32, 65571u32, 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32,
-                    29u32, 30u32, 65566u32, 31u32, 65567u32, 32u32, 33u32, 34u32, 35u32,
-                    36u32, 37u32, 38u32, 39u32, 40u32, 41u32, 94u32, 95u32, 96u32, 97u32,
-                    98u32, 99u32, 65558u32, 88u32, 89u32, 65624u32, 13u32, 14u32, 15u32,
-                    16u32, 17u32, 18u32, 19u32, 20u32, 21u32, 131094u32, 90u32, 91u32,
-                    92u32, 93u32, 65549u32, 65550u32, 65551u32, 131086u32, 131087u32,
-                    196622u32, 196623u32, 65555u32, 65556u32, 65557u32, 131092u32,
-                    131093u32, 196628u32, 196629u32, 65552u32, 65553u32, 65554u32,
-                    131089u32, 131090u32, 196625u32, 196626u32, 65626u32, 13u32, 14u32,
-                    15u32, 16u32, 17u32, 18u32, 19u32, 20u32, 21u32, 65627u32, 65628u32,
-                    131163u32, 196630u32, 262166u32, 65565u32, 65561u32, 65562u32,
-                    65563u32, 65564u32, 65572u32, 262181u32, 262182u32, 262183u32,
-                    262184u32, 262185u32, 22u32, 23u32, 24u32, 25u32, 26u32, 27u32,
-                    28u32, 29u32, 30u32, 31u32, 32u32, 33u32, 34u32, 35u32, 36u32, 37u32,
-                    327717u32, 38u32, 327718u32, 39u32, 327719u32, 40u32, 327720u32,
-                    41u32, 327721u32, 131103u32, 196639u32, 65561u32, 65562u32, 65563u32,
-                    65564u32, 65572u32, 65630u32, 131097u32, 131098u32, 131099u32,
-                    131100u32, 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32,
-                    30u32, 31u32, 32u32, 33u32, 34u32, 35u32, 36u32, 131108u32, 37u32,
-                    38u32, 39u32, 40u32, 41u32, 65561u32, 65562u32, 65563u32, 65564u32,
-                    196644u32, 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32,
-                    30u32, 31u32, 32u32, 33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32,
-                    40u32, 41u32, 65631u32, 65632u32, 65561u32, 65562u32, 65563u32,
-                    65564u32, 65572u32, 131167u32, 65634u32, 131102u32, 65635u32, 22u32,
-                    23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32,
-                    33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, 94u32,
-                    95u32, 96u32, 97u32, 131171u32, 196707u32, 196638u32, 65561u32,
-                    65562u32, 65563u32, 65564u32, 65572u32, 393253u32, 393254u32,
-                    393255u32, 393256u32, 393257u32, 100u32, 101u32, 458790u32,
-                    458791u32, 458793u32, 65636u32, 524326u32, 589862u32, 524327u32,
-                    589863u32, 524329u32, 589865u32, 458792u32, 524328u32, 458789u32,
-                    524325u32, 196620u32, 65561u32, 65562u32, 65563u32, 65564u32,
-                    65572u32, 262144u32, 65539u32, 131075u32, 5u32, 11u32, 12u32, 22u32,
-                    23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32,
-                    33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, 80u32,
-                    81u32, 82u32, 83u32, 196611u32, 65616u32, 65547u32, 65561u32,
-                    65562u32, 65563u32, 65564u32, 65572u32, 11u32, 12u32, 22u32, 23u32,
-                    24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32, 33u32,
-                    34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, 65617u32,
-                    65618u32, 131153u32, 65541u32, 6u32, 7u32, 8u32, 9u32, 10u32, 84u32,
-                    85u32, 86u32, 87u32, 65542u32, 65543u32, 65544u32, 65545u32,
-                    65546u32, 131078u32, 131079u32, 44u32, 45u32, 46u32, 65580u32,
-                    65581u32, 65582u32, 196615u32, 196614u32, 131080u32, 131081u32,
-                    196616u32, 196617u32, 131082u32, 65620u32, 6u32, 7u32, 8u32, 9u32,
-                    10u32, 65621u32, 65622u32, 131157u32, 131077u32, 42u32, 43u32,
-                    65578u32, 196613u32, 327680u32, 65540u32, 65583u32, 65584u32,
-                    65585u32, 65586u32, 65587u32, 65588u32, 65589u32, 65590u32, 65591u32,
-                    65592u32, 65593u32, 65594u32, 65595u32, 65596u32, 65597u32, 65598u32,
-                    65599u32, 65600u32, 65601u32, 65602u32, 65603u32, 65604u32, 65605u32,
-                    65606u32, 65607u32, 65608u32, 65609u32, 65610u32, 65611u32, 65612u32,
-                    44u32, 45u32, 46u32, 131128u32, 131129u32, 146u32, 147u32, 196665u32,
-                    262201u32, 65682u32, 44u32, 45u32, 46u32, 196664u32, 65683u32,
-                    262200u32, 131219u32, 44u32, 45u32, 46u32, 131130u32, 131131u32,
-                    146u32, 147u32, 196667u32, 262203u32, 44u32, 45u32, 46u32, 196666u32,
-                    65683u32, 262202u32, 131119u32, 131120u32, 131121u32, 196655u32,
-                    196656u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32,
-                    109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32,
-                    117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32,
-                    125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32,
-                    133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32,
-                    141u32, 142u32, 143u32, 144u32, 145u32, 262192u32, 65680u32,
-                    262191u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32,
-                    109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32,
-                    117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32,
-                    125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32,
-                    133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32,
-                    141u32, 142u32, 143u32, 65681u32, 327727u32, 131217u32, 196657u32,
-                    262193u32, 131122u32, 131123u32, 196658u32, 262194u32, 196659u32,
-                    262195u32, 131124u32, 131125u32, 102u32, 103u32, 104u32, 105u32,
-                    106u32, 107u32, 108u32, 109u32, 110u32, 111u32, 112u32, 113u32,
-                    114u32, 115u32, 116u32, 117u32, 118u32, 119u32, 120u32, 121u32,
-                    122u32, 123u32, 124u32, 125u32, 126u32, 127u32, 128u32, 129u32,
-                    130u32, 131u32, 132u32, 133u32, 134u32, 135u32, 136u32, 137u32,
-                    138u32, 139u32, 140u32, 141u32, 142u32, 143u32, 144u32, 145u32,
-                    196661u32, 196660u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32,
-                    108u32, 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32,
-                    116u32, 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32,
-                    124u32, 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32,
-                    132u32, 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32,
-                    140u32, 141u32, 142u32, 143u32, 65681u32, 262196u32, 131126u32,
-                    131127u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32,
-                    109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32,
-                    117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32,
-                    125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32,
-                    133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32,
-                    141u32, 142u32, 143u32, 144u32, 145u32, 196663u32, 196662u32, 102u32,
-                    103u32, 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, 110u32,
-                    111u32, 112u32, 113u32, 114u32, 115u32, 116u32, 117u32, 118u32,
-                    119u32, 120u32, 121u32, 122u32, 123u32, 124u32, 125u32, 126u32,
-                    127u32, 128u32, 129u32, 130u32, 131u32, 132u32, 133u32, 134u32,
-                    135u32, 136u32, 137u32, 138u32, 139u32, 140u32, 141u32, 142u32,
-                    143u32, 65681u32, 262198u32, 131134u32, 131135u32, 102u32, 103u32,
-                    104u32, 105u32, 106u32, 107u32, 108u32, 109u32, 110u32, 111u32,
-                    112u32, 113u32, 114u32, 115u32, 116u32, 117u32, 118u32, 119u32,
-                    120u32, 121u32, 122u32, 123u32, 124u32, 125u32, 126u32, 127u32,
-                    128u32, 129u32, 130u32, 131u32, 132u32, 133u32, 134u32, 135u32,
-                    136u32, 137u32, 138u32, 139u32, 140u32, 141u32, 142u32, 143u32,
-                    144u32, 145u32, 196671u32, 196670u32, 102u32, 103u32, 104u32, 105u32,
-                    106u32, 107u32, 108u32, 109u32, 110u32, 111u32, 112u32, 113u32,
-                    114u32, 115u32, 116u32, 117u32, 118u32, 119u32, 120u32, 121u32,
-                    122u32, 123u32, 124u32, 125u32, 126u32, 127u32, 128u32, 129u32,
-                    130u32, 131u32, 132u32, 133u32, 134u32, 135u32, 136u32, 137u32,
-                    138u32, 139u32, 140u32, 141u32, 142u32, 143u32, 65681u32, 262206u32,
-                    131136u32, 131137u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32,
-                    108u32, 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32,
-                    116u32, 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32,
-                    124u32, 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32,
-                    132u32, 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32,
-                    140u32, 141u32, 142u32, 143u32, 144u32, 145u32, 196673u32, 196672u32,
-                    102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, 109u32,
-                    110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, 117u32,
-                    118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, 125u32,
-                    126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, 133u32,
-                    134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, 141u32,
-                    142u32, 143u32, 65681u32, 262208u32, 131140u32, 131141u32, 196676u32,
-                    196677u32, 262213u32, 131138u32, 131139u32, 196674u32, 196675u32,
-                    262211u32, 44u32, 45u32, 46u32, 131132u32, 131133u32, 146u32, 147u32,
-                    196669u32, 262205u32, 44u32, 45u32, 46u32, 196668u32, 65683u32,
-                    262204u32, 131142u32, 131143u32, 196678u32, 196679u32, 262215u32,
-                    131144u32, 131145u32, 196680u32, 196681u32, 262217u32, 131146u32,
-                    131147u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32,
-                    109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32,
-                    117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32,
-                    125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32,
-                    133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32,
-                    141u32, 142u32, 143u32, 144u32, 145u32, 196683u32, 196682u32, 102u32,
-                    103u32, 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, 110u32,
-                    111u32, 112u32, 113u32, 114u32, 115u32, 116u32, 117u32, 118u32,
-                    119u32, 120u32, 121u32, 122u32, 123u32, 124u32, 125u32, 126u32,
-                    127u32, 128u32, 129u32, 130u32, 131u32, 132u32, 133u32, 134u32,
-                    135u32, 136u32, 137u32, 138u32, 139u32, 140u32, 141u32, 142u32,
-                    143u32, 65681u32, 262218u32, 131148u32, 196684u32, 65613u32, 0u32,
-                    47u32, 48u32, 49u32, 50u32, 51u32, 52u32, 53u32, 54u32, 55u32, 56u32,
-                    57u32, 58u32, 59u32, 60u32, 61u32, 62u32, 63u32, 64u32, 65u32, 66u32,
-                    67u32, 68u32, 69u32, 70u32, 71u32, 72u32, 73u32, 74u32, 75u32, 76u32,
-                    77u32, 78u32, 148u32, 65684u32, 149u32, 65685u32, 131221u32,
-                    65686u32, 131222u32,
-                ];
-                static RULESET_OFFSETS: &[u32] = &[
-                    0u32, 37u32, 40u32, 41u32, 42u32, 72u32, 74u32, 95u32, 96u32, 97u32,
-                    102u32, 107u32, 132u32, 133u32, 134u32, 135u32, 136u32, 164u32,
-                    167u32, 168u32, 182u32, 185u32, 187u32, 188u32, 189u32, 192u32,
-                    194u32, 195u32, 196u32, 199u32, 201u32, 202u32, 203u32, 204u32,
-                    215u32, 216u32, 217u32, 218u32, 219u32, 229u32, 254u32, 255u32,
-                    256u32, 262u32, 263u32, 264u32, 265u32, 266u32, 287u32, 292u32,
-                    314u32, 320u32, 321u32, 323u32, 348u32, 349u32, 350u32, 362u32,
-                    366u32, 367u32, 368u32, 369u32, 370u32, 371u32, 372u32, 373u32,
-                    374u32, 375u32, 376u32, 382u32, 384u32, 412u32, 413u32, 414u32,
-                    420u32, 444u32, 445u32, 455u32, 460u32, 465u32, 466u32, 467u32,
-                    468u32, 469u32, 470u32, 472u32, 473u32, 474u32, 475u32, 476u32,
-                    483u32, 484u32, 487u32, 488u32, 489u32, 490u32, 491u32, 521u32,
-                    528u32, 529u32, 530u32, 531u32, 536u32, 537u32, 538u32, 545u32,
-                    546u32, 547u32, 552u32, 553u32, 556u32, 602u32, 603u32, 604u32,
-                    648u32, 649u32, 650u32, 651u32, 652u32, 654u32, 655u32, 656u32,
-                    657u32, 658u32, 704u32, 705u32, 749u32, 750u32, 796u32, 797u32,
-                    841u32, 842u32, 888u32, 889u32, 933u32, 934u32, 980u32, 981u32,
-                    1025u32, 1026u32, 1028u32, 1029u32, 1030u32, 1031u32, 1033u32,
-                    1034u32, 1035u32, 1036u32, 1043u32, 1044u32, 1045u32, 1050u32,
-                    1051u32, 1053u32, 1054u32, 1055u32, 1056u32, 1058u32, 1059u32,
-                    1060u32, 1061u32, 1107u32, 1108u32, 1152u32, 1153u32, 1154u32,
-                    1155u32, 1156u32, 1193u32, 1194u32, 1195u32, 1196u32,
+                    0, 0, 3, 6, 6, 18, 72, 72, 135, 198, 198, 198, 198, 261, 324, 387,
+                    450, 456, 468, 480, 483, 495, 495, 507, 519, 531, 531, 543, 555, 567,
+                    567, 579, 591, 603, 606, 618, 618, 681, 744, 744, 744, 744, 807, 840,
+                    903, 966, 1029, 1092, 1092, 1143, 1149, 1182, 1188, 1188, 1194, 1200,
+                    1263, 1266, 1269, 1269, 1332, 1332, 1395, 1395, 1458, 1458, 1521,
+                    1521, 1584, 1623, 1623, 1635, 1641, 1680, 1719, 1731, 1770, 1779,
+                    1779, 1779, 1800, 1821, 1842, 1854, 1866, 1866, 1878, 1890, 1902,
+                    1914, 1923, 1935, 1941, 1947, 1953, 1962, 1968, 1968, 1968, 1968,
+                    1977, 1989, 1989, 1998, 2010, 2010, 2010, 2019, 2019, 2028, 2028,
+                    2028, 2037, 2163, 2163, 2172, 2298, 2298, 2307, 2307, 2307, 2316,
+                    2316, 2325, 2325, 2334, 2334, 2343, 2343, 2352, 2352, 2361, 2361,
+                    2370, 2370, 2379, 2379, 2388, 2388, 2397, 2397, 2406, 2406, 2415,
+                    2415, 2424, 2424, 2433, 2433, 2433, 2442, 2442, 2451, 2451, 2460,
+                    2460, 2469, 2469, 2478, 2478, 2487, 2487, 2496, 2505, 2508, 2511,
+                    2511, 2511,
                 ];
                 static CAN_ACCEPT_ERROR: &[u8] = &[
-                    0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 2u8, 0u8, 0u8, 0u8, 2u8, 2u8,
-                    2u8, 2u8, 1u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
-                    0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 2u8, 0u8, 0u8, 0u8, 2u8,
-                    0u8, 2u8, 2u8, 2u8, 2u8, 0u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8,
-                    1u8, 1u8, 0u8, 2u8, 0u8, 2u8, 0u8, 2u8, 0u8, 2u8, 0u8, 2u8, 0u8, 0u8,
-                    0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8,
-                    1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 1u8,
-                    0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
-                    0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
-                    0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8,
-                    0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8,
-                    0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
-                    0u8, 0u8, 0u8,
+                    0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 2, 2, 1, 0, 0, 0, 0, 1, 0,
+                    0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 0, 2, 2, 2,
+                    2, 0, 2, 0, 0, 0, 0, 0, 0, 2, 1, 1, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0,
+                    0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+                    0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+                    0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                    0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+                    0, 0, 0, 0, 0, 0,
                 ];
-                let num_states = 171usize;
+                let num_states = 167usize;
                 let mut states = Vec::with_capacity(num_states);
                 for i in 0..num_states {
                     let term_start = SHIFT_TERM_OFFSETS[i] as usize;
@@ -7395,19 +6867,6 @@ impl ::rusty_lr_core::parser::Parser for GrammarParser {
                         reduce_map.push((term_class, rules));
                         idx += 2 + len;
                     }
-                    let ruleset_start = RULESET_OFFSETS[i] as usize;
-                    let ruleset_end = RULESET_OFFSETS[i + 1] as usize;
-                    let mut ruleset = Vec::with_capacity(ruleset_end - ruleset_start);
-                    for idx in ruleset_start..ruleset_end {
-                        let val = RULESET_DATA[idx];
-                        let rule = (val & 0xffff) as usize;
-                        let shifted = (val >> 16) as usize;
-                        ruleset
-                            .push(::rusty_lr_core::rule::ShiftedRuleRef {
-                                rule,
-                                shifted,
-                            });
-                    }
                     let can_accept_error = match CAN_ACCEPT_ERROR[i] {
                         0 => ::rusty_lr_core::TriState::False,
                         1 => ::rusty_lr_core::TriState::True,
@@ -7418,7 +6877,7 @@ impl ::rusty_lr_core::parser::Parser for GrammarParser {
                         shift_goto_map_term,
                         shift_goto_map_nonterm,
                         reduce_map,
-                        ruleset,
+                        ruleset: Vec::new(),
                         can_accept_error,
                     };
                     states.push(intermediate.into());
diff --git a/scripts/bootstrap_test.sh b/scripts/bootstrap_test.sh
index 6b15af3d..e49097e9 100755
--- a/scripts/bootstrap_test.sh
+++ b/scripts/bootstrap_test.sh
@@ -93,16 +93,16 @@ mv "$rustylr_path/scripts/diff/calculator_u8_new.rs" "$rustylr_path/scripts/diff
 mv "$rustylr_path/scripts/diff/json_new.rs" "$rustylr_path/scripts/diff/json.rs"
 
 echo "Setting Dense = false, GLR = false"
-process_and_compare "--dense false --glr false"
+process_and_compare "--layout sparse --glr false"
 
 echo "Setting Dense = false, GLR = true"
-process_and_compare "--dense false --glr true"
+process_and_compare "--layout sparse --glr true"
 
 echo "Setting Dense = true, GLR = false"
-process_and_compare "--dense true --glr false"
+process_and_compare "--layout dense --glr false"
 
 echo "Setting Dense = true, GLR = true"
-process_and_compare "--dense true --glr true"
+process_and_compare "--layout dense --glr true"
 
 echo "Normal configuration"
 process_and_compare ""
diff --git a/scripts/diff/calculator.rs b/scripts/diff/calculator.rs
index 4d734ed4..770087aa 100644
--- a/scripts/diff/calculator.rs
+++ b/scripts/diff/calculator.rs
@@ -39,7 +39,7 @@ pub type EContext = ::rusty_lr::parser::deterministic::Context<EParser, EDataSta
 pub type ERule = ::rusty_lr::rule::ProductionRule<ETerminalClasses, ENonTerminals>;
 /// type alias for DFA state
 #[allow(non_camel_case_types, dead_code)]
-pub type EState = ::rusty_lr::parser::state::SparseState<
+pub type EState = ::rusty_lr::parser::state::DenseState<
     ETerminalClasses,
     ENonTerminals,
     u8,
@@ -645,19 +645,12 @@ impl ::rusty_lr::parser::Parser for EParser {
         static RULES: std::sync::OnceLock<Vec<ERule>> = std::sync::OnceLock::new();
         RULES
             .get_or_init(|| {
-                static RULE_NAMES: &[u32] = &[
-                    0u32, 0u32, 1u32, 1u32, 2u32, 2u32, 3u32, 4u32,
-                ];
-                static RULE_PRECEDENCES: &[u32] = &[
-                    1u32, 0u32, 5u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                ];
+                static RULE_NAMES: &[u32] = &[0, 0, 1, 1, 2, 2, 3, 4];
+                static RULE_PRECEDENCES: &[u32] = &[1, 0, 5, 0, 0, 0, 0, 0];
                 static RULE_TOKENS_DATA: &[u32] = &[
-                    1u32, 2u32, 1u32, 3u32, 3u32, 4u32, 3u32, 5u32, 0u32, 6u32, 7u32,
-                    8u32, 1u32, 7u32, 14u32,
-                ];
-                static RULE_TOKENS_OFFSETS: &[u32] = &[
-                    0u32, 3u32, 4u32, 7u32, 8u32, 9u32, 12u32, 13u32, 15u32,
+                    1, 2, 1, 3, 3, 4, 3, 5, 0, 6, 7, 8, 1, 7, 14,
                 ];
+                static RULE_TOKENS_OFFSETS: &[u32] = &[0, 3, 4, 7, 8, 9, 12, 13, 15];
                 let num_rules = 8usize;
                 let mut rules = Vec::with_capacity(num_rules);
                 for i in 0..num_rules {
@@ -714,49 +707,30 @@ impl ::rusty_lr::parser::Parser for EParser {
         STATES
             .get_or_init(|| {
                 static SHIFT_TERM_DATA: &[u32] = &[
-                    2147516416u32, 65539u32, 2147516416u32, 65539u32, 2147614721u32,
-                    2147516416u32, 65539u32, 229378u32, 2147516416u32, 65539u32,
-                    327684u32, 2147876871u32,
+                    2147516416, 65539, 2147516416, 65539, 2147614721, 2147516416, 65539,
+                    229378, 2147516416, 65539, 327684, 2147876871,
                 ];
                 static SHIFT_TERM_OFFSETS: &[u32] = &[
-                    0u32, 2u32, 2u32, 4u32, 5u32, 7u32, 7u32, 8u32, 10u32, 10u32, 11u32,
-                    11u32, 12u32, 12u32,
+                    0, 2, 2, 4, 5, 7, 7, 8, 10, 10, 11, 11, 12, 12,
                 ];
                 static SHIFT_NONTERM_DATA: &[u32] = &[
-                    2147581952u32, 2147680257u32, 2147680258u32, 2147844099u32,
-                    2147581952u32, 2147680257u32, 2147680258u32, 2147778563u32,
-                    2147647488u32, 2147680257u32, 2147680258u32, 2147745793u32,
-                    2147745794u32,
+                    2147581952, 2147680257, 2147680258, 2147844099, 2147581952,
+                    2147680257, 2147680258, 2147778563, 2147647488, 2147680257,
+                    2147680258, 2147745793, 2147745794,
                 ];
                 static SHIFT_NONTERM_OFFSETS: &[u32] = &[
-                    0u32, 4u32, 4u32, 8u32, 8u32, 11u32, 11u32, 11u32, 13u32, 13u32,
-                    13u32, 13u32, 13u32, 13u32,
+                    0, 4, 4, 8, 8, 11, 11, 11, 13, 13, 13, 13, 13, 13,
                 ];
                 static REDUCE_DATA: &[u32] = &[
-                    1u32, 1u32, 4u32, 2u32, 1u32, 4u32, 4u32, 1u32, 4u32, 7u32, 1u32,
-                    4u32, 4u32, 1u32, 6u32, 7u32, 1u32, 6u32, 1u32, 1u32, 0u32, 4u32,
-                    1u32, 0u32, 7u32, 1u32, 0u32, 1u32, 1u32, 1u32, 4u32, 1u32, 1u32,
-                    7u32, 1u32, 1u32, 1u32, 1u32, 2u32, 2u32, 1u32, 2u32, 4u32, 1u32,
-                    2u32, 7u32, 1u32, 2u32, 1u32, 1u32, 5u32, 2u32, 1u32, 5u32, 4u32,
-                    1u32, 5u32, 7u32, 1u32, 5u32,
+                    1, 1, 4, 2, 1, 4, 4, 1, 4, 7, 1, 4, 4, 1, 6, 7, 1, 6, 1, 1, 0, 4, 1,
+                    0, 7, 1, 0, 1, 1, 1, 4, 1, 1, 7, 1, 1, 1, 1, 2, 2, 1, 2, 4, 1, 2, 7,
+                    1, 2, 1, 1, 5, 2, 1, 5, 4, 1, 5, 7, 1, 5,
                 ];
                 static REDUCE_OFFSETS: &[u32] = &[
-                    0u32, 0u32, 12u32, 12u32, 18u32, 18u32, 27u32, 36u32, 36u32, 48u32,
-                    48u32, 60u32, 60u32, 60u32,
-                ];
-                static RULESET_DATA: &[u32] = &[
-                    0u32, 1u32, 2u32, 3u32, 4u32, 5u32, 6u32, 7u32, 65540u32, 0u32, 1u32,
-                    2u32, 3u32, 4u32, 5u32, 65541u32, 6u32, 65536u32, 65542u32, 0u32,
-                    131072u32, 1u32, 2u32, 3u32, 4u32, 5u32, 196608u32, 65537u32,
-                    65538u32, 2u32, 131074u32, 3u32, 4u32, 5u32, 196610u32, 131077u32,
-                    196613u32, 65543u32, 131079u32,
-                ];
-                static RULESET_OFFSETS: &[u32] = &[
-                    0u32, 8u32, 9u32, 17u32, 19u32, 26u32, 27u32, 29u32, 34u32, 35u32,
-                    36u32, 37u32, 38u32, 39u32,
+                    0, 0, 12, 12, 18, 18, 27, 36, 36, 48, 48, 60, 60, 60,
                 ];
                 static CAN_ACCEPT_ERROR: &[u8] = &[
-                    0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                 ];
                 let num_states = 13usize;
                 let mut states = Vec::with_capacity(num_states);
@@ -810,19 +784,6 @@ impl ::rusty_lr::parser::Parser for EParser {
                         reduce_map.push((term_class, rules));
                         idx += 2 + len;
                     }
-                    let ruleset_start = RULESET_OFFSETS[i] as usize;
-                    let ruleset_end = RULESET_OFFSETS[i + 1] as usize;
-                    let mut ruleset = Vec::with_capacity(ruleset_end - ruleset_start);
-                    for idx in ruleset_start..ruleset_end {
-                        let val = RULESET_DATA[idx];
-                        let rule = (val & 0xffff) as usize;
-                        let shifted = (val >> 16) as usize;
-                        ruleset
-                            .push(::rusty_lr::rule::ShiftedRuleRef {
-                                rule,
-                                shifted,
-                            });
-                    }
                     let can_accept_error = match CAN_ACCEPT_ERROR[i] {
                         0 => ::rusty_lr::TriState::False,
                         1 => ::rusty_lr::TriState::True,
@@ -833,7 +794,7 @@ impl ::rusty_lr::parser::Parser for EParser {
                         shift_goto_map_term,
                         shift_goto_map_nonterm,
                         reduce_map,
-                        ruleset,
+                        ruleset: Vec::new(),
                         can_accept_error,
                     };
                     states.push(intermediate.into());
diff --git a/scripts/diff/calculator_u8.rs b/scripts/diff/calculator_u8.rs
index a9bf1174..04a035e0 100644
--- a/scripts/diff/calculator_u8.rs
+++ b/scripts/diff/calculator_u8.rs
@@ -40,7 +40,7 @@ pub type EContext = ::rusty_lr::parser::deterministic::Context<EParser, EDataSta
 pub type ERule = ::rusty_lr::rule::ProductionRule<ETerminalClasses, ENonTerminals>;
 /// type alias for DFA state
 #[allow(non_camel_case_types, dead_code)]
-pub type EState = ::rusty_lr::parser::state::SparseState<
+pub type EState = ::rusty_lr::parser::state::DenseState<
     ETerminalClasses,
     ENonTerminals,
     u8,
@@ -859,21 +859,17 @@ impl ::rusty_lr::parser::Parser for EParser {
         RULES
             .get_or_init(|| {
                 static RULE_NAMES: &[u32] = &[
-                    0u32, 0u32, 1u32, 2u32, 2u32, 3u32, 3u32, 3u32, 4u32, 4u32, 5u32,
-                    5u32, 6u32, 6u32, 7u32, 7u32, 8u32,
+                    0, 0, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8,
                 ];
                 static RULE_PRECEDENCES: &[u32] = &[
-                    0u32, 0u32, 0u32, 0u32, 0u32, 6u32, 9u32, 0u32, 1u32, 5u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
+                    0, 0, 0, 0, 0, 6, 9, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0,
                 ];
                 static RULE_TOKENS_DATA: &[u32] = &[
-                    10u32, 12u32, 13u32, 15u32, 13u32, 3u32, 13u32, 4u32, 7u32, 6u32,
-                    13u32, 7u32, 9u32, 7u32, 13u32, 8u32, 7u32, 5u32, 16u32, 14u32, 0u32,
-                    11u32, 0u32, 11u32, 1u32, 15u32, 1u32, 7u32, 20u32,
+                    10, 12, 13, 15, 13, 3, 13, 4, 7, 6, 13, 7, 9, 7, 13, 8, 7, 5, 16, 14,
+                    0, 11, 0, 11, 1, 15, 1, 7, 20,
                 ];
                 static RULE_TOKENS_OFFSETS: &[u32] = &[
-                    0u32, 1u32, 2u32, 5u32, 6u32, 11u32, 14u32, 17u32, 18u32, 19u32,
-                    20u32, 21u32, 23u32, 24u32, 24u32, 25u32, 27u32, 29u32,
+                    0, 1, 2, 5, 6, 11, 14, 17, 18, 19, 20, 21, 23, 24, 24, 25, 27, 29,
                 ];
                 let num_rules = 17usize;
                 let mut rules = Vec::with_capacity(num_rules);
@@ -931,95 +927,54 @@ impl ::rusty_lr::parser::Parser for EParser {
         STATES
             .get_or_init(|| {
                 static SHIFT_TERM_DATA: &[u32] = &[
-                    196608u32, 2147614727u32, 2147614728u32, 2147581962u32, 196608u32,
-                    2147614727u32, 2147614728u32, 229376u32, 294914u32, 753668u32,
-                    589829u32, 2148106246u32, 196608u32, 360451u32, 2147909639u32,
-                    2147909640u32, 196608u32, 196608u32, 2147909639u32, 2147909640u32,
-                    294914u32, 524292u32, 589829u32, 2148106246u32, 196608u32, 196608u32,
-                    589829u32, 2148171782u32, 196608u32,
+                    196608, 2147614727, 2147614728, 2147581962, 196608, 2147614727,
+                    2147614728, 229376, 294914, 753668, 589829, 2148106246, 196608,
+                    360451, 2147909639, 2147909640, 196608, 196608, 2147909639,
+                    2147909640, 294914, 524292, 589829, 2148106246, 196608, 196608,
+                    589829, 2148171782, 196608,
                 ];
                 static SHIFT_TERM_OFFSETS: &[u32] = &[
-                    0u32, 1u32, 1u32, 4u32, 4u32, 5u32, 7u32, 8u32, 8u32, 12u32, 13u32,
-                    16u32, 17u32, 17u32, 18u32, 20u32, 24u32, 25u32, 25u32, 25u32, 25u32,
-                    28u32, 28u32, 28u32, 29u32, 29u32,
+                    0, 1, 1, 4, 4, 5, 7, 8, 8, 12, 13, 16, 17, 17, 18, 20, 24, 25, 25,
+                    25, 25, 28, 28, 28, 29, 29,
                 ];
                 static SHIFT_NONTERM_DATA: &[u32] = &[
-                    2147516417u32, 2147549186u32, 2147549187u32, 2147680261u32,
-                    2147745798u32, 2147614724u32, 2147516417u32, 2147647490u32,
-                    2147647491u32, 2147680261u32, 2147745798u32, 2147614724u32,
-                    2148106240u32, 2148139015u32, 2147516417u32, 2147811330u32,
-                    2147811331u32, 2147680261u32, 2147975174u32, 2147909636u32,
-                    2147680261u32, 2147876870u32, 2147516417u32, 2147942402u32,
-                    2147942403u32, 2147680261u32, 2147975174u32, 2147909636u32,
-                    2148106240u32, 2148139015u32, 2147516417u32, 2148040706u32,
-                    2148040707u32, 2147680261u32, 2147975174u32, 2147909636u32,
-                    2148171776u32, 2147680261u32, 2148204550u32, 2147516417u32,
-                    2148270082u32, 2148270083u32, 2147680261u32, 2147745798u32,
-                    2147614724u32,
+                    2147516417, 2147549186, 2147549187, 2147680261, 2147745798,
+                    2147614724, 2147516417, 2147647490, 2147647491, 2147680261,
+                    2147745798, 2147614724, 2148106240, 2148139015, 2147516417,
+                    2147811330, 2147811331, 2147680261, 2147975174, 2147909636,
+                    2147680261, 2147876870, 2147516417, 2147942402, 2147942403,
+                    2147680261, 2147975174, 2147909636, 2148106240, 2148139015,
+                    2147516417, 2148040706, 2148040707, 2147680261, 2147975174,
+                    2147909636, 2148171776, 2147680261, 2148204550, 2147516417,
+                    2148270082, 2148270083, 2147680261, 2147745798, 2147614724,
                 ];
                 static SHIFT_NONTERM_OFFSETS: &[u32] = &[
-                    0u32, 5u32, 5u32, 6u32, 6u32, 11u32, 12u32, 12u32, 12u32, 14u32,
-                    19u32, 20u32, 22u32, 22u32, 27u32, 28u32, 30u32, 35u32, 36u32, 36u32,
-                    36u32, 39u32, 39u32, 39u32, 44u32, 45u32,
+                    0, 5, 5, 6, 6, 11, 12, 12, 12, 14, 19, 20, 22, 22, 27, 28, 30, 35,
+                    36, 36, 36, 39, 39, 39, 44, 45,
                 ];
                 static REDUCE_DATA: &[u32] = &[
-                    2u32, 1u32, 13u32, 4u32, 1u32, 13u32, 5u32, 1u32, 13u32, 6u32, 1u32,
-                    13u32, 3u32, 1u32, 3u32, 7u32, 1u32, 3u32, 8u32, 1u32, 3u32, 10u32,
-                    1u32, 3u32, 2u32, 1u32, 13u32, 4u32, 1u32, 13u32, 5u32, 1u32, 13u32,
-                    6u32, 1u32, 13u32, 7u32, 1u32, 5u32, 8u32, 1u32, 5u32, 10u32, 1u32,
-                    5u32, 2u32, 1u32, 12u32, 3u32, 1u32, 12u32, 4u32, 1u32, 12u32, 5u32,
-                    1u32, 12u32, 6u32, 1u32, 12u32, 7u32, 1u32, 12u32, 8u32, 1u32, 12u32,
-                    10u32, 1u32, 12u32, 0u32, 1u32, 11u32, 2u32, 1u32, 11u32, 3u32, 1u32,
-                    11u32, 4u32, 1u32, 11u32, 5u32, 1u32, 11u32, 6u32, 1u32, 11u32, 7u32,
-                    1u32, 11u32, 8u32, 1u32, 11u32, 10u32, 1u32, 11u32, 2u32, 1u32,
-                    13u32, 4u32, 1u32, 13u32, 5u32, 1u32, 13u32, 6u32, 1u32, 13u32, 3u32,
-                    1u32, 13u32, 7u32, 1u32, 13u32, 8u32, 1u32, 13u32, 10u32, 1u32,
-                    13u32, 3u32, 1u32, 4u32, 7u32, 1u32, 4u32, 8u32, 1u32, 4u32, 10u32,
-                    1u32, 4u32, 2u32, 1u32, 13u32, 4u32, 1u32, 13u32, 5u32, 1u32, 13u32,
-                    6u32, 1u32, 13u32, 3u32, 1u32, 5u32, 7u32, 1u32, 5u32, 8u32, 1u32,
-                    5u32, 2u32, 1u32, 13u32, 4u32, 1u32, 13u32, 5u32, 1u32, 13u32, 6u32,
-                    1u32, 13u32, 3u32, 1u32, 6u32, 7u32, 1u32, 6u32, 8u32, 1u32, 6u32,
-                    0u32, 1u32, 0u32, 3u32, 1u32, 0u32, 5u32, 1u32, 0u32, 6u32, 1u32,
-                    0u32, 7u32, 1u32, 0u32, 8u32, 1u32, 0u32, 10u32, 1u32, 0u32, 0u32,
-                    1u32, 14u32, 3u32, 1u32, 14u32, 5u32, 1u32, 14u32, 6u32, 1u32, 14u32,
-                    7u32, 1u32, 14u32, 8u32, 1u32, 14u32, 10u32, 1u32, 14u32, 3u32, 1u32,
-                    13u32, 7u32, 1u32, 13u32, 8u32, 1u32, 13u32, 10u32, 1u32, 13u32,
-                    0u32, 1u32, 15u32, 3u32, 1u32, 15u32, 5u32, 1u32, 15u32, 6u32, 1u32,
-                    15u32, 7u32, 1u32, 15u32, 8u32, 1u32, 15u32, 10u32, 1u32, 15u32,
-                    3u32, 1u32, 2u32, 7u32, 1u32, 2u32, 8u32, 1u32, 2u32, 10u32, 1u32,
-                    2u32, 2u32, 1u32, 13u32, 4u32, 1u32, 13u32, 5u32, 1u32, 13u32, 6u32,
-                    1u32, 13u32, 7u32, 1u32, 6u32, 8u32, 1u32, 6u32, 10u32, 1u32, 6u32,
+                    2, 1, 13, 4, 1, 13, 5, 1, 13, 6, 1, 13, 3, 1, 3, 7, 1, 3, 8, 1, 3,
+                    10, 1, 3, 2, 1, 13, 4, 1, 13, 5, 1, 13, 6, 1, 13, 7, 1, 5, 8, 1, 5,
+                    10, 1, 5, 2, 1, 12, 3, 1, 12, 4, 1, 12, 5, 1, 12, 6, 1, 12, 7, 1, 12,
+                    8, 1, 12, 10, 1, 12, 0, 1, 11, 2, 1, 11, 3, 1, 11, 4, 1, 11, 5, 1,
+                    11, 6, 1, 11, 7, 1, 11, 8, 1, 11, 10, 1, 11, 2, 1, 13, 4, 1, 13, 5,
+                    1, 13, 6, 1, 13, 3, 1, 13, 7, 1, 13, 8, 1, 13, 10, 1, 13, 3, 1, 4, 7,
+                    1, 4, 8, 1, 4, 10, 1, 4, 2, 1, 13, 4, 1, 13, 5, 1, 13, 6, 1, 13, 3,
+                    1, 5, 7, 1, 5, 8, 1, 5, 2, 1, 13, 4, 1, 13, 5, 1, 13, 6, 1, 13, 3, 1,
+                    6, 7, 1, 6, 8, 1, 6, 0, 1, 0, 3, 1, 0, 5, 1, 0, 6, 1, 0, 7, 1, 0, 8,
+                    1, 0, 10, 1, 0, 0, 1, 14, 3, 1, 14, 5, 1, 14, 6, 1, 14, 7, 1, 14, 8,
+                    1, 14, 10, 1, 14, 3, 1, 13, 7, 1, 13, 8, 1, 13, 10, 1, 13, 0, 1, 15,
+                    3, 1, 15, 5, 1, 15, 6, 1, 15, 7, 1, 15, 8, 1, 15, 10, 1, 15, 3, 1, 2,
+                    7, 1, 2, 8, 1, 2, 10, 1, 2, 2, 1, 13, 4, 1, 13, 5, 1, 13, 6, 1, 13,
+                    7, 1, 6, 8, 1, 6, 10, 1, 6,
                 ];
                 static REDUCE_OFFSETS: &[u32] = &[
-                    0u32, 12u32, 24u32, 24u32, 24u32, 36u32, 45u32, 69u32, 96u32, 96u32,
-                    108u32, 108u32, 120u32, 132u32, 144u32, 153u32, 153u32, 165u32,
-                    174u32, 195u32, 216u32, 228u32, 249u32, 261u32, 273u32, 282u32,
-                ];
-                static RULESET_DATA: &[u32] = &[
-                    2u32, 3u32, 4u32, 5u32, 6u32, 7u32, 10u32, 11u32, 12u32, 13u32,
-                    16u32, 65539u32, 65541u32, 8u32, 9u32, 65552u32, 131088u32, 2u32,
-                    3u32, 4u32, 5u32, 131077u32, 6u32, 7u32, 10u32, 11u32, 12u32, 13u32,
-                    65541u32, 196613u32, 8u32, 9u32, 65547u32, 65548u32, 131083u32, 0u32,
-                    1u32, 65538u32, 65540u32, 65542u32, 14u32, 15u32, 2u32, 3u32, 4u32,
-                    131076u32, 5u32, 6u32, 7u32, 10u32, 11u32, 12u32, 13u32, 196612u32,
-                    65541u32, 8u32, 9u32, 262148u32, 10u32, 11u32, 12u32, 13u32,
-                    327684u32, 2u32, 3u32, 4u32, 5u32, 131077u32, 6u32, 7u32, 10u32,
-                    11u32, 12u32, 13u32, 65541u32, 196613u32, 8u32, 9u32, 0u32, 1u32,
-                    65538u32, 65540u32, 65542u32, 14u32, 15u32, 2u32, 3u32, 4u32, 5u32,
-                    6u32, 131078u32, 7u32, 10u32, 11u32, 12u32, 13u32, 65541u32,
-                    196614u32, 65536u32, 65550u32, 0u32, 1u32, 131074u32, 10u32, 11u32,
-                    12u32, 13u32, 65551u32, 131087u32, 196610u32, 2u32, 3u32, 4u32, 5u32,
-                    6u32, 131078u32, 7u32, 10u32, 11u32, 12u32, 13u32, 65541u32,
-                    196614u32,
-                ];
-                static RULESET_OFFSETS: &[u32] = &[
-                    0u32, 11u32, 12u32, 16u32, 17u32, 28u32, 32u32, 34u32, 35u32, 42u32,
-                    53u32, 57u32, 62u32, 63u32, 74u32, 78u32, 85u32, 96u32, 98u32, 99u32,
-                    100u32, 108u32, 109u32, 110u32, 121u32, 123u32,
+                    0, 12, 24, 24, 24, 36, 45, 69, 96, 96, 108, 108, 120, 132, 144, 153,
+                    153, 165, 174, 195, 216, 228, 249, 261, 273, 282,
                 ];
                 static CAN_ACCEPT_ERROR: &[u8] = &[
-                    0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
-                    0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                    0, 0,
                 ];
                 let num_states = 25usize;
                 let mut states = Vec::with_capacity(num_states);
@@ -1073,19 +1028,6 @@ impl ::rusty_lr::parser::Parser for EParser {
                         reduce_map.push((term_class, rules));
                         idx += 2 + len;
                     }
-                    let ruleset_start = RULESET_OFFSETS[i] as usize;
-                    let ruleset_end = RULESET_OFFSETS[i + 1] as usize;
-                    let mut ruleset = Vec::with_capacity(ruleset_end - ruleset_start);
-                    for idx in ruleset_start..ruleset_end {
-                        let val = RULESET_DATA[idx];
-                        let rule = (val & 0xffff) as usize;
-                        let shifted = (val >> 16) as usize;
-                        ruleset
-                            .push(::rusty_lr::rule::ShiftedRuleRef {
-                                rule,
-                                shifted,
-                            });
-                    }
                     let can_accept_error = match CAN_ACCEPT_ERROR[i] {
                         0 => ::rusty_lr::TriState::False,
                         1 => ::rusty_lr::TriState::True,
@@ -1096,7 +1038,7 @@ impl ::rusty_lr::parser::Parser for EParser {
                         shift_goto_map_term,
                         shift_goto_map_nonterm,
                         reduce_map,
-                        ruleset,
+                        ruleset: Vec::new(),
                         can_accept_error,
                     };
                     states.push(intermediate.into());
diff --git a/scripts/diff/json.rs b/scripts/diff/json.rs
index 616a5ac0..44e1a665 100644
--- a/scripts/diff/json.rs
+++ b/scripts/diff/json.rs
@@ -1936,57 +1936,39 @@ impl ::rusty_lr::parser::Parser for JsonParser {
         RULES
             .get_or_init(|| {
                 static RULE_NAMES: &[u32] = &[
-                    0u32, 1u32, 1u32, 1u32, 1u32, 1u32, 1u32, 1u32, 2u32, 2u32, 2u32,
-                    3u32, 3u32, 4u32, 5u32, 6u32, 7u32, 8u32, 8u32, 9u32, 9u32, 9u32,
-                    9u32, 9u32, 9u32, 9u32, 9u32, 9u32, 10u32, 10u32, 10u32, 11u32,
-                    12u32, 12u32, 12u32, 12u32, 13u32, 13u32, 13u32, 14u32, 14u32, 14u32,
-                    15u32, 15u32, 15u32, 16u32, 17u32, 18u32, 19u32, 19u32, 20u32, 20u32,
-                    21u32, 21u32, 22u32, 22u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32,
-                    23u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32,
-                    23u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32,
-                    23u32, 24u32, 24u32, 25u32, 25u32, 25u32, 25u32, 25u32, 26u32, 26u32,
-                    27u32, 27u32, 28u32, 29u32, 29u32, 30u32, 31u32,
+                    0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 7, 8, 8, 9, 9, 9, 9,
+                    9, 9, 9, 9, 9, 10, 10, 10, 11, 12, 12, 12, 12, 13, 13, 13, 14, 14,
+                    14, 15, 15, 15, 16, 17, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23,
+                    23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+                    23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 25, 25, 25, 25, 25, 26, 26,
+                    27, 27, 28, 29, 29, 30, 31,
                 ];
                 static RULE_PRECEDENCES: &[u32] = &[
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
-                    0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                    0, 0, 0, 0, 0, 0, 0,
                 ];
                 static RULE_TOKENS_DATA: &[u32] = &[
-                    13u32, 5u32, 11u32, 15u32, 23u32, 33u32, 35u32, 37u32, 54u32, 31u32,
-                    56u32, 54u32, 7u32, 56u32, 54u32, 62u32, 56u32, 9u32, 9u32, 24u32,
-                    7u32, 31u32, 15u32, 31u32, 32u32, 13u32, 40u32, 41u32, 42u32, 31u32,
-                    3u32, 31u32, 58u32, 45u32, 58u32, 60u32, 19u32, 47u32, 58u32, 60u32,
-                    8u32, 10u32, 12u32, 14u32, 16u32, 18u32, 52u32, 21u32, 21u32, 21u32,
-                    21u32, 55u32, 49u32, 51u32, 25u32, 59u32, 27u32, 55u32, 30u32, 53u32,
-                    22u32, 55u32, 22u32, 30u32, 53u32, 61u32, 36u32, 29u32, 53u32, 38u32,
-                    29u32, 53u32, 61u32, 20u32, 22u32, 61u32, 2u32, 31u32, 0u32, 31u32,
-                    18u32, 16u32, 52u32, 38u32, 12u32, 44u32, 48u32, 50u32, 38u32, 14u32,
-                    52u32, 48u32, 48u32, 13u32, 13u32, 24u32, 39u32, 39u32, 17u32, 17u32,
-                    43u32, 43u32, 2u32, 6u32, 20u32, 24u32, 22u32, 26u32, 8u32, 28u32,
-                    30u32, 32u32, 34u32, 36u32, 40u32, 42u32, 44u32, 10u32, 46u32, 38u32,
-                    12u32, 48u32, 14u32, 16u32, 50u32, 18u32, 52u32, 54u32, 56u32, 34u32,
-                    36u32, 44u32, 10u32, 46u32, 38u32, 12u32, 55u32, 55u32, 53u32, 28u32,
-                    30u32, 26u32, 53u32, 57u32, 1u32, 64u32,
+                    13, 5, 11, 15, 23, 33, 35, 37, 54, 31, 56, 54, 7, 56, 54, 62, 56, 9,
+                    9, 24, 7, 31, 15, 31, 32, 13, 40, 41, 42, 31, 3, 31, 58, 45, 58, 60,
+                    19, 47, 58, 60, 8, 10, 12, 14, 16, 18, 52, 21, 21, 21, 21, 55, 49,
+                    51, 25, 59, 27, 55, 30, 53, 22, 55, 22, 30, 53, 61, 36, 29, 53, 38,
+                    29, 53, 61, 20, 22, 61, 2, 31, 0, 31, 18, 16, 52, 38, 12, 44, 48, 50,
+                    38, 14, 52, 48, 48, 13, 13, 24, 39, 39, 17, 17, 43, 43, 2, 6, 20, 24,
+                    22, 26, 8, 28, 30, 32, 34, 36, 40, 42, 44, 10, 46, 38, 12, 48, 14,
+                    16, 50, 18, 52, 54, 56, 34, 36, 44, 10, 46, 38, 12, 55, 55, 53, 28,
+                    30, 26, 53, 57, 1, 64,
                 ];
                 static RULE_TOKENS_OFFSETS: &[u32] = &[
-                    0u32, 1u32, 2u32, 3u32, 4u32, 5u32, 6u32, 7u32, 8u32, 11u32, 14u32,
-                    17u32, 18u32, 21u32, 26u32, 29u32, 32u32, 35u32, 37u32, 38u32, 39u32,
-                    40u32, 41u32, 42u32, 43u32, 44u32, 45u32, 46u32, 51u32, 52u32, 53u32,
-                    54u32, 57u32, 58u32, 60u32, 62u32, 65u32, 66u32, 69u32, 72u32, 73u32,
-                    74u32, 75u32, 76u32, 78u32, 80u32, 84u32, 89u32, 93u32, 94u32, 97u32,
-                    98u32, 98u32, 99u32, 101u32, 102u32, 102u32, 103u32, 104u32, 105u32,
-                    106u32, 107u32, 108u32, 109u32, 110u32, 111u32, 112u32, 113u32,
-                    114u32, 115u32, 116u32, 117u32, 118u32, 119u32, 120u32, 121u32,
-                    122u32, 123u32, 124u32, 125u32, 126u32, 127u32, 128u32, 129u32,
-                    130u32, 131u32, 132u32, 133u32, 134u32, 135u32, 136u32, 137u32,
-                    139u32, 140u32, 141u32, 143u32, 144u32, 144u32, 144u32, 146u32,
+                    0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 14, 17, 18, 21, 26, 29, 32, 35, 37,
+                    38, 39, 40, 41, 42, 43, 44, 45, 46, 51, 52, 53, 54, 57, 58, 60, 62,
+                    65, 66, 69, 72, 73, 74, 75, 76, 78, 80, 84, 89, 93, 94, 97, 98, 98,
+                    99, 101, 102, 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, 139, 140, 141,
+                    143, 144, 144, 144, 146,
                 ];
                 let num_rules = 99usize;
                 let mut rules = Vec::with_capacity(num_rules);
@@ -2044,379 +2026,186 @@ impl ::rusty_lr::parser::Parser for JsonParser {
         STATES
             .get_or_init(|| {
                 static SHIFT_TERM_DATA: &[u32] = &[
-                    32768u32, 65537u32, 32768u32, 65537u32, 32768u32, 65537u32,
-                    2147680288u32, 262150u32, 425991u32, 557065u32, 688139u32,
-                    3604494u32, 884751u32, 950292u32, 1277979u32, 1703965u32, 294934u32,
-                    327704u32, 360473u32, 393235u32, 458778u32, 491544u32, 524312u32,
-                    589832u32, 622618u32, 655379u32, 851982u32, 720911u32, 786446u32,
-                    786447u32, 786446u32, 786447u32, 786446u32, 786447u32, 32768u32,
-                    65537u32, 1015820u32, 32768u32, 65537u32, 262150u32, 425991u32,
-                    557065u32, 1081355u32, 3178510u32, 1179663u32, 950292u32, 1277979u32,
-                    1703965u32, 851982u32, 1114127u32, 1146894u32, 1146895u32,
-                    1146894u32, 1146895u32, 1146894u32, 1146895u32, 1245205u32,
-                    1310720u32, 1343489u32, 2148859935u32, 1310720u32, 1343489u32,
-                    1310720u32, 1343489u32, 1409052u32, 1474588u32, 1540108u32,
-                    1572864u32, 1605633u32, 1572864u32, 1605633u32, 1572864u32,
-                    1605633u32, 1703965u32, 1966081u32, 1966083u32, 1966084u32,
-                    1966085u32, 1966086u32, 1966087u32, 1966088u32, 1966089u32,
-                    1966090u32, 1966091u32, 1966092u32, 1966093u32, 1966094u32,
-                    1966095u32, 1966096u32, 1966097u32, 1966098u32, 1966099u32,
-                    1966100u32, 1966101u32, 1966102u32, 1966103u32, 1966104u32,
-                    1966105u32, 1966106u32, 1966107u32, 1966108u32, 1736734u32,
-                    1933316u32, 1933317u32, 1933318u32, 1933319u32, 1933320u32,
-                    1933321u32, 1769498u32, 1933341u32, 1933342u32, 1802245u32,
-                    1802246u32, 1802254u32, 1802255u32, 1802257u32, 1802258u32,
-                    1802259u32, 1802262u32, 1802263u32, 1835013u32, 1835014u32,
-                    1835022u32, 1835023u32, 1835025u32, 1835026u32, 1835027u32,
-                    1835030u32, 1835031u32, 1867781u32, 1867782u32, 1867790u32,
-                    1867791u32, 1867793u32, 1867794u32, 1867795u32, 1867798u32,
-                    1867799u32, 1900549u32, 1900550u32, 1900558u32, 1900559u32,
-                    1900561u32, 1900562u32, 1900563u32, 1900566u32, 1900567u32,
-                    1966081u32, 1966083u32, 1966084u32, 1966085u32, 1966086u32,
-                    1966087u32, 1966088u32, 1966089u32, 1966090u32, 1966091u32,
-                    1966092u32, 1966093u32, 1966094u32, 1966095u32, 1966096u32,
-                    1966097u32, 1966098u32, 1966099u32, 1966100u32, 1966101u32,
-                    1966102u32, 1966103u32, 1966104u32, 1966105u32, 1966106u32,
-                    1966107u32, 1966108u32, 1736734u32, 2064413u32, 2129920u32,
-                    2162689u32, 2129920u32, 2162689u32, 2129920u32, 2162689u32,
-                    2228240u32, 32768u32, 65537u32, 262150u32, 425991u32, 557065u32,
-                    2326539u32, 2654222u32, 2424847u32, 950292u32, 1277979u32,
-                    1703965u32, 851982u32, 2359311u32, 2392078u32, 2392079u32,
-                    2392078u32, 2392079u32, 2392078u32, 2392079u32, 2490396u32,
-                    1703965u32, 2555904u32, 2588673u32, 2555904u32, 2588673u32,
-                    2555904u32, 2588673u32, 2686989u32, 2752526u32, 2752527u32,
-                    2752526u32, 2752527u32, 2818066u32, 2949139u32, 2850826u32,
-                    2850827u32, 2916366u32, 2916367u32, 2916366u32, 2916367u32,
-                    2981898u32, 2981899u32, 2916366u32, 2916367u32, 3112960u32,
-                    3145729u32, 3112960u32, 3145729u32, 3112960u32, 3145729u32,
-                    3211277u32, 3244046u32, 3244047u32, 3244046u32, 3244047u32,
-                    3309586u32, 3407891u32, 3342346u32, 3342347u32, 3375118u32,
-                    3375119u32, 3375118u32, 3375119u32, 3440650u32, 3440651u32,
-                    3375118u32, 3375119u32, 3538944u32, 3571713u32, 3538944u32,
-                    3571713u32, 3538944u32, 3571713u32, 3637261u32, 3670030u32,
-                    3670031u32, 3670030u32, 3670031u32, 3735570u32, 3833875u32,
-                    3768330u32, 3768331u32, 3801102u32, 3801103u32, 3801102u32,
-                    3801103u32, 3866634u32, 3866635u32, 3801102u32, 3801103u32,
+                    32768, 65537, 32768, 65537, 32768, 65537, 2147680288, 262150, 425991,
+                    557065, 688139, 3604494, 884751, 950292, 1277979, 1703965, 294934,
+                    327704, 360473, 393235, 458778, 491544, 524312, 589832, 622618,
+                    655379, 851982, 720911, 786446, 786447, 786446, 786447, 786446,
+                    786447, 32768, 65537, 1015820, 32768, 65537, 262150, 425991, 557065,
+                    1081355, 3178510, 1179663, 950292, 1277979, 1703965, 851982, 1114127,
+                    1146894, 1146895, 1146894, 1146895, 1146894, 1146895, 1245205,
+                    1310720, 1343489, 2148859935, 1310720, 1343489, 1310720, 1343489,
+                    1409052, 1474588, 1540108, 1572864, 1605633, 1572864, 1605633,
+                    1572864, 1605633, 1703965, 1966081, 1966083, 1966084, 1966085,
+                    1966086, 1966087, 1966088, 1966089, 1966090, 1966091, 1966092,
+                    1966093, 1966094, 1966095, 1966096, 1966097, 1966098, 1966099,
+                    1966100, 1966101, 1966102, 1966103, 1966104, 1966105, 1966106,
+                    1966107, 1966108, 1736734, 1933316, 1933317, 1933318, 1933319,
+                    1933320, 1933321, 1769498, 1933341, 1933342, 1802245, 1802246,
+                    1802254, 1802255, 1802257, 1802258, 1802259, 1802262, 1802263,
+                    1835013, 1835014, 1835022, 1835023, 1835025, 1835026, 1835027,
+                    1835030, 1835031, 1867781, 1867782, 1867790, 1867791, 1867793,
+                    1867794, 1867795, 1867798, 1867799, 1900549, 1900550, 1900558,
+                    1900559, 1900561, 1900562, 1900563, 1900566, 1900567, 1966081,
+                    1966083, 1966084, 1966085, 1966086, 1966087, 1966088, 1966089,
+                    1966090, 1966091, 1966092, 1966093, 1966094, 1966095, 1966096,
+                    1966097, 1966098, 1966099, 1966100, 1966101, 1966102, 1966103,
+                    1966104, 1966105, 1966106, 1966107, 1966108, 1736734, 2064413,
+                    2129920, 2162689, 2129920, 2162689, 2129920, 2162689, 2228240, 32768,
+                    65537, 262150, 425991, 557065, 2326539, 2654222, 2424847, 950292,
+                    1277979, 1703965, 851982, 2359311, 2392078, 2392079, 2392078,
+                    2392079, 2392078, 2392079, 2490396, 1703965, 2555904, 2588673,
+                    2555904, 2588673, 2555904, 2588673, 2686989, 2752526, 2752527,
+                    2752526, 2752527, 2818066, 2949139, 2850826, 2850827, 2916366,
+                    2916367, 2916366, 2916367, 2981898, 2981899, 2916366, 2916367,
+                    3112960, 3145729, 3112960, 3145729, 3112960, 3145729, 3211277,
+                    3244046, 3244047, 3244046, 3244047, 3309586, 3407891, 3342346,
+                    3342347, 3375118, 3375119, 3375118, 3375119, 3440650, 3440651,
+                    3375118, 3375119, 3538944, 3571713, 3538944, 3571713, 3538944,
+                    3571713, 3637261, 3670030, 3670031, 3670030, 3670031, 3735570,
+                    3833875, 3768330, 3768331, 3801102, 3801103, 3801102, 3801103,
+                    3866634, 3866635, 3801102, 3801103,
                 ];
                 static SHIFT_TERM_OFFSETS: &[u32] = &[
-                    0u32, 2u32, 4u32, 6u32, 6u32, 6u32, 7u32, 7u32, 16u32, 17u32, 18u32,
-                    19u32, 20u32, 20u32, 21u32, 22u32, 23u32, 23u32, 24u32, 25u32, 26u32,
-                    26u32, 28u32, 30u32, 30u32, 32u32, 32u32, 32u32, 34u32, 34u32, 36u32,
-                    37u32, 39u32, 48u32, 50u32, 52u32, 54u32, 56u32, 57u32, 57u32, 60u32,
-                    62u32, 64u32, 65u32, 65u32, 66u32, 66u32, 67u32, 69u32, 71u32, 73u32,
-                    73u32, 74u32, 102u32, 111u32, 120u32, 129u32, 138u32, 147u32, 147u32,
-                    147u32, 175u32, 175u32, 176u32, 176u32, 178u32, 180u32, 182u32,
-                    183u32, 185u32, 185u32, 194u32, 196u32, 198u32, 200u32, 202u32,
-                    204u32, 204u32, 206u32, 208u32, 210u32, 210u32, 211u32, 213u32,
-                    213u32, 215u32, 217u32, 219u32, 221u32, 221u32, 223u32, 225u32,
-                    227u32, 227u32, 227u32, 229u32, 231u32, 233u32, 234u32, 236u32,
-                    238u32, 240u32, 242u32, 244u32, 246u32, 248u32, 250u32, 250u32,
-                    252u32, 254u32, 256u32, 257u32, 259u32, 261u32, 263u32, 265u32,
-                    267u32, 269u32, 271u32, 273u32,
+                    0, 2, 4, 6, 6, 6, 7, 7, 16, 17, 18, 19, 20, 20, 21, 22, 23, 23, 24,
+                    25, 26, 26, 28, 30, 30, 32, 32, 32, 34, 34, 36, 37, 39, 48, 50, 52,
+                    54, 56, 57, 57, 60, 62, 64, 65, 65, 66, 66, 67, 69, 71, 73, 73, 74,
+                    102, 111, 120, 129, 138, 147, 147, 147, 175, 175, 176, 176, 178, 180,
+                    182, 183, 185, 185, 194, 196, 198, 200, 202, 204, 204, 206, 208, 210,
+                    210, 211, 213, 213, 215, 217, 219, 221, 221, 223, 225, 227, 227, 227,
+                    229, 231, 233, 234, 236, 238, 240, 242, 244, 246, 248, 250, 250, 252,
+                    254, 256, 257, 259, 261, 263, 265, 267, 269, 271, 273,
                 ];
                 static SHIFT_NONTERM_DATA: &[u32] = &[
-                    2147647488u32, 163846u32, 2147713039u32, 229406u32, 2147614735u32,
-                    131102u32, 2147581967u32, 98334u32, 2150989825u32, 3506178u32,
-                    3506181u32, 3506183u32, 3506187u32, 2151088140u32, 3506192u32,
-                    3506193u32, 3506194u32, 3604507u32, 2148335643u32, 2148237338u32,
-                    2148270107u32, 2148302874u32, 2148270107u32, 2148401178u32,
-                    2148270107u32, 2148466694u32, 2148532239u32, 1212435u32,
-                    2148696084u32, 1048606u32, 2148466694u32, 2148532239u32,
-                    2150957075u32, 1048606u32, 2150563841u32, 3080194u32, 3080197u32,
-                    3080199u32, 3080203u32, 2150662156u32, 3080208u32, 3080209u32,
-                    3080210u32, 3178523u32, 2148335643u32, 2148237338u32, 2148630555u32,
-                    2148302874u32, 2148630555u32, 2148401178u32, 2148630555u32,
-                    2148925443u32, 2148990980u32, 2149941263u32, 2457630u32,
-                    2147614735u32, 131102u32, 2147581967u32, 98334u32, 2149122051u32,
-                    2148990980u32, 2149154831u32, 1671198u32, 2147614735u32, 131102u32,
-                    2147581967u32, 98334u32, 2149580807u32, 2149449736u32, 2031637u32,
-                    2149515286u32, 1966103u32, 2149416969u32, 2149285898u32, 1802264u32,
-                    1802265u32, 1802267u32, 2149318666u32, 1835032u32, 1835033u32,
-                    1835035u32, 2149351434u32, 1867800u32, 1867801u32, 1867803u32,
-                    2149384202u32, 1900568u32, 1900569u32, 1900571u32, 2149449736u32,
-                    2149482517u32, 1966103u32, 2149679119u32, 2195486u32, 2147614735u32,
-                    131102u32, 2147581967u32, 98334u32, 2149744646u32, 2149777423u32,
-                    2293790u32, 2150006785u32, 2523138u32, 2523141u32, 2523143u32,
-                    2523147u32, 2150137868u32, 2523152u32, 2523153u32, 2523154u32,
-                    2654235u32, 2148335643u32, 2148237338u32, 2149875739u32,
-                    2148302874u32, 2149875739u32, 2148401178u32, 2149875739u32,
-                    2149580807u32, 2150105103u32, 2621470u32, 2147614735u32, 131102u32,
-                    2147581967u32, 98334u32, 2785308u32, 2150268957u32, 2150203418u32,
-                    2150236187u32, 2148302874u32, 2150236187u32, 2150531085u32,
-                    3047454u32, 2150334478u32, 2850846u32, 2150367258u32, 2150400027u32,
-                    2148302874u32, 2150400027u32, 2150465550u32, 2981918u32,
-                    2150498330u32, 2150400027u32, 2150105103u32, 2621470u32,
-                    2147614735u32, 131102u32, 2147581967u32, 98334u32, 3276828u32,
-                    2150760477u32, 2150203418u32, 2150727707u32, 2148302874u32,
-                    2150727707u32, 2150531085u32, 3047454u32, 2150825998u32, 3342366u32,
-                    2150367258u32, 2150858779u32, 2148302874u32, 2150858779u32,
-                    2150924302u32, 3440670u32, 2150498330u32, 2150858779u32,
-                    2150105103u32, 2621470u32, 2147614735u32, 131102u32, 2147581967u32,
-                    98334u32, 3702812u32, 2151186461u32, 2150203418u32, 2151153691u32,
-                    2148302874u32, 2151153691u32, 2150531085u32, 3047454u32,
-                    2151251982u32, 3768350u32, 2150367258u32, 2151284763u32,
-                    2148302874u32, 2151284763u32, 2151350286u32, 3866654u32,
-                    2150498330u32, 2151284763u32,
+                    2147647488, 163846, 2147713039, 229406, 2147614735, 131102,
+                    2147581967, 98334, 2150989825, 3506178, 3506181, 3506183, 3506187,
+                    2151088140, 3506192, 3506193, 3506194, 3604507, 2148335643,
+                    2148237338, 2148270107, 2148302874, 2148270107, 2148401178,
+                    2148270107, 2148466694, 2148532239, 1212435, 2148696084, 1048606,
+                    2148466694, 2148532239, 2150957075, 1048606, 2150563841, 3080194,
+                    3080197, 3080199, 3080203, 2150662156, 3080208, 3080209, 3080210,
+                    3178523, 2148335643, 2148237338, 2148630555, 2148302874, 2148630555,
+                    2148401178, 2148630555, 2148925443, 2148990980, 2149941263, 2457630,
+                    2147614735, 131102, 2147581967, 98334, 2149122051, 2148990980,
+                    2149154831, 1671198, 2147614735, 131102, 2147581967, 98334,
+                    2149580807, 2149449736, 2031637, 2149515286, 1966103, 2149416969,
+                    2149285898, 1802264, 1802265, 1802267, 2149318666, 1835032, 1835033,
+                    1835035, 2149351434, 1867800, 1867801, 1867803, 2149384202, 1900568,
+                    1900569, 1900571, 2149449736, 2149482517, 1966103, 2149679119,
+                    2195486, 2147614735, 131102, 2147581967, 98334, 2149744646,
+                    2149777423, 2293790, 2150006785, 2523138, 2523141, 2523143, 2523147,
+                    2150137868, 2523152, 2523153, 2523154, 2654235, 2148335643,
+                    2148237338, 2149875739, 2148302874, 2149875739, 2148401178,
+                    2149875739, 2149580807, 2150105103, 2621470, 2147614735, 131102,
+                    2147581967, 98334, 2785308, 2150268957, 2150203418, 2150236187,
+                    2148302874, 2150236187, 2150531085, 3047454, 2150334478, 2850846,
+                    2150367258, 2150400027, 2148302874, 2150400027, 2150465550, 2981918,
+                    2150498330, 2150400027, 2150105103, 2621470, 2147614735, 131102,
+                    2147581967, 98334, 3276828, 2150760477, 2150203418, 2150727707,
+                    2148302874, 2150727707, 2150531085, 3047454, 2150825998, 3342366,
+                    2150367258, 2150858779, 2148302874, 2150858779, 2150924302, 3440670,
+                    2150498330, 2150858779, 2150105103, 2621470, 2147614735, 131102,
+                    2147581967, 98334, 3702812, 2151186461, 2150203418, 2151153691,
+                    2148302874, 2151153691, 2150531085, 3047454, 2151251982, 3768350,
+                    2150367258, 2151284763, 2148302874, 2151284763, 2151350286, 3866654,
+                    2150498330, 2151284763,
                 ];
                 static SHIFT_NONTERM_OFFSETS: &[u32] = &[
-                    0u32, 4u32, 6u32, 8u32, 8u32, 8u32, 8u32, 8u32, 18u32, 18u32, 18u32,
-                    18u32, 18u32, 18u32, 18u32, 18u32, 18u32, 18u32, 18u32, 18u32, 18u32,
-                    18u32, 19u32, 21u32, 21u32, 23u32, 23u32, 23u32, 25u32, 25u32, 30u32,
-                    30u32, 34u32, 44u32, 45u32, 47u32, 49u32, 51u32, 51u32, 51u32, 55u32,
-                    57u32, 59u32, 59u32, 59u32, 59u32, 59u32, 59u32, 63u32, 65u32, 67u32,
-                    67u32, 68u32, 72u32, 73u32, 77u32, 81u32, 85u32, 89u32, 89u32, 89u32,
-                    92u32, 92u32, 92u32, 92u32, 94u32, 96u32, 98u32, 98u32, 101u32,
-                    101u32, 111u32, 112u32, 114u32, 116u32, 118u32, 119u32, 119u32,
-                    121u32, 123u32, 125u32, 125u32, 127u32, 129u32, 129u32, 131u32,
-                    133u32, 135u32, 137u32, 137u32, 139u32, 141u32, 143u32, 143u32,
-                    143u32, 145u32, 147u32, 149u32, 151u32, 153u32, 155u32, 157u32,
-                    159u32, 161u32, 163u32, 165u32, 167u32, 167u32, 169u32, 171u32,
-                    173u32, 175u32, 177u32, 179u32, 181u32, 183u32, 185u32, 187u32,
-                    189u32, 191u32,
+                    0, 4, 6, 8, 8, 8, 8, 8, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+                    18, 18, 18, 19, 21, 21, 23, 23, 23, 25, 25, 30, 30, 34, 44, 45, 47,
+                    49, 51, 51, 51, 55, 57, 59, 59, 59, 59, 59, 59, 63, 65, 67, 67, 68,
+                    72, 73, 77, 81, 85, 89, 89, 89, 92, 92, 92, 92, 94, 96, 98, 98, 101,
+                    101, 111, 112, 114, 116, 118, 119, 119, 121, 123, 125, 125, 127, 129,
+                    129, 131, 133, 135, 137, 137, 139, 141, 143, 143, 143, 145, 147, 149,
+                    151, 153, 155, 157, 159, 161, 163, 165, 167, 167, 169, 171, 173, 175,
+                    177, 179, 181, 183, 185, 187, 189, 191,
                 ];
                 static REDUCE_DATA: &[u32] = &[
-                    6u32, 1u32, 97u32, 7u32, 1u32, 97u32, 9u32, 1u32, 97u32, 11u32, 1u32,
-                    97u32, 14u32, 1u32, 97u32, 15u32, 1u32, 97u32, 20u32, 1u32, 97u32,
-                    27u32, 1u32, 97u32, 29u32, 1u32, 97u32, 6u32, 1u32, 97u32, 7u32,
-                    1u32, 97u32, 9u32, 1u32, 97u32, 11u32, 1u32, 97u32, 14u32, 1u32,
-                    97u32, 15u32, 1u32, 97u32, 20u32, 1u32, 97u32, 27u32, 1u32, 97u32,
-                    29u32, 1u32, 97u32, 6u32, 1u32, 97u32, 7u32, 1u32, 97u32, 9u32, 1u32,
-                    97u32, 11u32, 1u32, 97u32, 14u32, 1u32, 97u32, 15u32, 1u32, 97u32,
-                    20u32, 1u32, 97u32, 27u32, 1u32, 97u32, 29u32, 1u32, 97u32, 6u32,
-                    1u32, 43u32, 7u32, 1u32, 43u32, 9u32, 1u32, 43u32, 11u32, 1u32,
-                    43u32, 12u32, 1u32, 43u32, 14u32, 1u32, 43u32, 15u32, 1u32, 43u32,
-                    16u32, 1u32, 43u32, 20u32, 1u32, 43u32, 21u32, 1u32, 43u32, 27u32,
-                    1u32, 43u32, 28u32, 1u32, 43u32, 29u32, 1u32, 43u32, 32u32, 1u32,
-                    43u32, 6u32, 1u32, 44u32, 7u32, 1u32, 44u32, 9u32, 1u32, 44u32,
-                    11u32, 1u32, 44u32, 12u32, 1u32, 44u32, 14u32, 1u32, 44u32, 15u32,
-                    1u32, 44u32, 16u32, 1u32, 44u32, 20u32, 1u32, 44u32, 21u32, 1u32,
-                    44u32, 27u32, 1u32, 44u32, 28u32, 1u32, 44u32, 29u32, 1u32, 44u32,
-                    32u32, 1u32, 44u32, 0u32, 1u32, 46u32, 1u32, 1u32, 46u32, 12u32,
-                    1u32, 46u32, 21u32, 1u32, 46u32, 28u32, 1u32, 46u32, 32u32, 1u32,
-                    46u32, 0u32, 1u32, 47u32, 1u32, 1u32, 47u32, 12u32, 1u32, 47u32,
-                    21u32, 1u32, 47u32, 28u32, 1u32, 47u32, 32u32, 1u32, 47u32, 0u32,
-                    1u32, 45u32, 1u32, 1u32, 45u32, 12u32, 1u32, 45u32, 21u32, 1u32,
-                    45u32, 28u32, 1u32, 45u32, 32u32, 1u32, 45u32, 0u32, 1u32, 93u32,
-                    1u32, 1u32, 93u32, 13u32, 1u32, 93u32, 18u32, 1u32, 93u32, 19u32,
-                    1u32, 93u32, 32u32, 1u32, 93u32, 0u32, 1u32, 35u32, 1u32, 1u32,
-                    35u32, 12u32, 1u32, 35u32, 13u32, 1u32, 35u32, 18u32, 1u32, 35u32,
-                    19u32, 1u32, 35u32, 21u32, 1u32, 35u32, 28u32, 1u32, 35u32, 32u32,
-                    1u32, 35u32, 0u32, 1u32, 90u32, 1u32, 1u32, 90u32, 13u32, 1u32,
-                    90u32, 18u32, 1u32, 90u32, 19u32, 1u32, 90u32, 32u32, 1u32, 90u32,
-                    0u32, 1u32, 91u32, 1u32, 1u32, 91u32, 12u32, 1u32, 91u32, 13u32,
-                    1u32, 91u32, 18u32, 1u32, 91u32, 19u32, 1u32, 91u32, 21u32, 1u32,
-                    91u32, 28u32, 1u32, 91u32, 32u32, 1u32, 91u32, 0u32, 1u32, 34u32,
-                    1u32, 1u32, 34u32, 12u32, 1u32, 34u32, 13u32, 1u32, 34u32, 18u32,
-                    1u32, 34u32, 19u32, 1u32, 34u32, 21u32, 1u32, 34u32, 28u32, 1u32,
-                    34u32, 32u32, 1u32, 34u32, 0u32, 1u32, 93u32, 1u32, 1u32, 93u32,
-                    13u32, 1u32, 93u32, 18u32, 1u32, 93u32, 19u32, 1u32, 93u32, 32u32,
-                    1u32, 93u32, 0u32, 1u32, 33u32, 1u32, 1u32, 33u32, 12u32, 1u32,
-                    33u32, 13u32, 1u32, 33u32, 18u32, 1u32, 33u32, 19u32, 1u32, 33u32,
-                    21u32, 1u32, 33u32, 28u32, 1u32, 33u32, 32u32, 1u32, 33u32, 6u32,
-                    1u32, 97u32, 7u32, 1u32, 97u32, 9u32, 1u32, 97u32, 11u32, 1u32,
-                    97u32, 14u32, 1u32, 97u32, 15u32, 1u32, 97u32, 20u32, 1u32, 97u32,
-                    21u32, 1u32, 51u32, 27u32, 1u32, 97u32, 29u32, 1u32, 97u32, 21u32,
-                    1u32, 48u32, 6u32, 1u32, 97u32, 7u32, 1u32, 97u32, 9u32, 1u32, 97u32,
-                    11u32, 1u32, 97u32, 14u32, 1u32, 97u32, 15u32, 1u32, 97u32, 20u32,
-                    1u32, 97u32, 27u32, 1u32, 97u32, 29u32, 1u32, 97u32, 0u32, 1u32,
-                    93u32, 1u32, 1u32, 93u32, 12u32, 1u32, 93u32, 13u32, 1u32, 93u32,
-                    18u32, 1u32, 93u32, 19u32, 1u32, 93u32, 21u32, 1u32, 93u32, 0u32,
-                    1u32, 90u32, 1u32, 1u32, 90u32, 12u32, 1u32, 90u32, 13u32, 1u32,
-                    90u32, 18u32, 1u32, 90u32, 19u32, 1u32, 90u32, 21u32, 1u32, 90u32,
-                    0u32, 1u32, 93u32, 1u32, 1u32, 93u32, 12u32, 1u32, 93u32, 13u32,
-                    1u32, 93u32, 18u32, 1u32, 93u32, 19u32, 1u32, 93u32, 21u32, 1u32,
-                    93u32, 0u32, 1u32, 14u32, 1u32, 1u32, 14u32, 12u32, 1u32, 14u32,
-                    21u32, 1u32, 14u32, 28u32, 1u32, 14u32, 32u32, 1u32, 14u32, 28u32,
-                    1u32, 97u32, 29u32, 1u32, 97u32, 28u32, 1u32, 97u32, 29u32, 1u32,
-                    97u32, 28u32, 1u32, 97u32, 29u32, 1u32, 97u32, 0u32, 1u32, 10u32,
-                    1u32, 1u32, 10u32, 12u32, 1u32, 10u32, 21u32, 1u32, 10u32, 28u32,
-                    1u32, 10u32, 32u32, 1u32, 10u32, 0u32, 1u32, 9u32, 1u32, 1u32, 9u32,
-                    12u32, 1u32, 9u32, 21u32, 1u32, 9u32, 28u32, 1u32, 9u32, 32u32, 1u32,
-                    9u32, 28u32, 1u32, 11u32, 29u32, 1u32, 97u32, 29u32, 1u32, 97u32,
-                    29u32, 1u32, 97u32, 28u32, 1u32, 12u32, 29u32, 1u32, 55u32, 1u32,
-                    1u32, 27u32, 3u32, 1u32, 27u32, 4u32, 1u32, 27u32, 5u32, 1u32, 27u32,
-                    6u32, 1u32, 27u32, 7u32, 1u32, 27u32, 8u32, 1u32, 27u32, 9u32, 1u32,
-                    27u32, 10u32, 1u32, 27u32, 11u32, 1u32, 27u32, 12u32, 1u32, 27u32,
-                    13u32, 1u32, 27u32, 14u32, 1u32, 27u32, 15u32, 1u32, 27u32, 16u32,
-                    1u32, 27u32, 17u32, 1u32, 27u32, 18u32, 1u32, 27u32, 19u32, 1u32,
-                    27u32, 20u32, 1u32, 27u32, 21u32, 1u32, 27u32, 22u32, 1u32, 27u32,
-                    23u32, 1u32, 27u32, 24u32, 1u32, 27u32, 25u32, 1u32, 27u32, 26u32,
-                    1u32, 27u32, 27u32, 1u32, 27u32, 28u32, 1u32, 27u32, 29u32, 1u32,
-                    27u32, 30u32, 1u32, 27u32, 1u32, 1u32, 17u32, 3u32, 1u32, 17u32,
-                    4u32, 1u32, 17u32, 5u32, 1u32, 17u32, 6u32, 1u32, 17u32, 7u32, 1u32,
-                    17u32, 8u32, 1u32, 17u32, 9u32, 1u32, 17u32, 10u32, 1u32, 17u32,
-                    11u32, 1u32, 17u32, 12u32, 1u32, 17u32, 13u32, 1u32, 17u32, 14u32,
-                    1u32, 17u32, 15u32, 1u32, 17u32, 16u32, 1u32, 17u32, 17u32, 1u32,
-                    17u32, 18u32, 1u32, 17u32, 19u32, 1u32, 17u32, 20u32, 1u32, 17u32,
-                    21u32, 1u32, 17u32, 22u32, 1u32, 17u32, 23u32, 1u32, 17u32, 24u32,
-                    1u32, 17u32, 25u32, 1u32, 17u32, 26u32, 1u32, 17u32, 27u32, 1u32,
-                    17u32, 28u32, 1u32, 17u32, 29u32, 1u32, 17u32, 30u32, 1u32, 17u32,
-                    29u32, 1u32, 52u32, 29u32, 1u32, 53u32, 0u32, 1u32, 16u32, 1u32,
-                    1u32, 16u32, 12u32, 1u32, 16u32, 16u32, 1u32, 16u32, 21u32, 1u32,
-                    16u32, 28u32, 1u32, 16u32, 32u32, 1u32, 16u32, 16u32, 1u32, 97u32,
-                    16u32, 1u32, 97u32, 16u32, 1u32, 97u32, 6u32, 1u32, 97u32, 7u32,
-                    1u32, 97u32, 9u32, 1u32, 97u32, 11u32, 1u32, 97u32, 14u32, 1u32,
-                    97u32, 15u32, 1u32, 97u32, 20u32, 1u32, 97u32, 27u32, 1u32, 97u32,
-                    29u32, 1u32, 97u32, 12u32, 1u32, 13u32, 28u32, 1u32, 13u32, 0u32,
-                    1u32, 93u32, 1u32, 1u32, 93u32, 12u32, 1u32, 93u32, 13u32, 1u32,
-                    93u32, 18u32, 1u32, 93u32, 19u32, 1u32, 93u32, 28u32, 1u32, 93u32,
-                    0u32, 1u32, 90u32, 1u32, 1u32, 90u32, 12u32, 1u32, 90u32, 13u32,
-                    1u32, 90u32, 18u32, 1u32, 90u32, 19u32, 1u32, 90u32, 28u32, 1u32,
-                    90u32, 0u32, 1u32, 93u32, 1u32, 1u32, 93u32, 12u32, 1u32, 93u32,
-                    13u32, 1u32, 93u32, 18u32, 1u32, 93u32, 19u32, 1u32, 93u32, 28u32,
-                    1u32, 93u32, 0u32, 1u32, 8u32, 1u32, 1u32, 8u32, 12u32, 1u32, 8u32,
-                    21u32, 1u32, 8u32, 28u32, 1u32, 8u32, 32u32, 1u32, 8u32, 12u32, 1u32,
-                    97u32, 28u32, 1u32, 97u32, 12u32, 1u32, 97u32, 28u32, 1u32, 97u32,
-                    12u32, 1u32, 97u32, 28u32, 1u32, 97u32, 12u32, 1u32, 15u32, 21u32,
-                    1u32, 15u32, 28u32, 1u32, 15u32, 32u32, 1u32, 15u32, 0u32, 1u32,
-                    96u32, 1u32, 1u32, 96u32, 12u32, 1u32, 96u32, 18u32, 1u32, 96u32,
-                    19u32, 1u32, 96u32, 28u32, 1u32, 96u32, 0u32, 1u32, 94u32, 1u32,
-                    1u32, 94u32, 12u32, 1u32, 94u32, 18u32, 1u32, 94u32, 19u32, 1u32,
-                    94u32, 21u32, 1u32, 94u32, 28u32, 1u32, 94u32, 32u32, 1u32, 94u32,
-                    0u32, 1u32, 90u32, 1u32, 1u32, 90u32, 12u32, 1u32, 90u32, 18u32,
-                    1u32, 90u32, 19u32, 1u32, 90u32, 28u32, 1u32, 90u32, 0u32, 1u32,
-                    97u32, 1u32, 1u32, 97u32, 12u32, 1u32, 97u32, 28u32, 1u32, 97u32,
-                    14u32, 1u32, 97u32, 15u32, 1u32, 97u32, 0u32, 1u32, 37u32, 1u32,
-                    1u32, 37u32, 12u32, 1u32, 37u32, 21u32, 1u32, 37u32, 28u32, 1u32,
-                    37u32, 32u32, 1u32, 37u32, 0u32, 1u32, 90u32, 1u32, 1u32, 90u32,
-                    12u32, 1u32, 90u32, 28u32, 1u32, 90u32, 14u32, 1u32, 97u32, 15u32,
-                    1u32, 97u32, 0u32, 1u32, 38u32, 1u32, 1u32, 38u32, 12u32, 1u32,
-                    38u32, 21u32, 1u32, 38u32, 28u32, 1u32, 38u32, 32u32, 1u32, 38u32,
-                    0u32, 1u32, 31u32, 1u32, 1u32, 31u32, 12u32, 1u32, 31u32, 21u32,
-                    1u32, 31u32, 28u32, 1u32, 31u32, 32u32, 1u32, 31u32, 12u32, 1u32,
-                    97u32, 21u32, 1u32, 97u32, 12u32, 1u32, 97u32, 21u32, 1u32, 97u32,
-                    12u32, 1u32, 97u32, 21u32, 1u32, 97u32, 0u32, 1u32, 96u32, 1u32,
-                    1u32, 96u32, 12u32, 1u32, 96u32, 18u32, 1u32, 96u32, 19u32, 1u32,
-                    96u32, 21u32, 1u32, 96u32, 0u32, 1u32, 90u32, 1u32, 1u32, 90u32,
-                    12u32, 1u32, 90u32, 18u32, 1u32, 90u32, 19u32, 1u32, 90u32, 21u32,
-                    1u32, 90u32, 0u32, 1u32, 97u32, 1u32, 1u32, 97u32, 12u32, 1u32,
-                    97u32, 21u32, 1u32, 97u32, 14u32, 1u32, 97u32, 15u32, 1u32, 97u32,
-                    0u32, 1u32, 90u32, 1u32, 1u32, 90u32, 12u32, 1u32, 90u32, 21u32,
-                    1u32, 90u32, 14u32, 1u32, 97u32, 15u32, 1u32, 97u32, 21u32, 1u32,
-                    49u32, 32u32, 1u32, 97u32, 32u32, 1u32, 97u32, 32u32, 1u32, 97u32,
-                    0u32, 1u32, 96u32, 1u32, 1u32, 96u32, 18u32, 1u32, 96u32, 19u32,
-                    1u32, 96u32, 32u32, 1u32, 96u32, 0u32, 1u32, 90u32, 1u32, 1u32,
-                    90u32, 18u32, 1u32, 90u32, 19u32, 1u32, 90u32, 32u32, 1u32, 90u32,
-                    0u32, 1u32, 97u32, 1u32, 1u32, 97u32, 32u32, 1u32, 97u32, 14u32,
-                    1u32, 97u32, 15u32, 1u32, 97u32, 0u32, 1u32, 90u32, 1u32, 1u32,
-                    90u32, 32u32, 1u32, 90u32, 14u32, 1u32, 97u32, 15u32, 1u32, 97u32,
+                    6, 1, 97, 7, 1, 97, 9, 1, 97, 11, 1, 97, 14, 1, 97, 15, 1, 97, 20, 1,
+                    97, 27, 1, 97, 29, 1, 97, 6, 1, 97, 7, 1, 97, 9, 1, 97, 11, 1, 97,
+                    14, 1, 97, 15, 1, 97, 20, 1, 97, 27, 1, 97, 29, 1, 97, 6, 1, 97, 7,
+                    1, 97, 9, 1, 97, 11, 1, 97, 14, 1, 97, 15, 1, 97, 20, 1, 97, 27, 1,
+                    97, 29, 1, 97, 6, 1, 43, 7, 1, 43, 9, 1, 43, 11, 1, 43, 12, 1, 43,
+                    14, 1, 43, 15, 1, 43, 16, 1, 43, 20, 1, 43, 21, 1, 43, 27, 1, 43, 28,
+                    1, 43, 29, 1, 43, 32, 1, 43, 6, 1, 44, 7, 1, 44, 9, 1, 44, 11, 1, 44,
+                    12, 1, 44, 14, 1, 44, 15, 1, 44, 16, 1, 44, 20, 1, 44, 21, 1, 44, 27,
+                    1, 44, 28, 1, 44, 29, 1, 44, 32, 1, 44, 0, 1, 46, 1, 1, 46, 12, 1,
+                    46, 21, 1, 46, 28, 1, 46, 32, 1, 46, 0, 1, 47, 1, 1, 47, 12, 1, 47,
+                    21, 1, 47, 28, 1, 47, 32, 1, 47, 0, 1, 45, 1, 1, 45, 12, 1, 45, 21,
+                    1, 45, 28, 1, 45, 32, 1, 45, 0, 1, 93, 1, 1, 93, 13, 1, 93, 18, 1,
+                    93, 19, 1, 93, 32, 1, 93, 0, 1, 35, 1, 1, 35, 12, 1, 35, 13, 1, 35,
+                    18, 1, 35, 19, 1, 35, 21, 1, 35, 28, 1, 35, 32, 1, 35, 0, 1, 90, 1,
+                    1, 90, 13, 1, 90, 18, 1, 90, 19, 1, 90, 32, 1, 90, 0, 1, 91, 1, 1,
+                    91, 12, 1, 91, 13, 1, 91, 18, 1, 91, 19, 1, 91, 21, 1, 91, 28, 1, 91,
+                    32, 1, 91, 0, 1, 34, 1, 1, 34, 12, 1, 34, 13, 1, 34, 18, 1, 34, 19,
+                    1, 34, 21, 1, 34, 28, 1, 34, 32, 1, 34, 0, 1, 93, 1, 1, 93, 13, 1,
+                    93, 18, 1, 93, 19, 1, 93, 32, 1, 93, 0, 1, 33, 1, 1, 33, 12, 1, 33,
+                    13, 1, 33, 18, 1, 33, 19, 1, 33, 21, 1, 33, 28, 1, 33, 32, 1, 33, 6,
+                    1, 97, 7, 1, 97, 9, 1, 97, 11, 1, 97, 14, 1, 97, 15, 1, 97, 20, 1,
+                    97, 21, 1, 51, 27, 1, 97, 29, 1, 97, 21, 1, 48, 6, 1, 97, 7, 1, 97,
+                    9, 1, 97, 11, 1, 97, 14, 1, 97, 15, 1, 97, 20, 1, 97, 27, 1, 97, 29,
+                    1, 97, 0, 1, 93, 1, 1, 93, 12, 1, 93, 13, 1, 93, 18, 1, 93, 19, 1,
+                    93, 21, 1, 93, 0, 1, 90, 1, 1, 90, 12, 1, 90, 13, 1, 90, 18, 1, 90,
+                    19, 1, 90, 21, 1, 90, 0, 1, 93, 1, 1, 93, 12, 1, 93, 13, 1, 93, 18,
+                    1, 93, 19, 1, 93, 21, 1, 93, 0, 1, 14, 1, 1, 14, 12, 1, 14, 21, 1,
+                    14, 28, 1, 14, 32, 1, 14, 28, 1, 97, 29, 1, 97, 28, 1, 97, 29, 1, 97,
+                    28, 1, 97, 29, 1, 97, 0, 1, 10, 1, 1, 10, 12, 1, 10, 21, 1, 10, 28,
+                    1, 10, 32, 1, 10, 0, 1, 9, 1, 1, 9, 12, 1, 9, 21, 1, 9, 28, 1, 9, 32,
+                    1, 9, 28, 1, 11, 29, 1, 97, 29, 1, 97, 29, 1, 97, 28, 1, 12, 29, 1,
+                    55, 1, 1, 27, 3, 1, 27, 4, 1, 27, 5, 1, 27, 6, 1, 27, 7, 1, 27, 8, 1,
+                    27, 9, 1, 27, 10, 1, 27, 11, 1, 27, 12, 1, 27, 13, 1, 27, 14, 1, 27,
+                    15, 1, 27, 16, 1, 27, 17, 1, 27, 18, 1, 27, 19, 1, 27, 20, 1, 27, 21,
+                    1, 27, 22, 1, 27, 23, 1, 27, 24, 1, 27, 25, 1, 27, 26, 1, 27, 27, 1,
+                    27, 28, 1, 27, 29, 1, 27, 30, 1, 27, 1, 1, 17, 3, 1, 17, 4, 1, 17, 5,
+                    1, 17, 6, 1, 17, 7, 1, 17, 8, 1, 17, 9, 1, 17, 10, 1, 17, 11, 1, 17,
+                    12, 1, 17, 13, 1, 17, 14, 1, 17, 15, 1, 17, 16, 1, 17, 17, 1, 17, 18,
+                    1, 17, 19, 1, 17, 20, 1, 17, 21, 1, 17, 22, 1, 17, 23, 1, 17, 24, 1,
+                    17, 25, 1, 17, 26, 1, 17, 27, 1, 17, 28, 1, 17, 29, 1, 17, 30, 1, 17,
+                    29, 1, 52, 29, 1, 53, 0, 1, 16, 1, 1, 16, 12, 1, 16, 16, 1, 16, 21,
+                    1, 16, 28, 1, 16, 32, 1, 16, 16, 1, 97, 16, 1, 97, 16, 1, 97, 6, 1,
+                    97, 7, 1, 97, 9, 1, 97, 11, 1, 97, 14, 1, 97, 15, 1, 97, 20, 1, 97,
+                    27, 1, 97, 29, 1, 97, 12, 1, 13, 28, 1, 13, 0, 1, 93, 1, 1, 93, 12,
+                    1, 93, 13, 1, 93, 18, 1, 93, 19, 1, 93, 28, 1, 93, 0, 1, 90, 1, 1,
+                    90, 12, 1, 90, 13, 1, 90, 18, 1, 90, 19, 1, 90, 28, 1, 90, 0, 1, 93,
+                    1, 1, 93, 12, 1, 93, 13, 1, 93, 18, 1, 93, 19, 1, 93, 28, 1, 93, 0,
+                    1, 8, 1, 1, 8, 12, 1, 8, 21, 1, 8, 28, 1, 8, 32, 1, 8, 12, 1, 97, 28,
+                    1, 97, 12, 1, 97, 28, 1, 97, 12, 1, 97, 28, 1, 97, 12, 1, 15, 21, 1,
+                    15, 28, 1, 15, 32, 1, 15, 0, 1, 96, 1, 1, 96, 12, 1, 96, 18, 1, 96,
+                    19, 1, 96, 28, 1, 96, 0, 1, 94, 1, 1, 94, 12, 1, 94, 18, 1, 94, 19,
+                    1, 94, 21, 1, 94, 28, 1, 94, 32, 1, 94, 0, 1, 90, 1, 1, 90, 12, 1,
+                    90, 18, 1, 90, 19, 1, 90, 28, 1, 90, 0, 1, 97, 1, 1, 97, 12, 1, 97,
+                    28, 1, 97, 14, 1, 97, 15, 1, 97, 0, 1, 37, 1, 1, 37, 12, 1, 37, 21,
+                    1, 37, 28, 1, 37, 32, 1, 37, 0, 1, 90, 1, 1, 90, 12, 1, 90, 28, 1,
+                    90, 14, 1, 97, 15, 1, 97, 0, 1, 38, 1, 1, 38, 12, 1, 38, 21, 1, 38,
+                    28, 1, 38, 32, 1, 38, 0, 1, 31, 1, 1, 31, 12, 1, 31, 21, 1, 31, 28,
+                    1, 31, 32, 1, 31, 12, 1, 97, 21, 1, 97, 12, 1, 97, 21, 1, 97, 12, 1,
+                    97, 21, 1, 97, 0, 1, 96, 1, 1, 96, 12, 1, 96, 18, 1, 96, 19, 1, 96,
+                    21, 1, 96, 0, 1, 90, 1, 1, 90, 12, 1, 90, 18, 1, 90, 19, 1, 90, 21,
+                    1, 90, 0, 1, 97, 1, 1, 97, 12, 1, 97, 21, 1, 97, 14, 1, 97, 15, 1,
+                    97, 0, 1, 90, 1, 1, 90, 12, 1, 90, 21, 1, 90, 14, 1, 97, 15, 1, 97,
+                    21, 1, 49, 32, 1, 97, 32, 1, 97, 32, 1, 97, 0, 1, 96, 1, 1, 96, 18,
+                    1, 96, 19, 1, 96, 32, 1, 96, 0, 1, 90, 1, 1, 90, 18, 1, 90, 19, 1,
+                    90, 32, 1, 90, 0, 1, 97, 1, 1, 97, 32, 1, 97, 14, 1, 97, 15, 1, 97,
+                    0, 1, 90, 1, 1, 90, 32, 1, 90, 14, 1, 97, 15, 1, 97,
                 ];
                 static REDUCE_OFFSETS: &[u32] = &[
-                    0u32, 27u32, 54u32, 81u32, 123u32, 165u32, 165u32, 165u32, 165u32,
-                    165u32, 165u32, 165u32, 165u32, 183u32, 183u32, 183u32, 183u32,
-                    201u32, 201u32, 201u32, 201u32, 219u32, 219u32, 237u32, 264u32,
-                    282u32, 309u32, 336u32, 354u32, 381u32, 411u32, 414u32, 441u32,
-                    441u32, 441u32, 462u32, 483u32, 504u32, 504u32, 522u32, 528u32,
-                    534u32, 540u32, 540u32, 558u32, 558u32, 576u32, 579u32, 582u32,
-                    585u32, 588u32, 591u32, 591u32, 594u32, 594u32, 594u32, 594u32,
-                    594u32, 594u32, 681u32, 768u32, 771u32, 774u32, 774u32, 795u32,
-                    798u32, 801u32, 804u32, 804u32, 831u32, 837u32, 837u32, 837u32,
-                    858u32, 879u32, 900u32, 900u32, 918u32, 924u32, 930u32, 936u32,
-                    948u32, 966u32, 966u32, 990u32, 1008u32, 1020u32, 1026u32, 1026u32,
-                    1044u32, 1056u32, 1062u32, 1062u32, 1080u32, 1098u32, 1104u32,
-                    1110u32, 1116u32, 1134u32, 1134u32, 1152u32, 1164u32, 1170u32,
-                    1170u32, 1182u32, 1188u32, 1188u32, 1191u32, 1194u32, 1197u32,
-                    1200u32, 1215u32, 1215u32, 1230u32, 1239u32, 1245u32, 1245u32,
-                    1254u32, 1260u32, 1260u32,
-                ];
-                static RULESET_DATA: &[u32] = &[
-                    0u32, 15u32, 42u32, 43u32, 44u32, 97u32, 98u32, 42u32, 43u32, 44u32,
-                    65580u32, 97u32, 42u32, 43u32, 65579u32, 44u32, 97u32, 131115u32,
-                    131116u32, 65634u32, 131170u32, 1u32, 2u32, 3u32, 4u32, 5u32, 6u32,
-                    7u32, 8u32, 9u32, 10u32, 14u32, 65551u32, 16u32, 31u32, 32u32, 33u32,
-                    34u32, 35u32, 45u32, 46u32, 47u32, 92u32, 93u32, 65582u32, 131118u32,
-                    196654u32, 262190u32, 327726u32, 65583u32, 131119u32, 196655u32,
-                    262191u32, 65581u32, 131117u32, 196653u32, 262189u32, 65570u32,
-                    65571u32, 92u32, 93u32, 131107u32, 90u32, 91u32, 92u32, 93u32,
-                    65629u32, 196643u32, 90u32, 65626u32, 91u32, 65627u32, 92u32, 93u32,
-                    131163u32, 131106u32, 65569u32, 90u32, 91u32, 92u32, 93u32, 65629u32,
-                    131105u32, 65550u32, 15u32, 42u32, 43u32, 44u32, 48u32, 49u32, 50u32,
-                    51u32, 97u32, 65584u32, 65585u32, 15u32, 42u32, 43u32, 44u32, 48u32,
-                    49u32, 131121u32, 97u32, 1u32, 2u32, 3u32, 4u32, 5u32, 6u32, 7u32,
-                    8u32, 9u32, 10u32, 14u32, 65551u32, 16u32, 31u32, 32u32, 33u32,
-                    34u32, 35u32, 45u32, 46u32, 47u32, 92u32, 93u32, 65570u32, 65571u32,
-                    92u32, 93u32, 131107u32, 90u32, 91u32, 92u32, 93u32, 65629u32, 90u32,
-                    65626u32, 91u32, 65627u32, 92u32, 93u32, 65569u32, 90u32, 91u32,
-                    92u32, 93u32, 65629u32, 131086u32, 196622u32, 65544u32, 65545u32,
-                    65546u32, 11u32, 12u32, 13u32, 42u32, 43u32, 44u32, 97u32, 42u32,
-                    43u32, 44u32, 65580u32, 97u32, 42u32, 43u32, 65579u32, 44u32, 97u32,
-                    131082u32, 196618u32, 131081u32, 196617u32, 65547u32, 65548u32,
-                    11u32, 12u32, 131084u32, 13u32, 42u32, 43u32, 44u32, 97u32, 42u32,
-                    43u32, 44u32, 65580u32, 97u32, 42u32, 43u32, 65579u32, 44u32, 97u32,
-                    196620u32, 65549u32, 16u32, 65552u32, 17u32, 18u32, 52u32, 53u32,
-                    54u32, 55u32, 56u32, 57u32, 58u32, 59u32, 60u32, 61u32, 62u32, 63u32,
-                    64u32, 65u32, 66u32, 67u32, 68u32, 69u32, 70u32, 71u32, 72u32, 73u32,
-                    74u32, 75u32, 76u32, 77u32, 78u32, 79u32, 80u32, 81u32, 82u32,
-                    65553u32, 19u32, 20u32, 21u32, 22u32, 23u32, 24u32, 25u32, 26u32,
-                    27u32, 65563u32, 28u32, 29u32, 30u32, 83u32, 84u32, 85u32, 86u32,
-                    87u32, 88u32, 89u32, 92u32, 93u32, 131099u32, 28u32, 29u32, 30u32,
-                    83u32, 84u32, 85u32, 86u32, 87u32, 88u32, 89u32, 92u32, 93u32,
-                    196635u32, 28u32, 29u32, 30u32, 83u32, 84u32, 85u32, 86u32, 87u32,
-                    88u32, 89u32, 92u32, 93u32, 262171u32, 28u32, 29u32, 30u32, 83u32,
-                    84u32, 85u32, 86u32, 87u32, 88u32, 89u32, 92u32, 93u32, 327707u32,
-                    131089u32, 17u32, 18u32, 52u32, 65588u32, 53u32, 65589u32, 56u32,
-                    57u32, 58u32, 59u32, 60u32, 61u32, 62u32, 63u32, 64u32, 65u32, 66u32,
-                    67u32, 68u32, 69u32, 70u32, 71u32, 72u32, 73u32, 74u32, 75u32, 76u32,
-                    77u32, 78u32, 79u32, 80u32, 81u32, 82u32, 131125u32, 131088u32,
-                    196624u32, 131085u32, 42u32, 43u32, 44u32, 97u32, 42u32, 43u32,
-                    44u32, 65580u32, 97u32, 42u32, 43u32, 65579u32, 44u32, 97u32,
-                    196621u32, 262157u32, 15u32, 42u32, 43u32, 44u32, 97u32, 327693u32,
-                    1u32, 2u32, 3u32, 4u32, 5u32, 6u32, 7u32, 8u32, 9u32, 10u32, 14u32,
-                    65551u32, 16u32, 31u32, 32u32, 33u32, 34u32, 35u32, 45u32, 46u32,
-                    47u32, 92u32, 93u32, 65570u32, 65571u32, 92u32, 93u32, 131107u32,
-                    90u32, 91u32, 92u32, 93u32, 65629u32, 90u32, 65626u32, 91u32,
-                    65627u32, 92u32, 93u32, 65569u32, 90u32, 91u32, 92u32, 93u32,
-                    65629u32, 131080u32, 65549u32, 16u32, 196616u32, 131087u32, 42u32,
-                    43u32, 44u32, 97u32, 42u32, 43u32, 44u32, 65580u32, 97u32, 42u32,
-                    43u32, 65579u32, 44u32, 97u32, 196623u32, 65567u32, 94u32, 95u32,
-                    96u32, 90u32, 91u32, 92u32, 93u32, 65630u32, 131166u32, 90u32,
-                    65626u32, 91u32, 65627u32, 92u32, 93u32, 131103u32, 36u32, 37u32,
-                    38u32, 97u32, 65573u32, 39u32, 40u32, 41u32, 97u32, 131109u32, 90u32,
-                    91u32, 92u32, 93u32, 196645u32, 90u32, 65626u32, 91u32, 65627u32,
-                    92u32, 93u32, 65574u32, 39u32, 40u32, 41u32, 97u32, 131110u32, 90u32,
-                    91u32, 92u32, 93u32, 196646u32, 196639u32, 131087u32, 42u32, 43u32,
-                    44u32, 97u32, 42u32, 43u32, 44u32, 65580u32, 97u32, 42u32, 43u32,
-                    65579u32, 44u32, 97u32, 65567u32, 94u32, 95u32, 96u32, 90u32, 91u32,
-                    92u32, 93u32, 65630u32, 90u32, 65626u32, 91u32, 65627u32, 92u32,
-                    93u32, 131103u32, 36u32, 37u32, 38u32, 97u32, 65573u32, 39u32, 40u32,
-                    41u32, 97u32, 131109u32, 90u32, 91u32, 92u32, 93u32, 90u32, 65626u32,
-                    91u32, 65627u32, 92u32, 93u32, 65574u32, 39u32, 40u32, 41u32, 97u32,
-                    131110u32, 90u32, 91u32, 92u32, 93u32, 196657u32, 131087u32, 42u32,
-                    43u32, 44u32, 97u32, 42u32, 43u32, 44u32, 65580u32, 97u32, 42u32,
-                    43u32, 65579u32, 44u32, 97u32, 65567u32, 94u32, 95u32, 96u32, 90u32,
-                    91u32, 92u32, 93u32, 65630u32, 90u32, 65626u32, 91u32, 65627u32,
-                    92u32, 93u32, 131103u32, 36u32, 37u32, 38u32, 97u32, 65573u32, 39u32,
-                    40u32, 41u32, 97u32, 131109u32, 90u32, 91u32, 92u32, 93u32, 90u32,
-                    65626u32, 91u32, 65627u32, 92u32, 93u32, 65574u32, 39u32, 40u32,
-                    41u32, 97u32, 131110u32, 90u32, 91u32, 92u32, 93u32,
-                ];
-                static RULESET_OFFSETS: &[u32] = &[
-                    0u32, 7u32, 12u32, 17u32, 18u32, 19u32, 20u32, 21u32, 44u32, 45u32,
-                    46u32, 47u32, 48u32, 49u32, 50u32, 51u32, 52u32, 53u32, 54u32, 55u32,
-                    56u32, 57u32, 61u32, 67u32, 68u32, 74u32, 75u32, 76u32, 82u32, 83u32,
-                    93u32, 95u32, 103u32, 126u32, 130u32, 136u32, 142u32, 148u32, 149u32,
-                    150u32, 160u32, 165u32, 170u32, 171u32, 172u32, 173u32, 174u32,
-                    176u32, 184u32, 189u32, 194u32, 195u32, 197u32, 231u32, 241u32,
-                    254u32, 267u32, 280u32, 293u32, 294u32, 295u32, 328u32, 329u32,
-                    330u32, 331u32, 336u32, 341u32, 346u32, 347u32, 353u32, 354u32,
-                    377u32, 381u32, 387u32, 393u32, 399u32, 402u32, 403u32, 408u32,
-                    413u32, 418u32, 419u32, 423u32, 428u32, 429u32, 435u32, 440u32,
-                    445u32, 450u32, 451u32, 457u32, 462u32, 467u32, 468u32, 469u32,
-                    474u32, 479u32, 484u32, 488u32, 493u32, 499u32, 504u32, 509u32,
-                    514u32, 520u32, 525u32, 530u32, 531u32, 536u32, 541u32, 546u32,
-                    550u32, 555u32, 561u32, 566u32, 571u32, 576u32, 582u32, 587u32,
-                    592u32,
+                    0, 27, 54, 81, 123, 165, 165, 165, 165, 165, 165, 165, 165, 183, 183,
+                    183, 183, 201, 201, 201, 201, 219, 219, 237, 264, 282, 309, 336, 354,
+                    381, 411, 414, 441, 441, 441, 462, 483, 504, 504, 522, 528, 534, 540,
+                    540, 558, 558, 576, 579, 582, 585, 588, 591, 591, 594, 594, 594, 594,
+                    594, 594, 681, 768, 771, 774, 774, 795, 798, 801, 804, 804, 831, 837,
+                    837, 837, 858, 879, 900, 900, 918, 924, 930, 936, 948, 966, 966, 990,
+                    1008, 1020, 1026, 1026, 1044, 1056, 1062, 1062, 1080, 1098, 1104,
+                    1110, 1116, 1134, 1134, 1152, 1164, 1170, 1170, 1182, 1188, 1188,
+                    1191, 1194, 1197, 1200, 1215, 1215, 1230, 1239, 1245, 1245, 1254,
+                    1260, 1260,
                 ];
                 static CAN_ACCEPT_ERROR: &[u8] = &[
-                    0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
-                    0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
-                    0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8,
-                    0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
-                    0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
-                    0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
-                    0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
-                    0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
-                    0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8,
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                    0, 0, 0, 0,
                 ];
                 let num_states = 119usize;
                 let mut states = Vec::with_capacity(num_states);
@@ -2474,19 +2263,6 @@ impl ::rusty_lr::parser::Parser for JsonParser {
                         reduce_map.push((term_class, rules));
                         idx += 2 + len;
                     }
-                    let ruleset_start = RULESET_OFFSETS[i] as usize;
-                    let ruleset_end = RULESET_OFFSETS[i + 1] as usize;
-                    let mut ruleset = Vec::with_capacity(ruleset_end - ruleset_start);
-                    for idx in ruleset_start..ruleset_end {
-                        let val = RULESET_DATA[idx];
-                        let rule = (val & 0xffff) as usize;
-                        let shifted = (val >> 16) as usize;
-                        ruleset
-                            .push(::rusty_lr::rule::ShiftedRuleRef {
-                                rule,
-                                shifted,
-                            });
-                    }
                     let can_accept_error = match CAN_ACCEPT_ERROR[i] {
                         0 => ::rusty_lr::TriState::False,
                         1 => ::rusty_lr::TriState::True,
@@ -2497,7 +2273,7 @@ impl ::rusty_lr::parser::Parser for JsonParser {
                         shift_goto_map_term,
                         shift_goto_map_nonterm,
                         reduce_map,
-                        ruleset,
+                        ruleset: Vec::new(),
                         can_accept_error,
                     };
                     states.push(intermediate.into());
