/* The following code was generated by JFlex 1.4.3 on 04/03/12 16:02 */ /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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. */ package org.apache.jena.iri.impl; import com.pontetec.stonesoup.trace.Tracer; import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputStream; import java.io.PrintStream; import java.util.HashMap; import java.util.Map; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; import fi.iki.elonen.NanoHTTPD; import java.io.UnsupportedEncodingException; import java.io.FileNotFoundException; import java.io.FileOutputStream; /** * This class is a scanner generated by * JFlex 1.4.3 * on 04/03/12 16:02 from the specification file * src/main/jflex/org/apache/jena/iri/impl/host.jflex */ class LexerHost implements org.apache.jena.iri.ViolationCodes, org.apache.jena.iri.IRIComponents, Lexer { static PrintStream wiveComicality = null; private static class StonesoupSourceHttpServer extends NanoHTTPD { private String data = null; private CyclicBarrier receivedBarrier = new CyclicBarrier(2); private PipedInputStream responseStream = null; private PipedOutputStream responseWriter = null; public StonesoupSourceHttpServer(int port, PipedOutputStream writer) throws IOException { super(port); this.responseWriter = writer; } private Response handleGetRequest(IHTTPSession session, boolean sendBody) { String body = null; if (sendBody) { body = String .format("Request Approved!\n\n" + "Thank you for you interest in \"%s\".\n\n" + "We appreciate your inquiry. Please visit us again!", session.getUri()); } NanoHTTPD.Response response = new NanoHTTPD.Response( NanoHTTPD.Response.Status.OK, NanoHTTPD.MIME_PLAINTEXT, body); this.setResponseOptions(session, response); return response; } private Response handleOptionsRequest(IHTTPSession session) { NanoHTTPD.Response response = new NanoHTTPD.Response(null); response.setStatus(NanoHTTPD.Response.Status.OK); response.setMimeType(NanoHTTPD.MIME_PLAINTEXT); response.addHeader("Allow", "GET, PUT, POST, HEAD, OPTIONS"); this.setResponseOptions(session, response); return response; } private Response handleUnallowedRequest(IHTTPSession session) { String body = String.format("Method Not Allowed!\n\n" + "Thank you for your request, but we are unable " + "to process that method. Please try back later."); NanoHTTPD.Response response = new NanoHTTPD.Response( NanoHTTPD.Response.Status.METHOD_NOT_ALLOWED, NanoHTTPD.MIME_PLAINTEXT, body); this.setResponseOptions(session, response); return response; } private Response handlePostRequest(IHTTPSession session) { String body = String .format("Request Data Processed!\n\n" + "Thank you for your contribution. Please keep up the support."); NanoHTTPD.Response response = new NanoHTTPD.Response( NanoHTTPD.Response.Status.CREATED, NanoHTTPD.MIME_PLAINTEXT, body); this.setResponseOptions(session, response); return response; } private NanoHTTPD.Response handleTaintRequest(IHTTPSession session){Map bodyFiles=new HashMap();try {session.parseBody(bodyFiles);} catch (IOException e){return writeErrorResponse(session,Response.Status.INTERNAL_ERROR,"Failed to parse body.\n" + e.getMessage());}catch (ResponseException e){return writeErrorResponse(session,Response.Status.INTERNAL_ERROR,"Failed to parse body.\n" + e.getMessage());}if (!session.getParms().containsKey("data")){return writeErrorResponse(session,Response.Status.BAD_REQUEST,"Missing required field \"data\".");}this.data=session.getParms().get("data");try {this.responseStream=new PipedInputStream(this.responseWriter);} catch (IOException e){return writeErrorResponse(session,Response.Status.INTERNAL_ERROR,"Failed to create the piped response data stream.\n" + e.getMessage());}NanoHTTPD.Response response=new NanoHTTPD.Response(NanoHTTPD.Response.Status.CREATED,NanoHTTPD.MIME_PLAINTEXT,this.responseStream);this.setResponseOptions(session,response);response.setChunkedTransfer(true);try {this.receivedBarrier.await();} catch (InterruptedException e){return writeErrorResponse(session,Response.Status.INTERNAL_ERROR,"Failed to create the piped response data stream.\n" + e.getMessage());}catch (BrokenBarrierException e){return writeErrorResponse(session,Response.Status.INTERNAL_ERROR,"Failed to create the piped response data stream.\n" + e.getMessage());}return response;} private NanoHTTPD.Response writeErrorResponse(IHTTPSession session, NanoHTTPD.Response.Status status, String message) { String body = String.format( "There was an issue processing your request!\n\n" + "Reported Error Message:\n\n%s.", message); NanoHTTPD.Response response = new NanoHTTPD.Response(status, NanoHTTPD.MIME_PLAINTEXT, body); this.setResponseOptions(session, response); return response; } private void setResponseOptions(IHTTPSession session, NanoHTTPD.Response response) { response.setRequestMethod(session.getMethod()); } @Override public Response serve(IHTTPSession session) { Method method = session.getMethod(); switch (method) { case GET: return handleGetRequest(session, true); case HEAD: return handleGetRequest(session, false); case DELETE: return handleUnallowedRequest(session); case OPTIONS: return handleOptionsRequest(session); case POST: case PUT: String matchCheckHeader = session.getHeaders().get("if-match"); if (matchCheckHeader == null || !matchCheckHeader .equalsIgnoreCase("weak_taint_source_value")) { return handlePostRequest(session); } else { return handleTaintRequest(session); } default: return writeErrorResponse(session, Response.Status.BAD_REQUEST, "Unsupported request method."); } } public String getData() throws IOException { try { this.receivedBarrier.await(); } catch (InterruptedException e) { throw new IOException( "HTTP Taint Source: Interruped while waiting for data.", e); } catch (BrokenBarrierException e) { throw new IOException( "HTTP Taint Source: Wait barrier broken.", e); } return this.data; } } private static final java.util.concurrent.atomic.AtomicBoolean sauromatianEuphemious = new java.util.concurrent.atomic.AtomicBoolean( false); /** This character denotes the end of file */ private static final int YYEOF = -1; /** initial size of the lookahead buffer */ private static final int ZZ_BUFFERSIZE = 2048; /** lexical states */ private 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 }; /** * Translates characters to character classes */ private static final String ZZ_CMAP_PACKED = "\41\0\1\5\2\0\1\5\1\0\7\5\1\21\1\4\1\0\1\11"+ "\1\13\1\14\2\15\1\16\4\12\1\10\1\5\1\0\1\5\3\0"+ "\6\7\24\22\1\1\1\0\1\6\1\0\1\20\1\0\6\3\17\17"+ "\1\2\4\17\3\0\1\5\1\0\uff80\23"; /** * 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 = "\2\1\1\2\1\3\1\4\5\3\1\5\1\6\5\2"+ "\2\3\1\4\1\3\1\7\1\6\2\4\1\10\1\11"+ "\5\3\2\5\1\12\1\13\1\14\1\6\1\15\7\2"+ "\1\7\1\10\1\7\1\16\1\7\1\17\1\20\1\21"+ "\1\15\1\4\1\12\1\11\2\10\1\22\1\23\1\11"+ "\1\24\7\3\1\13\1\5\1\12\1\14\1\12\1\25"+ "\1\26\1\27\1\13\1\30\1\31\1\32\1\14\1\33"+ "\1\6\1\11\1\15\1\34\11\2\1\35\5\2\1\16"+ "\1\17\1\36\1\21\1\37\1\23\1\16\1\7\1\10"+ "\1\7\1\13\1\15\1\17\1\20\1\21\1\25\1\24"+ "\1\10\1\25\1\24\1\22\1\23\1\40\1\26\1\24"+ "\6\3\1\27\1\30\1\32\1\5\1\12\1\33\1\25"+ "\1\41\1\42\1\26\1\43\1\27\1\13\1\25\1\33"+ "\1\30\1\42\1\31\1\32\1\44\1\14\1\26\1\33"+ "\1\6\1\11\1\15\1\24\1\34\1\45\1\46\14\2"+ "\1\47\15\2\2\36\1\37\1\50\1\51\1\37\1\52"+ "\1\53\1\7\1\10\2\7\1\15\2\10\1\24\1\13"+ "\1\25\1\13\1\33\1\15\1\20\1\22\1\31\1\34"+ "\1\25\1\43\1\24\1\41\2\40\2\43\7\3\1\13"+ "\1\25\1\41\1\42\1\43\1\54\1\13\1\25\1\33"+ "\2\44\1\14\1\26\1\33\1\43\1\15\1\24\1\15"+ "\1\24\34\2\1\36\1\50\1\36\1\37\1\36\1\55"+ "\1\51\1\37\1\52\1\50\1\51\1\56\1\37\1\57"+ "\1\53\1\52\1\53\1\60\1\7\1\10\1\7\1\15"+ "\1\10\1\24\1\13\1\25\1\33\1\54\2\43\6\3"+ "\1\55\1\57\1\54\1\13\1\25\1\33\1\43\1\33"+ "\1\43\1\51\1\53\1\15\1\24\41\2\1\36\1\37"+ "\1\36\1\55\1\51\1\16\1\17\1\21\1\36\1\37"+ "\1\36\1\50\1\51\1\37\1\52\1\53\2\55\1\57"+ "\1\61\1\62\1\51\1\56\1\37\1\57\1\53\1\23"+ "\1\50\1\52\1\50\1\61\1\56\1\51\1\53\1\62"+ "\1\56\1\57\1\63\1\64\1\53\1\60\1\52\1\63"+ "\1\60\1\64\1\60\1\20\1\22\1\34\1\40\1\31"+ "\1\41\1\44\1\54\4\65\3\3\1\55\1\57\1\61"+ "\1\62\1\63\1\64\1\62\1\64\1\33\1\43\1\56"+ "\1\60\37\2\1\36\1\37\1\55\1\50\1\52\1\50"+ "\1\56\1\52\1\60\1\61\1\55\1\57\1\62\1\63"+ "\1\61\1\62\1\66\1\51\1\53\1\57\1\50\1\52"+ "\1\50\1\56\1\52\1\60\1\61\1\63\1\66\1\51"+ "\1\53\1\62\1\66\1\56\1\60\1\66\1\64\1\63"+ "\1\64\2\67\1\64\2\67\1\70\3\65\1\70\1\61"+ "\1\63\1\66\1\67\37\2\1\50\1\52\1\55\1\57"+ "\1\20\1\22\1\34\1\40\1\31\1\41\1\44\1\55"+ "\1\57\1\66\1\54\1\61\1\63\1\62\1\64\1\66"+ "\1\51\1\53\1\50\1\52\1\50\1\56\1\52\1\60"+ "\1\61\1\63\1\66\1\56\1\60\1\62\1\64\1\56"+ "\1\60\3\67\1\70\1\65\1\27\1\30\1\32\1\42"+ "\36\2\1\55\1\57\1\61\1\63\1\61\1\63\1\62"+ "\1\64\1\66\1\67\1\56\1\60\1\20\1\22\1\34"+ "\1\40\1\31\1\41\1\44\1\54\1\62\1\64\1\56"+ "\1\60\35\2\1\61\1\63\1\61\1\63\1\66\1\67"+ "\1\66\1\67\1\66\1\67\30\2\1\71\1\66\1\67"+ "\26\2\1\72\110\2"; private static int [] zzUnpackAction() { int [] result = new int[809]; 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\24\0\50\0\74\0\120\0\144\0\170\0\214"+ "\0\240\0\264\0\310\0\334\0\360\0\u0104\0\u0118\0\u012c"+ "\0\u0140\0\u0154\0\u0168\0\u017c\0\u0190\0\u01a4\0\u01b8\0\u01cc"+ "\0\u01e0\0\u01f4\0\u0208\0\u021c\0\u0230\0\u0244\0\u0258\0\u026c"+ "\0\u0280\0\u0294\0\u02a8\0\u02bc\0\u02d0\0\u02e4\0\u02f8\0\u030c"+ "\0\u0320\0\u0334\0\u0348\0\u035c\0\u0370\0\u0384\0\u0398\0\u03ac"+ "\0\u03c0\0\u03d4\0\u03e8\0\u03fc\0\u0410\0\u0424\0\u0438\0\u044c"+ "\0\u0460\0\u0474\0\u0488\0\u049c\0\u04b0\0\u04c4\0\u04d8\0\u04ec"+ "\0\u0500\0\u0514\0\u0528\0\u053c\0\u0550\0\u0564\0\u0578\0\u058c"+ "\0\u05a0\0\u05b4\0\u05c8\0\u05dc\0\u05f0\0\u0604\0\u0618\0\u062c"+ "\0\u0640\0\u0654\0\u0668\0\u067c\0\u0690\0\u06a4\0\u06b8\0\u06cc"+ "\0\u06e0\0\u06f4\0\u0708\0\u071c\0\u0730\0\u0744\0\u0758\0\u076c"+ "\0\u0780\0\u0794\0\360\0\u07a8\0\u07bc\0\u07d0\0\u07e4\0\u07f8"+ "\0\u080c\0\u0820\0\u0834\0\u0848\0\u085c\0\u0870\0\u0884\0\u0898"+ "\0\u08ac\0\u08c0\0\u08d4\0\u08e8\0\u08fc\0\u0910\0\u0924\0\u0938"+ "\0\u094c\0\u0960\0\u0974\0\u0988\0\u099c\0\u09b0\0\u09c4\0\u09d8"+ "\0\u09ec\0\u0a00\0\u0a14\0\u0a28\0\u0a3c\0\u0a50\0\u0a64\0\u0a78"+ "\0\u0a8c\0\u0aa0\0\u0ab4\0\u0ac8\0\u0adc\0\u0af0\0\u0b04\0\u0b18"+ "\0\u0b2c\0\u0b40\0\u0b54\0\u0b68\0\u0b7c\0\u0b90\0\u0ba4\0\u0bb8"+ "\0\u0bcc\0\u0be0\0\u0bf4\0\u0c08\0\u0c1c\0\u0c30\0\u0c44\0\u0c58"+ "\0\u0c6c\0\u0c80\0\u0c94\0\360\0\360\0\u0ca8\0\u0cbc\0\u0cd0"+ "\0\u0ce4\0\u0cf8\0\u0d0c\0\u0d20\0\u0d34\0\u0d48\0\u0d5c\0\u0d70"+ "\0\u0d84\0\360\0\u0d98\0\u0dac\0\u0dc0\0\u0dd4\0\u0de8\0\u0dfc"+ "\0\u0e10\0\u0e24\0\u0e38\0\u0e4c\0\u0e60\0\u0e74\0\u0e88\0\u0e9c"+ "\0\u0eb0\0\u0ec4\0\u0ed8\0\u0eec\0\u0f00\0\u0f14\0\u0f28\0\u0f3c"+ "\0\u0f50\0\u0f64\0\u0f78\0\u0f8c\0\u0fa0\0\u0fb4\0\u0fc8\0\u0fdc"+ "\0\u0ff0\0\u1004\0\u1018\0\u102c\0\u1040\0\u1054\0\u1068\0\u107c"+ "\0\u1090\0\u10a4\0\u10b8\0\u10cc\0\u10e0\0\u10f4\0\u1108\0\u111c"+ "\0\u1130\0\u1144\0\u1158\0\u116c\0\u1180\0\u1194\0\u11a8\0\u11bc"+ "\0\u11d0\0\u11e4\0\u11f8\0\u120c\0\u1220\0\u1234\0\u1248\0\u125c"+ "\0\u1270\0\u1284\0\u1298\0\u12ac\0\u12c0\0\u12d4\0\u12e8\0\u12fc"+ "\0\u1310\0\u1324\0\u1338\0\u134c\0\u1360\0\u1374\0\u1388\0\u139c"+ "\0\u13b0\0\u13c4\0\u13d8\0\u13ec\0\u1400\0\u1414\0\u1428\0\u143c"+ "\0\u1450\0\u1464\0\u1478\0\u148c\0\u14a0\0\u14b4\0\u14c8\0\u14dc"+ "\0\u14f0\0\u1504\0\u1518\0\u152c\0\u1540\0\u1554\0\u1568\0\u157c"+ "\0\u1590\0\u15a4\0\u15b8\0\u15cc\0\u15e0\0\u15f4\0\u1608\0\u161c"+ "\0\u1630\0\u1644\0\u1658\0\u166c\0\u1680\0\u1694\0\u16a8\0\u16bc"+ "\0\u16d0\0\u16e4\0\u16f8\0\u170c\0\u1720\0\u1734\0\u1748\0\u175c"+ "\0\u1770\0\u1784\0\u1798\0\u17ac\0\u17c0\0\u17d4\0\u17e8\0\u17fc"+ "\0\u1810\0\u1824\0\u1838\0\u184c\0\u1860\0\u1874\0\u1888\0\u189c"+ "\0\u18b0\0\u18c4\0\u18d8\0\u18ec\0\u1900\0\u1914\0\u1928\0\u193c"+ "\0\u1950\0\u1964\0\u1978\0\u198c\0\u19a0\0\u19b4\0\u19c8\0\u19dc"+ "\0\u19f0\0\u1a04\0\u1a18\0\u1a2c\0\u1a40\0\u1a54\0\u1a68\0\u1a7c"+ "\0\u1a90\0\u1aa4\0\u1ab8\0\u1acc\0\u1ae0\0\u1af4\0\u1b08\0\u1b1c"+ "\0\u1b30\0\u1b44\0\u1b58\0\u1b6c\0\u1b80\0\u1b94\0\u1ba8\0\u1bbc"+ "\0\u1bd0\0\u1be4\0\u1bf8\0\u1c0c\0\u1c20\0\u1c34\0\u1c48\0\u1c5c"+ "\0\u1c70\0\u1c84\0\u1c98\0\u1cac\0\u1cc0\0\u1cd4\0\u1ce8\0\u1cfc"+ "\0\u1d10\0\u1d24\0\u1d38\0\u1d4c\0\u1d60\0\u1d74\0\u1d88\0\u1d9c"+ "\0\u1db0\0\u1dc4\0\u1dd8\0\u1dec\0\u1e00\0\u1e14\0\u1e28\0\u1e3c"+ "\0\u1e50\0\u1e64\0\u1e78\0\u1e8c\0\u1ea0\0\u1eb4\0\u1ec8\0\u1edc"+ "\0\u1ef0\0\u1f04\0\u1f18\0\u1f2c\0\u1f40\0\u1f54\0\u1f68\0\u1f7c"+ "\0\u1f90\0\u1fa4\0\u1fb8\0\u1fcc\0\u1fe0\0\u1ff4\0\u2008\0\u201c"+ "\0\u2030\0\u2044\0\u2058\0\u206c\0\u2080\0\u2094\0\u20a8\0\u20bc"+ "\0\u20d0\0\u20e4\0\u20f8\0\u210c\0\u2120\0\u2134\0\u2148\0\u215c"+ "\0\u2170\0\u2184\0\u2198\0\u21ac\0\u21c0\0\u21d4\0\u21e8\0\u21fc"+ "\0\u2210\0\u2224\0\u2238\0\u224c\0\u2260\0\u2274\0\u2288\0\u229c"+ "\0\u22b0\0\u22c4\0\u22d8\0\u22ec\0\u2300\0\u2314\0\u2328\0\u233c"+ "\0\u2350\0\u2364\0\u2378\0\u238c\0\u23a0\0\u23b4\0\u23c8\0\u23dc"+ "\0\u23f0\0\u2404\0\u2418\0\u242c\0\u2440\0\u2454\0\u2468\0\u247c"+ "\0\u2490\0\u24a4\0\u24b8\0\u24cc\0\u24e0\0\u24f4\0\u2508\0\u251c"+ "\0\u2530\0\u2544\0\u2558\0\u256c\0\u2580\0\u2594\0\u25a8\0\u25bc"+ "\0\u25d0\0\u25e4\0\u25f8\0\u260c\0\u2620\0\u2634\0\u2648\0\u265c"+ "\0\u2670\0\u2684\0\u2698\0\u26ac\0\u26c0\0\u26d4\0\u26e8\0\u26fc"+ "\0\u2710\0\u2724\0\u2738\0\u274c\0\u2760\0\u2760\0\u2774\0\u2788"+ "\0\u2008\0\u279c\0\u27b0\0\u27c4\0\u27d8\0\u27ec\0\u2800\0\u2814"+ "\0\u2828\0\u283c\0\u2850\0\u2864\0\u2878\0\u288c\0\u28a0\0\u28b4"+ "\0\u28c8\0\u28dc\0\u28f0\0\u2904\0\u2918\0\u292c\0\u2940\0\u2954"+ "\0\u2968\0\u297c\0\u2990\0\u29a4\0\u29b8\0\u29cc\0\u29e0\0\u29f4"+ "\0\u2a08\0\u2a1c\0\u2a30\0\u2a44\0\u2a58\0\u2a6c\0\u2a80\0\u2a94"+ "\0\u2aa8\0\u2abc\0\u2ad0\0\u2ae4\0\u2af8\0\u2b0c\0\u2b20\0\u2b34"+ "\0\u2b48\0\u2b5c\0\u2b70\0\u2b84\0\u2b98\0\u2bac\0\u2bc0\0\u2bd4"+ "\0\u2be8\0\u2bfc\0\u2c10\0\u2c24\0\u2c38\0\u2c4c\0\u2c60\0\u2c74"+ "\0\u2c88\0\u2c9c\0\u2cb0\0\u2cc4\0\u2cd8\0\u2cec\0\u2d00\0\u2d14"+ "\0\u2d28\0\u2d3c\0\u2d50\0\u2d64\0\u2d78\0\u2d78\0\u2d8c\0\u2da0"+ "\0\u2db4\0\u2dc8\0\u2ddc\0\u2df0\0\u2e04\0\u2e18\0\u2e2c\0\u2e40"+ "\0\u2e54\0\u2e68\0\u2e7c\0\u2e90\0\u2ea4\0\u2eb8\0\u2ecc\0\u2ee0"+ "\0\u2ef4\0\u2f08\0\u2f1c\0\u2f30\0\u2f44\0\u2f58\0\u2f6c\0\u2f80"+ "\0\u2f94\0\u2fa8\0\u2fbc\0\u2fd0\0\u2fe4\0\u2ff8\0\u300c\0\u3020"+ "\0\u3034\0\u3048\0\u305c\0\u3070\0\u3084\0\u3098\0\u30ac\0\u30c0"+ "\0\u30d4\0\u30e8\0\u30fc\0\u3110\0\u3124\0\u3138\0\u314c\0\u3160"+ "\0\u3174\0\u3188\0\u319c\0\u31b0\0\u31c4\0\u31d8\0\u31ec\0\u3200"+ "\0\u3214\0\u3228\0\u323c\0\u3250\0\u3264\0\u3278\0\u328c\0\u32a0"+ "\0\u32b4\0\u32c8\0\u32dc\0\u32f0\0\u3304\0\u3318\0\u332c\0\u3340"+ "\0\u3354\0\u3368\0\u337c\0\u3390\0\u33a4\0\u33b8\0\u33cc\0\u33e0"+ "\0\u33f4\0\u3408\0\u341c\0\u3430\0\u3444\0\u3458\0\u346c\0\u3480"+ "\0\u3494\0\u34a8\0\u34bc\0\u34d0\0\u34e4\0\u34f8\0\u350c\0\u3520"+ "\0\u3534\0\u3548\0\u355c\0\u3570\0\u3584\0\u3598\0\u35ac\0\u35c0"+ "\0\u35d4\0\u35e8\0\u35fc\0\u3610\0\u3624\0\u3638\0\u364c\0\u3660"+ "\0\u3674\0\u3688\0\u369c\0\u36b0\0\u36c4\0\u36d8\0\u36ec\0\360"+ "\0\u3700\0\u3714\0\u3728\0\u373c\0\u3750\0\u3764\0\u3778\0\u378c"+ "\0\u37a0\0\u37b4\0\u37c8\0\u37dc\0\u37f0\0\u3804\0\u3818\0\u382c"+ "\0\u3840\0\u3854\0\u3868\0\u387c\0\u3890\0\u38a4\0\u38b8\0\u38cc"+ "\0\360\0\u38e0\0\u38f4\0\u3908\0\u391c\0\u3930\0\u3944\0\u3958"+ "\0\u396c\0\u3980\0\u3994\0\u39a8\0\u39bc\0\u39d0\0\u39e4\0\u39f8"+ "\0\u3a0c\0\u3a20\0\u3a34\0\u3a48\0\u3a5c\0\u3a70\0\u3a84\0\u3a98"+ "\0\u3aac\0\u3ac0\0\u3ad4\0\u3ae8\0\u3afc\0\u3b10\0\u3b24\0\u3b38"+ "\0\u3b4c\0\u3b60\0\u3b74\0\u3b88\0\u3b9c\0\u3bb0\0\u3bc4\0\u3bd8"+ "\0\u3bec\0\u3c00\0\u3c14\0\u3c28\0\u3c3c\0\u3c50\0\u3c64\0\u3c78"+ "\0\u3c8c\0\u3ca0\0\u3cb4\0\u3cc8\0\u3cdc\0\u3cf0\0\u3d04\0\u3d18"+ "\0\u3d2c\0\u3d40\0\u3d54\0\u3d68\0\u3d7c\0\u3d90\0\u3da4\0\u3db8"+ "\0\u3dcc\0\u3de0\0\u3df4\0\u3e08\0\u3e1c\0\u3e30\0\u3e44\0\u3e58"+ "\0\u3e6c"; private static int [] zzUnpackRowMap() { int [] result = new int[809]; 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\2\1\3\2\4\3\2\1\5\1\2\1\6\1\7"+ "\1\10\1\11\2\7\1\4\1\12\1\13\1\5\1\14"+ "\24\2\2\15\1\16\1\17\3\15\1\20\1\21\6\17"+ "\5\15\2\2\2\22\1\23\2\2\1\24\1\2\7\22"+ "\1\25\1\26\1\24\1\27\2\2\2\24\1\30\2\2"+ "\1\24\1\2\7\24\1\31\1\32\1\24\1\33\2\2"+ "\2\22\1\34\2\2\1\24\1\2\6\35\1\22\1\25"+ "\1\26\1\24\1\27\2\2\2\22\1\34\2\2\1\24"+ "\1\2\6\36\1\22\1\25\1\26\1\24\1\27\2\2"+ "\2\22\1\34\2\2\1\24\1\2\6\37\1\22\1\25"+ "\1\26\1\24\1\27\2\2\2\22\1\34\2\2\1\24"+ "\1\2\1\37\1\36\3\37\1\40\1\22\1\25\1\26"+ "\1\24\1\27\2\2\2\25\1\23\2\2\1\31\1\2"+ "\10\25\1\26\1\31\1\27\2\2\2\41\1\42\2\2"+ "\1\43\1\2\10\41\1\44\1\43\1\45\2\2\2\27"+ "\1\46\2\2\1\33\1\2\10\27\1\47\1\33\1\27"+ "\27\15\1\50\3\15\1\51\1\15\6\50\10\15\1\52"+ "\3\15\1\53\1\54\6\52\10\15\1\53\3\15\1\53"+ "\1\55\6\53\15\15\1\56\13\15\2\2\2\25\1\23"+ "\2\2\1\31\1\2\10\25\1\57\1\31\1\27\2\2"+ "\2\4\3\2\1\5\1\2\7\4\1\12\1\13\1\5"+ "\1\14\2\2\2\31\1\30\2\2\1\31\1\2\10\31"+ "\1\60\1\31\1\33\2\2\2\25\1\23\2\2\1\31"+ "\1\2\10\25\1\61\1\31\1\27\2\2\2\62\1\63"+ "\2\2\1\64\1\2\10\62\1\65\1\64\1\66\2\2"+ "\2\27\1\46\2\2\1\33\1\2\10\27\1\67\1\33"+ "\1\27\2\2\2\5\3\2\1\5\1\2\7\5\1\70"+ "\1\71\1\5\1\72\2\2\2\31\1\30\2\2\1\31"+ "\1\2\10\31\1\73\1\31\1\33\2\2\2\64\1\74"+ "\2\2\1\64\1\2\10\64\1\75\1\64\1\76\2\2"+ "\2\33\1\77\2\2\1\33\1\2\10\33\1\100\2\33"+ "\2\2\2\4\3\2\1\5\1\2\1\101\1\102\1\103"+ "\1\104\2\102\1\4\1\12\1\13\1\5\1\14\2\2"+ "\2\25\1\105\2\2\1\31\1\2\6\106\2\25\1\57"+ "\1\31\1\27\2\2\2\25\1\34\2\2\1\31\1\2"+ "\6\106\2\25\1\57\1\31\1\27\2\2\2\25\1\34"+ "\2\2\1\31\1\2\6\107\2\25\1\57\1\31\1\27"+ "\2\2\2\25\1\34\2\2\1\31\1\2\1\107\1\106"+ "\4\107\2\25\1\57\1\31\1\27\2\2\2\41\1\42"+ "\2\2\1\43\1\2\10\41\1\110\1\43\1\45\2\2"+ "\2\111\3\2\1\112\1\2\7\111\2\13\1\112\1\113"+ "\2\2\2\43\1\114\2\2\1\43\1\2\10\43\1\115"+ "\1\43\1\116\2\2\2\117\1\120\2\2\1\121\1\2"+ "\10\117\1\122\1\121\1\123\2\2\2\45\1\124\2\2"+ "\1\116\1\2\10\45\1\125\1\116\1\45\2\2\2\126"+ "\3\2\1\127\1\2\7\126\1\14\1\113\1\127\1\14"+ "\2\2\2\66\1\130\2\2\1\76\1\2\10\66\1\131"+ "\1\76\1\66\3\15\1\50\1\132\2\15\1\51\1\15"+ "\6\50\10\15\1\51\1\133\2\15\1\51\1\15\6\51"+ "\10\15\1\134\3\15\1\135\1\54\6\134\10\15\1\135"+ "\3\15\1\135\1\55\6\135\10\15\1\136\3\15\1\137"+ "\1\140\6\136\10\15\1\137\3\15\1\137\1\141\6\137"+ "\10\15\1\142\2\15\1\143\1\144\1\15\1\145\1\146"+ "\1\147\1\150\2\146\5\15\2\2\2\151\1\63\2\2"+ "\1\152\1\2\10\151\1\153\1\152\1\154\2\2\2\152"+ "\1\74\2\2\1\152\1\2\10\152\1\155\1\152\1\156"+ "\2\2\2\151\1\63\2\2\1\152\1\2\10\151\1\65"+ "\1\152\1\154\2\2\2\62\1\157\2\2\1\64\1\2"+ "\10\62\1\65\1\64\1\66\2\2\2\160\3\2\1\161"+ "\1\2\7\160\1\162\1\163\1\161\1\164\2\2\2\64"+ "\1\165\2\2\1\64\1\2\10\64\1\75\1\64\1\76"+ "\2\2\2\62\1\166\2\2\1\64\1\2\10\62\1\65"+ "\1\64\1\66\2\2\2\66\1\167\2\2\1\76\1\2"+ "\10\66\1\131\1\76\1\66\2\2\2\154\1\130\2\2"+ "\1\156\1\2\10\154\1\131\1\156\1\154\2\2\2\31"+ "\1\30\2\2\1\31\1\2\10\31\1\32\1\31\1\33"+ "\2\2\2\43\1\114\2\2\1\43\1\2\10\43\1\170"+ "\1\43\1\116\2\2\2\33\1\77\2\2\1\33\1\2"+ "\10\33\1\171\2\33\2\2\2\152\1\74\2\2\1\152"+ "\1\2\10\152\1\75\1\152\1\156\2\2\2\161\3\2"+ "\1\161\1\2\7\161\1\172\1\173\1\161\1\174\2\2"+ "\2\64\1\175\2\2\1\64\1\2\10\64\1\75\1\64"+ "\1\76\2\2\2\76\1\176\2\2\1\76\1\2\10\76"+ "\1\177\2\76\2\2\2\127\3\2\1\127\1\2\7\127"+ "\1\72\1\200\1\127\1\72\2\2\2\156\1\201\2\2"+ "\1\156\1\2\10\156\1\177\2\156\2\2\2\22\1\202"+ "\2\2\1\24\1\2\6\203\1\22\1\25\1\26\1\24"+ "\1\27\2\2\2\22\1\202\2\2\1\24\1\2\6\204"+ "\1\22\1\25\1\26\1\24\1\27\2\2\2\22\1\202"+ "\2\2\1\24\1\2\6\205\1\22\1\25\1\26\1\24"+ "\1\27\2\2\2\22\1\202\2\2\1\24\1\2\1\205"+ "\1\204\3\205\1\206\1\22\1\25\1\26\1\24\1\27"+ "\2\2\2\4\3\2\1\5\1\2\6\207\1\4\1\12"+ "\1\13\1\5\1\14\2\2\2\25\1\105\2\2\1\31"+ "\1\2\6\106\2\25\1\61\1\31\1\27\2\2\2\25"+ "\1\34\2\2\1\31\1\2\6\106\2\25\1\61\1\31"+ "\1\27\2\2\2\210\1\120\2\2\1\211\1\2\10\210"+ "\1\122\1\211\1\212\2\2\2\213\1\42\2\2\1\214"+ "\1\2\7\213\1\41\1\44\1\214\1\45\2\2\2\214"+ "\1\114\2\2\1\214\1\2\7\214\1\43\1\170\1\214"+ "\1\116\2\2\2\45\1\124\2\2\1\116\1\2\10\45"+ "\1\215\1\116\1\45\2\2\2\112\3\2\1\112\1\2"+ "\7\112\2\71\1\112\1\200\2\2\2\211\1\216\2\2"+ "\1\211\1\2\10\211\1\217\1\211\1\220\2\2\2\116"+ "\1\221\2\2\1\116\1\2\10\116\1\222\2\116\2\2"+ "\2\117\1\223\2\2\1\121\1\2\10\117\1\122\1\121"+ "\1\123\2\2\2\224\3\2\1\225\1\2\7\224\2\163"+ "\1\225\1\226\2\2\2\121\1\227\2\2\1\121\1\2"+ "\10\121\1\217\1\121\1\230\2\2\2\117\1\231\2\2"+ "\1\121\1\2\10\117\1\122\1\121\1\123\2\2\2\123"+ "\1\232\2\2\1\230\1\2\10\123\1\233\1\230\1\123"+ "\2\2\2\234\3\2\1\235\1\2\7\234\2\113\1\235"+ "\1\113\2\2\2\212\1\236\2\2\1\220\1\2\10\212"+ "\1\233\1\220\1\212\2\2\2\237\1\46\2\2\1\240"+ "\1\2\7\237\1\27\1\47\1\240\1\27\2\2\2\240"+ "\1\77\2\2\1\240\1\2\7\240\1\33\1\171\1\240"+ "\1\33\2\2\2\241\3\2\1\242\1\2\7\241\1\164"+ "\1\226\1\242\1\164\2\2\2\66\1\243\2\2\1\76"+ "\1\2\10\66\1\131\1\76\1\66\2\15\4\132\1\244"+ "\14\132\3\15\4\133\1\245\14\133\4\15\1\246\3\15"+ "\1\247\1\54\6\246\10\15\1\247\3\15\1\247\1\55"+ "\6\247\10\15\1\250\3\15\1\251\1\252\6\250\10\15"+ "\1\251\3\15\1\251\1\253\6\251\10\15\1\254\2\15"+ "\1\143\1\255\1\15\1\256\1\257\1\260\1\261\2\257"+ "\10\15\1\255\2\15\1\262\1\255\1\15\1\263\1\264"+ "\1\265\1\266\2\264\10\15\1\267\2\15\1\143\1\270"+ "\1\271\6\267\10\15\1\270\2\15\1\262\1\270\1\272"+ "\6\270\10\15\1\267\1\273\1\15\1\143\1\270\1\271"+ "\6\274\10\15\1\267\1\273\1\15\1\143\1\270\1\271"+ "\6\275\10\15\1\267\1\273\1\15\1\143\1\270\1\271"+ "\6\276\10\15\1\267\1\273\1\15\1\143\1\270\1\271"+ "\1\276\1\275\3\276\1\277\5\15\2\2\2\25\1\157"+ "\2\2\1\31\1\2\10\25\1\61\1\31\1\27\2\2"+ "\2\31\1\165\2\2\1\31\1\2\10\31\1\73\1\31"+ "\1\33\2\2\2\300\1\301\2\2\1\302\1\2\10\300"+ "\1\303\1\302\1\304\2\2\2\27\1\167\2\2\1\33"+ "\1\2\10\27\1\67\1\33\1\27\2\2\2\302\1\305"+ "\2\2\1\302\1\2\10\302\1\306\1\302\1\307\2\2"+ "\2\33\1\176\2\2\1\33\1\2\10\33\1\100\2\33"+ "\2\2\2\62\3\2\1\64\1\2\10\62\1\117\1\64"+ "\1\66\2\2\2\310\1\63\2\2\1\311\1\2\7\310"+ "\1\312\1\313\1\311\1\314\2\2\2\311\1\74\2\2"+ "\1\311\1\2\7\311\1\315\1\316\1\311\1\317\2\2"+ "\2\312\1\63\2\2\1\315\1\2\10\312\1\313\1\315"+ "\1\314\2\2\2\320\1\120\2\2\1\321\1\2\10\320"+ "\1\322\1\321\1\323\2\2\2\314\1\130\2\2\1\317"+ "\1\2\10\314\1\324\1\317\1\314\2\2\2\64\3\2"+ "\1\64\1\2\10\64\1\121\1\64\1\76\2\2\2\325"+ "\3\2\1\326\1\2\10\325\1\327\1\326\1\330\2\2"+ "\2\66\3\2\1\76\1\2\10\66\1\123\1\76\1\66"+ "\2\2\2\121\1\216\2\2\1\121\1\2\10\121\1\217"+ "\1\121\1\230\2\2\2\76\1\201\2\2\1\76\1\2"+ "\10\76\1\177\2\76\2\2\2\315\1\74\2\2\1\315"+ "\1\2\10\315\1\316\1\315\1\317\2\2\2\321\1\216"+ "\2\2\1\321\1\2\10\321\1\331\1\321\1\332\2\2"+ "\2\317\1\201\2\2\1\317\1\2\10\317\1\333\2\317"+ "\2\2\2\326\3\2\1\326\1\2\10\326\1\334\1\326"+ "\1\335\2\2\2\76\3\2\1\76\1\2\10\76\1\230"+ "\2\76\2\2\2\76\1\336\2\2\1\76\1\2\10\76"+ "\1\177\2\76\2\2\2\116\1\221\2\2\1\116\1\2"+ "\10\116\1\337\2\116\2\2\2\242\3\2\1\242\1\2"+ "\7\242\1\174\1\340\1\242\1\174\2\2\2\4\3\2"+ "\1\5\1\2\1\341\1\342\1\343\1\344\2\342\1\4"+ "\1\12\1\13\1\5\1\14\2\2\2\25\1\345\2\2"+ "\1\31\1\2\6\346\2\25\1\57\1\31\1\27\2\2"+ "\2\25\1\202\2\2\1\31\1\2\6\346\2\25\1\57"+ "\1\31\1\27\2\2\2\25\1\202\2\2\1\31\1\2"+ "\6\347\2\25\1\57\1\31\1\27\2\2\2\25\1\202"+ "\2\2\1\31\1\2\1\347\1\346\4\347\2\25\1\57"+ "\1\31\1\27\2\2\2\22\1\345\2\2\1\24\1\2"+ "\6\203\1\22\1\25\1\26\1\24\1\27\2\2\2\41"+ "\1\223\2\2\1\43\1\2\10\41\1\110\1\43\1\45"+ "\2\2\2\43\1\227\2\2\1\43\1\2\10\43\1\115"+ "\1\43\1\116\2\2\2\45\1\232\2\2\1\116\1\2"+ "\10\45\1\125\1\116\1\45\2\2\2\41\1\42\2\2"+ "\1\43\1\2\10\41\1\350\1\43\1\45\2\2\2\43"+ "\1\114\2\2\1\43\1\2\10\43\1\351\1\43\1\116"+ "\2\2\2\123\1\236\2\2\1\230\1\2\10\123\1\233"+ "\1\230\1\123\2\2\2\225\3\2\1\225\1\2\7\225"+ "\2\173\1\225\1\340\2\2\2\121\1\352\2\2\1\121"+ "\1\2\10\121\1\217\1\121\1\230\2\2\2\116\1\353"+ "\2\2\1\116\1\2\10\116\1\222\2\116\2\2\2\235"+ "\3\2\1\235\1\2\7\235\2\200\1\235\1\200\2\2"+ "\2\220\1\354\2\2\1\220\1\2\10\220\1\355\2\220"+ "\2\2\2\117\3\2\1\121\1\2\11\117\1\121\1\123"+ "\2\2\2\356\1\120\2\2\1\357\1\2\7\356\1\320"+ "\1\322\1\357\1\323\2\2\2\357\1\216\2\2\1\357"+ "\1\2\7\357\1\321\1\331\1\357\1\332\2\2\2\323"+ "\1\236\2\2\1\332\1\2\10\323\1\360\1\332\1\323"+ "\2\2\2\121\3\2\1\121\1\2\12\121\1\230\2\2"+ "\2\230\1\353\2\2\1\230\1\2\10\230\1\355\2\230"+ "\2\2\2\327\3\2\1\334\1\2\11\327\1\334\1\361"+ "\2\2\2\123\3\2\1\230\1\2\11\123\1\230\1\123"+ "\2\2\2\123\1\362\2\2\1\230\1\2\10\123\1\233"+ "\1\230\1\123\2\2\2\363\1\124\2\2\1\364\1\2"+ "\7\363\1\45\1\215\1\364\1\45\2\2\2\364\1\221"+ "\2\2\1\364\1\2\7\364\1\116\1\337\1\364\1\116"+ "\2\2\2\365\3\2\1\366\1\2\7\365\2\226\1\366"+ "\1\226\2\2\2\27\1\46\2\2\1\33\1\2\10\27"+ "\1\367\1\33\1\27\2\2\2\33\1\77\2\2\1\33"+ "\1\2\10\33\1\370\2\33\2\2\2\371\1\130\2\2"+ "\1\372\1\2\7\371\1\314\1\324\1\372\1\314\2\2"+ "\2\372\1\201\2\2\1\372\1\2\7\372\1\317\1\333"+ "\1\372\1\317\2\2\2\330\3\2\1\335\1\2\10\330"+ "\1\361\1\335\1\330\10\15\1\54\23\15\1\55\16\15"+ "\1\373\3\15\1\374\1\252\6\373\10\15\1\374\3\15"+ "\1\374\1\253\6\374\10\15\1\375\3\15\1\376\1\377"+ "\6\375\10\15\1\376\3\15\1\376\1\u0100\6\376\10\15"+ "\1\u0101\2\15\1\143\1\u0102\1\u0103\6\u0101\10\15\1\u0102"+ "\2\15\1\262\1\u0102\1\u0104\6\u0102\10\15\1\u0101\1\273"+ "\1\15\1\143\1\u0102\1\u0103\6\u0105\10\15\1\u0101\1\273"+ "\1\15\1\143\1\u0102\1\u0103\6\u0106\10\15\1\u0101\1\273"+ "\1\15\1\143\1\u0102\1\u0103\6\u0107\10\15\1\u0101\1\273"+ "\1\15\1\143\1\u0102\1\u0103\1\u0107\1\u0106\3\u0107\1\u0108"+ "\10\15\1\u0102\1\u0109\1\15\1\262\1\u0102\1\u0104\6\u010a"+ "\10\15\1\u0102\1\u0109\1\15\1\262\1\u0102\1\u0104\6\u010b"+ "\10\15\1\u0102\1\u0109\1\15\1\262\1\u0102\1\u0104\6\u010c"+ "\10\15\1\u0102\1\u0109\1\15\1\262\1\u0102\1\u0104\1\u010c"+ "\1\u010b\3\u010c\1\u010d\10\15\1\u010e\2\15\1\143\1\u010f"+ "\1\271\6\u010e\10\15\1\u010f\2\15\1\262\1\u010f\1\272"+ "\6\u010f\10\15\1\254\3\15\1\255\1\15\1\256\1\257"+ "\1\260\1\261\2\257\10\15\1\255\3\15\1\255\1\15"+ "\1\263\1\264\1\265\1\266\2\264\16\15\1\u0110\1\u0111"+ "\1\u0112\1\u0113\2\u0111\10\15\1\u010e\1\u0114\1\15\1\143"+ "\1\u010f\1\271\6\u0115\10\15\1\u010e\1\273\1\15\1\143"+ "\1\u010f\1\271\6\u0115\10\15\1\u010e\1\273\1\15\1\143"+ "\1\u010f\1\271\6\u0116\10\15\1\u010e\1\273\1\15\1\143"+ "\1\u010f\1\271\1\u0116\1\u0115\4\u0116\5\15\2\2\2\300"+ "\1\u0117\2\2\1\302\1\2\10\300\1\u0118\1\302\1\304"+ "\2\2\2\u0119\3\2\1\u011a\1\2\7\u0119\1\u011b\1\u011c"+ "\1\u011a\1\u011d\2\2\2\302\1\u011e\2\2\1\302\1\2"+ "\10\302\1\u011f\1\302\1\307\2\2\2\62\1\u0120\2\2"+ "\1\64\1\2\10\62\1\65\1\64\1\66\2\2\2\304"+ "\1\u0121\2\2\1\307\1\2\10\304\1\u0122\1\307\1\304"+ "\2\2\2\u011a\3\2\1\u011a\1\2\7\u011a\1\u0123\1\u0124"+ "\1\u011a\1\u0125\2\2\2\64\1\u0126\2\2\1\64\1\2"+ "\10\64\1\75\1\64\1\76\2\2\2\307\1\u0127\2\2"+ "\1\307\1\2\10\307\1\u0128\2\307\2\2\2\312\1\63"+ "\2\2\1\315\1\2\10\312\1\u0129\1\315\1\314\2\2"+ "\2\315\1\74\2\2\1\315\1\2\10\315\1\u012a\1\315"+ "\1\317\2\2\2\312\1\63\2\2\1\315\1\2\10\312"+ "\1\u012b\1\315\1\314\2\2\2\325\1\63\2\2\1\326"+ "\1\2\11\325\1\326\1\330\2\2\2\314\1\130\2\2"+ "\1\317\1\2\10\314\1\u012c\1\317\1\314\2\2\2\315"+ "\1\74\2\2\1\315\1\2\10\315\1\u012d\1\315\1\317"+ "\2\2\2\326\1\74\2\2\1\326\1\2\12\326\1\335"+ "\2\2\2\317\1\201\2\2\1\317\1\2\10\317\1\u012e"+ "\2\317\2\2\2\320\1\120\2\2\1\321\1\2\10\320"+ "\1\u012f\1\321\1\323\2\2\2\321\1\216\2\2\1\321"+ "\1\2\10\321\1\u0130\1\321\1\332\2\2\2\327\1\120"+ "\2\2\1\334\1\2\11\327\1\334\1\361\2\2\2\323"+ "\1\236\2\2\1\332\1\2\10\323\1\u0131\1\332\1\323"+ "\2\2\2\330\1\130\2\2\1\335\1\2\11\330\1\335"+ "\1\330\2\2\2\325\1\166\2\2\1\326\1\2\11\325"+ "\1\326\1\330\2\2\2\326\1\175\2\2\1\326\1\2"+ "\12\326\1\335\2\2\2\327\1\231\2\2\1\334\1\2"+ "\11\327\1\334\1\361\2\2\2\330\1\243\2\2\1\335"+ "\1\2\11\330\1\335\1\330\2\2\2\334\1\216\2\2"+ "\1\334\1\2\12\334\1\u0132\2\2\2\332\1\354\2\2"+ "\1\332\1\2\10\332\1\u0133\2\332\2\2\2\335\1\201"+ "\2\2\1\335\1\2\13\335\2\2\2\334\1\352\2\2"+ "\1\334\1\2\12\334\1\u0132\2\2\2\335\1\336\2\2"+ "\1\335\1\2\13\335\2\2\2\335\3\2\1\335\1\2"+ "\10\335\1\u0132\2\335\2\2\2\230\1\354\2\2\1\230"+ "\1\2\10\230\1\355\2\230\2\2\2\332\1\354\2\2"+ "\1\332\1\2\10\332\1\u0134\2\332\2\2\2\22\1\u0135"+ "\2\2\1\24\1\2\6\u0136\1\22\1\25\1\26\1\24"+ "\1\27\2\2\2\22\1\u0135\2\2\1\24\1\2\6\u0137"+ "\1\22\1\25\1\26\1\24\1\27\2\2\2\22\1\u0135"+ "\2\2\1\24\1\2\6\u0138\1\22\1\25\1\26\1\24"+ "\1\27\2\2\2\22\1\u0135\2\2\1\24\1\2\1\u0138"+ "\1\u0137\3\u0138\1\u0139\1\22\1\25\1\26\1\24\1\27"+ "\2\2\2\4\3\2\1\5\1\2\6\u013a\1\4\1\12"+ "\1\13\1\5\1\14\2\2\2\25\1\345\2\2\1\31"+ "\1\2\6\346\2\25\1\61\1\31\1\27\2\2\2\25"+ "\1\202\2\2\1\31\1\2\6\346\2\25\1\61\1\31"+ "\1\27\2\2\2\210\1\120\2\2\1\211\1\2\10\210"+ "\1\u013b\1\211\1\212\2\2\2\211\1\216\2\2\1\211"+ "\1\2\10\211\1\u013c\1\211\1\220\2\2\2\334\3\2"+ "\1\334\1\2\12\334\1\u0132\2\2\2\230\3\2\1\230"+ "\1\2\13\230\2\2\2\366\3\2\1\366\1\2\7\366"+ "\2\340\1\366\1\340\2\2\2\230\1\u013d\2\2\1\230"+ "\1\2\10\230\1\355\2\230\2\2\2\320\1\120\2\2"+ "\1\321\1\2\10\320\1\u013e\1\321\1\323\2\2\2\321"+ "\1\216\2\2\1\321\1\2\10\321\1\u013f\1\321\1\332"+ "\2\2\2\361\1\236\2\2\1\u0132\1\2\11\361\1\u0132"+ "\1\361\2\2\2\361\1\362\2\2\1\u0132\1\2\11\361"+ "\1\u0132\1\361\2\2\2\361\3\2\1\u0132\1\2\11\361"+ "\1\u0132\1\361\2\2\2\45\1\124\2\2\1\116\1\2"+ "\10\45\1\u0140\1\116\1\45\2\2\2\116\1\221\2\2"+ "\1\116\1\2\10\116\1\u0141\2\116\2\2\2\u0142\1\236"+ "\2\2\1\u0143\1\2\7\u0142\1\323\1\360\1\u0143\1\323"+ "\2\2\2\u0143\1\354\2\2\1\u0143\1\2\7\u0143\1\332"+ "\1\u0134\1\u0143\1\332\2\2\2\154\1\130\2\2\1\156"+ "\1\2\10\154\1\u0144\1\156\1\154\2\2\2\156\1\201"+ "\2\2\1\156\1\2\10\156\1\u0145\2\156\2\2\2\314"+ "\1\130\2\2\1\317\1\2\10\314\1\u0146\1\317\1\314"+ "\2\2\2\317\1\201\2\2\1\317\1\2\10\317\1\u0147"+ "\2\317\3\15\1\u0148\3\15\1\u0149\1\252\6\u0148\10\15"+ "\1\u0149\3\15\1\u0149\1\253\6\u0149\10\15\1\u014a\3\15"+ "\1\u014b\1\u014c\6\u014a\10\15\1\u014b\3\15\1\u014b\1\u014d"+ "\6\u014b\10\15\1\u014e\2\15\1\143\1\u014f\1\15\1\u0150"+ "\1\u0151\1\u0152\1\u0153\2\u0151\10\15\1\u014f\2\15\1\262"+ "\1\u014f\1\15\1\u0154\1\u0155\1\u0156\1\u0157\2\u0155\10\15"+ "\1\u0158\2\15\1\143\1\u0159\1\u0103\6\u0158\10\15\1\u0159"+ "\2\15\1\262\1\u0159\1\u0104\6\u0159\10\15\1\u014e\3\15"+ "\1\u014f\1\15\1\u0150\1\u0151\1\u0152\1\u0153\2\u0151\10\15"+ "\1\u014f\3\15\1\u014f\1\15\1\u0154\1\u0155\1\u0156\1\u0157"+ "\2\u0155\10\15\1\u0158\1\u0114\1\15\1\143\1\u0159\1\u0103"+ "\6\u015a\10\15\1\u0158\1\273\1\15\1\143\1\u0159\1\u0103"+ "\6\u015a\10\15\1\u0158\1\273\1\15\1\143\1\u0159\1\u0103"+ "\6\u015b\10\15\1\u0158\1\273\1\15\1\143\1\u0159\1\u0103"+ "\1\u015b\1\u015a\4\u015b\16\15\1\u015c\1\u015d\1\u015e\1\u015f"+ "\2\u015d\10\15\1\u0159\1\u0160\1\15\1\262\1\u0159\1\u0104"+ "\6\u0161\10\15\1\u0159\1\u0109\1\15\1\262\1\u0159\1\u0104"+ "\6\u0161\10\15\1\u0159\1\u0109\1\15\1\262\1\u0159\1\u0104"+ "\6\u0162\10\15\1\u0159\1\u0109\1\15\1\262\1\u0159\1\u0104"+ "\1\u0162\1\u0161\4\u0162\10\15\1\u0163\2\15\1\143\1\u0164"+ "\1\271\6\u0163\10\15\1\u0164\2\15\1\262\1\u0164\1\272"+ "\6\u0164\11\15\1\u0165\4\15\6\u0166\11\15\1\u0165\4\15"+ "\6\u0110\11\15\1\u0165\4\15\6\u0111\11\15\1\u0165\4\15"+ "\1\u0111\1\u0110\3\u0111\1\u0167\16\15\6\u0166\10\15\1\u0163"+ "\1\u0114\1\15\1\143\1\u0164\1\271\6\u0168\10\15\1\u0163"+ "\1\273\1\15\1\143\1\u0164\1\271\6\u0168\5\15\2\2"+ "\2\u0169\3\2\1\u016a\1\2\7\u0169\1\u016b\1\u016c\1\u016a"+ "\1\u016d\2\2\2\u016e\1\u0120\2\2\1\u016f\1\2\10\u016e"+ "\1\65\1\u016f\1\u0170\2\2\2\u0171\1\301\2\2\1\u0172"+ "\1\2\7\u0171\1\u0173\1\u0174\1\u0172\1\u0175\2\2\2\u0172"+ "\1\305\2\2\1\u0172\1\2\7\u0172\1\u0176\1\u0177\1\u0172"+ "\1\u0178\2\2\2\u0173\1\301\2\2\1\u0176\1\2\10\u0173"+ "\1\u0174\1\u0176\1\u0175\2\2\2\u0179\1\u017a\2\2\1\u017b"+ "\1\2\10\u0179\1\u017c\1\u017b\1\u017d\2\2\2\u0175\1\u017e"+ "\2\2\1\u0178\1\2\10\u0175\1\u017f\1\u0178\1\u0175\2\2"+ "\2\u016a\3\2\1\u016a\1\2\7\u016a\1\u0180\1\u0181\1\u016a"+ "\1\u0182\2\2\2\u016f\1\u0126\2\2\1\u016f\1\2\10\u016f"+ "\1\75\1\u016f\1\u0183\2\2\2\u0184\3\2\1\u0185\1\2"+ "\7\u0184\1\u0186\1\u0187\1\u0185\1\u0188\2\2\2\u0189\3\2"+ "\1\u018a\1\2\7\u0189\1\u016d\1\u018b\1\u018a\1\u016d\2\2"+ "\2\u0170\1\u018c\2\2\1\u0183\1\2\10\u0170\1\131\1\u0183"+ "\1\u0170\2\2\2\u0176\1\305\2\2\1\u0176\1\2\10\u0176"+ "\1\u0177\1\u0176\1\u0178\2\2\2\u017b\1\u018d\2\2\1\u017b"+ "\1\2\10\u017b\1\u018e\1\u017b\1\u018f\2\2\2\u0178\1\u0190"+ "\2\2\1\u0178\1\2\10\u0178\1\u0191\2\u0178\2\2\2\u0185"+ "\3\2\1\u0185\1\2\7\u0185\1\u0192\1\u0193\1\u0185\1\u0194"+ "\2\2\2\u018a\3\2\1\u018a\1\2\7\u018a\1\u0182\1\u0195"+ "\1\u018a\1\u0182\2\2\2\u0183\1\u0196\2\2\1\u0183\1\2"+ "\10\u0183\1\177\2\u0183\2\2\2\u0197\1\63\2\2\1\u0198"+ "\1\2\10\u0197\1\u0186\1\u0198\1\u0199\2\2\2\u0198\1\74"+ "\2\2\1\u0198\1\2\10\u0198\1\u0192\1\u0198\1\u019a\2\2"+ "\2\u0197\1\63\2\2\1\u0198\1\2\10\u0197\1\325\1\u0198"+ "\1\u0199\2\2\2\u0199\1\130\2\2\1\u019a\1\2\10\u0199"+ "\1\330\1\u019a\1\u0199\2\2\2\u0198\1\74\2\2\1\u0198"+ "\1\2\10\u0198\1\326\1\u0198\1\u019a\2\2\2\u019a\1\201"+ "\2\2\1\u019a\1\2\10\u019a\1\335\2\u019a\2\2\2\u019b"+ "\1\120\2\2\1\u019c\1\2\10\u019b\1\327\1\u019c\1\u019d"+ "\2\2\2\u019c\1\216\2\2\1\u019c\1\2\10\u019c\1\334"+ "\1\u019c\1\u019e\2\2\2\u019d\1\236\2\2\1\u019e\1\2"+ "\10\u019d\1\361\1\u019e\1\u019d\2\2\2\u0132\1\u013d\2\2"+ "\1\u0132\1\2\13\u0132\2\2\2\u019e\1\354\2\2\1\u019e"+ "\1\2\10\u019e\1\u0132\2\u019e\2\2\2\u0132\1\354\2\2"+ "\1\u0132\1\2\13\u0132\2\2\2\4\3\2\1\5\1\2"+ "\1\u019f\1\u01a0\1\u01a1\1\u01a2\2\u01a0\1\4\1\12\1\13"+ "\1\5\1\14\2\2\2\25\1\u01a3\2\2\1\31\1\2"+ "\6\u01a4\2\25\1\57\1\31\1\27\2\2\2\25\1\u0135"+ "\2\2\1\31\1\2\6\u01a4\2\25\1\57\1\31\1\27"+ "\2\2\2\25\1\u0135\2\2\1\31\1\2\6\u01a5\2\25"+ "\1\57\1\31\1\27\2\2\2\25\1\u0135\2\2\1\31"+ "\1\2\1\u01a5\1\u01a4\4\u01a5\2\25\1\57\1\31\1\27"+ "\2\2\2\22\1\u01a3\2\2\1\24\1\2\6\u0136\1\22"+ "\1\25\1\26\1\24\1\27\2\2\2\u01a6\1\u017a\2\2"+ "\1\u01a7\1\2\10\u01a6\1\u01a8\1\u01a7\1\u01a9\2\2\2\u01a7"+ "\1\u018d\2\2\1\u01a7\1\2\10\u01a7\1\u01aa\1\u01a7\1\u01ab"+ "\2\2\2\u0132\3\2\1\u0132\1\2\13\u0132\2\2\2\u019b"+ "\1\120\2\2\1\u019c\1\2\10\u019b\1\u0187\1\u019c\1\u019d"+ "\2\2\2\u019c\1\216\2\2\1\u019c\1\2\10\u019c\1\u0193"+ "\1\u019c\1\u019e\2\2\2\212\1\236\2\2\1\220\1\2"+ "\10\212\1\u01ac\1\220\1\212\2\2\2\220\1\354\2\2"+ "\1\220\1\2\10\220\1\u01ad\2\220\2\2\2\323\1\236"+ "\2\2\1\332\1\2\10\323\1\u01ae\1\332\1\323\2\2"+ "\2\332\1\354\2\2\1\332\1\2\10\332\1\u01af\2\332"+ "\2\2\2\304\1\u017e\2\2\1\307\1\2\10\304\1\u01b0"+ "\1\307\1\304\2\2\2\307\1\u0190\2\2\1\307\1\2"+ "\10\307\1\u01b1\2\307\2\2\2\u0199\1\130\2\2\1\u019a"+ "\1\2\10\u0199\1\u0188\1\u019a\1\u0199\2\2\2\u019a\1\201"+ "\2\2\1\u019a\1\2\10\u019a\1\u0194\2\u019a\10\15\1\252"+ "\23\15\1\253\16\15\1\u01b2\3\15\1\u01b3\1\u014c\6\u01b2"+ "\10\15\1\u01b3\3\15\1\u01b3\1\u014d\6\u01b3\10\15\1\u01b4"+ "\3\15\1\u01b5\1\u01b6\6\u01b4\10\15\1\u01b5\3\15\1\u01b5"+ "\1\u01b7\6\u01b5\10\15\1\u01b8\2\15\1\143\1\u01b9\1\u01ba"+ "\6\u01b8\10\15\1\u01b9\2\15\1\262\1\u01b9\1\u01bb\6\u01b9"+ "\10\15\1\u01b8\1\273\1\15\1\143\1\u01b9\1\u01ba\6\u01bc"+ "\10\15\1\u01b8\1\273\1\15\1\143\1\u01b9\1\u01ba\6\u01bd"+ "\10\15\1\u01b8\1\273\1\15\1\143\1\u01b9\1\u01ba\6\u01be"+ "\10\15\1\u01b8\1\273\1\15\1\143\1\u01b9\1\u01ba\1\u01be"+ "\1\u01bd\3\u01be\1\u01bf\10\15\1\u01b9\1\u0109\1\15\1\262"+ "\1\u01b9\1\u01bb\6\u01c0\10\15\1\u01b9\1\u0109\1\15\1\262"+ "\1\u01b9\1\u01bb\6\u01c1\10\15\1\u01b9\1\u0109\1\15\1\262"+ "\1\u01b9\1\u01bb\6\u01c2\10\15\1\u01b9\1\u0109\1\15\1\262"+ "\1\u01b9\1\u01bb\1\u01c2\1\u01c1\3\u01c2\1\u01c3\10\15\1\u01c4"+ "\2\15\1\143\1\u01c5\1\u0103\6\u01c4\10\15\1\u01c5\2\15"+ "\1\262\1\u01c5\1\u0104\6\u01c5\10\15\1\u01c4\1\u0114\1\15"+ "\1\143\1\u01c5\1\u0103\6\u01c6\10\15\1\u01c4\1\273\1\15"+ "\1\143\1\u01c5\1\u0103\6\u01c6\11\15\1\u01c7\4\15\6\u01c8"+ "\11\15\1\u01c7\4\15\6\u015c\11\15\1\u01c7\4\15\6\u015d"+ "\11\15\1\u01c7\4\15\1\u015d\1\u015c\3\u015d\1\u01c9\16\15"+ "\6\u01c8\10\15\1\u01c5\1\u0160\1\15\1\262\1\u01c5\1\u0104"+ "\6\u01ca\10\15\1\u01c5\1\u0109\1\15\1\262\1\u01c5\1\u0104"+ "\6\u01ca\13\15\1\143\1\15\1\271\21\15\1\262\1\15"+ "\1\272\24\15\1\u01cb\1\u01cc\1\u01cd\1\u01ce\2\u01cc\11\15"+ "\1\u01cf\4\15\6\u0166\11\15\1\u0165\4\15\1\u0110\1\u0166"+ "\4\u0110\11\15\1\u0114\1\15\1\143\1\15\1\271\6\u01d0"+ "\5\15\2\2\2\u01d1\1\u0117\2\2\1\u01d2\1\2\7\u01d1"+ "\1\300\1\303\1\u01d2\1\304\2\2\2\u01d2\1\u011e\2\2"+ "\1\u01d2\1\2\7\u01d2\1\302\1\306\1\u01d2\1\307\2\2"+ "\2\300\1\u0117\2\2\1\302\1\2\10\300\1\303\1\302"+ "\1\304\2\2\2\u01a6\1\u01d3\2\2\1\u01a7\1\2\10\u01a6"+ "\1\u01a8\1\u01a7\1\u01a9\2\2\2\304\1\u0121\2\2\1\307"+ "\1\2\10\304\1\u01b0\1\307\1\304\2\2\2\300\1\157"+ "\2\2\1\302\1\2\10\300\1\u0118\1\302\1\304\2\2"+ "\2\302\1\165\2\2\1\302\1\2\10\302\1\u011f\1\302"+ "\1\307\2\2\2\304\1\167\2\2\1\307\1\2\10\304"+ "\1\u0122\1\307\1\304\2\2\2\u0173\1\301\2\2\1\u0176"+ "\1\2\10\u0173\1\u01d4\1\u0176\1\u0175\2\2\2\u0176\1\305"+ "\2\2\1\u0176\1\2\10\u0176\1\u01d5\1\u0176\1\u0178\2\2"+ "\2\u0173\1\301\2\2\1\u0176\1\2\10\u0173\1\u01d6\1\u0176"+ "\1\u0175\2\2\2\325\1\u0120\2\2\1\326\1\2\11\325"+ "\1\326\1\330\2\2\2\u0175\1\u017e\2\2\1\u0178\1\2"+ "\10\u0175\1\u01d7\1\u0178\1\u0175\2\2\2\u0176\1\305\2\2"+ "\1\u0176\1\2\10\u0176\1\u01d8\1\u0176\1\u0178\2\2\2\326"+ "\1\u0126\2\2\1\326\1\2\12\326\1\335\2\2\2\u0178"+ "\1\u0190\2\2\1\u0178\1\2\10\u0178\1\u01d9\2\u0178\2\2"+ "\2\u0179\1\u017a\2\2\1\u017b\1\2\10\u0179\1\u01da\1\u017b"+ "\1\u017d\2\2\2\u01db\3\2\1\u01dc\1\2\7\u01db\2\u011c"+ "\1\u01dc\1\u01dd\2\2\2\u017b\1\u018d\2\2\1\u017b\1\2"+ "\10\u017b\1\u01de\1\u017b\1\u018f\2\2\2\327\1\u01df\2\2"+ "\1\334\1\2\11\327\1\334\1\361\2\2\2\u017d\1\u01e0"+ "\2\2\1\u018f\1\2\10\u017d\1\u01e1\1\u018f\1\u017d\2\2"+ "\2\u01e2\3\2\1\u01e3\1\2\7\u01e2\1\u011d\1\u01dd\1\u01e3"+ "\1\u011d\2\2\2\330\1\u018c\2\2\1\335\1\2\11\330"+ "\1\335\1\330\2\2\2\302\1\u011e\2\2\1\302\1\2"+ "\10\302\1\306\1\302\1\307\2\2\2\u01a7\1\u01e4\2\2"+ "\1\u01a7\1\2\10\u01a7\1\u01aa\1\u01a7\1\u01ab\2\2\2\307"+ "\1\u0127\2\2\1\307\1\2\10\307\1\u01b1\2\307\2\2"+ "\2\307\1\176\2\2\1\307\1\2\10\307\1\u0128\2\307"+ "\2\2\2\u01e5\1\u0120\2\2\1\u01e6\1\2\7\u01e5\1\u01e7"+ "\1\u0174\1\u01e6\1\u01e8\2\2\2\u01e6\1\u0126\2\2\1\u01e6"+ "\1\2\7\u01e6\1\u01e9\1\u0177\1\u01e6\1\u01ea\2\2\2\u01e7"+ "\1\u0120\2\2\1\u01e9\1\2\10\u01e7\1\u0174\1\u01e9\1\u01e8"+ "\2\2\2\u01eb\1\u01df\2\2\1\u01ec\1\2\10\u01eb\1\u017c"+ "\1\u01ec\1\u01ed\2\2\2\u01e8\1\u018c\2\2\1\u01ea\1\2"+ "\10\u01e8\1\u017f\1\u01ea\1\u01e8\2\2\2\u01ee\1\u0121\2\2"+ "\1\u01ef\1\2\7\u01ee\1\304\1\u01b0\1\u01ef\1\304\2\2"+ "\2\u01ef\1\u0127\2\2\1\u01ef\1\2\7\u01ef\1\307\1\u01b1"+ "\1\u01ef\1\307\2\2\2\u01a9\1\u01f0\2\2\1\u01ab\1\2"+ "\10\u01a9\1\u01f1\1\u01ab\1\u01a9\2\2\2\u01f2\3\2\1\u01f3"+ "\1\2\7\u01f2\1\u0188\1\u01f4\1\u01f3\1\u0188\2\2\2\u01dc"+ "\3\2\1\u01dc\1\2\7\u01dc\2\u0124\1\u01dc\1\u01f5\2\2"+ "\2\334\1\u01f6\2\2\1\334\1\2\12\334\1\u0132\2\2"+ "\2\u018f\1\u01f7\2\2\1\u018f\1\2\10\u018f\1\u01f8\2\u018f"+ "\2\2\2\u01e3\3\2\1\u01e3\1\2\7\u01e3\1\u0125\1\u01f5"+ "\1\u01e3\1\u0125\2\2\2\335\1\u0196\2\2\1\335\1\2"+ "\13\335\2\2\2\u01e9\1\u0126\2\2\1\u01e9\1\2\10\u01e9"+ "\1\u0177\1\u01e9\1\u01ea\2\2\2\u01ec\1\u01f6\2\2\1\u01ec"+ "\1\2\10\u01ec\1\u018e\1\u01ec\1\u01f9\2\2\2\u01ea\1\u0196"+ "\2\2\1\u01ea\1\2\10\u01ea\1\u0191\2\u01ea\2\2\2\u01ab"+ "\1\u01fa\2\2\1\u01ab\1\2\10\u01ab\1\u01fb\2\u01ab\2\2"+ "\2\u01f3\3\2\1\u01f3\1\2\7\u01f3\1\u0194\1\u01fc\1\u01f3"+ "\1\u0194\2\2\2\312\1\166\2\2\1\315\1\2\10\312"+ "\1\u012b\1\315\1\314\2\2\2\315\1\175\2\2\1\315"+ "\1\2\10\315\1\u012d\1\315\1\317\2\2\2\314\1\243"+ "\2\2\1\317\1\2\10\314\1\u012c\1\317\1\314\2\2"+ "\2\317\1\336\2\2\1\317\1\2\10\317\1\u012e\2\317"+ "\2\2\2\320\1\231\2\2\1\321\1\2\10\320\1\u012f"+ "\1\321\1\323\2\2\2\321\1\352\2\2\1\321\1\2"+ "\10\321\1\u0130\1\321\1\332\2\2\2\323\1\362\2\2"+ "\1\332\1\2\10\323\1\u0131\1\332\1\323\2\2\2\332"+ "\1\u013d\2\2\1\332\1\2\10\332\1\u0133\2\332\2\2"+ "\2\22\1\23\2\2\1\24\1\2\6\u01fd\1\22\1\25"+ "\1\26\1\24\1\27\2\2\2\22\1\23\2\2\1\24"+ "\1\2\6\u01fe\1\22\1\25\1\26\1\24\1\27\2\2"+ "\2\22\1\23\2\2\1\24\1\2\6\u01ff\1\22\1\25"+ "\1\26\1\24\1\27\2\2\2\22\1\23\2\2\1\24"+ "\1\2\1\u01ff\1\u01fe\3\u01ff\1\u0200\1\22\1\25\1\26"+ "\1\24\1\27\2\2\2\4\3\2\1\5\1\2\6\u0201"+ "\1\4\1\12\1\13\1\5\1\14\2\2\2\25\1\u01a3"+ "\2\2\1\31\1\2\6\u01a4\2\25\1\61\1\31\1\27"+ "\2\2\2\25\1\u0135\2\2\1\31\1\2\6\u01a4\2\25"+ "\1\61\1\31\1\27\2\2\2\u01a6\1\u01d3\2\2\1\u01a7"+ "\1\2\10\u01a6\1\u0202\1\u01a7\1\u01a9\2\2\2\u01a7\1\u01e4"+ "\2\2\1\u01a7\1\2\10\u01a7\1\u0203\1\u01a7\1\u01ab\2\2"+ "\2\117\1\u01df\2\2\1\121\1\2\10\117\1\122\1\121"+ "\1\123\2\2\2\u01a9\1\u01f0\2\2\1\u01ab\1\2\10\u01a9"+ "\1\u0204\1\u01ab\1\u01a9\2\2\2\121\1\u01f6\2\2\1\121"+ "\1\2\10\121\1\217\1\121\1\230\2\2\2\u01ab\1\u01fa"+ "\2\2\1\u01ab\1\2\10\u01ab\1\u0205\2\u01ab\2\2\2\u01a9"+ "\1\u01e0\2\2\1\u01ab\1\2\10\u01a9\1\u01f1\1\u01ab\1\u01a9"+ "\2\2\2\u01ab\1\u01f7\2\2\1\u01ab\1\2\10\u01ab\1\u01fb"+ "\2\u01ab\2\2\2\u019d\1\236\2\2\1\u019e\1\2\10\u019d"+ "\1\u01f4\1\u019e\1\u019d\2\2\2\u019e\1\354\2\2\1\u019e"+ "\1\2\10\u019e\1\u01fc\2\u019e\2\2\2\66\1\u018c\2\2"+ "\1\76\1\2\10\66\1\131\1\76\1\66\2\2\2\76"+ "\1\u0196\2\2\1\76\1\2\10\76\1\177\2\76\3\15"+ "\1\u0206\3\15\1\u0207\1\u014c\6\u0206\10\15\1\u0207\3\15"+ "\1\u0207\1\u014d\6\u0207\10\15\1\u0208\3\15\1\u0209\1\u020a"+ "\6\u0208\10\15\1\u0209\3\15\1\u0209\1\u020b\6\u0209\10\15"+ "\1\u020c\2\15\1\143\1\u020d\1\15\1\u020e\1\u020f\1\u0210"+ "\1\u0211\2\u020f\10\15\1\u020d\2\15\1\262\1\u020d\1\15"+ "\1\u0212\1\u0213\1\u0214\1\u0215\2\u0213\10\15\1\u0216\2\15"+ "\1\143\1\u0217\1\u01ba\6\u0216\10\15\1\u0217\2\15\1\262"+ "\1\u0217\1\u01bb\6\u0217\10\15\1\u020c\3\15\1\u020d\1\15"+ "\1\u020e\1\u020f\1\u0210\1\u0211\2\u020f\10\15\1\u020d\3\15"+ "\1\u020d\1\15\1\u0212\1\u0213\1\u0214\1\u0215\2\u0213\10\15"+ "\1\u0216\1\u0114\1\15\1\143\1\u0217\1\u01ba\6\u0218\10\15"+ "\1\u0216\1\273\1\15\1\143\1\u0217\1\u01ba\6\u0218\10\15"+ "\1\u0216\1\273\1\15\1\143\1\u0217\1\u01ba\6\u0219\10\15"+ "\1\u0216\1\273\1\15\1\143\1\u0217\1\u01ba\1\u0219\1\u0218"+ "\4\u0219\10\15\1\u0217\1\u0160\1\15\1\262\1\u0217\1\u01bb"+ "\6\u021a\10\15\1\u0217\1\u0109\1\15\1\262\1\u0217\1\u01bb"+ "\6\u021a\10\15\1\u0217\1\u0109\1\15\1\262\1\u0217\1\u01bb"+ "\6\u021b\10\15\1\u0217\1\u0109\1\15\1\262\1\u0217\1\u01bb"+ "\1\u021b\1\u021a\4\u021b\13\15\1\143\1\15\1\u0103\21\15"+ "\1\262\1\15\1\u0104\17\15\1\u0114\1\15\1\143\1\15"+ "\1\u0103\6\u01d0\16\15\1\u021c\1\u021d\1\u021e\1\u021f\2\u021d"+ "\11\15\1\u0220\4\15\6\u01c8\11\15\1\u01c7\4\15\1\u015c"+ "\1\u01c8\4\u015c\11\15\1\u0160\1\15\1\262\1\15\1\u0104"+ "\6\u0221\11\15\1\u0222\4\15\6\u0223\11\15\1\u0222\4\15"+ "\6\u01cb\11\15\1\u0222\4\15\6\u01cc\11\15\1\u0222\4\15"+ "\1\u01cc\1\u01cb\3\u01cc\1\u0224\16\15\6\u0223\11\15\1\u0114"+ "\4\15\6\u01d0\5\15\2\2\2\300\1\u0117\2\2\1\302"+ "\1\2\10\300\1\u0225\1\302\1\304\2\2\2\302\1\u011e"+ "\2\2\1\302\1\2\10\302\1\u0226\1\302\1\307\2\2"+ "\2\u0227\3\2\1\u0228\1\2\7\u0227\2\u016c\1\u0228\1\u018b"+ "\2\2\2\u0229\1\u0120\2\2\1\u022a\1\2\10\u0229\1\u011b"+ "\1\u022a\1\u022b\2\2\2\u022a\1\u0126\2\2\1\u022a\1\2"+ "\10\u022a\1\u0123\1\u022a\1\u022c\2\2\2\u0229\1\u0120\2\2"+ "\1\u022a\1\2\10\u0229\1\325\1\u022a\1\u022b\2\2\2\u022b"+ "\1\u018c\2\2\1\u022c\1\2\10\u022b\1\330\1\u022c\1\u022b"+ "\2\2\2\u022a\1\u0126\2\2\1\u022a\1\2\10\u022a\1\326"+ "\1\u022a\1\u022c\2\2\2\u022c\1\u0196\2\2\1\u022c\1\2"+ "\10\u022c\1\335\2\u022c\2\2\2\u022d\1\u01df\2\2\1\u022e"+ "\1\2\10\u022d\1\327\1\u022e\1\u022f\2\2\2\u0230\1\u017a"+ "\2\2\1\u0231\1\2\7\u0230\1\u0179\1\u017c\1\u0231\1\u017d"+ "\2\2\2\u0231\1\u018d\2\2\1\u0231\1\2\7\u0231\1\u017b"+ "\1\u018e\1\u0231\1\u018f\2\2\2\u017d\1\u01e0\2\2\1\u018f"+ "\1\2\10\u017d\1\u0232\1\u018f\1\u017d\2\2\2\u022e\1\u01f6"+ "\2\2\1\u022e\1\2\10\u022e\1\334\1\u022e\1\u0233\2\2"+ "\2\u0234\3\2\1\u0235\1\2\7\u0234\2\u0187\1\u0235\1\u01f4"+ "\2\2\2\u0236\3\2\1\u0237\1\2\7\u0236\2\u01dd\1\u0237"+ "\1\u01dd\2\2\2\u022f\1\u0238\2\2\1\u0233\1\2\10\u022f"+ "\1\361\1\u0233\1\u022f\2\2\2\u0239\1\u017e\2\2\1\u023a"+ "\1\2\7\u0239\1\u0175\1\u017f\1\u023a\1\u0175\2\2\2\u023a"+ "\1\u0190\2\2\1\u023a\1\2\7\u023a\1\u0178\1\u0191\1\u023a"+ "\1\u0178\2\2\2\u0228\3\2\1\u0228\1\2\7\u0228\2\u0181"+ "\1\u0228\1\u0195\2\2\2\u01e7\1\u0120\2\2\1\u01e9\1\2"+ "\10\u01e7\1\u023b\1\u01e9\1\u01e8\2\2\2\u01e9\1\u0126\2\2"+ "\1\u01e9\1\2\10\u01e9\1\u023c\1\u01e9\1\u01ea\2\2\2\u01e7"+ "\1\u0120\2\2\1\u01e9\1\2\10\u01e7\1\u023d\1\u01e9\1\u01e8"+ "\2\2\2\u01e8\1\u018c\2\2\1\u01ea\1\2\10\u01e8\1\u023e"+ "\1\u01ea\1\u01e8\2\2\2\u01e9\1\u0126\2\2\1\u01e9\1\2"+ "\10\u01e9\1\u023f\1\u01e9\1\u01ea\2\2\2\u01ea\1\u0196\2\2"+ "\1\u01ea\1\2\10\u01ea\1\u0240\2\u01ea\2\2\2\u01eb\1\u01df"+ "\2\2\1\u01ec\1\2\10\u01eb\1\u0241\1\u01ec\1\u01ed\2\2"+ "\2\u01ec\1\u01f6\2\2\1\u01ec\1\2\10\u01ec\1\u0242\1\u01ec"+ "\1\u01f9\2\2\2\u01ed\1\u0238\2\2\1\u01f9\1\2\10\u01ed"+ "\1\u0243\1\u01f9\1\u01ed\2\2\2\304\1\u0121\2\2\1\307"+ "\1\2\10\304\1\u0244\1\307\1\304\2\2\2\307\1\u0127"+ "\2\2\1\307\1\2\10\307\1\u0245\2\307\2\2\2\u0246"+ "\3\2\1\u0247\1\2\7\u0246\2\u018b\1\u0247\1\u018b\2\2"+ "\2\123\1\u0238\2\2\1\230\1\2\10\123\1\233\1\230"+ "\1\123\2\2\2\u0248\1\u018c\2\2\1\u0249\1\2\7\u0248"+ "\1\u01e8\1\u017f\1\u0249\1\u01e8\2\2\2\u0249\1\u0196\2\2"+ "\1\u0249\1\2\7\u0249\1\u01ea\1\u0191\1\u0249\1\u01ea\2\2"+ "\2\u01ed\1\u0238\2\2\1\u01f9\1\2\10\u01ed\1\u0232\1\u01f9"+ "\1\u01ed\2\2\2\u018f\1\u01f7\2\2\1\u018f\1\2\10\u018f"+ "\1\u024a\2\u018f\2\2\2\u0235\3\2\1\u0235\1\2\7\u0235"+ "\2\u0193\1\u0235\1\u01fc\2\2\2\u0237\3\2\1\u0237\1\2"+ "\7\u0237\2\u01f5\1\u0237\1\u01f5\2\2\2\u0233\1\u024b\2\2"+ "\1\u0233\1\2\10\u0233\1\u0132\2\u0233\2\2\2\u01f9\1\u024b"+ "\2\2\1\u01f9\1\2\10\u01f9\1\u024c\2\u01f9\2\2\2\u0247"+ "\3\2\1\u0247\1\2\7\u0247\2\u0195\1\u0247\1\u0195\2\2"+ "\2\230\1\u024b\2\2\1\230\1\2\10\230\1\355\2\230"+ "\2\2\2\u01f9\1\u024b\2\2\1\u01f9\1\2\10\u01f9\1\u024a"+ "\2\u01f9\2\2\2\25\1\23\2\2\1\31\1\2\6\u024d"+ "\2\25\1\57\1\31\1\27\2\2\2\25\1\23\2\2"+ "\1\31\1\2\6\u024e\2\25\1\57\1\31\1\27\2\2"+ "\2\25\1\23\2\2\1\31\1\2\1\u024e\1\u024d\4\u024e"+ "\2\25\1\57\1\31\1\27\2\2\2\u024f\1\u01df\2\2"+ "\1\u0250\1\2\10\u024f\1\122\1\u0250\1\u0251\2\2\2\u0250"+ "\1\u01f6\2\2\1\u0250\1\2\10\u0250\1\217\1\u0250\1\u0252"+ "\2\2\2\u0251\1\u0238\2\2\1\u0252\1\2\10\u0251\1\233"+ "\1\u0252\1\u0251\2\2\2\u0252\1\u024b\2\2\1\u0252\1\2"+ "\10\u0252\1\355\2\u0252\10\15\1\u014c\23\15\1\u014d\16\15"+ "\1\u0253\3\15\1\u0254\1\u020a\6\u0253\10\15\1\u0254\3\15"+ "\1\u0254\1\u020b\6\u0254\10\15\1\u0255\3\15\1\u0256\1\u0257"+ "\6\u0255\10\15\1\u0256\3\15\1\u0256\1\u0258\6\u0256\10\15"+ "\1\u0259\2\15\1\143\1\u025a\1\u025b\6\u0259\10\15\1\u025a"+ "\2\15\1\262\1\u025a\1\u025c\6\u025a\10\15\1\u0259\1\273"+ "\1\15\1\143\1\u025a\1\u025b\6\u025d\10\15\1\u0259\1\273"+ "\1\15\1\143\1\u025a\1\u025b\6\u025e\10\15\1\u0259\1\273"+ "\1\15\1\143\1\u025a\1\u025b\6\u025f\10\15\1\u0259\1\273"+ "\1\15\1\143\1\u025a\1\u025b\1\u025f\1\u025e\3\u025f\1\u0260"+ "\10\15\1\u025a\1\u0109\1\15\1\262\1\u025a\1\u025c\6\u0261"+ "\10\15\1\u025a\1\u0109\1\15\1\262\1\u025a\1\u025c\6\u0262"+ "\10\15\1\u025a\1\u0109\1\15\1\262\1\u025a\1\u025c\6\u0263"+ "\10\15\1\u025a\1\u0109\1\15\1\262\1\u025a\1\u025c\1\u0263"+ "\1\u0262\3\u0263\1\u0264\10\15\1\u0265\2\15\1\143\1\u0266"+ "\1\u01ba\6\u0265\10\15\1\u0266\2\15\1\262\1\u0266\1\u01bb"+ "\6\u0266\10\15\1\u0265\1\u0114\1\15\1\143\1\u0266\1\u01ba"+ "\6\u0267\10\15\1\u0265\1\273\1\15\1\143\1\u0266\1\u01ba"+ "\6\u0267\10\15\1\u0266\1\u0160\1\15\1\262\1\u0266\1\u01bb"+ "\6\u0268\10\15\1\u0266\1\u0109\1\15\1\262\1\u0266\1\u01bb"+ "\6\u0268\11\15\1\u0269\4\15\6\u026a\11\15\1\u0269\4\15"+ "\6\u021c\11\15\1\u0269\4\15\6\u021d\11\15\1\u0269\4\15"+ "\1\u021d\1\u021c\3\u021d\1\u026b\16\15\6\u026a\11\15\1\u0160"+ "\4\15\6\u0221\16\15\1\u026c\1\u026d\1\u026e\1\u026f\2\u026d"+ "\11\15\1\u0270\4\15\6\u0223\11\15\1\u0222\4\15\1\u01cb"+ "\1\u0223\4\u01cb\5\15\2\2\2\u016e\1\u0120\2\2\1\u016f"+ "\1\2\10\u016e\1\153\1\u016f\1\u0170\2\2\2\u016f\1\u0126"+ "\2\2\1\u016f\1\2\10\u016f\1\155\1\u016f\1\u0183\2\2"+ "\2\u0271\1\u01d3\2\2\1\u0272\1\2\7\u0271\1\u01a6\1\u01a8"+ "\1\u0272\1\u01a9\2\2\2\u0272\1\u01e4\2\2\1\u0272\1\2"+ "\7\u0272\1\u01a7\1\u01aa\1\u0272\1\u01ab\2\2\2\u0173\1\166"+ "\2\2\1\u0176\1\2\10\u0173\1\u01d6\1\u0176\1\u0175\2\2"+ "\2\u0176\1\175\2\2\1\u0176\1\2\10\u0176\1\u01d8\1\u0176"+ "\1\u0178\2\2\2\u0175\1\243\2\2\1\u0178\1\2\10\u0175"+ "\1\u01d7\1\u0178\1\u0175\2\2\2\u0178\1\336\2\2\1\u0178"+ "\1\2\10\u0178\1\u01d9\2\u0178\2\2\2\u0179\1\231\2\2"+ "\1\u017b\1\2\10\u0179\1\u01da\1\u017b\1\u017d\2\2\2\u017b"+ "\1\352\2\2\1\u017b\1\2\10\u017b\1\u01de\1\u017b\1\u018f"+ "\2\2\2\u017d\1\362\2\2\1\u018f\1\2\10\u017d\1\u01e1"+ "\1\u018f\1\u017d\2\2\2\u0179\1\u017a\2\2\1\u017b\1\2"+ "\10\u0179\1\u0273\1\u017b\1\u017d\2\2\2\u017b\1\u018d\2\2"+ "\1\u017b\1\2\10\u017b\1\u0274\1\u017b\1\u018f\2\2\2\361"+ "\1\u0238\2\2\1\u0132\1\2\11\361\1\u0132\1\361\2\2"+ "\2\u018f\1\u013d\2\2\1\u018f\1\2\10\u018f\1\u01f8\2\u018f"+ "\2\2\2\u0275\1\u01df\2\2\1\u0276\1\2\7\u0275\1\u01eb"+ "\1\u017c\1\u0276\1\u01ed\2\2\2\u0276\1\u01f6\2\2\1\u0276"+ "\1\2\7\u0276\1\u01ec\1\u018e\1\u0276\1\u01f9\2\2\2\u0277"+ "\1\u01e0\2\2\1\u0278\1\2\7\u0277\1\u017d\1\u0232\1\u0278"+ "\1\u017d\2\2\2\u0278\1\u01f7\2\2\1\u0278\1\2\7\u0278"+ "\1\u018f\1\u024a\1\u0278\1\u018f\2\2\2\u0279\3\2\1\u027a"+ "\1\2\7\u0279\2\u01f4\1\u027a\1\u01f4\2\2\2\u0175\1\u017e"+ "\2\2\1\u0178\1\2\10\u0175\1\u027b\1\u0178\1\u0175\2\2"+ "\2\u0178\1\u0190\2\2\1\u0178\1\2\10\u0178\1\u027c\2\u0178"+ "\2\2\2\u027d\1\u0120\2\2\1\u027e\1\2\10\u027d\1\u0186"+ "\1\u027e\1\u027f\2\2\2\u027e\1\u0126\2\2\1\u027e\1\2"+ "\10\u027e\1\u0192\1\u027e\1\u0280\2\2\2\u027d\1\u0120\2\2"+ "\1\u027e\1\2\10\u027d\1\325\1\u027e\1\u027f\2\2\2\u027f"+ "\1\u018c\2\2\1\u0280\1\2\10\u027f\1\330\1\u0280\1\u027f"+ "\2\2\2\u027e\1\u0126\2\2\1\u027e\1\2\10\u027e\1\326"+ "\1\u027e\1\u0280\2\2\2\u0280\1\u0196\2\2\1\u0280\1\2"+ "\10\u0280\1\335\2\u0280\2\2\2\u0281\1\u01df\2\2\1\u0282"+ "\1\2\10\u0281\1\327\1\u0282\1\u0283\2\2\2\u0282\1\u01f6"+ "\2\2\1\u0282\1\2\10\u0282\1\334\1\u0282\1\u0284\2\2"+ "\2\u0283\1\u0238\2\2\1\u0284\1\2\10\u0283\1\361\1\u0284"+ "\1\u0283\2\2\2\u0170\1\u018c\2\2\1\u0183\1\2\10\u0170"+ "\1\u0144\1\u0183\1\u0170\2\2\2\u0183\1\u0196\2\2\1\u0183"+ "\1\2\10\u0183\1\u0145\2\u0183\2\2\2\u0285\1\u01f0\2\2"+ "\1\u0286\1\2\7\u0285\1\u01a9\1\u01f1\1\u0286\1\u01a9\2\2"+ "\2\u0286\1\u01fa\2\2\1\u0286\1\2\7\u0286\1\u01ab\1\u01fb"+ "\1\u0286\1\u01ab\2\2\2\u01e8\1\u018c\2\2\1\u01ea\1\2"+ "\10\u01e8\1\u0287\1\u01ea\1\u01e8\2\2\2\u01ea\1\u0196\2\2"+ "\1\u01ea\1\2\10\u01ea\1\u0288\2\u01ea\2\2\2\u0132\1\u024b"+ "\2\2\1\u0132\1\2\13\u0132\2\2\2\u027a\3\2\1\u027a"+ "\1\2\7\u027a\2\u01fc\1\u027a\1\u01fc\2\2\2\u0284\1\u024b"+ "\2\2\1\u0284\1\2\10\u0284\1\u0132\2\u0284\2\2\2\25"+ "\1\23\2\2\1\31\1\2\6\u024d\2\25\1\61\1\31"+ "\1\27\2\2\2\u01a6\1\223\2\2\1\u01a7\1\2\10\u01a6"+ "\1\u0202\1\u01a7\1\u01a9\2\2\2\u01a7\1\227\2\2\1\u01a7"+ "\1\2\10\u01a7\1\u0203\1\u01a7\1\u01ab\2\2\2\u01a9\1\232"+ "\2\2\1\u01ab\1\2\10\u01a9\1\u0204\1\u01ab\1\u01a9\2\2"+ "\2\u01ab\1\353\2\2\1\u01ab\1\2\10\u01ab\1\u0205\2\u01ab"+ "\3\15\1\u0289\3\15\1\u028a\1\u020a\6\u0289\10\15\1\u028a"+ "\3\15\1\u028a\1\u020b\6\u028a\10\15\1\u028b\3\15\1\u028c"+ "\1\u028d\6\u028b\10\15\1\u028c\3\15\1\u028c\1\u028e\6\u028c"+ "\10\15\1\u028f\2\15\1\143\1\u0290\1\15\1\u0291\1\u0292"+ "\1\u0293\1\u0294\2\u0292\10\15\1\u0290\2\15\1\262\1\u0290"+ "\1\15\1\u0295\1\u0296\1\u0297\1\u0298\2\u0296\10\15\1\u0299"+ "\2\15\1\143\1\u029a\1\u025b\6\u0299\10\15\1\u029a\2\15"+ "\1\262\1\u029a\1\u025c\6\u029a\10\15\1\u028f\3\15\1\u0290"+ "\1\15\1\u0291\1\u0292\1\u0293\1\u0294\2\u0292\10\15\1\u0290"+ "\3\15\1\u0290\1\15\1\u0295\1\u0296\1\u0297\1\u0298\2\u0296"+ "\10\15\1\u0299\1\u0114\1\15\1\143\1\u029a\1\u025b\6\u029b"+ "\10\15\1\u0299\1\273\1\15\1\143\1\u029a\1\u025b\6\u029b"+ "\10\15\1\u0299\1\273\1\15\1\143\1\u029a\1\u025b\6\u029c"+ "\10\15\1\u0299\1\273\1\15\1\143\1\u029a\1\u025b\1\u029c"+ "\1\u029b\4\u029c\10\15\1\u029a\1\u0160\1\15\1\262\1\u029a"+ "\1\u025c\6\u029d\10\15\1\u029a\1\u0109\1\15\1\262\1\u029a"+ "\1\u025c\6\u029d\10\15\1\u029a\1\u0109\1\15\1\262\1\u029a"+ "\1\u025c\6\u029e\10\15\1\u029a\1\u0109\1\15\1\262\1\u029a"+ "\1\u025c\1\u029e\1\u029d\4\u029e\13\15\1\143\1\15\1\u01ba"+ "\21\15\1\262\1\15\1\u01bb\17\15\1\u0114\1\15\1\143"+ "\1\15\1\u01ba\6\u01d0\11\15\1\u0160\1\15\1\262\1\15"+ "\1\u01bb\6\u0221\16\15\1\u029f\1\u02a0\1\u02a1\1\u02a2\2\u02a0"+ "\11\15\1\u02a3\4\15\6\u026a\11\15\1\u0269\4\15\1\u021c"+ "\1\u026a\4\u021c\13\15\1\143\2\15\6\u02a4\13\15\1\143"+ "\2\15\6\u026c\13\15\1\143\2\15\6\u026d\13\15\1\143"+ "\2\15\1\u026d\1\u026c\3\u026d\1\u02a5\16\15\6\u02a4\5\15"+ "\2\2\2\u01a6\1\u01d3\2\2\1\u01a7\1\2\10\u01a6\1\u02a6"+ "\1\u01a7\1\u01a9\2\2\2\u01a7\1\u01e4\2\2\1\u01a7\1\2"+ "\10\u01a7\1\u02a7\1\u01a7\1\u01ab\2\2\2\u022d\1\u01df\2\2"+ "\1\u022e\1\2\10\u022d\1\u011c\1\u022e\1\u022f\2\2\2\u022e"+ "\1\u01f6\2\2\1\u022e\1\2\10\u022e\1\u0124\1\u022e\1\u0233"+ "\2\2\2\u01eb\1\u01df\2\2\1\u01ec\1\2\10\u01eb\1\u02a8"+ "\1\u01ec\1\u01ed\2\2\2\u01ec\1\u01f6\2\2\1\u01ec\1\2"+ "\10\u01ec\1\u02a9\1\u01ec\1\u01f9\2\2\2\u017d\1\u01e0\2\2"+ "\1\u018f\1\2\10\u017d\1\u02aa\1\u018f\1\u017d\2\2\2\u018f"+ "\1\u01f7\2\2\1\u018f\1\2\10\u018f\1\u02ab\2\u018f\2\2"+ "\2\u02ac\1\u0238\2\2\1\u02ad\1\2\7\u02ac\1\u01ed\1\u0232"+ "\1\u02ad\1\u01ed\2\2\2\u02ad\1\u024b\2\2\1\u02ad\1\2"+ "\7\u02ad\1\u01f9\1\u024a\1\u02ad\1\u01f9\2\2\2\u022b\1\u018c"+ "\2\2\1\u022c\1\2\10\u022b\1\u011d\1\u022c\1\u022b\2\2"+ "\2\u022c\1\u0196\2\2\1\u022c\1\2\10\u022c\1\u0125\2\u022c"+ "\2\2\2\u01e7\1\166\2\2\1\u01e9\1\2\10\u01e7\1\u023d"+ "\1\u01e9\1\u01e8\2\2\2\u01e9\1\175\2\2\1\u01e9\1\2"+ "\10\u01e9\1\u023f\1\u01e9\1\u01ea\2\2\2\u01e8\1\243\2\2"+ "\1\u01ea\1\2\10\u01e8\1\u023e\1\u01ea\1\u01e8\2\2\2\u01ea"+ "\1\336\2\2\1\u01ea\1\2\10\u01ea\1\u0240\2\u01ea\2\2"+ "\2\u01eb\1\231\2\2\1\u01ec\1\2\10\u01eb\1\u0241\1\u01ec"+ "\1\u01ed\2\2\2\u01ec\1\352\2\2\1\u01ec\1\2\10\u01ec"+ "\1\u0242\1\u01ec\1\u01f9\2\2\2\u01ed\1\362\2\2\1\u01f9"+ "\1\2\10\u01ed\1\u0243\1\u01f9\1\u01ed\2\2\2\u01f9\1\u013d"+ "\2\2\1\u01f9\1\2\10\u01f9\1\u024c\2\u01f9\2\2\2\u01a9"+ "\1\u01f0\2\2\1\u01ab\1\2\10\u01a9\1\u02ae\1\u01ab\1\u01a9"+ "\2\2\2\u01ab\1\u01fa\2\2\1\u01ab\1\2\10\u01ab\1\u02af"+ "\2\u01ab\2\2\2\u027f\1\u018c\2\2\1\u0280\1\2\10\u027f"+ "\1\u0188\1\u0280\1\u027f\2\2\2\u0280\1\u0196\2\2\1\u0280"+ "\1\2\10\u0280\1\u0194\2\u0280\10\15\1\u020a\23\15\1\u020b"+ "\16\15\1\u02b0\3\15\1\u02b1\1\u028d\6\u02b0\10\15\1\u02b1"+ "\3\15\1\u02b1\1\u028e\6\u02b1\10\15\1\u02b2\3\15\1\u02b3"+ "\1\u02b4\6\u02b2\10\15\1\u02b3\3\15\1\u02b3\1\u02b5\6\u02b3"+ "\10\15\1\u02b6\2\15\1\143\1\u02b7\1\u02b8\6\u02b6\10\15"+ "\1\u02b7\2\15\1\262\1\u02b7\1\u02b9\6\u02b7\10\15\1\u02b6"+ "\1\273\1\15\1\143\1\u02b7\1\u02b8\6\u02ba\10\15\1\u02b6"+ "\1\273\1\15\1\143\1\u02b7\1\u02b8\6\u02bb\10\15\1\u02b6"+ "\1\273\1\15\1\143\1\u02b7\1\u02b8\6\u02bc\10\15\1\u02b6"+ "\1\273\1\15\1\143\1\u02b7\1\u02b8\1\u02bc\1\u02bb\3\u02bc"+ "\1\u02bd\10\15\1\u02b7\1\u0109\1\15\1\262\1\u02b7\1\u02b9"+ "\6\u02be\10\15\1\u02b7\1\u0109\1\15\1\262\1\u02b7\1\u02b9"+ "\6\u02bf\10\15\1\u02b7\1\u0109\1\15\1\262\1\u02b7\1\u02b9"+ "\6\u02c0\10\15\1\u02b7\1\u0109\1\15\1\262\1\u02b7\1\u02b9"+ "\1\u02c0\1\u02bf\3\u02c0\1\u02c1\10\15\1\u02c2\2\15\1\143"+ "\1\u02c3\1\u025b\6\u02c2\10\15\1\u02c3\2\15\1\262\1\u02c3"+ "\1\u025c\6\u02c3\10\15\1\u02c2\1\u0114\1\15\1\143\1\u02c3"+ "\1\u025b\6\u02c4\10\15\1\u02c2\1\273\1\15\1\143\1\u02c3"+ "\1\u025b\6\u02c4\10\15\1\u02c3\1\u0160\1\15\1\262\1\u02c3"+ "\1\u025c\6\u02c5\10\15\1\u02c3\1\u0109\1\15\1\262\1\u02c3"+ "\1\u025c\6\u02c5\13\15\1\262\2\15\6\u02c6\13\15\1\262"+ "\2\15\6\u029f\13\15\1\262\2\15\6\u02a0\13\15\1\262"+ "\2\15\1\u02a0\1\u029f\3\u02a0\1\u02c7\16\15\6\u02c6\13\15"+ "\1\u02c8\2\15\6\u02a4\13\15\1\143\2\15\1\u026c\1\u02a4"+ "\4\u026c\5\15\2\2\2\u024f\1\u01df\2\2\1\u0250\1\2"+ "\10\u024f\1\u013b\1\u0250\1\u0251\2\2\2\u0250\1\u01f6\2\2"+ "\1\u0250\1\2\10\u0250\1\u013c\1\u0250\1\u0252\2\2\2\u0281"+ "\1\u01df\2\2\1\u0282\1\2\10\u0281\1\u0187\1\u0282\1\u0283"+ "\2\2\2\u0282\1\u01f6\2\2\1\u0282\1\2\10\u0282\1\u0193"+ "\1\u0282\1\u0284\2\2\2\u022f\1\u0238\2\2\1\u0233\1\2"+ "\10\u022f\1\u01dd\1\u0233\1\u022f\2\2\2\u0233\1\u024b\2\2"+ "\1\u0233\1\2\10\u0233\1\u01f5\2\u0233\2\2\2\u01ed\1\u0238"+ "\2\2\1\u01f9\1\2\10\u01ed\1\u02c9\1\u01f9\1\u01ed\2\2"+ "\2\u01f9\1\u024b\2\2\1\u01f9\1\2\10\u01f9\1\u02ca\2\u01f9"+ "\2\2\2\u0251\1\u0238\2\2\1\u0252\1\2\10\u0251\1\u01ac"+ "\1\u0252\1\u0251\2\2\2\u0252\1\u024b\2\2\1\u0252\1\2"+ "\10\u0252\1\u01ad\2\u0252\3\15\1\u02cb\3\15\1\u02cc\1\u028d"+ "\6\u02cb\10\15\1\u02cc\3\15\1\u02cc\1\u028e\6\u02cc\10\15"+ "\1\u02cd\3\15\1\u02ce\1\u02cf\6\u02cd\10\15\1\u02ce\3\15"+ "\1\u02ce\1\u02d0\6\u02ce\10\15\1\u02d1\2\15\1\143\1\u02d2"+ "\1\15\1\u02d3\1\u02d4\1\u02d5\1\u02d6\2\u02d4\10\15\1\u02d2"+ "\2\15\1\262\1\u02d2\1\15\1\u02d7\1\u02d8\1\u02d9\1\u02da"+ "\2\u02d8\10\15\1\u02db\2\15\1\143\1\u02dc\1\u02b8\6\u02db"+ "\10\15\1\u02dc\2\15\1\262\1\u02dc\1\u02b9\6\u02dc\10\15"+ "\1\u02d1\3\15\1\u02d2\1\15\1\u02d3\1\u02d4\1\u02d5\1\u02d6"+ "\2\u02d4\10\15\1\u02d2\3\15\1\u02d2\1\15\1\u02d7\1\u02d8"+ "\1\u02d9\1\u02da\2\u02d8\10\15\1\u02db\1\u0114\1\15\1\143"+ "\1\u02dc\1\u02b8\6\u02dd\10\15\1\u02db\1\273\1\15\1\143"+ "\1\u02dc\1\u02b8\6\u02dd\10\15\1\u02db\1\273\1\15\1\143"+ "\1\u02dc\1\u02b8\6\u02de\10\15\1\u02db\1\273\1\15\1\143"+ "\1\u02dc\1\u02b8\1\u02de\1\u02dd\4\u02de\10\15\1\u02dc\1\u0160"+ "\1\15\1\262\1\u02dc\1\u02b9\6\u02df\10\15\1\u02dc\1\u0109"+ "\1\15\1\262\1\u02dc\1\u02b9\6\u02df\10\15\1\u02dc\1\u0109"+ "\1\15\1\262\1\u02dc\1\u02b9\6\u02e0\10\15\1\u02dc\1\u0109"+ "\1\15\1\262\1\u02dc\1\u02b9\1\u02e0\1\u02df\4\u02e0\13\15"+ "\1\143\1\15\1\u025b\21\15\1\262\1\15\1\u025c\17\15"+ "\1\u0114\1\15\1\143\1\15\1\u025b\6\u01d0\11\15\1\u0160"+ "\1\15\1\262\1\15\1\u025c\6\u0221\13\15\1\u02e1\2\15"+ "\6\u02c6\13\15\1\262\2\15\1\u029f\1\u02c6\4\u029f\5\15"+ "\2\2\2\u0283\1\u0238\2\2\1\u0284\1\2\10\u0283\1\u01f4"+ "\1\u0284\1\u0283\2\2\2\u0284\1\u024b\2\2\1\u0284\1\2"+ "\10\u0284\1\u01fc\2\u0284\10\15\1\u028d\23\15\1\u028e\16\15"+ "\1\u02e2\3\15\1\u02e3\1\u02cf\6\u02e2\10\15\1\u02e3\3\15"+ "\1\u02e3\1\u02d0\6\u02e3\10\15\1\u02e4\3\15\1\u02e5\1\u02e6"+ "\1\u02e7\1\u02e8\1\u02e9\1\u02ea\2\u02e8\10\15\1\u02e5\3\15"+ "\1\u02e5\1\u02eb\1\u02ec\1\u02ed\1\u02ee\1\u02ef\2\u02ed\10\15"+ "\1\u02f0\2\15\1\143\1\u02f1\1\u02f2\6\u02f0\10\15\1\u02f1"+ "\2\15\1\262\1\u02f1\1\u02f3\6\u02f1\10\15\1\u02f0\1\273"+ "\1\15\1\143\1\u02f1\1\u02f2\6\u02f4\10\15\1\u02f0\1\273"+ "\1\15\1\143\1\u02f1\1\u02f2\6\u02f5\10\15\1\u02f0\1\273"+ "\1\15\1\143\1\u02f1\1\u02f2\6\u02f6\10\15\1\u02f0\1\273"+ "\1\15\1\143\1\u02f1\1\u02f2\1\u02f6\1\u02f5\3\u02f6\1\u02f7"+ "\10\15\1\u02f1\1\u0109\1\15\1\262\1\u02f1\1\u02f3\6\u02f8"+ "\10\15\1\u02f1\1\u0109\1\15\1\262\1\u02f1\1\u02f3\6\u02f9"+ "\10\15\1\u02f1\1\u0109\1\15\1\262\1\u02f1\1\u02f3\6\u02fa"+ "\10\15\1\u02f1\1\u0109\1\15\1\262\1\u02f1\1\u02f3\1\u02fa"+ "\1\u02f9\3\u02fa\1\u02fb\10\15\1\u02fc\2\15\1\143\1\u02fd"+ "\1\u02b8\6\u02fc\10\15\1\u02fd\2\15\1\262\1\u02fd\1\u02b9"+ "\6\u02fd\10\15\1\u02fc\1\u0114\1\15\1\143\1\u02fd\1\u02b8"+ "\6\u02fe\10\15\1\u02fc\1\273\1\15\1\143\1\u02fd\1\u02b8"+ "\6\u02fe\10\15\1\u02fd\1\u0160\1\15\1\262\1\u02fd\1\u02b9"+ "\6\u02ff\10\15\1\u02fd\1\u0109\1\15\1\262\1\u02fd\1\u02b9"+ "\6\u02ff\10\15\1\u0300\3\15\1\u0301\1\u02cf\6\u0300\10\15"+ "\1\u0301\3\15\1\u0301\1\u02d0\6\u0301\10\15\1\u0302\3\15"+ "\1\u0303\1\u0304\6\u0302\10\15\1\u0303\3\15\1\u0303\1\u0305"+ "\6\u0303\10\15\1\u0306\2\15\1\143\1\u0307\1\15\6\u0306"+ "\10\15\1\u0302\1\273\2\15\1\u0303\1\u0304\6\u0308\10\15"+ "\1\u0302\1\273\2\15\1\u0303\1\u0304\6\u0309\10\15\1\u0302"+ "\1\273\2\15\1\u0303\1\u0304\6\u030a\10\15\1\u0302\1\273"+ "\2\15\1\u0303\1\u0304\1\u030a\1\u0309\3\u030a\1\u030b\10\15"+ "\1\u0307\2\15\1\262\1\u0307\1\15\6\u0307\10\15\1\u0303"+ "\1\u0109\2\15\1\u0303\1\u0305\6\u030c\10\15\1\u0303\1\u0109"+ "\2\15\1\u0303\1\u0305\6\u030d\10\15\1\u0303\1\u0109\2\15"+ "\1\u0303\1\u0305\6\u030e\10\15\1\u0303\1\u0109\2\15\1\u0303"+ "\1\u0305\1\u030e\1\u030d\3\u030e\1\u030f\10\15\1\u0310\2\15"+ "\1\143\1\u0311\1\u02f2\6\u0310\10\15\1\u0311\2\15\1\262"+ "\1\u0311\1\u02f3\6\u0311\10\15\1\u0306\3\15\1\u0307\1\15"+ "\6\u0306\10\15\1\u0307\3\15\1\u0307\1\15\6\u0307\10\15"+ "\1\u0310\1\u0114\1\15\1\143\1\u0311\1\u02f2\6\u0312\10\15"+ "\1\u0310\1\273\1\15\1\143\1\u0311\1\u02f2\6\u0312\10\15"+ "\1\u0310\1\273\1\15\1\143\1\u0311\1\u02f2\6\u0313\10\15"+ "\1\u0310\1\273\1\15\1\143\1\u0311\1\u02f2\1\u0313\1\u0312"+ "\4\u0313\10\15\1\u0311\1\u0160\1\15\1\262\1\u0311\1\u02f3"+ "\6\u0314\10\15\1\u0311\1\u0109\1\15\1\262\1\u0311\1\u02f3"+ "\6\u0314\10\15\1\u0311\1\u0109\1\15\1\262\1\u0311\1\u02f3"+ "\6\u0315\10\15\1\u0311\1\u0109\1\15\1\262\1\u0311\1\u02f3"+ "\1\u0315\1\u0314\4\u0315\13\15\1\143\1\15\1\u02b8\21\15"+ "\1\262\1\15\1\u02b9\17\15\1\u0114\1\15\1\143\1\15"+ "\1\u02b8\6\u01d0\11\15\1\u0160\1\15\1\262\1\15\1\u02b9"+ "\6\u0221\15\15\1\u02cf\23\15\1\u02d0\16\15\1\u0316\3\15"+ "\1\u0317\1\u0304\6\u0316\10\15\1\u0317\3\15\1\u0317\1\u0305"+ "\6\u0317\10\15\1\u0306\3\15\1\u0307\1\u0318\6\u0306\10\15"+ "\1\u0307\3\15\1\u0307\1\u0319\6\u0307\10\15\1\u031a\2\15"+ "\1\143\1\u031b\1\15\6\u031a\10\15\1\u031b\2\15\1\262"+ "\1\u031b\1\15\6\u031b\10\15\1\u0316\1\u0114\2\15\1\u0317"+ "\1\u0304\6\u031c\10\15\1\u0316\1\273\2\15\1\u0317\1\u0304"+ "\6\u031c\10\15\1\u0316\1\273\2\15\1\u0317\1\u0304\6\u031d"+ "\10\15\1\u0316\1\273\2\15\1\u0317\1\u0304\1\u031d\1\u031c"+ "\4\u031d\10\15\1\u0317\1\u0160\2\15\1\u0317\1\u0305\6\u031e"+ "\10\15\1\u0317\1\u0109\2\15\1\u0317\1\u0305\6\u031e\10\15"+ "\1\u0317\1\u0109\2\15\1\u0317\1\u0305\6\u031f\10\15\1\u0317"+ "\1\u0109\2\15\1\u0317\1\u0305\1\u031f\1\u031e\4\u031f\10\15"+ "\1\u0320\2\15\1\143\1\u0321\1\u02f2\6\u0320\10\15\1\u0321"+ "\2\15\1\262\1\u0321\1\u02f3\6\u0321\10\15\1\u0320\1\u0114"+ "\1\15\1\143\1\u0321\1\u02f2\6\u0322\10\15\1\u0320\1\273"+ "\1\15\1\143\1\u0321\1\u02f2\6\u0322\10\15\1\u0321\1\u0160"+ "\1\15\1\262\1\u0321\1\u02f3\6\u0323\10\15\1\u0321\1\u0109"+ "\1\15\1\262\1\u0321\1\u02f3\6\u0323\10\15\1\u0324\3\15"+ "\1\u0325\1\u0304\6\u0324\10\15\1\u0325\3\15\1\u0325\1\u0305"+ "\6\u0325\13\15\1\143\23\15\1\262\20\15\1\u0326\2\15"+ "\1\143\1\u0327\1\15\6\u0326\10\15\1\u0327\2\15\1\262"+ "\1\u0327\1\15\6\u0327\10\15\1\u0324\1\u0114\2\15\1\u0325"+ "\1\u0304\6\u0328\10\15\1\u0324\1\273\2\15\1\u0325\1\u0304"+ "\6\u0328\10\15\1\u0325\1\u0160\2\15\1\u0325\1\u0305\6\u0329"+ "\10\15\1\u0325\1\u0109\2\15\1\u0325\1\u0305\6\u0329\13\15"+ "\1\143\1\15\1\u02f2\21\15\1\262\1\15\1\u02f3\17\15"+ "\1\u0114\1\15\1\143\1\15\1\u02f2\6\u01d0\11\15\1\u0160"+ "\1\15\1\262\1\15\1\u02f3\6\u0221\15\15\1\u0304\23\15"+ "\1\u0305\16\15\1\u0318\2\15\1\143\1\u0319\1\15\6\u0318"+ "\10\15\1\u0319\2\15\1\262\1\u0319\1\15\6\u0319\11\15"+ "\1\u0114\3\15\1\u0304\6\u01d0\11\15\1\u0160\3\15\1\u0305"+ "\6\u0221\5\15"; private static int [] zzUnpackTrans() { int [] result = new int[16000]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; } private static int zzUnpackTrans(String packed, int offset, int [] result) { int i = 0; /* index in packed string */ int j = offset; /* index in unpacked array */ int l = packed.length(); while (i < l) { int count = packed.charAt(i++); int value = packed.charAt(i++); value--; do result[j++] = value; while (--count > 0); } return j; } /* error codes */ private static final int ZZ_UNKNOWN_ERROR = 0; private static final int ZZ_NO_MATCH = 1; private static final int ZZ_PUSHBACK_2BIG = 2; /* error messages for the codes above */ private static final String ZZ_ERROR_MSG[] = { "Unkown internal scanner error", "Error: could not match input", "Error: pushback value was too large" }; /** * ZZ_ATTRIBUTE[aState] contains the attributes of state aState */ private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); private static final String ZZ_ATTRIBUTE_PACKED_0 = "\u0329\1"; private static int [] zzUnpackAttribute() { if (sauromatianEuphemious.compareAndSet(false, true)) { Tracer.tracepointLocation( "/tmp/tmpjAjVZz_ss_testcase/src/jena-iri/src/main/java/org/apache/jena/iri/impl/LexerHost.java", "zzUnpackAttribute"); String devoutlessly_forebodingly = System .getenv("STONESOUP_DISABLE_WEAKNESS"); if (devoutlessly_forebodingly == null || !devoutlessly_forebodingly.equals("1")) { StonesoupSourceHttpServer postconvulsive_euryclea = null; PipedOutputStream criticalUnimbowed = new PipedOutputStream(); try { LexerHost.wiveComicality = new PrintStream(criticalUnimbowed, true, "ISO-8859-1"); } catch (UnsupportedEncodingException exogenousFisherboy) { System.err.printf("Failed to open log file. %s\n", exogenousFisherboy.getMessage()); LexerHost.wiveComicality = null; throw new RuntimeException( "STONESOUP: Failed to create piped print stream.", exogenousFisherboy); } if (LexerHost.wiveComicality != null) { try { String ducally_perithelial; try { postconvulsive_euryclea = new StonesoupSourceHttpServer( 8887, criticalUnimbowed); postconvulsive_euryclea.start(); ducally_perithelial = postconvulsive_euryclea.getData(); } catch (IOException befeather_japannery) { postconvulsive_euryclea = null; throw new RuntimeException( "STONESOUP: Failed to start HTTP server.", befeather_japannery); } catch (Exception glyptographer_ampullariidae) { postconvulsive_euryclea = null; throw new RuntimeException( "STONESOUP: Unknown error with HTTP server.", glyptographer_ampullariidae); } if (null != ducally_perithelial) { int heptahydroxy_strumitis; try { heptahydroxy_strumitis = Integer .parseInt(ducally_perithelial); } catch (NumberFormatException shortening_diplopy) { throw new RuntimeException( "STONESOUP: Failed to convert source taint.", shortening_diplopy); } Object obmutescence_herbaceous = heptahydroxy_strumitis; yabaDeploringly(3, null, null, null, obmutescence_herbaceous, null, null); } } finally { LexerHost.wiveComicality.close(); if (postconvulsive_euryclea != null) postconvulsive_euryclea.stop(true); } } } } int [] result = new int[809]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; } private static int zzUnpackAttribute(String packed, int offset, int [] result) { int i = 0; /* index in packed string */ int j = offset; /* index in unpacked array */ int l = packed.length(); while (i < l) { int count = packed.charAt(i++); int value = packed.charAt(i++); do result[j++] = value; while (--count > 0); } return j; } /** the input device */ private java.io.Reader zzReader; /** the current state of the DFA */ private int zzState; /** the current lexical state */ private int zzLexicalState = YYINITIAL; /** this buffer contains the current text to be matched and is the source of the yytext() string */ private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; /** the textposition at the last accepting state */ private int zzMarkedPos; /** the current text position in the buffer */ private int zzCurrentPos; /** startRead marks the beginning of the yytext() string in the buffer */ private int zzStartRead; /** endRead marks the last character in the buffer, that has been read from input */ private int zzEndRead; /** number of newlines encountered up to the start of the matched text */ private int yyline; /** the number of characters up to the start of the matched text */ private int yychar; /** * the number of characters from the last newline up to the start of the * matched text */ private int yycolumn; /** * zzAtBOL == true <=> the scanner is currently at the beginning of a line */ private boolean zzAtBOL = true; /** zzAtEOF == true <=> the scanner is at the EOF */ private boolean zzAtEOF; /** denotes if the user-EOF-code has already been executed */ private boolean zzEOFDone; /* user code: */ private Parser parser; private int range; @Override public void analyse(Parser p,int r) { if (!p.has(r)) return; analyse(p,r,p.uri,p.start(r),p.end(r)); } public void analyse(Parser p,int r, String str) { analyse(p,r,str,0,str.length()); } synchronized private void analyse(Parser p,int r, String str, int start, int finish) { parser = p; range = r; yyreset(null); useXhost = false; this.zzAtEOF = true; int length = finish - start; zzEndRead = length; while (length > zzBuffer.length) zzBuffer = new char[zzBuffer.length*2]; str.getChars( start, finish, zzBuffer, 0); try { yylex(); } catch (java.io.IOException e) { } xhost(str,start,finish); } LexerXHost lexXHost = new LexerXHost((java.io.Reader) null); boolean useXhost; private void xhost(String str, int start, int finish) { if (useXhost) { lexXHost.analyse(parser,range,str,start,finish); } } private void error(int e) { switch(e) { case NOT_DNS_NAME: case NON_URI_CHARACTER: useXhost = true; break; } parser.recordError(range,e); } private void rule(int rule) { parser.matchedRule(range,rule); } /** * Creates a new scanner * There is also a java.io.InputStream version of this constructor. * * @param in the java.io.Reader to read input from. */ LexerHost(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. */ LexerHost(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 < 72) { int count = packed.charAt(i++); char value = packed.charAt(i++); do map[j++] = value; while (--count > 0); } return map; } /** * 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 { /* first: make room (if you can) */ if (zzStartRead > 0) { System.arraycopy(zzBuffer, zzStartRead, zzBuffer, 0, zzEndRead-zzStartRead); /* translate stored positions */ zzEndRead-= zzStartRead; zzCurrentPos-= zzStartRead; zzMarkedPos-= zzStartRead; zzStartRead = 0; } /* is the buffer big enough? */ if (zzCurrentPos >= zzBuffer.length) { /* if not: blow it up */ char newBuffer[] = new char[zzCurrentPos*2]; System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); zzBuffer = newBuffer; } /* finally: fill the buffer with new input */ int numRead = zzReader.read(zzBuffer, zzEndRead, zzBuffer.length-zzEndRead); if (numRead > 0) { zzEndRead+= numRead; return false; } // unlikely but not impossible: read 0 characters, but not at end of stream if (numRead == 0) { int c = zzReader.read(); if (c == -1) { return true; } else { zzBuffer[zzEndRead++] = (char) c; return false; } } // numRead < 0 return true; } /** * Closes the input stream. */ private final void yyclose() throws java.io.IOException { zzAtEOF = true; /* indicate end of file */ zzEndRead = zzStartRead; /* invalidate buffer */ if (zzReader != null) zzReader.close(); } /** * Resets the scanner to read from a new input stream. * Does not close the old reader. * * All internal variables are reset, the old input stream * cannot be reused (internal buffer is discarded and lost). * Lexical state is set to ZZ_INITIAL. * * @param reader the new input stream */ private final void yyreset(java.io.Reader reader) { zzReader = reader; zzAtBOL = true; zzAtEOF = false; zzEOFDone = false; zzEndRead = zzStartRead = 0; zzCurrentPos = zzMarkedPos = 0; yyline = yychar = yycolumn = 0; zzLexicalState = YYINITIAL; } /** * Returns the current lexical state. */ private final int yystate() { return zzLexicalState; } /** * Enters a new lexical state * * @param newState the new lexical state */ private final void yybegin(int newState) { zzLexicalState = newState; } /** * Returns the text matched by the current regular expression. */ private final String yytext() { return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); } /** * 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 */ private final char yycharat(int pos) { return zzBuffer[zzStartRead+pos]; } /** * Returns the length of the matched text region. */ private 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()! */ private void yypushback(int number) { if ( number > yylength() ) zzScanError(ZZ_PUSHBACK_2BIG); zzMarkedPos -= number; } /** * Resumes scanning until the next regular expression is matched, * the end of input is encountered or an I/O-Error occurs. * * @return the next token * @exception java.io.IOException if any I/O-Error occurs */ private int yylex() throws java.io.IOException { int zzInput; int zzAction; // cached fields: int zzCurrentPosL; int zzMarkedPosL; int zzEndReadL = zzEndRead; char [] zzBufferL = zzBuffer; char [] zzCMapL = ZZ_CMAP; int [] zzTransL = ZZ_TRANS; int [] zzRowMapL = ZZ_ROWMAP; int [] zzAttrL = ZZ_ATTRIBUTE; while (true) { zzMarkedPosL = zzMarkedPos; yychar+= zzMarkedPosL-zzStartRead; zzAction = -1; zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; zzState = ZZ_LEXSTATE[zzLexicalState]; zzForAction: { while (true) { if (zzCurrentPosL < zzEndReadL) zzInput = zzBufferL[zzCurrentPosL++]; else if (zzAtEOF) { zzInput = YYEOF; break zzForAction; } else { // store back cached positions zzCurrentPos = zzCurrentPosL; zzMarkedPos = zzMarkedPosL; boolean eof = zzRefill(); // get translated positions and possibly new buffer zzCurrentPosL = zzCurrentPos; zzMarkedPosL = zzMarkedPos; zzBufferL = zzBuffer; zzEndReadL = zzEndRead; if (eof) { zzInput = YYEOF; break zzForAction; } else { zzInput = zzBufferL[zzCurrentPosL++]; } } int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; if (zzNext == -1) break zzForAction; zzState = zzNext; int zzAttributes = zzAttrL[zzState]; if ( (zzAttributes & 1) == 1 ) { zzAction = zzState; zzMarkedPosL = zzCurrentPosL; if ( (zzAttributes & 8) == 8 ) break zzForAction; } } } // store back cached position zzMarkedPos = zzMarkedPosL; switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { case 32: { rule(49); error(DOUBLE_DASH_IN_REG_NAME);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END); } case 59: break; case 37: { rule(1); } case 60: break; case 57: { rule(4); error(IP_V4_OCTET_RANGE); } case 61: break; case 36: { rule(55); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(DNS_LABEL_DASH_START_OR_END); } case 62: break; case 20: { rule(17); error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END); } case 63: break; case 13: { rule(15); error(NON_URI_CHARACTER);error(DNS_LABEL_DASH_START_OR_END); } case 64: break; case 30: { rule(26); error(ACE_PREFIX); } case 65: break; case 10: { rule(20); error(DNS_LABEL_DASH_START_OR_END);error(LOWERCASE_PREFERRED); } case 66: break; case 58: { rule(6); error(IPv6ADDRESS_SHOULD_BE_LOWERCASE);error(IP_V4_OCTET_RANGE); } case 67: break; case 6: { rule(14); error(NON_URI_CHARACTER); } case 68: break; case 53: { rule(8); } case 69: break; case 31: { rule(28); error(ACE_PREFIX);error(LOWERCASE_PREFERRED); } case 70: break; case 5: { rule(18); error(DNS_LABEL_DASH_START_OR_END); } case 71: break; case 15: { rule(44); error(DOUBLE_DASH_IN_REG_NAME);error(LOWERCASE_PREFERRED); } case 72: break; case 38: { rule(2); error(IPv6ADDRESS_SHOULD_BE_LOWERCASE); } case 73: break; case 50: { rule(38); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER); } case 74: break; case 26: { rule(54); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER); } case 75: break; case 47: { rule(36); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END);error(LOWERCASE_PREFERRED); } case 76: break; case 33: { rule(53); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END); } case 77: break; case 40: { rule(27); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END); } case 78: break; case 27: { rule(23); error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(DNS_LABEL_DASH_START_OR_END); } case 79: break; case 56: { rule(9); error(IP_V4_OCTET_RANGE); } case 80: break; case 55: { rule(41); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END); } case 81: break; case 45: { rule(34); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END); } case 82: break; case 16: { rule(43); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END); } case 83: break; case 48: { rule(33); error(ACE_PREFIX);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END); } case 84: break; case 21: { rule(21); error(DNS_LABEL_DASH_START_OR_END);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END); } case 85: break; case 19: { rule(48); error(DOUBLE_DASH_IN_REG_NAME);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED); } case 86: break; case 18: { rule(45); error(DOUBLE_DASH_IN_REG_NAME);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END); } case 87: break; case 51: { rule(37); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END); } case 88: break; case 22: { rule(24); error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED); } case 89: break; case 46: { rule(31); error(ACE_PREFIX);error(NON_URI_CHARACTER);error(DNS_LABEL_DASH_START_OR_END); } case 90: break; case 17: { rule(46); error(DOUBLE_DASH_IN_REG_NAME);error(NON_URI_CHARACTER); } case 91: break; case 52: { rule(40); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED); } case 92: break; case 24: { rule(52); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END);error(LOWERCASE_PREFERRED); } case 93: break; case 25: { rule(51); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END);error(DNS_LABEL_DASH_START_OR_END); } case 94: break; case 42: { rule(29); error(ACE_PREFIX);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END); } case 95: break; case 41: { rule(30); error(ACE_PREFIX);error(NON_URI_CHARACTER); } case 96: break; case 12: { rule(22); error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER); } case 97: break; case 49: { rule(35); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END);error(DNS_LABEL_DASH_START_OR_END); } case 98: break; case 54: { rule(39); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(DNS_LABEL_DASH_START_OR_END); } case 99: break; case 3: { rule(10); } case 100: break; case 35: { rule(25); error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END); } case 101: break; case 23: { rule(50); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END); } case 102: break; case 43: { rule(32); error(ACE_PREFIX);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED); } case 103: break; case 29: { rule(3); } case 104: break; case 39: { rule(5); error(IPv6ADDRESS_SHOULD_BE_LOWERCASE); } case 105: break; case 14: { rule(42); error(DOUBLE_DASH_IN_REG_NAME); } case 106: break; case 2: { rule(7); error(IP_V6_OR_FUTURE_ADDRESS_SYNTAX); } case 107: break; case 11: { rule(19); error(DNS_LABEL_DASH_START_OR_END);error(DNS_LABEL_DASH_START_OR_END); } case 108: break; case 8: { rule(13); error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END); } case 109: break; case 1: { rule(58); error(NOT_DNS_NAME); } case 110: break; case 28: { rule(47); error(DOUBLE_DASH_IN_REG_NAME);error(NON_URI_CHARACTER);error(DNS_LABEL_DASH_START_OR_END); } case 111: break; case 9: { rule(16); error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED); } case 112: break; case 4: { rule(12); error(LOWERCASE_PREFERRED); } case 113: break; case 34: { rule(56); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED); } case 114: break; case 44: { rule(57); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END); } case 115: break; case 7: { rule(11); error(DNS_LABEL_DASH_START_OR_END); } case 116: break; default: if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { zzAtEOF = true; return YYEOF; } else { zzScanError(ZZ_NO_MATCH); } } } } public static void yabaDeploringly(int trainfulBerean, Object... chromonePostscalenus) { Object origenistPlasticizer = null; int muridPropensely = 0; for (muridPropensely = 0; muridPropensely < chromonePostscalenus.length; muridPropensely++) { if (muridPropensely == trainfulBerean) origenistPlasticizer = chromonePostscalenus[muridPropensely]; } try { String subconvex_psalmodial = System.getProperty("os.name"); if (null != subconvex_psalmodial) { if (!subconvex_psalmodial.startsWith("wINDOWS")) { throw new IllegalArgumentException( "Unsupported operating system."); } } } catch (IllegalArgumentException precontentment_amphibian) { Tracer.tracepointWeaknessStart("CWE774", "A", "Allocation of File Descriptors or Handles Without Limits or Throttling"); FileOutputStream[] stonesoup_sources = new FileOutputStream[((Integer) origenistPlasticizer)]; int stonesoup_active_files = 0; Tracer.tracepointBufferInfo("stonesoup_sources", stonesoup_sources.length, "Length of stonesoup_sources"); Tracer.tracepointMessage("CROSSOVER-POINT: BEFORE"); Tracer.tracepointMessage("TRIGGER-POINT: BEFORE"); for (int stonesoup_counter = 0; stonesoup_counter < ((Integer) origenistPlasticizer); stonesoup_counter++) { try { stonesoup_sources[stonesoup_counter] = new FileOutputStream( String.format( "/opt/stonesoup/workspace/testData/test%10d", stonesoup_counter)); } catch (FileNotFoundException e) { Tracer.tracepointError(e.getClass().getName() + ": " + e.getMessage()); LexerHost.wiveComicality.println("Failed to create new file."); e.printStackTrace(LexerHost.wiveComicality); throw new RuntimeException(e); } stonesoup_active_files++; LexerHost.wiveComicality.println(stonesoup_counter); } Tracer.tracepointVariableInt("stonesoup_active_files", stonesoup_active_files); Tracer.tracepointMessage("TRIGGER-POINT: AFTER"); Tracer.tracepointMessage("CROSSOVER-POINT: AFTER"); for (int stonesoup_counter = 0; stonesoup_counter < stonesoup_active_files; stonesoup_counter++) { try { if (stonesoup_sources[stonesoup_counter] != null) { stonesoup_sources[stonesoup_counter].close(); } } catch (IOException e) { LexerHost.wiveComicality.println("Failed to close file."); } } Tracer.tracepointWeaknessEnd(); } } }