
//----------------------------------------------------
// The following code was generated by CUP v0.11b 20150226 (SVN rev 63)
//----------------------------------------------------

package jflex;

import java.util.*;
import jflex.unicode.UnicodeProperties;
import java_cup.runtime.Symbol;
import java_cup.runtime.XMLElement;

/** CUP v0.11b 20150226 (SVN rev 63) generated parser.
  */
@SuppressWarnings({"rawtypes"})
public class LexParse extends java_cup.runtime.lr_parser {

 public final Class getSymbolContainer() {
    return sym.class;
}

  /** Default constructor. */
  public LexParse() {super();}

  /** Constructor which sets the default scanner. */
  public LexParse(java_cup.runtime.Scanner s) {super(s);}

  /** Constructor which sets the default scanner. */
  public LexParse(java_cup.runtime.Scanner s, java_cup.runtime.SymbolFactory sf) {super(s,sf);}

  /** Production table. */
  protected static final short _production_table[][] = 
    unpackFromStrings(new String[] {
    "\000\161\000\002\002\004\000\002\005\006\000\002\005" +
    "\002\000\002\002\002\000\002\002\004\000\002\002\003" +
    "\000\002\003\003\000\002\003\003\000\002\003\003\000" +
    "\002\003\006\000\002\003\004\000\002\021\004\000\002" +
    "\021\011\000\002\021\010\000\002\021\003\000\002\004" +
    "\006\000\002\004\007\000\002\004\007\000\002\004\005" +
    "\000\002\004\003\000\002\013\003\000\002\013\004\000" +
    "\002\013\005\000\002\023\004\000\002\024\003\000\002" +
    "\024\003\000\002\020\005\000\002\020\002\000\002\017" +
    "\005\000\002\017\003\000\002\017\004\000\002\022\003" +
    "\000\002\022\002\000\002\006\005\000\002\006\003\000" +
    "\002\006\003\000\002\007\004\000\002\007\003\000\002" +
    "\010\003\000\002\010\004\000\002\010\004\000\002\011" +
    "\004\000\002\011\004\000\002\011\004\000\002\011\005" +
    "\000\002\011\006\000\002\011\005\000\002\011\003\000" +
    "\002\011\003\000\002\011\003\000\002\011\003\000\002" +
    "\011\003\000\002\011\003\000\002\011\003\000\002\011" +
    "\003\000\002\011\003\000\002\012\004\000\002\012\005" +
    "\000\002\012\005\000\002\012\006\000\002\012\006\000" +
    "\002\012\007\000\002\012\007\000\002\012\010\000\002" +
    "\012\010\000\002\012\011\000\002\012\010\000\002\012" +
    "\011\000\002\012\011\000\002\012\012\000\002\012\007" +
    "\000\002\012\010\000\002\012\010\000\002\012\011\000" +
    "\002\012\010\000\002\012\011\000\002\012\011\000\002" +
    "\012\012\000\002\012\007\000\002\012\010\000\002\012" +
    "\010\000\002\012\011\000\002\012\010\000\002\012\011" +
    "\000\002\012\011\000\002\012\012\000\002\015\004\000" +
    "\002\015\003\000\002\015\004\000\002\015\003\000\002" +
    "\015\004\000\002\015\003\000\002\015\004\000\002\015" +
    "\003\000\002\015\004\000\002\015\003\000\002\015\004" +
    "\000\002\015\003\000\002\015\004\000\002\015\003\000" +
    "\002\014\005\000\002\014\003\000\002\016\003\000\002" +
    "\016\003\000\002\016\003\000\002\016\003\000\002\016" +
    "\003\000\002\016\003\000\002\016\003\000\002\016\003" +
    "\000\002\016\003\000\002\016\003\000\002\016\003" });

  /** Access to production table. */
  public short[][] production_table() {return _production_table;}

  /** Parse-action table. */
  protected static final short[][] _action_table = 
    unpackFromStrings(new String[] {
    "\000\304\000\006\002\uffff\052\004\001\002\000\016\003" +
    "\007\013\ufffe\022\ufffe\023\ufffe\024\ufffe\051\ufffe\001\002" +
    "\000\004\002\006\001\002\000\004\002\001\001\002\000" +
    "\014\013\ufffc\022\ufffc\023\ufffc\024\ufffc\051\ufffc\001\002" +
    "\000\014\013\012\022\011\023\016\024\015\051\014\001" +
    "\002\000\014\013\ufffb\022\ufffb\023\ufffb\024\ufffb\051\ufffb" +
    "\001\002\000\070\003\242\004\uffe6\006\uffe6\010\uffe6\016" +
    "\244\026\uffe6\027\uffe6\030\uffe6\031\uffe6\032\uffe6\033\uffe6" +
    "\034\uffe6\035\uffe6\040\uffe6\041\uffe6\042\uffe6\043\uffe6\056" +
    "\uffe6\060\uffe6\061\uffe6\062\uffe6\063\uffe6\064\uffe6\065\uffe6" +
    "\066\uffe6\067\uffe6\070\uffe6\001\002\000\014\013\ufffd\022" +
    "\ufffd\023\ufffd\024\ufffd\051\ufffd\001\002\000\004\014\017" +
    "\001\002\000\014\013\ufff9\022\ufff9\023\ufff9\024\ufff9\051" +
    "\ufff9\001\002\000\014\013\ufffa\022\ufffa\023\ufffa\024\ufffa" +
    "\051\ufffa\001\002\000\072\004\043\010\054\013\ufff7\022" +
    "\ufff7\023\ufff7\024\ufff7\026\032\027\036\030\021\031\051" +
    "\032\024\033\044\034\040\040\027\041\053\042\026\043" +
    "\030\051\ufff7\056\050\060\025\061\041\062\045\063\031" +
    "\064\023\065\037\066\034\067\022\070\020\001\002\000" +
    "\102\004\uffce\005\uffce\007\uffce\010\uffce\025\uffce\026\uffce" +
    "\027\uffce\030\uffce\031\uffce\032\uffce\033\uffce\034\uffce\036" +
    "\uffce\037\uffce\040\uffce\041\uffce\042\uffce\043\uffce\053\uffce" +
    "\054\uffce\055\uffce\056\uffce\057\uffce\060\uffce\061\uffce\062" +
    "\uffce\063\uffce\064\uffce\065\uffce\066\uffce\067\uffce\070\uffce" +
    "\001\002\000\112\004\uff99\005\uff99\007\uff99\010\uff99\011" +
    "\uff99\025\uff99\026\uff99\027\uff99\030\uff99\031\uff99\032\uff99" +
    "\033\uff99\034\uff99\036\uff99\037\uff99\040\uff99\041\uff99\042" +
    "\uff99\043\uff99\045\uff99\046\uff99\047\uff99\053\uff99\054\uff99" +
    "\055\uff99\056\uff99\057\uff99\060\uff99\061\uff99\062\uff99\063" +
    "\uff99\064\uff99\065\uff99\066\uff99\067\uff99\070\uff99\001\002" +
    "\000\102\004\uffcf\005\uffcf\007\uffcf\010\uffcf\025\uffcf\026" +
    "\uffcf\027\uffcf\030\uffcf\031\uffcf\032\uffcf\033\uffcf\034\uffcf" +
    "\036\uffcf\037\uffcf\040\uffcf\041\uffcf\042\uffcf\043\uffcf\053" +
    "\uffcf\054\uffcf\055\uffcf\056\uffcf\057\uffcf\060\uffcf\061\uffcf" +
    "\062\uffcf\063\uffcf\064\uffcf\065\uffcf\066\uffcf\067\uffcf\070" +
    "\uffcf\001\002\000\102\004\uffca\005\uffca\007\uffca\010\uffca" +
    "\025\uffca\026\uffca\027\uffca\030\uffca\031\uffca\032\uffca\033" +
    "\uffca\034\uffca\036\uffca\037\uffca\040\uffca\041\uffca\042\uffca" +
    "\043\uffca\053\uffca\054\uffca\055\uffca\056\uffca\057\uffca\060" +
    "\uffca\061\uffca\062\uffca\063\uffca\064\uffca\065\uffca\066\uffca" +
    "\067\uffca\070\uffca\001\002\000\112\004\uff97\005\uff97\007" +
    "\uff97\010\uff97\011\uff97\025\uff97\026\uff97\027\uff97\030\uff97" +
    "\031\uff97\032\uff97\033\uff97\034\uff97\036\uff97\037\uff97\040" +
    "\uff97\041\uff97\042\uff97\043\uff97\045\uff97\046\uff97\047\uff97" +
    "\053\uff97\054\uff97\055\uff97\056\uff97\057\uff97\060\uff97\061" +
    "\uff97\062\uff97\063\uff97\064\uff97\065\uff97\066\uff97\067\uff97" +
    "\070\uff97\001\002\000\102\004\uffcc\005\uffcc\007\uffcc\010" +
    "\uffcc\025\uffcc\026\uffcc\027\uffcc\030\uffcc\031\uffcc\032\uffcc" +
    "\033\uffcc\034\uffcc\036\uffcc\037\uffcc\040\uffcc\041\uffcc\042" +
    "\uffcc\043\uffcc\053\uffcc\054\uffcc\055\uffcc\056\uffcc\057\uffcc" +
    "\060\uffcc\061\uffcc\062\uffcc\063\uffcc\064\uffcc\065\uffcc\066" +
    "\uffcc\067\uffcc\070\uffcc\001\002\000\112\004\uff92\005\uff92" +
    "\007\uff92\010\uff92\011\uff92\025\uff92\026\uff92\027\uff92\030" +
    "\uff92\031\uff92\032\uff92\033\uff92\034\uff92\036\uff92\037\uff92" +
    "\040\uff92\041\uff92\042\uff92\043\uff92\045\uff92\046\uff92\047" +
    "\uff92\053\uff92\054\uff92\055\uff92\056\uff92\057\uff92\060\uff92" +
    "\061\uff92\062\uff92\063\uff92\064\uff92\065\uff92\066\uff92\067" +
    "\uff92\070\uff92\001\002\000\112\004\uff94\005\uff94\007\uff94" +
    "\010\uff94\011\uff94\025\uff94\026\uff94\027\uff94\030\uff94\031" +
    "\uff94\032\uff94\033\uff94\034\uff94\036\uff94\037\uff94\040\uff94" +
    "\041\uff94\042\uff94\043\uff94\045\uff94\046\uff94\047\uff94\053" +
    "\uff94\054\uff94\055\uff94\056\uff94\057\uff94\060\uff94\061\uff94" +
    "\062\uff94\063\uff94\064\uff94\065\uff94\066\uff94\067\uff94\070" +
    "\uff94\001\002\000\112\004\uff91\005\uff91\007\uff91\010\uff91" +
    "\011\uff91\025\uff91\026\uff91\027\uff91\030\uff91\031\uff91\032" +
    "\uff91\033\uff91\034\uff91\036\uff91\037\uff91\040\uff91\041\uff91" +
    "\042\uff91\043\uff91\045\uff91\046\uff91\047\uff91\053\uff91\054" +
    "\uff91\055\uff91\056\uff91\057\uff91\060\uff91\061\uff91\062\uff91" +
    "\063\uff91\064\uff91\065\uff91\066\uff91\067\uff91\070\uff91\001" +
    "\002\000\056\004\043\010\054\026\032\027\036\030\021" +
    "\031\051\032\024\033\044\034\040\040\027\041\053\042" +
    "\026\043\030\060\025\061\041\062\045\063\031\064\023" +
    "\065\037\066\034\067\022\070\020\001\002\000\112\004" +
    "\uff9b\005\uff9b\007\uff9b\010\uff9b\011\uff9b\025\uff9b\026\uff9b" +
    "\027\uff9b\030\uff9b\031\uff9b\032\uff9b\033\uff9b\034\uff9b\036" +
    "\uff9b\037\uff9b\040\uff9b\041\uff9b\042\uff9b\043\uff9b\045\uff9b" +
    "\046\uff9b\047\uff9b\053\uff9b\054\uff9b\055\uff9b\056\uff9b\057" +
    "\uff9b\060\uff9b\061\uff9b\062\uff9b\063\uff9b\064\uff9b\065\uff9b" +
    "\066\uff9b\067\uff9b\070\uff9b\001\002\000\102\004\uffd0\005" +
    "\uffd0\007\uffd0\010\uffd0\025\uffd0\026\uffd0\027\uffd0\030\uffd0" +
    "\031\uffd0\032\uffd0\033\uffd0\034\uffd0\036\uffd0\037\uffd0\040" +
    "\uffd0\041\uffd0\042\uffd0\043\uffd0\053\uffd0\054\uffd0\055\uffd0" +
    "\056\uffd0\057\uffd0\060\uffd0\061\uffd0\062\uffd0\063\uffd0\064" +
    "\uffd0\065\uffd0\066\uffd0\067\uffd0\070\uffd0\001\002\000\102" +
    "\004\uffd2\005\uffd2\007\uffd2\010\uffd2\025\uffd2\026\uffd2\027" +
    "\uffd2\030\uffd2\031\uffd2\032\uffd2\033\uffd2\034\uffd2\036\uffd2" +
    "\037\uffd2\040\uffd2\041\uffd2\042\uffd2\043\uffd2\053\uffd2\054" +
    "\uffd2\055\uffd2\056\uffd2\057\uffd2\060\uffd2\061\uffd2\062\uffd2" +
    "\063\uffd2\064\uffd2\065\uffd2\066\uffd2\067\uffd2\070\uffd2\001" +
    "\002\000\006\025\240\056\234\001\002\000\112\004\uff9a" +
    "\005\uff9a\007\uff9a\010\uff9a\011\uff9a\025\uff9a\026\uff9a\027" +
    "\uff9a\030\uff9a\031\uff9a\032\uff9a\033\uff9a\034\uff9a\036\uff9a" +
    "\037\uff9a\040\uff9a\041\uff9a\042\uff9a\043\uff9a\045\uff9a\046" +
    "\uff9a\047\uff9a\053\uff9a\054\uff9a\055\uff9a\056\uff9a\057\uff9a" +
    "\060\uff9a\061\uff9a\062\uff9a\063\uff9a\064\uff9a\065\uff9a\066" +
    "\uff9a\067\uff9a\070\uff9a\001\002\000\102\004\uffcd\005\uffcd" +
    "\007\uffcd\010\uffcd\025\uffcd\026\uffcd\027\uffcd\030\uffcd\031" +
    "\uffcd\032\uffcd\033\uffcd\034\uffcd\036\uffcd\037\uffcd\040\uffcd" +
    "\041\uffcd\042\uffcd\043\uffcd\053\uffcd\054\uffcd\055\uffcd\056" +
    "\uffcd\057\uffcd\060\uffcd\061\uffcd\062\uffcd\063\uffcd\064\uffcd" +
    "\065\uffcd\066\uffcd\067\uffcd\070\uffcd\001\002\000\112\004" +
    "\uff95\005\uff95\007\uff95\010\uff95\011\uff95\025\uff95\026\uff95" +
    "\027\uff95\030\uff95\031\uff95\032\uff95\033\uff95\034\uff95\036" +
    "\uff95\037\uff95\040\uff95\041\uff95\042\uff95\043\uff95\045\uff95" +
    "\046\uff95\047\uff95\053\uff95\054\uff95\055\uff95\056\uff95\057" +
    "\uff95\060\uff95\061\uff95\062\uff95\063\uff95\064\uff95\065\uff95" +
    "\066\uff95\067\uff95\070\uff95\001\002\000\102\004\uffcb\005" +
    "\uffcb\007\uffcb\010\uffcb\025\uffcb\026\uffcb\027\uffcb\030\uffcb" +
    "\031\uffcb\032\uffcb\033\uffcb\034\uffcb\036\uffcb\037\uffcb\040" +
    "\uffcb\041\uffcb\042\uffcb\043\uffcb\053\uffcb\054\uffcb\055\uffcb" +
    "\056\uffcb\057\uffcb\060\uffcb\061\uffcb\062\uffcb\063\uffcb\064" +
    "\uffcb\065\uffcb\066\uffcb\067\uffcb\070\uffcb\001\002\000\072" +
    "\004\043\005\uffdf\007\uffdf\010\054\025\uffdf\026\032\027" +
    "\036\030\021\031\051\032\024\033\044\034\040\036\uffdf" +
    "\037\uffdf\040\027\041\053\042\026\043\030\056\uffdf\060" +
    "\025\061\041\062\045\063\031\064\023\065\037\066\034" +
    "\067\022\070\020\001\002\000\060\004\043\010\054\026" +
    "\032\027\036\030\021\031\051\032\024\033\044\034\040" +
    "\040\027\041\053\042\026\043\030\056\050\060\025\061" +
    "\041\062\045\063\031\064\023\065\037\066\034\067\022" +
    "\070\020\001\002\000\112\004\uff96\005\uff96\007\uff96\010" +
    "\uff96\011\uff96\025\uff96\026\uff96\027\uff96\030\uff96\031\uff96" +
    "\032\uff96\033\uff96\034\uff96\036\uff96\037\uff96\040\uff96\041" +
    "\uff96\042\uff96\043\uff96\045\uff96\046\uff96\047\uff96\053\uff96" +
    "\054\uff96\055\uff96\056\uff96\057\uff96\060\uff96\061\uff96\062" +
    "\uff96\063\uff96\064\uff96\065\uff96\066\uff96\067\uff96\070\uff96" +
    "\001\002\000\056\004\043\010\054\026\032\027\036\030" +
    "\021\031\051\032\024\033\044\034\040\040\027\041\053" +
    "\042\026\043\030\060\025\061\041\062\045\063\031\064" +
    "\023\065\037\066\034\067\022\070\020\001\002\000\102" +
    "\004\uffd1\005\uffd1\007\uffd1\010\uffd1\025\uffd1\026\uffd1\027" +
    "\uffd1\030\uffd1\031\uffd1\032\uffd1\033\uffd1\034\uffd1\036\uffd1" +
    "\037\uffd1\040\uffd1\041\uffd1\042\uffd1\043\uffd1\053\uffd1\054" +
    "\uffd1\055\uffd1\056\uffd1\057\uffd1\060\uffd1\061\uffd1\062\uffd1" +
    "\063\uffd1\064\uffd1\065\uffd1\066\uffd1\067\uffd1\070\uffd1\001" +
    "\002\000\072\004\uffdc\005\uffdc\007\uffdc\010\uffdc\025\uffdc" +
    "\026\uffdc\027\uffdc\030\uffdc\031\uffdc\032\uffdc\033\uffdc\034" +
    "\uffdc\036\uffdc\037\uffdc\040\uffdc\041\uffdc\042\uffdc\043\uffdc" +
    "\056\uffdc\060\uffdc\061\uffdc\062\uffdc\063\uffdc\064\uffdc\065" +
    "\uffdc\066\uffdc\067\uffdc\070\uffdc\001\002\000\016\005\uffde" +
    "\007\uffde\025\uffde\036\uffde\037\uffde\056\uffde\001\002\000" +
    "\112\004\uff98\005\uff98\007\uff98\010\uff98\011\uff98\025\uff98" +
    "\026\uff98\027\uff98\030\uff98\031\uff98\032\uff98\033\uff98\034" +
    "\uff98\036\uff98\037\uff98\040\uff98\041\uff98\042\uff98\043\uff98" +
    "\045\uff98\046\uff98\047\uff98\053\uff98\054\uff98\055\uff98\056" +
    "\uff98\057\uff98\060\uff98\061\uff98\062\uff98\063\uff98\064\uff98" +
    "\065\uff98\066\uff98\067\uff98\070\uff98\001\002\000\102\004" +
    "\uffdb\005\uffdb\007\uffdb\010\uffdb\025\uffdb\026\uffdb\027\uffdb" +
    "\030\uffdb\031\uffdb\032\uffdb\033\uffdb\034\uffdb\036\uffdb\037" +
    "\uffdb\040\uffdb\041\uffdb\042\uffdb\043\uffdb\053\225\054\223" +
    "\055\224\056\uffdb\057\226\060\uffdb\061\uffdb\062\uffdb\063" +
    "\uffdb\064\uffdb\065\uffdb\066\uffdb\067\uffdb\070\uffdb\001\002" +
    "\000\112\004\uff93\005\uff93\007\uff93\010\uff93\011\uff93\025" +
    "\uff93\026\uff93\027\uff93\030\uff93\031\uff93\032\uff93\033\uff93" +
    "\034\uff93\036\uff93\037\uff93\040\uff93\041\uff93\042\uff93\043" +
    "\uff93\045\uff93\046\uff93\047\uff93\053\uff93\054\uff93\055\uff93" +
    "\056\uff93\057\uff93\060\uff93\061\uff93\062\uff93\063\uff93\064" +
    "\uff93\065\uff93\066\uff93\067\uff93\070\uff93\001\002\000\052" +
    "\006\060\010\054\011\070\012\065\026\032\027\036\030" +
    "\021\031\051\032\024\033\044\034\040\040\027\041\053" +
    "\042\026\043\030\064\061\065\064\066\062\067\056\070" +
    "\055\001\002\000\054\010\uffa4\011\uffa4\026\uffa4\027\uffa4" +
    "\030\uffa4\031\uffa4\032\uffa4\033\uffa4\034\uffa4\040\uffa4\041" +
    "\uffa4\042\uffa4\043\uffa4\045\uffa4\046\uffa4\047\uffa4\064\uffa4" +
    "\065\uffa4\066\uffa4\067\uffa4\070\uffa4\001\002\000\054\010" +
    "\uffa6\011\uffa6\026\uffa6\027\uffa6\030\uffa6\031\uffa6\032\uffa6" +
    "\033\uffa6\034\uffa6\040\uffa6\041\uffa6\042\uffa6\043\uffa6\045" +
    "\uffa6\046\uffa6\047\uffa6\064\uffa6\065\uffa6\066\uffa6\067\uffa6" +
    "\070\uffa6\001\002\000\054\010\uffaa\011\uffaa\026\uffaa\027" +
    "\uffaa\030\uffaa\031\uffaa\032\uffaa\033\uffaa\034\uffaa\040\uffaa" +
    "\041\uffaa\042\uffaa\043\uffaa\045\uffaa\046\uffaa\047\uffaa\064" +
    "\uffaa\065\uffaa\066\uffaa\067\uffaa\070\uffaa\001\002\000\050" +
    "\010\054\011\153\012\151\026\032\027\036\030\021\031" +
    "\051\032\024\033\044\034\040\040\027\041\053\042\026" +
    "\043\030\064\061\065\064\066\062\067\056\070\055\001" +
    "\002\000\056\010\uff9c\011\uff9c\012\147\026\uff9c\027\uff9c" +
    "\030\uff9c\031\uff9c\032\uff9c\033\uff9c\034\uff9c\040\uff9c\041" +
    "\uff9c\042\uff9c\043\uff9c\045\uff9c\046\uff9c\047\uff9c\064\uff9c" +
    "\065\uff9c\066\uff9c\067\uff9c\070\uff9c\001\002\000\054\010" +
    "\uffa0\011\uffa0\026\uffa0\027\uffa0\030\uffa0\031\uffa0\032\uffa0" +
    "\033\uffa0\034\uffa0\040\uffa0\041\uffa0\042\uffa0\043\uffa0\045" +
    "\uffa0\046\uffa0\047\uffa0\064\uffa0\065\uffa0\066\uffa0\067\uffa0" +
    "\070\uffa0\001\002\000\054\010\uffa8\011\uffa8\026\uffa8\027" +
    "\uffa8\030\uffa8\031\uffa8\032\uffa8\033\uffa8\034\uffa8\040\uffa8" +
    "\041\uffa8\042\uffa8\043\uffa8\045\uffa8\046\uffa8\047\uffa8\064" +
    "\uffa8\065\uffa8\066\uffa8\067\uffa8\070\uffa8\001\002\000\054" +
    "\010\uffa2\011\uffa2\026\uffa2\027\uffa2\030\uffa2\031\uffa2\032" +
    "\uffa2\033\uffa2\034\uffa2\040\uffa2\041\uffa2\042\uffa2\043\uffa2" +
    "\045\uffa2\046\uffa2\047\uffa2\064\uffa2\065\uffa2\066\uffa2\067" +
    "\uffa2\070\uffa2\001\002\000\044\010\054\026\032\027\036" +
    "\030\021\031\051\032\024\033\044\034\040\040\027\041" +
    "\053\042\026\043\030\064\061\065\064\066\062\067\056" +
    "\070\055\001\002\000\054\010\uff9e\011\uff9e\026\uff9e\027" +
    "\uff9e\030\uff9e\031\uff9e\032\uff9e\033\uff9e\034\uff9e\040\uff9e" +
    "\041\uff9e\042\uff9e\043\uff9e\045\uff9e\046\uff9e\047\uff9e\064" +
    "\uff9e\065\uff9e\066\uff9e\067\uff9e\070\uff9e\001\002\000\054" +
    "\010\054\011\103\026\032\027\036\030\021\031\051\032" +
    "\024\033\044\034\040\040\027\041\053\042\026\043\030" +
    "\045\102\046\077\047\072\064\061\065\100\066\075\067" +
    "\073\070\071\001\002\000\112\004\uffc9\005\uffc9\007\uffc9" +
    "\010\uffc9\011\uffc9\025\uffc9\026\uffc9\027\uffc9\030\uffc9\031" +
    "\uffc9\032\uffc9\033\uffc9\034\uffc9\036\uffc9\037\uffc9\040\uffc9" +
    "\041\uffc9\042\uffc9\043\uffc9\045\uffc9\046\uffc9\047\uffc9\053" +
    "\uffc9\054\uffc9\055\uffc9\056\uffc9\057\uffc9\060\uffc9\061\uffc9" +
    "\062\uffc9\063\uffc9\064\uffc9\065\uffc9\066\uffc9\067\uffc9\070" +
    "\uffc9\001\002\000\054\010\uffa5\011\uffa5\026\uffa5\027\uffa5" +
    "\030\uffa5\031\uffa5\032\uffa5\033\uffa5\034\uffa5\040\uffa5\041" +
    "\uffa5\042\uffa5\043\uffa5\045\uffa5\046\uffa5\047\uffa5\064\uffa5" +
    "\065\uffa5\066\uffa5\067\uffa5\070\uffa5\001\002\000\046\010" +
    "\054\012\116\026\032\027\036\030\021\031\051\032\024" +
    "\033\044\034\040\040\027\041\053\042\026\043\030\064" +
    "\061\065\064\066\062\067\056\070\055\001\002\000\054" +
    "\010\uffa7\011\uffa7\026\uffa7\027\uffa7\030\uffa7\031\uffa7\032" +
    "\uffa7\033\uffa7\034\uffa7\040\uffa7\041\uffa7\042\uffa7\043\uffa7" +
    "\045\uffa7\046\uffa7\047\uffa7\064\uffa7\065\uffa7\066\uffa7\067" +
    "\uffa7\070\uffa7\001\002\000\054\010\uffab\011\uffab\026\uffab" +
    "\027\uffab\030\uffab\031\uffab\032\uffab\033\uffab\034\uffab\040" +
    "\uffab\041\uffab\042\uffab\043\uffab\045\uffab\046\uffab\047\uffab" +
    "\064\uffab\065\uffab\066\uffab\067\uffab\070\uffab\001\002\000" +
    "\054\010\uffa1\011\uffa1\026\uffa1\027\uffa1\030\uffa1\031\uffa1" +
    "\032\uffa1\033\uffa1\034\uffa1\040\uffa1\041\uffa1\042\uffa1\043" +
    "\uffa1\045\uffa1\046\uffa1\047\uffa1\064\uffa1\065\uffa1\066\uffa1" +
    "\067\uffa1\070\uffa1\001\002\000\054\010\uffa9\011\uffa9\026" +
    "\uffa9\027\uffa9\030\uffa9\031\uffa9\032\uffa9\033\uffa9\034\uffa9" +
    "\040\uffa9\041\uffa9\042\uffa9\043\uffa9\045\uffa9\046\uffa9\047" +
    "\uffa9\064\uffa9\065\uffa9\066\uffa9\067\uffa9\070\uffa9\001\002" +
    "\000\046\010\054\012\111\026\032\027\036\030\021\031" +
    "\051\032\024\033\044\034\040\040\027\041\053\042\026" +
    "\043\030\064\061\065\064\066\062\067\056\070\055\001" +
    "\002\000\054\010\uffa3\011\uffa3\026\uffa3\027\uffa3\030\uffa3" +
    "\031\uffa3\032\uffa3\033\uffa3\034\uffa3\040\uffa3\041\uffa3\042" +
    "\uffa3\043\uffa3\045\uffa3\046\uffa3\047\uffa3\064\uffa3\065\uffa3" +
    "\066\uffa3\067\uffa3\070\uffa3\001\002\000\054\010\uff9f\011" +
    "\uff9f\026\uff9f\027\uff9f\030\uff9f\031\uff9f\032\uff9f\033\uff9f" +
    "\034\uff9f\040\uff9f\041\uff9f\042\uff9f\043\uff9f\045\uff9f\046" +
    "\uff9f\047\uff9f\064\uff9f\065\uff9f\066\uff9f\067\uff9f\070\uff9f" +
    "\001\002\000\046\010\054\012\104\026\032\027\036\030" +
    "\021\031\051\032\024\033\044\034\040\040\027\041\053" +
    "\042\026\043\030\064\061\065\064\066\062\067\056\070" +
    "\055\001\002\000\112\004\uffc8\005\uffc8\007\uffc8\010\uffc8" +
    "\011\uffc8\025\uffc8\026\uffc8\027\uffc8\030\uffc8\031\uffc8\032" +
    "\uffc8\033\uffc8\034\uffc8\036\uffc8\037\uffc8\040\uffc8\041\uffc8" +
    "\042\uffc8\043\uffc8\045\uffc8\046\uffc8\047\uffc8\053\uffc8\054" +
    "\uffc8\055\uffc8\056\uffc8\057\uffc8\060\uffc8\061\uffc8\062\uffc8" +
    "\063\uffc8\064\uffc8\065\uffc8\066\uffc8\067\uffc8\070\uffc8\001" +
    "\002\000\044\010\054\026\032\027\036\030\021\031\051" +
    "\032\024\033\044\034\040\040\027\041\053\042\026\043" +
    "\030\064\061\065\064\066\062\067\056\070\055\001\002" +
    "\000\046\010\054\011\106\026\032\027\036\030\021\031" +
    "\051\032\024\033\044\034\040\040\027\041\053\042\026" +
    "\043\030\064\061\065\100\066\075\067\073\070\071\001" +
    "\002\000\112\004\uffc3\005\uffc3\007\uffc3\010\uffc3\011\uffc3" +
    "\025\uffc3\026\uffc3\027\uffc3\030\uffc3\031\uffc3\032\uffc3\033" +
    "\uffc3\034\uffc3\036\uffc3\037\uffc3\040\uffc3\041\uffc3\042\uffc3" +
    "\043\uffc3\045\uffc3\046\uffc3\047\uffc3\053\uffc3\054\uffc3\055" +
    "\uffc3\056\uffc3\057\uffc3\060\uffc3\061\uffc3\062\uffc3\063\uffc3" +
    "\064\uffc3\065\uffc3\066\uffc3\067\uffc3\070\uffc3\001\002\000" +
    "\046\010\054\011\110\026\032\027\036\030\021\031\051" +
    "\032\024\033\044\034\040\040\027\041\053\042\026\043" +
    "\030\064\061\065\100\066\075\067\073\070\071\001\002" +
    "\000\112\004\uffc1\005\uffc1\007\uffc1\010\uffc1\011\uffc1\025" +
    "\uffc1\026\uffc1\027\uffc1\030\uffc1\031\uffc1\032\uffc1\033\uffc1" +
    "\034\uffc1\036\uffc1\037\uffc1\040\uffc1\041\uffc1\042\uffc1\043" +
    "\uffc1\045\uffc1\046\uffc1\047\uffc1\053\uffc1\054\uffc1\055\uffc1" +
    "\056\uffc1\057\uffc1\060\uffc1\061\uffc1\062\uffc1\063\uffc1\064" +
    "\uffc1\065\uffc1\066\uffc1\067\uffc1\070\uffc1\001\002\000\044" +
    "\010\054\026\032\027\036\030\021\031\051\032\024\033" +
    "\044\034\040\040\027\041\053\042\026\043\030\064\061" +
    "\065\064\066\062\067\056\070\055\001\002\000\046\010" +
    "\054\011\113\026\032\027\036\030\021\031\051\032\024" +
    "\033\044\034\040\040\027\041\053\042\026\043\030\064" +
    "\061\065\100\066\075\067\073\070\071\001\002\000\112" +
    "\004\uffbb\005\uffbb\007\uffbb\010\uffbb\011\uffbb\025\uffbb\026" +
    "\uffbb\027\uffbb\030\uffbb\031\uffbb\032\uffbb\033\uffbb\034\uffbb" +
    "\036\uffbb\037\uffbb\040\uffbb\041\uffbb\042\uffbb\043\uffbb\045" +
    "\uffbb\046\uffbb\047\uffbb\053\uffbb\054\uffbb\055\uffbb\056\uffbb" +
    "\057\uffbb\060\uffbb\061\uffbb\062\uffbb\063\uffbb\064\uffbb\065" +
    "\uffbb\066\uffbb\067\uffbb\070\uffbb\001\002\000\046\010\054" +
    "\011\115\026\032\027\036\030\021\031\051\032\024\033" +
    "\044\034\040\040\027\041\053\042\026\043\030\064\061" +
    "\065\100\066\075\067\073\070\071\001\002\000\112\004" +
    "\uffb9\005\uffb9\007\uffb9\010\uffb9\011\uffb9\025\uffb9\026\uffb9" +
    "\027\uffb9\030\uffb9\031\uffb9\032\uffb9\033\uffb9\034\uffb9\036" +
    "\uffb9\037\uffb9\040\uffb9\041\uffb9\042\uffb9\043\uffb9\045\uffb9" +
    "\046\uffb9\047\uffb9\053\uffb9\054\uffb9\055\uffb9\056\uffb9\057" +
    "\uffb9\060\uffb9\061\uffb9\062\uffb9\063\uffb9\064\uffb9\065\uffb9" +
    "\066\uffb9\067\uffb9\070\uffb9\001\002\000\044\010\054\026" +
    "\032\027\036\030\021\031\051\032\024\033\044\034\040" +
    "\040\027\041\053\042\026\043\030\064\061\065\064\066" +
    "\062\067\056\070\055\001\002\000\046\010\054\011\120" +
    "\026\032\027\036\030\021\031\051\032\024\033\044\034" +
    "\040\040\027\041\053\042\026\043\030\064\061\065\100" +
    "\066\075\067\073\070\071\001\002\000\112\004\uffb3\005" +
    "\uffb3\007\uffb3\010\uffb3\011\uffb3\025\uffb3\026\uffb3\027\uffb3" +
    "\030\uffb3\031\uffb3\032\uffb3\033\uffb3\034\uffb3\036\uffb3\037" +
    "\uffb3\040\uffb3\041\uffb3\042\uffb3\043\uffb3\045\uffb3\046\uffb3" +
    "\047\uffb3\053\uffb3\054\uffb3\055\uffb3\056\uffb3\057\uffb3\060" +
    "\uffb3\061\uffb3\062\uffb3\063\uffb3\064\uffb3\065\uffb3\066\uffb3" +
    "\067\uffb3\070\uffb3\001\002\000\046\010\054\011\122\026" +
    "\032\027\036\030\021\031\051\032\024\033\044\034\040" +
    "\040\027\041\053\042\026\043\030\064\061\065\100\066" +
    "\075\067\073\070\071\001\002\000\112\004\uffb1\005\uffb1" +
    "\007\uffb1\010\uffb1\011\uffb1\025\uffb1\026\uffb1\027\uffb1\030" +
    "\uffb1\031\uffb1\032\uffb1\033\uffb1\034\uffb1\036\uffb1\037\uffb1" +
    "\040\uffb1\041\uffb1\042\uffb1\043\uffb1\045\uffb1\046\uffb1\047" +
    "\uffb1\053\uffb1\054\uffb1\055\uffb1\056\uffb1\057\uffb1\060\uffb1" +
    "\061\uffb1\062\uffb1\063\uffb1\064\uffb1\065\uffb1\066\uffb1\067" +
    "\uffb1\070\uffb1\001\002\000\054\010\054\011\127\026\032" +
    "\027\036\030\021\031\051\032\024\033\044\034\040\040" +
    "\027\041\053\042\026\043\030\045\126\046\125\047\124" +
    "\064\061\065\100\066\075\067\073\070\071\001\002\000" +
    "\046\010\054\012\142\026\032\027\036\030\021\031\051" +
    "\032\024\033\044\034\040\040\027\041\053\042\026\043" +
    "\030\064\061\065\064\066\062\067\056\070\055\001\002" +
    "\000\046\010\054\012\135\026\032\027\036\030\021\031" +
    "\051\032\024\033\044\034\040\040\027\041\053\042\026" +
    "\043\030\064\061\065\064\066\062\067\056\070\055\001" +
    "\002\000\046\010\054\012\130\026\032\027\036\030\021" +
    "\031\051\032\024\033\044\034\040\040\027\041\053\042" +
    "\026\043\030\064\061\065\064\066\062\067\056\070\055" +
    "\001\002\000\112\004\uffc5\005\uffc5\007\uffc5\010\uffc5\011" +
    "\uffc5\025\uffc5\026\uffc5\027\uffc5\030\uffc5\031\uffc5\032\uffc5" +
    "\033\uffc5\034\uffc5\036\uffc5\037\uffc5\040\uffc5\041\uffc5\042" +
    "\uffc5\043\uffc5\045\uffc5\046\uffc5\047\uffc5\053\uffc5\054\uffc5" +
    "\055\uffc5\056\uffc5\057\uffc5\060\uffc5\061\uffc5\062\uffc5\063" +
    "\uffc5\064\uffc5\065\uffc5\066\uffc5\067\uffc5\070\uffc5\001\002" +
    "\000\044\010\054\026\032\027\036\030\021\031\051\032" +
    "\024\033\044\034\040\040\027\041\053\042\026\043\030" +
    "\064\061\065\064\066\062\067\056\070\055\001\002\000" +
    "\046\010\054\011\132\026\032\027\036\030\021\031\051" +
    "\032\024\033\044\034\040\040\027\041\053\042\026\043" +
    "\030\064\061\065\100\066\075\067\073\070\071\001\002" +
    "\000\112\004\uffc2\005\uffc2\007\uffc2\010\uffc2\011\uffc2\025" +
    "\uffc2\026\uffc2\027\uffc2\030\uffc2\031\uffc2\032\uffc2\033\uffc2" +
    "\034\uffc2\036\uffc2\037\uffc2\040\uffc2\041\uffc2\042\uffc2\043" +
    "\uffc2\045\uffc2\046\uffc2\047\uffc2\053\uffc2\054\uffc2\055\uffc2" +
    "\056\uffc2\057\uffc2\060\uffc2\061\uffc2\062\uffc2\063\uffc2\064" +
    "\uffc2\065\uffc2\066\uffc2\067\uffc2\070\uffc2\001\002\000\046" +
    "\010\054\011\134\026\032\027\036\030\021\031\051\032" +
    "\024\033\044\034\040\040\027\041\053\042\026\043\030" +
    "\064\061\065\100\066\075\067\073\070\071\001\002\000" +
    "\112\004\uffc0\005\uffc0\007\uffc0\010\uffc0\011\uffc0\025\uffc0" +
    "\026\uffc0\027\uffc0\030\uffc0\031\uffc0\032\uffc0\033\uffc0\034" +
    "\uffc0\036\uffc0\037\uffc0\040\uffc0\041\uffc0\042\uffc0\043\uffc0" +
    "\045\uffc0\046\uffc0\047\uffc0\053\uffc0\054\uffc0\055\uffc0\056" +
    "\uffc0\057\uffc0\060\uffc0\061\uffc0\062\uffc0\063\uffc0\064\uffc0" +
    "\065\uffc0\066\uffc0\067\uffc0\070\uffc0\001\002\000\044\010" +
    "\054\026\032\027\036\030\021\031\051\032\024\033\044" +
    "\034\040\040\027\041\053\042\026\043\030\064\061\065" +
    "\064\066\062\067\056\070\055\001\002\000\046\010\054" +
    "\011\137\026\032\027\036\030\021\031\051\032\024\033" +
    "\044\034\040\040\027\041\053\042\026\043\030\064\061" +
    "\065\100\066\075\067\073\070\071\001\002\000\112\004" +
    "\uffba\005\uffba\007\uffba\010\uffba\011\uffba\025\uffba\026\uffba" +
    "\027\uffba\030\uffba\031\uffba\032\uffba\033\uffba\034\uffba\036" +
    "\uffba\037\uffba\040\uffba\041\uffba\042\uffba\043\uffba\045\uffba" +
    "\046\uffba\047\uffba\053\uffba\054\uffba\055\uffba\056\uffba\057" +
    "\uffba\060\uffba\061\uffba\062\uffba\063\uffba\064\uffba\065\uffba" +
    "\066\uffba\067\uffba\070\uffba\001\002\000\046\010\054\011" +
    "\141\026\032\027\036\030\021\031\051\032\024\033\044" +
    "\034\040\040\027\041\053\042\026\043\030\064\061\065" +
    "\100\066\075\067\073\070\071\001\002\000\112\004\uffb8" +
    "\005\uffb8\007\uffb8\010\uffb8\011\uffb8\025\uffb8\026\uffb8\027" +
    "\uffb8\030\uffb8\031\uffb8\032\uffb8\033\uffb8\034\uffb8\036\uffb8" +
    "\037\uffb8\040\uffb8\041\uffb8\042\uffb8\043\uffb8\045\uffb8\046" +
    "\uffb8\047\uffb8\053\uffb8\054\uffb8\055\uffb8\056\uffb8\057\uffb8" +
    "\060\uffb8\061\uffb8\062\uffb8\063\uffb8\064\uffb8\065\uffb8\066" +
    "\uffb8\067\uffb8\070\uffb8\001\002\000\044\010\054\026\032" +
    "\027\036\030\021\031\051\032\024\033\044\034\040\040" +
    "\027\041\053\042\026\043\030\064\061\065\064\066\062" +
    "\067\056\070\055\001\002\000\046\010\054\011\144\026" +
    "\032\027\036\030\021\031\051\032\024\033\044\034\040" +
    "\040\027\041\053\042\026\043\030\064\061\065\100\066" +
    "\075\067\073\070\071\001\002\000\112\004\uffb2\005\uffb2" +
    "\007\uffb2\010\uffb2\011\uffb2\025\uffb2\026\uffb2\027\uffb2\030" +
    "\uffb2\031\uffb2\032\uffb2\033\uffb2\034\uffb2\036\uffb2\037\uffb2" +
    "\040\uffb2\041\uffb2\042\uffb2\043\uffb2\045\uffb2\046\uffb2\047" +
    "\uffb2\053\uffb2\054\uffb2\055\uffb2\056\uffb2\057\uffb2\060\uffb2" +
    "\061\uffb2\062\uffb2\063\uffb2\064\uffb2\065\uffb2\066\uffb2\067" +
    "\uffb2\070\uffb2\001\002\000\046\010\054\011\146\026\032" +
    "\027\036\030\021\031\051\032\024\033\044\034\040\040" +
    "\027\041\053\042\026\043\030\064\061\065\100\066\075" +
    "\067\073\070\071\001\002\000\112\004\uffb0\005\uffb0\007" +
    "\uffb0\010\uffb0\011\uffb0\025\uffb0\026\uffb0\027\uffb0\030\uffb0" +
    "\031\uffb0\032\uffb0\033\uffb0\034\uffb0\036\uffb0\037\uffb0\040" +
    "\uffb0\041\uffb0\042\uffb0\043\uffb0\045\uffb0\046\uffb0\047\uffb0" +
    "\053\uffb0\054\uffb0\055\uffb0\056\uffb0\057\uffb0\060\uffb0\061" +
    "\uffb0\062\uffb0\063\uffb0\064\uffb0\065\uffb0\066\uffb0\067\uffb0" +
    "\070\uffb0\001\002\000\004\064\150\001\002\000\054\010" +
    "\uff9d\011\uff9d\026\uff9d\027\uff9d\030\uff9d\031\uff9d\032\uff9d" +
    "\033\uff9d\034\uff9d\040\uff9d\041\uff9d\042\uff9d\043\uff9d\045" +
    "\uff9d\046\uff9d\047\uff9d\064\uff9d\065\uff9d\066\uff9d\067\uff9d" +
    "\070\uff9d\001\002\000\044\010\054\026\032\027\036\030" +
    "\021\031\051\032\024\033\044\034\040\040\027\041\053" +
    "\042\026\043\030\064\061\065\064\066\062\067\056\070" +
    "\055\001\002\000\054\010\054\011\157\026\032\027\036" +
    "\030\021\031\051\032\024\033\044\034\040\040\027\041" +
    "\053\042\026\043\030\045\156\046\155\047\154\064\061" +
    "\065\100\066\075\067\073\070\071\001\002\000\112\004" +
    "\uffc7\005\uffc7\007\uffc7\010\uffc7\011\uffc7\025\uffc7\026\uffc7" +
    "\027\uffc7\030\uffc7\031\uffc7\032\uffc7\033\uffc7\034\uffc7\036" +
    "\uffc7\037\uffc7\040\uffc7\041\uffc7\042\uffc7\043\uffc7\045\uffc7" +
    "\046\uffc7\047\uffc7\053\uffc7\054\uffc7\055\uffc7\056\uffc7\057" +
    "\uffc7\060\uffc7\061\uffc7\062\uffc7\063\uffc7\064\uffc7\065\uffc7" +
    "\066\uffc7\067\uffc7\070\uffc7\001\002\000\046\010\054\012" +
    "\172\026\032\027\036\030\021\031\051\032\024\033\044" +
    "\034\040\040\027\041\053\042\026\043\030\064\061\065" +
    "\064\066\062\067\056\070\055\001\002\000\046\010\054" +
    "\012\165\026\032\027\036\030\021\031\051\032\024\033" +
    "\044\034\040\040\027\041\053\042\026\043\030\064\061" +
    "\065\064\066\062\067\056\070\055\001\002\000\046\010" +
    "\054\012\160\026\032\027\036\030\021\031\051\032\024" +
    "\033\044\034\040\040\027\041\053\042\026\043\030\064" +
    "\061\065\064\066\062\067\056\070\055\001\002\000\112" +
    "\004\uffc6\005\uffc6\007\uffc6\010\uffc6\011\uffc6\025\uffc6\026" +
    "\uffc6\027\uffc6\030\uffc6\031\uffc6\032\uffc6\033\uffc6\034\uffc6" +
    "\036\uffc6\037\uffc6\040\uffc6\041\uffc6\042\uffc6\043\uffc6\045" +
    "\uffc6\046\uffc6\047\uffc6\053\uffc6\054\uffc6\055\uffc6\056\uffc6" +
    "\057\uffc6\060\uffc6\061\uffc6\062\uffc6\063\uffc6\064\uffc6\065" +
    "\uffc6\066\uffc6\067\uffc6\070\uffc6\001\002\000\044\010\054" +
    "\026\032\027\036\030\021\031\051\032\024\033\044\034" +
    "\040\040\027\041\053\042\026\043\030\064\061\065\064" +
    "\066\062\067\056\070\055\001\002\000\046\010\054\011" +
    "\162\026\032\027\036\030\021\031\051\032\024\033\044" +
    "\034\040\040\027\041\053\042\026\043\030\064\061\065" +
    "\100\066\075\067\073\070\071\001\002\000\112\004\uffbf" +
    "\005\uffbf\007\uffbf\010\uffbf\011\uffbf\025\uffbf\026\uffbf\027" +
    "\uffbf\030\uffbf\031\uffbf\032\uffbf\033\uffbf\034\uffbf\036\uffbf" +
    "\037\uffbf\040\uffbf\041\uffbf\042\uffbf\043\uffbf\045\uffbf\046" +
    "\uffbf\047\uffbf\053\uffbf\054\uffbf\055\uffbf\056\uffbf\057\uffbf" +
    "\060\uffbf\061\uffbf\062\uffbf\063\uffbf\064\uffbf\065\uffbf\066" +
    "\uffbf\067\uffbf\070\uffbf\001\002\000\046\010\054\011\164" +
    "\026\032\027\036\030\021\031\051\032\024\033\044\034" +
    "\040\040\027\041\053\042\026\043\030\064\061\065\100" +
    "\066\075\067\073\070\071\001\002\000\112\004\uffbd\005" +
    "\uffbd\007\uffbd\010\uffbd\011\uffbd\025\uffbd\026\uffbd\027\uffbd" +
    "\030\uffbd\031\uffbd\032\uffbd\033\uffbd\034\uffbd\036\uffbd\037" +
    "\uffbd\040\uffbd\041\uffbd\042\uffbd\043\uffbd\045\uffbd\046\uffbd" +
    "\047\uffbd\053\uffbd\054\uffbd\055\uffbd\056\uffbd\057\uffbd\060" +
    "\uffbd\061\uffbd\062\uffbd\063\uffbd\064\uffbd\065\uffbd\066\uffbd" +
    "\067\uffbd\070\uffbd\001\002\000\044\010\054\026\032\027" +
    "\036\030\021\031\051\032\024\033\044\034\040\040\027" +
    "\041\053\042\026\043\030\064\061\065\064\066\062\067" +
    "\056\070\055\001\002\000\046\010\054\011\167\026\032" +
    "\027\036\030\021\031\051\032\024\033\044\034\040\040" +
    "\027\041\053\042\026\043\030\064\061\065\100\066\075" +
    "\067\073\070\071\001\002\000\112\004\uffb7\005\uffb7\007" +
    "\uffb7\010\uffb7\011\uffb7\025\uffb7\026\uffb7\027\uffb7\030\uffb7" +
    "\031\uffb7\032\uffb7\033\uffb7\034\uffb7\036\uffb7\037\uffb7\040" +
    "\uffb7\041\uffb7\042\uffb7\043\uffb7\045\uffb7\046\uffb7\047\uffb7" +
    "\053\uffb7\054\uffb7\055\uffb7\056\uffb7\057\uffb7\060\uffb7\061" +
    "\uffb7\062\uffb7\063\uffb7\064\uffb7\065\uffb7\066\uffb7\067\uffb7" +
    "\070\uffb7\001\002\000\046\010\054\011\171\026\032\027" +
    "\036\030\021\031\051\032\024\033\044\034\040\040\027" +
    "\041\053\042\026\043\030\064\061\065\100\066\075\067" +
    "\073\070\071\001\002\000\112\004\uffb5\005\uffb5\007\uffb5" +
    "\010\uffb5\011\uffb5\025\uffb5\026\uffb5\027\uffb5\030\uffb5\031" +
    "\uffb5\032\uffb5\033\uffb5\034\uffb5\036\uffb5\037\uffb5\040\uffb5" +
    "\041\uffb5\042\uffb5\043\uffb5\045\uffb5\046\uffb5\047\uffb5\053" +
    "\uffb5\054\uffb5\055\uffb5\056\uffb5\057\uffb5\060\uffb5\061\uffb5" +
    "\062\uffb5\063\uffb5\064\uffb5\065\uffb5\066\uffb5\067\uffb5\070" +
    "\uffb5\001\002\000\044\010\054\026\032\027\036\030\021" +
    "\031\051\032\024\033\044\034\040\040\027\041\053\042" +
    "\026\043\030\064\061\065\064\066\062\067\056\070\055" +
    "\001\002\000\046\010\054\011\174\026\032\027\036\030" +
    "\021\031\051\032\024\033\044\034\040\040\027\041\053" +
    "\042\026\043\030\064\061\065\100\066\075\067\073\070" +
    "\071\001\002\000\112\004\uffaf\005\uffaf\007\uffaf\010\uffaf" +
    "\011\uffaf\025\uffaf\026\uffaf\027\uffaf\030\uffaf\031\uffaf\032" +
    "\uffaf\033\uffaf\034\uffaf\036\uffaf\037\uffaf\040\uffaf\041\uffaf" +
    "\042\uffaf\043\uffaf\045\uffaf\046\uffaf\047\uffaf\053\uffaf\054" +
    "\uffaf\055\uffaf\056\uffaf\057\uffaf\060\uffaf\061\uffaf\062\uffaf" +
    "\063\uffaf\064\uffaf\065\uffaf\066\uffaf\067\uffaf\070\uffaf\001" +
    "\002\000\046\010\054\011\176\026\032\027\036\030\021" +
    "\031\051\032\024\033\044\034\040\040\027\041\053\042" +
    "\026\043\030\064\061\065\100\066\075\067\073\070\071" +
    "\001\002\000\112\004\uffad\005\uffad\007\uffad\010\uffad\011" +
    "\uffad\025\uffad\026\uffad\027\uffad\030\uffad\031\uffad\032\uffad" +
    "\033\uffad\034\uffad\036\uffad\037\uffad\040\uffad\041\uffad\042" +
    "\uffad\043\uffad\045\uffad\046\uffad\047\uffad\053\uffad\054\uffad" +
    "\055\uffad\056\uffad\057\uffad\060\uffad\061\uffad\062\uffad\063" +
    "\uffad\064\uffad\065\uffad\066\uffad\067\uffad\070\uffad\001\002" +
    "\000\054\010\054\011\203\026\032\027\036\030\021\031" +
    "\051\032\024\033\044\034\040\040\027\041\053\042\026" +
    "\043\030\045\202\046\201\047\200\064\061\065\100\066" +
    "\075\067\073\070\071\001\002\000\046\010\054\012\216" +
    "\026\032\027\036\030\021\031\051\032\024\033\044\034" +
    "\040\040\027\041\053\042\026\043\030\064\061\065\064" +
    "\066\062\067\056\070\055\001\002\000\046\010\054\012" +
    "\211\026\032\027\036\030\021\031\051\032\024\033\044" +
    "\034\040\040\027\041\053\042\026\043\030\064\061\065" +
    "\064\066\062\067\056\070\055\001\002\000\046\010\054" +
    "\012\204\026\032\027\036\030\021\031\051\032\024\033" +
    "\044\034\040\040\027\041\053\042\026\043\030\064\061" +
    "\065\064\066\062\067\056\070\055\001\002\000\112\004" +
    "\uffc4\005\uffc4\007\uffc4\010\uffc4\011\uffc4\025\uffc4\026\uffc4" +
    "\027\uffc4\030\uffc4\031\uffc4\032\uffc4\033\uffc4\034\uffc4\036" +
    "\uffc4\037\uffc4\040\uffc4\041\uffc4\042\uffc4\043\uffc4\045\uffc4" +
    "\046\uffc4\047\uffc4\053\uffc4\054\uffc4\055\uffc4\056\uffc4\057" +
    "\uffc4\060\uffc4\061\uffc4\062\uffc4\063\uffc4\064\uffc4\065\uffc4" +
    "\066\uffc4\067\uffc4\070\uffc4\001\002\000\044\010\054\026" +
    "\032\027\036\030\021\031\051\032\024\033\044\034\040" +
    "\040\027\041\053\042\026\043\030\064\061\065\064\066" +
    "\062\067\056\070\055\001\002\000\046\010\054\011\206" +
    "\026\032\027\036\030\021\031\051\032\024\033\044\034" +
    "\040\040\027\041\053\042\026\043\030\064\061\065\100" +
    "\066\075\067\073\070\071\001\002\000\112\004\uffbe\005" +
    "\uffbe\007\uffbe\010\uffbe\011\uffbe\025\uffbe\026\uffbe\027\uffbe" +
    "\030\uffbe\031\uffbe\032\uffbe\033\uffbe\034\uffbe\036\uffbe\037" +
    "\uffbe\040\uffbe\041\uffbe\042\uffbe\043\uffbe\045\uffbe\046\uffbe" +
    "\047\uffbe\053\uffbe\054\uffbe\055\uffbe\056\uffbe\057\uffbe\060" +
    "\uffbe\061\uffbe\062\uffbe\063\uffbe\064\uffbe\065\uffbe\066\uffbe" +
    "\067\uffbe\070\uffbe\001\002\000\046\010\054\011\210\026" +
    "\032\027\036\030\021\031\051\032\024\033\044\034\040" +
    "\040\027\041\053\042\026\043\030\064\061\065\100\066" +
    "\075\067\073\070\071\001\002\000\112\004\uffbc\005\uffbc" +
    "\007\uffbc\010\uffbc\011\uffbc\025\uffbc\026\uffbc\027\uffbc\030" +
    "\uffbc\031\uffbc\032\uffbc\033\uffbc\034\uffbc\036\uffbc\037\uffbc" +
    "\040\uffbc\041\uffbc\042\uffbc\043\uffbc\045\uffbc\046\uffbc\047" +
    "\uffbc\053\uffbc\054\uffbc\055\uffbc\056\uffbc\057\uffbc\060\uffbc" +
    "\061\uffbc\062\uffbc\063\uffbc\064\uffbc\065\uffbc\066\uffbc\067" +
    "\uffbc\070\uffbc\001\002\000\044\010\054\026\032\027\036" +
    "\030\021\031\051\032\024\033\044\034\040\040\027\041" +
    "\053\042\026\043\030\064\061\065\064\066\062\067\056" +
    "\070\055\001\002\000\046\010\054\011\213\026\032\027" +
    "\036\030\021\031\051\032\024\033\044\034\040\040\027" +
    "\041\053\042\026\043\030\064\061\065\100\066\075\067" +
    "\073\070\071\001\002\000\112\004\uffb6\005\uffb6\007\uffb6" +
    "\010\uffb6\011\uffb6\025\uffb6\026\uffb6\027\uffb6\030\uffb6\031" +
    "\uffb6\032\uffb6\033\uffb6\034\uffb6\036\uffb6\037\uffb6\040\uffb6" +
    "\041\uffb6\042\uffb6\043\uffb6\045\uffb6\046\uffb6\047\uffb6\053" +
    "\uffb6\054\uffb6\055\uffb6\056\uffb6\057\uffb6\060\uffb6\061\uffb6" +
    "\062\uffb6\063\uffb6\064\uffb6\065\uffb6\066\uffb6\067\uffb6\070" +
    "\uffb6\001\002\000\046\010\054\011\215\026\032\027\036" +
    "\030\021\031\051\032\024\033\044\034\040\040\027\041" +
    "\053\042\026\043\030\064\061\065\100\066\075\067\073" +
    "\070\071\001\002\000\112\004\uffb4\005\uffb4\007\uffb4\010" +
    "\uffb4\011\uffb4\025\uffb4\026\uffb4\027\uffb4\030\uffb4\031\uffb4" +
    "\032\uffb4\033\uffb4\034\uffb4\036\uffb4\037\uffb4\040\uffb4\041" +
    "\uffb4\042\uffb4\043\uffb4\045\uffb4\046\uffb4\047\uffb4\053\uffb4" +
    "\054\uffb4\055\uffb4\056\uffb4\057\uffb4\060\uffb4\061\uffb4\062" +
    "\uffb4\063\uffb4\064\uffb4\065\uffb4\066\uffb4\067\uffb4\070\uffb4" +
    "\001\002\000\044\010\054\026\032\027\036\030\021\031" +
    "\051\032\024\033\044\034\040\040\027\041\053\042\026" +
    "\043\030\064\061\065\064\066\062\067\056\070\055\001" +
    "\002\000\046\010\054\011\220\026\032\027\036\030\021" +
    "\031\051\032\024\033\044\034\040\040\027\041\053\042" +
    "\026\043\030\064\061\065\100\066\075\067\073\070\071" +
    "\001\002\000\112\004\uffae\005\uffae\007\uffae\010\uffae\011" +
    "\uffae\025\uffae\026\uffae\027\uffae\030\uffae\031\uffae\032\uffae" +
    "\033\uffae\034\uffae\036\uffae\037\uffae\040\uffae\041\uffae\042" +
    "\uffae\043\uffae\045\uffae\046\uffae\047\uffae\053\uffae\054\uffae" +
    "\055\uffae\056\uffae\057\uffae\060\uffae\061\uffae\062\uffae\063" +
    "\uffae\064\uffae\065\uffae\066\uffae\067\uffae\070\uffae\001\002" +
    "\000\046\010\054\011\222\026\032\027\036\030\021\031" +
    "\051\032\024\033\044\034\040\040\027\041\053\042\026" +
    "\043\030\064\061\065\100\066\075\067\073\070\071\001" +
    "\002\000\112\004\uffac\005\uffac\007\uffac\010\uffac\011\uffac" +
    "\025\uffac\026\uffac\027\uffac\030\uffac\031\uffac\032\uffac\033" +
    "\uffac\034\uffac\036\uffac\037\uffac\040\uffac\041\uffac\042\uffac" +
    "\043\uffac\045\uffac\046\uffac\047\uffac\053\uffac\054\uffac\055" +
    "\uffac\056\uffac\057\uffac\060\uffac\061\uffac\062\uffac\063\uffac" +
    "\064\uffac\065\uffac\066\uffac\067\uffac\070\uffac\001\002\000" +
    "\102\004\uffd8\005\uffd8\007\uffd8\010\uffd8\025\uffd8\026\uffd8" +
    "\027\uffd8\030\uffd8\031\uffd8\032\uffd8\033\uffd8\034\uffd8\036" +
    "\uffd8\037\uffd8\040\uffd8\041\uffd8\042\uffd8\043\uffd8\053\uffd8" +
    "\054\uffd8\055\uffd8\056\uffd8\057\uffd8\060\uffd8\061\uffd8\062" +
    "\uffd8\063\uffd8\064\uffd8\065\uffd8\066\uffd8\067\uffd8\070\uffd8" +
    "\001\002\000\102\004\uffd7\005\uffd7\007\uffd7\010\uffd7\025" +
    "\uffd7\026\uffd7\027\uffd7\030\uffd7\031\uffd7\032\uffd7\033\uffd7" +
    "\034\uffd7\036\uffd7\037\uffd7\040\uffd7\041\uffd7\042\uffd7\043" +
    "\uffd7\053\uffd7\054\uffd7\055\uffd7\056\uffd7\057\uffd7\060\uffd7" +
    "\061\uffd7\062\uffd7\063\uffd7\064\uffd7\065\uffd7\066\uffd7\067" +
    "\uffd7\070\uffd7\001\002\000\006\021\227\053\230\001\002" +
    "\000\102\004\uffd6\005\uffd6\007\uffd6\010\uffd6\025\uffd6\026" +
    "\uffd6\027\uffd6\030\uffd6\031\uffd6\032\uffd6\033\uffd6\034\uffd6" +
    "\036\uffd6\037\uffd6\040\uffd6\041\uffd6\042\uffd6\043\uffd6\053" +
    "\uffd6\054\uffd6\055\uffd6\056\uffd6\057\uffd6\060\uffd6\061\uffd6" +
    "\062\uffd6\063\uffd6\064\uffd6\065\uffd6\066\uffd6\067\uffd6\070" +
    "\uffd6\001\002\000\102\004\uffd5\005\uffd5\007\uffd5\010\uffd5" +
    "\025\uffd5\026\uffd5\027\uffd5\030\uffd5\031\uffd5\032\uffd5\033" +
    "\uffd5\034\uffd5\036\uffd5\037\uffd5\040\uffd5\041\uffd5\042\uffd5" +
    "\043\uffd5\053\uffd5\054\uffd5\055\uffd5\056\uffd5\057\uffd5\060" +
    "\uffd5\061\uffd5\062\uffd5\063\uffd5\064\uffd5\065\uffd5\066\uffd5" +
    "\067\uffd5\070\uffd5\001\002\000\004\021\231\001\002\000" +
    "\102\004\uffd4\005\uffd4\007\uffd4\010\uffd4\025\uffd4\026\uffd4" +
    "\027\uffd4\030\uffd4\031\uffd4\032\uffd4\033\uffd4\034\uffd4\036" +
    "\uffd4\037\uffd4\040\uffd4\041\uffd4\042\uffd4\043\uffd4\053\uffd4" +
    "\054\uffd4\055\uffd4\056\uffd4\057\uffd4\060\uffd4\061\uffd4\062" +
    "\uffd4\063\uffd4\064\uffd4\065\uffd4\066\uffd4\067\uffd4\070\uffd4" +
    "\001\002\000\072\004\uffda\005\uffda\007\uffda\010\uffda\025" +
    "\uffda\026\uffda\027\uffda\030\uffda\031\uffda\032\uffda\033\uffda" +
    "\034\uffda\036\uffda\037\uffda\040\uffda\041\uffda\042\uffda\043" +
    "\uffda\056\uffda\060\uffda\061\uffda\062\uffda\063\uffda\064\uffda" +
    "\065\uffda\066\uffda\067\uffda\070\uffda\001\002\000\006\005" +
    "\235\056\234\001\002\000\056\004\043\010\054\026\032" +
    "\027\036\030\021\031\051\032\024\033\044\034\040\040" +
    "\027\041\053\042\026\043\030\060\025\061\041\062\045" +
    "\063\031\064\023\065\037\066\034\067\022\070\020\001" +
    "\002\000\102\004\uffd3\005\uffd3\007\uffd3\010\uffd3\025\uffd3" +
    "\026\uffd3\027\uffd3\030\uffd3\031\uffd3\032\uffd3\033\uffd3\034" +
    "\uffd3\036\uffd3\037\uffd3\040\uffd3\041\uffd3\042\uffd3\043\uffd3" +
    "\053\uffd3\054\uffd3\055\uffd3\056\uffd3\057\uffd3\060\uffd3\061" +
    "\uffd3\062\uffd3\063\uffd3\064\uffd3\065\uffd3\066\uffd3\067\uffd3" +
    "\070\uffd3\001\002\000\072\004\043\005\uffe0\007\uffe0\010" +
    "\054\025\uffe0\026\032\027\036\030\021\031\051\032\024" +
    "\033\044\034\040\036\uffe0\037\uffe0\040\027\041\053\042" +
    "\026\043\030\056\uffe0\060\025\061\041\062\045\063\031" +
    "\064\023\065\037\066\034\067\022\070\020\001\002\000" +
    "\072\004\uffdd\005\uffdd\007\uffdd\010\uffdd\025\uffdd\026\uffdd" +
    "\027\uffdd\030\uffdd\031\uffdd\032\uffdd\033\uffdd\034\uffdd\036" +
    "\uffdd\037\uffdd\040\uffdd\041\uffdd\042\uffdd\043\uffdd\056\uffdd" +
    "\060\uffdd\061\uffdd\062\uffdd\063\uffdd\064\uffdd\065\uffdd\066" +
    "\uffdd\067\uffdd\070\uffdd\001\002\000\014\013\ufff8\022\ufff8" +
    "\023\ufff8\024\ufff8\051\ufff8\001\002\000\072\004\uffd9\005" +
    "\uffd9\007\uffd9\010\uffd9\025\uffd9\026\uffd9\027\uffd9\030\uffd9" +
    "\031\uffd9\032\uffd9\033\uffd9\034\uffd9\036\uffd9\037\uffd9\040" +
    "\uffd9\041\uffd9\042\uffd9\043\uffd9\056\uffd9\060\uffd9\061\uffd9" +
    "\062\uffd9\063\uffd9\064\uffd9\065\uffd9\066\uffd9\067\uffd9\070" +
    "\uffd9\001\002\000\074\002\uffee\003\uffee\004\uffee\006\uffee" +
    "\010\uffee\016\uffee\021\uffee\026\uffee\027\uffee\030\uffee\031" +
    "\uffee\032\uffee\033\uffee\034\uffee\035\uffee\040\uffee\041\uffee" +
    "\042\uffee\043\uffee\056\uffee\060\uffee\061\uffee\062\uffee\063" +
    "\uffee\064\uffee\065\uffee\066\uffee\067\uffee\070\uffee\001\002" +
    "\000\064\004\uffe1\006\270\010\uffe1\026\uffe1\027\uffe1\030" +
    "\uffe1\031\uffe1\032\uffe1\033\uffe1\034\uffe1\035\266\040\uffe1" +
    "\041\uffe1\042\uffe1\043\uffe1\056\uffe1\060\uffe1\061\uffe1\062" +
    "\uffe1\063\uffe1\064\uffe1\065\uffe1\066\uffe1\067\uffe1\070\uffe1" +
    "\001\002\000\004\051\252\001\002\000\074\002\ufff3\003" +
    "\ufff3\004\ufff3\006\ufff3\010\ufff3\016\ufff3\021\ufff3\026\ufff3" +
    "\027\ufff3\030\ufff3\031\ufff3\032\ufff3\033\ufff3\034\ufff3\035" +
    "\ufff3\040\ufff3\041\ufff3\042\ufff3\043\ufff3\056\ufff3\060\ufff3" +
    "\061\ufff3\062\ufff3\063\ufff3\064\ufff3\065\ufff3\066\ufff3\067" +
    "\ufff3\070\ufff3\001\002\000\072\002\000\003\242\004\uffe6" +
    "\006\uffe6\010\uffe6\016\247\026\uffe6\027\uffe6\030\uffe6\031" +
    "\uffe6\032\uffe6\033\uffe6\034\uffe6\035\uffe6\040\uffe6\041\uffe6" +
    "\042\uffe6\043\uffe6\056\uffe6\060\uffe6\061\uffe6\062\uffe6\063" +
    "\uffe6\064\uffe6\065\uffe6\066\uffe6\067\uffe6\070\uffe6\001\002" +
    "\000\004\051\252\001\002\000\074\002\ufff6\003\ufff6\004" +
    "\ufff6\006\ufff6\010\ufff6\016\ufff6\021\ufff6\026\ufff6\027\ufff6" +
    "\030\ufff6\031\ufff6\032\ufff6\033\ufff6\034\ufff6\035\ufff6\040" +
    "\ufff6\041\ufff6\042\ufff6\043\ufff6\056\ufff6\060\ufff6\061\ufff6" +
    "\062\ufff6\063\ufff6\064\ufff6\065\ufff6\066\ufff6\067\ufff6\070" +
    "\ufff6\001\002\000\004\017\255\001\002\000\006\015\253" +
    "\017\uffe4\001\002\000\006\017\uffe3\051\252\001\002\000" +
    "\004\017\uffe5\001\002\000\066\004\uffe7\006\uffe7\010\uffe7" +
    "\020\256\026\uffe7\027\uffe7\030\uffe7\031\uffe7\032\uffe7\033" +
    "\uffe7\034\uffe7\035\uffe7\040\uffe7\041\uffe7\042\uffe7\043\uffe7" +
    "\056\uffe7\060\uffe7\061\uffe7\062\uffe7\063\uffe7\064\uffe7\065" +
    "\uffe7\066\uffe7\067\uffe7\070\uffe7\001\002\000\070\003\242" +
    "\004\uffe6\006\uffe6\010\uffe6\016\244\026\uffe6\027\uffe6\030" +
    "\uffe6\031\uffe6\032\uffe6\033\uffe6\034\uffe6\035\uffe6\040\uffe6" +
    "\041\uffe6\042\uffe6\043\uffe6\056\uffe6\060\uffe6\061\uffe6\062" +
    "\uffe6\063\uffe6\064\uffe6\065\uffe6\066\uffe6\067\uffe6\070\uffe6" +
    "\001\002\000\072\003\242\004\uffe6\006\uffe6\010\uffe6\016" +
    "\247\021\260\026\uffe6\027\uffe6\030\uffe6\031\uffe6\032\uffe6" +
    "\033\uffe6\034\uffe6\035\uffe6\040\uffe6\041\uffe6\042\uffe6\043" +
    "\uffe6\056\uffe6\060\uffe6\061\uffe6\062\uffe6\063\uffe6\064\uffe6" +
    "\065\uffe6\066\uffe6\067\uffe6\070\uffe6\001\002\000\074\002" +
    "\ufff5\003\ufff5\004\ufff5\006\ufff5\010\ufff5\016\ufff5\021\ufff5" +
    "\026\ufff5\027\ufff5\030\ufff5\031\ufff5\032\ufff5\033\ufff5\034" +
    "\ufff5\035\ufff5\040\ufff5\041\ufff5\042\ufff5\043\ufff5\056\ufff5" +
    "\060\ufff5\061\ufff5\062\ufff5\063\ufff5\064\ufff5\065\ufff5\066" +
    "\ufff5\067\ufff5\070\ufff5\001\002\000\004\017\262\001\002" +
    "\000\066\004\uffe7\006\uffe7\010\uffe7\020\263\026\uffe7\027" +
    "\uffe7\030\uffe7\031\uffe7\032\uffe7\033\uffe7\034\uffe7\035\uffe7" +
    "\040\uffe7\041\uffe7\042\uffe7\043\uffe7\056\uffe7\060\uffe7\061" +
    "\uffe7\062\uffe7\063\uffe7\064\uffe7\065\uffe7\066\uffe7\067\uffe7" +
    "\070\uffe7\001\002\000\070\003\242\004\uffe6\006\uffe6\010" +
    "\uffe6\016\244\026\uffe6\027\uffe6\030\uffe6\031\uffe6\032\uffe6" +
    "\033\uffe6\034\uffe6\035\uffe6\040\uffe6\041\uffe6\042\uffe6\043" +
    "\uffe6\056\uffe6\060\uffe6\061\uffe6\062\uffe6\063\uffe6\064\uffe6" +
    "\065\uffe6\066\uffe6\067\uffe6\070\uffe6\001\002\000\072\003" +
    "\242\004\uffe6\006\uffe6\010\uffe6\016\247\021\265\026\uffe6" +
    "\027\uffe6\030\uffe6\031\uffe6\032\uffe6\033\uffe6\034\uffe6\035" +
    "\uffe6\040\uffe6\041\uffe6\042\uffe6\043\uffe6\056\uffe6\060\uffe6" +
    "\061\uffe6\062\uffe6\063\uffe6\064\uffe6\065\uffe6\066\uffe6\067" +
    "\uffe6\070\uffe6\001\002\000\074\002\ufff4\003\ufff4\004\ufff4" +
    "\006\ufff4\010\ufff4\016\ufff4\021\ufff4\026\ufff4\027\ufff4\030" +
    "\ufff4\031\ufff4\032\ufff4\033\ufff4\034\ufff4\035\ufff4\040\ufff4" +
    "\041\ufff4\042\ufff4\043\ufff4\056\ufff4\060\ufff4\061\ufff4\062" +
    "\ufff4\063\ufff4\064\ufff4\065\ufff4\066\ufff4\067\ufff4\070\ufff4" +
    "\001\002\000\004\050\306\001\002\000\060\004\043\010" +
    "\054\026\032\027\036\030\021\031\051\032\024\033\044" +
    "\034\040\040\027\041\053\042\026\043\030\056\050\060" +
    "\025\061\041\062\045\063\031\064\023\065\037\066\034" +
    "\067\022\070\020\001\002\000\060\004\uffe2\010\uffe2\026" +
    "\uffe2\027\uffe2\030\uffe2\031\uffe2\032\uffe2\033\uffe2\034\uffe2" +
    "\040\uffe2\041\uffe2\042\uffe2\043\uffe2\056\uffe2\060\uffe2\061" +
    "\uffe2\062\uffe2\063\uffe2\064\uffe2\065\uffe2\066\uffe2\067\uffe2" +
    "\070\uffe2\001\002\000\014\007\300\025\275\036\272\037" +
    "\274\056\234\001\002\000\074\002\uffe8\003\uffe8\004\uffe8" +
    "\006\uffe8\010\uffe8\016\uffe8\021\uffe8\026\uffe8\027\uffe8\030" +
    "\uffe8\031\uffe8\032\uffe8\033\uffe8\034\uffe8\035\uffe8\040\uffe8" +
    "\041\uffe8\042\uffe8\043\uffe8\056\uffe8\060\uffe8\061\uffe8\062" +
    "\uffe8\063\uffe8\064\uffe8\065\uffe8\066\uffe8\067\uffe8\070\uffe8" +
    "\001\002\000\074\002\uffe9\003\uffe9\004\uffe9\006\uffe9\010" +
    "\uffe9\016\uffe9\021\uffe9\026\uffe9\027\uffe9\030\uffe9\031\uffe9" +
    "\032\uffe9\033\uffe9\034\uffe9\035\uffe9\040\uffe9\041\uffe9\042" +
    "\uffe9\043\uffe9\056\uffe9\060\uffe9\061\uffe9\062\uffe9\063\uffe9" +
    "\064\uffe9\065\uffe9\066\uffe9\067\uffe9\070\uffe9\001\002\000" +
    "\060\004\043\010\054\026\032\027\036\030\021\031\051" +
    "\032\024\033\044\034\040\040\027\041\053\042\026\043" +
    "\030\056\050\060\025\061\041\062\045\063\031\064\023" +
    "\065\037\066\034\067\022\070\020\001\002\000\004\050" +
    "\303\001\002\000\006\025\275\036\301\001\002\000\074" +
    "\002\ufff2\003\ufff2\004\ufff2\006\ufff2\010\ufff2\016\ufff2\021" +
    "\ufff2\026\ufff2\027\ufff2\030\ufff2\031\ufff2\032\ufff2\033\ufff2" +
    "\034\ufff2\035\ufff2\040\ufff2\041\ufff2\042\ufff2\043\ufff2\056" +
    "\ufff2\060\ufff2\061\ufff2\062\ufff2\063\ufff2\064\ufff2\065\ufff2" +
    "\066\ufff2\067\ufff2\070\ufff2\001\002\000\006\025\uffed\036" +
    "\uffed\001\002\000\074\002\ufff0\003\ufff0\004\ufff0\006\ufff0" +
    "\010\ufff0\016\ufff0\021\ufff0\026\ufff0\027\ufff0\030\ufff0\031" +
    "\ufff0\032\ufff0\033\ufff0\034\ufff0\035\ufff0\040\ufff0\041\ufff0" +
    "\042\ufff0\043\ufff0\056\ufff0\060\ufff0\061\ufff0\062\ufff0\063" +
    "\ufff0\064\ufff0\065\ufff0\066\ufff0\067\ufff0\070\ufff0\001\002" +
    "\000\074\002\ufff1\003\ufff1\004\ufff1\006\ufff1\010\ufff1\016" +
    "\ufff1\021\ufff1\026\ufff1\027\ufff1\030\ufff1\031\ufff1\032\ufff1" +
    "\033\ufff1\034\ufff1\035\ufff1\040\ufff1\041\ufff1\042\ufff1\043" +
    "\ufff1\056\ufff1\060\ufff1\061\ufff1\062\ufff1\063\ufff1\064\ufff1" +
    "\065\ufff1\066\ufff1\067\ufff1\070\ufff1\001\002\000\074\002" +
    "\uffea\003\uffea\004\uffea\006\uffea\010\uffea\016\uffea\021\uffea" +
    "\026\uffea\027\uffea\030\uffea\031\uffea\032\uffea\033\uffea\034" +
    "\uffea\035\uffea\040\uffea\041\uffea\042\uffea\043\uffea\056\uffea" +
    "\060\uffea\061\uffea\062\uffea\063\uffea\064\uffea\065\uffea\066" +
    "\uffea\067\uffea\070\uffea\001\002\000\012\007\305\025\uffec" +
    "\036\uffec\056\234\001\002\000\006\025\uffeb\036\uffeb\001" +
    "\002\000\074\002\uffef\003\uffef\004\uffef\006\uffef\010\uffef" +
    "\016\uffef\021\uffef\026\uffef\027\uffef\030\uffef\031\uffef\032" +
    "\uffef\033\uffef\034\uffef\035\uffef\040\uffef\041\uffef\042\uffef" +
    "\043\uffef\056\uffef\060\uffef\061\uffef\062\uffef\063\uffef\064" +
    "\uffef\065\uffef\066\uffef\067\uffef\070\uffef\001\002" });

  /** Access to parse-action table. */
  public short[][] action_table() {return _action_table;}

  /** <code>reduce_goto</code> table. */
  protected static final short[][] _reduce_table = 
    unpackFromStrings(new String[] {
    "\000\304\000\004\005\004\001\001\000\004\002\007\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\004\003\012\001\001\000\002\001\001\000\010\004" +
    "\244\020\242\021\245\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\016\006" +
    "\034\007\041\010\046\011\051\012\045\016\032\001\001" +
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\012\010" +
    "\240\011\051\012\045\016\032\001\001\000\002\001\001" +
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\012\010\236\011\051\012\045\016\032\001" +
    "\001\000\016\006\232\007\041\010\046\011\051\012\045" +
    "\016\032\001\001\000\002\001\001\000\012\010\231\011" +
    "\051\012\045\016\032\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\012\012\065\014\056\015\066" +
    "\016\062\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\012\012\065\014\056\015\151\016\062" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\012\012\065\014\056\015\122" +
    "\016\062\001\001\000\002\001\001\000\010\012\100\014" +
    "\073\016\075\001\001\000\002\001\001\000\002\001\001" +
    "\000\012\012\065\014\056\015\116\016\062\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\012\012\065\014\056\015\111\016\062\001" +
    "\001\000\002\001\001\000\002\001\001\000\012\012\065" +
    "\014\056\015\104\016\062\001\001\000\002\001\001\000" +
    "\012\012\065\014\056\015\106\016\062\001\001\000\010" +
    "\012\100\014\073\016\075\001\001\000\002\001\001\000" +
    "\010\012\100\014\073\016\075\001\001\000\002\001\001" +
    "\000\012\012\065\014\056\015\113\016\062\001\001\000" +
    "\010\012\100\014\073\016\075\001\001\000\002\001\001" +
    "\000\010\012\100\014\073\016\075\001\001\000\002\001" +
    "\001\000\012\012\065\014\056\015\120\016\062\001\001" +
    "\000\010\012\100\014\073\016\075\001\001\000\002\001" +
    "\001\000\010\012\100\014\073\016\075\001\001\000\002" +
    "\001\001\000\010\012\100\014\073\016\075\001\001\000" +
    "\012\012\065\014\056\015\142\016\062\001\001\000\012" +
    "\012\065\014\056\015\135\016\062\001\001\000\012\012" +
    "\065\014\056\015\130\016\062\001\001\000\002\001\001" +
    "\000\012\012\065\014\056\015\132\016\062\001\001\000" +
    "\010\012\100\014\073\016\075\001\001\000\002\001\001" +
    "\000\010\012\100\014\073\016\075\001\001\000\002\001" +
    "\001\000\012\012\065\014\056\015\137\016\062\001\001" +
    "\000\010\012\100\014\073\016\075\001\001\000\002\001" +
    "\001\000\010\012\100\014\073\016\075\001\001\000\002" +
    "\001\001\000\012\012\065\014\056\015\144\016\062\001" +
    "\001\000\010\012\100\014\073\016\075\001\001\000\002" +
    "\001\001\000\010\012\100\014\073\016\075\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\012" +
    "\012\065\014\056\015\176\016\062\001\001\000\010\012" +
    "\100\014\073\016\075\001\001\000\002\001\001\000\012" +
    "\012\065\014\056\015\172\016\062\001\001\000\012\012" +
    "\065\014\056\015\165\016\062\001\001\000\012\012\065" +
    "\014\056\015\160\016\062\001\001\000\002\001\001\000" +
    "\012\012\065\014\056\015\162\016\062\001\001\000\010" +
    "\012\100\014\073\016\075\001\001\000\002\001\001\000" +
    "\010\012\100\014\073\016\075\001\001\000\002\001\001" +
    "\000\012\012\065\014\056\015\167\016\062\001\001\000" +
    "\010\012\100\014\073\016\075\001\001\000\002\001\001" +
    "\000\010\012\100\014\073\016\075\001\001\000\002\001" +
    "\001\000\012\012\065\014\056\015\174\016\062\001\001" +
    "\000\010\012\100\014\073\016\075\001\001\000\002\001" +
    "\001\000\010\012\100\014\073\016\075\001\001\000\002" +
    "\001\001\000\010\012\100\014\073\016\075\001\001\000" +
    "\012\012\065\014\056\015\216\016\062\001\001\000\012" +
    "\012\065\014\056\015\211\016\062\001\001\000\012\012" +
    "\065\014\056\015\204\016\062\001\001\000\002\001\001" +
    "\000\012\012\065\014\056\015\206\016\062\001\001\000" +
    "\010\012\100\014\073\016\075\001\001\000\002\001\001" +
    "\000\010\012\100\014\073\016\075\001\001\000\002\001" +
    "\001\000\012\012\065\014\056\015\213\016\062\001\001" +
    "\000\010\012\100\014\073\016\075\001\001\000\002\001" +
    "\001\000\010\012\100\014\073\016\075\001\001\000\002" +
    "\001\001\000\012\012\065\014\056\015\220\016\062\001" +
    "\001\000\010\012\100\014\073\016\075\001\001\000\002" +
    "\001\001\000\010\012\100\014\073\016\075\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\014\007\235\010\046\011\051\012\045\016\032\001" +
    "\001\000\002\001\001\000\012\010\236\011\051\012\045" +
    "\016\032\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\004\022\266\001\001" +
    "\000\004\017\260\001\001\000\002\001\001\000\006\004" +
    "\247\020\242\001\001\000\004\017\250\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\004\017" +
    "\253\001\001\000\002\001\001\000\002\001\001\000\010" +
    "\004\244\020\242\021\256\001\001\000\006\004\247\020" +
    "\242\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\010\004\244\020\242\021\263\001\001\000" +
    "\006\004\247\020\242\001\001\000\002\001\001\000\002" +
    "\001\001\000\016\006\270\007\041\010\046\011\051\012" +
    "\045\016\032\001\001\000\002\001\001\000\010\013\275" +
    "\023\272\024\276\001\001\000\002\001\001\000\002\001" +
    "\001\000\016\006\303\007\041\010\046\011\051\012\045" +
    "\016\032\001\001\000\002\001\001\000\004\023\301\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001" });

  /** Access to <code>reduce_goto</code> table. */
  public short[][] reduce_table() {return _reduce_table;}

  /** Instance of action encapsulation class. */
  protected CUP$LexParse$actions action_obj;

  /** Action encapsulation object initializer. */
  protected void init_actions()
    {
      action_obj = new CUP$LexParse$actions(this);
    }

  /** Invoke a user supplied parse action. */
  public java_cup.runtime.Symbol do_action(
    int                        act_num,
    java_cup.runtime.lr_parser parser,
    java.util.Stack            stack,
    int                        top)
    throws java.lang.Exception
  {
    /* call code in generated class */
    return action_obj.CUP$LexParse$do_action(act_num, parser, stack, top);
  }

  /** Indicates start state. */
  public int start_state() {return 0;}
  /** Indicates start production. */
  public int start_production() {return 0;}

  /** <code>EOF</code> Symbol index. */
  public int EOF_sym() {return 0;}

  /** <code>error</code> Symbol index. */
  public int error_sym() {return 1;}


  /** User initialization code. */
  public void user_init() throws java.lang.Exception
    {

  action_obj.scanner = scanner;
  // CharClasses.init() is delayed until UnicodeProperties.init() has been called,
  // since the max char code won't be known until then.
  action_obj.charClasses = scanner.getCharClasses();

    }


   public LexScan scanner;

   public LexParse(LexScan scanner) {
     super(scanner);
     this.scanner = scanner;
   }
   
   public CharClasses getCharClasses() {
     return action_obj.charClasses;
   }

   public EOFActions getEOFActions() {
     return action_obj.eofActions;
   }

   /**
    * Override syntax_error to not report expected tokens, just error message.
    *
    * TODO: reporting expected tokens using their actual surface syntax would be useful.
    *       Would need a reverse mapping of terminals or similar.
    */
   public void syntax_error(Symbol cur_token) {
     // JFlex reporting doesn't use the message argument.
     report_error(null, cur_token);
   }
       
   /**
    * Override lr_parser.report_error to use JFlex reporting.
    */
   public void report_error(String message, Object info) {
     if (info instanceof Symbol) {
       Symbol s = (Symbol) info;
  
       if (s.sym == sym.EOF) 
         Out.error(ErrorMessages.UNEXPECTED_EOF);
       else
         Out.error(scanner.file, ErrorMessages.SYNTAX_ERROR, s.left, s.right);
     }
     else 
       Out.error(ErrorMessages.UNKNOWN_SYNTAX);
   }
   
   /**
    * Override lr_parser.report_fatal_error to use JFlex reporting.
    */
   public void report_fatal_error(String message, Object info) {
     // CUP does not produce an informative message here, so we just stop.
     throw new GeneratorException();
   }


/** Cup generated class to encapsulate user supplied action code.*/
@SuppressWarnings({"rawtypes", "unchecked", "unused"})
class CUP$LexParse$actions {



  LexScan     scanner;
  CharClasses charClasses;
  RegExps     regExps     = new RegExps();
  Macros      macros      = new Macros();
  Integer     stateNumber;
  Timer       t           = new Timer();
  EOFActions  eofActions  = new EOFActions();
  Map<Integer,IntCharSet> preclassCache = new HashMap<Integer,IntCharSet>();

  void fatalError(ErrorMessages message, int line, int col) {
    syntaxError(message, line, col);
    throw new GeneratorException();
  }

  void fatalError(ErrorMessages message) {
    fatalError(message, scanner.currentLine(), -1);
    throw new GeneratorException();
  }

  void syntaxError(ErrorMessages message) {
    Out.error(scanner.file, message, scanner.currentLine(), -1);
  }
  
  void syntaxError(ErrorMessages message, int line) {
    Out.error(scanner.file, message, line, -1);
  }

  void syntaxError(ErrorMessages message, int line, int col) {
    Out.error(scanner.file, message, line, col);
  }

  void warning(ErrorMessages message, int line, int col) {
    Out.warning(scanner.file, message, line, col);
  }

  private boolean isDotOrNewlinePattern(RegExp r1, RegExp r2) {
    return ( r1 instanceof RegExp1 && ((RegExp1)r1).isPoint && isNewline(r2) )
        || ( r2 instanceof RegExp1 && ((RegExp1)r2).isPoint && isNewline(r1) );
  }

  private boolean isNewline(RegExp r) {
    if ( ! (r instanceof RegExp1) || null == ((RegExp1)r).content ) {
      return false;
    }
    RegExp1 r1 = (RegExp1)r;
    switch ( r1.type ) {
      case sym.STRING:
      case sym.STRING_I:
        return "\n".equals(r1.content);
      case sym.CHAR:
      case sym.CHAR_I:
        return '\n' == (char)((Integer)r1.content).intValue();
      case sym.CCLASS:
        List<Interval> intervals = (List<Interval>)r1.content;
        if ( 1 == intervals.size() ) {
          Interval i = intervals.get(0);
          return '\n' == i.start && '\n' == i.end;
        }
        return false;
      default:
        return false;
    }
  }

  private boolean check(int type, int c) {
    switch (type) {
      case sym.JLETTERCLASS:
        return Character.isJavaIdentifierStart(c);
        
      case sym.JLETTERDIGITCLASS:
        return Character.isJavaIdentifierPart(c);

      default: return false;
    }
  }
  
  private List<Interval> getPreClass(int type) {

    List<Interval> result;
    IntCharSet intCharSet = preclassCache.get(type);
    if (null != intCharSet) {
      result = intCharSet.copy().getIntervals();
    }
    else {
      UnicodeProperties unicodeProperties = scanner.getUnicodeProperties();
      switch (type) {
        case sym.LETTERCLASS: {
          intCharSet = unicodeProperties.getIntCharSet("L");
          preclassCache.put(type, intCharSet);
          result = intCharSet.copy().getIntervals();
          break;
        }
        case sym.DIGITCLASS: {
          intCharSet = unicodeProperties.getIntCharSet("Nd");
          preclassCache.put(type, intCharSet);
          result = intCharSet.copy().getIntervals();
          break;
        }
        case sym.DIGITCLASSNOT: {
          IntCharSet digits = unicodeProperties.getIntCharSet("Nd");
          intCharSet = new IntCharSet(new Interval(0, unicodeProperties.getMaximumCodePoint()));
          intCharSet.sub(digits);
          preclassCache.put(type, intCharSet);
          result = intCharSet.copy().getIntervals();
          break;
        }
        case sym.UPPERCLASS: {
          // "Uppercase" is more than Uppercase_Letter, but older Unicode
          // versions don't have this definition - check for "Uppercase",
          // then fall back to Uppercase_Letter (Lu) if it does not exist.
          intCharSet = unicodeProperties.getIntCharSet("Uppercase");
          if (null == intCharSet) {
            intCharSet = unicodeProperties.getIntCharSet("Lu");
          }
          preclassCache.put(type, intCharSet);
          result = intCharSet.copy().getIntervals();
          break;
        }
        case sym.LOWERCLASS: {
          // "Lowercase" is more than Lowercase_Letter, but older Unicode
          // versions don't have this definition - check for "Lowercase",
          // then fall back to Lowercase_Letter (Ll) if it does not exist.
          intCharSet = unicodeProperties.getIntCharSet("Lowercase");
          if (null == intCharSet) {
            intCharSet = unicodeProperties.getIntCharSet("Ll");
          }
          preclassCache.put(type, intCharSet);
          result = intCharSet.copy().getIntervals();
          break;
        }
        case sym.WHITESPACECLASS: {
          // Although later versions do, Unicode 1.1 does not have the
          // "Whitespace" definition - check for "Whitespace", then fall back
          // to "Space_separator" (Zs) if it does not exist.
          intCharSet = unicodeProperties.getIntCharSet("Whitespace");
          if (null == intCharSet) {
            intCharSet = unicodeProperties.getIntCharSet("Zs");
          }
          preclassCache.put(type, intCharSet);
          result = intCharSet.copy().getIntervals();
          break;
        }
        case sym.WHITESPACECLASSNOT: {
          // Although later versions do, Unicode 1.1 does not have the
          // "Whitespace" definition - check for "Whitespace", then fall back
          // to "Space_separator" (Zs) if it does not exist.
          IntCharSet whitespaceClass = unicodeProperties.getIntCharSet("Whitespace");
          if (null == whitespaceClass) {
            whitespaceClass = unicodeProperties.getIntCharSet("Zs");
          }
          intCharSet = new IntCharSet(new Interval(0, unicodeProperties.getMaximumCodePoint()));
          intCharSet.sub(whitespaceClass);
          preclassCache.put(type, intCharSet);
          result = intCharSet.copy().getIntervals();
          break;
        }
        case sym.WORDCLASS: {
          // UTR#18: \w = [\p{alpha}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}]
          IntCharSet alphaClass = unicodeProperties.getIntCharSet("Alphabetic");
          if (null == alphaClass) {
            // For Unicode 1.1, substitute "Letter" (L) for "Alphabetic".
            alphaClass = unicodeProperties.getIntCharSet("L");
          }
          IntCharSet markClass = unicodeProperties.getIntCharSet("M");
          IntCharSet digitClass = unicodeProperties.getIntCharSet("Nd");
          IntCharSet connectorPunctClass = unicodeProperties.getIntCharSet("Pc");
          if (null == connectorPunctClass) {
            // For Unicode 1.1, substitute "_" for "Connector_Punctuation".
            connectorPunctClass = new IntCharSet(new Interval('_', '_'));
          }
          intCharSet = alphaClass.copy();
          intCharSet.add(markClass);
          intCharSet.add(digitClass);
          intCharSet.add(connectorPunctClass);
          preclassCache.put(type, intCharSet);
          result = intCharSet.copy().getIntervals();
          break;
        }
        case sym.WORDCLASSNOT: {
          // UTR#18: \W = [^\p{alpha}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}]
          IntCharSet alphaClass = unicodeProperties.getIntCharSet("Alphabetic");
          if (null == alphaClass) {
            // For Unicode 1.1, substitute "Letter" (L) for "Alphabetic".
            alphaClass = unicodeProperties.getIntCharSet("L");
          }
          IntCharSet markClass = unicodeProperties.getIntCharSet("M");
          IntCharSet digitClass = unicodeProperties.getIntCharSet("Nd");
          IntCharSet connectorPunctClass = unicodeProperties.getIntCharSet("Pc");
          if (null == connectorPunctClass) {
            // For Unicode 1.1, substitute "_" for "Connector_Punctuation".
            connectorPunctClass = new IntCharSet(new Interval('_', '_'));
          }
          IntCharSet wordClass = alphaClass.copy();
          wordClass.add(markClass);
          wordClass.add(digitClass);
          wordClass.add(connectorPunctClass);
          intCharSet = new IntCharSet(new Interval(0, unicodeProperties.getMaximumCodePoint()));
          intCharSet.sub(wordClass);
          preclassCache.put(type, intCharSet);
          result = intCharSet.copy().getIntervals();
          break;
        }
        case sym.JLETTERCLASS:
        case sym.JLETTERDIGITCLASS:
        default: {
          result = new ArrayList<Interval>();

          int c = 0;
          int start = 0;
          int last = charClasses.getMaxCharCode();

          boolean prev, current;

          prev = check(type, 0);

          for (c = 1; c < last; c++) {

            current = check(type, c);

            if (!prev && current) start = c;
            if (prev && !current) {
              result.add(new Interval(start, c - 1));
            }

            prev = current;
          }

          // the last iteration is moved out of the loop to
          // avoid an endless loop if last == maxCharCode and
          // last+1 == 0
          current = check(type, c);

          if (!prev && current) result.add(new Interval(c, c));
          if (prev && current)  result.add(new Interval(start, c));
          if (prev && !current) result.add(new Interval(start, c - 1));

          preclassCache.put(type, new IntCharSet(result));
          break;
        }
      }
    }
    return result;
  }
  
  private RegExp makeRepeat(RegExp r, int n1, int n2, int line, int col) {

    if (n1 <= 0 && n2 <= 0) {
      syntaxError(ErrorMessages.REPEAT_ZERO, line, col);
      return null;
    }

    if (n1 > n2) {
      syntaxError(ErrorMessages.REPEAT_GREATER, line, col);
      return null;
    }
    
    int i;
    RegExp result;    

    if (n1 > 0) {
      result = r;
      n1--; n2--; // we need one concatenation less than the number of expressions to match
    }
    else {
      result = new RegExp1(sym.QUESTION,r);
      n2--;
    }

    for (i = 0; i < n1; i++) 
      result = new RegExp2(sym.CONCAT, result, r);
      
    n2-= n1;  
    for (i = 0; i < n2; i++)
      result = new RegExp2(sym.CONCAT, result, new RegExp1(sym.QUESTION,r));
    
    return result;
  }

  private RegExp makeNL() {
    List<Interval> list = new ArrayList<Interval>();
    list.add(new Interval('\n','\r'));
    list.add(new Interval('\u0085','\u0085'));
    list.add(new Interval('\u2028','\u2029'));

	// assumption: line feeds are caseless
    charClasses.makeClass(list, false);
    charClasses.makeClass('\n', false);
    charClasses.makeClass('\r', false);

    RegExp1   c = new RegExp1(sym.CCLASS, list);
    Integer n = new Integer((int)'\n');
    Integer r = new Integer((int)'\r');

    return new RegExp2(sym.BAR, 
                       c, 
                       new RegExp2(sym.CONCAT, 
                                   new RegExp1(sym.CHAR, r), 
                                   new RegExp1(sym.CHAR, n)));
  }
  

  private final LexParse parser;

  /** Constructor */
  CUP$LexParse$actions(LexParse parser) {
    this.parser = parser;
  }

  /** Method 0 with the actual generated action code for actions 0 to 300. */
  public final java_cup.runtime.Symbol CUP$LexParse$do_action_part00000000(
    int                        CUP$LexParse$act_num,
    java_cup.runtime.lr_parser CUP$LexParse$parser,
    java.util.Stack            CUP$LexParse$stack,
    int                        CUP$LexParse$top)
    throws java.lang.Exception
    {
      /* Symbol object for return from actions */
      java_cup.runtime.Symbol CUP$LexParse$result;

      /* select the action based on the action number */
      switch (CUP$LexParse$act_num)
        {
          /*. . . . . . . . . . . . . . . . . . . .*/
          case 0: // $START ::= specification EOF 
            {
              Object RESULT =null;
		int start_valleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int start_valright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		NFA start_val = (NFA)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		RESULT = start_val;
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("$START",0, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          /* ACCEPT */
          CUP$LexParse$parser.done_parsing();
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 1: // specification ::= USERCODE macros DELIMITER rules 
            {
              NFA RESULT =null;
		
                     scanner.t.stop();

                     Out.checkErrors();
                     
                     Out.time(ErrorMessages.PARSING_TOOK, t);
                     
                     macros.expand();
                     if (Options.unused_warning) {
	                     for (String unusedMacro : macros.unused()) {
	                       Out.warning(String.format(
	                    		   "Macro \"%s\" has been declared but never used.", unusedMacro));
	                     }
                     }

                     SemCheck.check(regExps, macros, scanner.file);
  
                     regExps.checkActions();
                     regExps.checkLookAheads();

                     Out.checkErrors();

                     if (Options.dump) charClasses.dump();

                     Out.print("Constructing NFA : ");

                     t.start();
                     int num = regExps.getNum();
                     
                     RESULT = new NFA(charClasses.getNumClasses(), 
                                      scanner, regExps, macros, charClasses);
                     
                     eofActions.setNumLexStates(scanner.states.number());

                     for (int i = 0; i < num; i++) {
                       if (regExps.isEOF(i))
                         eofActions.add( regExps.getStates(i), regExps.getAction(i) );
                       else
                         RESULT.addRegExp(i);
                     }
                     
                     if (scanner.standalone) RESULT.addStandaloneRule();
                     t.stop();
       
                     Out.time("");              
	                 Out.time(ErrorMessages.NFA_TOOK, t);
                     
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("specification",3, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 2: // specification ::= 
            {
              NFA RESULT =null;
		 
                     fatalError(ErrorMessages.NO_LEX_SPEC);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("specification",3, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 3: // macros ::= 
            {
              Object RESULT =null;

              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macros",0, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 4: // macros ::= macros macro 
            {
              Object RESULT =null;

              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macros",0, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 5: // macros ::= error 
            {
              Object RESULT =null;

              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macros",0, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 6: // macro ::= ASCII 
            {
              Object RESULT =null;
		 charClasses.setMaxCharCode(127); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macro",1, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 7: // macro ::= FULL 
            {
              Object RESULT =null;
		 charClasses.setMaxCharCode(255); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macro",1, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 8: // macro ::= UNICODE 
            {
              Object RESULT =null;
		 /* max char code is set via CharClasses.init() */ 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macro",1, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 9: // macro ::= IDENT EQUALS series REGEXPEND 
            {
              Object RESULT =null;
		int nameleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
		int nameright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
		String name = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
		int definitionleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int definitionright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		RegExp definition = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		 macros.insert(name, definition); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macro",1, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 10: // macro ::= IDENT EQUALS 
            {
              Object RESULT =null;
		int eleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int eright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 syntaxError(ErrorMessages.REGEXP_EXPECTED, eleft, eright); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macro",1, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 11: // rules ::= rules rule 
            {
              List<Integer> RESULT =null;
		int rlistleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int rlistright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Integer> rlist = (List<Integer>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Integer r = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 rlist.add(r); RESULT = rlist; 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rules",15, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 12: // rules ::= rules LESSTHAN states MORETHAN LBRACE rules RBRACE 
            {
              List<Integer> RESULT =null;
		int rlist1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)).left;
		int rlist1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)).right;
		List<Integer> rlist1 = (List<Integer>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)).value;
		int statesleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
		int statesright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
		List<Integer> states = (List<Integer>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
		int rlist2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int rlist2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Integer> rlist2 = (List<Integer>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		
                     for (Integer elem : rlist2) {
                       // might be null for error case of "rule"
                       if (elem != null) { 
                         regExps.addStates( elem, states );
                       }
                       rlist1.add( elem );
                     }                       
                     RESULT = rlist1;
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rules",15, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 13: // rules ::= LESSTHAN states MORETHAN LBRACE rules RBRACE 
            {
              List<Integer> RESULT =null;
		int statesleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
		int statesright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
		List<Integer> states = (List<Integer>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
		int rlistleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int rlistright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Integer> rlist = (List<Integer>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		 
                     for (Integer elem : rlist) {
                       // might be null for error case of "rule"
                       if (elem != null) { 
                         regExps.addStates( elem, states );
                       }
                     }
                     RESULT = rlist;
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rules",15, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-5)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 14: // rules ::= rule 
            {
              List<Integer> RESULT =null;
		int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Integer r = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = new ArrayList<Integer>(); RESULT.add(r); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rules",15, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 15: // rule ::= statesOPT hatOPT series actions 
            {
              Integer RESULT =null;
		int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
		List<Integer> s = (List<Integer>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
		int bolleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
		int bolright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
		Boolean bol = (Boolean)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
		int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = regExps.insert(rleft, s, r, a, bol, null); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rule",2, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 16: // rule ::= statesOPT hatOPT series lookahead act 
            {
              Integer RESULT =null;
		int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
		List<Integer> s = (List<Integer>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
		int bolleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
		int bolright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
		Boolean bol = (Boolean)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
		int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
		int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
		RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
		int lleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int lright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		RegExp l = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = regExps.insert(rleft, s, r, a, bol, l); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rule",2, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 17: // rule ::= statesOPT hatOPT series lookahead NOACTION 
            {
              Integer RESULT =null;
		int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
		List<Integer> s = (List<Integer>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
		int bolleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
		int bolright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
		Boolean bol = (Boolean)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
		int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
		int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
		RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
		int lleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int lright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		RegExp l = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object a = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 syntaxError(ErrorMessages.LOOKAHEAD_NEEDS_ACTION, aleft, aright+1); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rule",2, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 18: // rule ::= statesOPT EOFRULE ACTION 
            {
              Integer RESULT =null;
		int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
		List<Integer> s = (List<Integer>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
		int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = regExps.insert(s, a); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rule",2, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 19: // rule ::= error 
            {
              Integer RESULT =null;

              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rule",2, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 20: // lookahead ::= DOLLAR 
            {
              RegExp RESULT =null;
		 RESULT = makeNL(); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("lookahead",9, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 21: // lookahead ::= LOOKAHEAD series 
            {
              RegExp RESULT =null;
		int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = r; 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("lookahead",9, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 22: // lookahead ::= LOOKAHEAD series DOLLAR 
            {
              RegExp RESULT =null;
		int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		RegExp s = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		 RESULT = new RegExp2(sym.CONCAT, s, makeNL()); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("lookahead",9, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 23: // act ::= REGEXPEND ACTION 
            {
              Action RESULT =null;
		int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = a; 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("act",17, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 24: // actions ::= act 
            {
              Action RESULT =null;
		int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = a; 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("actions",18, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 25: // actions ::= NOACTION 
            {
              Action RESULT =null;

              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("actions",18, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 26: // statesOPT ::= LESSTHAN states MORETHAN 
            {
              List<Integer> RESULT =null;
		int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Integer> list = (List<Integer>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		 RESULT = list; 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("statesOPT",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 27: // statesOPT ::= 
            {
              List<Integer> RESULT =null;
		 RESULT = new ArrayList<Integer>(); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("statesOPT",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 28: // states ::= IDENT COMMA states 
            {
              List<Integer> RESULT =null;
		int idleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
		int idright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
		String id = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
		int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		List<Integer> list = (List<Integer>)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     stateNumber = scanner.states.getNumber( id );
                     if ( stateNumber != null )
                       list.add( stateNumber ); 
                     else {
                       throw new ScannerException(scanner.file, ErrorMessages.LEXSTATE_UNDECL, 
                                                  idleft, idright);
                     }
                     RESULT = list;
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("states",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 29: // states ::= IDENT 
            {
              List<Integer> RESULT =null;
		int idleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int idright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		String id = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     List<Integer> list = new ArrayList<Integer>();
                     stateNumber = scanner.states.getNumber( id );
                     if ( stateNumber != null )
                       list.add( stateNumber ); 
                     else {
                       throw new ScannerException(scanner.file, ErrorMessages.LEXSTATE_UNDECL, 
                                                  idleft, idright);
                     }
                     RESULT = list;
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("states",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 30: // states ::= IDENT COMMA 
            {
              List<Integer> RESULT =null;
		int cleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int cright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object c = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 syntaxError(ErrorMessages.REGEXP_EXPECTED, cleft, cright+1); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("states",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 31: // hatOPT ::= HAT 
            {
              Boolean RESULT =null;
		
                      // assumption: newline chars have no uppercase variant
                      charClasses.makeClass("\n\r\u000B\u000C\u0085\u2028\u2029", false);
                      RESULT = true;
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("hatOPT",16, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 32: // hatOPT ::= 
            {
              Boolean RESULT =null;
		 RESULT = false; 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("hatOPT",16, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 33: // series ::= series BAR concs 
            {
              RegExp RESULT =null;
		int r1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
		int r1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
		RegExp r1 = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
		int r2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int r2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		RegExp r2 = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     if ( ! Options.jlex && ! Options.legacy_dot && isDotOrNewlinePattern(r1, r2) ) {
                       warning(ErrorMessages.DOT_BAR_NEWLINE_DOES_NOT_MATCH_ALL_CHARS, r1left, r1right);
                     }
                     RESULT = new RegExp2(sym.BAR, r1, r2);
                  
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("series",4, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 34: // series ::= concs 
            {
              RegExp RESULT =null;
		int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = r; 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("series",4, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 35: // series ::= BAR 
            {
              RegExp RESULT =null;
		int bleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int bright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object b = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 syntaxError(ErrorMessages.REGEXP_EXPECTED, bleft, bright); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("series",4, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 36: // concs ::= concs nregexp 
            {
              RegExp RESULT =null;
		int r1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int r1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		RegExp r1 = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int r2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int r2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		RegExp r2 = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = new RegExp2(sym.CONCAT, r1, r2); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("concs",5, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 37: // concs ::= nregexp 
            {
              RegExp RESULT =null;
		int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = r; 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("concs",5, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 38: // nregexp ::= regexp 
            {
              RegExp RESULT =null;
		int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = r; 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("nregexp",6, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 39: // nregexp ::= BANG nregexp 
            {
              RegExp RESULT =null;
		int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = new RegExp1(sym.BANG, r); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("nregexp",6, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 40: // nregexp ::= TILDE nregexp 
            {
              RegExp RESULT =null;
		int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = new RegExp1(sym.TILDE, r); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("nregexp",6, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 41: // regexp ::= regexp STAR 
            {
              RegExp RESULT =null;
		int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		 RESULT = new RegExp1(sym.STAR, r); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 42: // regexp ::= regexp PLUS 
            {
              RegExp RESULT =null;
		int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		 RESULT = new RegExp1(sym.PLUS, r); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 43: // regexp ::= regexp QUESTION 
            {
              RegExp RESULT =null;
		int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		 RESULT = new RegExp1(sym.QUESTION, r); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 44: // regexp ::= regexp REPEAT RBRACE 
            {
              RegExp RESULT =null;
		int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
		int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
		RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
		int nleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int nright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		Integer n = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int bleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int bright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object b = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = makeRepeat(r, n, n, bleft, bright); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 45: // regexp ::= regexp REPEAT REPEAT RBRACE 
            {
              RegExp RESULT =null;
		int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
		int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
		RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
		int n1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
		int n1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
		Integer n1 = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
		int n2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int n2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		Integer n2 = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		 RESULT = makeRepeat(r, n1, n2, n1left, n2right); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 46: // regexp ::= OPENBRACKET series CLOSEBRACKET 
            {
              RegExp RESULT =null;
		int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		 RESULT = r; 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 47: // regexp ::= MACROUSE 
            {
              RegExp RESULT =null;
		int identleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int identright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		String ident = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 
                      if ( !scanner.macroDefinition ) {
                        if ( ! macros.markUsed(ident) ) 
                          throw new ScannerException(scanner.file, ErrorMessages.MACRO_UNDECL, 
                                                     identleft, identright);
                      }
                      RESULT = new RegExp1(sym.MACROUSE, ident); 
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 48: // regexp ::= charclass 
            {
              RegExp RESULT =null;
		int cleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int cright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		RegExp c = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = c; 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 49: // regexp ::= preclass 
            {
              RegExp RESULT =null;
		int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		List<Interval> list = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     try {
                       // assumption [correct?]: preclasses are already closed under case
                       charClasses.makeClass(list, false);
                     }
                     catch (CharClassException e) {
                       syntaxError(ErrorMessages.CHARSET_2_SMALL, listleft);
                     }
                     RESULT = new RegExp1(sym.CCLASS, list);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 50: // regexp ::= UNIPROPCCLASS 
            {
              RegExp RESULT =null;
		int intcharsetleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int intcharsetright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		IntCharSet intcharset = (IntCharSet)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     IntCharSet set
                       = scanner.caseless 
                       ? intcharset.getCaseless(scanner.getUnicodeProperties()) 
                       : intcharset.copy();
                     try {
                       charClasses.makeClass(set.getIntervals(), false);
                     }
                     catch (CharClassException e) {
                       syntaxError(ErrorMessages.CHARSET_2_SMALL, intcharsetleft, intcharsetright);
                     }
                     RESULT = new RegExp1(sym.CCLASS, set.getIntervals());
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 51: // regexp ::= UNIPROPCCLASSNOT 
            {
              RegExp RESULT =null;
		int notintcharsetleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int notintcharsetright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		IntCharSet notintcharset = (IntCharSet)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     IntCharSet set
                       = scanner.caseless 
                       ? notintcharset.getCaseless(scanner.getUnicodeProperties()) 
                       : notintcharset.copy();
                     try {
                       charClasses.makeClassNot(set.getIntervals(), false);
                     }
                     catch (CharClassException e) {
                       syntaxError(ErrorMessages.CHARSET_2_SMALL, notintcharsetleft, notintcharsetright);
                     }
                     RESULT = new RegExp1(sym.CCLASSNOT, set.getIntervals());
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 52: // regexp ::= STRING 
            {
              RegExp RESULT =null;
		int strleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int strright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		String str = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 
                     try {
                       if ( scanner.caseless ) {
                         charClasses.makeClass(str, true);
                         RESULT = new RegExp1(sym.STRING_I, str);
                       }
                       else {
                         charClasses.makeClass(str, false);
                         RESULT = new RegExp1(sym.STRING, str); 
                       }
                     }
                     catch (CharClassException e) {
                       syntaxError(ErrorMessages.CS2SMALL_STRING, strleft, strright);
                     }

                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 53: // regexp ::= POINT 
            {
              RegExp RESULT =null;
		 
                      List<Interval> any = new ArrayList<Interval>();
                      if ( Options.jlex || Options.legacy_dot ) {
                        any.add(new Interval('\n','\n'));
                        // assumption: newline chars have no uppercase variant
                        charClasses.makeClass('\n', false);
                      }
                      else {
                        any.add(new Interval('\n','\r'));
                        any.add(new Interval('\u0085','\u0085'));
                        any.add(new Interval('\u2028','\u2029'));
                        // assumption: newline chars have no uppercase variant
                        charClasses.makeClass("\n\r\u000B\u000C\u0085\u2028\u2029", false);
                      }
                      RegExp1 r = new RegExp1(sym.CCLASSNOT, any);
                      r.isPoint = true;
                      RESULT = r;
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 54: // regexp ::= NEWLINE 
            {
              RegExp RESULT =null;
		 RESULT = makeNL(); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 55: // regexp ::= CHAR 
            {
              RegExp RESULT =null;
		int cleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int cright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Integer c = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 
                     try {
                       if ( scanner.caseless ) {
                         charClasses.makeClass(c, true);
                         RESULT = new RegExp1(sym.CHAR_I, c);
                       }
                       else {
                         charClasses.makeClass(c, false);
                         RESULT = new RegExp1(sym.CHAR, c); 
                       }
                     }
                     catch (CharClassException e) {
                       syntaxError(ErrorMessages.CS2SMALL_CHAR, cleft, cright);
                     }
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 56: // charclass ::= OPENCLASS CLOSECLASS 
            {
              RegExp RESULT =null;
		 
                     RESULT = new RegExp1(sym.CCLASS,null);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 57: // charclass ::= OPENCLASS classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     try {
                       charClasses.makeClass(list, Options.jlex && scanner.caseless);
                     }
                     catch (CharClassException e) {
                       syntaxError(ErrorMessages.CHARSET_2_SMALL, closeleft, closeright);
                     }
                     RESULT = new RegExp1(sym.CCLASS,list);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 58: // charclass ::= OPENCLASS HAT CLOSECLASS 
            {
              RegExp RESULT =null;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 
                     List<Interval> list = new ArrayList<Interval>();
                     list.add(new Interval(0, charClasses.getMaxCharCode()));
                     try {
                       charClasses.makeClass(list, false);
                     }
                     catch (CharClassException e) {
                       syntaxError(ErrorMessages.CHARSET_2_SMALL, closeleft, closeright);
                     }
                     RESULT = new RegExp1(sym.CCLASS,list);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 59: // charclass ::= OPENCLASS HAT classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 
                     try {
                       charClasses.makeClassNot(list, Options.jlex && scanner.caseless);
                     }
                     catch (CharClassException e) {
                       syntaxError(ErrorMessages.CHARSET_2_SMALL, closeleft, closeright);
                     }
                     RESULT = new RegExp1(sym.CCLASSNOT,list);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 60: // charclass ::= OPENCLASS DASH classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 
                     try {
                       list.add(new Interval('-','-'));
                       charClasses.makeClass(list, Options.jlex && scanner.caseless);
                     }
                     catch (CharClassException e) {
                       syntaxError(ErrorMessages.CHARSET_2_SMALL, closeleft, closeright);
                     }
                     RESULT = new RegExp1(sym.CCLASS,list);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 61: // charclass ::= OPENCLASS HAT DASH classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 
                     try {
                       list.add(new Interval('-','-'));
                       charClasses.makeClassNot(list, Options.jlex && scanner.caseless);
                     }
                     catch (CharClassException e) {
                       syntaxError(ErrorMessages.CHARSET_2_SMALL, closeleft, closeright);
                     }
                     RESULT = new RegExp1(sym.CCLASSNOT,list);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 62: // charclass ::= OPENCLASS classcontent INTERSECTION classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     List<Interval> intervals = intcharset1.and(intcharset2).getIntervals();
                     charClasses.makeClass(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASS, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 63: // charclass ::= OPENCLASS DASH classcontent INTERSECTION classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     list1.add(new Interval('-', '-'));
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     List<Interval> intervals = intcharset1.and(intcharset2).getIntervals();
                     charClasses.makeClass(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASS, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-5)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 64: // charclass ::= OPENCLASS classcontent INTERSECTION DASH classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     list2.add(new Interval('-', '-'));
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     List<Interval> intervals = intcharset1.and(intcharset2).getIntervals();
                     charClasses.makeClass(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASS, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-5)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 65: // charclass ::= OPENCLASS DASH classcontent INTERSECTION DASH classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     list1.add(new Interval('-', '-'));
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     list2.add(new Interval('-', '-'));
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     List<Interval> intervals = intcharset1.and(intcharset2).getIntervals();
                     charClasses.makeClass(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASS, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 66: // charclass ::= OPENCLASS HAT classcontent INTERSECTION classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     List<Interval> intervals = intersection.getIntervals();
                     charClasses.makeClassNot(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASSNOT, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-5)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 67: // charclass ::= OPENCLASS HAT DASH classcontent INTERSECTION classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     list1.add(new Interval('-', '-'));
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     List<Interval> intervals = intersection.getIntervals();
                     charClasses.makeClassNot(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASSNOT, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 68: // charclass ::= OPENCLASS HAT classcontent INTERSECTION DASH classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     list2.add(new Interval('-', '-'));
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     List<Interval> intervals = intersection.getIntervals();
                     charClasses.makeClassNot(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASSNOT, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 69: // charclass ::= OPENCLASS HAT DASH classcontent INTERSECTION DASH classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     list1.add(new Interval('-', '-'));
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     list2.add(new Interval('-', '-'));
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     List<Interval> intervals = intersection.getIntervals();
                     charClasses.makeClassNot(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASSNOT, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-7)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 70: // charclass ::= OPENCLASS classcontent DIFFERENCE classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     // IntCharSet.sub() assumes its argument is a subset, so subtract intersection
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     intcharset1.sub(intersection);
                     List<Interval> intervals = intcharset1.getIntervals();
                     charClasses.makeClass(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASS, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 71: // charclass ::= OPENCLASS DASH classcontent DIFFERENCE classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     list1.add(new Interval('-', '-'));
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     // IntCharSet.sub() assumes its argument is a subset, so subtract intersection
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     intcharset1.sub(intersection);
                     List<Interval> intervals = intcharset1.getIntervals();
                     charClasses.makeClass(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASS, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-5)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 72: // charclass ::= OPENCLASS classcontent DIFFERENCE DASH classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     list2.add(new Interval('-', '-'));
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     // IntCharSet.sub() assumes its argument is a subset, so subtract intersection
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     intcharset1.sub(intersection);
                     List<Interval> intervals = intcharset1.getIntervals();
                     charClasses.makeClass(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASS, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-5)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 73: // charclass ::= OPENCLASS DASH classcontent DIFFERENCE DASH classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     list1.add(new Interval('-', '-'));
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     list2.add(new Interval('-', '-'));
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     // IntCharSet.sub() assumes its argument is a subset, so subtract intersection
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     intcharset1.sub(intersection);
                     List<Interval> intervals = intcharset1.getIntervals();
                     charClasses.makeClass(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASS, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 74: // charclass ::= OPENCLASS HAT classcontent DIFFERENCE classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     // IntCharSet.sub() assumes its argument is a subset, so subtract intersection
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     intcharset1.sub(intersection);
                     List<Interval> intervals = intcharset1.getIntervals();
                     charClasses.makeClassNot(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASSNOT, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-5)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 75: // charclass ::= OPENCLASS HAT DASH classcontent DIFFERENCE classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     list1.add(new Interval('-', '-'));
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     // IntCharSet.sub() assumes its argument is a subset, so subtract intersection
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     intcharset1.sub(intersection);
                     List<Interval> intervals = intcharset1.getIntervals();
                     charClasses.makeClassNot(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASSNOT, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 76: // charclass ::= OPENCLASS HAT classcontent DIFFERENCE DASH classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     list2.add(new Interval('-', '-'));
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     // IntCharSet.sub() assumes its argument is a subset, so subtract intersection
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     intcharset1.sub(intersection);
                     List<Interval> intervals = intcharset1.getIntervals();
                     charClasses.makeClassNot(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASSNOT, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 77: // charclass ::= OPENCLASS HAT DASH classcontent DIFFERENCE DASH classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     list1.add(new Interval('-', '-'));
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     list2.add(new Interval('-', '-'));
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     // IntCharSet.sub() assumes its argument is a subset, so subtract intersection
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     intcharset1.sub(intersection);
                     List<Interval> intervals = intcharset1.getIntervals();
                     charClasses.makeClassNot(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASSNOT, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-7)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 78: // charclass ::= OPENCLASS classcontent SYMMETRICDIFFERENCE classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     IntCharSet union = intcharset1.copy();
                     union.add(intcharset2);
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     union.sub(intersection);
                     List<Interval> intervals = union.getIntervals();
                     charClasses.makeClass(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASS, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 79: // charclass ::= OPENCLASS DASH classcontent SYMMETRICDIFFERENCE classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     list1.add(new Interval('-', '-'));
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     IntCharSet union = intcharset1.copy();
                     union.add(intcharset2);
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     union.sub(intersection);
                     List<Interval> intervals = union.getIntervals();
                     charClasses.makeClass(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASS, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-5)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 80: // charclass ::= OPENCLASS classcontent SYMMETRICDIFFERENCE DASH classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     list2.add(new Interval('-', '-'));
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     IntCharSet union = intcharset1.copy();
                     union.add(intcharset2);
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     union.sub(intersection);
                     List<Interval> intervals = union.getIntervals();
                     charClasses.makeClass(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASS, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-5)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 81: // charclass ::= OPENCLASS DASH classcontent SYMMETRICDIFFERENCE DASH classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     list1.add(new Interval('-', '-'));
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     list2.add(new Interval('-', '-'));
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     IntCharSet union = intcharset1.copy();
                     union.add(intcharset2);
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     union.sub(intersection);
                     List<Interval> intervals = union.getIntervals();
                     charClasses.makeClass(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASS, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 82: // charclass ::= OPENCLASS HAT classcontent SYMMETRICDIFFERENCE classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     IntCharSet union = intcharset1.copy();
                     union.add(intcharset2);
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     union.sub(intersection);
                     List<Interval> intervals = union.getIntervals();
                     charClasses.makeClassNot(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASSNOT, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-5)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 83: // charclass ::= OPENCLASS HAT DASH classcontent SYMMETRICDIFFERENCE classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     list1.add(new Interval('-', '-'));
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     IntCharSet union = intcharset1.copy();
                     union.add(intcharset2);
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     union.sub(intersection);
                     List<Interval> intervals = union.getIntervals();
                     charClasses.makeClassNot(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASSNOT, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 84: // charclass ::= OPENCLASS HAT classcontent SYMMETRICDIFFERENCE DASH classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     list2.add(new Interval('-', '-'));
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     IntCharSet union = intcharset1.copy();
                     union.add(intcharset2);
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     union.sub(intersection);
                     List<Interval> intervals = union.getIntervals();
                     charClasses.makeClassNot(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASSNOT, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 85: // charclass ::= OPENCLASS HAT DASH classcontent SYMMETRICDIFFERENCE DASH classcontent CLOSECLASS 
            {
              RegExp RESULT =null;
		int list1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
		int list1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
		List<Interval> list1 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
		int list2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int list2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list2 = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     list1.add(new Interval('-', '-'));
                     IntCharSet intcharset1 = new IntCharSet(list1);
                     list2.add(new Interval('-', '-'));
                     IntCharSet intcharset2 = new IntCharSet(list2);
                     IntCharSet union = intcharset1.copy();
                     union.add(intcharset2);
                     IntCharSet intersection = intcharset1.and(intcharset2);
                     union.sub(intersection);
                     List<Interval> intervals = union.getIntervals();
                     charClasses.makeClassNot(intervals, Options.jlex && scanner.caseless);
                     RESULT = new RegExp1(sym.CCLASSNOT, intervals);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-7)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 86: // classcontent ::= classcontent classcontentelem 
            {
              List<Interval> RESULT =null;
		int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int elemleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int elemright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Interval elem = (Interval)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     list.add(elem);
                     RESULT = list;
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 87: // classcontent ::= classcontentelem 
            {
              List<Interval> RESULT =null;
		int elemleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int elemright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Interval elem = (Interval)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     List<Interval> list = new ArrayList<Interval>();
                     list.add(elem);
                     RESULT = list;
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 88: // classcontent ::= classcontent preclass 
            {
              List<Interval> RESULT =null;
		int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int plistleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int plistright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		List<Interval> plist = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     list.addAll(plist);
                     RESULT = list;
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 89: // classcontent ::= preclass 
            {
              List<Interval> RESULT =null;
		int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		List<Interval> list = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = list; 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 90: // classcontent ::= classcontent UNIPROPCCLASS 
            {
              List<Interval> RESULT =null;
		int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int intcharsetleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int intcharsetright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		IntCharSet intcharset = (IntCharSet)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     //TODO: Is IntCharSet.copy() required here?
                     list.addAll(intcharset.copy().getIntervals());
                     RESULT = list;
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 91: // classcontent ::= UNIPROPCCLASS 
            {
              List<Interval> RESULT =null;
		int intcharsetleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int intcharsetright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		IntCharSet intcharset = (IntCharSet)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = intcharset.copy().getIntervals(); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 92: // classcontent ::= classcontent UNIPROPCCLASSNOT 
            {
              List<Interval> RESULT =null;
		int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int notintcharsetleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int notintcharsetright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		IntCharSet notintcharset = (IntCharSet)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     IntCharSet absComp = new IntCharSet(new Interval(0, scanner.getUnicodeProperties().getMaximumCodePoint()));
                     absComp.sub(notintcharset);
                     list.addAll(absComp.getIntervals());
                     RESULT = list;
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 93: // classcontent ::= UNIPROPCCLASSNOT 
            {
              List<Interval> RESULT =null;
		int notintcharsetleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int notintcharsetright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		IntCharSet notintcharset = (IntCharSet)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                      IntCharSet absComp = new IntCharSet(new Interval(0, scanner.getUnicodeProperties().getMaximumCodePoint()));
                      absComp.sub(notintcharset);
                      RESULT = absComp.getIntervals();
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 94: // classcontent ::= classcontent STRING 
            {
              List<Interval> RESULT =null;
		int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		String s = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 
                      for (int i = 0; i < s.length(); ) {
                        int ch = s.codePointAt(i);
                        i += Character.charCount(ch);
                        list.add(new Interval(ch, ch));
                      }
                      RESULT = list;
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 95: // classcontent ::= STRING 
            {
              List<Interval> RESULT =null;
		int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		String s = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 
                      RESULT = new ArrayList<Interval>();
                      for (int i = 0; i < s.length(); ) {
                        int ch = s.codePointAt(i);
                        i += Character.charCount(ch);
                        RESULT.add(new Interval(ch, ch));
                      }
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 96: // classcontent ::= classcontent MACROUSE 
            {
              List<Interval> RESULT =null;
		int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int identleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int identright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		String ident = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 
                     syntaxError(ErrorMessages.CHARCLASS_MACRO, identleft, identright);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 97: // classcontent ::= MACROUSE 
            {
              List<Interval> RESULT =null;
		int identleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int identright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		String ident = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 
                     syntaxError(ErrorMessages.CHARCLASS_MACRO, identleft, identright);
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 98: // classcontent ::= classcontent charclass 
            {
              List<Interval> RESULT =null;
		int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
		int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
		List<Interval> list = (List<Interval>)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
		int regexleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int regexright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		RegExp regex = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     List<Interval> intervals = (List<Interval>)((RegExp1)regex).content;
                     if (null != intervals) {
                       if (sym.CCLASS == regex.type) {
                         list.addAll(intervals);
                       }
                       else { //  sym.CCLASSNOT == regex.type
                         IntCharSet absComp = new IntCharSet(new Interval(0, scanner.getUnicodeProperties().getMaximumCodePoint()));
                         absComp.sub(new IntCharSet(intervals));
                         list.addAll(absComp.getIntervals());
                       }
                     }
                     RESULT = list;
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 99: // classcontent ::= charclass 
            {
              List<Interval> RESULT =null;
		int regexleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int regexright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		RegExp regex = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                     List<Interval> list = (List<Interval>)((RegExp1)regex).content;
                     if (null == list) {
                       RESULT = new ArrayList<Interval>();
                     }
                     else {
                       if (sym.CCLASS == regex.type) {
                         RESULT = list;
                       }
                       else {
                         IntCharSet absComp = new IntCharSet(new Interval(0, scanner.getUnicodeProperties().getMaximumCodePoint()));
                         absComp.sub(new IntCharSet(list));
                         RESULT = absComp.getIntervals();
                       }
                     }
                   
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 100: // classcontentelem ::= CHAR DASH CHAR 
            {
              Interval RESULT =null;
		int c1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
		int c1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
		Integer c1 = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
		int c2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int c2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Integer c2 = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		
                       if (c2 < c1) {
                         syntaxError(ErrorMessages.IMPOSSIBLE_CHARCLASS_RANGE, c1left, c1right);
                       }
                       RESULT = new Interval(c1, c2); 
                     
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontentelem",10, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 101: // classcontentelem ::= CHAR 
            {
              Interval RESULT =null;
		int cleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
		int cright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
		Integer c = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
		 RESULT = new Interval(c, c); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontentelem",10, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 102: // preclass ::= JLETTERCLASS 
            {
              List<Interval> RESULT =null;
		 RESULT = getPreClass(sym.JLETTERCLASS); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",12, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 103: // preclass ::= JLETTERDIGITCLASS 
            {
              List<Interval> RESULT =null;
		 RESULT = getPreClass(sym.JLETTERDIGITCLASS); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",12, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 104: // preclass ::= LETTERCLASS 
            {
              List<Interval> RESULT =null;
		 RESULT = getPreClass(sym.LETTERCLASS); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",12, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 105: // preclass ::= DIGITCLASS 
            {
              List<Interval> RESULT =null;
		 RESULT = getPreClass(sym.DIGITCLASS); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",12, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 106: // preclass ::= DIGITCLASSNOT 
            {
              List<Interval> RESULT =null;
		 RESULT = getPreClass(sym.DIGITCLASSNOT); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",12, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 107: // preclass ::= UPPERCLASS 
            {
              List<Interval> RESULT =null;
		 RESULT = getPreClass(sym.UPPERCLASS); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",12, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 108: // preclass ::= LOWERCLASS 
            {
              List<Interval> RESULT =null;
		 RESULT = getPreClass(sym.LOWERCLASS); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",12, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 109: // preclass ::= WHITESPACECLASS 
            {
              List<Interval> RESULT =null;
		 RESULT = getPreClass(sym.WHITESPACECLASS); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",12, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 110: // preclass ::= WHITESPACECLASSNOT 
            {
              List<Interval> RESULT =null;
		 RESULT = getPreClass(sym.WHITESPACECLASSNOT); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",12, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 111: // preclass ::= WORDCLASS 
            {
              List<Interval> RESULT =null;
		 RESULT = getPreClass(sym.WORDCLASS); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",12, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 112: // preclass ::= WORDCLASSNOT 
            {
              List<Interval> RESULT =null;
		 RESULT = getPreClass(sym.WORDCLASSNOT); 
              CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",12, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
            }
          return CUP$LexParse$result;

          /* . . . . . .*/
          default:
            throw new Exception(
               "Invalid action number "+CUP$LexParse$act_num+"found in internal parse table");

        }
    } /* end of method */

  /** Method splitting the generated action code into several parts. */
  public final java_cup.runtime.Symbol CUP$LexParse$do_action(
    int                        CUP$LexParse$act_num,
    java_cup.runtime.lr_parser CUP$LexParse$parser,
    java.util.Stack            CUP$LexParse$stack,
    int                        CUP$LexParse$top)
    throws java.lang.Exception
    {
              return CUP$LexParse$do_action_part00000000(
                               CUP$LexParse$act_num,
                               CUP$LexParse$parser,
                               CUP$LexParse$stack,
                               CUP$LexParse$top);
    }
}

}
