All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.plugins.groovy.lang.lexer._GroovyLexer Maven / Gradle / Ivy

Go to download

A packaging of the IntelliJ Community Edition groovy-psi library. This is release number 1 of trunk branch 142.

The newest version!
/*
 * Copyright 2000-2014 JetBrains s.r.o.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/* The following code was generated by JFlex 1.4.3 on 21.05.14 20:33 */

package org.jetbrains.plugins.groovy.lang.lexer;

import com.intellij.lexer.FlexLexer;
import com.intellij.psi.TokenType;
import com.intellij.psi.tree.IElementType;
import com.intellij.util.containers.Stack;
import org.jetbrains.plugins.groovy.lang.groovydoc.parser.GroovyDocElementTypes;


/**
 * This class is a scanner generated by 
 * JFlex 1.4.3
 * on 21.05.14 20:33 from the specification file
 * C:/Work/Idea/tools/lexer/../../community/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/lexer/groovy.flex
 */
public class _GroovyLexer implements FlexLexer {
  /** initial size of the lookahead buffer */
  private static final int ZZ_BUFFERSIZE = 16384;

  /** lexical states */
  public static final int IN_TRIPLE_DOT = 16;
  public static final int IN_TRIPLE_GSTRING = 8;
  public static final int IN_SINGLE_GSTRING = 6;
  public static final int IN_REGEX_DOLLAR = 24;
  public static final int NLS_AFTER_COMMENT = 40;
  public static final int IN_TRIPLE_IDENT = 14;
  public static final int IN_TRIPLE_GSTRING_DOLLAR = 4;
  public static final int IN_DOLLAR_SLASH_REGEX = 34;
  public static final int IN_SINGLE_DOT = 12;
  public static final int IN_DOLLAR_SLASH_REGEX_DOT = 38;
  public static final int IN_REGEX_DOT = 30;
  public static final int NLS_AFTER_LBRACE = 42;
  public static final int IN_TRIPLE_NLS = 18;
  public static final int NLS_AFTER_NLS = 44;
  public static final int IN_DOLLAR_SLASH_REGEX_IDENT = 36;
  public static final int IN_DOLLAR_SLASH_REGEX_DOLLAR = 32;
  public static final int IN_REGEX_IDENT = 28;
  public static final int IN_SINGLE_IDENT = 10;
  public static final int IN_REGEX = 26;
  public static final int WAIT_FOR_REGEX = 22;
  public static final int IN_INNER_BLOCK = 20;
  public static final int IN_SINGLE_GSTRING_DOLLAR = 2;
  public static final int BRACE_COUNT = 46;
  public static final int YYINITIAL = 0;

  /**
   * 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, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 
    16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23
  };

  /** 
   * Translates characters to character classes
   */
  private static final String ZZ_CMAP_PACKED = 
    "\11\0\1\3\1\2\1\0\1\3\1\1\22\0\1\3\1\10\1\45"+
    "\1\7\1\42\1\102\1\105\1\44\1\71\1\72\1\6\1\27\1\76"+
    "\1\30\1\40\1\5\1\32\1\35\1\12\1\12\1\12\2\12\1\12"+
    "\2\12\1\75\1\106\1\77\1\70\1\100\1\67\1\107\1\11\1\34"+
    "\1\11\1\24\1\26\1\16\1\14\1\41\1\22\2\41\1\20\13\41"+
    "\1\37\2\41\1\73\1\4\1\74\1\103\1\31\1\0\1\47\1\33"+
    "\1\50\1\23\1\25\1\15\1\13\1\62\1\21\1\41\1\51\1\17"+
    "\1\55\1\57\1\56\1\46\1\41\1\54\1\52\1\53\1\43\1\60"+
    "\1\64\1\36\1\61\1\63\1\65\1\104\1\66\1\101\53\0\1\41"+
    "\12\0\1\41\4\0\1\41\5\0\27\41\1\0\37\41\1\0\u01ca\41"+
    "\4\0\14\41\16\0\5\41\7\0\1\41\1\0\1\41\201\0\5\41"+
    "\1\0\2\41\2\0\4\41\10\0\1\41\1\0\3\41\1\0\1\41"+
    "\1\0\24\41\1\0\123\41\1\0\213\41\10\0\236\41\11\0\46\41"+
    "\2\0\1\41\7\0\47\41\110\0\33\41\5\0\3\41\55\0\53\41"+
    "\43\0\2\41\1\0\143\41\1\0\1\41\17\0\2\41\7\0\2\41"+
    "\12\0\3\41\2\0\1\41\20\0\1\41\1\0\36\41\35\0\131\41"+
    "\13\0\1\41\30\0\41\41\11\0\2\41\4\0\1\41\5\0\26\41"+
    "\4\0\1\41\11\0\1\41\3\0\1\41\27\0\31\41\107\0\1\41"+
    "\1\0\13\41\127\0\66\41\3\0\1\41\22\0\1\41\7\0\12\41"+
    "\17\0\7\41\1\0\7\41\5\0\10\41\2\0\2\41\2\0\26\41"+
    "\1\0\7\41\1\0\1\41\3\0\4\41\3\0\1\41\20\0\1\41"+
    "\15\0\2\41\1\0\3\41\16\0\2\41\23\0\6\41\4\0\2\41"+
    "\2\0\26\41\1\0\7\41\1\0\2\41\1\0\2\41\1\0\2\41"+
    "\37\0\4\41\1\0\1\41\23\0\3\41\20\0\11\41\1\0\3\41"+
    "\1\0\26\41\1\0\7\41\1\0\2\41\1\0\5\41\3\0\1\41"+
    "\22\0\1\41\17\0\2\41\43\0\10\41\2\0\2\41\2\0\26\41"+
    "\1\0\7\41\1\0\2\41\1\0\5\41\3\0\1\41\36\0\2\41"+
    "\1\0\3\41\17\0\1\41\21\0\1\41\1\0\6\41\3\0\3\41"+
    "\1\0\4\41\3\0\2\41\1\0\1\41\1\0\2\41\3\0\2\41"+
    "\3\0\3\41\3\0\14\41\26\0\1\41\64\0\10\41\1\0\3\41"+
    "\1\0\27\41\1\0\12\41\1\0\5\41\3\0\1\41\32\0\2\41"+
    "\6\0\2\41\43\0\10\41\1\0\3\41\1\0\27\41\1\0\12\41"+
    "\1\0\5\41\3\0\1\41\40\0\1\41\1\0\2\41\17\0\2\41"+
    "\22\0\10\41\1\0\3\41\1\0\51\41\2\0\1\41\20\0\1\41"+
    "\21\0\2\41\30\0\6\41\5\0\22\41\3\0\30\41\1\0\11\41"+
    "\1\0\1\41\2\0\7\41\72\0\60\41\1\0\2\41\14\0\7\41"+
    "\72\0\2\41\1\0\1\41\2\0\2\41\1\0\1\41\2\0\1\41"+
    "\6\0\4\41\1\0\7\41\1\0\3\41\1\0\1\41\1\0\1\41"+
    "\2\0\2\41\1\0\4\41\1\0\2\41\11\0\1\41\2\0\5\41"+
    "\1\0\1\41\25\0\4\41\40\0\1\41\77\0\10\41\1\0\44\41"+
    "\33\0\5\41\163\0\53\41\24\0\1\41\20\0\6\41\4\0\4\41"+
    "\3\0\1\41\3\0\2\41\7\0\3\41\4\0\15\41\14\0\1\41"+
    "\21\0\46\41\1\0\1\41\5\0\1\41\2\0\53\41\1\0\u014d\41"+
    "\1\0\4\41\2\0\7\41\1\0\1\41\1\0\4\41\2\0\51\41"+
    "\1\0\4\41\2\0\41\41\1\0\4\41\2\0\7\41\1\0\1\41"+
    "\1\0\4\41\2\0\17\41\1\0\71\41\1\0\4\41\2\0\103\41"+
    "\45\0\20\41\20\0\125\41\14\0\u026c\41\2\0\21\41\1\0\32\41"+
    "\5\0\113\41\25\0\15\41\1\0\4\41\16\0\22\41\16\0\22\41"+
    "\16\0\15\41\1\0\3\41\17\0\64\41\43\0\1\41\4\0\1\41"+
    "\103\0\130\41\10\0\51\41\1\0\1\41\5\0\106\41\12\0\35\41"+
    "\63\0\36\41\2\0\5\41\13\0\54\41\25\0\7\41\70\0\27\41"+
    "\11\0\65\41\122\0\1\41\135\0\57\41\21\0\7\41\67\0\36\41"+
    "\15\0\2\41\12\0\54\41\32\0\44\41\51\0\3\41\12\0\44\41"+
    "\153\0\4\41\1\0\4\41\3\0\2\41\11\0\300\41\100\0\u0116\41"+
    "\2\0\6\41\2\0\46\41\2\0\6\41\2\0\10\41\1\0\1\41"+
    "\1\0\1\41\1\0\1\41\1\0\37\41\2\0\65\41\1\0\7\41"+
    "\1\0\1\41\3\0\3\41\1\0\7\41\3\0\4\41\2\0\6\41"+
    "\4\0\15\41\5\0\3\41\1\0\7\41\164\0\1\41\15\0\1\41"+
    "\20\0\15\41\145\0\1\41\4\0\1\41\2\0\12\41\1\0\1\41"+
    "\3\0\5\41\6\0\1\41\1\0\1\41\1\0\1\41\1\0\4\41"+
    "\1\0\13\41\2\0\4\41\5\0\5\41\4\0\1\41\64\0\2\41"+
    "\u0a7b\0\57\41\1\0\57\41\1\0\205\41\6\0\4\41\3\0\2\41"+
    "\14\0\46\41\1\0\1\41\5\0\1\41\2\0\70\41\7\0\1\41"+
    "\20\0\27\41\11\0\7\41\1\0\7\41\1\0\7\41\1\0\7\41"+
    "\1\0\7\41\1\0\7\41\1\0\7\41\1\0\7\41\120\0\1\41"+
    "\u01d5\0\2\41\52\0\5\41\5\0\2\41\4\0\126\41\6\0\3\41"+
    "\1\0\132\41\1\0\4\41\5\0\51\41\3\0\136\41\21\0\33\41"+
    "\65\0\20\41\u0200\0\u19b6\41\112\0\u51cd\41\63\0\u048d\41\103\0\56\41"+
    "\2\0\u010d\41\3\0\20\41\12\0\2\41\24\0\57\41\20\0\31\41"+
    "\10\0\106\41\61\0\11\41\2\0\147\41\2\0\4\41\1\0\4\41"+
    "\14\0\13\41\115\0\12\41\1\0\3\41\1\0\4\41\1\0\27\41"+
    "\35\0\64\41\16\0\62\41\76\0\6\41\3\0\1\41\16\0\34\41"+
    "\12\0\27\41\31\0\35\41\7\0\57\41\34\0\1\41\60\0\51\41"+
    "\27\0\3\41\1\0\10\41\24\0\27\41\3\0\1\41\5\0\60\41"+
    "\1\0\1\41\3\0\2\41\2\0\5\41\2\0\1\41\1\0\1\41"+
    "\30\0\3\41\2\0\13\41\7\0\3\41\14\0\6\41\2\0\6\41"+
    "\2\0\6\41\11\0\7\41\1\0\7\41\221\0\43\41\35\0\u2ba4\41"+
    "\14\0\27\41\4\0\61\41\u2104\0\u016e\41\2\0\152\41\46\0\7\41"+
    "\14\0\5\41\5\0\1\41\1\0\12\41\1\0\15\41\1\0\5\41"+
    "\1\0\1\41\1\0\2\41\1\0\2\41\1\0\154\41\41\0\u016b\41"+
    "\22\0\100\41\2\0\66\41\50\0\14\41\164\0\5\41\1\0\207\41"+
    "\44\0\32\41\6\0\32\41\13\0\131\41\3\0\6\41\2\0\6\41"+
    "\2\0\6\41\2\0\3\41\43\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 =
    "\32\0\1\1\1\2\1\3\1\1\1\4\1\5\1\1"+
    "\1\6\1\7\1\10\5\7\1\11\1\12\1\10\1\7"+
    "\1\13\1\7\1\14\1\15\11\7\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"+
    "\1\41\20\42\1\43\1\44\20\45\1\46\1\47\1\50"+
    "\1\47\1\51\1\52\1\53\1\47\1\54\1\47\1\41"+
    "\1\44\1\55\1\56\1\57\1\60\1\61\1\62\1\61"+
    "\1\63\1\61\1\64\20\65\1\66\2\67\1\70\1\71"+
    "\1\64\1\72\20\73\1\74\2\75\1\76\2\77\1\100"+
    "\1\3\2\100\2\101\2\102\5\0\1\3\1\103\1\104"+
    "\1\105\1\106\1\107\1\110\1\111\1\112\1\113\1\114"+
    "\1\115\1\10\1\116\3\0\5\7\1\117\1\7\1\120"+
    "\1\7\1\121\3\7\1\122\1\123\1\124\1\125\1\126"+
    "\2\0\3\7\1\127\1\130\1\131\1\14\1\0\1\14"+
    "\2\0\1\132\4\7\1\133\21\7\1\134\1\135\1\136"+
    "\1\137\1\140\1\0\1\141\1\0\1\142\1\143\1\144"+
    "\1\145\1\146\1\147\5\42\1\117\1\42\1\120\1\42"+
    "\1\121\12\42\1\133\21\42\5\45\1\117\1\45\1\120"+
    "\1\45\1\121\12\45\1\133\21\45\1\0\4\47\1\150"+
    "\1\151\1\0\1\62\1\152\5\65\1\117\1\65\1\120"+
    "\1\65\1\121\12\65\1\133\21\65\1\0\1\153\1\154"+
    "\5\73\1\117\1\73\1\120\1\73\1\121\12\73\1\133"+
    "\21\73\2\0\1\155\2\156\1\157\3\0\1\104\1\160"+
    "\1\161\1\112\1\162\1\0\1\162\3\7\1\163\3\7"+
    "\1\164\1\165\4\7\2\10\3\7\1\166\1\167\4\14"+
    "\1\132\2\0\1\170\23\7\1\171\3\7\1\172\5\7"+
    "\1\136\1\173\1\174\1\175\1\176\1\0\3\42\1\163"+
    "\3\42\1\164\1\165\32\42\1\171\3\42\1\172\5\42"+
    "\3\45\1\163\3\45\1\164\1\165\32\45\1\171\3\45"+
    "\1\172\5\45\1\47\2\0\1\47\1\177\3\65\1\163"+
    "\3\65\1\164\1\165\32\65\1\171\3\65\1\172\5\65"+
    "\3\73\1\163\3\73\1\164\1\165\32\73\1\171\3\73"+
    "\1\172\5\73\1\0\1\104\2\160\1\162\1\0\3\7"+
    "\1\200\6\7\1\201\1\7\1\202\2\0\2\7\1\203"+
    "\3\0\1\14\7\0\7\7\1\204\2\7\1\205\6\7"+
    "\1\206\2\7\1\207\2\7\1\210\2\7\1\211\1\7"+
    "\1\212\3\42\1\200\6\42\1\201\1\42\1\202\2\42"+
    "\1\203\7\42\1\204\2\42\1\205\6\42\1\206\2\42"+
    "\1\207\2\42\1\210\2\42\1\211\1\42\3\45\1\200"+
    "\6\45\1\201\1\45\1\202\2\45\1\203\7\45\1\204"+
    "\2\45\1\205\6\45\1\206\2\45\1\207\2\45\1\210"+
    "\2\45\1\211\1\45\1\47\1\0\1\53\3\65\1\200"+
    "\6\65\1\201\1\65\1\202\2\65\1\203\7\65\1\204"+
    "\2\65\1\205\6\65\1\206\2\65\1\207\2\65\1\210"+
    "\2\65\1\211\1\65\3\73\1\200\6\73\1\201\1\73"+
    "\1\202\2\73\1\203\7\73\1\204\2\73\1\205\6\73"+
    "\1\206\2\73\1\207\2\73\1\210\2\73\1\211\1\73"+
    "\1\104\1\0\1\160\1\213\1\214\1\215\7\7\1\216"+
    "\1\7\1\14\1\0\1\14\5\0\6\7\1\217\1\220"+
    "\1\7\1\221\3\7\1\222\1\7\1\223\1\7\1\224"+
    "\3\7\1\225\1\213\1\214\1\215\7\42\1\216\7\42"+
    "\1\217\1\220\1\42\1\221\3\42\1\222\1\42\1\223"+
    "\1\42\1\224\3\42\1\225\1\213\1\214\1\215\7\45"+
    "\1\216\7\45\1\217\1\220\1\45\1\221\3\45\1\222"+
    "\1\45\1\223\1\45\1\224\3\45\1\225\1\213\1\214"+
    "\1\215\7\65\1\216\7\65\1\217\1\220\1\65\1\221"+
    "\3\65\1\222\1\65\1\223\1\65\1\224\3\65\1\225"+
    "\1\213\1\214\1\215\7\73\1\216\7\73\1\217\1\220"+
    "\1\73\1\221\3\73\1\222\1\73\1\223\1\73\1\224"+
    "\3\73\1\225\1\0\2\7\1\226\3\7\1\227\2\7"+
    "\2\0\1\230\4\7\1\231\1\7\1\232\2\7\1\233"+
    "\1\7\1\234\1\235\1\236\1\7\2\42\1\226\3\42"+
    "\1\227\2\42\1\230\4\42\1\231\1\42\1\232\2\42"+
    "\1\233\1\42\1\234\1\235\1\236\1\42\2\45\1\226"+
    "\3\45\1\227\2\45\1\230\4\45\1\231\1\45\1\232"+
    "\2\45\1\233\1\45\1\234\1\235\1\236\1\45\2\65"+
    "\1\226\3\65\1\227\2\65\1\230\4\65\1\231\1\65"+
    "\1\232\2\65\1\233\1\65\1\234\1\235\1\236\1\65"+
    "\2\73\1\226\3\73\1\227\2\73\1\230\4\73\1\231"+
    "\1\73\1\232\2\73\1\233\1\73\1\234\1\235\1\236"+
    "\1\73\1\237\3\7\1\240\1\241\1\242\1\14\1\243"+
    "\1\244\7\7\1\237\3\42\1\240\1\241\1\242\1\243"+
    "\1\244\7\42\1\237\3\45\1\240\1\241\1\242\1\243"+
    "\1\244\7\45\1\237\3\65\1\240\1\241\1\242\1\243"+
    "\1\244\7\65\1\237\3\73\1\240\1\241\1\242\1\243"+
    "\1\244\7\73\4\7\1\245\1\246\1\247\2\7\1\250"+
    "\4\42\1\245\1\246\1\247\2\42\1\250\4\45\1\245"+
    "\1\246\1\247\2\45\1\250\4\65\1\245\1\246\1\247"+
    "\2\65\1\250\4\73\1\245\1\246\1\247\2\73\1\250"+
    "\2\7\1\251\1\252\1\7\1\253\2\42\1\251\1\252"+
    "\1\42\1\253\2\45\1\251\1\252\1\45\1\253\2\65"+
    "\1\251\1\252\1\65\1\253\2\73\1\251\1\252\1\73"+
    "\1\253\1\254\1\255\1\7\1\254\1\255\1\42\1\254"+
    "\1\255\1\45\1\254\1\255\1\65\1\254\1\255\1\73"+
    "\1\7\1\42\1\45\1\65\1\73\5\256";

  private static int [] zzUnpackAction() {
    int [] result = new int[1444];
    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\110\0\220\0\330\0\u0120\0\u0168\0\u01b0\0\u01f8"+
    "\0\u0240\0\u0288\0\u02d0\0\u0318\0\u0360\0\u03a8\0\u03f0\0\u0438"+
    "\0\u0480\0\u04c8\0\u0510\0\u0558\0\u05a0\0\u05e8\0\u0630\0\u0678"+
    "\0\u06c0\0\u0708\0\u0750\0\u0798\0\u0750\0\u07e0\0\u0828\0\u0870"+
    "\0\u08b8\0\u0900\0\u0948\0\u0990\0\u09d8\0\u0a20\0\u0a68\0\u0ab0"+
    "\0\u0af8\0\u0b40\0\u0b88\0\u0bd0\0\u0c18\0\u0c60\0\u0ca8\0\u0cf0"+
    "\0\u0d38\0\u0d80\0\u0dc8\0\u0e10\0\u0e58\0\u0ea0\0\u0ee8\0\u0f30"+
    "\0\u0f78\0\u0fc0\0\u0750\0\u0750\0\u1008\0\u1050\0\u0750\0\u0750"+
    "\0\u0750\0\u0750\0\u0750\0\u0750\0\u1098\0\u10e0\0\u0750\0\u1128"+
    "\0\u1170\0\u11b8\0\u1200\0\u0750\0\u0750\0\u0750\0\u1248\0\u1290"+
    "\0\u12d8\0\u1320\0\u1368\0\u13b0\0\u13f8\0\u1440\0\u1488\0\u14d0"+
    "\0\u1518\0\u1560\0\u15a8\0\u15f0\0\u1638\0\u1680\0\u0750\0\u0750"+
    "\0\u16c8\0\u1710\0\u1758\0\u17a0\0\u17e8\0\u1830\0\u1878\0\u18c0"+
    "\0\u1908\0\u1950\0\u1998\0\u19e0\0\u1a28\0\u1a70\0\u1ab8\0\u1b00"+
    "\0\u0750\0\u1b48\0\u1b90\0\u1bd8\0\u0750\0\u0750\0\u1c20\0\u1c68"+
    "\0\u0750\0\u1cb0\0\u1cf8\0\u1d40\0\u0750\0\u1d88\0\u0750\0\u0750"+
    "\0\u0750\0\u0750\0\u1dd0\0\u1e18\0\u1e60\0\u0750\0\u1ea8\0\u1ef0"+
    "\0\u1f38\0\u1f80\0\u1fc8\0\u2010\0\u2058\0\u20a0\0\u20e8\0\u2130"+
    "\0\u2178\0\u21c0\0\u2208\0\u2250\0\u2298\0\u22e0\0\u0750\0\u2328"+
    "\0\u2370\0\u0750\0\u23b8\0\u2400\0\u0750\0\u2448\0\u2490\0\u24d8"+
    "\0\u2520\0\u2568\0\u25b0\0\u25f8\0\u2640\0\u2688\0\u26d0\0\u2718"+
    "\0\u2760\0\u27a8\0\u27f0\0\u2838\0\u2880\0\u0750\0\u28c8\0\u2910"+
    "\0\u2958\0\u0750\0\u29a0\0\u0750\0\u29e8\0\u2a30\0\u1e18\0\u0750"+
    "\0\u2a30\0\u0750\0\u2a30\0\u06c0\0\u2a78\0\u2ac0\0\u2b08\0\u2b50"+
    "\0\u2b98\0\u2be0\0\u2c28\0\u0750\0\u2c70\0\u0750\0\u0750\0\u2cb8"+
    "\0\u2d00\0\u0750\0\u0750\0\u0750\0\u0750\0\u0750\0\u2d48\0\u2d90"+
    "\0\u2dd8\0\u2e20\0\u2e68\0\u2eb0\0\u2ef8\0\u2f40\0\u0948\0\u2f88"+
    "\0\u2fd0\0\u3018\0\u3060\0\u30a8\0\u30f0\0\u3138\0\u0750\0\u0750"+
    "\0\u0750\0\u0750\0\u0750\0\u3180\0\u31c8\0\u3210\0\u3258\0\u32a0"+
    "\0\u32e8\0\u0750\0\u0750\0\u3330\0\u3378\0\u33c0\0\u3408\0\u3450"+
    "\0\u3498\0\u34e0\0\u3528\0\u3570\0\u35b8\0\u3600\0\u3648\0\u3690"+
    "\0\u36d8\0\u3720\0\u3768\0\u37b0\0\u37f8\0\u3840\0\u3888\0\u38d0"+
    "\0\u3918\0\u3960\0\u39a8\0\u39f0\0\u3a38\0\u3a80\0\u3ac8\0\u0750"+
    "\0\u0750\0\u3b10\0\u0750\0\u3b58\0\u3ba0\0\u0750\0\u3be8\0\u0750"+
    "\0\u0750\0\u0750\0\u0750\0\u0750\0\u0750\0\u3c30\0\u3c78\0\u3cc0"+
    "\0\u3d08\0\u3d50\0\u1248\0\u3d98\0\u3de0\0\u3e28\0\u3e70\0\u3eb8"+
    "\0\u3f00\0\u3f48\0\u3f90\0\u3fd8\0\u4020\0\u4068\0\u40b0\0\u40f8"+
    "\0\u4140\0\u4188\0\u41d0\0\u4218\0\u4260\0\u42a8\0\u42f0\0\u4338"+
    "\0\u4380\0\u43c8\0\u4410\0\u4458\0\u44a0\0\u44e8\0\u4530\0\u4578"+
    "\0\u45c0\0\u4608\0\u4650\0\u4698\0\u46e0\0\u4728\0\u4770\0\u47b8"+
    "\0\u16c8\0\u4800\0\u4848\0\u4890\0\u48d8\0\u4920\0\u4968\0\u49b0"+
    "\0\u49f8\0\u4a40\0\u4a88\0\u4ad0\0\u4b18\0\u4b60\0\u4ba8\0\u4bf0"+
    "\0\u4c38\0\u4c80\0\u4cc8\0\u4d10\0\u4d58\0\u4da0\0\u4de8\0\u4e30"+
    "\0\u4e78\0\u4ec0\0\u4f08\0\u4f50\0\u4f98\0\u4fe0\0\u5028\0\u5070"+
    "\0\u50b8\0\u5100\0\u5148\0\u5190\0\u51d8\0\u5220\0\u5268\0\u52b0"+
    "\0\u52f8\0\u5340\0\u0750\0\u5388\0\u53d0\0\u5418\0\u5460\0\u54a8"+
    "\0\u1ea8\0\u54f0\0\u5538\0\u5580\0\u55c8\0\u5610\0\u5658\0\u56a0"+
    "\0\u56e8\0\u5730\0\u5778\0\u57c0\0\u5808\0\u5850\0\u5898\0\u58e0"+
    "\0\u5928\0\u5970\0\u59b8\0\u5a00\0\u5a48\0\u5a90\0\u5ad8\0\u5b20"+
    "\0\u5b68\0\u5bb0\0\u5bf8\0\u5c40\0\u5c88\0\u5cd0\0\u5d18\0\u5d60"+
    "\0\u5da8\0\u23b8\0\u0750\0\u5df0\0\u5e38\0\u5e80\0\u5ec8\0\u5f10"+
    "\0\u5f58\0\u2448\0\u5fa0\0\u5fe8\0\u6030\0\u6078\0\u60c0\0\u6108"+
    "\0\u6150\0\u6198\0\u61e0\0\u6228\0\u6270\0\u62b8\0\u6300\0\u6348"+
    "\0\u6390\0\u63d8\0\u6420\0\u6468\0\u64b0\0\u64f8\0\u6540\0\u6588"+
    "\0\u65d0\0\u6618\0\u6660\0\u66a8\0\u66f0\0\u6738\0\u6780\0\u67c8"+
    "\0\u6810\0\u6858\0\u68a0\0\u2958\0\u0750\0\u0750\0\u28c8\0\u68e8"+
    "\0\u2a30\0\u6930\0\u6978\0\u69c0\0\u6a08\0\u0750\0\u0750\0\u6a50"+
    "\0\u6a98\0\u6ae0\0\u6b28\0\u6b70\0\u6bb8\0\u0948\0\u6c00\0\u6c48"+
    "\0\u6c90\0\u6cd8\0\u6d20\0\u6d68\0\u6db0\0\u6df8\0\u6e40\0\u6e88"+
    "\0\u6ed0\0\u6f18\0\u6f60\0\u6fa8\0\u0750\0\u0750\0\u0750\0\u6ff0"+
    "\0\u7038\0\u7080\0\u0750\0\u70c8\0\u7110\0\u7158\0\u71a0\0\u71e8"+
    "\0\u7230\0\u7278\0\u72c0\0\u7308\0\u7350\0\u7398\0\u73e0\0\u7428"+
    "\0\u7470\0\u74b8\0\u7500\0\u7548\0\u7590\0\u75d8\0\u7620\0\u7668"+
    "\0\u76b0\0\u0948\0\u76f8\0\u7740\0\u7788\0\u0948\0\u77d0\0\u7818"+
    "\0\u7860\0\u78a8\0\u78f0\0\u0750\0\u0750\0\u0750\0\u0750\0\u0750"+
    "\0\u7938\0\u7980\0\u79c8\0\u7a10\0\u1248\0\u7a58\0\u7aa0\0\u7ae8"+
    "\0\u7b30\0\u7b78\0\u7bc0\0\u7c08\0\u7c50\0\u7c98\0\u7ce0\0\u7d28"+
    "\0\u7d70\0\u7db8\0\u7e00\0\u7e48\0\u7e90\0\u7ed8\0\u7f20\0\u7f68"+
    "\0\u7fb0\0\u7ff8\0\u8040\0\u8088\0\u80d0\0\u8118\0\u8160\0\u81a8"+
    "\0\u81f0\0\u8238\0\u8280\0\u82c8\0\u1248\0\u8310\0\u8358\0\u83a0"+
    "\0\u1248\0\u83e8\0\u8430\0\u8478\0\u84c0\0\u8508\0\u8550\0\u8598"+
    "\0\u85e0\0\u16c8\0\u8628\0\u8670\0\u86b8\0\u8700\0\u8748\0\u8790"+
    "\0\u87d8\0\u8820\0\u8868\0\u88b0\0\u88f8\0\u8940\0\u8988\0\u89d0"+
    "\0\u8a18\0\u8a60\0\u8aa8\0\u8af0\0\u8b38\0\u8b80\0\u8bc8\0\u8c10"+
    "\0\u8c58\0\u8ca0\0\u8ce8\0\u8d30\0\u8d78\0\u8dc0\0\u8e08\0\u8e50"+
    "\0\u8e98\0\u16c8\0\u8ee0\0\u8f28\0\u8f70\0\u16c8\0\u8fb8\0\u9000"+
    "\0\u9048\0\u9090\0\u90d8\0\u9120\0\u9168\0\u91b0\0\u91f8\0\u0750"+
    "\0\u9240\0\u9288\0\u92d0\0\u1ea8\0\u9318\0\u9360\0\u93a8\0\u93f0"+
    "\0\u9438\0\u9480\0\u94c8\0\u9510\0\u9558\0\u95a0\0\u95e8\0\u9630"+
    "\0\u9678\0\u96c0\0\u9708\0\u9750\0\u9798\0\u97e0\0\u9828\0\u9870"+
    "\0\u98b8\0\u9900\0\u9948\0\u9990\0\u99d8\0\u9a20\0\u9a68\0\u9ab0"+
    "\0\u9af8\0\u9b40\0\u9b88\0\u1ea8\0\u9bd0\0\u9c18\0\u9c60\0\u1ea8"+
    "\0\u9ca8\0\u9cf0\0\u9d38\0\u9d80\0\u9dc8\0\u9e10\0\u9e58\0\u9ea0"+
    "\0\u2448\0\u9ee8\0\u9f30\0\u9f78\0\u9fc0\0\ua008\0\ua050\0\ua098"+
    "\0\ua0e0\0\ua128\0\ua170\0\ua1b8\0\ua200\0\ua248\0\ua290\0\ua2d8"+
    "\0\ua320\0\ua368\0\ua3b0\0\ua3f8\0\ua440\0\ua488\0\ua4d0\0\ua518"+
    "\0\ua560\0\ua5a8\0\ua5f0\0\ua638\0\ua680\0\ua6c8\0\ua710\0\ua758"+
    "\0\u2448\0\ua7a0\0\ua7e8\0\ua830\0\u2448\0\ua878\0\ua8c0\0\ua908"+
    "\0\ua950\0\ua998\0\u0750\0\ua9e0\0\uaa28\0\u0750\0\u0750\0\uaa70"+
    "\0\uaab8\0\uab00\0\uab48\0\u0948\0\uab90\0\uabd8\0\uac20\0\uac68"+
    "\0\uacb0\0\uacf8\0\u0948\0\uad40\0\u0948\0\uad88\0\uadd0\0\uae18"+
    "\0\uae60\0\u0948\0\uaea8\0\uaef0\0\uaf38\0\uaf80\0\uafc8\0\ub010"+
    "\0\ub058\0\ub0a0\0\ub0e8\0\ub130\0\ub178\0\ub1c0\0\ub208\0\ub250"+
    "\0\ub298\0\ub2e0\0\ub328\0\ub370\0\u0948\0\ub3b8\0\ub400\0\u0948"+
    "\0\ub448\0\ub490\0\ub4d8\0\ub520\0\ub568\0\ub5b0\0\u0948\0\ub5f8"+
    "\0\ub640\0\u0948\0\ub688\0\ub6d0\0\u0948\0\ub718\0\ub760\0\u0948"+
    "\0\ub7a8\0\u0750\0\ub7f0\0\ub838\0\ub880\0\u1248\0\ub8c8\0\ub910"+
    "\0\ub958\0\ub9a0\0\ub9e8\0\uba30\0\u1248\0\uba78\0\u1248\0\ubac0"+
    "\0\ubb08\0\u1248\0\ubb50\0\ubb98\0\ubbe0\0\ubc28\0\ubc70\0\ubcb8"+
    "\0\ubd00\0\u1248\0\ubd48\0\ubd90\0\u1248\0\ubdd8\0\ube20\0\ube68"+
    "\0\ubeb0\0\ubef8\0\ubf40\0\u1248\0\ubf88\0\ubfd0\0\u1248\0\uc018"+
    "\0\uc060\0\u1248\0\uc0a8\0\uc0f0\0\u1248\0\uc138\0\uc180\0\uc1c8"+
    "\0\uc210\0\u16c8\0\uc258\0\uc2a0\0\uc2e8\0\uc330\0\uc378\0\uc3c0"+
    "\0\u16c8\0\uc408\0\u16c8\0\uc450\0\uc498\0\u16c8\0\uc4e0\0\uc528"+
    "\0\uc570\0\uc5b8\0\uc600\0\uc648\0\uc690\0\u16c8\0\uc6d8\0\uc720"+
    "\0\u16c8\0\uc768\0\uc7b0\0\uc7f8\0\uc840\0\uc888\0\uc8d0\0\u16c8"+
    "\0\uc918\0\uc960\0\u16c8\0\uc9a8\0\uc9f0\0\u16c8\0\uca38\0\uca80"+
    "\0\u16c8\0\ucac8\0\ucb10\0\ucb58\0\u0750\0\ucba0\0\ucbe8\0\ucc30"+
    "\0\u1ea8\0\ucc78\0\uccc0\0\ucd08\0\ucd50\0\ucd98\0\ucde0\0\u1ea8"+
    "\0\uce28\0\u1ea8\0\uce70\0\uceb8\0\u1ea8\0\ucf00\0\ucf48\0\ucf90"+
    "\0\ucfd8\0\ud020\0\ud068\0\ud0b0\0\u1ea8\0\ud0f8\0\ud140\0\u1ea8"+
    "\0\ud188\0\ud1d0\0\ud218\0\ud260\0\ud2a8\0\ud2f0\0\u1ea8\0\ud338"+
    "\0\ud380\0\u1ea8\0\ud3c8\0\ud410\0\u1ea8\0\ud458\0\ud4a0\0\u1ea8"+
    "\0\ud4e8\0\ud530\0\ud578\0\ud5c0\0\u2448\0\ud608\0\ud650\0\ud698"+
    "\0\ud6e0\0\ud728\0\ud770\0\u2448\0\ud7b8\0\u2448\0\ud800\0\ud848"+
    "\0\u2448\0\ud890\0\ud8d8\0\ud920\0\ud968\0\ud9b0\0\ud9f8\0\uda40"+
    "\0\u2448\0\uda88\0\udad0\0\u2448\0\udb18\0\udb60\0\udba8\0\udbf0"+
    "\0\udc38\0\udc80\0\u2448\0\udcc8\0\udd10\0\u2448\0\udd58\0\udda0"+
    "\0\u2448\0\udde8\0\ude30\0\u2448\0\ude78\0\u0750\0\ua9e0\0\udec0"+
    "\0\u0948\0\udf08\0\u0948\0\udf50\0\udf98\0\udfe0\0\ue028\0\ue070"+
    "\0\ue0b8\0\ue100\0\u0948\0\ue148\0\ue190\0\ue1d8\0\ue220\0\ue268"+
    "\0\ue2b0\0\ue2f8\0\ue340\0\ue388\0\ue3d0\0\ue418\0\ue460\0\ue4a8"+
    "\0\ue4f0\0\ue538\0\u0948\0\u0948\0\ue580\0\u0948\0\ue5c8\0\ue610"+
    "\0\ue658\0\u0948\0\ue6a0\0\u0948\0\ue6e8\0\ue730\0\ue778\0\ue7c0"+
    "\0\ue808\0\u0948\0\u1248\0\ue850\0\u1248\0\ue898\0\ue8e0\0\ue928"+
    "\0\ue970\0\ue9b8\0\uea00\0\uea48\0\u1248\0\uea90\0\uead8\0\ueb20"+
    "\0\ueb68\0\uebb0\0\uebf8\0\uec40\0\u1248\0\u1248\0\uec88\0\u1248"+
    "\0\uecd0\0\ued18\0\ued60\0\u1248\0\ueda8\0\u1248\0\uedf0\0\uee38"+
    "\0\uee80\0\ueec8\0\uef10\0\u1248\0\u16c8\0\uef58\0\u16c8\0\uefa0"+
    "\0\uefe8\0\uf030\0\uf078\0\uf0c0\0\uf108\0\uf150\0\u16c8\0\uf198"+
    "\0\uf1e0\0\uf228\0\uf270\0\uf2b8\0\uf300\0\uf348\0\u16c8\0\u16c8"+
    "\0\uf390\0\u16c8\0\uf3d8\0\uf420\0\uf468\0\u16c8\0\uf4b0\0\u16c8"+
    "\0\uf4f8\0\uf540\0\uf588\0\uf5d0\0\uf618\0\u16c8\0\u1ea8\0\uf660"+
    "\0\u1ea8\0\uf6a8\0\uf6f0\0\uf738\0\uf780\0\uf7c8\0\uf810\0\uf858"+
    "\0\u1ea8\0\uf8a0\0\uf8e8\0\uf930\0\uf978\0\uf9c0\0\ufa08\0\ufa50"+
    "\0\u1ea8\0\u1ea8\0\ufa98\0\u1ea8\0\ufae0\0\ufb28\0\ufb70\0\u1ea8"+
    "\0\ufbb8\0\u1ea8\0\ufc00\0\ufc48\0\ufc90\0\ufcd8\0\ufd20\0\u1ea8"+
    "\0\u2448\0\ufd68\0\u2448\0\ufdb0\0\ufdf8\0\ufe40\0\ufe88\0\ufed0"+
    "\0\uff18\0\uff60\0\u2448\0\uffa8\0\ufff0\1\70\1\200\1\310"+
    "\1\u0110\1\u0158\0\u2448\0\u2448\1\u01a0\0\u2448\1\u01e8\1\u0230"+
    "\1\u0278\0\u2448\1\u02c0\0\u2448\1\u0308\1\u0350\1\u0398\1\u03e0"+
    "\1\u0428\0\u2448\0\udec0\1\u0470\1\u04b8\0\u0948\1\u0500\1\u0548"+
    "\1\u0590\0\u0948\1\u05d8\1\u0620\1\u0668\1\u06b0\0\u0948\1\u06f8"+
    "\1\u0740\1\u0788\1\u07d0\0\u0948\1\u0818\0\u0948\1\u0860\1\u08a8"+
    "\0\u0948\1\u08f0\0\u0948\0\u0948\0\u0948\1\u0938\1\u0980\1\u09c8"+
    "\0\u1248\1\u0a10\1\u0a58\1\u0aa0\0\u1248\1\u0ae8\1\u0b30\0\u1248"+
    "\1\u0b78\1\u0bc0\1\u0c08\1\u0c50\0\u1248\1\u0c98\0\u1248\1\u0ce0"+
    "\1\u0d28\0\u1248\1\u0d70\0\u1248\0\u1248\0\u1248\1\u0db8\1\u0e00"+
    "\1\u0e48\0\u16c8\1\u0e90\1\u0ed8\1\u0f20\0\u16c8\1\u0f68\1\u0fb0"+
    "\0\u16c8\1\u0ff8\1\u1040\1\u1088\1\u10d0\0\u16c8\1\u1118\0\u16c8"+
    "\1\u1160\1\u11a8\0\u16c8\1\u11f0\0\u16c8\0\u16c8\0\u16c8\1\u1238"+
    "\1\u1280\1\u12c8\0\u1ea8\1\u1310\1\u1358\1\u13a0\0\u1ea8\1\u13e8"+
    "\1\u1430\0\u1ea8\1\u1478\1\u14c0\1\u1508\1\u1550\0\u1ea8\1\u1598"+
    "\0\u1ea8\1\u15e0\1\u1628\0\u1ea8\1\u1670\0\u1ea8\0\u1ea8\0\u1ea8"+
    "\1\u16b8\1\u1700\1\u1748\0\u2448\1\u1790\1\u17d8\1\u1820\0\u2448"+
    "\1\u1868\1\u18b0\0\u2448\1\u18f8\1\u1940\1\u1988\1\u19d0\0\u2448"+
    "\1\u1a18\0\u2448\1\u1a60\1\u1aa8\0\u2448\1\u1af0\0\u2448\0\u2448"+
    "\0\u2448\1\u1b38\0\u0948\1\u1b80\1\u1bc8\1\u1c10\0\u0948\0\u0948"+
    "\0\u0948\0\ue268\0\u0948\0\u0948\1\u1c58\1\u1ca0\1\u1ce8\1\u1d30"+
    "\1\u1d78\1\u1dc0\1\u1e08\0\u1248\1\u1e50\1\u1e98\1\u1ee0\0\u1248"+
    "\0\u1248\0\u1248\0\u1248\0\u1248\1\u1f28\1\u1f70\1\u1fb8\1\u2000"+
    "\1\u2048\1\u2090\1\u20d8\0\u16c8\1\u2120\1\u2168\1\u21b0\0\u16c8"+
    "\0\u16c8\0\u16c8\0\u16c8\0\u16c8\1\u21f8\1\u2240\1\u2288\1\u22d0"+
    "\1\u2318\1\u2360\1\u23a8\0\u1ea8\1\u23f0\1\u2438\1\u2480\0\u1ea8"+
    "\0\u1ea8\0\u1ea8\0\u1ea8\0\u1ea8\1\u24c8\1\u2510\1\u2558\1\u25a0"+
    "\1\u25e8\1\u2630\1\u2678\0\u2448\1\u26c0\1\u2708\1\u2750\0\u2448"+
    "\0\u2448\0\u2448\0\u2448\0\u2448\1\u2798\1\u27e0\1\u2828\1\u2870"+
    "\1\u28b8\1\u2900\1\u2948\1\u2990\1\u29d8\1\u2a20\1\u2a68\0\u0948"+
    "\0\u0948\0\u0948\1\u2ab0\1\u2af8\0\u0948\1\u2b40\1\u2b88\1\u2bd0"+
    "\1\u2c18\0\u1248\0\u1248\0\u1248\1\u2c60\1\u2ca8\0\u1248\1\u2cf0"+
    "\1\u2d38\1\u2d80\1\u2dc8\0\u16c8\0\u16c8\0\u16c8\1\u2e10\1\u2e58"+
    "\0\u16c8\1\u2ea0\1\u2ee8\1\u2f30\1\u2f78\0\u1ea8\0\u1ea8\0\u1ea8"+
    "\1\u2fc0\1\u3008\0\u1ea8\1\u3050\1\u3098\1\u30e0\1\u3128\0\u2448"+
    "\0\u2448\0\u2448\1\u3170\1\u31b8\0\u2448\1\u3200\1\u3248\0\u0948"+
    "\0\u0948\1\u3290\0\u0948\1\u32d8\1\u3320\0\u1248\0\u1248\1\u3368"+
    "\0\u1248\1\u33b0\1\u33f8\0\u16c8\0\u16c8\1\u3440\0\u16c8\1\u3488"+
    "\1\u34d0\0\u1ea8\0\u1ea8\1\u3518\0\u1ea8\1\u3560\1\u35a8\0\u2448"+
    "\0\u2448\1\u35f0\0\u2448\0\u0948\0\u0948\1\u3638\0\u1248\0\u1248"+
    "\1\u3680\0\u16c8\0\u16c8\1\u36c8\0\u1ea8\0\u1ea8\1\u3710\0\u2448"+
    "\0\u2448\1\u3758\1\u37a0\1\u37e8\1\u3830\1\u3878\1\u38c0\0\u0948"+
    "\0\u1248\0\u16c8\0\u1ea8\0\u2448";

  private static int [] zzUnpackRowMap() {
    int [] result = new int[1444];
    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\33\2\34\1\35\1\36\1\37\1\40\1\41\1\42"+
    "\1\43\1\44\2\43\1\45\1\43\1\46\1\43\1\47"+
    "\1\43\1\50\1\43\1\51\1\43\1\52\1\53\1\43"+
    "\1\54\1\55\1\43\1\44\2\43\1\56\1\43\1\57"+
    "\1\43\1\60\1\61\1\62\1\63\1\64\1\43\1\65"+
    "\1\66\1\67\2\43\1\70\1\71\3\43\1\72\1\73"+
    "\1\74\1\75\1\76\1\77\1\100\1\101\1\102\1\103"+
    "\1\104\1\105\1\106\1\107\1\110\1\111\1\112\1\113"+
    "\1\114\1\115\11\116\1\117\1\116\2\117\1\120\1\117"+
    "\1\121\1\117\1\122\1\117\1\123\1\117\1\124\1\117"+
    "\2\116\1\117\1\116\1\125\1\117\1\116\2\117\1\116"+
    "\1\117\1\116\1\117\2\116\1\126\1\127\1\130\1\117"+
    "\1\131\1\132\1\133\2\117\1\134\1\135\3\117\1\136"+
    "\1\137\22\116\11\140\1\141\1\140\2\141\1\142\1\141"+
    "\1\143\1\141\1\144\1\141\1\145\1\141\1\146\1\141"+
    "\2\140\1\141\1\140\1\147\1\141\1\140\2\141\1\140"+
    "\1\141\1\140\1\141\2\140\1\150\1\151\1\152\1\141"+
    "\1\153\1\154\1\155\2\141\1\156\1\157\3\141\1\160"+
    "\1\161\22\140\1\162\2\163\1\162\1\164\35\162\1\165"+
    "\2\162\1\166\42\162\4\167\1\170\35\167\1\171\2\167"+
    "\1\172\42\167\11\116\1\117\1\116\14\117\2\116\1\117"+
    "\1\116\2\117\1\116\2\117\1\116\1\117\1\116\1\117"+
    "\2\116\17\117\63\116\1\173\47\116\11\140\1\141\1\140"+
    "\14\141\2\140\1\141\1\140\2\141\1\140\2\141\1\140"+
    "\1\141\1\140\1\141\2\140\17\141\63\140\1\174\47\140"+
    "\1\175\2\176\105\175\1\33\2\34\1\35\1\36\1\37"+
    "\1\40\1\41\1\42\1\43\1\44\2\43\1\45\1\43"+
    "\1\46\1\43\1\47\1\43\1\50\1\43\1\51\1\43"+
    "\1\52\1\53\1\43\1\54\1\55\1\43\1\44\2\43"+
    "\1\56\1\43\1\57\1\43\1\60\1\61\1\62\1\63"+
    "\1\64\1\43\1\65\1\66\1\67\2\43\1\70\1\71"+
    "\3\43\1\72\1\177\1\200\1\75\1\76\1\77\1\100"+
    "\1\101\1\102\1\103\1\104\1\105\1\106\1\107\1\110"+
    "\1\111\1\112\1\113\1\114\1\115\3\201\1\202\1\203"+
    "\1\204\34\201\1\205\45\201\11\206\1\207\1\206\2\207"+
    "\1\210\1\207\1\211\1\207\1\212\1\207\1\213\1\207"+
    "\1\214\1\207\2\206\1\207\1\206\1\215\1\207\1\206"+
    "\2\207\1\206\1\207\1\206\1\207\2\206\1\216\1\217"+
    "\1\220\1\207\1\221\1\222\1\223\2\207\1\224\1\225"+
    "\3\207\1\226\1\227\22\206\4\230\1\231\1\232\34\230"+
    "\1\233\45\230\11\206\1\207\1\206\14\207\2\206\1\207"+
    "\1\206\2\207\1\206\2\207\1\206\1\207\1\206\1\207"+
    "\2\206\17\207\63\206\1\234\47\206\11\235\1\236\1\235"+
    "\2\236\1\237\1\236\1\240\1\236\1\241\1\236\1\242"+
    "\1\236\1\243\1\236\2\235\1\236\1\235\1\244\1\236"+
    "\1\235\2\236\1\235\1\236\1\235\1\236\2\235\1\245"+
    "\1\246\1\247\1\236\1\250\1\251\1\252\2\236\1\253"+
    "\1\254\3\236\1\255\1\256\22\235\5\257\1\260\34\257"+
    "\1\261\45\257\11\262\1\236\1\262\14\236\2\262\1\236"+
    "\1\262\2\236\1\262\2\236\1\262\1\236\1\262\1\236"+
    "\2\262\17\236\63\262\1\263\47\262\1\264\3\265\1\266"+
    "\1\267\102\264\1\270\3\265\1\271\103\270\1\272\3\265"+
    "\1\273\103\272\1\33\2\34\1\35\1\36\1\37\1\40"+
    "\1\41\1\42\1\43\1\44\2\43\1\45\1\43\1\46"+
    "\1\43\1\47\1\43\1\50\1\43\1\51\1\43\1\52"+
    "\1\53\1\43\1\54\1\55\1\43\1\44\2\43\1\56"+
    "\1\43\1\57\1\43\1\60\1\61\1\62\1\63\1\64"+
    "\1\43\1\65\1\66\1\67\2\43\1\70\1\71\3\43"+
    "\1\72\1\73\1\33\1\75\1\76\1\77\1\100\1\101"+
    "\1\102\1\103\1\104\1\105\1\106\1\107\1\110\1\111"+
    "\1\112\1\113\1\114\1\115\4\274\1\275\35\274\1\0"+
    "\2\274\1\276\42\274\45\0\1\277\153\0\3\34\1\300"+
    "\104\0\1\301\1\35\112\0\1\302\1\303\61\0\1\304"+
    "\25\0\1\305\31\0\1\306\27\0\1\307\27\0\1\310"+
    "\167\0\1\311\30\0\16\43\2\0\7\43\1\0\3\43"+
    "\2\0\17\43\35\0\1\44\2\312\2\313\2\314\2\315"+
    "\2\316\2\317\2\0\1\320\1\44\2\0\1\44\2\0"+
    "\1\321\60\0\6\43\1\322\1\43\1\323\5\43\2\0"+
    "\7\43\1\0\3\43\2\0\1\43\1\324\6\43\1\325"+
    "\6\43\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\10\43\1\326\6\43\34\0\4\43\1\327\11\43\2\0"+
    "\7\43\1\0\3\43\2\0\7\43\1\330\1\43\1\331"+
    "\5\43\34\0\14\43\1\332\1\43\2\0\7\43\1\0"+
    "\3\43\2\0\10\43\1\333\6\43\34\0\6\43\1\334"+
    "\7\43\2\0\5\43\1\335\1\43\1\0\3\43\2\0"+
    "\11\43\1\336\5\43\52\0\1\337\40\0\1\340\47\0"+
    "\1\341\37\0\1\342\7\0\1\343\21\0\1\44\2\312"+
    "\2\313\2\314\2\315\2\316\2\317\2\0\1\320\1\44"+
    "\2\344\1\44\2\345\1\321\60\0\16\43\2\0\7\43"+
    "\1\0\3\43\2\0\6\43\1\346\1\43\1\347\2\43"+
    "\1\350\3\43\63\0\1\351\44\0\1\352\7\0\1\353"+
    "\3\0\16\43\2\0\7\43\1\0\3\43\2\0\17\43"+
    "\23\0\1\354\2\0\1\354\1\355\37\354\1\356\43\354"+
    "\1\357\2\0\1\357\1\360\35\357\1\0\2\357\1\361"+
    "\42\357\11\0\16\43\2\0\7\43\1\0\2\43\1\362"+
    "\2\0\1\43\1\363\4\43\1\364\10\43\34\0\16\43"+
    "\2\0\2\43\1\365\4\43\1\0\3\43\2\0\4\43"+
    "\1\366\12\43\34\0\6\43\1\367\7\43\2\0\7\43"+
    "\1\0\3\43\2\0\1\43\1\370\6\43\1\371\3\43"+
    "\1\372\2\43\34\0\16\43\2\0\7\43\1\0\2\43"+
    "\1\373\2\0\5\43\1\374\5\43\1\375\1\376\1\43"+
    "\1\377\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\6\43\1\u0100\5\43\1\u0101\2\43\34\0\14\43\1\u0102"+
    "\1\43\2\0\7\43\1\0\3\43\2\0\17\43\34\0"+
    "\14\43\1\u0103\1\43\2\0\7\43\1\0\2\43\1\u0104"+
    "\2\0\1\43\1\u0105\15\43\34\0\16\43\2\0\7\43"+
    "\1\0\3\43\2\0\10\43\1\u0106\6\43\34\0\16\43"+
    "\2\0\7\43\1\0\3\43\2\0\14\43\1\u0107\2\43"+
    "\63\0\1\u0108\34\0\1\u0109\102\0\1\u010a\10\0\1\u010b"+
    "\76\0\1\u010c\6\0\1\u010d\100\0\1\u010e\7\0\1\u010f"+
    "\77\0\1\u0110\107\0\1\u0111\107\0\1\u0112\13\0\1\u0113"+
    "\73\0\1\u0114\14\0\1\u0115\13\0\16\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\17\117\34\0\6\117"+
    "\1\u0116\1\117\1\u0117\5\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\1\117\1\u0118\6\117\1\u0119\6\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\10\117\1\u011a\6\117\34\0\4\117\1\u011b\11\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\7\117"+
    "\1\u011c\1\117\1\u011d\5\117\34\0\14\117\1\u011e\1\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\10\117"+
    "\1\u011f\6\117\34\0\6\117\1\u0120\7\117\2\0\5\117"+
    "\1\u0121\1\117\1\0\1\117\1\0\1\117\2\0\11\117"+
    "\1\u0122\5\117\34\0\16\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\6\117\1\u0123\1\117\1\u0124\2\117"+
    "\1\u0125\3\117\34\0\16\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\u0126\2\0\1\117\1\u0127\4\117\1\u0128\10\117"+
    "\34\0\16\117\2\0\2\117\1\u0129\4\117\1\0\1\117"+
    "\1\0\1\117\2\0\4\117\1\u012a\12\117\34\0\6\117"+
    "\1\u012b\7\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\1\117\1\u012c\6\117\1\u012d\3\117\1\u012e\2\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\u012f"+
    "\2\0\5\117\1\u0130\5\117\1\u0131\1\u0132\1\117\1\u0133"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\6\117\1\u0134\5\117\1\u0135\2\117\34\0\14\117"+
    "\1\u0136\1\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\17\117\34\0\14\117\1\u0137\1\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\u0138\2\0\1\117\1\u0139\15\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\10\117\1\u013a\6\117\34\0\16\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\14\117\1\u013b\2\117"+
    "\34\0\16\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\17\141\34\0\6\141\1\u013c\1\141\1\u013d\5\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\1\141"+
    "\1\u013e\6\141\1\u013f\6\141\34\0\16\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\10\141\1\u0140\6\141"+
    "\34\0\4\141\1\u0141\11\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\7\141\1\u0142\1\141\1\u0143\5\141"+
    "\34\0\14\141\1\u0144\1\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\10\141\1\u0145\6\141\34\0\6\141"+
    "\1\u0146\7\141\2\0\5\141\1\u0147\1\141\1\0\1\141"+
    "\1\0\1\141\2\0\11\141\1\u0148\5\141\34\0\16\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\6\141"+
    "\1\u0149\1\141\1\u014a\2\141\1\u014b\3\141\34\0\16\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\u014c\2\0\1\141"+
    "\1\u014d\4\141\1\u014e\10\141\34\0\16\141\2\0\2\141"+
    "\1\u014f\4\141\1\0\1\141\1\0\1\141\2\0\4\141"+
    "\1\u0150\12\141\34\0\6\141\1\u0151\7\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\1\141\1\u0152\6\141"+
    "\1\u0153\3\141\1\u0154\2\141\34\0\16\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\u0155\2\0\5\141\1\u0156\5\141"+
    "\1\u0157\1\u0158\1\141\1\u0159\34\0\16\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\6\141\1\u015a\5\141"+
    "\1\u015b\2\141\34\0\14\141\1\u015c\1\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\17\141\34\0\14\141"+
    "\1\u015d\1\141\2\0\7\141\1\0\1\141\1\0\1\u015e"+
    "\2\0\1\141\1\u015f\15\141\34\0\16\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\10\141\1\u0160\6\141"+
    "\34\0\16\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\14\141\1\u0161\2\141\23\0\1\162\2\0\1\162"+
    "\1\164\35\162\1\0\2\162\1\0\42\162\1\0\3\163"+
    "\1\u0162\103\0\3\162\1\u0163\1\u0164\103\162\4\167\1\170"+
    "\35\167\1\0\2\167\1\u0165\156\167\1\0\35\167\1\0"+
    "\2\167\1\u0166\42\167\11\0\1\u0167\1\0\14\u0167\2\0"+
    "\1\u0167\1\0\2\u0167\1\0\2\u0167\1\0\1\u0167\1\0"+
    "\1\u0167\2\0\17\u0167\34\0\1\u0168\1\0\14\u0168\2\0"+
    "\1\u0168\1\0\2\u0168\1\0\2\u0168\1\0\1\u0168\1\0"+
    "\1\u0168\2\0\17\u0168\24\0\3\176\1\u0169\104\0\1\u016a"+
    "\1\202\112\0\1\302\1\303\106\0\1\u016b\113\0\16\207"+
    "\2\0\7\207\1\0\1\207\1\0\1\207\2\0\17\207"+
    "\34\0\6\207\1\u016c\1\207\1\u016d\5\207\2\0\7\207"+
    "\1\0\1\207\1\0\1\207\2\0\1\207\1\u016e\6\207"+
    "\1\u016f\6\207\34\0\16\207\2\0\7\207\1\0\1\207"+
    "\1\0\1\207\2\0\10\207\1\u0170\6\207\34\0\4\207"+
    "\1\u0171\11\207\2\0\7\207\1\0\1\207\1\0\1\207"+
    "\2\0\7\207\1\u0172\1\207\1\u0173\5\207\34\0\14\207"+
    "\1\u0174\1\207\2\0\7\207\1\0\1\207\1\0\1\207"+
    "\2\0\10\207\1\u0175\6\207\34\0\6\207\1\u0176\7\207"+
    "\2\0\5\207\1\u0177\1\207\1\0\1\207\1\0\1\207"+
    "\2\0\11\207\1\u0178\5\207\34\0\16\207\2\0\7\207"+
    "\1\0\1\207\1\0\1\207\2\0\6\207\1\u0179\1\207"+
    "\1\u017a\2\207\1\u017b\3\207\34\0\16\207\2\0\7\207"+
    "\1\0\1\207\1\0\1\u017c\2\0\1\207\1\u017d\4\207"+
    "\1\u017e\10\207\34\0\16\207\2\0\2\207\1\u017f\4\207"+
    "\1\0\1\207\1\0\1\207\2\0\4\207\1\u0180\12\207"+
    "\34\0\6\207\1\u0181\7\207\2\0\7\207\1\0\1\207"+
    "\1\0\1\207\2\0\1\207\1\u0182\6\207\1\u0183\3\207"+
    "\1\u0184\2\207\34\0\16\207\2\0\7\207\1\0\1\207"+
    "\1\0\1\u0185\2\0\5\207\1\u0186\5\207\1\u0187\1\u0188"+
    "\1\207\1\u0189\34\0\16\207\2\0\7\207\1\0\1\207"+
    "\1\0\1\207\2\0\6\207\1\u018a\5\207\1\u018b\2\207"+
    "\34\0\14\207\1\u018c\1\207\2\0\7\207\1\0\1\207"+
    "\1\0\1\207\2\0\17\207\34\0\14\207\1\u018d\1\207"+
    "\2\0\7\207\1\0\1\207\1\0\1\u018e\2\0\1\207"+
    "\1\u018f\15\207\34\0\16\207\2\0\7\207\1\0\1\207"+
    "\1\0\1\207\2\0\10\207\1\u0190\6\207\34\0\16\207"+
    "\2\0\7\207\1\0\1\207\1\0\1\207\2\0\14\207"+
    "\1\u0191\2\207\23\0\4\230\1\231\1\0\34\230\1\u0192"+
    "\51\230\1\231\35\230\1\u0192\45\230\11\u0193\1\0\1\u0193"+
    "\14\0\2\u0193\1\0\1\u0193\2\0\1\u0193\2\0\1\u0193"+
    "\1\0\1\u0193\1\0\2\u0193\20\0\22\u0193\11\0\1\u0194"+
    "\1\0\14\u0194\2\0\1\u0194\1\0\2\u0194\1\0\2\u0194"+
    "\1\0\1\u0194\1\0\1\u0194\2\0\17\u0194\34\0\16\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\17\236"+
    "\34\0\6\236\1\u0195\1\236\1\u0196\5\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\236\2\0\1\236\1\u0197\6\236"+
    "\1\u0198\6\236\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\10\236\1\u0199\6\236\34\0\4\236"+
    "\1\u019a\11\236\2\0\7\236\1\0\1\236\1\0\1\236"+
    "\2\0\7\236\1\u019b\1\236\1\u019c\5\236\34\0\14\236"+
    "\1\u019d\1\236\2\0\7\236\1\0\1\236\1\0\1\236"+
    "\2\0\10\236\1\u019e\6\236\34\0\6\236\1\u019f\7\236"+
    "\2\0\5\236\1\u01a0\1\236\1\0\1\236\1\0\1\236"+
    "\2\0\11\236\1\u01a1\5\236\34\0\16\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\236\2\0\6\236\1\u01a2\1\236"+
    "\1\u01a3\2\236\1\u01a4\3\236\34\0\16\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\u01a5\2\0\1\236\1\u01a6\4\236"+
    "\1\u01a7\10\236\34\0\16\236\2\0\2\236\1\u01a8\4\236"+
    "\1\0\1\236\1\0\1\236\2\0\4\236\1\u01a9\12\236"+
    "\34\0\6\236\1\u01aa\7\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\1\236\1\u01ab\6\236\1\u01ac\3\236"+
    "\1\u01ad\2\236\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\u01ae\2\0\5\236\1\u01af\5\236\1\u01b0\1\u01b1"+
    "\1\236\1\u01b2\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\6\236\1\u01b3\5\236\1\u01b4\2\236"+
    "\34\0\14\236\1\u01b5\1\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\17\236\34\0\14\236\1\u01b6\1\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\u01b7\2\0\1\236"+
    "\1\u01b8\15\236\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\10\236\1\u01b9\6\236\34\0\16\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\14\236"+
    "\1\u01ba\2\236\23\0\5\257\1\u01bb\34\257\1\u01bc\52\257"+
    "\1\0\34\257\1\u01bd\45\257\5\u01be\1\u01bf\3\u01be\1\0"+
    "\1\u01be\14\0\2\u01be\1\0\1\u01be\2\0\1\u01be\2\0"+
    "\1\u01be\1\0\1\u01bf\1\0\2\u01be\20\0\22\u01be\11\0"+
    "\1\u01c0\1\0\14\u01c0\2\0\1\u01c0\1\0\2\u01c0\1\0"+
    "\2\u01c0\1\0\1\u01c0\1\0\1\u01c0\2\0\17\u01c0\24\0"+
    "\3\265\1\u01c1\104\0\2\265\105\0\114\274\1\0\35\274"+
    "\1\0\2\274\1\u01c2\42\274\45\0\1\u01c3\43\0\2\34"+
    "\107\0\1\35\105\0\1\302\2\0\105\302\6\u01c4\1\u01c5"+
    "\101\u01c4\70\0\1\u01c6\17\0\1\310\2\0\105\310\70\0"+
    "\1\u01c7\31\0\1\u01c8\14\0\2\u01c9\1\0\1\u01c8\2\0"+
    "\1\u01c8\64\0\1\44\16\0\1\320\1\44\2\0\1\44"+
    "\64\0\1\u01ca\17\0\1\u01ca\2\0\1\u01ca\63\0\16\43"+
    "\2\0\7\43\1\0\3\43\2\0\10\43\1\u01cb\6\43"+
    "\34\0\16\43\2\0\7\43\1\0\3\43\2\0\11\43"+
    "\1\u01cc\5\43\34\0\6\43\1\u01cd\7\43\2\0\7\43"+
    "\1\0\3\43\2\0\17\43\34\0\16\43\2\0\7\43"+
    "\1\0\3\43\2\0\6\43\1\u01ce\10\43\34\0\16\43"+
    "\2\0\7\43\1\0\3\43\2\0\11\43\1\u01cf\5\43"+
    "\34\0\16\43\2\0\7\43\1\0\3\43\2\0\1\u01d0"+
    "\16\43\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\4\43\1\u01d1\1\u01d2\11\43\34\0\4\43\1\u01d3\11\43"+
    "\2\0\7\43\1\0\3\43\2\0\17\43\34\0\16\43"+
    "\2\0\7\43\1\0\2\43\1\u01d4\2\0\17\43\34\0"+
    "\16\43\2\0\7\43\1\0\3\43\2\0\4\43\1\u01d5"+
    "\12\43\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\5\43\1\u01d6\11\43\34\0\16\43\2\0\7\43\1\0"+
    "\2\43\1\u01d7\2\0\17\43\55\0\1\u01d8\2\0\1\u01d8"+
    "\63\0\2\u01d9\2\0\2\u01d9\4\0\4\u01d9\3\0\4\u01d9"+
    "\11\0\2\u01d9\50\0\14\43\1\u01da\1\43\2\0\7\43"+
    "\1\0\3\43\2\0\17\43\34\0\16\43\2\0\7\43"+
    "\1\0\3\43\2\0\10\43\1\u01db\6\43\34\0\16\43"+
    "\2\0\7\43\1\0\3\43\2\0\5\43\1\u01dc\11\43"+
    "\63\0\1\u01dd\36\0\1\u01de\10\0\1\354\2\0\1\354"+
    "\1\355\37\354\1\u01df\46\354\1\u01e0\1\u01e1\103\354\44\0"+
    "\1\u01e2\43\0\1\357\2\0\1\357\1\360\35\357\1\0"+
    "\2\357\1\u01e3\45\357\1\u01e4\1\u01e5\103\357\45\0\1\u01e6"+
    "\53\0\16\43\2\0\2\43\1\u01e7\4\43\1\0\3\43"+
    "\2\0\17\43\34\0\16\43\2\0\7\43\1\0\3\43"+
    "\2\0\2\43\1\u01e8\14\43\34\0\10\43\1\u01e9\5\43"+
    "\2\0\7\43\1\0\3\43\2\0\10\43\1\u01ea\6\43"+
    "\34\0\16\43\2\0\7\43\1\0\3\43\2\0\4\43"+
    "\1\u01eb\12\43\34\0\16\43\2\0\7\43\1\0\3\43"+
    "\2\0\4\43\1\u01ec\12\43\34\0\16\43\2\0\7\43"+
    "\1\0\3\43\2\0\1\43\1\u01ed\15\43\34\0\16\43"+
    "\2\0\7\43\1\0\3\43\2\0\4\43\1\u01ee\1\u01ef"+
    "\11\43\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\11\43\1\u01f0\5\43\34\0\16\43\2\0\7\43\1\0"+
    "\3\43\2\0\1\43\1\u01f1\15\43\34\0\16\43\2\0"+
    "\7\43\1\0\3\43\2\0\1\u01f2\16\43\34\0\16\43"+
    "\2\0\7\43\1\0\3\43\2\0\1\43\1\u01f3\4\43"+
    "\1\u01f4\10\43\34\0\16\43\2\0\7\43\1\0\3\43"+
    "\2\0\11\43\1\u01f5\5\43\34\0\16\43\2\0\7\43"+
    "\1\0\3\43\2\0\10\43\1\u01f6\6\43\34\0\10\43"+
    "\1\u01f7\5\43\2\0\7\43\1\0\3\43\2\0\17\43"+
    "\34\0\16\43\2\0\7\43\1\0\2\43\1\u01f8\2\0"+
    "\1\43\1\u01f9\11\43\1\u01fa\3\43\34\0\10\43\1\u01fb"+
    "\5\43\2\0\7\43\1\0\3\43\2\0\6\43\1\u01fc"+
    "\10\43\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\5\43\1\u01fd\11\43\34\0\16\43\2\0\7\43\1\0"+
    "\3\43\2\0\16\43\1\u01fe\34\0\6\43\1\u01ff\7\43"+
    "\2\0\7\43\1\0\3\43\2\0\17\43\34\0\16\43"+
    "\2\0\7\43\1\0\3\43\2\0\5\43\1\u0200\11\43"+
    "\34\0\6\43\1\u0201\1\43\1\u0202\5\43\2\0\7\43"+
    "\1\0\3\43\2\0\17\43\34\0\10\43\1\u0203\5\43"+
    "\2\0\7\43\1\0\3\43\2\0\17\43\113\0\1\u0204"+
    "\10\0\1\u0205\106\0\1\u0206\77\0\1\u0207\107\0\1\u0208"+
    "\7\0\1\u0209\20\0\16\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\10\117\1\u020a\6\117\34\0\16\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\11\117"+
    "\1\u020b\5\117\34\0\6\117\1\u020c\7\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\17\117\34\0\16\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\6\117"+
    "\1\u020d\10\117\34\0\16\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\11\117\1\u020e\5\117\34\0\16\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\1\u020f"+
    "\16\117\34\0\16\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\4\117\1\u0210\1\u0211\11\117\34\0\4\117"+
    "\1\u0212\11\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\17\117\34\0\16\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\u0213\2\0\17\117\34\0\16\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\4\117\1\u0214\12\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\5\117\1\u0215\11\117\34\0\16\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\u0216\2\0\17\117\34\0\14\117"+
    "\1\u0217\1\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\17\117\34\0\16\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\10\117\1\u0218\6\117\34\0\16\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\5\117"+
    "\1\u0219\11\117\34\0\16\117\2\0\2\117\1\u021a\4\117"+
    "\1\0\1\117\1\0\1\117\2\0\17\117\34\0\16\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\2\117"+
    "\1\u021b\14\117\34\0\10\117\1\u021c\5\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\10\117\1\u021d\6\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\4\117\1\u021e\12\117\34\0\16\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\4\117\1\u021f\12\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\1\117\1\u0220\15\117\34\0\16\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\4\117\1\u0221\1\u0222"+
    "\11\117\34\0\16\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\11\117\1\u0223\5\117\34\0\16\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\117\2\0\1\117\1\u0224"+
    "\15\117\34\0\16\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\1\u0225\16\117\34\0\16\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\1\117\1\u0226\4\117"+
    "\1\u0227\10\117\34\0\16\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\11\117\1\u0228\5\117\34\0\16\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\10\117"+
    "\1\u0229\6\117\34\0\10\117\1\u022a\5\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\17\117\34\0\16\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\u022b\2\0\1\117"+
    "\1\u022c\11\117\1\u022d\3\117\34\0\10\117\1\u022e\5\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\6\117"+
    "\1\u022f\10\117\34\0\16\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\5\117\1\u0230\11\117\34\0\16\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\16\117"+
    "\1\u0231\34\0\6\117\1\u0232\7\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\17\117\34\0\16\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\117\2\0\5\117\1\u0233"+
    "\11\117\34\0\6\117\1\u0234\1\117\1\u0235\5\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\117\2\0\17\117\34\0"+
    "\10\117\1\u0236\5\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\17\117\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\10\141\1\u0237\6\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\11\141\1\u0238\5\141\34\0\6\141\1\u0239\7\141\2\0"+
    "\7\141\1\0\1\141\1\0\1\141\2\0\17\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\6\141\1\u023a\10\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\11\141\1\u023b\5\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\1\u023c\16\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\4\141\1\u023d\1\u023e\11\141\34\0"+
    "\4\141\1\u023f\11\141\2\0\7\141\1\0\1\141\1\0"+
    "\1\141\2\0\17\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\u0240\2\0\17\141\34\0\16\141\2\0"+
    "\7\141\1\0\1\141\1\0\1\141\2\0\4\141\1\u0241"+
    "\12\141\34\0\16\141\2\0\7\141\1\0\1\141\1\0"+
    "\1\141\2\0\5\141\1\u0242\11\141\34\0\16\141\2\0"+
    "\7\141\1\0\1\141\1\0\1\u0243\2\0\17\141\34\0"+
    "\14\141\1\u0244\1\141\2\0\7\141\1\0\1\141\1\0"+
    "\1\141\2\0\17\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\10\141\1\u0245\6\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\5\141\1\u0246\11\141\34\0\16\141\2\0\2\141\1\u0247"+
    "\4\141\1\0\1\141\1\0\1\141\2\0\17\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\2\141\1\u0248\14\141\34\0\10\141\1\u0249\5\141\2\0"+
    "\7\141\1\0\1\141\1\0\1\141\2\0\10\141\1\u024a"+
    "\6\141\34\0\16\141\2\0\7\141\1\0\1\141\1\0"+
    "\1\141\2\0\4\141\1\u024b\12\141\34\0\16\141\2\0"+
    "\7\141\1\0\1\141\1\0\1\141\2\0\4\141\1\u024c"+
    "\12\141\34\0\16\141\2\0\7\141\1\0\1\141\1\0"+
    "\1\141\2\0\1\141\1\u024d\15\141\34\0\16\141\2\0"+
    "\7\141\1\0\1\141\1\0\1\141\2\0\4\141\1\u024e"+
    "\1\u024f\11\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\11\141\1\u0250\5\141\34\0\16\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\1\141"+
    "\1\u0251\15\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\1\u0252\16\141\34\0\16\141\2\0"+
    "\7\141\1\0\1\141\1\0\1\141\2\0\1\141\1\u0253"+
    "\4\141\1\u0254\10\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\11\141\1\u0255\5\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\10\141\1\u0256\6\141\34\0\10\141\1\u0257\5\141\2\0"+
    "\7\141\1\0\1\141\1\0\1\141\2\0\17\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\u0258\2\0"+
    "\1\141\1\u0259\11\141\1\u025a\3\141\34\0\10\141\1\u025b"+
    "\5\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\6\141\1\u025c\10\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\5\141\1\u025d\11\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\16\141\1\u025e\34\0\6\141\1\u025f\7\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\17\141\34\0\16\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\5\141"+
    "\1\u0260\11\141\34\0\6\141\1\u0261\1\141\1\u0262\5\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\17\141"+
    "\34\0\10\141\1\u0263\5\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\17\141\24\0\2\163\105\0\3\162"+
    "\1\u0163\1\u0264\35\162\1\0\2\162\1\0\43\162\1\u0265"+
    "\1\u0266\1\162\1\164\35\162\1\0\2\162\1\0\42\162"+
    "\4\167\1\0\35\167\1\0\2\167\1\u0267\46\167\1\0"+
    "\35\167\1\0\2\167\1\u0268\42\167\11\0\16\u0167\2\0"+
    "\7\u0167\1\0\1\u0167\1\0\1\u0167\2\0\17\u0167\34\0"+
    "\16\u0168\2\0\7\u0168\1\0\1\u0168\1\0\1\u0168\2\0"+
    "\17\u0168\24\0\2\176\107\0\1\202\116\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\10\207\1\u0269"+
    "\6\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\11\207\1\u026a\5\207\34\0\6\207\1\u026b"+
    "\7\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\17\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\6\207\1\u026c\10\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\11\207\1\u026d"+
    "\5\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\1\u026e\16\207\34\0\16\207\2\0\7\207"+
    "\1\0\1\207\1\0\1\207\2\0\4\207\1\u026f\1\u0270"+
    "\11\207\34\0\4\207\1\u0271\11\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\17\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\u0272\2\0\17\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\4\207\1\u0273\12\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\5\207\1\u0274\11\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\u0275\2\0"+
    "\17\207\34\0\14\207\1\u0276\1\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\17\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\10\207\1\u0277"+
    "\6\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\5\207\1\u0278\11\207\34\0\16\207\2\0"+
    "\2\207\1\u0279\4\207\1\0\1\207\1\0\1\207\2\0"+
    "\17\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\2\207\1\u027a\14\207\34\0\10\207\1\u027b"+
    "\5\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\10\207\1\u027c\6\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\4\207\1\u027d\12\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\4\207\1\u027e\12\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\1\207\1\u027f\15\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\4\207\1\u0280\1\u0281\11\207\34\0\16\207\2\0\7\207"+
    "\1\0\1\207\1\0\1\207\2\0\11\207\1\u0282\5\207"+
    "\34\0\16\207\2\0\7\207\1\0\1\207\1\0\1\207"+
    "\2\0\1\207\1\u0283\15\207\34\0\16\207\2\0\7\207"+
    "\1\0\1\207\1\0\1\207\2\0\1\u0284\16\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\1\207\1\u0285\4\207\1\u0286\10\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\11\207\1\u0287"+
    "\5\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\10\207\1\u0288\6\207\34\0\10\207\1\u0289"+
    "\5\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\17\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\u028a\2\0\1\207\1\u028b\11\207\1\u028c\3\207\34\0"+
    "\10\207\1\u028d\5\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\6\207\1\u028e\10\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\5\207\1\u028f"+
    "\11\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\16\207\1\u0290\34\0\6\207\1\u0291\7\207"+
    "\2\0\7\207\1\0\1\207\1\0\1\207\2\0\17\207"+
    "\34\0\16\207\2\0\7\207\1\0\1\207\1\0\1\207"+
    "\2\0\5\207\1\u0292\11\207\34\0\6\207\1\u0293\1\207"+
    "\1\u0294\5\207\2\0\7\207\1\0\1\207\1\0\1\207"+
    "\2\0\17\207\34\0\10\207\1\u0295\5\207\2\0\7\207"+
    "\1\0\1\207\1\0\1\207\2\0\17\207\34\0\16\u0194"+
    "\2\0\7\u0194\1\0\1\u0194\1\0\1\u0194\2\0\17\u0194"+
    "\34\0\16\236\2\0\7\236\1\0\1\236\1\0\1\236"+
    "\2\0\10\236\1\u0296\6\236\34\0\16\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\236\2\0\11\236\1\u0297\5\236"+
    "\34\0\6\236\1\u0298\7\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\17\236\34\0\16\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\236\2\0\6\236\1\u0299\10\236"+
    "\34\0\16\236\2\0\7\236\1\0\1\236\1\0\1\236"+
    "\2\0\11\236\1\u029a\5\236\34\0\16\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\236\2\0\1\u029b\16\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\4\236\1\u029c\1\u029d\11\236\34\0\4\236\1\u029e\11\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\17\236"+
    "\34\0\16\236\2\0\7\236\1\0\1\236\1\0\1\u029f"+
    "\2\0\17\236\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\4\236\1\u02a0\12\236\34\0\16\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\5\236"+
    "\1\u02a1\11\236\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\u02a2\2\0\17\236\34\0\14\236\1\u02a3\1\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\17\236"+
    "\34\0\16\236\2\0\7\236\1\0\1\236\1\0\1\236"+
    "\2\0\10\236\1\u02a4\6\236\34\0\16\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\236\2\0\5\236\1\u02a5\11\236"+
    "\34\0\16\236\2\0\2\236\1\u02a6\4\236\1\0\1\236"+
    "\1\0\1\236\2\0\17\236\34\0\16\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\236\2\0\2\236\1\u02a7\14\236"+
    "\34\0\10\236\1\u02a8\5\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\10\236\1\u02a9\6\236\34\0\16\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\4\236"+
    "\1\u02aa\12\236\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\4\236\1\u02ab\12\236\34\0\16\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\1\236"+
    "\1\u02ac\15\236\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\4\236\1\u02ad\1\u02ae\11\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\11\236\1\u02af\5\236\34\0\16\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\1\236\1\u02b0\15\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\1\u02b1\16\236\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\1\236\1\u02b2\4\236\1\u02b3\10\236"+
    "\34\0\16\236\2\0\7\236\1\0\1\236\1\0\1\236"+
    "\2\0\11\236\1\u02b4\5\236\34\0\16\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\236\2\0\10\236\1\u02b5\6\236"+
    "\34\0\10\236\1\u02b6\5\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\17\236\34\0\16\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\u02b7\2\0\1\236\1\u02b8\11\236"+
    "\1\u02b9\3\236\34\0\10\236\1\u02ba\5\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\236\2\0\6\236\1\u02bb\10\236"+
    "\34\0\16\236\2\0\7\236\1\0\1\236\1\0\1\236"+
    "\2\0\5\236\1\u02bc\11\236\34\0\16\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\236\2\0\16\236\1\u02bd\34\0"+
    "\6\236\1\u02be\7\236\2\0\7\236\1\0\1\236\1\0"+
    "\1\236\2\0\17\236\34\0\16\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\5\236\1\u02bf\11\236\34\0"+
    "\6\236\1\u02c0\1\236\1\u02c1\5\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\17\236\34\0\10\236\1\u02c2"+
    "\5\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\17\236\23\0\5\257\1\0\34\257\1\0\45\257\11\0"+
    "\16\u01c0\2\0\7\u01c0\1\0\1\u01c0\1\0\1\u01c0\2\0"+
    "\17\u01c0\23\0\4\274\1\0\35\274\1\0\2\274\1\0"+
    "\42\274\45\0\1\u02c3\42\0\6\u01c4\1\u02c4\101\u01c4\5\u02c5"+
    "\1\u02c6\1\u01c5\101\u02c5\12\0\1\u01c8\2\u02c7\2\313\4\0"+
    "\2\316\4\0\1\u01c9\1\u01c8\2\0\1\u01c8\64\0\1\u01c8"+
    "\17\0\1\u01c8\2\0\1\u01c8\64\0\1\u01ca\2\u02c7\2\313"+
    "\4\0\2\316\2\317\2\0\1\u02c8\1\u01ca\2\0\1\u01ca"+
    "\63\0\16\43\2\0\7\43\1\0\3\43\2\0\1\43"+
    "\1\u02c9\15\43\34\0\16\43\2\0\7\43\1\0\3\43"+
    "\2\0\1\43\1\u02ca\15\43\34\0\16\43\2\0\7\43"+
    "\1\0\3\43\2\0\4\43\1\u02cb\12\43\34\0\2\43"+
    "\1\u02cc\13\43\2\0\7\43\1\0\3\43\2\0\17\43"+
    "\34\0\6\43\1\u02cd\7\43\2\0\7\43\1\0\3\43"+
    "\2\0\10\43\1\u02ce\6\43\34\0\16\43\2\0\7\43"+
    "\1\0\3\43\2\0\5\43\1\u02cf\11\43\34\0\14\43"+
    "\1\u02d0\1\43\2\0\7\43\1\0\3\43\2\0\17\43"+
    "\34\0\16\43\2\0\7\43\1\0\3\43\2\0\1\43"+
    "\1\u02d1\15\43\34\0\16\43\2\0\2\43\1\u02d2\4\43"+
    "\1\0\3\43\2\0\17\43\34\0\14\43\1\u02d3\1\43"+
    "\2\0\7\43\1\0\3\43\2\0\17\43\34\0\14\43"+
    "\1\u02d4\1\43\2\0\7\43\1\0\3\43\2\0\17\43"+
    "\34\0\16\43\2\0\7\43\1\0\3\43\2\0\7\43"+
    "\1\u02d5\7\43\36\0\2\312\2\0\2\314\2\315\6\0"+
    "\1\u02d6\1\u01d8\2\0\1\u01d8\63\0\2\u01d9\2\312\2\u01d9"+
    "\2\314\2\315\4\u01d9\2\0\1\u02d7\4\u01d9\11\0\2\u01d9"+
    "\50\0\16\43\2\0\7\43\1\0\3\43\2\0\1\43"+
    "\1\u02d8\15\43\34\0\6\43\1\u02d9\7\43\2\0\7\43"+
    "\1\0\3\43\2\0\17\43\34\0\14\43\1\u02da\1\43"+
    "\2\0\7\43\1\0\3\43\2\0\17\43\23\0\3\354"+
    "\1\u01e0\1\u02db\37\354\1\u01df\44\354\1\u02dc\1\u02dd\1\354"+
    "\1\355\37\354\1\u01df\43\354\4\u01e2\1\u02de\37\u01e2\1\u02df"+
    "\43\u01e2\3\357\1\u01e4\1\u02e0\35\357\1\0\2\357\1\u01e3"+
    "\43\357\1\u02e1\1\u02e2\1\357\1\360\35\357\1\0\2\357"+
    "\1\u01e3\42\357\4\u02e3\1\u02e4\35\u02e3\1\0\2\u02e3\1\u02e5"+
    "\42\u02e3\11\0\6\43\1\u02e6\7\43\2\0\7\43\1\0"+
    "\3\43\2\0\17\43\34\0\16\43\2\0\7\43\1\0"+
    "\3\43\2\0\3\43\1\u02e7\13\43\34\0\16\43\2\0"+
    "\7\43\1\0\3\43\2\0\12\43\1\u02e8\4\43\34\0"+
    "\16\43\2\0\7\43\1\0\3\43\2\0\5\43\1\u02e9"+
    "\11\43\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\5\43\1\u02ea\11\43\34\0\14\43\1\u02eb\1\43\2\0"+
    "\7\43\1\0\3\43\2\0\17\43\34\0\16\43\2\0"+
    "\7\43\1\0\3\43\2\0\4\43\1\u02ec\12\43\34\0"+
    "\14\43\1\u02ed\1\43\2\0\7\43\1\0\3\43\2\0"+
    "\17\43\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\2\43\1\u02ee\14\43\34\0\16\43\2\0\7\43\1\0"+
    "\3\43\2\0\5\43\1\u02ef\11\43\34\0\16\43\2\0"+
    "\7\43\1\0\3\43\2\0\6\43\1\u02f0\10\43\34\0"+
    "\14\43\1\u02f1\1\43\2\0\7\43\1\0\3\43\2\0"+
    "\17\43\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\5\43\1\u02f2\11\43\34\0\10\43\1\u02f3\5\43\2\0"+
    "\7\43\1\0\3\43\2\0\17\43\34\0\16\43\2\0"+
    "\7\43\1\0\3\43\2\0\2\43\1\u02f4\14\43\34\0"+
    "\16\43\2\0\7\43\1\0\3\43\2\0\6\43\1\u02f5"+
    "\10\43\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\5\43\1\u02f6\11\43\34\0\14\43\1\u02f7\1\43\2\0"+
    "\7\43\1\0\3\43\2\0\17\43\34\0\10\43\1\u02f8"+
    "\5\43\2\0\7\43\1\0\3\43\2\0\11\43\1\u02f9"+
    "\5\43\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\4\43\1\u02fa\12\43\34\0\16\43\2\0\7\43\1\0"+
    "\3\43\2\0\10\43\1\u02fb\6\43\34\0\16\43\2\0"+
    "\7\43\1\0\2\43\1\u02fc\2\0\17\43\34\0\6\43"+
    "\1\u02fd\7\43\2\0\7\43\1\0\3\43\2\0\17\43"+
    "\34\0\10\43\1\u02fe\5\43\2\0\7\43\1\0\3\43"+
    "\2\0\17\43\34\0\16\43\2\0\7\43\1\0\3\43"+
    "\2\0\1\43\1\u02ff\15\43\34\0\12\43\1\u0300\3\43"+
    "\2\0\7\43\1\0\3\43\2\0\17\43\34\0\6\43"+
    "\1\u0301\7\43\2\0\7\43\1\0\3\43\2\0\17\43"+
    "\113\0\1\u0302\30\0\16\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\1\117\1\u0303\15\117\34\0\16\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\1\117"+
    "\1\u0304\15\117\34\0\16\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\4\117\1\u0305\12\117\34\0\2\117"+
    "\1\u0306\13\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\17\117\34\0\6\117\1\u0307\7\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\10\117\1\u0308\6\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\5\117\1\u0309\11\117\34\0\14\117\1\u030a\1\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\17\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\1\117\1\u030b\15\117\34\0\16\117\2\0\2\117"+
    "\1\u030c\4\117\1\0\1\117\1\0\1\117\2\0\17\117"+
    "\34\0\14\117\1\u030d\1\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\17\117\34\0\14\117\1\u030e\1\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\17\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\7\117\1\u030f\7\117\34\0\16\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\1\117\1\u0310\15\117"+
    "\34\0\6\117\1\u0311\7\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\17\117\34\0\14\117\1\u0312\1\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\17\117"+
    "\34\0\6\117\1\u0313\7\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\17\117\34\0\16\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\3\117\1\u0314\13\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\12\117\1\u0315\4\117\34\0\16\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\5\117\1\u0316\11\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\5\117\1\u0317\11\117\34\0\14\117\1\u0318\1\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\17\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\4\117\1\u0319\12\117\34\0\14\117\1\u031a\1\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\17\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\2\117\1\u031b\14\117\34\0\16\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\5\117\1\u031c\11\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\6\117\1\u031d\10\117\34\0\14\117\1\u031e\1\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\17\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\5\117\1\u031f\11\117\34\0\10\117\1\u0320\5\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\17\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\2\117\1\u0321\14\117\34\0\16\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\6\117\1\u0322\10\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\5\117\1\u0323\11\117\34\0\14\117\1\u0324\1\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\17\117"+
    "\34\0\10\117\1\u0325\5\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\11\117\1\u0326\5\117\34\0\16\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\4\117"+
    "\1\u0327\12\117\34\0\16\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\10\117\1\u0328\6\117\34\0\16\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\u0329\2\0\17\117"+
    "\34\0\6\117\1\u032a\7\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\17\117\34\0\10\117\1\u032b\5\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\17\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\1\117\1\u032c\15\117\34\0\12\117\1\u032d\3\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\17\117"+
    "\34\0\6\117\1\u032e\7\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\17\117\34\0\16\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\1\141\1\u032f\15\141"+
    "\34\0\16\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\1\141\1\u0330\15\141\34\0\16\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\4\141\1\u0331\12\141"+
    "\34\0\2\141\1\u0332\13\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\17\141\34\0\6\141\1\u0333\7\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\10\141"+
    "\1\u0334\6\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\5\141\1\u0335\11\141\34\0\14\141"+
    "\1\u0336\1\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\17\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\1\141\1\u0337\15\141\34\0\16\141"+
    "\2\0\2\141\1\u0338\4\141\1\0\1\141\1\0\1\141"+
    "\2\0\17\141\34\0\14\141\1\u0339\1\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\17\141\34\0\14\141"+
    "\1\u033a\1\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\17\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\7\141\1\u033b\7\141\34\0\16\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\1\141"+
    "\1\u033c\15\141\34\0\6\141\1\u033d\7\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\17\141\34\0\14\141"+
    "\1\u033e\1\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\17\141\34\0\6\141\1\u033f\7\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\17\141\34\0\16\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\3\141"+
    "\1\u0340\13\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\12\141\1\u0341\4\141\34\0\16\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\5\141"+
    "\1\u0342\11\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\5\141\1\u0343\11\141\34\0\14\141"+
    "\1\u0344\1\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\17\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\4\141\1\u0345\12\141\34\0\14\141"+
    "\1\u0346\1\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\17\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\2\141\1\u0347\14\141\34\0\16\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\5\141"+
    "\1\u0348\11\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\6\141\1\u0349\10\141\34\0\14\141"+
    "\1\u034a\1\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\17\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\5\141\1\u034b\11\141\34\0\10\141"+
    "\1\u034c\5\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\17\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\2\141\1\u034d\14\141\34\0\16\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\6\141"+
    "\1\u034e\10\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\5\141\1\u034f\11\141\34\0\14\141"+
    "\1\u0350\1\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\17\141\34\0\10\141\1\u0351\5\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\11\141\1\u0352\5\141"+
    "\34\0\16\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\4\141\1\u0353\12\141\34\0\16\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\10\141\1\u0354\6\141"+
    "\34\0\16\141\2\0\7\141\1\0\1\141\1\0\1\u0355"+
    "\2\0\17\141\34\0\6\141\1\u0356\7\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\17\141\34\0\10\141"+
    "\1\u0357\5\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\17\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\1\141\1\u0358\15\141\34\0\12\141"+
    "\1\u0359\3\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\17\141\34\0\6\141\1\u035a\7\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\17\141\23\0\1\162"+
    "\1\u035b\2\u0163\1\u0164\103\162\1\0\1\162\1\u0163\1\u0266"+
    "\1\u035c\104\0\2\162\1\u0266\1\u035c\103\0\4\167\1\0"+
    "\35\167\1\0\2\167\1\u035d\42\167\11\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\1\207\1\u035e"+
    "\15\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\1\207\1\u035f\15\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\4\207\1\u0360"+
    "\12\207\34\0\2\207\1\u0361\13\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\17\207\34\0\6\207\1\u0362"+
    "\7\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\10\207\1\u0363\6\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\5\207\1\u0364\11\207\34\0"+
    "\14\207\1\u0365\1\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\1\207\1\u0366\15\207\34\0"+
    "\16\207\2\0\2\207\1\u0367\4\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\14\207\1\u0368\1\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\17\207\34\0"+
    "\14\207\1\u0369\1\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\7\207\1\u036a\7\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\1\207\1\u036b\15\207\34\0\6\207\1\u036c\7\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\17\207\34\0"+
    "\14\207\1\u036d\1\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\6\207\1\u036e\7\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\17\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\3\207\1\u036f\13\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\12\207\1\u0370\4\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\5\207\1\u0371\11\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\5\207\1\u0372\11\207\34\0"+
    "\14\207\1\u0373\1\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\4\207\1\u0374\12\207\34\0"+
    "\14\207\1\u0375\1\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\2\207\1\u0376\14\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\5\207\1\u0377\11\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\6\207\1\u0378\10\207\34\0"+
    "\14\207\1\u0379\1\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\5\207\1\u037a\11\207\34\0"+
    "\10\207\1\u037b\5\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\2\207\1\u037c\14\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\6\207\1\u037d\10\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\5\207\1\u037e\11\207\34\0"+
    "\14\207\1\u037f\1\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\10\207\1\u0380\5\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\11\207\1\u0381"+
    "\5\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\4\207\1\u0382\12\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\10\207\1\u0383"+
    "\6\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\u0384\2\0\17\207\34\0\6\207\1\u0385\7\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\17\207\34\0"+
    "\10\207\1\u0386\5\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\1\207\1\u0387\15\207\34\0"+
    "\12\207\1\u0388\3\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\6\207\1\u0389\7\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\17\207\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\1\236\1\u038a\15\236\34\0\16\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\1\236\1\u038b\15\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\4\236\1\u038c\12\236\34\0\2\236\1\u038d\13\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\17\236\34\0"+
    "\6\236\1\u038e\7\236\2\0\7\236\1\0\1\236\1\0"+
    "\1\236\2\0\10\236\1\u038f\6\236\34\0\16\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\5\236\1\u0390"+
    "\11\236\34\0\14\236\1\u0391\1\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\17\236\34\0\16\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\1\236\1\u0392"+
    "\15\236\34\0\16\236\2\0\2\236\1\u0393\4\236\1\0"+
    "\1\236\1\0\1\236\2\0\17\236\34\0\14\236\1\u0394"+
    "\1\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\17\236\34\0\14\236\1\u0395\1\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\17\236\34\0\16\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\7\236\1\u0396"+
    "\7\236\34\0\16\236\2\0\7\236\1\0\1\236\1\0"+
    "\1\236\2\0\1\236\1\u0397\15\236\34\0\6\236\1\u0398"+
    "\7\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\17\236\34\0\14\236\1\u0399\1\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\17\236\34\0\6\236\1\u039a"+
    "\7\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\17\236\34\0\16\236\2\0\7\236\1\0\1\236\1\0"+
    "\1\236\2\0\3\236\1\u039b\13\236\34\0\16\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\12\236\1\u039c"+
    "\4\236\34\0\16\236\2\0\7\236\1\0\1\236\1\0"+
    "\1\236\2\0\5\236\1\u039d\11\236\34\0\16\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\5\236\1\u039e"+
    "\11\236\34\0\14\236\1\u039f\1\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\17\236\34\0\16\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\4\236\1\u03a0"+
    "\12\236\34\0\14\236\1\u03a1\1\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\17\236\34\0\16\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\2\236\1\u03a2"+
    "\14\236\34\0\16\236\2\0\7\236\1\0\1\236\1\0"+
    "\1\236\2\0\5\236\1\u03a3\11\236\34\0\16\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\6\236\1\u03a4"+
    "\10\236\34\0\14\236\1\u03a5\1\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\17\236\34\0\16\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\5\236\1\u03a6"+
    "\11\236\34\0\10\236\1\u03a7\5\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\17\236\34\0\16\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\2\236\1\u03a8"+
    "\14\236\34\0\16\236\2\0\7\236\1\0\1\236\1\0"+
    "\1\236\2\0\6\236\1\u03a9\10\236\34\0\16\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\5\236\1\u03aa"+
    "\11\236\34\0\14\236\1\u03ab\1\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\17\236\34\0\10\236\1\u03ac"+
    "\5\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\11\236\1\u03ad\5\236\34\0\16\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\4\236\1\u03ae\12\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\10\236\1\u03af\6\236\34\0\16\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\u03b0\2\0\17\236\34\0\6\236\1\u03b1"+
    "\7\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\17\236\34\0\10\236\1\u03b2\5\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\17\236\34\0\16\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\1\236\1\u03b3"+
    "\15\236\34\0\12\236\1\u03b4\3\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\17\236\34\0\6\236\1\u03b5"+
    "\7\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\17\236\23\0\5\u01c4\1\u03b6\1\u03b7\101\u01c4\6\u02c5\1\u03b8"+
    "\101\u02c5\12\0\1\u01ca\16\0\1\u02c8\1\u01ca\2\0\1\u01ca"+
    "\63\0\16\43\2\0\7\43\1\0\3\43\2\0\5\43"+
    "\1\u03b9\11\43\34\0\6\43\1\u03ba\7\43\2\0\7\43"+
    "\1\0\3\43\2\0\17\43\34\0\14\43\1\u03bb\1\43"+
    "\2\0\7\43\1\0\3\43\2\0\17\43\34\0\14\43"+
    "\1\u03bc\1\43\2\0\7\43\1\0\3\43\2\0\17\43"+
    "\34\0\16\43\2\0\7\43\1\0\3\43\2\0\6\43"+
    "\1\u03bd\10\43\34\0\16\43\2\0\7\43\1\0\3\43"+
    "\2\0\1\43\1\u03be\15\43\34\0\16\43\2\0\7\43"+
    "\1\0\3\43\2\0\6\43\1\u03bf\10\43\34\0\16\43"+
    "\2\0\7\43\1\0\2\43\1\u03c0\2\0\17\43\34\0"+
    "\6\43\1\u03c1\7\43\2\0\7\43\1\0\3\43\2\0"+
    "\17\43\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\11\43\1\u03c2\5\43\54\0\1\u02d6\1\u01d8\2\0\1\u01d8"+
    "\63\0\2\u01d9\2\0\2\u01d9\4\0\4\u01d9\2\0\1\u02d7"+
    "\4\u01d9\11\0\2\u01d9\50\0\16\43\2\0\7\43\1\0"+
    "\3\43\2\0\3\43\1\u03c3\13\43\34\0\14\43\1\u03c4"+
    "\1\43\2\0\7\43\1\0\3\43\2\0\17\43\23\0"+
    "\1\354\1\u03c5\2\u01e0\1\u01e1\103\354\1\0\1\354\1\u01e0"+
    "\1\u02dd\1\u03c6\104\0\2\354\1\u02dd\1\u03c6\103\0\4\u01e2"+
    "\1\u02de\37\u01e2\1\u03c7\107\u01e2\1\u03c8\43\u01e2\1\357\1\u03c9"+
    "\2\u01e4\1\u01e5\103\357\1\0\1\357\1\u01e4\1\u02e2\1\u03ca"+
    "\104\0\2\357\1\u02e2\1\u03ca\103\0\4\u02e3\1\u02e4\35\u02e3"+
    "\1\0\2\u02e3\1\u03cb\156\u02e3\1\0\35\u02e3\1\0\2\u02e3"+
    "\1\u03cc\42\u02e3\11\0\10\43\1\u03cd\5\43\2\0\7\43"+
    "\1\0\3\43\2\0\17\43\34\0\16\43\2\0\7\43"+
    "\1\0\3\43\2\0\1\43\1\u03ce\15\43\34\0\16\43"+
    "\2\0\7\43\1\0\3\43\2\0\1\43\1\u03cf\15\43"+
    "\34\0\14\43\1\u03d0\1\43\2\0\7\43\1\0\3\43"+
    "\2\0\17\43\34\0\16\43\2\0\7\43\1\0\3\43"+
    "\2\0\6\43\1\u03d1\10\43\34\0\16\43\2\0\7\43"+
    "\1\0\3\43\2\0\6\43\1\u03d2\10\43\34\0\16\43"+
    "\2\0\7\43\1\0\3\43\2\0\4\43\1\u03d3\12\43"+
    "\34\0\16\43\2\0\7\43\1\0\3\43\2\0\14\43"+
    "\1\u03d4\2\43\34\0\10\43\1\u03d5\5\43\2\0\7\43"+
    "\1\0\3\43\2\0\17\43\34\0\16\43\2\0\7\43"+
    "\1\0\3\43\2\0\6\43\1\u03d6\10\43\34\0\10\43"+
    "\1\u03d7\5\43\2\0\7\43\1\0\3\43\2\0\17\43"+
    "\34\0\16\43\2\0\7\43\1\0\3\43\2\0\2\43"+
    "\1\u03d8\14\43\34\0\16\43\2\0\7\43\1\0\3\43"+
    "\2\0\14\43\1\u03d9\2\43\34\0\16\43\2\0\7\43"+
    "\1\0\3\43\2\0\5\43\1\u03da\11\43\34\0\16\43"+
    "\2\0\7\43\1\0\3\43\2\0\2\43\1\u03db\14\43"+
    "\34\0\16\43\2\0\7\43\1\0\3\43\2\0\5\43"+
    "\1\u03dc\11\43\34\0\16\43\2\0\7\43\1\0\3\43"+
    "\2\0\4\43\1\u03dd\12\43\34\0\16\43\2\0\7\43"+
    "\1\0\3\43\2\0\16\43\1\u03de\34\0\16\43\2\0"+
    "\7\43\1\0\3\43\2\0\6\43\1\u03df\10\43\34\0"+
    "\16\43\2\0\7\43\1\0\3\43\2\0\12\43\1\u03e0"+
    "\4\43\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\5\43\1\u03e1\11\43\34\0\14\43\1\u03e2\1\43\2\0"+
    "\7\43\1\0\3\43\2\0\17\43\34\0\16\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\117\2\0\5\117\1\u03e3"+
    "\11\117\34\0\6\117\1\u03e4\7\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\17\117\34\0\14\117\1\u03e5"+
    "\1\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\17\117\34\0\14\117\1\u03e6\1\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\17\117\34\0\16\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\117\2\0\6\117\1\u03e7"+
    "\10\117\34\0\16\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\1\117\1\u03e8\15\117\34\0\16\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\117\2\0\6\117\1\u03e9"+
    "\10\117\34\0\16\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\u03ea\2\0\17\117\34\0\6\117\1\u03eb\7\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\117\2\0\17\117\34\0"+
    "\16\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\11\117\1\u03ec\5\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\3\117\1\u03ed\13\117\34\0"+
    "\14\117\1\u03ee\1\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\17\117\34\0\10\117\1\u03ef\5\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\117\2\0\17\117\34\0"+
    "\16\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\1\117\1\u03f0\15\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\1\117\1\u03f1\15\117\34\0"+
    "\14\117\1\u03f2\1\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\17\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\6\117\1\u03f3\10\117\34\0"+
    "\16\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\6\117\1\u03f4\10\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\4\117\1\u03f5\12\117\34\0"+
    "\16\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\14\117\1\u03f6\2\117\34\0\10\117\1\u03f7\5\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\117\2\0\17\117\34\0"+
    "\16\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\6\117\1\u03f8\10\117\34\0\10\117\1\u03f9\5\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\117\2\0\17\117\34\0"+
    "\16\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\2\117\1\u03fa\14\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\14\117\1\u03fb\2\117\34\0"+
    "\16\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\5\117\1\u03fc\11\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\2\117\1\u03fd\14\117\34\0"+
    "\16\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\5\117\1\u03fe\11\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\4\117\1\u03ff\12\117\34\0"+
    "\16\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\16\117\1\u0400\34\0\16\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\6\117\1\u0401\10\117\34\0\16\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\12\117"+
    "\1\u0402\4\117\34\0\16\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\5\117\1\u0403\11\117\34\0\14\117"+
    "\1\u0404\1\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\17\117\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\5\141\1\u0405\11\141\34\0\6\141"+
    "\1\u0406\7\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\17\141\34\0\14\141\1\u0407\1\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\17\141\34\0\14\141"+
    "\1\u0408\1\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\17\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\6\141\1\u0409\10\141\34\0\16\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\1\141"+
    "\1\u040a\15\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\6\141\1\u040b\10\141\34\0\16\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\u040c\2\0\17\141"+
    "\34\0\6\141\1\u040d\7\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\17\141\34\0\16\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\11\141\1\u040e\5\141"+
    "\34\0\16\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\3\141\1\u040f\13\141\34\0\14\141\1\u0410\1\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\17\141"+
    "\34\0\10\141\1\u0411\5\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\17\141\34\0\16\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\1\141\1\u0412\15\141"+
    "\34\0\16\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\1\141\1\u0413\15\141\34\0\14\141\1\u0414\1\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\17\141"+
    "\34\0\16\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\6\141\1\u0415\10\141\34\0\16\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\6\141\1\u0416\10\141"+
    "\34\0\16\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\4\141\1\u0417\12\141\34\0\16\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\14\141\1\u0418\2\141"+
    "\34\0\10\141\1\u0419\5\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\17\141\34\0\16\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\6\141\1\u041a\10\141"+
    "\34\0\10\141\1\u041b\5\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\17\141\34\0\16\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\2\141\1\u041c\14\141"+
    "\34\0\16\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\14\141\1\u041d\2\141\34\0\16\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\5\141\1\u041e\11\141"+
    "\34\0\16\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\2\141\1\u041f\14\141\34\0\16\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\5\141\1\u0420\11\141"+
    "\34\0\16\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\4\141\1\u0421\12\141\34\0\16\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\16\141\1\u0422\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\6\141\1\u0423\10\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\12\141\1\u0424\4\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\5\141\1\u0425\11\141\34\0\14\141\1\u0426\1\141\2\0"+
    "\7\141\1\0\1\141\1\0\1\141\2\0\17\141\23\0"+
    "\2\162\2\u0163\1\u0264\35\162\1\0\2\162\1\0\42\162"+
    "\1\0\1\u0265\1\u0266\116\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\5\207\1\u0427\11\207\34\0"+
    "\6\207\1\u0428\7\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\14\207\1\u0429\1\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\17\207\34\0"+
    "\14\207\1\u042a\1\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\6\207\1\u042b\10\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\1\207\1\u042c\15\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\6\207\1\u042d\10\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\u042e\2\0"+
    "\17\207\34\0\6\207\1\u042f\7\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\17\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\11\207\1\u0430"+
    "\5\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\3\207\1\u0431\13\207\34\0\14\207\1\u0432"+
    "\1\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\17\207\34\0\10\207\1\u0433\5\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\17\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\1\207\1\u0434"+
    "\15\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\1\207\1\u0435\15\207\34\0\14\207\1\u0436"+
    "\1\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\17\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\6\207\1\u0437\10\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\6\207\1\u0438"+
    "\10\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\4\207\1\u0439\12\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\14\207\1\u043a"+
    "\2\207\34\0\10\207\1\u043b\5\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\17\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\6\207\1\u043c"+
    "\10\207\34\0\10\207\1\u043d\5\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\17\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\2\207\1\u043e"+
    "\14\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\14\207\1\u043f\2\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\5\207\1\u0440"+
    "\11\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\2\207\1\u0441\14\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\5\207\1\u0442"+
    "\11\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\4\207\1\u0443\12\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\16\207\1\u0444"+
    "\34\0\16\207\2\0\7\207\1\0\1\207\1\0\1\207"+
    "\2\0\6\207\1\u0445\10\207\34\0\16\207\2\0\7\207"+
    "\1\0\1\207\1\0\1\207\2\0\12\207\1\u0446\4\207"+
    "\34\0\16\207\2\0\7\207\1\0\1\207\1\0\1\207"+
    "\2\0\5\207\1\u0447\11\207\34\0\14\207\1\u0448\1\207"+
    "\2\0\7\207\1\0\1\207\1\0\1\207\2\0\17\207"+
    "\34\0\16\236\2\0\7\236\1\0\1\236\1\0\1\236"+
    "\2\0\5\236\1\u0449\11\236\34\0\6\236\1\u044a\7\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\17\236"+
    "\34\0\14\236\1\u044b\1\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\17\236\34\0\14\236\1\u044c\1\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\17\236"+
    "\34\0\16\236\2\0\7\236\1\0\1\236\1\0\1\236"+
    "\2\0\6\236\1\u044d\10\236\34\0\16\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\236\2\0\1\236\1\u044e\15\236"+
    "\34\0\16\236\2\0\7\236\1\0\1\236\1\0\1\236"+
    "\2\0\6\236\1\u044f\10\236\34\0\16\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\u0450\2\0\17\236\34\0\6\236"+
    "\1\u0451\7\236\2\0\7\236\1\0\1\236\1\0\1\236"+
    "\2\0\17\236\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\11\236\1\u0452\5\236\34\0\16\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\3\236"+
    "\1\u0453\13\236\34\0\14\236\1\u0454\1\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\236\2\0\17\236\34\0\10\236"+
    "\1\u0455\5\236\2\0\7\236\1\0\1\236\1\0\1\236"+
    "\2\0\17\236\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\1\236\1\u0456\15\236\34\0\16\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\1\236"+
    "\1\u0457\15\236\34\0\14\236\1\u0458\1\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\236\2\0\17\236\34\0\16\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\6\236"+
    "\1\u0459\10\236\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\6\236\1\u045a\10\236\34\0\16\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\4\236"+
    "\1\u045b\12\236\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\14\236\1\u045c\2\236\34\0\10\236"+
    "\1\u045d\5\236\2\0\7\236\1\0\1\236\1\0\1\236"+
    "\2\0\17\236\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\6\236\1\u045e\10\236\34\0\10\236"+
    "\1\u045f\5\236\2\0\7\236\1\0\1\236\1\0\1\236"+
    "\2\0\17\236\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\2\236\1\u0460\14\236\34\0\16\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\14\236"+
    "\1\u0461\2\236\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\5\236\1\u0462\11\236\34\0\16\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\2\236"+
    "\1\u0463\14\236\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\5\236\1\u0464\11\236\34\0\16\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\4\236"+
    "\1\u0465\12\236\34\0\16\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\16\236\1\u0466\34\0\16\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\6\236\1\u0467"+
    "\10\236\34\0\16\236\2\0\7\236\1\0\1\236\1\0"+
    "\1\236\2\0\12\236\1\u0468\4\236\34\0\16\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\5\236\1\u0469"+
    "\11\236\34\0\14\236\1\u046a\1\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\17\236\23\0\5\u02c5\1\u02c6"+
    "\1\u046b\101\u02c5\11\0\6\43\1\u046c\7\43\2\0\7\43"+
    "\1\0\3\43\2\0\17\43\34\0\16\43\2\0\7\43"+
    "\1\0\3\43\2\0\7\43\1\u046d\7\43\34\0\16\43"+
    "\2\0\7\43\1\0\3\43\2\0\5\43\1\u046e\11\43"+
    "\34\0\16\43\2\0\7\43\1\0\3\43\2\0\11\43"+
    "\1\u046f\5\43\34\0\4\43\1\u0470\11\43\2\0\7\43"+
    "\1\0\3\43\2\0\17\43\34\0\6\43\1\u0471\7\43"+
    "\2\0\7\43\1\0\3\43\2\0\17\43\34\0\14\43"+
    "\1\u0472\1\43\2\0\7\43\1\0\3\43\2\0\17\43"+
    "\34\0\12\43\1\u0473\3\43\2\0\7\43\1\0\3\43"+
    "\2\0\17\43\34\0\16\43\2\0\7\43\1\0\3\43"+
    "\2\0\1\43\1\u0474\15\43\23\0\2\354\2\u01e0\1\u02db"+
    "\37\354\1\u01df\43\354\1\0\1\u02dc\1\u02dd\105\0\4\u01e2"+
    "\1\u02de\37\u01e2\1\u0475\107\u01e2\1\u01df\43\u01e2\2\357\2\u01e4"+
    "\1\u02e0\35\357\1\0\2\357\1\u01e3\42\357\1\0\1\u02e1"+
    "\1\u02e2\105\0\4\u02e3\1\0\35\u02e3\1\0\2\u02e3\1\u0476"+
    "\46\u02e3\1\0\35\u02e3\1\0\2\u02e3\1\0\42\u02e3\11\0"+
    "\16\43\2\0\7\43\1\0\3\43\2\0\2\43\1\u0477"+
    "\14\43\34\0\2\43\1\u0478\13\43\2\0\7\43\1\0"+
    "\3\43\2\0\17\43\34\0\16\43\2\0\7\43\1\0"+
    "\3\43\2\0\5\43\1\u0479\11\43\34\0\16\43\2\0"+
    "\7\43\1\0\3\43\2\0\2\43\1\u047a\14\43\34\0"+
    "\16\43\2\0\7\43\1\0\3\43\2\0\1\43\1\u047b"+
    "\15\43\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\5\43\1\u047c\11\43\34\0\16\43\2\0\7\43\1\0"+
    "\3\43\2\0\11\43\1\u047d\5\43\34\0\16\43\2\0"+
    "\7\43\1\0\3\43\2\0\2\43\1\u047e\14\43\34\0"+
    "\16\43\2\0\7\43\1\0\3\43\2\0\5\43\1\u047f"+
    "\11\43\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\6\43\1\u0480\10\43\34\0\16\43\2\0\7\43\1\0"+
    "\3\43\2\0\14\43\1\u0481\2\43\34\0\10\43\1\u0482"+
    "\5\43\2\0\7\43\1\0\3\43\2\0\17\43\34\0"+
    "\16\43\2\0\7\43\1\0\3\43\2\0\4\43\1\u0483"+
    "\12\43\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\11\43\1\u0484\5\43\34\0\14\43\1\u0485\1\43\2\0"+
    "\7\43\1\0\3\43\2\0\17\43\34\0\10\43\1\u0486"+
    "\5\43\2\0\7\43\1\0\3\43\2\0\17\43\34\0"+
    "\6\117\1\u0487\7\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\17\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\7\117\1\u0488\7\117\34\0"+
    "\16\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\5\117\1\u0489\11\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\11\117\1\u048a\5\117\34\0"+
    "\4\117\1\u048b\11\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\17\117\34\0\6\117\1\u048c\7\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\117\2\0\17\117\34\0"+
    "\14\117\1\u048d\1\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\17\117\34\0\12\117\1\u048e\3\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\117\2\0\17\117\34\0"+
    "\16\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\1\117\1\u048f\15\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\2\117\1\u0490\14\117\34\0"+
    "\2\117\1\u0491\13\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\17\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\5\117\1\u0492\11\117\34\0"+
    "\16\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\2\117\1\u0493\14\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\1\117\1\u0494\15\117\34\0"+
    "\16\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\5\117\1\u0495\11\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\11\117\1\u0496\5\117\34\0"+
    "\16\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\2\117\1\u0497\14\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\5\117\1\u0498\11\117\34\0"+
    "\16\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\6\117\1\u0499\10\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\14\117\1\u049a\2\117\34\0"+
    "\10\117\1\u049b\5\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\17\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\4\117\1\u049c\12\117\34\0"+
    "\16\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\11\117\1\u049d\5\117\34\0\14\117\1\u049e\1\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\117\2\0\17\117\34\0"+
    "\10\117\1\u049f\5\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\17\117\34\0\6\141\1\u04a0\7\141\2\0"+
    "\7\141\1\0\1\141\1\0\1\141\2\0\17\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\7\141\1\u04a1\7\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\5\141\1\u04a2\11\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\11\141\1\u04a3\5\141\34\0\4\141\1\u04a4\11\141\2\0"+
    "\7\141\1\0\1\141\1\0\1\141\2\0\17\141\34\0"+
    "\6\141\1\u04a5\7\141\2\0\7\141\1\0\1\141\1\0"+
    "\1\141\2\0\17\141\34\0\14\141\1\u04a6\1\141\2\0"+
    "\7\141\1\0\1\141\1\0\1\141\2\0\17\141\34\0"+
    "\12\141\1\u04a7\3\141\2\0\7\141\1\0\1\141\1\0"+
    "\1\141\2\0\17\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\1\141\1\u04a8\15\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\2\141\1\u04a9\14\141\34\0\2\141\1\u04aa\13\141\2\0"+
    "\7\141\1\0\1\141\1\0\1\141\2\0\17\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\5\141\1\u04ab\11\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\2\141\1\u04ac\14\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\1\141\1\u04ad\15\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\5\141\1\u04ae\11\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\11\141\1\u04af\5\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\2\141\1\u04b0\14\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\5\141\1\u04b1\11\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\6\141\1\u04b2\10\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\14\141\1\u04b3\2\141\34\0\10\141\1\u04b4\5\141\2\0"+
    "\7\141\1\0\1\141\1\0\1\141\2\0\17\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\4\141\1\u04b5\12\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\11\141\1\u04b6\5\141\34\0"+
    "\14\141\1\u04b7\1\141\2\0\7\141\1\0\1\141\1\0"+
    "\1\141\2\0\17\141\34\0\10\141\1\u04b8\5\141\2\0"+
    "\7\141\1\0\1\141\1\0\1\141\2\0\17\141\34\0"+
    "\6\207\1\u04b9\7\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\7\207\1\u04ba\7\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\5\207\1\u04bb\11\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\11\207\1\u04bc\5\207\34\0"+
    "\4\207\1\u04bd\11\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\6\207\1\u04be\7\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\17\207\34\0"+
    "\14\207\1\u04bf\1\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\12\207\1\u04c0\3\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\17\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\1\207\1\u04c1\15\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\2\207\1\u04c2\14\207\34\0"+
    "\2\207\1\u04c3\13\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\5\207\1\u04c4\11\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\2\207\1\u04c5\14\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\1\207\1\u04c6\15\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\5\207\1\u04c7\11\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\11\207\1\u04c8\5\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\2\207\1\u04c9\14\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\5\207\1\u04ca\11\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\6\207\1\u04cb\10\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\14\207\1\u04cc\2\207\34\0"+
    "\10\207\1\u04cd\5\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\16\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\4\207\1\u04ce\12\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\11\207\1\u04cf\5\207\34\0\14\207\1\u04d0\1\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\17\207\34\0"+
    "\10\207\1\u04d1\5\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\6\236\1\u04d2\7\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\17\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\7\236\1\u04d3\7\236\34\0\16\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\5\236\1\u04d4\11\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\11\236\1\u04d5\5\236\34\0\4\236\1\u04d6\11\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\17\236\34\0"+
    "\6\236\1\u04d7\7\236\2\0\7\236\1\0\1\236\1\0"+
    "\1\236\2\0\17\236\34\0\14\236\1\u04d8\1\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\17\236\34\0"+
    "\12\236\1\u04d9\3\236\2\0\7\236\1\0\1\236\1\0"+
    "\1\236\2\0\17\236\34\0\16\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\1\236\1\u04da\15\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\2\236\1\u04db\14\236\34\0\2\236\1\u04dc\13\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\17\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\5\236\1\u04dd\11\236\34\0\16\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\2\236\1\u04de\14\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\1\236\1\u04df\15\236\34\0\16\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\5\236\1\u04e0\11\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\11\236\1\u04e1\5\236\34\0\16\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\2\236\1\u04e2\14\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\5\236\1\u04e3\11\236\34\0\16\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\6\236\1\u04e4\10\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\14\236\1\u04e5\2\236\34\0\10\236\1\u04e6\5\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\17\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\4\236\1\u04e7\12\236\34\0\16\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\11\236\1\u04e8\5\236\34\0"+
    "\14\236\1\u04e9\1\236\2\0\7\236\1\0\1\236\1\0"+
    "\1\236\2\0\17\236\34\0\10\236\1\u04ea\5\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\17\236\34\0"+
    "\16\43\2\0\7\43\1\0\3\43\2\0\13\43\1\u04eb"+
    "\3\43\34\0\14\43\1\u04ec\1\43\2\0\7\43\1\0"+
    "\3\43\2\0\17\43\34\0\16\43\2\0\7\43\1\0"+
    "\3\43\2\0\2\43\1\u04ed\14\43\34\0\16\43\2\0"+
    "\7\43\1\0\3\43\2\0\1\43\1\u04ee\15\43\34\0"+
    "\16\43\2\0\7\43\1\0\3\43\2\0\5\43\1\u04ef"+
    "\11\43\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\4\43\1\u04f0\12\43\34\0\16\43\2\0\7\43\1\0"+
    "\3\43\2\0\11\43\1\u04f1\5\43\23\0\44\u01e2\1\u04f2"+
    "\43\u01e2\4\u02e3\1\0\35\u02e3\1\0\2\u02e3\1\u01e3\42\u02e3"+
    "\11\0\14\43\1\u04f3\1\43\2\0\7\43\1\0\3\43"+
    "\2\0\17\43\34\0\14\43\1\u04f4\1\43\2\0\7\43"+
    "\1\0\3\43\2\0\17\43\34\0\16\43\2\0\7\43"+
    "\1\0\3\43\2\0\5\43\1\u04f5\11\43\34\0\16\43"+
    "\2\0\7\43\1\0\3\43\2\0\2\43\1\u04f6\14\43"+
    "\34\0\16\43\2\0\7\43\1\0\2\43\1\u04f7\2\0"+
    "\17\43\34\0\4\43\1\u04f8\11\43\2\0\7\43\1\0"+
    "\3\43\2\0\17\43\34\0\16\43\2\0\7\43\1\0"+
    "\3\43\2\0\10\43\1\u04f9\6\43\34\0\14\43\1\u04fa"+
    "\1\43\2\0\7\43\1\0\3\43\2\0\17\43\34\0"+
    "\6\43\1\u04fb\7\43\2\0\7\43\1\0\3\43\2\0"+
    "\17\43\34\0\16\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\13\117\1\u04fc\3\117\34\0\14\117\1\u04fd"+
    "\1\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\17\117\34\0\16\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\2\117\1\u04fe\14\117\34\0\16\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\117\2\0\1\117\1\u04ff"+
    "\15\117\34\0\16\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\5\117\1\u0500\11\117\34\0\16\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\117\2\0\4\117\1\u0501"+
    "\12\117\34\0\16\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\11\117\1\u0502\5\117\34\0\14\117\1\u0503"+
    "\1\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\17\117\34\0\14\117\1\u0504\1\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\17\117\34\0\16\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\117\2\0\5\117\1\u0505"+
    "\11\117\34\0\16\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\2\117\1\u0506\14\117\34\0\16\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\u0507\2\0\17\117\34\0"+
    "\4\117\1\u0508\11\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\17\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\10\117\1\u0509\6\117\34\0"+
    "\14\117\1\u050a\1\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\17\117\34\0\6\117\1\u050b\7\117\2\0"+
    "\7\117\1\0\1\117\1\0\1\117\2\0\17\117\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\13\141\1\u050c\3\141\34\0\14\141\1\u050d\1\141\2\0"+
    "\7\141\1\0\1\141\1\0\1\141\2\0\17\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\2\141\1\u050e\14\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\1\141\1\u050f\15\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\5\141\1\u0510\11\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\4\141\1\u0511\12\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\11\141\1\u0512\5\141\34\0\14\141\1\u0513\1\141\2\0"+
    "\7\141\1\0\1\141\1\0\1\141\2\0\17\141\34\0"+
    "\14\141\1\u0514\1\141\2\0\7\141\1\0\1\141\1\0"+
    "\1\141\2\0\17\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\5\141\1\u0515\11\141\34\0"+
    "\16\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\2\141\1\u0516\14\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\u0517\2\0\17\141\34\0\4\141\1\u0518"+
    "\11\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\17\141\34\0\16\141\2\0\7\141\1\0\1\141\1\0"+
    "\1\141\2\0\10\141\1\u0519\6\141\34\0\14\141\1\u051a"+
    "\1\141\2\0\7\141\1\0\1\141\1\0\1\141\2\0"+
    "\17\141\34\0\6\141\1\u051b\7\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\17\141\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\13\207\1\u051c"+
    "\3\207\34\0\14\207\1\u051d\1\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\17\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\2\207\1\u051e"+
    "\14\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\1\207\1\u051f\15\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\5\207\1\u0520"+
    "\11\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\4\207\1\u0521\12\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\11\207\1\u0522"+
    "\5\207\34\0\14\207\1\u0523\1\207\2\0\7\207\1\0"+
    "\1\207\1\0\1\207\2\0\17\207\34\0\14\207\1\u0524"+
    "\1\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\17\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\5\207\1\u0525\11\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\2\207\1\u0526"+
    "\14\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\u0527\2\0\17\207\34\0\4\207\1\u0528\11\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\17\207\34\0"+
    "\16\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\10\207\1\u0529\6\207\34\0\14\207\1\u052a\1\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\17\207\34\0"+
    "\6\207\1\u052b\7\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\17\207\34\0\16\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\13\236\1\u052c\3\236\34\0"+
    "\14\236\1\u052d\1\236\2\0\7\236\1\0\1\236\1\0"+
    "\1\236\2\0\17\236\34\0\16\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\2\236\1\u052e\14\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\1\236\1\u052f\15\236\34\0\16\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\5\236\1\u0530\11\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\4\236\1\u0531\12\236\34\0\16\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\11\236\1\u0532\5\236\34\0"+
    "\14\236\1\u0533\1\236\2\0\7\236\1\0\1\236\1\0"+
    "\1\236\2\0\17\236\34\0\14\236\1\u0534\1\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\17\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\5\236\1\u0535\11\236\34\0\16\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\2\236\1\u0536\14\236\34\0"+
    "\16\236\2\0\7\236\1\0\1\236\1\0\1\u0537\2\0"+
    "\17\236\34\0\4\236\1\u0538\11\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\17\236\34\0\16\236\2\0"+
    "\7\236\1\0\1\236\1\0\1\236\2\0\10\236\1\u0539"+
    "\6\236\34\0\14\236\1\u053a\1\236\2\0\7\236\1\0"+
    "\1\236\1\0\1\236\2\0\17\236\34\0\6\236\1\u053b"+
    "\7\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\17\236\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\11\43\1\u053c\5\43\34\0\14\43\1\u053d\1\43\2\0"+
    "\7\43\1\0\3\43\2\0\17\43\34\0\16\43\2\0"+
    "\7\43\1\0\3\43\2\0\2\43\1\u053e\14\43\34\0"+
    "\14\43\1\u053f\1\43\2\0\7\43\1\0\3\43\2\0"+
    "\17\43\34\0\16\43\2\0\7\43\1\0\3\43\2\0"+
    "\5\43\1\u0540\11\43\34\0\14\43\1\u0541\1\43\2\0"+
    "\7\43\1\0\3\43\2\0\17\43\34\0\16\43\2\0"+
    "\7\43\1\0\3\43\2\0\1\u0542\16\43\34\0\16\43"+
    "\2\0\7\43\1\0\3\43\2\0\11\43\1\u0543\5\43"+
    "\34\0\16\43\2\0\7\43\1\0\3\43\2\0\11\43"+
    "\1\u0544\5\43\34\0\14\43\1\u0545\1\43\2\0\7\43"+
    "\1\0\3\43\2\0\17\43\34\0\16\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\11\117\1\u0546\5\117"+
    "\34\0\14\117\1\u0547\1\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\17\117\34\0\16\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\2\117\1\u0548\14\117"+
    "\34\0\14\117\1\u0549\1\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\17\117\34\0\16\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\5\117\1\u054a\11\117"+
    "\34\0\14\117\1\u054b\1\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\17\117\34\0\16\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\1\u054c\16\117\34\0"+
    "\16\117\2\0\7\117\1\0\1\117\1\0\1\117\2\0"+
    "\11\117\1\u054d\5\117\34\0\16\117\2\0\7\117\1\0"+
    "\1\117\1\0\1\117\2\0\11\117\1\u054e\5\117\34\0"+
    "\14\117\1\u054f\1\117\2\0\7\117\1\0\1\117\1\0"+
    "\1\117\2\0\17\117\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\11\141\1\u0550\5\141\34\0"+
    "\14\141\1\u0551\1\141\2\0\7\141\1\0\1\141\1\0"+
    "\1\141\2\0\17\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\2\141\1\u0552\14\141\34\0"+
    "\14\141\1\u0553\1\141\2\0\7\141\1\0\1\141\1\0"+
    "\1\141\2\0\17\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\5\141\1\u0554\11\141\34\0"+
    "\14\141\1\u0555\1\141\2\0\7\141\1\0\1\141\1\0"+
    "\1\141\2\0\17\141\34\0\16\141\2\0\7\141\1\0"+
    "\1\141\1\0\1\141\2\0\1\u0556\16\141\34\0\16\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\11\141"+
    "\1\u0557\5\141\34\0\16\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\11\141\1\u0558\5\141\34\0\14\141"+
    "\1\u0559\1\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\17\141\34\0\16\207\2\0\7\207\1\0\1\207"+
    "\1\0\1\207\2\0\11\207\1\u055a\5\207\34\0\14\207"+
    "\1\u055b\1\207\2\0\7\207\1\0\1\207\1\0\1\207"+
    "\2\0\17\207\34\0\16\207\2\0\7\207\1\0\1\207"+
    "\1\0\1\207\2\0\2\207\1\u055c\14\207\34\0\14\207"+
    "\1\u055d\1\207\2\0\7\207\1\0\1\207\1\0\1\207"+
    "\2\0\17\207\34\0\16\207\2\0\7\207\1\0\1\207"+
    "\1\0\1\207\2\0\5\207\1\u055e\11\207\34\0\14\207"+
    "\1\u055f\1\207\2\0\7\207\1\0\1\207\1\0\1\207"+
    "\2\0\17\207\34\0\16\207\2\0\7\207\1\0\1\207"+
    "\1\0\1\207\2\0\1\u0560\16\207\34\0\16\207\2\0"+
    "\7\207\1\0\1\207\1\0\1\207\2\0\11\207\1\u0561"+
    "\5\207\34\0\16\207\2\0\7\207\1\0\1\207\1\0"+
    "\1\207\2\0\11\207\1\u0562\5\207\34\0\14\207\1\u0563"+
    "\1\207\2\0\7\207\1\0\1\207\1\0\1\207\2\0"+
    "\17\207\34\0\16\236\2\0\7\236\1\0\1\236\1\0"+
    "\1\236\2\0\11\236\1\u0564\5\236\34\0\14\236\1\u0565"+
    "\1\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\17\236\34\0\16\236\2\0\7\236\1\0\1\236\1\0"+
    "\1\236\2\0\2\236\1\u0566\14\236\34\0\14\236\1\u0567"+
    "\1\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\17\236\34\0\16\236\2\0\7\236\1\0\1\236\1\0"+
    "\1\236\2\0\5\236\1\u0568\11\236\34\0\14\236\1\u0569"+
    "\1\236\2\0\7\236\1\0\1\236\1\0\1\236\2\0"+
    "\17\236\34\0\16\236\2\0\7\236\1\0\1\236\1\0"+
    "\1\236\2\0\1\u056a\16\236\34\0\16\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\236\2\0\11\236\1\u056b\5\236"+
    "\34\0\16\236\2\0\7\236\1\0\1\236\1\0\1\236"+
    "\2\0\11\236\1\u056c\5\236\34\0\14\236\1\u056d\1\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\17\236"+
    "\34\0\16\43\2\0\7\43\1\0\3\43\2\0\5\43"+
    "\1\u056e\11\43\34\0\16\43\2\0\7\43\1\0\3\43"+
    "\2\0\10\43\1\u056f\6\43\34\0\14\43\1\u0570\1\43"+
    "\2\0\7\43\1\0\3\43\2\0\17\43\34\0\12\43"+
    "\1\u0571\3\43\2\0\7\43\1\0\3\43\2\0\17\43"+
    "\34\0\10\43\1\u0572\5\43\2\0\7\43\1\0\3\43"+
    "\2\0\17\43\34\0\16\43\2\0\7\43\1\0\3\43"+
    "\2\0\5\43\1\u0573\11\43\34\0\16\117\2\0\7\117"+
    "\1\0\1\117\1\0\1\117\2\0\5\117\1\u0574\11\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\10\117\1\u0575\6\117\34\0\14\117\1\u0576\1\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\17\117"+
    "\34\0\12\117\1\u0577\3\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\17\117\34\0\10\117\1\u0578\5\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\17\117"+
    "\34\0\16\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\5\117\1\u0579\11\117\34\0\16\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\5\141\1\u057a\11\141"+
    "\34\0\16\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\10\141\1\u057b\6\141\34\0\14\141\1\u057c\1\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\17\141"+
    "\34\0\12\141\1\u057d\3\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\17\141\34\0\10\141\1\u057e\5\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\17\141"+
    "\34\0\16\141\2\0\7\141\1\0\1\141\1\0\1\141"+
    "\2\0\5\141\1\u057f\11\141\34\0\16\207\2\0\7\207"+
    "\1\0\1\207\1\0\1\207\2\0\5\207\1\u0580\11\207"+
    "\34\0\16\207\2\0\7\207\1\0\1\207\1\0\1\207"+
    "\2\0\10\207\1\u0581\6\207\34\0\14\207\1\u0582\1\207"+
    "\2\0\7\207\1\0\1\207\1\0\1\207\2\0\17\207"+
    "\34\0\12\207\1\u0583\3\207\2\0\7\207\1\0\1\207"+
    "\1\0\1\207\2\0\17\207\34\0\10\207\1\u0584\5\207"+
    "\2\0\7\207\1\0\1\207\1\0\1\207\2\0\17\207"+
    "\34\0\16\207\2\0\7\207\1\0\1\207\1\0\1\207"+
    "\2\0\5\207\1\u0585\11\207\34\0\16\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\236\2\0\5\236\1\u0586\11\236"+
    "\34\0\16\236\2\0\7\236\1\0\1\236\1\0\1\236"+
    "\2\0\10\236\1\u0587\6\236\34\0\14\236\1\u0588\1\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\17\236"+
    "\34\0\12\236\1\u0589\3\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\17\236\34\0\10\236\1\u058a\5\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\17\236"+
    "\34\0\16\236\2\0\7\236\1\0\1\236\1\0\1\236"+
    "\2\0\5\236\1\u058b\11\236\34\0\16\43\2\0\7\43"+
    "\1\0\3\43\2\0\4\43\1\u058c\12\43\34\0\4\43"+
    "\1\u058d\11\43\2\0\7\43\1\0\3\43\2\0\17\43"+
    "\34\0\16\43\2\0\7\43\1\0\3\43\2\0\15\43"+
    "\1\u058e\1\43\34\0\16\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\4\117\1\u058f\12\117\34\0\4\117"+
    "\1\u0590\11\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\17\117\34\0\16\117\2\0\7\117\1\0\1\117"+
    "\1\0\1\117\2\0\15\117\1\u0591\1\117\34\0\16\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\4\141"+
    "\1\u0592\12\141\34\0\4\141\1\u0593\11\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\17\141\34\0\16\141"+
    "\2\0\7\141\1\0\1\141\1\0\1\141\2\0\15\141"+
    "\1\u0594\1\141\34\0\16\207\2\0\7\207\1\0\1\207"+
    "\1\0\1\207\2\0\4\207\1\u0595\12\207\34\0\4\207"+
    "\1\u0596\11\207\2\0\7\207\1\0\1\207\1\0\1\207"+
    "\2\0\17\207\34\0\16\207\2\0\7\207\1\0\1\207"+
    "\1\0\1\207\2\0\15\207\1\u0597\1\207\34\0\16\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\4\236"+
    "\1\u0598\12\236\34\0\4\236\1\u0599\11\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\236\2\0\17\236\34\0\16\236"+
    "\2\0\7\236\1\0\1\236\1\0\1\236\2\0\15\236"+
    "\1\u059a\1\236\34\0\14\43\1\u059b\1\43\2\0\7\43"+
    "\1\0\3\43\2\0\17\43\34\0\14\117\1\u059c\1\117"+
    "\2\0\7\117\1\0\1\117\1\0\1\117\2\0\17\117"+
    "\34\0\14\141\1\u059d\1\141\2\0\7\141\1\0\1\141"+
    "\1\0\1\141\2\0\17\141\34\0\14\207\1\u059e\1\207"+
    "\2\0\7\207\1\0\1\207\1\0\1\207\2\0\17\207"+
    "\34\0\14\236\1\u059f\1\236\2\0\7\236\1\0\1\236"+
    "\1\0\1\236\2\0\17\236\34\0\12\43\1\u05a0\3\43"+
    "\2\0\7\43\1\0\3\43\2\0\17\43\34\0\12\117"+
    "\1\u05a1\3\117\2\0\7\117\1\0\1\117\1\0\1\117"+
    "\2\0\17\117\34\0\12\141\1\u05a2\3\141\2\0\7\141"+
    "\1\0\1\141\1\0\1\141\2\0\17\141\34\0\12\207"+
    "\1\u05a3\3\207\2\0\7\207\1\0\1\207\1\0\1\207"+
    "\2\0\17\207\34\0\12\236\1\u05a4\3\236\2\0\7\236"+
    "\1\0\1\236\1\0\1\236\2\0\17\236\23\0";

  private static int [] zzUnpackTrans() {
    int [] result = new int[80136];
    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;
  private static final int YYEOF = -1;
  private static java.io.Reader zzReader = null; // Fake

  /* 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 aState
   */
  private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();

  private static final String ZZ_ATTRIBUTE_PACKED_0 =
    "\31\0\1\1\1\11\1\1\1\11\35\1\2\11\2\1"+
    "\6\11\2\1\1\11\4\1\3\11\20\1\2\11\20\1"+
    "\1\11\3\1\2\11\2\1\1\11\3\1\1\11\1\1"+
    "\4\11\3\1\1\11\20\1\1\11\2\1\1\11\2\1"+
    "\1\11\20\1\1\11\3\1\1\11\1\1\1\11\3\1"+
    "\1\11\1\1\1\11\2\1\4\0\3\1\1\11\1\1"+
    "\2\11\2\1\5\11\3\0\15\1\5\11\2\0\4\1"+
    "\2\11\1\1\1\0\1\1\2\0\27\1\2\11\1\1"+
    "\1\11\1\1\1\0\1\11\1\0\6\11\114\1\1\0"+
    "\6\1\1\0\1\1\1\11\46\1\1\0\1\11\47\1"+
    "\2\0\2\11\2\1\3\0\2\1\2\11\1\1\1\0"+
    "\23\1\3\11\3\1\1\11\2\0\36\1\5\11\1\0"+
    "\133\1\2\0\1\1\1\11\132\1\1\11\2\1\2\11"+
    "\1\0\15\1\2\0\3\1\3\0\1\1\7\0\34\1"+
    "\1\11\131\1\1\0\1\11\130\1\1\11\1\0\16\1"+
    "\1\0\1\1\5\0\236\1\1\0\11\1\2\0\u012e\1";

  private static int [] zzUnpackAttribute() {
    int [] result = new int[1444];
    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 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 = "";

  /** this buffer may contains the current text array to be matched when it is cheap to acquire it */
  private char[] zzBufferArray;

  /** the textposition at the last accepting state */
  private int zzMarkedPos;

  /** the textposition at the last state to be included in yytext */
  private int zzPushbackPos;

  /** 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;

  /** For the backwards DFA of general lookahead statements */
  private boolean [] zzFin = new boolean [ZZ_BUFFERSIZE+1];

  /** denotes if the user-EOF-code has already been executed */
  private boolean zzEOFDone;

  /* user code: */

  private Stack  gStringStack = new Stack();
  private Stack  blockStack = new Stack();

  private int afterComment = YYINITIAL;

  private void clearStacks(){
    gStringStack.clear();
    blockStack.clear();
  }

  private Stack braceCount = new Stack ();



  public _GroovyLexer(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 _GroovyLexer(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 < 1650) {
      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){
    clearStacks();
    braceCount.clear();
    afterComment = YYINITIAL;

    zzBuffer = buffer;
    zzBufferArray = com.intellij.util.text.CharArrayUtil.fromSequenceWithoutCopying(buffer);
    zzCurrentPos = zzMarkedPos = zzStartRead = start;
    zzPushbackPos = 0;
    zzAtEOF  = false;
    zzAtBOL = true;
    zzEndRead = end;
    java.util.Arrays.fill(zzFin, false);
    
    yybegin(initialState);
  }

  /**
   * Refills the input buffer.
   *
   * @return      false, 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 pos 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 zzBufferArray != null ? zzBufferArray[zzStartRead+pos]: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;
  }


  /**
   * Contains user EOF-code, which will be executed exactly once,
   * when the end of file is reached
   */
  private void zzDoEOF() {
    if (!zzEOFDone) {
      zzEOFDone = true;
    
    }
  }


  /**
   * 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;
    char[] zzBufferArrayL = zzBufferArray;
    char [] zzCMapL = ZZ_CMAP;

    int [] zzTransL = ZZ_TRANS;
    int [] zzRowMapL = ZZ_ROWMAP;
    int [] zzAttrL = ZZ_ATTRIBUTE;

    while (true) {
      zzMarkedPosL = zzMarkedPos;

      zzAction = -1;

      zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;

      zzState = ZZ_LEXSTATE[zzLexicalState];


      zzForAction: {
        while (true) {

          if (zzCurrentPosL < zzEndReadL)
            zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(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 = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(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 106: 
          { yybegin(IN_DOLLAR_SLASH_REGEX);
                                             gStringStack.push(GroovyTokenTypes.mDOLLAR);
                                             return GroovyTokenTypes.mDOLLAR_SLASH_REGEX_BEGIN;
          }
        case 175: break;
        case 165: 
          { return ( GroovyTokenTypes.kABSTRACT );
          }
        case 176: break;
        case 117: 
          { return ( GroovyTokenTypes.kDEF );
          }
        case 177: break;
        case 118: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mTRIPLE_DOT);
          }
        case 178: break;
        case 83: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mPLUS_ASSIGN);
          }
        case 179: break;
        case 50: 
          { afterComment = YYINITIAL;
                                           return (TokenType.WHITE_SPACE);
          }
        case 180: break;
        case 166: 
          { return ( GroovyTokenTypes.kCONTINUE );
          }
        case 181: break;
        case 88: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mMEMBER_POINTER);
          }
        case 182: break;
        case 14: 
          { yybegin(NLS_AFTER_LBRACE);
                                             braceCount.push(GroovyTokenTypes.mLCURLY);
                                             return (GroovyTokenTypes.mLCURLY);
          }
        case 183: break;
        case 24: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mLT);
          }
        case 184: break;
        case 5: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mSTAR);
          }
        case 185: break;
        case 84: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mDEC);
          }
        case 186: break;
        case 75: 
          { return GroovyTokenTypes.mNUM_BIG_INT;
          }
        case 187: break;
        case 17: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mASSIGN);
          }
        case 188: break;
        case 125: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mSL_ASSIGN);
          }
        case 189: break;
        case 37: 
          { yybegin(IN_TRIPLE_DOT);
                                             return GroovyTokenTypes.mIDENT;
          }
        case 190: break;
        case 167: 
          { return ( GroovyTokenTypes.kSTRICTFP );
          }
        case 191: break;
        case 142: 
          { return ( GroovyTokenTypes.kBREAK );
          }
        case 192: break;
        case 81: 
          { return ( GroovyTokenTypes.kDO );
          }
        case 193: break;
        case 49: 
          { yypushback(1);
                                             if (blockStack.isEmpty()){
                                               yybegin(YYINITIAL);
                                             } else {
                                               yybegin(IN_INNER_BLOCK);
                                             }
          }
        case 194: break;
        case 151: 
          { return ( GroovyTokenTypes.kDOUBLE );
          }
        case 195: break;
        case 42: 
          { if (!gStringStack.isEmpty()) {
                                               gStringStack.pop();
                                             }
                                             if (blockStack.isEmpty()){
                                               yybegin(YYINITIAL);
                                             } else {
                                               yybegin(IN_INNER_BLOCK);
                                             }
                                             return GroovyTokenTypes.mGSTRING_END;
          }
        case 196: break;
        case 4: 
          { if (zzStartRead == 0 ||
                                               zzBuffer.subSequence(0, zzStartRead).toString().trim().length() == 0) {
                                               yypushback(1);
                                               yybegin(WAIT_FOR_REGEX);
                                             } else {
                                               return(GroovyTokenTypes.mDIV);
                                             }
          }
        case 197: break;
        case 141: 
          { return ( GroovyTokenTypes.kFALSE );
          }
        case 198: break;
        case 146: 
          { return ( GroovyTokenTypes.kSHORT );
          }
        case 199: break;
        case 128: 
          { return ( GroovyTokenTypes.kLONG );
          }
        case 200: break;
        case 93: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mELVIS);
          }
        case 201: break;
        case 158: 
          { return ( GroovyTokenTypes.kNATIVE );
          }
        case 202: break;
        case 29: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mBOR);
          }
        case 203: break;
        case 124: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mCOMPARE_TO);
          }
        case 204: break;
        case 143: 
          { return ( GroovyTokenTypes.kCLASS );
          }
        case 205: break;
        case 150: 
          { return ( GroovyTokenTypes.kIMPORT );
          }
        case 206: break;
        case 27: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mMOD);
          }
        case 207: break;
        case 78: 
          { return GroovyTokenTypes.mNUM_DOUBLE;
          }
        case 208: break;
        case 135: 
          { return ( GroovyTokenTypes.kTHIS );
          }
        case 209: break;
        case 168: 
          { return ( GroovyTokenTypes.kVOLATILE );
          }
        case 210: break;
        case 161: 
          { return ( GroovyTokenTypes.kEXTENDS );
          }
        case 211: break;
        case 147: 
          { return ( GroovyTokenTypes.kTRAIT );
          }
        case 212: break;
        case 87: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mRANGE_INCLUSIVE);
          }
        case 213: break;
        case 159: 
          { return ( GroovyTokenTypes.kFINALLY );
          }
        case 214: break;
        case 152: 
          { return ( GroovyTokenTypes.kPUBLIC );
          }
        case 215: break;
        case 21: 
          { if (!braceCount.isEmpty() && GroovyTokenTypes.mLPAREN == braceCount.peek()) {
                                               braceCount.pop();
                                             }
                                             return (GroovyTokenTypes.mRBRACK);
          }
        case 216: break;
        case 149: 
          { return ( GroovyTokenTypes.kWHILE );
          }
        case 217: break;
        case 54: 
          { blockStack.push(GroovyTokenTypes.mDIV);
                                             braceCount.push(GroovyTokenTypes.mLCURLY);
                                             yybegin(NLS_AFTER_LBRACE);
                                             return GroovyTokenTypes.mLCURLY;
          }
        case 218: break;
        case 65: 
          { yypushback(1);
                                              yybegin(WAIT_FOR_REGEX);
          }
        case 219: break;
        case 122: 
          { return ( GroovyTokenTypes.kNEW );
          }
        case 220: break;
        case 38: 
          { blockStack.push(GroovyTokenTypes.mLBRACK);
                                             braceCount.push(GroovyTokenTypes.mLCURLY);
                                             yybegin(NLS_AFTER_LBRACE);
                                             return GroovyTokenTypes.mLCURLY;
          }
        case 221: break;
        case 136: 
          { return ( GroovyTokenTypes.kNULL );
          }
        case 222: break;
        case 69: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mDIV_ASSIGN);
          }
        case 223: break;
        case 115: 
          { return ( GroovyTokenTypes.kFOR );
          }
        case 224: break;
        case 102: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mBAND_ASSIGN);
          }
        case 225: break;
        case 163: 
          { return ( GroovyTokenTypes.kPACKAGE );
          }
        case 226: break;
        case 101: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mLOR);
          }
        case 227: break;
        case 174: 
          { return ( GroovyTokenTypes.kSYNCHRONIZED );
          }
        case 228: break;
        case 105: 
          // lookahead expression with fixed base length
          zzMarkedPos = zzStartRead + 1;
          { yybegin(IN_TRIPLE_NLS);
                                             return GroovyTokenTypes.mDOT;
          }
        case 229: break;
        case 134: 
          { return ( GroovyTokenTypes.kTRUE );
          }
        case 230: break;
        case 9: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mPLUS);
          }
        case 231: break;
        case 90: 
          { return GroovyTokenTypes.mGSTRING_LITERAL;
          }
        case 232: break;
        case 104: 
          // lookahead expression with fixed base length
          zzMarkedPos = zzStartRead + 1;
          { yybegin(IN_SINGLE_IDENT);
                                             return GroovyTokenTypes.mDOT;
          }
        case 233: break;
        case 145: 
          { return ( GroovyTokenTypes.kSUPER );
          }
        case 234: break;
        case 58: 
          { yypushback(1);
                                           yybegin(IN_DOLLAR_SLASH_REGEX);
          }
        case 235: break;
        case 26: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mBNOT);
          }
        case 236: break;
        case 130: 
          { return ( GroovyTokenTypes.kENUM );
          }
        case 237: break;
        case 41: 
          { yybegin(IN_SINGLE_GSTRING_DOLLAR);
                                             return GroovyTokenTypes.mDOLLAR;
          }
        case 238: break;
        case 144: 
          { return ( GroovyTokenTypes.kCATCH );
          }
        case 239: break;
        case 173: 
          { return ( GroovyTokenTypes.kINSTANCEOF );
          }
        case 240: break;
        case 51: 
          { yybegin(IN_REGEX);
                                             gStringStack.push(GroovyTokenTypes.mDIV);
                                             return GroovyTokenTypes.mREGEX_BEGIN;
          }
        case 241: break;
        case 89: 
          { if (zzStartRead == 0 ||
                                               zzBuffer.subSequence(0, zzStartRead).toString().trim().length() == 0) {
                                               yypushback(2);
                                               yybegin(WAIT_FOR_REGEX);
                                             } else {
                                               yypushback(1);
                                               return (GroovyTokenTypes.mDOLLAR);
                                             }
          }
        case 242: break;
        case 72: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mSTAR_ASSIGN);
          }
        case 243: break;
        case 40: 
          { clearStacks();
                                             yybegin(NLS_AFTER_NLS);
                                             afterComment = YYINITIAL;
                                             return GroovyTokenTypes.mNLS;
          }
        case 244: break;
        case 71: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mSPREAD_DOT);
          }
        case 245: break;
        case 23: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mCOMMA);
          }
        case 246: break;
        case 31: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mSEMI);
          }
        case 247: break;
        case 111: 
          // lookahead expression with fixed base length
          zzMarkedPos = zzStartRead + 1;
          { yybegin(IN_DOLLAR_SLASH_REGEX_IDENT);
                                             return GroovyTokenTypes.mDOT;
          }
        case 248: break;
        case 80: 
          { return ( GroovyTokenTypes.kIN );
          }
        case 249: break;
        case 113: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mSTAR_STAR_ASSIGN);
          }
        case 250: break;
        case 120: 
          { yybegin(IN_TRIPLE_GSTRING);
                                                              gStringStack.push(GroovyTokenTypes.mLBRACK);
                                                              return GroovyTokenTypes.mGSTRING_BEGIN;
          }
        case 251: break;
        case 3: 
          { return TokenType.WHITE_SPACE;
          }
        case 252: break;
        case 155: 
          { return ( GroovyTokenTypes.kSWITCH );
          }
        case 253: break;
        case 68: 
          { return GroovyTokenTypes.mML_COMMENT;
          }
        case 254: break;
        case 33: 
          { yypushback(1);
                                             yybegin(IN_SINGLE_GSTRING);
          }
        case 255: break;
        case 70: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mSTAR_STAR);
          }
        case 256: break;
        case 1: 
          { return GroovyTokenTypes.mWRONG;
          }
        case 257: break;
        case 52: 
          { yypushback(1);
                                             yybegin(IN_REGEX);
          }
        case 258: break;
        case 170: 
          { return ( GroovyTokenTypes.kPROTECTED );
          }
        case 259: break;
        case 64: 
          { yypushback(1);
                                              yybegin(afterComment);
          }
        case 260: break;
        case 156: 
          { return ( GroovyTokenTypes.kTHROWS );
          }
        case 261: break;
        case 94: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mEQUAL);
          }
        case 262: break;
        case 103: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mLAND);
          }
        case 263: break;
        case 98: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mMOD_ASSIGN);
          }
        case 264: break;
        case 22: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mCOLON);
          }
        case 265: break;
        case 28: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mBXOR);
          }
        case 266: break;
        case 36: 
          { yypushback(1);
                                             yybegin(IN_TRIPLE_GSTRING);
          }
        case 267: break;
        case 95: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mREGEX_FIND);
          }
        case 268: break;
        case 34: 
          { yybegin(IN_SINGLE_DOT);
                                             return GroovyTokenTypes.mIDENT;
          }
        case 269: break;
        case 20: 
          { yybegin(WAIT_FOR_REGEX);
                                             braceCount.push(GroovyTokenTypes.mLPAREN);
                                             return (GroovyTokenTypes.mLBRACK);
          }
        case 270: break;
        case 11: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mDOT);
          }
        case 271: break;
        case 160: 
          { return ( GroovyTokenTypes.kDEFAULT );
          }
        case 272: break;
        case 100: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mBOR_ASSIGN);
          }
        case 273: break;
        case 108: 
          // lookahead expression with fixed base length
          zzMarkedPos = zzStartRead + 1;
          { yybegin(IN_REGEX_IDENT);
                                             return GroovyTokenTypes.mDOT;
          }
        case 274: break;
        case 121: 
          { return ( GroovyTokenTypes.kTRY );
          }
        case 275: break;
        case 97: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mGE);
          }
        case 276: break;
        case 82: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mINC);
          }
        case 277: break;
        case 73: 
          { return GroovyTokenTypes.mSH_COMMENT;
          }
        case 278: break;
        case 133: 
          { return ( GroovyTokenTypes.kCHAR );
          }
        case 279: break;
        case 74: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mNOT_EQUAL);
          }
        case 280: break;
        case 56: 
          { if (!gStringStack.isEmpty()) {
                                               gStringStack.pop();
                                             }
                                             if (blockStack.isEmpty()){
                                               yybegin(YYINITIAL);
                                             } else {
                                               yybegin(IN_INNER_BLOCK);
                                             }
                                             return GroovyTokenTypes.mREGEX_END;
          }
        case 281: break;
        case 19: 
          { if (!braceCount.isEmpty() && GroovyTokenTypes.mLPAREN == braceCount.peek()) {
                                               braceCount.pop();
                                             }
                                             return (GroovyTokenTypes.mRPAREN);
          }
        case 282: break;
        case 7: 
          { return GroovyTokenTypes.mIDENT;
          }
        case 283: break;
        case 48: 
          { if (!blockStack.isEmpty()) {
                                               IElementType br = blockStack.pop();
                                               if (br.equals(GroovyTokenTypes.mLPAREN)) yybegin(IN_SINGLE_GSTRING);
                                               if (br.equals(GroovyTokenTypes.mLBRACK)) yybegin(IN_TRIPLE_GSTRING);
                                               if (br.equals(GroovyTokenTypes.mDIV)) yybegin(IN_REGEX);
                                               if (br.equals(GroovyTokenTypes.mDOLLAR)) yybegin(IN_DOLLAR_SLASH_REGEX);
                                             }
                                             while (!braceCount.isEmpty() && GroovyTokenTypes.mLCURLY != braceCount.peek()) {
                                               braceCount.pop();
                                             }
                                             if (!braceCount.isEmpty() && GroovyTokenTypes.mLCURLY == braceCount.peek()) {
                                               braceCount.pop();
                                             }
                                             return GroovyTokenTypes.mRCURLY;
          }
        case 284: break;
        case 12: 
          { return GroovyTokenTypes.mSTRING_LITERAL;
          }
        case 285: break;
        case 32: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mAT);
          }
        case 286: break;
        case 43: 
          // general lookahead, find correct zzMarkedPos
          { int zzFState = 24;
            int zzFPos = zzStartRead;
            if (zzFin.length <= (zzBufferArrayL != null ? zzBufferArrayL.length : zzBufferL.length())) { zzFin = new boolean[(zzBufferArrayL != null ? zzBufferArrayL.length : zzBufferL.length())+1]; }
            boolean zzFinL[] = zzFin;
            while (zzFState != -1 && zzFPos < zzMarkedPos) {
              if ((zzAttrL[zzFState] & 1) == 1) { zzFinL[zzFPos] = true; } 
              zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzFPos++] : zzBufferL.charAt(zzFPos++));
              zzFState = zzTransL[ zzRowMapL[zzFState] + zzCMapL[zzInput] ];
            }
            if (zzFState != -1 && (zzAttrL[zzFState] & 1) == 1) { zzFinL[zzFPos] = true; } 

            zzFState = 25;
            zzFPos = zzMarkedPos;
            while (!zzFinL[zzFPos] || (zzAttrL[zzFState] & 1) != 1) {
              zzInput = (zzBufferArrayL != null ? zzBufferArrayL[--zzFPos] : zzBufferL.charAt(--zzFPos));
              zzFState = zzTransL[ zzRowMapL[zzFState] + zzCMapL[zzInput] ];
            };
            zzMarkedPos = zzFPos;
          }
          { return GroovyTokenTypes.mGSTRING_CONTENT;
          }
        case 287: break;
        case 39: 
          { return GroovyTokenTypes.mGSTRING_CONTENT;
          }
        case 288: break;
        case 92: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mOPTIONAL_DOT);
          }
        case 289: break;
        case 172: 
          { return ( GroovyTokenTypes.kIMPLEMENTS );
          }
        case 290: break;
        case 55: 
          { return GroovyTokenTypes.mREGEX_CONTENT;
          }
        case 291: break;
        case 107: 
          // lookahead expression with fixed lookahead length
          yypushback(1);
          { return GroovyTokenTypes.mREGEX_CONTENT;
          }
        case 292: break;
        case 45: 
          { yypushback(1);
                                             yybegin(IN_TRIPLE_IDENT);
          }
        case 293: break;
        case 96: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mLE);
          }
        case 294: break;
        case 123: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mREGEX_MATCH);
          }
        case 295: break;
        case 44: 
          { yybegin(IN_TRIPLE_GSTRING_DOLLAR);
                                             return GroovyTokenTypes.mDOLLAR;
          }
        case 296: break;
        case 137: 
          { return ( GroovyTokenTypes.kVOID );
          }
        case 297: break;
        case 129: 
          { return ( GroovyTokenTypes.kELSE );
          }
        case 298: break;
        case 148: 
          { return ( GroovyTokenTypes.kTHROW );
          }
        case 299: break;
        case 8: 
          { return GroovyTokenTypes.mNUM_INT;
          }
        case 300: break;
        case 46: 
          { yybegin(NLS_AFTER_NLS);
                                             afterComment = IN_TRIPLE_IDENT;
                                             return GroovyTokenTypes.mNLS;
          }
        case 301: break;
        case 77: 
          { return GroovyTokenTypes.mNUM_LONG;
          }
        case 302: break;
        case 126: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mSR_ASSIGN);
          }
        case 303: break;
        case 153: 
          { return ( GroovyTokenTypes.kASSERT );
          }
        case 304: break;
        case 61: 
          { return GroovyTokenTypes.mDOLLAR_SLASH_REGEX_CONTENT;
          }
        case 305: break;
        case 110: 
          // lookahead expression with fixed lookahead length
          yypushback(1);
          { return GroovyTokenTypes.mDOLLAR_SLASH_REGEX_CONTENT;
          }
        case 306: break;
        case 162: 
          { return ( GroovyTokenTypes.kBOOLEAN );
          }
        case 307: break;
        case 79: 
          { return ( GroovyTokenTypes.kIF );
          }
        case 308: break;
        case 76: 
          { return GroovyTokenTypes.mNUM_FLOAT;
          }
        case 309: break;
        case 59: 
          { yybegin(IN_DOLLAR_SLASH_REGEX_DOT);
                                             return GroovyTokenTypes.mIDENT;
          }
        case 310: break;
        case 169: 
          { return ( GroovyTokenTypes.kINTERFACE );
          }
        case 311: break;
        case 164: 
          { return ( GroovyTokenTypes.kPRIVATE );
          }
        case 312: break;
        case 66: 
          { yypushback(1);
                                              yybegin(NLS_AFTER_COMMENT);
          }
        case 313: break;
        case 15: 
          { while (!braceCount.isEmpty() && GroovyTokenTypes.mLCURLY != braceCount.peek()) {
                                               braceCount.pop();
                                             }
                                             if (!braceCount.isEmpty() && GroovyTokenTypes.mLCURLY == braceCount.peek()) {
                                               braceCount.pop();
                                             }
                                             return GroovyTokenTypes.mRCURLY;
          }
        case 314: break;
        case 116: 
          { return ( GroovyTokenTypes.kINT );
          }
        case 315: break;
        case 53: 
          { yybegin(IN_REGEX_DOT);
                                             return GroovyTokenTypes.mIDENT;
          }
        case 316: break;
        case 109: 
          { if (!gStringStack.isEmpty()) {
                                               gStringStack.pop();
                                             }
                                             if (blockStack.isEmpty()){
                                               yybegin(YYINITIAL);
                                             } else {
                                               yybegin(IN_INNER_BLOCK);
                                             }
                                             return GroovyTokenTypes.mDOLLAR_SLASH_REGEX_END;
          }
        case 317: break;
        case 35: 
          { blockStack.push(GroovyTokenTypes.mLPAREN);
                                             braceCount.push(GroovyTokenTypes.mLCURLY);
                                             yybegin(NLS_AFTER_LBRACE);
                                             return GroovyTokenTypes.mLCURLY;
          }
        case 318: break;
        case 91: 
          { return ( GroovyTokenTypes.kAS );
          }
        case 319: break;
        case 131: 
          { return ( GroovyTokenTypes.kBYTE );
          }
        case 320: break;
        case 157: 
          { return ( GroovyTokenTypes.kRETURN );
          }
        case 321: break;
        case 57: 
          { yybegin(IN_REGEX_DOLLAR);
                                             return GroovyTokenTypes.mDOLLAR;
          }
        case 322: break;
        case 85: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mMINUS_ASSIGN);
          }
        case 323: break;
        case 119: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mRANGE_EXCLUSIVE);
          }
        case 324: break;
        case 112: 
          { return GroovyDocElementTypes.GROOVY_DOC_COMMENT;
          }
        case 325: break;
        case 47: 
          { blockStack.push(GroovyTokenTypes.mLCURLY);
                                             braceCount.push(GroovyTokenTypes.mLCURLY);
                                             yybegin(NLS_AFTER_LBRACE);
                                             return (GroovyTokenTypes.mLCURLY);
          }
        case 326: break;
        case 2: 
          { yybegin(NLS_AFTER_NLS);
                                             afterComment = WAIT_FOR_REGEX;
                                             return !braceCount.isEmpty() &&
                                                 GroovyTokenTypes.mLPAREN == braceCount.peek() ? TokenType.WHITE_SPACE : GroovyTokenTypes.mNLS;
          }
        case 327: break;
        case 114: 
          { return GroovyTokenTypes.mNUM_BIG_DECIMAL;
          }
        case 328: break;
        case 16: 
          { yybegin(WAIT_FOR_REGEX);
                                             return(GroovyTokenTypes.mQUESTION);
          }
        case 329: break;
        case 62: 
          { yybegin(IN_DOLLAR_SLASH_REGEX_DOLLAR);
                                             return GroovyTokenTypes.mDOLLAR;
          }
        case 330: break;
        case 132: 
          { return ( GroovyTokenTypes.kCASE );
          }
        case 331: break;
        case 63: 
          { yypushback(1);
                                             yybegin(IN_DOLLAR_SLASH_REGEX);
          }
        case 332: break;
        case 127: 
          { if (!gStringStack.isEmpty()){
                                               gStringStack.pop();
                                             }
                                             if (blockStack.isEmpty()){
                                               yybegin(YYINITIAL);
                                             } else {
                                               yybegin(IN_INNER_BLOCK);
                                             }
                                             return GroovyTokenTypes.mGSTRING_END;
          }
        case 333: break;
        case 99: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mBXOR_ASSIGN);
          }
        case 334: break;
        case 60: 
          { blockStack.push(GroovyTokenTypes.mDOLLAR);
                                             braceCount.push(GroovyTokenTypes.mLCURLY);
                                             yybegin(NLS_AFTER_LBRACE);
                                             return GroovyTokenTypes.mLCURLY;
          }
        case 335: break;
        case 139: 
          { return ( GroovyTokenTypes.kFLOAT );
          }
        case 336: break;
        case 171: 
          { return ( GroovyTokenTypes.kTRANSIENT );
          }
        case 337: break;
        case 154: 
          { return ( GroovyTokenTypes.kSTATIC );
          }
        case 338: break;
        case 138: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mBSR_ASSIGN);
          }
        case 339: break;
        case 6: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mLNOT);
          }
        case 340: break;
        case 18: 
          { yybegin(WAIT_FOR_REGEX);
                                             braceCount.push(GroovyTokenTypes.mLPAREN);
                                             return (GroovyTokenTypes.mLPAREN);
          }
        case 341: break;
        case 25: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mGT);
          }
        case 342: break;
        case 30: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mBAND);
          }
        case 343: break;
        case 13: 
          { yybegin(IN_SINGLE_GSTRING);
                                                              gStringStack.push(GroovyTokenTypes.mLPAREN);
                                                              return GroovyTokenTypes.mGSTRING_BEGIN;
          }
        case 344: break;
        case 67: 
          { return GroovyTokenTypes.mSL_COMMENT;
          }
        case 345: break;
        case 86: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mCLOSABLE_BLOCK_OP);
          }
        case 346: break;
        case 10: 
          { yybegin(WAIT_FOR_REGEX);
                                             return (GroovyTokenTypes.mMINUS);
          }
        case 347: break;
        case 140: 
          { return ( GroovyTokenTypes.kFINAL );
          }
        case 348: break;
        default:
          if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
            zzAtEOF = true;
            zzDoEOF();
            return null;
          }
          else {
            zzScanError(ZZ_NO_MATCH);
          }
      }
    }
  }


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy