source: other-projects/rsyntax-textarea/src/java/org/fife/ui/rsyntaxtextarea/modes/HTMLTokenMaker.java.orig@ 25584

Last change on this file since 25584 was 25584, checked in by davidb, 12 years ago

Initial cut an a text edit area for GLI that supports color syntax highlighting

File size: 98.0 KB
Line 
1/* The following code was generated by JFlex 1.4.1 on 2/7/12 10:39 PM */
2
3/*
4 * 01/24/2005
5 *
6 * HTMLTokenMaker.java - Generates tokens for HTML syntax highlighting.
7 *
8 * This library is distributed under a modified BSD license. See the included
9 * RSyntaxTextArea.License.txt file for details.
10 */
11package org.fife.ui.rsyntaxtextarea.modes;
12
13import java.io.*;
14import javax.swing.text.Segment;
15
16import org.fife.ui.rsyntaxtextarea.*;
17
18
19/**
20 * Scanner for HTML 5 files.
21 *
22 * This implementation was created using
23 * <a href="http://www.jflex.de/">JFlex</a> 1.4.1; however, the generated file
24 * was modified for performance. Memory allocation needs to be almost
25 * completely removed to be competitive with the handwritten lexers (subclasses
26 * of <code>AbstractTokenMaker</code>, so this class has been modified so that
27 * Strings are never allocated (via yytext()), and the scanner never has to
28 * worry about refilling its buffer (needlessly copying chars around).
29 * We can achieve this because RText always scans exactly 1 line of tokens at a
30 * time, and hands the scanner this line as an array of characters (a Segment
31 * really). Since tokens contain pointers to char arrays instead of Strings
32 * holding their contents, there is no need for allocating new memory for
33 * Strings.<p>
34 *
35 * The actual algorithm generated for scanning has, of course, not been
36 * modified.<p>
37 *
38 * If you wish to regenerate this file yourself, keep in mind the following:
39 * <ul>
40 * <li>The generated HTMLTokenMaker.java</code> file will contain two
41 * definitions of both <code>zzRefill</code> and <code>yyreset</code>.
42 * You should hand-delete the second of each definition (the ones
43 * generated by the lexer), as these generated methods modify the input
44 * buffer, which we'll never have to do.</li>
45 * <li>You should also change the declaration/definition of zzBuffer to NOT
46 * be initialized. This is a needless memory allocation for us since we
47 * will be pointing the array somewhere else anyway.</li>
48 * <li>You should NOT call <code>yylex()</code> on the generated scanner
49 * directly; rather, you should use <code>getTokenList</code> as you would
50 * with any other <code>TokenMaker</code> instance.</li>
51 * </ul>
52 *
53 * @author Robert Futrell
54 * @version 0.8
55 *
56 */
57
58public class HTMLTokenMaker extends AbstractMarkupTokenMaker {
59
60 /** This character denotes the end of file */
61 public static final int YYEOF = -1;
62
63 /** lexical states */
64 public static final int JS_STRING = 12;
65 public static final int INTAG_CHECK_TAG_NAME = 5;
66 public static final int JS_MLC = 14;
67 public static final int INTAG_SCRIPT = 8;
68 public static final int JS_CHAR = 13;
69 public static final int JS_EOL_COMMENT = 15;
70 public static final int INATTR_DOUBLE_SCRIPT = 9;
71 public static final int INATTR_SINGLE_SCRIPT = 10;
72 public static final int DTD = 3;
73 public static final int INATTR_SINGLE = 7;
74 public static final int INATTR_DOUBLE = 6;
75 public static final int YYINITIAL = 0;
76 public static final int INTAG = 4;
77 public static final int COMMENT = 1;
78 public static final int JAVASCRIPT = 11;
79 public static final int PI = 2;
80
81 /**
82 * Translates characters to character classes
83 */
84 private static final String ZZ_CMAP_PACKED =
85 "\11\0\1\4\1\2\1\0\1\1\1\26\22\0\1\4\1\50\1\7"+
86 "\1\27\1\32\1\47\1\5\1\57\2\56\1\33\1\44\1\43\1\40"+
87 "\1\41\1\10\1\22\6\105\1\24\2\21\1\52\1\6\1\3\1\45"+
88 "\1\17\1\51\1\27\1\70\1\23\1\12\1\76\1\37\1\36\1\100"+
89 "\1\104\1\14\1\106\1\101\1\35\1\74\1\72\1\71\1\15\1\102"+
90 "\1\13\1\11\1\16\1\77\1\103\1\20\1\34\1\73\1\20\1\56"+
91 "\1\30\1\56\1\46\1\31\1\0\1\111\1\107\1\113\1\116\1\66"+
92 "\1\64\1\55\1\60\1\54\1\106\1\112\1\65\1\75\1\115\1\114"+
93 "\1\62\1\102\1\110\1\63\1\61\1\25\1\120\1\67\1\121\1\117"+
94 "\1\122\1\42\1\46\1\42\1\53\uff81\0";
95
96 /**
97 * Translates characters to character classes
98 */
99 private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
100
101 /**
102 * Translates DFA states to action switch labels.
103 */
104 private static final int [] ZZ_ACTION = zzUnpackAction();
105
106 private static final String ZZ_ACTION_PACKED_0 =
107 "\6\0\2\1\1\0\2\1\5\0\2\2\1\3\1\4"+
108 "\1\5\1\6\1\1\1\7\5\1\1\10\2\1\1\11"+
109 "\1\12\2\13\1\14\1\15\1\16\1\17\1\20\1\21"+
110 "\1\22\1\23\2\21\2\23\1\21\2\23\4\21\1\23"+
111 "\5\21\1\23\1\21\1\1\1\24\1\1\1\25\1\15"+
112 "\1\26\1\27\1\30\1\31\1\32\2\17\1\2\1\33"+
113 "\1\17\2\2\1\17\2\34\1\2\1\31\2\17\1\2"+
114 "\1\35\1\17\2\2\1\36\17\2\1\1\1\37\1\40"+
115 "\1\41\1\1\1\42\1\43\1\44\1\1\1\45\6\1"+
116 "\1\46\1\1\1\4\2\47\1\50\1\51\1\6\5\0"+
117 "\1\52\31\21\1\23\7\21\1\23\5\21\1\23\33\21"+
118 "\1\53\3\0\1\54\1\0\1\55\1\17\1\31\1\2"+
119 "\1\17\1\56\1\34\1\57\1\56\1\57\1\56\1\60"+
120 "\1\56\2\2\1\61\1\2\1\61\47\2\1\61\1\2"+
121 "\1\62\1\63\1\64\1\0\1\65\5\0\1\66\1\47"+
122 "\1\0\1\67\4\0\14\21\1\23\63\21\1\0\1\70"+
123 "\1\0\1\31\1\2\1\57\1\0\2\60\4\2\1\6"+
124 "\57\2\10\0\1\47\1\71\2\0\1\72\20\21\1\23"+
125 "\5\21\1\23\14\21\1\0\1\73\1\31\10\2\1\74"+
126 "\13\2\1\6\1\2\1\75\15\2\1\0\1\1\3\0"+
127 "\1\76\1\0\1\47\2\0\10\21\1\23\13\21\1\0"+
128 "\1\31\5\2\1\61\10\2\1\61\10\2\4\0\1\47"+
129 "\12\21\1\0\1\31\17\2\2\0\1\77\3\21\1\0"+
130 "\7\2\2\0\1\21\1\0\3\2\2\0\1\21\1\100"+
131 "\1\2\1\101\1\102";
132
133 private static int [] zzUnpackAction() {
134 int [] result = new int[615];
135 int offset = 0;
136 offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
137 return result;
138 }
139
140 private static int zzUnpackAction(String packed, int offset, int [] result) {
141 int i = 0; /* index in packed string */
142 int j = offset; /* index in unpacked array */
143 int l = packed.length();
144 while (i < l) {
145 int count = packed.charAt(i++);
146 int value = packed.charAt(i++);
147 do result[j++] = value; while (--count > 0);
148 }
149 return j;
150 }
151
152
153 /**
154 * Translates a state to a row index in the transition table
155 */
156 private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
157
158 private static final String ZZ_ROWMAP_PACKED_0 =
159 "\0\0\0\123\0\246\0\371\0\u014c\0\u019f\0\u01f2\0\u0245"+
160 "\0\u0298\0\u02eb\0\u033e\0\u0391\0\u03e4\0\u0437\0\u048a\0\u04dd"+
161 "\0\u0530\0\u0583\0\u05d6\0\u0629\0\u067c\0\u06cf\0\u0722\0\u05d6"+
162 "\0\u0775\0\u07c8\0\u081b\0\u086e\0\u08c1\0\u05d6\0\u0914\0\u0967"+
163 "\0\u05d6\0\u05d6\0\u09ba\0\u0a0d\0\u05d6\0\u0a60\0\u05d6\0\u05d6"+
164 "\0\u05d6\0\u0ab3\0\u05d6\0\u0b06\0\u0b59\0\u0bac\0\u0bff\0\u0c52"+
165 "\0\u0ca5\0\u0cf8\0\u0d4b\0\u0d9e\0\u0df1\0\u0e44\0\u0e97\0\u0eea"+
166 "\0\u0f3d\0\u0f90\0\u0fe3\0\u1036\0\u1089\0\u0ab3\0\u10dc\0\u112f"+
167 "\0\u05d6\0\u1182\0\u05d6\0\u11d5\0\u05d6\0\u05d6\0\u05d6\0\u1228"+
168 "\0\u05d6\0\u127b\0\u12ce\0\u05d6\0\u05d6\0\u1321\0\u1374\0\u13c7"+
169 "\0\u141a\0\u146d\0\u14c0\0\u1513\0\u05d6\0\u1566\0\u15b9\0\u160c"+
170 "\0\u05d6\0\u165f\0\u16b2\0\u1705\0\u05d6\0\u1758\0\u17ab\0\u17fe"+
171 "\0\u1851\0\u18a4\0\u18f7\0\u194a\0\u199d\0\u19f0\0\u1a43\0\u1a96"+
172 "\0\u1ae9\0\u1b3c\0\u1b8f\0\u1be2\0\u1c35\0\u05d6\0\u05d6\0\u1c88"+
173 "\0\u1cdb\0\u05d6\0\u1c88\0\u05d6\0\u1d2e\0\u05d6\0\u1d81\0\u1dd4"+
174 "\0\u1e27\0\u1e7a\0\u1ecd\0\u1f20\0\u05d6\0\u1f73\0\u1fc6\0\u2019"+
175 "\0\u206c\0\u20bf\0\u05d6\0\u05d6\0\u2112\0\u2165\0\u21b8\0\u220b"+
176 "\0\u225e\0\u05d6\0\u22b1\0\u2304\0\u2357\0\u23aa\0\u23fd\0\u2450"+
177 "\0\u24a3\0\u24f6\0\u2549\0\u259c\0\u25ef\0\u2642\0\u2695\0\u26e8"+
178 "\0\u273b\0\u278e\0\u27e1\0\u2834\0\u2887\0\u28da\0\u292d\0\u2980"+
179 "\0\u29d3\0\u2a26\0\u2a79\0\u2acc\0\u2b1f\0\u2b72\0\u2bc5\0\u2c18"+
180 "\0\u2c6b\0\u2cbe\0\u2d11\0\u2d64\0\u2db7\0\u2e0a\0\u2e5d\0\u2eb0"+
181 "\0\u2f03\0\u2f56\0\u2fa9\0\u2ffc\0\u304f\0\u30a2\0\u30f5\0\u3148"+
182 "\0\u319b\0\u31ee\0\u3241\0\u3294\0\u32e7\0\u333a\0\u338d\0\u33e0"+
183 "\0\u3433\0\u3486\0\u34d9\0\u352c\0\u357f\0\u35d2\0\u3625\0\u3678"+
184 "\0\u36cb\0\u371e\0\u3771\0\u37c4\0\u3817\0\u05d6\0\u1566\0\u386a"+
185 "\0\u38bd\0\u05d6\0\u3910\0\u3963\0\u38bd\0\u39b6\0\u3a09\0\u3a5c"+
186 "\0\u3aaf\0\u3aaf\0\u3aaf\0\u3b02\0\u3b55\0\u3ba8\0\u3bfb\0\u3c4e"+
187 "\0\u3ca1\0\u3cf4\0\u1374\0\u3d47\0\u3d9a\0\u3ded\0\u3e40\0\u3e93"+
188 "\0\u3ee6\0\u3f39\0\u3f8c\0\u3fdf\0\u4032\0\u4085\0\u40d8\0\u412b"+
189 "\0\u417e\0\u41d1\0\u4224\0\u4277\0\u42ca\0\u431d\0\u4370\0\u43c3"+
190 "\0\u4416\0\u4469\0\u44bc\0\u450f\0\u4562\0\u45b5\0\u4608\0\u465b"+
191 "\0\u46ae\0\u4701\0\u4754\0\u47a7\0\u47fa\0\u484d\0\u48a0\0\u48f3"+
192 "\0\u4946\0\u4999\0\u49ec\0\u4a3f\0\u4a92\0\u4ae5\0\u05d6\0\u4b38"+
193 "\0\u4b8b\0\u4bde\0\u05d6\0\u4c31\0\u4c84\0\u4cd7\0\u4d2a\0\u4d7d"+
194 "\0\u1fc6\0\u4dd0\0\u4e23\0\u05d6\0\u4e76\0\u4ec9\0\u4f1c\0\u4f6f"+
195 "\0\u4fc2\0\u5015\0\u5068\0\u50bb\0\u510e\0\u5161\0\u51b4\0\u5207"+
196 "\0\u525a\0\u52ad\0\u5300\0\u5353\0\u53a6\0\u53f9\0\u544c\0\u549f"+
197 "\0\u54f2\0\u5545\0\u5598\0\u55eb\0\u563e\0\u5691\0\u56e4\0\u5737"+
198 "\0\u578a\0\u2d64\0\u57dd\0\u5830\0\u5883\0\u58d6\0\u5929\0\u597c"+
199 "\0\u59cf\0\u5a22\0\u5a75\0\u5ac8\0\u5b1b\0\u5b6e\0\u5bc1\0\u5c14"+
200 "\0\u5c67\0\u0d4b\0\u5cba\0\u5d0d\0\u5d60\0\u5db3\0\u5e06\0\u5e59"+
201 "\0\u5eac\0\u5eff\0\u5f52\0\u5fa5\0\u5ff8\0\u604b\0\u609e\0\u60f1"+
202 "\0\u6144\0\u6197\0\u61ea\0\u623d\0\u6290\0\u62e3\0\u6336\0\u6389"+
203 "\0\u63dc\0\u642f\0\u6482\0\u64d5\0\u6528\0\u657b\0\u65ce\0\u3aaf"+
204 "\0\u6621\0\u6674\0\u66c7\0\u671a\0\u676d\0\u67c0\0\u6813\0\u6866"+
205 "\0\u68b9\0\u690c\0\u695f\0\u69b2\0\u6a05\0\u6a58\0\u6aab\0\u6afe"+
206 "\0\u6b51\0\u6ba4\0\u6bf7\0\u6c4a\0\u6c9d\0\u6cf0\0\u6d43\0\u6d96"+
207 "\0\u6de9\0\u6e3c\0\u6e8f\0\u6ee2\0\u6f35\0\u6f88\0\u6fdb\0\u702e"+
208 "\0\u7081\0\u70d4\0\u7127\0\u717a\0\u71cd\0\u7220\0\u7273\0\u72c6"+
209 "\0\u7319\0\u736c\0\u73bf\0\u7412\0\u7465\0\u74b8\0\u750b\0\u755e"+
210 "\0\u75b1\0\u7604\0\u7657\0\u76aa\0\u76fd\0\u7750\0\u77a3\0\u77f6"+
211 "\0\u7849\0\u789c\0\u78ef\0\u7942\0\u7995\0\u79e8\0\u05d6\0\u7a3b"+
212 "\0\u7a8e\0\u7ae1\0\u7b34\0\u7b87\0\u7bda\0\u7c2d\0\u7c80\0\u7cd3"+
213 "\0\u7d26\0\u7d79\0\u7dcc\0\u7e1f\0\u7e72\0\u7ec5\0\u7f18\0\u7f6b"+
214 "\0\u7fbe\0\u8011\0\u8064\0\u80b7\0\u810a\0\u815d\0\u81b0\0\u8203"+
215 "\0\u5a22\0\u8256\0\u82a9\0\u82fc\0\u834f\0\u83a2\0\u2f56\0\u83f5"+
216 "\0\u8448\0\u849b\0\u84ee\0\u8541\0\u8594\0\u85e7\0\u05d6\0\u863a"+
217 "\0\u868d\0\u86e0\0\u8733\0\u8786\0\u87d9\0\u882c\0\u887f\0\u88d2"+
218 "\0\u1374\0\u8925\0\u8978\0\u89cb\0\u8a1e\0\u8a71\0\u8ac4\0\u8b17"+
219 "\0\u8b6a\0\u8bbd\0\u8c10\0\u8c63\0\u1374\0\u8cb6\0\u1374\0\u8d09"+
220 "\0\u8d5c\0\u8daf\0\u8e02\0\u8e55\0\u8ea8\0\u8efb\0\u8f4e\0\u8fa1"+
221 "\0\u8ff4\0\u9047\0\u909a\0\u90ed\0\u4b8b\0\u05d6\0\u9140\0\u9193"+
222 "\0\u91e6\0\u9239\0\u928c\0\u92df\0\u9332\0\u7ae1\0\u9385\0\u93d8"+
223 "\0\u942b\0\u947e\0\u94d1\0\u9524\0\u9577\0\u95ca\0\u961d\0\u961d"+
224 "\0\u9670\0\u96c3\0\u9716\0\u9769\0\u97bc\0\u980f\0\u9862\0\u98b5"+
225 "\0\u9908\0\u995b\0\u99ae\0\u9a01\0\u9a54\0\u9aa7\0\u9afa\0\u9b4d"+
226 "\0\u9ba0\0\u68b9\0\u9bf3\0\u9c46\0\u9c99\0\u9cec\0\u9d3f\0\u9d92"+
227 "\0\u9de5\0\u9e38\0\u9e8b\0\u9ede\0\u9f31\0\u9f84\0\u9fd7\0\ua02a"+
228 "\0\ua07d\0\ua0d0\0\ua123\0\ua176\0\ua1c9\0\u9239\0\ua21c\0\ua26f"+
229 "\0\ua2c2\0\ua315\0\ua368\0\ua3bb\0\ua40e\0\ua461\0\ua4b4\0\ua507"+
230 "\0\ua55a\0\ua5ad\0\ua600\0\ua653\0\ua6a6\0\ua6f9\0\ua74c\0\ua79f"+
231 "\0\ua7f2\0\ua845\0\ua898\0\ua8eb\0\ua93e\0\ua991\0\ua9e4\0\uaa37"+
232 "\0\uaa8a\0\uaadd\0\uab30\0\uab83\0\uabd6\0\u206c\0\uac29\0\uac7c"+
233 "\0\uaccf\0\uad22\0\uad75\0\uadc8\0\uae1b\0\uae6e\0\uaec1\0\uaf14"+
234 "\0\uaf67\0\uafba\0\ub00d\0\ub060\0\ub0b3\0\ub106\0\ub159\0\ub1ac"+
235 "\0\ub1ff\0\ub252\0\ub2a5\0\u05d6\0\ub2f8\0\u05d6\0\u05d6";
236
237 private static int [] zzUnpackRowMap() {
238 int [] result = new int[615];
239 int offset = 0;
240 offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
241 return result;
242 }
243
244 private static int zzUnpackRowMap(String packed, int offset, int [] result) {
245 int i = 0; /* index in packed string */
246 int j = offset; /* index in unpacked array */
247 int l = packed.length();
248 while (i < l) {
249 int high = packed.charAt(i++) << 16;
250 result[j++] = high | packed.charAt(i++);
251 }
252 return j;
253 }
254
255 /**
256 * The transition table of the DFA
257 */
258 private static final int [] ZZ_TRANS = zzUnpackTrans();
259
260 private static final String ZZ_TRANS_PACKED_0 =
261 "\1\21\1\22\1\23\1\24\1\25\1\26\115\21\2\27"+
262 "\1\30\35\27\1\31\17\27\1\32\3\27\1\33\2\27"+
263 "\1\34\33\27\2\35\1\36\46\35\1\37\51\35\2\40"+
264 "\1\41\14\40\1\42\103\40\1\43\1\44\1\0\1\43"+
265 "\1\25\2\43\1\45\1\46\6\43\1\47\25\43\1\50"+
266 "\11\43\1\51\43\43\2\52\1\0\1\52\1\53\2\52"+
267 "\2\53\1\54\1\55\1\56\1\57\1\60\1\61\1\53"+
268 "\3\52\1\62\1\52\1\63\7\52\1\64\1\65\1\66"+
269 "\5\52\1\53\6\52\1\57\2\52\1\53\1\67\1\61"+
270 "\1\60\1\54\1\65\1\64\1\66\1\52\1\70\1\71"+
271 "\1\72\1\52\2\73\1\74\1\63\1\52\1\75\1\76"+
272 "\1\77\1\67\2\52\1\62\1\56\1\70\1\75\1\55"+
273 "\1\71\1\72\1\74\1\52\1\77\2\52\7\100\1\101"+
274 "\113\100\57\102\1\101\43\102\1\43\1\44\1\0\1\43"+
275 "\1\25\2\43\1\103\1\104\6\43\1\105\25\43\1\50"+
276 "\11\43\1\106\43\43\7\100\1\107\113\100\57\102\1\107"+
277 "\43\102\1\110\1\25\1\111\1\112\1\25\1\113\1\114"+
278 "\1\115\1\116\3\117\1\120\2\117\1\121\1\117\1\122"+
279 "\1\123\1\117\1\122\1\124\1\125\2\110\2\117\1\126"+
280 "\4\117\1\127\1\130\1\131\1\114\1\132\4\126\3\50"+
281 "\1\133\1\134\1\131\1\135\1\117\1\136\1\137\1\140"+
282 "\1\141\1\142\1\143\1\144\2\117\1\145\12\117\1\122"+
283 "\1\117\1\146\1\147\1\150\1\117\1\151\1\117\1\152"+
284 "\1\153\1\117\1\154\2\117\2\155\1\156\4\155\1\157"+
285 "\20\155\1\160\72\155\2\161\1\162\25\161\1\163\26\161"+
286 "\1\164\43\161\2\165\1\166\1\167\27\165\1\170\24\165"+
287 "\1\171\3\165\1\172\2\165\1\173\33\165\2\174\1\175"+
288 "\1\176\54\174\1\171\3\174\1\172\2\174\1\173\33\174"+
289 "\2\21\4\0\116\21\1\22\2\0\1\25\1\0\115\21"+
290 "\133\0\1\177\1\200\5\201\1\0\6\201\6\0\4\201"+
291 "\10\0\1\202\1\203\2\0\2\201\2\0\3\201\1\200"+
292 "\37\201\1\0\1\25\2\0\1\25\116\0\4\26\1\0"+
293 "\1\26\1\204\114\26\2\27\1\0\35\27\1\0\17\27"+
294 "\1\0\3\27\1\0\2\27\1\0\33\27\40\0\1\205"+
295 "\143\0\1\206\115\0\1\207\4\0\1\210\130\0\1\211"+
296 "\33\0\2\35\1\0\46\35\1\0\51\35\17\0\1\212"+
297 "\103\0\2\40\1\0\14\40\1\0\103\40\2\43\1\0"+
298 "\1\43\1\0\2\43\2\0\6\43\1\0\25\43\1\0"+
299 "\11\43\1\0\44\43\1\44\1\0\1\43\1\25\2\43"+
300 "\2\0\6\43\1\0\25\43\1\0\11\43\1\0\43\43"+
301 "\17\0\1\47\103\0\2\52\1\0\1\52\1\0\2\52"+
302 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\45\52"+
303 "\1\0\1\52\1\0\2\52\2\0\1\52\1\213\2\52"+
304 "\1\214\1\215\1\0\5\52\1\216\11\52\1\217\5\52"+
305 "\1\0\11\52\1\0\1\52\1\215\1\214\3\52\1\217"+
306 "\1\52\1\220\1\221\2\52\2\222\1\52\1\216\11\52"+
307 "\1\220\1\52\1\213\1\221\10\52\1\0\1\52\1\0"+
308 "\2\52\2\0\3\52\1\223\2\52\1\0\17\52\1\224"+
309 "\5\52\1\0\6\52\1\223\2\52\1\0\6\52\1\224"+
310 "\1\52\1\225\1\226\17\52\1\225\2\52\1\226\10\52"+
311 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\5\52"+
312 "\1\227\17\52\1\0\11\52\1\0\17\52\1\227\25\52"+
313 "\1\0\1\52\1\0\2\52\2\0\1\230\5\52\1\0"+
314 "\15\52\1\231\1\232\6\52\1\0\11\52\1\0\3\52"+
315 "\1\230\1\232\1\231\4\52\1\233\1\52\2\234\17\52"+
316 "\1\233\7\52\1\0\1\52\1\0\2\52\2\0\2\52"+
317 "\1\235\3\52\1\0\15\52\1\236\7\52\1\0\11\52"+
318 "\1\0\5\52\1\236\2\52\1\237\17\52\1\235\1\237"+
319 "\13\52\1\0\1\52\1\0\2\52\2\0\2\52\1\76"+
320 "\1\240\1\52\1\76\1\0\3\52\1\241\12\52\1\242"+
321 "\1\243\5\52\1\0\6\52\1\240\2\52\1\0\1\244"+
322 "\1\76\2\52\1\242\1\52\1\243\1\52\1\245\5\52"+
323 "\1\76\5\52\1\244\2\52\1\241\1\76\1\245\4\52"+
324 "\1\76\6\52\1\0\1\52\1\0\2\52\2\0\2\52"+
325 "\1\76\1\234\2\52\1\0\5\52\1\246\7\52\1\247"+
326 "\7\52\1\0\6\52\1\234\1\250\1\52\1\0\5\52"+
327 "\1\247\2\52\1\251\1\252\4\52\1\253\1\246\1\250"+
328 "\7\52\1\76\1\251\2\52\1\252\1\52\1\253\6\52"+
329 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\15\52"+
330 "\1\76\7\52\1\0\11\52\1\0\5\52\1\76\37\52"+
331 "\1\0\1\52\1\0\2\52\2\0\3\52\1\254\2\52"+
332 "\1\0\17\52\1\255\5\52\1\0\6\52\1\254\2\52"+
333 "\1\0\6\52\1\255\1\52\1\256\20\52\1\256\13\52"+
334 "\1\0\1\52\1\0\2\52\2\0\2\52\1\257\1\260"+
335 "\2\52\1\0\25\52\1\0\6\52\1\260\2\52\1\0"+
336 "\11\52\1\261\16\52\1\257\3\52\1\261\10\52\1\0"+
337 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
338 "\11\52\1\0\14\52\2\262\5\52\1\263\14\52\1\263"+
339 "\4\52\1\0\1\52\1\0\2\52\2\0\2\52\1\76"+
340 "\2\52\1\264\1\0\17\52\1\265\5\52\1\0\11\52"+
341 "\1\0\1\52\1\264\4\52\1\265\16\52\1\76\2\52"+
342 "\1\76\14\52\1\0\1\52\1\0\2\52\2\0\1\266"+
343 "\1\267\1\270\1\52\1\271\1\52\1\0\3\52\1\272"+
344 "\1\52\1\273\17\52\1\0\11\52\1\0\2\52\1\271"+
345 "\1\266\12\52\1\274\1\273\7\52\1\272\1\270\2\52"+
346 "\1\267\2\52\1\274\6\52\1\0\1\52\1\0\2\52"+
347 "\2\0\4\52\1\275\1\52\1\0\3\52\1\276\1\52"+
348 "\1\277\7\52\1\76\7\52\1\0\11\52\1\0\2\52"+
349 "\1\275\2\52\1\76\11\52\1\277\7\52\1\276\15\52"+
350 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\17\52"+
351 "\1\300\5\52\1\0\11\52\1\0\6\52\1\300\1\52"+
352 "\1\301\1\302\17\52\1\301\2\52\1\302\10\52\1\0"+
353 "\1\52\1\0\2\52\2\0\6\52\1\0\5\52\1\303"+
354 "\11\52\1\304\5\52\1\0\11\52\1\0\6\52\1\304"+
355 "\1\52\1\305\6\52\1\303\11\52\1\305\13\52\1\0"+
356 "\1\52\1\0\2\52\2\0\3\52\1\306\1\52\1\76"+
357 "\1\0\15\52\1\76\1\307\1\310\5\52\1\0\6\52"+
358 "\1\306\2\52\1\0\1\52\1\76\2\52\1\307\1\76"+
359 "\1\310\1\52\1\311\5\52\1\76\12\52\1\311\4\52"+
360 "\1\76\6\52\1\0\1\52\1\0\2\52\2\0\6\52"+
361 "\1\0\3\52\1\312\13\52\1\313\5\52\1\0\11\52"+
362 "\1\0\6\52\1\313\20\52\1\312\15\52\1\0\1\52"+
363 "\1\0\2\52\2\0\3\52\1\314\2\52\1\0\25\52"+
364 "\1\0\6\52\1\314\2\52\1\0\10\52\1\315\20\52"+
365 "\1\315\11\52\7\100\1\0\113\100\57\102\1\0\43\102"+
366 "\17\0\1\316\103\0\1\110\10\0\6\110\1\0\6\110"+
367 "\1\0\4\110\1\0\4\110\14\0\2\110\2\0\43\110"+
368 "\3\0\1\317\4\0\1\320\34\0\1\50\62\0\1\50"+
369 "\37\0\1\50\55\0\10\321\1\322\17\321\1\323\2\321"+
370 "\1\324\11\321\1\325\55\321\1\110\10\0\6\117\1\0"+
371 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
372 "\2\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
373 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
374 "\2\0\35\117\1\327\5\117\17\0\1\330\25\0\1\50"+
375 "\55\0\1\331\10\0\6\331\1\0\1\331\2\122\1\331"+
376 "\1\122\1\331\1\0\4\331\1\0\1\331\1\332\1\333"+
377 "\1\334\1\0\1\335\12\0\2\331\2\0\4\331\1\333"+
378 "\1\332\1\334\7\331\1\333\6\331\1\122\10\331\1\333"+
379 "\5\331\10\0\6\331\1\0\1\331\1\336\1\337\1\331"+
380 "\1\337\1\331\1\0\4\331\1\0\1\340\1\332\1\333"+
381 "\1\334\1\0\1\335\12\0\2\331\2\0\4\331\1\333"+
382 "\1\332\1\334\7\331\1\333\6\331\1\337\10\331\1\333"+
383 "\2\331\1\340\1\331\1\110\10\0\6\117\1\0\6\117"+
384 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
385 "\2\0\35\117\1\341\5\117\45\0\1\50\115\0\1\50"+
386 "\4\0\1\50\76\0\2\335\1\0\1\335\60\0\1\335"+
387 "\61\0\2\50\55\0\1\110\10\0\6\117\1\0\6\117"+
388 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
389 "\2\0\3\117\1\342\1\343\10\117\1\344\17\117\1\345"+
390 "\5\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
391 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\34\117"+
392 "\1\346\6\117\1\110\10\0\6\117\1\0\6\117\1\0"+
393 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
394 "\1\347\27\117\1\350\6\117\1\351\3\117\1\110\10\0"+
395 "\6\117\1\0\5\117\1\352\1\0\1\110\1\326\2\117"+
396 "\1\0\4\117\14\0\2\117\2\0\30\117\1\353\1\354"+
397 "\11\117\1\110\10\0\6\117\1\0\5\117\1\355\1\0"+
398 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
399 "\1\356\1\357\5\117\1\360\27\117\1\361\3\117\1\110"+
400 "\10\0\6\117\1\0\5\117\1\362\1\0\1\110\1\326"+
401 "\2\117\1\0\4\117\14\0\1\363\1\117\2\0\5\117"+
402 "\1\364\23\117\1\365\2\117\1\366\6\117\1\110\10\0"+
403 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
404 "\4\117\14\0\2\117\2\0\34\117\1\367\6\117\1\110"+
405 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
406 "\1\0\4\117\14\0\2\117\2\0\3\117\1\370\1\117"+
407 "\1\371\27\117\1\372\2\117\1\373\1\374\1\117\1\110"+
408 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
409 "\1\0\4\117\14\0\1\375\1\117\2\0\1\376\42\117"+
410 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
411 "\2\117\1\0\4\117\14\0\2\117\2\0\31\117\1\377"+
412 "\11\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
413 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\30\117"+
414 "\1\u0100\3\117\1\u0101\2\117\1\u0102\3\117\1\110\10\0"+
415 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
416 "\4\117\14\0\2\117\2\0\6\117\1\u0103\34\117\1\110"+
417 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
418 "\1\0\4\117\14\0\2\117\2\0\27\117\1\u0104\13\117"+
419 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
420 "\2\117\1\0\4\117\14\0\2\117\2\0\1\u0105\4\117"+
421 "\1\u0106\23\117\1\u0107\2\117\1\u0108\6\117\1\110\10\0"+
422 "\6\117\1\0\5\117\1\u0109\1\0\1\110\1\326\2\117"+
423 "\1\0\4\117\14\0\2\117\2\0\6\117\1\u010a\22\117"+
424 "\1\u010b\11\117\1\110\10\0\6\117\1\0\6\117\1\0"+
425 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
426 "\6\117\1\u010c\25\117\1\u010d\6\117\1\110\10\0\6\117"+
427 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
428 "\14\0\2\117\2\0\31\117\1\366\2\117\1\u010e\6\117"+
429 "\2\155\1\0\4\155\1\0\20\155\1\0\72\155\2\u010f"+
430 "\1\0\22\u010f\1\u0110\73\u010f\1\u0111\1\u010f\2\161\1\0"+
431 "\25\161\1\0\26\161\1\0\43\161\2\165\2\0\27\165"+
432 "\1\0\24\165\1\0\3\165\1\0\2\165\1\0\33\165"+
433 "\10\0\1\u0112\122\0\1\u0113\173\0\1\u0114\115\0\1\u0115"+
434 "\4\0\1\u0116\130\0\1\u0117\33\0\2\174\2\0\54\174"+
435 "\1\0\3\174\1\0\2\174\1\0\33\174\10\0\1\u0118"+
436 "\123\0\6\u0119\1\0\6\u0119\6\0\4\u0119\14\0\2\u0119"+
437 "\2\0\43\u0119\11\0\1\201\1\u011a\4\201\1\0\6\201"+
438 "\6\0\4\201\14\0\2\201\2\0\33\201\1\u011a\7\201"+
439 "\11\0\6\201\1\0\6\201\6\0\4\201\14\0\2\201"+
440 "\2\0\43\201\40\0\1\u011b\101\0\1\u011c\164\0\1\u011d"+
441 "\126\0\1\u011e\117\0\1\u011f\127\0\1\u0120\33\0\2\52"+
442 "\1\0\1\52\1\0\2\52\2\0\2\52\1\u0121\3\52"+
443 "\1\0\25\52\1\0\11\52\1\0\30\52\1\u0121\14\52"+
444 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\25\52"+
445 "\1\0\11\52\1\0\10\52\1\u0122\20\52\1\u0122\13\52"+
446 "\1\0\1\52\1\0\2\52\2\0\2\52\1\u0123\3\52"+
447 "\1\0\25\52\1\0\11\52\1\0\13\52\1\227\14\52"+
448 "\1\u0123\6\52\1\227\5\52\1\0\1\52\1\0\2\52"+
449 "\2\0\4\52\1\76\1\52\1\0\3\52\1\76\21\52"+
450 "\1\0\11\52\1\0\2\52\1\76\24\52\1\76\15\52"+
451 "\1\0\1\52\1\0\2\52\2\0\1\52\1\u0124\1\u0125"+
452 "\3\52\1\0\15\52\1\u0126\7\52\1\0\11\52\1\0"+
453 "\5\52\1\u0126\22\52\1\u0125\2\52\1\u0124\11\52\1\0"+
454 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
455 "\11\52\1\0\14\52\2\u0127\27\52\1\0\1\52\1\0"+
456 "\2\52\2\0\6\52\1\0\5\52\1\u0128\17\52\1\0"+
457 "\11\52\1\0\17\52\1\u0128\25\52\1\0\1\52\1\0"+
458 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
459 "\10\52\1\u0129\20\52\1\u0129\13\52\1\0\1\52\1\0"+
460 "\2\52\2\0\5\52\1\u012a\1\0\25\52\1\0\11\52"+
461 "\1\0\1\52\1\u012a\43\52\1\0\1\52\1\0\2\52"+
462 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\12\52"+
463 "\1\u012b\22\52\1\u012b\7\52\1\0\1\52\1\0\2\52"+
464 "\2\0\4\52\1\u0124\1\52\1\0\25\52\1\0\11\52"+
465 "\1\0\2\52\1\u0124\7\52\1\u012c\22\52\1\u012c\7\52"+
466 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\15\52"+
467 "\1\u012d\7\52\1\0\11\52\1\0\5\52\1\u012d\6\52"+
468 "\2\u012e\1\u012a\17\52\1\u012a\6\52\1\0\1\52\1\0"+
469 "\2\52\2\0\6\52\1\0\15\52\1\u012a\7\52\1\0"+
470 "\11\52\1\0\5\52\1\u012a\37\52\1\0\1\52\1\0"+
471 "\2\52\2\0\3\52\1\u012f\2\52\1\0\25\52\1\0"+
472 "\6\52\1\u012f\2\52\1\0\45\52\1\0\1\52\1\0"+
473 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
474 "\10\52\1\u0130\20\52\1\u0130\13\52\1\0\1\52\1\0"+
475 "\2\52\2\0\2\52\1\u0131\3\52\1\0\25\52\1\0"+
476 "\11\52\1\0\30\52\1\u0131\14\52\1\0\1\52\1\0"+
477 "\2\52\2\0\1\76\3\52\1\u0132\1\52\1\0\25\52"+
478 "\1\0\11\52\1\0\2\52\1\u0132\1\76\41\52\1\0"+
479 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
480 "\7\52\1\76\1\52\1\0\20\52\1\76\24\52\1\0"+
481 "\1\52\1\0\2\52\2\0\6\52\1\0\17\52\1\76"+
482 "\5\52\1\0\11\52\1\0\6\52\1\76\2\52\1\u0133"+
483 "\22\52\1\u0133\10\52\1\0\1\52\1\0\2\52\2\0"+
484 "\6\52\1\0\25\52\1\0\11\52\1\0\10\52\1\u0134"+
485 "\20\52\1\u0134\13\52\1\0\1\52\1\0\2\52\2\0"+
486 "\2\52\1\u0135\3\52\1\0\25\52\1\0\11\52\1\0"+
487 "\30\52\1\u0135\14\52\1\0\1\52\1\0\2\52\2\0"+
488 "\5\52\1\227\1\0\25\52\1\0\11\52\1\0\1\52"+
489 "\1\227\12\52\2\u012a\27\52\1\0\1\52\1\0\2\52"+
490 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\11\52"+
491 "\1\252\22\52\1\252\10\52\1\0\1\52\1\0\2\52"+
492 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\11\52"+
493 "\1\u0136\22\52\1\u0136\10\52\1\0\1\52\1\0\2\52"+
494 "\2\0\6\52\1\0\14\52\1\u0137\10\52\1\0\11\52"+
495 "\1\0\41\52\1\u0137\3\52\1\0\1\52\1\0\2\52"+
496 "\2\0\6\52\1\0\17\52\1\u0138\5\52\1\0\11\52"+
497 "\1\0\6\52\1\u0138\36\52\1\0\1\52\1\0\2\52"+
498 "\2\0\6\52\1\0\3\52\1\227\21\52\1\0\11\52"+
499 "\1\0\27\52\1\227\15\52\1\0\1\52\1\0\2\52"+
500 "\2\0\5\52\1\u0139\1\0\25\52\1\0\11\52\1\0"+
501 "\1\52\1\u0139\43\52\1\0\1\52\1\0\2\52\2\0"+
502 "\3\52\1\u013a\2\52\1\0\25\52\1\0\6\52\1\u013a"+
503 "\2\52\1\0\11\52\1\u013b\22\52\1\u013b\10\52\1\0"+
504 "\1\52\1\0\2\52\2\0\1\u013c\5\52\1\0\25\52"+
505 "\1\0\11\52\1\0\3\52\1\u013c\41\52\1\0\1\52"+
506 "\1\0\2\52\2\0\1\u013d\5\52\1\0\25\52\1\0"+
507 "\11\52\1\0\3\52\1\u013d\41\52\1\0\1\52\1\0"+
508 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
509 "\16\52\1\u013e\17\52\1\u013e\6\52\1\0\1\52\1\0"+
510 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
511 "\11\52\1\76\22\52\1\76\10\52\1\0\1\52\1\0"+
512 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
513 "\12\52\1\u013f\22\52\1\u013f\7\52\1\0\1\52\1\0"+
514 "\2\52\2\0\6\52\1\0\25\52\1\0\7\52\1\u0140"+
515 "\1\52\1\0\20\52\1\u0140\24\52\1\0\1\52\1\0"+
516 "\2\52\2\0\6\52\1\0\3\52\1\u0141\21\52\1\0"+
517 "\11\52\1\0\13\52\1\u0142\13\52\1\u0141\7\52\1\u0142"+
518 "\5\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
519 "\25\52\1\0\11\52\1\0\10\52\1\u0143\20\52\1\u0143"+
520 "\13\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
521 "\17\52\1\u0144\5\52\1\0\7\52\1\u0145\1\52\1\0"+
522 "\6\52\1\u0144\11\52\1\u0145\24\52\1\0\1\52\1\0"+
523 "\2\52\2\0\2\52\1\u0146\3\52\1\0\25\52\1\0"+
524 "\11\52\1\0\11\52\1\u012b\1\u0147\15\52\1\u0146\3\52"+
525 "\1\u012b\1\u0147\7\52\1\0\1\52\1\0\2\52\2\0"+
526 "\6\52\1\0\3\52\1\u0148\21\52\1\0\11\52\1\0"+
527 "\27\52\1\u0148\15\52\1\0\1\52\1\0\2\52\2\0"+
528 "\6\52\1\0\17\52\1\u0149\5\52\1\0\11\52\1\0"+
529 "\6\52\1\u0149\36\52\1\0\1\52\1\0\2\52\2\0"+
530 "\6\52\1\0\25\52\1\0\11\52\1\0\14\52\2\u014a"+
531 "\27\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
532 "\25\52\1\0\11\52\1\0\10\52\1\u014b\20\52\1\u014b"+
533 "\13\52\1\0\1\52\1\0\2\52\2\0\3\52\1\u014c"+
534 "\2\52\1\0\25\52\1\0\6\52\1\u014c\2\52\1\0"+
535 "\45\52\1\0\1\52\1\0\2\52\2\0\2\52\1\u014d"+
536 "\3\52\1\0\25\52\1\0\11\52\1\0\30\52\1\u014d"+
537 "\14\52\1\0\1\52\1\0\2\52\2\0\5\52\1\u014e"+
538 "\1\0\17\52\1\u014f\5\52\1\0\11\52\1\0\1\52"+
539 "\1\u014e\4\52\1\u014f\36\52\1\0\1\52\1\0\2\52"+
540 "\2\0\4\52\1\u0150\1\52\1\0\25\52\1\0\11\52"+
541 "\1\0\2\52\1\u0150\42\52\1\0\1\52\1\0\2\52"+
542 "\2\0\6\52\1\0\3\52\1\315\21\52\1\0\11\52"+
543 "\1\0\27\52\1\315\15\52\1\0\1\52\1\0\2\52"+
544 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\16\52"+
545 "\1\u0151\17\52\1\u0151\6\52\1\0\1\52\1\0\2\52"+
546 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\16\52"+
547 "\1\u0152\17\52\1\u0152\6\52\1\0\1\52\1\0\2\52"+
548 "\2\0\5\52\1\u0153\1\0\25\52\1\0\11\52\1\0"+
549 "\1\52\1\u0153\43\52\1\0\1\52\1\0\2\52\2\0"+
550 "\6\52\1\0\25\52\1\0\11\52\1\0\26\52\1\u0126"+
551 "\16\52\1\0\1\52\1\0\2\52\2\0\5\52\1\u0154"+
552 "\1\0\25\52\1\0\11\52\1\0\1\52\1\u0154\43\52"+
553 "\1\0\1\52\1\0\2\52\2\0\1\u0147\5\52\1\0"+
554 "\25\52\1\0\11\52\1\0\3\52\1\u0147\41\52\1\0"+
555 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
556 "\11\52\1\0\23\52\1\76\14\52\1\76\4\52\1\0"+
557 "\1\52\1\0\2\52\2\0\1\u0155\5\52\1\0\3\52"+
558 "\1\315\11\52\1\231\1\u0156\1\u0157\5\52\1\0\11\52"+
559 "\1\0\3\52\1\u0155\1\u0156\1\231\1\u0157\20\52\1\315"+
560 "\15\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
561 "\15\52\1\u0158\7\52\1\0\11\52\1\0\5\52\1\u0158"+
562 "\37\52\1\0\1\52\1\0\2\52\2\0\5\52\1\u0159"+
563 "\1\0\25\52\1\0\11\52\1\0\1\52\1\u0159\10\52"+
564 "\1\u015a\22\52\1\u015a\7\52\1\0\1\52\1\0\2\52"+
565 "\2\0\2\52\1\u015b\1\52\1\76\1\52\1\0\25\52"+
566 "\1\0\11\52\1\0\2\52\1\76\25\52\1\u015b\14\52"+
567 "\1\0\1\52\1\0\2\52\2\0\2\52\1\76\3\52"+
568 "\1\0\25\52\1\0\11\52\1\0\10\52\1\u015c\12\52"+
569 "\1\76\4\52\1\76\1\u015c\6\52\1\76\4\52\1\0"+
570 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
571 "\11\52\1\0\12\52\1\76\22\52\1\76\7\52\1\0"+
572 "\1\52\1\0\2\52\2\0\5\52\1\u015d\1\0\15\52"+
573 "\1\76\7\52\1\0\11\52\1\0\1\52\1\u015d\3\52"+
574 "\1\76\37\52\1\0\1\52\1\0\2\52\2\0\5\52"+
575 "\1\u015e\1\0\25\52\1\0\11\52\1\0\1\52\1\u015e"+
576 "\43\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
577 "\25\52\1\0\11\52\1\0\16\52\1\76\17\52\1\76"+
578 "\6\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
579 "\25\52\1\0\11\52\1\0\13\52\1\u015f\23\52\1\u015f"+
580 "\5\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
581 "\25\52\1\0\11\52\1\0\16\52\1\u0160\17\52\1\u0160"+
582 "\6\52\1\0\1\52\1\0\2\52\2\0\2\52\1\76"+
583 "\3\52\1\0\25\52\1\0\11\52\1\0\30\52\1\76"+
584 "\12\52\11\0\1\u0161\51\0\1\u0161\37\0\10\321\1\u0162"+
585 "\17\321\1\323\74\321\1\0\120\321\33\0\1\u0163\67\0"+
586 "\1\110\10\0\6\110\1\0\5\110\1\u0164\1\0\4\110"+
587 "\1\0\4\110\14\0\2\110\2\0\44\110\10\0\6\117"+
588 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
589 "\14\0\2\117\2\0\4\117\1\u0165\36\117\17\0\1\126"+
590 "\25\0\1\50\55\0\1\331\10\0\6\331\1\0\6\331"+
591 "\1\0\4\331\1\0\4\331\14\0\2\331\2\0\44\331"+
592 "\10\0\6\331\1\0\1\331\2\u0166\1\331\1\u0166\1\331"+
593 "\1\0\4\331\1\0\4\331\1\u0167\3\0\1\u0167\7\0"+
594 "\2\331\2\0\25\331\1\u0166\16\331\10\0\6\331\1\0"+
595 "\1\331\2\335\1\331\1\335\1\331\1\0\4\331\1\0"+
596 "\2\331\1\333\1\334\14\0\2\331\2\0\4\331\1\333"+
597 "\1\331\1\334\7\331\1\333\6\331\1\335\10\331\1\333"+
598 "\5\331\10\0\6\331\1\0\1\331\2\336\1\331\1\336"+
599 "\1\331\1\0\4\331\1\0\2\331\1\333\1\334\1\0"+
600 "\1\335\12\0\2\331\2\0\4\331\1\333\1\331\1\334"+
601 "\7\331\1\333\6\331\1\336\10\331\1\333\5\331\10\0"+
602 "\6\331\1\0\1\331\1\336\1\337\1\331\1\337\1\331"+
603 "\1\0\4\331\1\0\1\331\1\u0168\1\333\1\334\1\0"+
604 "\1\335\12\0\2\331\2\0\4\331\1\333\1\u0168\1\334"+
605 "\7\331\1\333\6\331\1\337\10\331\1\333\5\331\10\0"+
606 "\1\331\1\u0169\4\331\1\0\1\331\4\u0169\1\331\1\0"+
607 "\4\331\1\0\2\331\2\u0169\14\0\2\331\2\0\4\331"+
608 "\1\u0169\1\331\1\u0169\1\331\1\u0169\5\331\1\u0169\6\331"+
609 "\1\u0169\1\331\1\u0169\1\331\1\u0169\1\331\1\u0169\2\331"+
610 "\1\u0169\4\331\1\110\10\0\6\117\1\0\6\117\1\0"+
611 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
612 "\6\117\1\u016a\34\117\1\110\10\0\6\117\1\0\6\117"+
613 "\1\0\1\110\1\326\2\117\1\0\2\117\1\u016b\1\117"+
614 "\14\0\2\117\2\0\12\117\1\u016c\30\117\1\110\10\0"+
615 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
616 "\4\117\14\0\2\117\2\0\2\117\1\u016d\40\117\1\110"+
617 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
618 "\1\0\4\117\14\0\2\117\2\0\1\117\1\u016e\1\117"+
619 "\1\u016f\37\117\1\110\10\0\6\117\1\0\6\117\1\0"+
620 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
621 "\1\117\1\u0170\41\117\1\110\10\0\6\117\1\0\6\117"+
622 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u0171"+
623 "\1\117\2\0\30\117\1\u0172\12\117\1\110\10\0\6\117"+
624 "\1\0\5\117\1\u0173\1\0\1\110\1\326\2\117\1\0"+
625 "\4\117\14\0\2\117\2\0\31\117\1\u0174\5\117\1\343"+
626 "\3\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
627 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\2\117"+
628 "\1\u0175\40\117\1\110\10\0\6\117\1\0\6\117\1\0"+
629 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
630 "\27\117\1\u0176\13\117\1\110\10\0\6\117\1\0\6\117"+
631 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u0177"+
632 "\1\117\2\0\34\117\1\u0178\6\117\1\110\10\0\6\117"+
633 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
634 "\14\0\2\117\2\0\30\117\1\u0179\2\117\1\u017a\7\117"+
635 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
636 "\2\117\1\0\4\117\14\0\2\117\2\0\2\117\1\u017b"+
637 "\40\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
638 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\34\117"+
639 "\1\u017c\6\117\1\110\10\0\6\117\1\0\6\117\1\0"+
640 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
641 "\31\117\1\u017d\11\117\1\110\10\0\6\117\1\0\6\117"+
642 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u017e"+
643 "\1\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
644 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
645 "\2\0\35\117\1\u017f\5\117\1\110\10\0\6\117\1\0"+
646 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
647 "\2\117\2\0\35\117\1\u0180\5\117\1\110\10\0\6\117"+
648 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
649 "\14\0\2\117\2\0\35\117\1\u0181\5\117\1\110\10\0"+
650 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
651 "\4\117\14\0\2\117\2\0\34\117\1\u0182\6\117\1\110"+
652 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
653 "\1\0\4\117\14\0\2\117\2\0\5\117\1\u0183\35\117"+
654 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
655 "\2\117\1\0\4\117\14\0\2\117\2\0\30\117\1\343"+
656 "\12\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
657 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\35\117"+
658 "\1\u0184\5\117\1\110\10\0\6\117\1\0\6\117\1\0"+
659 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
660 "\33\117\1\u0185\7\117\1\110\10\0\6\117\1\0\6\117"+
661 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
662 "\2\0\3\117\1\u0186\37\117\1\110\10\0\6\117\1\0"+
663 "\5\117\1\u0187\1\0\1\110\1\326\2\117\1\0\4\117"+
664 "\14\0\2\117\2\0\43\117\1\110\10\0\6\117\1\0"+
665 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
666 "\2\117\2\0\31\117\1\u0188\11\117\1\110\10\0\6\117"+
667 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
668 "\14\0\2\117\2\0\1\117\1\u0189\1\u018a\40\117\1\110"+
669 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
670 "\1\0\4\117\14\0\2\117\2\0\1\117\1\u018b\41\117"+
671 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
672 "\2\117\1\0\4\117\14\0\1\u018c\1\117\2\0\43\117"+
673 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
674 "\2\117\1\0\4\117\14\0\2\117\2\0\12\117\1\343"+
675 "\30\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
676 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\6\117"+
677 "\1\u018d\34\117\1\110\10\0\6\117\1\0\6\117\1\0"+
678 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
679 "\34\117\1\u018e\6\117\1\110\10\0\6\117\1\0\6\117"+
680 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
681 "\2\0\1\117\1\u018f\41\117\1\110\10\0\6\117\1\0"+
682 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
683 "\2\117\2\0\1\117\1\u0190\41\117\1\110\10\0\6\117"+
684 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
685 "\14\0\2\117\2\0\3\117\1\u0191\37\117\1\110\10\0"+
686 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
687 "\4\117\14\0\2\117\2\0\31\117\1\u0192\11\117\1\110"+
688 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
689 "\1\0\4\117\14\0\2\117\2\0\31\117\1\u0193\11\117"+
690 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
691 "\2\117\1\0\4\117\14\0\2\117\2\0\1\117\1\u0194"+
692 "\1\117\1\u0186\37\117\1\110\10\0\6\117\1\0\6\117"+
693 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
694 "\2\0\35\117\1\u0195\5\117\1\110\10\0\6\117\1\0"+
695 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
696 "\2\117\2\0\5\117\1\u0196\35\117\1\110\10\0\6\117"+
697 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
698 "\14\0\2\117\2\0\7\117\1\343\33\117\1\110\10\0"+
699 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
700 "\4\117\14\0\2\117\2\0\1\117\1\u0197\41\117\1\110"+
701 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
702 "\1\0\4\117\14\0\2\117\2\0\4\117\1\u0198\1\u0199"+
703 "\21\117\1\u019a\13\117\1\110\10\0\6\117\1\0\5\117"+
704 "\1\u019b\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
705 "\2\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
706 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u019c"+
707 "\1\117\2\0\5\117\1\u019d\35\117\12\0\1\u019e\6\0"+
708 "\4\u019e\11\0\2\u019e\24\0\1\u019e\1\0\1\u019e\1\0"+
709 "\1\u019e\5\0\1\u019e\6\0\1\u019e\1\0\1\u019e\1\0"+
710 "\1\u019e\1\0\1\u019e\2\0\1\u019e\16\0\1\u019f\6\0"+
711 "\4\u019f\11\0\2\u019f\24\0\1\u019f\1\0\1\u019f\1\0"+
712 "\1\u019f\5\0\1\u019f\6\0\1\u019f\1\0\1\u019f\1\0"+
713 "\1\u019f\1\0\1\u019f\2\0\1\u019f\15\0\1\u01a0\51\0"+
714 "\1\u01a0\120\0\1\u01a1\126\0\1\u01a2\117\0\1\u01a3\127\0"+
715 "\1\u01a4\44\0\1\u01a5\51\0\1\u01a5\50\0\2\201\1\u01a6"+
716 "\3\201\1\0\6\201\6\0\4\201\14\0\2\201\2\0"+
717 "\30\201\1\u01a6\12\201\40\0\1\u01a7\144\0\1\u01a8\126\0"+
718 "\1\u011f\106\0\1\u01a9\111\0\1\u01aa\61\0\2\52\1\0"+
719 "\1\52\1\0\2\52\2\0\3\52\1\u01ab\2\52\1\0"+
720 "\25\52\1\0\6\52\1\u01ab\2\52\1\0\45\52\1\0"+
721 "\1\52\1\0\2\52\2\0\1\52\1\u0142\4\52\1\0"+
722 "\25\52\1\0\11\52\1\0\12\52\1\76\20\52\1\u0142"+
723 "\1\52\1\76\7\52\1\0\1\52\1\0\2\52\2\0"+
724 "\3\52\1\u01ac\2\52\1\0\25\52\1\0\6\52\1\u01ac"+
725 "\2\52\1\0\11\52\1\u01ad\22\52\1\u01ad\10\52\1\0"+
726 "\1\52\1\0\2\52\2\0\5\52\1\u01ae\1\0\25\52"+
727 "\1\0\11\52\1\0\1\52\1\u01ae\43\52\1\0\1\52"+
728 "\1\0\2\52\2\0\6\52\1\0\25\52\1\0\11\52"+
729 "\1\0\23\52\1\u0142\14\52\1\u0142\4\52\1\0\1\52"+
730 "\1\0\2\52\2\0\6\52\1\0\17\52\1\u01af\5\52"+
731 "\1\0\11\52\1\0\6\52\1\u01af\36\52\1\0\1\52"+
732 "\1\0\2\52\2\0\4\52\1\76\1\52\1\0\25\52"+
733 "\1\0\11\52\1\0\2\52\1\76\42\52\1\0\1\52"+
734 "\1\0\2\52\2\0\2\52\1\u01b0\3\52\1\0\25\52"+
735 "\1\0\11\52\1\0\30\52\1\u01b0\14\52\1\0\1\52"+
736 "\1\0\2\52\2\0\6\52\1\0\15\52\1\u014a\7\52"+
737 "\1\0\11\52\1\0\5\52\1\u014a\37\52\1\0\1\52"+
738 "\1\0\2\52\2\0\6\52\1\0\17\52\1\76\5\52"+
739 "\1\0\11\52\1\0\6\52\1\76\36\52\1\0\1\52"+
740 "\1\0\2\52\2\0\5\52\1\u0142\1\0\25\52\1\0"+
741 "\11\52\1\0\1\52\1\u0142\43\52\1\0\1\52\1\0"+
742 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
743 "\23\52\1\u01b1\14\52\1\u01b1\4\52\1\0\1\52\1\0"+
744 "\2\52\2\0\6\52\1\0\25\52\1\0\7\52\1\u01b2"+
745 "\1\52\1\0\20\52\1\u01b2\24\52\1\0\1\52\1\0"+
746 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
747 "\14\52\2\u01b3\27\52\1\0\1\52\1\0\2\52\2\0"+
748 "\6\52\1\0\25\52\1\0\11\52\1\0\12\52\1\u01b4"+
749 "\22\52\1\u01b4\7\52\1\0\1\52\1\0\2\52\2\0"+
750 "\6\52\1\0\25\52\1\0\11\52\1\0\13\52\1\u0142"+
751 "\23\52\1\u0142\5\52\1\0\1\52\1\0\2\52\2\0"+
752 "\6\52\1\0\25\52\1\0\11\52\1\0\10\52\1\u01b5"+
753 "\20\52\1\u01b5\13\52\1\0\1\52\1\0\2\52\2\0"+
754 "\6\52\1\0\5\52\1\u0147\17\52\1\0\11\52\1\0"+
755 "\17\52\1\u0147\25\52\1\0\1\52\1\0\2\52\2\0"+
756 "\6\52\1\0\25\52\1\0\7\52\1\u0152\1\52\1\0"+
757 "\20\52\1\u0152\24\52\1\0\1\52\1\0\2\52\2\0"+
758 "\3\52\1\u01b6\2\52\1\0\25\52\1\0\6\52\1\u01b6"+
759 "\2\52\1\0\45\52\1\0\1\52\1\0\2\52\2\0"+
760 "\6\52\1\0\25\52\1\0\11\52\1\0\10\52\1\u0146"+
761 "\20\52\1\u0146\13\52\1\0\1\52\1\0\2\52\2\0"+
762 "\6\52\1\0\25\52\1\0\11\52\1\0\11\52\1\u0147"+
763 "\22\52\1\u0147\10\52\1\0\1\52\1\0\2\52\2\0"+
764 "\5\52\1\u01b7\1\0\25\52\1\0\11\52\1\0\1\52"+
765 "\1\u01b7\43\52\1\0\1\52\1\0\2\52\2\0\6\52"+
766 "\1\0\25\52\1\0\11\52\1\0\10\52\1\312\20\52"+
767 "\1\312\13\52\1\0\1\52\1\0\2\52\2\0\5\52"+
768 "\1\u01b8\1\0\25\52\1\0\11\52\1\0\1\52\1\u01b8"+
769 "\43\52\1\0\1\52\1\0\2\52\2\0\1\52\1\u01b9"+
770 "\4\52\1\0\25\52\1\0\11\52\1\0\33\52\1\u01b9"+
771 "\11\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
772 "\25\52\1\0\11\52\1\0\11\52\1\u01ba\22\52\1\u01ba"+
773 "\10\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
774 "\17\52\1\u01bb\5\52\1\0\11\52\1\0\6\52\1\u01bb"+
775 "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
776 "\25\52\1\0\11\52\1\0\13\52\1\76\23\52\1\76"+
777 "\5\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
778 "\25\52\1\0\11\52\1\0\21\52\1\76\10\52\1\76"+
779 "\12\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
780 "\17\52\1\u01bc\5\52\1\0\11\52\1\0\6\52\1\u01bc"+
781 "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
782 "\17\52\1\u014a\5\52\1\0\11\52\1\0\6\52\1\u014a"+
783 "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
784 "\17\52\1\315\5\52\1\0\11\52\1\0\6\52\1\315"+
785 "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
786 "\25\52\1\0\11\52\1\0\14\52\2\u01bd\27\52\1\0"+
787 "\1\52\1\0\2\52\2\0\6\52\1\0\15\52\1\u01be"+
788 "\7\52\1\0\11\52\1\0\5\52\1\u01be\37\52\1\0"+
789 "\1\52\1\0\2\52\2\0\6\52\1\0\5\52\1\u01bf"+
790 "\17\52\1\0\11\52\1\0\17\52\1\u01bf\25\52\1\0"+
791 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
792 "\11\52\1\0\14\52\2\76\27\52\1\0\1\52\1\0"+
793 "\2\52\2\0\5\52\1\76\1\0\25\52\1\0\11\52"+
794 "\1\0\1\52\1\76\43\52\1\0\1\52\1\0\2\52"+
795 "\2\0\6\52\1\0\17\52\1\312\5\52\1\0\11\52"+
796 "\1\0\6\52\1\312\36\52\1\0\1\52\1\0\2\52"+
797 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\12\52"+
798 "\1\u01c0\22\52\1\u01c0\7\52\1\0\1\52\1\0\2\52"+
799 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\16\52"+
800 "\1\u01c1\17\52\1\u01c1\6\52\1\0\1\52\1\0\2\52"+
801 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\16\52"+
802 "\1\u012a\17\52\1\u012a\6\52\1\0\1\52\1\0\2\52"+
803 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\11\52"+
804 "\1\u01c2\22\52\1\u01c2\10\52\1\0\1\52\1\0\2\52"+
805 "\2\0\3\52\1\u01c3\2\52\1\0\25\52\1\0\6\52"+
806 "\1\u01c3\2\52\1\0\45\52\1\0\1\52\1\0\2\52"+
807 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\10\52"+
808 "\1\76\20\52\1\76\13\52\1\0\1\52\1\0\2\52"+
809 "\2\0\6\52\1\0\15\52\1\u01c4\7\52\1\0\11\52"+
810 "\1\0\5\52\1\u01c4\37\52\1\0\1\52\1\0\2\52"+
811 "\2\0\3\52\1\253\2\52\1\0\25\52\1\0\6\52"+
812 "\1\253\2\52\1\0\45\52\1\0\1\52\1\0\2\52"+
813 "\2\0\2\52\1\u01c5\3\52\1\0\25\52\1\0\11\52"+
814 "\1\0\30\52\1\u01c5\14\52\1\0\1\52\1\0\2\52"+
815 "\2\0\3\52\1\u01b8\2\52\1\0\25\52\1\0\6\52"+
816 "\1\u01b8\1\u01b2\1\52\1\0\20\52\1\u01b2\24\52\1\0"+
817 "\1\52\1\0\2\52\2\0\4\52\1\u0132\1\52\1\0"+
818 "\25\52\1\0\11\52\1\0\2\52\1\u0132\42\52\1\0"+
819 "\1\52\1\0\2\52\2\0\1\52\1\213\4\52\1\0"+
820 "\25\52\1\0\11\52\1\0\33\52\1\213\11\52\1\0"+
821 "\1\52\1\0\2\52\2\0\2\52\1\u01c6\3\52\1\0"+
822 "\25\52\1\0\11\52\1\0\30\52\1\u01c6\14\52\1\0"+
823 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
824 "\11\52\1\0\14\52\2\u01c7\27\52\1\0\1\52\1\0"+
825 "\2\52\2\0\5\52\1\u01c8\1\0\25\52\1\0\11\52"+
826 "\1\0\1\52\1\u01c8\43\52\1\0\1\52\1\0\2\52"+
827 "\2\0\6\52\1\0\17\52\1\315\5\52\1\0\11\52"+
828 "\1\0\6\52\1\315\1\52\1\76\20\52\1\76\13\52"+
829 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\5\52"+
830 "\1\76\17\52\1\0\11\52\1\0\17\52\1\76\25\52"+
831 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\25\52"+
832 "\1\0\11\52\1\0\21\52\1\76\1\u01c9\7\52\1\76"+
833 "\12\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
834 "\15\52\1\u01ca\7\52\1\0\11\52\1\0\5\52\1\u01ca"+
835 "\37\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
836 "\25\52\1\0\11\52\1\0\10\52\1\u01cb\20\52\1\u01cb"+
837 "\13\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
838 "\25\52\1\0\11\52\1\0\10\52\1\u01cc\20\52\1\u01cc"+
839 "\13\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
840 "\25\52\1\0\7\52\1\u01cd\1\52\1\0\20\52\1\u01cd"+
841 "\24\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
842 "\17\52\1\253\5\52\1\0\11\52\1\0\6\52\1\253"+
843 "\34\52\12\0\1\u01ce\100\0\1\u01ce\63\0\2\u0162\17\0"+
844 "\1\u0162\35\0\1\u01cf\112\0\1\110\10\0\1\110\1\u01d0"+
845 "\4\110\1\0\1\110\4\u01d0\1\110\1\0\4\110\1\0"+
846 "\2\110\2\u01d0\14\0\2\110\2\0\4\110\1\u01d0\1\110"+
847 "\1\u01d0\1\110\1\u01d0\5\110\1\u01d0\6\110\1\u01d0\1\110"+
848 "\1\u01d0\1\110\1\u01d0\1\110\1\u01d0\2\110\1\u01d0\5\110"+
849 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
850 "\1\0\4\117\14\0\1\u01d1\1\117\2\0\43\117\1\331"+
851 "\10\0\6\331\1\0\1\331\2\u0166\1\331\1\u0166\1\331"+
852 "\1\0\4\331\1\0\2\331\1\333\1\331\14\0\2\331"+
853 "\2\0\4\331\1\333\11\331\1\333\6\331\1\u0166\10\331"+
854 "\1\333\4\331\21\0\2\u0166\1\0\1\u0166\60\0\1\u0166"+
855 "\15\0\1\331\10\0\1\331\1\u0169\4\331\1\0\1\331"+
856 "\4\u0169\1\331\1\0\4\331\1\0\1\331\1\u0168\2\u0169"+
857 "\14\0\2\331\2\0\4\331\1\u0169\1\u0168\1\u0169\1\331"+
858 "\1\u0169\5\331\1\u0169\6\331\1\u0169\1\331\1\u0169\1\331"+
859 "\1\u0169\1\331\1\u0169\2\331\1\u0169\4\331\1\110\10\0"+
860 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
861 "\4\117\14\0\2\117\2\0\3\117\1\370\37\117\1\110"+
862 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
863 "\1\0\4\117\14\0\1\u01d2\1\117\2\0\43\117\1\110"+
864 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
865 "\1\0\4\117\14\0\2\117\2\0\31\117\1\u01d3\11\117"+
866 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
867 "\2\117\1\0\4\117\14\0\2\117\2\0\5\117\1\u01d4"+
868 "\26\117\1\u01d5\6\117\1\110\10\0\6\117\1\0\6\117"+
869 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
870 "\2\0\6\117\1\u01d6\34\117\1\110\10\0\6\117\1\0"+
871 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
872 "\2\117\2\0\1\117\1\u01d7\41\117\1\110\10\0\6\117"+
873 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
874 "\14\0\2\117\2\0\34\117\1\343\6\117\1\110\10\0"+
875 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
876 "\4\117\14\0\2\117\2\0\3\117\1\343\37\117\1\110"+
877 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
878 "\1\0\4\117\14\0\2\117\2\0\34\117\1\u01d8\6\117"+
879 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
880 "\2\117\1\0\4\117\14\0\2\117\2\0\6\117\1\u01d9"+
881 "\34\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
882 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\35\117"+
883 "\1\u01da\5\117\1\110\10\0\6\117\1\0\6\117\1\0"+
884 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
885 "\6\117\1\u01db\34\117\1\110\10\0\6\117\1\0\6\117"+
886 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
887 "\2\0\5\117\1\u01dc\35\117\1\110\10\0\6\117\1\0"+
888 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
889 "\2\117\2\0\40\117\1\u01dd\2\117\1\110\10\0\6\117"+
890 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
891 "\14\0\2\117\2\0\1\117\1\u01de\41\117\1\110\10\0"+
892 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
893 "\4\117\14\0\2\117\2\0\3\117\1\u01df\37\117\1\110"+
894 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
895 "\1\0\4\117\14\0\2\117\2\0\32\117\1\u01e0\10\117"+
896 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
897 "\2\117\1\0\4\117\14\0\2\117\2\0\6\117\1\366"+
898 "\34\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
899 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\30\117"+
900 "\1\u01e1\12\117\1\110\10\0\6\117\1\0\6\117\1\0"+
901 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
902 "\1\117\1\u01dc\41\117\1\110\10\0\6\117\1\0\6\117"+
903 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
904 "\2\0\1\117\1\u0194\41\117\1\110\10\0\6\117\1\0"+
905 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
906 "\2\117\2\0\33\117\1\u01e2\7\117\1\110\10\0\6\117"+
907 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
908 "\14\0\2\117\2\0\33\117\1\u01e3\7\117\1\110\10\0"+
909 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
910 "\4\117\14\0\2\117\2\0\31\117\1\u01e4\11\117\1\110"+
911 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
912 "\1\0\4\117\14\0\2\117\2\0\31\117\1\u01e1\11\117"+
913 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
914 "\2\117\1\0\4\117\14\0\2\117\2\0\3\117\1\u0173"+
915 "\37\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
916 "\1\326\2\117\1\0\4\117\14\0\1\117\1\u01e5\2\0"+
917 "\43\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
918 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\31\117"+
919 "\1\u01e6\11\117\1\110\10\0\6\117\1\0\6\117\1\0"+
920 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
921 "\6\117\1\343\34\117\1\110\10\0\6\117\1\0\6\117"+
922 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
923 "\2\0\15\117\1\343\25\117\1\110\10\0\6\117\1\0"+
924 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
925 "\2\117\2\0\5\117\1\u01e7\35\117\1\110\10\0\6\117"+
926 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
927 "\14\0\2\117\2\0\6\117\1\u01e8\34\117\1\110\10\0"+
928 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
929 "\4\117\14\0\2\117\2\0\34\117\1\u01d5\6\117\1\110"+
930 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
931 "\1\0\4\117\14\0\2\117\2\0\1\343\42\117\1\110"+
932 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
933 "\1\0\4\117\14\0\2\117\2\0\5\117\1\u0186\35\117"+
934 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
935 "\2\117\1\0\4\117\14\0\2\117\2\0\31\117\1\u01e9"+
936 "\11\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
937 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\5\117"+
938 "\1\u01ea\35\117\1\110\10\0\6\117\1\0\6\117\1\0"+
939 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
940 "\6\117\1\u01e5\34\117\1\110\10\0\6\117\1\0\5\117"+
941 "\1\u01eb\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
942 "\2\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
943 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
944 "\2\0\1\117\1\u01ec\41\117\1\110\10\0\6\117\1\0"+
945 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
946 "\2\117\2\0\30\117\1\u01e5\12\117\1\110\10\0\6\117"+
947 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
948 "\14\0\2\117\2\0\3\117\1\u0171\37\117\1\110\10\0"+
949 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
950 "\4\117\14\0\2\117\2\0\33\117\1\u018b\7\117\1\110"+
951 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
952 "\1\0\4\117\14\0\2\117\2\0\1\117\1\u01ed\1\117"+
953 "\1\u01ee\37\117\1\110\10\0\6\117\1\0\6\117\1\0"+
954 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
955 "\5\117\1\343\35\117\1\110\10\0\6\117\1\0\6\117"+
956 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u01ef"+
957 "\1\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
958 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
959 "\2\0\31\117\1\u01f0\11\117\1\110\10\0\6\117\1\0"+
960 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
961 "\2\117\2\0\6\117\1\u01f1\34\117\1\110\10\0\6\117"+
962 "\1\0\5\117\1\u01f2\1\0\1\110\1\326\2\117\1\0"+
963 "\4\117\14\0\2\117\2\0\43\117\1\110\10\0\6\117"+
964 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
965 "\14\0\2\117\2\0\27\117\1\u01f3\13\117\1\110\10\0"+
966 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
967 "\4\117\14\0\2\117\2\0\36\117\1\343\4\117\1\110"+
968 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
969 "\1\0\4\117\14\0\2\117\2\0\31\117\1\u01f4\11\117"+
970 "\12\0\1\u01f5\6\0\4\u01f5\11\0\2\u01f5\24\0\1\u01f5"+
971 "\1\0\1\u01f5\1\0\1\u01f5\5\0\1\u01f5\6\0\1\u01f5"+
972 "\1\0\1\u01f5\1\0\1\u01f5\1\0\1\u01f5\2\0\1\u01f5"+
973 "\16\0\1\u01f6\6\0\4\u01f6\11\0\2\u01f6\24\0\1\u01f6"+
974 "\1\0\1\u01f6\1\0\1\u01f6\5\0\1\u01f6\6\0\1\u01f6"+
975 "\1\0\1\u01f6\1\0\1\u01f6\1\0\1\u01f6\2\0\1\u01f6"+
976 "\16\0\1\u01f7\100\0\1\u01f7\71\0\1\u01f8\126\0\1\u01a3"+
977 "\106\0\1\u01f9\111\0\1\u01fa\73\0\1\u01fb\100\0\1\u01fb"+
978 "\20\0\3\201\1\u01fc\2\201\1\0\6\201\6\0\4\201"+
979 "\14\0\1\u01fc\1\201\2\0\43\201\52\0\1\u01a9\10\0"+
980 "\1\u011f\47\0\1\u01fd\117\0\2\u01fe\1\0\7\u01aa\1\0"+
981 "\6\u01aa\1\0\1\u01fe\1\0\1\u01fe\1\u01aa\1\u01fe\4\u01aa"+
982 "\2\u01fe\1\0\3\u01fe\1\0\5\u01fe\2\u01aa\2\u01fe\43\u01aa"+
983 "\2\52\1\0\1\52\1\0\2\52\2\0\4\52\1\u0147"+
984 "\1\52\1\0\25\52\1\0\11\52\1\0\2\52\1\u0147"+
985 "\42\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
986 "\25\52\1\0\11\52\1\0\21\52\1\u012a\10\52\1\u012a"+
987 "\12\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
988 "\25\52\1\0\11\52\1\0\12\52\1\234\22\52\1\234"+
989 "\7\52\1\0\1\52\1\0\2\52\2\0\3\52\1\u01b8"+
990 "\2\52\1\0\25\52\1\0\6\52\1\u01b8\2\52\1\0"+
991 "\45\52\1\0\1\52\1\0\2\52\2\0\1\52\1\u0147"+
992 "\4\52\1\0\25\52\1\0\11\52\1\0\33\52\1\u0147"+
993 "\11\52\1\0\1\52\1\0\2\52\2\0\1\52\1\u012a"+
994 "\4\52\1\0\25\52\1\0\11\52\1\0\33\52\1\u012a"+
995 "\11\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
996 "\25\52\1\0\11\52\1\0\10\52\1\u01ff\20\52\1\u01ff"+
997 "\13\52\1\0\1\52\1\0\2\52\2\0\2\52\1\u0200"+
998 "\3\52\1\0\25\52\1\0\11\52\1\0\30\52\1\u0200"+
999 "\14\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1000 "\17\52\1\u0201\5\52\1\0\11\52\1\0\6\52\1\u0201"+
1001 "\1\52\1\u01bc\20\52\1\u01bc\13\52\1\0\1\52\1\0"+
1002 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
1003 "\16\52\1\u0202\17\52\1\u0202\6\52\1\0\1\52\1\0"+
1004 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
1005 "\14\52\2\u012a\27\52\1\0\1\52\1\0\2\52\2\0"+
1006 "\6\52\1\0\25\52\1\0\11\52\1\0\12\52\1\u0203"+
1007 "\22\52\1\u0203\7\52\1\0\1\52\1\0\2\52\2\0"+
1008 "\6\52\1\0\25\52\1\0\11\52\1\0\10\52\1\u0204"+
1009 "\20\52\1\u0204\13\52\1\0\1\52\1\0\2\52\2\0"+
1010 "\6\52\1\0\25\52\1\0\11\52\1\0\11\52\1\307"+
1011 "\22\52\1\307\10\52\1\0\1\52\1\0\2\52\2\0"+
1012 "\6\52\1\0\25\52\1\0\11\52\1\0\21\52\1\u0205"+
1013 "\10\52\1\u0205\12\52\1\0\1\52\1\0\2\52\2\0"+
1014 "\6\52\1\0\5\52\1\u01bc\17\52\1\0\11\52\1\0"+
1015 "\17\52\1\u01bc\25\52\1\0\1\52\1\0\2\52\2\0"+
1016 "\6\52\1\0\16\52\1\u0206\6\52\1\0\11\52\1\0"+
1017 "\4\52\1\u0206\40\52\1\0\1\52\1\0\2\52\2\0"+
1018 "\6\52\1\0\25\52\1\0\11\52\1\0\12\52\1\312"+
1019 "\22\52\1\312\7\52\1\0\1\52\1\0\2\52\2\0"+
1020 "\6\52\1\0\17\52\1\u0207\5\52\1\0\11\52\1\0"+
1021 "\6\52\1\u0207\36\52\1\0\1\52\1\0\2\52\2\0"+
1022 "\6\52\1\0\25\52\1\0\11\52\1\0\16\52\1\u0208"+
1023 "\17\52\1\u0208\6\52\1\0\1\52\1\0\2\52\2\0"+
1024 "\2\52\1\u012a\3\52\1\0\25\52\1\0\11\52\1\0"+
1025 "\30\52\1\u012a\14\52\1\0\1\52\1\0\2\52\2\0"+
1026 "\5\52\1\u0209\1\0\25\52\1\0\11\52\1\0\1\52"+
1027 "\1\u0209\43\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1028 "\1\0\25\52\1\0\11\52\1\0\12\52\1\u020a\22\52"+
1029 "\1\u020a\7\52\1\0\1\52\1\0\2\52\2\0\1\52"+
1030 "\1\227\4\52\1\0\25\52\1\0\11\52\1\0\33\52"+
1031 "\1\227\11\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1032 "\1\0\17\52\1\u0147\5\52\1\0\11\52\1\0\6\52"+
1033 "\1\u0147\36\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1034 "\1\0\17\52\1\u020b\5\52\1\0\11\52\1\0\6\52"+
1035 "\1\u020b\36\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1036 "\1\0\25\52\1\0\11\52\1\0\10\52\1\u020c\20\52"+
1037 "\1\u020c\13\52\1\0\1\52\1\0\2\52\2\0\3\52"+
1038 "\1\u020d\2\52\1\0\25\52\1\0\6\52\1\u020d\2\52"+
1039 "\1\0\45\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1040 "\1\0\5\52\1\u020e\17\52\1\0\11\52\1\0\17\52"+
1041 "\1\u020e\25\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1042 "\1\0\25\52\1\0\11\52\1\0\11\52\1\234\22\52"+
1043 "\1\234\10\52\1\0\1\52\1\0\2\52\2\0\3\52"+
1044 "\1\u020f\2\52\1\0\25\52\1\0\6\52\1\u020f\2\52"+
1045 "\1\0\45\52\1\0\1\52\1\0\2\52\2\0\5\52"+
1046 "\1\u0210\1\0\15\52\1\u0211\7\52\1\0\7\52\1\u0212"+
1047 "\1\52\1\0\1\52\1\u0210\3\52\1\u0211\12\52\1\u0212"+
1048 "\24\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1049 "\17\52\1\307\5\52\1\0\11\52\1\0\6\52\1\307"+
1050 "\34\52\13\0\1\u0213\74\0\1\u0213\12\0\1\110\10\0"+
1051 "\1\110\1\u0214\4\110\1\0\1\110\4\u0214\1\110\1\0"+
1052 "\4\110\1\0\2\110\2\u0214\14\0\2\110\2\0\4\110"+
1053 "\1\u0214\1\110\1\u0214\1\110\1\u0214\5\110\1\u0214\6\110"+
1054 "\1\u0214\1\110\1\u0214\1\110\1\u0214\1\110\1\u0214\2\110"+
1055 "\1\u0214\5\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1056 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\35\117"+
1057 "\1\u0215\5\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1058 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1059 "\35\117\1\u0216\5\117\1\110\10\0\6\117\1\0\6\117"+
1060 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1061 "\2\0\12\117\1\u01e7\30\117\1\110\10\0\6\117\1\0"+
1062 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1063 "\2\117\2\0\6\117\1\u0217\34\117\1\110\10\0\6\117"+
1064 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1065 "\14\0\2\117\2\0\30\117\1\u01ee\12\117\1\110\10\0"+
1066 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1067 "\4\117\14\0\2\117\2\0\30\117\1\u0218\12\117\1\110"+
1068 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1069 "\1\0\4\117\14\0\2\117\2\0\31\117\1\u0219\11\117"+
1070 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1071 "\2\117\1\0\4\117\14\0\2\117\2\0\7\117\1\u021a"+
1072 "\33\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1073 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\3\117"+
1074 "\1\u021b\37\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1075 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1076 "\34\117\1\u021c\6\117\1\110\10\0\6\117\1\0\6\117"+
1077 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u021d"+
1078 "\1\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
1079 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1080 "\2\0\31\117\1\u01f1\11\117\1\110\10\0\6\117\1\0"+
1081 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1082 "\2\117\2\0\6\117\1\u021e\34\117\1\110\10\0\6\117"+
1083 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1084 "\14\0\2\117\2\0\6\117\1\u021f\34\117\1\110\10\0"+
1085 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1086 "\4\117\14\0\2\117\2\0\31\117\1\u0220\11\117\1\110"+
1087 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1088 "\1\0\4\117\14\0\2\117\2\0\1\117\1\u01e5\41\117"+
1089 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1090 "\2\117\1\0\4\117\14\0\2\117\2\0\1\u0221\42\117"+
1091 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1092 "\2\117\1\0\4\117\14\0\2\117\2\0\1\117\1\u0222"+
1093 "\41\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1094 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\5\117"+
1095 "\1\u0223\35\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1096 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1097 "\2\117\1\u0224\40\117\1\110\10\0\6\117\1\0\6\117"+
1098 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1099 "\2\0\35\117\1\u0225\5\117\1\110\10\0\6\117\1\0"+
1100 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1101 "\2\117\2\0\32\117\1\343\10\117\1\110\10\0\6\117"+
1102 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1103 "\14\0\2\117\2\0\6\117\1\u0226\34\117\1\110\10\0"+
1104 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1105 "\4\117\14\0\2\117\2\0\30\117\1\u0227\12\117\1\110"+
1106 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1107 "\1\0\4\117\14\0\2\117\2\0\30\117\1\u0228\12\117"+
1108 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1109 "\2\117\1\0\4\117\14\0\1\u0229\1\117\2\0\43\117"+
1110 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1111 "\2\117\1\0\4\117\14\0\2\117\2\0\1\117\1\343"+
1112 "\41\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1113 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\40\117"+
1114 "\1\u0186\2\117\1\110\10\0\6\117\1\0\5\117\1\u022a"+
1115 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1116 "\2\0\43\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1117 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1118 "\1\117\1\u0186\41\117\1\110\10\0\6\117\1\0\6\117"+
1119 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\117"+
1120 "\1\u022b\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
1121 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1122 "\2\0\5\117\1\u018f\35\117\1\110\10\0\6\117\1\0"+
1123 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1124 "\2\117\2\0\1\117\1\376\41\117\13\0\1\u022c\74\0"+
1125 "\1\u022c\64\0\1\u01f9\10\0\1\u01a3\47\0\1\u022d\117\0"+
1126 "\2\u022e\1\0\7\u01fa\1\0\6\u01fa\1\0\1\u022e\1\0"+
1127 "\1\u022e\1\u01fa\1\u022e\4\u01fa\2\u022e\1\0\3\u022e\1\0"+
1128 "\5\u022e\2\u01fa\2\u022e\43\u01fa\13\0\1\u022f\74\0\1\u022f"+
1129 "\23\0\4\201\1\u0230\1\201\1\0\6\201\6\0\4\201"+
1130 "\14\0\2\201\2\0\2\201\1\u0230\40\201\10\0\1\u01aa"+
1131 "\112\0\2\52\1\0\1\52\1\0\2\52\2\0\1\76"+
1132 "\5\52\1\0\25\52\1\0\11\52\1\0\3\52\1\76"+
1133 "\41\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1134 "\25\52\1\0\11\52\1\0\11\52\1\u0231\22\52\1\u0231"+
1135 "\10\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1136 "\25\52\1\0\11\52\1\0\12\52\1\u0147\22\52\1\u0147"+
1137 "\7\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1138 "\17\52\1\u0232\5\52\1\0\11\52\1\0\6\52\1\u0232"+
1139 "\36\52\1\0\1\52\1\0\2\52\2\0\5\52\1\u0233"+
1140 "\1\0\25\52\1\0\11\52\1\0\1\52\1\u0233\43\52"+
1141 "\1\0\1\52\1\0\2\52\2\0\2\52\1\u0234\3\52"+
1142 "\1\0\25\52\1\0\11\52\1\0\30\52\1\u0234\14\52"+
1143 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\25\52"+
1144 "\1\0\11\52\1\0\22\52\1\u0235\22\52\1\0\1\52"+
1145 "\1\0\2\52\2\0\6\52\1\0\25\52\1\0\11\52"+
1146 "\1\0\11\52\1\u0201\22\52\1\u0201\10\52\1\0\1\52"+
1147 "\1\0\2\52\2\0\1\u01c4\5\52\1\0\25\52\1\0"+
1148 "\11\52\1\0\3\52\1\u01c4\41\52\1\0\1\52\1\0"+
1149 "\2\52\2\0\1\u0236\5\52\1\0\25\52\1\0\11\52"+
1150 "\1\0\3\52\1\u0236\41\52\1\0\1\52\1\0\2\52"+
1151 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\13\52"+
1152 "\1\u0146\23\52\1\u0146\5\52\1\0\1\52\1\0\2\52"+
1153 "\2\0\1\u01ff\5\52\1\0\25\52\1\0\11\52\1\0"+
1154 "\3\52\1\u01ff\41\52\1\0\1\52\1\0\2\52\2\0"+
1155 "\6\52\1\0\25\52\1\0\11\52\1\0\14\52\2\u0237"+
1156 "\27\52\1\0\1\52\1\0\2\52\2\0\1\52\1\u0238"+
1157 "\4\52\1\0\25\52\1\0\11\52\1\0\33\52\1\u0238"+
1158 "\11\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1159 "\17\52\1\u012a\5\52\1\0\11\52\1\0\6\52\1\u012a"+
1160 "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1161 "\15\52\1\u01ff\7\52\1\0\11\52\1\0\5\52\1\u01ff"+
1162 "\37\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1163 "\17\52\1\u0239\5\52\1\0\11\52\1\0\6\52\1\u0239"+
1164 "\36\52\1\0\1\52\1\0\2\52\2\0\3\52\1\300"+
1165 "\2\52\1\0\25\52\1\0\6\52\1\300\2\52\1\0"+
1166 "\45\52\1\0\1\52\1\0\2\52\2\0\2\52\1\u023a"+
1167 "\3\52\1\0\25\52\1\0\11\52\1\0\30\52\1\u023a"+
1168 "\12\52\14\0\1\u023b\37\0\1\u023b\46\0\1\110\10\0"+
1169 "\1\110\1\u023c\4\110\1\0\1\110\4\u023c\1\110\1\0"+
1170 "\4\110\1\0\2\110\2\u023c\14\0\2\110\2\0\4\110"+
1171 "\1\u023c\1\110\1\u023c\1\110\1\u023c\5\110\1\u023c\6\110"+
1172 "\1\u023c\1\110\1\u023c\1\110\1\u023c\1\110\1\u023c\2\110"+
1173 "\1\u023c\5\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1174 "\1\326\2\117\1\0\4\117\14\0\1\u023d\1\117\2\0"+
1175 "\43\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1176 "\1\326\2\117\1\0\4\117\14\0\1\u023e\1\117\2\0"+
1177 "\43\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1178 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\15\117"+
1179 "\1\u023f\25\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1180 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1181 "\4\117\1\u0240\36\117\1\110\10\0\6\117\1\0\6\117"+
1182 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1183 "\2\0\35\117\1\u0241\5\117\1\110\10\0\6\117\1\0"+
1184 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1185 "\1\u0242\1\117\2\0\43\117\1\110\10\0\6\117\1\0"+
1186 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1187 "\2\117\2\0\4\117\1\343\36\117\1\110\10\0\6\117"+
1188 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1189 "\14\0\2\117\2\0\33\117\1\343\7\117\1\110\10\0"+
1190 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1191 "\4\117\14\0\2\117\2\0\33\117\1\u0243\7\117\1\110"+
1192 "\10\0\3\117\1\u0244\2\117\1\0\6\117\1\0\1\110"+
1193 "\1\326\2\117\1\0\2\117\1\u0245\1\117\14\0\2\117"+
1194 "\2\0\43\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1195 "\1\110\1\326\2\117\1\0\4\117\14\0\1\117\1\u0186"+
1196 "\2\0\43\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1197 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1198 "\30\117\1\u0246\12\117\1\110\10\0\6\117\1\0\6\117"+
1199 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u0247"+
1200 "\1\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
1201 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1202 "\2\0\5\117\1\u0248\35\117\1\110\10\0\6\117\1\0"+
1203 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1204 "\2\117\2\0\6\117\1\u01e7\34\117\1\110\10\0\6\117"+
1205 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1206 "\14\0\2\117\2\0\36\117\1\u0171\4\117\1\110\10\0"+
1207 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1208 "\4\117\14\0\2\117\2\0\31\117\1\u0249\11\117\1\110"+
1209 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1210 "\1\0\4\117\14\0\2\117\2\0\35\117\1\343\5\117"+
1211 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1212 "\2\117\1\0\4\117\14\0\2\117\2\0\31\117\1\u024a"+
1213 "\11\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1214 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\35\117"+
1215 "\1\u024b\5\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1216 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1217 "\5\117\1\u01ee\35\117\1\110\10\0\6\117\1\0\6\117"+
1218 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\117"+
1219 "\1\u017b\2\0\43\117\14\0\1\u024c\37\0\1\u024c\56\0"+
1220 "\1\u01fa\126\0\1\u024d\37\0\1\u024d\57\0\5\201\1\u024e"+
1221 "\1\0\6\201\6\0\4\201\14\0\2\201\2\0\1\201"+
1222 "\1\u024e\41\201\2\52\1\0\1\52\1\0\2\52\2\0"+
1223 "\6\52\1\0\5\52\1\u0127\17\52\1\0\11\52\1\0"+
1224 "\17\52\1\u0127\25\52\1\0\1\52\1\0\2\52\2\0"+
1225 "\6\52\1\0\14\52\1\76\10\52\1\0\11\52\1\0"+
1226 "\41\52\1\76\3\52\1\0\1\52\1\0\2\52\2\0"+
1227 "\6\52\1\0\17\52\1\u024f\5\52\1\0\11\52\1\0"+
1228 "\6\52\1\u024f\36\52\1\0\1\52\1\0\2\52\2\0"+
1229 "\6\52\1\0\17\52\1\u014f\5\52\1\0\11\52\1\0"+
1230 "\6\52\1\u014f\36\52\1\0\1\52\1\0\2\52\2\0"+
1231 "\6\52\1\0\5\52\1\u0250\17\52\1\0\11\52\1\0"+
1232 "\17\52\1\u0250\25\52\1\0\1\52\1\0\2\52\2\0"+
1233 "\6\52\1\0\25\52\1\0\11\52\1\0\11\52\1\221"+
1234 "\22\52\1\221\10\52\1\0\1\52\1\0\2\52\2\0"+
1235 "\6\52\1\0\17\52\1\u01ff\5\52\1\0\11\52\1\0"+
1236 "\6\52\1\u01ff\36\52\1\0\1\52\1\0\2\52\2\0"+
1237 "\6\52\1\0\25\52\1\0\11\52\1\0\11\52\1\u014a"+
1238 "\22\52\1\u014a\10\52\1\0\1\52\1\0\2\52\2\0"+
1239 "\6\52\1\0\25\52\1\0\11\52\1\0\14\52\2\u0251"+
1240 "\27\52\1\0\1\52\1\0\2\52\2\0\3\52\1\312"+
1241 "\2\52\1\0\25\52\1\0\6\52\1\312\2\52\1\0"+
1242 "\43\52\15\0\1\u0252\44\0\1\u0252\40\0\1\110\10\0"+
1243 "\1\110\1\117\4\110\1\0\1\110\4\117\1\110\1\0"+
1244 "\4\110\1\0\2\110\2\117\14\0\2\110\2\0\4\110"+
1245 "\1\117\1\110\1\117\1\110\1\117\5\110\1\117\6\110"+
1246 "\1\117\1\110\1\117\1\110\1\117\1\110\1\117\2\110"+
1247 "\1\117\5\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1248 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\1\117"+
1249 "\1\u0248\41\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1250 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1251 "\1\117\1\u0224\41\117\1\110\10\0\6\117\1\0\6\117"+
1252 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1253 "\2\0\6\117\1\u0253\34\117\1\110\10\0\6\117\1\0"+
1254 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1255 "\2\117\2\0\31\117\1\u0254\11\117\1\110\10\0\6\117"+
1256 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1257 "\14\0\2\117\2\0\33\117\1\u0175\7\117\1\110\10\0"+
1258 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1259 "\4\117\14\0\2\117\2\0\6\117\1\u0255\34\117\1\110"+
1260 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1261 "\1\0\4\117\14\0\2\117\2\0\1\117\1\u0256\41\117"+
1262 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1263 "\2\117\1\0\4\117\14\0\2\117\2\0\35\117\1\u0257"+
1264 "\5\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1265 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\5\117"+
1266 "\1\u0258\35\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1267 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1268 "\34\117\1\u0259\6\117\1\110\10\0\6\117\1\0\6\117"+
1269 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1270 "\2\0\34\117\1\u0227\6\117\1\110\10\0\6\117\1\0"+
1271 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1272 "\2\117\2\0\37\117\1\343\3\117\1\110\10\0\6\117"+
1273 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1274 "\14\0\2\117\2\0\35\117\1\u01e5\5\117\1\110\10\0"+
1275 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1276 "\4\117\14\0\2\117\2\0\33\117\1\u01ee\7\117\1\110"+
1277 "\10\0\6\117\1\0\5\117\1\u0186\1\0\1\110\1\326"+
1278 "\2\117\1\0\4\117\14\0\2\117\2\0\43\117\15\0"+
1279 "\1\u025a\44\0\1\u025a\55\0\1\u025b\44\0\1\u025b\40\0"+
1280 "\2\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1281 "\14\52\1\u0147\10\52\1\0\11\52\1\0\41\52\1\u0147"+
1282 "\3\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1283 "\25\52\1\0\11\52\1\0\11\52\1\223\22\52\1\223"+
1284 "\10\52\1\0\1\52\1\0\2\52\2\0\4\52\1\u025c"+
1285 "\1\52\1\0\25\52\1\0\11\52\1\0\2\52\1\u025c"+
1286 "\40\52\16\0\1\u025d\42\0\1\u025d\41\0\1\110\10\0"+
1287 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1288 "\4\117\14\0\2\117\2\0\35\117\1\u025e\5\117\1\110"+
1289 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1290 "\1\0\4\117\14\0\2\117\2\0\33\117\1\u0186\7\117"+
1291 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1292 "\2\117\1\0\4\117\14\0\2\117\2\0\35\117\1\u01ee"+
1293 "\5\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1294 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\6\117"+
1295 "\1\u019c\34\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1296 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1297 "\1\117\1\u01e7\41\117\1\110\10\0\6\117\1\0\6\117"+
1298 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1299 "\2\0\34\117\1\u025f\6\117\1\110\10\0\6\117\1\0"+
1300 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1301 "\2\117\2\0\35\117\1\u0260\5\117\16\0\1\u0261\42\0"+
1302 "\1\u0261\57\0\1\u0262\42\0\1\u0262\41\0\2\52\1\0"+
1303 "\1\52\1\0\2\52\2\0\6\52\1\0\15\52\1\u0263"+
1304 "\7\52\1\0\11\52\1\0\5\52\1\u0263\35\52\17\0"+
1305 "\1\u0264\103\0\1\110\10\0\6\117\1\0\6\117\1\0"+
1306 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1307 "\1\117\1\u0171\41\117\1\110\10\0\6\117\1\0\6\117"+
1308 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1309 "\2\0\31\117\1\u0257\11\117\1\110\10\0\6\117\1\0"+
1310 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1311 "\1\u0265\1\117\2\0\43\117\17\0\1\u0266\122\0\1\u0267"+
1312 "\103\0\2\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1313 "\1\0\25\52\1\0\11\52\1\0\10\52\1\223\20\52"+
1314 "\1\223\11\52\1\110\10\0\6\117\1\0\6\117\1\0"+
1315 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1316 "\42\117\1\u0256";
1317
1318 private static int [] zzUnpackTrans() {
1319 int [] result = new int[45899];
1320 int offset = 0;
1321 offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
1322 return result;
1323 }
1324
1325 private static int zzUnpackTrans(String packed, int offset, int [] result) {
1326 int i = 0; /* index in packed string */
1327 int j = offset; /* index in unpacked array */
1328 int l = packed.length();
1329 while (i < l) {
1330 int count = packed.charAt(i++);
1331 int value = packed.charAt(i++);
1332 value--;
1333 do result[j++] = value; while (--count > 0);
1334 }
1335 return j;
1336 }
1337
1338
1339 /* error codes */
1340 private static final int ZZ_UNKNOWN_ERROR = 0;
1341 private static final int ZZ_NO_MATCH = 1;
1342 private static final int ZZ_PUSHBACK_2BIG = 2;
1343
1344 /* error messages for the codes above */
1345 private static final String ZZ_ERROR_MSG[] = {
1346 "Unkown internal scanner error",
1347 "Error: could not match input",
1348 "Error: pushback value was too large"
1349 };
1350
1351 /**
1352 * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
1353 */
1354 private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
1355
1356 private static final String ZZ_ATTRIBUTE_PACKED_0 =
1357 "\6\0\2\1\1\0\2\1\5\0\2\1\1\11\4\1"+
1358 "\1\11\5\1\1\11\2\1\2\11\2\1\1\11\1\1"+
1359 "\3\11\1\1\1\11\25\1\1\11\1\1\1\11\1\1"+
1360 "\3\11\1\1\1\11\2\1\2\11\7\1\1\11\3\1"+
1361 "\1\11\3\1\1\11\20\1\2\11\2\1\1\11\1\1"+
1362 "\1\11\1\1\1\11\6\1\1\11\5\1\2\11\5\0"+
1363 "\1\11\103\1\1\11\3\0\1\11\1\0\73\1\1\11"+
1364 "\2\1\1\0\1\11\5\0\2\1\1\0\1\11\4\0"+
1365 "\100\1\1\0\1\1\1\0\3\1\1\0\66\1\10\0"+
1366 "\1\1\1\11\2\0\44\1\1\0\1\11\45\1\1\0"+
1367 "\1\11\3\0\1\1\1\0\1\1\2\0\24\1\1\0"+
1368 "\30\1\4\0\13\1\1\0\20\1\2\0\4\1\1\0"+
1369 "\7\1\2\0\1\1\1\0\3\1\2\0\1\1\1\11"+
1370 "\1\1\2\11";
1371
1372 private static int [] zzUnpackAttribute() {
1373 int [] result = new int[615];
1374 int offset = 0;
1375 offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
1376 return result;
1377 }
1378
1379 private static int zzUnpackAttribute(String packed, int offset, int [] result) {
1380 int i = 0; /* index in packed string */
1381 int j = offset; /* index in unpacked array */
1382 int l = packed.length();
1383 while (i < l) {
1384 int count = packed.charAt(i++);
1385 int value = packed.charAt(i++);
1386 do result[j++] = value; while (--count > 0);
1387 }
1388 return j;
1389 }
1390
1391 /** the input device */
1392 private java.io.Reader zzReader;
1393
1394 /** the current state of the DFA */
1395 private int zzState;
1396
1397 /** the current lexical state */
1398 private int zzLexicalState = YYINITIAL;
1399
1400 /** this buffer contains the current text to be matched and is
1401 the source of the yytext() string */
1402 private char zzBuffer[];
1403
1404 /** the textposition at the last accepting state */
1405 private int zzMarkedPos;
1406
1407 /** the current text position in the buffer */
1408 private int zzCurrentPos;
1409
1410 /** startRead marks the beginning of the yytext() string in the buffer */
1411 private int zzStartRead;
1412
1413 /** endRead marks the last character in the buffer, that has been read
1414 from input */
1415 private int zzEndRead;
1416
1417 /** zzAtEOF == true <=> the scanner is at the EOF */
1418 private boolean zzAtEOF;
1419
1420 /* user code: */
1421
1422 /**
1423 * Type specific to XMLTokenMaker denoting a line ending with an unclosed
1424 * double-quote attribute.
1425 */
1426 public static final int INTERNAL_ATTR_DOUBLE = -1;
1427
1428
1429 /**
1430 * Type specific to XMLTokenMaker denoting a line ending with an unclosed
1431 * single-quote attribute.
1432 */
1433 public static final int INTERNAL_ATTR_SINGLE = -2;
1434
1435
1436 /**
1437 * Token type specific to HTMLTokenMaker; this signals that the user has
1438 * ended a line with an unclosed HTML tag; thus a new line is beginning
1439 * still inside of the tag.
1440 */
1441 public static final int INTERNAL_INTAG = -3;
1442
1443 /**
1444 * Token type specific to HTMLTokenMaker; this signals that the user has
1445 * ended a line with an unclosed <code>&lt;script&gt;</code> tag.
1446 */
1447 public static final int INTERNAL_INTAG_SCRIPT = -4;
1448
1449 /**
1450 * Token type specifying we're in a double-qouted attribute in a
1451 * script tag.
1452 */
1453 public static final int INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT = -5;
1454
1455 /**
1456 * Token type specifying we're in a single-qouted attribute in a
1457 * script tag.
1458 */
1459 public static final int INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT = -6;
1460
1461 /**
1462 * Token type specifying we're in JavaScript.
1463 */
1464 public static final int INTERNAL_IN_JS = -7;
1465
1466 /**
1467 * Token type specifying we're in a JavaScript multiline comment.
1468 */
1469 public static final int INTERNAL_IN_JS_MLC = -8;
1470
1471 /**
1472 * Token type specifying we're in an invalid multi-line JS string.
1473 */
1474 public static final int INTERNAL_IN_JS_STRING_INVALID = -9;
1475
1476 /**
1477 * Token type specifying we're in a valid multi-line JS string.
1478 */
1479 public static final int INTERNAL_IN_JS_STRING_VALID = -10;
1480
1481 /**
1482 * Token type specifying we're in an invalid multi-line JS single-quoted string.
1483 */
1484 public static final int INTERNAL_IN_JS_CHAR_INVALID = -11;
1485
1486 /**
1487 * Token type specifying we're in a valid multi-line JS single-quoted string.
1488 */
1489 public static final int INTERNAL_IN_JS_CHAR_VALID = -12;
1490
1491 /**
1492 * Whether closing markup tags are automatically completed for HTML.
1493 */
1494 private static boolean completeCloseTags;
1495
1496 /**
1497 * When in the JS_STRING state, whether the current string is valid.
1498 */
1499 private boolean validJSString;
1500
1501
1502 /**
1503 * Constructor. This must be here because JFlex does not generate a
1504 * no-parameter constructor.
1505 */
1506 public HTMLTokenMaker() {
1507 super();
1508 }
1509
1510
1511 /**
1512 * Adds the token specified to the current linked list of tokens as an
1513 * "end token;" that is, at <code>zzMarkedPos</code>.
1514 *
1515 * @param tokenType The token's type.
1516 */
1517 private void addEndToken(int tokenType) {
1518 addToken(zzMarkedPos,zzMarkedPos, tokenType);
1519 }
1520
1521
1522 /**
1523 * Adds the token specified to the current linked list of tokens.
1524 *
1525 * @param tokenType The token's type.
1526 * @see #addToken(int, int, int)
1527 */
1528 private void addHyperlinkToken(int start, int end, int tokenType) {
1529 int so = start + offsetShift;
1530 addToken(zzBuffer, start,end, tokenType, so, true);
1531 }
1532
1533
1534 /**
1535 * Adds the token specified to the current linked list of tokens.
1536 *
1537 * @param tokenType The token's type.
1538 */
1539 private void addToken(int tokenType) {
1540 addToken(zzStartRead, zzMarkedPos-1, tokenType);
1541 }
1542
1543
1544 /**
1545 * Adds the token specified to the current linked list of tokens.
1546 *
1547 * @param tokenType The token's type.
1548 */
1549 private void addToken(int start, int end, int tokenType) {
1550 int so = start + offsetShift;
1551 addToken(zzBuffer, start,end, tokenType, so);
1552 }
1553
1554
1555 /**
1556 * Adds the token specified to the current linked list of tokens.
1557 *
1558 * @param array The character array.
1559 * @param start The starting offset in the array.
1560 * @param end The ending offset in the array.
1561 * @param tokenType The token's type.
1562 * @param startOffset The offset in the document at which this token
1563 * occurs.
1564 */
1565 public void addToken(char[] array, int start, int end, int tokenType, int startOffset) {
1566 super.addToken(array, start,end, tokenType, startOffset);
1567 zzStartRead = zzMarkedPos;
1568 }
1569
1570
1571 /**
1572 * Sets whether markup close tags should be completed. You might not want
1573 * this to be the case, since some tags in standard HTML aren't usually
1574 * closed.
1575 *
1576 * @return Whether closing markup tags are completed.
1577 * @see #setCompleteCloseTags(boolean)
1578 */
1579 public boolean getCompleteCloseTags() {
1580 return completeCloseTags;
1581 }
1582
1583
1584 /**
1585 * Returns the first token in the linked list of tokens generated
1586 * from <code>text</code>. This method must be implemented by
1587 * subclasses so they can correctly implement syntax highlighting.
1588 *
1589 * @param text The text from which to get tokens.
1590 * @param initialTokenType The token type we should start with.
1591 * @param startOffset The offset into the document at which
1592 * <code>text</code> starts.
1593 * @return The first <code>Token</code> in a linked list representing
1594 * the syntax highlighted text.
1595 */
1596 public Token getTokenList(Segment text, int initialTokenType, int startOffset) {
1597
1598 resetTokenList();
1599 this.offsetShift = -text.offset + startOffset;
1600
1601 // Start off in the proper state.
1602 int state = Token.NULL;
1603 switch (initialTokenType) {
1604 case Token.COMMENT_MULTILINE:
1605 state = COMMENT;
1606 start = text.offset;
1607 break;
1608 case Token.PREPROCESSOR:
1609 state = PI;
1610 start = text.offset;
1611 break;
1612 case Token.VARIABLE:
1613 state = DTD;
1614 start = text.offset;
1615 break;
1616 case INTERNAL_INTAG:
1617 state = INTAG;
1618 start = text.offset;
1619 break;
1620 case INTERNAL_INTAG_SCRIPT:
1621 state = INTAG_SCRIPT;
1622 start = text.offset;
1623 break;
1624 case INTERNAL_ATTR_DOUBLE:
1625 state = INATTR_DOUBLE;
1626 start = text.offset;
1627 break;
1628 case INTERNAL_ATTR_SINGLE:
1629 state = INATTR_SINGLE;
1630 start = text.offset;
1631 break;
1632 case INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT:
1633 state = INATTR_DOUBLE_SCRIPT;
1634 start = text.offset;
1635 break;
1636 case INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT:
1637 state = INATTR_SINGLE_SCRIPT;
1638 start = text.offset;
1639 break;
1640 case INTERNAL_IN_JS:
1641 state = JAVASCRIPT;
1642 start = text.offset;
1643 break;
1644 case INTERNAL_IN_JS_MLC:
1645 state = JS_MLC;
1646 start = text.offset;
1647 break;
1648 case INTERNAL_IN_JS_STRING_INVALID:
1649 state = JS_STRING;
1650 validJSString = false;
1651 start = text.offset;
1652 break;
1653 case INTERNAL_IN_JS_STRING_VALID:
1654 state = JS_STRING;
1655 validJSString = true;
1656 start = text.offset;
1657 break;
1658 case INTERNAL_IN_JS_CHAR_INVALID:
1659 state = JS_CHAR;
1660 validJSString = false;
1661 start = text.offset;
1662 break;
1663 case INTERNAL_IN_JS_CHAR_VALID:
1664 state = JS_CHAR;
1665 validJSString = true;
1666 start = text.offset;
1667 break;
1668 default:
1669 state = Token.NULL;
1670 }
1671
1672 s = text;
1673 try {
1674 yyreset(zzReader);
1675 yybegin(state);
1676 return yylex();
1677 } catch (IOException ioe) {
1678 ioe.printStackTrace();
1679 return new DefaultToken();
1680 }
1681
1682 }
1683
1684
1685 /**
1686 * Sets whether markup close tags should be completed. You might not want
1687 * this to be the case, since some tags in standard HTML aren't usually
1688 * closed.
1689 *
1690 * @param complete Whether closing markup tags are completed.
1691 * @see #getCompleteCloseTags()
1692 */
1693 public static void setCompleteCloseTags(boolean complete) {
1694 completeCloseTags = complete;
1695 }
1696
1697
1698 /**
1699 * Refills the input buffer.
1700 *
1701 * @return <code>true</code> if EOF was reached, otherwise
1702 * <code>false</code>.
1703 */
1704 private boolean zzRefill() {
1705 return zzCurrentPos>=s.offset+s.count;
1706 }
1707
1708
1709 /**
1710 * Resets the scanner to read from a new input stream.
1711 * Does not close the old reader.
1712 *
1713 * All internal variables are reset, the old input stream
1714 * <b>cannot</b> be reused (internal buffer is discarded and lost).
1715 * Lexical state is set to <tt>YY_INITIAL</tt>.
1716 *
1717 * @param reader the new input stream
1718 */
1719 public final void yyreset(java.io.Reader reader) {
1720 // 's' has been updated.
1721 zzBuffer = s.array;
1722 /*
1723 * We replaced the line below with the two below it because zzRefill
1724 * no longer "refills" the buffer (since the way we do it, it's always
1725 * "full" the first time through, since it points to the segment's
1726 * array). So, we assign zzEndRead here.
1727 */
1728 //zzStartRead = zzEndRead = s.offset;
1729 zzStartRead = s.offset;
1730 zzEndRead = zzStartRead + s.count - 1;
1731 zzCurrentPos = zzMarkedPos = s.offset;
1732 zzLexicalState = YYINITIAL;
1733 zzReader = reader;
1734 zzAtEOF = false;
1735 }
1736
1737
1738
1739
1740 /**
1741 * Creates a new scanner
1742 * There is also a java.io.InputStream version of this constructor.
1743 *
1744 * @param in the java.io.Reader to read input from.
1745 */
1746 public HTMLTokenMaker(java.io.Reader in) {
1747 this.zzReader = in;
1748 }
1749
1750 /**
1751 * Creates a new scanner.
1752 * There is also java.io.Reader version of this constructor.
1753 *
1754 * @param in the java.io.Inputstream to read input from.
1755 */
1756 public HTMLTokenMaker(java.io.InputStream in) {
1757 this(new java.io.InputStreamReader(in));
1758 }
1759
1760 /**
1761 * Unpacks the compressed character translation table.
1762 *
1763 * @param packed the packed character translation table
1764 * @return the unpacked character translation table
1765 */
1766 private static char [] zzUnpackCMap(String packed) {
1767 char [] map = new char[0x10000];
1768 int i = 0; /* index in packed string */
1769 int j = 0; /* index in unpacked array */
1770 while (i < 192) {
1771 int count = packed.charAt(i++);
1772 char value = packed.charAt(i++);
1773 do map[j++] = value; while (--count > 0);
1774 }
1775 return map;
1776 }
1777
1778
1779 /**
1780 * Closes the input stream.
1781 */
1782 public final void yyclose() throws java.io.IOException {
1783 zzAtEOF = true; /* indicate end of file */
1784 zzEndRead = zzStartRead; /* invalidate buffer */
1785
1786 if (zzReader != null)
1787 zzReader.close();
1788 }
1789
1790
1791 /**
1792 * Returns the current lexical state.
1793 */
1794 public final int yystate() {
1795 return zzLexicalState;
1796 }
1797
1798
1799 /**
1800 * Enters a new lexical state
1801 *
1802 * @param newState the new lexical state
1803 */
1804 public final void yybegin(int newState) {
1805 zzLexicalState = newState;
1806 }
1807
1808
1809 /**
1810 * Returns the text matched by the current regular expression.
1811 */
1812 public final String yytext() {
1813 return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
1814 }
1815
1816
1817 /**
1818 * Returns the character at position <tt>pos</tt> from the
1819 * matched text.
1820 *
1821 * It is equivalent to yytext().charAt(pos), but faster
1822 *
1823 * @param pos the position of the character to fetch.
1824 * A value from 0 to yylength()-1.
1825 *
1826 * @return the character at position pos
1827 */
1828 public final char yycharat(int pos) {
1829 return zzBuffer[zzStartRead+pos];
1830 }
1831
1832
1833 /**
1834 * Returns the length of the matched text region.
1835 */
1836 public final int yylength() {
1837 return zzMarkedPos-zzStartRead;
1838 }
1839
1840
1841 /**
1842 * Reports an error that occured while scanning.
1843 *
1844 * In a wellformed scanner (no or only correct usage of
1845 * yypushback(int) and a match-all fallback rule) this method
1846 * will only be called with things that "Can't Possibly Happen".
1847 * If this method is called, something is seriously wrong
1848 * (e.g. a JFlex bug producing a faulty scanner etc.).
1849 *
1850 * Usual syntax/scanner level error handling should be done
1851 * in error fallback rules.
1852 *
1853 * @param errorCode the code of the errormessage to display
1854 */
1855 private void zzScanError(int errorCode) {
1856 String message;
1857 try {
1858 message = ZZ_ERROR_MSG[errorCode];
1859 }
1860 catch (ArrayIndexOutOfBoundsException e) {
1861 message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
1862 }
1863
1864 throw new Error(message);
1865 }
1866
1867
1868 /**
1869 * Pushes the specified amount of characters back into the input stream.
1870 *
1871 * They will be read again by then next call of the scanning method
1872 *
1873 * @param number the number of characters to be read again.
1874 * This number must not be greater than yylength()!
1875 */
1876 public void yypushback(int number) {
1877 if ( number > yylength() )
1878 zzScanError(ZZ_PUSHBACK_2BIG);
1879
1880 zzMarkedPos -= number;
1881 }
1882
1883
1884 /**
1885 * Resumes scanning until the next regular expression is matched,
1886 * the end of input is encountered or an I/O-Error occurs.
1887 *
1888 * @return the next token
1889 * @exception java.io.IOException if any I/O-Error occurs
1890 */
1891 public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException {
1892 int zzInput;
1893 int zzAction;
1894
1895 // cached fields:
1896 int zzCurrentPosL;
1897 int zzMarkedPosL;
1898 int zzEndReadL = zzEndRead;
1899 char [] zzBufferL = zzBuffer;
1900 char [] zzCMapL = ZZ_CMAP;
1901
1902 int [] zzTransL = ZZ_TRANS;
1903 int [] zzRowMapL = ZZ_ROWMAP;
1904 int [] zzAttrL = ZZ_ATTRIBUTE;
1905
1906 while (true) {
1907 zzMarkedPosL = zzMarkedPos;
1908
1909 zzAction = -1;
1910
1911 zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
1912
1913 zzState = zzLexicalState;
1914
1915
1916 zzForAction: {
1917 while (true) {
1918
1919 if (zzCurrentPosL < zzEndReadL)
1920 zzInput = zzBufferL[zzCurrentPosL++];
1921 else if (zzAtEOF) {
1922 zzInput = YYEOF;
1923 break zzForAction;
1924 }
1925 else {
1926 // store back cached positions
1927 zzCurrentPos = zzCurrentPosL;
1928 zzMarkedPos = zzMarkedPosL;
1929 boolean eof = zzRefill();
1930 // get translated positions and possibly new buffer
1931 zzCurrentPosL = zzCurrentPos;
1932 zzMarkedPosL = zzMarkedPos;
1933 zzBufferL = zzBuffer;
1934 zzEndReadL = zzEndRead;
1935 if (eof) {
1936 zzInput = YYEOF;
1937 break zzForAction;
1938 }
1939 else {
1940 zzInput = zzBufferL[zzCurrentPosL++];
1941 }
1942 }
1943 int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
1944 if (zzNext == -1) break zzForAction;
1945 zzState = zzNext;
1946
1947 int zzAttributes = zzAttrL[zzState];
1948 if ( (zzAttributes & 1) == 1 ) {
1949 zzAction = zzState;
1950 zzMarkedPosL = zzCurrentPosL;
1951 if ( (zzAttributes & 8) == 8 ) break zzForAction;
1952 }
1953
1954 }
1955 }
1956
1957 // store back cached position
1958 zzMarkedPos = zzMarkedPosL;
1959
1960 switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
1961 case 2:
1962 { addToken(Token.IDENTIFIER);
1963 }
1964 case 67: break;
1965 case 60:
1966 { addToken(Token.LITERAL_BOOLEAN);
1967 }
1968 case 68: break;
1969 case 50:
1970 { /* Skip all escaped chars. */
1971 }
1972 case 69: break;
1973 case 52:
1974 { /* Invalid latin-1 character \xXX */ validJSString = false;
1975 }
1976 case 70: break;
1977 case 46:
1978 { addToken(Token.ERROR_NUMBER_FORMAT);
1979 }
1980 case 71: break;
1981 case 38:
1982 { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken;
1983 }
1984 case 72: break;
1985 case 66:
1986 { yybegin(YYINITIAL);
1987 int temp = zzStartRead;
1988 addToken(start,zzStartRead-1, Token.COMMENT_EOL);
1989 addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER);
1990 addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME);
1991 addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER);
1992 }
1993 case 73: break;
1994 case 39:
1995 { int count = yylength();
1996 addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER);
1997 zzMarkedPos -= (count-1); //yypushback(count-1);
1998 yybegin(INTAG_CHECK_TAG_NAME);
1999 }
2000 case 74: break;
2001 case 23:
2002 { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_SCRIPT);
2003 }
2004 case 75: break;
2005 case 14:
2006 { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER);
2007 }
2008 case 76: break;
2009 case 9:
2010 { addToken(start,zzStartRead-1, Token.VARIABLE); return firstToken;
2011 }
2012 case 77: break;
2013 case 37:
2014 { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken;
2015 }
2016 case 78: break;
2017 case 61:
2018 { addToken(Token.FUNCTION);
2019 }
2020 case 79: break;
2021 case 40:
2022 { start = zzMarkedPos-2; yybegin(DTD);
2023 }
2024 case 80: break;
2025 case 26:
2026 { addEndToken(INTERNAL_IN_JS); return firstToken;
2027 }
2028 case 81: break;
2029 case 64:
2030 { yybegin(YYINITIAL);
2031 addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER);
2032 addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME);
2033 addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER);
2034 }
2035 case 82: break;
2036 case 24:
2037 { yybegin(INTAG_SCRIPT); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE);
2038 }
2039 case 83: break;
2040 case 34:
2041 { addToken(start,zzStartRead-1, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken;
2042 }
2043 case 84: break;
2044 case 18:
2045 { /* Shouldn't happen */ yypushback(1); yybegin(INTAG);
2046 }
2047 case 85: break;
2048 case 25:
2049 { addToken(Token.ERROR_IDENTIFIER);
2050 }
2051 case 86: break;
2052 case 32:
2053 { int type = validJSString ? Token.LITERAL_STRING_DOUBLE_QUOTE : Token.ERROR_STRING_DOUBLE; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT);
2054 }
2055 case 87: break;
2056 case 45:
2057 { start = zzMarkedPos-2; yybegin(JS_MLC);
2058 }
2059 case 88: break;
2060 case 56:
2061 { boolean highlightedAsRegex = false;
2062 if (firstToken==null) {
2063 addToken(Token.REGEX);
2064 highlightedAsRegex = true;
2065 }
2066 else {
2067 // If this is *likely* to be a regex, based on
2068 // the previous token, highlight it as such.
2069 Token t = firstToken.getLastNonCommentNonWhitespaceToken();
2070 if (RSyntaxUtilities.regexCanFollowInJavaScript(t)) {
2071 addToken(Token.REGEX);
2072 highlightedAsRegex = true;
2073 }
2074 }
2075 // If it doesn't *appear* to be a regex, highlight it as
2076 // individual tokens.
2077 if (!highlightedAsRegex) {
2078 int temp = zzStartRead + 1;
2079 addToken(zzStartRead, zzStartRead, Token.OPERATOR);
2080 zzStartRead = zzCurrentPos = zzMarkedPos = temp;
2081 }
2082 }
2083 case 89: break;
2084 case 4:
2085 { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(INTAG);
2086 }
2087 case 90: break;
2088 case 31:
2089 { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken;
2090 }
2091 case 91: break;
2092 case 10:
2093 { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.VARIABLE);
2094 }
2095 case 92: break;
2096 case 53:
2097 { yybegin(JAVASCRIPT); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE);
2098 }
2099 case 93: break;
2100 case 36:
2101 { int type = validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT);
2102 }
2103 case 94: break;
2104 case 42:
2105 { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.PREPROCESSOR);
2106 }
2107 case 95: break;
2108 case 20:
2109 { yybegin(INTAG); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE);
2110 }
2111 case 96: break;
2112 case 44:
2113 { start = zzMarkedPos-2; yybegin(JS_EOL_COMMENT);
2114 }
2115 case 97: break;
2116 case 41:
2117 { start = zzMarkedPos-2; yybegin(PI);
2118 }
2119 case 98: break;
2120 case 12:
2121 { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE);
2122 }
2123 case 99: break;
2124 case 48:
2125 { addToken(Token.LITERAL_NUMBER_HEXADECIMAL);
2126 }
2127 case 100: break;
2128 case 17:
2129 { /* A non-recognized HTML tag name */ yypushback(yylength()); yybegin(INTAG);
2130 }
2131 case 101: break;
2132 case 21:
2133 { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_SCRIPT);
2134 }
2135 case 102: break;
2136 case 33:
2137 { /* Line ending in '\' => continue to next line. */
2138 if (validJSString) {
2139 addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE);
2140 addEndToken(INTERNAL_IN_JS_STRING_VALID);
2141 }
2142 else {
2143 addToken(start,zzStartRead, Token.ERROR_STRING_DOUBLE);
2144 addEndToken(INTERNAL_IN_JS_STRING_INVALID);
2145 }
2146 return firstToken;
2147 }
2148 case 103: break;
2149 case 5:
2150 { addToken(Token.WHITESPACE);
2151 }
2152 case 104: break;
2153 case 6:
2154 { addToken(Token.DATA_TYPE);
2155 }
2156 case 105: break;
2157 case 19:
2158 { addToken(Token.MARKUP_TAG_NAME);
2159 }
2160 case 106: break;
2161 case 35:
2162 { /* Line ending in '\' => continue to next line. */
2163 if (validJSString) {
2164 addToken(start,zzStartRead, Token.LITERAL_CHAR);
2165 addEndToken(INTERNAL_IN_JS_CHAR_VALID);
2166 }
2167 else {
2168 addToken(start,zzStartRead, Token.ERROR_CHAR);
2169 addEndToken(INTERNAL_IN_JS_CHAR_INVALID);
2170 }
2171 return firstToken;
2172 }
2173 case 107: break;
2174 case 63:
2175 { addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER);
2176 addToken(zzMarkedPos-6,zzMarkedPos-1, Token.MARKUP_TAG_NAME);
2177 start = zzMarkedPos; yybegin(INTAG_SCRIPT);
2178 }
2179 case 108: break;
2180 case 28:
2181 { addToken(Token.LITERAL_NUMBER_DECIMAL_INT);
2182 }
2183 case 109: break;
2184 case 16:
2185 { start = zzMarkedPos-1; yybegin(INATTR_SINGLE);
2186 }
2187 case 110: break;
2188 case 11:
2189 { addToken(Token.MARKUP_TAG_ATTRIBUTE);
2190 }
2191 case 111: break;
2192 case 27:
2193 { start = zzMarkedPos-1; validJSString = true; yybegin(JS_STRING);
2194 }
2195 case 112: break;
2196 case 51:
2197 { /* Invalid Unicode character \\uXXXX */ validJSString = false;
2198 }
2199 case 113: break;
2200 case 57:
2201 { start = zzMarkedPos-4; yybegin(COMMENT);
2202 }
2203 case 114: break;
2204 case 30:
2205 { start = zzMarkedPos-1; validJSString = true; yybegin(JS_CHAR);
2206 }
2207 case 115: break;
2208 case 49:
2209 { addToken(Token.RESERVED_WORD);
2210 }
2211 case 116: break;
2212 case 58:
2213 { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos;
2214 }
2215 case 117: break;
2216 case 55:
2217 { yybegin(YYINITIAL); addToken(start,zzStartRead+2, Token.COMMENT_MULTILINE);
2218 }
2219 case 118: break;
2220 case 54:
2221 { int count = yylength();
2222 addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER);
2223 zzMarkedPos -= (count-2); //yypushback(count-2);
2224 yybegin(INTAG_CHECK_TAG_NAME);
2225 }
2226 case 119: break;
2227 case 29:
2228 { addToken(Token.SEPARATOR);
2229 }
2230 case 120: break;
2231 case 3:
2232 { addNullToken(); return firstToken;
2233 }
2234 case 121: break;
2235 case 22:
2236 { yybegin(JAVASCRIPT); addToken(Token.MARKUP_TAG_DELIMITER);
2237 }
2238 case 122: break;
2239 case 43:
2240 { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(YYINITIAL);
2241 }
2242 case 123: break;
2243 case 7:
2244 { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken;
2245 }
2246 case 124: break;
2247 case 15:
2248 { addToken(Token.OPERATOR);
2249 }
2250 case 125: break;
2251 case 47:
2252 { addToken(Token.LITERAL_NUMBER_FLOAT);
2253 }
2254 case 126: break;
2255 case 13:
2256 { addToken(Token.MARKUP_TAG_DELIMITER);
2257 }
2258 case 127: break;
2259 case 62:
2260 { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos;
2261 }
2262 case 128: break;
2263 case 59:
2264 { addToken(Token.COMMENT_MULTILINE);
2265 }
2266 case 129: break;
2267 case 8:
2268 { addToken(start,zzStartRead-1, Token.PREPROCESSOR); return firstToken;
2269 }
2270 case 130: break;
2271 case 65:
2272 { yybegin(YYINITIAL);
2273 int temp = zzStartRead;
2274 addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE);
2275 addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER);
2276 addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME);
2277 addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER);
2278 }
2279 case 131: break;
2280 case 1:
2281 {
2282 }
2283 case 132: break;
2284 default:
2285 if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
2286 zzAtEOF = true;
2287 switch (zzLexicalState) {
2288 case JS_STRING: {
2289 addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken;
2290 }
2291 case 616: break;
2292 case INTAG_CHECK_TAG_NAME: {
2293 addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken;
2294 }
2295 case 617: break;
2296 case JS_MLC: {
2297 addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken;
2298 }
2299 case 618: break;
2300 case INTAG_SCRIPT: {
2301 addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG_SCRIPT); return firstToken;
2302 }
2303 case 619: break;
2304 case JS_CHAR: {
2305 addToken(start,zzStartRead-1, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken;
2306 }
2307 case 620: break;
2308 case JS_EOL_COMMENT: {
2309 addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken;
2310 }
2311 case 621: break;
2312 case INATTR_DOUBLE_SCRIPT: {
2313 addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT); return firstToken;
2314 }
2315 case 622: break;
2316 case INATTR_SINGLE_SCRIPT: {
2317 addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT); return firstToken;
2318 }
2319 case 623: break;
2320 case DTD: {
2321 addToken(start,zzStartRead-1, Token.VARIABLE); return firstToken;
2322 }
2323 case 624: break;
2324 case INATTR_SINGLE: {
2325 addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE); return firstToken;
2326 }
2327 case 625: break;
2328 case INATTR_DOUBLE: {
2329 addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE); return firstToken;
2330 }
2331 case 626: break;
2332 case YYINITIAL: {
2333 addNullToken(); return firstToken;
2334 }
2335 case 627: break;
2336 case INTAG: {
2337 addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken;
2338 }
2339 case 628: break;
2340 case COMMENT: {
2341 addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken;
2342 }
2343 case 629: break;
2344 case JAVASCRIPT: {
2345 addEndToken(INTERNAL_IN_JS); return firstToken;
2346 }
2347 case 630: break;
2348 case PI: {
2349 addToken(start,zzStartRead-1, Token.PREPROCESSOR); return firstToken;
2350 }
2351 case 631: break;
2352 default:
2353 return null;
2354 }
2355 }
2356 else {
2357 zzScanError(ZZ_NO_MATCH);
2358 }
2359 }
2360 }
2361 }
2362
2363
2364}
Note: See TracBrowser for help on using the repository browser.