/*******************************************************************************
* Copyright © 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*
*******************************************************************************/
/* The following code was generated by JFlex 1.4.3 on 11/19/12 4:04 PM */
package org.eclipse.edt.compiler.core.ast;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;
import java_cup.runtime.Symbol;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3
* on 11/19/12 4:04 PM from the specification file
* <tt>egl.flex</tt>
*/
public class Lexer implements java_cup.runtime.Scanner {
/** This character denotes the end of file */
public static final int YYEOF = -1;
/** initial size of the lookahead buffer */
private static final int ZZ_BUFFERSIZE = 128;
/** lexical states */
public static final int STRING = 2;
public static final int SQLDELIMITEDID = 8;
public static final int BLOCK_COMMENT = 4;
public static final int YYINITIAL = 0;
public static final int SQL = 6;
public static final int SQLSTRING = 10;
/**
* ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
* ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
* at the beginning of a line
* l is of the form l = 2*k, k a non negative integer
*/
private static final int ZZ_LEXSTATE[] = {
0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5
};
/**
* Translates characters to character classes
*/
private static final String ZZ_CMAP_PACKED =
"\11\5\1\3\1\1\1\0\1\3\1\2\16\5\4\0\1\3\1\55"+
"\1\23\1\25\1\4\1\67\1\62\1\76\1\53\1\54\1\24\1\13"+
"\1\56\1\22\1\11\1\21\1\16\5\6\1\52\3\6\1\60\1\57"+
"\1\64\1\61\1\65\1\66\1\73\1\37\1\20\1\32\1\35\1\12"+
"\1\14\1\45\1\46\1\7\1\4\1\51\1\30\1\43\1\34\1\33"+
"\1\44\1\27\1\41\1\26\1\36\1\40\1\47\1\50\1\17\1\42"+
"\1\4\1\70\1\75\1\71\1\0\1\4\1\0\1\37\1\77\1\32"+
"\1\35\1\12\1\15\1\45\1\46\1\10\1\4\1\51\1\30\1\43"+
"\1\100\1\33\1\44\1\27\1\101\1\26\1\102\1\40\1\47\1\50"+
"\1\17\1\42\1\4\1\31\1\63\1\72\1\74\41\5\2\0\4\4"+
"\4\0\1\4\2\0\1\5\7\0\1\4\4\0\1\4\5\0\27\4"+
"\1\0\37\4\1\0\u013f\4\31\0\162\4\4\0\14\4\16\0\5\4"+
"\11\0\1\4\21\0\130\5\5\0\23\5\12\0\1\4\13\0\1\4"+
"\1\0\3\4\1\0\1\4\1\0\24\4\1\0\54\4\1\0\46\4"+
"\1\0\5\4\4\0\202\4\1\0\4\5\3\0\105\4\1\0\46\4"+
"\2\0\2\4\6\0\20\4\41\0\46\4\2\0\1\4\7\0\47\4"+
"\11\0\21\5\1\0\27\5\1\0\3\5\1\0\1\5\1\0\2\5"+
"\1\0\1\5\13\0\33\4\5\0\3\4\15\0\4\5\14\0\6\5"+
"\13\0\32\4\5\0\13\4\16\5\7\0\12\5\4\0\2\4\1\5"+
"\143\4\1\0\1\4\10\5\1\0\6\5\2\4\2\5\1\0\4\5"+
"\2\4\12\5\3\4\2\0\1\4\17\0\1\5\1\4\1\5\36\4"+
"\33\5\2\0\3\4\60\0\46\4\13\5\1\4\u014f\0\3\5\66\4"+
"\2\0\1\5\1\4\20\5\2\0\1\4\4\5\3\0\12\4\2\5"+
"\2\0\12\5\21\0\3\5\1\0\10\4\2\0\2\4\2\0\26\4"+
"\1\0\7\4\1\0\1\4\3\0\4\4\2\0\1\5\1\4\7\5"+
"\2\0\2\5\2\0\3\5\11\0\1\5\4\0\2\4\1\0\3\4"+
"\2\5\2\0\12\5\4\4\15\0\3\5\1\0\6\4\4\0\2\4"+
"\2\0\26\4\1\0\7\4\1\0\2\4\1\0\2\4\1\0\2\4"+
"\2\0\1\5\1\0\5\5\4\0\2\5\2\0\3\5\13\0\4\4"+
"\1\0\1\4\7\0\14\5\3\4\14\0\3\5\1\0\11\4\1\0"+
"\3\4\1\0\26\4\1\0\7\4\1\0\2\4\1\0\5\4\2\0"+
"\1\5\1\4\10\5\1\0\3\5\1\0\3\5\2\0\1\4\17\0"+
"\2\4\2\5\2\0\12\5\1\0\1\4\17\0\3\5\1\0\10\4"+
"\2\0\2\4\2\0\26\4\1\0\7\4\1\0\2\4\1\0\5\4"+
"\2\0\1\5\1\4\6\5\3\0\2\5\2\0\3\5\10\0\2\5"+
"\4\0\2\4\1\0\3\4\4\0\12\5\1\0\1\4\20\0\1\5"+
"\1\4\1\0\6\4\3\0\3\4\1\0\4\4\3\0\2\4\1\0"+
"\1\4\1\0\2\4\3\0\2\4\3\0\3\4\3\0\10\4\1\0"+
"\3\4\4\0\5\5\3\0\3\5\1\0\4\5\11\0\1\5\17\0"+
"\11\5\11\0\1\4\7\0\3\5\1\0\10\4\1\0\3\4\1\0"+
"\27\4\1\0\12\4\1\0\5\4\4\0\7\5\1\0\3\5\1\0"+
"\4\5\7\0\2\5\11\0\2\4\4\0\12\5\22\0\2\5\1\0"+
"\10\4\1\0\3\4\1\0\27\4\1\0\12\4\1\0\5\4\2\0"+
"\1\5\1\4\7\5\1\0\3\5\1\0\4\5\7\0\2\5\7\0"+
"\1\4\1\0\2\4\4\0\12\5\22\0\2\5\1\0\10\4\1\0"+
"\3\4\1\0\27\4\1\0\20\4\4\0\6\5\2\0\3\5\1\0"+
"\4\5\11\0\1\5\10\0\2\4\4\0\12\5\22\0\2\5\1\0"+
"\22\4\3\0\30\4\1\0\11\4\1\0\1\4\2\0\7\4\3\0"+
"\1\5\4\0\6\5\1\0\1\5\1\0\10\5\22\0\2\5\15\0"+
"\60\4\1\5\2\4\7\5\4\0\10\4\10\5\1\0\12\5\47\0"+
"\2\4\1\0\1\4\2\0\2\4\1\0\1\4\2\0\1\4\6\0"+
"\4\4\1\0\7\4\1\0\3\4\1\0\1\4\1\0\1\4\2\0"+
"\2\4\1\0\4\4\1\5\2\4\6\5\1\0\2\5\1\4\2\0"+
"\5\4\1\0\1\4\1\0\6\5\2\0\12\5\2\0\2\4\42\0"+
"\1\4\27\0\2\5\6\0\12\5\13\0\1\5\1\0\1\5\1\0"+
"\1\5\4\0\2\5\10\4\1\0\42\4\6\0\24\5\1\0\2\5"+
"\4\4\4\0\10\5\1\0\44\5\11\0\1\5\71\0\42\4\1\0"+
"\5\4\1\0\2\4\1\0\7\5\3\0\4\5\6\0\12\5\6\0"+
"\6\4\4\5\106\0\46\4\12\0\51\4\7\0\132\4\5\0\104\4"+
"\5\0\122\4\6\0\7\4\1\0\77\4\1\0\1\4\1\0\4\4"+
"\2\0\7\4\1\0\1\4\1\0\4\4\2\0\47\4\1\0\1\4"+
"\1\0\4\4\2\0\37\4\1\0\1\4\1\0\4\4\2\0\7\4"+
"\1\0\1\4\1\0\4\4\2\0\7\4\1\0\7\4\1\0\27\4"+
"\1\0\37\4\1\0\1\4\1\0\4\4\2\0\7\4\1\0\47\4"+
"\1\0\23\4\16\0\11\5\56\0\125\4\14\0\u026c\4\2\0\10\4"+
"\12\0\32\4\5\0\113\4\3\0\3\4\17\0\15\4\1\0\4\4"+
"\3\5\13\0\22\4\3\5\13\0\22\4\2\5\14\0\15\4\1\0"+
"\3\4\1\0\2\5\14\0\64\4\40\5\3\0\1\4\3\0\2\4"+
"\1\5\2\0\12\5\41\0\3\5\2\0\12\5\6\0\130\4\10\0"+
"\51\4\1\5\126\0\35\4\3\0\14\5\4\0\14\5\12\0\12\5"+
"\36\4\2\0\5\4\u038b\0\154\4\224\0\234\4\4\0\132\4\6\0"+
"\26\4\2\0\6\4\2\0\46\4\2\0\6\4\2\0\10\4\1\0"+
"\1\4\1\0\1\4\1\0\1\4\1\0\37\4\2\0\65\4\1\0"+
"\7\4\1\0\1\4\3\0\3\4\1\0\7\4\3\0\4\4\2\0"+
"\6\4\4\0\15\4\5\0\3\4\1\0\7\4\17\0\4\5\32\0"+
"\5\5\20\0\2\4\23\0\1\4\13\0\4\5\6\0\6\5\1\0"+
"\1\4\15\0\1\4\40\0\22\4\36\0\15\5\4\0\1\5\3\0"+
"\6\5\27\0\1\4\4\0\1\4\2\0\12\4\1\0\1\4\3\0"+
"\5\4\6\0\1\4\1\0\1\4\1\0\1\4\1\0\4\4\1\0"+
"\3\4\1\0\7\4\3\0\3\4\5\0\5\4\26\0\44\4\u0e81\0"+
"\3\4\31\0\11\4\6\5\1\0\5\4\2\0\5\4\4\0\126\4"+
"\2\0\2\5\2\0\3\4\1\0\137\4\5\0\50\4\4\0\136\4"+
"\21\0\30\4\70\0\20\4\u0200\0\u19b6\4\112\0\u51a6\4\132\0\u048d\4"+
"\u0773\0\u2ba4\4\u215c\0\u012e\4\2\0\73\4\225\0\7\4\14\0\5\4"+
"\5\0\1\4\1\5\12\4\1\0\15\4\1\0\5\4\1\0\1\4"+
"\1\0\2\4\1\0\2\4\1\0\154\4\41\0\u016b\4\22\0\100\4"+
"\2\0\66\4\50\0\15\4\3\0\20\5\20\0\4\5\17\0\2\4"+
"\30\0\3\4\31\0\1\4\6\0\5\4\1\0\207\4\2\0\1\5"+
"\4\0\1\4\13\0\12\5\7\0\32\4\4\0\1\4\1\0\32\4"+
"\12\0\132\4\3\0\6\4\2\0\6\4\2\0\6\4\2\0\3\4"+
"\3\0\2\4\3\0\2\4\22\0\3\5\4\0";
/**
* Translates characters to character classes
*/
private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
/**
* Translates DFA states to action switch labels.
*/
private static final int [] ZZ_ACTION = zzUnpackAction();
private static final String ZZ_ACTION_PACKED_0 =
"\3\0\1\1\2\0\1\2\1\3\1\4\1\5\1\6"+
"\1\5\1\7\1\5\1\10\1\5\1\6\2\5\1\11"+
"\1\12\1\13\1\14\1\2\2\5\1\15\16\5\1\16"+
"\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26"+
"\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1\36"+
"\1\37\1\40\2\41\1\42\1\43\2\4\4\1\1\44"+
"\1\45\1\46\1\1\2\47\1\50\1\1\1\51\1\0"+
"\1\52\1\53\1\54\1\0\1\55\1\56\1\57\1\60"+
"\1\61\4\5\1\62\5\5\1\0\1\5\1\63\1\64"+
"\1\65\1\66\1\67\1\70\1\71\1\0\13\5\1\72"+
"\3\5\1\73\2\5\1\74\2\5\1\75\4\5\1\76"+
"\24\5\1\77\1\100\1\101\1\102\1\103\1\104\1\73"+
"\1\105\1\106\1\107\1\110\1\111\1\112\1\113\1\114"+
"\1\115\1\116\1\117\1\120\1\121\1\122\1\123\1\124"+
"\1\1\1\125\1\126\1\55\1\0\1\127\11\5\1\130"+
"\2\5\1\131\3\5\1\132\1\133\2\5\2\64\1\134"+
"\1\0\1\5\1\135\20\5\1\136\2\5\1\137\1\5"+
"\1\140\4\5\1\141\4\5\1\142\1\103\1\143\1\5"+
"\1\144\1\145\1\5\1\146\5\5\1\147\5\5\1\150"+
"\10\5\1\151\1\152\1\153\1\154\1\155\1\1\3\5"+
"\1\156\3\5\1\157\2\5\1\160\6\5\1\161\1\162"+
"\2\5\1\0\10\5\1\163\5\5\1\164\1\165\3\5"+
"\1\166\1\167\1\5\1\170\2\5\1\171\1\172\12\5"+
"\1\173\5\5\1\174\1\5\1\175\1\5\1\176\1\177"+
"\1\5\1\200\1\5\1\201\1\5\1\202\10\5\1\203"+
"\2\5\1\74\3\5\1\0\1\204\1\0\3\5\1\205"+
"\1\5\1\206\1\5\1\207\1\5\1\210\1\211\1\212"+
"\10\5\1\213\2\5\1\214\13\5\1\215\2\5\1\216"+
"\1\217\1\220\3\5\1\221\7\5\1\222\1\5\1\0"+
"\2\5\1\223\1\224\10\5\1\225\5\5\1\226\1\5"+
"\1\227\1\230\14\5\1\231\1\232\2\5\1\233\3\5"+
"\1\0\1\5\1\234\1\235\3\5\1\236\12\5\1\237"+
"\1\240\1\241\1\242\1\243\1\244\1\5\1\245\1\246"+
"\2\5\1\247\4\5\1\250\1\5\1\0\3\5\1\251"+
"\2\5\1\252\1\253\1\5\1\254\1\255\1\5\1\256"+
"\1\5\1\257\1\5\1\260\3\5\1\261\1\5\1\0"+
"\1\262\3\5\1\263\1\264\1\265\1\266\1\5\1\267"+
"\2\5\1\270\1\0\5\5\1\271\1\0\1\5\1\272"+
"\1\273\1\5\1\274\1\0\2\5\1\0\1\5\1\275"+
"\1\276\1\277";
private static int [] zzUnpackAction() {
int [] result = new int[562];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
}
private static int zzUnpackAction(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int count = packed.charAt(i++);
int value = packed.charAt(i++);
do result[j++] = value; while (--count > 0);
}
return j;
}
/**
* Translates a state to a row index in the transition table
*/
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
private static final String ZZ_ROWMAP_PACKED_0 =
"\0\0\0\103\0\206\0\311\0\u010c\0\u014f\0\u0192\0\u01d5"+
"\0\u0218\0\u025b\0\u029e\0\u02e1\0\u0324\0\u0367\0\u03aa\0\u03ed"+
"\0\u0430\0\u0473\0\u04b6\0\u04f9\0\u053c\0\u0192\0\u057f\0\u05c2"+
"\0\u0605\0\u0648\0\u0192\0\u068b\0\u06ce\0\u0711\0\u0754\0\u0797"+
"\0\u07da\0\u081d\0\u0860\0\u08a3\0\u08e6\0\u0929\0\u096c\0\u09af"+
"\0\u09f2\0\u0192\0\u0192\0\u0a35\0\u0192\0\u0192\0\u0a78\0\u0abb"+
"\0\u0afe\0\u0b41\0\u0b84\0\u0bc7\0\u0c0a\0\u0c4d\0\u0192\0\u0192"+
"\0\u0192\0\u0192\0\u0192\0\u0c90\0\u0192\0\u0cd3\0\u0192\0\u0d16"+
"\0\u0192\0\u0d59\0\u0192\0\u0d9c\0\u0ddf\0\u0e22\0\u0192\0\u0192"+
"\0\u0192\0\u0e65\0\u0192\0\u0ea8\0\u0eeb\0\u0f2e\0\u0f71\0\u01d5"+
"\0\u0192\0\u0192\0\u0fb4\0\u0ff7\0\u0192\0\u0192\0\u025b\0\u103a"+
"\0\u107d\0\u10c0\0\u1103\0\u1146\0\u1189\0\u0192\0\u11cc\0\u120f"+
"\0\u1252\0\u1295\0\u12d8\0\u131b\0\u135e\0\u13a1\0\u13e4\0\u0192"+
"\0\u0192\0\u0192\0\u1427\0\u0192\0\u146a\0\u14ad\0\u14f0\0\u1533"+
"\0\u1576\0\u15b9\0\u15fc\0\u163f\0\u1682\0\u16c5\0\u1708\0\u174b"+
"\0\u025b\0\u178e\0\u17d1\0\u1814\0\u025b\0\u1857\0\u189a\0\u18dd"+
"\0\u1920\0\u1963\0\u025b\0\u19a6\0\u19e9\0\u1a2c\0\u1a6f\0\u025b"+
"\0\u1ab2\0\u1af5\0\u1b38\0\u1b7b\0\u1bbe\0\u1c01\0\u1c44\0\u1c87"+
"\0\u1cca\0\u1d0d\0\u1d50\0\u1d93\0\u1dd6\0\u1e19\0\u1e5c\0\u1e9f"+
"\0\u1ee2\0\u1f25\0\u1f68\0\u1fab\0\u0192\0\u1fee\0\u0192\0\u0192"+
"\0\u0192\0\u0192\0\u0192\0\u0192\0\u2031\0\u0192\0\u2074\0\u20b7"+
"\0\u0192\0\u0192\0\u0192\0\u0192\0\u0192\0\u0192\0\u0192\0\u0192"+
"\0\u0192\0\u0192\0\u0192\0\u20fa\0\u0192\0\u0192\0\u213d\0\u213d"+
"\0\u025b\0\u2180\0\u21c3\0\u2206\0\u2249\0\u228c\0\u22cf\0\u2312"+
"\0\u2355\0\u2398\0\u025b\0\u23db\0\u241e\0\u2461\0\u24a4\0\u24e7"+
"\0\u252a\0\u131b\0\u256d\0\u25b0\0\u25f3\0\u0192\0\u2636\0\u0192"+
"\0\u2679\0\u26bc\0\u025b\0\u26ff\0\u2742\0\u2785\0\u27c8\0\u280b"+
"\0\u284e\0\u2891\0\u28d4\0\u2917\0\u295a\0\u299d\0\u29e0\0\u2a23"+
"\0\u2a66\0\u2aa9\0\u2aec\0\u025b\0\u2b2f\0\u2b72\0\u025b\0\u2bb5"+
"\0\u025b\0\u2bf8\0\u2c3b\0\u2c7e\0\u2cc1\0\u025b\0\u2d04\0\u2d47"+
"\0\u2d8a\0\u2dcd\0\u025b\0\u025b\0\u025b\0\u2e10\0\u025b\0\u025b"+
"\0\u2e53\0\u025b\0\u2e96\0\u2ed9\0\u2f1c\0\u2f5f\0\u2fa2\0\u025b"+
"\0\u2fe5\0\u3028\0\u306b\0\u30ae\0\u30f1\0\u025b\0\u3134\0\u3177"+
"\0\u31ba\0\u31fd\0\u3240\0\u3283\0\u32c6\0\u3309\0\u0192\0\u0192"+
"\0\u0192\0\u334c\0\u0192\0\u338f\0\u33d2\0\u3415\0\u3458\0\u025b"+
"\0\u349b\0\u34de\0\u3521\0\u025b\0\u3564\0\u35a7\0\u025b\0\u35ea"+
"\0\u362d\0\u3670\0\u36b3\0\u36f6\0\u3739\0\u025b\0\u0192\0\u377c"+
"\0\u37bf\0\u3802\0\u3845\0\u3888\0\u38cb\0\u390e\0\u3951\0\u3994"+
"\0\u39d7\0\u3a1a\0\u025b\0\u3a5d\0\u3aa0\0\u3ae3\0\u3b26\0\u3b69"+
"\0\u025b\0\u025b\0\u3bac\0\u3bef\0\u3c32\0\u025b\0\u025b\0\u3c75"+
"\0\u025b\0\u3cb8\0\u3cfb\0\u025b\0\u025b\0\u3d3e\0\u3d81\0\u3dc4"+
"\0\u3e07\0\u3e4a\0\u3e8d\0\u3ed0\0\u3f13\0\u3f56\0\u3f99\0\u025b"+
"\0\u3fdc\0\u401f\0\u4062\0\u40a5\0\u40e8\0\u025b\0\u412b\0\u025b"+
"\0\u416e\0\u41b1\0\u025b\0\u41f4\0\u025b\0\u4237\0\u0192\0\u427a"+
"\0\u025b\0\u42bd\0\u4300\0\u4343\0\u4386\0\u43c9\0\u440c\0\u444f"+
"\0\u4492\0\u025b\0\u44d5\0\u4518\0\u025b\0\u455b\0\u459e\0\u45e1"+
"\0\u4624\0\u0192\0\u4667\0\u46aa\0\u46ed\0\u4730\0\u025b\0\u4773"+
"\0\u025b\0\u47b6\0\u025b\0\u47f9\0\u025b\0\u025b\0\u483c\0\u487f"+
"\0\u48c2\0\u4905\0\u4948\0\u498b\0\u49ce\0\u4a11\0\u4a54\0\u025b"+
"\0\u4a97\0\u4ada\0\u4b1d\0\u4b60\0\u4ba3\0\u4be6\0\u4c29\0\u4c6c"+
"\0\u4caf\0\u4cf2\0\u4d35\0\u4d78\0\u4dbb\0\u4dfe\0\u025b\0\u4e41"+
"\0\u4e84\0\u025b\0\u025b\0\u025b\0\u4ec7\0\u4f0a\0\u4f4d\0\u025b"+
"\0\u4f90\0\u4fd3\0\u5016\0\u5059\0\u509c\0\u50df\0\u5122\0\u025b"+
"\0\u5165\0\u51a8\0\u51eb\0\u522e\0\u025b\0\u025b\0\u5271\0\u52b4"+
"\0\u52f7\0\u533a\0\u537d\0\u53c0\0\u5403\0\u5446\0\u025b\0\u5489"+
"\0\u54cc\0\u550f\0\u5552\0\u5595\0\u025b\0\u55d8\0\u025b\0\u561b"+
"\0\u565e\0\u56a1\0\u56e4\0\u5727\0\u576a\0\u57ad\0\u57f0\0\u5833"+
"\0\u5876\0\u58b9\0\u58fc\0\u593f\0\u025b\0\u025b\0\u5982\0\u59c5"+
"\0\u025b\0\u5a08\0\u5a4b\0\u5a8e\0\u5ad1\0\u5b14\0\u025b\0\u025b"+
"\0\u5b57\0\u5b9a\0\u5bdd\0\u025b\0\u5c20\0\u5c63\0\u5ca6\0\u5ce9"+
"\0\u5d2c\0\u5d6f\0\u5db2\0\u5df5\0\u5e38\0\u5e7b\0\u025b\0\u025b"+
"\0\u025b\0\u025b\0\u025b\0\u025b\0\u5ebe\0\u025b\0\u025b\0\u5f01"+
"\0\u5f44\0\u025b\0\u5f87\0\u5fca\0\u600d\0\u6050\0\u025b\0\u6093"+
"\0\u60d6\0\u6119\0\u615c\0\u619f\0\u025b\0\u61e2\0\u6225\0\u025b"+
"\0\u025b\0\u6268\0\u025b\0\u025b\0\u62ab\0\u025b\0\u62ee\0\u025b"+
"\0\u6331\0\u025b\0\u6374\0\u63b7\0\u63fa\0\u025b\0\u643d\0\u6480"+
"\0\u025b\0\u64c3\0\u6506\0\u6549\0\u025b\0\u025b\0\u025b\0\u025b"+
"\0\u658c\0\u025b\0\u65cf\0\u6612\0\u025b\0\u6655\0\u6698\0\u66db"+
"\0\u671e\0\u6761\0\u67a4\0\u025b\0\u67e7\0\u682a\0\u025b\0\u025b"+
"\0\u686d\0\u025b\0\u68b0\0\u68f3\0\u6936\0\u6979\0\u69bc\0\u025b"+
"\0\u0192\0\u025b";
private static int [] zzUnpackRowMap() {
int [] result = new int[562];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
}
private static int zzUnpackRowMap(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int high = packed.charAt(i++) << 16;
result[j++] = high | packed.charAt(i++);
}
return j;
}
/**
* The transition table of the DFA
*/
private static final int [] ZZ_TRANS = zzUnpackTrans();
private static final String ZZ_TRANS_PACKED_0 =
"\1\7\2\10\1\11\1\12\1\7\1\13\2\14\1\15"+
"\1\16\1\17\2\20\1\21\1\22\1\23\1\24\1\25"+
"\1\26\1\27\1\30\1\31\1\12\1\32\1\33\1\34"+
"\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44"+
"\1\45\1\46\1\47\1\50\1\12\1\51\1\12\1\13"+
"\1\52\1\53\1\54\1\55\1\56\1\57\1\60\1\61"+
"\1\62\1\63\1\64\1\65\1\66\1\67\1\70\1\71"+
"\1\72\1\73\2\7\1\23\1\36\1\43\1\40\1\74"+
"\1\75\1\76\20\74\1\77\51\74\1\100\5\74\24\101"+
"\1\102\56\101\1\103\3\104\1\105\2\103\2\105\1\103"+
"\1\105\1\103\2\105\1\103\2\105\1\103\1\106\1\107"+
"\2\103\3\105\1\103\20\105\20\103\1\110\3\103\1\111"+
"\4\105\1\112\1\113\1\114\20\112\1\115\57\112\1\116"+
"\1\113\1\114\73\116\1\117\4\116\104\0\2\10\1\120"+
"\102\0\1\11\103\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\21\12\24\0\4\12\6\0\1\13"+
"\1\121\1\122\1\123\1\124\1\0\1\125\1\126\1\13"+
"\33\0\1\13\34\0\5\12\1\0\1\12\1\0\2\127"+
"\3\12\5\0\1\130\2\12\1\0\2\12\1\131\6\12"+
"\1\132\7\12\24\0\1\12\1\131\2\12\6\0\1\123"+
"\7\0\1\123\33\0\1\123\34\0\5\12\1\0\1\12"+
"\1\0\3\12\1\133\1\12\5\0\2\12\1\134\1\0"+
"\2\12\1\135\16\12\24\0\1\12\1\135\2\12\61\0"+
"\1\136\25\0\3\12\2\137\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\1\12\1\140\3\12\1\141\1\142"+
"\1\143\11\12\24\0\2\12\1\143\1\12\6\0\1\13"+
"\1\121\1\122\1\123\1\124\1\0\1\125\1\126\1\13"+
"\1\144\32\0\1\13\34\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\1\12\1\145\17\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\10\12\1\146\10\12\24\0\4\12\21\0"+
"\1\147\2\0\1\150\34\0\1\151\102\0\1\152\45\0"+
"\1\153\34\0\1\154\47\0\1\155\60\0\3\12\2\156"+
"\1\0\1\157\1\0\5\12\5\0\3\12\1\0\1\160"+
"\3\12\1\161\1\12\1\162\12\12\24\0\3\12\1\161"+
"\4\0\3\12\2\163\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\5\12\1\164\13\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\2\12\1\165"+
"\1\0\1\12\1\166\3\12\1\167\1\170\12\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\2\171\3\12"+
"\5\0\3\12\1\0\2\12\1\172\1\12\1\173\1\12"+
"\1\174\1\175\2\12\1\176\6\12\24\0\1\12\1\172"+
"\1\175\1\173\4\0\5\12\1\0\1\177\1\0\5\12"+
"\5\0\3\12\1\0\1\12\1\200\4\12\1\201\12\12"+
"\24\0\4\12\4\0\5\12\1\0\1\202\1\0\5\12"+
"\5\0\3\12\1\0\21\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\1\12"+
"\1\203\5\12\1\204\1\205\3\12\1\206\4\12\24\0"+
"\2\12\1\204\1\12\4\0\5\12\1\0\1\12\1\0"+
"\4\12\1\207\5\0\1\210\1\12\1\211\1\0\2\12"+
"\1\212\1\213\15\12\24\0\1\207\1\212\2\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\1\214\2\12"+
"\1\0\7\12\1\215\2\12\1\216\6\12\24\0\2\12"+
"\1\215\1\12\4\0\5\12\1\0\1\217\1\0\5\12"+
"\5\0\3\12\1\0\6\12\1\220\12\12\24\0\4\12"+
"\4\0\5\12\1\0\1\221\1\0\5\12\5\0\3\12"+
"\1\0\21\12\24\0\4\12\4\0\5\12\1\0\1\12"+
"\1\0\5\12\5\0\3\12\1\0\1\12\1\222\17\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\5\12\1\223\1\12\1\224\11\12"+
"\24\0\2\12\1\224\1\12\4\0\5\12\1\0\1\225"+
"\1\0\5\12\5\0\3\12\1\0\1\12\1\226\5\12"+
"\1\227\11\12\24\0\2\12\1\227\1\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\1\12"+
"\1\230\3\12\1\231\13\12\24\0\4\12\4\0\3\12"+
"\2\232\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\7\12\1\233\4\12\1\234\4\12\24\0\2\12\1\233"+
"\1\12\61\0\1\235\101\0\1\236\103\0\1\237\102\0"+
"\1\240\1\241\101\0\1\242\1\0\1\243\100\0\1\244"+
"\2\0\1\245\77\0\1\246\3\0\1\247\75\0\1\250"+
"\5\0\1\251\75\0\1\252\21\0\1\74\2\0\20\74"+
"\1\0\51\74\1\0\5\74\1\0\1\75\116\0\1\253"+
"\5\0\1\254\51\0\1\255\1\256\1\257\1\260\1\261"+
"\1\262\21\0\1\263\62\0\3\104\103\0\5\105\1\0"+
"\1\105\1\0\5\105\5\0\3\105\1\0\21\105\24\0"+
"\4\105\22\0\1\264\60\0\1\112\2\0\20\112\1\0"+
"\57\112\1\0\1\113\124\0\1\265\57\0\1\116\2\0"+
"\73\116\1\0\4\116\76\0\1\266\12\0\1\123\3\0"+
"\1\124\1\0\1\125\1\126\1\123\33\0\1\123\36\0"+
"\1\267\4\0\1\270\2\0\1\267\3\0\1\270\27\0"+
"\1\267\34\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\5\12\1\271\13\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\1\272\2\12"+
"\1\0\1\12\1\273\2\12\1\274\5\12\1\275\6\12"+
"\24\0\3\12\1\274\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\12\12\1\276\6\12\24\0"+
"\4\12\4\0\3\12\2\277\1\0\1\300\1\0\5\12"+
"\5\0\3\12\1\0\4\12\1\301\14\12\24\0\3\12"+
"\1\301\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\1\302\2\12\1\0\21\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\3\12"+
"\1\303\2\12\1\304\12\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\7\12"+
"\1\305\11\12\24\0\2\12\1\305\1\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\7\12"+
"\1\306\11\12\24\0\2\12\1\306\1\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\2\12\1\307\1\0"+
"\21\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\2\12\1\310\16\12\24\0"+
"\1\12\1\310\2\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\1\12\1\311\17\12\24\0"+
"\4\12\6\0\1\312\3\0\1\312\1\0\3\312\1\0"+
"\1\312\11\0\1\312\2\0\1\312\1\0\1\312\12\0"+
"\1\312\24\0\1\312\7\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\7\12\1\313\11\12\24\0"+
"\2\12\1\313\1\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\2\12\1\314\7\12\1\315"+
"\6\12\24\0\1\12\1\314\2\12\1\147\1\316\1\317"+
"\100\147\61\0\1\320\50\0\1\321\57\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\2\12\1\322"+
"\16\12\24\0\1\12\1\322\2\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\4\12\1\323"+
"\2\12\1\324\11\12\24\0\2\12\1\324\1\323\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\7\12\1\325\11\12\24\0\2\12\1\325\1\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\5\12\1\326\13\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\12\12\1\327"+
"\6\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\4\12\1\330\5\0\3\12\1\0\21\12\24\0\1\330"+
"\3\12\4\0\5\12\1\0\1\12\1\0\4\12\1\331"+
"\5\0\1\332\2\12\1\0\2\12\1\333\16\12\24\0"+
"\1\331\1\333\2\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\1\12\1\334\3\12\1\335"+
"\13\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\2\12\1\336\16\12\24\0"+
"\1\12\1\336\2\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\1\337\1\12\1\340\1\0\21\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\7\12\1\341\11\12\24\0\2\12\1\341"+
"\1\12\4\0\5\12\1\0\1\342\1\0\5\12\5\0"+
"\3\12\1\0\21\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\14\12\1\343"+
"\4\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\4\12\1\344\14\12\24\0"+
"\3\12\1\344\4\0\5\12\1\0\1\345\1\0\5\12"+
"\5\0\3\12\1\0\21\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\3\12\1\346\1\12\5\0\3\12"+
"\1\0\16\12\1\347\2\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\1\350"+
"\3\12\1\351\14\12\24\0\3\12\1\351\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\2\12\1\352\1\0"+
"\21\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\2\12\1\353\1\0\1\354\20\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\6\12\1\355\1\12\1\356\10\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\12\12\1\357\6\12\24\0\4\12\4\0"+
"\3\12\2\360\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\7\12\1\361\11\12\24\0\2\12\1\361\1\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\1\362"+
"\2\12\1\0\21\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\2\12\1\363\1\0\21\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\3\12\1\364\15\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\3\12\1\365\15\12\24\0\4\12\4\0\3\12"+
"\2\366\1\0\1\367\1\0\5\12\5\0\3\12\1\0"+
"\21\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\2\12\1\370\1\0\21\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\3\12\1\371\15\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\2\372\3\12\5\0\2\12\1\373"+
"\1\0\1\374\3\12\1\375\5\12\1\376\6\12\24\0"+
"\3\12\1\375\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\2\12\1\377\16\12\24\0\1\12"+
"\1\377\2\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\1\u0100\2\12\1\0\21\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\15\12\1\u0101\3\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\1\u0102\20\12"+
"\24\0\4\12\4\0\3\12\2\u0103\1\0\1\u0104\1\0"+
"\5\12\5\0\3\12\1\0\1\12\1\u0105\17\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\4\12\1\u0106\14\12\24\0\3\12\1\u0106"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\4\12\1\u0107\14\12\24\0\3\12\1\u0107\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\1\12\1\u0108\17\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\2\12\1\u0109\1\0\21\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\2\12\1\u010a\16\12\24\0\1\12"+
"\1\u010a\2\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\4\12\1\u010b\14\12\24\0\3\12"+
"\1\u010b\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\5\12\1\u010c\13\12\24\0\4\12\4\0"+
"\3\12\2\u010d\1\0\1\u010e\1\0\5\12\5\0\3\12"+
"\1\0\21\12\24\0\4\12\61\0\1\u010f\102\0\1\u0110"+
"\102\0\1\u0111\3\0\1\u0112\76\0\1\u0113\21\0\1\264"+
"\1\103\1\u0114\100\264\6\0\1\267\7\0\1\267\33\0"+
"\1\267\34\0\5\12\1\0\1\u0115\1\0\5\12\5\0"+
"\3\12\1\0\21\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\6\12\1\u0116"+
"\12\12\24\0\4\12\4\0\5\12\1\0\1\u0117\1\0"+
"\5\12\5\0\3\12\1\0\1\12\1\u0118\17\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\5\12\1\u0119\13\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\2\12\1\u011a"+
"\1\0\1\12\1\u011b\17\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\4\12"+
"\1\u011c\14\12\24\0\3\12\1\u011c\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\1\u011d\20\12"+
"\24\0\4\12\4\0\5\12\1\0\1\u011e\1\0\5\12"+
"\5\0\3\12\1\0\21\12\24\0\4\12\4\0\5\12"+
"\1\0\1\u011f\1\0\5\12\5\0\3\12\1\0\21\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\11\12\1\u0120\7\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\1\u0121"+
"\2\12\1\0\21\12\24\0\4\12\4\0\5\12\1\0"+
"\1\u0122\1\0\5\12\5\0\3\12\1\0\6\12\1\u0123"+
"\12\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\1\u0124\2\12\1\0\21\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\1\u0125\20\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\11\12\1\u0126"+
"\7\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\21\12\6\0\1\u0127\15\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\5\12\1\u0128\13\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\1\12\1\u0129\17\12\24\0\4\12\1\0\1\316\131\0"+
"\1\u012a\56\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\13\12\1\u012b\5\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\15\12\1\u012c\3\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\1\12\1\u012d"+
"\17\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\1\u012e\3\12\1\u012f\14\12"+
"\24\0\3\12\1\u012f\4\0\5\12\1\0\1\u0130\1\0"+
"\5\12\5\0\3\12\1\0\21\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\7\12\1\u0131\11\12\24\0\2\12\1\u0131\1\12\4\0"+
"\5\12\1\0\1\u0132\1\0\5\12\5\0\3\12\1\0"+
"\21\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\4\12\1\u0133\14\12\24\0"+
"\3\12\1\u0133\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\13\12\1\u0134\5\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\1\u0135"+
"\2\12\1\0\21\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\1\u0136\2\12\1\0\21\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\1\u0137\2\12\1\0\4\12\1\u0138\14\12\24\0"+
"\3\12\1\u0138\4\0\5\12\1\0\1\u0139\1\0\5\12"+
"\5\0\3\12\1\0\21\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\2\12\1\u013a\1\0"+
"\21\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\7\12\1\u013b\11\12\24\0"+
"\2\12\1\u013b\1\12\4\0\5\12\1\0\1\12\1\0"+
"\3\12\1\u013c\1\12\5\0\3\12\1\0\21\12\24\0"+
"\4\12\4\0\5\12\1\0\1\u013d\1\0\5\12\5\0"+
"\3\12\1\0\21\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\2\12\1\u013e"+
"\16\12\24\0\1\12\1\u013e\2\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\4\12\1\u013f"+
"\14\12\24\0\3\12\1\u013f\4\0\5\12\1\0\1\12"+
"\1\0\5\12\5\0\3\12\1\0\6\12\1\u0140\12\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\2\12\1\u0141\1\0\21\12\24\0\4\12\4\0"+
"\5\12\1\0\1\u0142\1\0\5\12\5\0\3\12\1\0"+
"\21\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\7\12\1\u0143\11\12\24\0"+
"\2\12\1\u0143\1\12\4\0\5\12\1\0\1\u0100\1\0"+
"\5\12\5\0\3\12\1\0\21\12\24\0\4\12\4\0"+
"\5\12\1\0\1\u0144\1\0\5\12\5\0\3\12\1\0"+
"\21\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\1\u0145\2\12\1\0\21\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\1\12\1\u0146\17\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\1\12"+
"\1\u0147\2\12\1\u0148\14\12\24\0\3\12\1\u0148\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\2\12\1\u0149\16\12\24\0\1\12\1\u0149\2\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\5\12\1\u014a\13\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\5\12\1\u014b"+
"\13\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\1\12\1\u014c\17\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\6\12\1\u014d\12\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\2\12\1\u014e"+
"\1\0\21\12\24\0\4\12\4\0\5\12\1\0\1\12"+
"\1\0\5\12\5\0\3\12\1\0\6\12\1\u014f\12\12"+
"\24\0\4\12\4\0\5\12\1\0\1\u0150\1\0\5\12"+
"\5\0\3\12\1\0\21\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\17\12"+
"\1\u0151\1\12\24\0\4\12\4\0\5\12\1\0\1\12"+
"\1\0\5\12\5\0\3\12\1\0\15\12\1\u0152\3\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\12\12\1\u0153\2\12\1\u0154\3\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\13\12\1\u0155\5\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\1\12\1\u0156\17\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\6\12"+
"\1\u0157\12\12\24\0\4\12\4\0\5\12\1\0\1\12"+
"\1\0\5\12\5\0\3\12\1\0\3\12\1\u0158\15\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\3\12\1\u0159\15\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\14\12\1\u015a\4\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\12\12"+
"\1\u015b\6\12\24\0\4\12\4\0\5\12\1\0\1\12"+
"\1\0\5\12\5\0\2\12\1\u015c\1\0\21\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\2\12\1\u015d\4\12\1\u015e\11\12\24\0"+
"\1\12\1\u015d\1\u015e\1\12\61\0\1\u015f\22\0\1\103"+
"\105\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\7\12\1\u0160\11\12\24\0\2\12\1\u0160\1\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\4\12\1\u0161\14\12\24\0\3\12\1\u0161\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\7\12\1\u0162\11\12\24\0\2\12\1\u0162\1\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\7\12\1\u0163\11\12\24\0\2\12\1\u0163\1\12\4\0"+
"\5\12\1\0\1\u0164\1\0\5\12\5\0\3\12\1\0"+
"\21\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\7\12\1\u0165\11\12\24\0"+
"\2\12\1\u0165\1\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\6\12\1\u0166\12\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\2\12\1\u0167\4\12\1\u0168\11\12\24\0"+
"\1\12\1\u0167\1\u0168\1\12\4\0\5\12\1\0\1\u0169"+
"\1\0\5\12\5\0\3\12\1\0\21\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\4\12\1\u016a\14\12\24\0\3\12\1\u016a\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\5\12\1\u016b\13\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\12\12\1\u016c"+
"\6\12\24\0\4\12\4\0\5\12\1\0\1\u016d\1\0"+
"\5\12\5\0\3\12\1\0\21\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\4\12\1\u016e\14\12\24\0\3\12\1\u016e\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\11\12"+
"\1\u016f\7\12\24\0\4\12\4\0\5\12\1\0\1\12"+
"\1\0\5\12\5\0\1\u0170\2\12\1\0\21\12\24\0"+
"\4\12\1\0\3\u0171\25\0\1\u0172\1\u0173\54\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\2\12\1\u0174\1\0"+
"\21\12\24\0\4\12\4\0\3\12\2\u0175\1\0\1\12"+
"\1\0\5\12\5\0\3\12\1\0\21\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\2\12"+
"\1\u0176\1\0\21\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\17\12\1\u0177"+
"\1\12\24\0\4\12\4\0\3\12\2\u0178\1\0\1\12"+
"\1\0\5\12\5\0\3\12\1\0\21\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\7\12\1\u0179\11\12\24\0\2\12\1\u0179\1\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\5\12\1\u017a\13\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\2\12\1\u017b\1\0"+
"\21\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\6\12\1\u017c\12\12\24\0"+
"\4\12\4\0\5\12\1\0\1\u017d\1\0\5\12\5\0"+
"\3\12\1\0\21\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\1\u017e\2\12\1\0\21\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\4\12\1\u017f\14\12\24\0\3\12"+
"\1\u017f\4\0\3\12\2\u0180\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\21\12\24\0\4\12\4\0\5\12"+
"\1\0\1\u0181\1\0\5\12\5\0\3\12\1\0\21\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\1\u0182\20\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\7\12\1\u0183\11\12\24\0\2\12\1\u0183\1\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\7\12\1\u0184\11\12\24\0\2\12\1\u0184\1\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\4\12\1\u0185\6\12\1\u0186\5\12\24\0\3\12\1\u0185"+
"\4\0\5\12\1\0\1\u0187\1\0\5\12\5\0\3\12"+
"\1\0\21\12\24\0\4\12\4\0\5\12\1\0\1\12"+
"\1\0\5\12\5\0\3\12\1\0\16\12\1\u0188\2\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\2\12\1\u0189\1\0\21\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\7\12\1\u018a\11\12\24\0\2\12\1\u018a\1\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\13\12\1\u018b\5\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\4\12\1\u018c"+
"\14\12\24\0\3\12\1\u018c\4\0\5\12\1\0\1\12"+
"\1\0\5\12\5\0\3\12\1\0\4\12\1\u018d\14\12"+
"\24\0\3\12\1\u018d\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\7\12\1\u018e\11\12\24\0"+
"\2\12\1\u018e\1\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\7\12\1\u018f\11\12\24\0"+
"\2\12\1\u018f\1\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\5\12\1\u0190\13\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\2\12\1\u0191\16\12\24\0\1\12\1\u0191"+
"\2\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\5\12\1\u0192\13\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\5\12\1\u0193\13\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\5\12\1\u0194"+
"\13\12\24\0\4\12\4\0\3\12\2\u0195\1\0\1\12"+
"\1\0\5\12\5\0\3\12\1\0\21\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\7\12\1\u0196\11\12\24\0\2\12\1\u0196\1\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\12\12\1\u0197\6\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\2\12\1\u0198\1\0"+
"\21\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\15\12\1\u0199\3\12\24\0"+
"\4\12\4\0\5\12\1\0\1\u019a\1\0\5\12\5\0"+
"\3\12\1\0\21\12\24\0\4\12\4\0\5\12\1\0"+
"\1\u019b\1\0\5\12\5\0\3\12\1\0\21\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\4\12\1\u019c\14\12\24\0\3\12\1\u019c"+
"\4\0\5\12\1\0\1\12\1\0\2\u019d\3\12\5\0"+
"\3\12\1\0\21\12\24\0\4\12\4\0\5\12\1\0"+
"\1\u019e\1\0\5\12\5\0\3\12\1\0\21\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\11\12\1\u019f\7\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\4\12\1\u01a0\14\12\24\0\3\12\1\u01a0\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\4\12"+
"\1\u01a1\14\12\24\0\3\12\1\u01a1\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\3\12\1\u01a2"+
"\15\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\2\12\1\u01a3\16\12\24\0"+
"\1\12\1\u01a3\2\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\7\12\1\u01a4\11\12\24\0"+
"\2\12\1\u01a4\1\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\1\u01a5\20\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\3\12\1\u01a6\15\12\24\0\4\12\4\0\3\12"+
"\2\u01a7\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\21\12\24\0\4\12\4\0\5\12\1\0\1\u01a8\1\0"+
"\5\12\5\0\3\12\1\0\21\12\24\0\4\12\4\0"+
"\3\12\2\u01a9\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\21\12\24\0\4\12\1\0\3\u0171\25\0\1\u0172"+
"\104\0\1\u01aa\53\0\5\12\1\0\1\u01ab\1\0\5\12"+
"\5\0\3\12\1\0\21\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\1\u01ac"+
"\20\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\2\12\1\u01ad\1\0\21\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\1\u01ae\20\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\7\12\1\u01af"+
"\11\12\24\0\2\12\1\u01af\1\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\5\12\1\u01b0"+
"\13\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\7\12\1\u01b1\11\12\24\0"+
"\2\12\1\u01b1\1\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\2\12\1\u01b2\16\12\24\0"+
"\1\12\1\u01b2\2\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\2\12\1\u01b3\16\12\24\0"+
"\1\12\1\u01b3\2\12\4\0\5\12\1\0\1\u01b4\1\0"+
"\5\12\5\0\3\12\1\0\21\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\16\12\1\u01b5\2\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\1\u01b6\2\12\1\0\21\12"+
"\24\0\4\12\4\0\5\12\1\0\1\u01b7\1\0\5\12"+
"\5\0\3\12\1\0\21\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\5\12"+
"\1\u01b8\13\12\24\0\4\12\4\0\5\12\1\0\1\12"+
"\1\0\5\12\5\0\3\12\1\0\11\12\1\u01b9\7\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\6\12\1\u01ba\12\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\5\12\1\u01bb\13\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\17\12"+
"\1\u01bc\1\12\24\0\4\12\4\0\5\12\1\0\1\u01bd"+
"\1\0\5\12\5\0\3\12\1\0\21\12\24\0\4\12"+
"\4\0\3\12\2\u01be\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\21\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\3\12\1\u01bf"+
"\15\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\2\12\1\u01c0\16\12\24\0"+
"\1\12\1\u01c0\2\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\1\u01c1\20\12\24\0\4\12"+
"\4\0\3\12\2\u01c2\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\21\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\13\12\1\u01c3"+
"\5\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\4\12\1\u01c4\14\12\24\0"+
"\3\12\1\u01c4\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\7\12\1\u01c5\11\12\24\0\2\12"+
"\1\u01c5\1\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\1\12\1\u01c6\17\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\5\12\1\u01c7\13\12\24\0\4\12\4\0\5\12"+
"\1\0\1\u01c8\1\0\5\12\5\0\3\12\1\0\21\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\20\12\1\u01c9\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\5\12\1\u01ca\13\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\2\12\1\u01cb"+
"\16\12\24\0\1\12\1\u01cb\2\12\4\0\5\12\1\0"+
"\1\u01cc\1\0\5\12\5\0\3\12\1\0\21\12\24\0"+
"\4\12\4\0\5\12\1\0\1\u01cd\1\0\5\12\5\0"+
"\3\12\1\0\21\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\1\u01ce\2\12\1\0\21\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\5\12\1\u01cf\13\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\5\12\1\u01d0\13\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\14\12"+
"\1\u01d1\4\12\24\0\4\12\4\0\5\12\1\0\1\12"+
"\1\0\5\12\5\0\3\12\1\0\5\12\1\u01d2\13\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\1\12\1\u01d3\17\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\4\12\1\u01d4\14\12\24\0\3\12\1\u01d4\34\0"+
"\1\u01d5\43\0\1\u01d5\6\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\7\12\1\u01d6\11\12\24\0"+
"\2\12\1\u01d6\1\12\4\0\5\12\1\0\1\u01d7\1\0"+
"\5\12\5\0\3\12\1\0\21\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\10\12\1\u01d8\10\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\13\12\1\u01d9"+
"\5\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\6\12\1\u01da\12\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\6\12\1\u01db\12\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\4\12\1\u01dc\14\12\24\0\3\12\1\u01dc\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\12\12"+
"\1\u01dd\6\12\24\0\4\12\4\0\3\12\2\u01de\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\21\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\1\12\1\u01df\17\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\4\12\1\u01e0\14\12\24\0\3\12\1\u01e0\4\0\5\12"+
"\1\0\1\u01e1\1\0\5\12\5\0\3\12\1\0\21\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\4\12\1\u01e2\14\12\24\0\3\12"+
"\1\u01e2\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\1\u01e3\20\12\24\0\4\12\4\0\5\12"+
"\1\0\1\u01e4\1\0\5\12\5\0\3\12\1\0\21\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\15\12\1\u01e5\3\12\24\0\4\12"+
"\4\0\3\12\2\u01e6\1\0\1\12\1\0\5\12\5\0"+
"\1\u01e7\2\12\1\0\21\12\24\0\4\12\4\0\5\12"+
"\1\0\1\u01e8\1\0\5\12\5\0\3\12\1\0\21\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\4\12\1\u01e9\14\12\24\0\3\12"+
"\1\u01e9\4\0\5\12\1\0\1\u01ea\1\0\5\12\5\0"+
"\3\12\1\0\21\12\24\0\4\12\4\0\5\12\1\0"+
"\1\u01eb\1\0\5\12\5\0\3\12\1\0\21\12\24\0"+
"\4\12\4\0\5\12\1\0\1\u01ec\1\0\5\12\5\0"+
"\3\12\1\0\21\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\6\12\1\u01ed"+
"\12\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\11\12\1\u01ee\7\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\7\12\1\u01ef\11\12\24\0\2\12\1\u01ef"+
"\1\12\4\0\5\12\1\0\1\12\1\0\2\12\1\u01f0"+
"\2\12\5\0\3\12\1\0\21\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\1\u01f1\20\12\24\0\4\12\4\0\5\12\1\0\1\12"+
"\1\0\5\12\5\0\3\12\1\0\4\12\1\u01f2\14\12"+
"\24\0\3\12\1\u01f2\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\2\12\1\u01f3\16\12\24\0"+
"\1\12\1\u01f3\2\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\2\12\1\u01f4\1\0\21\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\4\12\1\u01f5\14\12\24\0\3\12\1\u01f5\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\4\12\1\u01f6\14\12\24\0\3\12\1\u01f6\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\2\12"+
"\1\u01f7\16\12\24\0\1\12\1\u01f7\2\12\4\0\3\12"+
"\2\u01f8\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\21\12\24\0\4\12\35\0\1\u01f9\51\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\1\12\1\u01fa"+
"\17\12\24\0\4\12\4\0\5\12\1\0\1\u01fb\1\0"+
"\5\12\5\0\3\12\1\0\21\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\1\u01fc\20\12\24\0\4\12\4\0\5\12\1\0\1\u01fd"+
"\1\0\5\12\5\0\3\12\1\0\21\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\4\12\1\u01fe\14\12\24\0\3\12\1\u01fe\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\1\u01ff\2\12"+
"\1\0\21\12\24\0\4\12\4\0\5\12\1\0\1\12"+
"\1\0\5\12\5\0\3\12\1\0\7\12\1\u0200\11\12"+
"\24\0\2\12\1\u0200\1\12\4\0\5\12\1\0\1\u0201"+
"\1\0\5\12\5\0\3\12\1\0\21\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\2\12\1\u0202\16\12\24\0\1\12\1\u0202\2\12"+
"\4\0\5\12\1\0\1\u0203\1\0\5\12\5\0\3\12"+
"\1\0\21\12\24\0\4\12\4\0\5\12\1\0\1\12"+
"\1\0\5\12\5\0\3\12\1\0\4\12\1\u0204\14\12"+
"\24\0\3\12\1\u0204\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\10\12\1\u0205\10\12\24\0"+
"\4\12\4\0\5\12\1\0\1\u0206\1\0\5\12\5\0"+
"\3\12\1\0\21\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\2\12\1\u0207"+
"\16\12\24\0\1\12\1\u0207\2\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\1\u0208\2\12\1\0\21\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\1\u0209\20\12\24\0\4\12\4\0"+
"\5\12\1\0\1\u020a\1\0\5\12\5\0\3\12\1\0"+
"\21\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\4\12\1\u020b\14\12\24\0"+
"\3\12\1\u020b\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\4\12\1\u020c\14\12\24\0\3\12"+
"\1\u020c\4\0\3\12\2\u020d\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\21\12\24\0\4\12\4\0\5\12"+
"\1\0\1\u020e\1\0\5\12\5\0\3\12\1\0\21\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\1\12\1\u020f\17\12\24\0\4\12"+
"\7\0\2\u0210\76\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\16\12\1\u0211\2\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\4\12\1\u0212\5\0"+
"\3\12\1\0\21\12\24\0\1\u0212\3\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\4\12"+
"\1\u0213\14\12\24\0\3\12\1\u0213\4\0\3\12\2\u0214"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\21\12"+
"\24\0\4\12\4\0\5\12\1\0\1\u0215\1\0\5\12"+
"\5\0\3\12\1\0\21\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\3\12\1\0\4\12"+
"\1\u0216\14\12\24\0\3\12\1\u0216\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\1\u0217\2\12\1\0\21\12"+
"\24\0\4\12\4\0\5\12\1\0\1\12\1\0\5\12"+
"\5\0\3\12\1\0\13\12\1\u0218\5\12\24\0\4\12"+
"\4\0\5\12\1\0\1\12\1\0\5\12\5\0\3\12"+
"\1\0\1\12\1\u0219\17\12\24\0\4\12\4\0\5\12"+
"\1\0\1\12\1\0\5\12\5\0\1\u021a\2\12\1\0"+
"\21\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\10\12\1\u021b\10\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\1\12\1\u021c\17\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\2\12\1\u021d\16\12\24\0\1\12\1\u021d\2\12\36\0"+
"\1\u021e\43\0\1\u021e\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\6\12\1\u021f\12\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\1\12\1\u0220\17\12\24\0\4\12\4\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\1\12\1\u0221\17\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\11\12\1\u0222"+
"\7\12\24\0\4\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\12\12\1\u0223\6\12\24\0"+
"\4\12\4\0\5\12\1\0\1\12\1\0\5\12\5\0"+
"\3\12\1\0\2\12\1\u0224\16\12\24\0\1\12\1\u0224"+
"\2\12\7\0\2\u0225\76\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\2\12\1\u0226\16\12\24\0"+
"\1\12\1\u0226\2\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\7\12\1\u0227\11\12\24\0"+
"\2\12\1\u0227\1\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\2\12\1\u0228\16\12\24\0"+
"\1\12\1\u0228\2\12\4\0\5\12\1\0\1\12\1\0"+
"\5\12\5\0\3\12\1\0\12\12\1\u0229\6\12\24\0"+
"\4\12\4\0\5\12\1\0\1\u022a\1\0\5\12\5\0"+
"\3\12\1\0\21\12\24\0\4\12\33\0\1\u022b\53\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\3\12\1\0"+
"\3\12\1\u022c\15\12\24\0\4\12\4\0\5\12\1\0"+
"\1\12\1\0\5\12\5\0\3\12\1\0\5\12\1\u022d"+
"\13\12\24\0\4\12\34\0\1\u022e\43\0\1\u022e\6\0"+
"\5\12\1\0\1\12\1\0\5\12\5\0\2\12\1\u022f"+
"\1\0\21\12\24\0\4\12\4\0\5\12\1\0\1\12"+
"\1\0\5\12\5\0\3\12\1\0\4\12\1\u0230\14\12"+
"\24\0\3\12\1\u0230\1\0\3\u022e\25\0\1\u0231\55\0"+
"\5\12\1\0\1\u0232\1\0\5\12\5\0\3\12\1\0"+
"\21\12\24\0\4\12";
private static int [] zzUnpackTrans() {
int [] result = new int[27135];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
}
private static int zzUnpackTrans(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int count = packed.charAt(i++);
int value = packed.charAt(i++);
value--;
do result[j++] = value; while (--count > 0);
}
return j;
}
/* error codes */
private static final int ZZ_UNKNOWN_ERROR = 0;
private static final int ZZ_NO_MATCH = 1;
private static final int ZZ_PUSHBACK_2BIG = 2;
/* error messages for the codes above */
private static final String ZZ_ERROR_MSG[] = {
"Unkown internal scanner error",
"Error: could not match input",
"Error: pushback value was too large"
};
/**
* ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
*/
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\3\0\1\1\2\0\1\11\16\1\1\11\4\1\1\11"+
"\16\1\2\11\1\1\2\11\10\1\5\11\1\1\1\11"+
"\1\1\1\11\1\1\1\11\1\1\1\11\3\1\3\11"+
"\1\1\1\11\4\1\1\0\2\11\1\1\1\0\2\11"+
"\7\1\1\11\5\1\1\0\3\1\3\11\1\1\1\11"+
"\1\0\57\1\1\11\1\1\6\11\1\1\1\11\2\1"+
"\13\11\1\1\2\11\1\1\1\0\25\1\1\11\1\1"+
"\1\11\1\0\75\1\3\11\1\1\1\11\23\1\1\11"+
"\2\1\1\0\64\1\1\11\21\1\1\0\1\11\1\0"+
"\66\1\1\0\52\1\1\0\43\1\1\0\26\1\1\0"+
"\15\1\1\0\6\1\1\0\5\1\1\0\2\1\1\0"+
"\2\1\1\11\1\1";
private static int [] zzUnpackAttribute() {
int [] result = new int[562];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
}
private static int zzUnpackAttribute(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int count = packed.charAt(i++);
int value = packed.charAt(i++);
do result[j++] = value; while (--count > 0);
}
return j;
}
/** the input device */
private java.io.Reader zzReader;
/** the current state of the DFA */
private int zzState;
/** the current lexical state */
private int zzLexicalState = YYINITIAL;
/** this buffer contains the current text to be matched and is
the source of the yytext() string */
private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
/** the textposition at the last accepting state */
private int zzMarkedPos;
/** the current text position in the buffer */
private int zzCurrentPos;
/** startRead marks the beginning of the yytext() string in the buffer */
private int zzStartRead;
/** endRead marks the last character in the buffer, that has been read
from input */
private int zzEndRead;
/** number of newlines encountered up to the start of the matched text */
private int yyline;
/** the number of characters up to the start of the matched text */
private int yychar;
/**
* the number of characters from the last newline up to the start of the
* matched text
*/
private int yycolumn;
/**
* zzAtBOL == true <=> the scanner is currently at the beginning of a line
*/
private boolean zzAtBOL = true;
/** zzAtEOF == true <=> the scanner is at the EOF */
private boolean zzAtEOF;
/** denotes if the user-EOF-code has already been executed */
private boolean zzEOFDone;
/* user code: */
private Symbol symbol(int type) {
return new Symbol(type, yychar, yychar + yylength());
}
private Symbol symbol(int type, int offset, int length) {
return new Symbol(type, offset, offset + length);
}
private Symbol symbol(int type, Object value) {
return new Symbol(type, yychar, yychar + yylength(), value);
}
private Symbol symbol(int type, Object value, int offset, int length) {
return new Symbol(type, offset, offset + length, value);
}
private Symbol sqlStatement() {
rawString.append("}");
if(openingBraceOffset != "#sql{".length()) {
lexerErrors.add(new SyntaxError(2206, startOffset + "#sql".length(), startOffset + openingBraceOffset - 1, SyntaxError.WARNING));
}
return symbol(NodeTypes.SQLSTMTLIT, new InlineSQLStatement(rawString.toString(), openingBraceOffset, startOffset, startOffset+rawString.length()), startOffset, rawString.length());
}
private Symbol sqlCondition() {
rawString.append("}");
if(openingBraceOffset != "#sqlcondition{".length()) {
lexerErrors.add(new SyntaxError(2207, startOffset + "#sqlcondition".length(), startOffset + openingBraceOffset - 1, SyntaxError.WARNING));
}
return symbol(NodeTypes.SQLCONDITION, new InlineSQLStatement(rawString.toString(), openingBraceOffset, startOffset, startOffset+rawString.length()), startOffset, rawString.length());
}
private Symbol byteslit() {
String text = yytext();
return symbol(NodeTypes.BYTESLIT, new BytesLiteral(text, text.substring(2), yychar, yychar + yylength()), yychar, yylength());
}
private Symbol bigintlit() {
String text = yytext();
return symbol(NodeTypes.BIGINTLIT, new IntegerLiteral(LiteralExpression.BIGINT_LITERAL, text.substring(0, text.length() - 1), yychar, yychar + yylength()), yychar, yylength());
}
private Symbol smallintlit() {
String text = yytext();
return symbol(NodeTypes.SMALLINTLIT, new IntegerLiteral(LiteralExpression.SMALLINT_LITERAL, text.substring(0, text.length() - 1), yychar, yychar + yylength()), yychar, yylength());
}
private Symbol floatlit() {
String text = yytext();
if (text.endsWith("F")) {
return symbol(NodeTypes.FLOATLIT, new FloatLiteral(LiteralExpression.FLOAT_LITERAL, text.substring(0, text.length() - 1), yychar, yychar + yylength()), yychar, yylength());
}
return symbol(NodeTypes.FLOATLIT, new FloatLiteral(LiteralExpression.FLOAT_LITERAL, text, yychar, yychar + yylength()), yychar, yylength());
}
private Symbol smallfloatlit() {
String text = yytext();
return symbol(NodeTypes.SMALLFLOATLIT, new FloatLiteral(LiteralExpression.SMALLFLOAT_LITERAL, text.substring(0, text.length() - 1), yychar, yychar + yylength()), yychar, yylength());
}
private static final int LITERALTYPE_STRING = 0;
private Symbol string() {
switch(stringLiteralType) {
case LITERALTYPE_STRING: return symbol(NodeTypes.STRING, new StringLiteral(rawString.toString(), stringValue.toString(), false, startOffset, startOffset+rawString.length()), startOffset, rawString.length());
default: throw new RuntimeException("Should not happen.");
}
}
public List getLexerErrors() {
return lexerErrors;
}
public void reset(Reader reader) {
lexerErrors = new ArrayList();
yyreset(reader);
}
protected int stringLiteralType;
protected StringBuffer rawString = new StringBuffer(); // The raw string of delimited tokens (i.e. for string literals, including the ")
protected StringBuffer stringValue = new StringBuffer(); // The canonical string of delimiated tokens (i.e. for string literals, excluding the ")
protected int startOffset; // The start offset of delimited tokens
protected int openingBraceOffset; // The offset of the opening brace for inline SQL and inline SQL Condition tokens
protected boolean isSQLCondition;
protected List lexerErrors = new ArrayList();
protected boolean returnLineBreaks;
protected boolean returnLineComments;
protected boolean returnBlockComments;
protected List lineBreaks = new ArrayList();
protected List lineComments = new ArrayList();
protected List blockComments = new ArrayList();
/**
* Creates a new scanner
* There is also a java.io.InputStream version of this constructor.
*
* @param in the java.io.Reader to read input from.
*/
public Lexer(java.io.Reader in) {
this.zzReader = in;
}
/**
* Creates a new scanner.
* There is also java.io.Reader version of this constructor.
*
* @param in the java.io.Inputstream to read input from.
*/
public Lexer(java.io.InputStream in) {
this(new java.io.InputStreamReader(in));
}
/**
* Unpacks the compressed character translation table.
*
* @param packed the packed character translation table
* @return the unpacked character translation table
*/
private static char [] zzUnpackCMap(String packed) {
char [] map = new char[0x10000];
int i = 0; /* index in packed string */
int j = 0; /* index in unpacked array */
while (i < 1814) {
int count = packed.charAt(i++);
char value = packed.charAt(i++);
do map[j++] = value; while (--count > 0);
}
return map;
}
/**
* Refills the input buffer.
*
* @return <code>false</code>, iff there was new input.
*
* @exception java.io.IOException if any I/O-Error occurs
*/
private boolean zzRefill() throws java.io.IOException {
/* first: make room (if you can) */
if (zzStartRead > 0) {
System.arraycopy(zzBuffer, zzStartRead,
zzBuffer, 0,
zzEndRead-zzStartRead);
/* translate stored positions */
zzEndRead-= zzStartRead;
zzCurrentPos-= zzStartRead;
zzMarkedPos-= zzStartRead;
zzStartRead = 0;
}
/* is the buffer big enough? */
if (zzCurrentPos >= zzBuffer.length) {
/* if not: blow it up */
char newBuffer[] = new char[zzCurrentPos*2];
System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
zzBuffer = newBuffer;
}
/* finally: fill the buffer with new input */
int numRead = zzReader.read(zzBuffer, zzEndRead,
zzBuffer.length-zzEndRead);
if (numRead > 0) {
zzEndRead+= numRead;
return false;
}
// unlikely but not impossible: read 0 characters, but not at end of stream
if (numRead == 0) {
int c = zzReader.read();
if (c == -1) {
return true;
} else {
zzBuffer[zzEndRead++] = (char) c;
return false;
}
}
// numRead < 0
return true;
}
/**
* Closes the input stream.
*/
public final void yyclose() throws java.io.IOException {
zzAtEOF = true; /* indicate end of file */
zzEndRead = zzStartRead; /* invalidate buffer */
if (zzReader != null)
zzReader.close();
}
/**
* Resets the scanner to read from a new input stream.
* Does not close the old reader.
*
* All internal variables are reset, the old input stream
* <b>cannot</b> be reused (internal buffer is discarded and lost).
* Lexical state is set to <tt>ZZ_INITIAL</tt>.
*
* @param reader the new input stream
*/
public final void yyreset(java.io.Reader reader) {
zzReader = reader;
zzAtBOL = true;
zzAtEOF = false;
zzEOFDone = false;
zzEndRead = zzStartRead = 0;
zzCurrentPos = zzMarkedPos = 0;
yyline = yychar = yycolumn = 0;
zzLexicalState = YYINITIAL;
}
/**
* Returns the current lexical state.
*/
public final int yystate() {
return zzLexicalState;
}
/**
* Enters a new lexical state
*
* @param newState the new lexical state
*/
public final void yybegin(int newState) {
zzLexicalState = newState;
}
/**
* Returns the text matched by the current regular expression.
*/
public final String yytext() {
return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
}
/**
* Returns the character at position <tt>pos</tt> from the
* matched text.
*
* It is equivalent to yytext().charAt(pos), but faster
*
* @param pos the position of the character to fetch.
* A value from 0 to yylength()-1.
*
* @return the character at position pos
*/
public final char yycharat(int pos) {
return zzBuffer[zzStartRead+pos];
}
/**
* Returns the length of the matched text region.
*/
public final int yylength() {
return zzMarkedPos-zzStartRead;
}
/**
* Reports an error that occured while scanning.
*
* In a wellformed scanner (no or only correct usage of
* yypushback(int) and a match-all fallback rule) this method
* will only be called with things that "Can't Possibly Happen".
* If this method is called, something is seriously wrong
* (e.g. a JFlex bug producing a faulty scanner etc.).
*
* Usual syntax/scanner level error handling should be done
* in error fallback rules.
*
* @param errorCode the code of the errormessage to display
*/
private void zzScanError(int errorCode) {
String message;
try {
message = ZZ_ERROR_MSG[errorCode];
}
catch (ArrayIndexOutOfBoundsException e) {
message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
}
throw new Error(message);
}
/**
* Pushes the specified amount of characters back into the input stream.
*
* They will be read again by then next call of the scanning method
*
* @param number the number of characters to be read again.
* This number must not be greater than yylength()!
*/
public void yypushback(int number) {
if ( number > yylength() )
zzScanError(ZZ_PUSHBACK_2BIG);
zzMarkedPos -= number;
}
/**
* Contains user EOF-code, which will be executed exactly once,
* when the end of file is reached
*/
private void zzDoEOF() throws java.io.IOException {
if (!zzEOFDone) {
zzEOFDone = true;
yyclose();
}
}
/**
* Resumes scanning until the next regular expression is matched,
* the end of input is encountered or an I/O-Error occurs.
*
* @return the next token
* @exception java.io.IOException if any I/O-Error occurs
*/
public java_cup.runtime.Symbol next_token() throws java.io.IOException {
int zzInput;
int zzAction;
// cached fields:
int zzCurrentPosL;
int zzMarkedPosL;
int zzEndReadL = zzEndRead;
char [] zzBufferL = zzBuffer;
char [] zzCMapL = ZZ_CMAP;
int [] zzTransL = ZZ_TRANS;
int [] zzRowMapL = ZZ_ROWMAP;
int [] zzAttrL = ZZ_ATTRIBUTE;
while (true) {
zzMarkedPosL = zzMarkedPos;
yychar+= zzMarkedPosL-zzStartRead;
zzAction = -1;
zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
zzState = ZZ_LEXSTATE[zzLexicalState];
zzForAction: {
while (true) {
if (zzCurrentPosL < zzEndReadL)
zzInput = zzBufferL[zzCurrentPosL++];
else if (zzAtEOF) {
zzInput = YYEOF;
break zzForAction;
}
else {
// store back cached positions
zzCurrentPos = zzCurrentPosL;
zzMarkedPos = zzMarkedPosL;
boolean eof = zzRefill();
// get translated positions and possibly new buffer
zzCurrentPosL = zzCurrentPos;
zzMarkedPosL = zzMarkedPos;
zzBufferL = zzBuffer;
zzEndReadL = zzEndRead;
if (eof) {
zzInput = YYEOF;
break zzForAction;
}
else {
zzInput = zzBufferL[zzCurrentPosL++];
}
}
int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
if (zzNext == -1) break zzForAction;
zzState = zzNext;
int zzAttributes = zzAttrL[zzState];
if ( (zzAttributes & 1) == 1 ) {
zzAction = zzState;
zzMarkedPosL = zzCurrentPosL;
if ( (zzAttributes & 8) == 8 ) break zzForAction;
}
}
}
// store back cached position
zzMarkedPos = zzMarkedPosL;
switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
case 165:
{ return symbol(NodeTypes.PROGRAM);
}
case 192: break;
case 103:
{ return symbol(NodeTypes.BOOLEANLIT, org.eclipse.edt.compiler.core.Boolean.YES);
}
case 193: break;
case 1:
{ rawString.append(yytext());
}
case 194: break;
case 71:
{ return symbol(NodeTypes.GE);
}
case 195: break;
case 56:
{ return symbol(NodeTypes.TIMESTIMES);
}
case 196: break;
case 60:
{ return symbol(NodeTypes.BOOLEANLIT, org.eclipse.edt.compiler.core.Boolean.NO);
}
case 197: break;
case 108:
{ return symbol(NodeTypes.RIGHTSHIFTLOGICAL);
}
case 198: break;
case 187:
{ return symbol(NodeTypes.ONEXCEPTION);
}
case 199: break;
case 50:
{ return symbol(NodeTypes.PLUSEQ);
}
case 200: break;
case 172:
{ return symbol(NodeTypes.ABSOLUTE);
}
case 201: break;
case 10:
{ return symbol(NodeTypes.MINUS);
}
case 202: break;
case 106:
{ return symbol(NodeTypes.LEFTSHIFTEQ);
}
case 203: break;
case 124:
{ return symbol(NodeTypes.GOTO);
}
case 204: break;
case 155:
{ return symbol(NodeTypes.FOREACH);
}
case 205: break;
case 111:
{ return symbol(NodeTypes.EXIT);
}
case 206: break;
case 30:
{ return symbol(NodeTypes.AT);
}
case 207: break;
case 46:
{ return smallfloatlit();
}
case 208: break;
case 145:
{ return symbol(NodeTypes.IMPORT);
}
case 209: break;
case 69:
{ return symbol(NodeTypes.LE);
}
case 210: break;
case 45:
{ return floatlit();
}
case 211: break;
case 118:
{ return symbol(NodeTypes.OPEN);
}
case 212: break;
case 164:
{ return symbol(NodeTypes.PREPARE);
}
case 213: break;
case 101:
{ return symbol(NodeTypes.URL);
}
case 214: break;
case 179:
{ return symbol(NodeTypes.OTHERWISE);
}
case 215: break;
case 107:
{ return symbol(NodeTypes.RIGHTSHIFTARITHMETICEQ);
}
case 216: break;
case 59:
{ return symbol(NodeTypes.OR);
}
case 217: break;
case 131:
{ return symbol(NodeTypes.FIRST);
}
case 218: break;
case 123:
{ return symbol(NodeTypes.MOVE);
}
case 219: break;
case 182:
{ return symbol(NodeTypes.RETURNING);
}
case 220: break;
case 139:
{ return symbol(NodeTypes.THROW);
}
case 221: break;
case 76:
{ rawString.append("\\f"); stringValue.append('\f');
}
case 222: break;
case 142:
{ return symbol(NodeTypes.WHILE);
}
case 223: break;
case 104:
{ return symbol(NodeTypes.GET);
}
case 224: break;
case 75:
{ return symbol(NodeTypes.MODULOEQ);
}
case 225: break;
case 53:
{ yybegin(BLOCK_COMMENT); startOffset = yychar;
}
case 226: break;
case 7:
{ return symbol(NodeTypes.DOT);
}
case 227: break;
case 180:
{ return symbol(NodeTypes.DECREMENT);
}
case 228: break;
case 125:
{ return symbol(NodeTypes.HOLD);
}
case 229: break;
case 102:
{ return symbol(NodeTypes.REF);
}
case 230: break;
case 15:
{ return symbol(NodeTypes.RPAREN);
}
case 231: break;
case 168:
{ return symbol(NodeTypes.FUNCTION);
}
case 232: break;
case 58:
{ return symbol(NodeTypes.OF);
}
case 233: break;
case 52:
{ Symbol symbol = symbol(NodeTypes.LINE_COMMENT); if(returnLineComments) lineComments.add(symbol); return symbol;
}
case 234: break;
case 189:
{ return symbol(NodeTypes.WITHV60COMPAT);
}
case 235: break;
case 169:
{ return symbol(NodeTypes.CONTINUE);
}
case 236: break;
case 137:
{ return symbol(NodeTypes.CLASS);
}
case 237: break;
case 112:
{ return symbol(NodeTypes.ELSE);
}
case 238: break;
case 3:
{ Symbol symbol = symbol(NodeTypes.LINEBREAKS); if(returnLineBreaks) lineBreaks.add(symbol); return symbol;
}
case 239: break;
case 167:
{ return symbol(NodeTypes.INPARENT);
}
case 240: break;
case 39:
{ yybegin(SQL); rawString.append(yytext());
}
case 241: break;
case 80:
{ rawString.append("\\b"); stringValue.append('\b');
}
case 242: break;
case 25:
{ return symbol(NodeTypes.QUESTION);
}
case 243: break;
case 5:
{ return symbol(NodeTypes.ID, yytext());
}
case 244: break;
case 84:
{ yybegin(YYINITIAL); Symbol symbol = symbol(NodeTypes.BLOCK_COMMENT, startOffset, yychar + 2 - startOffset); if(returnBlockComments) blockComments.add(symbol); return symbol;
}
case 245: break;
case 105:
{ return symbol(NodeTypes.CONCATEQ);
}
case 246: break;
case 87:
{ return symbol(NodeTypes.ISA);
}
case 247: break;
case 21:
{ return symbol(NodeTypes.BITAND);
}
case 248: break;
case 48:
{ return symbol(NodeTypes.IS);
}
case 249: break;
case 77:
{ rawString.append("\\\""); stringValue.append('\"');
}
case 250: break;
case 37:
{ yybegin(YYINITIAL); return isSQLCondition ? sqlCondition() : sqlStatement();
}
case 251: break;
case 28:
{ return symbol(NodeTypes.RBRACKET);
}
case 252: break;
case 160:
{ return symbol(NodeTypes.REPLACE);
}
case 253: break;
case 158:
{ return symbol(NodeTypes.CURRENT);
}
case 254: break;
case 154:
{ return symbol(NodeTypes.EXTENDS);
}
case 255: break;
case 175:
{ return symbol(NodeTypes.PREVIOUS);
}
case 256: break;
case 96:
{ return symbol(NodeTypes.NOT);
}
case 257: break;
case 148:
{ return symbol(NodeTypes.STATIC);
}
case 258: break;
case 92:
{ return symbol(NodeTypes.TIMESTIMESEQ);
}
case 259: break;
case 94:
{ return symbol(NodeTypes.OUT);
}
case 260: break;
case 85:
{ rawString.append("\"\"");
}
case 261: break;
case 152:
{ return symbol(NodeTypes.RETURN);
}
case 262: break;
case 24:
{ return symbol(NodeTypes.GT);
}
case 263: break;
case 162:
{ return symbol(NodeTypes.PACKAGE);
}
case 264: break;
case 176:
{ return symbol(NodeTypes.INTERFACE);
}
case 265: break;
case 8:
{ return symbol(NodeTypes.PLUS);
}
case 266: break;
case 14:
{ return symbol(NodeTypes.LPAREN);
}
case 267: break;
case 64:
{ return symbol(NodeTypes.CONCAT);
}
case 268: break;
case 191:
{ return symbol(NodeTypes.LANGUAGEBUNDLE);
}
case 269: break;
case 128:
{ return symbol(NodeTypes.WHEN);
}
case 270: break;
case 134:
{ return symbol(NodeTypes.SUPER);
}
case 271: break;
case 136:
{ return symbol(NodeTypes.CLOSE);
}
case 272: break;
case 98:
{ return symbol(NodeTypes.ALL);
}
case 273: break;
case 31:
{ return symbol(NodeTypes.NEGATE);
}
case 274: break;
case 126:
{ return symbol(NodeTypes.WITH);
}
case 275: break;
case 32:
{ rawString.append(yytext()); stringValue.append(yytext());
}
case 276: break;
case 23:
{ return symbol(NodeTypes.LT);
}
case 277: break;
case 140:
{ return symbol(NodeTypes.USING);
}
case 278: break;
case 183:
{ return symbol(NodeTypes.IMPLEMENTS);
}
case 279: break;
case 65:
{ return symbol(NodeTypes.EQ);
}
case 280: break;
case 157:
{ return symbol(NodeTypes.LIBRARY);
}
case 281: break;
case 16:
{ return symbol(NodeTypes.BANG);
}
case 282: break;
case 40:
{ yybegin(SQL); rawString.append('\"');
}
case 283: break;
case 55:
{ return symbol(NodeTypes.MINUSEQ);
}
case 284: break;
case 188:
{ return symbol(NodeTypes.EXTERNALTYPE);
}
case 285: break;
case 17:
{ return symbol(NodeTypes.COMMA);
}
case 286: break;
case 6:
{ return symbol(NodeTypes.INTEGER, yytext());
}
case 287: break;
case 18:
{ return symbol(NodeTypes.SEMI);
}
case 288: break;
case 135:
{ return symbol(NodeTypes.LABEL);
}
case 289: break;
case 63:
{ return symbol(NodeTypes.NE);
}
case 290: break;
case 161:
{ return symbol(NodeTypes.RUNUNIT);
}
case 291: break;
case 115:
{ return symbol(NodeTypes.LAST);
}
case 292: break;
case 150:
{ return symbol(NodeTypes.UPDATE);
}
case 293: break;
case 91:
{ return symbol(NodeTypes.XOR);
}
case 294: break;
case 29:
{ return symbol(NodeTypes.RCURLY);
}
case 295: break;
case 54:
{ return symbol(NodeTypes.DIVEQ);
}
case 296: break;
case 44:
{ return symbol(NodeTypes.DECIMALLIT, yytext());
}
case 297: break;
case 41:
{ yybegin(SQL); rawString.append('\'');
}
case 298: break;
case 68:
{ return symbol(NodeTypes.BITOREQ);
}
case 299: break;
case 143:
{ return symbol(NodeTypes.WHERE);
}
case 300: break;
case 11:
{ yybegin(STRING); stringLiteralType = LITERALTYPE_STRING; rawString.setLength(0); rawString.append('\"'); stringValue.setLength(0); startOffset = yychar;
}
case 301: break;
case 62:
{ return symbol(NodeTypes.AS);
}
case 302: break;
case 149:
{ return symbol(NodeTypes.DELETE);
}
case 303: break;
case 166:
{ return symbol(NodeTypes.HANDLER);
}
case 304: break;
case 19:
{ return symbol(NodeTypes.COLON);
}
case 305: break;
case 147:
{ return symbol(NodeTypes.SCROLL);
}
case 306: break;
case 144:
{ return symbol(NodeTypes.INSERT);
}
case 307: break;
case 133:
{ return symbol(NodeTypes.STACK);
}
case 308: break;
case 184:
{ return symbol(NodeTypes.BYPOSITION);
}
case 309: break;
case 89:
{ return symbol(NodeTypes.FOR);
}
case 310: break;
case 146:
{ return symbol(NodeTypes.BYNAME);
}
case 311: break;
case 36:
{ yybegin(SQLDELIMITEDID); rawString.append('\"');
}
case 312: break;
case 130:
{ return symbol(NodeTypes.INOUT);
}
case 313: break;
case 95:
{ return symbol(NodeTypes.NEW);
}
case 314: break;
case 86:
{ rawString.append("\'\'");
}
case 315: break;
case 132:
{ yybegin(SQL); isSQLCondition = false; rawString.setLength(0); rawString.append(yytext()); startOffset = yychar; openingBraceOffset = yylength();
}
case 316: break;
case 177:
{ return symbol(NodeTypes.FORUPDATE);
}
case 317: break;
case 79:
{ rawString.append("\\\'"); stringValue.append('\'');
}
case 318: break;
case 12:
{ return symbol(NodeTypes.TIMES);
}
case 319: break;
case 20:
{ return symbol(NodeTypes.ASSIGN);
}
case 320: break;
case 141:
{ return symbol(NodeTypes.GROUP);
}
case 321: break;
case 26:
{ return symbol(NodeTypes.MODULO);
}
case 322: break;
case 34:
{ yybegin(YYINITIAL); rawString.append('\"'); return string();
}
case 323: break;
case 127:
{ return symbol(NodeTypes.WRAP);
}
case 324: break;
case 57:
{ return symbol(NodeTypes.TIMESEQ);
}
case 325: break;
case 61:
{ return symbol(NodeTypes.TO);
}
case 326: break;
case 174:
{ return symbol(NodeTypes.RELATIVE);
}
case 327: break;
case 51:
{ return symbol(NodeTypes.BY);
}
case 328: break;
case 13:
{ return symbol(NodeTypes.LCURLY);
}
case 329: break;
case 73:
{ return symbol(NodeTypes.NULLCONCAT);
}
case 330: break;
case 117:
{ return symbol(NodeTypes.CALL);
}
case 331: break;
case 151:
{ return symbol(NodeTypes.RECORD);
}
case 332: break;
case 97:
{ return symbol(NodeTypes.TRY);
}
case 333: break;
case 153:
{ return symbol(NodeTypes.EXECUTE);
}
case 334: break;
case 35:
{ rawString.append("\\"); stringValue.append('\\'); lexerErrors.add(new SyntaxError(2205, yychar, yychar+2));
}
case 335: break;
case 186:
{ return symbol(NodeTypes.CONSTRUCTOR);
}
case 336: break;
case 93:
{ return symbol(NodeTypes.SET);
}
case 337: break;
case 78:
{ rawString.append("\\\\"); stringValue.append('\\');
}
case 338: break;
case 27:
{ return symbol(NodeTypes.LBRACKET);
}
case 339: break;
case 99:
{ return symbol(NodeTypes.ADD);
}
case 340: break;
case 2:
{ return symbol(NodeTypes.error);
}
case 341: break;
case 173:
{ return symbol(NodeTypes.ABSTRACT);
}
case 342: break;
case 114:
{ return symbol(NodeTypes.XOREQ);
}
case 343: break;
case 171:
{ return symbol(NodeTypes.DELEGATE);
}
case 344: break;
case 83:
{ rawString.append("\\t"); stringValue.append('\t');
}
case 345: break;
case 109:
{ return symbol(NodeTypes.NULLCONCATEQ);
}
case 346: break;
case 88:
{ return symbol(NodeTypes.END);
}
case 347: break;
case 121:
{ return symbol(NodeTypes.TYPE);
}
case 348: break;
case 43:
{ return smallintlit();
}
case 349: break;
case 22:
{ return symbol(NodeTypes.BITOR);
}
case 350: break;
case 190:
{ yybegin(SQL); isSQLCondition = true; rawString.setLength(0); rawString.append(yytext()); startOffset = yychar; openingBraceOffset = yylength();
}
case 351: break;
case 116:
{ return symbol(NodeTypes.CASE);
}
case 352: break;
case 110:
{ return symbol(NodeTypes.INTO);
}
case 353: break;
case 9:
{ return symbol(NodeTypes.DIV);
}
case 354: break;
case 138:
{ return symbol(NodeTypes.CONST);
}
case 355: break;
case 49:
{ return symbol(NodeTypes.IN);
}
case 356: break;
case 72:
{ return symbol(NodeTypes.RIGHTSHIFTARITHMETIC);
}
case 357: break;
case 178:
{ return symbol(NodeTypes.SINGLEROW);
}
case 358: break;
case 100:
{ return symbol(NodeTypes.USE);
}
case 359: break;
case 113:
{ return symbol(NodeTypes.FROM);
}
case 360: break;
case 33:
{ yybegin(YYINITIAL); rawString.append(yytext()); lexerErrors.add(new SyntaxError(2200, startOffset, yychar)); return string();
}
case 361: break;
case 42:
{ return bigintlit();
}
case 362: break;
case 90:
{ return byteslit();
}
case 363: break;
case 82:
{ rawString.append("\\r"); stringValue.append('\r');
}
case 364: break;
case 70:
{ return symbol(NodeTypes.LEFTSHIFT);
}
case 365: break;
case 74:
{ return symbol(NodeTypes.QUESTIONQUESTION);
}
case 366: break;
case 47:
{ return symbol(NodeTypes.IF);
}
case 367: break;
case 156:
{ return symbol(NodeTypes.SERVICE);
}
case 368: break;
case 67:
{ return symbol(NodeTypes.AND);
}
case 369: break;
case 181:
{ return symbol(NodeTypes.USINGKEYS);
}
case 370: break;
case 163:
{ return symbol(NodeTypes.PRIVATE);
}
case 371: break;
case 81:
{ rawString.append("\\n"); stringValue.append('\n');
}
case 372: break;
case 120:
{ return symbol(NodeTypes.NULL);
}
case 373: break;
case 170:
{ return symbol(NodeTypes.NOCURSOR);
}
case 374: break;
case 122:
{ return symbol(NodeTypes.THIS);
}
case 375: break;
case 129:
{ return symbol(NodeTypes.RIGHTSHIFTLOGICALEQ);
}
case 376: break;
case 38:
{ yybegin(SQLSTRING); rawString.append('\'');
}
case 377: break;
case 66:
{ return symbol(NodeTypes.BITANDEQ);
}
case 378: break;
case 185:
{ return symbol(NodeTypes.ENUMERATION);
}
case 379: break;
case 159:
{ return symbol(NodeTypes.RETURNS);
}
case 380: break;
case 4:
{
}
case 381: break;
case 119:
{ return symbol(NodeTypes.NEXT);
}
case 382: break;
default:
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
zzAtEOF = true;
zzDoEOF();
switch (zzLexicalState) {
case STRING: {
yybegin(YYINITIAL); lexerErrors.add(new SyntaxError(2200, startOffset, yychar)); return string();
}
case 563: break;
case SQLDELIMITEDID: {
yybegin(SQL);
}
case 564: break;
case BLOCK_COMMENT: {
yybegin(YYINITIAL); lexerErrors.add(new SyntaxError(2201, startOffset, startOffset + 2)); Symbol symbol = symbol(NodeTypes.BLOCK_COMMENT, startOffset, yychar); if(returnBlockComments) blockComments.add(symbol); return symbol;
}
case 565: break;
case SQL: {
yybegin(YYINITIAL); lexerErrors.add(new SyntaxError(isSQLCondition ? 2203 : 2202, startOffset, startOffset + openingBraceOffset)); return isSQLCondition ? sqlCondition() : sqlStatement();
}
case 566: break;
case SQLSTRING: {
yybegin(SQL);
}
case 567: break;
default:
{ return new java_cup.runtime.Symbol(NodeTypes.EOF, yychar, yychar);
}
}
}
else {
zzScanError(ZZ_NO_MATCH);
}
}
}
}
}