ISSUE: http://code.google.com/p/zxing/issues/detail?id=42
[zxing.git] / core / src / com / google / zxing / pdf417 / decoder / BitMatrixParser.java
1 /*\r
2  * Copyright 2007 ZXing authors\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *      http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 package com.google.zxing.pdf417.decoder;\r
17 \r
18 import com.google.zxing.ReaderException;\r
19 import com.google.zxing.common.BitMatrix;\r
20 \r
21 /**\r
22  * <p>\r
23  * This class parses the BitMatrix image into codewords.\r
24  * </p>\r
25  * \r
26  * @author SITA Lab (kevin.osullivan@sita.aero)\r
27  */\r
28 final class BitMatrixParser {\r
29    public static final boolean debug = false;\r
30    private static final int MAX_ROW_DIFFERENCE = 6;\r
31    private static final int MAX_ROWS = 90;\r
32    private static final int MAX_COLUMNS = 30;\r
33    // Maximum Codewords (Data + Error)\r
34    private static final int MAX_CW_CAPACITY = 929;\r
35    private static final int MODULES_IN_SYMBOL = 17;\r
36 \r
37    private final BitMatrix bitMatrix;\r
38    int rows = 0;\r
39    int columns = 0;\r
40 \r
41    int leftColumnECData = 0;\r
42    int rightColumnECData = 0;\r
43    int eraseCount = 0;\r
44    int erasures[] = null;\r
45    int ecLevel = -1;\r
46 \r
47    BitMatrixParser(BitMatrix bitMatrix) {\r
48       this.bitMatrix = bitMatrix;\r
49    }\r
50 \r
51    /**\r
52     * To ensure separability of rows, codewords of consecutive rows belong to\r
53     * different subsets of all possible codewords. This routine scans the\r
54     * symbols in the barcode. When it finds a number of consecutive rows which\r
55     * are the same, it assumes that this is a row of codewords and processes\r
56     * them into a codeword array.\r
57     * \r
58     * @return an array of codewords.\r
59     */\r
60    int[] readCodewords() throws ReaderException {\r
61       int width = bitMatrix.getDimension();\r
62       // TODO should be a rectangular matrix\r
63       int height = width;\r
64 \r
65       int rowHeight = 0;\r
66       int rowNumber = 0;\r
67       boolean rowInProgress = false;\r
68       int matchingConsecutiveScans = 0;\r
69 \r
70       int next = 0;\r
71       int codewords[] = new int[MAX_CW_CAPACITY];\r
72       erasures = new int[MAX_CW_CAPACITY];\r
73 \r
74       // Get the number of pixels in a module across the X dimension\r
75       //float moduleWidth = bitMatrix.getModuleWidth();\r
76       float moduleWidth = 1.0f; // Image has been sampled and reduced\r
77 \r
78       int rowCounters[] = new int[width];\r
79       for (int i = 1; i < height; i++) {\r
80          if (rowNumber >= MAX_ROWS) {\r
81             // Something is wrong, since we have exceeded\r
82             // the maximum rows in the specification.\r
83             // TODO Maybe return error code\r
84             return null;\r
85          }\r
86          int rowDifference = 0;\r
87          // Scan a line of modules and check the\r
88          // difference between this and the previous line\r
89          for (int j = 0; j < width; j++) {\r
90             // Accumulate differences between this line and the\r
91             // previous line.\r
92             if (bitMatrix.get(i, j) != bitMatrix.get(i - 1, j)) {\r
93                rowDifference++;\r
94             }\r
95          }\r
96          if (rowDifference <= moduleWidth * MAX_ROW_DIFFERENCE) {\r
97             for (int j = 0; j < width; j++) {\r
98                // Accumulate the black pixels on this line\r
99                if (bitMatrix.get(i, j)) {\r
100                   rowCounters[j]++;\r
101                }\r
102             }\r
103             // Increment the number of consecutive rows of pixels\r
104             // that are more or less the same\r
105             matchingConsecutiveScans++;\r
106             // Height of a row is a multiple of the module size in pixels\r
107             // Usually at least 3 times the module size\r
108             if (matchingConsecutiveScans >= moduleWidth * 2) { // MGMG\r
109                // We have some previous matches as well as a match here\r
110                // Set processing a unique row.\r
111                rowInProgress = true;\r
112             }\r
113          } else {\r
114             if (rowInProgress) {\r
115                // Process Row\r
116                if (debug)\r
117                   System.out.println("Row Height=" + rowHeight + " Row Number="\r
118                         + rowNumber);\r
119                next = processRow(rowCounters, rowNumber, rowHeight,\r
120                      moduleWidth, codewords, next);\r
121                if (next == -1) {\r
122                   // Something is wrong, since we have exceeded\r
123                   // the maximum columns in the specification.\r
124                   // TODO Maybe return error code\r
125                   return null;\r
126                }\r
127                // Reinitialize the row counters.\r
128                for (int j = 0; j < rowCounters.length; j++) {\r
129                   rowCounters[j] = 0;\r
130                }\r
131                rowNumber++;\r
132                rowHeight = 0;\r
133             }\r
134             matchingConsecutiveScans = 0;\r
135             rowInProgress = false;\r
136          }\r
137          rowHeight++;\r
138       }\r
139       // Check for a row that was in progress before we exited above.\r
140       if (rowInProgress) {\r
141          // Process Row\r
142          if (debug)\r
143             System.out.println("Row Height=" + rowHeight + " Row Number="\r
144                   + rowNumber);\r
145          if (rowNumber >= MAX_ROWS) {\r
146             // Something is wrong, since we have exceeded\r
147             // the maximum rows in the specification.\r
148             // TODO Maybe return error code\r
149             return null;\r
150          }\r
151          next = processRow(rowCounters, rowNumber, rowHeight, moduleWidth,\r
152                codewords, next);\r
153          rowNumber++;\r
154          rows = rowNumber;\r
155       }\r
156       if (debug)\r
157          System.out.println("Errors=" + eraseCount);\r
158       erasures = trimArray(erasures, eraseCount);\r
159       return trimArray(codewords, next);\r
160    }\r
161 \r
162    /**\r
163     * Trim the array to the required size.\r
164     * \r
165     * @param array\r
166     *           the array\r
167     * @param size\r
168     *           the size to trim it to\r
169     * @return the new trimmed array\r
170     */\r
171    private int[] trimArray(int array[], int size) {\r
172       if (size > 0) {\r
173          int a[] = new int[size];\r
174          for (int i = 0; i < size; i++) {\r
175             a[i] = array[i];\r
176          }\r
177          return a;\r
178       } else {\r
179          return null;\r
180       }\r
181    }\r
182 \r
183    /**\r
184     * Convert the symbols in the row to codewords.\r
185     * \r
186     * @param rowCounters\r
187     *           an array containing the counts of black pixels for each column\r
188     *           in the row.\r
189     * @param rowNumber\r
190     *           the current row number of codewords.\r
191     * @param rowHeight\r
192     *           the height of this row in pixels.\r
193     * @param moduleWidth\r
194     *           the size of a module in pixels.\r
195     * @param codewords\r
196     *           the codeword array to save codewords into.\r
197     * @param next\r
198     *           the next available index into the codewords array.\r
199     * @return the next available index into the codeword array after processing\r
200     *         this row.\r
201     * @throws ReaderException\r
202     */\r
203    /*\r
204     * Each PDF417 symbol character consists of four bar elements and four space\r
205     * elements, each of which can be one to six modules wide. The four bar and\r
206     * four space elements shall measure 17 modules in total.\r
207     */\r
208    int processRow(int rowCounters[], int rowNumber, int rowHeight,\r
209          float moduleWidth, int codewords[], int next) throws ReaderException {\r
210       int width = bitMatrix.getDimension();\r
211       int columnNumber = 0;\r
212       long symbol = 0;\r
213       for (int i = 0; i < width; i += MODULES_IN_SYMBOL) {\r
214          for (int mask = MODULES_IN_SYMBOL - 1; mask >= 0; mask--) {\r
215             if (rowCounters[i + (MODULES_IN_SYMBOL - 1 - mask)] >= rowHeight / 2) {\r
216                symbol |= 1 << mask;\r
217             }\r
218          }\r
219          if (columnNumber > 0) {\r
220             int cw = getCodeword(symbol, rowNumber);\r
221             // if (debug) System.out.println(" " + Long.toBinaryString(symbol) +\r
222             // " cw=" +cw + " ColumnNumber=" +columnNumber + "i=" +i);\r
223             if (cw < 0 && i < width - MODULES_IN_SYMBOL) {\r
224                // Skip errors on the Right row indicator column\r
225                erasures[eraseCount] = next;\r
226                next++;\r
227                eraseCount++;\r
228             } else {\r
229                codewords[next++] = cw;\r
230             }\r
231          } else {\r
232             // Left row indicator column\r
233             int cw = getCodeword(symbol, rowNumber);\r
234             // if (debug) System.out.println(" " + Long.toBinaryString(symbol) +\r
235             // " cw=" +cw + " ColumnNumber=" +columnNumber + "i=" +i);\r
236             if (ecLevel < 0) {\r
237                switch (rowNumber % 3) {\r
238                case 0:\r
239                   break;\r
240                case 1:\r
241                   leftColumnECData = cw;\r
242                   break;\r
243                case 2:\r
244                   break;\r
245                }\r
246             }\r
247          }\r
248          symbol = 0;\r
249          columns = columnNumber;\r
250          columnNumber++;\r
251       }\r
252       if (columnNumber > 1) {\r
253          // Right row indicator column is in codeword[next]\r
254          columns--;\r
255          // Overwrite the last codeword i.e. Right Row Indicator\r
256          --next;\r
257          if (ecLevel < 0) {\r
258             switch (rowNumber % 3) {\r
259             case 0:\r
260                break;\r
261             case 1:\r
262                break;\r
263             case 2:\r
264                rightColumnECData = codewords[next];\r
265                if (rightColumnECData == leftColumnECData\r
266                      && leftColumnECData != 0) {\r
267                   ecLevel = ((rightColumnECData % 30) - rows % 3) / 3;\r
268                }\r
269                break;\r
270             }\r
271          }\r
272          codewords[next] = 0;\r
273       }\r
274       return next;\r
275    }\r
276 \r
277    /**\r
278     * Build a symbol from the pixels\r
279     * \r
280     * @param counters\r
281     *           array of pixel counter corresponding to each Bar/Space pattern.\r
282     * @param rowNumber\r
283     * @return the symbol\r
284     */\r
285    /*\r
286     * Each symbol character is defined by an 8-digit bar-space sequence which\r
287     * represents the module widths of the eight elements of that symbol\r
288     * character.\r
289     */\r
290    private long getSymbol(int counters[], int rowNumber, float moduleWidth) {\r
291       int symbol = 0;\r
292       int pixelsInSymbol = 0;\r
293       for (int j = 0; j < counters.length; j++) {\r
294          pixelsInSymbol += counters[j];\r
295       }\r
296       float avgModuleWidth = (pixelsInSymbol / 17.0f);\r
297       if (debug)\r
298          System.out.println("Average Module Width = " + avgModuleWidth);\r
299       boolean toggle = true;\r
300       int shift = 0;\r
301       for (int j = 0; j < counters.length; j++) {\r
302          if (counters[j] < moduleWidth && counters[j] > 0) {\r
303             // Give a very narrow bar/space a chance\r
304             counters[j] = (int) moduleWidth;\r
305          }\r
306          // Calculate number of modules in the symbol.\r
307          // int modules = (int)(counters[j]/moduleWidth);\r
308          // int modules = round(counters[j]/moduleWidth);\r
309          int modules = round(counters[j] / avgModuleWidth);\r
310          if (modules > 6) {\r
311             // Maximum size is 6 modules\r
312             modules = 6;\r
313          } else if (modules < 1) {\r
314             modules = 1;\r
315          }\r
316          if (toggle) {\r
317             for (int k = 0; k < modules; k++) {\r
318                symbol |= 1 << (16 - k - shift);\r
319             }\r
320             toggle = false;\r
321          } else {\r
322             toggle = true;\r
323          }\r
324          shift += modules;\r
325       }\r
326       return symbol;\r
327    }\r
328 \r
329    /**\r
330     * Translate the symbol into a codeword.\r
331     * \r
332     * @param symbol\r
333     * @param row\r
334     * @return the codeword corresponding to the symbol.\r
335     * @throws ReaderException\r
336     */\r
337    private int getCodeword(long symbol, int row) throws ReaderException {\r
338       long cw = 0;\r
339 \r
340       long sym = symbol;\r
341       sym &= 0x3ffff;\r
342       int i = findCodewordIndex(sym);\r
343       if (i != -1) {\r
344          cw = codewordTable[i] - 1;\r
345          cw = cw % 929;\r
346       } else {\r
347          if (debug)\r
348             System.out.println("UNABLE TO FIND " + symbol); // Long.toBinaryString(symbol));\r
349          return -1;\r
350       }\r
351       return (int) cw;\r
352    }\r
353 \r
354    /**\r
355     * Use a binary search to find the index of the codeword corresponding to\r
356     * this symbol.\r
357     * \r
358     * @param symbol\r
359     *           the symbol from the barcode.\r
360     * @return the index into the codeword table.\r
361     */\r
362    private int findCodewordIndex(long symbol) throws ReaderException {\r
363       int first = 0;\r
364       int upto = symbolTable.length;\r
365       while (first < upto) {\r
366          int mid = (first + upto) / 2; // Compute mid point.\r
367          if (symbol < symbolTable[mid]) {\r
368             upto = mid; // repeat search in bottom half.\r
369          } else if (symbol > symbolTable[mid]) {\r
370             first = mid + 1; // Repeat search in top half.\r
371          } else {\r
372             return mid; // Found it. return position\r
373          }\r
374       }\r
375       return -1;\r
376       // if (debug) System.out.println("Failed to find codeword for Symbol=" +\r
377       // symbol);\r
378    }\r
379 \r
380    /**\r
381     * Ends up being a bit faster than Math.round(). This merely rounds its\r
382     * argument to the nearest int, where x.5 rounds up.\r
383     */\r
384    private static int round(float d) {\r
385       return (int) (d + 0.5f);\r
386    }\r
387 \r
388    /**\r
389     * Returns the number of codewords flagged as erasures.\r
390     */\r
391    public int getEraseCount() {\r
392       return eraseCount;\r
393    }\r
394 \r
395    /**\r
396     * Returns an array of locations representing the erasures.\r
397     */\r
398    public int[] getErasures() {\r
399       return erasures;\r
400    }\r
401 \r
402    public int getECLevel() {\r
403       return ecLevel;\r
404    }\r
405 \r
406    /**\r
407     * Convert the symbols in the row to codewords.\r
408     * \r
409     * @param rowCounters\r
410     *           an array containing the counts of black pixels for each column\r
411     *           in the row.\r
412     * @param rowNumber\r
413     *           the current row number of codewords.\r
414     * @param rowHeight\r
415     *           the height of this row in pixels.\r
416     * @param moduleWidth\r
417     *           the size of a module in pixels.\r
418     * @param codewords\r
419     *           the codeword array to save codewords into.\r
420     * @param next\r
421     *           the next available index into the codewords array.\r
422     * @return the next available index into the codeword array after processing\r
423     *         this row.\r
424     * @throws ReaderException\r
425     */\r
426    /*\r
427     * Each PDF417 symbol character consists of four bar elements and four space\r
428     * elements, each of which can be one to six modules wide. The four bar and\r
429     * four space elements shall measure 17 modules in total.\r
430     */\r
431    int processRow1(int rowCounters[], int rowNumber, int rowHeight,\r
432          float moduleWidth, int codewords[], int next) throws ReaderException {\r
433       int width = bitMatrix.getDimension();\r
434       int columnNumber = 0;\r
435       int firstBlack = 0;\r
436 \r
437       for (firstBlack = 0; firstBlack < width; firstBlack++) {\r
438          // Step forward until we find the first black pixels\r
439          if (rowCounters[firstBlack] >= rowHeight / 2) {\r
440             break;\r
441          }\r
442       }\r
443 \r
444       int counters[] = new int[8];\r
445       int state = 0; // In black pixels, looking for white, first or second time\r
446       long symbol = 0;\r
447       for (int i = firstBlack; i < width; i++) {\r
448          if (state == 1 || state == 3 || state == 5 || state == 7) { // In white\r
449                                                                      // pixels,\r
450                                                                      // looking\r
451                                                                      // for\r
452                                                                      // black\r
453             // If more than half the column is black\r
454             if (rowCounters[i] >= rowHeight / 2 || i == width - 1) {\r
455                if (i == width - 1) {\r
456                   counters[state]++;\r
457                }\r
458                // In black pixels or the end of a row\r
459                state++;\r
460                if (state < 8) {\r
461                   // Don't count the last one\r
462                   counters[state]++;\r
463                }\r
464             } else {\r
465                counters[state]++;\r
466             }\r
467          } else {\r
468             if (rowCounters[i] < rowHeight / 2) {\r
469                // Found white pixels\r
470                state++;\r
471                if (state == 7 && i == width - 1) {\r
472                   // Its found white pixels at the end of the row,\r
473                   // give it a chance to exit gracefully\r
474                   i--;\r
475                } else {\r
476                   // Found white pixels\r
477                   counters[state]++;\r
478                }\r
479             } else {\r
480                if (state < 8) {\r
481                   // Still in black pixels\r
482                   counters[state]++;\r
483                }\r
484             }\r
485          }\r
486          if (state == 8) { // Found black, white, black, white, black, white,\r
487                            // black, white and stumbled back onto black; done\r
488             if (columnNumber >= MAX_COLUMNS) {\r
489                // Something is wrong, since we have exceeded\r
490                // the maximum columns in the specification.\r
491                // TODO Maybe return error code\r
492                return -1;\r
493             }\r
494             if (columnNumber > 0) {\r
495                symbol = getSymbol(counters, rowNumber, moduleWidth);\r
496                int cw = getCodeword(symbol, rowNumber);\r
497                // if (debug) System.out.println(" " +\r
498                // Long.toBinaryString(symbol) + " cw=" +cw + " ColumnNumber="\r
499                // +columnNumber + "i=" +i);\r
500                if (cw < 0) {\r
501                   erasures[eraseCount] = next;\r
502                   next++;\r
503                   eraseCount++;\r
504                } else {\r
505                   codewords[next++] = cw;\r
506                }\r
507             } else {\r
508                // Left row indicator column\r
509                symbol = getSymbol(counters, rowNumber, moduleWidth);\r
510                int cw = getCodeword(symbol, rowNumber);\r
511                if (debug) {\r
512                   System.out.println("Left Column CW=" + cw + " Cluster="\r
513                         + rowNumber % 3);\r
514                }\r
515                if (ecLevel < 0) {\r
516                   switch (rowNumber % 3) {\r
517                   case 0:\r
518                      break;\r
519                   case 1:\r
520                      leftColumnECData = cw;\r
521                      break;\r
522                   case 2:\r
523                      break;\r
524                   }\r
525                }\r
526             }\r
527             // Step back so that this pixel can be examined during the next\r
528             // pass.\r
529             i--;\r
530             counters = new int[8];\r
531             columns = columnNumber;\r
532             columnNumber++;\r
533             /*\r
534              * // Introduce some errors if (rowNumber == 0 && columnNumber == 4)\r
535              * { codewords[next-1] = 0; erasures[eraseCount] = next-1;\r
536              * eraseCount++; } if (rowNumber == 0 && columnNumber == 6) {\r
537              * codewords[next-1] = 10; erasures[eraseCount] = next-1;\r
538              * eraseCount++; } if (rowNumber == 0 && columnNumber == 8) {\r
539              * codewords[next-1] = 10; erasures[eraseCount] = next-1;\r
540              * eraseCount++; }\r
541              */\r
542             state = 0;\r
543             symbol = 0;\r
544          }\r
545       }\r
546       if (columnNumber > 1) {\r
547          // Right row indicator column is in codeword[next]\r
548          columns--;\r
549          // Overwrite the last codeword i.e. Right Row Indicator\r
550          --next;\r
551          if (ecLevel < 0) {\r
552             switch (rowNumber % 3) {\r
553             case 0:\r
554                break;\r
555             case 1:\r
556                break;\r
557             case 2:\r
558                rightColumnECData = codewords[next];\r
559                if (rightColumnECData == leftColumnECData\r
560                      && leftColumnECData != 0) {\r
561                   ecLevel = ((rightColumnECData % 30) - rows % 3) / 3;\r
562                }\r
563                break;\r
564             }\r
565          }\r
566          codewords[next] = 0;\r
567          if (debug)\r
568             System.out.println("Right Column CW=" + codewords[next]\r
569                   + " Cluster=" + rowNumber % 3);\r
570       }\r
571       return next;\r
572    }\r
573 \r
574    /**\r
575     * The sorted table of all possible symbols. Extracted from the PDF417\r
576     * specification. The index of a symbol in this table corresponds to the\r
577     * index into the codeword table.\r
578     */\r
579    private static final int symbolTable[] = { 0x1025e, 0x1027a, 0x1029e,\r
580          0x102bc, 0x102f2, 0x102f4, 0x1032e, 0x1034e, 0x1035c, 0x10396,\r
581          0x103a6, 0x103ac, 0x10422, 0x10428, 0x10436, 0x10442, 0x10444,\r
582          0x10448, 0x10450, 0x1045e, 0x10466, 0x1046c, 0x1047a, 0x10482,\r
583          0x1049e, 0x104a0, 0x104bc, 0x104c6, 0x104d8, 0x104ee, 0x104f2,\r
584          0x104f4, 0x10504, 0x10508, 0x10510, 0x1051e, 0x10520, 0x1053c,\r
585          0x10540, 0x10578, 0x10586, 0x1058c, 0x10598, 0x105b0, 0x105be,\r
586          0x105ce, 0x105dc, 0x105e2, 0x105e4, 0x105e8, 0x105f6, 0x1062e,\r
587          0x1064e, 0x1065c, 0x1068e, 0x1069c, 0x106b8, 0x106de, 0x106fa,\r
588          0x10716, 0x10726, 0x1072c, 0x10746, 0x1074c, 0x10758, 0x1076e,\r
589          0x10792, 0x10794, 0x107a2, 0x107a4, 0x107a8, 0x107b6, 0x10822,\r
590          0x10828, 0x10842, 0x10848, 0x10850, 0x1085e, 0x10866, 0x1086c,\r
591          0x1087a, 0x10882, 0x10884, 0x10890, 0x1089e, 0x108a0, 0x108bc,\r
592          0x108c6, 0x108cc, 0x108d8, 0x108ee, 0x108f2, 0x108f4, 0x10902,\r
593          0x10908, 0x1091e, 0x10920, 0x1093c, 0x10940, 0x10978, 0x10986,\r
594          0x10998, 0x109b0, 0x109be, 0x109ce, 0x109dc, 0x109e2, 0x109e4,\r
595          0x109e8, 0x109f6, 0x10a08, 0x10a10, 0x10a1e, 0x10a20, 0x10a3c,\r
596          0x10a40, 0x10a78, 0x10af0, 0x10b06, 0x10b0c, 0x10b18, 0x10b30,\r
597          0x10b3e, 0x10b60, 0x10b7c, 0x10b8e, 0x10b9c, 0x10bb8, 0x10bc2,\r
598          0x10bc4, 0x10bc8, 0x10bd0, 0x10bde, 0x10be6, 0x10bec, 0x10c2e,\r
599          0x10c4e, 0x10c5c, 0x10c62, 0x10c64, 0x10c68, 0x10c76, 0x10c8e,\r
600          0x10c9c, 0x10cb8, 0x10cc2, 0x10cc4, 0x10cc8, 0x10cd0, 0x10cde,\r
601          0x10ce6, 0x10cec, 0x10cfa, 0x10d0e, 0x10d1c, 0x10d38, 0x10d70,\r
602          0x10d7e, 0x10d82, 0x10d84, 0x10d88, 0x10d90, 0x10d9e, 0x10da0,\r
603          0x10dbc, 0x10dc6, 0x10dcc, 0x10dd8, 0x10dee, 0x10df2, 0x10df4,\r
604          0x10e16, 0x10e26, 0x10e2c, 0x10e46, 0x10e58, 0x10e6e, 0x10e86,\r
605          0x10e8c, 0x10e98, 0x10eb0, 0x10ebe, 0x10ece, 0x10edc, 0x10f0a,\r
606          0x10f12, 0x10f14, 0x10f22, 0x10f28, 0x10f36, 0x10f42, 0x10f44,\r
607          0x10f48, 0x10f50, 0x10f5e, 0x10f66, 0x10f6c, 0x10fb2, 0x10fb4,\r
608          0x11022, 0x11028, 0x11042, 0x11048, 0x11050, 0x1105e, 0x1107a,\r
609          0x11082, 0x11084, 0x11090, 0x1109e, 0x110a0, 0x110bc, 0x110c6,\r
610          0x110cc, 0x110d8, 0x110ee, 0x110f2, 0x110f4, 0x11102, 0x1111e,\r
611          0x11120, 0x1113c, 0x11140, 0x11178, 0x11186, 0x11198, 0x111b0,\r
612          0x111be, 0x111ce, 0x111dc, 0x111e2, 0x111e4, 0x111e8, 0x111f6,\r
613          0x11208, 0x1121e, 0x11220, 0x11278, 0x112f0, 0x1130c, 0x11330,\r
614          0x1133e, 0x11360, 0x1137c, 0x1138e, 0x1139c, 0x113b8, 0x113c2,\r
615          0x113c8, 0x113d0, 0x113de, 0x113e6, 0x113ec, 0x11408, 0x11410,\r
616          0x1141e, 0x11420, 0x1143c, 0x11440, 0x11478, 0x114f0, 0x115e0,\r
617          0x1160c, 0x11618, 0x11630, 0x1163e, 0x11660, 0x1167c, 0x116c0,\r
618          0x116f8, 0x1171c, 0x11738, 0x11770, 0x1177e, 0x11782, 0x11784,\r
619          0x11788, 0x11790, 0x1179e, 0x117a0, 0x117bc, 0x117c6, 0x117cc,\r
620          0x117d8, 0x117ee, 0x1182e, 0x11834, 0x1184e, 0x1185c, 0x11862,\r
621          0x11864, 0x11868, 0x11876, 0x1188e, 0x1189c, 0x118b8, 0x118c2,\r
622          0x118c8, 0x118d0, 0x118de, 0x118e6, 0x118ec, 0x118fa, 0x1190e,\r
623          0x1191c, 0x11938, 0x11970, 0x1197e, 0x11982, 0x11984, 0x11990,\r
624          0x1199e, 0x119a0, 0x119bc, 0x119c6, 0x119cc, 0x119d8, 0x119ee,\r
625          0x119f2, 0x119f4, 0x11a0e, 0x11a1c, 0x11a38, 0x11a70, 0x11a7e,\r
626          0x11ae0, 0x11afc, 0x11b08, 0x11b10, 0x11b1e, 0x11b20, 0x11b3c,\r
627          0x11b40, 0x11b78, 0x11b8c, 0x11b98, 0x11bb0, 0x11bbe, 0x11bce,\r
628          0x11bdc, 0x11be2, 0x11be4, 0x11be8, 0x11bf6, 0x11c16, 0x11c26,\r
629          0x11c2c, 0x11c46, 0x11c4c, 0x11c58, 0x11c6e, 0x11c86, 0x11c98,\r
630          0x11cb0, 0x11cbe, 0x11cce, 0x11cdc, 0x11ce2, 0x11ce4, 0x11ce8,\r
631          0x11cf6, 0x11d06, 0x11d0c, 0x11d18, 0x11d30, 0x11d3e, 0x11d60,\r
632          0x11d7c, 0x11d8e, 0x11d9c, 0x11db8, 0x11dc4, 0x11dc8, 0x11dd0,\r
633          0x11dde, 0x11de6, 0x11dec, 0x11dfa, 0x11e0a, 0x11e12, 0x11e14,\r
634          0x11e22, 0x11e24, 0x11e28, 0x11e36, 0x11e42, 0x11e44, 0x11e50,\r
635          0x11e5e, 0x11e66, 0x11e6c, 0x11e82, 0x11e84, 0x11e88, 0x11e90,\r
636          0x11e9e, 0x11ea0, 0x11ebc, 0x11ec6, 0x11ecc, 0x11ed8, 0x11eee,\r
637          0x11f1a, 0x11f2e, 0x11f32, 0x11f34, 0x11f4e, 0x11f5c, 0x11f62,\r
638          0x11f64, 0x11f68, 0x11f76, 0x12048, 0x1205e, 0x12082, 0x12084,\r
639          0x12090, 0x1209e, 0x120a0, 0x120bc, 0x120d8, 0x120f2, 0x120f4,\r
640          0x12108, 0x1211e, 0x12120, 0x1213c, 0x12140, 0x12178, 0x12186,\r
641          0x12198, 0x121b0, 0x121be, 0x121e2, 0x121e4, 0x121e8, 0x121f6,\r
642          0x12204, 0x12210, 0x1221e, 0x12220, 0x12278, 0x122f0, 0x12306,\r
643          0x1230c, 0x12330, 0x1233e, 0x12360, 0x1237c, 0x1238e, 0x1239c,\r
644          0x123b8, 0x123c2, 0x123c8, 0x123d0, 0x123e6, 0x123ec, 0x1241e,\r
645          0x12420, 0x1243c, 0x124f0, 0x125e0, 0x12618, 0x1263e, 0x12660,\r
646          0x1267c, 0x126c0, 0x126f8, 0x12738, 0x12770, 0x1277e, 0x12782,\r
647          0x12784, 0x12790, 0x1279e, 0x127a0, 0x127bc, 0x127c6, 0x127cc,\r
648          0x127d8, 0x127ee, 0x12820, 0x1283c, 0x12840, 0x12878, 0x128f0,\r
649          0x129e0, 0x12bc0, 0x12c18, 0x12c30, 0x12c3e, 0x12c60, 0x12c7c,\r
650          0x12cc0, 0x12cf8, 0x12df0, 0x12e1c, 0x12e38, 0x12e70, 0x12e7e,\r
651          0x12ee0, 0x12efc, 0x12f04, 0x12f08, 0x12f10, 0x12f20, 0x12f3c,\r
652          0x12f40, 0x12f78, 0x12f86, 0x12f8c, 0x12f98, 0x12fb0, 0x12fbe,\r
653          0x12fce, 0x12fdc, 0x1302e, 0x1304e, 0x1305c, 0x13062, 0x13068,\r
654          0x1308e, 0x1309c, 0x130b8, 0x130c2, 0x130c8, 0x130d0, 0x130de,\r
655          0x130ec, 0x130fa, 0x1310e, 0x13138, 0x13170, 0x1317e, 0x13182,\r
656          0x13184, 0x13190, 0x1319e, 0x131a0, 0x131bc, 0x131c6, 0x131cc,\r
657          0x131d8, 0x131f2, 0x131f4, 0x1320e, 0x1321c, 0x13270, 0x1327e,\r
658          0x132e0, 0x132fc, 0x13308, 0x1331e, 0x13320, 0x1333c, 0x13340,\r
659          0x13378, 0x13386, 0x13398, 0x133b0, 0x133be, 0x133ce, 0x133dc,\r
660          0x133e2, 0x133e4, 0x133e8, 0x133f6, 0x1340e, 0x1341c, 0x13438,\r
661          0x13470, 0x1347e, 0x134e0, 0x134fc, 0x135c0, 0x135f8, 0x13608,\r
662          0x13610, 0x1361e, 0x13620, 0x1363c, 0x13640, 0x13678, 0x136f0,\r
663          0x1370c, 0x13718, 0x13730, 0x1373e, 0x13760, 0x1377c, 0x1379c,\r
664          0x137b8, 0x137c2, 0x137c4, 0x137c8, 0x137d0, 0x137de, 0x137e6,\r
665          0x137ec, 0x13816, 0x13826, 0x1382c, 0x13846, 0x1384c, 0x13858,\r
666          0x1386e, 0x13874, 0x13886, 0x13898, 0x138b0, 0x138be, 0x138ce,\r
667          0x138dc, 0x138e2, 0x138e4, 0x138e8, 0x13906, 0x1390c, 0x13930,\r
668          0x1393e, 0x13960, 0x1397c, 0x1398e, 0x1399c, 0x139b8, 0x139c8,\r
669          0x139d0, 0x139de, 0x139e6, 0x139ec, 0x139fa, 0x13a06, 0x13a0c,\r
670          0x13a18, 0x13a30, 0x13a3e, 0x13a60, 0x13a7c, 0x13ac0, 0x13af8,\r
671          0x13b0e, 0x13b1c, 0x13b38, 0x13b70, 0x13b7e, 0x13b88, 0x13b90,\r
672          0x13b9e, 0x13ba0, 0x13bbc, 0x13bcc, 0x13bd8, 0x13bee, 0x13bf2,\r
673          0x13bf4, 0x13c12, 0x13c14, 0x13c22, 0x13c24, 0x13c28, 0x13c36,\r
674          0x13c42, 0x13c48, 0x13c50, 0x13c5e, 0x13c66, 0x13c6c, 0x13c82,\r
675          0x13c84, 0x13c90, 0x13c9e, 0x13ca0, 0x13cbc, 0x13cc6, 0x13ccc,\r
676          0x13cd8, 0x13cee, 0x13d02, 0x13d04, 0x13d08, 0x13d10, 0x13d1e,\r
677          0x13d20, 0x13d3c, 0x13d40, 0x13d78, 0x13d86, 0x13d8c, 0x13d98,\r
678          0x13db0, 0x13dbe, 0x13dce, 0x13ddc, 0x13de4, 0x13de8, 0x13df6,\r
679          0x13e1a, 0x13e2e, 0x13e32, 0x13e34, 0x13e4e, 0x13e5c, 0x13e62,\r
680          0x13e64, 0x13e68, 0x13e76, 0x13e8e, 0x13e9c, 0x13eb8, 0x13ec2,\r
681          0x13ec4, 0x13ec8, 0x13ed0, 0x13ede, 0x13ee6, 0x13eec, 0x13f26,\r
682          0x13f2c, 0x13f3a, 0x13f46, 0x13f4c, 0x13f58, 0x13f6e, 0x13f72,\r
683          0x13f74, 0x14082, 0x1409e, 0x140a0, 0x140bc, 0x14104, 0x14108,\r
684          0x14110, 0x1411e, 0x14120, 0x1413c, 0x14140, 0x14178, 0x1418c,\r
685          0x14198, 0x141b0, 0x141be, 0x141e2, 0x141e4, 0x141e8, 0x14208,\r
686          0x14210, 0x1421e, 0x14220, 0x1423c, 0x14240, 0x14278, 0x142f0,\r
687          0x14306, 0x1430c, 0x14318, 0x14330, 0x1433e, 0x14360, 0x1437c,\r
688          0x1438e, 0x143c2, 0x143c4, 0x143c8, 0x143d0, 0x143e6, 0x143ec,\r
689          0x14408, 0x14410, 0x1441e, 0x14420, 0x1443c, 0x14440, 0x14478,\r
690          0x144f0, 0x145e0, 0x1460c, 0x14618, 0x14630, 0x1463e, 0x14660,\r
691          0x1467c, 0x146c0, 0x146f8, 0x1471c, 0x14738, 0x14770, 0x1477e,\r
692          0x14782, 0x14784, 0x14788, 0x14790, 0x147a0, 0x147bc, 0x147c6,\r
693          0x147cc, 0x147d8, 0x147ee, 0x14810, 0x14820, 0x1483c, 0x14840,\r
694          0x14878, 0x148f0, 0x149e0, 0x14bc0, 0x14c30, 0x14c3e, 0x14c60,\r
695          0x14c7c, 0x14cc0, 0x14cf8, 0x14df0, 0x14e38, 0x14e70, 0x14e7e,\r
696          0x14ee0, 0x14efc, 0x14f04, 0x14f08, 0x14f10, 0x14f1e, 0x14f20,\r
697          0x14f3c, 0x14f40, 0x14f78, 0x14f86, 0x14f8c, 0x14f98, 0x14fb0,\r
698          0x14fce, 0x14fdc, 0x15020, 0x15040, 0x15078, 0x150f0, 0x151e0,\r
699          0x153c0, 0x15860, 0x1587c, 0x158c0, 0x158f8, 0x159f0, 0x15be0,\r
700          0x15c70, 0x15c7e, 0x15ce0, 0x15cfc, 0x15dc0, 0x15df8, 0x15e08,\r
701          0x15e10, 0x15e20, 0x15e40, 0x15e78, 0x15ef0, 0x15f0c, 0x15f18,\r
702          0x15f30, 0x15f60, 0x15f7c, 0x15f8e, 0x15f9c, 0x15fb8, 0x1604e,\r
703          0x1605c, 0x1608e, 0x1609c, 0x160b8, 0x160c2, 0x160c4, 0x160c8,\r
704          0x160de, 0x1610e, 0x1611c, 0x16138, 0x16170, 0x1617e, 0x16184,\r
705          0x16188, 0x16190, 0x1619e, 0x161a0, 0x161bc, 0x161c6, 0x161cc,\r
706          0x161d8, 0x161f2, 0x161f4, 0x1620e, 0x1621c, 0x16238, 0x16270,\r
707          0x1627e, 0x162e0, 0x162fc, 0x16304, 0x16308, 0x16310, 0x1631e,\r
708          0x16320, 0x1633c, 0x16340, 0x16378, 0x16386, 0x1638c, 0x16398,\r
709          0x163b0, 0x163be, 0x163ce, 0x163dc, 0x163e2, 0x163e4, 0x163e8,\r
710          0x163f6, 0x1640e, 0x1641c, 0x16438, 0x16470, 0x1647e, 0x164e0,\r
711          0x164fc, 0x165c0, 0x165f8, 0x16610, 0x1661e, 0x16620, 0x1663c,\r
712          0x16640, 0x16678, 0x166f0, 0x16718, 0x16730, 0x1673e, 0x16760,\r
713          0x1677c, 0x1678e, 0x1679c, 0x167b8, 0x167c2, 0x167c4, 0x167c8,\r
714          0x167d0, 0x167de, 0x167e6, 0x167ec, 0x1681c, 0x16838, 0x16870,\r
715          0x168e0, 0x168fc, 0x169c0, 0x169f8, 0x16bf0, 0x16c10, 0x16c1e,\r
716          0x16c20, 0x16c3c, 0x16c40, 0x16c78, 0x16cf0, 0x16de0, 0x16e18,\r
717          0x16e30, 0x16e3e, 0x16e60, 0x16e7c, 0x16ec0, 0x16ef8, 0x16f1c,\r
718          0x16f38, 0x16f70, 0x16f7e, 0x16f84, 0x16f88, 0x16f90, 0x16f9e,\r
719          0x16fa0, 0x16fbc, 0x16fc6, 0x16fcc, 0x16fd8, 0x17026, 0x1702c,\r
720          0x17046, 0x1704c, 0x17058, 0x1706e, 0x17086, 0x1708c, 0x17098,\r
721          0x170b0, 0x170be, 0x170ce, 0x170dc, 0x170e8, 0x17106, 0x1710c,\r
722          0x17118, 0x17130, 0x1713e, 0x17160, 0x1717c, 0x1718e, 0x1719c,\r
723          0x171b8, 0x171c2, 0x171c4, 0x171c8, 0x171d0, 0x171de, 0x171e6,\r
724          0x171ec, 0x171fa, 0x17206, 0x1720c, 0x17218, 0x17230, 0x1723e,\r
725          0x17260, 0x1727c, 0x172c0, 0x172f8, 0x1730e, 0x1731c, 0x17338,\r
726          0x17370, 0x1737e, 0x17388, 0x17390, 0x1739e, 0x173a0, 0x173bc,\r
727          0x173cc, 0x173d8, 0x173ee, 0x173f2, 0x173f4, 0x1740c, 0x17418,\r
728          0x17430, 0x1743e, 0x17460, 0x1747c, 0x174c0, 0x174f8, 0x175f0,\r
729          0x1760e, 0x1761c, 0x17638, 0x17670, 0x1767e, 0x176e0, 0x176fc,\r
730          0x17708, 0x17710, 0x1771e, 0x17720, 0x1773c, 0x17740, 0x17778,\r
731          0x17798, 0x177b0, 0x177be, 0x177dc, 0x177e2, 0x177e4, 0x177e8,\r
732          0x17822, 0x17824, 0x17828, 0x17836, 0x17842, 0x17844, 0x17848,\r
733          0x17850, 0x1785e, 0x17866, 0x1786c, 0x17882, 0x17884, 0x17888,\r
734          0x17890, 0x1789e, 0x178a0, 0x178bc, 0x178c6, 0x178cc, 0x178d8,\r
735          0x178ee, 0x178f2, 0x178f4, 0x17902, 0x17904, 0x17908, 0x17910,\r
736          0x1791e, 0x17920, 0x1793c, 0x17940, 0x17978, 0x17986, 0x1798c,\r
737          0x17998, 0x179b0, 0x179be, 0x179ce, 0x179dc, 0x179e2, 0x179e4,\r
738          0x179e8, 0x179f6, 0x17a04, 0x17a08, 0x17a10, 0x17a1e, 0x17a20,\r
739          0x17a3c, 0x17a40, 0x17a78, 0x17af0, 0x17b06, 0x17b0c, 0x17b18,\r
740          0x17b30, 0x17b3e, 0x17b60, 0x17b7c, 0x17b8e, 0x17b9c, 0x17bb8,\r
741          0x17bc4, 0x17bc8, 0x17bd0, 0x17bde, 0x17be6, 0x17bec, 0x17c2e,\r
742          0x17c32, 0x17c34, 0x17c4e, 0x17c5c, 0x17c62, 0x17c64, 0x17c68,\r
743          0x17c76, 0x17c8e, 0x17c9c, 0x17cb8, 0x17cc2, 0x17cc4, 0x17cc8,\r
744          0x17cd0, 0x17cde, 0x17ce6, 0x17cec, 0x17d0e, 0x17d1c, 0x17d38,\r
745          0x17d70, 0x17d82, 0x17d84, 0x17d88, 0x17d90, 0x17d9e, 0x17da0,\r
746          0x17dbc, 0x17dc6, 0x17dcc, 0x17dd8, 0x17dee, 0x17e26, 0x17e2c,\r
747          0x17e3a, 0x17e46, 0x17e4c, 0x17e58, 0x17e6e, 0x17e72, 0x17e74,\r
748          0x17e86, 0x17e8c, 0x17e98, 0x17eb0, 0x17ece, 0x17edc, 0x17ee2,\r
749          0x17ee4, 0x17ee8, 0x17ef6, 0x1813a, 0x18172, 0x18174, 0x18216,\r
750          0x18226, 0x1823a, 0x1824c, 0x18258, 0x1826e, 0x18272, 0x18274,\r
751          0x18298, 0x182be, 0x182e2, 0x182e4, 0x182e8, 0x182f6, 0x1835e,\r
752          0x1837a, 0x183ae, 0x183d6, 0x18416, 0x18426, 0x1842c, 0x1843a,\r
753          0x18446, 0x18458, 0x1846e, 0x18472, 0x18474, 0x18486, 0x184b0,\r
754          0x184be, 0x184ce, 0x184dc, 0x184e2, 0x184e4, 0x184e8, 0x184f6,\r
755          0x18506, 0x1850c, 0x18518, 0x18530, 0x1853e, 0x18560, 0x1857c,\r
756          0x1858e, 0x1859c, 0x185b8, 0x185c2, 0x185c4, 0x185c8, 0x185d0,\r
757          0x185de, 0x185e6, 0x185ec, 0x185fa, 0x18612, 0x18614, 0x18622,\r
758          0x18628, 0x18636, 0x18642, 0x18650, 0x1865e, 0x1867a, 0x18682,\r
759          0x18684, 0x18688, 0x18690, 0x1869e, 0x186a0, 0x186bc, 0x186c6,\r
760          0x186cc, 0x186d8, 0x186ee, 0x186f2, 0x186f4, 0x1872e, 0x1874e,\r
761          0x1875c, 0x18796, 0x187a6, 0x187ac, 0x187d2, 0x187d4, 0x18826,\r
762          0x1882c, 0x1883a, 0x18846, 0x1884c, 0x18858, 0x1886e, 0x18872,\r
763          0x18874, 0x18886, 0x18898, 0x188b0, 0x188be, 0x188ce, 0x188dc,\r
764          0x188e2, 0x188e4, 0x188e8, 0x188f6, 0x1890c, 0x18930, 0x1893e,\r
765          0x18960, 0x1897c, 0x1898e, 0x189b8, 0x189c2, 0x189c8, 0x189d0,\r
766          0x189de, 0x189e6, 0x189ec, 0x189fa, 0x18a18, 0x18a30, 0x18a3e,\r
767          0x18a60, 0x18a7c, 0x18ac0, 0x18af8, 0x18b1c, 0x18b38, 0x18b70,\r
768          0x18b7e, 0x18b82, 0x18b84, 0x18b88, 0x18b90, 0x18b9e, 0x18ba0,\r
769          0x18bbc, 0x18bc6, 0x18bcc, 0x18bd8, 0x18bee, 0x18bf2, 0x18bf4,\r
770          0x18c22, 0x18c24, 0x18c28, 0x18c36, 0x18c42, 0x18c48, 0x18c50,\r
771          0x18c5e, 0x18c66, 0x18c7a, 0x18c82, 0x18c84, 0x18c90, 0x18c9e,\r
772          0x18ca0, 0x18cbc, 0x18ccc, 0x18cf2, 0x18cf4, 0x18d04, 0x18d08,\r
773          0x18d10, 0x18d1e, 0x18d20, 0x18d3c, 0x18d40, 0x18d78, 0x18d86,\r
774          0x18d98, 0x18dce, 0x18de2, 0x18de4, 0x18de8, 0x18e2e, 0x18e32,\r
775          0x18e34, 0x18e4e, 0x18e5c, 0x18e62, 0x18e64, 0x18e68, 0x18e8e,\r
776          0x18e9c, 0x18eb8, 0x18ec2, 0x18ec4, 0x18ec8, 0x18ed0, 0x18efa,\r
777          0x18f16, 0x18f26, 0x18f2c, 0x18f46, 0x18f4c, 0x18f58, 0x18f6e,\r
778          0x18f8a, 0x18f92, 0x18f94, 0x18fa2, 0x18fa4, 0x18fa8, 0x18fb6,\r
779          0x1902c, 0x1903a, 0x19046, 0x1904c, 0x19058, 0x19072, 0x19074,\r
780          0x19086, 0x19098, 0x190b0, 0x190be, 0x190ce, 0x190dc, 0x190e2,\r
781          0x190e8, 0x190f6, 0x19106, 0x1910c, 0x19130, 0x1913e, 0x19160,\r
782          0x1917c, 0x1918e, 0x1919c, 0x191b8, 0x191c2, 0x191c8, 0x191d0,\r
783          0x191de, 0x191e6, 0x191ec, 0x191fa, 0x19218, 0x1923e, 0x19260,\r
784          0x1927c, 0x192c0, 0x192f8, 0x19338, 0x19370, 0x1937e, 0x19382,\r
785          0x19384, 0x19390, 0x1939e, 0x193a0, 0x193bc, 0x193c6, 0x193cc,\r
786          0x193d8, 0x193ee, 0x193f2, 0x193f4, 0x19430, 0x1943e, 0x19460,\r
787          0x1947c, 0x194c0, 0x194f8, 0x195f0, 0x19638, 0x19670, 0x1967e,\r
788          0x196e0, 0x196fc, 0x19702, 0x19704, 0x19708, 0x19710, 0x19720,\r
789          0x1973c, 0x19740, 0x19778, 0x19786, 0x1978c, 0x19798, 0x197b0,\r
790          0x197be, 0x197ce, 0x197dc, 0x197e2, 0x197e4, 0x197e8, 0x19822,\r
791          0x19824, 0x19842, 0x19848, 0x19850, 0x1985e, 0x19866, 0x1987a,\r
792          0x19882, 0x19884, 0x19890, 0x1989e, 0x198a0, 0x198bc, 0x198cc,\r
793          0x198f2, 0x198f4, 0x19902, 0x19908, 0x1991e, 0x19920, 0x1993c,\r
794          0x19940, 0x19978, 0x19986, 0x19998, 0x199ce, 0x199e2, 0x199e4,\r
795          0x199e8, 0x19a08, 0x19a10, 0x19a1e, 0x19a20, 0x19a3c, 0x19a40,\r
796          0x19a78, 0x19af0, 0x19b18, 0x19b3e, 0x19b60, 0x19b9c, 0x19bc2,\r
797          0x19bc4, 0x19bc8, 0x19bd0, 0x19be6, 0x19c2e, 0x19c34, 0x19c4e,\r
798          0x19c5c, 0x19c62, 0x19c64, 0x19c68, 0x19c8e, 0x19c9c, 0x19cb8,\r
799          0x19cc2, 0x19cc8, 0x19cd0, 0x19ce6, 0x19cfa, 0x19d0e, 0x19d1c,\r
800          0x19d38, 0x19d70, 0x19d7e, 0x19d82, 0x19d84, 0x19d88, 0x19d90,\r
801          0x19da0, 0x19dcc, 0x19df2, 0x19df4, 0x19e16, 0x19e26, 0x19e2c,\r
802          0x19e46, 0x19e4c, 0x19e58, 0x19e74, 0x19e86, 0x19e8c, 0x19e98,\r
803          0x19eb0, 0x19ebe, 0x19ece, 0x19ee2, 0x19ee4, 0x19ee8, 0x19f0a,\r
804          0x19f12, 0x19f14, 0x19f22, 0x19f24, 0x19f28, 0x19f42, 0x19f44,\r
805          0x19f48, 0x19f50, 0x19f5e, 0x19f6c, 0x19f9a, 0x19fae, 0x19fb2,\r
806          0x19fb4, 0x1a046, 0x1a04c, 0x1a072, 0x1a074, 0x1a086, 0x1a08c,\r
807          0x1a098, 0x1a0b0, 0x1a0be, 0x1a0e2, 0x1a0e4, 0x1a0e8, 0x1a0f6,\r
808          0x1a106, 0x1a10c, 0x1a118, 0x1a130, 0x1a13e, 0x1a160, 0x1a17c,\r
809          0x1a18e, 0x1a19c, 0x1a1b8, 0x1a1c2, 0x1a1c4, 0x1a1c8, 0x1a1d0,\r
810          0x1a1de, 0x1a1e6, 0x1a1ec, 0x1a218, 0x1a230, 0x1a23e, 0x1a260,\r
811          0x1a27c, 0x1a2c0, 0x1a2f8, 0x1a31c, 0x1a338, 0x1a370, 0x1a37e,\r
812          0x1a382, 0x1a384, 0x1a388, 0x1a390, 0x1a39e, 0x1a3a0, 0x1a3bc,\r
813          0x1a3c6, 0x1a3cc, 0x1a3d8, 0x1a3ee, 0x1a3f2, 0x1a3f4, 0x1a418,\r
814          0x1a430, 0x1a43e, 0x1a460, 0x1a47c, 0x1a4c0, 0x1a4f8, 0x1a5f0,\r
815          0x1a61c, 0x1a638, 0x1a670, 0x1a67e, 0x1a6e0, 0x1a6fc, 0x1a702,\r
816          0x1a704, 0x1a708, 0x1a710, 0x1a71e, 0x1a720, 0x1a73c, 0x1a740,\r
817          0x1a778, 0x1a786, 0x1a78c, 0x1a798, 0x1a7b0, 0x1a7be, 0x1a7ce,\r
818          0x1a7dc, 0x1a7e2, 0x1a7e4, 0x1a7e8, 0x1a830, 0x1a860, 0x1a87c,\r
819          0x1a8c0, 0x1a8f8, 0x1a9f0, 0x1abe0, 0x1ac70, 0x1ac7e, 0x1ace0,\r
820          0x1acfc, 0x1adc0, 0x1adf8, 0x1ae04, 0x1ae08, 0x1ae10, 0x1ae20,\r
821          0x1ae3c, 0x1ae40, 0x1ae78, 0x1aef0, 0x1af06, 0x1af0c, 0x1af18,\r
822          0x1af30, 0x1af3e, 0x1af60, 0x1af7c, 0x1af8e, 0x1af9c, 0x1afb8,\r
823          0x1afc4, 0x1afc8, 0x1afd0, 0x1afde, 0x1b042, 0x1b05e, 0x1b07a,\r
824          0x1b082, 0x1b084, 0x1b088, 0x1b090, 0x1b09e, 0x1b0a0, 0x1b0bc,\r
825          0x1b0cc, 0x1b0f2, 0x1b0f4, 0x1b102, 0x1b104, 0x1b108, 0x1b110,\r
826          0x1b11e, 0x1b120, 0x1b13c, 0x1b140, 0x1b178, 0x1b186, 0x1b198,\r
827          0x1b1ce, 0x1b1e2, 0x1b1e4, 0x1b1e8, 0x1b204, 0x1b208, 0x1b210,\r
828          0x1b21e, 0x1b220, 0x1b23c, 0x1b240, 0x1b278, 0x1b2f0, 0x1b30c,\r
829          0x1b33e, 0x1b360, 0x1b39c, 0x1b3c2, 0x1b3c4, 0x1b3c8, 0x1b3d0,\r
830          0x1b3e6, 0x1b410, 0x1b41e, 0x1b420, 0x1b43c, 0x1b440, 0x1b478,\r
831          0x1b4f0, 0x1b5e0, 0x1b618, 0x1b660, 0x1b67c, 0x1b6c0, 0x1b738,\r
832          0x1b782, 0x1b784, 0x1b788, 0x1b790, 0x1b79e, 0x1b7a0, 0x1b7cc,\r
833          0x1b82e, 0x1b84e, 0x1b85c, 0x1b88e, 0x1b89c, 0x1b8b8, 0x1b8c2,\r
834          0x1b8c4, 0x1b8c8, 0x1b8d0, 0x1b8e6, 0x1b8fa, 0x1b90e, 0x1b91c,\r
835          0x1b938, 0x1b970, 0x1b97e, 0x1b982, 0x1b984, 0x1b988, 0x1b990,\r
836          0x1b99e, 0x1b9a0, 0x1b9cc, 0x1b9f2, 0x1b9f4, 0x1ba0e, 0x1ba1c,\r
837          0x1ba38, 0x1ba70, 0x1ba7e, 0x1bae0, 0x1bafc, 0x1bb08, 0x1bb10,\r
838          0x1bb20, 0x1bb3c, 0x1bb40, 0x1bb98, 0x1bbce, 0x1bbe2, 0x1bbe4,\r
839          0x1bbe8, 0x1bc16, 0x1bc26, 0x1bc2c, 0x1bc46, 0x1bc4c, 0x1bc58,\r
840          0x1bc72, 0x1bc74, 0x1bc86, 0x1bc8c, 0x1bc98, 0x1bcb0, 0x1bcbe,\r
841          0x1bcce, 0x1bce2, 0x1bce4, 0x1bce8, 0x1bd06, 0x1bd0c, 0x1bd18,\r
842          0x1bd30, 0x1bd3e, 0x1bd60, 0x1bd7c, 0x1bd9c, 0x1bdc2, 0x1bdc4,\r
843          0x1bdc8, 0x1bdd0, 0x1bde6, 0x1bdfa, 0x1be12, 0x1be14, 0x1be22,\r
844          0x1be24, 0x1be28, 0x1be42, 0x1be44, 0x1be48, 0x1be50, 0x1be5e,\r
845          0x1be66, 0x1be82, 0x1be84, 0x1be88, 0x1be90, 0x1be9e, 0x1bea0,\r
846          0x1bebc, 0x1becc, 0x1bef4, 0x1bf1a, 0x1bf2e, 0x1bf32, 0x1bf34,\r
847          0x1bf4e, 0x1bf5c, 0x1bf62, 0x1bf64, 0x1bf68, 0x1c09a, 0x1c0b2,\r
848          0x1c0b4, 0x1c11a, 0x1c132, 0x1c134, 0x1c162, 0x1c164, 0x1c168,\r
849          0x1c176, 0x1c1ba, 0x1c21a, 0x1c232, 0x1c234, 0x1c24e, 0x1c25c,\r
850          0x1c262, 0x1c264, 0x1c268, 0x1c276, 0x1c28e, 0x1c2c2, 0x1c2c4,\r
851          0x1c2c8, 0x1c2d0, 0x1c2de, 0x1c2e6, 0x1c2ec, 0x1c2fa, 0x1c316,\r
852          0x1c326, 0x1c33a, 0x1c346, 0x1c34c, 0x1c372, 0x1c374, 0x1c41a,\r
853          0x1c42e, 0x1c432, 0x1c434, 0x1c44e, 0x1c45c, 0x1c462, 0x1c464,\r
854          0x1c468, 0x1c476, 0x1c48e, 0x1c49c, 0x1c4b8, 0x1c4c2, 0x1c4c8,\r
855          0x1c4d0, 0x1c4de, 0x1c4e6, 0x1c4ec, 0x1c4fa, 0x1c51c, 0x1c538,\r
856          0x1c570, 0x1c57e, 0x1c582, 0x1c584, 0x1c588, 0x1c590, 0x1c59e,\r
857          0x1c5a0, 0x1c5bc, 0x1c5c6, 0x1c5cc, 0x1c5d8, 0x1c5ee, 0x1c5f2,\r
858          0x1c5f4, 0x1c616, 0x1c626, 0x1c62c, 0x1c63a, 0x1c646, 0x1c64c,\r
859          0x1c658, 0x1c66e, 0x1c672, 0x1c674, 0x1c686, 0x1c68c, 0x1c698,\r
860          0x1c6b0, 0x1c6be, 0x1c6ce, 0x1c6dc, 0x1c6e2, 0x1c6e4, 0x1c6e8,\r
861          0x1c712, 0x1c714, 0x1c722, 0x1c728, 0x1c736, 0x1c742, 0x1c744,\r
862          0x1c748, 0x1c750, 0x1c75e, 0x1c766, 0x1c76c, 0x1c77a, 0x1c7ae,\r
863          0x1c7d6, 0x1c7ea, 0x1c81a, 0x1c82e, 0x1c832, 0x1c834, 0x1c84e,\r
864          0x1c85c, 0x1c862, 0x1c864, 0x1c868, 0x1c876, 0x1c88e, 0x1c89c,\r
865          0x1c8b8, 0x1c8c2, 0x1c8c8, 0x1c8d0, 0x1c8de, 0x1c8e6, 0x1c8ec,\r
866          0x1c8fa, 0x1c90e, 0x1c938, 0x1c970, 0x1c97e, 0x1c982, 0x1c984,\r
867          0x1c990, 0x1c99e, 0x1c9a0, 0x1c9bc, 0x1c9c6, 0x1c9cc, 0x1c9d8,\r
868          0x1c9ee, 0x1c9f2, 0x1c9f4, 0x1ca38, 0x1ca70, 0x1ca7e, 0x1cae0,\r
869          0x1cafc, 0x1cb02, 0x1cb04, 0x1cb08, 0x1cb10, 0x1cb20, 0x1cb3c,\r
870          0x1cb40, 0x1cb78, 0x1cb86, 0x1cb8c, 0x1cb98, 0x1cbb0, 0x1cbbe,\r
871          0x1cbce, 0x1cbdc, 0x1cbe2, 0x1cbe4, 0x1cbe8, 0x1cbf6, 0x1cc16,\r
872          0x1cc26, 0x1cc2c, 0x1cc3a, 0x1cc46, 0x1cc58, 0x1cc72, 0x1cc74,\r
873          0x1cc86, 0x1ccb0, 0x1ccbe, 0x1ccce, 0x1cce2, 0x1cce4, 0x1cce8,\r
874          0x1cd06, 0x1cd0c, 0x1cd18, 0x1cd30, 0x1cd3e, 0x1cd60, 0x1cd7c,\r
875          0x1cd9c, 0x1cdc2, 0x1cdc4, 0x1cdc8, 0x1cdd0, 0x1cdde, 0x1cde6,\r
876          0x1cdfa, 0x1ce22, 0x1ce28, 0x1ce42, 0x1ce50, 0x1ce5e, 0x1ce66,\r
877          0x1ce7a, 0x1ce82, 0x1ce84, 0x1ce88, 0x1ce90, 0x1ce9e, 0x1cea0,\r
878          0x1cebc, 0x1cecc, 0x1cef2, 0x1cef4, 0x1cf2e, 0x1cf32, 0x1cf34,\r
879          0x1cf4e, 0x1cf5c, 0x1cf62, 0x1cf64, 0x1cf68, 0x1cf96, 0x1cfa6,\r
880          0x1cfac, 0x1cfca, 0x1cfd2, 0x1cfd4, 0x1d02e, 0x1d032, 0x1d034,\r
881          0x1d04e, 0x1d05c, 0x1d062, 0x1d064, 0x1d068, 0x1d076, 0x1d08e,\r
882          0x1d09c, 0x1d0b8, 0x1d0c2, 0x1d0c4, 0x1d0c8, 0x1d0d0, 0x1d0de,\r
883          0x1d0e6, 0x1d0ec, 0x1d0fa, 0x1d11c, 0x1d138, 0x1d170, 0x1d17e,\r
884          0x1d182, 0x1d184, 0x1d188, 0x1d190, 0x1d19e, 0x1d1a0, 0x1d1bc,\r
885          0x1d1c6, 0x1d1cc, 0x1d1d8, 0x1d1ee, 0x1d1f2, 0x1d1f4, 0x1d21c,\r
886          0x1d238, 0x1d270, 0x1d27e, 0x1d2e0, 0x1d2fc, 0x1d302, 0x1d304,\r
887          0x1d308, 0x1d310, 0x1d31e, 0x1d320, 0x1d33c, 0x1d340, 0x1d378,\r
888          0x1d386, 0x1d38c, 0x1d398, 0x1d3b0, 0x1d3be, 0x1d3ce, 0x1d3dc,\r
889          0x1d3e2, 0x1d3e4, 0x1d3e8, 0x1d3f6, 0x1d470, 0x1d47e, 0x1d4e0,\r
890          0x1d4fc, 0x1d5c0, 0x1d5f8, 0x1d604, 0x1d608, 0x1d610, 0x1d620,\r
891          0x1d640, 0x1d678, 0x1d6f0, 0x1d706, 0x1d70c, 0x1d718, 0x1d730,\r
892          0x1d73e, 0x1d760, 0x1d77c, 0x1d78e, 0x1d79c, 0x1d7b8, 0x1d7c2,\r
893          0x1d7c4, 0x1d7c8, 0x1d7d0, 0x1d7de, 0x1d7e6, 0x1d7ec, 0x1d826,\r
894          0x1d82c, 0x1d83a, 0x1d846, 0x1d84c, 0x1d858, 0x1d872, 0x1d874,\r
895          0x1d886, 0x1d88c, 0x1d898, 0x1d8b0, 0x1d8be, 0x1d8ce, 0x1d8e2,\r
896          0x1d8e4, 0x1d8e8, 0x1d8f6, 0x1d90c, 0x1d918, 0x1d930, 0x1d93e,\r
897          0x1d960, 0x1d97c, 0x1d99c, 0x1d9c2, 0x1d9c4, 0x1d9c8, 0x1d9d0,\r
898          0x1d9e6, 0x1d9fa, 0x1da0c, 0x1da18, 0x1da30, 0x1da3e, 0x1da60,\r
899          0x1da7c, 0x1dac0, 0x1daf8, 0x1db38, 0x1db82, 0x1db84, 0x1db88,\r
900          0x1db90, 0x1db9e, 0x1dba0, 0x1dbcc, 0x1dbf2, 0x1dbf4, 0x1dc22,\r
901          0x1dc42, 0x1dc44, 0x1dc48, 0x1dc50, 0x1dc5e, 0x1dc66, 0x1dc7a,\r
902          0x1dc82, 0x1dc84, 0x1dc88, 0x1dc90, 0x1dc9e, 0x1dca0, 0x1dcbc,\r
903          0x1dccc, 0x1dcf2, 0x1dcf4, 0x1dd04, 0x1dd08, 0x1dd10, 0x1dd1e,\r
904          0x1dd20, 0x1dd3c, 0x1dd40, 0x1dd78, 0x1dd86, 0x1dd98, 0x1ddce,\r
905          0x1dde2, 0x1dde4, 0x1dde8, 0x1de2e, 0x1de32, 0x1de34, 0x1de4e,\r
906          0x1de5c, 0x1de62, 0x1de64, 0x1de68, 0x1de8e, 0x1de9c, 0x1deb8,\r
907          0x1dec2, 0x1dec4, 0x1dec8, 0x1ded0, 0x1dee6, 0x1defa, 0x1df16,\r
908          0x1df26, 0x1df2c, 0x1df46, 0x1df4c, 0x1df58, 0x1df72, 0x1df74,\r
909          0x1df8a, 0x1df92, 0x1df94, 0x1dfa2, 0x1dfa4, 0x1dfa8, 0x1e08a,\r
910          0x1e092, 0x1e094, 0x1e0a2, 0x1e0a4, 0x1e0a8, 0x1e0b6, 0x1e0da,\r
911          0x1e10a, 0x1e112, 0x1e114, 0x1e122, 0x1e124, 0x1e128, 0x1e136,\r
912          0x1e142, 0x1e144, 0x1e148, 0x1e150, 0x1e166, 0x1e16c, 0x1e17a,\r
913          0x1e19a, 0x1e1b2, 0x1e1b4, 0x1e20a, 0x1e212, 0x1e214, 0x1e222,\r
914          0x1e224, 0x1e228, 0x1e236, 0x1e242, 0x1e248, 0x1e250, 0x1e25e,\r
915          0x1e266, 0x1e26c, 0x1e27a, 0x1e282, 0x1e284, 0x1e288, 0x1e290,\r
916          0x1e2a0, 0x1e2bc, 0x1e2c6, 0x1e2cc, 0x1e2d8, 0x1e2ee, 0x1e2f2,\r
917          0x1e2f4, 0x1e31a, 0x1e332, 0x1e334, 0x1e35c, 0x1e362, 0x1e364,\r
918          0x1e368, 0x1e3ba, 0x1e40a, 0x1e412, 0x1e414, 0x1e422, 0x1e428,\r
919          0x1e436, 0x1e442, 0x1e448, 0x1e450, 0x1e45e, 0x1e466, 0x1e46c,\r
920          0x1e47a, 0x1e482, 0x1e484, 0x1e490, 0x1e49e, 0x1e4a0, 0x1e4bc,\r
921          0x1e4c6, 0x1e4cc, 0x1e4d8, 0x1e4ee, 0x1e4f2, 0x1e4f4, 0x1e502,\r
922          0x1e504, 0x1e508, 0x1e510, 0x1e51e, 0x1e520, 0x1e53c, 0x1e540,\r
923          0x1e578, 0x1e586, 0x1e58c, 0x1e598, 0x1e5b0, 0x1e5be, 0x1e5ce,\r
924          0x1e5dc, 0x1e5e2, 0x1e5e4, 0x1e5e8, 0x1e5f6, 0x1e61a, 0x1e62e,\r
925          0x1e632, 0x1e634, 0x1e64e, 0x1e65c, 0x1e662, 0x1e668, 0x1e68e,\r
926          0x1e69c, 0x1e6b8, 0x1e6c2, 0x1e6c4, 0x1e6c8, 0x1e6d0, 0x1e6e6,\r
927          0x1e6fa, 0x1e716, 0x1e726, 0x1e72c, 0x1e73a, 0x1e746, 0x1e74c,\r
928          0x1e758, 0x1e772, 0x1e774, 0x1e792, 0x1e794, 0x1e7a2, 0x1e7a4,\r
929          0x1e7a8, 0x1e7b6, 0x1e812, 0x1e814, 0x1e822, 0x1e824, 0x1e828,\r
930          0x1e836, 0x1e842, 0x1e844, 0x1e848, 0x1e850, 0x1e85e, 0x1e866,\r
931          0x1e86c, 0x1e87a, 0x1e882, 0x1e884, 0x1e888, 0x1e890, 0x1e89e,\r
932          0x1e8a0, 0x1e8bc, 0x1e8c6, 0x1e8cc, 0x1e8d8, 0x1e8ee, 0x1e8f2,\r
933          0x1e8f4, 0x1e902, 0x1e904, 0x1e908, 0x1e910, 0x1e920, 0x1e93c,\r
934          0x1e940, 0x1e978, 0x1e986, 0x1e98c, 0x1e998, 0x1e9b0, 0x1e9be,\r
935          0x1e9ce, 0x1e9dc, 0x1e9e2, 0x1e9e4, 0x1e9e8, 0x1e9f6, 0x1ea04,\r
936          0x1ea08, 0x1ea10, 0x1ea20, 0x1ea40, 0x1ea78, 0x1eaf0, 0x1eb06,\r
937          0x1eb0c, 0x1eb18, 0x1eb30, 0x1eb3e, 0x1eb60, 0x1eb7c, 0x1eb8e,\r
938          0x1eb9c, 0x1ebb8, 0x1ebc2, 0x1ebc4, 0x1ebc8, 0x1ebd0, 0x1ebde,\r
939          0x1ebe6, 0x1ebec, 0x1ec1a, 0x1ec2e, 0x1ec32, 0x1ec34, 0x1ec4e,\r
940          0x1ec5c, 0x1ec62, 0x1ec64, 0x1ec68, 0x1ec8e, 0x1ec9c, 0x1ecb8,\r
941          0x1ecc2, 0x1ecc4, 0x1ecc8, 0x1ecd0, 0x1ece6, 0x1ecfa, 0x1ed0e,\r
942          0x1ed1c, 0x1ed38, 0x1ed70, 0x1ed7e, 0x1ed82, 0x1ed84, 0x1ed88,\r
943          0x1ed90, 0x1ed9e, 0x1eda0, 0x1edcc, 0x1edf2, 0x1edf4, 0x1ee16,\r
944          0x1ee26, 0x1ee2c, 0x1ee3a, 0x1ee46, 0x1ee4c, 0x1ee58, 0x1ee6e,\r
945          0x1ee72, 0x1ee74, 0x1ee86, 0x1ee8c, 0x1ee98, 0x1eeb0, 0x1eebe,\r
946          0x1eece, 0x1eedc, 0x1eee2, 0x1eee4, 0x1eee8, 0x1ef12, 0x1ef22,\r
947          0x1ef24, 0x1ef28, 0x1ef36, 0x1ef42, 0x1ef44, 0x1ef48, 0x1ef50,\r
948          0x1ef5e, 0x1ef66, 0x1ef6c, 0x1ef7a, 0x1efae, 0x1efb2, 0x1efb4,\r
949          0x1efd6, 0x1f096, 0x1f0a6, 0x1f0ac, 0x1f0ba, 0x1f0ca, 0x1f0d2,\r
950          0x1f0d4, 0x1f116, 0x1f126, 0x1f12c, 0x1f13a, 0x1f146, 0x1f14c,\r
951          0x1f158, 0x1f16e, 0x1f172, 0x1f174, 0x1f18a, 0x1f192, 0x1f194,\r
952          0x1f1a2, 0x1f1a4, 0x1f1a8, 0x1f1da, 0x1f216, 0x1f226, 0x1f22c,\r
953          0x1f23a, 0x1f246, 0x1f258, 0x1f26e, 0x1f272, 0x1f274, 0x1f286,\r
954          0x1f28c, 0x1f298, 0x1f2b0, 0x1f2be, 0x1f2ce, 0x1f2dc, 0x1f2e2,\r
955          0x1f2e4, 0x1f2e8, 0x1f2f6, 0x1f30a, 0x1f312, 0x1f314, 0x1f322,\r
956          0x1f328, 0x1f342, 0x1f344, 0x1f348, 0x1f350, 0x1f35e, 0x1f366,\r
957          0x1f37a, 0x1f39a, 0x1f3ae, 0x1f3b2, 0x1f3b4, 0x1f416, 0x1f426,\r
958          0x1f42c, 0x1f43a, 0x1f446, 0x1f44c, 0x1f458, 0x1f46e, 0x1f472,\r
959          0x1f474, 0x1f486, 0x1f48c, 0x1f498, 0x1f4b0, 0x1f4be, 0x1f4ce,\r
960          0x1f4dc, 0x1f4e2, 0x1f4e4, 0x1f4e8, 0x1f4f6, 0x1f506, 0x1f50c,\r
961          0x1f518, 0x1f530, 0x1f53e, 0x1f560, 0x1f57c, 0x1f58e, 0x1f59c,\r
962          0x1f5b8, 0x1f5c2, 0x1f5c4, 0x1f5c8, 0x1f5d0, 0x1f5de, 0x1f5e6,\r
963          0x1f5ec, 0x1f5fa, 0x1f60a, 0x1f612, 0x1f614, 0x1f622, 0x1f624,\r
964          0x1f628, 0x1f636, 0x1f642, 0x1f644, 0x1f648, 0x1f650, 0x1f65e,\r
965          0x1f666, 0x1f67a, 0x1f682, 0x1f684, 0x1f688, 0x1f690, 0x1f69e,\r
966          0x1f6a0, 0x1f6bc, 0x1f6cc, 0x1f6f2, 0x1f6f4, 0x1f71a, 0x1f72e,\r
967          0x1f732, 0x1f734, 0x1f74e, 0x1f75c, 0x1f762, 0x1f764, 0x1f768,\r
968          0x1f776, 0x1f796, 0x1f7a6, 0x1f7ac, 0x1f7ba, 0x1f7d2, 0x1f7d4,\r
969          0x1f89a, 0x1f8ae, 0x1f8b2, 0x1f8b4, 0x1f8d6, 0x1f8ea, 0x1f91a,\r
970          0x1f92e, 0x1f932, 0x1f934, 0x1f94e, 0x1f95c, 0x1f962, 0x1f964,\r
971          0x1f968, 0x1f976, 0x1f996, 0x1f9a6, 0x1f9ac, 0x1f9ba, 0x1f9ca,\r
972          0x1f9d2, 0x1f9d4, 0x1fa1a, 0x1fa2e, 0x1fa32, 0x1fa34, 0x1fa4e,\r
973          0x1fa5c, 0x1fa62, 0x1fa64, 0x1fa68, 0x1fa76, 0x1fa8e, 0x1fa9c,\r
974          0x1fab8, 0x1fac2, 0x1fac4, 0x1fac8, 0x1fad0, 0x1fade, 0x1fae6,\r
975          0x1faec, 0x1fb16, 0x1fb26, 0x1fb2c, 0x1fb3a, 0x1fb46, 0x1fb4c,\r
976          0x1fb58, 0x1fb6e, 0x1fb72, 0x1fb74, 0x1fb8a, 0x1fb92, 0x1fb94,\r
977          0x1fba2, 0x1fba4, 0x1fba8, 0x1fbb6, 0x1fbda };\r
978 \r
979    /**\r
980     * This table contains to codewords for all symbols.\r
981     */\r
982    private static final int codewordTable[] = { 2627, 1819, 2622, 2621, 1813,\r
983          1812, 2729, 2724, 2723, 2779, 2774, 2773, 902, 896, 908, 868, 865,\r
984          861, 859, 2511, 873, 871, 1780, 835, 2493, 825, 2491, 842, 837, 844,\r
985          1764, 1762, 811, 810, 809, 2483, 807, 2482, 806, 2480, 815, 814, 813,\r
986          812, 2484, 817, 816, 1745, 1744, 1742, 1746, 2655, 2637, 2635, 2626,\r
987          2625, 2623, 2628, 1820, 2752, 2739, 2737, 2728, 2727, 2725, 2730,\r
988          2785, 2783, 2778, 2777, 2775, 2780, 787, 781, 747, 739, 736, 2413,\r
989          754, 752, 1719, 692, 689, 681, 2371, 678, 2369, 700, 697, 694, 703,\r
990          1688, 1686, 642, 638, 2343, 631, 2341, 627, 2338, 651, 646, 643, 2345,\r
991          654, 652, 1652, 1650, 1647, 1654, 601, 599, 2322, 596, 2321, 594,\r
992          2319, 2317, 611, 610, 608, 606, 2324, 603, 2323, 615, 614, 612, 1617,\r
993          1616, 1614, 1612, 616, 1619, 1618, 2575, 2538, 2536, 905, 901, 898,\r
994          909, 2509, 2507, 2504, 870, 867, 864, 860, 2512, 875, 872, 1781, 2490,\r
995          2489, 2487, 2485, 1748, 836, 834, 832, 830, 2494, 827, 2492, 843, 841,\r
996          839, 845, 1765, 1763, 2701, 2676, 2674, 2653, 2648, 2656, 2634, 2633,\r
997          2631, 2629, 1821, 2638, 2636, 2770, 2763, 2761, 2750, 2745, 2753,\r
998          2736, 2735, 2733, 2731, 1848, 2740, 2738, 2786, 2784, 591, 588, 576,\r
999          569, 566, 2296, 1590, 537, 534, 526, 2276, 522, 2274, 545, 542, 539,\r
1000          548, 1572, 1570, 481, 2245, 466, 2242, 462, 2239, 492, 485, 482, 2249,\r
1001          496, 494, 1534, 1531, 1528, 1538, 413, 2196, 406, 2191, 2188, 425,\r
1002          419, 2202, 415, 2199, 432, 430, 427, 1472, 1467, 1464, 433, 1476,\r
1003          1474, 368, 367, 2160, 365, 2159, 362, 2157, 2155, 2152, 378, 377, 375,\r
1004          2166, 372, 2165, 369, 2162, 383, 381, 379, 2168, 1419, 1418, 1416,\r
1005          1414, 385, 1411, 384, 1423, 1422, 1420, 1424, 2461, 802, 2441, 2439,\r
1006          790, 786, 783, 794, 2409, 2406, 2403, 750, 742, 738, 2414, 756, 753,\r
1007          1720, 2367, 2365, 2362, 2359, 1663, 693, 691, 684, 2373, 680, 2370,\r
1008          702, 699, 696, 704, 1690, 1687, 2337, 2336, 2334, 2332, 1624, 2329,\r
1009          1622, 640, 637, 2344, 634, 2342, 630, 2340, 650, 648, 645, 2346, 655,\r
1010          653, 1653, 1651, 1649, 1655, 2612, 2597, 2595, 2571, 2568, 2565, 2576,\r
1011          2534, 2529, 2526, 1787, 2540, 2537, 907, 904, 900, 910, 2503, 2502,\r
1012          2500, 2498, 1768, 2495, 1767, 2510, 2508, 2506, 869, 866, 863, 2513,\r
1013          876, 874, 1782, 2720, 2713, 2711, 2697, 2694, 2691, 2702, 2672, 2670,\r
1014          2664, 1828, 2678, 2675, 2647, 2646, 2644, 2642, 1823, 2639, 1822,\r
1015          2654, 2652, 2650, 2657, 2771, 1855, 2765, 2762, 1850, 1849, 2751,\r
1016          2749, 2747, 2754, 353, 2148, 344, 342, 336, 2142, 332, 2140, 345,\r
1017          1375, 1373, 306, 2130, 299, 2128, 295, 2125, 319, 314, 311, 2132,\r
1018          1354, 1352, 1349, 1356, 262, 257, 2101, 253, 2096, 2093, 274, 273,\r
1019          267, 2107, 263, 2104, 280, 278, 275, 1316, 1311, 1308, 1320, 1318,\r
1020          2052, 202, 2050, 2044, 2040, 219, 2063, 212, 2060, 208, 2055, 224,\r
1021          221, 2066, 1260, 1258, 1252, 231, 1248, 229, 1266, 1264, 1261, 1268,\r
1022          155, 1998, 153, 1996, 1994, 1991, 1988, 165, 164, 2007, 162, 2006,\r
1023          159, 2003, 2000, 172, 171, 169, 2012, 166, 2010, 1186, 1184, 1182,\r
1024          1179, 175, 1176, 173, 1192, 1191, 1189, 1187, 176, 1194, 1193, 2313,\r
1025          2307, 2305, 592, 589, 2294, 2292, 2289, 578, 572, 568, 2297, 580,\r
1026          1591, 2272, 2267, 2264, 1547, 538, 536, 529, 2278, 525, 2275, 547,\r
1027          544, 541, 1574, 1571, 2237, 2235, 2229, 1493, 2225, 1489, 478, 2247,\r
1028          470, 2244, 465, 2241, 493, 488, 484, 2250, 498, 495, 1536, 1533, 1530,\r
1029          1539, 2187, 2186, 2184, 2182, 1432, 2179, 1430, 2176, 1427, 414, 412,\r
1030          2197, 409, 2195, 405, 2193, 2190, 426, 424, 421, 2203, 418, 2201, 431,\r
1031          429, 1473, 1471, 1469, 1466, 434, 1477, 1475, 2478, 2472, 2470, 2459,\r
1032          2457, 2454, 2462, 803, 2437, 2432, 2429, 1726, 2443, 2440, 792, 789,\r
1033          785, 2401, 2399, 2393, 1702, 2389, 1699, 2411, 2408, 2405, 745, 741,\r
1034          2415, 758, 755, 1721, 2358, 2357, 2355, 2353, 1661, 2350, 1660, 2347,\r
1035          1657, 2368, 2366, 2364, 2361, 1666, 690, 687, 2374, 683, 2372, 701,\r
1036          698, 705, 1691, 1689, 2619, 2617, 2610, 2608, 2605, 2613, 2593, 2588,\r
1037          2585, 1803, 2599, 2596, 2563, 2561, 2555, 1797, 2551, 1795, 2573,\r
1038          2570, 2567, 2577, 2525, 2524, 2522, 2520, 1786, 2517, 1785, 2514,\r
1039          1783, 2535, 2533, 2531, 2528, 1788, 2541, 2539, 906, 903, 911, 2721,\r
1040          1844, 2715, 2712, 1838, 1836, 2699, 2696, 2693, 2703, 1827, 1826,\r
1041          1824, 2673, 2671, 2669, 2666, 1829, 2679, 2677, 1858, 1857, 2772,\r
1042          1854, 1853, 1851, 1856, 2766, 2764, 143, 1987, 139, 1986, 135, 133,\r
1043          131, 1984, 128, 1983, 125, 1981, 138, 137, 136, 1985, 1133, 1132,\r
1044          1130, 112, 110, 1974, 107, 1973, 104, 1971, 1969, 122, 121, 119, 117,\r
1045          1977, 114, 1976, 124, 1115, 1114, 1112, 1110, 1117, 1116, 84, 83,\r
1046          1953, 81, 1952, 78, 1950, 1948, 1945, 94, 93, 91, 1959, 88, 1958, 85,\r
1047          1955, 99, 97, 95, 1961, 1086, 1085, 1083, 1081, 1078, 100, 1090, 1089,\r
1048          1087, 1091, 49, 47, 1917, 44, 1915, 1913, 1910, 1907, 59, 1926, 56,\r
1049          1925, 53, 1922, 1919, 66, 64, 1931, 61, 1929, 1042, 1040, 1038, 71,\r
1050          1035, 70, 1032, 68, 1048, 1047, 1045, 1043, 1050, 1049, 12, 10, 1869,\r
1051          1867, 1864, 1861, 21, 1880, 19, 1877, 1874, 1871, 28, 1888, 25, 1886,\r
1052          22, 1883, 982, 980, 977, 974, 32, 30, 991, 989, 987, 984, 34, 995,\r
1053          994, 992, 2151, 2150, 2147, 2146, 2144, 356, 355, 354, 2149, 2139,\r
1054          2138, 2136, 2134, 1359, 343, 341, 338, 2143, 335, 2141, 348, 347, 346,\r
1055          1376, 1374, 2124, 2123, 2121, 2119, 1326, 2116, 1324, 310, 308, 305,\r
1056          2131, 302, 2129, 298, 2127, 320, 318, 316, 313, 2133, 322, 321, 1355,\r
1057          1353, 1351, 1357, 2092, 2091, 2089, 2087, 1276, 2084, 1274, 2081,\r
1058          1271, 259, 2102, 256, 2100, 252, 2098, 2095, 272, 269, 2108, 266,\r
1059          2106, 281, 279, 277, 1317, 1315, 1313, 1310, 282, 1321, 1319, 2039,\r
1060          2037, 2035, 2032, 1203, 2029, 1200, 1197, 207, 2053, 205, 2051, 201,\r
1061          2049, 2046, 2043, 220, 218, 2064, 215, 2062, 211, 2059, 228, 226, 223,\r
1062          2069, 1259, 1257, 1254, 232, 1251, 230, 1267, 1265, 1263, 2316, 2315,\r
1063          2312, 2311, 2309, 2314, 2304, 2303, 2301, 2299, 1593, 2308, 2306, 590,\r
1064          2288, 2287, 2285, 2283, 1578, 2280, 1577, 2295, 2293, 2291, 579, 577,\r
1065          574, 571, 2298, 582, 581, 1592, 2263, 2262, 2260, 2258, 1545, 2255,\r
1066          1544, 2252, 1541, 2273, 2271, 2269, 2266, 1550, 535, 532, 2279, 528,\r
1067          2277, 546, 543, 549, 1575, 1573, 2224, 2222, 2220, 1486, 2217, 1485,\r
1068          2214, 1482, 1479, 2238, 2236, 2234, 2231, 1496, 2228, 1492, 480, 477,\r
1069          2248, 473, 2246, 469, 2243, 490, 487, 2251, 497, 1537, 1535, 1532,\r
1070          2477, 2476, 2474, 2479, 2469, 2468, 2466, 2464, 1730, 2473, 2471,\r
1071          2453, 2452, 2450, 2448, 1729, 2445, 1728, 2460, 2458, 2456, 2463, 805,\r
1072          804, 2428, 2427, 2425, 2423, 1725, 2420, 1724, 2417, 1722, 2438, 2436,\r
1073          2434, 2431, 1727, 2444, 2442, 793, 791, 788, 795, 2388, 2386, 2384,\r
1074          1697, 2381, 1696, 2378, 1694, 1692, 2402, 2400, 2398, 2395, 1703,\r
1075          2392, 1701, 2412, 2410, 2407, 751, 748, 744, 2416, 759, 757, 1807,\r
1076          2620, 2618, 1806, 1805, 2611, 2609, 2607, 2614, 1802, 1801, 1799,\r
1077          2594, 2592, 2590, 2587, 1804, 2600, 2598, 1794, 1793, 1791, 1789,\r
1078          2564, 2562, 2560, 2557, 1798, 2554, 1796, 2574, 2572, 2569, 2578,\r
1079          1847, 1846, 2722, 1843, 1842, 1840, 1845, 2716, 2714, 1835, 1834,\r
1080          1832, 1830, 1839, 1837, 2700, 2698, 2695, 2704, 1817, 1811, 1810, 897,\r
1081          862, 1777, 829, 826, 838, 1760, 1758, 808, 2481, 1741, 1740, 1738,\r
1082          1743, 2624, 1818, 2726, 2776, 782, 740, 737, 1715, 686, 679, 695,\r
1083          1682, 1680, 639, 628, 2339, 647, 644, 1645, 1643, 1640, 1648, 602,\r
1084          600, 597, 595, 2320, 593, 2318, 609, 607, 604, 1611, 1610, 1608, 1606,\r
1085          613, 1615, 1613, 2328, 926, 924, 892, 886, 899, 857, 850, 2505, 1778,\r
1086          824, 823, 821, 819, 2488, 818, 2486, 833, 831, 828, 840, 1761, 1759,\r
1087          2649, 2632, 2630, 2746, 2734, 2732, 2782, 2781, 570, 567, 1587, 531,\r
1088          527, 523, 540, 1566, 1564, 476, 467, 463, 2240, 486, 483, 1524, 1521,\r
1089          1518, 1529, 411, 403, 2192, 399, 2189, 423, 416, 1462, 1457, 1454,\r
1090          428, 1468, 1465, 2210, 366, 363, 2158, 360, 2156, 357, 2153, 376, 373,\r
1091          370, 2163, 1410, 1409, 1407, 1405, 382, 1402, 380, 1417, 1415, 1412,\r
1092          1421, 2175, 2174, 777, 774, 771, 784, 732, 725, 722, 2404, 743, 1716,\r
1093          676, 674, 668, 2363, 665, 2360, 685, 1684, 1681, 626, 624, 622, 2335,\r
1094          620, 2333, 617, 2330, 641, 635, 649, 1646, 1644, 1642, 2566, 928, 925,\r
1095          2530, 2527, 894, 891, 888, 2501, 2499, 2496, 858, 856, 854, 851, 1779,\r
1096          2692, 2668, 2665, 2645, 2643, 2640, 2651, 2768, 2759, 2757, 2744,\r
1097          2743, 2741, 2748, 352, 1382, 340, 337, 333, 1371, 1369, 307, 300, 296,\r
1098          2126, 315, 312, 1347, 1342, 1350, 261, 258, 250, 2097, 246, 2094, 271,\r
1099          268, 264, 1306, 1301, 1298, 276, 1312, 1309, 2115, 203, 2048, 195,\r
1100          2045, 191, 2041, 213, 209, 2056, 1246, 1244, 1238, 225, 1234, 222,\r
1101          1256, 1253, 1249, 1262, 2080, 2079, 154, 1997, 150, 1995, 147, 1992,\r
1102          1989, 163, 160, 2004, 156, 2001, 1175, 1174, 1172, 1170, 1167, 170,\r
1103          1164, 167, 1185, 1183, 1180, 1177, 174, 1190, 1188, 2025, 2024, 2022,\r
1104          587, 586, 564, 559, 556, 2290, 573, 1588, 520, 518, 512, 2268, 508,\r
1105          2265, 530, 1568, 1565, 461, 457, 2233, 450, 2230, 446, 2226, 479, 471,\r
1106          489, 1526, 1523, 1520, 397, 395, 2185, 392, 2183, 389, 2180, 2177,\r
1107          410, 2194, 402, 422, 1463, 1461, 1459, 1456, 1470, 2455, 799, 2433,\r
1108          2430, 779, 776, 773, 2397, 2394, 2390, 734, 728, 724, 746, 1717, 2356,\r
1109          2354, 2351, 2348, 1658, 677, 675, 673, 670, 667, 688, 1685, 1683,\r
1110          2606, 2589, 2586, 2559, 2556, 2552, 927, 2523, 2521, 2518, 2515, 1784,\r
1111          2532, 895, 893, 890, 2718, 2709, 2707, 2689, 2687, 2684, 2663, 2662,\r
1112          2660, 2658, 1825, 2667, 2769, 1852, 2760, 2758, 142, 141, 1139, 1138,\r
1113          134, 132, 129, 126, 1982, 1129, 1128, 1126, 1131, 113, 111, 108, 105,\r
1114          1972, 101, 1970, 120, 118, 115, 1109, 1108, 1106, 1104, 123, 1113,\r
1115          1111, 82, 79, 1951, 75, 1949, 72, 1946, 92, 89, 86, 1956, 1077, 1076,\r
1116          1074, 1072, 98, 1069, 96, 1084, 1082, 1079, 1088, 1968, 1967, 48, 45,\r
1117          1916, 42, 1914, 39, 1911, 1908, 60, 57, 54, 1923, 50, 1920, 1031,\r
1118          1030, 1028, 1026, 67, 1023, 65, 1020, 62, 1041, 1039, 1036, 1033, 69,\r
1119          1046, 1044, 1944, 1943, 1941, 11, 9, 1868, 7, 1865, 1862, 1859, 20,\r
1120          1878, 16, 1875, 13, 1872, 970, 968, 966, 963, 29, 960, 26, 23, 983,\r
1121          981, 978, 975, 33, 971, 31, 990, 988, 985, 1906, 1904, 1902, 993, 351,\r
1122          2145, 1383, 331, 330, 328, 326, 2137, 323, 2135, 339, 1372, 1370, 294,\r
1123          293, 291, 289, 2122, 286, 2120, 283, 2117, 309, 303, 317, 1348, 1346,\r
1124          1344, 245, 244, 242, 2090, 239, 2088, 236, 2085, 2082, 260, 2099, 249,\r
1125          270, 1307, 1305, 1303, 1300, 1314, 189, 2038, 186, 2036, 183, 2033,\r
1126          2030, 2026, 206, 198, 2047, 194, 216, 1247, 1245, 1243, 1240, 227,\r
1127          1237, 1255, 2310, 2302, 2300, 2286, 2284, 2281, 565, 563, 561, 558,\r
1128          575, 1589, 2261, 2259, 2256, 2253, 1542, 521, 519, 517, 514, 2270,\r
1129          511, 533, 1569, 1567, 2223, 2221, 2218, 2215, 1483, 2211, 1480, 459,\r
1130          456, 453, 2232, 449, 474, 491, 1527, 1525, 1522, 2475, 2467, 2465,\r
1131          2451, 2449, 2446, 801, 800, 2426, 2424, 2421, 2418, 1723, 2435, 780,\r
1132          778, 775, 2387, 2385, 2382, 2379, 1695, 2375, 1693, 2396, 735, 733,\r
1133          730, 727, 749, 1718, 2616, 2615, 2604, 2603, 2601, 2584, 2583, 2581,\r
1134          2579, 1800, 2591, 2550, 2549, 2547, 2545, 1792, 2542, 1790, 2558, 929,\r
1135          2719, 1841, 2710, 2708, 1833, 1831, 2690, 2688, 2686, 1815, 1809,\r
1136          1808, 1774, 1756, 1754, 1737, 1736, 1734, 1739, 1816, 1711, 1676,\r
1137          1674, 633, 629, 1638, 1636, 1633, 1641, 598, 1605, 1604, 1602, 1600,\r
1138          605, 1609, 1607, 2327, 887, 853, 1775, 822, 820, 1757, 1755, 1584,\r
1139          524, 1560, 1558, 468, 464, 1514, 1511, 1508, 1519, 408, 404, 400,\r
1140          1452, 1447, 1444, 417, 1458, 1455, 2208, 364, 361, 358, 2154, 1401,\r
1141          1400, 1398, 1396, 374, 1393, 371, 1408, 1406, 1403, 1413, 2173, 2172,\r
1142          772, 726, 723, 1712, 672, 669, 666, 682, 1678, 1675, 625, 623, 621,\r
1143          618, 2331, 636, 632, 1639, 1637, 1635, 920, 918, 884, 880, 889, 849,\r
1144          848, 847, 846, 2497, 855, 852, 1776, 2641, 2742, 2787, 1380, 334,\r
1145          1367, 1365, 301, 297, 1340, 1338, 1335, 1343, 255, 251, 247, 1296,\r
1146          1291, 1288, 265, 1302, 1299, 2113, 204, 196, 192, 2042, 1232, 1230,\r
1147          1224, 214, 1220, 210, 1242, 1239, 1235, 1250, 2077, 2075, 151, 148,\r
1148          1993, 144, 1990, 1163, 1162, 1160, 1158, 1155, 161, 1152, 157, 1173,\r
1149          1171, 1168, 1165, 168, 1181, 1178, 2021, 2020, 2018, 2023, 585, 560,\r
1150          557, 1585, 516, 509, 1562, 1559, 458, 447, 2227, 472, 1516, 1513,\r
1151          1510, 398, 396, 393, 390, 2181, 386, 2178, 407, 1453, 1451, 1449,\r
1152          1446, 420, 1460, 2209, 769, 764, 720, 712, 2391, 729, 1713, 664, 663,\r
1153          661, 659, 2352, 656, 2349, 671, 1679, 1677, 2553, 922, 919, 2519,\r
1154          2516, 885, 883, 881, 2685, 2661, 2659, 2767, 2756, 2755, 140, 1137,\r
1155          1136, 130, 127, 1125, 1124, 1122, 1127, 109, 106, 102, 1103, 1102,\r
1156          1100, 1098, 116, 1107, 1105, 1980, 80, 76, 73, 1947, 1068, 1067, 1065,\r
1157          1063, 90, 1060, 87, 1075, 1073, 1070, 1080, 1966, 1965, 46, 43, 40,\r
1158          1912, 36, 1909, 1019, 1018, 1016, 1014, 58, 1011, 55, 1008, 51, 1029,\r
1159          1027, 1024, 1021, 63, 1037, 1034, 1940, 1939, 1937, 1942, 8, 1866, 4,\r
1160          1863, 1, 1860, 956, 954, 952, 949, 946, 17, 14, 969, 967, 964, 961,\r
1161          27, 957, 24, 979, 976, 972, 1901, 1900, 1898, 1896, 986, 1905, 1903,\r
1162          350, 349, 1381, 329, 327, 324, 1368, 1366, 292, 290, 287, 284, 2118,\r
1163          304, 1341, 1339, 1337, 1345, 243, 240, 237, 2086, 233, 2083, 254,\r
1164          1297, 1295, 1293, 1290, 1304, 2114, 190, 187, 184, 2034, 180, 2031,\r
1165          177, 2027, 199, 1233, 1231, 1229, 1226, 217, 1223, 1241, 2078, 2076,\r
1166          584, 555, 554, 552, 550, 2282, 562, 1586, 507, 506, 504, 502, 2257,\r
1167          499, 2254, 515, 1563, 1561, 445, 443, 441, 2219, 438, 2216, 435, 2212,\r
1168          460, 454, 475, 1517, 1515, 1512, 2447, 798, 797, 2422, 2419, 770, 768,\r
1169          766, 2383, 2380, 2376, 721, 719, 717, 714, 731, 1714, 2602, 2582,\r
1170          2580, 2548, 2546, 2543, 923, 921, 2717, 2706, 2705, 2683, 2682, 2680,\r
1171          1771, 1752, 1750, 1733, 1732, 1731, 1735, 1814, 1707, 1670, 1668,\r
1172          1631, 1629, 1626, 1634, 1599, 1598, 1596, 1594, 1603, 1601, 2326,\r
1173          1772, 1753, 1751, 1581, 1554, 1552, 1504, 1501, 1498, 1509, 1442,\r
1174          1437, 1434, 401, 1448, 1445, 2206, 1392, 1391, 1389, 1387, 1384, 359,\r
1175          1399, 1397, 1394, 1404, 2171, 2170, 1708, 1672, 1669, 619, 1632, 1630,\r
1176          1628, 1773, 1378, 1363, 1361, 1333, 1328, 1336, 1286, 1281, 1278, 248,\r
1177          1292, 1289, 2111, 1218, 1216, 1210, 197, 1206, 193, 1228, 1225, 1221,\r
1178          1236, 2073, 2071, 1151, 1150, 1148, 1146, 152, 1143, 149, 1140, 145,\r
1179          1161, 1159, 1156, 1153, 158, 1169, 1166, 2017, 2016, 2014, 2019, 1582,\r
1180          510, 1556, 1553, 452, 448, 1506, 1500, 394, 391, 387, 1443, 1441,\r
1181          1439, 1436, 1450, 2207, 765, 716, 713, 1709, 662, 660, 657, 1673,\r
1182          1671, 916, 914, 879, 878, 877, 882, 1135, 1134, 1121, 1120, 1118,\r
1183          1123, 1097, 1096, 1094, 1092, 103, 1101, 1099, 1979, 1059, 1058, 1056,\r
1184          1054, 77, 1051, 74, 1066, 1064, 1061, 1071, 1964, 1963, 1007, 1006,\r
1185          1004, 1002, 999, 41, 996, 37, 1017, 1015, 1012, 1009, 52, 1025, 1022,\r
1186          1936, 1935, 1933, 1938, 942, 940, 938, 935, 932, 5, 2, 955, 953, 950,\r
1187          947, 18, 943, 15, 965, 962, 958, 1895, 1894, 1892, 1890, 973, 1899,\r
1188          1897, 1379, 325, 1364, 1362, 288, 285, 1334, 1332, 1330, 241, 238,\r
1189          234, 1287, 1285, 1283, 1280, 1294, 2112, 188, 185, 181, 178, 2028,\r
1190          1219, 1217, 1215, 1212, 200, 1209, 1227, 2074, 2072, 583, 553, 551,\r
1191          1583, 505, 503, 500, 513, 1557, 1555, 444, 442, 439, 436, 2213, 455,\r
1192          451, 1507, 1505, 1502, 796, 763, 762, 760, 767, 711, 710, 708, 706,\r
1193          2377, 718, 715, 1710, 2544, 917, 915, 2681, 1627, 1597, 1595, 2325,\r
1194          1769, 1749, 1747, 1499, 1438, 1435, 2204, 1390, 1388, 1385, 1395,\r
1195          2169, 2167, 1704, 1665, 1662, 1625, 1623, 1620, 1770, 1329, 1282,\r
1196          1279, 2109, 1214, 1207, 1222, 2068, 2065, 1149, 1147, 1144, 1141, 146,\r
1197          1157, 1154, 2013, 2011, 2008, 2015, 1579, 1549, 1546, 1495, 1487,\r
1198          1433, 1431, 1428, 1425, 388, 1440, 2205, 1705, 658, 1667, 1664, 1119,\r
1199          1095, 1093, 1978, 1057, 1055, 1052, 1062, 1962, 1960, 1005, 1003,\r
1200          1000, 997, 38, 1013, 1010, 1932, 1930, 1927, 1934, 941, 939, 936, 933,\r
1201          6, 930, 3, 951, 948, 944, 1889, 1887, 1884, 1881, 959, 1893, 1891, 35,\r
1202          1377, 1360, 1358, 1327, 1325, 1322, 1331, 1277, 1275, 1272, 1269, 235,\r
1203          1284, 2110, 1205, 1204, 1201, 1198, 182, 1195, 179, 1213, 2070, 2067,\r
1204          1580, 501, 1551, 1548, 440, 437, 1497, 1494, 1490, 1503, 761, 709,\r
1205          707, 1706, 913, 912, 2198, 1386, 2164, 2161, 1621, 1766, 2103, 1208,\r
1206          2058, 2054, 1145, 1142, 2005, 2002, 1999, 2009, 1488, 1429, 1426,\r
1207          2200, 1698, 1659, 1656, 1975, 1053, 1957, 1954, 1001, 998, 1924, 1921,\r
1208          1918, 1928, 937, 934, 931, 1879, 1876, 1873, 1870, 945, 1885, 1882,\r
1209          1323, 1273, 1270, 2105, 1202, 1199, 1196, 1211, 2061, 2057, 1576,\r
1210          1543, 1540, 1484, 1481, 1478, 1491, 1700 };\r
1211 }\r