1 package org.objectledge.encodings.encoders;
2
3 import java.util.HashMap;
4
5 import org.objectledge.encodings.MappingEntry;
6
7 /***
8 * HTMLEntity encoder.
9 *
10 * @author <a href="mailto:dgajda@caltha.pl">Damian Gajda</a>
11 * @version $Id: CharEncoderHTMLEntity.java,v 1.5 2006/02/08 18:21:47 zwierzem Exp $
12 */
13 public class CharEncoderHTMLEntity
14 extends CharEncoder
15 {
16
17
18
19 private static final HashMap<String, MappingEntry> ENTITIES_BY_NAME =
20 new HashMap<String, MappingEntry>();
21
22 private static final MappingEntry[] ENTITIES =
23 {
24
25 new MappingEntry(34, "quot"),
26 new MappingEntry(38, "amp"),
27 new MappingEntry(39, "apos"),
28 new MappingEntry(60, "lt"),
29 new MappingEntry(62, "gt"),
30
31 new MappingEntry(160, "nbsp"),
32 new MappingEntry(161, "iexcl"),
33 new MappingEntry(162, "cent"),
34 new MappingEntry(163, "pound"),
35 new MappingEntry(164, "curren"),
36 new MappingEntry(165, "yen"),
37 new MappingEntry(166, "brvbar"),
38 new MappingEntry(167, "sect"),
39 new MappingEntry(168, "uml"),
40 new MappingEntry(169, "copy"),
41 new MappingEntry(170, "ordf"),
42 new MappingEntry(171, "laquo"),
43 new MappingEntry(172, "not"),
44 new MappingEntry(173, "shy"),
45 new MappingEntry(174, "reg"),
46 new MappingEntry(175, "macr"),
47 new MappingEntry(176, "deg"),
48 new MappingEntry(177, "plusmn"),
49 new MappingEntry(178, "sup2"),
50 new MappingEntry(179, "sup3"),
51 new MappingEntry(180, "acute"),
52 new MappingEntry(181, "micro"),
53 new MappingEntry(182, "para"),
54 new MappingEntry(183, "middot"),
55 new MappingEntry(184, "cedil"),
56 new MappingEntry(185, "sup1"),
57 new MappingEntry(186, "ordm"),
58 new MappingEntry(187, "raquo"),
59 new MappingEntry(188, "frac14"),
60 new MappingEntry(189, "frac12"),
61 new MappingEntry(190, "frac34"),
62 new MappingEntry(191, "iquest"),
63 new MappingEntry(192, "Agrave"),
64 new MappingEntry(193, "Aacute"),
65 new MappingEntry(194, "Acirc"),
66 new MappingEntry(195, "Atilde"),
67 new MappingEntry(196, "Auml"),
68 new MappingEntry(197, "Aring"),
69 new MappingEntry(198, "AElig"),
70 new MappingEntry(199, "Ccedil"),
71 new MappingEntry(200, "Egrave"),
72 new MappingEntry(201, "Eacute"),
73 new MappingEntry(202, "Ecirc"),
74 new MappingEntry(203, "Euml"),
75 new MappingEntry(204, "Igrave"),
76 new MappingEntry(205, "Iacute"),
77 new MappingEntry(206, "Icirc"),
78 new MappingEntry(207, "Iuml"),
79 new MappingEntry(208, "ETH"),
80 new MappingEntry(209, "Ntilde"),
81 new MappingEntry(210, "Ograve"),
82 new MappingEntry(211, "Oacute"),
83 new MappingEntry(212, "Ocirc"),
84 new MappingEntry(213, "Otilde"),
85 new MappingEntry(214, "Ouml"),
86 new MappingEntry(215, "times"),
87 new MappingEntry(216, "Oslash"),
88 new MappingEntry(217, "Ugrave"),
89 new MappingEntry(218, "Uacute"),
90 new MappingEntry(219, "Ucirc"),
91 new MappingEntry(220, "Uuml"),
92 new MappingEntry(221, "Yacute"),
93 new MappingEntry(222, "THORN"),
94 new MappingEntry(223, "szlig"),
95 new MappingEntry(224, "agrave"),
96 new MappingEntry(225, "aacute"),
97 new MappingEntry(226, "acirc"),
98 new MappingEntry(227, "atilde"),
99 new MappingEntry(228, "auml"),
100 new MappingEntry(229, "aring"),
101 new MappingEntry(230, "aelig"),
102 new MappingEntry(231, "ccedil"),
103 new MappingEntry(232, "egrave"),
104 new MappingEntry(233, "eacute"),
105 new MappingEntry(234, "ecirc"),
106 new MappingEntry(235, "euml"),
107 new MappingEntry(236, "igrave"),
108 new MappingEntry(237, "iacute"),
109 new MappingEntry(238, "icirc"),
110 new MappingEntry(239, "iuml"),
111 new MappingEntry(240, "eth"),
112 new MappingEntry(241, "ntilde"),
113 new MappingEntry(242, "ograve"),
114 new MappingEntry(243, "oacute"),
115 new MappingEntry(244, "ocirc"),
116 new MappingEntry(245, "otilde"),
117 new MappingEntry(246, "ouml"),
118 new MappingEntry(247, "divide"),
119 new MappingEntry(248, "oslash"),
120 new MappingEntry(249, "ugrave"),
121 new MappingEntry(250, "uacute"),
122 new MappingEntry(251, "ucirc"),
123 new MappingEntry(252, "uuml"),
124 new MappingEntry(253, "yacute"),
125 new MappingEntry(254, "thorn"),
126 new MappingEntry(255, "yuml"),
127 new MappingEntry(338, "OElig"),
128 new MappingEntry(339, "oelig"),
129 new MappingEntry(352, "Scaron"),
130 new MappingEntry(353, "scaron"),
131 new MappingEntry(376, "Yuml"),
132 new MappingEntry(402, "fnof"),
133 new MappingEntry(710, "circ"),
134 new MappingEntry(732, "tilde"),
135 new MappingEntry(913, "Alpha"),
136 new MappingEntry(914, "Beta"),
137 new MappingEntry(915, "Gamma"),
138 new MappingEntry(916, "Delta"),
139 new MappingEntry(917, "Epsilon"),
140 new MappingEntry(918, "Zeta"),
141 new MappingEntry(919, "Eta"),
142 new MappingEntry(920, "Theta"),
143 new MappingEntry(921, "Iota"),
144 new MappingEntry(922, "Kappa"),
145 new MappingEntry(923, "Lambda"),
146 new MappingEntry(924, "Mu"),
147 new MappingEntry(925, "Nu"),
148 new MappingEntry(926, "Xi"),
149 new MappingEntry(927, "Omicron"),
150 new MappingEntry(928, "Pi"),
151 new MappingEntry(929, "Rho"),
152 new MappingEntry(931, "Sigma"),
153 new MappingEntry(932, "Tau"),
154 new MappingEntry(933, "Upsilon"),
155 new MappingEntry(934, "Phi"),
156 new MappingEntry(935, "Chi"),
157 new MappingEntry(936, "Psi"),
158 new MappingEntry(937, "Omega"),
159 new MappingEntry(945, "alpha"),
160 new MappingEntry(946, "beta"),
161 new MappingEntry(947, "gamma"),
162 new MappingEntry(948, "delta"),
163 new MappingEntry(949, "epsilon"),
164 new MappingEntry(950, "zeta"),
165 new MappingEntry(951, "eta"),
166 new MappingEntry(952, "theta"),
167 new MappingEntry(953, "iota"),
168 new MappingEntry(954, "kappa"),
169 new MappingEntry(955, "lambda"),
170 new MappingEntry(956, "mu"),
171 new MappingEntry(957, "nu"),
172 new MappingEntry(958, "xi"),
173 new MappingEntry(959, "omicron"),
174 new MappingEntry(960, "pi"),
175 new MappingEntry(961, "rho"),
176 new MappingEntry(962, "sigmaf"),
177 new MappingEntry(963, "sigma"),
178 new MappingEntry(964, "tau"),
179 new MappingEntry(965, "upsilon"),
180 new MappingEntry(966, "phi"),
181 new MappingEntry(967, "chi"),
182 new MappingEntry(968, "psi"),
183 new MappingEntry(969, "omega"),
184 new MappingEntry(977, "thetasym"),
185 new MappingEntry(978, "upsih"),
186 new MappingEntry(982, "piv"),
187 new MappingEntry(8194, "ensp"),
188 new MappingEntry(8195, "emsp"),
189 new MappingEntry(8201, "thinsp"),
190 new MappingEntry(8204, "zwnj"),
191 new MappingEntry(8205, "zwj"),
192 new MappingEntry(8206, "lrm"),
193 new MappingEntry(8207, "rlm"),
194 new MappingEntry(8211, "ndash"),
195 new MappingEntry(8212, "mdash"),
196 new MappingEntry(8216, "lsquo"),
197 new MappingEntry(8217, "rsquo"),
198 new MappingEntry(8218, "sbquo"),
199 new MappingEntry(8220, "ldquo"),
200 new MappingEntry(8221, "rdquo"),
201 new MappingEntry(8222, "bdquo"),
202 new MappingEntry(8224, "dagger"),
203 new MappingEntry(8225, "Dagger"),
204 new MappingEntry(8226, "bull"),
205 new MappingEntry(8230, "hellip"),
206 new MappingEntry(8240, "permil"),
207 new MappingEntry(8242, "prime"),
208 new MappingEntry(8243, "Prime"),
209 new MappingEntry(8249, "lsaquo"),
210 new MappingEntry(8250, "rsaquo"),
211 new MappingEntry(8254, "oline"),
212 new MappingEntry(8260, "frasl"),
213 new MappingEntry(8364, "euro"),
214 new MappingEntry(8465, "image"),
215 new MappingEntry(8472, "weierp"),
216 new MappingEntry(8476, "real"),
217 new MappingEntry(8482, "trade"),
218 new MappingEntry(8501, "alefsym"),
219 new MappingEntry(8592, "larr"),
220 new MappingEntry(8593, "uarr"),
221 new MappingEntry(8594, "rarr"),
222 new MappingEntry(8595, "darr"),
223 new MappingEntry(8596, "harr"),
224 new MappingEntry(8629, "crarr"),
225 new MappingEntry(8656, "lArr"),
226 new MappingEntry(8657, "uArr"),
227 new MappingEntry(8658, "rArr"),
228 new MappingEntry(8659, "dArr"),
229 new MappingEntry(8660, "hArr"),
230 new MappingEntry(8704, "forall"),
231 new MappingEntry(8706, "part"),
232 new MappingEntry(8707, "exist"),
233 new MappingEntry(8709, "empty"),
234 new MappingEntry(8711, "nabla"),
235 new MappingEntry(8712, "isin"),
236 new MappingEntry(8713, "notin"),
237 new MappingEntry(8715, "ni"),
238 new MappingEntry(8719, "prod"),
239 new MappingEntry(8721, "sum"),
240 new MappingEntry(8722, "minus"),
241 new MappingEntry(8727, "lowast"),
242 new MappingEntry(8730, "radic"),
243 new MappingEntry(8733, "prop"),
244 new MappingEntry(8734, "infin"),
245 new MappingEntry(8736, "ang"),
246 new MappingEntry(8743, "and"),
247 new MappingEntry(8744, "or"),
248 new MappingEntry(8745, "cap"),
249 new MappingEntry(8746, "cup"),
250 new MappingEntry(8747, "int"),
251 new MappingEntry(8756, "there4"),
252 new MappingEntry(8764, "sim"),
253 new MappingEntry(8773, "cong"),
254 new MappingEntry(8776, "asymp"),
255 new MappingEntry(8800, "ne"),
256 new MappingEntry(8801, "equiv"),
257 new MappingEntry(8804, "le"),
258 new MappingEntry(8805, "ge"),
259 new MappingEntry(8834, "sub"),
260 new MappingEntry(8835, "sup"),
261 new MappingEntry(8836, "nsub"),
262 new MappingEntry(8838, "sube"),
263 new MappingEntry(8839, "supe"),
264 new MappingEntry(8853, "oplus"),
265 new MappingEntry(8855, "otimes"),
266 new MappingEntry(8869, "perp"),
267 new MappingEntry(8901, "sdot"),
268 new MappingEntry(8968, "lceil"),
269 new MappingEntry(8969, "rceil"),
270 new MappingEntry(8970, "lfloor"),
271 new MappingEntry(8971, "rfloor"),
272 new MappingEntry(9001, "lang"),
273 new MappingEntry(9002, "rang"),
274 new MappingEntry(9674, "loz"),
275 new MappingEntry(9824, "spades"),
276 new MappingEntry(9827, "clubs"),
277 new MappingEntry(9829, "hearts"),
278 new MappingEntry(9830, "diams")
279 };
280
281
282 /*** Array indexed by characters most significant byte.
283 * It contains indexes for a second table containing values mapped. */
284 private static final int[] PREFIX_INDEX = {
285 0x0, 0x100, 0x200, 0x300, 0xa00, 0xa00, 0xa00, 0xa00,
286 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
287 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
288 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
289 0x400, 0x500, 0x600, 0x700, 0xa00, 0x800, 0x900, 0xa00,
290 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
291 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
292 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
293 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
294 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
295 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
296 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
297 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
298 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
299 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
300 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
301 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
302 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
303 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
304 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
305 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
306 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
307 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
308 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
309 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
310 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
311 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
312 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
313 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
314 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
315 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00,
316 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00, 0xa00
317 };
318
319 /*** Array indexed both by prefixIndex array and characters least significant byte.
320 * It contains values mapped onto characters. */
321 private static final char[][] SUFFIX_INDEX = {
322 null,null,null,null,null,null,null,null,
323 null,null,null,null,null,null,null,null,
324 null,null,null,null,null,null,null,null,
325 null,null,null,null,null,null,null,null,
326 null,null,{ 0x71, 0x75, 0x6f, 0x74 },null,null,null,{ 0x61, 0x6d, 0x70 },{ 0x61, 0x70, 0x6f, 0x73 },
327 null,null,null,null,null,null,null,null,
328 null,null,null,null,null,null,null,null,
329 null,null,null,null,{ 0x6c, 0x74 },null,{ 0x67, 0x74 },null,
330 null,null,null,null,null,null,null,null,
331 null,null,null,null,null,null,null,null,
332 null,null,null,null,null,null,null,null,
333 null,null,null,null,null,null,null,null,
334 null,null,null,null,null,null,null,null,
335 null,null,null,null,null,null,null,null,
336 null,null,null,null,null,null,null,null,
337 null,null,null,null,null,null,null,null,
338 null,null,null,null,null,null,null,null,
339 null,null,null,null,null,null,null,null,
340 null,null,null,null,null,null,null,null,
341 null,null,null,null,null,null,null,null,
342 { 0x6e, 0x62, 0x73, 0x70 },{ 0x69, 0x65, 0x78, 0x63, 0x6c },{ 0x63, 0x65, 0x6e, 0x74 },{ 0x70, 0x6f, 0x75, 0x6e, 0x64 },{ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e },{ 0x79, 0x65, 0x6e },{ 0x62, 0x72, 0x76, 0x62, 0x61, 0x72 },{ 0x73, 0x65, 0x63, 0x74 },
343 { 0x75, 0x6d, 0x6c },{ 0x63, 0x6f, 0x70, 0x79 },{ 0x6f, 0x72, 0x64, 0x66 },{ 0x6c, 0x61, 0x71, 0x75, 0x6f },{ 0x6e, 0x6f, 0x74 },{ 0x73, 0x68, 0x79 },{ 0x72, 0x65, 0x67 },{ 0x6d, 0x61, 0x63, 0x72 },
344 { 0x64, 0x65, 0x67 },{ 0x70, 0x6c, 0x75, 0x73, 0x6d, 0x6e },{ 0x73, 0x75, 0x70, 0x32 },{ 0x73, 0x75, 0x70, 0x33 },{ 0x61, 0x63, 0x75, 0x74, 0x65 },{ 0x6d, 0x69, 0x63, 0x72, 0x6f },{ 0x70, 0x61, 0x72, 0x61 },{ 0x6d, 0x69, 0x64, 0x64, 0x6f, 0x74 },
345 { 0x63, 0x65, 0x64, 0x69, 0x6c },{ 0x73, 0x75, 0x70, 0x31 },{ 0x6f, 0x72, 0x64, 0x6d },{ 0x72, 0x61, 0x71, 0x75, 0x6f },{ 0x66, 0x72, 0x61, 0x63, 0x31, 0x34 },{ 0x66, 0x72, 0x61, 0x63, 0x31, 0x32 },{ 0x66, 0x72, 0x61, 0x63, 0x33, 0x34 },{ 0x69, 0x71, 0x75, 0x65, 0x73, 0x74 },
346 { 0x41, 0x67, 0x72, 0x61, 0x76, 0x65 },{ 0x41, 0x61, 0x63, 0x75, 0x74, 0x65 },{ 0x41, 0x63, 0x69, 0x72, 0x63 },{ 0x41, 0x74, 0x69, 0x6c, 0x64, 0x65 },{ 0x41, 0x75, 0x6d, 0x6c },{ 0x41, 0x72, 0x69, 0x6e, 0x67 },{ 0x41, 0x45, 0x6c, 0x69, 0x67 },{ 0x43, 0x63, 0x65, 0x64, 0x69, 0x6c },
347 { 0x45, 0x67, 0x72, 0x61, 0x76, 0x65 },{ 0x45, 0x61, 0x63, 0x75, 0x74, 0x65 },{ 0x45, 0x63, 0x69, 0x72, 0x63 },{ 0x45, 0x75, 0x6d, 0x6c },{ 0x49, 0x67, 0x72, 0x61, 0x76, 0x65 },{ 0x49, 0x61, 0x63, 0x75, 0x74, 0x65 },{ 0x49, 0x63, 0x69, 0x72, 0x63 },{ 0x49, 0x75, 0x6d, 0x6c },
348 { 0x45, 0x54, 0x48 },{ 0x4e, 0x74, 0x69, 0x6c, 0x64, 0x65 },{ 0x4f, 0x67, 0x72, 0x61, 0x76, 0x65 },{ 0x4f, 0x61, 0x63, 0x75, 0x74, 0x65 },{ 0x4f, 0x63, 0x69, 0x72, 0x63 },{ 0x4f, 0x74, 0x69, 0x6c, 0x64, 0x65 },{ 0x4f, 0x75, 0x6d, 0x6c },{ 0x74, 0x69, 0x6d, 0x65, 0x73 },
349 { 0x4f, 0x73, 0x6c, 0x61, 0x73, 0x68 },{ 0x55, 0x67, 0x72, 0x61, 0x76, 0x65 },{ 0x55, 0x61, 0x63, 0x75, 0x74, 0x65 },{ 0x55, 0x63, 0x69, 0x72, 0x63 },{ 0x55, 0x75, 0x6d, 0x6c },{ 0x59, 0x61, 0x63, 0x75, 0x74, 0x65 },{ 0x54, 0x48, 0x4f, 0x52, 0x4e },{ 0x73, 0x7a, 0x6c, 0x69, 0x67 },
350 { 0x61, 0x67, 0x72, 0x61, 0x76, 0x65 },{ 0x61, 0x61, 0x63, 0x75, 0x74, 0x65 },{ 0x61, 0x63, 0x69, 0x72, 0x63 },{ 0x61, 0x74, 0x69, 0x6c, 0x64, 0x65 },{ 0x61, 0x75, 0x6d, 0x6c },{ 0x61, 0x72, 0x69, 0x6e, 0x67 },{ 0x61, 0x65, 0x6c, 0x69, 0x67 },{ 0x63, 0x63, 0x65, 0x64, 0x69, 0x6c },
351 { 0x65, 0x67, 0x72, 0x61, 0x76, 0x65 },{ 0x65, 0x61, 0x63, 0x75, 0x74, 0x65 },{ 0x65, 0x63, 0x69, 0x72, 0x63 },{ 0x65, 0x75, 0x6d, 0x6c },{ 0x69, 0x67, 0x72, 0x61, 0x76, 0x65 },{ 0x69, 0x61, 0x63, 0x75, 0x74, 0x65 },{ 0x69, 0x63, 0x69, 0x72, 0x63 },{ 0x69, 0x75, 0x6d, 0x6c },
352 { 0x65, 0x74, 0x68 },{ 0x6e, 0x74, 0x69, 0x6c, 0x64, 0x65 },{ 0x6f, 0x67, 0x72, 0x61, 0x76, 0x65 },{ 0x6f, 0x61, 0x63, 0x75, 0x74, 0x65 },{ 0x6f, 0x63, 0x69, 0x72, 0x63 },{ 0x6f, 0x74, 0x69, 0x6c, 0x64, 0x65 },{ 0x6f, 0x75, 0x6d, 0x6c },{ 0x64, 0x69, 0x76, 0x69, 0x64, 0x65 },
353 { 0x6f, 0x73, 0x6c, 0x61, 0x73, 0x68 },{ 0x75, 0x67, 0x72, 0x61, 0x76, 0x65 },{ 0x75, 0x61, 0x63, 0x75, 0x74, 0x65 },{ 0x75, 0x63, 0x69, 0x72, 0x63 },{ 0x75, 0x75, 0x6d, 0x6c },{ 0x79, 0x61, 0x63, 0x75, 0x74, 0x65 },{ 0x74, 0x68, 0x6f, 0x72, 0x6e },{ 0x79, 0x75, 0x6d, 0x6c },
354 null,null,null,null,null,null,null,null,
355 null,null,null,null,null,null,null,null,
356 null,null,null,null,null,null,null,null,
357 null,null,null,null,null,null,null,null,
358 null,null,null,null,null,null,null,null,
359 null,null,null,null,null,null,null,null,
360 null,null,null,null,null,null,null,null,
361 null,null,null,null,null,null,null,null,
362 null,null,null,null,null,null,null,null,
363 null,null,null,null,null,null,null,null,
364 null,null,{ 0x4f, 0x45, 0x6c, 0x69, 0x67 },{ 0x6f, 0x65, 0x6c, 0x69, 0x67 },null,null,null,null,
365 null,null,null,null,null,null,null,null,
366 { 0x53, 0x63, 0x61, 0x72, 0x6f, 0x6e },{ 0x73, 0x63, 0x61, 0x72, 0x6f, 0x6e },null,null,null,null,null,null,
367 null,null,null,null,null,null,null,null,
368 null,null,null,null,null,null,null,null,
369 { 0x59, 0x75, 0x6d, 0x6c },null,null,null,null,null,null,null,
370 null,null,null,null,null,null,null,null,
371 null,null,null,null,null,null,null,null,
372 null,null,{ 0x66, 0x6e, 0x6f, 0x66 },null,null,null,null,null,
373 null,null,null,null,null,null,null,null,
374 null,null,null,null,null,null,null,null,
375 null,null,null,null,null,null,null,null,
376 null,null,null,null,null,null,null,null,
377 null,null,null,null,null,null,null,null,
378 null,null,null,null,null,null,null,null,
379 null,null,null,null,null,null,null,null,
380 null,null,null,null,null,null,null,null,
381 null,null,null,null,null,null,null,null,
382 null,null,null,null,null,null,null,null,
383 null,null,null,null,null,null,null,null,
384 null,null,null,null,null,null,null,null,
385 null,null,null,null,null,null,null,null,
386 null,null,null,null,null,null,null,null,
387 null,null,null,null,null,null,null,null,
388 null,null,null,null,null,null,null,null,
389 null,null,null,null,null,null,null,null,
390 null,null,null,null,null,null,null,null,
391 null,null,null,null,null,null,null,null,
392 null,null,null,null,null,null,null,null,
393 null,null,null,null,null,null,null,null,
394 null,null,null,null,null,null,null,null,
395 null,null,null,null,null,null,null,null,
396 null,null,null,null,null,null,null,null,
397 null,null,null,null,null,null,null,null,
398 null,null,null,null,null,null,null,null,
399 null,null,null,null,null,null,null,null,
400 null,null,null,null,null,null,null,null,
401 null,null,null,null,null,null,null,null,
402 null,null,null,null,null,null,null,null,
403 null,null,null,null,null,null,null,null,
404 null,null,null,null,null,null,null,null,
405 null,null,null,null,null,null,null,null,
406 null,null,null,null,null,null,null,null,
407 null,null,null,null,null,null,null,null,
408 null,null,null,null,null,null,null,null,
409 null,null,null,null,null,null,null,null,
410 null,null,null,null,null,null,{ 0x63, 0x69, 0x72, 0x63 },null,
411 null,null,null,null,null,null,null,null,
412 null,null,null,null,null,null,null,null,
413 null,null,null,null,{ 0x74, 0x69, 0x6c, 0x64, 0x65 },null,null,null,
414 null,null,null,null,null,null,null,null,
415 null,null,null,null,null,null,null,null,
416 null,null,null,null,null,null,null,null,
417 null,null,null,null,null,null,null,null,
418 null,null,null,null,null,null,null,null,
419 null,null,null,null,null,null,null,null,
420 null,null,null,null,null,null,null,null,
421 null,null,null,null,null,null,null,null,
422 null,null,null,null,null,null,null,null,
423 null,null,null,null,null,null,null,null,
424 null,null,null,null,null,null,null,null,
425 null,null,null,null,null,null,null,null,
426 null,null,null,null,null,null,null,null,
427 null,null,null,null,null,null,null,null,
428 null,null,null,null,null,null,null,null,
429 null,null,null,null,null,null,null,null,
430 null,null,null,null,null,null,null,null,
431 null,null,null,null,null,null,null,null,
432 null,null,null,null,null,null,null,null,
433 null,null,null,null,null,null,null,null,
434 null,null,null,null,null,null,null,null,
435 null,null,null,null,null,null,null,null,
436 null,{ 0x41, 0x6c, 0x70, 0x68, 0x61 },{ 0x42, 0x65, 0x74, 0x61 },{ 0x47, 0x61, 0x6d, 0x6d, 0x61 },{ 0x44, 0x65, 0x6c, 0x74, 0x61 },{ 0x45, 0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e },{ 0x5a, 0x65, 0x74, 0x61 },{ 0x45, 0x74, 0x61 },
437 { 0x54, 0x68, 0x65, 0x74, 0x61 },{ 0x49, 0x6f, 0x74, 0x61 },{ 0x4b, 0x61, 0x70, 0x70, 0x61 },{ 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61 },{ 0x4d, 0x75 },{ 0x4e, 0x75 },{ 0x58, 0x69 },{ 0x4f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x6e },
438 { 0x50, 0x69 },{ 0x52, 0x68, 0x6f },null,{ 0x53, 0x69, 0x67, 0x6d, 0x61 },{ 0x54, 0x61, 0x75 },{ 0x55, 0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e },{ 0x50, 0x68, 0x69 },{ 0x43, 0x68, 0x69 },
439 { 0x50, 0x73, 0x69 },{ 0x4f, 0x6d, 0x65, 0x67, 0x61 },null,null,null,null,null,null,
440 null,{ 0x61, 0x6c, 0x70, 0x68, 0x61 },{ 0x62, 0x65, 0x74, 0x61 },{ 0x67, 0x61, 0x6d, 0x6d, 0x61 },{ 0x64, 0x65, 0x6c, 0x74, 0x61 },{ 0x65, 0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e },{ 0x7a, 0x65, 0x74, 0x61 },{ 0x65, 0x74, 0x61 },
441 { 0x74, 0x68, 0x65, 0x74, 0x61 },{ 0x69, 0x6f, 0x74, 0x61 },{ 0x6b, 0x61, 0x70, 0x70, 0x61 },{ 0x6c, 0x61, 0x6d, 0x62, 0x64, 0x61 },{ 0x6d, 0x75 },{ 0x6e, 0x75 },{ 0x78, 0x69 },{ 0x6f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x6e },
442 { 0x70, 0x69 },{ 0x72, 0x68, 0x6f },{ 0x73, 0x69, 0x67, 0x6d, 0x61, 0x66 },{ 0x73, 0x69, 0x67, 0x6d, 0x61 },{ 0x74, 0x61, 0x75 },{ 0x75, 0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e },{ 0x70, 0x68, 0x69 },{ 0x63, 0x68, 0x69 },
443 { 0x70, 0x73, 0x69 },{ 0x6f, 0x6d, 0x65, 0x67, 0x61 },null,null,null,null,null,null,
444 null,{ 0x74, 0x68, 0x65, 0x74, 0x61, 0x73, 0x79, 0x6d },{ 0x75, 0x70, 0x73, 0x69, 0x68 },null,null,null,{ 0x70, 0x69, 0x76 },null,
445 null,null,null,null,null,null,null,null,
446 null,null,null,null,null,null,null,null,
447 null,null,null,null,null,null,null,null,
448 null,null,null,null,null,null,null,null,
449 null,null,null,null,null,null,null,null,
450 null,null,{ 0x65, 0x6e, 0x73, 0x70 },{ 0x65, 0x6d, 0x73, 0x70 },null,null,null,null,
451 null,{ 0x74, 0x68, 0x69, 0x6e, 0x73, 0x70 },null,null,{ 0x7a, 0x77, 0x6e, 0x6a },{ 0x7a, 0x77, 0x6a },{ 0x6c, 0x72, 0x6d },{ 0x72, 0x6c, 0x6d },
452 null,null,null,{ 0x6e, 0x64, 0x61, 0x73, 0x68 },{ 0x6d, 0x64, 0x61, 0x73, 0x68 },null,null,null,
453 { 0x6c, 0x73, 0x71, 0x75, 0x6f },{ 0x72, 0x73, 0x71, 0x75, 0x6f },{ 0x73, 0x62, 0x71, 0x75, 0x6f },null,{ 0x6c, 0x64, 0x71, 0x75, 0x6f },{ 0x72, 0x64, 0x71, 0x75, 0x6f },{ 0x62, 0x64, 0x71, 0x75, 0x6f },null,
454 { 0x64, 0x61, 0x67, 0x67, 0x65, 0x72 },{ 0x44, 0x61, 0x67, 0x67, 0x65, 0x72 },{ 0x62, 0x75, 0x6c, 0x6c },null,null,null,{ 0x68, 0x65, 0x6c, 0x6c, 0x69, 0x70 },null,
455 null,null,null,null,null,null,null,null,
456 { 0x70, 0x65, 0x72, 0x6d, 0x69, 0x6c },null,{ 0x70, 0x72, 0x69, 0x6d, 0x65 },{ 0x50, 0x72, 0x69, 0x6d, 0x65 },null,null,null,null,
457 null,{ 0x6c, 0x73, 0x61, 0x71, 0x75, 0x6f },{ 0x72, 0x73, 0x61, 0x71, 0x75, 0x6f },null,null,null,{ 0x6f, 0x6c, 0x69, 0x6e, 0x65 },null,
458 null,null,null,null,{ 0x66, 0x72, 0x61, 0x73, 0x6c },null,null,null,
459 null,null,null,null,null,null,null,null,
460 null,null,null,null,null,null,null,null,
461 null,null,null,null,null,null,null,null,
462 null,null,null,null,null,null,null,null,
463 null,null,null,null,null,null,null,null,
464 null,null,null,null,null,null,null,null,
465 null,null,null,null,null,null,null,null,
466 null,null,null,null,null,null,null,null,
467 null,null,null,null,null,null,null,null,
468 null,null,null,null,null,null,null,null,
469 null,null,null,null,null,null,null,null,
470 null,null,null,null,null,null,null,null,
471 null,null,null,null,{ 0x65, 0x75, 0x72, 0x6f },null,null,null,
472 null,null,null,null,null,null,null,null,
473 null,null,null,null,null,null,null,null,
474 null,null,null,null,null,null,null,null,
475 null,null,null,null,null,null,null,null,
476 null,null,null,null,null,null,null,null,
477 null,null,null,null,null,null,null,null,
478 null,null,null,null,null,null,null,null,
479 null,null,null,null,null,null,null,null,
480 null,null,null,null,null,null,null,null,
481 null,null,null,null,null,null,null,null,
482 null,null,null,null,null,null,null,null,
483 null,null,null,null,null,null,null,null,
484 null,{ 0x69, 0x6d, 0x61, 0x67, 0x65 },null,null,null,null,null,null,
485 { 0x77, 0x65, 0x69, 0x65, 0x72, 0x70 },null,null,null,{ 0x72, 0x65, 0x61, 0x6c },null,null,null,
486 null,null,{ 0x74, 0x72, 0x61, 0x64, 0x65 },null,null,null,null,null,
487 null,null,null,null,null,null,null,null,
488 null,null,null,null,null,{ 0x61, 0x6c, 0x65, 0x66, 0x73, 0x79, 0x6d },null,null,
489 null,null,null,null,null,null,null,null,
490 null,null,null,null,null,null,null,null,
491 null,null,null,null,null,null,null,null,
492 null,null,null,null,null,null,null,null,
493 null,null,null,null,null,null,null,null,
494 null,null,null,null,null,null,null,null,
495 null,null,null,null,null,null,null,null,
496 null,null,null,null,null,null,null,null,
497 null,null,null,null,null,null,null,null,
498 null,null,null,null,null,null,null,null,
499 null,null,null,null,null,null,null,null,
500 { 0x6c, 0x61, 0x72, 0x72 },{ 0x75, 0x61, 0x72, 0x72 },{ 0x72, 0x61, 0x72, 0x72 },{ 0x64, 0x61, 0x72, 0x72 },{ 0x68, 0x61, 0x72, 0x72 },null,null,null,
501 null,null,null,null,null,null,null,null,
502 null,null,null,null,null,null,null,null,
503 null,null,null,null,null,null,null,null,
504 null,null,null,null,null,{ 0x63, 0x72, 0x61, 0x72, 0x72 },null,null,
505 null,null,null,null,null,null,null,null,
506 null,null,null,null,null,null,null,null,
507 null,null,null,null,null,null,null,null,
508 { 0x6c, 0x41, 0x72, 0x72 },{ 0x75, 0x41, 0x72, 0x72 },{ 0x72, 0x41, 0x72, 0x72 },{ 0x64, 0x41, 0x72, 0x72 },{ 0x68, 0x41, 0x72, 0x72 },null,null,null,
509 null,null,null,null,null,null,null,null,
510 null,null,null,null,null,null,null,null,
511 null,null,null,null,null,null,null,null,
512 null,null,null,null,null,null,null,null,
513 null,null,null,null,null,null,null,null,
514 { 0x66, 0x6f, 0x72, 0x61, 0x6c, 0x6c },null,{ 0x70, 0x61, 0x72, 0x74 },{ 0x65, 0x78, 0x69, 0x73, 0x74 },null,{ 0x65, 0x6d, 0x70, 0x74, 0x79 },null,{ 0x6e, 0x61, 0x62, 0x6c, 0x61 },
515 { 0x69, 0x73, 0x69, 0x6e },{ 0x6e, 0x6f, 0x74, 0x69, 0x6e },null,{ 0x6e, 0x69 },null,null,null,{ 0x70, 0x72, 0x6f, 0x64 },
516 null,{ 0x73, 0x75, 0x6d },{ 0x6d, 0x69, 0x6e, 0x75, 0x73 },null,null,null,null,{ 0x6c, 0x6f, 0x77, 0x61, 0x73, 0x74 },
517 null,null,{ 0x72, 0x61, 0x64, 0x69, 0x63 },null,null,{ 0x70, 0x72, 0x6f, 0x70 },{ 0x69, 0x6e, 0x66, 0x69, 0x6e },null,
518 { 0x61, 0x6e, 0x67 },null,null,null,null,null,null,{ 0x61, 0x6e, 0x64 },
519 { 0x6f, 0x72 },{ 0x63, 0x61, 0x70 },{ 0x63, 0x75, 0x70 },{ 0x69, 0x6e, 0x74 },null,null,null,null,
520 null,null,null,null,{ 0x74, 0x68, 0x65, 0x72, 0x65, 0x34 },null,null,null,
521 null,null,null,null,{ 0x73, 0x69, 0x6d },null,null,null,
522 null,null,null,null,null,{ 0x63, 0x6f, 0x6e, 0x67 },null,null,
523 { 0x61, 0x73, 0x79, 0x6d, 0x70 },null,null,null,null,null,null,null,
524 null,null,null,null,null,null,null,null,
525 null,null,null,null,null,null,null,null,
526 { 0x6e, 0x65 },{ 0x65, 0x71, 0x75, 0x69, 0x76 },null,null,{ 0x6c, 0x65 },{ 0x67, 0x65 },null,null,
527 null,null,null,null,null,null,null,null,
528 null,null,null,null,null,null,null,null,
529 null,null,null,null,null,null,null,null,
530 null,null,{ 0x73, 0x75, 0x62 },{ 0x73, 0x75, 0x70 },{ 0x6e, 0x73, 0x75, 0x62 },null,{ 0x73, 0x75, 0x62, 0x65 },{ 0x73, 0x75, 0x70, 0x65 },
531 null,null,null,null,null,null,null,null,
532 null,null,null,null,null,{ 0x6f, 0x70, 0x6c, 0x75, 0x73 },null,{ 0x6f, 0x74, 0x69, 0x6d, 0x65, 0x73 },
533 null,null,null,null,null,null,null,null,
534 null,null,null,null,null,{ 0x70, 0x65, 0x72, 0x70 },null,null,
535 null,null,null,null,null,null,null,null,
536 null,null,null,null,null,null,null,null,
537 null,null,null,null,null,null,null,null,
538 null,null,null,null,null,{ 0x73, 0x64, 0x6f, 0x74 },null,null,
539 null,null,null,null,null,null,null,null,
540 null,null,null,null,null,null,null,null,
541 null,null,null,null,null,null,null,null,
542 null,null,null,null,null,null,null,null,
543 null,null,null,null,null,null,null,null,
544 null,null,null,null,null,null,null,null,
545 null,null,null,null,null,null,null,null,
546 null,null,null,null,null,null,null,null,
547 { 0x6c, 0x63, 0x65, 0x69, 0x6c },{ 0x72, 0x63, 0x65, 0x69, 0x6c },{ 0x6c, 0x66, 0x6c, 0x6f, 0x6f, 0x72 },{ 0x72, 0x66, 0x6c, 0x6f, 0x6f, 0x72 },null,null,null,null,
548 null,null,null,null,null,null,null,null,
549 null,null,null,null,null,null,null,null,
550 null,null,null,null,null,null,null,null,
551 null,{ 0x6c, 0x61, 0x6e, 0x67 },{ 0x72, 0x61, 0x6e, 0x67 },null,null,null,null,null,
552 null,null,null,null,null,null,null,null,
553 null,null,null,null,null,null,null,null,
554 null,null,null,null,null,null,null,null,
555 null,null,null,null,null,null,null,null,
556 null,null,null,null,null,null,null,null,
557 null,null,null,null,null,null,null,null,
558 null,null,null,null,null,null,null,null,
559 null,null,null,null,null,null,null,null,
560 null,null,null,null,null,null,null,null,
561 null,null,null,null,null,null,null,null,
562 null,null,null,null,null,null,null,null,
563 null,null,null,null,null,null,null,null,
564 null,null,null,null,null,null,null,null,
565 null,null,null,null,null,null,null,null,
566 null,null,null,null,null,null,null,null,
567 null,null,null,null,null,null,null,null,
568 null,null,null,null,null,null,null,null,
569 null,null,null,null,null,null,null,null,
570 null,null,null,null,null,null,null,null,
571 null,null,null,null,null,null,null,null,
572 null,null,null,null,null,null,null,null,
573 null,null,null,null,null,null,null,null,
574 null,null,null,null,null,null,null,null,
575 null,null,null,null,null,null,null,null,
576 null,null,null,null,null,null,null,null,
577 null,null,null,null,null,null,null,null,
578 null,null,null,null,null,null,null,null,
579 null,null,null,null,null,null,null,null,
580 null,null,null,null,null,null,null,null,
581 null,null,null,null,null,null,null,null,
582 null,null,null,null,null,null,null,null,
583 null,null,null,null,null,null,null,null,
584 null,null,null,null,null,null,null,null,
585 null,null,null,null,null,null,null,null,
586 null,null,null,null,null,null,null,null,
587 null,null,null,null,null,null,null,null,
588 null,null,null,null,null,null,null,null,
589 null,null,null,null,null,null,null,null,
590 null,null,null,null,null,null,null,null,
591 null,null,null,null,null,null,null,null,
592 null,null,null,null,null,null,null,null,
593 null,null,null,null,null,null,null,null,
594 null,null,null,null,null,null,null,null,
595 null,null,null,null,null,null,null,null,
596 null,null,null,null,null,null,null,null,
597 null,null,null,null,null,null,null,null,
598 null,null,null,null,null,null,null,null,
599 null,null,null,null,null,null,null,null,
600 null,null,null,null,null,null,null,null,
601 null,null,null,null,null,null,null,null,
602 null,null,null,null,null,null,null,null,
603 null,null,{ 0x6c, 0x6f, 0x7a },null,null,null,null,null,
604 null,null,null,null,null,null,null,null,
605 null,null,null,null,null,null,null,null,
606 null,null,null,null,null,null,null,null,
607 null,null,null,null,null,null,null,null,
608 null,null,null,null,null,null,null,null,
609 null,null,null,null,null,null,null,null,
610 null,null,null,null,null,null,null,null,
611 null,null,null,null,null,null,null,null,
612 null,null,null,null,null,null,null,null,
613 null,null,null,null,null,null,null,null,
614 null,null,null,null,null,null,null,null,
615 null,null,null,null,null,null,null,null,
616 null,null,null,null,null,null,null,null,
617 null,null,null,null,null,null,null,null,
618 null,null,null,null,null,null,null,null,
619 null,null,null,null,null,null,null,null,
620 null,null,null,null,null,null,null,null,
621 null,null,null,null,null,null,null,null,
622 { 0x73, 0x70, 0x61, 0x64, 0x65, 0x73 },null,null,{ 0x63, 0x6c, 0x75, 0x62, 0x73 },null,{ 0x68, 0x65, 0x61, 0x72, 0x74, 0x73 },{ 0x64, 0x69, 0x61, 0x6d, 0x73 },null,
623 null,null,null,null,null,null,null,null,
624 null,null,null,null,null,null,null,null,
625 null,null,null,null,null,null,null,null,
626 null,null,null,null,null,null,null,null,
627 null,null,null,null,null,null,null,null,
628 null,null,null,null,null,null,null,null,
629 null,null,null,null,null,null,null,null,
630 null,null,null,null,null,null,null,null,
631 null,null,null,null,null,null,null,null,
632 null,null,null,null,null,null,null,null,
633 null,null,null,null,null,null,null,null,
634 null,null,null,null,null,null,null,null,
635 null,null,null,null,null,null,null,null,
636 null,null,null,null,null,null,null,null,
637 null,null,null,null,null,null,null,null,
638 null,null,null,null,null,null,null,null,
639 null,null,null,null,null,null,null,null,
640 null,null,null,null,null,null,null,null,
641 null,null,null,null,null,null,null,null,
642 null,null,null,null,null,null,null,null,
643 null,null,null,null,null,null,null,null,
644 null,null,null,null,null,null,null,null,
645 null,null,null,null,null,null,null,null,
646 null,null,null,null,null,null,null,null,
647 null,null,null,null,null,null,null,null,
648 null,null,null,null,null,null,null,null,
649 null,null,null,null,null,null,null,null,
650 null,null,null,null,null,null,null,null,
651 null,null,null,null,null,null,null,null,
652 null,null,null,null,null,null,null,null,
653 null,null,null,null,null,null,null,null,
654 null,null,null,null,null,null,null,null,
655 null,null,null,null,null,null,null,null,
656 null,null,null,null,null,null,null,null,
657 null,null,null,null,null,null,null,null,
658 null,null,null,null,null,null,null,null,
659 null,null,null,null,null,null,null,null,
660 null,null,null,null,null,null,null,null,
661 null,null,null,null,null,null,null,null,
662 null,null,null,null,null,null,null,null,
663 null,null,null,null,null,null,null,null,
664 null,null,null,null,null,null,null,null,
665 null,null,null,null,null,null,null,null,
666 null,null,null,null,null,null,null,null,
667 null,null,null,null,null,null,null,null,
668 null,null,null,null,null