/* The following code was generated by JFlex 1.7.0-SNAPSHOT tweaked for IntelliJ platform */ package com.intellij.coldFusion.model.lexer; import com.intellij.lexer.FlexLexer; import com.intellij.psi.tree.IElementType; import com.intellij.coldFusion.model.lexer.CfmlTokenTypes; import com.intellij.coldFusion.model.psi.CfmlElementType; import com.intellij.coldFusion.model.parsers.CfmlElementTypes; import com.intellij.coldFusion.model.CfmlUtil; import com.intellij.openapi.project.Project; import com.intellij.util.containers.Stack; /** * This class is a scanner generated by * <a href="http://www.jflex.de/">JFlex</a> 1.7.0-SNAPSHOT * from the specification file <tt>ColdFusion.flex</tt> */ class _CfmlLexer implements FlexLexer { /** 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 = 16384; /** lexical states */ public static final int YYINITIAL = 0; public static final int CLOSER = 2; public static final int TAGCLOSE = 4; public static final int TAGOPEN = 6; public static final int TAGATTR = 8; public static final int ASSIGN = 10; public static final int COMMENT = 12; public static final int COMMENTEND = 14; public static final int DOUBLE_QUOTED_STRING = 16; public static final int DOUBLEQUOTE = 18; public static final int SINGLE_QUOTED_STRING = 20; public static final int SINGLEQUOTE = 22; public static final int DOUBLEQUOTE_CLOSER = 24; public static final int SINGLEQUOTE_CLOSER = 26; public static final int ATTRIBUTE_VALUE = 28; public static final int TAGINNERBLOCK = 30; public static final int SCRIPT_EXPRESSION = 32; public static final int X = 34; public static final int Y = 36; public static final int TEXT = 38; public static final int EAT_TEST_AS_SCRIPT = 40; public static final int FINAL_STATE = 42; /** * 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, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 9, 9, 11, 11, 12, 12, 13, 13, 9, 9, 14, 14, 9, 9, 9, 9, 15, 15, 16, 16, 9, 9 }; /** * Translates characters to character classes * Chosen bits are [12, 6, 3] * Total runtime size is 14800 bytes */ public static int ZZ_CMAP(int ch) { return ZZ_CMAP_A[(ZZ_CMAP_Y[(ZZ_CMAP_Z[ch>>9]<<6)|((ch>>3)&0x3f)]<<3)|(ch&0x7)]; } /* The ZZ_CMAP_Z table has 2176 entries */ static final char ZZ_CMAP_Z[] = zzUnpackCMap( "\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1"+ "\20\5\21\1\22\1\23\1\24\1\21\14\25\1\26\50\25\1\27\2\25\1\30\1\31\1\32\1\33"+ "\25\25\1\34\20\21\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\21\1\44\1\45\1\46\1"+ "\21\1\47\2\21\1\50\4\21\1\25\1\51\1\52\5\21\2\25\1\53\31\21\1\25\1\54\1\21"+ "\1\55\40\21\1\56\17\21\1\57\1\60\1\61\1\62\13\21\1\63\10\21\123\25\1\64\7"+ "\25\1\65\1\66\37\21\1\25\1\66\u0582\21\1\67\u017f\21"); /* The ZZ_CMAP_Y table has 3584 entries */ static final char ZZ_CMAP_Y[] = zzUnpackCMap( "\1\0\1\1\1\0\1\2\1\3\1\4\1\0\1\5\1\6\1\7\1\10\1\11\1\12\1\7\1\10\1\13\4\0"+ "\1\14\1\15\1\16\1\17\2\20\1\21\3\20\1\21\7\20\1\22\61\20\1\23\1\20\1\24\1"+ "\25\1\26\1\27\2\25\16\0\1\30\1\14\1\31\1\32\2\20\1\33\11\20\1\34\21\20\1\35"+ "\1\36\23\20\1\25\1\37\3\20\1\21\1\40\1\37\4\20\1\41\1\42\4\0\1\43\1\44\1\25"+ "\3\20\2\45\1\25\1\46\1\47\1\0\1\50\5\20\1\51\3\0\1\52\1\53\13\20\1\54\1\43"+ "\1\55\1\56\1\0\1\57\1\25\1\60\1\61\3\20\3\0\1\62\12\20\1\63\1\0\1\64\1\25"+ "\1\0\1\65\3\20\1\51\1\66\1\17\2\20\1\63\1\67\1\70\1\71\2\25\3\20\1\72\10\25"+ "\1\73\1\26\6\25\1\74\2\0\1\75\1\76\6\20\1\77\2\0\1\100\1\20\1\101\1\0\2\37"+ "\1\102\1\103\1\104\2\20\1\73\1\105\1\106\1\107\1\110\1\60\1\111\1\101\1\0"+ "\1\112\1\47\1\102\1\11\1\104\2\20\1\73\1\113\1\114\1\115\1\116\1\117\1\120"+ "\1\121\1\0\1\122\1\25\1\102\1\34\1\33\2\20\1\73\1\123\1\106\1\43\1\124\1\125"+ "\1\25\1\101\1\0\1\40\1\25\1\102\1\103\1\104\2\20\1\73\1\123\1\106\1\107\1"+ "\116\1\121\1\111\1\101\1\0\1\40\1\25\1\126\1\127\1\130\1\131\1\132\1\127\1"+ "\20\1\133\1\134\1\135\1\136\1\25\1\121\1\0\1\25\1\40\1\102\1\30\1\73\2\20"+ "\1\73\1\137\1\140\1\141\1\135\1\142\1\24\1\101\1\0\2\25\1\143\1\30\1\73\2"+ "\20\1\73\1\137\1\106\1\141\1\135\1\142\1\31\1\101\1\0\1\144\1\25\1\143\1\30"+ "\1\73\4\20\1\145\1\141\1\146\1\60\1\25\1\101\1\0\1\25\1\36\1\143\1\20\1\21"+ "\1\36\2\20\1\33\1\147\1\21\1\150\1\151\1\0\2\25\1\152\1\25\1\37\5\20\1\153"+ "\1\154\1\155\1\75\1\0\1\156\4\25\1\157\1\160\1\161\1\37\1\162\1\163\1\153"+ "\1\164\1\165\1\166\1\0\1\167\4\25\1\125\2\25\1\156\1\0\1\156\1\170\1\171\1"+ "\20\1\37\3\20\1\26\1\42\1\0\1\141\1\172\1\0\1\42\3\0\1\46\1\173\7\25\5\20"+ "\1\51\1\0\1\174\1\0\1\156\1\63\1\175\1\176\1\177\1\200\1\20\1\201\1\202\1"+ "\0\1\166\4\20\1\34\1\16\5\20\1\203\51\20\1\130\1\21\1\130\5\20\1\130\4\20"+ "\1\130\1\21\1\130\1\20\1\21\7\20\1\130\10\20\1\204\4\25\2\20\2\25\12\20\1"+ "\26\1\25\1\37\114\20\1\103\2\20\1\37\2\20\1\45\11\20\1\127\1\125\1\25\1\20"+ "\1\30\1\205\1\25\2\20\1\205\1\25\2\20\1\206\1\25\1\20\1\30\1\207\1\25\6\20"+ "\1\210\3\0\1\211\1\212\1\0\1\156\3\25\1\213\1\0\1\156\13\20\1\25\5\20\1\214"+ "\10\20\1\215\1\25\3\20\1\26\1\0\1\2\1\0\1\2\1\121\1\0\3\20\1\215\1\26\1\25"+ "\5\20\1\112\2\0\1\53\1\156\1\0\1\156\4\25\2\20\1\155\1\2\6\20\1\172\1\75\3"+ "\0\1\107\1\0\1\156\1\0\1\156\1\41\13\25\1\216\5\20\1\210\1\0\1\216\1\112\1"+ "\0\1\156\1\25\1\217\1\2\1\25\1\220\3\20\1\100\1\177\1\0\1\65\4\20\1\63\1\0"+ "\1\2\1\25\4\20\1\210\2\0\1\25\1\0\1\221\1\0\1\65\3\20\1\215\12\25\1\222\2"+ "\0\1\223\1\224\1\25\30\20\4\0\1\75\2\25\1\74\42\20\2\215\4\20\2\215\1\20\1"+ "\225\3\20\1\215\6\20\1\30\1\165\1\226\1\26\1\227\1\112\1\20\1\26\1\226\1\26"+ "\1\25\1\217\3\25\1\230\1\25\1\41\1\125\1\25\1\231\1\25\1\46\1\232\1\40\1\41"+ "\2\25\1\20\1\26\3\20\1\45\2\25\1\0\1\46\1\233\1\0\1\234\1\25\1\235\1\36\1"+ "\147\1\236\1\27\1\237\1\20\1\240\1\241\1\242\2\25\5\20\1\125\116\25\5\20\1"+ "\21\5\20\1\21\20\20\1\26\1\243\1\244\1\25\4\20\1\34\1\16\7\20\1\41\1\25\1"+ "\60\2\20\1\21\1\25\10\21\4\0\5\25\1\41\72\25\1\241\3\25\1\37\1\201\1\236\1"+ "\26\1\37\11\20\1\21\1\245\1\37\12\20\1\203\1\241\4\20\1\215\1\37\12\20\1\21"+ "\2\25\3\20\1\45\6\25\170\20\1\215\11\25\71\20\1\26\6\25\21\20\1\26\10\25\5"+ "\20\1\215\41\20\1\26\2\20\1\0\1\244\2\25\5\20\1\155\1\74\1\246\3\20\1\60\12"+ "\20\1\156\3\25\1\41\1\20\1\36\14\20\1\247\1\112\1\25\1\20\1\45\11\25\1\20"+ "\1\250\1\251\2\20\1\51\2\25\1\125\6\20\1\112\1\25\1\65\5\20\1\210\1\0\1\46"+ "\1\25\1\0\1\156\2\0\1\65\1\47\1\0\1\65\2\20\1\63\1\166\2\20\1\155\1\0\1\2"+ "\1\25\3\20\1\26\1\76\5\20\1\51\1\0\1\234\1\41\1\0\1\156\4\25\5\20\1\100\1"+ "\75\1\25\1\251\1\252\1\0\1\156\2\20\1\21\1\253\6\20\1\176\1\254\1\214\2\25"+ "\1\255\1\20\1\51\1\256\1\25\3\257\1\25\2\21\22\25\4\20\1\51\1\260\1\0\1\156"+ "\64\20\1\112\1\25\2\20\1\21\1\261\5\20\1\112\40\25\55\20\1\215\15\20\1\24"+ "\4\25\1\21\1\25\1\261\1\262\1\20\1\73\1\21\1\165\1\263\15\20\1\24\3\25\1\261"+ "\54\20\1\215\2\25\10\20\1\36\6\20\5\25\1\20\1\26\2\0\2\25\1\75\1\25\1\132"+ "\2\25\1\241\3\25\1\40\1\30\20\20\1\264\1\231\1\25\1\0\1\156\1\37\2\20\1\11"+ "\1\37\2\20\1\45\1\265\12\20\1\21\3\36\1\266\1\267\2\25\1\270\1\20\1\137\2"+ "\20\1\21\2\20\1\271\1\20\1\215\1\20\1\215\4\25\17\20\1\45\10\25\6\20\1\26"+ "\20\25\1\272\20\25\3\20\1\26\6\20\1\125\5\25\3\20\1\21\2\25\3\20\1\45\6\25"+ "\3\20\1\215\4\20\1\112\1\20\1\236\5\25\23\20\1\215\1\0\1\156\52\25\1\215\1"+ "\73\4\20\1\34\1\273\2\20\1\215\25\25\2\20\1\215\1\25\3\20\1\24\10\25\7\20"+ "\1\265\10\25\1\274\1\74\1\137\1\37\2\20\1\112\1\115\4\25\3\20\1\26\20\25\6"+ "\20\1\215\1\25\2\20\1\215\1\25\2\20\1\45\21\25\11\20\1\125\66\25\1\220\6\20"+ "\1\0\1\75\3\25\1\121\1\0\2\25\1\220\5\20\1\0\1\275\2\25\3\20\1\125\1\0\1\156"+ "\1\220\3\20\1\155\1\0\1\141\1\0\10\25\1\220\5\20\1\51\1\0\1\276\1\25\1\0\1"+ "\156\24\25\5\20\1\51\1\0\1\25\1\0\1\156\46\25\55\20\1\21\22\25\14\20\1\45"+ "\63\25\5\20\1\21\72\25\7\20\1\125\130\25\10\20\1\26\1\25\1\100\4\0\1\75\1"+ "\25\1\60\1\220\1\20\14\25\1\24\153\25\1\277\1\300\2\0\1\301\1\2\3\25\1\302"+ "\22\25\1\303\67\25\12\20\1\30\10\20\1\30\1\304\1\305\1\20\1\306\1\137\7\20"+ "\1\34\1\307\2\30\3\20\1\310\1\165\1\36\1\73\51\20\1\215\3\20\1\73\2\20\1\203"+ "\3\20\1\203\2\20\1\30\3\20\1\30\2\20\1\21\3\20\1\21\3\20\1\73\3\20\1\73\2"+ "\20\1\203\1\311\6\0\1\137\3\20\1\157\1\37\1\203\1\312\1\235\1\313\1\157\1"+ "\225\1\157\2\203\1\120\1\20\1\33\1\20\1\112\1\314\1\33\1\20\1\112\50\25\32"+ "\20\1\21\5\25\106\20\1\26\1\25\33\20\1\215\74\25\1\117\3\25\14\0\20\25\36"+ "\0\2\25"); /* The ZZ_CMAP_A table has 1640 entries */ static final char ZZ_CMAP_A[] = zzUnpackCMap( "\11\12\2\1\1\0\2\1\6\12\4\0\1\1\1\3\1\15\1\14\1\11\2\0\1\16\2\0\1\26\2\0\1"+ "\4\1\0\1\17\2\12\1\13\1\0\1\2\1\6\1\5\1\0\1\32\1\31\1\35\1\7\1\11\1\30\1\10"+ "\2\11\1\20\2\11\1\33\1\21\1\27\1\23\1\22\1\11\1\24\1\11\1\25\1\11\1\34\4\11"+ "\4\0\1\11\1\0\1\31\1\35\1\7\1\11\1\30\1\10\4\11\4\0\1\12\2\0\4\11\4\0\1\11"+ "\2\0\1\12\7\0\1\11\4\0\1\11\5\0\17\11\1\0\2\20\10\11\4\0\4\11\16\0\5\11\7"+ "\0\1\11\1\0\1\11\1\0\5\11\1\0\2\11\6\0\1\11\1\0\3\11\1\0\1\11\1\0\4\11\1\0"+ "\13\11\1\0\3\11\1\0\5\12\2\0\6\11\1\0\7\11\1\0\1\11\15\0\1\11\1\0\15\12\1"+ "\0\1\12\1\0\2\12\1\0\2\12\1\0\1\12\3\11\5\0\5\12\6\0\1\11\4\0\3\12\5\0\3\11"+ "\7\12\4\0\2\11\1\12\13\11\1\0\1\11\7\12\2\11\2\12\1\0\4\12\2\11\2\12\3\11"+ "\2\0\1\11\7\0\1\12\1\11\1\12\6\11\3\12\2\0\11\11\3\12\1\11\6\0\2\12\6\11\4"+ "\12\2\11\2\0\2\12\1\11\11\12\1\11\3\12\1\11\5\12\2\0\1\11\3\12\4\0\1\11\1"+ "\0\6\11\4\0\13\12\1\0\4\12\6\11\3\12\1\11\2\12\1\11\7\12\2\11\2\12\2\0\2\12"+ "\1\0\3\12\1\0\10\11\2\0\2\11\2\0\6\11\1\0\1\11\3\0\4\11\2\0\1\12\1\11\7\12"+ "\2\0\2\12\2\0\3\12\1\11\5\0\2\11\1\0\5\11\4\0\1\11\1\0\2\11\1\0\2\11\1\0\2"+ "\11\2\0\1\12\1\0\5\12\4\0\2\12\2\0\3\12\3\0\1\12\7\0\4\11\1\0\1\11\7\0\4\12"+ "\3\11\1\12\2\0\1\11\1\0\2\11\1\0\3\11\2\12\1\0\3\12\2\0\1\11\11\0\1\12\1\11"+ "\1\0\6\11\3\0\3\11\1\0\4\11\3\0\2\11\1\0\1\11\1\0\2\11\3\0\2\11\3\0\2\11\4"+ "\0\5\12\3\0\3\12\1\0\4\12\2\0\1\11\6\0\1\12\4\11\1\0\5\11\3\0\1\11\7\12\1"+ "\0\2\12\5\0\2\12\3\0\2\12\1\0\3\11\1\0\2\11\5\0\3\11\2\0\1\11\3\12\1\0\4\12"+ "\1\11\1\0\4\11\1\0\1\11\4\0\1\12\4\0\6\12\1\0\1\12\3\0\2\12\4\0\1\11\1\12"+ "\2\11\7\12\4\0\10\11\3\12\7\0\2\11\1\0\1\11\2\0\2\11\1\0\1\11\2\0\1\11\6\0"+ "\4\11\1\0\3\11\1\0\1\11\1\0\1\11\2\0\2\11\1\0\3\11\2\12\1\0\2\12\1\11\2\0"+ "\5\11\1\0\1\11\1\0\6\12\2\0\2\12\2\0\4\11\5\0\1\12\1\0\1\12\1\0\1\12\4\0\2"+ "\12\5\11\3\12\6\0\1\12\1\0\7\12\1\11\2\12\4\11\3\12\1\11\3\12\2\11\7\12\3"+ "\11\4\12\5\11\14\12\1\11\1\12\3\11\1\0\7\11\2\0\3\12\2\11\3\12\3\0\2\11\2"+ "\12\4\0\1\11\1\0\2\12\4\0\4\11\10\12\3\0\1\11\3\0\2\11\1\12\5\0\3\12\2\0\1"+ "\11\1\12\1\11\5\0\6\11\2\0\5\12\3\11\3\0\10\12\5\11\2\12\3\0\3\11\3\12\1\0"+ "\5\12\4\11\1\12\4\11\3\12\2\11\2\0\1\11\1\0\1\11\1\0\1\11\1\0\1\11\2\0\3\11"+ "\1\0\6\11\2\0\2\11\2\0\5\12\5\0\1\11\5\0\6\12\1\0\1\12\3\0\4\12\11\0\1\11"+ "\4\0\1\11\1\0\5\11\2\0\1\11\1\0\4\11\1\0\3\11\2\0\4\11\5\0\5\11\4\0\1\11\4"+ "\0\4\11\3\12\2\11\5\0\2\12\2\0\3\11\6\12\1\0\2\11\2\0\4\11\1\0\2\11\1\12\3"+ "\11\1\12\4\11\1\12\10\11\2\12\4\0\1\11\1\12\4\0\1\12\5\11\2\12\3\0\3\11\4"+ "\0\3\11\2\12\2\0\6\11\1\0\3\12\1\0\2\12\5\0\5\11\5\0\1\11\1\12\3\11\1\0\2"+ "\11\1\0\7\11\2\0\1\12\6\0\2\11\2\0\3\11\3\0\2\11\3\0\2\11\2\0\3\12\4\0\3\11"+ "\1\0\2\11\1\0\1\11\5\0\1\12\2\0\1\11\3\0\1\11\2\0\2\11\3\12\1\0\2\12\1\0\3"+ "\12\2\0\1\12\2\0\1\12\4\11\10\0\5\12\3\0\6\12\2\0\3\12\2\0\4\12\4\0\3\12\5"+ "\0\1\11\2\0\2\11\2\0\4\11\1\0\4\11\1\0\1\11\1\0\6\11\2\0\5\11\1\0\4\11\1\0"+ "\4\11\2\0\2\12\1\0\1\11\1\0\1\11\5\0\1\11\1\0\1\11\1\0\3\11\1\0\3\11\1\0\3"+ "\11"); /** * Translates DFA states to action switch labels. */ private static final int [] ZZ_ACTION = zzUnpackAction(); private static final String ZZ_ACTION_PACKED_0 = "\1\1\5\2\1\3\6\0\1\2\2\0\1\4\1\5"+ "\1\1\1\6\1\5\1\7\2\5\1\6\1\2\1\10"+ "\3\6\1\11\1\12\1\6\2\13\1\14\1\13\3\3"+ "\1\6\1\15\1\16\1\17\1\20\1\21\1\22\1\17"+ "\1\22\1\23\1\24\1\25\1\26\1\6\1\27\1\30"+ "\1\31\1\32\1\33\1\34\1\27\1\35\1\6\1\36"+ "\4\0\4\5\1\37\1\40\11\0\1\41\1\0\1\41"+ "\7\0\1\42\10\0\1\43\1\0\1\5\2\0\3\5"+ "\3\0\1\44\1\0\1\12\1\45\3\0\1\46\4\0"+ "\1\47\10\0\1\50\1\5\4\0\3\5\1\37\1\40"+ "\1\0\1\51\1\52\1\0\1\53\2\0\1\54\3\0"+ "\1\55\1\5\2\0\2\5\1\56\1\57\1\0\1\60"+ "\1\0\1\61\2\0\1\5\4\0\2\5\1\0\1\5"+ "\3\0\1\5\2\0\3\5\1\0\1\5\3\0\3\5"+ "\2\0\1\5\2\0\1\5\1\0\1\5\1\0\4\5"+ "\1\0\1\5\1\0\4\5\1\0\1\5\3\0\3\5"+ "\10\0\1\5\1\0\1\5\1\0\3\5\2\0\1\5"+ "\1\0\1\5\1\0\3\5\1\0\1\62\4\0\1\5"+ "\1\0\1\5\1\0\6\5\15\0\1\5\1\0\1\5"+ "\1\0\6\5\1\0\1\5\1\0\1\5\1\0\6\5"+ "\7\0\1\5\2\0\1\5\1\0\3\5\21\0\1\5"+ "\2\0\1\5\1\0\5\5\1\0\1\5\2\0\1\5"+ "\1\0\5\5\4\0\1\5\1\0\3\5\24\0\1\5"+ "\1\0\6\5\1\0\5\5\4\0\1\5\1\0\3\5"+ "\20\0\1\5\1\0\5\5\1\0\4\5\2\0\4\5"+ "\20\0\12\5\1\0\4\5\16\0\10\5\1\0\3\5"+ "\16\0\6\5\1\0\1\62\1\0\3\62\2\5\13\0"+ "\1\62\1\0\3\62\2\5\1\62\1\0\3\62\2\5"+ "\3\0\1\62\1\0\1\62\1\5\12\0\1\62\1\0"+ "\2\62\1\5\2\0\1\62\1\0\2\62\1\5\3\0"+ "\4\62\7\0\5\62\2\0\5\62\4\0\1\62\6\0"+ "\1\62\1\0\1\62\1\0\3\62\3\0\1\62\1\0"+ "\2\62\1\63\5\0\3\62\1\0\2\62\4\0\3\62"+ "\1\0\1\62\2\0\3\62\1\63\4\62"; private static int [] zzUnpackAction() { int [] result = new int[658]; 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\36\0\74\0\132\0\170\0\226\0\264\0\322"+ "\0\360\0\u010e\0\u012c\0\u014a\0\u0168\0\u0186\0\u01a4\0\u01c2"+ "\0\u01e0\0\u01fe\0\u021c\0\u023a\0\u0258\0\u0276\0\u0294\0\u02b2"+ "\0\u0276\0\u02d0\0\u0276\0\u02ee\0\u030c\0\u032a\0\u0276\0\u0348"+ "\0\u0366\0\u0276\0\u0384\0\u0276\0\u0366\0\u03a2\0\u03c0\0\u03de"+ "\0\u03fc\0\u041a\0\u0438\0\u0456\0\u0474\0\u0492\0\u04b0\0\u0276"+ "\0\u0276\0\u04ce\0\u0276\0\u0276\0\u0276\0\u04ec\0\u050a\0\u0528"+ "\0\u0276\0\u0276\0\u0276\0\u0276\0\u0546\0\u0564\0\u0582\0\u0276"+ "\0\u05a0\0\u05be\0\u05dc\0\u05fa\0\u0618\0\u0636\0\u0654\0\u0672"+ "\0\u0690\0\u06ae\0\u06cc\0\u06ea\0\u0708\0\u0726\0\u0744\0\u0762"+ "\0\u0780\0\u079e\0\u07bc\0\u0438\0\u0456\0\u0492\0\u04b0\0\u04ec"+ "\0\u07da\0\u07f8\0\u0816\0\u0834\0\u0852\0\u0276\0\u0870\0\u088e"+ "\0\u08ac\0\u08ca\0\u08e8\0\u0906\0\u0924\0\u0942\0\u0960\0\u097e"+ "\0\u099c\0\u09ba\0\u09d8\0\u09f6\0\u0a14\0\u0a32\0\u0a50\0\u0a6e"+ "\0\u0a8c\0\u0aaa\0\u0ac8\0\u0ae6\0\u0b04\0\u0b22\0\u0b40\0\u0b5e"+ "\0\u0276\0\u0b7c\0\u0b9a\0\u0bb8\0\u0bd6\0\u0bf4\0\u0c12\0\u0c30"+ "\0\u0c4e\0\u0c6c\0\u0c8a\0\u0ca8\0\u0cc6\0\u0ce4\0\u0d02\0\u0d20"+ "\0\u0d3e\0\u0d5c\0\u0d7a\0\u0d98\0\u0db6\0\u0dd4\0\u0df2\0\u0e10"+ "\0\u0e2e\0\u0e4c\0\u0e6a\0\u0e88\0\u0ea6\0\u0276\0\u0ec4\0\u0ee2"+ "\0\u0f00\0\u0f1e\0\u0f3c\0\u0f5a\0\u0f78\0\u0f96\0\u0fb4\0\u0fd2"+ "\0\u0ff0\0\u100e\0\u0276\0\u0276\0\u102c\0\u0276\0\u104a\0\u0276"+ "\0\u0f78\0\u1068\0\u1086\0\u10a4\0\u10c2\0\u10e0\0\u10fe\0\u111c"+ "\0\u113a\0\u1158\0\u1176\0\u1194\0\u11b2\0\u11d0\0\u11ee\0\u120c"+ "\0\u122a\0\u1248\0\u1266\0\u1284\0\u12a2\0\u12c0\0\u12de\0\u12fc"+ "\0\u131a\0\u1338\0\u1356\0\u1374\0\u1392\0\u13b0\0\u13ce\0\u13ec"+ "\0\u140a\0\u1428\0\u1446\0\u1464\0\u1482\0\u14a0\0\u14be\0\u14dc"+ "\0\u14fa\0\u1518\0\u1536\0\u1554\0\u1572\0\u1590\0\u15ae\0\u15cc"+ "\0\u15ea\0\u1608\0\u1626\0\u1644\0\u1662\0\u1680\0\u169e\0\u16bc"+ "\0\u16da\0\u16f8\0\u1716\0\u1734\0\u1752\0\u1770\0\u178e\0\u17ac"+ "\0\u17ca\0\u17e8\0\u1806\0\u1824\0\u1842\0\u1860\0\u187e\0\u189c"+ "\0\u18ba\0\u18d8\0\u18f6\0\u1914\0\u1932\0\u1950\0\u196e\0\u198c"+ "\0\u19aa\0\u19c8\0\u19e6\0\u1a04\0\u1a22\0\u1a40\0\u1a5e\0\u1a7c"+ "\0\u1a9a\0\u1ab8\0\u1ad6\0\u1af4\0\u1b12\0\u1b30\0\u1b4e\0\u1b6c"+ "\0\u1b8a\0\u1ba8\0\u1bc6\0\u1be4\0\u1c02\0\u1c20\0\u1c3e\0\u1c5c"+ "\0\u1c7a\0\u1c98\0\u1cb6\0\u1cd4\0\u1cf2\0\u1d10\0\u1d2e\0\u1d4c"+ "\0\u1d6a\0\u1d88\0\u1da6\0\u1dc4\0\u1de2\0\u1e00\0\u1e1e\0\u1e3c"+ "\0\u1e5a\0\u1e78\0\u1e96\0\u1eb4\0\u1ed2\0\u1ef0\0\u1f0e\0\u1f2c"+ "\0\u1f4a\0\u1f68\0\u1f86\0\u1fa4\0\u1fc2\0\u1fe0\0\u1ffe\0\u201c"+ "\0\u203a\0\u2058\0\u2076\0\u2094\0\u20b2\0\u20d0\0\u20ee\0\u210c"+ "\0\u212a\0\u2148\0\u2166\0\u2184\0\u21a2\0\u21c0\0\u21de\0\u21fc"+ "\0\u221a\0\u2238\0\u2256\0\u2274\0\u2292\0\u22b0\0\u22ce\0\u22ec"+ "\0\u230a\0\u2328\0\u2346\0\u2364\0\u2382\0\u23a0\0\u23be\0\u23dc"+ "\0\u23fa\0\u2418\0\u2436\0\u2454\0\u2472\0\u2490\0\u24ae\0\u24cc"+ "\0\u24ea\0\u2508\0\u2526\0\u2544\0\u2562\0\u2580\0\u259e\0\u25bc"+ "\0\u25da\0\u25f8\0\u2616\0\u2634\0\u2652\0\u2670\0\u268e\0\u26ac"+ "\0\u26ca\0\u26e8\0\u2706\0\u2724\0\u2742\0\u2760\0\u277e\0\u279c"+ "\0\u27ba\0\u27d8\0\u27f6\0\u2814\0\u2832\0\u2850\0\u286e\0\u288c"+ "\0\u28aa\0\u28c8\0\u28e6\0\u2904\0\u2922\0\u2940\0\u295e\0\u297c"+ "\0\u299a\0\u29b8\0\u29d6\0\u29f4\0\u2a12\0\u2a30\0\u2a4e\0\u2a6c"+ "\0\u2a8a\0\u2aa8\0\u2ac6\0\u2ae4\0\u2b02\0\u2b20\0\u2b3e\0\u2b5c"+ "\0\u2b7a\0\u2b98\0\u2bb6\0\u2bd4\0\u2bf2\0\u2c10\0\u2c2e\0\u2c4c"+ "\0\u2c6a\0\u2c88\0\u2ca6\0\u2cc4\0\u2ce2\0\u2d00\0\u2d1e\0\u2d3c"+ "\0\u2d5a\0\u2d78\0\u2d96\0\u2db4\0\u2dd2\0\u2df0\0\u2e0e\0\u2e2c"+ "\0\u2e4a\0\u2e68\0\u2e86\0\u2ea4\0\u2ec2\0\u2ee0\0\u2efe\0\u2f1c"+ "\0\u2f3a\0\u2f58\0\u2f76\0\u2f94\0\u2fb2\0\u2fd0\0\u2fee\0\u300c"+ "\0\u302a\0\u3048\0\u3066\0\u3084\0\u30a2\0\u30c0\0\u30de\0\u30fc"+ "\0\u311a\0\u3138\0\u3156\0\u3174\0\u3192\0\u31b0\0\u31ce\0\u31ec"+ "\0\u320a\0\u3228\0\u3246\0\u3264\0\u3282\0\u32a0\0\u32be\0\u32dc"+ "\0\u32fa\0\u3318\0\u3336\0\u3354\0\u3372\0\u3390\0\u33ae\0\u33cc"+ "\0\u33ea\0\u3408\0\u3426\0\u3444\0\u3462\0\u3480\0\u349e\0\u34bc"+ "\0\u34da\0\u34f8\0\u3516\0\u3534\0\u3552\0\u3570\0\u358e\0\u35ac"+ "\0\u35ca\0\u35e8\0\u3606\0\u3624\0\u3642\0\u3660\0\u367e\0\u369c"+ "\0\u36ba\0\u36d8\0\u36f6\0\u3714\0\u3732\0\u3750\0\u376e\0\u378c"+ "\0\u37aa\0\u37c8\0\u37e6\0\u3804\0\u3822\0\u3840\0\u385e\0\u387c"+ "\0\u389a\0\u38b8\0\u38d6\0\u38f4\0\u3912\0\u3930\0\u394e\0\u396c"+ "\0\u398a\0\u39a8\0\u39c6\0\u39e4\0\u3a02\0\u3a20\0\u3a3e\0\u3a5c"+ "\0\u3a7a\0\u3a98\0\u3ab6\0\u3ad4\0\u3af2\0\u3b10\0\u3b2e\0\u3b4c"+ "\0\u3b6a\0\u3b88\0\u3ba6\0\u3bc4\0\u3be2\0\u3c00\0\u3c1e\0\u3c3c"+ "\0\u3c5a\0\u3c78\0\u3c96\0\u3cb4\0\u3cd2\0\u3cf0\0\u3d0e\0\u3d2c"+ "\0\u3d4a\0\u3d68\0\u3d86\0\u3da4\0\u3dc2\0\u3de0\0\u3dfe\0\u3e1c"+ "\0\u3e3a\0\u3e58\0\u3e76\0\u3e94\0\u3eb2\0\u3ed0\0\u3eee\0\u3f0c"+ "\0\u3f2a\0\u3f48\0\u3f66\0\u3f84\0\u3fa2\0\u3fc0\0\u3fde\0\u3ffc"+ "\0\u401a\0\u4038\0\u4056\0\u4074\0\u4092\0\u40b0\0\u40ce\0\u40ec"+ "\0\u410a\0\u4128\0\u4146\0\u4164\0\u4182\0\u41a0\0\u41be\0\u41dc"+ "\0\u41fa\0\u4218\0\u4236\0\u4254\0\u4272\0\u4290\0\u42ae\0\u42cc"+ "\0\u42ea\0\u4308\0\u4326\0\u4344\0\u4362\0\u4380\0\u439e\0\u43bc"+ "\0\u43da\0\u43f8\0\u4416\0\u4434\0\u4452\0\u4470\0\u448e\0\u44ac"+ "\0\u44ca\0\u44e8\0\u4506\0\u4524\0\u4542\0\u4560\0\u457e\0\u459c"+ "\0\u45ba\0\u45d8\0\u45f6\0\u4614\0\u4632\0\u4650\0\u466e\0\u468c"+ "\0\u46aa\0\u46c8\0\u46e6\0\u4704\0\u4722\0\u4740\0\u475e\0\u477c"+ "\0\u479a\0\u47b8\0\u47d6\0\u47f4\0\u4812\0\u4830\0\u484e\0\u486c"+ "\0\u488a\0\u48a8\0\u48c6\0\u48e4\0\u4902\0\u0276\0\u4920\0\u493e"+ "\0\u495c\0\u497a"; private static int [] zzUnpackRowMap() { int [] result = new int[658]; 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\22\1\23\1\24\4\22\1\25\4\22\1\26\2\22"+ "\1\27\1\30\11\22\1\31\3\22\1\31\1\32\3\31"+ "\1\33\31\31\1\32\5\31\1\34\27\31\1\32\5\31"+ "\1\35\27\31\1\32\1\36\2\31\1\37\1\31\3\40"+ "\5\31\1\41\6\40\1\31\3\40\1\31\3\40\1\42"+ "\1\32\1\43\2\42\1\37\1\44\10\42\1\45\16\42"+ "\2\46\1\47\1\46\1\50\31\46\4\31\1\51\31\31"+ "\14\52\1\53\1\54\20\52\36\31\14\55\1\56\1\55"+ "\1\57\17\55\15\31\1\60\36\31\1\61\17\31\1\62"+ "\1\32\1\31\2\62\1\31\6\62\1\63\1\64\1\65"+ "\1\66\16\62\2\67\1\70\2\67\1\71\6\67\1\72"+ "\1\73\1\74\1\75\16\67\2\76\1\77\11\76\1\100"+ "\15\76\1\31\3\76\36\21\2\22\1\101\11\22\1\0"+ "\22\22\1\23\1\101\4\22\1\25\4\22\1\0\2\22"+ "\1\27\1\30\20\22\1\102\3\22\1\103\7\22\1\104"+ "\20\22\1\101\11\22\1\0\6\22\1\105\12\22\36\0"+ "\2\22\1\101\11\22\1\0\11\22\1\106\11\22\1\101"+ "\11\22\1\0\4\22\1\107\5\22\1\110\6\22\1\0"+ "\1\32\44\0\1\111\35\0\1\112\30\0\1\113\3\0"+ "\1\114\7\0\1\115\25\0\4\40\1\116\4\0\6\40"+ "\1\0\3\40\1\0\3\40\5\0\1\33\33\0\1\113"+ "\3\0\1\117\7\0\1\120\16\0\2\46\1\0\1\46"+ "\1\0\31\46\3\0\1\121\36\0\1\122\35\0\1\123"+ "\31\0\14\52\1\124\1\125\20\52\14\0\1\52\36\0"+ "\1\52\20\0\14\55\1\126\1\55\1\127\17\55\14\0"+ "\1\55\37\0\1\55\17\0\1\62\2\0\2\62\1\0"+ "\6\62\3\0\1\130\23\62\1\0\30\62\2\67\1\131"+ "\2\67\1\0\6\67\3\0\1\132\21\67\1\133\3\67"+ "\1\134\7\67\1\135\23\67\1\136\30\67\2\76\1\137"+ "\11\76\1\0\24\76\1\140\3\76\1\141\7\76\1\142"+ "\16\76\3\22\1\143\3\22\1\144\7\22\1\145\22\22"+ "\1\146\41\22\1\147\34\22\1\150\30\22\1\101\11\22"+ "\1\0\4\22\1\151\14\22\2\106\1\152\11\106\1\153"+ "\11\106\1\154\7\106\2\22\1\101\11\22\1\0\5\22"+ "\1\155\15\22\1\101\11\22\1\0\10\22\1\156\10\22"+ "\7\0\4\111\1\157\4\0\6\111\1\0\3\111\1\0"+ "\3\111\7\0\4\112\1\160\4\0\6\112\1\0\3\112"+ "\1\0\3\112\4\0\1\161\41\0\1\162\34\0\1\163"+ "\35\0\3\164\6\0\6\164\1\0\3\164\1\0\3\164"+ "\10\0\1\165\34\0\1\166\32\0\1\167\35\0\1\170"+ "\36\0\1\171\30\0\3\67\1\172\3\67\1\173\7\67"+ "\1\174\23\67\1\0\34\67\1\175\41\67\1\176\34\67"+ "\1\177\26\67\3\76\1\200\3\76\1\201\7\76\1\202"+ "\22\76\1\203\41\76\1\162\34\76\1\204\26\76\4\22"+ "\1\205\41\22\1\0\34\22\1\144\32\22\1\206\31\22"+ "\7\0\4\147\5\0\6\147\1\0\3\147\1\0\3\147"+ "\10\22\1\207\27\22\1\101\11\22\1\0\5\22\1\210"+ "\13\22\3\106\1\211\3\106\1\212\7\106\1\213\6\106"+ "\1\154\7\106\26\153\1\214\7\153\2\106\1\152\11\106"+ "\1\153\2\106\1\215\6\106\1\154\7\106\2\22\1\101"+ "\11\22\1\0\6\22\1\216\14\22\1\101\11\22\1\0"+ "\13\22\1\217\5\22\7\0\3\220\6\0\6\220\1\0"+ "\3\220\1\0\3\220\7\0\3\221\6\0\6\221\1\0"+ "\3\221\1\0\3\221\4\0\1\222\40\0\4\162\5\0"+ "\6\162\1\0\3\162\1\0\3\162\10\0\1\223\34\0"+ "\4\164\5\0\6\164\1\0\3\164\1\0\3\164\7\0"+ "\4\165\5\0\6\165\1\0\3\165\1\0\3\165\10\0"+ "\1\224\31\0\1\225\36\0\1\226\30\0\4\67\1\227"+ "\41\67\1\0\34\67\1\173\32\67\1\230\31\67\7\0"+ "\4\176\5\0\6\176\1\0\3\176\1\0\3\176\10\67"+ "\1\231\25\67\4\76\1\232\41\76\1\0\34\76\1\201"+ "\32\76\1\233\41\76\1\223\25\76\4\22\1\234\35\22"+ "\1\235\31\22\7\0\4\207\5\0\6\207\1\0\3\207"+ "\1\0\3\207\2\22\1\101\11\22\1\0\6\22\1\236"+ "\12\22\4\106\1\237\21\106\1\154\17\106\1\153\15\106"+ "\1\154\16\106\1\212\16\106\1\154\7\106\17\153\1\240"+ "\6\153\1\214\7\153\1\22\1\215\1\101\4\22\1\25"+ "\4\22\1\0\2\22\1\27\1\30\17\22\1\101\11\22"+ "\1\0\7\22\1\241\13\22\1\101\11\22\1\0\7\22"+ "\1\242\11\22\7\0\4\220\5\0\6\220\1\0\3\220"+ "\1\0\3\220\7\0\4\221\5\0\6\221\1\0\3\221"+ "\1\0\3\221\4\0\1\243\40\0\4\223\5\0\6\223"+ "\1\0\3\223\1\0\3\223\7\0\4\224\5\0\6\224"+ "\1\0\3\224\1\0\3\224\4\0\1\244\31\0\4\67"+ "\1\245\35\67\1\246\31\67\7\0\4\231\5\0\6\231"+ "\1\0\3\231\1\0\3\231\4\76\1\247\35\76\1\250"+ "\31\76\4\22\1\0\31\22\1\0\1\251\30\0\1\252"+ "\3\0\2\22\1\101\11\22\1\0\12\22\1\253\6\22"+ "\4\106\1\254\21\106\1\154\7\106\1\0\1\240\5\0"+ "\1\255\7\0\1\256\1\257\15\0\2\22\1\101\11\22"+ "\1\0\10\22\1\260\12\22\1\101\5\22\1\261\3\22"+ "\1\0\21\22\4\67\1\0\31\67\4\76\1\0\31\76"+ "\7\0\1\262\26\0\2\22\1\101\11\22\1\0\13\22"+ "\1\263\5\22\4\106\1\153\21\106\1\154\7\106\23\0"+ "\1\264\40\0\1\153\30\0\1\265\5\0\1\266\6\0"+ "\2\267\1\270\11\267\1\271\1\272\1\273\17\267\2\22"+ "\1\101\11\22\1\0\14\22\1\274\4\22\10\0\1\275"+ "\25\0\2\22\1\101\11\22\1\0\12\22\1\276\6\22"+ "\21\0\1\277\36\0\1\300\40\0\1\301\10\0\2\267"+ "\1\270\4\267\1\302\4\267\1\271\1\272\1\273\1\303"+ "\1\304\20\267\1\305\3\267\1\306\4\267\1\307\1\272"+ "\1\273\1\310\1\304\15\267\14\0\1\311\21\0\2\312"+ "\1\313\4\312\1\314\4\312\1\315\1\267\1\316\1\317"+ "\1\320\15\312\2\321\1\322\4\321\1\323\4\321\1\324"+ "\1\325\1\267\1\326\1\327\15\321\2\22\1\101\4\22"+ "\1\330\4\22\1\0\21\22\21\0\1\331\14\0\2\22"+ "\1\101\11\22\1\0\10\22\1\332\10\22\22\0\1\333"+ "\36\0\1\334\42\0\1\335\5\0\2\267\1\270\4\267"+ "\1\302\4\267\1\271\1\272\1\273\1\303\1\304\2\267"+ "\1\336\14\267\1\270\4\267\1\302\4\267\1\271\1\272"+ "\1\273\1\303\1\304\5\267\1\337\11\267\1\270\4\267"+ "\1\302\4\267\1\271\1\272\1\273\1\303\1\304\6\267"+ "\1\340\12\267\1\341\2\267\1\302\4\267\1\307\1\272"+ "\1\273\1\303\1\304\24\267\1\302\1\311\3\267\1\307"+ "\1\272\1\273\1\303\1\304\2\267\1\336\12\267\2\22"+ "\1\101\11\22\1\311\21\22\7\267\1\306\4\267\1\307"+ "\1\272\1\273\1\303\1\304\5\267\1\337\7\267\7\311"+ "\1\342\4\311\1\271\1\343\1\344\1\345\1\346\15\311"+ "\2\312\1\313\4\312\1\314\4\312\1\315\1\312\1\316"+ "\1\317\1\320\20\312\1\347\3\312\1\350\4\312\1\351"+ "\1\312\1\316\1\352\1\320\17\312\1\313\4\312\1\314"+ "\4\312\1\315\1\312\1\316\1\317\1\320\2\312\1\353"+ "\12\312\14\0\1\354\21\0\2\22\1\101\11\22\1\0"+ "\1\22\1\312\17\22\2\312\1\313\4\312\1\314\4\312"+ "\1\315\1\312\1\316\1\317\1\320\5\312\1\355\11\312"+ "\1\313\4\312\1\314\4\312\1\315\1\312\1\316\1\317"+ "\1\320\1\356\5\312\1\357\6\312\2\321\1\322\4\321"+ "\1\323\4\321\1\324\1\325\1\321\1\326\1\327\20\321"+ "\1\360\3\321\1\361\4\321\1\362\1\325\1\321\1\363"+ "\1\327\17\321\1\322\4\321\1\323\4\321\1\324\1\325"+ "\1\321\1\326\1\327\2\321\1\364\12\321\14\0\1\365"+ "\21\0\2\22\1\101\11\22\1\0\1\321\20\22\2\321"+ "\1\322\4\321\1\323\4\321\1\324\1\325\1\321\1\326"+ "\1\327\5\321\1\366\11\321\1\322\4\321\1\323\4\321"+ "\1\324\1\325\1\321\1\326\1\327\1\367\5\321\1\370"+ "\6\321\2\22\1\101\11\22\1\0\13\22\1\332\5\22"+ "\33\0\1\371\2\0\2\372\1\373\11\372\1\0\15\372"+ "\1\22\3\372\23\0\1\374\36\0\1\375\35\0\1\376"+ "\11\0\2\267\1\270\4\267\1\302\4\267\1\271\1\272"+ "\1\273\1\303\1\304\1\377\14\267\2\337\1\u0100\4\337"+ "\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106\5\337"+ "\1\u0107\7\337\2\267\1\270\4\267\1\302\4\267\1\271"+ "\1\272\1\273\1\303\1\304\4\267\1\u0108\14\267\1\u0109"+ "\2\267\1\302\4\267\1\307\1\272\1\273\1\303\1\304"+ "\15\267\7\311\1\342\4\311\1\271\1\343\1\344\1\345"+ "\1\346\2\311\1\u010a\12\311\7\354\1\u010b\4\354\1\315"+ "\1\311\1\u010c\1\u010d\1\u010e\15\354\7\365\1\u010f\4\365"+ "\1\324\1\u0110\1\311\1\u0111\1\u0112\15\365\7\311\1\342"+ "\4\311\1\271\1\343\1\344\1\345\1\346\5\311\1\u0113"+ "\16\311\1\342\4\311\1\271\1\343\1\344\1\345\1\346"+ "\6\311\1\u0114\6\311\4\312\1\u0115\2\312\1\314\4\312"+ "\1\351\1\312\1\316\1\317\1\320\24\312\1\314\1\354"+ "\3\312\1\351\1\312\1\316\1\317\1\320\2\312\1\353"+ "\12\312\2\22\1\101\11\22\1\354\21\22\7\312\1\350"+ "\4\312\1\351\1\312\1\316\1\317\1\320\5\312\1\355"+ "\11\312\1\313\4\312\1\314\4\312\1\315\1\312\1\316"+ "\1\317\1\320\1\u0116\14\312\7\354\1\u010b\4\354\1\315"+ "\1\354\1\u010c\1\u010d\1\u010e\15\354\2\355\1\u0117\4\355"+ "\1\u0118\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\5\355"+ "\1\u011d\7\355\2\312\1\313\4\312\1\314\4\312\1\315"+ "\1\312\1\316\1\317\1\320\1\312\1\u011e\15\312\1\313"+ "\4\312\1\314\4\312\1\315\1\312\1\316\1\317\1\320"+ "\4\312\1\u011f\10\312\4\321\1\u0120\2\321\1\323\4\321"+ "\1\362\1\325\1\321\1\326\1\327\24\321\1\323\1\365"+ "\3\321\1\362\1\325\1\321\1\326\1\327\2\321\1\364"+ "\12\321\2\22\1\101\11\22\1\365\21\22\7\321\1\361"+ "\4\321\1\362\1\325\1\321\1\326\1\327\5\321\1\366"+ "\11\321\1\322\4\321\1\323\4\321\1\324\1\325\1\321"+ "\1\326\1\327\1\u0121\14\321\7\365\1\u010f\4\365\1\324"+ "\1\u0110\1\365\1\u0111\1\u0112\15\365\2\366\1\u0122\4\366"+ "\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127\5\366"+ "\1\u0128\7\366\2\321\1\322\4\321\1\323\4\321\1\324"+ "\1\325\1\321\1\326\1\327\1\321\1\u0129\15\321\1\322"+ "\4\321\1\323\4\321\1\324\1\325\1\321\1\326\1\327"+ "\4\321\1\u012a\10\321\34\0\1\u012b\1\0\2\372\1\373"+ "\11\372\1\0\24\372\1\u012c\3\372\1\u012d\7\372\1\u012e"+ "\16\372\27\0\1\u012f\33\0\1\u0130\20\0\1\u0131\25\0"+ "\2\267\1\270\4\267\1\302\4\267\1\271\1\272\1\273"+ "\1\303\1\304\1\267\1\u0132\13\267\3\337\1\u0133\3\337"+ "\1\u0134\4\337\1\u0135\1\u0103\1\u0104\1\u0136\1\u0106\5\337"+ "\1\u0107\11\337\1\u0100\4\337\1\u0101\4\337\1\u0102\1\u0103"+ "\1\u0104\1\u0105\1\u0106\2\337\1\u0137\2\337\1\u0107\7\337"+ "\14\153\1\u0113\11\153\1\214\7\153\2\355\1\u0117\4\355"+ "\1\u0118\4\355\1\u0119\1\337\1\u011a\1\u011b\1\u011c\5\355"+ "\1\u011d\7\355\2\366\1\u0122\4\366\1\u0123\4\366\1\u0124"+ "\1\u0125\1\337\1\u0126\1\u0127\5\366\1\u0128\7\366\2\337"+ "\1\u0100\4\337\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\u0105"+ "\1\u0106\17\337\1\u0100\4\337\1\u0101\4\337\1\u0102\1\u0103"+ "\1\u0104\1\u0105\1\u0106\5\337\1\u0107\1\u0138\10\337\1\u0100"+ "\4\337\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\303\1\u0106"+ "\5\337\1\u0107\7\337\2\267\1\270\4\267\1\302\4\267"+ "\1\271\1\272\1\273\1\303\1\304\7\267\1\u0139\11\267"+ "\1\311\2\267\1\302\4\267\1\307\1\272\1\273\1\303"+ "\1\304\15\267\7\311\1\342\4\311\1\271\1\343\1\344"+ "\1\345\1\346\1\u013a\14\311\7\354\1\u010b\4\354\1\315"+ "\1\354\1\u010c\1\u010d\1\u010e\2\354\1\u013b\12\354\16\0"+ "\1\354\17\0\7\354\1\u010b\4\354\1\315\1\354\1\u010c"+ "\1\u010d\1\u010e\5\354\1\u013c\16\354\1\u010b\4\354\1\315"+ "\1\354\1\u010c\1\u010d\1\u010e\1\u013d\5\354\1\u013e\6\354"+ "\7\365\1\u010f\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112"+ "\2\365\1\u013f\12\365\15\0\1\365\20\0\7\365\1\u010f"+ "\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112\5\365\1\u0140"+ "\16\365\1\u010f\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112"+ "\1\u0141\5\365\1\u0142\6\365\7\u0113\1\u0143\4\u0113\1\u0102"+ "\1\u0144\1\u0145\1\u0146\1\u0147\5\u0113\1\u0148\7\u0113\7\311"+ "\1\342\4\311\1\271\1\343\1\344\1\345\1\346\4\311"+ "\1\u0149\10\311\4\312\1\u014a\2\312\1\314\4\312\1\351"+ "\1\312\1\316\1\317\1\320\17\312\1\313\4\312\1\314"+ "\4\312\1\315\1\312\1\316\1\317\1\320\1\312\1\u014b"+ "\13\312\3\355\1\u014c\3\355\1\u014d\4\355\1\u014e\1\355"+ "\1\u011a\1\u014f\1\u011c\5\355\1\u011d\11\355\1\u0117\4\355"+ "\1\u0118\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\2\355"+ "\1\u0150\2\355\1\u011d\7\355\14\153\1\u013c\11\153\1\214"+ "\7\153\2\106\1\152\11\106\1\153\1\106\1\355\7\106"+ "\1\154\7\106\2\355\1\u0117\4\355\1\u0118\4\355\1\u0119"+ "\1\355\1\u011a\1\u011b\1\u011c\17\355\1\u0117\4\355\1\u0118"+ "\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\1\u0151\4\355"+ "\1\u011d\1\u0152\10\355\1\u0117\4\355\1\u0118\4\355\1\u0119"+ "\1\355\1\u011a\1\317\1\u011c\5\355\1\u011d\7\355\2\312"+ "\1\313\4\312\1\314\4\312\1\315\1\312\1\316\1\317"+ "\1\320\2\312\1\u0153\14\312\1\313\4\312\1\314\4\312"+ "\1\315\1\312\1\316\1\317\1\320\7\312\1\u0154\5\312"+ "\4\321\1\u0155\2\321\1\323\4\321\1\362\1\325\1\321"+ "\1\326\1\327\17\321\1\322\4\321\1\323\4\321\1\324"+ "\1\325\1\321\1\326\1\327\1\321\1\u0156\13\321\3\366"+ "\1\u0157\3\366\1\u0158\4\366\1\u0159\1\u0125\1\366\1\u015a"+ "\1\u0127\5\366\1\u0128\11\366\1\u0122\4\366\1\u0123\4\366"+ "\1\u0124\1\u0125\1\366\1\u0126\1\u0127\2\366\1\u015b\2\366"+ "\1\u0128\7\366\14\153\1\u0140\11\153\1\214\7\153\2\106"+ "\1\152\11\106\1\153\1\366\10\106\1\154\7\106\2\366"+ "\1\u0122\4\366\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126"+ "\1\u0127\17\366\1\u0122\4\366\1\u0123\4\366\1\u0124\1\u0125"+ "\1\366\1\u0126\1\u0127\1\u015c\4\366\1\u0128\1\u015d\10\366"+ "\1\u0122\4\366\1\u0123\4\366\1\u0124\1\u0125\1\366\1\326"+ "\1\u0127\5\366\1\u0128\7\366\2\321\1\322\4\321\1\323"+ "\4\321\1\324\1\325\1\321\1\326\1\327\2\321\1\u015e"+ "\14\321\1\322\4\321\1\323\4\321\1\324\1\325\1\321"+ "\1\326\1\327\7\321\1\u015f\5\321\31\0\1\u0160\4\0"+ "\4\372\1\u0161\41\372\1\0\34\372\1\u012d\26\372\30\0"+ "\1\u0162\5\0\14\311\1\271\1\343\1\344\17\311\31\0"+ "\1\u0163\4\0\2\267\1\270\4\267\1\302\4\267\1\271"+ "\1\272\1\273\1\303\1\304\2\267\1\u0164\12\267\4\337"+ "\1\u0165\2\337\1\u0101\4\337\1\u0135\1\u0103\1\u0104\1\u0105"+ "\1\u0106\5\337\1\u0107\16\337\1\u0101\1\u0113\3\337\1\u0135"+ "\1\u0103\1\u0104\1\u0105\1\u0106\2\337\1\u0137\2\337\1\u0107"+ "\7\337\2\106\1\152\11\106\1\u0113\11\106\1\154\7\106"+ "\7\337\1\u0134\4\337\1\u0135\1\u0103\1\u0104\1\u0105\1\u0106"+ "\17\337\1\u0100\4\337\1\u0101\4\337\1\u0102\1\u0103\1\u0104"+ "\1\u0105\1\u0106\1\u0166\4\337\1\u0107\11\337\1\u0100\4\337"+ "\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106\4\337"+ "\1\u0167\1\u0107\7\337\2\267\1\270\4\267\1\302\4\267"+ "\1\271\1\272\1\273\1\303\1\304\3\267\1\u0168\11\267"+ "\7\311\1\342\4\311\1\271\1\343\1\344\1\345\1\346"+ "\1\311\1\u0169\13\311\7\354\1\u010b\4\354\1\315\1\354"+ "\1\u010c\1\u010d\1\u010e\1\u016a\14\354\7\u013c\1\u016b\4\u013c"+ "\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\5\u013c\1\u016f\7\u013c"+ "\7\354\1\u010b\4\354\1\315\1\354\1\u010c\1\u010d\1\u010e"+ "\1\354\1\u0170\22\354\1\u010b\4\354\1\315\1\354\1\u010c"+ "\1\u010d\1\u010e\4\354\1\u0171\10\354\7\365\1\u010f\4\365"+ "\1\324\1\u0110\1\365\1\u0111\1\u0112\1\u0172\14\365\7\u0140"+ "\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\5\u0140"+ "\1\u0177\7\u0140\7\365\1\u010f\4\365\1\324\1\u0110\1\365"+ "\1\u0111\1\u0112\1\365\1\u0178\22\365\1\u010f\4\365\1\324"+ "\1\u0110\1\365\1\u0111\1\u0112\4\365\1\u0179\10\365\7\u0113"+ "\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146\1\u0147\2\u0113"+ "\1\u017a\2\u0113\1\u0148\7\u0113\7\u013c\1\u016b\4\u013c\1\u0119"+ "\1\u0113\1\u016c\1\u016d\1\u016e\5\u013c\1\u016f\7\u013c\7\u0140"+ "\1\u0173\4\u0140\1\u0124\1\u0174\1\u0113\1\u0175\1\u0176\5\u0140"+ "\1\u0177\7\u0140\7\u0113\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145"+ "\1\u0146\1\u0147\24\u0113\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145"+ "\1\u0146\1\u0147\5\u0113\1\u0148\1\u017b\15\u0113\1\u0143\4\u0113"+ "\1\u0102\1\u0144\1\u0145\1\345\1\u0147\5\u0113\1\u0148\7\u0113"+ "\7\311\1\342\4\311\1\271\1\343\1\344\1\345\1\346"+ "\7\311\1\u017c\5\311\4\312\1\354\2\312\1\314\4\312"+ "\1\351\1\312\1\316\1\317\1\320\17\312\1\313\4\312"+ "\1\314\4\312\1\315\1\312\1\316\1\317\1\320\2\312"+ "\1\u017d\12\312\4\355\1\u017e\2\355\1\u0118\4\355\1\u014e"+ "\1\355\1\u011a\1\u011b\1\u011c\5\355\1\u011d\16\355\1\u0118"+ "\1\u013c\3\355\1\u014e\1\355\1\u011a\1\u011b\1\u011c\2\355"+ "\1\u0150\2\355\1\u011d\7\355\2\106\1\152\11\106\1\u013c"+ "\11\106\1\154\7\106\7\355\1\u014d\4\355\1\u014e\1\355"+ "\1\u011a\1\u011b\1\u011c\17\355\1\u0117\4\355\1\u0118\4\355"+ "\1\u0119\1\355\1\u011a\1\u011b\1\u011c\1\u017f\4\355\1\u011d"+ "\11\355\1\u0117\4\355\1\u0118\4\355\1\u0119\1\355\1\u011a"+ "\1\u011b\1\u011c\1\355\1\u0180\3\355\1\u011d\11\355\1\u0117"+ "\4\355\1\u0118\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c"+ "\4\355\1\u0181\1\u011d\7\355\2\312\1\313\4\312\1\314"+ "\4\312\1\315\1\312\1\316\1\317\1\320\3\312\1\u0182"+ "\13\312\1\313\4\312\1\314\4\312\1\315\1\312\1\316"+ "\1\317\1\320\3\312\1\u0183\11\312\4\321\1\365\2\321"+ "\1\323\4\321\1\362\1\325\1\321\1\326\1\327\17\321"+ "\1\322\4\321\1\323\4\321\1\324\1\325\1\321\1\326"+ "\1\327\2\321\1\u0184\12\321\4\366\1\u0185\2\366\1\u0123"+ "\4\366\1\u0159\1\u0125\1\366\1\u0126\1\u0127\5\366\1\u0128"+ "\16\366\1\u0123\1\u0140\3\366\1\u0159\1\u0125\1\366\1\u0126"+ "\1\u0127\2\366\1\u015b\2\366\1\u0128\7\366\2\106\1\152"+ "\11\106\1\u0140\11\106\1\154\7\106\7\366\1\u0158\4\366"+ "\1\u0159\1\u0125\1\366\1\u0126\1\u0127\17\366\1\u0122\4\366"+ "\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127\1\u0186"+ "\4\366\1\u0128\11\366\1\u0122\4\366\1\u0123\4\366\1\u0124"+ "\1\u0125\1\366\1\u0126\1\u0127\1\366\1\u0187\3\366\1\u0128"+ "\11\366\1\u0122\4\366\1\u0123\4\366\1\u0124\1\u0125\1\366"+ "\1\u0126\1\u0127\4\366\1\u0188\1\u0128\7\366\2\321\1\322"+ "\4\321\1\323\4\321\1\324\1\325\1\321\1\326\1\327"+ "\3\321\1\u0189\13\321\1\322\4\321\1\323\4\321\1\324"+ "\1\325\1\321\1\326\1\327\3\321\1\u018a\11\321\24\0"+ "\1\u018b\11\0\4\372\1\u018c\31\372\27\0\1\u018d\15\0"+ "\1\u018e\26\0\2\267\1\270\4\267\1\302\4\267\1\271"+ "\1\272\1\273\1\303\1\304\6\267\1\u018f\6\267\4\337"+ "\1\u0190\2\337\1\u0101\4\337\1\u0135\1\u0103\1\u0104\1\u0105"+ "\1\u0106\5\337\1\u0107\11\337\1\u0100\4\337\1\u0101\4\337"+ "\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106\1\337\1\u0191\3\337"+ "\1\u0107\11\337\1\u0100\4\337\1\u0101\4\337\1\u0102\1\u0103"+ "\1\u0104\1\u0105\1\u0106\5\337\1\u0107\1\337\1\u0192\5\337"+ "\2\267\1\270\4\267\1\302\1\u0193\3\267\1\271\1\272"+ "\1\273\1\303\1\304\15\267\7\311\1\342\4\311\1\271"+ "\1\343\1\344\1\345\1\346\2\311\1\u0194\12\311\7\354"+ "\1\u010b\4\354\1\315\1\354\1\u010c\1\u010d\1\u010e\1\354"+ "\1\u0195\13\354\7\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c"+ "\1\u016d\1\u016e\2\u013c\1\u0196\2\u013c\1\u016f\7\u013c\16\153"+ "\1\u013c\7\153\1\214\7\153\7\u013c\1\u016b\4\u013c\1\u0119"+ "\1\u013c\1\u016c\1\u016d\1\u016e\24\u013c\1\u016b\4\u013c\1\u0119"+ "\1\u013c\1\u016c\1\u016d\1\u016e\1\u0197\4\u013c\1\u016f\1\u0198"+ "\15\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c\1\u010d\1\u016e"+ "\5\u013c\1\u016f\7\u013c\7\354\1\u010b\4\354\1\315\1\354"+ "\1\u010c\1\u010d\1\u010e\2\354\1\u0199\21\354\1\u010b\4\354"+ "\1\315\1\354\1\u010c\1\u010d\1\u010e\7\354\1\u019a\5\354"+ "\7\365\1\u010f\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112"+ "\1\365\1\u019b\13\365\7\u0140\1\u0173\4\u0140\1\u0124\1\u0174"+ "\1\u0140\1\u0175\1\u0176\2\u0140\1\u019c\2\u0140\1\u0177\7\u0140"+ "\15\153\1\u0140\10\153\1\214\7\153\7\u0140\1\u0173\4\u0140"+ "\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\24\u0140\1\u0173\4\u0140"+ "\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\1\u019d\4\u0140\1\u0177"+ "\1\u019e\15\u0140\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0111"+ "\1\u0176\5\u0140\1\u0177\7\u0140\7\365\1\u010f\4\365\1\324"+ "\1\u0110\1\365\1\u0111\1\u0112\2\365\1\u019f\21\365\1\u010f"+ "\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112\7\365\1\u01a0"+ "\5\365\7\u0113\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146"+ "\1\u0147\1\u01a1\4\u0113\1\u0148\16\u0113\1\u0143\4\u0113\1\u0102"+ "\1\u0144\1\u0145\1\u0146\1\u0147\4\u0113\1\u01a2\1\u0148\7\u0113"+ "\7\311\1\342\4\311\1\271\1\343\1\344\1\345\1\346"+ "\3\311\1\u01a3\11\311\2\312\1\313\4\312\1\314\4\312"+ "\1\315\1\312\1\316\1\317\1\320\6\312\1\u01a4\6\312"+ "\4\355\1\u01a5\2\355\1\u0118\4\355\1\u014e\1\355\1\u011a"+ "\1\u011b\1\u011c\5\355\1\u011d\11\355\1\u0117\4\355\1\u0118"+ "\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\1\355\1\u01a6"+ "\3\355\1\u011d\11\355\1\u0117\4\355\1\u0118\4\355\1\u0119"+ "\1\355\1\u011a\1\u011b\1\u011c\2\355\1\u01a7\2\355\1\u011d"+ "\11\355\1\u0117\4\355\1\u0118\4\355\1\u0119\1\355\1\u011a"+ "\1\u011b\1\u011c\5\355\1\u011d\1\355\1\u01a8\5\355\2\312"+ "\1\313\4\312\1\314\4\312\1\315\1\312\1\316\1\317"+ "\1\320\4\312\1\267\12\312\1\313\4\312\1\314\1\u01a9"+ "\3\312\1\315\1\312\1\316\1\317\1\320\15\312\2\321"+ "\1\322\4\321\1\323\4\321\1\324\1\325\1\321\1\326"+ "\1\327\6\321\1\u01aa\6\321\4\366\1\u01ab\2\366\1\u0123"+ "\4\366\1\u0159\1\u0125\1\366\1\u0126\1\u0127\5\366\1\u0128"+ "\11\366\1\u0122\4\366\1\u0123\4\366\1\u0124\1\u0125\1\366"+ "\1\u0126\1\u0127\1\366\1\u01ac\3\366\1\u0128\11\366\1\u0122"+ "\4\366\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127"+ "\2\366\1\u01ad\2\366\1\u0128\11\366\1\u0122\4\366\1\u0123"+ "\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127\5\366\1\u0128"+ "\1\366\1\u01ae\5\366\2\321\1\322\4\321\1\323\4\321"+ "\1\324\1\325\1\321\1\326\1\327\4\321\1\267\12\321"+ "\1\322\4\321\1\323\1\u01af\3\321\1\324\1\325\1\321"+ "\1\326\1\327\15\321\20\0\1\u01b0\15\0\4\372\1\0"+ "\31\372\25\0\1\u01b1\40\0\1\u01b1\5\0\2\267\1\270"+ "\4\267\1\302\4\267\1\271\1\272\1\273\1\303\1\304"+ "\7\267\1\u01b2\5\267\4\337\1\u0113\2\337\1\u0101\4\337"+ "\1\u0135\1\u0103\1\u0104\1\u0105\1\u0106\5\337\1\u0107\11\337"+ "\1\u0100\4\337\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\u0105"+ "\1\u0106\2\337\1\u01b3\2\337\1\u0107\11\337\1\u0100\4\337"+ "\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106\3\337"+ "\1\u01b4\1\337\1\u0107\7\337\2\267\1\270\4\267\1\302"+ "\4\267\1\271\1\272\1\273\1\303\1\304\10\267\1\u01b5"+ "\4\267\7\311\1\342\4\311\1\271\1\343\1\344\1\345"+ "\1\346\6\311\1\u01b6\6\311\7\354\1\u010b\4\354\1\315"+ "\1\354\1\u010c\1\u010d\1\u010e\2\354\1\u01b7\12\354\7\u013c"+ "\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\1\u01b8"+ "\4\u013c\1\u016f\16\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c"+ "\1\u016d\1\u016e\1\u013c\1\u01b9\3\u013c\1\u016f\16\u013c\1\u016b"+ "\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\4\u013c\1\u01ba"+ "\1\u016f\7\u013c\7\354\1\u010b\4\354\1\315\1\354\1\u010c"+ "\1\u010d\1\u010e\3\354\1\u01bb\20\354\1\u010b\4\354\1\315"+ "\1\354\1\u010c\1\u010d\1\u010e\3\354\1\u01bc\11\354\7\365"+ "\1\u010f\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112\2\365"+ "\1\u01bd\12\365\7\u0140\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140"+ "\1\u0175\1\u0176\1\u01be\4\u0140\1\u0177\16\u0140\1\u0173\4\u0140"+ "\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\1\u0140\1\u01bf\3\u0140"+ "\1\u0177\16\u0140\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175"+ "\1\u0176\4\u0140\1\u01c0\1\u0177\7\u0140\7\365\1\u010f\4\365"+ "\1\324\1\u0110\1\365\1\u0111\1\u0112\3\365\1\u01c1\20\365"+ "\1\u010f\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112\3\365"+ "\1\u01c2\11\365\7\u0113\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145"+ "\1\u0146\1\u0147\1\u0113\1\u01c3\3\u0113\1\u0148\16\u0113\1\u0143"+ "\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146\1\u0147\5\u0113\1\u0148"+ "\1\u0113\1\u01c4\5\u0113\7\311\1\342\1\u01c5\3\311\1\271"+ "\1\343\1\344\1\345\1\346\15\311\2\312\1\313\4\312"+ "\1\314\4\312\1\315\1\312\1\316\1\317\1\320\7\312"+ "\1\u01c6\5\312\4\355\1\u013c\2\355\1\u0118\4\355\1\u014e"+ "\1\355\1\u011a\1\u011b\1\u011c\5\355\1\u011d\11\355\1\u0117"+ "\4\355\1\u0118\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c"+ "\2\355\1\u01c7\2\355\1\u011d\11\355\1\u0117\4\355\1\u0118"+ "\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\3\355\1\u01c8"+ "\1\355\1\u011d\11\355\1\u0117\4\355\1\u0118\4\355\1\u0119"+ "\1\355\1\u011a\1\u011b\1\u011c\3\355\1\u01c9\1\355\1\u011d"+ "\7\355\2\312\1\313\4\312\1\314\4\312\1\315\1\312"+ "\1\316\1\317\1\320\10\312\1\u01ca\4\312\2\321\1\322"+ "\4\321\1\323\4\321\1\324\1\325\1\321\1\326\1\327"+ "\7\321\1\u01cb\5\321\4\366\1\u0140\2\366\1\u0123\4\366"+ "\1\u0159\1\u0125\1\366\1\u0126\1\u0127\5\366\1\u0128\11\366"+ "\1\u0122\4\366\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126"+ "\1\u0127\2\366\1\u01cc\2\366\1\u0128\11\366\1\u0122\4\366"+ "\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127\3\366"+ "\1\u01cd\1\366\1\u0128\11\366\1\u0122\4\366\1\u0123\4\366"+ "\1\u0124\1\u0125\1\366\1\u0126\1\u0127\3\366\1\u01ce\1\366"+ "\1\u0128\7\366\2\321\1\322\4\321\1\323\4\321\1\324"+ "\1\325\1\321\1\326\1\327\10\321\1\u01cf\4\321\31\0"+ "\1\u01d0\4\0\2\372\1\373\11\372\1\0\15\372\1\0"+ "\3\372\2\267\1\270\4\267\1\302\4\267\1\271\1\272"+ "\1\273\1\303\1\304\6\267\1\u01d1\6\267\2\337\1\u0100"+ "\4\337\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106"+ "\5\337\1\u0107\1\u01d2\10\337\1\u0100\4\337\1\u0101\1\u01d3"+ "\3\337\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106\5\337\1\u0107"+ "\7\337\2\267\1\270\4\267\1\u01d4\4\267\1\271\1\272"+ "\1\273\1\303\1\304\15\267\7\311\1\342\4\311\1\271"+ "\1\343\1\344\1\345\1\346\7\311\1\u01d5\5\311\7\354"+ "\1\u010b\4\354\1\315\1\354\1\u010c\1\u010d\1\u010e\6\354"+ "\1\u01d6\6\354\7\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c"+ "\1\u016d\1\u016e\1\u013c\1\u01d7\3\u013c\1\u016f\16\u013c\1\u016b"+ "\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\2\u013c\1\u01d8"+ "\2\u013c\1\u016f\16\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c"+ "\1\u016d\1\u016e\5\u013c\1\u016f\1\u013c\1\u01d9\5\u013c\7\354"+ "\1\u010b\4\354\1\315\1\354\1\u010c\1\u010d\1\u010e\4\354"+ "\1\311\17\354\1\u010b\1\u01da\3\354\1\315\1\354\1\u010c"+ "\1\u010d\1\u010e\15\354\7\365\1\u010f\4\365\1\324\1\u0110"+ "\1\365\1\u0111\1\u0112\6\365\1\u01db\6\365\7\u0140\1\u0173"+ "\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\1\u0140\1\u01dc"+ "\3\u0140\1\u0177\16\u0140\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140"+ "\1\u0175\1\u0176\2\u0140\1\u01dd\2\u0140\1\u0177\16\u0140\1\u0173"+ "\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\5\u0140\1\u0177"+ "\1\u0140\1\u01de\5\u0140\7\365\1\u010f\4\365\1\324\1\u0110"+ "\1\365\1\u0111\1\u0112\4\365\1\311\17\365\1\u010f\1\u01df"+ "\3\365\1\324\1\u0110\1\365\1\u0111\1\u0112\15\365\7\u0113"+ "\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146\1\u0147\2\u0113"+ "\1\u01e0\2\u0113\1\u0148\16\u0113\1\u0143\4\u0113\1\u0102\1\u0144"+ "\1\u0145\1\u0146\1\u0147\3\u0113\1\u01e1\1\u0113\1\u0148\7\u0113"+ "\7\311\1\342\4\311\1\271\1\343\1\344\1\345\1\346"+ "\10\311\1\u01e2\4\311\2\312\1\313\4\312\1\314\4\312"+ "\1\315\1\312\1\316\1\317\1\320\6\312\1\u01e3\6\312"+ "\2\355\1\u0117\4\355\1\u0118\4\355\1\u0119\1\355\1\u011a"+ "\1\u011b\1\u011c\5\355\1\u011d\1\u01e4\10\355\1\u0117\4\355"+ "\1\u0118\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\4\355"+ "\1\337\1\u011d\11\355\1\u0117\4\355\1\u0118\1\u01e5\3\355"+ "\1\u0119\1\355\1\u011a\1\u011b\1\u011c\5\355\1\u011d\7\355"+ "\2\312\1\313\4\312\1\u01e6\4\312\1\315\1\312\1\316"+ "\1\317\1\320\15\312\2\321\1\322\4\321\1\323\4\321"+ "\1\324\1\325\1\321\1\326\1\327\6\321\1\u01e7\6\321"+ "\2\366\1\u0122\4\366\1\u0123\4\366\1\u0124\1\u0125\1\366"+ "\1\u0126\1\u0127\5\366\1\u0128\1\u01e8\10\366\1\u0122\4\366"+ "\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127\4\366"+ "\1\337\1\u0128\11\366\1\u0122\4\366\1\u0123\1\u01e9\3\366"+ "\1\u0124\1\u0125\1\366\1\u0126\1\u0127\5\366\1\u0128\7\366"+ "\2\321\1\322\4\321\1\u01ea\4\321\1\324\1\325\1\321"+ "\1\326\1\327\15\321\35\0\1\u01eb\2\267\1\270\4\267"+ "\1\302\4\267\1\271\1\272\1\273\1\303\1\304\4\267"+ "\1\u01ec\10\267\2\337\1\u0100\4\337\1\u0101\4\337\1\u0102"+ "\1\u0103\1\u0104\1\u0105\1\u0106\5\337\1\u0107\1\337\1\u01ed"+ "\7\337\1\u0100\4\337\1\u0101\4\337\1\u0102\1\u0103\1\u0104"+ "\1\u0105\1\u0106\5\337\1\u0107\2\337\1\u01ee\4\337\2\267"+ "\1\270\4\267\1\302\4\267\1\271\1\272\1\273\1\303"+ "\1\304\2\267\1\336\4\267\1\u01ec\5\267\7\311\1\342"+ "\4\311\1\271\1\343\1\344\1\345\1\346\6\311\1\u01ef"+ "\6\311\7\354\1\u010b\4\354\1\315\1\354\1\u010c\1\u010d"+ "\1\u010e\7\354\1\u01f0\5\354\7\u013c\1\u016b\4\u013c\1\u0119"+ "\1\u013c\1\u016c\1\u016d\1\u016e\2\u013c\1\u01f1\2\u013c\1\u016f"+ "\16\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e"+ "\3\u013c\1\u01f2\1\u013c\1\u016f\16\u013c\1\u016b\4\u013c\1\u0119"+ "\1\u013c\1\u016c\1\u016d\1\u016e\3\u013c\1\u01f3\1\u013c\1\u016f"+ "\7\u013c\7\354\1\u010b\4\354\1\315\1\354\1\u010c\1\u010d"+ "\1\u010e\10\354\1\u01f4\4\354\7\365\1\u010f\4\365\1\324"+ "\1\u0110\1\365\1\u0111\1\u0112\7\365\1\u01f5\5\365\7\u0140"+ "\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\2\u0140"+ "\1\u01f6\2\u0140\1\u0177\16\u0140\1\u0173\4\u0140\1\u0124\1\u0174"+ "\1\u0140\1\u0175\1\u0176\3\u0140\1\u01f7\1\u0140\1\u0177\16\u0140"+ "\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\3\u0140"+ "\1\u01f8\1\u0140\1\u0177\7\u0140\7\365\1\u010f\4\365\1\324"+ "\1\u0110\1\365\1\u0111\1\u0112\10\365\1\u01f9\4\365\7\u0113"+ "\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146\1\u0147\5\u0113"+ "\1\u0148\1\u01fa\15\u0113\1\u0143\1\u01fb\3\u0113\1\u0102\1\u0144"+ "\1\u0145\1\u0146\1\u0147\5\u0113\1\u0148\7\u0113\7\311\1\u01fc"+ "\4\311\1\271\1\343\1\344\1\345\1\346\15\311\2\312"+ "\1\313\4\312\1\314\4\312\1\315\1\312\1\316\1\317"+ "\1\320\4\312\1\u01fd\10\312\2\355\1\u0117\4\355\1\u0118"+ "\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\5\355\1\u011d"+ "\1\355\1\u01fe\7\355\1\u0117\4\355\1\u0118\4\355\1\u0119"+ "\1\355\1\u011a\1\u011b\1\u011c\5\355\1\u011d\2\355\1\u01ff"+ "\4\355\2\312\1\313\4\312\1\314\4\312\1\315\1\312"+ "\1\316\1\317\1\320\2\312\1\353\4\312\1\u01fd\5\312"+ "\2\321\1\322\4\321\1\323\4\321\1\324\1\325\1\321"+ "\1\326\1\327\4\321\1\u0200\10\321\2\366\1\u0122\4\366"+ "\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127\5\366"+ "\1\u0128\1\366\1\u0201\7\366\1\u0122\4\366\1\u0123\4\366"+ "\1\u0124\1\u0125\1\366\1\u0126\1\u0127\5\366\1\u0128\2\366"+ "\1\u0202\4\366\2\321\1\322\4\321\1\323\4\321\1\324"+ "\1\325\1\321\1\326\1\327\2\321\1\364\4\321\1\u0200"+ "\5\321\33\0\1\u0203\2\0\2\u0204\1\u0205\11\u0204\1\271"+ "\1\u0206\1\u0207\1\u0208\12\u0204\1\267\3\u0204\2\337\1\u0100"+ "\4\337\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106"+ "\5\337\1\u0107\1\u0209\10\337\1\u0100\4\337\1\u020a\4\337"+ "\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106\5\337\1\u0107\7\337"+ "\7\311\1\342\4\311\1\271\1\343\1\344\1\345\1\346"+ "\4\311\1\u020b\10\311\7\354\1\u010b\4\354\1\315\1\354"+ "\1\u010c\1\u010d\1\u010e\6\354\1\u020c\6\354\7\u013c\1\u016b"+ "\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\5\u013c\1\u016f"+ "\1\u020d\15\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d"+ "\1\u016e\4\u013c\1\u0113\1\u016f\16\u013c\1\u016b\1\u020e\3\u013c"+ "\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\5\u013c\1\u016f\7\u013c"+ "\7\354\1\u020f\4\354\1\315\1\354\1\u010c\1\u010d\1\u010e"+ "\15\354\7\365\1\u010f\4\365\1\324\1\u0110\1\365\1\u0111"+ "\1\u0112\6\365\1\u0210\6\365\7\u0140\1\u0173\4\u0140\1\u0124"+ "\1\u0174\1\u0140\1\u0175\1\u0176\5\u0140\1\u0177\1\u0211\15\u0140"+ "\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\4\u0140"+ "\1\u0113\1\u0177\16\u0140\1\u0173\1\u0212\3\u0140\1\u0124\1\u0174"+ "\1\u0140\1\u0175\1\u0176\5\u0140\1\u0177\7\u0140\7\365\1\u0213"+ "\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112\15\365\7\u0113"+ "\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146\1\u0147\5\u0113"+ "\1\u0148\1\u0113\1\u0214\14\u0113\1\u0143\4\u0113\1\u0102\1\u0144"+ "\1\u0145\1\u0146\1\u0147\5\u0113\1\u0148\2\u0113\1\u0215\4\u0113"+ "\7\311\1\342\4\311\1\271\1\343\1\344\1\345\1\346"+ "\2\311\1\u010a\4\311\1\u020b\5\311\2\u0216\1\u0217\11\u0216"+ "\1\315\1\u0216\1\u0218\1\u0219\1\u021a\11\u0216\1\312\3\u0216"+ "\2\355\1\u0117\4\355\1\u0118\4\355\1\u0119\1\355\1\u011a"+ "\1\u011b\1\u011c\5\355\1\u011d\1\u021b\10\355\1\u0117\4\355"+ "\1\u021c\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\5\355"+ "\1\u011d\7\355\2\u021d\1\u021e\11\u021d\1\324\1\u021f\1\u021d"+ "\1\u0220\1\u0221\11\u021d\1\321\3\u021d\2\366\1\u0122\4\366"+ "\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127\5\366"+ "\1\u0128\1\u0222\10\366\1\u0122\4\366\1\u0223\4\366\1\u0124"+ "\1\u0125\1\366\1\u0126\1\u0127\5\366\1\u0128\7\366\30\0"+ "\1\u0224\5\0\2\u0204\1\u0205\11\u0204\1\271\1\u0206\1\u0207"+ "\1\u0208\21\u0204\1\u0225\3\u0204\1\u0226\4\u0204\1\u0227\1\u0206"+ "\1\u0207\1\u0228\16\u0204\2\u0216\1\u0217\11\u0216\1\315\1\u0204"+ "\1\u0218\1\u0219\1\u021a\15\u0216\2\u021d\1\u021e\11\u021d\1\324"+ "\1\u021f\1\u0204\1\u0220\1\u0221\15\u021d\2\u0204\1\u0205\11\u0204"+ "\1\271\1\u0206\1\u0207\1\u0208\6\u0204\1\u0229\7\u0204\2\337"+ "\1\u0100\4\337\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\u0105"+ "\1\u0106\4\337\1\u022a\1\u0107\11\337\1\u0100\4\337\1\u0101"+ "\4\337\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106\2\337\1\u0137"+ "\2\337\1\u0107\1\337\1\u022a\5\337\2\u0204\1\u0205\11\u0204"+ "\1\271\1\u0206\1\u0207\1\u0208\12\u0204\1\311\3\u0204\7\354"+ "\1\u010b\4\354\1\315\1\354\1\u010c\1\u010d\1\u010e\4\354"+ "\1\u022b\10\354\7\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c"+ "\1\u016d\1\u016e\5\u013c\1\u016f\1\u013c\1\u022c\14\u013c\1\u016b"+ "\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\5\u013c\1\u016f"+ "\2\u013c\1\u022d\4\u013c\7\354\1\u010b\4\354\1\315\1\354"+ "\1\u010c\1\u010d\1\u010e\2\354\1\u013b\4\354\1\u022b\5\354"+ "\7\365\1\u010f\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112"+ "\4\365\1\u022e\10\365\7\u0140\1\u0173\4\u0140\1\u0124\1\u0174"+ "\1\u0140\1\u0175\1\u0176\5\u0140\1\u0177\1\u0140\1\u022f\14\u0140"+ "\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\5\u0140"+ "\1\u0177\2\u0140\1\u0230\4\u0140\7\365\1\u010f\4\365\1\324"+ "\1\u0110\1\365\1\u0111\1\u0112\2\365\1\u013f\4\365\1\u022e"+ "\5\365\7\u0113\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146"+ "\1\u0147\5\u0113\1\u0148\1\u0231\15\u0113\1\u0232\4\u0113\1\u0102"+ "\1\u0144\1\u0145\1\u0146\1\u0147\5\u0113\1\u0148\7\u0113\2\u0216"+ "\1\u0217\11\u0216\1\315\1\u0216\1\u0218\1\u0219\1\u021a\20\u0216"+ "\1\u0233\3\u0216\1\u0234\4\u0216\1\u0235\1\u0216\1\u0218\1\u0236"+ "\1\u021a\15\u0216\2\372\1\373\11\372\1\0\1\372\1\u0216"+ "\17\372\2\u0216\1\u0217\11\u0216\1\315\1\u0216\1\u0218\1\u0219"+ "\1\u021a\5\u0216\1\u0237\11\u0216\1\u0217\11\u0216\1\315\1\u0216"+ "\1\u0218\1\u0219\1\u021a\1\u0238\14\u0216\2\355\1\u0117\4\355"+ "\1\u0118\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\4\355"+ "\1\u0239\1\u011d\11\355\1\u0117\4\355\1\u0118\4\355\1\u0119"+ "\1\355\1\u011a\1\u011b\1\u011c\2\355\1\u0150\2\355\1\u011d"+ "\1\355\1\u0239\5\355\2\u021d\1\u021e\11\u021d\1\324\1\u021f"+ "\1\u021d\1\u0220\1\u0221\20\u021d\1\u023a\3\u021d\1\u023b\4\u021d"+ "\1\u023c\1\u021f\1\u021d\1\u023d\1\u0221\15\u021d\2\372\1\373"+ "\11\372\1\0\1\u021d\20\372\2\u021d\1\u021e\11\u021d\1\324"+ "\1\u021f\1\u021d\1\u0220\1\u0221\5\u021d\1\u023e\11\u021d\1\u021e"+ "\11\u021d\1\324\1\u021f\1\u021d\1\u0220\1\u0221\1\u023f\14\u021d"+ "\2\366\1\u0122\4\366\1\u0123\4\366\1\u0124\1\u0125\1\366"+ "\1\u0126\1\u0127\4\366\1\u0240\1\u0128\11\366\1\u0122\4\366"+ "\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127\2\366"+ "\1\u015b\2\366\1\u0128\1\366\1\u0240\5\366\4\u0224\1\u0241"+ "\31\u0224\4\u0204\1\u0242\7\u0204\1\u0227\1\u0206\1\u0207\1\u0208"+ "\26\u0204\1\311\3\u0204\1\u0227\1\u0206\1\u0207\1\u0208\16\u0204"+ "\2\372\1\373\11\372\1\311\21\372\7\u0204\1\u0226\4\u0204"+ "\1\u0227\1\u0206\1\u0207\1\u0208\6\u0204\1\u0229\7\u0204\2\u0229"+ "\1\u0243\11\u0229\1\u0102\1\u0244\1\u0245\1\u0246\6\u0229\1\u0247"+ "\11\u0229\1\u0243\11\u0229\1\u0102\1\u0244\1\u0245\1\u0246\6\u0229"+ "\1\u0247\3\u0229\1\337\3\u0229\2\u0216\1\u0217\11\u0216\1\315"+ "\1\u0216\1\u0218\1\u0219\1\u021a\11\u0216\1\354\3\u0216\7\u013c"+ "\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\5\u013c"+ "\1\u016f\1\u0248\15\u013c\1\u0249\4\u013c\1\u0119\1\u013c\1\u016c"+ "\1\u016d\1\u016e\5\u013c\1\u016f\7\u013c\2\u021d\1\u021e\11\u021d"+ "\1\324\1\u021f\1\u021d\1\u0220\1\u0221\11\u021d\1\365\3\u021d"+ "\7\u0140\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176"+ "\5\u0140\1\u0177\1\u024a\15\u0140\1\u024b\4\u0140\1\u0124\1\u0174"+ "\1\u0140\1\u0175\1\u0176\5\u0140\1\u0177\7\u0140\7\u0113\1\u0143"+ "\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146\1\u0147\4\u0113\1\u024c"+ "\1\u0148\16\u0113\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146"+ "\1\u0147\2\u0113\1\u017a\2\u0113\1\u0148\1\u0113\1\u024c\5\u0113"+ "\4\u0216\1\u024d\7\u0216\1\u0235\1\u0216\1\u0218\1\u0219\1\u021a"+ "\25\u0216\1\354\3\u0216\1\u0235\1\u0216\1\u0218\1\u0219\1\u021a"+ "\15\u0216\2\372\1\373\11\372\1\354\21\372\7\u0216\1\u0234"+ "\4\u0216\1\u0235\1\u0216\1\u0218\1\u0219\1\u021a\5\u0216\1\u0237"+ "\7\u0216\2\u0237\1\u024e\11\u0237\1\u0119\1\u0237\1\u024f\1\u0250"+ "\1\u0251\5\u0237\1\u0252\7\u0237\2\u0216\1\u0217\11\u0216\1\315"+ "\1\u0216\1\u0218\1\u0219\1\u021a\1\u0216\1\u0253\13\u0216\2\u0237"+ "\1\u024e\11\u0237\1\u0119\1\u0237\1\u024f\1\u0250\1\u0251\5\u0237"+ "\1\u0252\3\u0237\1\355\3\u0237\4\u021d\1\u0254\7\u021d\1\u023c"+ "\1\u021f\1\u021d\1\u0220\1\u0221\25\u021d\1\365\3\u021d\1\u023c"+ "\1\u021f\1\u021d\1\u0220\1\u0221\15\u021d\2\372\1\373\11\372"+ "\1\365\21\372\7\u021d\1\u023b\4\u021d\1\u023c\1\u021f\1\u021d"+ "\1\u0220\1\u0221\5\u021d\1\u023e\7\u021d\2\u023e\1\u0255\11\u023e"+ "\1\u0124\1\u0256\1\u023e\1\u0257\1\u0258\5\u023e\1\u0259\7\u023e"+ "\2\u021d\1\u021e\11\u021d\1\324\1\u021f\1\u021d\1\u0220\1\u0221"+ "\1\u021d\1\u025a\13\u021d\2\u023e\1\u0255\11\u023e\1\u0124\1\u0256"+ "\1\u023e\1\u0257\1\u0258\5\u023e\1\u0259\3\u023e\1\366\3\u023e"+ "\4\u0224\1\u025b\31\u0224\4\u0204\1\u025c\7\u0204\1\u0227\1\u0206"+ "\1\u0207\1\u0208\16\u0204\3\u0229\1\u025d\3\u0229\1\u025e\4\u0229"+ "\1\u025f\1\u0244\1\u0245\1\u0260\6\u0229\1\u0247\7\u0229\2\u0237"+ "\1\u024e\11\u0237\1\u0119\1\u0229\1\u024f\1\u0250\1\u0251\5\u0237"+ "\1\u0252\7\u0237\2\u023e\1\u0255\11\u023e\1\u0124\1\u0256\1\u0229"+ "\1\u0257\1\u0258\5\u023e\1\u0259\7\u023e\2\u0229\1\u0243\11\u0229"+ "\1\u0102\1\u0244\1\u0245\1\u0246\20\u0229\1\u0243\11\u0229\1\u0102"+ "\1\u0244\1\u0245\1\u0208\6\u0229\1\u0247\7\u0229\7\u013c\1\u016b"+ "\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\4\u013c\1\u0261"+ "\1\u016f\16\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d"+ "\1\u016e\2\u013c\1\u0196\2\u013c\1\u016f\1\u013c\1\u0261\5\u013c"+ "\7\u0140\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176"+ "\4\u0140\1\u0262\1\u0177\16\u0140\1\u0173\4\u0140\1\u0124\1\u0174"+ "\1\u0140\1\u0175\1\u0176\2\u0140\1\u019c\2\u0140\1\u0177\1\u0140"+ "\1\u0262\5\u0140\2\u0229\1\u0243\11\u0229\1\u0102\1\u0244\1\u0245"+ "\1\u0246\6\u0229\1\u0247\3\u0229\1\u0113\3\u0229\4\u0216\1\u0263"+ "\7\u0216\1\u0235\1\u0216\1\u0218\1\u0219\1\u021a\15\u0216\3\u0237"+ "\1\u0264\3\u0237\1\u0265\4\u0237\1\u0266\1\u0237\1\u024f\1\u0267"+ "\1\u0251\5\u0237\1\u0252\7\u0237\2\u0268\1\u0269\11\u0268\1\153"+ "\1\u0268\1\u0237\7\u0268\1\u026a\7\u0268\2\u0237\1\u024e\11\u0237"+ "\1\u0119\1\u0237\1\u024f\1\u0250\1\u0251\17\u0237\1\u024e\11\u0237"+ "\1\u0119\1\u0237\1\u024f\1\u0250\1\u0251\1\u026b\4\u0237\1\u0252"+ "\11\u0237\1\u024e\11\u0237\1\u0119\1\u0237\1\u024f\1\u0219\1\u0251"+ "\5\u0237\1\u0252\7\u0237\2\u0216\1\u0217\11\u0216\1\315\1\u0216"+ "\1\u0218\1\u0219\1\u021a\2\u0216\1\u026c\12\u0216\4\u021d\1\u026d"+ "\7\u021d\1\u023c\1\u021f\1\u021d\1\u0220\1\u0221\15\u021d\3\u023e"+ "\1\u026e\3\u023e\1\u026f\4\u023e\1\u0270\1\u0256\1\u023e\1\u0271"+ "\1\u0258\5\u023e\1\u0259\7\u023e\2\u0268\1\u0269\11\u0268\1\153"+ "\1\u023e\10\u0268\1\u026a\7\u0268\2\u023e\1\u0255\11\u023e\1\u0124"+ "\1\u0256\1\u023e\1\u0257\1\u0258\17\u023e\1\u0255\11\u023e\1\u0124"+ "\1\u0256\1\u023e\1\u0257\1\u0258\1\u0272\4\u023e\1\u0259\11\u023e"+ "\1\u0255\11\u023e\1\u0124\1\u0256\1\u023e\1\u0220\1\u0258\5\u023e"+ "\1\u0259\7\u023e\2\u021d\1\u021e\11\u021d\1\324\1\u021f\1\u021d"+ "\1\u0220\1\u0221\2\u021d\1\u0273\12\u021d\4\u0224\1\u025b\1\u0274"+ "\30\u0224\4\u0204\1\311\7\u0204\1\u0227\1\u0206\1\u0207\1\u0208"+ "\16\u0204\4\u0229\1\u0275\7\u0229\1\u025f\1\u0244\1\u0245\1\u0246"+ "\6\u0229\1\u0247\17\u0229\1\u0113\3\u0229\1\u025f\1\u0244\1\u0245"+ "\1\u0246\6\u0229\1\u0247\7\u0229\2\u0268\1\u0269\11\u0268\1\u0113"+ "\11\u0268\1\u026a\7\u0268\7\u0229\1\u025e\4\u0229\1\u025f\1\u0244"+ "\1\u0245\1\u0246\16\u0229\2\u0237\1\u024e\11\u0237\1\u0119\1\u0237"+ "\1\u024f\1\u0250\1\u0251\5\u0237\1\u0252\3\u0237\1\u013c\3\u0237"+ "\2\u023e\1\u0255\11\u023e\1\u0124\1\u0256\1\u023e\1\u0257\1\u0258"+ "\5\u023e\1\u0259\3\u023e\1\u0140\3\u023e\4\u0216\1\354\7\u0216"+ "\1\u0235\1\u0216\1\u0218\1\u0219\1\u021a\15\u0216\4\u0237\1\u0276"+ "\7\u0237\1\u0266\1\u0237\1\u024f\1\u0250\1\u0251\5\u0237\1\u0252"+ "\17\u0237\1\u013c\3\u0237\1\u0266\1\u0237\1\u024f\1\u0250\1\u0251"+ "\5\u0237\1\u0252\7\u0237\2\u0268\1\u0269\11\u0268\1\u013c\11\u0268"+ "\1\u026a\7\u0268\7\u0237\1\u0265\4\u0237\1\u0266\1\u0237\1\u024f"+ "\1\u0250\1\u0251\15\u0237\2\u0268\1\u0269\11\u0268\1\153\11\u0268"+ "\1\u026a\12\u0268\1\u0277\3\u0268\1\u0278\7\u0268\1\u0279\6\u0268"+ "\1\u026a\11\u0268\1\u0269\11\u0268\1\153\2\u0268\1\u027a\6\u0268"+ "\1\u026a\7\u0268\2\u0237\1\u024e\11\u0237\1\u0119\1\u0237\1\u024f"+ "\1\u0250\1\u0251\1\u0237\1\u027b\3\u0237\1\u0252\7\u0237\2\u0216"+ "\1\u0217\11\u0216\1\315\1\u0216\1\u0218\1\u0219\1\u021a\3\u0216"+ "\1\u027c\11\u0216\4\u021d\1\365\7\u021d\1\u023c\1\u021f\1\u021d"+ "\1\u0220\1\u0221\15\u021d\4\u023e\1\u027d\7\u023e\1\u0270\1\u0256"+ "\1\u023e\1\u0257\1\u0258\5\u023e\1\u0259\17\u023e\1\u0140\3\u023e"+ "\1\u0270\1\u0256\1\u023e\1\u0257\1\u0258\5\u023e\1\u0259\7\u023e"+ "\2\u0268\1\u0269\11\u0268\1\u0140\11\u0268\1\u026a\7\u0268\7\u023e"+ "\1\u026f\4\u023e\1\u0270\1\u0256\1\u023e\1\u0257\1\u0258\17\u023e"+ "\1\u0255\11\u023e\1\u0124\1\u0256\1\u023e\1\u0257\1\u0258\1\u023e"+ "\1\u027e\3\u023e\1\u0259\7\u023e\2\u021d\1\u021e\11\u021d\1\324"+ "\1\u021f\1\u021d\1\u0220\1\u0221\3\u021d\1\u027f\11\u021d\4\0"+ "\1\u0280\31\0\4\u0229\1\u0281\7\u0229\1\u025f\1\u0244\1\u0245"+ "\1\u0246\6\u0229\1\u0247\7\u0229\4\u0237\1\u0282\7\u0237\1\u0266"+ "\1\u0237\1\u024f\1\u0250\1\u0251\5\u0237\1\u0252\7\u0237\4\u0268"+ "\1\u0283\21\u0268\1\u026a\17\u0268\1\153\15\u0268\1\u026a\16\u0268"+ "\1\u0278\16\u0268\1\u026a\7\u0268\1\372\1\u027a\1\373\11\372"+ "\1\0\2\372\1\u0284\1\u0285\15\372\2\u0237\1\u024e\11\u0237"+ "\1\u0119\1\u0237\1\u024f\1\u0250\1\u0251\2\u0237\1\u0286\2\u0237"+ "\1\u0252\7\u0237\2\u0216\1\u0217\11\u0216\1\315\1\u0216\1\u0218"+ "\1\u0219\1\u021a\4\u0216\1\u0204\10\u0216\4\u023e\1\u0287\7\u023e"+ "\1\u0270\1\u0256\1\u023e\1\u0257\1\u0258\5\u023e\1\u0259\11\u023e"+ "\1\u0255\11\u023e\1\u0124\1\u0256\1\u023e\1\u0257\1\u0258\2\u023e"+ "\1\u0288\2\u023e\1\u0259\7\u023e\2\u021d\1\u021e\11\u021d\1\324"+ "\1\u021f\1\u021d\1\u0220\1\u0221\4\u021d\1\u0204\10\u021d\4\0"+ "\1\u0289\31\0\4\u0229\1\u0113\7\u0229\1\u025f\1\u0244\1\u0245"+ "\1\u0246\6\u0229\1\u0247\7\u0229\4\u0237\1\u013c\7\u0237\1\u0266"+ "\1\u0237\1\u024f\1\u0250\1\u0251\5\u0237\1\u0252\7\u0237\4\u0268"+ "\1\u028a\21\u0268\1\u026a\7\u0268\2\372\1\373\11\372\1\0"+ "\11\372\1\u0268\11\372\1\373\11\372\1\0\4\372\1\u028b"+ "\14\372\2\u0237\1\u024e\11\u0237\1\u0119\1\u0237\1\u024f\1\u0250"+ "\1\u0251\3\u0237\1\u028c\1\u0237\1\u0252\7\u0237\4\u023e\1\u0140"+ "\7\u023e\1\u0270\1\u0256\1\u023e\1\u0257\1\u0258\5\u023e\1\u0259"+ "\11\u023e\1\u0255\11\u023e\1\u0124\1\u0256\1\u023e\1\u0257\1\u0258"+ "\3\u023e\1\u028d\1\u023e\1\u0259\7\u023e\5\0\1\u028e\30\0"+ "\4\u0268\1\153\21\u0268\1\u026a\7\u0268\2\372\1\373\11\372"+ "\1\0\5\372\1\u028f\13\372\2\u0237\1\u024e\11\u0237\1\u0119"+ "\1\u0237\1\u024f\1\u0250\1\u0251\4\u0237\1\u0229\1\u0252\7\u0237"+ "\2\u023e\1\u0255\11\u023e\1\u0124\1\u0256\1\u023e\1\u0257\1\u0258"+ "\4\u023e\1\u0229\1\u0259\7\u023e\2\372\1\373\11\372\1\0"+ "\6\372\1\u0290\14\372\1\373\11\372\1\0\7\372\1\u0291"+ "\13\372\1\373\11\372\1\0\10\372\1\u0292\10\372\2\u0204"+ "\1\u0205\11\u0204\1\271\1\u0206\1\u0207\17\u0204"; private static int [] zzUnpackTrans() { int [] result = new int[18840]; 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; /** the number of characters up to the start of the matched text */ private int yychar; /* error messages for the codes above */ private static final String[] ZZ_ERROR_MSG = { "Unknown 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 = "\7\1\6\0\1\1\2\0\5\1\1\11\2\1\1\11"+ "\1\1\1\11\3\1\1\11\2\1\1\11\1\1\1\11"+ "\13\1\2\11\1\1\3\11\3\1\4\11\3\1\1\11"+ "\4\0\6\1\11\0\1\1\1\0\1\1\7\0\1\11"+ "\10\0\1\1\1\0\1\1\2\0\3\1\3\0\1\1"+ "\1\0\2\1\3\0\1\11\4\0\1\1\10\0\2\1"+ "\4\0\5\1\1\0\2\1\1\0\1\11\2\0\1\1"+ "\3\0\2\1\2\0\2\1\2\11\1\0\1\11\1\0"+ "\1\11\2\0\1\1\4\0\2\1\1\0\1\1\3\0"+ "\1\1\2\0\3\1\1\0\1\1\3\0\3\1\2\0"+ "\1\1\2\0\1\1\1\0\1\1\1\0\4\1\1\0"+ "\1\1\1\0\4\1\1\0\1\1\3\0\3\1\10\0"+ "\1\1\1\0\1\1\1\0\3\1\2\0\1\1\1\0"+ "\1\1\1\0\3\1\1\0\1\1\4\0\1\1\1\0"+ "\1\1\1\0\6\1\15\0\1\1\1\0\1\1\1\0"+ "\6\1\1\0\1\1\1\0\1\1\1\0\6\1\7\0"+ "\1\1\2\0\1\1\1\0\3\1\21\0\1\1\2\0"+ "\1\1\1\0\5\1\1\0\1\1\2\0\1\1\1\0"+ "\5\1\4\0\1\1\1\0\3\1\24\0\1\1\1\0"+ "\6\1\1\0\5\1\4\0\1\1\1\0\3\1\20\0"+ "\1\1\1\0\5\1\1\0\4\1\2\0\4\1\20\0"+ "\12\1\1\0\4\1\16\0\10\1\1\0\3\1\16\0"+ "\6\1\1\0\1\1\1\0\5\1\13\0\1\1\1\0"+ "\6\1\1\0\5\1\3\0\1\1\1\0\2\1\12\0"+ "\1\1\1\0\3\1\2\0\1\1\1\0\3\1\3\0"+ "\4\1\7\0\5\1\2\0\5\1\4\0\1\1\6\0"+ "\1\1\1\0\1\1\1\0\3\1\3\0\1\1\1\0"+ "\3\1\5\0\3\1\1\0\2\1\4\0\3\1\1\0"+ "\1\1\2\0\3\1\1\11\4\1"; private static int [] zzUnpackAttribute() { int [] result = new int[658]; 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 CharSequence zzBuffer = ""; /** 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; /** * 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: */ final CfmlLexerConfiguration myCurrentConfiguration = new CfmlLexerConfiguration(); private Project myProject; public _CfmlLexer(Project project) { this((java.io.Reader)null); myProject = project; } public class CfmlLexerConfiguration { int myArePoundsEvaluated = 0; int myCommentCounter = 0; int mySharpCounter = 0; boolean myIfReturnExpression = false; Stack<Integer> myReturnStack = new Stack<Integer>(); // to give to other lexer IElementType myBlockType = CfmlElementTypes.TEMPLATE_TEXT; boolean myStartExpression = true; String myCurrentTag = "cfelse"; public CfmlLexerConfiguration() {} public void reset() { myCommentCounter = 0; mySharpCounter = 0; myIfReturnExpression = false; myReturnStack.clear(); myBlockType = CfmlElementTypes.TEMPLATE_TEXT; myStartExpression = true; myCurrentTag = "cfelse"; myArePoundsEvaluated = 0; } public int getExtraState() { return myArePoundsEvaluated != 0 ? FINAL_STATE : 0; } } private void releaseExpressionState() { myCurrentConfiguration.mySharpCounter = 0; myCurrentConfiguration.myIfReturnExpression = false; myCurrentConfiguration.myReturnStack.clear(); } private IElementType startComment(int stateToReturnTo) { myCurrentConfiguration.myReturnStack.push(stateToReturnTo); myCurrentConfiguration.myCommentCounter++; yybegin(COMMENT); return CfmlTokenTypes.COMMENT; } private IElementType startTag() { releaseExpressionState(); yybegin(TAGOPEN); return CfmlTokenTypes.OPENER; } private IElementType startCloseTag() { // myCurrentConfiguration.myArePoundsEvaluated --; yybegin(TAGCLOSE); return CfmlTokenTypes.LSLASH_ANGLEBRACKET; } private void processCloseTag(String tagName) { if ("cfquery".equalsIgnoreCase(tagName) || "cfqueryparam".equalsIgnoreCase(tagName) || "cfoutput".equalsIgnoreCase(tagName) || "cfmail".equalsIgnoreCase(tagName)) { myCurrentConfiguration.myArePoundsEvaluated --; } } private IElementType closeStartedTag() { myCurrentConfiguration.myStartExpression = true; if (myCurrentConfiguration.myCurrentTag.equalsIgnoreCase("cfscript")) { myCurrentConfiguration.myStartExpression = false; myCurrentConfiguration.myBlockType = CfmlTokenTypes.SCRIPT_EXPRESSION; yybegin(YYINITIAL); } else if (myCurrentConfiguration.myCurrentTag.equalsIgnoreCase("cfquery")) { myCurrentConfiguration.myBlockType = CfmlElementTypes.SQL; myCurrentConfiguration.myArePoundsEvaluated++; yybegin(YYINITIAL); } else if (myCurrentConfiguration.myCurrentTag.equalsIgnoreCase("cfqueryparam")) { myCurrentConfiguration.myBlockType = CfmlElementTypes.SQL; yybegin(YYINITIAL); } else if (myCurrentConfiguration.myCurrentTag.equalsIgnoreCase("cfoutput") || myCurrentConfiguration.myCurrentTag.equalsIgnoreCase("cfmail")) { myCurrentConfiguration.myArePoundsEvaluated++; // yybegin(TEXT); yybegin(YYINITIAL); } else { yybegin(YYINITIAL); } if (CfmlUtil.isSingleCfmlTag(myCurrentConfiguration.myCurrentTag, myProject)) return CfmlTokenTypes.CLOSER; return CfmlTokenTypes.R_ANGLEBRACKET; } private IElementType startExpression(int stateToReturn) { myCurrentConfiguration.mySharpCounter++; myCurrentConfiguration.myReturnStack.push(stateToReturn); yybegin(SCRIPT_EXPRESSION); if (myCurrentConfiguration.mySharpCounter == 1) { return myCurrentConfiguration.myStartExpression ? CfmlTokenTypes.START_EXPRESSION : CfmlTokenTypes.SCRIPT_EXPRESSION; } return CfmlTokenTypes.SCRIPT_EXPRESSION; } private IElementType closeTag() { yybegin(YYINITIAL); return CfmlTokenTypes.CLOSER; } /** * Creates a new scanner * * @param in the java.io.Reader to read input from. */ _CfmlLexer(java.io.Reader in) { this.zzReader = 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) { int size = 0; for (int i = 0, length = packed.length(); i < length; i += 2) { size += packed.charAt(i); } char[] map = new char[size]; int i = 0; /* index in packed string */ int j = 0; /* index in unpacked array */ while (i < packed.length()) { int count = packed.charAt(i++); char value = packed.charAt(i++); do map[j++] = value; while (--count > 0); } return map; } public final int getTokenStart() { return zzStartRead; } public final int getTokenEnd() { return getTokenStart() + yylength(); } public void reset(CharSequence buffer, int start, int end, int initialState) { zzBuffer = buffer; zzCurrentPos = zzMarkedPos = zzStartRead = start; zzAtEOF = false; zzAtBOL = true; zzEndRead = end; yychar = start; myCurrentConfiguration.reset(); yybegin(initialState); } /** * 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 { return true; } /** * 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 CharSequence yytext() { return zzBuffer.subSequence(zzStartRead, zzMarkedPos); } /** * 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.charAt(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; } /** * 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 IElementType advance() throws java.io.IOException { int zzInput; int zzAction; // cached fields: int zzCurrentPosL; int zzMarkedPosL; int zzEndReadL = zzEndRead; CharSequence zzBufferL = zzBuffer; 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]; // set up zzAction for empty match case: int zzAttributes = zzAttrL[zzState]; if ( (zzAttributes & 1) == 1 ) { zzAction = zzState; } zzForAction: { while (true) { if (zzCurrentPosL < zzEndReadL) { zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL/*, zzEndReadL*/); zzCurrentPosL += Character.charCount(zzInput); } 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 = Character.codePointAt(zzBufferL, zzCurrentPosL/*, zzEndReadL*/); zzCurrentPosL += Character.charCount(zzInput); } } int zzNext = zzTransL[ zzRowMapL[zzState] + ZZ_CMAP(zzInput) ]; if (zzNext == -1) break zzForAction; zzState = zzNext; zzAttributes = zzAttrL[zzState]; if ( (zzAttributes & 1) == 1 ) { zzAction = zzState; zzMarkedPosL = zzCurrentPosL; if ( (zzAttributes & 8) == 8 ) break zzForAction; } } } // store back cached position zzMarkedPos = zzMarkedPosL; if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { zzAtEOF = true; return null; } else { switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { case 1: { if(myCurrentConfiguration.myBlockType == CfmlTokenTypes.SCRIPT_EXPRESSION){ return CfmlTokenTypes.SCRIPT_EXPRESSION;} return CfmlTokenTypes.WHITE_SPACE; } case 52: break; case 2: { return CfmlTokenTypes.WHITE_SPACE; } case 53: break; case 3: { return CfmlTokenTypes.COMMENT; } case 54: break; case 4: { return CfmlElementTypes.CF_SCRIPT; } case 55: break; case 5: { return myCurrentConfiguration.myBlockType; } case 56: break; case 6: { yybegin(YYINITIAL); return CfmlTokenTypes.BAD_CHARACTER; } case 57: break; case 7: { if (myCurrentConfiguration.myArePoundsEvaluated > 0) { return startExpression(YYINITIAL); } else { return myCurrentConfiguration.myBlockType; } } case 58: break; case 8: { return closeTag(); } case 59: break; case 9: { return closeStartedTag(); } case 60: break; case 10: { yybegin(ASSIGN); return CfmlTokenTypes.ATTRIBUTE; } case 61: break; case 11: { yybegin(ATTRIBUTE_VALUE); return CfmlTokenTypes.BAD_CHARACTER; } case 62: break; case 12: { yybegin(ATTRIBUTE_VALUE); return CfmlTokenTypes.ASSIGN; } case 63: break; case 13: { yybegin(DOUBLEQUOTE_CLOSER); if (myCurrentConfiguration.myIfReturnExpression) { return CfmlTokenTypes.SCRIPT_EXPRESSION; } return CfmlTokenTypes.STRING_TEXT; } case 64: break; case 14: { return startExpression(DOUBLE_QUOTED_STRING); } case 65: break; case 15: { yybegin(myCurrentConfiguration.myReturnStack.pop()); if (myCurrentConfiguration.myIfReturnExpression) { return CfmlTokenTypes.SCRIPT_EXPRESSION; } return CfmlTokenTypes.DOUBLE_QUOTE_CLOSER; } case 66: break; case 16: { yybegin(SINGLEQUOTE_CLOSER); if (myCurrentConfiguration.myIfReturnExpression) { return CfmlTokenTypes.SCRIPT_EXPRESSION; } return CfmlTokenTypes.STRING_TEXT; } case 67: break; case 17: { return startExpression(SINGLE_QUOTED_STRING); } case 68: break; case 18: { yybegin(myCurrentConfiguration.myReturnStack.pop()); if (myCurrentConfiguration.myIfReturnExpression) { return CfmlTokenTypes.SCRIPT_EXPRESSION; } return CfmlTokenTypes.SINGLE_QUOTE_CLOSER; } case 69: break; case 19: { yybegin(TAGATTR); return CfmlElementTypes.CF_SCRIPT; } case 70: break; case 20: { return startExpression(TAGATTR); } case 71: break; case 21: { myCurrentConfiguration.myReturnStack.push(TAGATTR); yybegin(DOUBLE_QUOTED_STRING); return CfmlTokenTypes.DOUBLE_QUOTE; } case 72: break; case 22: { myCurrentConfiguration.myReturnStack.push(TAGATTR); yybegin(SINGLE_QUOTED_STRING); return CfmlTokenTypes.SINGLE_QUOTE; } case 73: break; case 23: { myCurrentConfiguration.myIfReturnExpression = true; return CfmlTokenTypes.SCRIPT_EXPRESSION; } case 74: break; case 24: { releaseExpressionState(); yybegin(YYINITIAL); return CfmlTokenTypes.BAD_CHARACTER; } case 75: break; case 25: { releaseExpressionState(); return closeStartedTag(); } case 76: break; case 26: { myCurrentConfiguration.myIfReturnExpression = true; if (!myCurrentConfiguration.myStartExpression && myCurrentConfiguration.mySharpCounter == 0) { return startExpression(SCRIPT_EXPRESSION); } myCurrentConfiguration.mySharpCounter--; yybegin(myCurrentConfiguration.myReturnStack.pop()); if (myCurrentConfiguration.mySharpCounter == 0 && myCurrentConfiguration.myStartExpression) { myCurrentConfiguration.myIfReturnExpression = false; return CfmlTokenTypes.END_EXPRESSION; } return CfmlTokenTypes.SCRIPT_EXPRESSION; } case 77: break; case 27: { myCurrentConfiguration.myIfReturnExpression = true; myCurrentConfiguration.myReturnStack.push(SCRIPT_EXPRESSION); yybegin(DOUBLE_QUOTED_STRING); return CfmlTokenTypes.SCRIPT_EXPRESSION; } case 78: break; case 28: { myCurrentConfiguration.myIfReturnExpression = true; myCurrentConfiguration.myReturnStack.push(SCRIPT_EXPRESSION); yybegin(SINGLE_QUOTED_STRING); return CfmlTokenTypes.SCRIPT_EXPRESSION; } case 79: break; case 29: { return CfmlElementTypes.TEMPLATE_TEXT; } case 80: break; case 30: { return startExpression(TEXT); } case 81: break; case 31: { yybegin(CLOSER); processCloseTag(yytext().toString()); return CfmlTokenTypes.CF_TAG_NAME; } case 82: break; case 32: { myCurrentConfiguration.myCurrentTag = yytext().toString().toLowerCase(); if (!CfmlUtil.hasAnyAttributes(myCurrentConfiguration.myCurrentTag, myProject)) { myCurrentConfiguration.myStartExpression = false; yybegin(SCRIPT_EXPRESSION); } else { myCurrentConfiguration.myStartExpression = true; yybegin(TAGATTR); } return CfmlTokenTypes.CF_TAG_NAME; } case 83: break; case 33: // lookahead expression with fixed lookahead length zzMarkedPos = Character.offsetByCodePoints (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzMarkedPos, -1); { if (myCurrentConfiguration.myIfReturnExpression) { return CfmlTokenTypes.SCRIPT_EXPRESSION; } return CfmlTokenTypes.STRING_TEXT; } case 84: break; case 34: { releaseExpressionState(); return closeTag(); } case 85: break; case 35: { String tagName = yytext().subSequence(1, yylength()).toString(); boolean startTemplateText = !"cfinclude".equalsIgnoreCase(tagName); if (startTemplateText) myCurrentConfiguration.myBlockType = CfmlElementTypes.TEMPLATE_TEXT; yypushback(yylength() - 1); return startTag(); } case 86: break; case 36: // lookahead expression with fixed base length zzMarkedPos = Character.offsetByCodePoints (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1); { return startTag(); } case 87: break; case 37: // lookahead expression with fixed base length zzMarkedPos = Character.offsetByCodePoints (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1); { yybegin(TAGOPEN); return CfmlTokenTypes.OPENER; } case 88: break; case 38: { yybegin(myCurrentConfiguration.myReturnStack.pop()); return CfmlTokenTypes.COMMENT; } case 89: break; case 39: // lookahead expression with fixed base length zzMarkedPos = Character.offsetByCodePoints (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1); { releaseExpressionState(); yybegin(TAGOPEN); return CfmlTokenTypes.OPENER; } case 90: break; case 40: // lookahead expression with fixed base length zzMarkedPos = Character.offsetByCodePoints (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 2); { myCurrentConfiguration.myBlockType = CfmlElementTypes.TEMPLATE_TEXT; return startCloseTag(); } case 91: break; case 41: // lookahead expression with fixed base length zzMarkedPos = Character.offsetByCodePoints (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 2); { return startCloseTag(); } case 92: break; case 42: // lookahead expression with fixed base length zzMarkedPos = Character.offsetByCodePoints (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 2); { yybegin(TAGCLOSE); return CfmlTokenTypes.LSLASH_ANGLEBRACKET; } case 93: break; case 43: // lookahead expression with fixed base length zzMarkedPos = Character.offsetByCodePoints (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1); { myCurrentConfiguration.myCommentCounter--; if (myCurrentConfiguration.myCommentCounter == 0) { yybegin(COMMENTEND); } return CfmlTokenTypes.COMMENT; } case 94: break; case 44: // lookahead expression with fixed base length zzMarkedPos = Character.offsetByCodePoints (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 2); { releaseExpressionState(); yybegin(TAGCLOSE); return CfmlTokenTypes.LSLASH_ANGLEBRACKET; } case 95: break; case 45: { return startComment(YYINITIAL); } case 96: break; case 46: { return startComment(TAGATTR); } case 97: break; case 47: // lookahead expression with fixed base length zzMarkedPos = Character.offsetByCodePoints (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1); { myCurrentConfiguration.myCommentCounter++; return CfmlTokenTypes.COMMENT; } case 98: break; case 48: { return startComment(SCRIPT_EXPRESSION); } case 99: break; case 49: { return startComment(TEXT); } case 100: break; case 50: { if (yychar == 0) { yybegin(EAT_TEST_AS_SCRIPT); return CfmlElementTypes.CF_SCRIPT; } else { return myCurrentConfiguration.myBlockType; } } case 101: break; case 51: { return CfmlTokenTypes.VAR_ANNOTATION; } case 102: break; default: zzScanError(ZZ_NO_MATCH); } } } } }