1. /*
  2. * @(#)Normalizer.java 1.31 00/01/19
  3. *
  4. * Copyright 1996-2000 Sun Microsystems, Inc. All Rights Reserved.
  5. *
  6. * This software is the proprietary information of Sun Microsystems, Inc.
  7. * Use is subject to license terms.
  8. *
  9. */
  10. /*
  11. * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
  12. * (C) Copyright IBM Corp. 1996 - All Rights Reserved
  13. *
  14. * The original version of this source code and documentation is copyrighted
  15. * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
  16. * materials are provided under terms of a License Agreement between Taligent
  17. * and Sun. This technology is protected by multiple US and International
  18. * patents. This notice and attribution to Taligent may not be removed.
  19. * Taligent is a registered trademark of Taligent, Inc.
  20. *
  21. */
  22. package java.text;
  23. /**
  24. * Contains statics for normalizing strings.
  25. * <p>
  26. * Unicode defines a set of non-spacing marks that can be combined with
  27. * base characters to form a single "conceptual" character. Often these
  28. * combinations have pre-composed equivalents elsewhere in Unicode. For
  29. * operations such as locale-sensitive text comparison, it is necessary to
  30. * be able to decompose a Unicode character into an equivalent string.
  31. * The composition operation is also necessary.
  32. *
  33. * @version 1.28 01/27/99
  34. * @author Mark Davis, Helena Shih, Laura Werner
  35. */
  36. class Normalizer implements Cloneable{
  37. /**
  38. * Null order which indicates the end of string is reached by the
  39. * cursor.
  40. */
  41. final static char DONE = 0xffff;
  42. /**
  43. * Decomposition mode value. With NO_DECOMPOSITION
  44. * set, accented characters will not be decomposed for collation. This
  45. * provides the fastest collation but will only produce correct results
  46. * for languages that do not use accents.
  47. */
  48. final static int NO_DECOMPOSITION = 0;
  49. /**
  50. * Decomposition mode value. With CANONICAL_DECOMPOSITION
  51. * set, characters that are canonical variants according to Unicode 2.0
  52. * will be decomposed for collation. This is the default setting and
  53. * should be used to get correct collation of accented characters.
  54. */
  55. final static int CANONICAL_DECOMPOSITION = 1;
  56. /**
  57. * Decomposition mode value. With FULL_DECOMPOSITION
  58. * set, both Unicode canonical variants and Unicode compatibility variants
  59. * will be decomposed for collation. This causes not only accented
  60. * characters to be collated, but also characters that have special formats
  61. * to be collated with their norminal form. For example, the half-width and
  62. * full-width ASCII and Katakana characters are then collated together.
  63. * FULL_DECOMPOSITION is the most complete and therefore the slowest
  64. * decomposition mode.
  65. */
  66. final static int FULL_DECOMPOSITION = 2;
  67. /**
  68. * Create a normalizer for this string.
  69. * @param source the source text to decompose.
  70. * @param mode the decomposition mode.
  71. */
  72. Normalizer(String source, int mode) {
  73. this(new StringCharacterIterator(source), mode);
  74. ownIterator = true;
  75. }
  76. Normalizer(CharacterIterator source, int mode) {
  77. str = source;
  78. ownIterator = false;
  79. decmpMode = mode;
  80. decmpLimit = (mode == Collator.CANONICAL_DECOMPOSITION) ?
  81. maximumCanonical : SHORT_MAX_VALUE;
  82. parsedStr = null; // lazy assignment
  83. pIndex = 0;
  84. }
  85. public Object clone() {
  86. Normalizer result = null;
  87. try {
  88. result = (Normalizer)super.clone();
  89. }
  90. catch (CloneNotSupportedException e) {
  91. // swallow the exception, which will never actually be thrown
  92. }
  93. result.str = (CharacterIterator)str.clone();
  94. if (parsedStr != null)
  95. result.parsedStr = new StringBuffer(parsedStr.toString());
  96. return result;
  97. }
  98. /**
  99. * Set the decomposition mode of the normalizer.
  100. * @param mode the new decomposition mode.
  101. */
  102. void setDecomposition(int mode)
  103. {
  104. decmpMode = mode;
  105. }
  106. /**
  107. * Get the decomposition mode of the normalizer.
  108. */
  109. int getDecomposition()
  110. {
  111. return decmpMode;
  112. }
  113. /**
  114. * Set a new text string to be decomposed.
  115. * @param source the new source string
  116. */
  117. void setText(String source)
  118. {
  119. if (ownIterator) {
  120. StringCharacterIterator sIter = (StringCharacterIterator)str;
  121. sIter.setText(source);
  122. } else {
  123. str = new StringCharacterIterator(source);
  124. ownIterator = true;
  125. }
  126. reset();
  127. }
  128. void setText(CharacterIterator source)
  129. {
  130. str = source;
  131. ownIterator = false;
  132. reset();
  133. }
  134. CharacterIterator getText()
  135. {
  136. return str;
  137. }
  138. /**
  139. * Move the iterator to the specified offset within the source text
  140. * @param newOffset the new offset
  141. */
  142. final void setOffset(int newOffset)
  143. {
  144. str.setIndex(newOffset);
  145. pIndex = pLimit = 0;
  146. }
  147. /**
  148. * Get the current offset of the character in the processed source string.
  149. * @return The offset of the accessed character
  150. */
  151. final int getOffset()
  152. {
  153. return str.getIndex();
  154. }
  155. /**
  156. * Reset the iterator to the beginning of the source text
  157. */
  158. void reset() {
  159. str.first();
  160. pIndex = pLimit = 0;
  161. }
  162. /**
  163. * Return the next decomposed character in the source text
  164. */
  165. char next() {
  166. char ch;
  167. int index = 0; // index into contents table
  168. byte type; // canonicalization type
  169. char result = DONE;
  170. if (decmpMode == Collator.NO_DECOMPOSITION) {
  171. // If we're not really doing decomposition, just return the current char
  172. result = str.current();
  173. str.next();
  174. }
  175. else if (pIndex < pLimit) {
  176. // push out previously decomposed characters
  177. result = parsedStr.charAt(++pIndex);
  178. }
  179. else if (str.getIndex() >= str.getEndIndex()) {
  180. // Past the end of the string
  181. result = DONE;
  182. pIndex = pLimit = 0; // To make previous() work
  183. }
  184. else {
  185. pIndex = pLimit = 0; // To make previous() work
  186. // We have to fetch the next character from the string and then
  187. // try to decompose it
  188. ch = str.current();
  189. str.next();
  190. // First, retrieve this character's index. This is an index into
  191. // the "contents" array, which contains a sequence of characters
  192. // terminated by kSTerminator for each decomposing character.
  193. // All of the sequences are packed into the one big "contents" array
  194. // in order to save space.
  195. index = startOffsets.elementAt(ch);
  196. // The "canonicals" array stores the canonical ordering for each combining
  197. // character in Unicode. These orderings are used to sort the diacritical
  198. // marks after a base character into a canonical order. If a given Unicode
  199. // character is *not* a combining character, its entry is BASE
  200. if (index < decmpLimit || canonicals.elementAt(ch) != BASE) {
  201. // We have to decompose, canonicalize or both.
  202. // Do so to the shortest possible substring.
  203. //
  204. // The length of the parsed string is unbounded, since
  205. // the input string could have an arbitrary number
  206. // of adjacent non-BASE characters. In practice,
  207. // howev+er, a base character will be followed very
  208. // few non-base characters. For example, a base
  209. // character may be followed by diacritical marks.
  210. // These are limited in number, most frequently one,
  211. // rarely more than two. Therefore the default
  212. // StringBuffer size is adequate for all normal
  213. // sequences but will expand as needed for
  214. // pathological input.
  215. //
  216. // Refer to the following sections of The Unicode
  217. // Standard, Version 2.0
  218. //
  219. // Section 2.5 Combining Characters ,
  220. // Section 3.6 Decomposition
  221. // Section 3.9 Canonical Ordering Behavior
  222. // Section 4.2 Combining Classes
  223. // Section 5.9 Normalization
  224. // Section 5.15 Sorting and Searching
  225. //
  226. zapParsedStr();
  227. if (index < decmpLimit) { // Decompose
  228. while((ch = contents.charAt(index++)) != '\u0000') {
  229. parsedStr.append(ch);
  230. }
  231. } else { // Combining character
  232. parsedStr.append(ch);
  233. }
  234. // Any other combining chacters that immediately follow the decomposed
  235. // character must be included in the buffer too, because they're
  236. // conceptually part of the same logical character.
  237. while (str.getIndex() < str.getEndIndex() &&
  238. canonicals.elementAt(ch = str.current()) != BASE) {
  239. parsedStr.append(ch);
  240. str.next();
  241. }
  242. if (parsedStr.length() > 1) {
  243. // If there is more than one combining character in the buffer,
  244. // put them into the canonical order.
  245. fixCanonical(parsedStr);
  246. pLimit = parsedStr.length() - 1;
  247. pIndex = 0;
  248. }
  249. result = parsedStr.charAt(0);
  250. } else if (ch >= HANGUL_BASE && ch < HANGUL_LIMIT) {
  251. // Decompose Hangul syllables into Jamo
  252. zapParsedStr();
  253. hangulToJamo(ch, parsedStr);
  254. if (decmpMode >=FULL_DECOMPOSITION) {
  255. decompose(parsedStr); // Decompose into conjoining Jamo
  256. }
  257. pLimit = parsedStr.length() - 1;
  258. pIndex = 0;
  259. result = parsedStr.charAt(pIndex);
  260. } else {
  261. result = ch;
  262. }
  263. }
  264. return result;
  265. }
  266. final private void zapParsedStr() {
  267. if (parsedStr == null) {
  268. parsedStr = new StringBuffer();
  269. } else {
  270. parsedStr.setLength(0);
  271. }
  272. }
  273. /**
  274. * Return the previous decomposed character in the source text
  275. */
  276. char previous()
  277. {
  278. char result = DONE;
  279. if (pIndex > 0) {
  280. result = parsedStr.charAt(--pIndex);
  281. }
  282. else if (decmpMode == Collator.NO_DECOMPOSITION) {
  283. result = str.previous();
  284. }
  285. else if (str.getIndex() > str.getBeginIndex()) {
  286. pIndex = pLimit = 0;
  287. // Fetch the previous character from the string and then
  288. // try to decompose it
  289. char ch = str.previous();
  290. int index = startOffsets.elementAt(ch);
  291. if (index < decmpLimit || canonicals.elementAt(ch) != BASE) {
  292. zapParsedStr();
  293. // Slurp up any combining characters till we get to a base char.
  294. while (ch != DONE && canonicals.elementAt(ch) != BASE) {
  295. parsedStr.insert(0, ch);
  296. ch = str.previous();
  297. }
  298. index = startOffsets.elementAt(ch);
  299. // Now decompose this base character
  300. if (index < decmpLimit) { // Decompose
  301. int i = 0;
  302. while((ch = contents.charAt(index++)) != '\u0000') {
  303. parsedStr.insert(i++, ch);
  304. }
  305. } else {
  306. // This is a base character that doesn't decompose,
  307. // and isn't involved in reordering, so throw it back
  308. str.next();
  309. }
  310. if (parsedStr.length() > 1) {
  311. // If there is more than one combining character in the buffer,
  312. // put them into the canonical order.
  313. fixCanonical(parsedStr);
  314. }
  315. pIndex = pLimit = parsedStr.length() - 1;
  316. result = parsedStr.charAt(pIndex);
  317. } else if (ch >= HANGUL_BASE && ch < HANGUL_LIMIT) {
  318. zapParsedStr();
  319. hangulToJamo(ch, parsedStr);
  320. pIndex = pLimit = parsedStr.length() - 1;
  321. result = parsedStr.charAt(pIndex);
  322. } else {
  323. result = ch;
  324. }
  325. }
  326. return result;
  327. }
  328. /**
  329. * Transform a string into an expanded form, with all
  330. * precomposed characters expanded into combining character sequences
  331. * where possible.
  332. */
  333. public static String decompose(String input) {
  334. return decompose(input, FULL_DECOMPOSITION);
  335. }
  336. /**
  337. * Transform a string into an expanded form, with all
  338. * precomposed characters expanded into combining character sequences
  339. * where possible.
  340. */
  341. public static void decompose(StringBuffer buffer) {
  342. decompose(buffer, FULL_DECOMPOSITION);
  343. }
  344. /**
  345. * Converts both normalized or unnormalized canonical decompositions into
  346. * corresponding precomposed characters where possible.<br>
  347. * Used for creating normalized precomposed forms, such as for file names,
  348. * class names, etc.<br>
  349. * Example: "la\u0300zy" => "l\u00e0zy" ("làzy")
  350. * @param input string to convert
  351. * @return string with composed sequences.
  352. */
  353. public static String compose(String input) {
  354. StringBuffer result = new StringBuffer(input);
  355. compose(result);
  356. return result.toString();
  357. };
  358. /**
  359. * Converts both normalized or unnormalized canonical decompositions into
  360. * corresponding precomposed characters where possible.<br>
  361. * Used for creating normalized precomposed forms, such as for file names,
  362. * class names, etc.<br>
  363. * Example: "la\u0300zy" => "l\u00e0zy" ("làzy")
  364. * @param buffer string to convert. On output the length will be shorter if characters
  365. * were combined.
  366. */
  367. public static void compose(StringBuffer buffer) {
  368. if (buffer.length() < 2) return;
  369. int outputIndex = 1;
  370. int lastBaseIndex = 0;
  371. char lastBase = buffer.charAt(lastBaseIndex);
  372. boolean hasJamo = false;
  373. mainLoop:
  374. for (int i = 1; i < buffer.length(); ++i) {
  375. char ch = buffer.charAt(i);
  376. // Only convert sequences of non-spacing marks
  377. // If there were decompositions with enclosing marks, would have to make this
  378. // more complicated.
  379. int type = Character.getType(ch);
  380. if (type != Character.NON_SPACING_MARK
  381. && type != Character.COMBINING_SPACING_MARK) {
  382. lastBaseIndex = outputIndex;
  383. lastBase = ch;
  384. } else {
  385. // Do NOT convert if it would be incorrect canonical order.
  386. // That is, if intervening non-spacing mark is of same canonical type
  387. if (lastBaseIndex + 1 < outputIndex) {
  388. byte currentType = Normalizer.canonicals.elementAt(ch);
  389. for (int j = lastBaseIndex + 1; j < outputIndex; ++j) {
  390. if (currentType ==
  391. Normalizer.canonicals.elementAt(buffer.charAt(j))) {
  392. buffer.setCharAt(outputIndex++,ch); // copy
  393. continue mainLoop; // & bail
  394. }
  395. }
  396. }
  397. // Now see if there is a match by doing a double look-up.
  398. int trial = composeMapping.get((lastBase<<16) + ch);
  399. if (trial != 0) {
  400. lastBase = (char)trial;
  401. buffer.setCharAt(lastBaseIndex,lastBase);
  402. continue;
  403. }
  404. }
  405. buffer.setCharAt(outputIndex++,ch);
  406. }
  407. buffer.setLength(outputIndex);
  408. jamoToHangul(buffer);
  409. }
  410. // -------------------------------------------------------------
  411. // private
  412. // -------------------------------------------------------------
  413. /**
  414. * Decomposes a StringBuffer in place
  415. * @param source the string to be decomposed
  416. * @param mode the decomposition mode
  417. * @see java.text.Collator
  418. * @see java.text.Collator#getDecomposition
  419. * @see java.text.Collator#setDecomposition
  420. */
  421. static void decompose(StringBuffer source, int mode) {
  422. if (mode == Collator.NO_DECOMPOSITION) {
  423. return;
  424. }
  425. int limit = (mode == Collator.CANONICAL_DECOMPOSITION) ?
  426. maximumCanonical : SHORT_MAX_VALUE;
  427. StringBuffer result = new StringBuffer();
  428. for (int i = 0; i < source.length(); ++i) {
  429. char ch = source.charAt(i);
  430. int index = startOffsets.elementAt(ch);
  431. if (ch >= HANGUL_BASE && ch < HANGUL_LIMIT) {
  432. hangulToJamo(ch, result);
  433. } else if (index >= limit) {
  434. result.append(ch);
  435. } else {
  436. while ((ch = contents.charAt(index++)) != 0x0000) {
  437. result.append(ch);
  438. }
  439. }
  440. }
  441. source.setLength(0);
  442. source.append(result.toString());
  443. }
  444. /**
  445. * Decomposes string into string
  446. * If the source can't be decomposed, return "".
  447. * @param source the string to be decomposed with
  448. * @param mode the decomposition mode
  449. * @return the decomposed string
  450. * @see java.text.Collator
  451. * @see java.text.Collator#getDecomposition
  452. * @see java.text.Collator#setDecomposition
  453. */
  454. static String decompose(String source, int mode) {
  455. if (mode == Collator.NO_DECOMPOSITION) {
  456. return source;
  457. }
  458. int limit = (mode == Collator.CANONICAL_DECOMPOSITION) ?
  459. maximumCanonical : SHORT_MAX_VALUE;
  460. StringBuffer result = new StringBuffer();
  461. for (int i = 0; i < source.length(); ++i) {
  462. char ch = source.charAt(i);
  463. int index = startOffsets.elementAt(ch);
  464. if (ch >= HANGUL_BASE && ch < HANGUL_LIMIT) {
  465. hangulToJamo(ch, result);
  466. } else if (index >= limit) {
  467. result.append(ch);
  468. } else {
  469. while ((ch = contents.charAt(index++)) != 0x0000) {
  470. result.append(ch);
  471. }
  472. }
  473. }
  474. return result.toString();
  475. }
  476. /**
  477. * Use to allocate array for using decompose in a tight loop.
  478. * @return the maximum decomposition result characters for output
  479. */
  480. static int getMaximumDecomposition() {
  481. return maximumDecomposition;
  482. }
  483. /**
  484. * Fixes the sorting sequence of non-spacing characters according to
  485. * their combining class. The algorithm is listed on p.3-11 in the
  486. * Unicode Standard 2.0. The table of combining classes is on p.4-2
  487. * in the Unicode Standard 2.0.
  488. * @param result the string to fix.
  489. */
  490. private static void fixCanonical(StringBuffer result) {
  491. int i = result.length() - 1;
  492. byte lastType;
  493. byte currentType = canonicals.elementAt(result.charAt(i));
  494. for (--i; i >= 0; --i) {
  495. lastType = currentType;
  496. currentType = canonicals.elementAt(result.charAt(i));
  497. // a swap is presumed to be rare (and a double-swap very rare),
  498. // so don't worry about efficiency here.
  499. if (currentType > lastType && lastType != BASE) {
  500. // swap characters
  501. char temp = result.charAt(i);
  502. result.setCharAt(i, result.charAt(i+1));
  503. result.setCharAt(i+1, temp);
  504. // if not at end, backup (one further, to compensate for for-loop)
  505. if (i < result.length() - 2)
  506. i += 2;
  507. // reset type, since we swapped.
  508. currentType = canonicals.elementAt(result.charAt(i));
  509. }
  510. }
  511. }
  512. //-----------------------------------------------------------
  513. // Hangul / Jamo conversion utilities for internal use
  514. // See section 3.10 of The Unicode Standard, v 2.0.
  515. //
  516. static private void hangulToJamo(char ch, StringBuffer result) {
  517. char sIndex = (char)(ch - HANGUL_BASE);
  518. char leading = (char)(JAMO_LBASE + sIndex / JAMO_NCOUNT);
  519. char vowel = (char)(JAMO_VBASE +
  520. (sIndex % JAMO_NCOUNT) / JAMO_TCOUNT);
  521. char trailing= (char)(JAMO_TBASE + (sIndex % JAMO_TCOUNT));
  522. result.append(leading);
  523. result.append(vowel);
  524. if (trailing != JAMO_TBASE) {
  525. result.append(trailing);
  526. }
  527. }
  528. static private void jamoToHangul(StringBuffer buffer) {
  529. int out = 0;
  530. int limit = buffer.length() - 1;
  531. int in, l, v, t;
  532. for (in = 0; in < limit; in++) {
  533. char ch = buffer.charAt(in);
  534. if ((l = ch - JAMO_LBASE) >= 0
  535. && l < JAMO_LCOUNT
  536. && (v = buffer.charAt(in+1) - JAMO_VBASE) >= 0
  537. && v < JAMO_VCOUNT) {
  538. //
  539. // We've found a pair of Jamo characters to compose.
  540. // Snarf the Jamo vowel and see if there's also a trailing char
  541. //
  542. in++; // Snarf the Jamo vowel too.
  543. t = (in < limit) ? buffer.charAt(in+1) : 0;
  544. t -= JAMO_TBASE;
  545. if (t >= 0 && t < JAMO_TCOUNT) {
  546. in++; // Snarf the trailing consonant too
  547. } else {
  548. t = 0; // No trailing consonant
  549. }
  550. buffer.setCharAt(out++, (char)((l*JAMO_VCOUNT + v) * JAMO_TCOUNT
  551. + t + HANGUL_BASE));
  552. } else {
  553. buffer.setCharAt(out++, ch);
  554. }
  555. }
  556. while (in < buffer.length()) {
  557. buffer.setCharAt(out++, buffer.charAt(in++));
  558. }
  559. buffer.setLength(out);
  560. }
  561. static final char HANGUL_BASE = 0xac00;
  562. static final char HANGUL_LIMIT = 0xd7a4;
  563. static final char JAMO_LBASE = 0x1100;
  564. static final char JAMO_VBASE = 0x1161;
  565. static final char JAMO_TBASE = 0x11a7;
  566. static final int JAMO_LCOUNT = 19;
  567. static final int JAMO_VCOUNT = 21;
  568. static final int JAMO_TCOUNT = 28;
  569. static final int JAMO_NCOUNT = JAMO_VCOUNT * JAMO_TCOUNT;
  570. //------------------------------------------------------------------------
  571. /**
  572. * An iterator over the pre-composed characters in Unicode,
  573. * excluding Hangul. The next() method returns each pre-composed character
  574. * in sequence, and the decomposition() method returns the corresponding
  575. * decomposition.
  576. */
  577. static class DecompIterator {
  578. DecompIterator(int mode) {
  579. switch (mode) {
  580. case Collator.FULL_DECOMPOSITION:
  581. decmpLimit = maximumDecomposition;
  582. break;
  583. case Collator.CANONICAL_DECOMPOSITION:
  584. decmpLimit = maximumCanonical;
  585. break;
  586. }
  587. }
  588. /**
  589. * Determine whether there is another pre-composed character for the
  590. * iterator to return.
  591. */
  592. boolean hasNext() {
  593. //
  594. // To determine whether there's another character to return, we
  595. // actually have to Find the next character that has a decomposition
  596. //
  597. while (nextChar == -1 && iter.hasNext()) {
  598. // Get the next character index in the compact array
  599. char c = iter.next();
  600. short index = iter.shortValue();
  601. if (index < decmpLimit) {
  602. nextChar = (short)c;
  603. buf.setLength(0);
  604. while((c = contents.charAt(index++)) != '\u0000') {
  605. buf.append(c);
  606. }
  607. }
  608. }
  609. return (nextChar != -1);
  610. }
  611. char next() {
  612. if (nextChar == -1 && !hasNext()) {
  613. throw new ArrayIndexOutOfBoundsException();
  614. }
  615. char n = (char)nextChar;
  616. nextChar = -1; // tell HasNext it needs to do its thing again
  617. return n;
  618. }
  619. String decomposition() {
  620. return buf.toString();
  621. }
  622. // Privates....
  623. private CompactShortArray.Iterator iter = startOffsets.getIterator();
  624. private StringBuffer buf = new StringBuffer();
  625. private int decmpLimit = -1;
  626. private short nextChar = -1;
  627. }
  628. static DecompIterator getDecompositions(int mode) {
  629. return new DecompIterator(mode);
  630. }
  631. //-----------------------------------------------------------
  632. // privates
  633. //-----------------------------------------------------------
  634. /* Instance variables */
  635. /* The source string being decomposed */
  636. private CharacterIterator str = null;
  637. // Do I own the iterator (true) or was it passed in?
  638. private transient boolean ownIterator = false;
  639. /* One of the decomposition mode values */
  640. private int decmpMode = 0;
  641. /* Decompose only for indices into the contents table that are less
  642. * than this value.
  643. */
  644. private int decmpLimit;
  645. /* a decomposed and canonicalized piece of the the source string */
  646. private StringBuffer parsedStr = null;
  647. private int pIndex = 0; // Index of last char returned
  648. private int pLimit = 0; // Index of last char in buffer, or 0 if unused
  649. //------------------------------------------------------------------------
  650. // Static data tables
  651. //------------------------------------------------------------------------
  652. //should be in Short class
  653. private static final short SHORT_MAX_VALUE = 32767;
  654. private static final char STERMINATOR = (char)0x0000;
  655. // BEGIN RUN-LENGTH ENCODED ARRAYS [LIU]
  656. // These arrays are encoded as String objects since statically initialized
  657. // arrays cost 6 instructions per element in the class file. The arrays are
  658. // decoded using methods in Utility.
  659. private static final short kOffsetIndex[] =
  660. Utility.RLEStringToShortArray(
  661. "\000\u0200\000a\u00E1\u0161\u01E1\u0231\u02A1\u031D\u039C\u0414\u048E"+
  662. "\u0507\uA5A5\006\u048E\u055E\u05BE\u061E\u048E\u067D\u06E9\u0736\u077F"+
  663. "\u07CB\u048E\u0818\u0865\u08C3\u0942\u048E\u048E\u09C1\u0A41\uA5A5\030"+
  664. "\u048E\u0AC1\u0B41\u0BC1\u0C41\u0CC1\u0D41\u0DBF\u048E\u0E3F\u0EBF\u0F2D"+
  665. "\u048E\u0F58\u0FCC\uA5A5\026\u048E\u104C\u10CA\u1149\u11C9\u1249\u12C9"+
  666. "\u1349\u13C9\uA5A5\u018E\u048E\u1449\u14C9\uA5A5\004\u048E\u1549\u15C9"+
  667. "\u1648\u16C8"
  668. );
  669. private static final short kOffsetValues[] =
  670. Utility.RLEStringToShortArray(
  671. "\000\u1748\uA5A5^\u7FFF\u0C80\u0C83\u0C86\uA5A5 \u7FFF\u0C89\uA5A5\007"+
  672. "\u7FFF\u0C8B\u7FFF\u0C8E\uA5A5\004\u7FFF\u0C90\u7FFF\u7FFF\u0C93\u0C95"+
  673. "\u0C97\u0C9A\u7FFF\u7FFF\u0C9C\u0C9F\u0CA1\u7FFF\u0CA3\u0CA7\u0CAB\u7FFF"+
  674. "\000\003\006\011\014\017\u7FFF\022\025\030\033\036!$'*\u7FFF-0369<\u7FFF"+
  675. "\u7FFF?BEHK\u7FFF\u7FFFNQTWZ]\u7FFF`cfilorux\u7FFF{~\u0081\u0084\u0087"+
  676. "\u008A\u7FFF\u7FFF\u008D\u0090\u0093\u0096\u0099\u7FFF\u009C\u009F\u00A2"+
  677. "\u00A5\u00A8\u00AB\u00AE\u00B1\u00B4\u00B7\u00BA\u00BD\u00C0\u00C3\u00C6"+
  678. "\u00C9\u00CC\u7FFF\u7FFF\u00CF\u00D2\u00D5\u00D8\u00DB\u00DE\u00E1\u00E4"+
  679. "\u00E7\u00EA\u00ED\u00F0\u00F3\u00F6\u00F9\u00FC\u00FF\u0102\u0105\u0108"+
  680. "\u7FFF\u7FFF\u010B\u010E\u0111\u0114\u0117\u011A\u011D\u0120\u0123\u7FFF"+
  681. "\u0CAF\u0CB2\u0126\u0129\u012C\u012F\u7FFF\u0132\u0135\u0138\u013B\u013E"+
  682. "\u0141\u0CB5\u0CB8\u7FFF\u7FFF\u0144\u0147\u014A\u014D\u0150\u0153\u0CBB"+
  683. "\u7FFF\u7FFF\u0156\u0159\u015C\u015F\u0162\u0165\u7FFF\u7FFF\u0168\u016B"+
  684. "\u016E\u0171\u0174\u0177\u017A\u017D\u0180\u0183\u0186\u0189\u018C\u018F"+
  685. "\u0192\u0195\u0198\u019B\u7FFF\u7FFF\u019E\u01A1\u01A4\u01A7\u01AA\u01AD"+
  686. "\u01B0\u01B3\u01B6\u01B9\u01BC\u01BF\u01C2\u01C5\u01C8\u01CB\u01CE\u01D1"+
  687. "\u01D4\u01D7\u01DA\u01DD\u01E0\u0CBE\uA5A5 \u7FFF\u01E3\u01E6\uA5A5\015"+
  688. "\u7FFF\u01E9\u01EC\uA5A5\023\u7FFF\u0CC0\u0CC4\u0CC8\u0CCC\u0CCF\u0CD2"+
  689. "\u0CD5\u0CD8\u0CDB\u01EF\u01F2\u01F5\u01F8\u01FB\u01FE\u0201\u0204\u0207"+
  690. "\u020B\u020F\u0213\u0217\u021B\u021F\u0223\u7FFF\u0227\u022B\u022F\u0233"+
  691. "\u0237\u023A\u7FFF\u7FFF\u023D\u0240\u0243\u0246\u0249\u024C\u024F\u0253"+
  692. "\u0257\u025A\u025D\u0CDE\u0CE1\u0CE4\u0260\u0263\uA5A5\004\u7FFF\u0266"+
  693. "\u026A\u026E\u0271\u0274\u0277\u027A\u027D\u0280\u0283\u0286\u0289\u028C"+
  694. "\u028F\u0292\u0295\u0298\u029B\u029E\u02A1\u02A4\u02A7\u02AA\u02AD\u02B0"+
  695. "\u02B3\u02B6\u02B9\u02BC\u02BF\uA5A5h\u7FFF\u0CE7\u0CE9\u0CEB\u0CED\u0CEF"+
  696. "\u0CF1\u0CF3\u0CF5\u0CF7\uA5A5\037\u7FFF\u0CF9\u0CFC\u0CFF\u0D02\u0D05"+
  697. "\u0D08\u7FFF\u7FFF\u0D0B\u0D0D\u0D0F\u0D11\u0D13\uA5A5\033\u7FFF\u02C2"+
  698. "\uA5A53\u7FFF\u02C5\uA5A5/\u7FFF\u02C8\uA5A5\005\u7FFF\u0D15\uA5A5\005"+
  699. "\u7FFF\u0D18\u0D1B\u02CD\u02D0\u02D2\u02D5\u02D8\u7FFF\u02DB\u7FFF\u02DE"+
  700. "\u02E1\u02E4\uA5A5\031\u7FFF\u02E8\u02EB\u02EE\u02F1\u02F4\u02F7\u02FA"+
  701. "\uA5A5\031\u7FFF\u02FE\u0301\u0304\u0307\u030A\uA5A5\004\u7FFF\u030D\u0310"+
  702. "\uA5A5+\u7FFF\u0313\u7FFF\u0316\u7FFF\u7FFF\u7FFF\u0319\uA5A5\004\u7FFF"+
  703. "\u031C\u7FFF\u031F\uA5A5\012\u7FFF\u0322\uA5A5\037\u7FFF\u0325\uA5A5\027"+
  704. "\u7FFF\u0328\u7FFF\u032B\u7FFF\u7FFF\u7FFF\u032E\uA5A5\004\u7FFF\u0331"+
  705. "\u7FFF\u0334\uA5A5\027\u7FFF\u0337\u033A\uA5A5A\u7FFF\u033D\u0340\uA5A5"+
  706. "\015\u7FFF\u0343\u0346\u0349\u034C\u034F\u0351\u0353\u0356\u0359\u035B"+
  707. "\u035D\u0360\u0363\u0366\u0369\u036C\u036F\u0371\u0373\u0376\u0379\u037C"+
  708. "\u037F\u0382\u0385\u0387\u0389\u038C\u7FFF\u7FFF\u038F\u0392\u0395\u0398"+
  709. "\u039B\u039E\u03A1\u03A4\u7FFF\u7FFF\u03A7\u03AA\uA5A5\u0080\u7FFF\u0D1F"+
  710. "\uA5A5x\u7FFF\u03AD\uA5A5\007\u7FFF\u03B0\u7FFF\u7FFF\u03B3\uA5A5#\u7FFF"+
  711. "\u03B6\u03B9\u03BC\u03BF\u03C2\u03C5\u03C8\u03CB\uA5A50\u7FFF\u03CE\uA5A5"+
  712. "\032\u7FFF\u03D1\u03D4\uA5A5\017\u7FFF\u03D7\u03DA\u7FFF\u03DD\uA5A5Y"+
  713. "\u7FFF\u03E0\u03E3\u03E6\u03E9\u7FFF\u03EC\uA5A5H\u7FFF\u03EF\u7FFF\u7FFF"+
  714. "\u03F2\u03F5\uA5A5\017\u7FFF\u03F8\u03FB\u7FFF\u03FE\uA5A5 \u7FFF\u0401"+
  715. "\uA5A55\u7FFF\u0404\u0407\u040A\uA5A5H\u7FFF\u040D\uA5A5@\u7FFF\u0410"+
  716. "\uA5A5\006\u7FFF\u0413\u0416\u7FFF\u0419\u041C\uA5A5J\u7FFF\u0420\u0423"+
  717. "\u0426\uA5A53\u7FFF\u0429\uA5A5L\u7FFF\u042C\uA5A5(\u7FFF\u0D22\u0D25"+
  718. "\uA5A5C\u7FFF\u042F\uA5A5\011\u7FFF\u0432\uA5A5\004\u7FFF\u0435\uA5A5"+
  719. "\004\u7FFF\u0438\uA5A5\004\u7FFF\u043B\uA5A5\014\u7FFF\u043E\uA5A5\011"+
  720. "\u7FFF\u0441\u7FFF\u0444\u0447\u044A\u044E\u0451\uA5A5\006\u7FFF\u0455"+
  721. "\uA5A5\021\u7FFF\u0458\uA5A5\011\u7FFF\u045B\uA5A5\004\u7FFF\u045E\uA5A5"+
  722. "\004\u7FFF\u0461\uA5A5\004\u7FFF\u0464\uA5A5\014\u7FFF\u0467\uA5A5F\u7FFF"+
  723. "\u0D28\u7FFF\u7FFF\u0D2B\u7FFF\u7FFF\u7FFF\u0D2E\u7FFF\u0D31\u7FFF\u7FFF"+
  724. "\u0D34\uA5A5\005\u7FFF\u0D37\u0D3A\u0D3D\u0D40\u0D43\u0D46\u0D49\u0D4C"+
  725. "\u0D4F\u0D52\u0D55\u0D58\u0D5B\u0D5E\u0D61\u0D64\u0D68\u0D6C\u0D70\u0D74"+
  726. "\u0D78\u0D7B\u0D7E\u0D81\u0D84\u0D87\u0D8B\u0D8E\u0D91\u0D94\u0D97\u0D9A"+
  727. "\u0D9D\u0DA1\u0DA5\u0DA8\u0DAB\u0DAE\u0DB1\u0DB4\u0DB7\u7FFF\u0DBA\u7FFF"+
  728. "\u0DBD\u7FFF\u0DC0\u0DC3\u0DC6\u0DC9\u0DCC\u0DCF\u0DD2\u0DD5\u0DD8\u0DDB"+
  729. "\u0DDE\u7FFF\u0DE1\u7FFF\u0DE4\u7FFF\u0DE7\u0DEA\u0DED\u7FFF\u7FFF\u0DF0"+
  730. "\u0DF3\u0DF6\uA5A5\011\u7FFF\u0DF9\u7FFF\u0DFC\u7FFF\u0DFF\u7FFF\u0E02"+
  731. "\u7FFF\u0E05\u0E08\u0E0C\u7FFF\u7FFF\u0E0F\u0E12\u0E16\u7FFF\u7FFF\u0E19"+
  732. "\u7FFF\u0E1C\u0E1F\u0E22\u0E25\u0E28\u0E2B\u0E2E\u0E31\u0E34\u0E37\u0E3A"+
  733. "\u0E3E\u0E42\u0E45\u0E48\u0E4B\u0E4F\u0E52\u0E55\u0E58\u0E5B\u0E5F\u0E63"+
  734. "\u0E67\u0E6A\u0E6D\u0E70\u0E74\u0E77\u0E7B\u0E7E\u0E81\u0E84\u0E87\u0E8B"+
  735. "\u0E8E\u0E91\u0E94\u0E97\u0E9A\u7FFF\u0E9D\u0EA0\u0EA3\u0EA6\uA5A5\006"+
  736. "\u7FFF\u0EA9\u0EAC\u7FFF\u0EAF\u0EB2\u7FFF\u7FFF\u0EB5\u0EB8\u0EBB\u0EBE"+
  737. "\u0EC1\u0EC4\u0EC7\u7FFF\u7FFF\u0ECA\u7FFF\u0ECD\uA5A5\007\u7FFF\u0ED0"+
  738. "\u0ED3\u0ED7\u0EDA\u0EDD\u0EE0\u0EE3\u0EE6\u0EE9\u0EEC\u0EF0\u0EF3\u0EF6"+
  739. "\u0EFA\u0EFD\u0F01\u0F05\u0F09\u0F0D\u0F11\u0F15\u0F18\u0F1B\u0F1E\u0F21"+
  740. "\u0F24\u0F27\u0F2A\u0F2E\u0F31\u0F34\u0F37\u0F3A\u0F3D\u0F40\u0F43\u0F46"+
  741. "\u0F49\u0F4C\u0F4F\u7FFF\u0F52\u0F55\u0F59\u0F5C\u7FFF\u0F5F\u0F62\u0F65"+
  742. "\u0F68\u0F6B\u0F6E\u0F71\u0F74\uA5A5\007\u7FFF\u046A\u046D\u0470\u0473"+
  743. "\u0476\u0479\u047C\u047F\u0482\u0486\u048A\u048D\u0490\u0493\u0496\u0499"+
  744. "\u049C\u049F\u04A2\u04A5\u04A8\u04AC\u04B0\u04B4\u04B8\u04BB\u04BE\u04C1"+
  745. "\u04C4\u04C8\u04CC\u04CF\u04D2\u04D5\u04D8\u04DB\u04DE\u04E1\u04E4\u04E7"+
  746. "\u04EA\u04ED\u04F0\u04F3\u04F6\u04F9\u04FC\u0500\u0504\u0507\u050A\u050D"+
  747. "\u0510\u0513\u0516\u0519\u051C\u0520\u0524\u0527\u052A\u052D\u0530\u0533"+
  748. "\u0536\u0539\u053C\u053F\u0542\u0545\u0548\u054B\u054E\u0551\u0554\u0557"+
  749. "\u055A\u055E\u0562\u0566\u056A\u056E\u0572\u0576\u057A\u057D\u0580\u0583"+
  750. "\u0586\u0589\u058C\u058F\u0592\u0596\u059A\u059D\u05A0\u05A3\u05A6\u05A9"+
  751. "\u05AC\u05B0\u05B4\u05B8\u05BC\u05C0\u05C4\u05C7\u05CA\u05CD\u05D0\u05D3"+
  752. "\u05D6\u05D9\u05DC\u05DF\u05E2\u05E5\u05E8\u05EB\u05EE\u05F2\u05F6\u05FA"+
  753. "\u05FE\u0601\u0604\u0607\u060A\u060D\u0610\u0613\u0616\u0619\u061C\u061F"+
  754. "\u0622\u0625\u0628\u062B\u062E\u0631\u0634\u0637\u063A\u063D\u0640\u0643"+
  755. "\u0646\u0649\u064C\u064F\u0652\u0655\u7FFF\u0F77\uA5A5\004\u7FFF\u065B"+
  756. "\u065E\u0661\u0664\u0667\u066B\u066F\u0673\u0677\u067B\u067F\u0683\u0687"+
  757. "\u068B\u068F\u0693\u0697\u069B\u069F\u06A3\u06A7\u06AB\u06AF\u06B3\u06B7"+
  758. "\u06BA\u06BD\u06C0\u06C3\u06C6\u06C9\u06CD\u06D1\u06D5\u06D9\u06DD\u06E1"+
  759. "\u06E5\u06E9\u06ED\u06F1\u06F4\u06F7\u06FA\u06FD\u0700\u0703\u0706\u0709"+
  760. "\u070D\u0711\u0715\u0719\u071D\u0721\u0725\u0729\u072D\u0731\u0735\u0739"+
  761. "\u073D\u0741\u0745\u0749\u074D\u0751\u0755\u0759\u075C\u075F\u0762\u0765"+
  762. "\u0769\u076D\u0771\u0775\u0779\u077D\u0781\u0785\u0789\u078D\u0790\u0793"+
  763. "\u0796\u0799\u079C\u079F\u07A2\uA5A5\006\u7FFF\u07A5\u07A8\u07AB\u07AF"+
  764. "\u07B3\u07B7\u07BB\u07BF\u07C3\u07C6\u07C9\u07CD\u07D1\u07D5\u07D9\u07DD"+
  765. "\u07E1\u07E4\u07E7\u07EB\u07EF\u07F3\u7FFF\u7FFF\u07F7\u07FA\u07FD\u0801"+
  766. "\u0805\u0809\u7FFF\u7FFF\u080D\u0810\u0813\u0817\u081B\u081F\u0823\u0827"+
  767. "\u082B\u082E\u0831\u0835\u0839\u083D\u0841\u0845\u0849\u084C\u084F\u0853"+
  768. "\u0857\u085B\u085F\u0863\u0867\u086A\u086D\u0871\u0875\u0879\u087D\u0881"+
  769. "\u0885\u0888\u088B\u088F\u0893\u0897\u7FFF\u7FFF\u089B\u089E\u08A1\u08A5"+
  770. "\u08A9\u08AD\u7FFF\u7FFF\u08B1\u08B4\u08B7\u08BB\u08BF\u08C3\u08C7\u08CB"+
  771. "\u7FFF\u08CF\u7FFF\u08D2\u7FFF\u08D6\u7FFF\u08DA\u08DE\u08E1\u08E4\u08E8"+
  772. "\u08EC\u08F0\u08F4\u08F8\u08FC\u08FF\u0902\u0906\u090A\u090E\u0912\u0916"+
  773. "\u091A\u091D\u0920\u0923\u0926\u0929\u092C\u092F\u0932\u0935\u0938\u093B"+
  774. "\u093E\u0941\u7FFF\u7FFF\u0944\u0948\u094C\u0951\u0956\u095B\u0960\u0965"+
  775. "\u096A\u096E\u0972\u0977\u097C\u0981\u0986\u098B\u0990\u0994\u0998\u099D"+
  776. "\u09A2\u09A7\u09AC\u09B1\u09B6\u09BA\u09BE\u09C3\u09C8\u09CD\u09D2\u09D7"+
  777. "\u09DC\u09E0\u09E4\u09E9\u09EE\u09F3\u09F8\u09FD\u0A02\u0A06\u0A0A\u0A0F"+
  778. "\u0A14\u0A19\u0A1E\u0A23\u0A28\u0A2B\u0A2E\u0A32\u0A35\u7FFF\u0A39\u0A3C"+
  779. "\u0A40\u0A43\u0A46\u0A49\u0A4C\u0F7A\u0A4F\u0F7D\u0F80\u0F83\u0A54\u0A58"+
  780. "\u0A5B\u7FFF\u0A5F\u0A62\u0A66\u0A69\u0A6C\u0A6F\u0A72\u0F87\u0F8B\u0F8F"+
  781. "\u0A7E\u0A81\u0A84\u0A88\u7FFF\u7FFF\u0A8C\u0A8F\u0A93\u0A96\u0A99\u0A9C"+
  782. "\u7FFF\u0F93\u0F97\u0F9B\u0AA8\u0AAB\u0AAE\u0AB2\u0AB6\u0AB9\u0ABC\u0ABF"+
  783. "\u0AC3\u0AC6\u0AC9\u0ACC\u0ACF\u0F9F\u0FA3\u0FA7\u7FFF\u7FFF\u0AD8\u0ADC"+
  784. "\u0ADF\u7FFF\u0AE3\u0AE6\u0AEA\u0AED\u0AF0\u0AF3\u0AF6\u0FAA\u0FAD\u7FFF"+
  785. "\u0FB0\u0FB2\u0FB4\u0FB6\u0FB8\u0FBA\u0FBC\u0FBE\u0FC0\u0FC2\u0FC4\uA5A5"+
  786. "\006\u7FFF\u0FC6\uA5A5\005\u7FFF\u0FC8\uA5A5\014\u7FFF\u0FCB\u0FCD\u0FD0"+
  787. "\uA5A5\014\u7FFF\u0FD4\u0FD7\u7FFF\u0FDB\u0FDE\uA5A5\004\u7FFF\u0FE2\u7FFF"+
  788. "\u0FE5\uA5A51\u7FFF\u0FE8\u7FFF\u7FFF\u7FFF\u0FEA\u0FEC\u0FEE\u0FF0\u0FF2"+
  789. "\u0FF4\u0FF6\u0FF8\u0FFA\u0FFC\u0FFE\u1000\u1002\u1004\u1006\u1008\u100A"+
  790. "\u100C\u100E\u1010\u1012\u1014\u1016\u1018\u101A\u101C\u101E\uA5A5\024"+
  791. "\u7FFF\u1DA2\uA5A5\004\u7FFF\u1020\uA5A5W\u7FFF\u1023\u1025\u7FFF\u7FFF"+
  792. "\u7FFF\u1028\u7FFF\u102A\u102D\u102F\u1031\u1033\u1035\u1037\u1039\u103B"+
  793. "\u103D\u103F\u7FFF\u1041\u1043\u7FFF\u1046\u1048\u104A\u104C\u104E\u1050"+
  794. "\u7FFF\u7FFF\u1052\u1055\u1059\u7FFF\u105C\u7FFF\u0AFF\u7FFF\u105E\u7FFF"+
  795. "\u0B01\u0B03\u1060\u1062\u7FFF\u1064\u1066\u1068\u7FFF\u106A\u106C\u106E"+
  796. "\u1070\u1072\u1074\uA5A5\032\u7FFF\u1076\u107A\u107E\u1082\u1086\u108A"+
  797. "\u108E\u1092\u1096\u109A\u109E\u10A2\u10A6\u10A9\u10AB\u10AE\u10B2\u10B5"+
  798. "\u10B7\u10BA\u10BE\u10C3\u10C6\u10C8\u10CB\u10CF\u10D1\u10D3\u10D5\u10D7"+
  799. "\u10D9\u10DC\u10E0\u10E3\u10E5\u10E8\u10EC\u10F1\u10F4\u10F6\u10F9\u10FD"+
  800. "\u10FF\u1101\u1103\uA5A5\004\u7FFF\u0B06\uA5A5\004\u7FFF\u0B09\u7FFF\u7FFF"+
  801. "\u0B0C\uA5A5\027\u7FFF\u0B0F\u7FFF\u0B12\uA5A5\005\u7FFF\u1105\u1108\u7FFF"+
  802. "\u110C\u110F\uA5A5\023\u7FFF\u0B15\u7FFF\u7FFF\u0B18\u7FFF\u0B1B\uA5A5"+
  803. "\030\u7FFF\u0B1E\uA5A5\012\u7FFF\u0B21\u7FFF\u7FFF\u0B24\u0B27\u7FFF\u7FFF"+
  804. "\u0B2A\u0B2D\u7FFF\u7FFF\u0B30\u0B33\uA5A5\006\u7FFF\u0B36\u0B39\u7FFF"+
  805. "\u7FFF\u0B3C\u0B3F\u7FFF\u7FFF\u0B42\u0B45\uA5A5\042\u7FFF\u0B48\u0B4B"+
  806. "\u0B4E\u0B51\uA5A50\u7FFF\u0B54\u0B57\u0B5A\u0B5D\uA5A5\006\u7FFF\u0B60"+
  807. "\u0B63\u0B66\u0B69\uA5A5)\u7FFF\u0B6C\u0B6E\uA5A5`\u7FFF\u1113\u1115\u1117"+
  808. "\u1119\u111B\u111D\u111F\u1121\u1123\u1125\u1127\u112A\u112D\u1130\u1133"+
  809. "\u1136\u1139\u113C\u113F\u1142\uA5A56\u7FFF\u1145\u1147\u1149\u114B\u114D"+
  810. "\u114F\u1151\u1153\u1155\u1157\u1159\u115B\u115D\u115F\u1161\u1163\u1165"+
  811. "\u1167\u1169\u116B\u116D\u116F\u1171\u1173\u1175\u1177\u1179\u117B\u117D"+
  812. "\u117F\u1181\u1183\u1185\u1187\u1189\u118B\u118D\u118F\u1191\u1193\u1195"+
  813. "\u1197\u1199\u119B\u119D\u119F\u11A1\u11A3\u11A5\u11A7\u11A9\u11AB\u11AD"+
  814. "\uA5A5\025\u7FFF\u11AF\uA5A55\u7FFF\u11B1\uA5A5\025\u7FFF\u0B70\u7FFF"+
  815. "\u0B73\u7FFF\u0B76\u7FFF\u0B79\u7FFF\u0B7C\u7FFF\u0B7F\u7FFF\u0B82\u7FFF"+
  816. "\u0B85\u7FFF\u0B88\u7FFF\u0B8B\u7FFF\u0B8E\u7FFF\u0B91\u7FFF\u7FFF\u0B94"+
  817. "\u7FFF\u0B97\u7FFF\u0B9A\uA5A5\006\u7FFF\u0B9D\u0BA0\u7FFF\u0BA3\u0BA6"+
  818. "\u7FFF\u0BA9\u0BAC\u7FFF\u0BAF\u0BB2\u7FFF\u0BB5\u0BB8\uA5A5\024\u7FFF"+
  819. "\u0BBB\uA5A5\006\u7FFF\u11B3\u11B6\u7FFF\u0BBE\uA5A5\015\u7FFF\u0BC1\u7FFF"+
  820. "\u0BC4\u7FFF\u0BC7\u7FFF\u0BCA\u7FFF\u0BCD\u7FFF\u0BD0\u7FFF\u0BD3\u7FFF"+
  821. "\u0BD6\u7FFF\u0BD9\u7FFF\u0BDC\u7FFF\u0BDF\u7FFF\u0BE2\u7FFF\u7FFF\u0BE5"+
  822. "\u7FFF\u0BE8\u7FFF\u0BEB\uA5A5\006\u7FFF\u0BEE\u0BF1\u7FFF\u0BF4\u0BF7"+
  823. "\u7FFF\u0BFA\u0BFD\u7FFF\u0C00\u0C03\u7FFF\u0C06\u0C09\uA5A5\026\u7FFF"+
  824. "\u0C0C\u7FFF\u7FFF\u0C0F\u0C12\u0C15\u0C18\u7FFF\u7FFF\u7FFF\u0C1B\uA5A5"+
  825. "1\u7FFF\u11B9\u11BB\u11BE\u11C1\u11C3\u11C6\u11C9\u11CB\u11CE\u11D0\u11D3"+
  826. "\u11D6\u11D9\u11DC\u11DF\u11E2\u11E5\u11E7\u11E9\u11EC\u11EF\u11F1\u11F4"+
  827. "\u11F6\u11F8\u11FB\u11FD\u11FF\u1201\u1203\u1205\u1207\u120A\u120C\u120F"+
  828. "\u1211\u1214\u1216\u1219\u121B\u121E\u1222\u1225\u1227\u1229\u122C\u1230"+
  829. "\u1233\u1235\u1237\u123A\u123C\u123E\u1241\u1244\u1247\u124A\u124E\u1251"+
  830. "\u1255\u1258\u125B\u125E\u1261\u1264\u1267\u126A\u126D\u1271\u1275\u1278"+
  831. "\u127B\u127E\u1282\u1285\u1288\u128B\u128E\u1291\u1293\u1296\u1298\u129B"+
  832. "\u129E\u12A1\u12A4\u12A6\u12A9\u12AD\u12B0\u12B3\u12B7\u12BA\u12BC\u7FFF"+
  833. "\u7FFF\u7FFF\u12BF\u12C1\u12C3\u12C5\u12C7\u12C9\u12CB\u12CD\u12CF\u12D1"+
  834. "\u12D3\u12D5\u12D7\u12D9\uA5A5`\u7FFF\u12DB\u12DF\u12E3\u12E7\u12EB\u12EF"+
  835. "\u12F3\u12F7\u12FB\u12FF\u1303\u1307\u130B\u130F\u1313\u1318\u131D\u1322"+
  836. "\u1327\u132C\u1331\u1336\u133B\u1340\u1345\u134A\u134F\u1354\u1359\u7FFF"+
  837. "\u7FFF\u7FFF\u135E\u1362\u1366\u136A\u136E\u1372\u1376\u137A\u137E\u1382"+
  838. "\u1386\u138A\u138E\u1392\u1396\u139A\u139E\u13A2\u13A6\u13AA\u13AE\u13B2"+
  839. "\u13B6\u13BA\u13BE\u13C2\u13C6\u13CA\u13CE\u13D2\u13D6\u13DA\u13DE\u13E2"+
  840. "\u13E6\u13EA\uA5A5\034\u7FFF\u13EE\u13F0\u13F2\u13F4\u13F6\u13F8\u13FA"+
  841. "\u13FC\u13FE\u1400\u1402\u1404\u1406\u1408\u140A\u140D\u1410\u1413\u1416"+
  842. "\u1419\u141C\u141F\u1422\u1425\u1428\u142B\u142E\u1431\uA5A5\004\u7FFF"+
  843. "\u1434\u1436\u1438\u143A\u143C\u143E\u1440\u1442\u1444\u1446\u1448\u144A"+
  844. "\u144C\u144E\u1450\u1452\u1454\u1456\u1458\u145A\u145C\u145E\u1460\u1462"+
  845. "\u1464\u1466\u1468\u146A\u146C\u146E\u1470\u1472\u1474\u1476\u1478\u147A"+
  846. "\u147C\u147E\u1480\u1482\u1484\u1486\u1488\u148A\u148C\u148E\u1490\u1492"+
  847. "\u1494\uA5A5\017\u7FFF\u1496\u1499\u149C\u149F\u14A2\u14A5\u14A8\u14AB"+
  848. "\u14AE\u14B1\u14B5\u14B9\uA5A5\004\u7FFF\u14BD\u14BF\u14C1\u14C3\u14C5"+
  849. "\u14C7\u14C9\u14CB\u14CD\u14CF\u14D1\u14D3\u14D5\u14D7\u14D9\u14DB\u14DD"+
  850. "\u14DF\u14E1\u14E3\u14E5\u14E7\u14E9\u14EB\u14ED\u14EF\u14F1\u14F3\u14F5"+
  851. "\u14F7\u14F9\u14FB\u14FD\u14FF\u1501\u1503\u1505\u1507\u1509\u150B\u150D"+
  852. "\u150F\u1511\u1513\u1515\u1517\u1519\u7FFF\u151B\u1521\u1526\u152C\u1530"+
  853. "\u1536\u153A\u153E\u1545\u154A\u154E\u1552\u1556\u155B\u1560\u1565\u156A"+
  854. "\u156F\u1574\u1579\u1580\u1583\u158A\u1591\u1597\u159C\u15A3\u15AA\u15AF"+
  855. "\u15B3\u15B7\u15BC\u15C1\u15C7\u15CD\u15D1\u15D5\u15DA\u15DE\u15E2\u15E5"+
  856. "\u15E8\u15EC\u15F0\u15F7\u15FC\u1602\u1609\u160E\u1612\u1616\u161D\u1622"+
  857. "\u1629\u162D\u1633\u1637\u163C\u1640\u1645\u164B\u1650\u1656\u165B\u165E"+
  858. "\u1664\u1668\u166C\u1671\u1675\u1679\u167D\u1683\u1688\u168B\u1692\u1696"+
  859. "\u169C\u16A1\u16A6\u16AA\u16AE\u16B3\u16B6\u16BB\u16C1\u16C4\u16CB\u16CF"+
  860. "\u16D2\u16D5\u16D8\u16DB\u16DE\u16E1\u16E4\u16E7\u16EA\u16ED\u16F1\u16F5"+
  861. "\u16F9\u16FD\u1701\u1705\u1709\u170D\u1711\u1715\u1719\u171D\u1721\u1725"+
  862. "\u1729\u172D\u1730\u1733\u1737\u173A\uA5A5\004\u7FFF\u173D\u1740\u1743"+
  863. "\u1746\u1749\u174E\u1751\u1754\u1757\u175A\u175D\u1760\u1763\u1766\u176A"+
  864. "\u176F\u1772\u1775\u1778\u177B\u177E\u1781\u1784\u1788\u178C\u1790\u1794"+
  865. "\u1797\u179A\u179D\u17A0\u17A3\u17A6\u17A9\u17AC\u17AF\u17B2\u17B6\u17BA"+
  866. "\u17BD\u17C1\u17C5\u17C9\u17CC\u17D0\u17D4\u17D9\u17DC\u17E0\u17E4\u17E8"+
  867. "\u17EC\u17F2\u17F9\u17FC\u17FF\u1802\u1805\u1808\u180B\u180E\u1811\u1814"+
  868. "\u1817\u181A\u181D\u1820\u1823\u1826\u1829\u182C\u182F\u1834\u1837\u183A"+
  869. "\u183D\u1842\u1846\u1849\u184C\u184F\u1852\u1855\u1858\u185B\u185E\u1861"+
  870. "\u1864\u1868\u186B\u186E\u1872\u1876\u1879\u187E\u1882\u1885\u1888\u188B"+
  871. "\u7FFF\u7FFF\u188E\u1891\u1894\u1897\u189A\u189D\u18A0\u18A3\u18A6\u18A9"+
  872. "\u18AD\u18B1\u18B5\u18B9\u18BD\u18C1\u18C5\u18C9\u18CD\u18D1\u18D5\u18D9"+
  873. "\u18DD\u18E1\u18E5\u18E9\u18ED\u18F1\u18F5\u18F9\u18FD\u7FFF\u1901\u1904"+
  874. "\u1907\u190A\u190E\u1912\u1915\uA5A5\014\u7FFF\u1918\u191B\u191E\u1921"+
  875. "\u1924\uA5A5\007\u7FFF\u1927\u192A\u192C\u192E\u1930\u1932\u1934\u1936"+
  876. "\u1938\u193A\u193C\u0C1E\u0C21\u0C24\u0C28\u0C2C\u0C2F\u0C32\u0C35\u0C38"+
  877. "\u0C3B\u0C3E\u0C41\u0C44\u7FFF\u0C47\u0C4A\u0C4D\u0C50\u0C53\u7FFF\u0C56"+
  878. "\u7FFF\u0C59\u0C5C\u7FFF\u0C5F\u0C62\u7FFF\u0C65\u0C68\u0C6B\u0C6E\u0C71"+
  879. "\u0C74\u0C77\u0C7A\u0C7D\u193E\u1941\u1943\u1945\u1947\u1949\u194B\u194D"+
  880. "\u194F\u1951\u1953\u1955\u1957\u1959\u195B\u195D\u195F\u1961\u1963\u1965"+
  881. "\u1967\u1969\u196B\u196D\u196F\u1971\u1973\u1975\u1977\u1979\u197B\u197D"+
  882. "\u197F\u1981\u1983\u1985\u1987\u1989\u198B\u198D\u198F\u1991\u1993\u1995"+
  883. "\u1997\u1999\u199B\u199D\u199F\u19A1\u19A3\u19A5\u19A7\u19A9\u19AB\u19AD"+
  884. "\u19AF\u19B1\u19B3\u19B5\u19B7\u19B9\u19BB\u19BD\u19BF\u19C1\u19C3\u19C5"+
  885. "\u19C7\u19C9\u19CB\u19CD\u19CF\u19D1\u19D3\u19D5\u19D7\u19D9\u19DB\u19DD"+
  886. "\u19DF\u19E1\u19E3\u19E5\u19E7\u19E9\u19EB\u19ED\u19EF\u19F1\u19F3\u19F5"+
  887. "\u19F7\u19F9\u19FB\u19FD\u19FF\u1A01\u1A03\uA5A5!\u7FFF\u1A05\u1A07\u1A09"+
  888. "\u1A0B\u1A0D\u1A0F\u1A11\u1A13\u1A15\u1A17\u1A19\u1A1B\u1A1D\u1A1F\u1A21"+
  889. "\u1A23\u1A25\u1A27\u1A29\u1A2B\u1A2D\uA5A5\024\u7FFF\u1A2F\u1A31\u1A33"+
  890. "\u1A35\uA5A50\u7FFF\u1A37\u1A3A\u1A3C\u1A3E\u1A41\u1A44\u1A46\u1A48\u1A4A"+
  891. "\u1A4C\u1A4E\u1A50\u1A52\u1A54\u1A56\u1A58\u1A5A\u1A5C\u1A5E\u1A60\u1A62"+
  892. "\uA5A5\004\u7FFF\u1A64\u1A67\u1A6A\u1A6D\u1A70\u1A73\u1A76\u1A79\u1A7B"+
  893. "\u1A7D\u7FFF\u1A7F\u1A81\u1A83\u1A85\u1A87\u1A89\u1A8B\u1A8D\u1A8F\u1A91"+
  894. "\u1A93\u1A95\u1A97\u1A99\u1A9B\u1A9D\u1A9F\u1AA1\u1AA3\u7FFF\u1AA5\u1AA7"+
  895. "\u1AA9\u1AAB\uA5A5\004\u7FFF\u1AAD\u1AB0\u1AB3\u7FFF\u1AB6\u7FFF\u1AB9"+
  896. "\u1ABC\u1ABF\u1AC2\u1AC5\u1AC8\u1ACB\u1ACE\u1AD1\u1AD4\u1AD7\u1AD9\u1ADB"+
  897. "\u1ADD\u1ADF\u1AE1\u1AE3\u1AE5\u1AE7\u1AE9\u1AEB\u1AED\u1AEF\u1AF1\u1AF3"+
  898. "\u1AF5\u1AF7\u1AF9\u1AFB\u1AFD\u1AFF\u1B01\u1B03\u1B05\u1B07\u1B09\u1B0B"+
  899. "\u1B0D\u1B0F\u1B11\u1B13\u1B15\u1B17\u1B19\u1B1B\u1B1D\u1B1F\u1B21\u1B23"+
  900. "\u1B25\u1B27\u1B29\u1B2B\u1B2D\u1B2F\u1B31\u1B33\u1B35\u1B37\u1B39\u1B3B"+
  901. "\u1B3D\u1B3F\u1B41\u1B43\u1B45\u1B47\u1B49\u1B4B\u1B4D\u1B4F\u1B51\u1B53"+
  902. "\u1B55\u1B57\u1B59\u1B5B\u1B5D\u1B5F\u1B61\u1B63\u1B65\u1B67\u1B69\u1B6B"+
  903. "\u1B6D\u1B6F\u1B71\u1B73\u1B75\u1B77\u1B79\u1B7B\u1B7D\u1B7F\u1B81\u1B83"+
  904. "\u1B85\u1B87\u1B89\u1B8B\u1B8D\u1B8F\u1B91\u1B93\u1B95\u1B97\u1B99\u1B9B"+
  905. "\u1B9D\u1B9F\u1BA1\u1BA3\u1BA5\u1BA7\u1BA9\u1BAB\u1BAD\u1BAF\u1BB1\u1BB3"+
  906. "\u1BB5\u1BB7\u1BB9\u1BBB\u1BBD\u1BBF\uA5A5\013\u7FFF\u1BC1\u1BC3\u1BC5"+
  907. "\u1BC7\u1BC9\u1BCB\u1BCD\u1BCF\u1BD1\u1BD3\u1BD5\u1BD7\u1BD9\u1BDB\u1BDD"+
  908. "\u1BDF\u1BE1\u1BE3\u1BE5\u1BE7\u1BE9\u1BEB\u1BED\u1BEF\u1BF1\u1BF3\u1BF5"+
  909. "\u1BF7\u1BF9\u1BFB\u1BFD\u1BFF\u1C01\u1C03\u1C05\u1C07\u1C09\u1C0B\u1C0D"+
  910. "\u1C0F\u1C11\u1C13\u1C15\u1C17\u1C19\u1C1B\u1C1D\u1C1F\u1C21\u1C23\u1C25"+
  911. "\u1C27\u1C29\u1C2B\u1C2D\u1C2F\u1C31\u1C33\u1C35\u1C37\u1C39\u1C3B\u1C3E"+
  912. "\u1C41\u1C44\u1C46\u1C48\u1C4A\u1C4C\u1C4E\u1C50\u1C52\u1C54\u1C56\u1C58"+
  913. "\u1C5A\u1C5C\u1C5E\u1C60\u1C62\u1C64\u1C66\u1C68\u1C6A\u1C6C\u1C6E\u1C70"+
  914. "\u1C72\u1C74\u1C76\u1C78\u1C7A\u1C7C\u1C7E\u7FFF\u7FFF\u1C80\u1C82\u1C84"+
  915. "\u1C86\u1C88\u1C8A\u1C8C\u1C8E\u1C90\u1C92\u1C94\u1C96\u1C98\u1C9A\u1C9C"+
  916. "\u1C9E\u1CA0\u1CA2\u1CA4\u1CA6\u1CA8\u1CAA\u1CAC\u1CAE\u1CB0\u1CB2\u1CB4"+
  917. "\u1CB6\u1CB8\u1CBA\u1CBC\u1CBE\u1CC0\u1CC2\u1CC4\u1CC6\u1CC8\u1CCA\u1CCC"+
  918. "\u1CCE\u1CD0\u1CD2\u1CD4\u1CD6\u1CD8\u1CDA\u1CDC\u1CDE\u1CE0\u1CE2\u1CE4"+
  919. "\u1CE6\u1CE8\u1CEA\u1CEC\u1CEE\u1CF0\u1CF2\u1CF4\u1CF6\u1CF8\u1CFA\u1CFD"+
  920. "\u1D00\u1D02\u1D04\u1D07\u1D0A\u1D0C\u1D0F\u1D12\u1D14\u1D17\u1D19\u1D1C"+
  921. "\u1D1F\u1D22\u1D25\u1D28\u1D2B\u1D2E\u1D30\u1D32\u1D35\u1D38\u1D3A\u1D3D"+
  922. "\u1D3F\u1D41\u1D44\u1D46\u1D48\u1D4A\u1D4C\u7FFF\u7FFF\u7FFF\u1D4E\u1D50"+
  923. "\u1D53\u1D55\u1D58\u1D5A\u7FFF\u7FFF\u1D5D\u1D5F\u1D62\u1D64\u1D67\u1D6B"+
  924. "\u7FFF\u7FFF\u1D6E\u1D70\u1D72\u1D75\u1D79\u1D7C\u7FFF\u7FFF\u1D7E\u1D80"+
  925. "\u1D83\u7FFF\u7FFF\u7FFF\u1D85\u1D87\u1D89\u1D8B\u1D8E\u1D90\u1D92\u7FFF"+
  926. "\u1D94\u1D96\u1D98\u1D9A\u1D9C\u1D9E\u1DA0\uA5A5\021\u7FFF"
  927. );
  928. private static final short kCanonicalIndex[] =
  929. Utility.RLEStringToShortArray(
  930. "\000\u0200\uA5A5\006\000\u0080\000\000\u00FD\000\u016C\u01B1\u0222\uA5A5"+
  931. "\004\000\u02A1\u0320\u039E\u041D\u049C\u04F3\u0541\u0598\u05E6\000\u0635"+
  932. "\u0684\u06EC\u076C\uA5A5!\000\u07A6\uA5A5\036\000\u0808\u086F\uA5A5\u0194"+
  933. "\000\u08D1\uA5A5\005\000\u0931\000\000\000"
  934. );
  935. private static final byte kCanonicalValues[] =
  936. Utility.RLEStringToByteArray(
  937. "\000\u09B1\uA580\u80A5\u1566\u68A5\u045C\u6858\uA505\u5C4A\u4AA5\u045C"+
  938. "\u4A4A\uA50B\u5CA5\u0581\uA504\u5CA5\u0866\u5CA5\u1A80\u6A6A\uA51E\u80A5"+
  939. "\u0466\uA579\u805C\uA504\u665C\u6666\u665E\u5CA5\u0666\u80A5\u055C\u6666"+
  940. "\u5C66\u665E\u6666\u8A8B\u8C8D\u8E8F\u9091\u9293\u8094\u9596\u8097\u8098"+
  941. "\u9980\u66A5\u4B80\u9B9C\u9D9E\u9FA0\uA1A2\uA51D\u80A3\uA556\u80A5\u0766"+
  942. "\u8080\uA504\u665C\u6680\u8066\u6680\u5C66\u665C\uA512\u80A5\uA5A4\uA539"+
  943. "\u8087\uA504\u80A6\uA7A8\uA9AA\uABAC\uADA5\u0480\u8980\u8080\uAEAF\u6666"+
  944. "\uA50D\u80B0\uB1A5\u1C80\uB2A5\u3A80\u87A5\u0480\uB3B4\uB5B6\uA508\u8089"+
  945. "\uA514\u80B7\uB8A5\u1C80\uB9A5\u3980\u87A5\u0480\uBABB\uA504\u80BC\uBD80"+
  946. "\u80BE\uBF89\uA522\u80C0\uC1A5\u0E80\uC3C2\uA539\u8087\uA504\u80C4\uC5C6"+
  947. "\uC7C8\u80C9\uCAA5\u0480\u89A5\u3280\uCBA5\u3A80\u8780\u80CC\u80CD\uCECF"+
  948. "\uA509\u8089\uA508\u8066\uA540\u80D0\uA50C\u8089\uA53E\u80D1\uD2D3\uA505"+
  949. "\u80D4\uD5D6\u80D7\uD8D9\u89A5\u0780\uDADB\uA53F\u80DC\uA506\u80DD\uA505"+
  950. "\u80DE\u89A5\u4180\uDFE0\uE1A5\u0980\u89A5\u3280\uE280\u80E3\uE4E5\uE6E7"+
  951. "\uE8E9\uA50C\u80EA\uEBEC\uEDEE\uEFF0\u00A5\u3180\uF180\u80F2\uF3F4\uF5F6"+
  952. "\uF780\uF8F9\uA50B\u80FA\uFBFC\uFDFE\uFFA5\u3280\u5C5C\uA51B\u8066\u8066"+
  953. "\u8058\uA504\u805C\u5CA5\u3180\u0102\u0304\u0506\u0708\u090A\u0B0C\u0D0E"+
  954. "\u800F\u1066\u6689\u80A5\u0666\uA504\u80A5\u0686\u8086\u80A5\u1586\u8080"+
  955. "\u80A5\u0786\u8086\uA550\u8066\u6681\u81A5\u0466\u8181\u8166\u66A5\u0480"+
  956. "\u81A5\u2A80\u5A64\u685E\u6060\uA550\u8088\u88A5\u6580\u9AA5\u6180\uA504"+
  957. "\u66A5\u5C80"
  958. );
  959. // END RUN-LENGTH ENCODED ARRAYS [LIU]
  960. // START OF GENERATED CODE
  961. private static String contents =
  962. "\u0041\u0300\u0000\u0041\u0301\u0000\u0041\u0302\u0000\u0041" +
  963. "\u0303\u0000\u0041\u0308\u0000\u0041\u030a\u0000\u0043\u0327" +
  964. "\u0000\u0045\u0300\u0000\u0045\u0301\u0000\u0045\u0302\u0000" +
  965. "\u0045\u0308\u0000\u0049\u0300\u0000\u0049\u0301\u0000\u0049" +
  966. "\u0302\u0000\u0049\u0308\u0000\u004e\u0303\u0000\u004f\u0300" +
  967. "\u0000\u004f\u0301\u0000\u004f\u0302\u0000\u004f\u0303\u0000" +
  968. "\u004f\u0308\u0000\u0055\u0300\u0000\u0055\u0301\u0000\u0055" +
  969. "\u0302\u0000\u0055\u0308\u0000\u0059\u0301\u0000\u0061\u0300" +
  970. "\u0000\u0061\u0301\u0000\u0061\u0302\u0000\u0061\u0303\u0000" +
  971. "\u0061\u0308\u0000\u0061\u030a\u0000\u0063\u0327\u0000\u0065" +
  972. "\u0300\u0000\u0065\u0301\u0000\u0065\u0302\u0000\u0065\u0308" +
  973. "\u0000\u0069\u0300\u0000\u0069\u0301\u0000\u0069\u0302\u0000" +
  974. "\u0069\u0308\u0000\u006e\u0303\u0000\u006f\u0300\u0000\u006f" +
  975. "\u0301\u0000\u006f\u0302\u0000\u006f\u0303\u0000\u006f\u0308" +
  976. "\u0000\u0075\u0300\u0000\u0075\u0301\u0000\u0075\u0302\u0000" +
  977. "\u0075\u0308\u0000\u0079\u0301\u0000\u0079\u0308\u0000\u0041" +
  978. "\u0304\u0000\u0061\u0304\u0000\u0041\u0306\u0000\u0061\u0306" +
  979. "\u0000\u0041\u0328\u0000\u0061\u0328\u0000\u0043\u0301\u0000" +
  980. "\u0063\u0301\u0000\u0043\u0302\u0000\u0063\u0302\u0000\u0043" +
  981. "\u0307\u0000\u0063\u0307\u0000\u0043\u030c\u0000\u0063\u030c" +
  982. "\u0000\u0044\u030c\u0000\u0064\u030c\u0000\u0045\u0304\u0000" +
  983. "\u0065\u0304\u0000\u0045\u0306\u0000\u0065\u0306\u0000\u0045" +
  984. "\u0307\u0000\u0065\u0307\u0000\u0045\u0328\u0000\u0065\u0328" +
  985. "\u0000\u0045\u030c\u0000\u0065\u030c\u0000\u0047\u0302\u0000" +
  986. "\u0067\u0302\u0000\u0047\u0306\u0000\u0067\u0306\u0000\u0047" +
  987. "\u0307\u0000\u0067\u0307\u0000\u0047\u0327\u0000\u0067\u0327" +
  988. "\u0000\u0048\u0302\u0000\u0068\u0302\u0000\u0049\u0303\u0000" +
  989. "\u0069\u0303\u0000\u0049\u0304\u0000\u0069\u0304\u0000\u0049" +
  990. "\u0306\u0000\u0069\u0306\u0000\u0049\u0328\u0000\u0069\u0328" +
  991. "\u0000\u0049\u0307\u0000\u004a\u0302\u0000\u006a\u0302\u0000" +
  992. "\u004b\u0327\u0000\u006b\u0327\u0000\u004c\u0301\u0000\u006c" +
  993. "\u0301\u0000\u004c\u0327\u0000\u006c\u0327\u0000\u004c\u030c" +
  994. "\u0000\u006c\u030c\u0000\u004e\u0301\u0000\u006e\u0301\u0000" +
  995. "\u004e\u0327\u0000\u006e\u0327\u0000\u004e\u030c\u0000\u006e" +
  996. "\u030c\u0000\u004f\u0304\u0000\u006f\u0304\u0000\u004f\u0306" +
  997. "\u0000\u006f\u0306\u0000\u004f\u030b\u0000\u006f\u030b\u0000" +
  998. "\u0052\u0301\u0000\u0072\u0301\u0000\u0052\u0327\u0000\u0072" +
  999. "\u0327\u0000\u0052\u030c\u0000\u0072\u030c\u0000\u0053\u0301" +
  1000. "\u0000\u0073\u0301\u0000\u0053\u0302\u0000\u0073\u0302\u0000" +
  1001. "\u0053\u0327\u0000\u0073\u0327\u0000\u0053\u030c\u0000\u0073" +
  1002. "\u030c\u0000\u0054\u0327\u0000\u0074\u0327\u0000\u0054\u030c" +
  1003. "\u0000\u0074\u030c\u0000\u0055\u0303\u0000\u0075\u0303\u0000" +
  1004. "\u0055\u0304\u0000\u0075\u0304\u0000\u0055\u0306\u0000\u0075" +
  1005. "\u0306\u0000\u0055\u030a\u0000\u0075\u030a\u0000\u0055\u030b" +
  1006. "\u0000\u0075\u030b\u0000\u0055\u0328\u0000\u0075\u0328\u0000" +
  1007. "\u0057\u0302\u0000\u0077\u0302\u0000\u0059\u0302\u0000\u0079" +
  1008. "\u0302\u0000\u0059\u0308\u0000\u005a\u0301\u0000\u007a\u0301" +
  1009. "\u0000\u005a\u0307\u0000\u007a\u0307\u0000\u005a\u030c\u0000" +
  1010. "\u007a\u030c\u0000\u004f\u031b\u0000\u006f\u031b\u0000\u0055" +
  1011. "\u031b\u0000\u0075\u031b\u0000\u0041\u030c\u0000\u0061\u030c" +
  1012. "\u0000\u0049\u030c\u0000\u0069\u030c\u0000\u004f\u030c\u0000" +
  1013. "\u006f\u030c\u0000\u0055\u030c\u0000\u0075\u030c\u0000\u0055" +
  1014. "\u0308\u0304\u0000\u0075\u0308\u0304\u0000\u0055\u0308\u0301" +
  1015. "\u0000\u0075\u0308\u0301\u0000\u0055\u0308\u030c\u0000\u0075" +
  1016. "\u0308\u030c\u0000\u0055\u0308\u0300\u0000\u0075\u0308\u0300" +
  1017. "\u0000\u0041\u0308\u0304\u0000\u0061\u0308\u0304\u0000\u0041" +
  1018. "\u0307\u0304\u0000\u0061\u0307\u0304\u0000\u00c6\u0304\u0000" +
  1019. "\u00e6\u0304\u0000\u0047\u030c\u0000\u0067\u030c\u0000\u004b" +
  1020. "\u030c\u0000\u006b\u030c\u0000\u004f\u0328\u0000\u006f\u0328" +
  1021. "\u0000\u004f\u0328\u0304\u0000\u006f\u0328\u0304\u0000\u01b7" +
  1022. "\u030c\u0000\u0292\u030c\u0000\u006a\u030c\u0000\u0047\u0301" +
  1023. "\u0000\u0067\u0301\u0000\u0041\u030a\u0301\u0000\u0061\u030a" +
  1024. "\u0301\u0000\u00c6\u0301\u0000\u00e6\u0301\u0000\u00d8\u0301" +
  1025. "\u0000\u00f8\u0301\u0000\u0041\u030f\u0000\u0061\u030f\u0000" +
  1026. "\u0041\u0311\u0000\u0061\u0311\u0000\u0045\u030f\u0000\u0065" +
  1027. "\u030f\u0000\u0045\u0311\u0000\u0065\u0311\u0000\u0049\u030f" +
  1028. "\u0000\u0069\u030f\u0000\u0049\u0311\u0000\u0069\u0311\u0000" +
  1029. "\u004f\u030f\u0000\u006f\u030f\u0000\u004f\u0311\u0000\u006f" +
  1030. "\u0311\u0000\u0052\u030f\u0000\u0072\u030f\u0000\u0052\u0311" +
  1031. "\u0000\u0072\u0311\u0000\u0055\u030f\u0000\u0075\u030f\u0000" +
  1032. "\u0055\u0311\u0000\u0075\u0311\u0000\u0306\u0307\u0000\u0308" +
  1033. "\u030d\u0000\u02b9\u0000\u00a8\u030d\u0000\u0391\u030d\u0000" +
  1034. "\u00b7\u0000\u0395\u030d\u0000\u0397\u030d\u0000\u0399\u030d" +
  1035. "\u0000\u039f\u030d\u0000\u03a5\u030d\u0000\u03a9\u030d\u0000" +
  1036. "\u03b9\u0308\u030d\u0000\u0399\u0308\u0000\u03a5\u0308\u0000" +
  1037. "\u03b1\u030d\u0000\u03b5\u030d\u0000\u03b7\u030d\u0000\u03b9" +
  1038. "\u030d\u0000\u03c5\u0308\u030d\u0000\u03b9\u0308\u0000\u03c5" +
  1039. "\u0308\u0000\u03bf\u030d\u0000\u03c5\u030d\u0000\u03c9\u030d" +
  1040. "\u0000\u03d2\u030d\u0000\u03d2\u0308\u0000\u0415\u0308\u0000" +
  1041. "\u0413\u0301\u0000\u0406\u0308\u0000\u041a\u0301\u0000\u0423" +
  1042. "\u0306\u0000\u0418\u0306\u0000\u0438\u0306\u0000\u0435\u0308" +
  1043. "\u0000\u0433\u0301\u0000\u0456\u0308\u0000\u043a\u0301\u0000" +
  1044. "\u0443\u0306\u0000\u0474\u030f\u0000\u0475\u030f\u0000\u0416" +
  1045. "\u0306\u0000\u0436\u0306\u0000\u0410\u0306\u0000\u0430\u0306" +
  1046. "\u0000\u0410\u0308\u0000\u0430\u0308\u0000\u00c6\u0000\u00e6" +
  1047. "\u0000\u0415\u0306\u0000\u0435\u0306\u0000\u018f\u0000\u0259" +
  1048. "\u0000\u018f\u0308\u0000\u0259\u0308\u0000\u0416\u0308\u0000" +
  1049. "\u0436\u0308\u0000\u0417\u0308\u0000\u0437\u0308\u0000\u01b7" +
  1050. "\u0000\u0292\u0000\u0418\u0304\u0000\u0438\u0304\u0000\u0418" +
  1051. "\u0308\u0000\u0438\u0308\u0000\u041e\u0308\u0000\u043e\u0308" +
  1052. "\u0000\u019f\u0000\u0275\u0000\u019f\u0308\u0000\u0275\u0308" +
  1053. "\u0000\u0423\u0304\u0000\u0443\u0304\u0000\u0423\u0308\u0000" +
  1054. "\u0443\u0308\u0000\u0423\u030b\u0000\u0443\u030b\u0000\u0427" +
  1055. "\u0308\u0000\u0447\u0308\u0000\u042b\u0308\u0000\u044b\u0308" +
  1056. "\u0000\u0928\u093c\u0000\u0930\u093c\u0000\u0933\u093c\u0000" +
  1057. "\u0915\u093c\u0000\u0916\u093c\u0000\u0917\u093c\u0000\u091c" +
  1058. "\u093c\u0000\u0921\u093c\u0000\u0922\u093c\u0000\u092b\u093c" +
  1059. "\u0000\u092f\u093c\u0000\u09ac\u09bc\u0000\u09c7\u09be\u0000" +
  1060. "\u09c7\u09d7\u0000\u09a1\u09bc\u0000\u09a2\u09bc\u0000\u09af" +
  1061. "\u09bc\u0000\u0a16\u0a3c\u0000\u0a17\u0a3c\u0000\u0a1c\u0a3c" +
  1062. "\u0000\u0a21\u0a3c\u0000\u0a2b\u0a3c\u0000\u0b47\u0b56\u0000" +
  1063. "\u0b47\u0b3e\u0000\u0b47\u0b57\u0000\u0b21\u0b3c\u0000\u0b22" +
  1064. "\u0b3c\u0000\u0b2f\u0b3c\u0000\u0b92\u0bd7\u0000\u0bc6\u0bbe" +
  1065. "\u0000\u0bc7\u0bbe\u0000\u0bc6\u0bd7\u0000\u0c46\u0c56\u0000" +
  1066. "\u0cbf\u0cd5\u0000\u0cc6\u0cd5\u0000\u0cc6\u0cd6\u0000\u0cc6" +
  1067. "\u0cc2\u0000\u0cc6\u0cc2\u0cd5\u0000\u0d46\u0d3e\u0000\u0d47" +
  1068. "\u0d3e\u0000\u0d46\u0d57\u0000\u0e4d\u0e32\u0000\u0ecd\u0eb2" +
  1069. "\u0000\u0f42\u0fb7\u0000\u0f4c\u0fb7\u0000\u0f51\u0fb7\u0000" +
  1070. "\u0f56\u0fb7\u0000\u0f5b\u0fb7\u0000\u0f40\u0fb5\u0000\u0f71" +
  1071. "\u0f72\u0000\u0f74\u0f71\u0000\u0fb2\u0f80\u0000\u0fb2\u0f80" +
  1072. "\u0f71\u0000\u0fb3\u0f80\u0000\u0fb3\u0f80\u0f71\u0000\u0f80" +
  1073. "\u0f71\u0000\u0f92\u0fb7\u0000\u0f9c\u0fb7\u0000\u0fa1\u0fb7" +
  1074. "\u0000\u0fa6\u0fb7\u0000\u0fab\u0fb7\u0000\u0f90\u0fb5\u0000" +
  1075. "\u0041\u0325\u0000\u0061\u0325\u0000\u0042\u0307\u0000\u0062" +
  1076. "\u0307\u0000\u0042\u0323\u0000\u0062\u0323\u0000\u0042\u0331" +
  1077. "\u0000\u0062\u0331\u0000\u0043\u0327\u0301\u0000\u0063\u0327" +
  1078. "\u0301\u0000\u0044\u0307\u0000\u0064\u0307\u0000\u0044\u0323" +
  1079. "\u0000\u0064\u0323\u0000\u0044\u0331\u0000\u0064\u0331\u0000" +
  1080. "\u0044\u0327\u0000\u0064\u0327\u0000\u0044\u032d\u0000\u0064" +
  1081. "\u032d\u0000\u0045\u0304\u0300\u0000\u0065\u0304\u0300\u0000" +
  1082. "\u0045\u0304\u0301\u0000\u0065\u0304\u0301\u0000\u0045\u032d" +
  1083. "\u0000\u0065\u032d\u0000\u0045\u0330\u0000\u0065\u0330\u0000" +
  1084. "\u0045\u0306\u0327\u0000\u0065\u0306\u0327\u0000\u0046\u0307" +
  1085. "\u0000\u0066\u0307\u0000\u0047\u0304\u0000\u0067\u0304\u0000" +
  1086. "\u0048\u0307\u0000\u0068\u0307\u0000\u0048\u0323\u0000\u0068" +
  1087. "\u0323\u0000\u0048\u0308\u0000\u0068\u0308\u0000\u0048\u0327" +
  1088. "\u0000\u0068\u0327\u0000\u0048\u032e\u0000\u0068\u032e\u0000" +
  1089. "\u0049\u0330\u0000\u0069\u0330\u0000\u0049\u0308\u0301\u0000" +
  1090. "\u0069\u0308\u0301\u0000\u004b\u0301\u0000\u006b\u0301\u0000" +
  1091. "\u004b\u0323\u0000\u006b\u0323\u0000\u004b\u0331\u0000\u006b" +
  1092. "\u0331\u0000\u004c\u0323\u0000\u006c\u0323\u0000\u004c\u0323" +
  1093. "\u0304\u0000\u006c\u0323\u0304\u0000\u004c\u0331\u0000\u006c" +
  1094. "\u0331\u0000\u004c\u032d\u0000\u006c\u032d\u0000\u004d\u0301" +
  1095. "\u0000\u006d\u0301\u0000\u004d\u0307\u0000\u006d\u0307\u0000" +
  1096. "\u004d\u0323\u0000\u006d\u0323\u0000\u004e\u0307\u0000\u006e" +
  1097. "\u0307\u0000\u004e\u0323\u0000\u006e\u0323\u0000\u004e\u0331" +
  1098. "\u0000\u006e\u0331\u0000\u004e\u032d\u0000\u006e\u032d\u0000" +
  1099. "\u004f\u0303\u0301\u0000\u006f\u0303\u0301\u0000\u004f\u0303" +
  1100. "\u0308\u0000\u006f\u0303\u0308\u0000\u004f\u0304\u0300\u0000" +
  1101. "\u006f\u0304\u0300\u0000\u004f\u0304\u0301\u0000\u006f\u0304" +
  1102. "\u0301\u0000\u0050\u0301\u0000\u0070\u0301\u0000\u0050\u0307" +
  1103. "\u0000\u0070\u0307\u0000\u0052\u0307\u0000\u0072\u0307\u0000" +
  1104. "\u0052\u0323\u0000\u0072\u0323\u0000\u0052\u0323\u0304\u0000" +
  1105. "\u0072\u0323\u0304\u0000\u0052\u0331\u0000\u0072\u0331\u0000" +
  1106. "\u0053\u0307\u0000\u0073\u0307\u0000\u0053\u0323\u0000\u0073" +
  1107. "\u0323\u0000\u0053\u0301\u0307\u0000\u0073\u0301\u0307\u0000" +
  1108. "\u0053\u030c\u0307\u0000\u0073\u030c\u0307\u0000\u0053\u0323" +
  1109. "\u0307\u0000\u0073\u0323\u0307\u0000\u0054\u0307\u0000\u0074" +
  1110. "\u0307\u0000\u0054\u0323\u0000\u0074\u0323\u0000\u0054\u0331" +
  1111. "\u0000\u0074\u0331\u0000\u0054\u032d\u0000\u0074\u032d\u0000" +
  1112. "\u0055\u0324\u0000\u0075\u0324\u0000\u0055\u0330\u0000\u0075" +
  1113. "\u0330\u0000\u0055\u032d\u0000\u0075\u032d\u0000\u0055\u0303" +
  1114. "\u0301\u0000\u0075\u0303\u0301\u0000\u0055\u0304\u0308\u0000" +
  1115. "\u0075\u0304\u0308\u0000\u0056\u0303\u0000\u0076\u0303\u0000" +
  1116. "\u0056\u0323\u0000\u0076\u0323\u0000\u0057\u0300\u0000\u0077" +
  1117. "\u0300\u0000\u0057\u0301\u0000\u0077\u0301\u0000\u0057\u0308" +
  1118. "\u0000\u0077\u0308\u0000\u0057\u0307\u0000\u0077\u0307\u0000" +
  1119. "\u0057\u0323\u0000\u0077\u0323\u0000\u0058\u0307\u0000\u0078" +
  1120. "\u0307\u0000\u0058\u0308\u0000\u0078\u0308\u0000\u0059\u0307" +
  1121. "\u0000\u0079\u0307\u0000\u005a\u0302\u0000\u007a\u0302\u0000" +
  1122. "\u005a\u0323\u0000\u007a\u0323\u0000\u005a\u0331\u0000\u007a" +
  1123. "\u0331\u0000\u0068\u0331\u0000\u0074\u0308\u0000\u0077\u030a" +
  1124. "\u0000\u0079\u030a\u0000\u017f\u0307\u0000\u0041\u0323\u0000" +
  1125. "\u0061\u0323\u0000\u0041\u0309\u0000\u0061\u0309\u0000\u0041" +
  1126. "\u0302\u0301\u0000\u0061\u0302\u0301\u0000\u0041\u0302\u0300" +
  1127. "\u0000\u0061\u0302\u0300\u0000\u0041\u0302\u0309\u0000\u0061" +
  1128. "\u0302\u0309\u0000\u0041\u0302\u0303\u0000\u0061\u0302\u0303" +
  1129. "\u0000\u0041\u0302\u0323\u0000\u0061\u0302\u0323\u0000\u0041" +
  1130. "\u0306\u0301\u0000\u0061\u0306\u0301\u0000\u0041\u0306\u0300" +
  1131. "\u0000\u0061\u0306\u0300\u0000\u0041\u0306\u0309\u0000\u0061" +
  1132. "\u0306\u0309\u0000\u0041\u0306\u0303\u0000\u0061\u0306\u0303" +
  1133. "\u0000\u0041\u0306\u0323\u0000\u0061\u0306\u0323\u0000\u0045" +
  1134. "\u0323\u0000\u0065\u0323\u0000\u0045\u0309\u0000\u0065\u0309" +
  1135. "\u0000\u0045\u0303\u0000\u0065\u0303\u0000\u0045\u0302\u0301" +
  1136. "\u0000\u0065\u0302\u0301\u0000\u0045\u0302\u0300\u0000\u0065" +
  1137. "\u0302\u0300\u0000\u0045\u0302\u0309\u0000\u0065\u0302\u0309" +
  1138. "\u0000\u0045\u0302\u0303\u0000\u0065\u0302\u0303\u0000\u0045" +
  1139. "\u0302\u0323\u0000\u0065\u0302\u0323\u0000\u0049\u0309\u0000" +
  1140. "\u0069\u0309\u0000\u0049\u0323\u0000\u0069\u0323\u0000\u004f" +
  1141. "\u0323\u0000\u006f\u0323\u0000\u004f\u0309\u0000\u006f\u0309" +
  1142. "\u0000\u004f\u0302\u0301\u0000\u006f\u0302\u0301\u0000\u004f" +
  1143. "\u0302\u0300\u0000\u006f\u0302\u0300\u0000\u004f\u0302\u0309" +
  1144. "\u0000\u006f\u0302\u0309\u0000\u004f\u0302\u0303\u0000\u006f" +
  1145. "\u0302\u0303\u0000\u004f\u0302\u0323\u0000\u006f\u0302\u0323" +
  1146. "\u0000\u004f\u031b\u0301\u0000\u006f\u031b\u0301\u0000\u004f" +
  1147. "\u031b\u0300\u0000\u006f\u031b\u0300\u0000\u004f\u031b\u0309" +
  1148. "\u0000\u006f\u031b\u0309\u0000\u004f\u031b\u0303\u0000\u006f" +
  1149. "\u031b\u0303\u0000\u004f\u031b\u0323\u0000\u006f\u031b\u0323" +
  1150. "\u0000\u0055\u0323\u0000\u0075\u0323\u0000\u0055\u0309\u0000" +
  1151. "\u0075\u0309\u0000\u0055\u031b\u0301\u0000\u0075\u031b\u0301" +
  1152. "\u0000\u0055\u031b\u0300\u0000\u0075\u031b\u0300\u0000\u0055" +
  1153. "\u031b\u0309\u0000\u0075\u031b\u0309\u0000\u0055\u031b\u0303" +
  1154. "\u0000\u0075\u031b\u0303\u0000\u0055\u031b\u0323\u0000\u0075" +
  1155. "\u031b\u0323\u0000\u0059\u0300\u0000\u0079\u0300\u0000\u0059" +
  1156. "\u0323\u0000\u0079\u0323\u0000\u0059\u0309\u0000\u0079\u0309" +
  1157. "\u0000\u0059\u0303\u0000\u0079\u0303\u0000\u03b1\u0313\u0000" +
  1158. "\u03b1\u0314\u0000\u03b1\u0313\u0300\u0000\u03b1\u0314\u0300" +
  1159. "\u0000\u03b1\u0313\u0301\u0000\u03b1\u0314\u0301\u0000\u03b1" +
  1160. "\u0313\u0342\u0000\u03b1\u0314\u0342\u0000\u0391\u0313\u0000" +
  1161. "\u0391\u0314\u0000\u0391\u0313\u0300\u0000\u0391\u0314\u0300" +
  1162. "\u0000\u0391\u0313\u0301\u0000\u0391\u0314\u0301\u0000\u0391" +
  1163. "\u0313\u0342\u0000\u0391\u0314\u0342\u0000\u03b5\u0313\u0000" +
  1164. "\u03b5\u0314\u0000\u03b5\u0313\u0300\u0000\u03b5\u0314\u0300" +
  1165. "\u0000\u03b5\u0313\u0301\u0000\u03b5\u0314\u0301\u0000\u0395" +
  1166. "\u0313\u0000\u0395\u0314\u0000\u0395\u0313\u0300\u0000\u0395" +
  1167. "\u0314\u0300\u0000\u0395\u0313\u0301\u0000\u0395\u0314\u0301" +
  1168. "\u0000\u03b7\u0313\u0000\u03b7\u0314\u0000\u03b7\u0313\u0300" +
  1169. "\u0000\u03b7\u0314\u0300\u0000\u03b7\u0313\u0301\u0000\u03b7" +
  1170. "\u0314\u0301\u0000\u03b7\u0313\u0342\u0000\u03b7\u0314\u0342" +
  1171. "\u0000\u0397\u0313\u0000\u0397\u0314\u0000\u0397\u0313\u0300" +
  1172. "\u0000\u0397\u0314\u0300\u0000\u0397\u0313\u0301\u0000\u0397" +
  1173. "\u0314\u0301\u0000\u0397\u0313\u0342\u0000\u0397\u0314\u0342" +
  1174. "\u0000\u03b9\u0313\u0000\u03b9\u0314\u0000\u03b9\u0313\u0300" +
  1175. "\u0000\u03b9\u0314\u0300\u0000\u03b9\u0313\u0301\u0000\u03b9" +
  1176. "\u0314\u0301\u0000\u03b9\u0313\u0342\u0000\u03b9\u0314\u0342" +
  1177. "\u0000\u0399\u0313\u0000\u0399\u0314\u0000\u0399\u0313\u0300" +
  1178. "\u0000\u0399\u0314\u0300\u0000\u0399\u0313\u0301\u0000\u0399" +
  1179. "\u0314\u0301\u0000\u0399\u0313\u0342\u0000\u0399\u0314\u0342" +
  1180. "\u0000\u03bf\u0313\u0000\u03bf\u0314\u0000\u03bf\u0313\u0300" +
  1181. "\u0000\u03bf\u0314\u0300\u0000\u03bf\u0313\u0301\u0000\u03bf" +
  1182. "\u0314\u0301\u0000\u039f\u0313\u0000\u039f\u0314\u0000\u039f" +
  1183. "\u0313\u0300\u0000\u039f\u0314\u0300\u0000\u039f\u0313\u0301" +
  1184. "\u0000\u039f\u0314\u0301\u0000\u03c5\u0313\u0000\u03c5\u0314" +
  1185. "\u0000\u03c5\u0313\u0300\u0000\u03c5\u0314\u0300\u0000\u03c5" +
  1186. "\u0313\u0301\u0000\u03c5\u0314\u0301\u0000\u03c5\u0313\u0342" +
  1187. "\u0000\u03c5\u0314\u0342\u0000\u03a5\u0314\u0000\u03a5\u0314" +
  1188. "\u0300\u0000\u03a5\u0314\u0301\u0000\u03a5\u0314\u0342\u0000" +
  1189. "\u03c9\u0313\u0000\u03c9\u0314\u0000\u03c9\u0313\u0300\u0000" +
  1190. "\u03c9\u0314\u0300\u0000\u03c9\u0313\u0301\u0000\u03c9\u0314" +
  1191. "\u0301\u0000\u03c9\u0313\u0342\u0000\u03c9\u0314\u0342\u0000" +
  1192. "\u03a9\u0313\u0000\u03a9\u0314\u0000\u03a9\u0313\u0300\u0000" +
  1193. "\u03a9\u0314\u0300\u0000\u03a9\u0313\u0301\u0000\u03a9\u0314" +
  1194. "\u0301\u0000\u03a9\u0313\u0342\u0000\u03a9\u0314\u0342\u0000" +
  1195. "\u03b1\u0300\u0000\u03b1\u0301\u0000\u03b5\u0300\u0000\u03b5" +
  1196. "\u0301\u0000\u03b7\u0300\u0000\u03b7\u0301\u0000\u03b9\u0300" +
  1197. "\u0000\u03b9\u0301\u0000\u03bf\u0300\u0000\u03bf\u0301\u0000" +
  1198. "\u03c5\u0300\u0000\u03c5\u0301\u0000\u03c9\u0300\u0000\u03c9" +
  1199. "\u0301\u0000\u03b1\u0313\u0345\u0000\u03b1\u0314\u0345\u0000" +
  1200. "\u03b1\u0300\u0313\u0345\u0000\u03b1\u0300\u0314\u0345\u0000" +
  1201. "\u03b1\u0301\u0313\u0345\u0000\u03b1\u0301\u0314\u0345\u0000" +
  1202. "\u03b1\u0342\u0313\u0345\u0000\u03b1\u0342\u0314\u0345\u0000" +
  1203. "\u0391\u0313\u0345\u0000\u0391\u0314\u0345\u0000\u0391\u0300" +
  1204. "\u0313\u0345\u0000\u0391\u0300\u0314\u0345\u0000\u0391\u0301" +
  1205. "\u0313\u0345\u0000\u0391\u0301\u0314\u0345\u0000\u0391\u0342" +
  1206. "\u0313\u0345\u0000\u0391\u0342\u0314\u0345\u0000\u03b7\u0313" +
  1207. "\u0345\u0000\u03b7\u0314\u0345\u0000\u03b7\u0300\u0313\u0345" +
  1208. "\u0000\u03b7\u0300\u0314\u0345\u0000\u03b7\u0301\u0313\u0345" +
  1209. "\u0000\u03b7\u0301\u0314\u0345\u0000\u03b7\u0342\u0313\u0345" +
  1210. "\u0000\u03b7\u0342\u0314\u0345\u0000\u0397\u0313\u0345\u0000" +
  1211. "\u0397\u0314\u0345\u0000\u0397\u0300\u0313\u0345\u0000\u0397" +
  1212. "\u0300\u0314\u0345\u0000\u0397\u0301\u0313\u0345\u0000\u0397" +
  1213. "\u0301\u0314\u0345\u0000\u0397\u0342\u0313\u0345\u0000\u0397" +
  1214. "\u0342\u0314\u0345\u0000\u03c9\u0313\u0345\u0000\u03c9\u0314" +
  1215. "\u0345\u0000\u03c9\u0300\u0313\u0345\u0000\u03c9\u0300\u0314" +
  1216. "\u0345\u0000\u03c9\u0301\u0313\u0345\u0000\u03c9\u0301\u0314" +
  1217. "\u0345\u0000\u03c9\u0342\u0313\u0345\u0000\u03c9\u0342\u0314" +
  1218. "\u0345\u0000\u03a9\u0313\u0345\u0000\u03a9\u0314\u0345\u0000" +
  1219. "\u03a9\u0300\u0313\u0345\u0000\u03a9\u0300\u0314\u0345\u0000" +
  1220. "\u03a9\u0301\u0313\u0345\u0000\u03a9\u0301\u0314\u0345\u0000" +
  1221. "\u03a9\u0342\u0313\u0345\u0000\u03a9\u0342\u0314\u0345\u0000" +
  1222. "\u03b1\u0306\u0000\u03b1\u0304\u0000\u03b1\u0300\u0345\u0000" +
  1223. "\u03b1\u0345\u0000\u03b1\u0301\u0345\u0000\u03b1\u0342\u0000" +
  1224. "\u03b1\u0342\u0345\u0000\u0391\u0306\u0000\u0391\u0304\u0000" +
  1225. "\u0391\u0300\u0000\u0391\u0301\u0000\u0391\u0345\u0000\u0399" +
  1226. "\u0000\u00a8\u0342\u0000\u03b7\u0300\u0345\u0000\u03b7\u0345" +
  1227. "\u0000\u03b7\u0301\u0345\u0000\u03b7\u0342\u0000\u03b7\u0342" +
  1228. "\u0345\u0000\u0395\u0300\u0000\u0395\u0301\u0000\u0397\u0300" +
  1229. "\u0000\u0397\u0301\u0000\u0397\u0345\u0000\u1fbf\u0300\u0000" +
  1230. "\u1fbf\u0301\u0000\u1fbf\u0342\u0000\u03b9\u0306\u0000\u03b9" +
  1231. "\u0304\u0000\u03b9\u0308\u0300\u0000\u03b9\u0308\u0301\u0000" +
  1232. "\u03b9\u0342\u0000\u03b9\u0308\u0342\u0000\u0399\u0306\u0000" +
  1233. "\u0399\u0304\u0000\u0399\u0300\u0000\u0399\u0301\u0000\u1ffe" +
  1234. "\u0300\u0000\u1ffe\u0301\u0000\u1ffe\u0342\u0000\u03c5\u0306" +
  1235. "\u0000\u03c5\u0304\u0000\u03c5\u0308\u0300\u0000\u03c5\u0308" +
  1236. "\u0301\u0000\u03c1\u0313\u0000\u03c1\u0314\u0000\u03c5\u0342" +
  1237. "\u0000\u03c5\u0308\u0342\u0000\u03a5\u0306\u0000\u03a5\u0304" +
  1238. "\u0000\u03a5\u0300\u0000\u03a5\u0301\u0000\u03a1\u0314\u0000" +
  1239. "\u00a8\u0300\u0000\u00a8\u0301\u0000\u03c9\u0300\u0345\u0000" +
  1240. "\u03c9\u0345\u0000\u03bf\u0301\u0345\u0000\u03c9\u0342\u0000" +
  1241. "\u03c9\u0342\u0345\u0000\u039f\u0300\u0000\u039f\u0301\u0000" +
  1242. "\u03a9\u0300\u0000\u03a9\u0301\u0000\u03a9\u0345\u0000\u00b4" +
  1243. "\u0000\u2002\u0000\u2003\u0000\u03a9\u0000\u004b\u0000\u0041" +
  1244. "\u030a\u0000\u2203\u0338\u0000\u2208\u0338\u0000\u220b\u0338" +
  1245. "\u0000\u2223\u0338\u0000\u2225\u0338\u0000\u2243\u0338\u0000" +
  1246. "\u2245\u0338\u0000\u2248\u0338\u0000\u2261\u0338\u0000\u224d" +
  1247. "\u0338\u0000\u2264\u0338\u0000\u2265\u0338\u0000\u2272\u0338" +
  1248. "\u0000\u2273\u0338\u0000\u2276\u0338\u0000\u2277\u0338\u0000" +
  1249. "\u227a\u0338\u0000\u227b\u0338\u0000\u2282\u0338\u0000\u2283" +
  1250. "\u0338\u0000\u2286\u0338\u0000\u2287\u0338\u0000\u22a2\u0338" +
  1251. "\u0000\u22a8\u0338\u0000\u22a9\u0338\u0000\u22ab\u0338\u0000" +
  1252. "\u227c\u0338\u0000\u227d\u0338\u0000\u2291\u0338\u0000\u2292" +
  1253. "\u0338\u0000\u22b2\u0338\u0000\u22b3\u0338\u0000\u22b4\u0338" +
  1254. "\u0000\u22b5\u0338\u0000\u3008\u0000\u3009\u0000\u304b\u3099" +
  1255. "\u0000\u304d\u3099\u0000\u304f\u3099\u0000\u3051\u3099\u0000" +
  1256. "\u3053\u3099\u0000\u3055\u3099\u0000\u3057\u3099\u0000\u3059" +
  1257. "\u3099\u0000\u305b\u3099\u0000\u305d\u3099\u0000\u305f\u3099" +
  1258. "\u0000\u3061\u3099\u0000\u3064\u3099\u0000\u3066\u3099\u0000" +
  1259. "\u3068\u3099\u0000\u306f\u3099\u0000\u306f\u309a\u0000\u3072" +
  1260. "\u3099\u0000\u3072\u309a\u0000\u3075\u3099\u0000\u3075\u309a" +
  1261. "\u0000\u3078\u3099\u0000\u3078\u309a\u0000\u307b\u3099\u0000" +
  1262. "\u307b\u309a\u0000\u3046\u3099\u0000\u309d\u3099\u0000\u30ab" +
  1263. "\u3099\u0000\u30ad\u3099\u0000\u30af\u3099\u0000\u30b1\u3099" +
  1264. "\u0000\u30b3\u3099\u0000\u30b5\u3099\u0000\u30b7\u3099\u0000" +
  1265. "\u30b9\u3099\u0000\u30bb\u3099\u0000\u30bd\u3099\u0000\u30bf" +
  1266. "\u3099\u0000\u30c1\u3099\u0000\u30c4\u3099\u0000\u30c6\u3099" +
  1267. "\u0000\u30c8\u3099\u0000\u30cf\u3099\u0000\u30cf\u309a\u0000" +
  1268. "\u30d2\u3099\u0000\u30d2\u309a\u0000\u30d5\u3099\u0000\u30d5" +
  1269. "\u309a\u0000\u30d8\u3099\u0000\u30d8\u309a\u0000\u30db\u3099" +
  1270. "\u0000\u30db\u309a\u0000\u30a6\u3099\u0000\u30ef\u3099\u0000" +
  1271. "\u30f0\u3099\u0000\u30f1\u3099\u0000\u30f2\u3099\u0000\u30fd" +
  1272. "\u3099\u0000\u05e9\u05c1\u0000\u05e9\u05c2\u0000\u05e9\u05bc" +
  1273. "\u05c1\u0000\u05e9\u05bc\u05c2\u0000\u05d0\u05b7\u0000\u05d0" +
  1274. "\u05b8\u0000\u05d0\u05bc\u0000\u05d1\u05bc\u0000\u05d2\u05bc" +
  1275. "\u0000\u05d3\u05bc\u0000\u05d4\u05bc\u0000\u05d5\u05bc\u0000" +
  1276. "\u05d6\u05bc\u0000\u05d8\u05bc\u0000\u05d9\u05bc\u0000\u05da" +
  1277. "\u05bc\u0000\u05db\u05bc\u0000\u05dc\u05bc\u0000\u05de\u05bc" +
  1278. "\u0000\u05e0\u05bc\u0000\u05e1\u05bc\u0000\u05e3\u05bc\u0000" +
  1279. "\u05e4\u05bc\u0000\u05e6\u05bc\u0000\u05e7\u05bc\u0000\u05e8" +
  1280. "\u05bc\u0000\u05e9\u05bc\u0000\u05ea\u05bc\u0000\u05d5\u05b9" +
  1281. "\u0000\u05d1\u05bf\u0000\u05db\u05bf\u0000\u05e4\u05bf\u0000" +
  1282. "\u0020\u0302\u0000\u0020\u0332\u0000\u0020\u0300\u0000\u0020" +
  1283. "\u0000\u0020\u0308\u0000\u0061\u0000\u0020\u0304\u0000\u0032" +
  1284. "\u0000\u0033\u0000\u0020\u0301\u0000\u03bc\u0000\u0020\u0327" +
  1285. "\u0000\u0031\u0000\u006f\u0000\u0031\u2044\u0034\u0000\u0031" +
  1286. "\u2044\u0032\u0000\u0033\u2044\u0034\u0000\u0049\u004a\u0000" +
  1287. "\u0069\u006a\u0000\u004c\u00b7\u0000\u006c\u00b7\u0000\u02bc" +
  1288. "\u006e\u0000\u0073\u0000\u0044\u005a\u030c\u0000\u0044\u007a" +
  1289. "\u030c\u0000\u0064\u007a\u030c\u0000\u004c\u004a\u0000\u004c" +
  1290. "\u006a\u0000\u006c\u006a\u0000\u004e\u004a\u0000\u004e\u006a" +
  1291. "\u0000\u006e\u006a\u0000\u0044\u005a\u0000\u0044\u007a\u0000" +
  1292. "\u0064\u007a\u0000\u0068\u0000\u0266\u0000\u006a\u0000\u0072" +
  1293. "\u0000\u0279\u0000\u027b\u0000\u0281\u0000\u0077\u0000\u0079" +
  1294. "\u0000\u0020\u0306\u0000\u0020\u0307\u0000\u0020\u030a\u0000" +
  1295. "\u0020\u0328\u0000\u0020\u0303\u0000\u0020\u030b\u0000\u0263" +
  1296. "\u0000\u006c\u0000\u0073\u0000\u0078\u0000\u0295\u0000\u0020" +
  1297. "\u0345\u0000\u0020\u030d\u0000\u0020\u0308\u030d\u0000\u0565" +
  1298. "\u0582\u0000\u0eab\u0e99\u0000\u0eab\u0ea1\u0000\u1100\u1100" +
  1299. "\u0000\u1103\u1103\u0000\u1107\u1107\u0000\u1109\u1109\u0000" +
  1300. "\u110c\u110c\u0000\u1102\u1100\u0000\u1102\u1102\u0000\u1102" +
  1301. "\u1103\u0000\u1102\u1107\u0000\u1103\u1100\u0000\u1105\u1102" +
  1302. "\u0000\u1105\u1105\u0000\u1105\u1112\u0000\u1105\u110b\u0000" +
  1303. "\u1106\u1107\u0000\u1106\u110b\u0000\u1107\u1100\u0000\u1107" +
  1304. "\u1102\u0000\u1107\u1103\u0000\u1107\u1109\u0000\u1107\u1109" +
  1305. "\u1100\u0000\u1107\u1109\u1103\u0000\u1107\u1109\u1107\u0000" +
  1306. "\u1107\u1109\u1109\u0000\u1107\u1109\u110c\u0000\u1107\u110c" +
  1307. "\u0000\u1107\u110e\u0000\u1107\u1110\u0000\u1107\u1111\u0000" +
  1308. "\u1107\u110b\u0000\u1107\u1107\u110b\u0000\u1109\u1100\u0000" +
  1309. "\u1109\u1102\u0000\u1109\u1103\u0000\u1109\u1105\u0000\u1109" +
  1310. "\u1106\u0000\u1109\u1107\u0000\u1109\u1107\u1100\u0000\u1109" +
  1311. "\u1109\u1109\u0000\u1109\u110b\u0000\u1109\u110c\u0000\u1109" +
  1312. "\u110e\u0000\u1109\u110f\u0000\u1109\u1110\u0000\u1109\u1111" +
  1313. "\u0000\u1109\u1112\u0000\u113c\u113c\u0000\u113e\u113e\u0000" +
  1314. "\u110b\u1100\u0000\u110b\u1103\u0000\u110b\u1106\u0000\u110b" +
  1315. "\u1107\u0000\u110b\u1109\u0000\u110b\u1140\u0000\u110b\u110b" +
  1316. "\u0000\u110b\u110c\u0000\u110b\u110e\u0000\u110b\u1110\u0000" +
  1317. "\u110b\u1111\u0000\u110c\u110b\u0000\u114e\u114e\u0000\u1150" +
  1318. "\u1150\u0000\u110e\u110f\u0000\u110e\u1112\u0000\u1111\u1107" +
  1319. "\u0000\u1111\u110b\u0000\u1112\u1112\u0000\u1161\u1175\u0000" +
  1320. "\u1163\u1175\u0000\u1165\u1175\u0000\u1167\u1175\u0000\u1169" +
  1321. "\u1161\u0000\u1169\u1161\u1175\u0000\u1169\u1175\u0000\u116e" +
  1322. "\u1165\u0000\u116e\u1165\u1175\u0000\u116e\u1175\u0000\u1173" +
  1323. "\u1175\u0000\u1161\u1169\u0000\u1161\u116e\u0000\u1163\u1169" +
  1324. "\u0000\u1163\u116d\u0000\u1165\u1169\u0000\u1165\u116e\u0000" +
  1325. "\u1165\u1173\u0000\u1167\u1169\u0000\u1167\u116e\u0000\u1169" +
  1326. "\u1165\u0000\u1169\u1165\u1175\u0000\u1169\u1167\u1175\u0000" +
  1327. "\u1169\u1169\u0000\u1169\u116e\u0000\u116d\u1163\u0000\u116d" +
  1328. "\u1163\u1175\u0000\u116d\u1167\u0000\u116d\u1169\u0000\u116d" +
  1329. "\u1175\u0000\u116e\u1161\u0000\u116e\u1161\u1175\u0000\u116e" +
  1330. "\u1165\u1173\u0000\u116e\u1167\u1175\u0000\u116e\u116e\u0000" +
  1331. "\u1172\u1161\u0000\u1172\u1165\u0000\u1172\u1165\u1175\u0000" +
  1332. "\u1172\u1167\u0000\u1172\u1167\u1175\u0000\u1172\u116e\u0000" +
  1333. "\u1172\u1175\u0000\u1173\u116e\u0000\u1173\u1173\u0000\u1173" +
  1334. "\u1175\u116e\u0000\u1175\u1161\u0000\u1175\u1163\u0000\u1175" +
  1335. "\u1169\u0000\u1175\u116e\u0000\u1175\u1173\u0000\u1175\u119e" +
  1336. "\u0000\u119e\u1165\u0000\u119e\u116e\u0000\u119e\u1175\u0000" +
  1337. "\u119e\u119e\u0000\u11a8\u11a8\u0000\u11a8\u11ba\u0000\u11ab" +
  1338. "\u11bd\u0000\u11ab\u11c2\u0000\u11af\u11a8\u0000\u11af\u11b7" +
  1339. "\u0000\u11af\u11b8\u0000\u11af\u11ba\u0000\u11af\u11c0\u0000" +
  1340. "\u11af\u11c1\u0000\u11af\u11c2\u0000\u11b8\u11ba\u0000\u11ba" +
  1341. "\u11ba\u0000\u11a8\u11af\u0000\u11a8\u11ba\u11a8\u0000\u11ab" +
  1342. "\u11a8\u0000\u11ab\u11ae\u0000\u11ab\u11ba\u0000\u11ab\u11eb" +
  1343. "\u0000\u11ab\u11c0\u0000\u11ae\u11a8\u0000\u11ae\u11af\u0000" +
  1344. "\u11af\u11a8\u11ba\u0000\u11af\u11ab\u0000\u11af\u11ae\u0000" +
  1345. "\u11af\u11ae\u11c2\u0000\u11af\u11af\u0000\u11af\u11b7\u11a8" +
  1346. "\u0000\u11af\u11b7\u11ba\u0000\u11af\u11b8\u11ba\u0000\u11af" +
  1347. "\u11b8\u11c2\u0000\u11af\u11b8\u11bc\u0000\u11af\u11ba\u11ba" +
  1348. "\u0000\u11af\u11eb\u0000\u11af\u11bf\u0000\u11af\u11f9\u0000" +
  1349. "\u11b7\u11a8\u0000\u11b7\u11af\u0000\u11b7\u11b8\u0000\u11b7" +
  1350. "\u11ba\u0000\u11b7\u11ba\u11ba\u0000\u11b7\u11eb\u0000\u11b7" +
  1351. "\u11be\u0000\u11b7\u11c2\u0000\u11b7\u11bc\u0000\u11b8\u11af" +
  1352. "\u0000\u11b8\u11c1\u0000\u11b8\u11c2\u0000\u11b8\u11bc\u0000" +
  1353. "\u11ba\u11a8\u0000\u11ba\u11ae\u0000\u11ba\u11af\u0000\u11ba" +
  1354. "\u11b8\u0000\u11bc\u11a8\u0000\u11bc\u11a8\u11a8\u0000\u11bc" +
  1355. "\u11bc\u0000\u11bc\u11bf\u0000\u11f0\u11ba\u0000\u11f0\u11eb" +
  1356. "\u0000\u11c1\u11b8\u0000\u11c1\u11bc\u0000\u11c2\u11ab\u0000" +
  1357. "\u11c2\u11af\u0000\u11c2\u11b7\u0000\u11c2\u11b8\u0000\u0073" +
  1358. "\u0307\u0000\u0020\u0313\u0000\u0020\u0313\u0000\u0020\u0342" +
  1359. "\u0000\u0020\u0308\u0342\u0000\u0020\u0313\u0300\u0000\u0020" +
  1360. "\u0313\u0301\u0000\u0020\u0313\u0342\u0000\u0020\u0314\u0300" +
  1361. "\u0000\u0020\u0314\u0301\u0000\u0020\u0314\u0342\u0000\u0020" +
  1362. "\u0308\u0300\u0000\u0020\u0308\u0301\u0000\u0020\u0300\u0000" +
  1363. "\u0020\u0301\u0000\u0020\u0314\u0000\u0020\u0000\u0020\u0000" +
  1364. "\u0020\u0000\u0020\u0000\u0020\u0000\u0020\u0000\u0020\u0000" +
  1365. "\u0020\u0000\u0020\u0000\u0020\u0000\u0020\u0000\u2010\u0000" +
  1366. "\u0020\u0333\u0000\u002e\u0000\u002e\u002e\u0000\u002e\u002e" +
  1367. "\u002e\u0000\u2032\u2032\u0000\u2032\u2032\u2032\u0000\u2035" +
  1368. "\u2035\u0000\u2035\u2035\u2035\u0000\u0021\u0021\u0000\u0020" +
  1369. "\u0305\u0000\u0030\u0000\u0034\u0000\u0035\u0000\u0036\u0000" +
  1370. "\u0037\u0000\u0038\u0000\u0039\u0000\u002b\u0000\u2212\u0000" +
  1371. "\u003d\u0000\u0028\u0000\u0029\u0000\u006e\u0000\u0030\u0000" +
  1372. "\u0031\u0000\u0032\u0000\u0033\u0000\u0034\u0000\u0035\u0000" +
  1373. "\u0036\u0000\u0037\u0000\u0038\u0000\u0039\u0000\u002b\u0000" +
  1374. "\u2212\u0000\u003d\u0000\u0028\u0000\u0029\u0000\u0052\u0073" +
  1375. "\u0000\u0043\u0000\u00b0\u0043\u0000\u0190\u0000\u00b0\u0046" +
  1376. "\u0000\u0067\u0000\u0048\u0000\u0048\u0000\u0048\u0000\u0068" +
  1377. "\u0000\u0127\u0000\u0049\u0000\u0049\u0000\u004c\u0000\u006c" +
  1378. "\u0000\u004e\u0000\u004e\u006f\u0000\u0050\u0000\u0050\u0000" +
  1379. "\u0051\u0000\u0052\u0000\u0052\u0000\u0052\u0000\u0053\u004d" +
  1380. "\u0000\u0054\u0045\u004c\u0000\u0054\u004d\u0000\u005a\u0000" +
  1381. "\u005a\u0000\u0042\u0000\u0043\u0000\u0065\u0000\u0045\u0000" +
  1382. "\u0046\u0000\u004d\u0000\u006f\u0000\u05d0\u0000\u05d1\u0000" +
  1383. "\u05d2\u0000\u05d3\u0000\u0031\u2044\u0033\u0000\u0032\u2044" +
  1384. "\u0033\u0000\u0031\u2044\u0035\u0000\u0032\u2044\u0035\u0000" +
  1385. "\u0033\u2044\u0035\u0000\u0034\u2044\u0035\u0000\u0031\u2044" +
  1386. "\u0036\u0000\u0035\u2044\u0036\u0000\u0031\u2044\u0038\u0000" +
  1387. "\u0033\u2044\u0038\u0000\u0035\u2044\u0038\u0000\u0037\u2044" +
  1388. "\u0038\u0000\u0031\u2044\u0000\u0049\u0000\u0049\u0049\u0000" +
  1389. "\u0049\u0049\u0049\u0000\u0049\u0056\u0000\u0056\u0000\u0056" +
  1390. "\u0049\u0000\u0056\u0049\u0049\u0000\u0056\u0049\u0049\u0049" +
  1391. "\u0000\u0049\u0058\u0000\u0058\u0000\u0058\u0049\u0000\u0058" +
  1392. "\u0049\u0049\u0000\u004c\u0000\u0043\u0000\u0044\u0000\u004d" +
  1393. "\u0000\u0069\u0000\u0069\u0069\u0000\u0069\u0069\u0069\u0000" +
  1394. "\u0069\u0076\u0000\u0076\u0000\u0076\u0069\u0000\u0076\u0069" +
  1395. "\u0069\u0000\u0076\u0069\u0069\u0069\u0000\u0069\u0078\u0000" +
  1396. "\u0078\u0000\u0078\u0069\u0000\u0078\u0069\u0069\u0000\u006c" +
  1397. "\u0000\u0063\u0000\u0064\u0000\u006d\u0000\u222b\u222b\u0000" +
  1398. "\u222b\u222b\u222b\u0000\u222e\u222e\u0000\u222e\u222e\u222e" +
  1399. "\u0000\u0031\u0000\u0032\u0000\u0033\u0000\u0034\u0000\u0035" +
  1400. "\u0000\u0036\u0000\u0037\u0000\u0038\u0000\u0039\u0000\u0031" +
  1401. "\u0000\u0031\u0030\u0000\u0031\u0032\u0000\u0031\u0033\u0000" +
  1402. "\u0031\u0034\u0000\u0031\u0035\u0000\u0031\u0036\u0000\u0031" +
  1403. "\u0037\u0000\u0031\u0038\u0000\u0031\u0039\u0000\u0032\u0030" +
  1404. "\u0000\u0041\u0000\u0042\u0000\u0043\u0000\u0044\u0000\u0045" +
  1405. "\u0000\u0046\u0000\u0047\u0000\u0048\u0000\u0049\u0000\u004a" +
  1406. "\u0000\u004b\u0000\u004c\u0000\u004d\u0000\u004e\u0000\u004f" +
  1407. "\u0000\u0050\u0000\u0051\u0000\u0052\u0000\u0053\u0000\u0054" +
  1408. "\u0000\u0055\u0000\u0056\u0000\u0057\u0000\u0058\u0000\u0059" +
  1409. "\u0000\u005a\u0000\u0061\u0000\u0062\u0000\u0063\u0000\u0064" +
  1410. "\u0000\u0065\u0000\u0066\u0000\u0067\u0000\u0068\u0000\u0069" +
  1411. "\u0000\u006a\u0000\u006b\u0000\u006c\u0000\u006d\u0000\u006e" +
  1412. "\u0000\u006f\u0000\u0070\u0000\u0071\u0000\u0072\u0000\u0073" +
  1413. "\u0000\u0074\u0000\u0075\u0000\u0076\u0000\u0077\u0000\u0078" +
  1414. "\u0000\u0079\u0000\u007a\u0000\u0030\u0000\u0020\u0000\u3012" +
  1415. "\u0000\u0020\u3099\u0000\u0020\u309a\u0000\u1100\u0000\u1100" +
  1416. "\u1100\u0000\u11a8\u11ba\u0000\u1102\u0000\u11ab\u11bd\u0000" +
  1417. "\u11ab\u11c2\u0000\u1103\u0000\u1103\u1103\u0000\u1105\u0000" +
  1418. "\u11af\u11a8\u0000\u11af\u11b7\u0000\u11af\u11b8\u0000\u11af" +
  1419. "\u11ba\u0000\u11af\u11c0\u0000\u11af\u11c1\u0000\u1105\u1112" +
  1420. "\u0000\u1106\u0000\u1107\u0000\u1107\u1107\u0000\u1107\u1109" +
  1421. "\u0000\u1109\u0000\u1109\u1109\u0000\u110b\u0000\u110c\u0000" +
  1422. "\u110c\u110c\u0000\u110e\u0000\u110f\u0000\u1110\u0000\u1111" +
  1423. "\u0000\u1112\u0000\u1161\u0000\u1161\u1175\u0000\u1163\u0000" +
  1424. "\u1163\u1175\u0000\u1165\u0000\u1165\u1175\u0000\u1167\u0000" +
  1425. "\u1167\u1175\u0000\u1169\u0000\u1169\u1161\u0000\u1169\u1175" +
  1426. "\u1161\u0000\u1169\u1175\u0000\u116d\u0000\u116e\u0000\u116e" +
  1427. "\u1165\u0000\u116e\u1175\u1165\u0000\u116e\u1175\u0000\u1172" +
  1428. "\u0000\u1173\u0000\u1173\u1175\u0000\u1175\u0000\u1160\u0000" +
  1429. "\u1102\u1102\u0000\u1102\u1103\u0000\u11ab\u11ba\u0000\u11ab" +
  1430. "\u11eb\u0000\u11af\u11ba\u11a8\u0000\u11af\u11ae\u0000\u11af" +
  1431. "\u11ba\u11b8\u0000\u11af\u11eb\u0000\u11af\u11f9\u0000\u1106" +
  1432. "\u1107\u0000\u11b7\u11ba\u0000\u11b7\u11eb\u0000\u1106\u110b" +
  1433. "\u0000\u1107\u1100\u0000\u1107\u1103\u0000\u1107\u1100\u1109" +
  1434. "\u0000\u1107\u1103\u1109\u0000\u1107\u110c\u0000\u1107\u1110" +
  1435. "\u0000\u1107\u110b\u0000\u1107\u110b\u1107\u0000\u1109\u1100" +
  1436. "\u0000\u1109\u1102\u0000\u1109\u1103\u0000\u1109\u1107\u0000" +
  1437. "\u1109\u110c\u0000\u1140\u0000\u110b\u110b\u0000\u114c\u0000" +
  1438. "\u11f0\u11ba\u0000\u11f0\u11eb\u0000\u1111\u110b\u0000\u1112" +
  1439. "\u1112\u0000\u1159\u0000\u116d\u1163\u0000\u116d\u1175\u1163" +
  1440. "\u0000\u116d\u1175\u0000\u1172\u1167\u0000\u1172\u1175\u1167" +
  1441. "\u0000\u1172\u1175\u0000\u119e\u0000\u119e\u1175\u0000\u4e00" +
  1442. "\u0000\u4e8c\u0000\u4e09\u0000\u56db\u0000\u4e0a\u0000\u4e2d" +
  1443. "\u0000\u4e0b\u0000\u7532\u0000\u4e59\u0000\u4e19\u0000\u4e01" +
  1444. "\u0000\u5929\u0000\u5730\u0000\u4eba\u0000\u0028\u1100\u0029" +
  1445. "\u0000\u0028\u1102\u0029\u0000\u0028\u1103\u0029\u0000\u0028" +
  1446. "\u1105\u0029\u0000\u0028\u1106\u0029\u0000\u0028\u1107\u0029" +
  1447. "\u0000\u0028\u1109\u0029\u0000\u0028\u110b\u0029\u0000\u0028" +
  1448. "\u110c\u0029\u0000\u0028\u110e\u0029\u0000\u0028\u110f\u0029" +
  1449. "\u0000\u0028\u1110\u0029\u0000\u0028\u1111\u0029\u0000\u0028" +
  1450. "\u1112\u0029\u0000\u0028\u1100\u1161\u0029\u0000\u0028\u1102" +
  1451. "\u1161\u0029\u0000\u0028\u1103\u1161\u0029\u0000\u0028\u1105" +
  1452. "\u1161\u0029\u0000\u0028\u1106\u1161\u0029\u0000\u0028\u1107" +
  1453. "\u1161\u0029\u0000\u0028\u1109\u1161\u0029\u0000\u0028\u110b" +
  1454. "\u1161\u0029\u0000\u0028\u110c\u1161\u0029\u0000\u0028\u110e" +
  1455. "\u1161\u0029\u0000\u0028\u110f\u1161\u0029\u0000\u0028\u1110" +
  1456. "\u1161\u0029\u0000\u0028\u1111\u1161\u0029\u0000\u0028\u1112" +
  1457. "\u1161\u0029\u0000\u0028\u110c\u116e\u0029\u0000\u0028\u4e00" +
  1458. "\u0029\u0000\u0028\u4e8c\u0029\u0000\u0028\u4e09\u0029\u0000" +
  1459. "\u0028\u56db\u0029\u0000\u0028\u4e94\u0029\u0000\u0028\u516d" +
  1460. "\u0029\u0000\u0028\u4e03\u0029\u0000\u0028\u516b\u0029\u0000" +
  1461. "\u0028\u4e5d\u0029\u0000\u0028\u5341\u0029\u0000\u0028\u6708" +
  1462. "\u0029\u0000\u0028\u706b\u0029\u0000\u0028\u6c34\u0029\u0000" +
  1463. "\u0028\u6728\u0029\u0000\u0028\u91d1\u0029\u0000\u0028\u571f" +
  1464. "\u0029\u0000\u0028\u65e5\u0029\u0000\u0028\u682a\u0029\u0000" +
  1465. "\u0028\u6709\u0029\u0000\u0028\u793e\u0029\u0000\u0028\u540d" +
  1466. "\u0029\u0000\u0028\u7279\u0029\u0000\u0028\u8ca1\u0029\u0000" +
  1467. "\u0028\u795d\u0029\u0000\u0028\u52b4\u0029\u0000\u0028\u4ee3" +
  1468. "\u0029\u0000\u0028\u547c\u0029\u0000\u0028\u5b66\u0029\u0000" +
  1469. "\u0028\u76e3\u0029\u0000\u0028\u4f01\u0029\u0000\u0028\u8cc7" +
  1470. "\u0029\u0000\u0028\u5354\u0029\u0000\u0028\u796d\u0029\u0000" +
  1471. "\u0028\u4f11\u0029\u0000\u0028\u81ea\u0029\u0000\u0028\u81f3" +
  1472. "\u0029\u0000\u1100\u0000\u1102\u0000\u1103\u0000\u1105\u0000" +
  1473. "\u1106\u0000\u1107\u0000\u1109\u0000\u110b\u0000\u110c\u0000" +
  1474. "\u110e\u0000\u110f\u0000\u1110\u0000\u1111\u0000\u1112\u0000" +
  1475. "\u1100\u1161\u0000\u1102\u1161\u0000\u1103\u1161\u0000\u1105" +
  1476. "\u1161\u0000\u1106\u1161\u0000\u1107\u1161\u0000\u1109\u1161" +
  1477. "\u0000\u110b\u1161\u0000\u110c\u1161\u0000\u110e\u1161\u0000" +
  1478. "\u110f\u1161\u0000\u1110\u1161\u0000\u1111\u1161\u0000\u1112" +
  1479. "\u1161\u0000\u4e00\u0000\u4e8c\u0000\u4e09\u0000\u56db\u0000" +
  1480. "\u4e94\u0000\u516d\u0000\u4e03\u0000\u516b\u0000\u4e5d\u0000" +
  1481. "\u5341\u0000\u6708\u0000\u706b\u0000\u6c34\u0000\u6728\u0000" +
  1482. "\u91d1\u0000\u571f\u0000\u65e5\u0000\u682a\u0000\u6709\u0000" +
  1483. "\u793e\u0000\u540d\u0000\u7279\u0000\u8ca1\u0000\u795d\u0000" +
  1484. "\u52b4\u0000\u79d8\u0000\u7537\u0000\u5973\u0000\u9069\u0000" +
  1485. "\u512a\u0000\u5370\u0000\u6ce8\u0000\u9805\u0000\u4f11\u0000" +
  1486. "\u5199\u0000\u6b63\u0000\u4e0a\u0000\u4e2d\u0000\u4e0b\u0000" +
  1487. "\u5de6\u0000\u53f3\u0000\u533b\u0000\u5b97\u0000\u5b66\u0000" +
  1488. "\u76e3\u0000\u4f01\u0000\u8cc7\u0000\u5354\u0000\u591c\u0000" +
  1489. "\u0031\u6708\u0000\u0032\u6708\u0000\u0033\u6708\u0000\u0034" +
  1490. "\u6708\u0000\u0035\u6708\u0000\u0036\u6708\u0000\u0037\u6708" +
  1491. "\u0000\u0038\u6708\u0000\u0039\u6708\u0000\u0031\u0030\u6708" +
  1492. "\u0000\u0031\u0031\u6708\u0000\u0031\u0032\u6708\u0000\u30a2" +
  1493. "\u0000\u30a4\u0000\u30a6\u0000\u30a8\u0000\u30aa\u0000\u30ab" +
  1494. "\u0000\u30ad\u0000\u30af\u0000\u30b1\u0000\u30b3\u0000\u30b5" +
  1495. "\u0000\u30b7\u0000\u30b9\u0000\u30bb\u0000\u30bd\u0000\u30bf" +
  1496. "\u0000\u30c1\u0000\u30c4\u0000\u30c6\u0000\u30c8\u0000\u30ca" +
  1497. "\u0000\u30cb\u0000\u30cc\u0000\u30cd\u0000\u30ce\u0000\u30cf" +
  1498. "\u0000\u30d2\u0000\u30d5\u0000\u30d8\u0000\u30db\u0000\u30de" +
  1499. "\u0000\u30df\u0000\u30e0\u0000\u30e1\u0000\u30e2\u0000\u30e4" +
  1500. "\u0000\u30e6\u0000\u30e8\u0000\u30e9\u0000\u30ea\u0000\u30eb" +
  1501. "\u0000\u30ec\u0000\u30ed\u0000\u30ef\u0000\u30f0\u0000\u30f1" +
  1502. "\u0000\u30f2\u0000\u30a2\u30cf\u309a\u30fc\u30c8\u0000\u30a2" +
  1503. "\u30eb\u30d5\u30a1\u0000\u30a2\u30f3\u30d8\u309a\u30a2\u0000" +
  1504. "\u30a2\u30fc\u30eb\u0000\u30a4\u30cb\u30f3\u30af\u3099\u0000" +
  1505. "\u30a4\u30f3\u30c1\u0000\u30a6\u30a9\u30f3\u0000\u30a8\u30b9" +
  1506. "\u30af\u30fc\u30c8\u3099\u0000\u30a8\u30fc\u30ab\u30fc\u0000" +
  1507. "\u30aa\u30f3\u30b9\u0000\u30aa\u30fc\u30e0\u0000\u30ab\u30a4" +
  1508. "\u30ea\u0000\u30ab\u30e9\u30c3\u30c8\u0000\u30ab\u30ed\u30ea" +
  1509. "\u30fc\u0000\u30ab\u3099\u30ed\u30f3\u0000\u30ab\u3099\u30f3" +
  1510. "\u30de\u0000\u30ad\u3099\u30ab\u3099\u0000\u30ad\u3099\u30cb" +
  1511. "\u30fc\u0000\u30ad\u30e5\u30ea\u30fc\u0000\u30ad\u3099\u30eb" +
  1512. "\u30bf\u3099\u30fc\u0000\u30ad\u30ed\u0000\u30ad\u30ed\u30af" +
  1513. "\u3099\u30e9\u30e0\u0000\u30ad\u30ed\u30e1\u30fc\u30c8\u30eb" +
  1514. "\u0000\u30ad\u30ed\u30ef\u30c3\u30c8\u0000\u30af\u3099\u30e9" +
  1515. "\u30e0\u0000\u30af\u3099\u30e9\u30e0\u30c8\u30f3\u0000\u30af" +
  1516. "\u30eb\u30bb\u3099\u30a4\u30ed\u0000\u30af\u30ed\u30fc\u30cd" +
  1517. "\u0000\u30b1\u30fc\u30b9\u0000\u30b3\u30eb\u30ca\u0000\u30b3" +
  1518. "\u30fc\u30db\u309a\u0000\u30b5\u30a4\u30af\u30eb\u0000\u30b5" +
  1519. "\u30f3\u30c1\u30fc\u30e0\u0000\u30b7\u30ea\u30f3\u30af\u3099" +
  1520. "\u0000\u30bb\u30f3\u30c1\u0000\u30bb\u30f3\u30c8\u0000\u30bf" +
  1521. "\u3099\u30fc\u30b9\u0000\u30c6\u3099\u30b7\u0000\u30c8\u3099" +
  1522. "\u30eb\u0000\u30c8\u30f3\u0000\u30ca\u30ce\u0000\u30ce\u30c3" +
  1523. "\u30c8\u0000\u30cf\u30a4\u30c4\u0000\u30cf\u309a\u30fc\u30bb" +
  1524. "\u30f3\u30c8\u0000\u30cf\u309a\u30fc\u30c4\u0000\u30cf\u3099" +
  1525. "\u30fc\u30ec\u30eb\u0000\u30d2\u309a\u30a2\u30b9\u30c8\u30eb" +
  1526. "\u0000\u30d2\u309a\u30af\u30eb\u0000\u30d2\u309a\u30b3\u0000" +
  1527. "\u30d2\u3099\u30eb\u0000\u30d5\u30a1\u30e9\u30c3\u30c8\u3099" +
  1528. "\u0000\u30d5\u30a3\u30fc\u30c8\u0000\u30d5\u3099\u30c3\u30b7" +
  1529. "\u30a7\u30eb\u0000\u30d5\u30e9\u30f3\u0000\u30d8\u30af\u30bf" +
  1530. "\u30fc\u30eb\u0000\u30d8\u309a\u30bd\u0000\u30d8\u309a\u30cb" +
  1531. "\u30d2\u0000\u30d8\u30eb\u30c4\u0000\u30d8\u309a\u30f3\u30b9" +
  1532. "\u0000\u30d8\u309a\u30fc\u30b7\u3099\u0000\u30d8\u3099\u30fc" +
  1533. "\u30bf\u0000\u30db\u309a\u30a4\u30f3\u30c8\u0000\u30db\u3099" +
  1534. "\u30eb\u30c8\u0000\u30db\u30f3\u0000\u30db\u309a\u30f3\u30c8" +
  1535. "\u3099\u0000\u30db\u30fc\u30eb\u0000\u30db\u30fc\u30f3\u0000" +
  1536. "\u30de\u30a4\u30af\u30ed\u0000\u30de\u30a4\u30eb\u0000\u30de" +
  1537. "\u30c3\u30cf\u0000\u30de\u30eb\u30af\u0000\u30de\u30f3\u30b7" +
  1538. "\u30e7\u30f3\u0000\u30df\u30af\u30ed\u30f3\u0000\u30df\u30ea" +
  1539. "\u0000\u30df\u30ea\u30cf\u3099\u30fc\u30eb\u0000\u30e1\u30ab" +
  1540. "\u3099\u0000\u30e1\u30ab\u3099\u30c8\u30f3\u0000\u30e1\u30fc" +
  1541. "\u30c8\u30eb\u0000\u30e4\u30fc\u30c8\u3099\u0000\u30e4\u30fc" +
  1542. "\u30eb\u0000\u30e6\u30a2\u30f3\u0000\u30ea\u30c3\u30c8\u30eb" +
  1543. "\u0000\u30ea\u30e9\u0000\u30eb\u30d2\u309a\u30fc\u0000\u30eb" +
  1544. "\u30fc\u30d5\u3099\u30eb\u0000\u30ec\u30e0\u0000\u30ec\u30f3" +
  1545. "\u30c8\u30b1\u3099\u30f3\u0000\u30ef\u30c3\u30c8\u0000\u0030" +
  1546. "\u70b9\u0000\u0031\u70b9\u0000\u0032\u70b9\u0000\u0033\u70b9" +
  1547. "\u0000\u0034\u70b9\u0000\u0035\u70b9\u0000\u0036\u70b9\u0000" +
  1548. "\u0037\u70b9\u0000\u0038\u70b9\u0000\u0039\u70b9\u0000\u0031" +
  1549. "\u0030\u70b9\u0000\u0031\u0031\u70b9\u0000\u0031\u0032\u70b9" +
  1550. "\u0000\u0031\u0033\u70b9\u0000\u0031\u0034\u70b9\u0000\u0031" +
  1551. "\u0035\u70b9\u0000\u0031\u0036\u70b9\u0000\u0031\u0037\u70b9" +
  1552. "\u0000\u0031\u0038\u70b9\u0000\u0031\u0039\u70b9\u0000\u0032" +
  1553. "\u0030\u70b9\u0000\u0032\u0031\u70b9\u0000\u0032\u0032\u70b9" +
  1554. "\u0000\u0032\u0033\u70b9\u0000\u0032\u0034\u70b9\u0000\u0068" +
  1555. "\u0050\u0061\u0000\u0064\u0061\u0000\u0041\u0055\u0000\u0062" +
  1556. "\u0061\u0072\u0000\u006f\u0056\u0000\u0070\u0063\u0000\u5e73" +
  1557. "\u6210\u0000\u662d\u548c\u0000\u5927\u6b63\u0000\u660e\u6cbb" +
  1558. "\u0000\u682a\u5f0f\u4f1a\u793e\u0000\u0070\u0041\u0000\u006e" +
  1559. "\u0041\u0000\u03bc\u0041\u0000\u006d\u0041\u0000\u006b\u0041" +
  1560. "\u0000\u004b\u0042\u0000\u004d\u0042\u0000\u0047\u0042\u0000" +
  1561. "\u0063\u0061\u006c\u0000\u006b\u0063\u0061\u006c\u0000\u0070" +
  1562. "\u0046\u0000\u006e\u0046\u0000\u03bc\u0046\u0000\u03bc\u0067" +
  1563. "\u0000\u006d\u0067\u0000\u006b\u0067\u0000\u0048\u007a\u0000" +
  1564. "\u006b\u0048\u007a\u0000\u004d\u0048\u007a\u0000\u0047\u0048" +
  1565. "\u007a\u0000\u0054\u0048\u007a\u0000\u03bc\u006c\u0000\u006d" +
  1566. "\u006c\u0000\u0064\u006c\u0000\u006b\u006c\u0000\u0066\u006d" +
  1567. "\u0000\u006e\u006d\u0000\u03bc\u006d\u0000\u006d\u006d\u0000" +
  1568. "\u0063\u006d\u0000\u006b\u006d\u0000\u006d\u006d\u0032\u0000" +
  1569. "\u0063\u006d\u0032\u0000\u006d\u0032\u0000\u006b\u006d\u0032" +
  1570. "\u0000\u006d\u006d\u0033\u0000\u0063\u006d\u0033\u0000\u006d" +
  1571. "\u0033\u0000\u006b\u006d\u0033\u0000\u006d\u2215\u0073\u0000" +
  1572. "\u006d\u2215\u0073\u0032\u0000\u0050\u0061\u0000\u006b\u0050" +
  1573. "\u0061\u0000\u004d\u0050\u0061\u0000\u0047\u0050\u0061\u0000" +
  1574. "\u0072\u0061\u0064\u0000\u0072\u0061\u0064\u2215\u0073\u0000" +
  1575. "\u0072\u0061\u0064\u2215\u0073\u0032\u0000\u0070\u0073\u0000" +
  1576. "\u006e\u0073\u0000\u03bc\u0073\u0000\u006d\u0073\u0000\u0070" +
  1577. "\u0056\u0000\u006e\u0056\u0000\u03bc\u0056\u0000\u006d\u0056" +
  1578. "\u0000\u006b\u0056\u0000\u004d\u0056\u0000\u0070\u0057\u0000" +
  1579. "\u006e\u0057\u0000\u03bc\u0057\u0000\u006d\u0057\u0000\u006b" +
  1580. "\u0057\u0000\u004d\u0057\u0000\u006b\u03a9\u0000\u004d\u03a9" +
  1581. "\u0000\u0061\u002e\u006d\u002e\u0000\u0042\u0071\u0000\u0063" +
  1582. "\u0063\u0000\u0063\u0064\u0000\u0043\u2215\u006b\u0067\u0000" +
  1583. "\u0043\u006f\u002e\u0000\u0064\u0042\u0000\u0047\u0079\u0000" +
  1584. "\u0068\u0061\u0000\u0048\u0050\u0000\u0069\u006e\u0000\u004b" +
  1585. "\u004b\u0000\u004b\u004d\u0000\u006b\u0074\u0000\u006c\u006d" +
  1586. "\u0000\u006c\u006e\u0000\u006c\u006f\u0067\u0000\u006c\u0078" +
  1587. "\u0000\u006d\u0062\u0000\u006d\u0069\u006c\u0000\u006d\u006f" +
  1588. "\u006c\u0000\u0050\u0048\u0000\u0070\u002e\u006d\u002e\u0000" +
  1589. "\u0050\u0050\u004d\u0000\u0050\u0052\u0000\u0073\u0072\u0000" +
  1590. "\u0053\u0076\u0000\u0057\u0062\u0000\u0031\u65e5\u0000\u0032" +
  1591. "\u65e5\u0000\u0033\u65e5\u0000\u0034\u65e5\u0000\u0035\u65e5" +
  1592. "\u0000\u0036\u65e5\u0000\u0037\u65e5\u0000\u0038\u65e5\u0000" +
  1593. "\u0039\u65e5\u0000\u0031\u0030\u65e5\u0000\u0031\u0031\u65e5" +
  1594. "\u0000\u0031\u0032\u65e5\u0000\u0031\u0033\u65e5\u0000\u0031" +
  1595. "\u0034\u65e5\u0000\u0031\u0035\u65e5\u0000\u0031\u0036\u65e5" +
  1596. "\u0000\u0031\u0037\u65e5\u0000\u0031\u0038\u65e5\u0000\u0031" +
  1597. "\u0039\u65e5\u0000\u0032\u0030\u65e5\u0000\u0032\u0031\u65e5" +
  1598. "\u0000\u0032\u0032\u65e5\u0000\u0032\u0033\u65e5\u0000\u0032" +
  1599. "\u0034\u65e5\u0000\u0032\u0035\u65e5\u0000\u0032\u0036\u65e5" +
  1600. "\u0000\u0032\u0037\u65e5\u0000\u0032\u0038\u65e5\u0000\u0032" +
  1601. "\u0039\u65e5\u0000\u0033\u0030\u65e5\u0000\u0033\u0031\u65e5" +
  1602. "\u0000\u0066\u0066\u0000\u0066\u0069\u0000\u0066\u006c\u0000" +
  1603. "\u0066\u0066\u0069\u0000\u0066\u0066\u006c\u0000\u0073\u0074" +
  1604. "\u0000\u0073\u0074\u0000\u0574\u0576\u0000\u0574\u0565\u0000" +
  1605. "\u0574\u056b\u0000\u057e\u0576\u0000\u0574\u056d\u0000\u05f2" +
  1606. "\u05b7\u0000\u05e2\u0000\u05d0\u0000\u05d3\u0000\u05d4\u0000" +
  1607. "\u05db\u0000\u05dc\u0000\u05dd\u0000\u05e8\u0000\u05ea\u0000" +
  1608. "\u002b\u0000\u05d0\u05dc\u0000\u0671\u0000\u0671\u0000\u067b" +
  1609. "\u0000\u067b\u0000\u067b\u0000\u067b\u0000\u067e\u0000\u067e" +
  1610. "\u0000\u067e\u0000\u067e\u0000\u0680\u0000\u0680\u0000\u0680" +
  1611. "\u0000\u0680\u0000\u067a\u0000\u067a\u0000\u067a\u0000\u067a" +
  1612. "\u0000\u067f\u0000\u067f\u0000\u067f\u0000\u067f\u0000\u0679" +
  1613. "\u0000\u0679\u0000\u0679\u0000\u0679\u0000\u06a4\u0000\u06a4" +
  1614. "\u0000\u06a4\u0000\u06a4\u0000\u06a6\u0000\u06a6\u0000\u06a6" +
  1615. "\u0000\u06a6\u0000\u0684\u0000\u0684\u0000\u0684\u0000\u0684" +
  1616. "\u0000\u0683\u0000\u0683\u0000\u0683\u0000\u0683\u0000\u0686" +
  1617. "\u0000\u0686\u0000\u0686\u0000\u0686\u0000\u0687\u0000\u0687" +
  1618. "\u0000\u0687\u0000\u0687\u0000\u068d\u0000\u068d\u0000\u068c" +
  1619. "\u0000\u068c\u0000\u068e\u0000\u068e\u0000\u0688\u0000\u0688" +
  1620. "\u0000\u0698\u0000\u0698\u0000\u0691\u0000\u0691\u0000\u06a9" +
  1621. "\u0000\u06a9\u0000\u06a9\u0000\u06a9\u0000\u06af\u0000\u06af" +
  1622. "\u0000\u06af\u0000\u06af\u0000\u06b3\u0000\u06b3\u0000\u06b3" +
  1623. "\u0000\u06b3\u0000\u06b1\u0000\u06b1\u0000\u06b1\u0000\u06b1" +
  1624. "\u0000\u06ba\u0000\u06ba\u0000\u06bb\u0000\u06bb\u0000\u06bb" +
  1625. "\u0000\u06bb\u0000\u06c0\u0000\u06c0\u0000\u06c1\u0000\u06c1" +
  1626. "\u0000\u06c1\u0000\u06c1\u0000\u06be\u0000\u06be\u0000\u06be" +
  1627. "\u0000\u06be\u0000\u06d2\u0000\u06d2\u0000\u06d3\u0000\u06d3" +
  1628. "\u0000\u06ad\u0000\u06ad\u0000\u06ad\u0000\u06ad\u0000\u06c7" +
  1629. "\u0000\u06c7\u0000\u06c6\u0000\u06c6\u0000\u06c8\u0000\u06c8" +
  1630. "\u0000\u0677\u0000\u06cb\u0000\u06cb\u0000\u06c5\u0000\u06c5" +
  1631. "\u0000\u06c9\u0000\u06c9\u0000\u06d0\u0000\u06d0\u0000\u06d0" +
  1632. "\u0000\u06d0\u0000\u06cc\u0000\u06cc\u0000\u06cc\u0000\u06cc" +
  1633. "\u0000\u002e\u002e\u0000\u2014\u0000\u2013\u0000\u0020\u0332" +
  1634. "\u0000\u0020\u0332\u0000\u0028\u0000\u0029\u0000\u007b\u0000" +
  1635. "\u007d\u0000\u3014\u0000\u3015\u0000\u3010\u0000\u3011\u0000" +
  1636. "\u300a\u0000\u300b\u0000\u3008\u0000\u3009\u0000\u300c\u0000" +
  1637. "\u300d\u0000\u300e\u0000\u300f\u0000\u0020\u0305\u0000\u0020" +
  1638. "\u0305\u0000\u0020\u0305\u0000\u0020\u0305\u0000\u0020\u0332" +
  1639. "\u0000\u0020\u0332\u0000\u0020\u0332\u0000\u002c\u0000\u3001" +
  1640. "\u0000\u002e\u0000\u003b\u0000\u003a\u0000\u003f\u0000\u0021" +
  1641. "\u0000\u2014\u0000\u0028\u0000\u0029\u0000\u007b\u0000\u007d" +
  1642. "\u0000\u3014\u0000\u3015\u0000\u0023\u0000\u0026\u0000\u002a" +
  1643. "\u0000\u002b\u0000\u002d\u0000\u003c\u0000\u003e\u0000\u003d" +
  1644. "\u0000\\\u0000\u0024\u0000\u0025\u0000\u0040\u0000\u0020" +
  1645. "\u064b\u0000\u0640\u064b\u0000\u0020\u064c\u0000\u0020\u064d" +
  1646. "\u0000\u0020\u064e\u0000\u0640\u064e\u0000\u0020\u064f\u0000" +
  1647. "\u0640\u064f\u0000\u0020\u0650\u0000\u0640\u0650\u0000\u0020" +
  1648. "\u0651\u0000\u0640\u0651\u0000\u0020\u0652\u0000\u0640\u0652" +
  1649. "\u0000\u0621\u0000\u0622\u0000\u0622\u0000\u0623\u0000\u0623" +
  1650. "\u0000\u0624\u0000\u0624\u0000\u0625\u0000\u0625\u0000\u0626" +
  1651. "\u0000\u0626\u0000\u0626\u0000\u0626\u0000\u0627\u0000\u0627" +
  1652. "\u0000\u0628\u0000\u0628\u0000\u0628\u0000\u0628\u0000\u0629" +
  1653. "\u0000\u0629\u0000\u062a\u0000\u062a\u0000\u062a\u0000\u062a" +
  1654. "\u0000\u062b\u0000\u062b\u0000\u062b\u0000\u062b\u0000\u062c" +
  1655. "\u0000\u062c\u0000\u062c\u0000\u062c\u0000\u062d\u0000\u062d" +
  1656. "\u0000\u062d\u0000\u062d\u0000\u062e\u0000\u062e\u0000\u062e" +
  1657. "\u0000\u062e\u0000\u062f\u0000\u062f\u0000\u0630\u0000\u0630" +
  1658. "\u0000\u0631\u0000\u0631\u0000\u0632\u0000\u0632\u0000\u0633" +
  1659. "\u0000\u0633\u0000\u0633\u0000\u0633\u0000\u0634\u0000\u0634" +
  1660. "\u0000\u0634\u0000\u0634\u0000\u0635\u0000\u0635\u0000\u0635" +
  1661. "\u0000\u0635\u0000\u0636\u0000\u0636\u0000\u0636\u0000\u0636" +
  1662. "\u0000\u0637\u0000\u0637\u0000\u0637\u0000\u0637\u0000\u0638" +
  1663. "\u0000\u0638\u0000\u0638\u0000\u0638\u0000\u0639\u0000\u0639" +
  1664. "\u0000\u0639\u0000\u0639\u0000\u063a\u0000\u063a\u0000\u063a" +
  1665. "\u0000\u063a\u0000\u0641\u0000\u0641\u0000\u0641\u0000\u0641" +
  1666. "\u0000\u0642\u0000\u0642\u0000\u0642\u0000\u0642\u0000\u0643" +
  1667. "\u0000\u0643\u0000\u0643\u0000\u0643\u0000\u0644\u0000\u0644" +
  1668. "\u0000\u0644\u0000\u0644\u0000\u0645\u0000\u0645\u0000\u0645" +
  1669. "\u0000\u0645\u0000\u0646\u0000\u0646\u0000\u0646\u0000\u0646" +
  1670. "\u0000\u0647\u0000\u0647\u0000\u0647\u0000\u0647\u0000\u0648" +
  1671. "\u0000\u0648\u0000\u0649\u0000\u0649\u0000\u064a\u0000\u064a" +
  1672. "\u0000\u064a\u0000\u064a\u0000\u0021\u0000\"\u0000\u0023" +
  1673. "\u0000\u0024\u0000\u0025\u0000\u0026\u0000\u0027\u0000\u0028" +
  1674. "\u0000\u0029\u0000\u002a\u0000\u002b\u0000\u002c\u0000\u002d" +
  1675. "\u0000\u002e\u0000\u002f\u0000\u0030\u0000\u0031\u0000\u0032" +
  1676. "\u0000\u0033\u0000\u0034\u0000\u0035\u0000\u0036\u0000\u0037" +
  1677. "\u0000\u0038\u0000\u0039\u0000\u003a\u0000\u003b\u0000\u003c" +
  1678. "\u0000\u003d\u0000\u003e\u0000\u003f\u0000\u0040\u0000\u0041" +
  1679. "\u0000\u0042\u0000\u0043\u0000\u0044\u0000\u0045\u0000\u0046" +
  1680. "\u0000\u0047\u0000\u0048\u0000\u0049\u0000\u004a\u0000\u004b" +
  1681. "\u0000\u004c\u0000\u004d\u0000\u004e\u0000\u004f\u0000\u0050" +
  1682. "\u0000\u0051\u0000\u0052\u0000\u0053\u0000\u0054\u0000\u0055" +
  1683. "\u0000\u0056\u0000\u0057\u0000\u0058\u0000\u0059\u0000\u005a" +
  1684. "\u0000\u005b\u0000\\\u0000\u005d\u0000\u0020\u0302\u0000" +
  1685. "\u0020\u0332\u0000\u0020\u0300\u0000\u0061\u0000\u0062\u0000" +
  1686. "\u0063\u0000\u0064\u0000\u0065\u0000\u0066\u0000\u0067\u0000" +
  1687. "\u0068\u0000\u0069\u0000\u006a\u0000\u006b\u0000\u006c\u0000" +
  1688. "\u006d\u0000\u006e\u0000\u006f\u0000\u0070\u0000\u0071\u0000" +
  1689. "\u0072\u0000\u0073\u0000\u0074\u0000\u0075\u0000\u0076\u0000" +
  1690. "\u0077\u0000\u0078\u0000\u0079\u0000\u007a\u0000\u007b\u0000" +
  1691. "\u007c\u0000\u007d\u0000\u007e\u0000\u3002\u0000\u300c\u0000" +
  1692. "\u300d\u0000\u3001\u0000\u30fb\u0000\u30f2\u0000\u30a1\u0000" +
  1693. "\u30a3\u0000\u30a5\u0000\u30a7\u0000\u30a9\u0000\u30e3\u0000" +
  1694. "\u30e5\u0000\u30e7\u0000\u30c3\u0000\u30fc\u0000\u30a2\u0000" +
  1695. "\u30a4\u0000\u30a6\u0000\u30a8\u0000\u30aa\u0000\u30ab\u0000" +
  1696. "\u30ad\u0000\u30af\u0000\u30b1\u0000\u30b3\u0000\u30b5\u0000" +
  1697. "\u30b7\u0000\u30b9\u0000\u30bb\u0000\u30bd\u0000\u30bf\u0000" +
  1698. "\u30c1\u0000\u30c4\u0000\u30c6\u0000\u30c8\u0000\u30ca\u0000" +
  1699. "\u30cb\u0000\u30cc\u0000\u30cd\u0000\u30ce\u0000\u30cf\u0000" +
  1700. "\u30d2\u0000\u30d5\u0000\u30d8\u0000\u30db\u0000\u30de\u0000" +
  1701. "\u30df\u0000\u30e0\u0000\u30e1\u0000\u30e2\u0000\u30e4\u0000" +
  1702. "\u30e6\u0000\u30e8\u0000\u30e9\u0000\u30ea\u0000\u30eb\u0000" +
  1703. "\u30ec\u0000\u30ed\u0000\u30ef\u0000\u30f3\u0000\u0020\u3099" +
  1704. "\u0000\u0020\u309a\u0000\u1160\u0000\u1100\u0000\u1100\u1100" +
  1705. "\u0000\u11a8\u11ba\u0000\u1102\u0000\u11ab\u11bd\u0000\u11ab" +
  1706. "\u11c2\u0000\u1103\u0000\u1103\u1103\u0000\u1105\u0000\u11af" +
  1707. "\u11a8\u0000\u11af\u11b7\u0000\u11af\u11b8\u0000\u11af\u11ba" +
  1708. "\u0000\u11af\u11c0\u0000\u11af\u11c1\u0000\u1105\u1112\u0000" +
  1709. "\u1106\u0000\u1107\u0000\u1107\u1107\u0000\u1107\u1109\u0000" +
  1710. "\u1109\u0000\u1109\u1109\u0000\u110b\u0000\u110c\u0000\u110c" +
  1711. "\u110c\u0000\u110e\u0000\u110f\u0000\u1110\u0000\u1111\u0000" +
  1712. "\u1112\u0000\u1161\u0000\u1161\u1175\u0000\u1163\u0000\u1163" +
  1713. "\u1175\u0000\u1165\u0000\u1165\u1175\u0000\u1167\u0000\u1167" +
  1714. "\u1175\u0000\u1169\u0000\u1169\u1161\u0000\u1169\u1161\u1175" +
  1715. "\u0000\u1169\u1175\u0000\u116d\u0000\u116e\u0000\u116e\u1165" +
  1716. "\u0000\u116e\u1165\u1175\u0000\u116e\u1175\u0000\u1172\u0000" +
  1717. "\u1173\u0000\u1173\u1175\u0000\u1175\u0000\u00a2\u0000\u00a3" +
  1718. "\u0000\u00ac\u0000\u0020\u0304\u0000\u00a6\u0000\u00a5\u0000" +
  1719. "\u20a9\u0000\u2502\u0000\u2190\u0000\u2191\u0000\u2192\u0000" +
  1720. "\u2193\u0000\u25a0\u0000\u25cb\u0000\u0046\u0072\u0000";
  1721. private static int maximumDecomposition = 7589;
  1722. private static int maximumCanonical = 3200;
  1723. private static final CompactShortArray startOffsets
  1724. = new CompactShortArray(kOffsetIndex, kOffsetValues, Short.MAX_VALUE);
  1725. // old canonical class used since canonical values are 0..255
  1726. private static final byte BASE = (byte)-128;
  1727. private static final CompactByteArray canonicals
  1728. = new CompactByteArray(kCanonicalIndex, kCanonicalValues);
  1729. // =======================COMPOSE PRIVATES============================
  1730. // The data is in a list of strings, with the first char of each string
  1731. // being the combining mark, and the rest of the string being a set of <source,result>
  1732. // character pairs.
  1733. private static IntHashtable composeMapping = new IntHashtable(1000);
  1734. private static char minimumCombining = '\uFFFF';
  1735. static {
  1736. // We put the string inside the static block so that it gets tossed after static
  1737. // initialization is done.
  1738. // First initialize composeMapping
  1739. String[] patterns = {
  1740. "\u0300A\u00c0E\u00c8I\u00ccO\u00d2U\u00d9W\u1E80Y\u1EF2a\u00e0e\u00e8i\u00eco\u00f2u\u00f9w\u1E81y\u1EF3\u00a8\u1FED\u00c2\u1EA6"
  1741. +"\u00ca\u1EC0\u00d4\u1ED2\u00dc\u01DB\u00e2\u1EA7\u00ea\u1EC1\u00f4\u1ED3\u00fc\u01DC\u0102\u1EB0\u0103"
  1742. +"\u1EB1\u0112\u1E14\u0113\u1E15\u014C\u1E50\u014D\u1E51\u01A0\u1EDC\u01A1"
  1743. +"\u1EDD\u01AF\u1EEA\u01B0\u1EEB\u0391\u1FBA\u0395\u1FC8\u0397\u1FCA\u0399"
  1744. +"\u1FDA\u039F\u1FF8\u03A5\u1FEA\u03A9\u1FFA\u03B1\u1F70\u03B5\u1F72\u03B7"
  1745. +"\u1F74\u03B9\u1F76\u03BF\u1F78\u03C5\u1F7A\u03C9\u1F7C\u03CA\u1FD2\u03CB"
  1746. +"\u1FE2\u1F00\u1F02\u1F01\u1F03\u1F08\u1F0A\u1F09\u1F0B\u1F10\u1F12\u1F11"
  1747. +"\u1F13\u1F18\u1F1A\u1F19\u1F1B\u1F20\u1F22\u1F21\u1F23\u1F28\u1F2A\u1F29"
  1748. +"\u1F2B\u1F30\u1F32\u1F31\u1F33\u1F38\u1F3A\u1F39\u1F3B\u1F40\u1F42\u1F41"
  1749. +"\u1F43\u1F48\u1F4A\u1F49\u1F4B\u1F50\u1F52\u1F51\u1F53\u1F59\u1F5B\u1F60"
  1750. +"\u1F62\u1F61\u1F63\u1F68\u1F6A\u1F69\u1F6B\u1FBF\u1FCD\u1FFE\u1FDD",
  1751. "\u0301A\u00c1C\u0106E\u00c9G\u01F4I\u00cdK\u1E30L\u0139M\u1E3EN\u0143O\u00d3P\u1E54R\u0154"
  1752. +"S\u015AU\u00daW\u1E82Y\u00ddZ\u0179a\u00e1c\u0107e\u00e9g\u01F5i\u00edk\u1E31l\u013Am\u1E3Fn"
  1753. +"\u0144o\u00f3p\u1E55r\u0155s\u015Bu\u00faw\u1E83y\u00fdz\u017A\u00a8\u1FEE\u00c2\u1EA4\u00c5\u01FA"
  1754. +"\u00c6\u01FC\u00c7\u1E08\u00ca\u1EBE\u00cf\u1E2E\u00d4\u1ED0\u00d5\u1E4C\u00dc\u01D7\u00e2\u1EA5\u00e5\u01FB\u00e6\u01FD"
  1755. +"\u00e7\u1E09\u00ea\u1EBF\u00ef\u1E2F\u00f4\u1ED1\u00f5\u1E4D\u00fc\u01D8\u0102\u1EAE\u0103\u1EAF\u0112"
  1756. +"\u1E16\u0113\u1E17\u014C\u1E52\u014D\u1E53\u0168\u1E78\u0169\u1E79\u01A0"
  1757. +"\u1EDA\u01A1\u1EDB\u01AF\u1EE8\u01B0\u1EE9\u0391\u1FBB\u0395\u1FC9\u0397"
  1758. +"\u1FCB\u0399\u1FDB\u039F\u1FF9\u03A5\u1FEB\u03A9\u1FFB\u03B1\u1F71\u03B5"
  1759. +"\u1F73\u03B7\u1F75\u03B9\u1F77\u03BF\u1F79\u03C5\u1F7B\u03C9\u1F7D\u03CA"
  1760. +"\u1FD3\u03CB\u1FE3\u0413\u0403\u041A\u040C\u0433\u0453\u043A\u045C\u1F00"
  1761. +"\u1F04\u1F01\u1F05\u1F08\u1F0C\u1F09\u1F0D\u1F10\u1F14\u1F11\u1F15\u1F18"
  1762. +"\u1F1C\u1F19\u1F1D\u1F20\u1F24\u1F21\u1F25\u1F28\u1F2C\u1F29\u1F2D\u1F30"
  1763. +"\u1F34\u1F31\u1F35\u1F38\u1F3C\u1F39\u1F3D\u1F40\u1F44\u1F41\u1F45\u1F48"
  1764. +"\u1F4C\u1F49\u1F4D\u1F50\u1F54\u1F51\u1F55\u1F59\u1F5D\u1F60\u1F64\u1F61"
  1765. +"\u1F65\u1F68\u1F6C\u1F69\u1F6D\u1FBF\u1FCE\u1FFE\u1FDE",
  1766. "\u0302A\u00c2C\u0108E\u00caG\u011CH\u0124I\u00ceJ\u0134O\u00d4S\u015CU\u00dbW\u0174Y\u0176Z\u1E90"
  1767. +"a\u00e2c\u0109e\u00eag\u011Dh\u0125i\u00eej\u0135o\u00f4s\u015Du\u00fbw\u0175y\u0177z\u1E91\u1EA0"
  1768. +"\u1EAC\u1EA1\u1EAD\u1EB8\u1EC6\u1EB9\u1EC7\u1ECC\u1ED8\u1ECD\u1ED9",
  1769. "\u0303A\u00c3E\u1EBCI\u0128N\u00d1O\u00d5U\u0168V\u1E7CY\u1EF8a\u00e3e\u1EBDi\u0129n\u00f1o\u00f5u"
  1770. +"\u0169v\u1E7Dy\u1EF9\u00c2\u1EAA\u00ca\u1EC4\u00d4\u1ED6\u00e2\u1EAB\u00ea\u1EC5\u00f4\u1ED7\u0102"
  1771. +"\u1EB4\u0103\u1EB5\u01A0\u1EE0\u01A1\u1EE1\u01AF\u1EEE\u01B0\u1EEF",
  1772. "\u0304A\u0100E\u0112G\u1E20I\u012AO\u014CU\u016Aa\u0101e\u0113g\u1E21"
  1773. +"i\u012Bo\u014Du\u016B\u00c4\u01DE\u00c6\u01E2\u00dc\u01D5\u00e4\u01DF\u00e6\u01E3\u00fc\u01D6\u030C"
  1774. +"\u01ED\u0391\u1FB9\u0399\u1FD9\u03A5\u1FE9\u03B1\u1FB1\u03B9\u1FD1\u03C5"
  1775. +"\u1FE1\u0418\u04E2\u0423\u04EE\u0438\u04E3\u0443\u04EF\u1E36\u1E38\u1E37"
  1776. +"\u1E39\u1E5A\u1E5C\u1E5B\u1E5D",
  1777. "\u0306A\u0102E\u0114G\u011EI\u012CO\u014EU\u016Ca\u0103e\u0115g\u011F"
  1778. +"i\u012Do\u014Fu\u016D\u0391\u1FB8\u0399\u1FD8\u03A5\u1FE8\u03B1\u1FB0"
  1779. +"\u03B9\u1FD0\u03C5\u1FE0\u0410\u04D0\u0415\u04D6\u0416\u04C1\u0418\u0419"
  1780. +"\u0423\u040E\u0430\u04D1\u0435\u04D7\u0436\u04C2\u0438\u0439\u0443\u045E"
  1781. +"\u1EA0\u1EB6\u1EA1\u1EB7",
  1782. "\u0307B\u1E02C\u010AD\u1E0AE\u0116F\u1E1EG\u0120H\u1E22I\u0130M\u1E40"
  1783. +"N\u1E44P\u1E56R\u1E58S\u1E60T\u1E6AW\u1E86X\u1E8AY\u1E8EZ\u017Bb\u1E03"
  1784. +"c\u010Bd\u1E0Be\u0117f\u1E1Fg\u0121h\u1E23m\u1E41n\u1E45p\u1E57r\u1E59"
  1785. +"s\u1E61t\u1E6Bw\u1E87x\u1E8By\u1E8Fz\u017C\u015A\u1E64\u015B\u1E65\u0160"
  1786. +"\u1E66\u0161\u1E67\u017F\u1E9B\u0306\u0310\u1E62\u1E68\u1E63\u1E69",
  1787. "\u0308A\u00c4E\u00cbH\u1E26I\u00cfO\u00d6U\u00dcW\u1E84X\u1E8CY\u0178a\u00e4e\u00ebh\u1E27i\u00efo\u00f6t\u1E97u\u00fc"
  1788. +"w\u1E85x\u1E8Dy\u00ff\u00d5\u1E4E\u00f5\u1E4F\u016A\u1E7A\u016B\u1E7B\u018F\u04DA\u019F"
  1789. +"\u04EA\u0259\u04DB\u0275\u04EB\u0399\u03AA\u03A5\u03AB\u03B9\u03CA\u03C5"
  1790. +"\u03CB\u03D2\u03D4\u0406\u0407\u0410\u04D2\u0415\u0401\u0416\u04DC\u0417"
  1791. +"\u04DE\u0418\u04E4\u041E\u04E6\u0423\u04F0\u0427\u04F4\u042B\u04F8\u0430"
  1792. +"\u04D3\u0435\u0451\u0436\u04DD\u0437\u04DF\u0438\u04E5\u043E\u04E7\u0443"
  1793. +"\u04F1\u0447\u04F5\u044B\u04F9\u0456\u0457",
  1794. "\u0309A\u1EA2E\u1EBAI\u1EC8O\u1ECEU\u1EE6Y\u1EF6a\u1EA3e\u1EBBi\u1EC9"
  1795. +"o\u1ECFu\u1EE7y\u1EF7\u00c2\u1EA8\u00ca\u1EC2\u00d4\u1ED4\u00e2\u1EA9\u00ea\u1EC3\u00f4\u1ED5\u0102"
  1796. +"\u1EB2\u0103\u1EB3\u01A0\u1EDE\u01A1\u1EDF\u01AF\u1EEC\u01B0\u1EED",
  1797. "\u030AA\u00c5U\u016Ea\u00e5u\u016Fw\u1E98y\u1E99",
  1798. "\u030BO\u0150U\u0170o\u0151u\u0171\u0423\u04F2\u0443\u04F3",
  1799. "\u030CA\u01CDC\u010CD\u010EE\u011AG\u01E6I\u01CFK\u01E8L\u013DN\u0147"
  1800. +"O\u01D1R\u0158S\u0160T\u0164U\u01D3Z\u017Da\u01CEc\u010Dd\u010Fe\u011B"
  1801. +"g\u01E7i\u01D0j\u01F0k\u01E9l\u013En\u0148o\u01D2r\u0159s\u0161t\u0165"
  1802. +"u\u01D4z\u017E\u00dc\u01D9\u00fc\u01DA\u01B7\u01EE\u0292\u01EF",
  1803. "\u030D\u00a8\u0385\u0308\u0344\u0391\u0386\u0395\u0388\u0397\u0389\u0399\u038A"
  1804. +"\u039F\u038C\u03A5\u038E\u03A9\u038F\u03B1\u03AC\u03B5\u03AD\u03B7\u03AE"
  1805. +"\u03B9\u03AF\u03BF\u03CC\u03C5\u03CD\u03C9\u03CE\u03D2\u03D3",
  1806. "\u030FA\u0200E\u0204I\u0208O\u020CR\u0210U\u0214a\u0201e\u0205i\u0209"
  1807. +"o\u020Dr\u0211u\u0215\u0474\u0476\u0475\u0477",
  1808. "\u0311A\u0202E\u0206I\u020AO\u020ER\u0212U\u0216a\u0203e\u0207i\u020B"
  1809. +"o\u020Fr\u0213u\u0217",
  1810. "\u0313\u0391\u1F08\u0395\u1F18\u0397\u1F28\u0399\u1F38\u039F\u1F48\u03A9"
  1811. +"\u1F68\u03B1\u1F00\u03B5\u1F10\u03B7\u1F20\u03B9\u1F30\u03BF\u1F40\u03C1"
  1812. +"\u1FE4\u03C5\u1F50\u03C9\u1F60",
  1813. "\u0314\u0391\u1F09\u0395\u1F19\u0397\u1F29\u0399\u1F39\u039F\u1F49\u03A1"
  1814. +"\u1FEC\u03A5\u1F59\u03A9\u1F69\u03B1\u1F01\u03B5\u1F11\u03B7\u1F21\u03B9"
  1815. +"\u1F31\u03BF\u1F41\u03C1\u1FE5\u03C5\u1F51\u03C9\u1F61",
  1816. "\u031BO\u01A0U\u01AFo\u01A1u\u01B0\u00d2\u1EDC\u00d3\u1EDA\u00d5\u1EE0\u00d9\u1EEA\u00da\u1EE8"
  1817. +"\u00f2\u1EDD\u00f3\u1EDB\u00f5\u1EE1\u00f9\u1EEB\u00fa\u1EE9\u0168\u1EEE\u0169\u1EEF\u1ECC\u1EE2"
  1818. +"\u1ECD\u1EE3\u1ECE\u1EDE\u1ECF\u1EDF\u1EE4\u1EF0\u1EE5\u1EF1\u1EE6\u1EEC"
  1819. +"\u1EE7\u1EED",
  1820. "\u0323A\u1EA0B\u1E04D\u1E0CE\u1EB8H\u1E24I\u1ECAK\u1E32L\u1E36M\u1E42"
  1821. +"N\u1E46O\u1ECCR\u1E5AS\u1E62T\u1E6CU\u1EE4V\u1E7EW\u1E88Y\u1EF4Z\u1E92"
  1822. +"a\u1EA1b\u1E05d\u1E0De\u1EB9h\u1E25i\u1ECBk\u1E33l\u1E37m\u1E43n\u1E47"
  1823. +"o\u1ECDr\u1E5Bs\u1E63t\u1E6Du\u1EE5v\u1E7Fw\u1E89y\u1EF5z\u1E93\u00c2\u1EAC"
  1824. +"\u00ca\u1EC6\u00d4\u1ED8\u00e2\u1EAD\u00ea\u1EC7\u00f4\u1ED9\u0102\u1EB6\u0103\u1EB7\u01A0\u1EE2"
  1825. +"\u01A1\u1EE3\u01AF\u1EF0\u01B0\u1EF1",
  1826. "\u0324U\u1E72u\u1E73",
  1827. "\u0325A\u1E00a\u1E01",
  1828. "\u0327C\u00c7D\u1E10G\u0122H\u1E28K\u0136L\u013BN\u0145R\u0156S\u015ET\u0162"
  1829. +"c\u00e7d\u1E11g\u0123h\u1E29k\u0137l\u013Cn\u0146r\u0157s\u015Ft\u0163\u0106"
  1830. +"\u1E08\u0107\u1E09\u0114\u1E1C\u0115\u1E1D",
  1831. "\u0328A\u0104E\u0118I\u012EO\u01EAU\u0172a\u0105e\u0119i\u012Fo\u01EB"
  1832. +"u\u0173",
  1833. "\u032DD\u1E12E\u1E18L\u1E3CN\u1E4AT\u1E70U\u1E76d\u1E13e\u1E19l\u1E3D"
  1834. +"n\u1E4Bt\u1E71u\u1E77",
  1835. "\u032EH\u1E2Ah\u1E2B",
  1836. "\u0330E\u1E1AI\u1E2CU\u1E74e\u1E1Bi\u1E2Du\u1E75",
  1837. "\u0331B\u1E06D\u1E0EK\u1E34L\u1E3AN\u1E48R\u1E5ET\u1E6EZ\u1E94b\u1E07"
  1838. +"d\u1E0Fh\u1E96k\u1E35l\u1E3Bn\u1E49r\u1E5Ft\u1E6Fz\u1E95",
  1839. "\u0338<\u226E=\u2260>\u226F~\u2241\u00d3\u01FE\u00f3\u01FF\u2203\u2204\u2208\u2209"
  1840. +"\u220B\u220C\u2223\u2224\u2225\u2226\u2243\u2244\u2245\u2247\u2248\u2249"
  1841. +"\u224D\u226D\u2261\u2262\u2264\u2270\u2265\u2271\u2272\u2274\u2273\u2275"
  1842. +"\u2276\u2278\u2277\u2279\u227A\u2280\u227B\u2281\u227C\u22E0\u227D\u22E1"
  1843. +"\u2282\u2284\u2283\u2285\u2286\u2288\u2287\u2289\u2291\u22E2\u2292\u22E3"
  1844. +"\u22A2\u22AC\u22A8\u22AD\u22A9\u22AE\u22AB\u22AF\u22B2\u22EA\u22B3\u22EB"
  1845. +"\u22B4\u22EC\u22B5\u22ED",
  1846. "\u0342\u00a8\u1FC1\u03B1\u1FB6\u03B7\u1FC6\u03B9\u1FD6\u03C5\u1FE6\u03C9\u1FF6"
  1847. +"\u03CA\u1FD7\u03CB\u1FE7\u1F00\u1F06\u1F01\u1F07\u1F08\u1F0E\u1F09\u1F0F"
  1848. +"\u1F20\u1F26\u1F21\u1F27\u1F28\u1F2E\u1F29\u1F2F\u1F30\u1F36\u1F31\u1F37"
  1849. +"\u1F38\u1F3E\u1F39\u1F3F\u1F50\u1F56\u1F51\u1F57\u1F59\u1F5F\u1F60\u1F66"
  1850. +"\u1F61\u1F67\u1F68\u1F6E\u1F69\u1F6F\u1FBF\u1FCF\u1FFE\u1FDF",
  1851. "\u0344\u03B9\u0390\u03C5\u03B0",
  1852. "\u0345\u0391\u1FBC\u0397\u1FCC\u03A9\u1FFC\u03B1\u1FB3\u03B7\u1FC3\u03C9"
  1853. +"\u1FF3\u1F00\u1F80\u1F01\u1F81\u1F02\u1F82\u1F03\u1F83\u1F04\u1F84\u1F05"
  1854. +"\u1F85\u1F06\u1F86\u1F07\u1F87\u1F08\u1F88\u1F09\u1F89\u1F0A\u1F8A\u1F0B"
  1855. +"\u1F8B\u1F0C\u1F8C\u1F0D\u1F8D\u1F0E\u1F8E\u1F0F\u1F8F\u1F20\u1F90\u1F21"
  1856. +"\u1F91\u1F22\u1F92\u1F23\u1F93\u1F24\u1F94\u1F25\u1F95\u1F26\u1F96\u1F27"
  1857. +"\u1F97\u1F28\u1F98\u1F29\u1F99\u1F2A\u1F9A\u1F2B\u1F9B\u1F2C\u1F9C\u1F2D"
  1858. +"\u1F9D\u1F2E\u1F9E\u1F2F\u1F9F\u1F60\u1FA0\u1F61\u1FA1\u1F62\u1FA2\u1F63"
  1859. +"\u1FA3\u1F64\u1FA4\u1F65\u1FA5\u1F66\u1FA6\u1F67\u1FA7\u1F68\u1FA8\u1F69"
  1860. +"\u1FA9\u1F6A\u1FAA\u1F6B\u1FAB\u1F6C\u1FAC\u1F6D\u1FAD\u1F6E\u1FAE\u1F6F"
  1861. +"\u1FAF\u1F70\u1FB2\u1F71\u1FB4\u1F74\u1FC2\u1F75\u1FC4\u1F79\u1FF4\u1F7C"
  1862. +"\u1FF2\u1FB6\u1FB7\u1FC6\u1FC7\u1FF6\u1FF7",
  1863. "\u05B7\u05D0\uFB2E",
  1864. "\u05B8\u05D0\uFB2F",
  1865. "\u05B9\u05D5\uFB4B",
  1866. "\u05BC\u05D0\uFB30\u05D1\uFB31\u05D2\uFB32\u05D3\uFB33\u05D4\uFB34\u05D5"
  1867. +"\uFB35\u05D6\uFB36\u05D8\uFB38\u05D9\uFB39\u05DA\uFB3A\u05DB\uFB3B\u05DC"
  1868. +"\uFB3C\u05DE\uFB3E\u05E0\uFB40\u05E1\uFB41\u05E3\uFB43\u05E4\uFB44\u05E6"
  1869. +"\uFB46\u05E7\uFB47\u05E8\uFB48\u05E9\uFB49\u05EA\uFB4A\uFB2A\uFB2C\uFB2B"
  1870. +"\uFB2D",
  1871. "\u05BF\u05D1\uFB4C\u05DB\uFB4D\u05E4\uFB4E",
  1872. "\u05C1\u05E9\uFB2A\uFB49\uFB2C",
  1873. "\u05C2\u05E9\uFB2B\uFB49\uFB2D",
  1874. "\u093C\u0915\u0958\u0916\u0959\u0917\u095A\u091C\u095B\u0921\u095C\u0922"
  1875. +"\u095D\u0928\u0929\u092B\u095E\u092F\u095F\u0930\u0931\u0933\u0934",
  1876. "\u09BC\u09A1\u09DC\u09A2\u09DD\u09AC\u09B0\u09AF\u09DF",
  1877. "\u09BE\u09C7\u09CB",
  1878. "\u09D7\u09C7\u09CC",
  1879. "\u0A3C\u0A16\u0A59\u0A17\u0A5A\u0A1C\u0A5B\u0A21\u0A5C\u0A2B\u0A5E",
  1880. "\u0B3C\u0B21\u0B5C\u0B22\u0B5D\u0B2F\u0B5F",
  1881. "\u0B3E\u0B47\u0B4B",
  1882. "\u0B56\u0B47\u0B48",
  1883. "\u0B57\u0B47\u0B4C",
  1884. "\u0BBE\u0BC6\u0BCA\u0BC7\u0BCB",
  1885. "\u0BD7\u0B92\u0B94\u0BC6\u0BCC",
  1886. "\u0C56\u0C46\u0C48",
  1887. "\u0CC2\u0CC6\u0CCA",
  1888. "\u0CD5\u0CBF\u0CC0\u0CC6\u0CC7\u0CCA\u0CCB",
  1889. "\u0CD6\u0CC6\u0CC8",
  1890. "\u0D3E\u0D46\u0D4A\u0D47\u0D4B",
  1891. "\u0D57\u0D46\u0D4C",
  1892. "\u0F72\u0F71\u0F73",
  1893. "\u0F74\u0F71\u0F75",
  1894. "\u0F76\u0F71\u0F77",
  1895. "\u0F78\u0F71\u0F79",
  1896. "\u0F80\u0F71\u0F81\u0FB2\u0F76\u0FB3\u0F78",
  1897. "\u0FB5\u0F40\u0F69\u0F90\u0FB9",
  1898. "\u0FB7\u0F42\u0F43\u0F4C\u0F4D\u0F51\u0F52\u0F56\u0F57\u0F5B\u0F5C\u0F92"
  1899. +"\u0F93\u0F9C\u0F9D\u0FA1\u0FA2\u0FA6\u0FA7\u0FAB\u0FAC",
  1900. "\u3099\u3046\u3094\u304B\u304C\u304D\u304E\u304F\u3050\u3051\u3052\u3053"
  1901. +"\u3054\u3055\u3056\u3057\u3058\u3059\u305A\u305B\u305C\u305D\u305E\u305F"
  1902. +"\u3060\u3061\u3062\u3064\u3065\u3066\u3067\u3068\u3069\u306F\u3070\u3072"
  1903. +"\u3073\u3075\u3076\u3078\u3079\u307B\u307C\u309D\u309E\u30A6\u30F4\u30AB"
  1904. +"\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2\u30B3\u30B4\u30B5\u30B6\u30B7"
  1905. +"\u30B8\u30B9\u30BA\u30BB\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2\u30C4"
  1906. +"\u30C5\u30C6\u30C7\u30C8\u30C9\u30CF\u30D0\u30D2\u30D3\u30D5\u30D6\u30D8"
  1907. +"\u30D9\u30DB\u30DC\u30EF\u30F7\u30F0\u30F8\u30F1\u30F9\u30F2\u30FA\u30FD"
  1908. +"\u30FE"
  1909. //*/
  1910. };
  1911. for (int j = 0; j < patterns.length; ++j) {
  1912. String pattern = patterns[j];
  1913. char ch = pattern.charAt(0);
  1914. if (ch < minimumCombining) minimumCombining = ch;
  1915. for (int i = 1; i < pattern.length(); i += 2) {
  1916. composeMapping.put((pattern.charAt(i)<<16) + ch, pattern.charAt(i+1));
  1917. }
  1918. }
  1919. }
  1920. }