1 /* Copyright (c) 2000, 2013, Oracle and/or its affiliates.
2 Copyright (c) 2009, 2017, MariaDB
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; version 2
7 of the License.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public
15 License along with this library; if not, write to the Free
16 Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
17 MA 02110-1335 USA */
18
19 /* UTF8 according RFC 2279 */
20 /* Written by Alexander Barkov <bar@udm.net> */
21
22 #include "strings_def.h"
23 #include <m_ctype.h>
24
25 #ifndef EILSEQ
26 #define EILSEQ ENOENT
27 #endif
28
29
30 #include "ctype-utf8.h"
31 #include "ctype-unidata.h"
32
33
34 /* Definitions for strcoll.inl */
35 #define IS_MB1_CHAR(x) ((uchar) (x) < 0x80)
36 #define IS_MB1_MBHEAD_UNUSED_GAP(x) ((uchar) (x) < 0xC2)
37 #define IS_MB2_CHAR(x,y) IS_UTF8MB2_STEP2(x,y)
38 #define IS_MB3_CHAR(x,y,z) IS_UTF8MB3_STEP3(x,y,z)
39
40 /* Collation names */
41 #define MY_UTF8MB3_GENERAL_CI MY_UTF8MB3 "_general_ci"
42 #define MY_UTF8MB3_GENERAL_CS MY_UTF8MB3 "_general_cs"
43 #define MY_UTF8MB3_BIN MY_UTF8MB3 "_bin"
44 #define MY_UTF8MB4_GENERAL_CI MY_UTF8MB4 "_general_ci"
45 #define MY_UTF8MB4_GENERAL_CS MY_UTF8MB4 "_general_cs"
46 #define MY_UTF8MB4_GENERAL_NOPAD_CI MY_UTF8MB4 "_general_nopad_ci"
47 #define MY_UTF8MB4_BIN MY_UTF8MB4 "_bin"
48 #define MY_UTF8MB4_NOPAD_BIN MY_UTF8MB4 "_nopad_bin"
49
50
51
52 #ifndef HAVE_CHARSET_utf8
53 #define HAVE_CHARSET_utf8
54 #endif
55
56 #ifdef HAVE_CHARSET_utf8
57 #define HAVE_UNIDATA
58 #endif
59
60 #ifdef HAVE_CHARSET_ucs2
61 #define HAVE_UNIDATA
62 #endif
63
64 #ifdef HAVE_CHARSET_utf16
65 #define HAVE_UNIDATA
66 #endif
67
68 #ifdef HAVE_CHARSET_utf32
69 #define HAVE_UNIDATA
70 #endif
71
72
73 #if defined(HAVE_CHARSET_utf8) || defined(HAVE_CHARSET_utf8mb4)
74
75 static inline
my_valid_mbcharlen_utf8mb3(const uchar * s,const uchar * e)76 int my_valid_mbcharlen_utf8mb3(const uchar *s, const uchar *e)
77 {
78 uchar c;
79
80 DBUG_ASSERT(s < e);
81 c= s[0];
82 if (c < 0x80)
83 return 1;
84
85 if (c < 0xc2)
86 return MY_CS_ILSEQ;
87
88 if (c < 0xe0)
89 {
90 if (s+2 > e) /* We need 2 characters */
91 return MY_CS_TOOSMALL2;
92
93 if (!(IS_CONTINUATION_BYTE(s[1])))
94 return MY_CS_ILSEQ;
95
96 return 2;
97 }
98
99 DBUG_ASSERT(c < 0xf0);
100 if (s+3 > e) /* We need 3 characters */
101 return MY_CS_TOOSMALL3;
102
103 if (!IS_UTF8MB3_STEP2(c, s[1], s[2]))
104 return MY_CS_ILSEQ;
105
106 return 3;
107 }
108
109 #endif /*HAVE_CHARSET_utf8 || HAVE_CHARSET_utf8mb4*/
110
111 #ifdef HAVE_UNIDATA
112
113 #include "my_uctype.h"
114
115 MY_UNICASE_CHARACTER my_unicase_default_page00[]={
116 {0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
117 {0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
118 {0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
119 {0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
120 {0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
121 {0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
122 {0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
123 {0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
124 {0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
125 {0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
126 {0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
127 {0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
128 {0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
129 {0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
130 {0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
131 {0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
132 {0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
133 {0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
134 {0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
135 {0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
136 {0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
137 {0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
138 {0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
139 {0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
140 {0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
141 {0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
142 {0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
143 {0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
144 {0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
145 {0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
146 {0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
147 {0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
148 {0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
149 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
150 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
151 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
152 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
153 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
154 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
155 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
156 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
157 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
158 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
159 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
160 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
161 {0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
162 {0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
163 {0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
164 {0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
165 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
166 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
167 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
168 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
169 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
170 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
171 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
172 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
173 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
174 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
175 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
176 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
177 {0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
178 {0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
179 {0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
180 {0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
181 {0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
182 {0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
183 {0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
184 {0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
185 {0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
186 {0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
187 {0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
188 {0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
189 {0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
190 {0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
191 {0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
192 {0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
193 {0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
194 {0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
195 {0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
196 {0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
197 {0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
198 {0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
199 {0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
200 {0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
201 {0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
202 {0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
203 {0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
204 {0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
205 {0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
206 {0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
207 {0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
208 {0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
209 {0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
210 {0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
211 {0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
212 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
213 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
214 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
215 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
216 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
217 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
218 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
219 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
220 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
221 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
222 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
223 {0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
224 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
225 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
226 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
227 {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x0053},
228 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
229 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
230 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
231 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
232 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
233 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
234 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
235 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
236 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
237 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
238 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
239 {0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
240 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
241 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
242 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
243 {0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
244 };
245
246
247 /*
248 Almost similar to my_unicase_default_page00, but maps sorting order
249 for U+00DF to 0x00DF instead of 0x0053.
250 */
251 static MY_UNICASE_CHARACTER plane00_mysql500[]={
252 {0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
253 {0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
254 {0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
255 {0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
256 {0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
257 {0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
258 {0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
259 {0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
260 {0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
261 {0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
262 {0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
263 {0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
264 {0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
265 {0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
266 {0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
267 {0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
268 {0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
269 {0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
270 {0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
271 {0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
272 {0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
273 {0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
274 {0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
275 {0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
276 {0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
277 {0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
278 {0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
279 {0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
280 {0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
281 {0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
282 {0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
283 {0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
284 {0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
285 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
286 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
287 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
288 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
289 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
290 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
291 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
292 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
293 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
294 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
295 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
296 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
297 {0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
298 {0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
299 {0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
300 {0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
301 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
302 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
303 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
304 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
305 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
306 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
307 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
308 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
309 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
310 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
311 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
312 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
313 {0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
314 {0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
315 {0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
316 {0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
317 {0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
318 {0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
319 {0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
320 {0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
321 {0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
322 {0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
323 {0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
324 {0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
325 {0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
326 {0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
327 {0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
328 {0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
329 {0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
330 {0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
331 {0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
332 {0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
333 {0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
334 {0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
335 {0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
336 {0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
337 {0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
338 {0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
339 {0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
340 {0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
341 {0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
342 {0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
343 {0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
344 {0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
345 {0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
346 {0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
347 {0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
348 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
349 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
350 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
351 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
352 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
353 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
354 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
355 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
356 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
357 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
358 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
359 {0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
360 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
361 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
362 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
363 {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x00DF},
364 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
365 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
366 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
367 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
368 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
369 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
370 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
371 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
372 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
373 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
374 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
375 {0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
376 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
377 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
378 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
379 {0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
380 };
381
382
383 static MY_UNICASE_CHARACTER plane01[]={
384 {0x0100,0x0101,0x0041}, {0x0100,0x0101,0x0041},
385 {0x0102,0x0103,0x0041}, {0x0102,0x0103,0x0041},
386 {0x0104,0x0105,0x0041}, {0x0104,0x0105,0x0041},
387 {0x0106,0x0107,0x0043}, {0x0106,0x0107,0x0043},
388 {0x0108,0x0109,0x0043}, {0x0108,0x0109,0x0043},
389 {0x010A,0x010B,0x0043}, {0x010A,0x010B,0x0043},
390 {0x010C,0x010D,0x0043}, {0x010C,0x010D,0x0043},
391 {0x010E,0x010F,0x0044}, {0x010E,0x010F,0x0044},
392 {0x0110,0x0111,0x0110}, {0x0110,0x0111,0x0110},
393 {0x0112,0x0113,0x0045}, {0x0112,0x0113,0x0045},
394 {0x0114,0x0115,0x0045}, {0x0114,0x0115,0x0045},
395 {0x0116,0x0117,0x0045}, {0x0116,0x0117,0x0045},
396 {0x0118,0x0119,0x0045}, {0x0118,0x0119,0x0045},
397 {0x011A,0x011B,0x0045}, {0x011A,0x011B,0x0045},
398 {0x011C,0x011D,0x0047}, {0x011C,0x011D,0x0047},
399 {0x011E,0x011F,0x0047}, {0x011E,0x011F,0x0047},
400 {0x0120,0x0121,0x0047}, {0x0120,0x0121,0x0047},
401 {0x0122,0x0123,0x0047}, {0x0122,0x0123,0x0047},
402 {0x0124,0x0125,0x0048}, {0x0124,0x0125,0x0048},
403 {0x0126,0x0127,0x0126}, {0x0126,0x0127,0x0126},
404 {0x0128,0x0129,0x0049}, {0x0128,0x0129,0x0049},
405 {0x012A,0x012B,0x0049}, {0x012A,0x012B,0x0049},
406 {0x012C,0x012D,0x0049}, {0x012C,0x012D,0x0049},
407 {0x012E,0x012F,0x0049}, {0x012E,0x012F,0x0049},
408 {0x0130,0x0069,0x0049}, {0x0049,0x0131,0x0049},
409 {0x0132,0x0133,0x0132}, {0x0132,0x0133,0x0132},
410 {0x0134,0x0135,0x004A}, {0x0134,0x0135,0x004A},
411 {0x0136,0x0137,0x004B}, {0x0136,0x0137,0x004B},
412 {0x0138,0x0138,0x0138}, {0x0139,0x013A,0x004C},
413 {0x0139,0x013A,0x004C}, {0x013B,0x013C,0x004C},
414 {0x013B,0x013C,0x004C}, {0x013D,0x013E,0x004C},
415 {0x013D,0x013E,0x004C}, {0x013F,0x0140,0x013F},
416 {0x013F,0x0140,0x013F}, {0x0141,0x0142,0x0141},
417 {0x0141,0x0142,0x0141}, {0x0143,0x0144,0x004E},
418 {0x0143,0x0144,0x004E}, {0x0145,0x0146,0x004E},
419 {0x0145,0x0146,0x004E}, {0x0147,0x0148,0x004E},
420 {0x0147,0x0148,0x004E}, {0x0149,0x0149,0x0149},
421 {0x014A,0x014B,0x014A}, {0x014A,0x014B,0x014A},
422 {0x014C,0x014D,0x004F}, {0x014C,0x014D,0x004F},
423 {0x014E,0x014F,0x004F}, {0x014E,0x014F,0x004F},
424 {0x0150,0x0151,0x004F}, {0x0150,0x0151,0x004F},
425 {0x0152,0x0153,0x0152}, {0x0152,0x0153,0x0152},
426 {0x0154,0x0155,0x0052}, {0x0154,0x0155,0x0052},
427 {0x0156,0x0157,0x0052}, {0x0156,0x0157,0x0052},
428 {0x0158,0x0159,0x0052}, {0x0158,0x0159,0x0052},
429 {0x015A,0x015B,0x0053}, {0x015A,0x015B,0x0053},
430 {0x015C,0x015D,0x0053}, {0x015C,0x015D,0x0053},
431 {0x015E,0x015F,0x0053}, {0x015E,0x015F,0x0053},
432 {0x0160,0x0161,0x0053}, {0x0160,0x0161,0x0053},
433 {0x0162,0x0163,0x0054}, {0x0162,0x0163,0x0054},
434 {0x0164,0x0165,0x0054}, {0x0164,0x0165,0x0054},
435 {0x0166,0x0167,0x0166}, {0x0166,0x0167,0x0166},
436 {0x0168,0x0169,0x0055}, {0x0168,0x0169,0x0055},
437 {0x016A,0x016B,0x0055}, {0x016A,0x016B,0x0055},
438 {0x016C,0x016D,0x0055}, {0x016C,0x016D,0x0055},
439 {0x016E,0x016F,0x0055}, {0x016E,0x016F,0x0055},
440 {0x0170,0x0171,0x0055}, {0x0170,0x0171,0x0055},
441 {0x0172,0x0173,0x0055}, {0x0172,0x0173,0x0055},
442 {0x0174,0x0175,0x0057}, {0x0174,0x0175,0x0057},
443 {0x0176,0x0177,0x0059}, {0x0176,0x0177,0x0059},
444 {0x0178,0x00FF,0x0059}, {0x0179,0x017A,0x005A},
445 {0x0179,0x017A,0x005A}, {0x017B,0x017C,0x005A},
446 {0x017B,0x017C,0x005A}, {0x017D,0x017E,0x005A},
447 {0x017D,0x017E,0x005A}, {0x0053,0x017F,0x0053},
448 {0x0180,0x0180,0x0180}, {0x0181,0x0253,0x0181},
449 {0x0182,0x0183,0x0182}, {0x0182,0x0183,0x0182},
450 {0x0184,0x0185,0x0184}, {0x0184,0x0185,0x0184},
451 {0x0186,0x0254,0x0186}, {0x0187,0x0188,0x0187},
452 {0x0187,0x0188,0x0187}, {0x0189,0x0256,0x0189},
453 {0x018A,0x0257,0x018A}, {0x018B,0x018C,0x018B},
454 {0x018B,0x018C,0x018B}, {0x018D,0x018D,0x018D},
455 {0x018E,0x01DD,0x018E}, {0x018F,0x0259,0x018F},
456 {0x0190,0x025B,0x0190}, {0x0191,0x0192,0x0191},
457 {0x0191,0x0192,0x0191}, {0x0193,0x0260,0x0193},
458 {0x0194,0x0263,0x0194}, {0x01F6,0x0195,0x01F6},
459 {0x0196,0x0269,0x0196}, {0x0197,0x0268,0x0197},
460 {0x0198,0x0199,0x0198}, {0x0198,0x0199,0x0198},
461 {0x019A,0x019A,0x019A}, {0x019B,0x019B,0x019B},
462 {0x019C,0x026F,0x019C}, {0x019D,0x0272,0x019D},
463 {0x019E,0x019E,0x019E}, {0x019F,0x0275,0x019F},
464 {0x01A0,0x01A1,0x004F}, {0x01A0,0x01A1,0x004F},
465 {0x01A2,0x01A3,0x01A2}, {0x01A2,0x01A3,0x01A2},
466 {0x01A4,0x01A5,0x01A4}, {0x01A4,0x01A5,0x01A4},
467 {0x01A6,0x0280,0x01A6}, {0x01A7,0x01A8,0x01A7},
468 {0x01A7,0x01A8,0x01A7}, {0x01A9,0x0283,0x01A9},
469 {0x01AA,0x01AA,0x01AA}, {0x01AB,0x01AB,0x01AB},
470 {0x01AC,0x01AD,0x01AC}, {0x01AC,0x01AD,0x01AC},
471 {0x01AE,0x0288,0x01AE}, {0x01AF,0x01B0,0x0055},
472 {0x01AF,0x01B0,0x0055}, {0x01B1,0x028A,0x01B1},
473 {0x01B2,0x028B,0x01B2}, {0x01B3,0x01B4,0x01B3},
474 {0x01B3,0x01B4,0x01B3}, {0x01B5,0x01B6,0x01B5},
475 {0x01B5,0x01B6,0x01B5}, {0x01B7,0x0292,0x01B7},
476 {0x01B8,0x01B9,0x01B8}, {0x01B8,0x01B9,0x01B8},
477 {0x01BA,0x01BA,0x01BA}, {0x01BB,0x01BB,0x01BB},
478 {0x01BC,0x01BD,0x01BC}, {0x01BC,0x01BD,0x01BC},
479 {0x01BE,0x01BE,0x01BE}, {0x01F7,0x01BF,0x01F7},
480 {0x01C0,0x01C0,0x01C0}, {0x01C1,0x01C1,0x01C1},
481 {0x01C2,0x01C2,0x01C2}, {0x01C3,0x01C3,0x01C3},
482 {0x01C4,0x01C6,0x01C4}, {0x01C4,0x01C6,0x01C4},
483 {0x01C4,0x01C6,0x01C4}, {0x01C7,0x01C9,0x01C7},
484 {0x01C7,0x01C9,0x01C7}, {0x01C7,0x01C9,0x01C7},
485 {0x01CA,0x01CC,0x01CA}, {0x01CA,0x01CC,0x01CA},
486 {0x01CA,0x01CC,0x01CA}, {0x01CD,0x01CE,0x0041},
487 {0x01CD,0x01CE,0x0041}, {0x01CF,0x01D0,0x0049},
488 {0x01CF,0x01D0,0x0049}, {0x01D1,0x01D2,0x004F},
489 {0x01D1,0x01D2,0x004F}, {0x01D3,0x01D4,0x0055},
490 {0x01D3,0x01D4,0x0055}, {0x01D5,0x01D6,0x0055},
491 {0x01D5,0x01D6,0x0055}, {0x01D7,0x01D8,0x0055},
492 {0x01D7,0x01D8,0x0055}, {0x01D9,0x01DA,0x0055},
493 {0x01D9,0x01DA,0x0055}, {0x01DB,0x01DC,0x0055},
494 {0x01DB,0x01DC,0x0055}, {0x018E,0x01DD,0x018E},
495 {0x01DE,0x01DF,0x0041}, {0x01DE,0x01DF,0x0041},
496 {0x01E0,0x01E1,0x0041}, {0x01E0,0x01E1,0x0041},
497 {0x01E2,0x01E3,0x00C6}, {0x01E2,0x01E3,0x00C6},
498 {0x01E4,0x01E5,0x01E4}, {0x01E4,0x01E5,0x01E4},
499 {0x01E6,0x01E7,0x0047}, {0x01E6,0x01E7,0x0047},
500 {0x01E8,0x01E9,0x004B}, {0x01E8,0x01E9,0x004B},
501 {0x01EA,0x01EB,0x004F}, {0x01EA,0x01EB,0x004F},
502 {0x01EC,0x01ED,0x004F}, {0x01EC,0x01ED,0x004F},
503 {0x01EE,0x01EF,0x01B7}, {0x01EE,0x01EF,0x01B7},
504 {0x01F0,0x01F0,0x004A}, {0x01F1,0x01F3,0x01F1},
505 {0x01F1,0x01F3,0x01F1}, {0x01F1,0x01F3,0x01F1},
506 {0x01F4,0x01F5,0x0047}, {0x01F4,0x01F5,0x0047},
507 {0x01F6,0x0195,0x01F6}, {0x01F7,0x01BF,0x01F7},
508 {0x01F8,0x01F9,0x004E}, {0x01F8,0x01F9,0x004E},
509 {0x01FA,0x01FB,0x0041}, {0x01FA,0x01FB,0x0041},
510 {0x01FC,0x01FD,0x00C6}, {0x01FC,0x01FD,0x00C6},
511 {0x01FE,0x01FF,0x00D8}, {0x01FE,0x01FF,0x00D8}
512 };
513
514 static MY_UNICASE_CHARACTER plane02[]={
515 {0x0200,0x0201,0x0041}, {0x0200,0x0201,0x0041},
516 {0x0202,0x0203,0x0041}, {0x0202,0x0203,0x0041},
517 {0x0204,0x0205,0x0045}, {0x0204,0x0205,0x0045},
518 {0x0206,0x0207,0x0045}, {0x0206,0x0207,0x0045},
519 {0x0208,0x0209,0x0049}, {0x0208,0x0209,0x0049},
520 {0x020A,0x020B,0x0049}, {0x020A,0x020B,0x0049},
521 {0x020C,0x020D,0x004F}, {0x020C,0x020D,0x004F},
522 {0x020E,0x020F,0x004F}, {0x020E,0x020F,0x004F},
523 {0x0210,0x0211,0x0052}, {0x0210,0x0211,0x0052},
524 {0x0212,0x0213,0x0052}, {0x0212,0x0213,0x0052},
525 {0x0214,0x0215,0x0055}, {0x0214,0x0215,0x0055},
526 {0x0216,0x0217,0x0055}, {0x0216,0x0217,0x0055},
527 {0x0218,0x0219,0x0053}, {0x0218,0x0219,0x0053},
528 {0x021A,0x021B,0x0054}, {0x021A,0x021B,0x0054},
529 {0x021C,0x021D,0x021C}, {0x021C,0x021D,0x021C},
530 {0x021E,0x021F,0x0048}, {0x021E,0x021F,0x0048},
531 {0x0220,0x0220,0x0220}, {0x0221,0x0221,0x0221},
532 {0x0222,0x0223,0x0222}, {0x0222,0x0223,0x0222},
533 {0x0224,0x0225,0x0224}, {0x0224,0x0225,0x0224},
534 {0x0226,0x0227,0x0041}, {0x0226,0x0227,0x0041},
535 {0x0228,0x0229,0x0045}, {0x0228,0x0229,0x0045},
536 {0x022A,0x022B,0x004F}, {0x022A,0x022B,0x004F},
537 {0x022C,0x022D,0x004F}, {0x022C,0x022D,0x004F},
538 {0x022E,0x022F,0x004F}, {0x022E,0x022F,0x004F},
539 {0x0230,0x0231,0x004F}, {0x0230,0x0231,0x004F},
540 {0x0232,0x0233,0x0059}, {0x0232,0x0233,0x0059},
541 {0x0234,0x0234,0x0234}, {0x0235,0x0235,0x0235},
542 {0x0236,0x0236,0x0236}, {0x0237,0x0237,0x0237},
543 {0x0238,0x0238,0x0238}, {0x0239,0x0239,0x0239},
544 {0x023A,0x023A,0x023A}, {0x023B,0x023B,0x023B},
545 {0x023C,0x023C,0x023C}, {0x023D,0x023D,0x023D},
546 {0x023E,0x023E,0x023E}, {0x023F,0x023F,0x023F},
547 {0x0240,0x0240,0x0240}, {0x0241,0x0241,0x0241},
548 {0x0242,0x0242,0x0242}, {0x0243,0x0243,0x0243},
549 {0x0244,0x0244,0x0244}, {0x0245,0x0245,0x0245},
550 {0x0246,0x0246,0x0246}, {0x0247,0x0247,0x0247},
551 {0x0248,0x0248,0x0248}, {0x0249,0x0249,0x0249},
552 {0x024A,0x024A,0x024A}, {0x024B,0x024B,0x024B},
553 {0x024C,0x024C,0x024C}, {0x024D,0x024D,0x024D},
554 {0x024E,0x024E,0x024E}, {0x024F,0x024F,0x024F},
555 {0x0250,0x0250,0x0250}, {0x0251,0x0251,0x0251},
556 {0x0252,0x0252,0x0252}, {0x0181,0x0253,0x0181},
557 {0x0186,0x0254,0x0186}, {0x0255,0x0255,0x0255},
558 {0x0189,0x0256,0x0189}, {0x018A,0x0257,0x018A},
559 {0x0258,0x0258,0x0258}, {0x018F,0x0259,0x018F},
560 {0x025A,0x025A,0x025A}, {0x0190,0x025B,0x0190},
561 {0x025C,0x025C,0x025C}, {0x025D,0x025D,0x025D},
562 {0x025E,0x025E,0x025E}, {0x025F,0x025F,0x025F},
563 {0x0193,0x0260,0x0193}, {0x0261,0x0261,0x0261},
564 {0x0262,0x0262,0x0262}, {0x0194,0x0263,0x0194},
565 {0x0264,0x0264,0x0264}, {0x0265,0x0265,0x0265},
566 {0x0266,0x0266,0x0266}, {0x0267,0x0267,0x0267},
567 {0x0197,0x0268,0x0197}, {0x0196,0x0269,0x0196},
568 {0x026A,0x026A,0x026A}, {0x026B,0x026B,0x026B},
569 {0x026C,0x026C,0x026C}, {0x026D,0x026D,0x026D},
570 {0x026E,0x026E,0x026E}, {0x019C,0x026F,0x019C},
571 {0x0270,0x0270,0x0270}, {0x0271,0x0271,0x0271},
572 {0x019D,0x0272,0x019D}, {0x0273,0x0273,0x0273},
573 {0x0274,0x0274,0x0274}, {0x019F,0x0275,0x019F},
574 {0x0276,0x0276,0x0276}, {0x0277,0x0277,0x0277},
575 {0x0278,0x0278,0x0278}, {0x0279,0x0279,0x0279},
576 {0x027A,0x027A,0x027A}, {0x027B,0x027B,0x027B},
577 {0x027C,0x027C,0x027C}, {0x027D,0x027D,0x027D},
578 {0x027E,0x027E,0x027E}, {0x027F,0x027F,0x027F},
579 {0x01A6,0x0280,0x01A6}, {0x0281,0x0281,0x0281},
580 {0x0282,0x0282,0x0282}, {0x01A9,0x0283,0x01A9},
581 {0x0284,0x0284,0x0284}, {0x0285,0x0285,0x0285},
582 {0x0286,0x0286,0x0286}, {0x0287,0x0287,0x0287},
583 {0x01AE,0x0288,0x01AE}, {0x0289,0x0289,0x0289},
584 {0x01B1,0x028A,0x01B1}, {0x01B2,0x028B,0x01B2},
585 {0x028C,0x028C,0x028C}, {0x028D,0x028D,0x028D},
586 {0x028E,0x028E,0x028E}, {0x028F,0x028F,0x028F},
587 {0x0290,0x0290,0x0290}, {0x0291,0x0291,0x0291},
588 {0x01B7,0x0292,0x01B7}, {0x0293,0x0293,0x0293},
589 {0x0294,0x0294,0x0294}, {0x0295,0x0295,0x0295},
590 {0x0296,0x0296,0x0296}, {0x0297,0x0297,0x0297},
591 {0x0298,0x0298,0x0298}, {0x0299,0x0299,0x0299},
592 {0x029A,0x029A,0x029A}, {0x029B,0x029B,0x029B},
593 {0x029C,0x029C,0x029C}, {0x029D,0x029D,0x029D},
594 {0x029E,0x029E,0x029E}, {0x029F,0x029F,0x029F},
595 {0x02A0,0x02A0,0x02A0}, {0x02A1,0x02A1,0x02A1},
596 {0x02A2,0x02A2,0x02A2}, {0x02A3,0x02A3,0x02A3},
597 {0x02A4,0x02A4,0x02A4}, {0x02A5,0x02A5,0x02A5},
598 {0x02A6,0x02A6,0x02A6}, {0x02A7,0x02A7,0x02A7},
599 {0x02A8,0x02A8,0x02A8}, {0x02A9,0x02A9,0x02A9},
600 {0x02AA,0x02AA,0x02AA}, {0x02AB,0x02AB,0x02AB},
601 {0x02AC,0x02AC,0x02AC}, {0x02AD,0x02AD,0x02AD},
602 {0x02AE,0x02AE,0x02AE}, {0x02AF,0x02AF,0x02AF},
603 {0x02B0,0x02B0,0x02B0}, {0x02B1,0x02B1,0x02B1},
604 {0x02B2,0x02B2,0x02B2}, {0x02B3,0x02B3,0x02B3},
605 {0x02B4,0x02B4,0x02B4}, {0x02B5,0x02B5,0x02B5},
606 {0x02B6,0x02B6,0x02B6}, {0x02B7,0x02B7,0x02B7},
607 {0x02B8,0x02B8,0x02B8}, {0x02B9,0x02B9,0x02B9},
608 {0x02BA,0x02BA,0x02BA}, {0x02BB,0x02BB,0x02BB},
609 {0x02BC,0x02BC,0x02BC}, {0x02BD,0x02BD,0x02BD},
610 {0x02BE,0x02BE,0x02BE}, {0x02BF,0x02BF,0x02BF},
611 {0x02C0,0x02C0,0x02C0}, {0x02C1,0x02C1,0x02C1},
612 {0x02C2,0x02C2,0x02C2}, {0x02C3,0x02C3,0x02C3},
613 {0x02C4,0x02C4,0x02C4}, {0x02C5,0x02C5,0x02C5},
614 {0x02C6,0x02C6,0x02C6}, {0x02C7,0x02C7,0x02C7},
615 {0x02C8,0x02C8,0x02C8}, {0x02C9,0x02C9,0x02C9},
616 {0x02CA,0x02CA,0x02CA}, {0x02CB,0x02CB,0x02CB},
617 {0x02CC,0x02CC,0x02CC}, {0x02CD,0x02CD,0x02CD},
618 {0x02CE,0x02CE,0x02CE}, {0x02CF,0x02CF,0x02CF},
619 {0x02D0,0x02D0,0x02D0}, {0x02D1,0x02D1,0x02D1},
620 {0x02D2,0x02D2,0x02D2}, {0x02D3,0x02D3,0x02D3},
621 {0x02D4,0x02D4,0x02D4}, {0x02D5,0x02D5,0x02D5},
622 {0x02D6,0x02D6,0x02D6}, {0x02D7,0x02D7,0x02D7},
623 {0x02D8,0x02D8,0x02D8}, {0x02D9,0x02D9,0x02D9},
624 {0x02DA,0x02DA,0x02DA}, {0x02DB,0x02DB,0x02DB},
625 {0x02DC,0x02DC,0x02DC}, {0x02DD,0x02DD,0x02DD},
626 {0x02DE,0x02DE,0x02DE}, {0x02DF,0x02DF,0x02DF},
627 {0x02E0,0x02E0,0x02E0}, {0x02E1,0x02E1,0x02E1},
628 {0x02E2,0x02E2,0x02E2}, {0x02E3,0x02E3,0x02E3},
629 {0x02E4,0x02E4,0x02E4}, {0x02E5,0x02E5,0x02E5},
630 {0x02E6,0x02E6,0x02E6}, {0x02E7,0x02E7,0x02E7},
631 {0x02E8,0x02E8,0x02E8}, {0x02E9,0x02E9,0x02E9},
632 {0x02EA,0x02EA,0x02EA}, {0x02EB,0x02EB,0x02EB},
633 {0x02EC,0x02EC,0x02EC}, {0x02ED,0x02ED,0x02ED},
634 {0x02EE,0x02EE,0x02EE}, {0x02EF,0x02EF,0x02EF},
635 {0x02F0,0x02F0,0x02F0}, {0x02F1,0x02F1,0x02F1},
636 {0x02F2,0x02F2,0x02F2}, {0x02F3,0x02F3,0x02F3},
637 {0x02F4,0x02F4,0x02F4}, {0x02F5,0x02F5,0x02F5},
638 {0x02F6,0x02F6,0x02F6}, {0x02F7,0x02F7,0x02F7},
639 {0x02F8,0x02F8,0x02F8}, {0x02F9,0x02F9,0x02F9},
640 {0x02FA,0x02FA,0x02FA}, {0x02FB,0x02FB,0x02FB},
641 {0x02FC,0x02FC,0x02FC}, {0x02FD,0x02FD,0x02FD},
642 {0x02FE,0x02FE,0x02FE}, {0x02FF,0x02FF,0x02FF}
643 };
644
645 static MY_UNICASE_CHARACTER plane03[]={
646 {0x0300,0x0300,0x0300}, {0x0301,0x0301,0x0301},
647 {0x0302,0x0302,0x0302}, {0x0303,0x0303,0x0303},
648 {0x0304,0x0304,0x0304}, {0x0305,0x0305,0x0305},
649 {0x0306,0x0306,0x0306}, {0x0307,0x0307,0x0307},
650 {0x0308,0x0308,0x0308}, {0x0309,0x0309,0x0309},
651 {0x030A,0x030A,0x030A}, {0x030B,0x030B,0x030B},
652 {0x030C,0x030C,0x030C}, {0x030D,0x030D,0x030D},
653 {0x030E,0x030E,0x030E}, {0x030F,0x030F,0x030F},
654 {0x0310,0x0310,0x0310}, {0x0311,0x0311,0x0311},
655 {0x0312,0x0312,0x0312}, {0x0313,0x0313,0x0313},
656 {0x0314,0x0314,0x0314}, {0x0315,0x0315,0x0315},
657 {0x0316,0x0316,0x0316}, {0x0317,0x0317,0x0317},
658 {0x0318,0x0318,0x0318}, {0x0319,0x0319,0x0319},
659 {0x031A,0x031A,0x031A}, {0x031B,0x031B,0x031B},
660 {0x031C,0x031C,0x031C}, {0x031D,0x031D,0x031D},
661 {0x031E,0x031E,0x031E}, {0x031F,0x031F,0x031F},
662 {0x0320,0x0320,0x0320}, {0x0321,0x0321,0x0321},
663 {0x0322,0x0322,0x0322}, {0x0323,0x0323,0x0323},
664 {0x0324,0x0324,0x0324}, {0x0325,0x0325,0x0325},
665 {0x0326,0x0326,0x0326}, {0x0327,0x0327,0x0327},
666 {0x0328,0x0328,0x0328}, {0x0329,0x0329,0x0329},
667 {0x032A,0x032A,0x032A}, {0x032B,0x032B,0x032B},
668 {0x032C,0x032C,0x032C}, {0x032D,0x032D,0x032D},
669 {0x032E,0x032E,0x032E}, {0x032F,0x032F,0x032F},
670 {0x0330,0x0330,0x0330}, {0x0331,0x0331,0x0331},
671 {0x0332,0x0332,0x0332}, {0x0333,0x0333,0x0333},
672 {0x0334,0x0334,0x0334}, {0x0335,0x0335,0x0335},
673 {0x0336,0x0336,0x0336}, {0x0337,0x0337,0x0337},
674 {0x0338,0x0338,0x0338}, {0x0339,0x0339,0x0339},
675 {0x033A,0x033A,0x033A}, {0x033B,0x033B,0x033B},
676 {0x033C,0x033C,0x033C}, {0x033D,0x033D,0x033D},
677 {0x033E,0x033E,0x033E}, {0x033F,0x033F,0x033F},
678 {0x0340,0x0340,0x0340}, {0x0341,0x0341,0x0341},
679 {0x0342,0x0342,0x0342}, {0x0343,0x0343,0x0343},
680 {0x0344,0x0344,0x0344}, {0x0399,0x0345,0x0399},
681 {0x0346,0x0346,0x0346}, {0x0347,0x0347,0x0347},
682 {0x0348,0x0348,0x0348}, {0x0349,0x0349,0x0349},
683 {0x034A,0x034A,0x034A}, {0x034B,0x034B,0x034B},
684 {0x034C,0x034C,0x034C}, {0x034D,0x034D,0x034D},
685 {0x034E,0x034E,0x034E}, {0x034F,0x034F,0x034F},
686 {0x0350,0x0350,0x0350}, {0x0351,0x0351,0x0351},
687 {0x0352,0x0352,0x0352}, {0x0353,0x0353,0x0353},
688 {0x0354,0x0354,0x0354}, {0x0355,0x0355,0x0355},
689 {0x0356,0x0356,0x0356}, {0x0357,0x0357,0x0357},
690 {0x0358,0x0358,0x0358}, {0x0359,0x0359,0x0359},
691 {0x035A,0x035A,0x035A}, {0x035B,0x035B,0x035B},
692 {0x035C,0x035C,0x035C}, {0x035D,0x035D,0x035D},
693 {0x035E,0x035E,0x035E}, {0x035F,0x035F,0x035F},
694 {0x0360,0x0360,0x0360}, {0x0361,0x0361,0x0361},
695 {0x0362,0x0362,0x0362}, {0x0363,0x0363,0x0363},
696 {0x0364,0x0364,0x0364}, {0x0365,0x0365,0x0365},
697 {0x0366,0x0366,0x0366}, {0x0367,0x0367,0x0367},
698 {0x0368,0x0368,0x0368}, {0x0369,0x0369,0x0369},
699 {0x036A,0x036A,0x036A}, {0x036B,0x036B,0x036B},
700 {0x036C,0x036C,0x036C}, {0x036D,0x036D,0x036D},
701 {0x036E,0x036E,0x036E}, {0x036F,0x036F,0x036F},
702 {0x0370,0x0370,0x0370}, {0x0371,0x0371,0x0371},
703 {0x0372,0x0372,0x0372}, {0x0373,0x0373,0x0373},
704 {0x0374,0x0374,0x0374}, {0x0375,0x0375,0x0375},
705 {0x0376,0x0376,0x0376}, {0x0377,0x0377,0x0377},
706 {0x0378,0x0378,0x0378}, {0x0379,0x0379,0x0379},
707 {0x037A,0x037A,0x037A}, {0x037B,0x037B,0x037B},
708 {0x037C,0x037C,0x037C}, {0x037D,0x037D,0x037D},
709 {0x037E,0x037E,0x037E}, {0x037F,0x037F,0x037F},
710 {0x0380,0x0380,0x0380}, {0x0381,0x0381,0x0381},
711 {0x0382,0x0382,0x0382}, {0x0383,0x0383,0x0383},
712 {0x0384,0x0384,0x0384}, {0x0385,0x0385,0x0385},
713 {0x0386,0x03AC,0x0391}, {0x0387,0x0387,0x0387},
714 {0x0388,0x03AD,0x0395}, {0x0389,0x03AE,0x0397},
715 {0x038A,0x03AF,0x0399}, {0x038B,0x038B,0x038B},
716 {0x038C,0x03CC,0x039F}, {0x038D,0x038D,0x038D},
717 {0x038E,0x03CD,0x03A5}, {0x038F,0x03CE,0x03A9},
718 {0x0390,0x0390,0x0399}, {0x0391,0x03B1,0x0391},
719 {0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393},
720 {0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395},
721 {0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397},
722 {0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399},
723 {0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B},
724 {0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D},
725 {0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F},
726 {0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1},
727 {0x03A2,0x03A2,0x03A2}, {0x03A3,0x03C3,0x03A3},
728 {0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5},
729 {0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7},
730 {0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9},
731 {0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5},
732 {0x0386,0x03AC,0x0391}, {0x0388,0x03AD,0x0395},
733 {0x0389,0x03AE,0x0397}, {0x038A,0x03AF,0x0399},
734 {0x03B0,0x03B0,0x03A5}, {0x0391,0x03B1,0x0391},
735 {0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393},
736 {0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395},
737 {0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397},
738 {0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399},
739 {0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B},
740 {0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D},
741 {0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F},
742 {0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1},
743 {0x03A3,0x03C2,0x03A3}, {0x03A3,0x03C3,0x03A3},
744 {0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5},
745 {0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7},
746 {0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9},
747 {0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5},
748 {0x038C,0x03CC,0x039F}, {0x038E,0x03CD,0x03A5},
749 {0x038F,0x03CE,0x03A9}, {0x03CF,0x03CF,0x03CF},
750 {0x0392,0x03D0,0x0392}, {0x0398,0x03D1,0x0398},
751 {0x03D2,0x03D2,0x03D2}, {0x03D3,0x03D3,0x03D2},
752 {0x03D4,0x03D4,0x03D2}, {0x03A6,0x03D5,0x03A6},
753 {0x03A0,0x03D6,0x03A0}, {0x03D7,0x03D7,0x03D7},
754 {0x03D8,0x03D8,0x03D8}, {0x03D9,0x03D9,0x03D9},
755 {0x03DA,0x03DB,0x03DA}, {0x03DA,0x03DB,0x03DA},
756 {0x03DC,0x03DD,0x03DC}, {0x03DC,0x03DD,0x03DC},
757 {0x03DE,0x03DF,0x03DE}, {0x03DE,0x03DF,0x03DE},
758 {0x03E0,0x03E1,0x03E0}, {0x03E0,0x03E1,0x03E0},
759 {0x03E2,0x03E3,0x03E2}, {0x03E2,0x03E3,0x03E2},
760 {0x03E4,0x03E5,0x03E4}, {0x03E4,0x03E5,0x03E4},
761 {0x03E6,0x03E7,0x03E6}, {0x03E6,0x03E7,0x03E6},
762 {0x03E8,0x03E9,0x03E8}, {0x03E8,0x03E9,0x03E8},
763 {0x03EA,0x03EB,0x03EA}, {0x03EA,0x03EB,0x03EA},
764 {0x03EC,0x03ED,0x03EC}, {0x03EC,0x03ED,0x03EC},
765 {0x03EE,0x03EF,0x03EE}, {0x03EE,0x03EF,0x03EE},
766 {0x039A,0x03F0,0x039A}, {0x03A1,0x03F1,0x03A1},
767 {0x03A3,0x03F2,0x03A3}, {0x03F3,0x03F3,0x03F3},
768 {0x03F4,0x03F4,0x03F4}, {0x03F5,0x03F5,0x03F5},
769 {0x03F6,0x03F6,0x03F6}, {0x03F7,0x03F7,0x03F7},
770 {0x03F8,0x03F8,0x03F8}, {0x03F9,0x03F9,0x03F9},
771 {0x03FA,0x03FA,0x03FA}, {0x03FB,0x03FB,0x03FB},
772 {0x03FC,0x03FC,0x03FC}, {0x03FD,0x03FD,0x03FD},
773 {0x03FE,0x03FE,0x03FE}, {0x03FF,0x03FF,0x03FF}
774 };
775
776 static MY_UNICASE_CHARACTER plane04[]={
777 {0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415},
778 {0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413},
779 {0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405},
780 {0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406},
781 {0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409},
782 {0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B},
783 {0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418},
784 {0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F},
785 {0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411},
786 {0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413},
787 {0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415},
788 {0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417},
789 {0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419},
790 {0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B},
791 {0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D},
792 {0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F},
793 {0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421},
794 {0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423},
795 {0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425},
796 {0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427},
797 {0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429},
798 {0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B},
799 {0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D},
800 {0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F},
801 {0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411},
802 {0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413},
803 {0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415},
804 {0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417},
805 {0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419},
806 {0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B},
807 {0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D},
808 {0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F},
809 {0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421},
810 {0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423},
811 {0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425},
812 {0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427},
813 {0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429},
814 {0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B},
815 {0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D},
816 {0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F},
817 {0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415},
818 {0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413},
819 {0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405},
820 {0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406},
821 {0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409},
822 {0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B},
823 {0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418},
824 {0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F},
825 {0x0460,0x0461,0x0460}, {0x0460,0x0461,0x0460},
826 {0x0462,0x0463,0x0462}, {0x0462,0x0463,0x0462},
827 {0x0464,0x0465,0x0464}, {0x0464,0x0465,0x0464},
828 {0x0466,0x0467,0x0466}, {0x0466,0x0467,0x0466},
829 {0x0468,0x0469,0x0468}, {0x0468,0x0469,0x0468},
830 {0x046A,0x046B,0x046A}, {0x046A,0x046B,0x046A},
831 {0x046C,0x046D,0x046C}, {0x046C,0x046D,0x046C},
832 {0x046E,0x046F,0x046E}, {0x046E,0x046F,0x046E},
833 {0x0470,0x0471,0x0470}, {0x0470,0x0471,0x0470},
834 {0x0472,0x0473,0x0472}, {0x0472,0x0473,0x0472},
835 {0x0474,0x0475,0x0474}, {0x0474,0x0475,0x0474},
836 {0x0476,0x0477,0x0474}, {0x0476,0x0477,0x0474},
837 {0x0478,0x0479,0x0478}, {0x0478,0x0479,0x0478},
838 {0x047A,0x047B,0x047A}, {0x047A,0x047B,0x047A},
839 {0x047C,0x047D,0x047C}, {0x047C,0x047D,0x047C},
840 {0x047E,0x047F,0x047E}, {0x047E,0x047F,0x047E},
841 {0x0480,0x0481,0x0480}, {0x0480,0x0481,0x0480},
842 {0x0482,0x0482,0x0482}, {0x0483,0x0483,0x0483},
843 {0x0484,0x0484,0x0484}, {0x0485,0x0485,0x0485},
844 {0x0486,0x0486,0x0486}, {0x0487,0x0487,0x0487},
845 {0x0488,0x0488,0x0488}, {0x0489,0x0489,0x0489},
846 {0x048A,0x048A,0x048A}, {0x048B,0x048B,0x048B},
847 {0x048C,0x048D,0x048C}, {0x048C,0x048D,0x048C},
848 {0x048E,0x048F,0x048E}, {0x048E,0x048F,0x048E},
849 {0x0490,0x0491,0x0490}, {0x0490,0x0491,0x0490},
850 {0x0492,0x0493,0x0492}, {0x0492,0x0493,0x0492},
851 {0x0494,0x0495,0x0494}, {0x0494,0x0495,0x0494},
852 {0x0496,0x0497,0x0496}, {0x0496,0x0497,0x0496},
853 {0x0498,0x0499,0x0498}, {0x0498,0x0499,0x0498},
854 {0x049A,0x049B,0x049A}, {0x049A,0x049B,0x049A},
855 {0x049C,0x049D,0x049C}, {0x049C,0x049D,0x049C},
856 {0x049E,0x049F,0x049E}, {0x049E,0x049F,0x049E},
857 {0x04A0,0x04A1,0x04A0}, {0x04A0,0x04A1,0x04A0},
858 {0x04A2,0x04A3,0x04A2}, {0x04A2,0x04A3,0x04A2},
859 {0x04A4,0x04A5,0x04A4}, {0x04A4,0x04A5,0x04A4},
860 {0x04A6,0x04A7,0x04A6}, {0x04A6,0x04A7,0x04A6},
861 {0x04A8,0x04A9,0x04A8}, {0x04A8,0x04A9,0x04A8},
862 {0x04AA,0x04AB,0x04AA}, {0x04AA,0x04AB,0x04AA},
863 {0x04AC,0x04AD,0x04AC}, {0x04AC,0x04AD,0x04AC},
864 {0x04AE,0x04AF,0x04AE}, {0x04AE,0x04AF,0x04AE},
865 {0x04B0,0x04B1,0x04B0}, {0x04B0,0x04B1,0x04B0},
866 {0x04B2,0x04B3,0x04B2}, {0x04B2,0x04B3,0x04B2},
867 {0x04B4,0x04B5,0x04B4}, {0x04B4,0x04B5,0x04B4},
868 {0x04B6,0x04B7,0x04B6}, {0x04B6,0x04B7,0x04B6},
869 {0x04B8,0x04B9,0x04B8}, {0x04B8,0x04B9,0x04B8},
870 {0x04BA,0x04BB,0x04BA}, {0x04BA,0x04BB,0x04BA},
871 {0x04BC,0x04BD,0x04BC}, {0x04BC,0x04BD,0x04BC},
872 {0x04BE,0x04BF,0x04BE}, {0x04BE,0x04BF,0x04BE},
873 {0x04C0,0x04C0,0x04C0}, {0x04C1,0x04C2,0x0416},
874 {0x04C1,0x04C2,0x0416}, {0x04C3,0x04C4,0x04C3},
875 {0x04C3,0x04C4,0x04C3}, {0x04C5,0x04C5,0x04C5},
876 {0x04C6,0x04C6,0x04C6}, {0x04C7,0x04C8,0x04C7},
877 {0x04C7,0x04C8,0x04C7}, {0x04C9,0x04C9,0x04C9},
878 {0x04CA,0x04CA,0x04CA}, {0x04CB,0x04CC,0x04CB},
879 {0x04CB,0x04CC,0x04CB}, {0x04CD,0x04CD,0x04CD},
880 {0x04CE,0x04CE,0x04CE}, {0x04CF,0x04CF,0x04CF},
881 {0x04D0,0x04D1,0x0410}, {0x04D0,0x04D1,0x0410},
882 {0x04D2,0x04D3,0x0410}, {0x04D2,0x04D3,0x0410},
883 {0x04D4,0x04D5,0x04D4}, {0x04D4,0x04D5,0x04D4},
884 {0x04D6,0x04D7,0x0415}, {0x04D6,0x04D7,0x0415},
885 {0x04D8,0x04D9,0x04D8}, {0x04D8,0x04D9,0x04D8},
886 {0x04DA,0x04DB,0x04D8}, {0x04DA,0x04DB,0x04D8},
887 {0x04DC,0x04DD,0x0416}, {0x04DC,0x04DD,0x0416},
888 {0x04DE,0x04DF,0x0417}, {0x04DE,0x04DF,0x0417},
889 {0x04E0,0x04E1,0x04E0}, {0x04E0,0x04E1,0x04E0},
890 {0x04E2,0x04E3,0x0418}, {0x04E2,0x04E3,0x0418},
891 {0x04E4,0x04E5,0x0418}, {0x04E4,0x04E5,0x0418},
892 {0x04E6,0x04E7,0x041E}, {0x04E6,0x04E7,0x041E},
893 {0x04E8,0x04E9,0x04E8}, {0x04E8,0x04E9,0x04E8},
894 {0x04EA,0x04EB,0x04E8}, {0x04EA,0x04EB,0x04E8},
895 {0x04EC,0x04ED,0x042D}, {0x04EC,0x04ED,0x042D},
896 {0x04EE,0x04EF,0x0423}, {0x04EE,0x04EF,0x0423},
897 {0x04F0,0x04F1,0x0423}, {0x04F0,0x04F1,0x0423},
898 {0x04F2,0x04F3,0x0423}, {0x04F2,0x04F3,0x0423},
899 {0x04F4,0x04F5,0x0427}, {0x04F4,0x04F5,0x0427},
900 {0x04F6,0x04F6,0x04F6}, {0x04F7,0x04F7,0x04F7},
901 {0x04F8,0x04F9,0x042B}, {0x04F8,0x04F9,0x042B},
902 {0x04FA,0x04FA,0x04FA}, {0x04FB,0x04FB,0x04FB},
903 {0x04FC,0x04FC,0x04FC}, {0x04FD,0x04FD,0x04FD},
904 {0x04FE,0x04FE,0x04FE}, {0x04FF,0x04FF,0x04FF}
905 };
906
907 static MY_UNICASE_CHARACTER plane05[]={
908 {0x0500,0x0500,0x0500}, {0x0501,0x0501,0x0501},
909 {0x0502,0x0502,0x0502}, {0x0503,0x0503,0x0503},
910 {0x0504,0x0504,0x0504}, {0x0505,0x0505,0x0505},
911 {0x0506,0x0506,0x0506}, {0x0507,0x0507,0x0507},
912 {0x0508,0x0508,0x0508}, {0x0509,0x0509,0x0509},
913 {0x050A,0x050A,0x050A}, {0x050B,0x050B,0x050B},
914 {0x050C,0x050C,0x050C}, {0x050D,0x050D,0x050D},
915 {0x050E,0x050E,0x050E}, {0x050F,0x050F,0x050F},
916 {0x0510,0x0510,0x0510}, {0x0511,0x0511,0x0511},
917 {0x0512,0x0512,0x0512}, {0x0513,0x0513,0x0513},
918 {0x0514,0x0514,0x0514}, {0x0515,0x0515,0x0515},
919 {0x0516,0x0516,0x0516}, {0x0517,0x0517,0x0517},
920 {0x0518,0x0518,0x0518}, {0x0519,0x0519,0x0519},
921 {0x051A,0x051A,0x051A}, {0x051B,0x051B,0x051B},
922 {0x051C,0x051C,0x051C}, {0x051D,0x051D,0x051D},
923 {0x051E,0x051E,0x051E}, {0x051F,0x051F,0x051F},
924 {0x0520,0x0520,0x0520}, {0x0521,0x0521,0x0521},
925 {0x0522,0x0522,0x0522}, {0x0523,0x0523,0x0523},
926 {0x0524,0x0524,0x0524}, {0x0525,0x0525,0x0525},
927 {0x0526,0x0526,0x0526}, {0x0527,0x0527,0x0527},
928 {0x0528,0x0528,0x0528}, {0x0529,0x0529,0x0529},
929 {0x052A,0x052A,0x052A}, {0x052B,0x052B,0x052B},
930 {0x052C,0x052C,0x052C}, {0x052D,0x052D,0x052D},
931 {0x052E,0x052E,0x052E}, {0x052F,0x052F,0x052F},
932 {0x0530,0x0530,0x0530}, {0x0531,0x0561,0x0531},
933 {0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533},
934 {0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535},
935 {0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537},
936 {0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539},
937 {0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B},
938 {0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D},
939 {0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F},
940 {0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541},
941 {0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543},
942 {0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545},
943 {0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547},
944 {0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549},
945 {0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B},
946 {0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D},
947 {0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F},
948 {0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551},
949 {0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553},
950 {0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555},
951 {0x0556,0x0586,0x0556}, {0x0557,0x0557,0x0557},
952 {0x0558,0x0558,0x0558}, {0x0559,0x0559,0x0559},
953 {0x055A,0x055A,0x055A}, {0x055B,0x055B,0x055B},
954 {0x055C,0x055C,0x055C}, {0x055D,0x055D,0x055D},
955 {0x055E,0x055E,0x055E}, {0x055F,0x055F,0x055F},
956 {0x0560,0x0560,0x0560}, {0x0531,0x0561,0x0531},
957 {0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533},
958 {0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535},
959 {0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537},
960 {0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539},
961 {0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B},
962 {0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D},
963 {0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F},
964 {0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541},
965 {0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543},
966 {0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545},
967 {0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547},
968 {0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549},
969 {0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B},
970 {0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D},
971 {0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F},
972 {0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551},
973 {0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553},
974 {0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555},
975 {0x0556,0x0586,0x0556}, {0x0587,0x0587,0x0587},
976 {0x0588,0x0588,0x0588}, {0x0589,0x0589,0x0589},
977 {0x058A,0x058A,0x058A}, {0x058B,0x058B,0x058B},
978 {0x058C,0x058C,0x058C}, {0x058D,0x058D,0x058D},
979 {0x058E,0x058E,0x058E}, {0x058F,0x058F,0x058F},
980 {0x0590,0x0590,0x0590}, {0x0591,0x0591,0x0591},
981 {0x0592,0x0592,0x0592}, {0x0593,0x0593,0x0593},
982 {0x0594,0x0594,0x0594}, {0x0595,0x0595,0x0595},
983 {0x0596,0x0596,0x0596}, {0x0597,0x0597,0x0597},
984 {0x0598,0x0598,0x0598}, {0x0599,0x0599,0x0599},
985 {0x059A,0x059A,0x059A}, {0x059B,0x059B,0x059B},
986 {0x059C,0x059C,0x059C}, {0x059D,0x059D,0x059D},
987 {0x059E,0x059E,0x059E}, {0x059F,0x059F,0x059F},
988 {0x05A0,0x05A0,0x05A0}, {0x05A1,0x05A1,0x05A1},
989 {0x05A2,0x05A2,0x05A2}, {0x05A3,0x05A3,0x05A3},
990 {0x05A4,0x05A4,0x05A4}, {0x05A5,0x05A5,0x05A5},
991 {0x05A6,0x05A6,0x05A6}, {0x05A7,0x05A7,0x05A7},
992 {0x05A8,0x05A8,0x05A8}, {0x05A9,0x05A9,0x05A9},
993 {0x05AA,0x05AA,0x05AA}, {0x05AB,0x05AB,0x05AB},
994 {0x05AC,0x05AC,0x05AC}, {0x05AD,0x05AD,0x05AD},
995 {0x05AE,0x05AE,0x05AE}, {0x05AF,0x05AF,0x05AF},
996 {0x05B0,0x05B0,0x05B0}, {0x05B1,0x05B1,0x05B1},
997 {0x05B2,0x05B2,0x05B2}, {0x05B3,0x05B3,0x05B3},
998 {0x05B4,0x05B4,0x05B4}, {0x05B5,0x05B5,0x05B5},
999 {0x05B6,0x05B6,0x05B6}, {0x05B7,0x05B7,0x05B7},
1000 {0x05B8,0x05B8,0x05B8}, {0x05B9,0x05B9,0x05B9},
1001 {0x05BA,0x05BA,0x05BA}, {0x05BB,0x05BB,0x05BB},
1002 {0x05BC,0x05BC,0x05BC}, {0x05BD,0x05BD,0x05BD},
1003 {0x05BE,0x05BE,0x05BE}, {0x05BF,0x05BF,0x05BF},
1004 {0x05C0,0x05C0,0x05C0}, {0x05C1,0x05C1,0x05C1},
1005 {0x05C2,0x05C2,0x05C2}, {0x05C3,0x05C3,0x05C3},
1006 {0x05C4,0x05C4,0x05C4}, {0x05C5,0x05C5,0x05C5},
1007 {0x05C6,0x05C6,0x05C6}, {0x05C7,0x05C7,0x05C7},
1008 {0x05C8,0x05C8,0x05C8}, {0x05C9,0x05C9,0x05C9},
1009 {0x05CA,0x05CA,0x05CA}, {0x05CB,0x05CB,0x05CB},
1010 {0x05CC,0x05CC,0x05CC}, {0x05CD,0x05CD,0x05CD},
1011 {0x05CE,0x05CE,0x05CE}, {0x05CF,0x05CF,0x05CF},
1012 {0x05D0,0x05D0,0x05D0}, {0x05D1,0x05D1,0x05D1},
1013 {0x05D2,0x05D2,0x05D2}, {0x05D3,0x05D3,0x05D3},
1014 {0x05D4,0x05D4,0x05D4}, {0x05D5,0x05D5,0x05D5},
1015 {0x05D6,0x05D6,0x05D6}, {0x05D7,0x05D7,0x05D7},
1016 {0x05D8,0x05D8,0x05D8}, {0x05D9,0x05D9,0x05D9},
1017 {0x05DA,0x05DA,0x05DA}, {0x05DB,0x05DB,0x05DB},
1018 {0x05DC,0x05DC,0x05DC}, {0x05DD,0x05DD,0x05DD},
1019 {0x05DE,0x05DE,0x05DE}, {0x05DF,0x05DF,0x05DF},
1020 {0x05E0,0x05E0,0x05E0}, {0x05E1,0x05E1,0x05E1},
1021 {0x05E2,0x05E2,0x05E2}, {0x05E3,0x05E3,0x05E3},
1022 {0x05E4,0x05E4,0x05E4}, {0x05E5,0x05E5,0x05E5},
1023 {0x05E6,0x05E6,0x05E6}, {0x05E7,0x05E7,0x05E7},
1024 {0x05E8,0x05E8,0x05E8}, {0x05E9,0x05E9,0x05E9},
1025 {0x05EA,0x05EA,0x05EA}, {0x05EB,0x05EB,0x05EB},
1026 {0x05EC,0x05EC,0x05EC}, {0x05ED,0x05ED,0x05ED},
1027 {0x05EE,0x05EE,0x05EE}, {0x05EF,0x05EF,0x05EF},
1028 {0x05F0,0x05F0,0x05F0}, {0x05F1,0x05F1,0x05F1},
1029 {0x05F2,0x05F2,0x05F2}, {0x05F3,0x05F3,0x05F3},
1030 {0x05F4,0x05F4,0x05F4}, {0x05F5,0x05F5,0x05F5},
1031 {0x05F6,0x05F6,0x05F6}, {0x05F7,0x05F7,0x05F7},
1032 {0x05F8,0x05F8,0x05F8}, {0x05F9,0x05F9,0x05F9},
1033 {0x05FA,0x05FA,0x05FA}, {0x05FB,0x05FB,0x05FB},
1034 {0x05FC,0x05FC,0x05FC}, {0x05FD,0x05FD,0x05FD},
1035 {0x05FE,0x05FE,0x05FE}, {0x05FF,0x05FF,0x05FF}
1036 };
1037
1038 static MY_UNICASE_CHARACTER plane1E[]={
1039 {0x1E00,0x1E01,0x0041}, {0x1E00,0x1E01,0x0041},
1040 {0x1E02,0x1E03,0x0042}, {0x1E02,0x1E03,0x0042},
1041 {0x1E04,0x1E05,0x0042}, {0x1E04,0x1E05,0x0042},
1042 {0x1E06,0x1E07,0x0042}, {0x1E06,0x1E07,0x0042},
1043 {0x1E08,0x1E09,0x0043}, {0x1E08,0x1E09,0x0043},
1044 {0x1E0A,0x1E0B,0x0044}, {0x1E0A,0x1E0B,0x0044},
1045 {0x1E0C,0x1E0D,0x0044}, {0x1E0C,0x1E0D,0x0044},
1046 {0x1E0E,0x1E0F,0x0044}, {0x1E0E,0x1E0F,0x0044},
1047 {0x1E10,0x1E11,0x0044}, {0x1E10,0x1E11,0x0044},
1048 {0x1E12,0x1E13,0x0044}, {0x1E12,0x1E13,0x0044},
1049 {0x1E14,0x1E15,0x0045}, {0x1E14,0x1E15,0x0045},
1050 {0x1E16,0x1E17,0x0045}, {0x1E16,0x1E17,0x0045},
1051 {0x1E18,0x1E19,0x0045}, {0x1E18,0x1E19,0x0045},
1052 {0x1E1A,0x1E1B,0x0045}, {0x1E1A,0x1E1B,0x0045},
1053 {0x1E1C,0x1E1D,0x0045}, {0x1E1C,0x1E1D,0x0045},
1054 {0x1E1E,0x1E1F,0x0046}, {0x1E1E,0x1E1F,0x0046},
1055 {0x1E20,0x1E21,0x0047}, {0x1E20,0x1E21,0x0047},
1056 {0x1E22,0x1E23,0x0048}, {0x1E22,0x1E23,0x0048},
1057 {0x1E24,0x1E25,0x0048}, {0x1E24,0x1E25,0x0048},
1058 {0x1E26,0x1E27,0x0048}, {0x1E26,0x1E27,0x0048},
1059 {0x1E28,0x1E29,0x0048}, {0x1E28,0x1E29,0x0048},
1060 {0x1E2A,0x1E2B,0x0048}, {0x1E2A,0x1E2B,0x0048},
1061 {0x1E2C,0x1E2D,0x0049}, {0x1E2C,0x1E2D,0x0049},
1062 {0x1E2E,0x1E2F,0x0049}, {0x1E2E,0x1E2F,0x0049},
1063 {0x1E30,0x1E31,0x004B}, {0x1E30,0x1E31,0x004B},
1064 {0x1E32,0x1E33,0x004B}, {0x1E32,0x1E33,0x004B},
1065 {0x1E34,0x1E35,0x004B}, {0x1E34,0x1E35,0x004B},
1066 {0x1E36,0x1E37,0x004C}, {0x1E36,0x1E37,0x004C},
1067 {0x1E38,0x1E39,0x004C}, {0x1E38,0x1E39,0x004C},
1068 {0x1E3A,0x1E3B,0x004C}, {0x1E3A,0x1E3B,0x004C},
1069 {0x1E3C,0x1E3D,0x004C}, {0x1E3C,0x1E3D,0x004C},
1070 {0x1E3E,0x1E3F,0x004D}, {0x1E3E,0x1E3F,0x004D},
1071 {0x1E40,0x1E41,0x004D}, {0x1E40,0x1E41,0x004D},
1072 {0x1E42,0x1E43,0x004D}, {0x1E42,0x1E43,0x004D},
1073 {0x1E44,0x1E45,0x004E}, {0x1E44,0x1E45,0x004E},
1074 {0x1E46,0x1E47,0x004E}, {0x1E46,0x1E47,0x004E},
1075 {0x1E48,0x1E49,0x004E}, {0x1E48,0x1E49,0x004E},
1076 {0x1E4A,0x1E4B,0x004E}, {0x1E4A,0x1E4B,0x004E},
1077 {0x1E4C,0x1E4D,0x004F}, {0x1E4C,0x1E4D,0x004F},
1078 {0x1E4E,0x1E4F,0x004F}, {0x1E4E,0x1E4F,0x004F},
1079 {0x1E50,0x1E51,0x004F}, {0x1E50,0x1E51,0x004F},
1080 {0x1E52,0x1E53,0x004F}, {0x1E52,0x1E53,0x004F},
1081 {0x1E54,0x1E55,0x0050}, {0x1E54,0x1E55,0x0050},
1082 {0x1E56,0x1E57,0x0050}, {0x1E56,0x1E57,0x0050},
1083 {0x1E58,0x1E59,0x0052}, {0x1E58,0x1E59,0x0052},
1084 {0x1E5A,0x1E5B,0x0052}, {0x1E5A,0x1E5B,0x0052},
1085 {0x1E5C,0x1E5D,0x0052}, {0x1E5C,0x1E5D,0x0052},
1086 {0x1E5E,0x1E5F,0x0052}, {0x1E5E,0x1E5F,0x0052},
1087 {0x1E60,0x1E61,0x0053}, {0x1E60,0x1E61,0x0053},
1088 {0x1E62,0x1E63,0x0053}, {0x1E62,0x1E63,0x0053},
1089 {0x1E64,0x1E65,0x0053}, {0x1E64,0x1E65,0x0053},
1090 {0x1E66,0x1E67,0x0053}, {0x1E66,0x1E67,0x0053},
1091 {0x1E68,0x1E69,0x0053}, {0x1E68,0x1E69,0x0053},
1092 {0x1E6A,0x1E6B,0x0054}, {0x1E6A,0x1E6B,0x0054},
1093 {0x1E6C,0x1E6D,0x0054}, {0x1E6C,0x1E6D,0x0054},
1094 {0x1E6E,0x1E6F,0x0054}, {0x1E6E,0x1E6F,0x0054},
1095 {0x1E70,0x1E71,0x0054}, {0x1E70,0x1E71,0x0054},
1096 {0x1E72,0x1E73,0x0055}, {0x1E72,0x1E73,0x0055},
1097 {0x1E74,0x1E75,0x0055}, {0x1E74,0x1E75,0x0055},
1098 {0x1E76,0x1E77,0x0055}, {0x1E76,0x1E77,0x0055},
1099 {0x1E78,0x1E79,0x0055}, {0x1E78,0x1E79,0x0055},
1100 {0x1E7A,0x1E7B,0x0055}, {0x1E7A,0x1E7B,0x0055},
1101 {0x1E7C,0x1E7D,0x0056}, {0x1E7C,0x1E7D,0x0056},
1102 {0x1E7E,0x1E7F,0x0056}, {0x1E7E,0x1E7F,0x0056},
1103 {0x1E80,0x1E81,0x0057}, {0x1E80,0x1E81,0x0057},
1104 {0x1E82,0x1E83,0x0057}, {0x1E82,0x1E83,0x0057},
1105 {0x1E84,0x1E85,0x0057}, {0x1E84,0x1E85,0x0057},
1106 {0x1E86,0x1E87,0x0057}, {0x1E86,0x1E87,0x0057},
1107 {0x1E88,0x1E89,0x0057}, {0x1E88,0x1E89,0x0057},
1108 {0x1E8A,0x1E8B,0x0058}, {0x1E8A,0x1E8B,0x0058},
1109 {0x1E8C,0x1E8D,0x0058}, {0x1E8C,0x1E8D,0x0058},
1110 {0x1E8E,0x1E8F,0x0059}, {0x1E8E,0x1E8F,0x0059},
1111 {0x1E90,0x1E91,0x005A}, {0x1E90,0x1E91,0x005A},
1112 {0x1E92,0x1E93,0x005A}, {0x1E92,0x1E93,0x005A},
1113 {0x1E94,0x1E95,0x005A}, {0x1E94,0x1E95,0x005A},
1114 {0x1E96,0x1E96,0x0048}, {0x1E97,0x1E97,0x0054},
1115 {0x1E98,0x1E98,0x0057}, {0x1E99,0x1E99,0x0059},
1116 {0x1E9A,0x1E9A,0x1E9A}, {0x1E60,0x1E9B,0x0053},
1117 {0x1E9C,0x1E9C,0x1E9C}, {0x1E9D,0x1E9D,0x1E9D},
1118 {0x1E9E,0x1E9E,0x1E9E}, {0x1E9F,0x1E9F,0x1E9F},
1119 {0x1EA0,0x1EA1,0x0041}, {0x1EA0,0x1EA1,0x0041},
1120 {0x1EA2,0x1EA3,0x0041}, {0x1EA2,0x1EA3,0x0041},
1121 {0x1EA4,0x1EA5,0x0041}, {0x1EA4,0x1EA5,0x0041},
1122 {0x1EA6,0x1EA7,0x0041}, {0x1EA6,0x1EA7,0x0041},
1123 {0x1EA8,0x1EA9,0x0041}, {0x1EA8,0x1EA9,0x0041},
1124 {0x1EAA,0x1EAB,0x0041}, {0x1EAA,0x1EAB,0x0041},
1125 {0x1EAC,0x1EAD,0x0041}, {0x1EAC,0x1EAD,0x0041},
1126 {0x1EAE,0x1EAF,0x0041}, {0x1EAE,0x1EAF,0x0041},
1127 {0x1EB0,0x1EB1,0x0041}, {0x1EB0,0x1EB1,0x0041},
1128 {0x1EB2,0x1EB3,0x0041}, {0x1EB2,0x1EB3,0x0041},
1129 {0x1EB4,0x1EB5,0x0041}, {0x1EB4,0x1EB5,0x0041},
1130 {0x1EB6,0x1EB7,0x0041}, {0x1EB6,0x1EB7,0x0041},
1131 {0x1EB8,0x1EB9,0x0045}, {0x1EB8,0x1EB9,0x0045},
1132 {0x1EBA,0x1EBB,0x0045}, {0x1EBA,0x1EBB,0x0045},
1133 {0x1EBC,0x1EBD,0x0045}, {0x1EBC,0x1EBD,0x0045},
1134 {0x1EBE,0x1EBF,0x0045}, {0x1EBE,0x1EBF,0x0045},
1135 {0x1EC0,0x1EC1,0x0045}, {0x1EC0,0x1EC1,0x0045},
1136 {0x1EC2,0x1EC3,0x0045}, {0x1EC2,0x1EC3,0x0045},
1137 {0x1EC4,0x1EC5,0x0045}, {0x1EC4,0x1EC5,0x0045},
1138 {0x1EC6,0x1EC7,0x0045}, {0x1EC6,0x1EC7,0x0045},
1139 {0x1EC8,0x1EC9,0x0049}, {0x1EC8,0x1EC9,0x0049},
1140 {0x1ECA,0x1ECB,0x0049}, {0x1ECA,0x1ECB,0x0049},
1141 {0x1ECC,0x1ECD,0x004F}, {0x1ECC,0x1ECD,0x004F},
1142 {0x1ECE,0x1ECF,0x004F}, {0x1ECE,0x1ECF,0x004F},
1143 {0x1ED0,0x1ED1,0x004F}, {0x1ED0,0x1ED1,0x004F},
1144 {0x1ED2,0x1ED3,0x004F}, {0x1ED2,0x1ED3,0x004F},
1145 {0x1ED4,0x1ED5,0x004F}, {0x1ED4,0x1ED5,0x004F},
1146 {0x1ED6,0x1ED7,0x004F}, {0x1ED6,0x1ED7,0x004F},
1147 {0x1ED8,0x1ED9,0x004F}, {0x1ED8,0x1ED9,0x004F},
1148 {0x1EDA,0x1EDB,0x004F}, {0x1EDA,0x1EDB,0x004F},
1149 {0x1EDC,0x1EDD,0x004F}, {0x1EDC,0x1EDD,0x004F},
1150 {0x1EDE,0x1EDF,0x004F}, {0x1EDE,0x1EDF,0x004F},
1151 {0x1EE0,0x1EE1,0x004F}, {0x1EE0,0x1EE1,0x004F},
1152 {0x1EE2,0x1EE3,0x004F}, {0x1EE2,0x1EE3,0x004F},
1153 {0x1EE4,0x1EE5,0x0055}, {0x1EE4,0x1EE5,0x0055},
1154 {0x1EE6,0x1EE7,0x0055}, {0x1EE6,0x1EE7,0x0055},
1155 {0x1EE8,0x1EE9,0x0055}, {0x1EE8,0x1EE9,0x0055},
1156 {0x1EEA,0x1EEB,0x0055}, {0x1EEA,0x1EEB,0x0055},
1157 {0x1EEC,0x1EED,0x0055}, {0x1EEC,0x1EED,0x0055},
1158 {0x1EEE,0x1EEF,0x0055}, {0x1EEE,0x1EEF,0x0055},
1159 {0x1EF0,0x1EF1,0x0055}, {0x1EF0,0x1EF1,0x0055},
1160 {0x1EF2,0x1EF3,0x0059}, {0x1EF2,0x1EF3,0x0059},
1161 {0x1EF4,0x1EF5,0x0059}, {0x1EF4,0x1EF5,0x0059},
1162 {0x1EF6,0x1EF7,0x0059}, {0x1EF6,0x1EF7,0x0059},
1163 {0x1EF8,0x1EF9,0x0059}, {0x1EF8,0x1EF9,0x0059},
1164 {0x1EFA,0x1EFA,0x1EFA}, {0x1EFB,0x1EFB,0x1EFB},
1165 {0x1EFC,0x1EFC,0x1EFC}, {0x1EFD,0x1EFD,0x1EFD},
1166 {0x1EFE,0x1EFE,0x1EFE}, {0x1EFF,0x1EFF,0x1EFF}
1167 };
1168
1169 static MY_UNICASE_CHARACTER plane1F[]={
1170 {0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391},
1171 {0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391},
1172 {0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391},
1173 {0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391},
1174 {0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391},
1175 {0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391},
1176 {0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391},
1177 {0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391},
1178 {0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395},
1179 {0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395},
1180 {0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395},
1181 {0x1F16,0x1F16,0x1F16}, {0x1F17,0x1F17,0x1F17},
1182 {0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395},
1183 {0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395},
1184 {0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395},
1185 {0x1F1E,0x1F1E,0x1F1E}, {0x1F1F,0x1F1F,0x1F1F},
1186 {0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397},
1187 {0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397},
1188 {0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397},
1189 {0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397},
1190 {0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397},
1191 {0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397},
1192 {0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397},
1193 {0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397},
1194 {0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399},
1195 {0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399},
1196 {0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399},
1197 {0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399},
1198 {0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399},
1199 {0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399},
1200 {0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399},
1201 {0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399},
1202 {0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F},
1203 {0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F},
1204 {0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F},
1205 {0x1F46,0x1F46,0x1F46}, {0x1F47,0x1F47,0x1F47},
1206 {0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F},
1207 {0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F},
1208 {0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F},
1209 {0x1F4E,0x1F4E,0x1F4E}, {0x1F4F,0x1F4F,0x1F4F},
1210 {0x1F50,0x1F50,0x03A5}, {0x1F59,0x1F51,0x03A5},
1211 {0x1F52,0x1F52,0x03A5}, {0x1F5B,0x1F53,0x03A5},
1212 {0x1F54,0x1F54,0x03A5}, {0x1F5D,0x1F55,0x03A5},
1213 {0x1F56,0x1F56,0x03A5}, {0x1F5F,0x1F57,0x03A5},
1214 {0x1F58,0x1F58,0x1F58}, {0x1F59,0x1F51,0x03A5},
1215 {0x1F5A,0x1F5A,0x1F5A}, {0x1F5B,0x1F53,0x03A5},
1216 {0x1F5C,0x1F5C,0x1F5C}, {0x1F5D,0x1F55,0x03A5},
1217 {0x1F5E,0x1F5E,0x1F5E}, {0x1F5F,0x1F57,0x03A5},
1218 {0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9},
1219 {0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9},
1220 {0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9},
1221 {0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9},
1222 {0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9},
1223 {0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9},
1224 {0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9},
1225 {0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9},
1226 {0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB},
1227 {0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9},
1228 {0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB},
1229 {0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB},
1230 {0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9},
1231 {0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB},
1232 {0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB},
1233 {0x1F7E,0x1F7E,0x1F7E}, {0x1F7F,0x1F7F,0x1F7F},
1234 {0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391},
1235 {0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391},
1236 {0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391},
1237 {0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391},
1238 {0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391},
1239 {0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391},
1240 {0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391},
1241 {0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391},
1242 {0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397},
1243 {0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397},
1244 {0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397},
1245 {0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397},
1246 {0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397},
1247 {0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397},
1248 {0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397},
1249 {0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397},
1250 {0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9},
1251 {0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9},
1252 {0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9},
1253 {0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9},
1254 {0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9},
1255 {0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9},
1256 {0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9},
1257 {0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9},
1258 {0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391},
1259 {0x1FB2,0x1FB2,0x0391}, {0x1FBC,0x1FB3,0x0391},
1260 {0x1FB4,0x1FB4,0x0391}, {0x1FB5,0x1FB5,0x1FB5},
1261 {0x1FB6,0x1FB6,0x0391}, {0x1FB7,0x1FB7,0x0391},
1262 {0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391},
1263 {0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB},
1264 {0x1FBC,0x1FB3,0x0391}, {0x1FBD,0x1FBD,0x1FBD},
1265 {0x0399,0x1FBE,0x0399}, {0x1FBF,0x1FBF,0x1FBF},
1266 {0x1FC0,0x1FC0,0x1FC0}, {0x1FC1,0x1FC1,0x1FC1},
1267 {0x1FC2,0x1FC2,0x0397}, {0x1FCC,0x1FC3,0x0397},
1268 {0x1FC4,0x1FC4,0x0397}, {0x1FC5,0x1FC5,0x1FC5},
1269 {0x1FC6,0x1FC6,0x0397}, {0x1FC7,0x1FC7,0x0397},
1270 {0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9},
1271 {0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB},
1272 {0x1FCC,0x1FC3,0x0397}, {0x1FCD,0x1FCD,0x1FCD},
1273 {0x1FCE,0x1FCE,0x1FCE}, {0x1FCF,0x1FCF,0x1FCF},
1274 {0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399},
1275 {0x1FD2,0x1FD2,0x0399}, {0x1FD3,0x1FD3,0x1FD3},
1276 {0x1FD4,0x1FD4,0x1FD4}, {0x1FD5,0x1FD5,0x1FD5},
1277 {0x1FD6,0x1FD6,0x0399}, {0x1FD7,0x1FD7,0x0399},
1278 {0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399},
1279 {0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB},
1280 {0x1FDC,0x1FDC,0x1FDC}, {0x1FDD,0x1FDD,0x1FDD},
1281 {0x1FDE,0x1FDE,0x1FDE}, {0x1FDF,0x1FDF,0x1FDF},
1282 {0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5},
1283 {0x1FE2,0x1FE2,0x03A5}, {0x1FE3,0x1FE3,0x1FE3},
1284 {0x1FE4,0x1FE4,0x03A1}, {0x1FEC,0x1FE5,0x03A1},
1285 {0x1FE6,0x1FE6,0x03A5}, {0x1FE7,0x1FE7,0x03A5},
1286 {0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5},
1287 {0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB},
1288 {0x1FEC,0x1FE5,0x03A1}, {0x1FED,0x1FED,0x1FED},
1289 {0x1FEE,0x1FEE,0x1FEE}, {0x1FEF,0x1FEF,0x1FEF},
1290 {0x1FF0,0x1FF0,0x1FF0}, {0x1FF1,0x1FF1,0x1FF1},
1291 {0x1FF2,0x1FF2,0x03A9}, {0x1FFC,0x1FF3,0x03A9},
1292 {0x1FF4,0x1FF4,0x03A9}, {0x1FF5,0x1FF5,0x1FF5},
1293 {0x1FF6,0x1FF6,0x03A9}, {0x1FF7,0x1FF7,0x03A9},
1294 {0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9},
1295 {0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB},
1296 {0x1FFC,0x1FF3,0x03A9}, {0x1FFD,0x1FFD,0x1FFD},
1297 {0x1FFE,0x1FFE,0x1FFE}, {0x1FFF,0x1FFF,0x1FFF}
1298 };
1299
1300 static MY_UNICASE_CHARACTER plane21[]={
1301 {0x2100,0x2100,0x2100}, {0x2101,0x2101,0x2101},
1302 {0x2102,0x2102,0x2102}, {0x2103,0x2103,0x2103},
1303 {0x2104,0x2104,0x2104}, {0x2105,0x2105,0x2105},
1304 {0x2106,0x2106,0x2106}, {0x2107,0x2107,0x2107},
1305 {0x2108,0x2108,0x2108}, {0x2109,0x2109,0x2109},
1306 {0x210A,0x210A,0x210A}, {0x210B,0x210B,0x210B},
1307 {0x210C,0x210C,0x210C}, {0x210D,0x210D,0x210D},
1308 {0x210E,0x210E,0x210E}, {0x210F,0x210F,0x210F},
1309 {0x2110,0x2110,0x2110}, {0x2111,0x2111,0x2111},
1310 {0x2112,0x2112,0x2112}, {0x2113,0x2113,0x2113},
1311 {0x2114,0x2114,0x2114}, {0x2115,0x2115,0x2115},
1312 {0x2116,0x2116,0x2116}, {0x2117,0x2117,0x2117},
1313 {0x2118,0x2118,0x2118}, {0x2119,0x2119,0x2119},
1314 {0x211A,0x211A,0x211A}, {0x211B,0x211B,0x211B},
1315 {0x211C,0x211C,0x211C}, {0x211D,0x211D,0x211D},
1316 {0x211E,0x211E,0x211E}, {0x211F,0x211F,0x211F},
1317 {0x2120,0x2120,0x2120}, {0x2121,0x2121,0x2121},
1318 {0x2122,0x2122,0x2122}, {0x2123,0x2123,0x2123},
1319 {0x2124,0x2124,0x2124}, {0x2125,0x2125,0x2125},
1320 {0x2126,0x03C9,0x2126}, {0x2127,0x2127,0x2127},
1321 {0x2128,0x2128,0x2128}, {0x2129,0x2129,0x2129},
1322 {0x212A,0x006B,0x212A}, {0x212B,0x00E5,0x212B},
1323 {0x212C,0x212C,0x212C}, {0x212D,0x212D,0x212D},
1324 {0x212E,0x212E,0x212E}, {0x212F,0x212F,0x212F},
1325 {0x2130,0x2130,0x2130}, {0x2131,0x2131,0x2131},
1326 {0x2132,0x2132,0x2132}, {0x2133,0x2133,0x2133},
1327 {0x2134,0x2134,0x2134}, {0x2135,0x2135,0x2135},
1328 {0x2136,0x2136,0x2136}, {0x2137,0x2137,0x2137},
1329 {0x2138,0x2138,0x2138}, {0x2139,0x2139,0x2139},
1330 {0x213A,0x213A,0x213A}, {0x213B,0x213B,0x213B},
1331 {0x213C,0x213C,0x213C}, {0x213D,0x213D,0x213D},
1332 {0x213E,0x213E,0x213E}, {0x213F,0x213F,0x213F},
1333 {0x2140,0x2140,0x2140}, {0x2141,0x2141,0x2141},
1334 {0x2142,0x2142,0x2142}, {0x2143,0x2143,0x2143},
1335 {0x2144,0x2144,0x2144}, {0x2145,0x2145,0x2145},
1336 {0x2146,0x2146,0x2146}, {0x2147,0x2147,0x2147},
1337 {0x2148,0x2148,0x2148}, {0x2149,0x2149,0x2149},
1338 {0x214A,0x214A,0x214A}, {0x214B,0x214B,0x214B},
1339 {0x214C,0x214C,0x214C}, {0x214D,0x214D,0x214D},
1340 {0x214E,0x214E,0x214E}, {0x214F,0x214F,0x214F},
1341 {0x2150,0x2150,0x2150}, {0x2151,0x2151,0x2151},
1342 {0x2152,0x2152,0x2152}, {0x2153,0x2153,0x2153},
1343 {0x2154,0x2154,0x2154}, {0x2155,0x2155,0x2155},
1344 {0x2156,0x2156,0x2156}, {0x2157,0x2157,0x2157},
1345 {0x2158,0x2158,0x2158}, {0x2159,0x2159,0x2159},
1346 {0x215A,0x215A,0x215A}, {0x215B,0x215B,0x215B},
1347 {0x215C,0x215C,0x215C}, {0x215D,0x215D,0x215D},
1348 {0x215E,0x215E,0x215E}, {0x215F,0x215F,0x215F},
1349 {0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161},
1350 {0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163},
1351 {0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165},
1352 {0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167},
1353 {0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169},
1354 {0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B},
1355 {0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D},
1356 {0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F},
1357 {0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161},
1358 {0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163},
1359 {0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165},
1360 {0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167},
1361 {0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169},
1362 {0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B},
1363 {0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D},
1364 {0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F},
1365 {0x2180,0x2180,0x2180}, {0x2181,0x2181,0x2181},
1366 {0x2182,0x2182,0x2182}, {0x2183,0x2183,0x2183},
1367 {0x2184,0x2184,0x2184}, {0x2185,0x2185,0x2185},
1368 {0x2186,0x2186,0x2186}, {0x2187,0x2187,0x2187},
1369 {0x2188,0x2188,0x2188}, {0x2189,0x2189,0x2189},
1370 {0x218A,0x218A,0x218A}, {0x218B,0x218B,0x218B},
1371 {0x218C,0x218C,0x218C}, {0x218D,0x218D,0x218D},
1372 {0x218E,0x218E,0x218E}, {0x218F,0x218F,0x218F},
1373 {0x2190,0x2190,0x2190}, {0x2191,0x2191,0x2191},
1374 {0x2192,0x2192,0x2192}, {0x2193,0x2193,0x2193},
1375 {0x2194,0x2194,0x2194}, {0x2195,0x2195,0x2195},
1376 {0x2196,0x2196,0x2196}, {0x2197,0x2197,0x2197},
1377 {0x2198,0x2198,0x2198}, {0x2199,0x2199,0x2199},
1378 {0x219A,0x219A,0x219A}, {0x219B,0x219B,0x219B},
1379 {0x219C,0x219C,0x219C}, {0x219D,0x219D,0x219D},
1380 {0x219E,0x219E,0x219E}, {0x219F,0x219F,0x219F},
1381 {0x21A0,0x21A0,0x21A0}, {0x21A1,0x21A1,0x21A1},
1382 {0x21A2,0x21A2,0x21A2}, {0x21A3,0x21A3,0x21A3},
1383 {0x21A4,0x21A4,0x21A4}, {0x21A5,0x21A5,0x21A5},
1384 {0x21A6,0x21A6,0x21A6}, {0x21A7,0x21A7,0x21A7},
1385 {0x21A8,0x21A8,0x21A8}, {0x21A9,0x21A9,0x21A9},
1386 {0x21AA,0x21AA,0x21AA}, {0x21AB,0x21AB,0x21AB},
1387 {0x21AC,0x21AC,0x21AC}, {0x21AD,0x21AD,0x21AD},
1388 {0x21AE,0x21AE,0x21AE}, {0x21AF,0x21AF,0x21AF},
1389 {0x21B0,0x21B0,0x21B0}, {0x21B1,0x21B1,0x21B1},
1390 {0x21B2,0x21B2,0x21B2}, {0x21B3,0x21B3,0x21B3},
1391 {0x21B4,0x21B4,0x21B4}, {0x21B5,0x21B5,0x21B5},
1392 {0x21B6,0x21B6,0x21B6}, {0x21B7,0x21B7,0x21B7},
1393 {0x21B8,0x21B8,0x21B8}, {0x21B9,0x21B9,0x21B9},
1394 {0x21BA,0x21BA,0x21BA}, {0x21BB,0x21BB,0x21BB},
1395 {0x21BC,0x21BC,0x21BC}, {0x21BD,0x21BD,0x21BD},
1396 {0x21BE,0x21BE,0x21BE}, {0x21BF,0x21BF,0x21BF},
1397 {0x21C0,0x21C0,0x21C0}, {0x21C1,0x21C1,0x21C1},
1398 {0x21C2,0x21C2,0x21C2}, {0x21C3,0x21C3,0x21C3},
1399 {0x21C4,0x21C4,0x21C4}, {0x21C5,0x21C5,0x21C5},
1400 {0x21C6,0x21C6,0x21C6}, {0x21C7,0x21C7,0x21C7},
1401 {0x21C8,0x21C8,0x21C8}, {0x21C9,0x21C9,0x21C9},
1402 {0x21CA,0x21CA,0x21CA}, {0x21CB,0x21CB,0x21CB},
1403 {0x21CC,0x21CC,0x21CC}, {0x21CD,0x21CD,0x21CD},
1404 {0x21CE,0x21CE,0x21CE}, {0x21CF,0x21CF,0x21CF},
1405 {0x21D0,0x21D0,0x21D0}, {0x21D1,0x21D1,0x21D1},
1406 {0x21D2,0x21D2,0x21D2}, {0x21D3,0x21D3,0x21D3},
1407 {0x21D4,0x21D4,0x21D4}, {0x21D5,0x21D5,0x21D5},
1408 {0x21D6,0x21D6,0x21D6}, {0x21D7,0x21D7,0x21D7},
1409 {0x21D8,0x21D8,0x21D8}, {0x21D9,0x21D9,0x21D9},
1410 {0x21DA,0x21DA,0x21DA}, {0x21DB,0x21DB,0x21DB},
1411 {0x21DC,0x21DC,0x21DC}, {0x21DD,0x21DD,0x21DD},
1412 {0x21DE,0x21DE,0x21DE}, {0x21DF,0x21DF,0x21DF},
1413 {0x21E0,0x21E0,0x21E0}, {0x21E1,0x21E1,0x21E1},
1414 {0x21E2,0x21E2,0x21E2}, {0x21E3,0x21E3,0x21E3},
1415 {0x21E4,0x21E4,0x21E4}, {0x21E5,0x21E5,0x21E5},
1416 {0x21E6,0x21E6,0x21E6}, {0x21E7,0x21E7,0x21E7},
1417 {0x21E8,0x21E8,0x21E8}, {0x21E9,0x21E9,0x21E9},
1418 {0x21EA,0x21EA,0x21EA}, {0x21EB,0x21EB,0x21EB},
1419 {0x21EC,0x21EC,0x21EC}, {0x21ED,0x21ED,0x21ED},
1420 {0x21EE,0x21EE,0x21EE}, {0x21EF,0x21EF,0x21EF},
1421 {0x21F0,0x21F0,0x21F0}, {0x21F1,0x21F1,0x21F1},
1422 {0x21F2,0x21F2,0x21F2}, {0x21F3,0x21F3,0x21F3},
1423 {0x21F4,0x21F4,0x21F4}, {0x21F5,0x21F5,0x21F5},
1424 {0x21F6,0x21F6,0x21F6}, {0x21F7,0x21F7,0x21F7},
1425 {0x21F8,0x21F8,0x21F8}, {0x21F9,0x21F9,0x21F9},
1426 {0x21FA,0x21FA,0x21FA}, {0x21FB,0x21FB,0x21FB},
1427 {0x21FC,0x21FC,0x21FC}, {0x21FD,0x21FD,0x21FD},
1428 {0x21FE,0x21FE,0x21FE}, {0x21FF,0x21FF,0x21FF}
1429 };
1430
1431 static MY_UNICASE_CHARACTER plane24[]={
1432 {0x2400,0x2400,0x2400}, {0x2401,0x2401,0x2401},
1433 {0x2402,0x2402,0x2402}, {0x2403,0x2403,0x2403},
1434 {0x2404,0x2404,0x2404}, {0x2405,0x2405,0x2405},
1435 {0x2406,0x2406,0x2406}, {0x2407,0x2407,0x2407},
1436 {0x2408,0x2408,0x2408}, {0x2409,0x2409,0x2409},
1437 {0x240A,0x240A,0x240A}, {0x240B,0x240B,0x240B},
1438 {0x240C,0x240C,0x240C}, {0x240D,0x240D,0x240D},
1439 {0x240E,0x240E,0x240E}, {0x240F,0x240F,0x240F},
1440 {0x2410,0x2410,0x2410}, {0x2411,0x2411,0x2411},
1441 {0x2412,0x2412,0x2412}, {0x2413,0x2413,0x2413},
1442 {0x2414,0x2414,0x2414}, {0x2415,0x2415,0x2415},
1443 {0x2416,0x2416,0x2416}, {0x2417,0x2417,0x2417},
1444 {0x2418,0x2418,0x2418}, {0x2419,0x2419,0x2419},
1445 {0x241A,0x241A,0x241A}, {0x241B,0x241B,0x241B},
1446 {0x241C,0x241C,0x241C}, {0x241D,0x241D,0x241D},
1447 {0x241E,0x241E,0x241E}, {0x241F,0x241F,0x241F},
1448 {0x2420,0x2420,0x2420}, {0x2421,0x2421,0x2421},
1449 {0x2422,0x2422,0x2422}, {0x2423,0x2423,0x2423},
1450 {0x2424,0x2424,0x2424}, {0x2425,0x2425,0x2425},
1451 {0x2426,0x2426,0x2426}, {0x2427,0x2427,0x2427},
1452 {0x2428,0x2428,0x2428}, {0x2429,0x2429,0x2429},
1453 {0x242A,0x242A,0x242A}, {0x242B,0x242B,0x242B},
1454 {0x242C,0x242C,0x242C}, {0x242D,0x242D,0x242D},
1455 {0x242E,0x242E,0x242E}, {0x242F,0x242F,0x242F},
1456 {0x2430,0x2430,0x2430}, {0x2431,0x2431,0x2431},
1457 {0x2432,0x2432,0x2432}, {0x2433,0x2433,0x2433},
1458 {0x2434,0x2434,0x2434}, {0x2435,0x2435,0x2435},
1459 {0x2436,0x2436,0x2436}, {0x2437,0x2437,0x2437},
1460 {0x2438,0x2438,0x2438}, {0x2439,0x2439,0x2439},
1461 {0x243A,0x243A,0x243A}, {0x243B,0x243B,0x243B},
1462 {0x243C,0x243C,0x243C}, {0x243D,0x243D,0x243D},
1463 {0x243E,0x243E,0x243E}, {0x243F,0x243F,0x243F},
1464 {0x2440,0x2440,0x2440}, {0x2441,0x2441,0x2441},
1465 {0x2442,0x2442,0x2442}, {0x2443,0x2443,0x2443},
1466 {0x2444,0x2444,0x2444}, {0x2445,0x2445,0x2445},
1467 {0x2446,0x2446,0x2446}, {0x2447,0x2447,0x2447},
1468 {0x2448,0x2448,0x2448}, {0x2449,0x2449,0x2449},
1469 {0x244A,0x244A,0x244A}, {0x244B,0x244B,0x244B},
1470 {0x244C,0x244C,0x244C}, {0x244D,0x244D,0x244D},
1471 {0x244E,0x244E,0x244E}, {0x244F,0x244F,0x244F},
1472 {0x2450,0x2450,0x2450}, {0x2451,0x2451,0x2451},
1473 {0x2452,0x2452,0x2452}, {0x2453,0x2453,0x2453},
1474 {0x2454,0x2454,0x2454}, {0x2455,0x2455,0x2455},
1475 {0x2456,0x2456,0x2456}, {0x2457,0x2457,0x2457},
1476 {0x2458,0x2458,0x2458}, {0x2459,0x2459,0x2459},
1477 {0x245A,0x245A,0x245A}, {0x245B,0x245B,0x245B},
1478 {0x245C,0x245C,0x245C}, {0x245D,0x245D,0x245D},
1479 {0x245E,0x245E,0x245E}, {0x245F,0x245F,0x245F},
1480 {0x2460,0x2460,0x2460}, {0x2461,0x2461,0x2461},
1481 {0x2462,0x2462,0x2462}, {0x2463,0x2463,0x2463},
1482 {0x2464,0x2464,0x2464}, {0x2465,0x2465,0x2465},
1483 {0x2466,0x2466,0x2466}, {0x2467,0x2467,0x2467},
1484 {0x2468,0x2468,0x2468}, {0x2469,0x2469,0x2469},
1485 {0x246A,0x246A,0x246A}, {0x246B,0x246B,0x246B},
1486 {0x246C,0x246C,0x246C}, {0x246D,0x246D,0x246D},
1487 {0x246E,0x246E,0x246E}, {0x246F,0x246F,0x246F},
1488 {0x2470,0x2470,0x2470}, {0x2471,0x2471,0x2471},
1489 {0x2472,0x2472,0x2472}, {0x2473,0x2473,0x2473},
1490 {0x2474,0x2474,0x2474}, {0x2475,0x2475,0x2475},
1491 {0x2476,0x2476,0x2476}, {0x2477,0x2477,0x2477},
1492 {0x2478,0x2478,0x2478}, {0x2479,0x2479,0x2479},
1493 {0x247A,0x247A,0x247A}, {0x247B,0x247B,0x247B},
1494 {0x247C,0x247C,0x247C}, {0x247D,0x247D,0x247D},
1495 {0x247E,0x247E,0x247E}, {0x247F,0x247F,0x247F},
1496 {0x2480,0x2480,0x2480}, {0x2481,0x2481,0x2481},
1497 {0x2482,0x2482,0x2482}, {0x2483,0x2483,0x2483},
1498 {0x2484,0x2484,0x2484}, {0x2485,0x2485,0x2485},
1499 {0x2486,0x2486,0x2486}, {0x2487,0x2487,0x2487},
1500 {0x2488,0x2488,0x2488}, {0x2489,0x2489,0x2489},
1501 {0x248A,0x248A,0x248A}, {0x248B,0x248B,0x248B},
1502 {0x248C,0x248C,0x248C}, {0x248D,0x248D,0x248D},
1503 {0x248E,0x248E,0x248E}, {0x248F,0x248F,0x248F},
1504 {0x2490,0x2490,0x2490}, {0x2491,0x2491,0x2491},
1505 {0x2492,0x2492,0x2492}, {0x2493,0x2493,0x2493},
1506 {0x2494,0x2494,0x2494}, {0x2495,0x2495,0x2495},
1507 {0x2496,0x2496,0x2496}, {0x2497,0x2497,0x2497},
1508 {0x2498,0x2498,0x2498}, {0x2499,0x2499,0x2499},
1509 {0x249A,0x249A,0x249A}, {0x249B,0x249B,0x249B},
1510 {0x249C,0x249C,0x249C}, {0x249D,0x249D,0x249D},
1511 {0x249E,0x249E,0x249E}, {0x249F,0x249F,0x249F},
1512 {0x24A0,0x24A0,0x24A0}, {0x24A1,0x24A1,0x24A1},
1513 {0x24A2,0x24A2,0x24A2}, {0x24A3,0x24A3,0x24A3},
1514 {0x24A4,0x24A4,0x24A4}, {0x24A5,0x24A5,0x24A5},
1515 {0x24A6,0x24A6,0x24A6}, {0x24A7,0x24A7,0x24A7},
1516 {0x24A8,0x24A8,0x24A8}, {0x24A9,0x24A9,0x24A9},
1517 {0x24AA,0x24AA,0x24AA}, {0x24AB,0x24AB,0x24AB},
1518 {0x24AC,0x24AC,0x24AC}, {0x24AD,0x24AD,0x24AD},
1519 {0x24AE,0x24AE,0x24AE}, {0x24AF,0x24AF,0x24AF},
1520 {0x24B0,0x24B0,0x24B0}, {0x24B1,0x24B1,0x24B1},
1521 {0x24B2,0x24B2,0x24B2}, {0x24B3,0x24B3,0x24B3},
1522 {0x24B4,0x24B4,0x24B4}, {0x24B5,0x24B5,0x24B5},
1523 {0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7},
1524 {0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9},
1525 {0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB},
1526 {0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD},
1527 {0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF},
1528 {0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1},
1529 {0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3},
1530 {0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5},
1531 {0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7},
1532 {0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9},
1533 {0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB},
1534 {0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD},
1535 {0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF},
1536 {0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7},
1537 {0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9},
1538 {0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB},
1539 {0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD},
1540 {0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF},
1541 {0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1},
1542 {0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3},
1543 {0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5},
1544 {0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7},
1545 {0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9},
1546 {0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB},
1547 {0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD},
1548 {0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF},
1549 {0x24EA,0x24EA,0x24EA}, {0x24EB,0x24EB,0x24EB},
1550 {0x24EC,0x24EC,0x24EC}, {0x24ED,0x24ED,0x24ED},
1551 {0x24EE,0x24EE,0x24EE}, {0x24EF,0x24EF,0x24EF},
1552 {0x24F0,0x24F0,0x24F0}, {0x24F1,0x24F1,0x24F1},
1553 {0x24F2,0x24F2,0x24F2}, {0x24F3,0x24F3,0x24F3},
1554 {0x24F4,0x24F4,0x24F4}, {0x24F5,0x24F5,0x24F5},
1555 {0x24F6,0x24F6,0x24F6}, {0x24F7,0x24F7,0x24F7},
1556 {0x24F8,0x24F8,0x24F8}, {0x24F9,0x24F9,0x24F9},
1557 {0x24FA,0x24FA,0x24FA}, {0x24FB,0x24FB,0x24FB},
1558 {0x24FC,0x24FC,0x24FC}, {0x24FD,0x24FD,0x24FD},
1559 {0x24FE,0x24FE,0x24FE}, {0x24FF,0x24FF,0x24FF}
1560 };
1561
1562 static MY_UNICASE_CHARACTER planeFF[]={
1563 {0xFF00,0xFF00,0xFF00}, {0xFF01,0xFF01,0xFF01},
1564 {0xFF02,0xFF02,0xFF02}, {0xFF03,0xFF03,0xFF03},
1565 {0xFF04,0xFF04,0xFF04}, {0xFF05,0xFF05,0xFF05},
1566 {0xFF06,0xFF06,0xFF06}, {0xFF07,0xFF07,0xFF07},
1567 {0xFF08,0xFF08,0xFF08}, {0xFF09,0xFF09,0xFF09},
1568 {0xFF0A,0xFF0A,0xFF0A}, {0xFF0B,0xFF0B,0xFF0B},
1569 {0xFF0C,0xFF0C,0xFF0C}, {0xFF0D,0xFF0D,0xFF0D},
1570 {0xFF0E,0xFF0E,0xFF0E}, {0xFF0F,0xFF0F,0xFF0F},
1571 {0xFF10,0xFF10,0xFF10}, {0xFF11,0xFF11,0xFF11},
1572 {0xFF12,0xFF12,0xFF12}, {0xFF13,0xFF13,0xFF13},
1573 {0xFF14,0xFF14,0xFF14}, {0xFF15,0xFF15,0xFF15},
1574 {0xFF16,0xFF16,0xFF16}, {0xFF17,0xFF17,0xFF17},
1575 {0xFF18,0xFF18,0xFF18}, {0xFF19,0xFF19,0xFF19},
1576 {0xFF1A,0xFF1A,0xFF1A}, {0xFF1B,0xFF1B,0xFF1B},
1577 {0xFF1C,0xFF1C,0xFF1C}, {0xFF1D,0xFF1D,0xFF1D},
1578 {0xFF1E,0xFF1E,0xFF1E}, {0xFF1F,0xFF1F,0xFF1F},
1579 {0xFF20,0xFF20,0xFF20}, {0xFF21,0xFF41,0xFF21},
1580 {0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23},
1581 {0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25},
1582 {0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27},
1583 {0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29},
1584 {0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B},
1585 {0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D},
1586 {0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F},
1587 {0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31},
1588 {0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33},
1589 {0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35},
1590 {0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37},
1591 {0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39},
1592 {0xFF3A,0xFF5A,0xFF3A}, {0xFF3B,0xFF3B,0xFF3B},
1593 {0xFF3C,0xFF3C,0xFF3C}, {0xFF3D,0xFF3D,0xFF3D},
1594 {0xFF3E,0xFF3E,0xFF3E}, {0xFF3F,0xFF3F,0xFF3F},
1595 {0xFF40,0xFF40,0xFF40}, {0xFF21,0xFF41,0xFF21},
1596 {0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23},
1597 {0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25},
1598 {0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27},
1599 {0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29},
1600 {0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B},
1601 {0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D},
1602 {0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F},
1603 {0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31},
1604 {0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33},
1605 {0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35},
1606 {0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37},
1607 {0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39},
1608 {0xFF3A,0xFF5A,0xFF3A}, {0xFF5B,0xFF5B,0xFF5B},
1609 {0xFF5C,0xFF5C,0xFF5C}, {0xFF5D,0xFF5D,0xFF5D},
1610 {0xFF5E,0xFF5E,0xFF5E}, {0xFF5F,0xFF5F,0xFF5F},
1611 {0xFF60,0xFF60,0xFF60}, {0xFF61,0xFF61,0xFF61},
1612 {0xFF62,0xFF62,0xFF62}, {0xFF63,0xFF63,0xFF63},
1613 {0xFF64,0xFF64,0xFF64}, {0xFF65,0xFF65,0xFF65},
1614 {0xFF66,0xFF66,0xFF66}, {0xFF67,0xFF67,0xFF67},
1615 {0xFF68,0xFF68,0xFF68}, {0xFF69,0xFF69,0xFF69},
1616 {0xFF6A,0xFF6A,0xFF6A}, {0xFF6B,0xFF6B,0xFF6B},
1617 {0xFF6C,0xFF6C,0xFF6C}, {0xFF6D,0xFF6D,0xFF6D},
1618 {0xFF6E,0xFF6E,0xFF6E}, {0xFF6F,0xFF6F,0xFF6F},
1619 {0xFF70,0xFF70,0xFF70}, {0xFF71,0xFF71,0xFF71},
1620 {0xFF72,0xFF72,0xFF72}, {0xFF73,0xFF73,0xFF73},
1621 {0xFF74,0xFF74,0xFF74}, {0xFF75,0xFF75,0xFF75},
1622 {0xFF76,0xFF76,0xFF76}, {0xFF77,0xFF77,0xFF77},
1623 {0xFF78,0xFF78,0xFF78}, {0xFF79,0xFF79,0xFF79},
1624 {0xFF7A,0xFF7A,0xFF7A}, {0xFF7B,0xFF7B,0xFF7B},
1625 {0xFF7C,0xFF7C,0xFF7C}, {0xFF7D,0xFF7D,0xFF7D},
1626 {0xFF7E,0xFF7E,0xFF7E}, {0xFF7F,0xFF7F,0xFF7F},
1627 {0xFF80,0xFF80,0xFF80}, {0xFF81,0xFF81,0xFF81},
1628 {0xFF82,0xFF82,0xFF82}, {0xFF83,0xFF83,0xFF83},
1629 {0xFF84,0xFF84,0xFF84}, {0xFF85,0xFF85,0xFF85},
1630 {0xFF86,0xFF86,0xFF86}, {0xFF87,0xFF87,0xFF87},
1631 {0xFF88,0xFF88,0xFF88}, {0xFF89,0xFF89,0xFF89},
1632 {0xFF8A,0xFF8A,0xFF8A}, {0xFF8B,0xFF8B,0xFF8B},
1633 {0xFF8C,0xFF8C,0xFF8C}, {0xFF8D,0xFF8D,0xFF8D},
1634 {0xFF8E,0xFF8E,0xFF8E}, {0xFF8F,0xFF8F,0xFF8F},
1635 {0xFF90,0xFF90,0xFF90}, {0xFF91,0xFF91,0xFF91},
1636 {0xFF92,0xFF92,0xFF92}, {0xFF93,0xFF93,0xFF93},
1637 {0xFF94,0xFF94,0xFF94}, {0xFF95,0xFF95,0xFF95},
1638 {0xFF96,0xFF96,0xFF96}, {0xFF97,0xFF97,0xFF97},
1639 {0xFF98,0xFF98,0xFF98}, {0xFF99,0xFF99,0xFF99},
1640 {0xFF9A,0xFF9A,0xFF9A}, {0xFF9B,0xFF9B,0xFF9B},
1641 {0xFF9C,0xFF9C,0xFF9C}, {0xFF9D,0xFF9D,0xFF9D},
1642 {0xFF9E,0xFF9E,0xFF9E}, {0xFF9F,0xFF9F,0xFF9F},
1643 {0xFFA0,0xFFA0,0xFFA0}, {0xFFA1,0xFFA1,0xFFA1},
1644 {0xFFA2,0xFFA2,0xFFA2}, {0xFFA3,0xFFA3,0xFFA3},
1645 {0xFFA4,0xFFA4,0xFFA4}, {0xFFA5,0xFFA5,0xFFA5},
1646 {0xFFA6,0xFFA6,0xFFA6}, {0xFFA7,0xFFA7,0xFFA7},
1647 {0xFFA8,0xFFA8,0xFFA8}, {0xFFA9,0xFFA9,0xFFA9},
1648 {0xFFAA,0xFFAA,0xFFAA}, {0xFFAB,0xFFAB,0xFFAB},
1649 {0xFFAC,0xFFAC,0xFFAC}, {0xFFAD,0xFFAD,0xFFAD},
1650 {0xFFAE,0xFFAE,0xFFAE}, {0xFFAF,0xFFAF,0xFFAF},
1651 {0xFFB0,0xFFB0,0xFFB0}, {0xFFB1,0xFFB1,0xFFB1},
1652 {0xFFB2,0xFFB2,0xFFB2}, {0xFFB3,0xFFB3,0xFFB3},
1653 {0xFFB4,0xFFB4,0xFFB4}, {0xFFB5,0xFFB5,0xFFB5},
1654 {0xFFB6,0xFFB6,0xFFB6}, {0xFFB7,0xFFB7,0xFFB7},
1655 {0xFFB8,0xFFB8,0xFFB8}, {0xFFB9,0xFFB9,0xFFB9},
1656 {0xFFBA,0xFFBA,0xFFBA}, {0xFFBB,0xFFBB,0xFFBB},
1657 {0xFFBC,0xFFBC,0xFFBC}, {0xFFBD,0xFFBD,0xFFBD},
1658 {0xFFBE,0xFFBE,0xFFBE}, {0xFFBF,0xFFBF,0xFFBF},
1659 {0xFFC0,0xFFC0,0xFFC0}, {0xFFC1,0xFFC1,0xFFC1},
1660 {0xFFC2,0xFFC2,0xFFC2}, {0xFFC3,0xFFC3,0xFFC3},
1661 {0xFFC4,0xFFC4,0xFFC4}, {0xFFC5,0xFFC5,0xFFC5},
1662 {0xFFC6,0xFFC6,0xFFC6}, {0xFFC7,0xFFC7,0xFFC7},
1663 {0xFFC8,0xFFC8,0xFFC8}, {0xFFC9,0xFFC9,0xFFC9},
1664 {0xFFCA,0xFFCA,0xFFCA}, {0xFFCB,0xFFCB,0xFFCB},
1665 {0xFFCC,0xFFCC,0xFFCC}, {0xFFCD,0xFFCD,0xFFCD},
1666 {0xFFCE,0xFFCE,0xFFCE}, {0xFFCF,0xFFCF,0xFFCF},
1667 {0xFFD0,0xFFD0,0xFFD0}, {0xFFD1,0xFFD1,0xFFD1},
1668 {0xFFD2,0xFFD2,0xFFD2}, {0xFFD3,0xFFD3,0xFFD3},
1669 {0xFFD4,0xFFD4,0xFFD4}, {0xFFD5,0xFFD5,0xFFD5},
1670 {0xFFD6,0xFFD6,0xFFD6}, {0xFFD7,0xFFD7,0xFFD7},
1671 {0xFFD8,0xFFD8,0xFFD8}, {0xFFD9,0xFFD9,0xFFD9},
1672 {0xFFDA,0xFFDA,0xFFDA}, {0xFFDB,0xFFDB,0xFFDB},
1673 {0xFFDC,0xFFDC,0xFFDC}, {0xFFDD,0xFFDD,0xFFDD},
1674 {0xFFDE,0xFFDE,0xFFDE}, {0xFFDF,0xFFDF,0xFFDF},
1675 {0xFFE0,0xFFE0,0xFFE0}, {0xFFE1,0xFFE1,0xFFE1},
1676 {0xFFE2,0xFFE2,0xFFE2}, {0xFFE3,0xFFE3,0xFFE3},
1677 {0xFFE4,0xFFE4,0xFFE4}, {0xFFE5,0xFFE5,0xFFE5},
1678 {0xFFE6,0xFFE6,0xFFE6}, {0xFFE7,0xFFE7,0xFFE7},
1679 {0xFFE8,0xFFE8,0xFFE8}, {0xFFE9,0xFFE9,0xFFE9},
1680 {0xFFEA,0xFFEA,0xFFEA}, {0xFFEB,0xFFEB,0xFFEB},
1681 {0xFFEC,0xFFEC,0xFFEC}, {0xFFED,0xFFED,0xFFED},
1682 {0xFFEE,0xFFEE,0xFFEE}, {0xFFEF,0xFFEF,0xFFEF},
1683 {0xFFF0,0xFFF0,0xFFF0}, {0xFFF1,0xFFF1,0xFFF1},
1684 {0xFFF2,0xFFF2,0xFFF2}, {0xFFF3,0xFFF3,0xFFF3},
1685 {0xFFF4,0xFFF4,0xFFF4}, {0xFFF5,0xFFF5,0xFFF5},
1686 {0xFFF6,0xFFF6,0xFFF6}, {0xFFF7,0xFFF7,0xFFF7},
1687 {0xFFF8,0xFFF8,0xFFF8}, {0xFFF9,0xFFF9,0xFFF9},
1688 {0xFFFA,0xFFFA,0xFFFA}, {0xFFFB,0xFFFB,0xFFFB},
1689 {0xFFFC,0xFFFC,0xFFFC}, {0xFFFD,0xFFFD,0xFFFD},
1690 {0xFFFE,0xFFFE,0xFFFE}, {0xFFFF,0xFFFF,0xFFFF}
1691 };
1692
1693
1694 MY_UNICASE_CHARACTER *my_unicase_default_pages[256]=
1695 {
1696 my_unicase_default_page00,
1697 plane01, plane02, plane03, plane04, plane05, NULL, NULL,
1698 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1699 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1700 NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
1701 NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
1702 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1703 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1704 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1705 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1706 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1707 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1708 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1709 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1710 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1711 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1712 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1713 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1714 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1715 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1716 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1717 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1718 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1719 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1720 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1721 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1722 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1723 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1724 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1725 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1726 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1727 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1728 NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
1729 };
1730
1731
1732 MY_UNICASE_INFO my_unicase_default=
1733 {
1734 MY_UNICASE_INFO_DEFAULT_MAXCHAR,
1735 my_unicase_default_pages
1736 };
1737
1738
1739 /*
1740 Reproduce old utf8_general_ci behaviour before we fixed Bug#27877.
1741 */
1742 MY_UNICASE_CHARACTER *my_unicase_pages_mysql500[256]={
1743 plane00_mysql500,
1744 plane01, plane02, plane03, plane04, plane05, NULL, NULL,
1745 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1746 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1747 NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
1748 NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
1749 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1750 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1751 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1752 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1753 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1754 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1755 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1756 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1757 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1758 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1759 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1760 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1761 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1762 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1763 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1764 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1765 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1766 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1767 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1768 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1769 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1770 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1771 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1772 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1773 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1774 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1775 NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
1776
1777 };
1778
1779
1780 MY_UNICASE_INFO my_unicase_mysql500=
1781 {
1782 0xFFFF,
1783 my_unicase_pages_mysql500
1784 };
1785
1786
1787 /*
1788 Turkish lower/upper mapping:
1789 1. LOWER(0x0049 LATIN CAPITAL LETTER I) ->
1790 0x0131 LATIN SMALL LETTER DOTLESS I
1791 2. UPPER(0x0069 LATIN SMALL LETTER I) ->
1792 0x0130 LATIN CAPITAL LETTER I WITH DOT ABOVE
1793 */
1794
1795 static MY_UNICASE_CHARACTER turk00[]=
1796 {
1797 {0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
1798 {0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
1799 {0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
1800 {0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
1801 {0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
1802 {0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
1803 {0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
1804 {0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
1805 {0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
1806 {0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
1807 {0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
1808 {0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
1809 {0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
1810 {0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
1811 {0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
1812 {0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
1813 {0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
1814 {0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
1815 {0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
1816 {0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
1817 {0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
1818 {0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
1819 {0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
1820 {0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
1821 {0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
1822 {0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
1823 {0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
1824 {0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
1825 {0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
1826 {0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
1827 {0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
1828 {0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
1829 {0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
1830 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
1831 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
1832 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
1833 {0x0048,0x0068,0x0048}, {0x0049,0x0131,0x0049},
1834 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
1835 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
1836 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
1837 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
1838 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
1839 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
1840 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
1841 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
1842 {0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
1843 {0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
1844 {0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
1845 {0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
1846 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
1847 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
1848 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
1849 {0x0048,0x0068,0x0048}, {0x0130,0x0069,0x0049},
1850 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
1851 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
1852 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
1853 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
1854 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
1855 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
1856 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
1857 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
1858 {0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
1859 {0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
1860 {0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
1861 {0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
1862 {0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
1863 {0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
1864 {0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
1865 {0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
1866 {0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
1867 {0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
1868 {0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
1869 {0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
1870 {0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
1871 {0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
1872 {0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
1873 {0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
1874 {0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
1875 {0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
1876 {0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
1877 {0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
1878 {0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
1879 {0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
1880 {0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
1881 {0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
1882 {0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
1883 {0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
1884 {0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
1885 {0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
1886 {0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
1887 {0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
1888 {0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
1889 {0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
1890 {0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
1891 {0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
1892 {0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
1893 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
1894 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
1895 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
1896 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
1897 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
1898 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
1899 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
1900 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
1901 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
1902 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
1903 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
1904 {0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
1905 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
1906 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
1907 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
1908 {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x00DF},
1909 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
1910 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
1911 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
1912 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
1913 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
1914 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
1915 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
1916 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
1917 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
1918 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
1919 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
1920 {0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
1921 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
1922 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
1923 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
1924 {0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
1925 };
1926
1927
1928
1929 static MY_UNICASE_CHARACTER *my_unicase_pages_turkish[256]=
1930 {
1931 turk00, plane01, plane02, plane03, plane04, plane05, NULL, NULL,
1932 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1933 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1934 NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
1935 NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
1936 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1937 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1938 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1939 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1940 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1941 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1942 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1943 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1944 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1945 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1946 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1947 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1948 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1949 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1950 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1951 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1952 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1953 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1954 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1955 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1956 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1957 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1958 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1959 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1960 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1961 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1962 NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
1963 };
1964
1965
1966 MY_UNICASE_INFO my_unicase_turkish=
1967 {
1968 0xFFFF,
1969 my_unicase_pages_turkish
1970 };
1971
1972
1973 /* Unicode-5.2.0 case folding information */
1974 static MY_UNICASE_CHARACTER u520p00[]={
1975 {0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001}, /* 0000 */
1976 {0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003}, /* 0002 */
1977 {0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005}, /* 0004 */
1978 {0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007}, /* 0006 */
1979 {0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009}, /* 0008 */
1980 {0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B}, /* 000A */
1981 {0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D}, /* 000C */
1982 {0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F}, /* 000E */
1983 {0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011}, /* 0010 */
1984 {0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013}, /* 0012 */
1985 {0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015}, /* 0014 */
1986 {0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017}, /* 0016 */
1987 {0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019}, /* 0018 */
1988 {0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B}, /* 001A */
1989 {0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D}, /* 001C */
1990 {0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F}, /* 001E */
1991 {0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021}, /* 0020 */
1992 {0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023}, /* 0022 */
1993 {0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025}, /* 0024 */
1994 {0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027}, /* 0026 */
1995 {0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029}, /* 0028 */
1996 {0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B}, /* 002A */
1997 {0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D}, /* 002C */
1998 {0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F}, /* 002E */
1999 {0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031}, /* 0030 */
2000 {0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033}, /* 0032 */
2001 {0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035}, /* 0034 */
2002 {0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037}, /* 0036 */
2003 {0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039}, /* 0038 */
2004 {0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B}, /* 003A */
2005 {0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D}, /* 003C */
2006 {0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F}, /* 003E */
2007 {0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041}, /* 0040 */
2008 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043}, /* 0042 */
2009 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045}, /* 0044 */
2010 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047}, /* 0046 */
2011 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049}, /* 0048 */
2012 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B}, /* 004A */
2013 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D}, /* 004C */
2014 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F}, /* 004E */
2015 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051}, /* 0050 */
2016 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053}, /* 0052 */
2017 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055}, /* 0054 */
2018 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057}, /* 0056 */
2019 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059}, /* 0058 */
2020 {0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B}, /* 005A */
2021 {0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D}, /* 005C */
2022 {0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F}, /* 005E */
2023 {0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041}, /* 0060 */
2024 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043}, /* 0062 */
2025 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045}, /* 0064 */
2026 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047}, /* 0066 */
2027 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049}, /* 0068 */
2028 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B}, /* 006A */
2029 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D}, /* 006C */
2030 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F}, /* 006E */
2031 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051}, /* 0070 */
2032 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053}, /* 0072 */
2033 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055}, /* 0074 */
2034 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057}, /* 0076 */
2035 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059}, /* 0078 */
2036 {0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B}, /* 007A */
2037 {0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D}, /* 007C */
2038 {0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F}, /* 007E */
2039 {0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081}, /* 0080 */
2040 {0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083}, /* 0082 */
2041 {0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085}, /* 0084 */
2042 {0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087}, /* 0086 */
2043 {0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089}, /* 0088 */
2044 {0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B}, /* 008A */
2045 {0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D}, /* 008C */
2046 {0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F}, /* 008E */
2047 {0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091}, /* 0090 */
2048 {0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093}, /* 0092 */
2049 {0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095}, /* 0094 */
2050 {0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097}, /* 0096 */
2051 {0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099}, /* 0098 */
2052 {0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B}, /* 009A */
2053 {0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D}, /* 009C */
2054 {0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F}, /* 009E */
2055 {0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1}, /* 00A0 */
2056 {0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3}, /* 00A2 */
2057 {0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5}, /* 00A4 */
2058 {0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7}, /* 00A6 */
2059 {0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9}, /* 00A8 */
2060 {0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB}, /* 00AA */
2061 {0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD}, /* 00AC */
2062 {0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF}, /* 00AE */
2063 {0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1}, /* 00B0 */
2064 {0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3}, /* 00B2 */
2065 {0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C}, /* 00B4 */
2066 {0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7}, /* 00B6 */
2067 {0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9}, /* 00B8 */
2068 {0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB}, /* 00BA */
2069 {0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD}, /* 00BC */
2070 {0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF}, /* 00BE */
2071 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041}, /* 00C0 */
2072 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041}, /* 00C2 */
2073 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041}, /* 00C4 */
2074 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043}, /* 00C6 */
2075 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045}, /* 00C8 */
2076 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045}, /* 00CA */
2077 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049}, /* 00CC */
2078 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049}, /* 00CE */
2079 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E}, /* 00D0 */
2080 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F}, /* 00D2 */
2081 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F}, /* 00D4 */
2082 {0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7}, /* 00D6 */
2083 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055}, /* 00D8 */
2084 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055}, /* 00DA */
2085 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059}, /* 00DC */
2086 {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x0053}, /* 00DE */
2087 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041}, /* 00E0 */
2088 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041}, /* 00E2 */
2089 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041}, /* 00E4 */
2090 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043}, /* 00E6 */
2091 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045}, /* 00E8 */
2092 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045}, /* 00EA */
2093 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049}, /* 00EC */
2094 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049}, /* 00EE */
2095 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E}, /* 00F0 */
2096 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F}, /* 00F2 */
2097 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F}, /* 00F4 */
2098 {0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7}, /* 00F6 */
2099 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055}, /* 00F8 */
2100 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055}, /* 00FA */
2101 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059}, /* 00FC */
2102 {0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059} /* 00FE */
2103 };
2104
2105 static MY_UNICASE_CHARACTER u520p01[]={
2106 {0x0100,0x0101,0x0041}, {0x0100,0x0101,0x0041}, /* 0100 */
2107 {0x0102,0x0103,0x0041}, {0x0102,0x0103,0x0041}, /* 0102 */
2108 {0x0104,0x0105,0x0041}, {0x0104,0x0105,0x0041}, /* 0104 */
2109 {0x0106,0x0107,0x0043}, {0x0106,0x0107,0x0043}, /* 0106 */
2110 {0x0108,0x0109,0x0043}, {0x0108,0x0109,0x0043}, /* 0108 */
2111 {0x010A,0x010B,0x0043}, {0x010A,0x010B,0x0043}, /* 010A */
2112 {0x010C,0x010D,0x0043}, {0x010C,0x010D,0x0043}, /* 010C */
2113 {0x010E,0x010F,0x0044}, {0x010E,0x010F,0x0044}, /* 010E */
2114 {0x0110,0x0111,0x0110}, {0x0110,0x0111,0x0110}, /* 0110 */
2115 {0x0112,0x0113,0x0045}, {0x0112,0x0113,0x0045}, /* 0112 */
2116 {0x0114,0x0115,0x0045}, {0x0114,0x0115,0x0045}, /* 0114 */
2117 {0x0116,0x0117,0x0045}, {0x0116,0x0117,0x0045}, /* 0116 */
2118 {0x0118,0x0119,0x0045}, {0x0118,0x0119,0x0045}, /* 0118 */
2119 {0x011A,0x011B,0x0045}, {0x011A,0x011B,0x0045}, /* 011A */
2120 {0x011C,0x011D,0x0047}, {0x011C,0x011D,0x0047}, /* 011C */
2121 {0x011E,0x011F,0x0047}, {0x011E,0x011F,0x0047}, /* 011E */
2122 {0x0120,0x0121,0x0047}, {0x0120,0x0121,0x0047}, /* 0120 */
2123 {0x0122,0x0123,0x0047}, {0x0122,0x0123,0x0047}, /* 0122 */
2124 {0x0124,0x0125,0x0048}, {0x0124,0x0125,0x0048}, /* 0124 */
2125 {0x0126,0x0127,0x0126}, {0x0126,0x0127,0x0126}, /* 0126 */
2126 {0x0128,0x0129,0x0049}, {0x0128,0x0129,0x0049}, /* 0128 */
2127 {0x012A,0x012B,0x0049}, {0x012A,0x012B,0x0049}, /* 012A */
2128 {0x012C,0x012D,0x0049}, {0x012C,0x012D,0x0049}, /* 012C */
2129 {0x012E,0x012F,0x0049}, {0x012E,0x012F,0x0049}, /* 012E */
2130 {0x0130,0x0069,0x0049}, {0x0049,0x0131,0x0049}, /* 0130 */
2131 {0x0132,0x0133,0x0132}, {0x0132,0x0133,0x0132}, /* 0132 */
2132 {0x0134,0x0135,0x004A}, {0x0134,0x0135,0x004A}, /* 0134 */
2133 {0x0136,0x0137,0x004B}, {0x0136,0x0137,0x004B}, /* 0136 */
2134 {0x0138,0x0138,0x0138}, {0x0139,0x013A,0x004C}, /* 0138 */
2135 {0x0139,0x013A,0x004C}, {0x013B,0x013C,0x004C}, /* 013A */
2136 {0x013B,0x013C,0x004C}, {0x013D,0x013E,0x004C}, /* 013C */
2137 {0x013D,0x013E,0x004C}, {0x013F,0x0140,0x013F}, /* 013E */
2138 {0x013F,0x0140,0x013F}, {0x0141,0x0142,0x0141}, /* 0140 */
2139 {0x0141,0x0142,0x0141}, {0x0143,0x0144,0x004E}, /* 0142 */
2140 {0x0143,0x0144,0x004E}, {0x0145,0x0146,0x004E}, /* 0144 */
2141 {0x0145,0x0146,0x004E}, {0x0147,0x0148,0x004E}, /* 0146 */
2142 {0x0147,0x0148,0x004E}, {0x0149,0x0149,0x0149}, /* 0148 */
2143 {0x014A,0x014B,0x014A}, {0x014A,0x014B,0x014A}, /* 014A */
2144 {0x014C,0x014D,0x004F}, {0x014C,0x014D,0x004F}, /* 014C */
2145 {0x014E,0x014F,0x004F}, {0x014E,0x014F,0x004F}, /* 014E */
2146 {0x0150,0x0151,0x004F}, {0x0150,0x0151,0x004F}, /* 0150 */
2147 {0x0152,0x0153,0x0152}, {0x0152,0x0153,0x0152}, /* 0152 */
2148 {0x0154,0x0155,0x0052}, {0x0154,0x0155,0x0052}, /* 0154 */
2149 {0x0156,0x0157,0x0052}, {0x0156,0x0157,0x0052}, /* 0156 */
2150 {0x0158,0x0159,0x0052}, {0x0158,0x0159,0x0052}, /* 0158 */
2151 {0x015A,0x015B,0x0053}, {0x015A,0x015B,0x0053}, /* 015A */
2152 {0x015C,0x015D,0x0053}, {0x015C,0x015D,0x0053}, /* 015C */
2153 {0x015E,0x015F,0x0053}, {0x015E,0x015F,0x0053}, /* 015E */
2154 {0x0160,0x0161,0x0053}, {0x0160,0x0161,0x0053}, /* 0160 */
2155 {0x0162,0x0163,0x0054}, {0x0162,0x0163,0x0054}, /* 0162 */
2156 {0x0164,0x0165,0x0054}, {0x0164,0x0165,0x0054}, /* 0164 */
2157 {0x0166,0x0167,0x0166}, {0x0166,0x0167,0x0166}, /* 0166 */
2158 {0x0168,0x0169,0x0055}, {0x0168,0x0169,0x0055}, /* 0168 */
2159 {0x016A,0x016B,0x0055}, {0x016A,0x016B,0x0055}, /* 016A */
2160 {0x016C,0x016D,0x0055}, {0x016C,0x016D,0x0055}, /* 016C */
2161 {0x016E,0x016F,0x0055}, {0x016E,0x016F,0x0055}, /* 016E */
2162 {0x0170,0x0171,0x0055}, {0x0170,0x0171,0x0055}, /* 0170 */
2163 {0x0172,0x0173,0x0055}, {0x0172,0x0173,0x0055}, /* 0172 */
2164 {0x0174,0x0175,0x0057}, {0x0174,0x0175,0x0057}, /* 0174 */
2165 {0x0176,0x0177,0x0059}, {0x0176,0x0177,0x0059}, /* 0176 */
2166 {0x0178,0x00FF,0x0059}, {0x0179,0x017A,0x005A}, /* 0178 */
2167 {0x0179,0x017A,0x005A}, {0x017B,0x017C,0x005A}, /* 017A */
2168 {0x017B,0x017C,0x005A}, {0x017D,0x017E,0x005A}, /* 017C */
2169 {0x017D,0x017E,0x005A}, {0x0053,0x017F,0x0053}, /* 017E */
2170 {0x0243,0x0180,0x0243}, {0x0181,0x0253,0x0181}, /* 0180 */
2171 {0x0182,0x0183,0x0182}, {0x0182,0x0183,0x0182}, /* 0182 */
2172 {0x0184,0x0185,0x0184}, {0x0184,0x0185,0x0184}, /* 0184 */
2173 {0x0186,0x0254,0x0186}, {0x0187,0x0188,0x0187}, /* 0186 */
2174 {0x0187,0x0188,0x0187}, {0x0189,0x0256,0x0189}, /* 0188 */
2175 {0x018A,0x0257,0x018A}, {0x018B,0x018C,0x018B}, /* 018A */
2176 {0x018B,0x018C,0x018B}, {0x018D,0x018D,0x018D}, /* 018C */
2177 {0x018E,0x01DD,0x018E}, {0x018F,0x0259,0x018F}, /* 018E */
2178 {0x0190,0x025B,0x0190}, {0x0191,0x0192,0x0191}, /* 0190 */
2179 {0x0191,0x0192,0x0191}, {0x0193,0x0260,0x0193}, /* 0192 */
2180 {0x0194,0x0263,0x0194}, {0x01F6,0x0195,0x01F6}, /* 0194 */
2181 {0x0196,0x0269,0x0196}, {0x0197,0x0268,0x0197}, /* 0196 */
2182 {0x0198,0x0199,0x0198}, {0x0198,0x0199,0x0198}, /* 0198 */
2183 {0x023D,0x019A,0x023D}, {0x019B,0x019B,0x019B}, /* 019A */
2184 {0x019C,0x026F,0x019C}, {0x019D,0x0272,0x019D}, /* 019C */
2185 {0x0220,0x019E,0x0220}, {0x019F,0x0275,0x019F}, /* 019E */
2186 {0x01A0,0x01A1,0x004F}, {0x01A0,0x01A1,0x004F}, /* 01A0 */
2187 {0x01A2,0x01A3,0x01A2}, {0x01A2,0x01A3,0x01A2}, /* 01A2 */
2188 {0x01A4,0x01A5,0x01A4}, {0x01A4,0x01A5,0x01A4}, /* 01A4 */
2189 {0x01A6,0x0280,0x01A6}, {0x01A7,0x01A8,0x01A7}, /* 01A6 */
2190 {0x01A7,0x01A8,0x01A7}, {0x01A9,0x0283,0x01A9}, /* 01A8 */
2191 {0x01AA,0x01AA,0x01AA}, {0x01AB,0x01AB,0x01AB}, /* 01AA */
2192 {0x01AC,0x01AD,0x01AC}, {0x01AC,0x01AD,0x01AC}, /* 01AC */
2193 {0x01AE,0x0288,0x01AE}, {0x01AF,0x01B0,0x0055}, /* 01AE */
2194 {0x01AF,0x01B0,0x0055}, {0x01B1,0x028A,0x01B1}, /* 01B0 */
2195 {0x01B2,0x028B,0x01B2}, {0x01B3,0x01B4,0x01B3}, /* 01B2 */
2196 {0x01B3,0x01B4,0x01B3}, {0x01B5,0x01B6,0x01B5}, /* 01B4 */
2197 {0x01B5,0x01B6,0x01B5}, {0x01B7,0x0292,0x01B7}, /* 01B6 */
2198 {0x01B8,0x01B9,0x01B8}, {0x01B8,0x01B9,0x01B8}, /* 01B8 */
2199 {0x01BA,0x01BA,0x01BA}, {0x01BB,0x01BB,0x01BB}, /* 01BA */
2200 {0x01BC,0x01BD,0x01BC}, {0x01BC,0x01BD,0x01BC}, /* 01BC */
2201 {0x01BE,0x01BE,0x01BE}, {0x01F7,0x01BF,0x01F7}, /* 01BE */
2202 {0x01C0,0x01C0,0x01C0}, {0x01C1,0x01C1,0x01C1}, /* 01C0 */
2203 {0x01C2,0x01C2,0x01C2}, {0x01C3,0x01C3,0x01C3}, /* 01C2 */
2204 {0x01C4,0x01C6,0x01C4}, {0x01C4,0x01C6,0x01C4}, /* 01C4 */
2205 {0x01C4,0x01C6,0x01C4}, {0x01C7,0x01C9,0x01C7}, /* 01C6 */
2206 {0x01C7,0x01C9,0x01C7}, {0x01C7,0x01C9,0x01C7}, /* 01C8 */
2207 {0x01CA,0x01CC,0x01CA}, {0x01CA,0x01CC,0x01CA}, /* 01CA */
2208 {0x01CA,0x01CC,0x01CA}, {0x01CD,0x01CE,0x0041}, /* 01CC */
2209 {0x01CD,0x01CE,0x0041}, {0x01CF,0x01D0,0x0049}, /* 01CE */
2210 {0x01CF,0x01D0,0x0049}, {0x01D1,0x01D2,0x004F}, /* 01D0 */
2211 {0x01D1,0x01D2,0x004F}, {0x01D3,0x01D4,0x0055}, /* 01D2 */
2212 {0x01D3,0x01D4,0x0055}, {0x01D5,0x01D6,0x0055}, /* 01D4 */
2213 {0x01D5,0x01D6,0x0055}, {0x01D7,0x01D8,0x0055}, /* 01D6 */
2214 {0x01D7,0x01D8,0x0055}, {0x01D9,0x01DA,0x0055}, /* 01D8 */
2215 {0x01D9,0x01DA,0x0055}, {0x01DB,0x01DC,0x0055}, /* 01DA */
2216 {0x01DB,0x01DC,0x0055}, {0x018E,0x01DD,0x018E}, /* 01DC */
2217 {0x01DE,0x01DF,0x0041}, {0x01DE,0x01DF,0x0041}, /* 01DE */
2218 {0x01E0,0x01E1,0x0041}, {0x01E0,0x01E1,0x0041}, /* 01E0 */
2219 {0x01E2,0x01E3,0x00C6}, {0x01E2,0x01E3,0x00C6}, /* 01E2 */
2220 {0x01E4,0x01E5,0x01E4}, {0x01E4,0x01E5,0x01E4}, /* 01E4 */
2221 {0x01E6,0x01E7,0x0047}, {0x01E6,0x01E7,0x0047}, /* 01E6 */
2222 {0x01E8,0x01E9,0x004B}, {0x01E8,0x01E9,0x004B}, /* 01E8 */
2223 {0x01EA,0x01EB,0x004F}, {0x01EA,0x01EB,0x004F}, /* 01EA */
2224 {0x01EC,0x01ED,0x004F}, {0x01EC,0x01ED,0x004F}, /* 01EC */
2225 {0x01EE,0x01EF,0x01B7}, {0x01EE,0x01EF,0x01B7}, /* 01EE */
2226 {0x01F0,0x01F0,0x004A}, {0x01F1,0x01F3,0x01F1}, /* 01F0 */
2227 {0x01F1,0x01F3,0x01F1}, {0x01F1,0x01F3,0x01F1}, /* 01F2 */
2228 {0x01F4,0x01F5,0x0047}, {0x01F4,0x01F5,0x0047}, /* 01F4 */
2229 {0x01F6,0x0195,0x01F6}, {0x01F7,0x01BF,0x01F7}, /* 01F6 */
2230 {0x01F8,0x01F9,0x004E}, {0x01F8,0x01F9,0x004E}, /* 01F8 */
2231 {0x01FA,0x01FB,0x0041}, {0x01FA,0x01FB,0x0041}, /* 01FA */
2232 {0x01FC,0x01FD,0x00C6}, {0x01FC,0x01FD,0x00C6}, /* 01FC */
2233 {0x01FE,0x01FF,0x00D8}, {0x01FE,0x01FF,0x00D8} /* 01FE */
2234 };
2235
2236 static MY_UNICASE_CHARACTER u520p02[]={
2237 {0x0200,0x0201,0x0041}, {0x0200,0x0201,0x0041}, /* 0200 */
2238 {0x0202,0x0203,0x0041}, {0x0202,0x0203,0x0041}, /* 0202 */
2239 {0x0204,0x0205,0x0045}, {0x0204,0x0205,0x0045}, /* 0204 */
2240 {0x0206,0x0207,0x0045}, {0x0206,0x0207,0x0045}, /* 0206 */
2241 {0x0208,0x0209,0x0049}, {0x0208,0x0209,0x0049}, /* 0208 */
2242 {0x020A,0x020B,0x0049}, {0x020A,0x020B,0x0049}, /* 020A */
2243 {0x020C,0x020D,0x004F}, {0x020C,0x020D,0x004F}, /* 020C */
2244 {0x020E,0x020F,0x004F}, {0x020E,0x020F,0x004F}, /* 020E */
2245 {0x0210,0x0211,0x0052}, {0x0210,0x0211,0x0052}, /* 0210 */
2246 {0x0212,0x0213,0x0052}, {0x0212,0x0213,0x0052}, /* 0212 */
2247 {0x0214,0x0215,0x0055}, {0x0214,0x0215,0x0055}, /* 0214 */
2248 {0x0216,0x0217,0x0055}, {0x0216,0x0217,0x0055}, /* 0216 */
2249 {0x0218,0x0219,0x0053}, {0x0218,0x0219,0x0053}, /* 0218 */
2250 {0x021A,0x021B,0x0054}, {0x021A,0x021B,0x0054}, /* 021A */
2251 {0x021C,0x021D,0x021C}, {0x021C,0x021D,0x021C}, /* 021C */
2252 {0x021E,0x021F,0x0048}, {0x021E,0x021F,0x0048}, /* 021E */
2253 {0x0220,0x019E,0x0220}, {0x0221,0x0221,0x0221}, /* 0220 */
2254 {0x0222,0x0223,0x0222}, {0x0222,0x0223,0x0222}, /* 0222 */
2255 {0x0224,0x0225,0x0224}, {0x0224,0x0225,0x0224}, /* 0224 */
2256 {0x0226,0x0227,0x0041}, {0x0226,0x0227,0x0041}, /* 0226 */
2257 {0x0228,0x0229,0x0045}, {0x0228,0x0229,0x0045}, /* 0228 */
2258 {0x022A,0x022B,0x004F}, {0x022A,0x022B,0x004F}, /* 022A */
2259 {0x022C,0x022D,0x004F}, {0x022C,0x022D,0x004F}, /* 022C */
2260 {0x022E,0x022F,0x004F}, {0x022E,0x022F,0x004F}, /* 022E */
2261 {0x0230,0x0231,0x004F}, {0x0230,0x0231,0x004F}, /* 0230 */
2262 {0x0232,0x0233,0x0059}, {0x0232,0x0233,0x0059}, /* 0232 */
2263 {0x0234,0x0234,0x0234}, {0x0235,0x0235,0x0235}, /* 0234 */
2264 {0x0236,0x0236,0x0236}, {0x0237,0x0237,0x0237}, /* 0236 */
2265 {0x0238,0x0238,0x0238}, {0x0239,0x0239,0x0239}, /* 0238 */
2266 {0x023A,0x2C65,0x023A}, {0x023B,0x023C,0x023B}, /* 023A */
2267 {0x023B,0x023C,0x023B}, {0x023D,0x019A,0x023D}, /* 023C */
2268 {0x023E,0x2C66,0x023E}, {0x2C7E,0x023F,0x2C7E}, /* 023E */
2269 {0x2C7F,0x0240,0x2C7F}, {0x0241,0x0242,0x0241}, /* 0240 */
2270 {0x0241,0x0242,0x0241}, {0x0243,0x0180,0x0243}, /* 0242 */
2271 {0x0244,0x0289,0x0244}, {0x0245,0x028C,0x0245}, /* 0244 */
2272 {0x0246,0x0247,0x0246}, {0x0246,0x0247,0x0246}, /* 0246 */
2273 {0x0248,0x0249,0x0248}, {0x0248,0x0249,0x0248}, /* 0248 */
2274 {0x024A,0x024B,0x024A}, {0x024A,0x024B,0x024A}, /* 024A */
2275 {0x024C,0x024D,0x024C}, {0x024C,0x024D,0x024C}, /* 024C */
2276 {0x024E,0x024F,0x024E}, {0x024E,0x024F,0x024E}, /* 024E */
2277 {0x2C6F,0x0250,0x2C6F}, {0x2C6D,0x0251,0x2C6D}, /* 0250 */
2278 {0x2C70,0x0252,0x2C70}, {0x0181,0x0253,0x0181}, /* 0252 */
2279 {0x0186,0x0254,0x0186}, {0x0255,0x0255,0x0255}, /* 0254 */
2280 {0x0189,0x0256,0x0189}, {0x018A,0x0257,0x018A}, /* 0256 */
2281 {0x0258,0x0258,0x0258}, {0x018F,0x0259,0x018F}, /* 0258 */
2282 {0x025A,0x025A,0x025A}, {0x0190,0x025B,0x0190}, /* 025A */
2283 {0x025C,0x025C,0x025C}, {0x025D,0x025D,0x025D}, /* 025C */
2284 {0x025E,0x025E,0x025E}, {0x025F,0x025F,0x025F}, /* 025E */
2285 {0x0193,0x0260,0x0193}, {0x0261,0x0261,0x0261}, /* 0260 */
2286 {0x0262,0x0262,0x0262}, {0x0194,0x0263,0x0194}, /* 0262 */
2287 {0x0264,0x0264,0x0264}, {0x0265,0x0265,0x0265}, /* 0264 */
2288 {0x0266,0x0266,0x0266}, {0x0267,0x0267,0x0267}, /* 0266 */
2289 {0x0197,0x0268,0x0197}, {0x0196,0x0269,0x0196}, /* 0268 */
2290 {0x026A,0x026A,0x026A}, {0x2C62,0x026B,0x2C62}, /* 026A */
2291 {0x026C,0x026C,0x026C}, {0x026D,0x026D,0x026D}, /* 026C */
2292 {0x026E,0x026E,0x026E}, {0x019C,0x026F,0x019C}, /* 026E */
2293 {0x0270,0x0270,0x0270}, {0x2C6E,0x0271,0x2C6E}, /* 0270 */
2294 {0x019D,0x0272,0x019D}, {0x0273,0x0273,0x0273}, /* 0272 */
2295 {0x0274,0x0274,0x0274}, {0x019F,0x0275,0x019F}, /* 0274 */
2296 {0x0276,0x0276,0x0276}, {0x0277,0x0277,0x0277}, /* 0276 */
2297 {0x0278,0x0278,0x0278}, {0x0279,0x0279,0x0279}, /* 0278 */
2298 {0x027A,0x027A,0x027A}, {0x027B,0x027B,0x027B}, /* 027A */
2299 {0x027C,0x027C,0x027C}, {0x2C64,0x027D,0x2C64}, /* 027C */
2300 {0x027E,0x027E,0x027E}, {0x027F,0x027F,0x027F}, /* 027E */
2301 {0x01A6,0x0280,0x01A6}, {0x0281,0x0281,0x0281}, /* 0280 */
2302 {0x0282,0x0282,0x0282}, {0x01A9,0x0283,0x01A9}, /* 0282 */
2303 {0x0284,0x0284,0x0284}, {0x0285,0x0285,0x0285}, /* 0284 */
2304 {0x0286,0x0286,0x0286}, {0x0287,0x0287,0x0287}, /* 0286 */
2305 {0x01AE,0x0288,0x01AE}, {0x0244,0x0289,0x0244}, /* 0288 */
2306 {0x01B1,0x028A,0x01B1}, {0x01B2,0x028B,0x01B2}, /* 028A */
2307 {0x0245,0x028C,0x0245}, {0x028D,0x028D,0x028D}, /* 028C */
2308 {0x028E,0x028E,0x028E}, {0x028F,0x028F,0x028F}, /* 028E */
2309 {0x0290,0x0290,0x0290}, {0x0291,0x0291,0x0291}, /* 0290 */
2310 {0x01B7,0x0292,0x01B7}, {0x0293,0x0293,0x0293}, /* 0292 */
2311 {0x0294,0x0294,0x0294}, {0x0295,0x0295,0x0295}, /* 0294 */
2312 {0x0296,0x0296,0x0296}, {0x0297,0x0297,0x0297}, /* 0296 */
2313 {0x0298,0x0298,0x0298}, {0x0299,0x0299,0x0299}, /* 0298 */
2314 {0x029A,0x029A,0x029A}, {0x029B,0x029B,0x029B}, /* 029A */
2315 {0x029C,0x029C,0x029C}, {0x029D,0x029D,0x029D}, /* 029C */
2316 {0x029E,0x029E,0x029E}, {0x029F,0x029F,0x029F}, /* 029E */
2317 {0x02A0,0x02A0,0x02A0}, {0x02A1,0x02A1,0x02A1}, /* 02A0 */
2318 {0x02A2,0x02A2,0x02A2}, {0x02A3,0x02A3,0x02A3}, /* 02A2 */
2319 {0x02A4,0x02A4,0x02A4}, {0x02A5,0x02A5,0x02A5}, /* 02A4 */
2320 {0x02A6,0x02A6,0x02A6}, {0x02A7,0x02A7,0x02A7}, /* 02A6 */
2321 {0x02A8,0x02A8,0x02A8}, {0x02A9,0x02A9,0x02A9}, /* 02A8 */
2322 {0x02AA,0x02AA,0x02AA}, {0x02AB,0x02AB,0x02AB}, /* 02AA */
2323 {0x02AC,0x02AC,0x02AC}, {0x02AD,0x02AD,0x02AD}, /* 02AC */
2324 {0x02AE,0x02AE,0x02AE}, {0x02AF,0x02AF,0x02AF}, /* 02AE */
2325 {0x02B0,0x02B0,0x02B0}, {0x02B1,0x02B1,0x02B1}, /* 02B0 */
2326 {0x02B2,0x02B2,0x02B2}, {0x02B3,0x02B3,0x02B3}, /* 02B2 */
2327 {0x02B4,0x02B4,0x02B4}, {0x02B5,0x02B5,0x02B5}, /* 02B4 */
2328 {0x02B6,0x02B6,0x02B6}, {0x02B7,0x02B7,0x02B7}, /* 02B6 */
2329 {0x02B8,0x02B8,0x02B8}, {0x02B9,0x02B9,0x02B9}, /* 02B8 */
2330 {0x02BA,0x02BA,0x02BA}, {0x02BB,0x02BB,0x02BB}, /* 02BA */
2331 {0x02BC,0x02BC,0x02BC}, {0x02BD,0x02BD,0x02BD}, /* 02BC */
2332 {0x02BE,0x02BE,0x02BE}, {0x02BF,0x02BF,0x02BF}, /* 02BE */
2333 {0x02C0,0x02C0,0x02C0}, {0x02C1,0x02C1,0x02C1}, /* 02C0 */
2334 {0x02C2,0x02C2,0x02C2}, {0x02C3,0x02C3,0x02C3}, /* 02C2 */
2335 {0x02C4,0x02C4,0x02C4}, {0x02C5,0x02C5,0x02C5}, /* 02C4 */
2336 {0x02C6,0x02C6,0x02C6}, {0x02C7,0x02C7,0x02C7}, /* 02C6 */
2337 {0x02C8,0x02C8,0x02C8}, {0x02C9,0x02C9,0x02C9}, /* 02C8 */
2338 {0x02CA,0x02CA,0x02CA}, {0x02CB,0x02CB,0x02CB}, /* 02CA */
2339 {0x02CC,0x02CC,0x02CC}, {0x02CD,0x02CD,0x02CD}, /* 02CC */
2340 {0x02CE,0x02CE,0x02CE}, {0x02CF,0x02CF,0x02CF}, /* 02CE */
2341 {0x02D0,0x02D0,0x02D0}, {0x02D1,0x02D1,0x02D1}, /* 02D0 */
2342 {0x02D2,0x02D2,0x02D2}, {0x02D3,0x02D3,0x02D3}, /* 02D2 */
2343 {0x02D4,0x02D4,0x02D4}, {0x02D5,0x02D5,0x02D5}, /* 02D4 */
2344 {0x02D6,0x02D6,0x02D6}, {0x02D7,0x02D7,0x02D7}, /* 02D6 */
2345 {0x02D8,0x02D8,0x02D8}, {0x02D9,0x02D9,0x02D9}, /* 02D8 */
2346 {0x02DA,0x02DA,0x02DA}, {0x02DB,0x02DB,0x02DB}, /* 02DA */
2347 {0x02DC,0x02DC,0x02DC}, {0x02DD,0x02DD,0x02DD}, /* 02DC */
2348 {0x02DE,0x02DE,0x02DE}, {0x02DF,0x02DF,0x02DF}, /* 02DE */
2349 {0x02E0,0x02E0,0x02E0}, {0x02E1,0x02E1,0x02E1}, /* 02E0 */
2350 {0x02E2,0x02E2,0x02E2}, {0x02E3,0x02E3,0x02E3}, /* 02E2 */
2351 {0x02E4,0x02E4,0x02E4}, {0x02E5,0x02E5,0x02E5}, /* 02E4 */
2352 {0x02E6,0x02E6,0x02E6}, {0x02E7,0x02E7,0x02E7}, /* 02E6 */
2353 {0x02E8,0x02E8,0x02E8}, {0x02E9,0x02E9,0x02E9}, /* 02E8 */
2354 {0x02EA,0x02EA,0x02EA}, {0x02EB,0x02EB,0x02EB}, /* 02EA */
2355 {0x02EC,0x02EC,0x02EC}, {0x02ED,0x02ED,0x02ED}, /* 02EC */
2356 {0x02EE,0x02EE,0x02EE}, {0x02EF,0x02EF,0x02EF}, /* 02EE */
2357 {0x02F0,0x02F0,0x02F0}, {0x02F1,0x02F1,0x02F1}, /* 02F0 */
2358 {0x02F2,0x02F2,0x02F2}, {0x02F3,0x02F3,0x02F3}, /* 02F2 */
2359 {0x02F4,0x02F4,0x02F4}, {0x02F5,0x02F5,0x02F5}, /* 02F4 */
2360 {0x02F6,0x02F6,0x02F6}, {0x02F7,0x02F7,0x02F7}, /* 02F6 */
2361 {0x02F8,0x02F8,0x02F8}, {0x02F9,0x02F9,0x02F9}, /* 02F8 */
2362 {0x02FA,0x02FA,0x02FA}, {0x02FB,0x02FB,0x02FB}, /* 02FA */
2363 {0x02FC,0x02FC,0x02FC}, {0x02FD,0x02FD,0x02FD}, /* 02FC */
2364 {0x02FE,0x02FE,0x02FE}, {0x02FF,0x02FF,0x02FF} /* 02FE */
2365 };
2366
2367 static MY_UNICASE_CHARACTER u520p03[]={
2368 {0x0300,0x0300,0x0300}, {0x0301,0x0301,0x0301}, /* 0300 */
2369 {0x0302,0x0302,0x0302}, {0x0303,0x0303,0x0303}, /* 0302 */
2370 {0x0304,0x0304,0x0304}, {0x0305,0x0305,0x0305}, /* 0304 */
2371 {0x0306,0x0306,0x0306}, {0x0307,0x0307,0x0307}, /* 0306 */
2372 {0x0308,0x0308,0x0308}, {0x0309,0x0309,0x0309}, /* 0308 */
2373 {0x030A,0x030A,0x030A}, {0x030B,0x030B,0x030B}, /* 030A */
2374 {0x030C,0x030C,0x030C}, {0x030D,0x030D,0x030D}, /* 030C */
2375 {0x030E,0x030E,0x030E}, {0x030F,0x030F,0x030F}, /* 030E */
2376 {0x0310,0x0310,0x0310}, {0x0311,0x0311,0x0311}, /* 0310 */
2377 {0x0312,0x0312,0x0312}, {0x0313,0x0313,0x0313}, /* 0312 */
2378 {0x0314,0x0314,0x0314}, {0x0315,0x0315,0x0315}, /* 0314 */
2379 {0x0316,0x0316,0x0316}, {0x0317,0x0317,0x0317}, /* 0316 */
2380 {0x0318,0x0318,0x0318}, {0x0319,0x0319,0x0319}, /* 0318 */
2381 {0x031A,0x031A,0x031A}, {0x031B,0x031B,0x031B}, /* 031A */
2382 {0x031C,0x031C,0x031C}, {0x031D,0x031D,0x031D}, /* 031C */
2383 {0x031E,0x031E,0x031E}, {0x031F,0x031F,0x031F}, /* 031E */
2384 {0x0320,0x0320,0x0320}, {0x0321,0x0321,0x0321}, /* 0320 */
2385 {0x0322,0x0322,0x0322}, {0x0323,0x0323,0x0323}, /* 0322 */
2386 {0x0324,0x0324,0x0324}, {0x0325,0x0325,0x0325}, /* 0324 */
2387 {0x0326,0x0326,0x0326}, {0x0327,0x0327,0x0327}, /* 0326 */
2388 {0x0328,0x0328,0x0328}, {0x0329,0x0329,0x0329}, /* 0328 */
2389 {0x032A,0x032A,0x032A}, {0x032B,0x032B,0x032B}, /* 032A */
2390 {0x032C,0x032C,0x032C}, {0x032D,0x032D,0x032D}, /* 032C */
2391 {0x032E,0x032E,0x032E}, {0x032F,0x032F,0x032F}, /* 032E */
2392 {0x0330,0x0330,0x0330}, {0x0331,0x0331,0x0331}, /* 0330 */
2393 {0x0332,0x0332,0x0332}, {0x0333,0x0333,0x0333}, /* 0332 */
2394 {0x0334,0x0334,0x0334}, {0x0335,0x0335,0x0335}, /* 0334 */
2395 {0x0336,0x0336,0x0336}, {0x0337,0x0337,0x0337}, /* 0336 */
2396 {0x0338,0x0338,0x0338}, {0x0339,0x0339,0x0339}, /* 0338 */
2397 {0x033A,0x033A,0x033A}, {0x033B,0x033B,0x033B}, /* 033A */
2398 {0x033C,0x033C,0x033C}, {0x033D,0x033D,0x033D}, /* 033C */
2399 {0x033E,0x033E,0x033E}, {0x033F,0x033F,0x033F}, /* 033E */
2400 {0x0340,0x0340,0x0340}, {0x0341,0x0341,0x0341}, /* 0340 */
2401 {0x0342,0x0342,0x0342}, {0x0343,0x0343,0x0343}, /* 0342 */
2402 {0x0344,0x0344,0x0344}, {0x0399,0x0345,0x0399}, /* 0344 */
2403 {0x0346,0x0346,0x0346}, {0x0347,0x0347,0x0347}, /* 0346 */
2404 {0x0348,0x0348,0x0348}, {0x0349,0x0349,0x0349}, /* 0348 */
2405 {0x034A,0x034A,0x034A}, {0x034B,0x034B,0x034B}, /* 034A */
2406 {0x034C,0x034C,0x034C}, {0x034D,0x034D,0x034D}, /* 034C */
2407 {0x034E,0x034E,0x034E}, {0x034F,0x034F,0x034F}, /* 034E */
2408 {0x0350,0x0350,0x0350}, {0x0351,0x0351,0x0351}, /* 0350 */
2409 {0x0352,0x0352,0x0352}, {0x0353,0x0353,0x0353}, /* 0352 */
2410 {0x0354,0x0354,0x0354}, {0x0355,0x0355,0x0355}, /* 0354 */
2411 {0x0356,0x0356,0x0356}, {0x0357,0x0357,0x0357}, /* 0356 */
2412 {0x0358,0x0358,0x0358}, {0x0359,0x0359,0x0359}, /* 0358 */
2413 {0x035A,0x035A,0x035A}, {0x035B,0x035B,0x035B}, /* 035A */
2414 {0x035C,0x035C,0x035C}, {0x035D,0x035D,0x035D}, /* 035C */
2415 {0x035E,0x035E,0x035E}, {0x035F,0x035F,0x035F}, /* 035E */
2416 {0x0360,0x0360,0x0360}, {0x0361,0x0361,0x0361}, /* 0360 */
2417 {0x0362,0x0362,0x0362}, {0x0363,0x0363,0x0363}, /* 0362 */
2418 {0x0364,0x0364,0x0364}, {0x0365,0x0365,0x0365}, /* 0364 */
2419 {0x0366,0x0366,0x0366}, {0x0367,0x0367,0x0367}, /* 0366 */
2420 {0x0368,0x0368,0x0368}, {0x0369,0x0369,0x0369}, /* 0368 */
2421 {0x036A,0x036A,0x036A}, {0x036B,0x036B,0x036B}, /* 036A */
2422 {0x036C,0x036C,0x036C}, {0x036D,0x036D,0x036D}, /* 036C */
2423 {0x036E,0x036E,0x036E}, {0x036F,0x036F,0x036F}, /* 036E */
2424 {0x0370,0x0371,0x0370}, {0x0370,0x0371,0x0370}, /* 0370 */
2425 {0x0372,0x0373,0x0372}, {0x0372,0x0373,0x0372}, /* 0372 */
2426 {0x0374,0x0374,0x0374}, {0x0375,0x0375,0x0375}, /* 0374 */
2427 {0x0376,0x0377,0x0376}, {0x0376,0x0377,0x0376}, /* 0376 */
2428 {0x0378,0x0378,0x0378}, {0x0379,0x0379,0x0379}, /* 0378 */
2429 {0x037A,0x037A,0x037A}, {0x03FD,0x037B,0x03FD}, /* 037A */
2430 {0x03FE,0x037C,0x03FE}, {0x03FF,0x037D,0x03FF}, /* 037C */
2431 {0x037E,0x037E,0x037E}, {0x037F,0x037F,0x037F}, /* 037E */
2432 {0x0380,0x0380,0x0380}, {0x0381,0x0381,0x0381}, /* 0380 */
2433 {0x0382,0x0382,0x0382}, {0x0383,0x0383,0x0383}, /* 0382 */
2434 {0x0384,0x0384,0x0384}, {0x0385,0x0385,0x0385}, /* 0384 */
2435 {0x0386,0x03AC,0x0391}, {0x0387,0x0387,0x0387}, /* 0386 */
2436 {0x0388,0x03AD,0x0395}, {0x0389,0x03AE,0x0397}, /* 0388 */
2437 {0x038A,0x03AF,0x0399}, {0x038B,0x038B,0x038B}, /* 038A */
2438 {0x038C,0x03CC,0x039F}, {0x038D,0x038D,0x038D}, /* 038C */
2439 {0x038E,0x03CD,0x03A5}, {0x038F,0x03CE,0x03A9}, /* 038E */
2440 {0x0390,0x0390,0x0399}, {0x0391,0x03B1,0x0391}, /* 0390 */
2441 {0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393}, /* 0392 */
2442 {0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395}, /* 0394 */
2443 {0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397}, /* 0396 */
2444 {0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399}, /* 0398 */
2445 {0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B}, /* 039A */
2446 {0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D}, /* 039C */
2447 {0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F}, /* 039E */
2448 {0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1}, /* 03A0 */
2449 {0x03A2,0x03A2,0x03A2}, {0x03A3,0x03C3,0x03A3}, /* 03A2 */
2450 {0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5}, /* 03A4 */
2451 {0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7}, /* 03A6 */
2452 {0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9}, /* 03A8 */
2453 {0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5}, /* 03AA */
2454 {0x0386,0x03AC,0x0391}, {0x0388,0x03AD,0x0395}, /* 03AC */
2455 {0x0389,0x03AE,0x0397}, {0x038A,0x03AF,0x0399}, /* 03AE */
2456 {0x03B0,0x03B0,0x03A5}, {0x0391,0x03B1,0x0391}, /* 03B0 */
2457 {0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393}, /* 03B2 */
2458 {0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395}, /* 03B4 */
2459 {0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397}, /* 03B6 */
2460 {0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399}, /* 03B8 */
2461 {0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B}, /* 03BA */
2462 {0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D}, /* 03BC */
2463 {0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F}, /* 03BE */
2464 {0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1}, /* 03C0 */
2465 {0x03A3,0x03C2,0x03A3}, {0x03A3,0x03C3,0x03A3}, /* 03C2 */
2466 {0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5}, /* 03C4 */
2467 {0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7}, /* 03C6 */
2468 {0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9}, /* 03C8 */
2469 {0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5}, /* 03CA */
2470 {0x038C,0x03CC,0x039F}, {0x038E,0x03CD,0x03A5}, /* 03CC */
2471 {0x038F,0x03CE,0x03A9}, {0x03CF,0x03D7,0x03CF}, /* 03CE */
2472 {0x0392,0x03D0,0x0392}, {0x0398,0x03D1,0x0398}, /* 03D0 */
2473 {0x03D2,0x03D2,0x03D2}, {0x03D3,0x03D3,0x03D2}, /* 03D2 */
2474 {0x03D4,0x03D4,0x03D2}, {0x03A6,0x03D5,0x03A6}, /* 03D4 */
2475 {0x03A0,0x03D6,0x03A0}, {0x03CF,0x03D7,0x03CF}, /* 03D6 */
2476 {0x03D8,0x03D9,0x03D8}, {0x03D8,0x03D9,0x03D8}, /* 03D8 */
2477 {0x03DA,0x03DB,0x03DA}, {0x03DA,0x03DB,0x03DA}, /* 03DA */
2478 {0x03DC,0x03DD,0x03DC}, {0x03DC,0x03DD,0x03DC}, /* 03DC */
2479 {0x03DE,0x03DF,0x03DE}, {0x03DE,0x03DF,0x03DE}, /* 03DE */
2480 {0x03E0,0x03E1,0x03E0}, {0x03E0,0x03E1,0x03E0}, /* 03E0 */
2481 {0x03E2,0x03E3,0x03E2}, {0x03E2,0x03E3,0x03E2}, /* 03E2 */
2482 {0x03E4,0x03E5,0x03E4}, {0x03E4,0x03E5,0x03E4}, /* 03E4 */
2483 {0x03E6,0x03E7,0x03E6}, {0x03E6,0x03E7,0x03E6}, /* 03E6 */
2484 {0x03E8,0x03E9,0x03E8}, {0x03E8,0x03E9,0x03E8}, /* 03E8 */
2485 {0x03EA,0x03EB,0x03EA}, {0x03EA,0x03EB,0x03EA}, /* 03EA */
2486 {0x03EC,0x03ED,0x03EC}, {0x03EC,0x03ED,0x03EC}, /* 03EC */
2487 {0x03EE,0x03EF,0x03EE}, {0x03EE,0x03EF,0x03EE}, /* 03EE */
2488 {0x039A,0x03F0,0x039A}, {0x03A1,0x03F1,0x03A1}, /* 03F0 */
2489 {0x03F9,0x03F2,0x03F9}, {0x03F3,0x03F3,0x03F3}, /* 03F2 */
2490 {0x03F4,0x03B8,0x03F4}, {0x0395,0x03F5,0x0395}, /* 03F4 */
2491 {0x03F6,0x03F6,0x03F6}, {0x03F7,0x03F8,0x03F7}, /* 03F6 */
2492 {0x03F7,0x03F8,0x03F7}, {0x03F9,0x03F2,0x03F9}, /* 03F8 */
2493 {0x03FA,0x03FB,0x03FA}, {0x03FA,0x03FB,0x03FA}, /* 03FA */
2494 {0x03FC,0x03FC,0x03FC}, {0x03FD,0x037B,0x03FD}, /* 03FC */
2495 {0x03FE,0x037C,0x03FE}, {0x03FF,0x037D,0x03FF} /* 03FE */
2496 };
2497
2498 static MY_UNICASE_CHARACTER u520p04[]={
2499 {0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415}, /* 0400 */
2500 {0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413}, /* 0402 */
2501 {0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405}, /* 0404 */
2502 {0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406}, /* 0406 */
2503 {0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409}, /* 0408 */
2504 {0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B}, /* 040A */
2505 {0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418}, /* 040C */
2506 {0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F}, /* 040E */
2507 {0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411}, /* 0410 */
2508 {0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413}, /* 0412 */
2509 {0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415}, /* 0414 */
2510 {0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417}, /* 0416 */
2511 {0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419}, /* 0418 */
2512 {0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B}, /* 041A */
2513 {0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D}, /* 041C */
2514 {0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F}, /* 041E */
2515 {0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421}, /* 0420 */
2516 {0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423}, /* 0422 */
2517 {0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425}, /* 0424 */
2518 {0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427}, /* 0426 */
2519 {0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429}, /* 0428 */
2520 {0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B}, /* 042A */
2521 {0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D}, /* 042C */
2522 {0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F}, /* 042E */
2523 {0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411}, /* 0430 */
2524 {0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413}, /* 0432 */
2525 {0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415}, /* 0434 */
2526 {0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417}, /* 0436 */
2527 {0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419}, /* 0438 */
2528 {0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B}, /* 043A */
2529 {0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D}, /* 043C */
2530 {0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F}, /* 043E */
2531 {0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421}, /* 0440 */
2532 {0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423}, /* 0442 */
2533 {0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425}, /* 0444 */
2534 {0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427}, /* 0446 */
2535 {0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429}, /* 0448 */
2536 {0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B}, /* 044A */
2537 {0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D}, /* 044C */
2538 {0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F}, /* 044E */
2539 {0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415}, /* 0450 */
2540 {0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413}, /* 0452 */
2541 {0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405}, /* 0454 */
2542 {0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406}, /* 0456 */
2543 {0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409}, /* 0458 */
2544 {0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B}, /* 045A */
2545 {0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418}, /* 045C */
2546 {0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F}, /* 045E */
2547 {0x0460,0x0461,0x0460}, {0x0460,0x0461,0x0460}, /* 0460 */
2548 {0x0462,0x0463,0x0462}, {0x0462,0x0463,0x0462}, /* 0462 */
2549 {0x0464,0x0465,0x0464}, {0x0464,0x0465,0x0464}, /* 0464 */
2550 {0x0466,0x0467,0x0466}, {0x0466,0x0467,0x0466}, /* 0466 */
2551 {0x0468,0x0469,0x0468}, {0x0468,0x0469,0x0468}, /* 0468 */
2552 {0x046A,0x046B,0x046A}, {0x046A,0x046B,0x046A}, /* 046A */
2553 {0x046C,0x046D,0x046C}, {0x046C,0x046D,0x046C}, /* 046C */
2554 {0x046E,0x046F,0x046E}, {0x046E,0x046F,0x046E}, /* 046E */
2555 {0x0470,0x0471,0x0470}, {0x0470,0x0471,0x0470}, /* 0470 */
2556 {0x0472,0x0473,0x0472}, {0x0472,0x0473,0x0472}, /* 0472 */
2557 {0x0474,0x0475,0x0474}, {0x0474,0x0475,0x0474}, /* 0474 */
2558 {0x0476,0x0477,0x0474}, {0x0476,0x0477,0x0474}, /* 0476 */
2559 {0x0478,0x0479,0x0478}, {0x0478,0x0479,0x0478}, /* 0478 */
2560 {0x047A,0x047B,0x047A}, {0x047A,0x047B,0x047A}, /* 047A */
2561 {0x047C,0x047D,0x047C}, {0x047C,0x047D,0x047C}, /* 047C */
2562 {0x047E,0x047F,0x047E}, {0x047E,0x047F,0x047E}, /* 047E */
2563 {0x0480,0x0481,0x0480}, {0x0480,0x0481,0x0480}, /* 0480 */
2564 {0x0482,0x0482,0x0482}, {0x0483,0x0483,0x0483}, /* 0482 */
2565 {0x0484,0x0484,0x0484}, {0x0485,0x0485,0x0485}, /* 0484 */
2566 {0x0486,0x0486,0x0486}, {0x0487,0x0487,0x0487}, /* 0486 */
2567 {0x0488,0x0488,0x0488}, {0x0489,0x0489,0x0489}, /* 0488 */
2568 {0x048A,0x048B,0x048A}, {0x048A,0x048B,0x048A}, /* 048A */
2569 {0x048C,0x048D,0x048C}, {0x048C,0x048D,0x048C}, /* 048C */
2570 {0x048E,0x048F,0x048E}, {0x048E,0x048F,0x048E}, /* 048E */
2571 {0x0490,0x0491,0x0490}, {0x0490,0x0491,0x0490}, /* 0490 */
2572 {0x0492,0x0493,0x0492}, {0x0492,0x0493,0x0492}, /* 0492 */
2573 {0x0494,0x0495,0x0494}, {0x0494,0x0495,0x0494}, /* 0494 */
2574 {0x0496,0x0497,0x0496}, {0x0496,0x0497,0x0496}, /* 0496 */
2575 {0x0498,0x0499,0x0498}, {0x0498,0x0499,0x0498}, /* 0498 */
2576 {0x049A,0x049B,0x049A}, {0x049A,0x049B,0x049A}, /* 049A */
2577 {0x049C,0x049D,0x049C}, {0x049C,0x049D,0x049C}, /* 049C */
2578 {0x049E,0x049F,0x049E}, {0x049E,0x049F,0x049E}, /* 049E */
2579 {0x04A0,0x04A1,0x04A0}, {0x04A0,0x04A1,0x04A0}, /* 04A0 */
2580 {0x04A2,0x04A3,0x04A2}, {0x04A2,0x04A3,0x04A2}, /* 04A2 */
2581 {0x04A4,0x04A5,0x04A4}, {0x04A4,0x04A5,0x04A4}, /* 04A4 */
2582 {0x04A6,0x04A7,0x04A6}, {0x04A6,0x04A7,0x04A6}, /* 04A6 */
2583 {0x04A8,0x04A9,0x04A8}, {0x04A8,0x04A9,0x04A8}, /* 04A8 */
2584 {0x04AA,0x04AB,0x04AA}, {0x04AA,0x04AB,0x04AA}, /* 04AA */
2585 {0x04AC,0x04AD,0x04AC}, {0x04AC,0x04AD,0x04AC}, /* 04AC */
2586 {0x04AE,0x04AF,0x04AE}, {0x04AE,0x04AF,0x04AE}, /* 04AE */
2587 {0x04B0,0x04B1,0x04B0}, {0x04B0,0x04B1,0x04B0}, /* 04B0 */
2588 {0x04B2,0x04B3,0x04B2}, {0x04B2,0x04B3,0x04B2}, /* 04B2 */
2589 {0x04B4,0x04B5,0x04B4}, {0x04B4,0x04B5,0x04B4}, /* 04B4 */
2590 {0x04B6,0x04B7,0x04B6}, {0x04B6,0x04B7,0x04B6}, /* 04B6 */
2591 {0x04B8,0x04B9,0x04B8}, {0x04B8,0x04B9,0x04B8}, /* 04B8 */
2592 {0x04BA,0x04BB,0x04BA}, {0x04BA,0x04BB,0x04BA}, /* 04BA */
2593 {0x04BC,0x04BD,0x04BC}, {0x04BC,0x04BD,0x04BC}, /* 04BC */
2594 {0x04BE,0x04BF,0x04BE}, {0x04BE,0x04BF,0x04BE}, /* 04BE */
2595 {0x04C0,0x04CF,0x04C0}, {0x04C1,0x04C2,0x0416}, /* 04C0 */
2596 {0x04C1,0x04C2,0x0416}, {0x04C3,0x04C4,0x04C3}, /* 04C2 */
2597 {0x04C3,0x04C4,0x04C3}, {0x04C5,0x04C6,0x04C5}, /* 04C4 */
2598 {0x04C5,0x04C6,0x04C5}, {0x04C7,0x04C8,0x04C7}, /* 04C6 */
2599 {0x04C7,0x04C8,0x04C7}, {0x04C9,0x04CA,0x04C9}, /* 04C8 */
2600 {0x04C9,0x04CA,0x04C9}, {0x04CB,0x04CC,0x04CB}, /* 04CA */
2601 {0x04CB,0x04CC,0x04CB}, {0x04CD,0x04CE,0x04CD}, /* 04CC */
2602 {0x04CD,0x04CE,0x04CD}, {0x04C0,0x04CF,0x04C0}, /* 04CE */
2603 {0x04D0,0x04D1,0x0410}, {0x04D0,0x04D1,0x0410}, /* 04D0 */
2604 {0x04D2,0x04D3,0x0410}, {0x04D2,0x04D3,0x0410}, /* 04D2 */
2605 {0x04D4,0x04D5,0x04D4}, {0x04D4,0x04D5,0x04D4}, /* 04D4 */
2606 {0x04D6,0x04D7,0x0415}, {0x04D6,0x04D7,0x0415}, /* 04D6 */
2607 {0x04D8,0x04D9,0x04D8}, {0x04D8,0x04D9,0x04D8}, /* 04D8 */
2608 {0x04DA,0x04DB,0x04D8}, {0x04DA,0x04DB,0x04D8}, /* 04DA */
2609 {0x04DC,0x04DD,0x0416}, {0x04DC,0x04DD,0x0416}, /* 04DC */
2610 {0x04DE,0x04DF,0x0417}, {0x04DE,0x04DF,0x0417}, /* 04DE */
2611 {0x04E0,0x04E1,0x04E0}, {0x04E0,0x04E1,0x04E0}, /* 04E0 */
2612 {0x04E2,0x04E3,0x0418}, {0x04E2,0x04E3,0x0418}, /* 04E2 */
2613 {0x04E4,0x04E5,0x0418}, {0x04E4,0x04E5,0x0418}, /* 04E4 */
2614 {0x04E6,0x04E7,0x041E}, {0x04E6,0x04E7,0x041E}, /* 04E6 */
2615 {0x04E8,0x04E9,0x04E8}, {0x04E8,0x04E9,0x04E8}, /* 04E8 */
2616 {0x04EA,0x04EB,0x04E8}, {0x04EA,0x04EB,0x04E8}, /* 04EA */
2617 {0x04EC,0x04ED,0x042D}, {0x04EC,0x04ED,0x042D}, /* 04EC */
2618 {0x04EE,0x04EF,0x0423}, {0x04EE,0x04EF,0x0423}, /* 04EE */
2619 {0x04F0,0x04F1,0x0423}, {0x04F0,0x04F1,0x0423}, /* 04F0 */
2620 {0x04F2,0x04F3,0x0423}, {0x04F2,0x04F3,0x0423}, /* 04F2 */
2621 {0x04F4,0x04F5,0x0427}, {0x04F4,0x04F5,0x0427}, /* 04F4 */
2622 {0x04F6,0x04F7,0x04F6}, {0x04F6,0x04F7,0x04F6}, /* 04F6 */
2623 {0x04F8,0x04F9,0x042B}, {0x04F8,0x04F9,0x042B}, /* 04F8 */
2624 {0x04FA,0x04FB,0x04FA}, {0x04FA,0x04FB,0x04FA}, /* 04FA */
2625 {0x04FC,0x04FD,0x04FC}, {0x04FC,0x04FD,0x04FC}, /* 04FC */
2626 {0x04FE,0x04FF,0x04FE}, {0x04FE,0x04FF,0x04FE} /* 04FE */
2627 };
2628
2629 static MY_UNICASE_CHARACTER u520p05[]={
2630 {0x0500,0x0501,0x0500}, {0x0500,0x0501,0x0500}, /* 0500 */
2631 {0x0502,0x0503,0x0502}, {0x0502,0x0503,0x0502}, /* 0502 */
2632 {0x0504,0x0505,0x0504}, {0x0504,0x0505,0x0504}, /* 0504 */
2633 {0x0506,0x0507,0x0506}, {0x0506,0x0507,0x0506}, /* 0506 */
2634 {0x0508,0x0509,0x0508}, {0x0508,0x0509,0x0508}, /* 0508 */
2635 {0x050A,0x050B,0x050A}, {0x050A,0x050B,0x050A}, /* 050A */
2636 {0x050C,0x050D,0x050C}, {0x050C,0x050D,0x050C}, /* 050C */
2637 {0x050E,0x050F,0x050E}, {0x050E,0x050F,0x050E}, /* 050E */
2638 {0x0510,0x0511,0x0510}, {0x0510,0x0511,0x0510}, /* 0510 */
2639 {0x0512,0x0513,0x0512}, {0x0512,0x0513,0x0512}, /* 0512 */
2640 {0x0514,0x0515,0x0514}, {0x0514,0x0515,0x0514}, /* 0514 */
2641 {0x0516,0x0517,0x0516}, {0x0516,0x0517,0x0516}, /* 0516 */
2642 {0x0518,0x0519,0x0518}, {0x0518,0x0519,0x0518}, /* 0518 */
2643 {0x051A,0x051B,0x051A}, {0x051A,0x051B,0x051A}, /* 051A */
2644 {0x051C,0x051D,0x051C}, {0x051C,0x051D,0x051C}, /* 051C */
2645 {0x051E,0x051F,0x051E}, {0x051E,0x051F,0x051E}, /* 051E */
2646 {0x0520,0x0521,0x0520}, {0x0520,0x0521,0x0520}, /* 0520 */
2647 {0x0522,0x0523,0x0522}, {0x0522,0x0523,0x0522}, /* 0522 */
2648 {0x0524,0x0525,0x0524}, {0x0524,0x0525,0x0524}, /* 0524 */
2649 {0x0526,0x0526,0x0526}, {0x0527,0x0527,0x0527}, /* 0526 */
2650 {0x0528,0x0528,0x0528}, {0x0529,0x0529,0x0529}, /* 0528 */
2651 {0x052A,0x052A,0x052A}, {0x052B,0x052B,0x052B}, /* 052A */
2652 {0x052C,0x052C,0x052C}, {0x052D,0x052D,0x052D}, /* 052C */
2653 {0x052E,0x052E,0x052E}, {0x052F,0x052F,0x052F}, /* 052E */
2654 {0x0530,0x0530,0x0530}, {0x0531,0x0561,0x0531}, /* 0530 */
2655 {0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533}, /* 0532 */
2656 {0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535}, /* 0534 */
2657 {0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537}, /* 0536 */
2658 {0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539}, /* 0538 */
2659 {0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B}, /* 053A */
2660 {0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D}, /* 053C */
2661 {0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F}, /* 053E */
2662 {0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541}, /* 0540 */
2663 {0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543}, /* 0542 */
2664 {0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545}, /* 0544 */
2665 {0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547}, /* 0546 */
2666 {0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549}, /* 0548 */
2667 {0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B}, /* 054A */
2668 {0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D}, /* 054C */
2669 {0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F}, /* 054E */
2670 {0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551}, /* 0550 */
2671 {0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553}, /* 0552 */
2672 {0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555}, /* 0554 */
2673 {0x0556,0x0586,0x0556}, {0x0557,0x0557,0x0557}, /* 0556 */
2674 {0x0558,0x0558,0x0558}, {0x0559,0x0559,0x0559}, /* 0558 */
2675 {0x055A,0x055A,0x055A}, {0x055B,0x055B,0x055B}, /* 055A */
2676 {0x055C,0x055C,0x055C}, {0x055D,0x055D,0x055D}, /* 055C */
2677 {0x055E,0x055E,0x055E}, {0x055F,0x055F,0x055F}, /* 055E */
2678 {0x0560,0x0560,0x0560}, {0x0531,0x0561,0x0531}, /* 0560 */
2679 {0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533}, /* 0562 */
2680 {0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535}, /* 0564 */
2681 {0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537}, /* 0566 */
2682 {0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539}, /* 0568 */
2683 {0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B}, /* 056A */
2684 {0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D}, /* 056C */
2685 {0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F}, /* 056E */
2686 {0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541}, /* 0570 */
2687 {0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543}, /* 0572 */
2688 {0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545}, /* 0574 */
2689 {0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547}, /* 0576 */
2690 {0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549}, /* 0578 */
2691 {0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B}, /* 057A */
2692 {0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D}, /* 057C */
2693 {0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F}, /* 057E */
2694 {0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551}, /* 0580 */
2695 {0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553}, /* 0582 */
2696 {0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555}, /* 0584 */
2697 {0x0556,0x0586,0x0556}, {0x0587,0x0587,0x0587}, /* 0586 */
2698 {0x0588,0x0588,0x0588}, {0x0589,0x0589,0x0589}, /* 0588 */
2699 {0x058A,0x058A,0x058A}, {0x058B,0x058B,0x058B}, /* 058A */
2700 {0x058C,0x058C,0x058C}, {0x058D,0x058D,0x058D}, /* 058C */
2701 {0x058E,0x058E,0x058E}, {0x058F,0x058F,0x058F}, /* 058E */
2702 {0x0590,0x0590,0x0590}, {0x0591,0x0591,0x0591}, /* 0590 */
2703 {0x0592,0x0592,0x0592}, {0x0593,0x0593,0x0593}, /* 0592 */
2704 {0x0594,0x0594,0x0594}, {0x0595,0x0595,0x0595}, /* 0594 */
2705 {0x0596,0x0596,0x0596}, {0x0597,0x0597,0x0597}, /* 0596 */
2706 {0x0598,0x0598,0x0598}, {0x0599,0x0599,0x0599}, /* 0598 */
2707 {0x059A,0x059A,0x059A}, {0x059B,0x059B,0x059B}, /* 059A */
2708 {0x059C,0x059C,0x059C}, {0x059D,0x059D,0x059D}, /* 059C */
2709 {0x059E,0x059E,0x059E}, {0x059F,0x059F,0x059F}, /* 059E */
2710 {0x05A0,0x05A0,0x05A0}, {0x05A1,0x05A1,0x05A1}, /* 05A0 */
2711 {0x05A2,0x05A2,0x05A2}, {0x05A3,0x05A3,0x05A3}, /* 05A2 */
2712 {0x05A4,0x05A4,0x05A4}, {0x05A5,0x05A5,0x05A5}, /* 05A4 */
2713 {0x05A6,0x05A6,0x05A6}, {0x05A7,0x05A7,0x05A7}, /* 05A6 */
2714 {0x05A8,0x05A8,0x05A8}, {0x05A9,0x05A9,0x05A9}, /* 05A8 */
2715 {0x05AA,0x05AA,0x05AA}, {0x05AB,0x05AB,0x05AB}, /* 05AA */
2716 {0x05AC,0x05AC,0x05AC}, {0x05AD,0x05AD,0x05AD}, /* 05AC */
2717 {0x05AE,0x05AE,0x05AE}, {0x05AF,0x05AF,0x05AF}, /* 05AE */
2718 {0x05B0,0x05B0,0x05B0}, {0x05B1,0x05B1,0x05B1}, /* 05B0 */
2719 {0x05B2,0x05B2,0x05B2}, {0x05B3,0x05B3,0x05B3}, /* 05B2 */
2720 {0x05B4,0x05B4,0x05B4}, {0x05B5,0x05B5,0x05B5}, /* 05B4 */
2721 {0x05B6,0x05B6,0x05B6}, {0x05B7,0x05B7,0x05B7}, /* 05B6 */
2722 {0x05B8,0x05B8,0x05B8}, {0x05B9,0x05B9,0x05B9}, /* 05B8 */
2723 {0x05BA,0x05BA,0x05BA}, {0x05BB,0x05BB,0x05BB}, /* 05BA */
2724 {0x05BC,0x05BC,0x05BC}, {0x05BD,0x05BD,0x05BD}, /* 05BC */
2725 {0x05BE,0x05BE,0x05BE}, {0x05BF,0x05BF,0x05BF}, /* 05BE */
2726 {0x05C0,0x05C0,0x05C0}, {0x05C1,0x05C1,0x05C1}, /* 05C0 */
2727 {0x05C2,0x05C2,0x05C2}, {0x05C3,0x05C3,0x05C3}, /* 05C2 */
2728 {0x05C4,0x05C4,0x05C4}, {0x05C5,0x05C5,0x05C5}, /* 05C4 */
2729 {0x05C6,0x05C6,0x05C6}, {0x05C7,0x05C7,0x05C7}, /* 05C6 */
2730 {0x05C8,0x05C8,0x05C8}, {0x05C9,0x05C9,0x05C9}, /* 05C8 */
2731 {0x05CA,0x05CA,0x05CA}, {0x05CB,0x05CB,0x05CB}, /* 05CA */
2732 {0x05CC,0x05CC,0x05CC}, {0x05CD,0x05CD,0x05CD}, /* 05CC */
2733 {0x05CE,0x05CE,0x05CE}, {0x05CF,0x05CF,0x05CF}, /* 05CE */
2734 {0x05D0,0x05D0,0x05D0}, {0x05D1,0x05D1,0x05D1}, /* 05D0 */
2735 {0x05D2,0x05D2,0x05D2}, {0x05D3,0x05D3,0x05D3}, /* 05D2 */
2736 {0x05D4,0x05D4,0x05D4}, {0x05D5,0x05D5,0x05D5}, /* 05D4 */
2737 {0x05D6,0x05D6,0x05D6}, {0x05D7,0x05D7,0x05D7}, /* 05D6 */
2738 {0x05D8,0x05D8,0x05D8}, {0x05D9,0x05D9,0x05D9}, /* 05D8 */
2739 {0x05DA,0x05DA,0x05DA}, {0x05DB,0x05DB,0x05DB}, /* 05DA */
2740 {0x05DC,0x05DC,0x05DC}, {0x05DD,0x05DD,0x05DD}, /* 05DC */
2741 {0x05DE,0x05DE,0x05DE}, {0x05DF,0x05DF,0x05DF}, /* 05DE */
2742 {0x05E0,0x05E0,0x05E0}, {0x05E1,0x05E1,0x05E1}, /* 05E0 */
2743 {0x05E2,0x05E2,0x05E2}, {0x05E3,0x05E3,0x05E3}, /* 05E2 */
2744 {0x05E4,0x05E4,0x05E4}, {0x05E5,0x05E5,0x05E5}, /* 05E4 */
2745 {0x05E6,0x05E6,0x05E6}, {0x05E7,0x05E7,0x05E7}, /* 05E6 */
2746 {0x05E8,0x05E8,0x05E8}, {0x05E9,0x05E9,0x05E9}, /* 05E8 */
2747 {0x05EA,0x05EA,0x05EA}, {0x05EB,0x05EB,0x05EB}, /* 05EA */
2748 {0x05EC,0x05EC,0x05EC}, {0x05ED,0x05ED,0x05ED}, /* 05EC */
2749 {0x05EE,0x05EE,0x05EE}, {0x05EF,0x05EF,0x05EF}, /* 05EE */
2750 {0x05F0,0x05F0,0x05F0}, {0x05F1,0x05F1,0x05F1}, /* 05F0 */
2751 {0x05F2,0x05F2,0x05F2}, {0x05F3,0x05F3,0x05F3}, /* 05F2 */
2752 {0x05F4,0x05F4,0x05F4}, {0x05F5,0x05F5,0x05F5}, /* 05F4 */
2753 {0x05F6,0x05F6,0x05F6}, {0x05F7,0x05F7,0x05F7}, /* 05F6 */
2754 {0x05F8,0x05F8,0x05F8}, {0x05F9,0x05F9,0x05F9}, /* 05F8 */
2755 {0x05FA,0x05FA,0x05FA}, {0x05FB,0x05FB,0x05FB}, /* 05FA */
2756 {0x05FC,0x05FC,0x05FC}, {0x05FD,0x05FD,0x05FD}, /* 05FC */
2757 {0x05FE,0x05FE,0x05FE}, {0x05FF,0x05FF,0x05FF} /* 05FE */
2758 };
2759
2760 static MY_UNICASE_CHARACTER u520p10[]={
2761 {0x1000,0x1000,0x1000}, {0x1001,0x1001,0x1001}, /* 1000 */
2762 {0x1002,0x1002,0x1002}, {0x1003,0x1003,0x1003}, /* 1002 */
2763 {0x1004,0x1004,0x1004}, {0x1005,0x1005,0x1005}, /* 1004 */
2764 {0x1006,0x1006,0x1006}, {0x1007,0x1007,0x1007}, /* 1006 */
2765 {0x1008,0x1008,0x1008}, {0x1009,0x1009,0x1009}, /* 1008 */
2766 {0x100A,0x100A,0x100A}, {0x100B,0x100B,0x100B}, /* 100A */
2767 {0x100C,0x100C,0x100C}, {0x100D,0x100D,0x100D}, /* 100C */
2768 {0x100E,0x100E,0x100E}, {0x100F,0x100F,0x100F}, /* 100E */
2769 {0x1010,0x1010,0x1010}, {0x1011,0x1011,0x1011}, /* 1010 */
2770 {0x1012,0x1012,0x1012}, {0x1013,0x1013,0x1013}, /* 1012 */
2771 {0x1014,0x1014,0x1014}, {0x1015,0x1015,0x1015}, /* 1014 */
2772 {0x1016,0x1016,0x1016}, {0x1017,0x1017,0x1017}, /* 1016 */
2773 {0x1018,0x1018,0x1018}, {0x1019,0x1019,0x1019}, /* 1018 */
2774 {0x101A,0x101A,0x101A}, {0x101B,0x101B,0x101B}, /* 101A */
2775 {0x101C,0x101C,0x101C}, {0x101D,0x101D,0x101D}, /* 101C */
2776 {0x101E,0x101E,0x101E}, {0x101F,0x101F,0x101F}, /* 101E */
2777 {0x1020,0x1020,0x1020}, {0x1021,0x1021,0x1021}, /* 1020 */
2778 {0x1022,0x1022,0x1022}, {0x1023,0x1023,0x1023}, /* 1022 */
2779 {0x1024,0x1024,0x1024}, {0x1025,0x1025,0x1025}, /* 1024 */
2780 {0x1026,0x1026,0x1026}, {0x1027,0x1027,0x1027}, /* 1026 */
2781 {0x1028,0x1028,0x1028}, {0x1029,0x1029,0x1029}, /* 1028 */
2782 {0x102A,0x102A,0x102A}, {0x102B,0x102B,0x102B}, /* 102A */
2783 {0x102C,0x102C,0x102C}, {0x102D,0x102D,0x102D}, /* 102C */
2784 {0x102E,0x102E,0x102E}, {0x102F,0x102F,0x102F}, /* 102E */
2785 {0x1030,0x1030,0x1030}, {0x1031,0x1031,0x1031}, /* 1030 */
2786 {0x1032,0x1032,0x1032}, {0x1033,0x1033,0x1033}, /* 1032 */
2787 {0x1034,0x1034,0x1034}, {0x1035,0x1035,0x1035}, /* 1034 */
2788 {0x1036,0x1036,0x1036}, {0x1037,0x1037,0x1037}, /* 1036 */
2789 {0x1038,0x1038,0x1038}, {0x1039,0x1039,0x1039}, /* 1038 */
2790 {0x103A,0x103A,0x103A}, {0x103B,0x103B,0x103B}, /* 103A */
2791 {0x103C,0x103C,0x103C}, {0x103D,0x103D,0x103D}, /* 103C */
2792 {0x103E,0x103E,0x103E}, {0x103F,0x103F,0x103F}, /* 103E */
2793 {0x1040,0x1040,0x1040}, {0x1041,0x1041,0x1041}, /* 1040 */
2794 {0x1042,0x1042,0x1042}, {0x1043,0x1043,0x1043}, /* 1042 */
2795 {0x1044,0x1044,0x1044}, {0x1045,0x1045,0x1045}, /* 1044 */
2796 {0x1046,0x1046,0x1046}, {0x1047,0x1047,0x1047}, /* 1046 */
2797 {0x1048,0x1048,0x1048}, {0x1049,0x1049,0x1049}, /* 1048 */
2798 {0x104A,0x104A,0x104A}, {0x104B,0x104B,0x104B}, /* 104A */
2799 {0x104C,0x104C,0x104C}, {0x104D,0x104D,0x104D}, /* 104C */
2800 {0x104E,0x104E,0x104E}, {0x104F,0x104F,0x104F}, /* 104E */
2801 {0x1050,0x1050,0x1050}, {0x1051,0x1051,0x1051}, /* 1050 */
2802 {0x1052,0x1052,0x1052}, {0x1053,0x1053,0x1053}, /* 1052 */
2803 {0x1054,0x1054,0x1054}, {0x1055,0x1055,0x1055}, /* 1054 */
2804 {0x1056,0x1056,0x1056}, {0x1057,0x1057,0x1057}, /* 1056 */
2805 {0x1058,0x1058,0x1058}, {0x1059,0x1059,0x1059}, /* 1058 */
2806 {0x105A,0x105A,0x105A}, {0x105B,0x105B,0x105B}, /* 105A */
2807 {0x105C,0x105C,0x105C}, {0x105D,0x105D,0x105D}, /* 105C */
2808 {0x105E,0x105E,0x105E}, {0x105F,0x105F,0x105F}, /* 105E */
2809 {0x1060,0x1060,0x1060}, {0x1061,0x1061,0x1061}, /* 1060 */
2810 {0x1062,0x1062,0x1062}, {0x1063,0x1063,0x1063}, /* 1062 */
2811 {0x1064,0x1064,0x1064}, {0x1065,0x1065,0x1065}, /* 1064 */
2812 {0x1066,0x1066,0x1066}, {0x1067,0x1067,0x1067}, /* 1066 */
2813 {0x1068,0x1068,0x1068}, {0x1069,0x1069,0x1069}, /* 1068 */
2814 {0x106A,0x106A,0x106A}, {0x106B,0x106B,0x106B}, /* 106A */
2815 {0x106C,0x106C,0x106C}, {0x106D,0x106D,0x106D}, /* 106C */
2816 {0x106E,0x106E,0x106E}, {0x106F,0x106F,0x106F}, /* 106E */
2817 {0x1070,0x1070,0x1070}, {0x1071,0x1071,0x1071}, /* 1070 */
2818 {0x1072,0x1072,0x1072}, {0x1073,0x1073,0x1073}, /* 1072 */
2819 {0x1074,0x1074,0x1074}, {0x1075,0x1075,0x1075}, /* 1074 */
2820 {0x1076,0x1076,0x1076}, {0x1077,0x1077,0x1077}, /* 1076 */
2821 {0x1078,0x1078,0x1078}, {0x1079,0x1079,0x1079}, /* 1078 */
2822 {0x107A,0x107A,0x107A}, {0x107B,0x107B,0x107B}, /* 107A */
2823 {0x107C,0x107C,0x107C}, {0x107D,0x107D,0x107D}, /* 107C */
2824 {0x107E,0x107E,0x107E}, {0x107F,0x107F,0x107F}, /* 107E */
2825 {0x1080,0x1080,0x1080}, {0x1081,0x1081,0x1081}, /* 1080 */
2826 {0x1082,0x1082,0x1082}, {0x1083,0x1083,0x1083}, /* 1082 */
2827 {0x1084,0x1084,0x1084}, {0x1085,0x1085,0x1085}, /* 1084 */
2828 {0x1086,0x1086,0x1086}, {0x1087,0x1087,0x1087}, /* 1086 */
2829 {0x1088,0x1088,0x1088}, {0x1089,0x1089,0x1089}, /* 1088 */
2830 {0x108A,0x108A,0x108A}, {0x108B,0x108B,0x108B}, /* 108A */
2831 {0x108C,0x108C,0x108C}, {0x108D,0x108D,0x108D}, /* 108C */
2832 {0x108E,0x108E,0x108E}, {0x108F,0x108F,0x108F}, /* 108E */
2833 {0x1090,0x1090,0x1090}, {0x1091,0x1091,0x1091}, /* 1090 */
2834 {0x1092,0x1092,0x1092}, {0x1093,0x1093,0x1093}, /* 1092 */
2835 {0x1094,0x1094,0x1094}, {0x1095,0x1095,0x1095}, /* 1094 */
2836 {0x1096,0x1096,0x1096}, {0x1097,0x1097,0x1097}, /* 1096 */
2837 {0x1098,0x1098,0x1098}, {0x1099,0x1099,0x1099}, /* 1098 */
2838 {0x109A,0x109A,0x109A}, {0x109B,0x109B,0x109B}, /* 109A */
2839 {0x109C,0x109C,0x109C}, {0x109D,0x109D,0x109D}, /* 109C */
2840 {0x109E,0x109E,0x109E}, {0x109F,0x109F,0x109F}, /* 109E */
2841 {0x10A0,0x2D00,0x10A0}, {0x10A1,0x2D01,0x10A1}, /* 10A0 */
2842 {0x10A2,0x2D02,0x10A2}, {0x10A3,0x2D03,0x10A3}, /* 10A2 */
2843 {0x10A4,0x2D04,0x10A4}, {0x10A5,0x2D05,0x10A5}, /* 10A4 */
2844 {0x10A6,0x2D06,0x10A6}, {0x10A7,0x2D07,0x10A7}, /* 10A6 */
2845 {0x10A8,0x2D08,0x10A8}, {0x10A9,0x2D09,0x10A9}, /* 10A8 */
2846 {0x10AA,0x2D0A,0x10AA}, {0x10AB,0x2D0B,0x10AB}, /* 10AA */
2847 {0x10AC,0x2D0C,0x10AC}, {0x10AD,0x2D0D,0x10AD}, /* 10AC */
2848 {0x10AE,0x2D0E,0x10AE}, {0x10AF,0x2D0F,0x10AF}, /* 10AE */
2849 {0x10B0,0x2D10,0x10B0}, {0x10B1,0x2D11,0x10B1}, /* 10B0 */
2850 {0x10B2,0x2D12,0x10B2}, {0x10B3,0x2D13,0x10B3}, /* 10B2 */
2851 {0x10B4,0x2D14,0x10B4}, {0x10B5,0x2D15,0x10B5}, /* 10B4 */
2852 {0x10B6,0x2D16,0x10B6}, {0x10B7,0x2D17,0x10B7}, /* 10B6 */
2853 {0x10B8,0x2D18,0x10B8}, {0x10B9,0x2D19,0x10B9}, /* 10B8 */
2854 {0x10BA,0x2D1A,0x10BA}, {0x10BB,0x2D1B,0x10BB}, /* 10BA */
2855 {0x10BC,0x2D1C,0x10BC}, {0x10BD,0x2D1D,0x10BD}, /* 10BC */
2856 {0x10BE,0x2D1E,0x10BE}, {0x10BF,0x2D1F,0x10BF}, /* 10BE */
2857 {0x10C0,0x2D20,0x10C0}, {0x10C1,0x2D21,0x10C1}, /* 10C0 */
2858 {0x10C2,0x2D22,0x10C2}, {0x10C3,0x2D23,0x10C3}, /* 10C2 */
2859 {0x10C4,0x2D24,0x10C4}, {0x10C5,0x2D25,0x10C5}, /* 10C4 */
2860 {0x10C6,0x10C6,0x10C6}, {0x10C7,0x10C7,0x10C7}, /* 10C6 */
2861 {0x10C8,0x10C8,0x10C8}, {0x10C9,0x10C9,0x10C9}, /* 10C8 */
2862 {0x10CA,0x10CA,0x10CA}, {0x10CB,0x10CB,0x10CB}, /* 10CA */
2863 {0x10CC,0x10CC,0x10CC}, {0x10CD,0x10CD,0x10CD}, /* 10CC */
2864 {0x10CE,0x10CE,0x10CE}, {0x10CF,0x10CF,0x10CF}, /* 10CE */
2865 {0x10D0,0x10D0,0x10D0}, {0x10D1,0x10D1,0x10D1}, /* 10D0 */
2866 {0x10D2,0x10D2,0x10D2}, {0x10D3,0x10D3,0x10D3}, /* 10D2 */
2867 {0x10D4,0x10D4,0x10D4}, {0x10D5,0x10D5,0x10D5}, /* 10D4 */
2868 {0x10D6,0x10D6,0x10D6}, {0x10D7,0x10D7,0x10D7}, /* 10D6 */
2869 {0x10D8,0x10D8,0x10D8}, {0x10D9,0x10D9,0x10D9}, /* 10D8 */
2870 {0x10DA,0x10DA,0x10DA}, {0x10DB,0x10DB,0x10DB}, /* 10DA */
2871 {0x10DC,0x10DC,0x10DC}, {0x10DD,0x10DD,0x10DD}, /* 10DC */
2872 {0x10DE,0x10DE,0x10DE}, {0x10DF,0x10DF,0x10DF}, /* 10DE */
2873 {0x10E0,0x10E0,0x10E0}, {0x10E1,0x10E1,0x10E1}, /* 10E0 */
2874 {0x10E2,0x10E2,0x10E2}, {0x10E3,0x10E3,0x10E3}, /* 10E2 */
2875 {0x10E4,0x10E4,0x10E4}, {0x10E5,0x10E5,0x10E5}, /* 10E4 */
2876 {0x10E6,0x10E6,0x10E6}, {0x10E7,0x10E7,0x10E7}, /* 10E6 */
2877 {0x10E8,0x10E8,0x10E8}, {0x10E9,0x10E9,0x10E9}, /* 10E8 */
2878 {0x10EA,0x10EA,0x10EA}, {0x10EB,0x10EB,0x10EB}, /* 10EA */
2879 {0x10EC,0x10EC,0x10EC}, {0x10ED,0x10ED,0x10ED}, /* 10EC */
2880 {0x10EE,0x10EE,0x10EE}, {0x10EF,0x10EF,0x10EF}, /* 10EE */
2881 {0x10F0,0x10F0,0x10F0}, {0x10F1,0x10F1,0x10F1}, /* 10F0 */
2882 {0x10F2,0x10F2,0x10F2}, {0x10F3,0x10F3,0x10F3}, /* 10F2 */
2883 {0x10F4,0x10F4,0x10F4}, {0x10F5,0x10F5,0x10F5}, /* 10F4 */
2884 {0x10F6,0x10F6,0x10F6}, {0x10F7,0x10F7,0x10F7}, /* 10F6 */
2885 {0x10F8,0x10F8,0x10F8}, {0x10F9,0x10F9,0x10F9}, /* 10F8 */
2886 {0x10FA,0x10FA,0x10FA}, {0x10FB,0x10FB,0x10FB}, /* 10FA */
2887 {0x10FC,0x10FC,0x10FC}, {0x10FD,0x10FD,0x10FD}, /* 10FC */
2888 {0x10FE,0x10FE,0x10FE}, {0x10FF,0x10FF,0x10FF} /* 10FE */
2889 };
2890
2891 static MY_UNICASE_CHARACTER u520p1D[]={
2892 {0x1D00,0x1D00,0x1D00}, {0x1D01,0x1D01,0x1D01}, /* 1D00 */
2893 {0x1D02,0x1D02,0x1D02}, {0x1D03,0x1D03,0x1D03}, /* 1D02 */
2894 {0x1D04,0x1D04,0x1D04}, {0x1D05,0x1D05,0x1D05}, /* 1D04 */
2895 {0x1D06,0x1D06,0x1D06}, {0x1D07,0x1D07,0x1D07}, /* 1D06 */
2896 {0x1D08,0x1D08,0x1D08}, {0x1D09,0x1D09,0x1D09}, /* 1D08 */
2897 {0x1D0A,0x1D0A,0x1D0A}, {0x1D0B,0x1D0B,0x1D0B}, /* 1D0A */
2898 {0x1D0C,0x1D0C,0x1D0C}, {0x1D0D,0x1D0D,0x1D0D}, /* 1D0C */
2899 {0x1D0E,0x1D0E,0x1D0E}, {0x1D0F,0x1D0F,0x1D0F}, /* 1D0E */
2900 {0x1D10,0x1D10,0x1D10}, {0x1D11,0x1D11,0x1D11}, /* 1D10 */
2901 {0x1D12,0x1D12,0x1D12}, {0x1D13,0x1D13,0x1D13}, /* 1D12 */
2902 {0x1D14,0x1D14,0x1D14}, {0x1D15,0x1D15,0x1D15}, /* 1D14 */
2903 {0x1D16,0x1D16,0x1D16}, {0x1D17,0x1D17,0x1D17}, /* 1D16 */
2904 {0x1D18,0x1D18,0x1D18}, {0x1D19,0x1D19,0x1D19}, /* 1D18 */
2905 {0x1D1A,0x1D1A,0x1D1A}, {0x1D1B,0x1D1B,0x1D1B}, /* 1D1A */
2906 {0x1D1C,0x1D1C,0x1D1C}, {0x1D1D,0x1D1D,0x1D1D}, /* 1D1C */
2907 {0x1D1E,0x1D1E,0x1D1E}, {0x1D1F,0x1D1F,0x1D1F}, /* 1D1E */
2908 {0x1D20,0x1D20,0x1D20}, {0x1D21,0x1D21,0x1D21}, /* 1D20 */
2909 {0x1D22,0x1D22,0x1D22}, {0x1D23,0x1D23,0x1D23}, /* 1D22 */
2910 {0x1D24,0x1D24,0x1D24}, {0x1D25,0x1D25,0x1D25}, /* 1D24 */
2911 {0x1D26,0x1D26,0x1D26}, {0x1D27,0x1D27,0x1D27}, /* 1D26 */
2912 {0x1D28,0x1D28,0x1D28}, {0x1D29,0x1D29,0x1D29}, /* 1D28 */
2913 {0x1D2A,0x1D2A,0x1D2A}, {0x1D2B,0x1D2B,0x1D2B}, /* 1D2A */
2914 {0x1D2C,0x1D2C,0x1D2C}, {0x1D2D,0x1D2D,0x1D2D}, /* 1D2C */
2915 {0x1D2E,0x1D2E,0x1D2E}, {0x1D2F,0x1D2F,0x1D2F}, /* 1D2E */
2916 {0x1D30,0x1D30,0x1D30}, {0x1D31,0x1D31,0x1D31}, /* 1D30 */
2917 {0x1D32,0x1D32,0x1D32}, {0x1D33,0x1D33,0x1D33}, /* 1D32 */
2918 {0x1D34,0x1D34,0x1D34}, {0x1D35,0x1D35,0x1D35}, /* 1D34 */
2919 {0x1D36,0x1D36,0x1D36}, {0x1D37,0x1D37,0x1D37}, /* 1D36 */
2920 {0x1D38,0x1D38,0x1D38}, {0x1D39,0x1D39,0x1D39}, /* 1D38 */
2921 {0x1D3A,0x1D3A,0x1D3A}, {0x1D3B,0x1D3B,0x1D3B}, /* 1D3A */
2922 {0x1D3C,0x1D3C,0x1D3C}, {0x1D3D,0x1D3D,0x1D3D}, /* 1D3C */
2923 {0x1D3E,0x1D3E,0x1D3E}, {0x1D3F,0x1D3F,0x1D3F}, /* 1D3E */
2924 {0x1D40,0x1D40,0x1D40}, {0x1D41,0x1D41,0x1D41}, /* 1D40 */
2925 {0x1D42,0x1D42,0x1D42}, {0x1D43,0x1D43,0x1D43}, /* 1D42 */
2926 {0x1D44,0x1D44,0x1D44}, {0x1D45,0x1D45,0x1D45}, /* 1D44 */
2927 {0x1D46,0x1D46,0x1D46}, {0x1D47,0x1D47,0x1D47}, /* 1D46 */
2928 {0x1D48,0x1D48,0x1D48}, {0x1D49,0x1D49,0x1D49}, /* 1D48 */
2929 {0x1D4A,0x1D4A,0x1D4A}, {0x1D4B,0x1D4B,0x1D4B}, /* 1D4A */
2930 {0x1D4C,0x1D4C,0x1D4C}, {0x1D4D,0x1D4D,0x1D4D}, /* 1D4C */
2931 {0x1D4E,0x1D4E,0x1D4E}, {0x1D4F,0x1D4F,0x1D4F}, /* 1D4E */
2932 {0x1D50,0x1D50,0x1D50}, {0x1D51,0x1D51,0x1D51}, /* 1D50 */
2933 {0x1D52,0x1D52,0x1D52}, {0x1D53,0x1D53,0x1D53}, /* 1D52 */
2934 {0x1D54,0x1D54,0x1D54}, {0x1D55,0x1D55,0x1D55}, /* 1D54 */
2935 {0x1D56,0x1D56,0x1D56}, {0x1D57,0x1D57,0x1D57}, /* 1D56 */
2936 {0x1D58,0x1D58,0x1D58}, {0x1D59,0x1D59,0x1D59}, /* 1D58 */
2937 {0x1D5A,0x1D5A,0x1D5A}, {0x1D5B,0x1D5B,0x1D5B}, /* 1D5A */
2938 {0x1D5C,0x1D5C,0x1D5C}, {0x1D5D,0x1D5D,0x1D5D}, /* 1D5C */
2939 {0x1D5E,0x1D5E,0x1D5E}, {0x1D5F,0x1D5F,0x1D5F}, /* 1D5E */
2940 {0x1D60,0x1D60,0x1D60}, {0x1D61,0x1D61,0x1D61}, /* 1D60 */
2941 {0x1D62,0x1D62,0x1D62}, {0x1D63,0x1D63,0x1D63}, /* 1D62 */
2942 {0x1D64,0x1D64,0x1D64}, {0x1D65,0x1D65,0x1D65}, /* 1D64 */
2943 {0x1D66,0x1D66,0x1D66}, {0x1D67,0x1D67,0x1D67}, /* 1D66 */
2944 {0x1D68,0x1D68,0x1D68}, {0x1D69,0x1D69,0x1D69}, /* 1D68 */
2945 {0x1D6A,0x1D6A,0x1D6A}, {0x1D6B,0x1D6B,0x1D6B}, /* 1D6A */
2946 {0x1D6C,0x1D6C,0x1D6C}, {0x1D6D,0x1D6D,0x1D6D}, /* 1D6C */
2947 {0x1D6E,0x1D6E,0x1D6E}, {0x1D6F,0x1D6F,0x1D6F}, /* 1D6E */
2948 {0x1D70,0x1D70,0x1D70}, {0x1D71,0x1D71,0x1D71}, /* 1D70 */
2949 {0x1D72,0x1D72,0x1D72}, {0x1D73,0x1D73,0x1D73}, /* 1D72 */
2950 {0x1D74,0x1D74,0x1D74}, {0x1D75,0x1D75,0x1D75}, /* 1D74 */
2951 {0x1D76,0x1D76,0x1D76}, {0x1D77,0x1D77,0x1D77}, /* 1D76 */
2952 {0x1D78,0x1D78,0x1D78}, {0xA77D,0x1D79,0xA77D}, /* 1D78 */
2953 {0x1D7A,0x1D7A,0x1D7A}, {0x1D7B,0x1D7B,0x1D7B}, /* 1D7A */
2954 {0x1D7C,0x1D7C,0x1D7C}, {0x2C63,0x1D7D,0x2C63}, /* 1D7C */
2955 {0x1D7E,0x1D7E,0x1D7E}, {0x1D7F,0x1D7F,0x1D7F}, /* 1D7E */
2956 {0x1D80,0x1D80,0x1D80}, {0x1D81,0x1D81,0x1D81}, /* 1D80 */
2957 {0x1D82,0x1D82,0x1D82}, {0x1D83,0x1D83,0x1D83}, /* 1D82 */
2958 {0x1D84,0x1D84,0x1D84}, {0x1D85,0x1D85,0x1D85}, /* 1D84 */
2959 {0x1D86,0x1D86,0x1D86}, {0x1D87,0x1D87,0x1D87}, /* 1D86 */
2960 {0x1D88,0x1D88,0x1D88}, {0x1D89,0x1D89,0x1D89}, /* 1D88 */
2961 {0x1D8A,0x1D8A,0x1D8A}, {0x1D8B,0x1D8B,0x1D8B}, /* 1D8A */
2962 {0x1D8C,0x1D8C,0x1D8C}, {0x1D8D,0x1D8D,0x1D8D}, /* 1D8C */
2963 {0x1D8E,0x1D8E,0x1D8E}, {0x1D8F,0x1D8F,0x1D8F}, /* 1D8E */
2964 {0x1D90,0x1D90,0x1D90}, {0x1D91,0x1D91,0x1D91}, /* 1D90 */
2965 {0x1D92,0x1D92,0x1D92}, {0x1D93,0x1D93,0x1D93}, /* 1D92 */
2966 {0x1D94,0x1D94,0x1D94}, {0x1D95,0x1D95,0x1D95}, /* 1D94 */
2967 {0x1D96,0x1D96,0x1D96}, {0x1D97,0x1D97,0x1D97}, /* 1D96 */
2968 {0x1D98,0x1D98,0x1D98}, {0x1D99,0x1D99,0x1D99}, /* 1D98 */
2969 {0x1D9A,0x1D9A,0x1D9A}, {0x1D9B,0x1D9B,0x1D9B}, /* 1D9A */
2970 {0x1D9C,0x1D9C,0x1D9C}, {0x1D9D,0x1D9D,0x1D9D}, /* 1D9C */
2971 {0x1D9E,0x1D9E,0x1D9E}, {0x1D9F,0x1D9F,0x1D9F}, /* 1D9E */
2972 {0x1DA0,0x1DA0,0x1DA0}, {0x1DA1,0x1DA1,0x1DA1}, /* 1DA0 */
2973 {0x1DA2,0x1DA2,0x1DA2}, {0x1DA3,0x1DA3,0x1DA3}, /* 1DA2 */
2974 {0x1DA4,0x1DA4,0x1DA4}, {0x1DA5,0x1DA5,0x1DA5}, /* 1DA4 */
2975 {0x1DA6,0x1DA6,0x1DA6}, {0x1DA7,0x1DA7,0x1DA7}, /* 1DA6 */
2976 {0x1DA8,0x1DA8,0x1DA8}, {0x1DA9,0x1DA9,0x1DA9}, /* 1DA8 */
2977 {0x1DAA,0x1DAA,0x1DAA}, {0x1DAB,0x1DAB,0x1DAB}, /* 1DAA */
2978 {0x1DAC,0x1DAC,0x1DAC}, {0x1DAD,0x1DAD,0x1DAD}, /* 1DAC */
2979 {0x1DAE,0x1DAE,0x1DAE}, {0x1DAF,0x1DAF,0x1DAF}, /* 1DAE */
2980 {0x1DB0,0x1DB0,0x1DB0}, {0x1DB1,0x1DB1,0x1DB1}, /* 1DB0 */
2981 {0x1DB2,0x1DB2,0x1DB2}, {0x1DB3,0x1DB3,0x1DB3}, /* 1DB2 */
2982 {0x1DB4,0x1DB4,0x1DB4}, {0x1DB5,0x1DB5,0x1DB5}, /* 1DB4 */
2983 {0x1DB6,0x1DB6,0x1DB6}, {0x1DB7,0x1DB7,0x1DB7}, /* 1DB6 */
2984 {0x1DB8,0x1DB8,0x1DB8}, {0x1DB9,0x1DB9,0x1DB9}, /* 1DB8 */
2985 {0x1DBA,0x1DBA,0x1DBA}, {0x1DBB,0x1DBB,0x1DBB}, /* 1DBA */
2986 {0x1DBC,0x1DBC,0x1DBC}, {0x1DBD,0x1DBD,0x1DBD}, /* 1DBC */
2987 {0x1DBE,0x1DBE,0x1DBE}, {0x1DBF,0x1DBF,0x1DBF}, /* 1DBE */
2988 {0x1DC0,0x1DC0,0x1DC0}, {0x1DC1,0x1DC1,0x1DC1}, /* 1DC0 */
2989 {0x1DC2,0x1DC2,0x1DC2}, {0x1DC3,0x1DC3,0x1DC3}, /* 1DC2 */
2990 {0x1DC4,0x1DC4,0x1DC4}, {0x1DC5,0x1DC5,0x1DC5}, /* 1DC4 */
2991 {0x1DC6,0x1DC6,0x1DC6}, {0x1DC7,0x1DC7,0x1DC7}, /* 1DC6 */
2992 {0x1DC8,0x1DC8,0x1DC8}, {0x1DC9,0x1DC9,0x1DC9}, /* 1DC8 */
2993 {0x1DCA,0x1DCA,0x1DCA}, {0x1DCB,0x1DCB,0x1DCB}, /* 1DCA */
2994 {0x1DCC,0x1DCC,0x1DCC}, {0x1DCD,0x1DCD,0x1DCD}, /* 1DCC */
2995 {0x1DCE,0x1DCE,0x1DCE}, {0x1DCF,0x1DCF,0x1DCF}, /* 1DCE */
2996 {0x1DD0,0x1DD0,0x1DD0}, {0x1DD1,0x1DD1,0x1DD1}, /* 1DD0 */
2997 {0x1DD2,0x1DD2,0x1DD2}, {0x1DD3,0x1DD3,0x1DD3}, /* 1DD2 */
2998 {0x1DD4,0x1DD4,0x1DD4}, {0x1DD5,0x1DD5,0x1DD5}, /* 1DD4 */
2999 {0x1DD6,0x1DD6,0x1DD6}, {0x1DD7,0x1DD7,0x1DD7}, /* 1DD6 */
3000 {0x1DD8,0x1DD8,0x1DD8}, {0x1DD9,0x1DD9,0x1DD9}, /* 1DD8 */
3001 {0x1DDA,0x1DDA,0x1DDA}, {0x1DDB,0x1DDB,0x1DDB}, /* 1DDA */
3002 {0x1DDC,0x1DDC,0x1DDC}, {0x1DDD,0x1DDD,0x1DDD}, /* 1DDC */
3003 {0x1DDE,0x1DDE,0x1DDE}, {0x1DDF,0x1DDF,0x1DDF}, /* 1DDE */
3004 {0x1DE0,0x1DE0,0x1DE0}, {0x1DE1,0x1DE1,0x1DE1}, /* 1DE0 */
3005 {0x1DE2,0x1DE2,0x1DE2}, {0x1DE3,0x1DE3,0x1DE3}, /* 1DE2 */
3006 {0x1DE4,0x1DE4,0x1DE4}, {0x1DE5,0x1DE5,0x1DE5}, /* 1DE4 */
3007 {0x1DE6,0x1DE6,0x1DE6}, {0x1DE7,0x1DE7,0x1DE7}, /* 1DE6 */
3008 {0x1DE8,0x1DE8,0x1DE8}, {0x1DE9,0x1DE9,0x1DE9}, /* 1DE8 */
3009 {0x1DEA,0x1DEA,0x1DEA}, {0x1DEB,0x1DEB,0x1DEB}, /* 1DEA */
3010 {0x1DEC,0x1DEC,0x1DEC}, {0x1DED,0x1DED,0x1DED}, /* 1DEC */
3011 {0x1DEE,0x1DEE,0x1DEE}, {0x1DEF,0x1DEF,0x1DEF}, /* 1DEE */
3012 {0x1DF0,0x1DF0,0x1DF0}, {0x1DF1,0x1DF1,0x1DF1}, /* 1DF0 */
3013 {0x1DF2,0x1DF2,0x1DF2}, {0x1DF3,0x1DF3,0x1DF3}, /* 1DF2 */
3014 {0x1DF4,0x1DF4,0x1DF4}, {0x1DF5,0x1DF5,0x1DF5}, /* 1DF4 */
3015 {0x1DF6,0x1DF6,0x1DF6}, {0x1DF7,0x1DF7,0x1DF7}, /* 1DF6 */
3016 {0x1DF8,0x1DF8,0x1DF8}, {0x1DF9,0x1DF9,0x1DF9}, /* 1DF8 */
3017 {0x1DFA,0x1DFA,0x1DFA}, {0x1DFB,0x1DFB,0x1DFB}, /* 1DFA */
3018 {0x1DFC,0x1DFC,0x1DFC}, {0x1DFD,0x1DFD,0x1DFD}, /* 1DFC */
3019 {0x1DFE,0x1DFE,0x1DFE}, {0x1DFF,0x1DFF,0x1DFF} /* 1DFE */
3020 };
3021
3022 static MY_UNICASE_CHARACTER u520p1E[]={
3023 {0x1E00,0x1E01,0x0041}, {0x1E00,0x1E01,0x0041}, /* 1E00 */
3024 {0x1E02,0x1E03,0x0042}, {0x1E02,0x1E03,0x0042}, /* 1E02 */
3025 {0x1E04,0x1E05,0x0042}, {0x1E04,0x1E05,0x0042}, /* 1E04 */
3026 {0x1E06,0x1E07,0x0042}, {0x1E06,0x1E07,0x0042}, /* 1E06 */
3027 {0x1E08,0x1E09,0x0043}, {0x1E08,0x1E09,0x0043}, /* 1E08 */
3028 {0x1E0A,0x1E0B,0x0044}, {0x1E0A,0x1E0B,0x0044}, /* 1E0A */
3029 {0x1E0C,0x1E0D,0x0044}, {0x1E0C,0x1E0D,0x0044}, /* 1E0C */
3030 {0x1E0E,0x1E0F,0x0044}, {0x1E0E,0x1E0F,0x0044}, /* 1E0E */
3031 {0x1E10,0x1E11,0x0044}, {0x1E10,0x1E11,0x0044}, /* 1E10 */
3032 {0x1E12,0x1E13,0x0044}, {0x1E12,0x1E13,0x0044}, /* 1E12 */
3033 {0x1E14,0x1E15,0x0045}, {0x1E14,0x1E15,0x0045}, /* 1E14 */
3034 {0x1E16,0x1E17,0x0045}, {0x1E16,0x1E17,0x0045}, /* 1E16 */
3035 {0x1E18,0x1E19,0x0045}, {0x1E18,0x1E19,0x0045}, /* 1E18 */
3036 {0x1E1A,0x1E1B,0x0045}, {0x1E1A,0x1E1B,0x0045}, /* 1E1A */
3037 {0x1E1C,0x1E1D,0x0045}, {0x1E1C,0x1E1D,0x0045}, /* 1E1C */
3038 {0x1E1E,0x1E1F,0x0046}, {0x1E1E,0x1E1F,0x0046}, /* 1E1E */
3039 {0x1E20,0x1E21,0x0047}, {0x1E20,0x1E21,0x0047}, /* 1E20 */
3040 {0x1E22,0x1E23,0x0048}, {0x1E22,0x1E23,0x0048}, /* 1E22 */
3041 {0x1E24,0x1E25,0x0048}, {0x1E24,0x1E25,0x0048}, /* 1E24 */
3042 {0x1E26,0x1E27,0x0048}, {0x1E26,0x1E27,0x0048}, /* 1E26 */
3043 {0x1E28,0x1E29,0x0048}, {0x1E28,0x1E29,0x0048}, /* 1E28 */
3044 {0x1E2A,0x1E2B,0x0048}, {0x1E2A,0x1E2B,0x0048}, /* 1E2A */
3045 {0x1E2C,0x1E2D,0x0049}, {0x1E2C,0x1E2D,0x0049}, /* 1E2C */
3046 {0x1E2E,0x1E2F,0x0049}, {0x1E2E,0x1E2F,0x0049}, /* 1E2E */
3047 {0x1E30,0x1E31,0x004B}, {0x1E30,0x1E31,0x004B}, /* 1E30 */
3048 {0x1E32,0x1E33,0x004B}, {0x1E32,0x1E33,0x004B}, /* 1E32 */
3049 {0x1E34,0x1E35,0x004B}, {0x1E34,0x1E35,0x004B}, /* 1E34 */
3050 {0x1E36,0x1E37,0x004C}, {0x1E36,0x1E37,0x004C}, /* 1E36 */
3051 {0x1E38,0x1E39,0x004C}, {0x1E38,0x1E39,0x004C}, /* 1E38 */
3052 {0x1E3A,0x1E3B,0x004C}, {0x1E3A,0x1E3B,0x004C}, /* 1E3A */
3053 {0x1E3C,0x1E3D,0x004C}, {0x1E3C,0x1E3D,0x004C}, /* 1E3C */
3054 {0x1E3E,0x1E3F,0x004D}, {0x1E3E,0x1E3F,0x004D}, /* 1E3E */
3055 {0x1E40,0x1E41,0x004D}, {0x1E40,0x1E41,0x004D}, /* 1E40 */
3056 {0x1E42,0x1E43,0x004D}, {0x1E42,0x1E43,0x004D}, /* 1E42 */
3057 {0x1E44,0x1E45,0x004E}, {0x1E44,0x1E45,0x004E}, /* 1E44 */
3058 {0x1E46,0x1E47,0x004E}, {0x1E46,0x1E47,0x004E}, /* 1E46 */
3059 {0x1E48,0x1E49,0x004E}, {0x1E48,0x1E49,0x004E}, /* 1E48 */
3060 {0x1E4A,0x1E4B,0x004E}, {0x1E4A,0x1E4B,0x004E}, /* 1E4A */
3061 {0x1E4C,0x1E4D,0x004F}, {0x1E4C,0x1E4D,0x004F}, /* 1E4C */
3062 {0x1E4E,0x1E4F,0x004F}, {0x1E4E,0x1E4F,0x004F}, /* 1E4E */
3063 {0x1E50,0x1E51,0x004F}, {0x1E50,0x1E51,0x004F}, /* 1E50 */
3064 {0x1E52,0x1E53,0x004F}, {0x1E52,0x1E53,0x004F}, /* 1E52 */
3065 {0x1E54,0x1E55,0x0050}, {0x1E54,0x1E55,0x0050}, /* 1E54 */
3066 {0x1E56,0x1E57,0x0050}, {0x1E56,0x1E57,0x0050}, /* 1E56 */
3067 {0x1E58,0x1E59,0x0052}, {0x1E58,0x1E59,0x0052}, /* 1E58 */
3068 {0x1E5A,0x1E5B,0x0052}, {0x1E5A,0x1E5B,0x0052}, /* 1E5A */
3069 {0x1E5C,0x1E5D,0x0052}, {0x1E5C,0x1E5D,0x0052}, /* 1E5C */
3070 {0x1E5E,0x1E5F,0x0052}, {0x1E5E,0x1E5F,0x0052}, /* 1E5E */
3071 {0x1E60,0x1E61,0x0053}, {0x1E60,0x1E61,0x0053}, /* 1E60 */
3072 {0x1E62,0x1E63,0x0053}, {0x1E62,0x1E63,0x0053}, /* 1E62 */
3073 {0x1E64,0x1E65,0x0053}, {0x1E64,0x1E65,0x0053}, /* 1E64 */
3074 {0x1E66,0x1E67,0x0053}, {0x1E66,0x1E67,0x0053}, /* 1E66 */
3075 {0x1E68,0x1E69,0x0053}, {0x1E68,0x1E69,0x0053}, /* 1E68 */
3076 {0x1E6A,0x1E6B,0x0054}, {0x1E6A,0x1E6B,0x0054}, /* 1E6A */
3077 {0x1E6C,0x1E6D,0x0054}, {0x1E6C,0x1E6D,0x0054}, /* 1E6C */
3078 {0x1E6E,0x1E6F,0x0054}, {0x1E6E,0x1E6F,0x0054}, /* 1E6E */
3079 {0x1E70,0x1E71,0x0054}, {0x1E70,0x1E71,0x0054}, /* 1E70 */
3080 {0x1E72,0x1E73,0x0055}, {0x1E72,0x1E73,0x0055}, /* 1E72 */
3081 {0x1E74,0x1E75,0x0055}, {0x1E74,0x1E75,0x0055}, /* 1E74 */
3082 {0x1E76,0x1E77,0x0055}, {0x1E76,0x1E77,0x0055}, /* 1E76 */
3083 {0x1E78,0x1E79,0x0055}, {0x1E78,0x1E79,0x0055}, /* 1E78 */
3084 {0x1E7A,0x1E7B,0x0055}, {0x1E7A,0x1E7B,0x0055}, /* 1E7A */
3085 {0x1E7C,0x1E7D,0x0056}, {0x1E7C,0x1E7D,0x0056}, /* 1E7C */
3086 {0x1E7E,0x1E7F,0x0056}, {0x1E7E,0x1E7F,0x0056}, /* 1E7E */
3087 {0x1E80,0x1E81,0x0057}, {0x1E80,0x1E81,0x0057}, /* 1E80 */
3088 {0x1E82,0x1E83,0x0057}, {0x1E82,0x1E83,0x0057}, /* 1E82 */
3089 {0x1E84,0x1E85,0x0057}, {0x1E84,0x1E85,0x0057}, /* 1E84 */
3090 {0x1E86,0x1E87,0x0057}, {0x1E86,0x1E87,0x0057}, /* 1E86 */
3091 {0x1E88,0x1E89,0x0057}, {0x1E88,0x1E89,0x0057}, /* 1E88 */
3092 {0x1E8A,0x1E8B,0x0058}, {0x1E8A,0x1E8B,0x0058}, /* 1E8A */
3093 {0x1E8C,0x1E8D,0x0058}, {0x1E8C,0x1E8D,0x0058}, /* 1E8C */
3094 {0x1E8E,0x1E8F,0x0059}, {0x1E8E,0x1E8F,0x0059}, /* 1E8E */
3095 {0x1E90,0x1E91,0x005A}, {0x1E90,0x1E91,0x005A}, /* 1E90 */
3096 {0x1E92,0x1E93,0x005A}, {0x1E92,0x1E93,0x005A}, /* 1E92 */
3097 {0x1E94,0x1E95,0x005A}, {0x1E94,0x1E95,0x005A}, /* 1E94 */
3098 {0x1E96,0x1E96,0x0048}, {0x1E97,0x1E97,0x0054}, /* 1E96 */
3099 {0x1E98,0x1E98,0x0057}, {0x1E99,0x1E99,0x0059}, /* 1E98 */
3100 {0x1E9A,0x1E9A,0x1E9A}, {0x1E60,0x1E9B,0x0053}, /* 1E9A */
3101 {0x1E9C,0x1E9C,0x1E9C}, {0x1E9D,0x1E9D,0x1E9D}, /* 1E9C */
3102 {0x1E9E,0x00DF,0x1E9E}, {0x1E9F,0x1E9F,0x1E9F}, /* 1E9E */
3103 {0x1EA0,0x1EA1,0x0041}, {0x1EA0,0x1EA1,0x0041}, /* 1EA0 */
3104 {0x1EA2,0x1EA3,0x0041}, {0x1EA2,0x1EA3,0x0041}, /* 1EA2 */
3105 {0x1EA4,0x1EA5,0x0041}, {0x1EA4,0x1EA5,0x0041}, /* 1EA4 */
3106 {0x1EA6,0x1EA7,0x0041}, {0x1EA6,0x1EA7,0x0041}, /* 1EA6 */
3107 {0x1EA8,0x1EA9,0x0041}, {0x1EA8,0x1EA9,0x0041}, /* 1EA8 */
3108 {0x1EAA,0x1EAB,0x0041}, {0x1EAA,0x1EAB,0x0041}, /* 1EAA */
3109 {0x1EAC,0x1EAD,0x0041}, {0x1EAC,0x1EAD,0x0041}, /* 1EAC */
3110 {0x1EAE,0x1EAF,0x0041}, {0x1EAE,0x1EAF,0x0041}, /* 1EAE */
3111 {0x1EB0,0x1EB1,0x0041}, {0x1EB0,0x1EB1,0x0041}, /* 1EB0 */
3112 {0x1EB2,0x1EB3,0x0041}, {0x1EB2,0x1EB3,0x0041}, /* 1EB2 */
3113 {0x1EB4,0x1EB5,0x0041}, {0x1EB4,0x1EB5,0x0041}, /* 1EB4 */
3114 {0x1EB6,0x1EB7,0x0041}, {0x1EB6,0x1EB7,0x0041}, /* 1EB6 */
3115 {0x1EB8,0x1EB9,0x0045}, {0x1EB8,0x1EB9,0x0045}, /* 1EB8 */
3116 {0x1EBA,0x1EBB,0x0045}, {0x1EBA,0x1EBB,0x0045}, /* 1EBA */
3117 {0x1EBC,0x1EBD,0x0045}, {0x1EBC,0x1EBD,0x0045}, /* 1EBC */
3118 {0x1EBE,0x1EBF,0x0045}, {0x1EBE,0x1EBF,0x0045}, /* 1EBE */
3119 {0x1EC0,0x1EC1,0x0045}, {0x1EC0,0x1EC1,0x0045}, /* 1EC0 */
3120 {0x1EC2,0x1EC3,0x0045}, {0x1EC2,0x1EC3,0x0045}, /* 1EC2 */
3121 {0x1EC4,0x1EC5,0x0045}, {0x1EC4,0x1EC5,0x0045}, /* 1EC4 */
3122 {0x1EC6,0x1EC7,0x0045}, {0x1EC6,0x1EC7,0x0045}, /* 1EC6 */
3123 {0x1EC8,0x1EC9,0x0049}, {0x1EC8,0x1EC9,0x0049}, /* 1EC8 */
3124 {0x1ECA,0x1ECB,0x0049}, {0x1ECA,0x1ECB,0x0049}, /* 1ECA */
3125 {0x1ECC,0x1ECD,0x004F}, {0x1ECC,0x1ECD,0x004F}, /* 1ECC */
3126 {0x1ECE,0x1ECF,0x004F}, {0x1ECE,0x1ECF,0x004F}, /* 1ECE */
3127 {0x1ED0,0x1ED1,0x004F}, {0x1ED0,0x1ED1,0x004F}, /* 1ED0 */
3128 {0x1ED2,0x1ED3,0x004F}, {0x1ED2,0x1ED3,0x004F}, /* 1ED2 */
3129 {0x1ED4,0x1ED5,0x004F}, {0x1ED4,0x1ED5,0x004F}, /* 1ED4 */
3130 {0x1ED6,0x1ED7,0x004F}, {0x1ED6,0x1ED7,0x004F}, /* 1ED6 */
3131 {0x1ED8,0x1ED9,0x004F}, {0x1ED8,0x1ED9,0x004F}, /* 1ED8 */
3132 {0x1EDA,0x1EDB,0x004F}, {0x1EDA,0x1EDB,0x004F}, /* 1EDA */
3133 {0x1EDC,0x1EDD,0x004F}, {0x1EDC,0x1EDD,0x004F}, /* 1EDC */
3134 {0x1EDE,0x1EDF,0x004F}, {0x1EDE,0x1EDF,0x004F}, /* 1EDE */
3135 {0x1EE0,0x1EE1,0x004F}, {0x1EE0,0x1EE1,0x004F}, /* 1EE0 */
3136 {0x1EE2,0x1EE3,0x004F}, {0x1EE2,0x1EE3,0x004F}, /* 1EE2 */
3137 {0x1EE4,0x1EE5,0x0055}, {0x1EE4,0x1EE5,0x0055}, /* 1EE4 */
3138 {0x1EE6,0x1EE7,0x0055}, {0x1EE6,0x1EE7,0x0055}, /* 1EE6 */
3139 {0x1EE8,0x1EE9,0x0055}, {0x1EE8,0x1EE9,0x0055}, /* 1EE8 */
3140 {0x1EEA,0x1EEB,0x0055}, {0x1EEA,0x1EEB,0x0055}, /* 1EEA */
3141 {0x1EEC,0x1EED,0x0055}, {0x1EEC,0x1EED,0x0055}, /* 1EEC */
3142 {0x1EEE,0x1EEF,0x0055}, {0x1EEE,0x1EEF,0x0055}, /* 1EEE */
3143 {0x1EF0,0x1EF1,0x0055}, {0x1EF0,0x1EF1,0x0055}, /* 1EF0 */
3144 {0x1EF2,0x1EF3,0x0059}, {0x1EF2,0x1EF3,0x0059}, /* 1EF2 */
3145 {0x1EF4,0x1EF5,0x0059}, {0x1EF4,0x1EF5,0x0059}, /* 1EF4 */
3146 {0x1EF6,0x1EF7,0x0059}, {0x1EF6,0x1EF7,0x0059}, /* 1EF6 */
3147 {0x1EF8,0x1EF9,0x0059}, {0x1EF8,0x1EF9,0x0059}, /* 1EF8 */
3148 {0x1EFA,0x1EFB,0x1EFA}, {0x1EFA,0x1EFB,0x1EFA}, /* 1EFA */
3149 {0x1EFC,0x1EFD,0x1EFC}, {0x1EFC,0x1EFD,0x1EFC}, /* 1EFC */
3150 {0x1EFE,0x1EFF,0x1EFE}, {0x1EFE,0x1EFF,0x1EFE} /* 1EFE */
3151 };
3152
3153 static MY_UNICASE_CHARACTER u520p1F[]={
3154 {0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391}, /* 1F00 */
3155 {0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391}, /* 1F02 */
3156 {0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391}, /* 1F04 */
3157 {0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391}, /* 1F06 */
3158 {0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391}, /* 1F08 */
3159 {0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391}, /* 1F0A */
3160 {0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391}, /* 1F0C */
3161 {0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391}, /* 1F0E */
3162 {0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395}, /* 1F10 */
3163 {0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395}, /* 1F12 */
3164 {0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395}, /* 1F14 */
3165 {0x1F16,0x1F16,0x1F16}, {0x1F17,0x1F17,0x1F17}, /* 1F16 */
3166 {0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395}, /* 1F18 */
3167 {0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395}, /* 1F1A */
3168 {0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395}, /* 1F1C */
3169 {0x1F1E,0x1F1E,0x1F1E}, {0x1F1F,0x1F1F,0x1F1F}, /* 1F1E */
3170 {0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397}, /* 1F20 */
3171 {0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397}, /* 1F22 */
3172 {0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397}, /* 1F24 */
3173 {0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397}, /* 1F26 */
3174 {0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397}, /* 1F28 */
3175 {0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397}, /* 1F2A */
3176 {0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397}, /* 1F2C */
3177 {0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397}, /* 1F2E */
3178 {0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399}, /* 1F30 */
3179 {0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399}, /* 1F32 */
3180 {0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399}, /* 1F34 */
3181 {0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399}, /* 1F36 */
3182 {0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399}, /* 1F38 */
3183 {0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399}, /* 1F3A */
3184 {0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399}, /* 1F3C */
3185 {0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399}, /* 1F3E */
3186 {0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F}, /* 1F40 */
3187 {0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F}, /* 1F42 */
3188 {0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F}, /* 1F44 */
3189 {0x1F46,0x1F46,0x1F46}, {0x1F47,0x1F47,0x1F47}, /* 1F46 */
3190 {0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F}, /* 1F48 */
3191 {0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F}, /* 1F4A */
3192 {0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F}, /* 1F4C */
3193 {0x1F4E,0x1F4E,0x1F4E}, {0x1F4F,0x1F4F,0x1F4F}, /* 1F4E */
3194 {0x1F50,0x1F50,0x03A5}, {0x1F59,0x1F51,0x03A5}, /* 1F50 */
3195 {0x1F52,0x1F52,0x03A5}, {0x1F5B,0x1F53,0x03A5}, /* 1F52 */
3196 {0x1F54,0x1F54,0x03A5}, {0x1F5D,0x1F55,0x03A5}, /* 1F54 */
3197 {0x1F56,0x1F56,0x03A5}, {0x1F5F,0x1F57,0x03A5}, /* 1F56 */
3198 {0x1F58,0x1F58,0x1F58}, {0x1F59,0x1F51,0x03A5}, /* 1F58 */
3199 {0x1F5A,0x1F5A,0x1F5A}, {0x1F5B,0x1F53,0x03A5}, /* 1F5A */
3200 {0x1F5C,0x1F5C,0x1F5C}, {0x1F5D,0x1F55,0x03A5}, /* 1F5C */
3201 {0x1F5E,0x1F5E,0x1F5E}, {0x1F5F,0x1F57,0x03A5}, /* 1F5E */
3202 {0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9}, /* 1F60 */
3203 {0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9}, /* 1F62 */
3204 {0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9}, /* 1F64 */
3205 {0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9}, /* 1F66 */
3206 {0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9}, /* 1F68 */
3207 {0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9}, /* 1F6A */
3208 {0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9}, /* 1F6C */
3209 {0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9}, /* 1F6E */
3210 {0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB}, /* 1F70 */
3211 {0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9}, /* 1F72 */
3212 {0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB}, /* 1F74 */
3213 {0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB}, /* 1F76 */
3214 {0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9}, /* 1F78 */
3215 {0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB}, /* 1F7A */
3216 {0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB}, /* 1F7C */
3217 {0x1F7E,0x1F7E,0x1F7E}, {0x1F7F,0x1F7F,0x1F7F}, /* 1F7E */
3218 {0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391}, /* 1F80 */
3219 {0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391}, /* 1F82 */
3220 {0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391}, /* 1F84 */
3221 {0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391}, /* 1F86 */
3222 {0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391}, /* 1F88 */
3223 {0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391}, /* 1F8A */
3224 {0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391}, /* 1F8C */
3225 {0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391}, /* 1F8E */
3226 {0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397}, /* 1F90 */
3227 {0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397}, /* 1F92 */
3228 {0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397}, /* 1F94 */
3229 {0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397}, /* 1F96 */
3230 {0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397}, /* 1F98 */
3231 {0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397}, /* 1F9A */
3232 {0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397}, /* 1F9C */
3233 {0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397}, /* 1F9E */
3234 {0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9}, /* 1FA0 */
3235 {0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9}, /* 1FA2 */
3236 {0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9}, /* 1FA4 */
3237 {0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9}, /* 1FA6 */
3238 {0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9}, /* 1FA8 */
3239 {0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9}, /* 1FAA */
3240 {0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9}, /* 1FAC */
3241 {0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9}, /* 1FAE */
3242 {0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391}, /* 1FB0 */
3243 {0x1FB2,0x1FB2,0x0391}, {0x1FBC,0x1FB3,0x0391}, /* 1FB2 */
3244 {0x1FB4,0x1FB4,0x0391}, {0x1FB5,0x1FB5,0x1FB5}, /* 1FB4 */
3245 {0x1FB6,0x1FB6,0x0391}, {0x1FB7,0x1FB7,0x0391}, /* 1FB6 */
3246 {0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391}, /* 1FB8 */
3247 {0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB}, /* 1FBA */
3248 {0x1FBC,0x1FB3,0x0391}, {0x1FBD,0x1FBD,0x1FBD}, /* 1FBC */
3249 {0x0399,0x1FBE,0x0399}, {0x1FBF,0x1FBF,0x1FBF}, /* 1FBE */
3250 {0x1FC0,0x1FC0,0x1FC0}, {0x1FC1,0x1FC1,0x1FC1}, /* 1FC0 */
3251 {0x1FC2,0x1FC2,0x0397}, {0x1FCC,0x1FC3,0x0397}, /* 1FC2 */
3252 {0x1FC4,0x1FC4,0x0397}, {0x1FC5,0x1FC5,0x1FC5}, /* 1FC4 */
3253 {0x1FC6,0x1FC6,0x0397}, {0x1FC7,0x1FC7,0x0397}, /* 1FC6 */
3254 {0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9}, /* 1FC8 */
3255 {0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB}, /* 1FCA */
3256 {0x1FCC,0x1FC3,0x0397}, {0x1FCD,0x1FCD,0x1FCD}, /* 1FCC */
3257 {0x1FCE,0x1FCE,0x1FCE}, {0x1FCF,0x1FCF,0x1FCF}, /* 1FCE */
3258 {0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399}, /* 1FD0 */
3259 {0x1FD2,0x1FD2,0x0399}, {0x1FD3,0x1FD3,0x1FD3}, /* 1FD2 */
3260 {0x1FD4,0x1FD4,0x1FD4}, {0x1FD5,0x1FD5,0x1FD5}, /* 1FD4 */
3261 {0x1FD6,0x1FD6,0x0399}, {0x1FD7,0x1FD7,0x0399}, /* 1FD6 */
3262 {0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399}, /* 1FD8 */
3263 {0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB}, /* 1FDA */
3264 {0x1FDC,0x1FDC,0x1FDC}, {0x1FDD,0x1FDD,0x1FDD}, /* 1FDC */
3265 {0x1FDE,0x1FDE,0x1FDE}, {0x1FDF,0x1FDF,0x1FDF}, /* 1FDE */
3266 {0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5}, /* 1FE0 */
3267 {0x1FE2,0x1FE2,0x03A5}, {0x1FE3,0x1FE3,0x1FE3}, /* 1FE2 */
3268 {0x1FE4,0x1FE4,0x03A1}, {0x1FEC,0x1FE5,0x03A1}, /* 1FE4 */
3269 {0x1FE6,0x1FE6,0x03A5}, {0x1FE7,0x1FE7,0x03A5}, /* 1FE6 */
3270 {0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5}, /* 1FE8 */
3271 {0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB}, /* 1FEA */
3272 {0x1FEC,0x1FE5,0x03A1}, {0x1FED,0x1FED,0x1FED}, /* 1FEC */
3273 {0x1FEE,0x1FEE,0x1FEE}, {0x1FEF,0x1FEF,0x1FEF}, /* 1FEE */
3274 {0x1FF0,0x1FF0,0x1FF0}, {0x1FF1,0x1FF1,0x1FF1}, /* 1FF0 */
3275 {0x1FF2,0x1FF2,0x03A9}, {0x1FFC,0x1FF3,0x03A9}, /* 1FF2 */
3276 {0x1FF4,0x1FF4,0x03A9}, {0x1FF5,0x1FF5,0x1FF5}, /* 1FF4 */
3277 {0x1FF6,0x1FF6,0x03A9}, {0x1FF7,0x1FF7,0x03A9}, /* 1FF6 */
3278 {0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9}, /* 1FF8 */
3279 {0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB}, /* 1FFA */
3280 {0x1FFC,0x1FF3,0x03A9}, {0x1FFD,0x1FFD,0x1FFD}, /* 1FFC */
3281 {0x1FFE,0x1FFE,0x1FFE}, {0x1FFF,0x1FFF,0x1FFF} /* 1FFE */
3282 };
3283
3284 static MY_UNICASE_CHARACTER u520p21[]={
3285 {0x2100,0x2100,0x2100}, {0x2101,0x2101,0x2101}, /* 2100 */
3286 {0x2102,0x2102,0x2102}, {0x2103,0x2103,0x2103}, /* 2102 */
3287 {0x2104,0x2104,0x2104}, {0x2105,0x2105,0x2105}, /* 2104 */
3288 {0x2106,0x2106,0x2106}, {0x2107,0x2107,0x2107}, /* 2106 */
3289 {0x2108,0x2108,0x2108}, {0x2109,0x2109,0x2109}, /* 2108 */
3290 {0x210A,0x210A,0x210A}, {0x210B,0x210B,0x210B}, /* 210A */
3291 {0x210C,0x210C,0x210C}, {0x210D,0x210D,0x210D}, /* 210C */
3292 {0x210E,0x210E,0x210E}, {0x210F,0x210F,0x210F}, /* 210E */
3293 {0x2110,0x2110,0x2110}, {0x2111,0x2111,0x2111}, /* 2110 */
3294 {0x2112,0x2112,0x2112}, {0x2113,0x2113,0x2113}, /* 2112 */
3295 {0x2114,0x2114,0x2114}, {0x2115,0x2115,0x2115}, /* 2114 */
3296 {0x2116,0x2116,0x2116}, {0x2117,0x2117,0x2117}, /* 2116 */
3297 {0x2118,0x2118,0x2118}, {0x2119,0x2119,0x2119}, /* 2118 */
3298 {0x211A,0x211A,0x211A}, {0x211B,0x211B,0x211B}, /* 211A */
3299 {0x211C,0x211C,0x211C}, {0x211D,0x211D,0x211D}, /* 211C */
3300 {0x211E,0x211E,0x211E}, {0x211F,0x211F,0x211F}, /* 211E */
3301 {0x2120,0x2120,0x2120}, {0x2121,0x2121,0x2121}, /* 2120 */
3302 {0x2122,0x2122,0x2122}, {0x2123,0x2123,0x2123}, /* 2122 */
3303 {0x2124,0x2124,0x2124}, {0x2125,0x2125,0x2125}, /* 2124 */
3304 {0x2126,0x03C9,0x2126}, {0x2127,0x2127,0x2127}, /* 2126 */
3305 {0x2128,0x2128,0x2128}, {0x2129,0x2129,0x2129}, /* 2128 */
3306 {0x212A,0x006B,0x212A}, {0x212B,0x00E5,0x212B}, /* 212A */
3307 {0x212C,0x212C,0x212C}, {0x212D,0x212D,0x212D}, /* 212C */
3308 {0x212E,0x212E,0x212E}, {0x212F,0x212F,0x212F}, /* 212E */
3309 {0x2130,0x2130,0x2130}, {0x2131,0x2131,0x2131}, /* 2130 */
3310 {0x2132,0x214E,0x2132}, {0x2133,0x2133,0x2133}, /* 2132 */
3311 {0x2134,0x2134,0x2134}, {0x2135,0x2135,0x2135}, /* 2134 */
3312 {0x2136,0x2136,0x2136}, {0x2137,0x2137,0x2137}, /* 2136 */
3313 {0x2138,0x2138,0x2138}, {0x2139,0x2139,0x2139}, /* 2138 */
3314 {0x213A,0x213A,0x213A}, {0x213B,0x213B,0x213B}, /* 213A */
3315 {0x213C,0x213C,0x213C}, {0x213D,0x213D,0x213D}, /* 213C */
3316 {0x213E,0x213E,0x213E}, {0x213F,0x213F,0x213F}, /* 213E */
3317 {0x2140,0x2140,0x2140}, {0x2141,0x2141,0x2141}, /* 2140 */
3318 {0x2142,0x2142,0x2142}, {0x2143,0x2143,0x2143}, /* 2142 */
3319 {0x2144,0x2144,0x2144}, {0x2145,0x2145,0x2145}, /* 2144 */
3320 {0x2146,0x2146,0x2146}, {0x2147,0x2147,0x2147}, /* 2146 */
3321 {0x2148,0x2148,0x2148}, {0x2149,0x2149,0x2149}, /* 2148 */
3322 {0x214A,0x214A,0x214A}, {0x214B,0x214B,0x214B}, /* 214A */
3323 {0x214C,0x214C,0x214C}, {0x214D,0x214D,0x214D}, /* 214C */
3324 {0x2132,0x214E,0x2132}, {0x214F,0x214F,0x214F}, /* 214E */
3325 {0x2150,0x2150,0x2150}, {0x2151,0x2151,0x2151}, /* 2150 */
3326 {0x2152,0x2152,0x2152}, {0x2153,0x2153,0x2153}, /* 2152 */
3327 {0x2154,0x2154,0x2154}, {0x2155,0x2155,0x2155}, /* 2154 */
3328 {0x2156,0x2156,0x2156}, {0x2157,0x2157,0x2157}, /* 2156 */
3329 {0x2158,0x2158,0x2158}, {0x2159,0x2159,0x2159}, /* 2158 */
3330 {0x215A,0x215A,0x215A}, {0x215B,0x215B,0x215B}, /* 215A */
3331 {0x215C,0x215C,0x215C}, {0x215D,0x215D,0x215D}, /* 215C */
3332 {0x215E,0x215E,0x215E}, {0x215F,0x215F,0x215F}, /* 215E */
3333 {0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161}, /* 2160 */
3334 {0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163}, /* 2162 */
3335 {0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165}, /* 2164 */
3336 {0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167}, /* 2166 */
3337 {0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169}, /* 2168 */
3338 {0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B}, /* 216A */
3339 {0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D}, /* 216C */
3340 {0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F}, /* 216E */
3341 {0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161}, /* 2170 */
3342 {0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163}, /* 2172 */
3343 {0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165}, /* 2174 */
3344 {0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167}, /* 2176 */
3345 {0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169}, /* 2178 */
3346 {0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B}, /* 217A */
3347 {0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D}, /* 217C */
3348 {0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F}, /* 217E */
3349 {0x2180,0x2180,0x2180}, {0x2181,0x2181,0x2181}, /* 2180 */
3350 {0x2182,0x2182,0x2182}, {0x2183,0x2184,0x2183}, /* 2182 */
3351 {0x2183,0x2184,0x2183}, {0x2185,0x2185,0x2185}, /* 2184 */
3352 {0x2186,0x2186,0x2186}, {0x2187,0x2187,0x2187}, /* 2186 */
3353 {0x2188,0x2188,0x2188}, {0x2189,0x2189,0x2189}, /* 2188 */
3354 {0x218A,0x218A,0x218A}, {0x218B,0x218B,0x218B}, /* 218A */
3355 {0x218C,0x218C,0x218C}, {0x218D,0x218D,0x218D}, /* 218C */
3356 {0x218E,0x218E,0x218E}, {0x218F,0x218F,0x218F}, /* 218E */
3357 {0x2190,0x2190,0x2190}, {0x2191,0x2191,0x2191}, /* 2190 */
3358 {0x2192,0x2192,0x2192}, {0x2193,0x2193,0x2193}, /* 2192 */
3359 {0x2194,0x2194,0x2194}, {0x2195,0x2195,0x2195}, /* 2194 */
3360 {0x2196,0x2196,0x2196}, {0x2197,0x2197,0x2197}, /* 2196 */
3361 {0x2198,0x2198,0x2198}, {0x2199,0x2199,0x2199}, /* 2198 */
3362 {0x219A,0x219A,0x219A}, {0x219B,0x219B,0x219B}, /* 219A */
3363 {0x219C,0x219C,0x219C}, {0x219D,0x219D,0x219D}, /* 219C */
3364 {0x219E,0x219E,0x219E}, {0x219F,0x219F,0x219F}, /* 219E */
3365 {0x21A0,0x21A0,0x21A0}, {0x21A1,0x21A1,0x21A1}, /* 21A0 */
3366 {0x21A2,0x21A2,0x21A2}, {0x21A3,0x21A3,0x21A3}, /* 21A2 */
3367 {0x21A4,0x21A4,0x21A4}, {0x21A5,0x21A5,0x21A5}, /* 21A4 */
3368 {0x21A6,0x21A6,0x21A6}, {0x21A7,0x21A7,0x21A7}, /* 21A6 */
3369 {0x21A8,0x21A8,0x21A8}, {0x21A9,0x21A9,0x21A9}, /* 21A8 */
3370 {0x21AA,0x21AA,0x21AA}, {0x21AB,0x21AB,0x21AB}, /* 21AA */
3371 {0x21AC,0x21AC,0x21AC}, {0x21AD,0x21AD,0x21AD}, /* 21AC */
3372 {0x21AE,0x21AE,0x21AE}, {0x21AF,0x21AF,0x21AF}, /* 21AE */
3373 {0x21B0,0x21B0,0x21B0}, {0x21B1,0x21B1,0x21B1}, /* 21B0 */
3374 {0x21B2,0x21B2,0x21B2}, {0x21B3,0x21B3,0x21B3}, /* 21B2 */
3375 {0x21B4,0x21B4,0x21B4}, {0x21B5,0x21B5,0x21B5}, /* 21B4 */
3376 {0x21B6,0x21B6,0x21B6}, {0x21B7,0x21B7,0x21B7}, /* 21B6 */
3377 {0x21B8,0x21B8,0x21B8}, {0x21B9,0x21B9,0x21B9}, /* 21B8 */
3378 {0x21BA,0x21BA,0x21BA}, {0x21BB,0x21BB,0x21BB}, /* 21BA */
3379 {0x21BC,0x21BC,0x21BC}, {0x21BD,0x21BD,0x21BD}, /* 21BC */
3380 {0x21BE,0x21BE,0x21BE}, {0x21BF,0x21BF,0x21BF}, /* 21BE */
3381 {0x21C0,0x21C0,0x21C0}, {0x21C1,0x21C1,0x21C1}, /* 21C0 */
3382 {0x21C2,0x21C2,0x21C2}, {0x21C3,0x21C3,0x21C3}, /* 21C2 */
3383 {0x21C4,0x21C4,0x21C4}, {0x21C5,0x21C5,0x21C5}, /* 21C4 */
3384 {0x21C6,0x21C6,0x21C6}, {0x21C7,0x21C7,0x21C7}, /* 21C6 */
3385 {0x21C8,0x21C8,0x21C8}, {0x21C9,0x21C9,0x21C9}, /* 21C8 */
3386 {0x21CA,0x21CA,0x21CA}, {0x21CB,0x21CB,0x21CB}, /* 21CA */
3387 {0x21CC,0x21CC,0x21CC}, {0x21CD,0x21CD,0x21CD}, /* 21CC */
3388 {0x21CE,0x21CE,0x21CE}, {0x21CF,0x21CF,0x21CF}, /* 21CE */
3389 {0x21D0,0x21D0,0x21D0}, {0x21D1,0x21D1,0x21D1}, /* 21D0 */
3390 {0x21D2,0x21D2,0x21D2}, {0x21D3,0x21D3,0x21D3}, /* 21D2 */
3391 {0x21D4,0x21D4,0x21D4}, {0x21D5,0x21D5,0x21D5}, /* 21D4 */
3392 {0x21D6,0x21D6,0x21D6}, {0x21D7,0x21D7,0x21D7}, /* 21D6 */
3393 {0x21D8,0x21D8,0x21D8}, {0x21D9,0x21D9,0x21D9}, /* 21D8 */
3394 {0x21DA,0x21DA,0x21DA}, {0x21DB,0x21DB,0x21DB}, /* 21DA */
3395 {0x21DC,0x21DC,0x21DC}, {0x21DD,0x21DD,0x21DD}, /* 21DC */
3396 {0x21DE,0x21DE,0x21DE}, {0x21DF,0x21DF,0x21DF}, /* 21DE */
3397 {0x21E0,0x21E0,0x21E0}, {0x21E1,0x21E1,0x21E1}, /* 21E0 */
3398 {0x21E2,0x21E2,0x21E2}, {0x21E3,0x21E3,0x21E3}, /* 21E2 */
3399 {0x21E4,0x21E4,0x21E4}, {0x21E5,0x21E5,0x21E5}, /* 21E4 */
3400 {0x21E6,0x21E6,0x21E6}, {0x21E7,0x21E7,0x21E7}, /* 21E6 */
3401 {0x21E8,0x21E8,0x21E8}, {0x21E9,0x21E9,0x21E9}, /* 21E8 */
3402 {0x21EA,0x21EA,0x21EA}, {0x21EB,0x21EB,0x21EB}, /* 21EA */
3403 {0x21EC,0x21EC,0x21EC}, {0x21ED,0x21ED,0x21ED}, /* 21EC */
3404 {0x21EE,0x21EE,0x21EE}, {0x21EF,0x21EF,0x21EF}, /* 21EE */
3405 {0x21F0,0x21F0,0x21F0}, {0x21F1,0x21F1,0x21F1}, /* 21F0 */
3406 {0x21F2,0x21F2,0x21F2}, {0x21F3,0x21F3,0x21F3}, /* 21F2 */
3407 {0x21F4,0x21F4,0x21F4}, {0x21F5,0x21F5,0x21F5}, /* 21F4 */
3408 {0x21F6,0x21F6,0x21F6}, {0x21F7,0x21F7,0x21F7}, /* 21F6 */
3409 {0x21F8,0x21F8,0x21F8}, {0x21F9,0x21F9,0x21F9}, /* 21F8 */
3410 {0x21FA,0x21FA,0x21FA}, {0x21FB,0x21FB,0x21FB}, /* 21FA */
3411 {0x21FC,0x21FC,0x21FC}, {0x21FD,0x21FD,0x21FD}, /* 21FC */
3412 {0x21FE,0x21FE,0x21FE}, {0x21FF,0x21FF,0x21FF} /* 21FE */
3413 };
3414
3415 static MY_UNICASE_CHARACTER u520p24[]={
3416 {0x2400,0x2400,0x2400}, {0x2401,0x2401,0x2401}, /* 2400 */
3417 {0x2402,0x2402,0x2402}, {0x2403,0x2403,0x2403}, /* 2402 */
3418 {0x2404,0x2404,0x2404}, {0x2405,0x2405,0x2405}, /* 2404 */
3419 {0x2406,0x2406,0x2406}, {0x2407,0x2407,0x2407}, /* 2406 */
3420 {0x2408,0x2408,0x2408}, {0x2409,0x2409,0x2409}, /* 2408 */
3421 {0x240A,0x240A,0x240A}, {0x240B,0x240B,0x240B}, /* 240A */
3422 {0x240C,0x240C,0x240C}, {0x240D,0x240D,0x240D}, /* 240C */
3423 {0x240E,0x240E,0x240E}, {0x240F,0x240F,0x240F}, /* 240E */
3424 {0x2410,0x2410,0x2410}, {0x2411,0x2411,0x2411}, /* 2410 */
3425 {0x2412,0x2412,0x2412}, {0x2413,0x2413,0x2413}, /* 2412 */
3426 {0x2414,0x2414,0x2414}, {0x2415,0x2415,0x2415}, /* 2414 */
3427 {0x2416,0x2416,0x2416}, {0x2417,0x2417,0x2417}, /* 2416 */
3428 {0x2418,0x2418,0x2418}, {0x2419,0x2419,0x2419}, /* 2418 */
3429 {0x241A,0x241A,0x241A}, {0x241B,0x241B,0x241B}, /* 241A */
3430 {0x241C,0x241C,0x241C}, {0x241D,0x241D,0x241D}, /* 241C */
3431 {0x241E,0x241E,0x241E}, {0x241F,0x241F,0x241F}, /* 241E */
3432 {0x2420,0x2420,0x2420}, {0x2421,0x2421,0x2421}, /* 2420 */
3433 {0x2422,0x2422,0x2422}, {0x2423,0x2423,0x2423}, /* 2422 */
3434 {0x2424,0x2424,0x2424}, {0x2425,0x2425,0x2425}, /* 2424 */
3435 {0x2426,0x2426,0x2426}, {0x2427,0x2427,0x2427}, /* 2426 */
3436 {0x2428,0x2428,0x2428}, {0x2429,0x2429,0x2429}, /* 2428 */
3437 {0x242A,0x242A,0x242A}, {0x242B,0x242B,0x242B}, /* 242A */
3438 {0x242C,0x242C,0x242C}, {0x242D,0x242D,0x242D}, /* 242C */
3439 {0x242E,0x242E,0x242E}, {0x242F,0x242F,0x242F}, /* 242E */
3440 {0x2430,0x2430,0x2430}, {0x2431,0x2431,0x2431}, /* 2430 */
3441 {0x2432,0x2432,0x2432}, {0x2433,0x2433,0x2433}, /* 2432 */
3442 {0x2434,0x2434,0x2434}, {0x2435,0x2435,0x2435}, /* 2434 */
3443 {0x2436,0x2436,0x2436}, {0x2437,0x2437,0x2437}, /* 2436 */
3444 {0x2438,0x2438,0x2438}, {0x2439,0x2439,0x2439}, /* 2438 */
3445 {0x243A,0x243A,0x243A}, {0x243B,0x243B,0x243B}, /* 243A */
3446 {0x243C,0x243C,0x243C}, {0x243D,0x243D,0x243D}, /* 243C */
3447 {0x243E,0x243E,0x243E}, {0x243F,0x243F,0x243F}, /* 243E */
3448 {0x2440,0x2440,0x2440}, {0x2441,0x2441,0x2441}, /* 2440 */
3449 {0x2442,0x2442,0x2442}, {0x2443,0x2443,0x2443}, /* 2442 */
3450 {0x2444,0x2444,0x2444}, {0x2445,0x2445,0x2445}, /* 2444 */
3451 {0x2446,0x2446,0x2446}, {0x2447,0x2447,0x2447}, /* 2446 */
3452 {0x2448,0x2448,0x2448}, {0x2449,0x2449,0x2449}, /* 2448 */
3453 {0x244A,0x244A,0x244A}, {0x244B,0x244B,0x244B}, /* 244A */
3454 {0x244C,0x244C,0x244C}, {0x244D,0x244D,0x244D}, /* 244C */
3455 {0x244E,0x244E,0x244E}, {0x244F,0x244F,0x244F}, /* 244E */
3456 {0x2450,0x2450,0x2450}, {0x2451,0x2451,0x2451}, /* 2450 */
3457 {0x2452,0x2452,0x2452}, {0x2453,0x2453,0x2453}, /* 2452 */
3458 {0x2454,0x2454,0x2454}, {0x2455,0x2455,0x2455}, /* 2454 */
3459 {0x2456,0x2456,0x2456}, {0x2457,0x2457,0x2457}, /* 2456 */
3460 {0x2458,0x2458,0x2458}, {0x2459,0x2459,0x2459}, /* 2458 */
3461 {0x245A,0x245A,0x245A}, {0x245B,0x245B,0x245B}, /* 245A */
3462 {0x245C,0x245C,0x245C}, {0x245D,0x245D,0x245D}, /* 245C */
3463 {0x245E,0x245E,0x245E}, {0x245F,0x245F,0x245F}, /* 245E */
3464 {0x2460,0x2460,0x2460}, {0x2461,0x2461,0x2461}, /* 2460 */
3465 {0x2462,0x2462,0x2462}, {0x2463,0x2463,0x2463}, /* 2462 */
3466 {0x2464,0x2464,0x2464}, {0x2465,0x2465,0x2465}, /* 2464 */
3467 {0x2466,0x2466,0x2466}, {0x2467,0x2467,0x2467}, /* 2466 */
3468 {0x2468,0x2468,0x2468}, {0x2469,0x2469,0x2469}, /* 2468 */
3469 {0x246A,0x246A,0x246A}, {0x246B,0x246B,0x246B}, /* 246A */
3470 {0x246C,0x246C,0x246C}, {0x246D,0x246D,0x246D}, /* 246C */
3471 {0x246E,0x246E,0x246E}, {0x246F,0x246F,0x246F}, /* 246E */
3472 {0x2470,0x2470,0x2470}, {0x2471,0x2471,0x2471}, /* 2470 */
3473 {0x2472,0x2472,0x2472}, {0x2473,0x2473,0x2473}, /* 2472 */
3474 {0x2474,0x2474,0x2474}, {0x2475,0x2475,0x2475}, /* 2474 */
3475 {0x2476,0x2476,0x2476}, {0x2477,0x2477,0x2477}, /* 2476 */
3476 {0x2478,0x2478,0x2478}, {0x2479,0x2479,0x2479}, /* 2478 */
3477 {0x247A,0x247A,0x247A}, {0x247B,0x247B,0x247B}, /* 247A */
3478 {0x247C,0x247C,0x247C}, {0x247D,0x247D,0x247D}, /* 247C */
3479 {0x247E,0x247E,0x247E}, {0x247F,0x247F,0x247F}, /* 247E */
3480 {0x2480,0x2480,0x2480}, {0x2481,0x2481,0x2481}, /* 2480 */
3481 {0x2482,0x2482,0x2482}, {0x2483,0x2483,0x2483}, /* 2482 */
3482 {0x2484,0x2484,0x2484}, {0x2485,0x2485,0x2485}, /* 2484 */
3483 {0x2486,0x2486,0x2486}, {0x2487,0x2487,0x2487}, /* 2486 */
3484 {0x2488,0x2488,0x2488}, {0x2489,0x2489,0x2489}, /* 2488 */
3485 {0x248A,0x248A,0x248A}, {0x248B,0x248B,0x248B}, /* 248A */
3486 {0x248C,0x248C,0x248C}, {0x248D,0x248D,0x248D}, /* 248C */
3487 {0x248E,0x248E,0x248E}, {0x248F,0x248F,0x248F}, /* 248E */
3488 {0x2490,0x2490,0x2490}, {0x2491,0x2491,0x2491}, /* 2490 */
3489 {0x2492,0x2492,0x2492}, {0x2493,0x2493,0x2493}, /* 2492 */
3490 {0x2494,0x2494,0x2494}, {0x2495,0x2495,0x2495}, /* 2494 */
3491 {0x2496,0x2496,0x2496}, {0x2497,0x2497,0x2497}, /* 2496 */
3492 {0x2498,0x2498,0x2498}, {0x2499,0x2499,0x2499}, /* 2498 */
3493 {0x249A,0x249A,0x249A}, {0x249B,0x249B,0x249B}, /* 249A */
3494 {0x249C,0x249C,0x249C}, {0x249D,0x249D,0x249D}, /* 249C */
3495 {0x249E,0x249E,0x249E}, {0x249F,0x249F,0x249F}, /* 249E */
3496 {0x24A0,0x24A0,0x24A0}, {0x24A1,0x24A1,0x24A1}, /* 24A0 */
3497 {0x24A2,0x24A2,0x24A2}, {0x24A3,0x24A3,0x24A3}, /* 24A2 */
3498 {0x24A4,0x24A4,0x24A4}, {0x24A5,0x24A5,0x24A5}, /* 24A4 */
3499 {0x24A6,0x24A6,0x24A6}, {0x24A7,0x24A7,0x24A7}, /* 24A6 */
3500 {0x24A8,0x24A8,0x24A8}, {0x24A9,0x24A9,0x24A9}, /* 24A8 */
3501 {0x24AA,0x24AA,0x24AA}, {0x24AB,0x24AB,0x24AB}, /* 24AA */
3502 {0x24AC,0x24AC,0x24AC}, {0x24AD,0x24AD,0x24AD}, /* 24AC */
3503 {0x24AE,0x24AE,0x24AE}, {0x24AF,0x24AF,0x24AF}, /* 24AE */
3504 {0x24B0,0x24B0,0x24B0}, {0x24B1,0x24B1,0x24B1}, /* 24B0 */
3505 {0x24B2,0x24B2,0x24B2}, {0x24B3,0x24B3,0x24B3}, /* 24B2 */
3506 {0x24B4,0x24B4,0x24B4}, {0x24B5,0x24B5,0x24B5}, /* 24B4 */
3507 {0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7}, /* 24B6 */
3508 {0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9}, /* 24B8 */
3509 {0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB}, /* 24BA */
3510 {0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD}, /* 24BC */
3511 {0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF}, /* 24BE */
3512 {0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1}, /* 24C0 */
3513 {0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3}, /* 24C2 */
3514 {0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5}, /* 24C4 */
3515 {0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7}, /* 24C6 */
3516 {0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9}, /* 24C8 */
3517 {0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB}, /* 24CA */
3518 {0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD}, /* 24CC */
3519 {0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF}, /* 24CE */
3520 {0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7}, /* 24D0 */
3521 {0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9}, /* 24D2 */
3522 {0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB}, /* 24D4 */
3523 {0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD}, /* 24D6 */
3524 {0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF}, /* 24D8 */
3525 {0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1}, /* 24DA */
3526 {0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3}, /* 24DC */
3527 {0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5}, /* 24DE */
3528 {0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7}, /* 24E0 */
3529 {0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9}, /* 24E2 */
3530 {0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB}, /* 24E4 */
3531 {0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD}, /* 24E6 */
3532 {0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF}, /* 24E8 */
3533 {0x24EA,0x24EA,0x24EA}, {0x24EB,0x24EB,0x24EB}, /* 24EA */
3534 {0x24EC,0x24EC,0x24EC}, {0x24ED,0x24ED,0x24ED}, /* 24EC */
3535 {0x24EE,0x24EE,0x24EE}, {0x24EF,0x24EF,0x24EF}, /* 24EE */
3536 {0x24F0,0x24F0,0x24F0}, {0x24F1,0x24F1,0x24F1}, /* 24F0 */
3537 {0x24F2,0x24F2,0x24F2}, {0x24F3,0x24F3,0x24F3}, /* 24F2 */
3538 {0x24F4,0x24F4,0x24F4}, {0x24F5,0x24F5,0x24F5}, /* 24F4 */
3539 {0x24F6,0x24F6,0x24F6}, {0x24F7,0x24F7,0x24F7}, /* 24F6 */
3540 {0x24F8,0x24F8,0x24F8}, {0x24F9,0x24F9,0x24F9}, /* 24F8 */
3541 {0x24FA,0x24FA,0x24FA}, {0x24FB,0x24FB,0x24FB}, /* 24FA */
3542 {0x24FC,0x24FC,0x24FC}, {0x24FD,0x24FD,0x24FD}, /* 24FC */
3543 {0x24FE,0x24FE,0x24FE}, {0x24FF,0x24FF,0x24FF} /* 24FE */
3544 };
3545
3546 static MY_UNICASE_CHARACTER u520p2C[]={
3547 {0x2C00,0x2C30,0x2C00}, {0x2C01,0x2C31,0x2C01}, /* 2C00 */
3548 {0x2C02,0x2C32,0x2C02}, {0x2C03,0x2C33,0x2C03}, /* 2C02 */
3549 {0x2C04,0x2C34,0x2C04}, {0x2C05,0x2C35,0x2C05}, /* 2C04 */
3550 {0x2C06,0x2C36,0x2C06}, {0x2C07,0x2C37,0x2C07}, /* 2C06 */
3551 {0x2C08,0x2C38,0x2C08}, {0x2C09,0x2C39,0x2C09}, /* 2C08 */
3552 {0x2C0A,0x2C3A,0x2C0A}, {0x2C0B,0x2C3B,0x2C0B}, /* 2C0A */
3553 {0x2C0C,0x2C3C,0x2C0C}, {0x2C0D,0x2C3D,0x2C0D}, /* 2C0C */
3554 {0x2C0E,0x2C3E,0x2C0E}, {0x2C0F,0x2C3F,0x2C0F}, /* 2C0E */
3555 {0x2C10,0x2C40,0x2C10}, {0x2C11,0x2C41,0x2C11}, /* 2C10 */
3556 {0x2C12,0x2C42,0x2C12}, {0x2C13,0x2C43,0x2C13}, /* 2C12 */
3557 {0x2C14,0x2C44,0x2C14}, {0x2C15,0x2C45,0x2C15}, /* 2C14 */
3558 {0x2C16,0x2C46,0x2C16}, {0x2C17,0x2C47,0x2C17}, /* 2C16 */
3559 {0x2C18,0x2C48,0x2C18}, {0x2C19,0x2C49,0x2C19}, /* 2C18 */
3560 {0x2C1A,0x2C4A,0x2C1A}, {0x2C1B,0x2C4B,0x2C1B}, /* 2C1A */
3561 {0x2C1C,0x2C4C,0x2C1C}, {0x2C1D,0x2C4D,0x2C1D}, /* 2C1C */
3562 {0x2C1E,0x2C4E,0x2C1E}, {0x2C1F,0x2C4F,0x2C1F}, /* 2C1E */
3563 {0x2C20,0x2C50,0x2C20}, {0x2C21,0x2C51,0x2C21}, /* 2C20 */
3564 {0x2C22,0x2C52,0x2C22}, {0x2C23,0x2C53,0x2C23}, /* 2C22 */
3565 {0x2C24,0x2C54,0x2C24}, {0x2C25,0x2C55,0x2C25}, /* 2C24 */
3566 {0x2C26,0x2C56,0x2C26}, {0x2C27,0x2C57,0x2C27}, /* 2C26 */
3567 {0x2C28,0x2C58,0x2C28}, {0x2C29,0x2C59,0x2C29}, /* 2C28 */
3568 {0x2C2A,0x2C5A,0x2C2A}, {0x2C2B,0x2C5B,0x2C2B}, /* 2C2A */
3569 {0x2C2C,0x2C5C,0x2C2C}, {0x2C2D,0x2C5D,0x2C2D}, /* 2C2C */
3570 {0x2C2E,0x2C5E,0x2C2E}, {0x2C2F,0x2C2F,0x2C2F}, /* 2C2E */
3571 {0x2C00,0x2C30,0x2C00}, {0x2C01,0x2C31,0x2C01}, /* 2C30 */
3572 {0x2C02,0x2C32,0x2C02}, {0x2C03,0x2C33,0x2C03}, /* 2C32 */
3573 {0x2C04,0x2C34,0x2C04}, {0x2C05,0x2C35,0x2C05}, /* 2C34 */
3574 {0x2C06,0x2C36,0x2C06}, {0x2C07,0x2C37,0x2C07}, /* 2C36 */
3575 {0x2C08,0x2C38,0x2C08}, {0x2C09,0x2C39,0x2C09}, /* 2C38 */
3576 {0x2C0A,0x2C3A,0x2C0A}, {0x2C0B,0x2C3B,0x2C0B}, /* 2C3A */
3577 {0x2C0C,0x2C3C,0x2C0C}, {0x2C0D,0x2C3D,0x2C0D}, /* 2C3C */
3578 {0x2C0E,0x2C3E,0x2C0E}, {0x2C0F,0x2C3F,0x2C0F}, /* 2C3E */
3579 {0x2C10,0x2C40,0x2C10}, {0x2C11,0x2C41,0x2C11}, /* 2C40 */
3580 {0x2C12,0x2C42,0x2C12}, {0x2C13,0x2C43,0x2C13}, /* 2C42 */
3581 {0x2C14,0x2C44,0x2C14}, {0x2C15,0x2C45,0x2C15}, /* 2C44 */
3582 {0x2C16,0x2C46,0x2C16}, {0x2C17,0x2C47,0x2C17}, /* 2C46 */
3583 {0x2C18,0x2C48,0x2C18}, {0x2C19,0x2C49,0x2C19}, /* 2C48 */
3584 {0x2C1A,0x2C4A,0x2C1A}, {0x2C1B,0x2C4B,0x2C1B}, /* 2C4A */
3585 {0x2C1C,0x2C4C,0x2C1C}, {0x2C1D,0x2C4D,0x2C1D}, /* 2C4C */
3586 {0x2C1E,0x2C4E,0x2C1E}, {0x2C1F,0x2C4F,0x2C1F}, /* 2C4E */
3587 {0x2C20,0x2C50,0x2C20}, {0x2C21,0x2C51,0x2C21}, /* 2C50 */
3588 {0x2C22,0x2C52,0x2C22}, {0x2C23,0x2C53,0x2C23}, /* 2C52 */
3589 {0x2C24,0x2C54,0x2C24}, {0x2C25,0x2C55,0x2C25}, /* 2C54 */
3590 {0x2C26,0x2C56,0x2C26}, {0x2C27,0x2C57,0x2C27}, /* 2C56 */
3591 {0x2C28,0x2C58,0x2C28}, {0x2C29,0x2C59,0x2C29}, /* 2C58 */
3592 {0x2C2A,0x2C5A,0x2C2A}, {0x2C2B,0x2C5B,0x2C2B}, /* 2C5A */
3593 {0x2C2C,0x2C5C,0x2C2C}, {0x2C2D,0x2C5D,0x2C2D}, /* 2C5C */
3594 {0x2C2E,0x2C5E,0x2C2E}, {0x2C5F,0x2C5F,0x2C5F}, /* 2C5E */
3595 {0x2C60,0x2C61,0x2C60}, {0x2C60,0x2C61,0x2C60}, /* 2C60 */
3596 {0x2C62,0x026B,0x2C62}, {0x2C63,0x1D7D,0x2C63}, /* 2C62 */
3597 {0x2C64,0x027D,0x2C64}, {0x023A,0x2C65,0x023A}, /* 2C64 */
3598 {0x023E,0x2C66,0x023E}, {0x2C67,0x2C68,0x2C67}, /* 2C66 */
3599 {0x2C67,0x2C68,0x2C67}, {0x2C69,0x2C6A,0x2C69}, /* 2C68 */
3600 {0x2C69,0x2C6A,0x2C69}, {0x2C6B,0x2C6C,0x2C6B}, /* 2C6A */
3601 {0x2C6B,0x2C6C,0x2C6B}, {0x2C6D,0x0251,0x2C6D}, /* 2C6C */
3602 {0x2C6E,0x0271,0x2C6E}, {0x2C6F,0x0250,0x2C6F}, /* 2C6E */
3603 {0x2C70,0x0252,0x2C70}, {0x2C71,0x2C71,0x2C71}, /* 2C70 */
3604 {0x2C72,0x2C73,0x2C72}, {0x2C72,0x2C73,0x2C72}, /* 2C72 */
3605 {0x2C74,0x2C74,0x2C74}, {0x2C75,0x2C76,0x2C75}, /* 2C74 */
3606 {0x2C75,0x2C76,0x2C75}, {0x2C77,0x2C77,0x2C77}, /* 2C76 */
3607 {0x2C78,0x2C78,0x2C78}, {0x2C79,0x2C79,0x2C79}, /* 2C78 */
3608 {0x2C7A,0x2C7A,0x2C7A}, {0x2C7B,0x2C7B,0x2C7B}, /* 2C7A */
3609 {0x2C7C,0x2C7C,0x2C7C}, {0x2C7D,0x2C7D,0x2C7D}, /* 2C7C */
3610 {0x2C7E,0x023F,0x2C7E}, {0x2C7F,0x0240,0x2C7F}, /* 2C7E */
3611 {0x2C80,0x2C81,0x2C80}, {0x2C80,0x2C81,0x2C80}, /* 2C80 */
3612 {0x2C82,0x2C83,0x2C82}, {0x2C82,0x2C83,0x2C82}, /* 2C82 */
3613 {0x2C84,0x2C85,0x2C84}, {0x2C84,0x2C85,0x2C84}, /* 2C84 */
3614 {0x2C86,0x2C87,0x2C86}, {0x2C86,0x2C87,0x2C86}, /* 2C86 */
3615 {0x2C88,0x2C89,0x2C88}, {0x2C88,0x2C89,0x2C88}, /* 2C88 */
3616 {0x2C8A,0x2C8B,0x2C8A}, {0x2C8A,0x2C8B,0x2C8A}, /* 2C8A */
3617 {0x2C8C,0x2C8D,0x2C8C}, {0x2C8C,0x2C8D,0x2C8C}, /* 2C8C */
3618 {0x2C8E,0x2C8F,0x2C8E}, {0x2C8E,0x2C8F,0x2C8E}, /* 2C8E */
3619 {0x2C90,0x2C91,0x2C90}, {0x2C90,0x2C91,0x2C90}, /* 2C90 */
3620 {0x2C92,0x2C93,0x2C92}, {0x2C92,0x2C93,0x2C92}, /* 2C92 */
3621 {0x2C94,0x2C95,0x2C94}, {0x2C94,0x2C95,0x2C94}, /* 2C94 */
3622 {0x2C96,0x2C97,0x2C96}, {0x2C96,0x2C97,0x2C96}, /* 2C96 */
3623 {0x2C98,0x2C99,0x2C98}, {0x2C98,0x2C99,0x2C98}, /* 2C98 */
3624 {0x2C9A,0x2C9B,0x2C9A}, {0x2C9A,0x2C9B,0x2C9A}, /* 2C9A */
3625 {0x2C9C,0x2C9D,0x2C9C}, {0x2C9C,0x2C9D,0x2C9C}, /* 2C9C */
3626 {0x2C9E,0x2C9F,0x2C9E}, {0x2C9E,0x2C9F,0x2C9E}, /* 2C9E */
3627 {0x2CA0,0x2CA1,0x2CA0}, {0x2CA0,0x2CA1,0x2CA0}, /* 2CA0 */
3628 {0x2CA2,0x2CA3,0x2CA2}, {0x2CA2,0x2CA3,0x2CA2}, /* 2CA2 */
3629 {0x2CA4,0x2CA5,0x2CA4}, {0x2CA4,0x2CA5,0x2CA4}, /* 2CA4 */
3630 {0x2CA6,0x2CA7,0x2CA6}, {0x2CA6,0x2CA7,0x2CA6}, /* 2CA6 */
3631 {0x2CA8,0x2CA9,0x2CA8}, {0x2CA8,0x2CA9,0x2CA8}, /* 2CA8 */
3632 {0x2CAA,0x2CAB,0x2CAA}, {0x2CAA,0x2CAB,0x2CAA}, /* 2CAA */
3633 {0x2CAC,0x2CAD,0x2CAC}, {0x2CAC,0x2CAD,0x2CAC}, /* 2CAC */
3634 {0x2CAE,0x2CAF,0x2CAE}, {0x2CAE,0x2CAF,0x2CAE}, /* 2CAE */
3635 {0x2CB0,0x2CB1,0x2CB0}, {0x2CB0,0x2CB1,0x2CB0}, /* 2CB0 */
3636 {0x2CB2,0x2CB3,0x2CB2}, {0x2CB2,0x2CB3,0x2CB2}, /* 2CB2 */
3637 {0x2CB4,0x2CB5,0x2CB4}, {0x2CB4,0x2CB5,0x2CB4}, /* 2CB4 */
3638 {0x2CB6,0x2CB7,0x2CB6}, {0x2CB6,0x2CB7,0x2CB6}, /* 2CB6 */
3639 {0x2CB8,0x2CB9,0x2CB8}, {0x2CB8,0x2CB9,0x2CB8}, /* 2CB8 */
3640 {0x2CBA,0x2CBB,0x2CBA}, {0x2CBA,0x2CBB,0x2CBA}, /* 2CBA */
3641 {0x2CBC,0x2CBD,0x2CBC}, {0x2CBC,0x2CBD,0x2CBC}, /* 2CBC */
3642 {0x2CBE,0x2CBF,0x2CBE}, {0x2CBE,0x2CBF,0x2CBE}, /* 2CBE */
3643 {0x2CC0,0x2CC1,0x2CC0}, {0x2CC0,0x2CC1,0x2CC0}, /* 2CC0 */
3644 {0x2CC2,0x2CC3,0x2CC2}, {0x2CC2,0x2CC3,0x2CC2}, /* 2CC2 */
3645 {0x2CC4,0x2CC5,0x2CC4}, {0x2CC4,0x2CC5,0x2CC4}, /* 2CC4 */
3646 {0x2CC6,0x2CC7,0x2CC6}, {0x2CC6,0x2CC7,0x2CC6}, /* 2CC6 */
3647 {0x2CC8,0x2CC9,0x2CC8}, {0x2CC8,0x2CC9,0x2CC8}, /* 2CC8 */
3648 {0x2CCA,0x2CCB,0x2CCA}, {0x2CCA,0x2CCB,0x2CCA}, /* 2CCA */
3649 {0x2CCC,0x2CCD,0x2CCC}, {0x2CCC,0x2CCD,0x2CCC}, /* 2CCC */
3650 {0x2CCE,0x2CCF,0x2CCE}, {0x2CCE,0x2CCF,0x2CCE}, /* 2CCE */
3651 {0x2CD0,0x2CD1,0x2CD0}, {0x2CD0,0x2CD1,0x2CD0}, /* 2CD0 */
3652 {0x2CD2,0x2CD3,0x2CD2}, {0x2CD2,0x2CD3,0x2CD2}, /* 2CD2 */
3653 {0x2CD4,0x2CD5,0x2CD4}, {0x2CD4,0x2CD5,0x2CD4}, /* 2CD4 */
3654 {0x2CD6,0x2CD7,0x2CD6}, {0x2CD6,0x2CD7,0x2CD6}, /* 2CD6 */
3655 {0x2CD8,0x2CD9,0x2CD8}, {0x2CD8,0x2CD9,0x2CD8}, /* 2CD8 */
3656 {0x2CDA,0x2CDB,0x2CDA}, {0x2CDA,0x2CDB,0x2CDA}, /* 2CDA */
3657 {0x2CDC,0x2CDD,0x2CDC}, {0x2CDC,0x2CDD,0x2CDC}, /* 2CDC */
3658 {0x2CDE,0x2CDF,0x2CDE}, {0x2CDE,0x2CDF,0x2CDE}, /* 2CDE */
3659 {0x2CE0,0x2CE1,0x2CE0}, {0x2CE0,0x2CE1,0x2CE0}, /* 2CE0 */
3660 {0x2CE2,0x2CE3,0x2CE2}, {0x2CE2,0x2CE3,0x2CE2}, /* 2CE2 */
3661 {0x2CE4,0x2CE4,0x2CE4}, {0x2CE5,0x2CE5,0x2CE5}, /* 2CE4 */
3662 {0x2CE6,0x2CE6,0x2CE6}, {0x2CE7,0x2CE7,0x2CE7}, /* 2CE6 */
3663 {0x2CE8,0x2CE8,0x2CE8}, {0x2CE9,0x2CE9,0x2CE9}, /* 2CE8 */
3664 {0x2CEA,0x2CEA,0x2CEA}, {0x2CEB,0x2CEC,0x2CEB}, /* 2CEA */
3665 {0x2CEB,0x2CEC,0x2CEB}, {0x2CED,0x2CEE,0x2CED}, /* 2CEC */
3666 {0x2CED,0x2CEE,0x2CED}, {0x2CEF,0x2CEF,0x2CEF}, /* 2CEE */
3667 {0x2CF0,0x2CF0,0x2CF0}, {0x2CF1,0x2CF1,0x2CF1}, /* 2CF0 */
3668 {0x2CF2,0x2CF2,0x2CF2}, {0x2CF3,0x2CF3,0x2CF3}, /* 2CF2 */
3669 {0x2CF4,0x2CF4,0x2CF4}, {0x2CF5,0x2CF5,0x2CF5}, /* 2CF4 */
3670 {0x2CF6,0x2CF6,0x2CF6}, {0x2CF7,0x2CF7,0x2CF7}, /* 2CF6 */
3671 {0x2CF8,0x2CF8,0x2CF8}, {0x2CF9,0x2CF9,0x2CF9}, /* 2CF8 */
3672 {0x2CFA,0x2CFA,0x2CFA}, {0x2CFB,0x2CFB,0x2CFB}, /* 2CFA */
3673 {0x2CFC,0x2CFC,0x2CFC}, {0x2CFD,0x2CFD,0x2CFD}, /* 2CFC */
3674 {0x2CFE,0x2CFE,0x2CFE}, {0x2CFF,0x2CFF,0x2CFF} /* 2CFE */
3675 };
3676
3677 static MY_UNICASE_CHARACTER u520p2D[]={
3678 {0x10A0,0x2D00,0x10A0}, {0x10A1,0x2D01,0x10A1}, /* 2D00 */
3679 {0x10A2,0x2D02,0x10A2}, {0x10A3,0x2D03,0x10A3}, /* 2D02 */
3680 {0x10A4,0x2D04,0x10A4}, {0x10A5,0x2D05,0x10A5}, /* 2D04 */
3681 {0x10A6,0x2D06,0x10A6}, {0x10A7,0x2D07,0x10A7}, /* 2D06 */
3682 {0x10A8,0x2D08,0x10A8}, {0x10A9,0x2D09,0x10A9}, /* 2D08 */
3683 {0x10AA,0x2D0A,0x10AA}, {0x10AB,0x2D0B,0x10AB}, /* 2D0A */
3684 {0x10AC,0x2D0C,0x10AC}, {0x10AD,0x2D0D,0x10AD}, /* 2D0C */
3685 {0x10AE,0x2D0E,0x10AE}, {0x10AF,0x2D0F,0x10AF}, /* 2D0E */
3686 {0x10B0,0x2D10,0x10B0}, {0x10B1,0x2D11,0x10B1}, /* 2D10 */
3687 {0x10B2,0x2D12,0x10B2}, {0x10B3,0x2D13,0x10B3}, /* 2D12 */
3688 {0x10B4,0x2D14,0x10B4}, {0x10B5,0x2D15,0x10B5}, /* 2D14 */
3689 {0x10B6,0x2D16,0x10B6}, {0x10B7,0x2D17,0x10B7}, /* 2D16 */
3690 {0x10B8,0x2D18,0x10B8}, {0x10B9,0x2D19,0x10B9}, /* 2D18 */
3691 {0x10BA,0x2D1A,0x10BA}, {0x10BB,0x2D1B,0x10BB}, /* 2D1A */
3692 {0x10BC,0x2D1C,0x10BC}, {0x10BD,0x2D1D,0x10BD}, /* 2D1C */
3693 {0x10BE,0x2D1E,0x10BE}, {0x10BF,0x2D1F,0x10BF}, /* 2D1E */
3694 {0x10C0,0x2D20,0x10C0}, {0x10C1,0x2D21,0x10C1}, /* 2D20 */
3695 {0x10C2,0x2D22,0x10C2}, {0x10C3,0x2D23,0x10C3}, /* 2D22 */
3696 {0x10C4,0x2D24,0x10C4}, {0x10C5,0x2D25,0x10C5}, /* 2D24 */
3697 {0x2D26,0x2D26,0x2D26}, {0x2D27,0x2D27,0x2D27}, /* 2D26 */
3698 {0x2D28,0x2D28,0x2D28}, {0x2D29,0x2D29,0x2D29}, /* 2D28 */
3699 {0x2D2A,0x2D2A,0x2D2A}, {0x2D2B,0x2D2B,0x2D2B}, /* 2D2A */
3700 {0x2D2C,0x2D2C,0x2D2C}, {0x2D2D,0x2D2D,0x2D2D}, /* 2D2C */
3701 {0x2D2E,0x2D2E,0x2D2E}, {0x2D2F,0x2D2F,0x2D2F}, /* 2D2E */
3702 {0x2D30,0x2D30,0x2D30}, {0x2D31,0x2D31,0x2D31}, /* 2D30 */
3703 {0x2D32,0x2D32,0x2D32}, {0x2D33,0x2D33,0x2D33}, /* 2D32 */
3704 {0x2D34,0x2D34,0x2D34}, {0x2D35,0x2D35,0x2D35}, /* 2D34 */
3705 {0x2D36,0x2D36,0x2D36}, {0x2D37,0x2D37,0x2D37}, /* 2D36 */
3706 {0x2D38,0x2D38,0x2D38}, {0x2D39,0x2D39,0x2D39}, /* 2D38 */
3707 {0x2D3A,0x2D3A,0x2D3A}, {0x2D3B,0x2D3B,0x2D3B}, /* 2D3A */
3708 {0x2D3C,0x2D3C,0x2D3C}, {0x2D3D,0x2D3D,0x2D3D}, /* 2D3C */
3709 {0x2D3E,0x2D3E,0x2D3E}, {0x2D3F,0x2D3F,0x2D3F}, /* 2D3E */
3710 {0x2D40,0x2D40,0x2D40}, {0x2D41,0x2D41,0x2D41}, /* 2D40 */
3711 {0x2D42,0x2D42,0x2D42}, {0x2D43,0x2D43,0x2D43}, /* 2D42 */
3712 {0x2D44,0x2D44,0x2D44}, {0x2D45,0x2D45,0x2D45}, /* 2D44 */
3713 {0x2D46,0x2D46,0x2D46}, {0x2D47,0x2D47,0x2D47}, /* 2D46 */
3714 {0x2D48,0x2D48,0x2D48}, {0x2D49,0x2D49,0x2D49}, /* 2D48 */
3715 {0x2D4A,0x2D4A,0x2D4A}, {0x2D4B,0x2D4B,0x2D4B}, /* 2D4A */
3716 {0x2D4C,0x2D4C,0x2D4C}, {0x2D4D,0x2D4D,0x2D4D}, /* 2D4C */
3717 {0x2D4E,0x2D4E,0x2D4E}, {0x2D4F,0x2D4F,0x2D4F}, /* 2D4E */
3718 {0x2D50,0x2D50,0x2D50}, {0x2D51,0x2D51,0x2D51}, /* 2D50 */
3719 {0x2D52,0x2D52,0x2D52}, {0x2D53,0x2D53,0x2D53}, /* 2D52 */
3720 {0x2D54,0x2D54,0x2D54}, {0x2D55,0x2D55,0x2D55}, /* 2D54 */
3721 {0x2D56,0x2D56,0x2D56}, {0x2D57,0x2D57,0x2D57}, /* 2D56 */
3722 {0x2D58,0x2D58,0x2D58}, {0x2D59,0x2D59,0x2D59}, /* 2D58 */
3723 {0x2D5A,0x2D5A,0x2D5A}, {0x2D5B,0x2D5B,0x2D5B}, /* 2D5A */
3724 {0x2D5C,0x2D5C,0x2D5C}, {0x2D5D,0x2D5D,0x2D5D}, /* 2D5C */
3725 {0x2D5E,0x2D5E,0x2D5E}, {0x2D5F,0x2D5F,0x2D5F}, /* 2D5E */
3726 {0x2D60,0x2D60,0x2D60}, {0x2D61,0x2D61,0x2D61}, /* 2D60 */
3727 {0x2D62,0x2D62,0x2D62}, {0x2D63,0x2D63,0x2D63}, /* 2D62 */
3728 {0x2D64,0x2D64,0x2D64}, {0x2D65,0x2D65,0x2D65}, /* 2D64 */
3729 {0x2D66,0x2D66,0x2D66}, {0x2D67,0x2D67,0x2D67}, /* 2D66 */
3730 {0x2D68,0x2D68,0x2D68}, {0x2D69,0x2D69,0x2D69}, /* 2D68 */
3731 {0x2D6A,0x2D6A,0x2D6A}, {0x2D6B,0x2D6B,0x2D6B}, /* 2D6A */
3732 {0x2D6C,0x2D6C,0x2D6C}, {0x2D6D,0x2D6D,0x2D6D}, /* 2D6C */
3733 {0x2D6E,0x2D6E,0x2D6E}, {0x2D6F,0x2D6F,0x2D6F}, /* 2D6E */
3734 {0x2D70,0x2D70,0x2D70}, {0x2D71,0x2D71,0x2D71}, /* 2D70 */
3735 {0x2D72,0x2D72,0x2D72}, {0x2D73,0x2D73,0x2D73}, /* 2D72 */
3736 {0x2D74,0x2D74,0x2D74}, {0x2D75,0x2D75,0x2D75}, /* 2D74 */
3737 {0x2D76,0x2D76,0x2D76}, {0x2D77,0x2D77,0x2D77}, /* 2D76 */
3738 {0x2D78,0x2D78,0x2D78}, {0x2D79,0x2D79,0x2D79}, /* 2D78 */
3739 {0x2D7A,0x2D7A,0x2D7A}, {0x2D7B,0x2D7B,0x2D7B}, /* 2D7A */
3740 {0x2D7C,0x2D7C,0x2D7C}, {0x2D7D,0x2D7D,0x2D7D}, /* 2D7C */
3741 {0x2D7E,0x2D7E,0x2D7E}, {0x2D7F,0x2D7F,0x2D7F}, /* 2D7E */
3742 {0x2D80,0x2D80,0x2D80}, {0x2D81,0x2D81,0x2D81}, /* 2D80 */
3743 {0x2D82,0x2D82,0x2D82}, {0x2D83,0x2D83,0x2D83}, /* 2D82 */
3744 {0x2D84,0x2D84,0x2D84}, {0x2D85,0x2D85,0x2D85}, /* 2D84 */
3745 {0x2D86,0x2D86,0x2D86}, {0x2D87,0x2D87,0x2D87}, /* 2D86 */
3746 {0x2D88,0x2D88,0x2D88}, {0x2D89,0x2D89,0x2D89}, /* 2D88 */
3747 {0x2D8A,0x2D8A,0x2D8A}, {0x2D8B,0x2D8B,0x2D8B}, /* 2D8A */
3748 {0x2D8C,0x2D8C,0x2D8C}, {0x2D8D,0x2D8D,0x2D8D}, /* 2D8C */
3749 {0x2D8E,0x2D8E,0x2D8E}, {0x2D8F,0x2D8F,0x2D8F}, /* 2D8E */
3750 {0x2D90,0x2D90,0x2D90}, {0x2D91,0x2D91,0x2D91}, /* 2D90 */
3751 {0x2D92,0x2D92,0x2D92}, {0x2D93,0x2D93,0x2D93}, /* 2D92 */
3752 {0x2D94,0x2D94,0x2D94}, {0x2D95,0x2D95,0x2D95}, /* 2D94 */
3753 {0x2D96,0x2D96,0x2D96}, {0x2D97,0x2D97,0x2D97}, /* 2D96 */
3754 {0x2D98,0x2D98,0x2D98}, {0x2D99,0x2D99,0x2D99}, /* 2D98 */
3755 {0x2D9A,0x2D9A,0x2D9A}, {0x2D9B,0x2D9B,0x2D9B}, /* 2D9A */
3756 {0x2D9C,0x2D9C,0x2D9C}, {0x2D9D,0x2D9D,0x2D9D}, /* 2D9C */
3757 {0x2D9E,0x2D9E,0x2D9E}, {0x2D9F,0x2D9F,0x2D9F}, /* 2D9E */
3758 {0x2DA0,0x2DA0,0x2DA0}, {0x2DA1,0x2DA1,0x2DA1}, /* 2DA0 */
3759 {0x2DA2,0x2DA2,0x2DA2}, {0x2DA3,0x2DA3,0x2DA3}, /* 2DA2 */
3760 {0x2DA4,0x2DA4,0x2DA4}, {0x2DA5,0x2DA5,0x2DA5}, /* 2DA4 */
3761 {0x2DA6,0x2DA6,0x2DA6}, {0x2DA7,0x2DA7,0x2DA7}, /* 2DA6 */
3762 {0x2DA8,0x2DA8,0x2DA8}, {0x2DA9,0x2DA9,0x2DA9}, /* 2DA8 */
3763 {0x2DAA,0x2DAA,0x2DAA}, {0x2DAB,0x2DAB,0x2DAB}, /* 2DAA */
3764 {0x2DAC,0x2DAC,0x2DAC}, {0x2DAD,0x2DAD,0x2DAD}, /* 2DAC */
3765 {0x2DAE,0x2DAE,0x2DAE}, {0x2DAF,0x2DAF,0x2DAF}, /* 2DAE */
3766 {0x2DB0,0x2DB0,0x2DB0}, {0x2DB1,0x2DB1,0x2DB1}, /* 2DB0 */
3767 {0x2DB2,0x2DB2,0x2DB2}, {0x2DB3,0x2DB3,0x2DB3}, /* 2DB2 */
3768 {0x2DB4,0x2DB4,0x2DB4}, {0x2DB5,0x2DB5,0x2DB5}, /* 2DB4 */
3769 {0x2DB6,0x2DB6,0x2DB6}, {0x2DB7,0x2DB7,0x2DB7}, /* 2DB6 */
3770 {0x2DB8,0x2DB8,0x2DB8}, {0x2DB9,0x2DB9,0x2DB9}, /* 2DB8 */
3771 {0x2DBA,0x2DBA,0x2DBA}, {0x2DBB,0x2DBB,0x2DBB}, /* 2DBA */
3772 {0x2DBC,0x2DBC,0x2DBC}, {0x2DBD,0x2DBD,0x2DBD}, /* 2DBC */
3773 {0x2DBE,0x2DBE,0x2DBE}, {0x2DBF,0x2DBF,0x2DBF}, /* 2DBE */
3774 {0x2DC0,0x2DC0,0x2DC0}, {0x2DC1,0x2DC1,0x2DC1}, /* 2DC0 */
3775 {0x2DC2,0x2DC2,0x2DC2}, {0x2DC3,0x2DC3,0x2DC3}, /* 2DC2 */
3776 {0x2DC4,0x2DC4,0x2DC4}, {0x2DC5,0x2DC5,0x2DC5}, /* 2DC4 */
3777 {0x2DC6,0x2DC6,0x2DC6}, {0x2DC7,0x2DC7,0x2DC7}, /* 2DC6 */
3778 {0x2DC8,0x2DC8,0x2DC8}, {0x2DC9,0x2DC9,0x2DC9}, /* 2DC8 */
3779 {0x2DCA,0x2DCA,0x2DCA}, {0x2DCB,0x2DCB,0x2DCB}, /* 2DCA */
3780 {0x2DCC,0x2DCC,0x2DCC}, {0x2DCD,0x2DCD,0x2DCD}, /* 2DCC */
3781 {0x2DCE,0x2DCE,0x2DCE}, {0x2DCF,0x2DCF,0x2DCF}, /* 2DCE */
3782 {0x2DD0,0x2DD0,0x2DD0}, {0x2DD1,0x2DD1,0x2DD1}, /* 2DD0 */
3783 {0x2DD2,0x2DD2,0x2DD2}, {0x2DD3,0x2DD3,0x2DD3}, /* 2DD2 */
3784 {0x2DD4,0x2DD4,0x2DD4}, {0x2DD5,0x2DD5,0x2DD5}, /* 2DD4 */
3785 {0x2DD6,0x2DD6,0x2DD6}, {0x2DD7,0x2DD7,0x2DD7}, /* 2DD6 */
3786 {0x2DD8,0x2DD8,0x2DD8}, {0x2DD9,0x2DD9,0x2DD9}, /* 2DD8 */
3787 {0x2DDA,0x2DDA,0x2DDA}, {0x2DDB,0x2DDB,0x2DDB}, /* 2DDA */
3788 {0x2DDC,0x2DDC,0x2DDC}, {0x2DDD,0x2DDD,0x2DDD}, /* 2DDC */
3789 {0x2DDE,0x2DDE,0x2DDE}, {0x2DDF,0x2DDF,0x2DDF}, /* 2DDE */
3790 {0x2DE0,0x2DE0,0x2DE0}, {0x2DE1,0x2DE1,0x2DE1}, /* 2DE0 */
3791 {0x2DE2,0x2DE2,0x2DE2}, {0x2DE3,0x2DE3,0x2DE3}, /* 2DE2 */
3792 {0x2DE4,0x2DE4,0x2DE4}, {0x2DE5,0x2DE5,0x2DE5}, /* 2DE4 */
3793 {0x2DE6,0x2DE6,0x2DE6}, {0x2DE7,0x2DE7,0x2DE7}, /* 2DE6 */
3794 {0x2DE8,0x2DE8,0x2DE8}, {0x2DE9,0x2DE9,0x2DE9}, /* 2DE8 */
3795 {0x2DEA,0x2DEA,0x2DEA}, {0x2DEB,0x2DEB,0x2DEB}, /* 2DEA */
3796 {0x2DEC,0x2DEC,0x2DEC}, {0x2DED,0x2DED,0x2DED}, /* 2DEC */
3797 {0x2DEE,0x2DEE,0x2DEE}, {0x2DEF,0x2DEF,0x2DEF}, /* 2DEE */
3798 {0x2DF0,0x2DF0,0x2DF0}, {0x2DF1,0x2DF1,0x2DF1}, /* 2DF0 */
3799 {0x2DF2,0x2DF2,0x2DF2}, {0x2DF3,0x2DF3,0x2DF3}, /* 2DF2 */
3800 {0x2DF4,0x2DF4,0x2DF4}, {0x2DF5,0x2DF5,0x2DF5}, /* 2DF4 */
3801 {0x2DF6,0x2DF6,0x2DF6}, {0x2DF7,0x2DF7,0x2DF7}, /* 2DF6 */
3802 {0x2DF8,0x2DF8,0x2DF8}, {0x2DF9,0x2DF9,0x2DF9}, /* 2DF8 */
3803 {0x2DFA,0x2DFA,0x2DFA}, {0x2DFB,0x2DFB,0x2DFB}, /* 2DFA */
3804 {0x2DFC,0x2DFC,0x2DFC}, {0x2DFD,0x2DFD,0x2DFD}, /* 2DFC */
3805 {0x2DFE,0x2DFE,0x2DFE}, {0x2DFF,0x2DFF,0x2DFF} /* 2DFE */
3806 };
3807
3808 static MY_UNICASE_CHARACTER u520pA6[]={
3809 {0xA600,0xA600,0xA600}, {0xA601,0xA601,0xA601}, /* A600 */
3810 {0xA602,0xA602,0xA602}, {0xA603,0xA603,0xA603}, /* A602 */
3811 {0xA604,0xA604,0xA604}, {0xA605,0xA605,0xA605}, /* A604 */
3812 {0xA606,0xA606,0xA606}, {0xA607,0xA607,0xA607}, /* A606 */
3813 {0xA608,0xA608,0xA608}, {0xA609,0xA609,0xA609}, /* A608 */
3814 {0xA60A,0xA60A,0xA60A}, {0xA60B,0xA60B,0xA60B}, /* A60A */
3815 {0xA60C,0xA60C,0xA60C}, {0xA60D,0xA60D,0xA60D}, /* A60C */
3816 {0xA60E,0xA60E,0xA60E}, {0xA60F,0xA60F,0xA60F}, /* A60E */
3817 {0xA610,0xA610,0xA610}, {0xA611,0xA611,0xA611}, /* A610 */
3818 {0xA612,0xA612,0xA612}, {0xA613,0xA613,0xA613}, /* A612 */
3819 {0xA614,0xA614,0xA614}, {0xA615,0xA615,0xA615}, /* A614 */
3820 {0xA616,0xA616,0xA616}, {0xA617,0xA617,0xA617}, /* A616 */
3821 {0xA618,0xA618,0xA618}, {0xA619,0xA619,0xA619}, /* A618 */
3822 {0xA61A,0xA61A,0xA61A}, {0xA61B,0xA61B,0xA61B}, /* A61A */
3823 {0xA61C,0xA61C,0xA61C}, {0xA61D,0xA61D,0xA61D}, /* A61C */
3824 {0xA61E,0xA61E,0xA61E}, {0xA61F,0xA61F,0xA61F}, /* A61E */
3825 {0xA620,0xA620,0xA620}, {0xA621,0xA621,0xA621}, /* A620 */
3826 {0xA622,0xA622,0xA622}, {0xA623,0xA623,0xA623}, /* A622 */
3827 {0xA624,0xA624,0xA624}, {0xA625,0xA625,0xA625}, /* A624 */
3828 {0xA626,0xA626,0xA626}, {0xA627,0xA627,0xA627}, /* A626 */
3829 {0xA628,0xA628,0xA628}, {0xA629,0xA629,0xA629}, /* A628 */
3830 {0xA62A,0xA62A,0xA62A}, {0xA62B,0xA62B,0xA62B}, /* A62A */
3831 {0xA62C,0xA62C,0xA62C}, {0xA62D,0xA62D,0xA62D}, /* A62C */
3832 {0xA62E,0xA62E,0xA62E}, {0xA62F,0xA62F,0xA62F}, /* A62E */
3833 {0xA630,0xA630,0xA630}, {0xA631,0xA631,0xA631}, /* A630 */
3834 {0xA632,0xA632,0xA632}, {0xA633,0xA633,0xA633}, /* A632 */
3835 {0xA634,0xA634,0xA634}, {0xA635,0xA635,0xA635}, /* A634 */
3836 {0xA636,0xA636,0xA636}, {0xA637,0xA637,0xA637}, /* A636 */
3837 {0xA638,0xA638,0xA638}, {0xA639,0xA639,0xA639}, /* A638 */
3838 {0xA63A,0xA63A,0xA63A}, {0xA63B,0xA63B,0xA63B}, /* A63A */
3839 {0xA63C,0xA63C,0xA63C}, {0xA63D,0xA63D,0xA63D}, /* A63C */
3840 {0xA63E,0xA63E,0xA63E}, {0xA63F,0xA63F,0xA63F}, /* A63E */
3841 {0xA640,0xA641,0xA640}, {0xA640,0xA641,0xA640}, /* A640 */
3842 {0xA642,0xA643,0xA642}, {0xA642,0xA643,0xA642}, /* A642 */
3843 {0xA644,0xA645,0xA644}, {0xA644,0xA645,0xA644}, /* A644 */
3844 {0xA646,0xA647,0xA646}, {0xA646,0xA647,0xA646}, /* A646 */
3845 {0xA648,0xA649,0xA648}, {0xA648,0xA649,0xA648}, /* A648 */
3846 {0xA64A,0xA64B,0xA64A}, {0xA64A,0xA64B,0xA64A}, /* A64A */
3847 {0xA64C,0xA64D,0xA64C}, {0xA64C,0xA64D,0xA64C}, /* A64C */
3848 {0xA64E,0xA64F,0xA64E}, {0xA64E,0xA64F,0xA64E}, /* A64E */
3849 {0xA650,0xA651,0xA650}, {0xA650,0xA651,0xA650}, /* A650 */
3850 {0xA652,0xA653,0xA652}, {0xA652,0xA653,0xA652}, /* A652 */
3851 {0xA654,0xA655,0xA654}, {0xA654,0xA655,0xA654}, /* A654 */
3852 {0xA656,0xA657,0xA656}, {0xA656,0xA657,0xA656}, /* A656 */
3853 {0xA658,0xA659,0xA658}, {0xA658,0xA659,0xA658}, /* A658 */
3854 {0xA65A,0xA65B,0xA65A}, {0xA65A,0xA65B,0xA65A}, /* A65A */
3855 {0xA65C,0xA65D,0xA65C}, {0xA65C,0xA65D,0xA65C}, /* A65C */
3856 {0xA65E,0xA65F,0xA65E}, {0xA65E,0xA65F,0xA65E}, /* A65E */
3857 {0xA660,0xA660,0xA660}, {0xA661,0xA661,0xA661}, /* A660 */
3858 {0xA662,0xA663,0xA662}, {0xA662,0xA663,0xA662}, /* A662 */
3859 {0xA664,0xA665,0xA664}, {0xA664,0xA665,0xA664}, /* A664 */
3860 {0xA666,0xA667,0xA666}, {0xA666,0xA667,0xA666}, /* A666 */
3861 {0xA668,0xA669,0xA668}, {0xA668,0xA669,0xA668}, /* A668 */
3862 {0xA66A,0xA66B,0xA66A}, {0xA66A,0xA66B,0xA66A}, /* A66A */
3863 {0xA66C,0xA66D,0xA66C}, {0xA66C,0xA66D,0xA66C}, /* A66C */
3864 {0xA66E,0xA66E,0xA66E}, {0xA66F,0xA66F,0xA66F}, /* A66E */
3865 {0xA670,0xA670,0xA670}, {0xA671,0xA671,0xA671}, /* A670 */
3866 {0xA672,0xA672,0xA672}, {0xA673,0xA673,0xA673}, /* A672 */
3867 {0xA674,0xA674,0xA674}, {0xA675,0xA675,0xA675}, /* A674 */
3868 {0xA676,0xA676,0xA676}, {0xA677,0xA677,0xA677}, /* A676 */
3869 {0xA678,0xA678,0xA678}, {0xA679,0xA679,0xA679}, /* A678 */
3870 {0xA67A,0xA67A,0xA67A}, {0xA67B,0xA67B,0xA67B}, /* A67A */
3871 {0xA67C,0xA67C,0xA67C}, {0xA67D,0xA67D,0xA67D}, /* A67C */
3872 {0xA67E,0xA67E,0xA67E}, {0xA67F,0xA67F,0xA67F}, /* A67E */
3873 {0xA680,0xA681,0xA680}, {0xA680,0xA681,0xA680}, /* A680 */
3874 {0xA682,0xA683,0xA682}, {0xA682,0xA683,0xA682}, /* A682 */
3875 {0xA684,0xA685,0xA684}, {0xA684,0xA685,0xA684}, /* A684 */
3876 {0xA686,0xA687,0xA686}, {0xA686,0xA687,0xA686}, /* A686 */
3877 {0xA688,0xA689,0xA688}, {0xA688,0xA689,0xA688}, /* A688 */
3878 {0xA68A,0xA68B,0xA68A}, {0xA68A,0xA68B,0xA68A}, /* A68A */
3879 {0xA68C,0xA68D,0xA68C}, {0xA68C,0xA68D,0xA68C}, /* A68C */
3880 {0xA68E,0xA68F,0xA68E}, {0xA68E,0xA68F,0xA68E}, /* A68E */
3881 {0xA690,0xA691,0xA690}, {0xA690,0xA691,0xA690}, /* A690 */
3882 {0xA692,0xA693,0xA692}, {0xA692,0xA693,0xA692}, /* A692 */
3883 {0xA694,0xA695,0xA694}, {0xA694,0xA695,0xA694}, /* A694 */
3884 {0xA696,0xA697,0xA696}, {0xA696,0xA697,0xA696}, /* A696 */
3885 {0xA698,0xA698,0xA698}, {0xA699,0xA699,0xA699}, /* A698 */
3886 {0xA69A,0xA69A,0xA69A}, {0xA69B,0xA69B,0xA69B}, /* A69A */
3887 {0xA69C,0xA69C,0xA69C}, {0xA69D,0xA69D,0xA69D}, /* A69C */
3888 {0xA69E,0xA69E,0xA69E}, {0xA69F,0xA69F,0xA69F}, /* A69E */
3889 {0xA6A0,0xA6A0,0xA6A0}, {0xA6A1,0xA6A1,0xA6A1}, /* A6A0 */
3890 {0xA6A2,0xA6A2,0xA6A2}, {0xA6A3,0xA6A3,0xA6A3}, /* A6A2 */
3891 {0xA6A4,0xA6A4,0xA6A4}, {0xA6A5,0xA6A5,0xA6A5}, /* A6A4 */
3892 {0xA6A6,0xA6A6,0xA6A6}, {0xA6A7,0xA6A7,0xA6A7}, /* A6A6 */
3893 {0xA6A8,0xA6A8,0xA6A8}, {0xA6A9,0xA6A9,0xA6A9}, /* A6A8 */
3894 {0xA6AA,0xA6AA,0xA6AA}, {0xA6AB,0xA6AB,0xA6AB}, /* A6AA */
3895 {0xA6AC,0xA6AC,0xA6AC}, {0xA6AD,0xA6AD,0xA6AD}, /* A6AC */
3896 {0xA6AE,0xA6AE,0xA6AE}, {0xA6AF,0xA6AF,0xA6AF}, /* A6AE */
3897 {0xA6B0,0xA6B0,0xA6B0}, {0xA6B1,0xA6B1,0xA6B1}, /* A6B0 */
3898 {0xA6B2,0xA6B2,0xA6B2}, {0xA6B3,0xA6B3,0xA6B3}, /* A6B2 */
3899 {0xA6B4,0xA6B4,0xA6B4}, {0xA6B5,0xA6B5,0xA6B5}, /* A6B4 */
3900 {0xA6B6,0xA6B6,0xA6B6}, {0xA6B7,0xA6B7,0xA6B7}, /* A6B6 */
3901 {0xA6B8,0xA6B8,0xA6B8}, {0xA6B9,0xA6B9,0xA6B9}, /* A6B8 */
3902 {0xA6BA,0xA6BA,0xA6BA}, {0xA6BB,0xA6BB,0xA6BB}, /* A6BA */
3903 {0xA6BC,0xA6BC,0xA6BC}, {0xA6BD,0xA6BD,0xA6BD}, /* A6BC */
3904 {0xA6BE,0xA6BE,0xA6BE}, {0xA6BF,0xA6BF,0xA6BF}, /* A6BE */
3905 {0xA6C0,0xA6C0,0xA6C0}, {0xA6C1,0xA6C1,0xA6C1}, /* A6C0 */
3906 {0xA6C2,0xA6C2,0xA6C2}, {0xA6C3,0xA6C3,0xA6C3}, /* A6C2 */
3907 {0xA6C4,0xA6C4,0xA6C4}, {0xA6C5,0xA6C5,0xA6C5}, /* A6C4 */
3908 {0xA6C6,0xA6C6,0xA6C6}, {0xA6C7,0xA6C7,0xA6C7}, /* A6C6 */
3909 {0xA6C8,0xA6C8,0xA6C8}, {0xA6C9,0xA6C9,0xA6C9}, /* A6C8 */
3910 {0xA6CA,0xA6CA,0xA6CA}, {0xA6CB,0xA6CB,0xA6CB}, /* A6CA */
3911 {0xA6CC,0xA6CC,0xA6CC}, {0xA6CD,0xA6CD,0xA6CD}, /* A6CC */
3912 {0xA6CE,0xA6CE,0xA6CE}, {0xA6CF,0xA6CF,0xA6CF}, /* A6CE */
3913 {0xA6D0,0xA6D0,0xA6D0}, {0xA6D1,0xA6D1,0xA6D1}, /* A6D0 */
3914 {0xA6D2,0xA6D2,0xA6D2}, {0xA6D3,0xA6D3,0xA6D3}, /* A6D2 */
3915 {0xA6D4,0xA6D4,0xA6D4}, {0xA6D5,0xA6D5,0xA6D5}, /* A6D4 */
3916 {0xA6D6,0xA6D6,0xA6D6}, {0xA6D7,0xA6D7,0xA6D7}, /* A6D6 */
3917 {0xA6D8,0xA6D8,0xA6D8}, {0xA6D9,0xA6D9,0xA6D9}, /* A6D8 */
3918 {0xA6DA,0xA6DA,0xA6DA}, {0xA6DB,0xA6DB,0xA6DB}, /* A6DA */
3919 {0xA6DC,0xA6DC,0xA6DC}, {0xA6DD,0xA6DD,0xA6DD}, /* A6DC */
3920 {0xA6DE,0xA6DE,0xA6DE}, {0xA6DF,0xA6DF,0xA6DF}, /* A6DE */
3921 {0xA6E0,0xA6E0,0xA6E0}, {0xA6E1,0xA6E1,0xA6E1}, /* A6E0 */
3922 {0xA6E2,0xA6E2,0xA6E2}, {0xA6E3,0xA6E3,0xA6E3}, /* A6E2 */
3923 {0xA6E4,0xA6E4,0xA6E4}, {0xA6E5,0xA6E5,0xA6E5}, /* A6E4 */
3924 {0xA6E6,0xA6E6,0xA6E6}, {0xA6E7,0xA6E7,0xA6E7}, /* A6E6 */
3925 {0xA6E8,0xA6E8,0xA6E8}, {0xA6E9,0xA6E9,0xA6E9}, /* A6E8 */
3926 {0xA6EA,0xA6EA,0xA6EA}, {0xA6EB,0xA6EB,0xA6EB}, /* A6EA */
3927 {0xA6EC,0xA6EC,0xA6EC}, {0xA6ED,0xA6ED,0xA6ED}, /* A6EC */
3928 {0xA6EE,0xA6EE,0xA6EE}, {0xA6EF,0xA6EF,0xA6EF}, /* A6EE */
3929 {0xA6F0,0xA6F0,0xA6F0}, {0xA6F1,0xA6F1,0xA6F1}, /* A6F0 */
3930 {0xA6F2,0xA6F2,0xA6F2}, {0xA6F3,0xA6F3,0xA6F3}, /* A6F2 */
3931 {0xA6F4,0xA6F4,0xA6F4}, {0xA6F5,0xA6F5,0xA6F5}, /* A6F4 */
3932 {0xA6F6,0xA6F6,0xA6F6}, {0xA6F7,0xA6F7,0xA6F7}, /* A6F6 */
3933 {0xA6F8,0xA6F8,0xA6F8}, {0xA6F9,0xA6F9,0xA6F9}, /* A6F8 */
3934 {0xA6FA,0xA6FA,0xA6FA}, {0xA6FB,0xA6FB,0xA6FB}, /* A6FA */
3935 {0xA6FC,0xA6FC,0xA6FC}, {0xA6FD,0xA6FD,0xA6FD}, /* A6FC */
3936 {0xA6FE,0xA6FE,0xA6FE}, {0xA6FF,0xA6FF,0xA6FF} /* A6FE */
3937 };
3938
3939 static MY_UNICASE_CHARACTER u520pA7[]={
3940 {0xA700,0xA700,0xA700}, {0xA701,0xA701,0xA701}, /* A700 */
3941 {0xA702,0xA702,0xA702}, {0xA703,0xA703,0xA703}, /* A702 */
3942 {0xA704,0xA704,0xA704}, {0xA705,0xA705,0xA705}, /* A704 */
3943 {0xA706,0xA706,0xA706}, {0xA707,0xA707,0xA707}, /* A706 */
3944 {0xA708,0xA708,0xA708}, {0xA709,0xA709,0xA709}, /* A708 */
3945 {0xA70A,0xA70A,0xA70A}, {0xA70B,0xA70B,0xA70B}, /* A70A */
3946 {0xA70C,0xA70C,0xA70C}, {0xA70D,0xA70D,0xA70D}, /* A70C */
3947 {0xA70E,0xA70E,0xA70E}, {0xA70F,0xA70F,0xA70F}, /* A70E */
3948 {0xA710,0xA710,0xA710}, {0xA711,0xA711,0xA711}, /* A710 */
3949 {0xA712,0xA712,0xA712}, {0xA713,0xA713,0xA713}, /* A712 */
3950 {0xA714,0xA714,0xA714}, {0xA715,0xA715,0xA715}, /* A714 */
3951 {0xA716,0xA716,0xA716}, {0xA717,0xA717,0xA717}, /* A716 */
3952 {0xA718,0xA718,0xA718}, {0xA719,0xA719,0xA719}, /* A718 */
3953 {0xA71A,0xA71A,0xA71A}, {0xA71B,0xA71B,0xA71B}, /* A71A */
3954 {0xA71C,0xA71C,0xA71C}, {0xA71D,0xA71D,0xA71D}, /* A71C */
3955 {0xA71E,0xA71E,0xA71E}, {0xA71F,0xA71F,0xA71F}, /* A71E */
3956 {0xA720,0xA720,0xA720}, {0xA721,0xA721,0xA721}, /* A720 */
3957 {0xA722,0xA723,0xA722}, {0xA722,0xA723,0xA722}, /* A722 */
3958 {0xA724,0xA725,0xA724}, {0xA724,0xA725,0xA724}, /* A724 */
3959 {0xA726,0xA727,0xA726}, {0xA726,0xA727,0xA726}, /* A726 */
3960 {0xA728,0xA729,0xA728}, {0xA728,0xA729,0xA728}, /* A728 */
3961 {0xA72A,0xA72B,0xA72A}, {0xA72A,0xA72B,0xA72A}, /* A72A */
3962 {0xA72C,0xA72D,0xA72C}, {0xA72C,0xA72D,0xA72C}, /* A72C */
3963 {0xA72E,0xA72F,0xA72E}, {0xA72E,0xA72F,0xA72E}, /* A72E */
3964 {0xA730,0xA730,0xA730}, {0xA731,0xA731,0xA731}, /* A730 */
3965 {0xA732,0xA733,0xA732}, {0xA732,0xA733,0xA732}, /* A732 */
3966 {0xA734,0xA735,0xA734}, {0xA734,0xA735,0xA734}, /* A734 */
3967 {0xA736,0xA737,0xA736}, {0xA736,0xA737,0xA736}, /* A736 */
3968 {0xA738,0xA739,0xA738}, {0xA738,0xA739,0xA738}, /* A738 */
3969 {0xA73A,0xA73B,0xA73A}, {0xA73A,0xA73B,0xA73A}, /* A73A */
3970 {0xA73C,0xA73D,0xA73C}, {0xA73C,0xA73D,0xA73C}, /* A73C */
3971 {0xA73E,0xA73F,0xA73E}, {0xA73E,0xA73F,0xA73E}, /* A73E */
3972 {0xA740,0xA741,0xA740}, {0xA740,0xA741,0xA740}, /* A740 */
3973 {0xA742,0xA743,0xA742}, {0xA742,0xA743,0xA742}, /* A742 */
3974 {0xA744,0xA745,0xA744}, {0xA744,0xA745,0xA744}, /* A744 */
3975 {0xA746,0xA747,0xA746}, {0xA746,0xA747,0xA746}, /* A746 */
3976 {0xA748,0xA749,0xA748}, {0xA748,0xA749,0xA748}, /* A748 */
3977 {0xA74A,0xA74B,0xA74A}, {0xA74A,0xA74B,0xA74A}, /* A74A */
3978 {0xA74C,0xA74D,0xA74C}, {0xA74C,0xA74D,0xA74C}, /* A74C */
3979 {0xA74E,0xA74F,0xA74E}, {0xA74E,0xA74F,0xA74E}, /* A74E */
3980 {0xA750,0xA751,0xA750}, {0xA750,0xA751,0xA750}, /* A750 */
3981 {0xA752,0xA753,0xA752}, {0xA752,0xA753,0xA752}, /* A752 */
3982 {0xA754,0xA755,0xA754}, {0xA754,0xA755,0xA754}, /* A754 */
3983 {0xA756,0xA757,0xA756}, {0xA756,0xA757,0xA756}, /* A756 */
3984 {0xA758,0xA759,0xA758}, {0xA758,0xA759,0xA758}, /* A758 */
3985 {0xA75A,0xA75B,0xA75A}, {0xA75A,0xA75B,0xA75A}, /* A75A */
3986 {0xA75C,0xA75D,0xA75C}, {0xA75C,0xA75D,0xA75C}, /* A75C */
3987 {0xA75E,0xA75F,0xA75E}, {0xA75E,0xA75F,0xA75E}, /* A75E */
3988 {0xA760,0xA761,0xA760}, {0xA760,0xA761,0xA760}, /* A760 */
3989 {0xA762,0xA763,0xA762}, {0xA762,0xA763,0xA762}, /* A762 */
3990 {0xA764,0xA765,0xA764}, {0xA764,0xA765,0xA764}, /* A764 */
3991 {0xA766,0xA767,0xA766}, {0xA766,0xA767,0xA766}, /* A766 */
3992 {0xA768,0xA769,0xA768}, {0xA768,0xA769,0xA768}, /* A768 */
3993 {0xA76A,0xA76B,0xA76A}, {0xA76A,0xA76B,0xA76A}, /* A76A */
3994 {0xA76C,0xA76D,0xA76C}, {0xA76C,0xA76D,0xA76C}, /* A76C */
3995 {0xA76E,0xA76F,0xA76E}, {0xA76E,0xA76F,0xA76E}, /* A76E */
3996 {0xA770,0xA770,0xA770}, {0xA771,0xA771,0xA771}, /* A770 */
3997 {0xA772,0xA772,0xA772}, {0xA773,0xA773,0xA773}, /* A772 */
3998 {0xA774,0xA774,0xA774}, {0xA775,0xA775,0xA775}, /* A774 */
3999 {0xA776,0xA776,0xA776}, {0xA777,0xA777,0xA777}, /* A776 */
4000 {0xA778,0xA778,0xA778}, {0xA779,0xA77A,0xA779}, /* A778 */
4001 {0xA779,0xA77A,0xA779}, {0xA77B,0xA77C,0xA77B}, /* A77A */
4002 {0xA77B,0xA77C,0xA77B}, {0xA77D,0x1D79,0xA77D}, /* A77C */
4003 {0xA77E,0xA77F,0xA77E}, {0xA77E,0xA77F,0xA77E}, /* A77E */
4004 {0xA780,0xA781,0xA780}, {0xA780,0xA781,0xA780}, /* A780 */
4005 {0xA782,0xA783,0xA782}, {0xA782,0xA783,0xA782}, /* A782 */
4006 {0xA784,0xA785,0xA784}, {0xA784,0xA785,0xA784}, /* A784 */
4007 {0xA786,0xA787,0xA786}, {0xA786,0xA787,0xA786}, /* A786 */
4008 {0xA788,0xA788,0xA788}, {0xA789,0xA789,0xA789}, /* A788 */
4009 {0xA78A,0xA78A,0xA78A}, {0xA78B,0xA78C,0xA78B}, /* A78A */
4010 {0xA78B,0xA78C,0xA78B}, {0xA78D,0xA78D,0xA78D}, /* A78C */
4011 {0xA78E,0xA78E,0xA78E}, {0xA78F,0xA78F,0xA78F}, /* A78E */
4012 {0xA790,0xA790,0xA790}, {0xA791,0xA791,0xA791}, /* A790 */
4013 {0xA792,0xA792,0xA792}, {0xA793,0xA793,0xA793}, /* A792 */
4014 {0xA794,0xA794,0xA794}, {0xA795,0xA795,0xA795}, /* A794 */
4015 {0xA796,0xA796,0xA796}, {0xA797,0xA797,0xA797}, /* A796 */
4016 {0xA798,0xA798,0xA798}, {0xA799,0xA799,0xA799}, /* A798 */
4017 {0xA79A,0xA79A,0xA79A}, {0xA79B,0xA79B,0xA79B}, /* A79A */
4018 {0xA79C,0xA79C,0xA79C}, {0xA79D,0xA79D,0xA79D}, /* A79C */
4019 {0xA79E,0xA79E,0xA79E}, {0xA79F,0xA79F,0xA79F}, /* A79E */
4020 {0xA7A0,0xA7A0,0xA7A0}, {0xA7A1,0xA7A1,0xA7A1}, /* A7A0 */
4021 {0xA7A2,0xA7A2,0xA7A2}, {0xA7A3,0xA7A3,0xA7A3}, /* A7A2 */
4022 {0xA7A4,0xA7A4,0xA7A4}, {0xA7A5,0xA7A5,0xA7A5}, /* A7A4 */
4023 {0xA7A6,0xA7A6,0xA7A6}, {0xA7A7,0xA7A7,0xA7A7}, /* A7A6 */
4024 {0xA7A8,0xA7A8,0xA7A8}, {0xA7A9,0xA7A9,0xA7A9}, /* A7A8 */
4025 {0xA7AA,0xA7AA,0xA7AA}, {0xA7AB,0xA7AB,0xA7AB}, /* A7AA */
4026 {0xA7AC,0xA7AC,0xA7AC}, {0xA7AD,0xA7AD,0xA7AD}, /* A7AC */
4027 {0xA7AE,0xA7AE,0xA7AE}, {0xA7AF,0xA7AF,0xA7AF}, /* A7AE */
4028 {0xA7B0,0xA7B0,0xA7B0}, {0xA7B1,0xA7B1,0xA7B1}, /* A7B0 */
4029 {0xA7B2,0xA7B2,0xA7B2}, {0xA7B3,0xA7B3,0xA7B3}, /* A7B2 */
4030 {0xA7B4,0xA7B4,0xA7B4}, {0xA7B5,0xA7B5,0xA7B5}, /* A7B4 */
4031 {0xA7B6,0xA7B6,0xA7B6}, {0xA7B7,0xA7B7,0xA7B7}, /* A7B6 */
4032 {0xA7B8,0xA7B8,0xA7B8}, {0xA7B9,0xA7B9,0xA7B9}, /* A7B8 */
4033 {0xA7BA,0xA7BA,0xA7BA}, {0xA7BB,0xA7BB,0xA7BB}, /* A7BA */
4034 {0xA7BC,0xA7BC,0xA7BC}, {0xA7BD,0xA7BD,0xA7BD}, /* A7BC */
4035 {0xA7BE,0xA7BE,0xA7BE}, {0xA7BF,0xA7BF,0xA7BF}, /* A7BE */
4036 {0xA7C0,0xA7C0,0xA7C0}, {0xA7C1,0xA7C1,0xA7C1}, /* A7C0 */
4037 {0xA7C2,0xA7C2,0xA7C2}, {0xA7C3,0xA7C3,0xA7C3}, /* A7C2 */
4038 {0xA7C4,0xA7C4,0xA7C4}, {0xA7C5,0xA7C5,0xA7C5}, /* A7C4 */
4039 {0xA7C6,0xA7C6,0xA7C6}, {0xA7C7,0xA7C7,0xA7C7}, /* A7C6 */
4040 {0xA7C8,0xA7C8,0xA7C8}, {0xA7C9,0xA7C9,0xA7C9}, /* A7C8 */
4041 {0xA7CA,0xA7CA,0xA7CA}, {0xA7CB,0xA7CB,0xA7CB}, /* A7CA */
4042 {0xA7CC,0xA7CC,0xA7CC}, {0xA7CD,0xA7CD,0xA7CD}, /* A7CC */
4043 {0xA7CE,0xA7CE,0xA7CE}, {0xA7CF,0xA7CF,0xA7CF}, /* A7CE */
4044 {0xA7D0,0xA7D0,0xA7D0}, {0xA7D1,0xA7D1,0xA7D1}, /* A7D0 */
4045 {0xA7D2,0xA7D2,0xA7D2}, {0xA7D3,0xA7D3,0xA7D3}, /* A7D2 */
4046 {0xA7D4,0xA7D4,0xA7D4}, {0xA7D5,0xA7D5,0xA7D5}, /* A7D4 */
4047 {0xA7D6,0xA7D6,0xA7D6}, {0xA7D7,0xA7D7,0xA7D7}, /* A7D6 */
4048 {0xA7D8,0xA7D8,0xA7D8}, {0xA7D9,0xA7D9,0xA7D9}, /* A7D8 */
4049 {0xA7DA,0xA7DA,0xA7DA}, {0xA7DB,0xA7DB,0xA7DB}, /* A7DA */
4050 {0xA7DC,0xA7DC,0xA7DC}, {0xA7DD,0xA7DD,0xA7DD}, /* A7DC */
4051 {0xA7DE,0xA7DE,0xA7DE}, {0xA7DF,0xA7DF,0xA7DF}, /* A7DE */
4052 {0xA7E0,0xA7E0,0xA7E0}, {0xA7E1,0xA7E1,0xA7E1}, /* A7E0 */
4053 {0xA7E2,0xA7E2,0xA7E2}, {0xA7E3,0xA7E3,0xA7E3}, /* A7E2 */
4054 {0xA7E4,0xA7E4,0xA7E4}, {0xA7E5,0xA7E5,0xA7E5}, /* A7E4 */
4055 {0xA7E6,0xA7E6,0xA7E6}, {0xA7E7,0xA7E7,0xA7E7}, /* A7E6 */
4056 {0xA7E8,0xA7E8,0xA7E8}, {0xA7E9,0xA7E9,0xA7E9}, /* A7E8 */
4057 {0xA7EA,0xA7EA,0xA7EA}, {0xA7EB,0xA7EB,0xA7EB}, /* A7EA */
4058 {0xA7EC,0xA7EC,0xA7EC}, {0xA7ED,0xA7ED,0xA7ED}, /* A7EC */
4059 {0xA7EE,0xA7EE,0xA7EE}, {0xA7EF,0xA7EF,0xA7EF}, /* A7EE */
4060 {0xA7F0,0xA7F0,0xA7F0}, {0xA7F1,0xA7F1,0xA7F1}, /* A7F0 */
4061 {0xA7F2,0xA7F2,0xA7F2}, {0xA7F3,0xA7F3,0xA7F3}, /* A7F2 */
4062 {0xA7F4,0xA7F4,0xA7F4}, {0xA7F5,0xA7F5,0xA7F5}, /* A7F4 */
4063 {0xA7F6,0xA7F6,0xA7F6}, {0xA7F7,0xA7F7,0xA7F7}, /* A7F6 */
4064 {0xA7F8,0xA7F8,0xA7F8}, {0xA7F9,0xA7F9,0xA7F9}, /* A7F8 */
4065 {0xA7FA,0xA7FA,0xA7FA}, {0xA7FB,0xA7FB,0xA7FB}, /* A7FA */
4066 {0xA7FC,0xA7FC,0xA7FC}, {0xA7FD,0xA7FD,0xA7FD}, /* A7FC */
4067 {0xA7FE,0xA7FE,0xA7FE}, {0xA7FF,0xA7FF,0xA7FF} /* A7FE */
4068 };
4069
4070 static MY_UNICASE_CHARACTER u520pFF[]={
4071 {0xFF00,0xFF00,0xFF00}, {0xFF01,0xFF01,0xFF01}, /* FF00 */
4072 {0xFF02,0xFF02,0xFF02}, {0xFF03,0xFF03,0xFF03}, /* FF02 */
4073 {0xFF04,0xFF04,0xFF04}, {0xFF05,0xFF05,0xFF05}, /* FF04 */
4074 {0xFF06,0xFF06,0xFF06}, {0xFF07,0xFF07,0xFF07}, /* FF06 */
4075 {0xFF08,0xFF08,0xFF08}, {0xFF09,0xFF09,0xFF09}, /* FF08 */
4076 {0xFF0A,0xFF0A,0xFF0A}, {0xFF0B,0xFF0B,0xFF0B}, /* FF0A */
4077 {0xFF0C,0xFF0C,0xFF0C}, {0xFF0D,0xFF0D,0xFF0D}, /* FF0C */
4078 {0xFF0E,0xFF0E,0xFF0E}, {0xFF0F,0xFF0F,0xFF0F}, /* FF0E */
4079 {0xFF10,0xFF10,0xFF10}, {0xFF11,0xFF11,0xFF11}, /* FF10 */
4080 {0xFF12,0xFF12,0xFF12}, {0xFF13,0xFF13,0xFF13}, /* FF12 */
4081 {0xFF14,0xFF14,0xFF14}, {0xFF15,0xFF15,0xFF15}, /* FF14 */
4082 {0xFF16,0xFF16,0xFF16}, {0xFF17,0xFF17,0xFF17}, /* FF16 */
4083 {0xFF18,0xFF18,0xFF18}, {0xFF19,0xFF19,0xFF19}, /* FF18 */
4084 {0xFF1A,0xFF1A,0xFF1A}, {0xFF1B,0xFF1B,0xFF1B}, /* FF1A */
4085 {0xFF1C,0xFF1C,0xFF1C}, {0xFF1D,0xFF1D,0xFF1D}, /* FF1C */
4086 {0xFF1E,0xFF1E,0xFF1E}, {0xFF1F,0xFF1F,0xFF1F}, /* FF1E */
4087 {0xFF20,0xFF20,0xFF20}, {0xFF21,0xFF41,0xFF21}, /* FF20 */
4088 {0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23}, /* FF22 */
4089 {0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25}, /* FF24 */
4090 {0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27}, /* FF26 */
4091 {0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29}, /* FF28 */
4092 {0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B}, /* FF2A */
4093 {0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D}, /* FF2C */
4094 {0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F}, /* FF2E */
4095 {0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31}, /* FF30 */
4096 {0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33}, /* FF32 */
4097 {0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35}, /* FF34 */
4098 {0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37}, /* FF36 */
4099 {0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39}, /* FF38 */
4100 {0xFF3A,0xFF5A,0xFF3A}, {0xFF3B,0xFF3B,0xFF3B}, /* FF3A */
4101 {0xFF3C,0xFF3C,0xFF3C}, {0xFF3D,0xFF3D,0xFF3D}, /* FF3C */
4102 {0xFF3E,0xFF3E,0xFF3E}, {0xFF3F,0xFF3F,0xFF3F}, /* FF3E */
4103 {0xFF40,0xFF40,0xFF40}, {0xFF21,0xFF41,0xFF21}, /* FF40 */
4104 {0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23}, /* FF42 */
4105 {0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25}, /* FF44 */
4106 {0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27}, /* FF46 */
4107 {0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29}, /* FF48 */
4108 {0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B}, /* FF4A */
4109 {0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D}, /* FF4C */
4110 {0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F}, /* FF4E */
4111 {0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31}, /* FF50 */
4112 {0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33}, /* FF52 */
4113 {0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35}, /* FF54 */
4114 {0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37}, /* FF56 */
4115 {0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39}, /* FF58 */
4116 {0xFF3A,0xFF5A,0xFF3A}, {0xFF5B,0xFF5B,0xFF5B}, /* FF5A */
4117 {0xFF5C,0xFF5C,0xFF5C}, {0xFF5D,0xFF5D,0xFF5D}, /* FF5C */
4118 {0xFF5E,0xFF5E,0xFF5E}, {0xFF5F,0xFF5F,0xFF5F}, /* FF5E */
4119 {0xFF60,0xFF60,0xFF60}, {0xFF61,0xFF61,0xFF61}, /* FF60 */
4120 {0xFF62,0xFF62,0xFF62}, {0xFF63,0xFF63,0xFF63}, /* FF62 */
4121 {0xFF64,0xFF64,0xFF64}, {0xFF65,0xFF65,0xFF65}, /* FF64 */
4122 {0xFF66,0xFF66,0xFF66}, {0xFF67,0xFF67,0xFF67}, /* FF66 */
4123 {0xFF68,0xFF68,0xFF68}, {0xFF69,0xFF69,0xFF69}, /* FF68 */
4124 {0xFF6A,0xFF6A,0xFF6A}, {0xFF6B,0xFF6B,0xFF6B}, /* FF6A */
4125 {0xFF6C,0xFF6C,0xFF6C}, {0xFF6D,0xFF6D,0xFF6D}, /* FF6C */
4126 {0xFF6E,0xFF6E,0xFF6E}, {0xFF6F,0xFF6F,0xFF6F}, /* FF6E */
4127 {0xFF70,0xFF70,0xFF70}, {0xFF71,0xFF71,0xFF71}, /* FF70 */
4128 {0xFF72,0xFF72,0xFF72}, {0xFF73,0xFF73,0xFF73}, /* FF72 */
4129 {0xFF74,0xFF74,0xFF74}, {0xFF75,0xFF75,0xFF75}, /* FF74 */
4130 {0xFF76,0xFF76,0xFF76}, {0xFF77,0xFF77,0xFF77}, /* FF76 */
4131 {0xFF78,0xFF78,0xFF78}, {0xFF79,0xFF79,0xFF79}, /* FF78 */
4132 {0xFF7A,0xFF7A,0xFF7A}, {0xFF7B,0xFF7B,0xFF7B}, /* FF7A */
4133 {0xFF7C,0xFF7C,0xFF7C}, {0xFF7D,0xFF7D,0xFF7D}, /* FF7C */
4134 {0xFF7E,0xFF7E,0xFF7E}, {0xFF7F,0xFF7F,0xFF7F}, /* FF7E */
4135 {0xFF80,0xFF80,0xFF80}, {0xFF81,0xFF81,0xFF81}, /* FF80 */
4136 {0xFF82,0xFF82,0xFF82}, {0xFF83,0xFF83,0xFF83}, /* FF82 */
4137 {0xFF84,0xFF84,0xFF84}, {0xFF85,0xFF85,0xFF85}, /* FF84 */
4138 {0xFF86,0xFF86,0xFF86}, {0xFF87,0xFF87,0xFF87}, /* FF86 */
4139 {0xFF88,0xFF88,0xFF88}, {0xFF89,0xFF89,0xFF89}, /* FF88 */
4140 {0xFF8A,0xFF8A,0xFF8A}, {0xFF8B,0xFF8B,0xFF8B}, /* FF8A */
4141 {0xFF8C,0xFF8C,0xFF8C}, {0xFF8D,0xFF8D,0xFF8D}, /* FF8C */
4142 {0xFF8E,0xFF8E,0xFF8E}, {0xFF8F,0xFF8F,0xFF8F}, /* FF8E */
4143 {0xFF90,0xFF90,0xFF90}, {0xFF91,0xFF91,0xFF91}, /* FF90 */
4144 {0xFF92,0xFF92,0xFF92}, {0xFF93,0xFF93,0xFF93}, /* FF92 */
4145 {0xFF94,0xFF94,0xFF94}, {0xFF95,0xFF95,0xFF95}, /* FF94 */
4146 {0xFF96,0xFF96,0xFF96}, {0xFF97,0xFF97,0xFF97}, /* FF96 */
4147 {0xFF98,0xFF98,0xFF98}, {0xFF99,0xFF99,0xFF99}, /* FF98 */
4148 {0xFF9A,0xFF9A,0xFF9A}, {0xFF9B,0xFF9B,0xFF9B}, /* FF9A */
4149 {0xFF9C,0xFF9C,0xFF9C}, {0xFF9D,0xFF9D,0xFF9D}, /* FF9C */
4150 {0xFF9E,0xFF9E,0xFF9E}, {0xFF9F,0xFF9F,0xFF9F}, /* FF9E */
4151 {0xFFA0,0xFFA0,0xFFA0}, {0xFFA1,0xFFA1,0xFFA1}, /* FFA0 */
4152 {0xFFA2,0xFFA2,0xFFA2}, {0xFFA3,0xFFA3,0xFFA3}, /* FFA2 */
4153 {0xFFA4,0xFFA4,0xFFA4}, {0xFFA5,0xFFA5,0xFFA5}, /* FFA4 */
4154 {0xFFA6,0xFFA6,0xFFA6}, {0xFFA7,0xFFA7,0xFFA7}, /* FFA6 */
4155 {0xFFA8,0xFFA8,0xFFA8}, {0xFFA9,0xFFA9,0xFFA9}, /* FFA8 */
4156 {0xFFAA,0xFFAA,0xFFAA}, {0xFFAB,0xFFAB,0xFFAB}, /* FFAA */
4157 {0xFFAC,0xFFAC,0xFFAC}, {0xFFAD,0xFFAD,0xFFAD}, /* FFAC */
4158 {0xFFAE,0xFFAE,0xFFAE}, {0xFFAF,0xFFAF,0xFFAF}, /* FFAE */
4159 {0xFFB0,0xFFB0,0xFFB0}, {0xFFB1,0xFFB1,0xFFB1}, /* FFB0 */
4160 {0xFFB2,0xFFB2,0xFFB2}, {0xFFB3,0xFFB3,0xFFB3}, /* FFB2 */
4161 {0xFFB4,0xFFB4,0xFFB4}, {0xFFB5,0xFFB5,0xFFB5}, /* FFB4 */
4162 {0xFFB6,0xFFB6,0xFFB6}, {0xFFB7,0xFFB7,0xFFB7}, /* FFB6 */
4163 {0xFFB8,0xFFB8,0xFFB8}, {0xFFB9,0xFFB9,0xFFB9}, /* FFB8 */
4164 {0xFFBA,0xFFBA,0xFFBA}, {0xFFBB,0xFFBB,0xFFBB}, /* FFBA */
4165 {0xFFBC,0xFFBC,0xFFBC}, {0xFFBD,0xFFBD,0xFFBD}, /* FFBC */
4166 {0xFFBE,0xFFBE,0xFFBE}, {0xFFBF,0xFFBF,0xFFBF}, /* FFBE */
4167 {0xFFC0,0xFFC0,0xFFC0}, {0xFFC1,0xFFC1,0xFFC1}, /* FFC0 */
4168 {0xFFC2,0xFFC2,0xFFC2}, {0xFFC3,0xFFC3,0xFFC3}, /* FFC2 */
4169 {0xFFC4,0xFFC4,0xFFC4}, {0xFFC5,0xFFC5,0xFFC5}, /* FFC4 */
4170 {0xFFC6,0xFFC6,0xFFC6}, {0xFFC7,0xFFC7,0xFFC7}, /* FFC6 */
4171 {0xFFC8,0xFFC8,0xFFC8}, {0xFFC9,0xFFC9,0xFFC9}, /* FFC8 */
4172 {0xFFCA,0xFFCA,0xFFCA}, {0xFFCB,0xFFCB,0xFFCB}, /* FFCA */
4173 {0xFFCC,0xFFCC,0xFFCC}, {0xFFCD,0xFFCD,0xFFCD}, /* FFCC */
4174 {0xFFCE,0xFFCE,0xFFCE}, {0xFFCF,0xFFCF,0xFFCF}, /* FFCE */
4175 {0xFFD0,0xFFD0,0xFFD0}, {0xFFD1,0xFFD1,0xFFD1}, /* FFD0 */
4176 {0xFFD2,0xFFD2,0xFFD2}, {0xFFD3,0xFFD3,0xFFD3}, /* FFD2 */
4177 {0xFFD4,0xFFD4,0xFFD4}, {0xFFD5,0xFFD5,0xFFD5}, /* FFD4 */
4178 {0xFFD6,0xFFD6,0xFFD6}, {0xFFD7,0xFFD7,0xFFD7}, /* FFD6 */
4179 {0xFFD8,0xFFD8,0xFFD8}, {0xFFD9,0xFFD9,0xFFD9}, /* FFD8 */
4180 {0xFFDA,0xFFDA,0xFFDA}, {0xFFDB,0xFFDB,0xFFDB}, /* FFDA */
4181 {0xFFDC,0xFFDC,0xFFDC}, {0xFFDD,0xFFDD,0xFFDD}, /* FFDC */
4182 {0xFFDE,0xFFDE,0xFFDE}, {0xFFDF,0xFFDF,0xFFDF}, /* FFDE */
4183 {0xFFE0,0xFFE0,0xFFE0}, {0xFFE1,0xFFE1,0xFFE1}, /* FFE0 */
4184 {0xFFE2,0xFFE2,0xFFE2}, {0xFFE3,0xFFE3,0xFFE3}, /* FFE2 */
4185 {0xFFE4,0xFFE4,0xFFE4}, {0xFFE5,0xFFE5,0xFFE5}, /* FFE4 */
4186 {0xFFE6,0xFFE6,0xFFE6}, {0xFFE7,0xFFE7,0xFFE7}, /* FFE6 */
4187 {0xFFE8,0xFFE8,0xFFE8}, {0xFFE9,0xFFE9,0xFFE9}, /* FFE8 */
4188 {0xFFEA,0xFFEA,0xFFEA}, {0xFFEB,0xFFEB,0xFFEB}, /* FFEA */
4189 {0xFFEC,0xFFEC,0xFFEC}, {0xFFED,0xFFED,0xFFED}, /* FFEC */
4190 {0xFFEE,0xFFEE,0xFFEE}, {0xFFEF,0xFFEF,0xFFEF}, /* FFEE */
4191 {0xFFF0,0xFFF0,0xFFF0}, {0xFFF1,0xFFF1,0xFFF1}, /* FFF0 */
4192 {0xFFF2,0xFFF2,0xFFF2}, {0xFFF3,0xFFF3,0xFFF3}, /* FFF2 */
4193 {0xFFF4,0xFFF4,0xFFF4}, {0xFFF5,0xFFF5,0xFFF5}, /* FFF4 */
4194 {0xFFF6,0xFFF6,0xFFF6}, {0xFFF7,0xFFF7,0xFFF7}, /* FFF6 */
4195 {0xFFF8,0xFFF8,0xFFF8}, {0xFFF9,0xFFF9,0xFFF9}, /* FFF8 */
4196 {0xFFFA,0xFFFA,0xFFFA}, {0xFFFB,0xFFFB,0xFFFB}, /* FFFA */
4197 {0xFFFC,0xFFFC,0xFFFC}, {0xFFFD,0xFFFD,0xFFFD}, /* FFFC */
4198 {0xFFFE,0xFFFE,0xFFFE}, {0xFFFF,0xFFFF,0xFFFF} /* FFFE */
4199 };
4200
4201 static MY_UNICASE_CHARACTER u520p104[]={
4202 {0x10400,0x10428,0x10400}, {0x10401,0x10429,0x10401}, /* 10400 */
4203 {0x10402,0x1042A,0x10402}, {0x10403,0x1042B,0x10403}, /* 10402 */
4204 {0x10404,0x1042C,0x10404}, {0x10405,0x1042D,0x10405}, /* 10404 */
4205 {0x10406,0x1042E,0x10406}, {0x10407,0x1042F,0x10407}, /* 10406 */
4206 {0x10408,0x10430,0x10408}, {0x10409,0x10431,0x10409}, /* 10408 */
4207 {0x1040A,0x10432,0x1040A}, {0x1040B,0x10433,0x1040B}, /* 1040A */
4208 {0x1040C,0x10434,0x1040C}, {0x1040D,0x10435,0x1040D}, /* 1040C */
4209 {0x1040E,0x10436,0x1040E}, {0x1040F,0x10437,0x1040F}, /* 1040E */
4210 {0x10410,0x10438,0x10410}, {0x10411,0x10439,0x10411}, /* 10410 */
4211 {0x10412,0x1043A,0x10412}, {0x10413,0x1043B,0x10413}, /* 10412 */
4212 {0x10414,0x1043C,0x10414}, {0x10415,0x1043D,0x10415}, /* 10414 */
4213 {0x10416,0x1043E,0x10416}, {0x10417,0x1043F,0x10417}, /* 10416 */
4214 {0x10418,0x10440,0x10418}, {0x10419,0x10441,0x10419}, /* 10418 */
4215 {0x1041A,0x10442,0x1041A}, {0x1041B,0x10443,0x1041B}, /* 1041A */
4216 {0x1041C,0x10444,0x1041C}, {0x1041D,0x10445,0x1041D}, /* 1041C */
4217 {0x1041E,0x10446,0x1041E}, {0x1041F,0x10447,0x1041F}, /* 1041E */
4218 {0x10420,0x10448,0x10420}, {0x10421,0x10449,0x10421}, /* 10420 */
4219 {0x10422,0x1044A,0x10422}, {0x10423,0x1044B,0x10423}, /* 10422 */
4220 {0x10424,0x1044C,0x10424}, {0x10425,0x1044D,0x10425}, /* 10424 */
4221 {0x10426,0x1044E,0x10426}, {0x10427,0x1044F,0x10427}, /* 10426 */
4222 {0x10400,0x10428,0x10400}, {0x10401,0x10429,0x10401}, /* 10428 */
4223 {0x10402,0x1042A,0x10402}, {0x10403,0x1042B,0x10403}, /* 1042A */
4224 {0x10404,0x1042C,0x10404}, {0x10405,0x1042D,0x10405}, /* 1042C */
4225 {0x10406,0x1042E,0x10406}, {0x10407,0x1042F,0x10407}, /* 1042E */
4226 {0x10408,0x10430,0x10408}, {0x10409,0x10431,0x10409}, /* 10430 */
4227 {0x1040A,0x10432,0x1040A}, {0x1040B,0x10433,0x1040B}, /* 10432 */
4228 {0x1040C,0x10434,0x1040C}, {0x1040D,0x10435,0x1040D}, /* 10434 */
4229 {0x1040E,0x10436,0x1040E}, {0x1040F,0x10437,0x1040F}, /* 10436 */
4230 {0x10410,0x10438,0x10410}, {0x10411,0x10439,0x10411}, /* 10438 */
4231 {0x10412,0x1043A,0x10412}, {0x10413,0x1043B,0x10413}, /* 1043A */
4232 {0x10414,0x1043C,0x10414}, {0x10415,0x1043D,0x10415}, /* 1043C */
4233 {0x10416,0x1043E,0x10416}, {0x10417,0x1043F,0x10417}, /* 1043E */
4234 {0x10418,0x10440,0x10418}, {0x10419,0x10441,0x10419}, /* 10440 */
4235 {0x1041A,0x10442,0x1041A}, {0x1041B,0x10443,0x1041B}, /* 10442 */
4236 {0x1041C,0x10444,0x1041C}, {0x1041D,0x10445,0x1041D}, /* 10444 */
4237 {0x1041E,0x10446,0x1041E}, {0x1041F,0x10447,0x1041F}, /* 10446 */
4238 {0x10420,0x10448,0x10420}, {0x10421,0x10449,0x10421}, /* 10448 */
4239 {0x10422,0x1044A,0x10422}, {0x10423,0x1044B,0x10423}, /* 1044A */
4240 {0x10424,0x1044C,0x10424}, {0x10425,0x1044D,0x10425}, /* 1044C */
4241 {0x10426,0x1044E,0x10426}, {0x10427,0x1044F,0x10427}, /* 1044E */
4242 {0x10450,0x10450,0x10450}, {0x10451,0x10451,0x10451}, /* 10450 */
4243 {0x10452,0x10452,0x10452}, {0x10453,0x10453,0x10453}, /* 10452 */
4244 {0x10454,0x10454,0x10454}, {0x10455,0x10455,0x10455}, /* 10454 */
4245 {0x10456,0x10456,0x10456}, {0x10457,0x10457,0x10457}, /* 10456 */
4246 {0x10458,0x10458,0x10458}, {0x10459,0x10459,0x10459}, /* 10458 */
4247 {0x1045A,0x1045A,0x1045A}, {0x1045B,0x1045B,0x1045B}, /* 1045A */
4248 {0x1045C,0x1045C,0x1045C}, {0x1045D,0x1045D,0x1045D}, /* 1045C */
4249 {0x1045E,0x1045E,0x1045E}, {0x1045F,0x1045F,0x1045F}, /* 1045E */
4250 {0x10460,0x10460,0x10460}, {0x10461,0x10461,0x10461}, /* 10460 */
4251 {0x10462,0x10462,0x10462}, {0x10463,0x10463,0x10463}, /* 10462 */
4252 {0x10464,0x10464,0x10464}, {0x10465,0x10465,0x10465}, /* 10464 */
4253 {0x10466,0x10466,0x10466}, {0x10467,0x10467,0x10467}, /* 10466 */
4254 {0x10468,0x10468,0x10468}, {0x10469,0x10469,0x10469}, /* 10468 */
4255 {0x1046A,0x1046A,0x1046A}, {0x1046B,0x1046B,0x1046B}, /* 1046A */
4256 {0x1046C,0x1046C,0x1046C}, {0x1046D,0x1046D,0x1046D}, /* 1046C */
4257 {0x1046E,0x1046E,0x1046E}, {0x1046F,0x1046F,0x1046F}, /* 1046E */
4258 {0x10470,0x10470,0x10470}, {0x10471,0x10471,0x10471}, /* 10470 */
4259 {0x10472,0x10472,0x10472}, {0x10473,0x10473,0x10473}, /* 10472 */
4260 {0x10474,0x10474,0x10474}, {0x10475,0x10475,0x10475}, /* 10474 */
4261 {0x10476,0x10476,0x10476}, {0x10477,0x10477,0x10477}, /* 10476 */
4262 {0x10478,0x10478,0x10478}, {0x10479,0x10479,0x10479}, /* 10478 */
4263 {0x1047A,0x1047A,0x1047A}, {0x1047B,0x1047B,0x1047B}, /* 1047A */
4264 {0x1047C,0x1047C,0x1047C}, {0x1047D,0x1047D,0x1047D}, /* 1047C */
4265 {0x1047E,0x1047E,0x1047E}, {0x1047F,0x1047F,0x1047F}, /* 1047E */
4266 {0x10480,0x10480,0x10480}, {0x10481,0x10481,0x10481}, /* 10480 */
4267 {0x10482,0x10482,0x10482}, {0x10483,0x10483,0x10483}, /* 10482 */
4268 {0x10484,0x10484,0x10484}, {0x10485,0x10485,0x10485}, /* 10484 */
4269 {0x10486,0x10486,0x10486}, {0x10487,0x10487,0x10487}, /* 10486 */
4270 {0x10488,0x10488,0x10488}, {0x10489,0x10489,0x10489}, /* 10488 */
4271 {0x1048A,0x1048A,0x1048A}, {0x1048B,0x1048B,0x1048B}, /* 1048A */
4272 {0x1048C,0x1048C,0x1048C}, {0x1048D,0x1048D,0x1048D}, /* 1048C */
4273 {0x1048E,0x1048E,0x1048E}, {0x1048F,0x1048F,0x1048F}, /* 1048E */
4274 {0x10490,0x10490,0x10490}, {0x10491,0x10491,0x10491}, /* 10490 */
4275 {0x10492,0x10492,0x10492}, {0x10493,0x10493,0x10493}, /* 10492 */
4276 {0x10494,0x10494,0x10494}, {0x10495,0x10495,0x10495}, /* 10494 */
4277 {0x10496,0x10496,0x10496}, {0x10497,0x10497,0x10497}, /* 10496 */
4278 {0x10498,0x10498,0x10498}, {0x10499,0x10499,0x10499}, /* 10498 */
4279 {0x1049A,0x1049A,0x1049A}, {0x1049B,0x1049B,0x1049B}, /* 1049A */
4280 {0x1049C,0x1049C,0x1049C}, {0x1049D,0x1049D,0x1049D}, /* 1049C */
4281 {0x1049E,0x1049E,0x1049E}, {0x1049F,0x1049F,0x1049F}, /* 1049E */
4282 {0x104A0,0x104A0,0x104A0}, {0x104A1,0x104A1,0x104A1}, /* 104A0 */
4283 {0x104A2,0x104A2,0x104A2}, {0x104A3,0x104A3,0x104A3}, /* 104A2 */
4284 {0x104A4,0x104A4,0x104A4}, {0x104A5,0x104A5,0x104A5}, /* 104A4 */
4285 {0x104A6,0x104A6,0x104A6}, {0x104A7,0x104A7,0x104A7}, /* 104A6 */
4286 {0x104A8,0x104A8,0x104A8}, {0x104A9,0x104A9,0x104A9}, /* 104A8 */
4287 {0x104AA,0x104AA,0x104AA}, {0x104AB,0x104AB,0x104AB}, /* 104AA */
4288 {0x104AC,0x104AC,0x104AC}, {0x104AD,0x104AD,0x104AD}, /* 104AC */
4289 {0x104AE,0x104AE,0x104AE}, {0x104AF,0x104AF,0x104AF}, /* 104AE */
4290 {0x104B0,0x104B0,0x104B0}, {0x104B1,0x104B1,0x104B1}, /* 104B0 */
4291 {0x104B2,0x104B2,0x104B2}, {0x104B3,0x104B3,0x104B3}, /* 104B2 */
4292 {0x104B4,0x104B4,0x104B4}, {0x104B5,0x104B5,0x104B5}, /* 104B4 */
4293 {0x104B6,0x104B6,0x104B6}, {0x104B7,0x104B7,0x104B7}, /* 104B6 */
4294 {0x104B8,0x104B8,0x104B8}, {0x104B9,0x104B9,0x104B9}, /* 104B8 */
4295 {0x104BA,0x104BA,0x104BA}, {0x104BB,0x104BB,0x104BB}, /* 104BA */
4296 {0x104BC,0x104BC,0x104BC}, {0x104BD,0x104BD,0x104BD}, /* 104BC */
4297 {0x104BE,0x104BE,0x104BE}, {0x104BF,0x104BF,0x104BF}, /* 104BE */
4298 {0x104C0,0x104C0,0x104C0}, {0x104C1,0x104C1,0x104C1}, /* 104C0 */
4299 {0x104C2,0x104C2,0x104C2}, {0x104C3,0x104C3,0x104C3}, /* 104C2 */
4300 {0x104C4,0x104C4,0x104C4}, {0x104C5,0x104C5,0x104C5}, /* 104C4 */
4301 {0x104C6,0x104C6,0x104C6}, {0x104C7,0x104C7,0x104C7}, /* 104C6 */
4302 {0x104C8,0x104C8,0x104C8}, {0x104C9,0x104C9,0x104C9}, /* 104C8 */
4303 {0x104CA,0x104CA,0x104CA}, {0x104CB,0x104CB,0x104CB}, /* 104CA */
4304 {0x104CC,0x104CC,0x104CC}, {0x104CD,0x104CD,0x104CD}, /* 104CC */
4305 {0x104CE,0x104CE,0x104CE}, {0x104CF,0x104CF,0x104CF}, /* 104CE */
4306 {0x104D0,0x104D0,0x104D0}, {0x104D1,0x104D1,0x104D1}, /* 104D0 */
4307 {0x104D2,0x104D2,0x104D2}, {0x104D3,0x104D3,0x104D3}, /* 104D2 */
4308 {0x104D4,0x104D4,0x104D4}, {0x104D5,0x104D5,0x104D5}, /* 104D4 */
4309 {0x104D6,0x104D6,0x104D6}, {0x104D7,0x104D7,0x104D7}, /* 104D6 */
4310 {0x104D8,0x104D8,0x104D8}, {0x104D9,0x104D9,0x104D9}, /* 104D8 */
4311 {0x104DA,0x104DA,0x104DA}, {0x104DB,0x104DB,0x104DB}, /* 104DA */
4312 {0x104DC,0x104DC,0x104DC}, {0x104DD,0x104DD,0x104DD}, /* 104DC */
4313 {0x104DE,0x104DE,0x104DE}, {0x104DF,0x104DF,0x104DF}, /* 104DE */
4314 {0x104E0,0x104E0,0x104E0}, {0x104E1,0x104E1,0x104E1}, /* 104E0 */
4315 {0x104E2,0x104E2,0x104E2}, {0x104E3,0x104E3,0x104E3}, /* 104E2 */
4316 {0x104E4,0x104E4,0x104E4}, {0x104E5,0x104E5,0x104E5}, /* 104E4 */
4317 {0x104E6,0x104E6,0x104E6}, {0x104E7,0x104E7,0x104E7}, /* 104E6 */
4318 {0x104E8,0x104E8,0x104E8}, {0x104E9,0x104E9,0x104E9}, /* 104E8 */
4319 {0x104EA,0x104EA,0x104EA}, {0x104EB,0x104EB,0x104EB}, /* 104EA */
4320 {0x104EC,0x104EC,0x104EC}, {0x104ED,0x104ED,0x104ED}, /* 104EC */
4321 {0x104EE,0x104EE,0x104EE}, {0x104EF,0x104EF,0x104EF}, /* 104EE */
4322 {0x104F0,0x104F0,0x104F0}, {0x104F1,0x104F1,0x104F1}, /* 104F0 */
4323 {0x104F2,0x104F2,0x104F2}, {0x104F3,0x104F3,0x104F3}, /* 104F2 */
4324 {0x104F4,0x104F4,0x104F4}, {0x104F5,0x104F5,0x104F5}, /* 104F4 */
4325 {0x104F6,0x104F6,0x104F6}, {0x104F7,0x104F7,0x104F7}, /* 104F6 */
4326 {0x104F8,0x104F8,0x104F8}, {0x104F9,0x104F9,0x104F9}, /* 104F8 */
4327 {0x104FA,0x104FA,0x104FA}, {0x104FB,0x104FB,0x104FB}, /* 104FA */
4328 {0x104FC,0x104FC,0x104FC}, {0x104FD,0x104FD,0x104FD}, /* 104FC */
4329 {0x104FE,0x104FE,0x104FE}, {0x104FF,0x104FF,0x104FF} /* 104FE */
4330 };
4331
4332
4333 MY_UNICASE_CHARACTER *my_unicase_pages_unicode520[4352]=
4334 {
4335 u520p00, u520p01, u520p02, u520p03, u520p04, u520p05, NULL, NULL,
4336 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4337 u520p10, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4338 NULL, NULL, NULL, NULL, NULL, u520p1D, u520p1E, u520p1F,
4339 NULL, u520p21, NULL, NULL, u520p24, NULL, NULL, NULL,
4340 NULL, NULL, NULL, NULL, u520p2C, u520p2D, NULL, NULL,
4341 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4342 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4343 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4344 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4345 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4346 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4347 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4348 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4349 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4350 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4351 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4352 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4353 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4354 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4355 NULL, NULL, NULL, NULL, NULL, NULL, u520pA6, u520pA7,
4356 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4357 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4358 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4359 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4360 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4361 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4362 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4363 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4364 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4365 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4366 NULL, NULL, NULL, NULL, NULL, NULL, NULL, u520pFF,
4367 NULL, NULL, NULL, NULL,u520p104, NULL, NULL, NULL,
4368 };
4369
4370
4371 MY_UNICASE_INFO my_unicase_unicode520=
4372 {
4373 0x104FF,
4374 my_unicase_pages_unicode520
4375 };
4376
4377
4378 static inline void
my_tosort_unicode(MY_UNICASE_INFO * uni_plane,my_wc_t * wc,uint flags)4379 my_tosort_unicode(MY_UNICASE_INFO *uni_plane, my_wc_t *wc, uint flags)
4380 {
4381 if (*wc <= uni_plane->maxchar)
4382 {
4383 MY_UNICASE_CHARACTER *page;
4384 if ((page= uni_plane->page[*wc >> 8]))
4385 *wc= (flags & MY_CS_LOWER_SORT) ?
4386 page[*wc & 0xFF].tolower :
4387 page[*wc & 0xFF].sort;
4388 }
4389 else
4390 {
4391 *wc= MY_CS_REPLACEMENT_CHARACTER;
4392 }
4393 }
4394
4395
4396 /*
4397 ** Compare string against string with wildcard
4398 ** This function is used in UTF8 and UCS2
4399 **
4400 ** 0 if matched
4401 ** -1 if not matched with wildcard
4402 ** 1 if matched with wildcard
4403 */
4404
4405 static
my_wildcmp_unicode_impl(CHARSET_INFO * cs,const char * str,const char * str_end,const char * wildstr,const char * wildend,int escape,int w_one,int w_many,MY_UNICASE_INFO * weights,int recurse_level)4406 int my_wildcmp_unicode_impl(CHARSET_INFO *cs,
4407 const char *str,const char *str_end,
4408 const char *wildstr,const char *wildend,
4409 int escape, int w_one, int w_many,
4410 MY_UNICASE_INFO *weights, int recurse_level)
4411 {
4412 int result= -1; /* Not found, using wildcards */
4413 my_wc_t s_wc, w_wc;
4414 int scan;
4415 my_charset_conv_mb_wc mb_wc= cs->cset->mb_wc;
4416
4417 if (my_string_stack_guard && my_string_stack_guard(recurse_level))
4418 return 1;
4419 while (wildstr != wildend)
4420 {
4421 while (1)
4422 {
4423 my_bool escaped= 0;
4424 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
4425 (const uchar*)wildend)) <= 0)
4426 return 1;
4427
4428 if (w_wc == (my_wc_t) w_many)
4429 {
4430 result= 1; /* Found an anchor char */
4431 break;
4432 }
4433
4434 wildstr+= scan;
4435 if (w_wc == (my_wc_t) escape && wildstr < wildend)
4436 {
4437 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
4438 (const uchar*)wildend)) <= 0)
4439 return 1;
4440 wildstr+= scan;
4441 escaped= 1;
4442 }
4443
4444 if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
4445 (const uchar*)str_end)) <= 0)
4446 return 1;
4447 str+= scan;
4448
4449 if (!escaped && w_wc == (my_wc_t) w_one)
4450 {
4451 result= 1; /* Found an anchor char */
4452 }
4453 else
4454 {
4455 if (weights)
4456 {
4457 my_tosort_unicode(weights, &s_wc, cs->state);
4458 my_tosort_unicode(weights, &w_wc, cs->state);
4459 }
4460 if (s_wc != w_wc)
4461 return 1; /* No match */
4462 }
4463 if (wildstr == wildend)
4464 return (str != str_end); /* Match if both are at end */
4465 }
4466
4467 if (w_wc == (my_wc_t) w_many)
4468 { /* Found w_many */
4469 /* Remove any '%' and '_' from the wild search string */
4470 for ( ; wildstr != wildend ; )
4471 {
4472 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
4473 (const uchar*)wildend)) <= 0)
4474 return 1;
4475
4476 if (w_wc == (my_wc_t) w_many)
4477 {
4478 wildstr+= scan;
4479 continue;
4480 }
4481
4482 if (w_wc == (my_wc_t) w_one)
4483 {
4484 wildstr+= scan;
4485 if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
4486 (const uchar*)str_end)) <= 0)
4487 return 1;
4488 str+= scan;
4489 continue;
4490 }
4491 break; /* Not a wild character */
4492 }
4493
4494 if (wildstr == wildend)
4495 return 0; /* Ok if w_many is last */
4496
4497 if (str == str_end)
4498 return -1;
4499
4500 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
4501 (const uchar*)wildend)) <= 0)
4502 return 1;
4503 wildstr+= scan;
4504
4505 if (w_wc == (my_wc_t) escape)
4506 {
4507 if (wildstr < wildend)
4508 {
4509 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
4510 (const uchar*)wildend)) <= 0)
4511 return 1;
4512 wildstr+= scan;
4513 }
4514 }
4515
4516 while (1)
4517 {
4518 /* Skip until the first character from wildstr is found */
4519 while (str != str_end)
4520 {
4521 if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
4522 (const uchar*)str_end)) <= 0)
4523 return 1;
4524 if (weights)
4525 {
4526 my_tosort_unicode(weights, &s_wc, cs->state);
4527 my_tosort_unicode(weights, &w_wc, cs->state);
4528 }
4529
4530 if (s_wc == w_wc)
4531 break;
4532 str+= scan;
4533 }
4534 if (str == str_end)
4535 return -1;
4536
4537 str+= scan;
4538 result= my_wildcmp_unicode_impl(cs, str, str_end, wildstr, wildend,
4539 escape, w_one, w_many,
4540 weights, recurse_level + 1);
4541 if (result <= 0)
4542 return result;
4543 }
4544 }
4545 }
4546 return (str != str_end ? 1 : 0);
4547 }
4548
4549
4550 int
my_wildcmp_unicode(CHARSET_INFO * cs,const char * str,const char * str_end,const char * wildstr,const char * wildend,int escape,int w_one,int w_many,MY_UNICASE_INFO * weights)4551 my_wildcmp_unicode(CHARSET_INFO *cs,
4552 const char *str,const char *str_end,
4553 const char *wildstr,const char *wildend,
4554 int escape, int w_one, int w_many,
4555 MY_UNICASE_INFO *weights)
4556 {
4557 return my_wildcmp_unicode_impl(cs, str, str_end,
4558 wildstr, wildend,
4559 escape, w_one, w_many, weights, 1);
4560 }
4561
4562
4563 /**
4564 Pad buffer with weights for space characters.
4565
4566 @details
4567 This functions fills the buffer pointed by "str"
4568 with weights of space character. Not more than
4569 "nweights" weights are put. If at some iteration
4570 step only a half of weight can fit
4571 (which is possible if buffer length is an odd number)
4572 then a half of this weight is put - this gives
4573 a little bit better ORDER BY result for long strings.
4574
4575 @str Buffer
4576 @strend End of buffer
4577 @nweights Number of weights
4578
4579 @return Result length
4580 */
4581
4582 size_t
my_strxfrm_pad_nweights_unicode(uchar * str,uchar * strend,size_t nweights)4583 my_strxfrm_pad_nweights_unicode(uchar *str, uchar *strend, size_t nweights)
4584 {
4585 uchar *str0;
4586 DBUG_ASSERT(str && str <= strend);
4587 for (str0= str; str < strend && nweights; nweights--)
4588 {
4589 *str++= 0x00;
4590 if (str < strend)
4591 *str++= 0x20;
4592 }
4593 return str - str0;
4594 }
4595
4596
4597 /**
4598 Pad buffer with weights for space characters.
4599
4600 @details
4601 This functions fills the buffer pointed by "str"
4602 with weights of space character. Putting half of weight
4603 (when buffer length is an odd number) is OK.
4604
4605 @str Buffer
4606 @strend End of buffer
4607
4608 @return Result length
4609 */
4610
4611 size_t
my_strxfrm_pad_unicode(uchar * str,uchar * strend)4612 my_strxfrm_pad_unicode(uchar *str, uchar *strend)
4613 {
4614 uchar *str0= str;
4615 DBUG_ASSERT(str && str <= strend);
4616 for ( ; str < strend ; )
4617 {
4618 *str++= 0x00;
4619 if (str < strend)
4620 *str++= 0x20;
4621 }
4622 return str - str0;
4623 }
4624
4625
4626 /*
4627 For BMP-only collations that use 2 bytes per weight.
4628 */
4629 size_t
my_strnxfrmlen_unicode(CHARSET_INFO * cs,size_t len)4630 my_strnxfrmlen_unicode(CHARSET_INFO *cs, size_t len)
4631 {
4632
4633 return ((len + cs->mbmaxlen - 1) / cs->mbmaxlen) * 2;
4634 }
4635
4636 size_t
my_strnxfrm_unicode_full_bin_internal(CHARSET_INFO * cs,uchar * dst,uchar * de,uint * nweights,const uchar * src,const uchar * se)4637 my_strnxfrm_unicode_full_bin_internal(CHARSET_INFO *cs,
4638 uchar *dst, uchar *de, uint *nweights,
4639 const uchar *src, const uchar *se)
4640 {
4641 my_wc_t UNINIT_VAR(wc);
4642 uchar *dst0= dst;
4643
4644 DBUG_ASSERT(src || !se);
4645 DBUG_ASSERT(cs->state & MY_CS_BINSORT);
4646
4647 for (; dst < de && *nweights; (*nweights)--)
4648 {
4649 int res;
4650 if ((res= cs->cset->mb_wc(cs, &wc, src, se)) <= 0)
4651 break;
4652 src+= res;
4653 *dst++= (uchar) (wc >> 16);
4654 if (dst < de)
4655 {
4656 *dst++= (uchar) ((wc >> 8) & 0xFF);
4657 if (dst < de)
4658 *dst++= (uchar) (wc & 0xFF);
4659 }
4660 }
4661 return dst - dst0;
4662 }
4663
4664
4665 /*
4666 Store sorting weights using 3 bytes per character.
4667 This function is shared between utf8mb4_bin, utf16_bin, utf32_bin.
4668 */
4669 size_t
my_strnxfrm_unicode_full_bin(CHARSET_INFO * cs,uchar * dst,size_t dstlen,uint nweights,const uchar * src,size_t srclen,uint flags)4670 my_strnxfrm_unicode_full_bin(CHARSET_INFO *cs,
4671 uchar *dst, size_t dstlen, uint nweights,
4672 const uchar *src, size_t srclen, uint flags)
4673 {
4674 uchar *dst0= dst;
4675 uchar *de= dst + dstlen;
4676
4677 dst+= my_strnxfrm_unicode_full_bin_internal(cs, dst, de, &nweights,
4678 src, src + srclen);
4679 DBUG_ASSERT(dst <= de); /* Safety */
4680
4681 if (flags & MY_STRXFRM_PAD_WITH_SPACE)
4682 {
4683 for ( ; dst < de && nweights; nweights--)
4684 {
4685 *dst++= 0x00;
4686 if (dst < de)
4687 {
4688 *dst++= 0x00;
4689 if (dst < de)
4690 *dst++= 0x20;
4691 }
4692 }
4693 }
4694
4695 my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
4696
4697 if (flags & MY_STRXFRM_PAD_TO_MAXLEN)
4698 {
4699 while (dst < de)
4700 {
4701 *dst++= 0x00;
4702 if (dst < de)
4703 {
4704 *dst++= 0x00;
4705 if (dst < de)
4706 *dst++= 0x20;
4707 }
4708 }
4709 }
4710 return dst - dst0;
4711 }
4712
4713
4714 size_t
my_strnxfrm_unicode_full_nopad_bin(CHARSET_INFO * cs,uchar * dst,size_t dstlen,uint nweights,const uchar * src,size_t srclen,uint flags)4715 my_strnxfrm_unicode_full_nopad_bin(CHARSET_INFO *cs,
4716 uchar *dst, size_t dstlen, uint nweights,
4717 const uchar *src, size_t srclen, uint flags)
4718 {
4719 uchar *dst0= dst;
4720 uchar *de= dst + dstlen;
4721
4722 dst+= my_strnxfrm_unicode_full_bin_internal(cs, dst, de, &nweights,
4723 src, src + srclen);
4724 DBUG_ASSERT(dst <= de); /* Safety */
4725
4726 if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
4727 {
4728 size_t len= de - dst;
4729 set_if_smaller(len, nweights * 3);
4730 memset(dst, 0x00, len);
4731 dst+= len;
4732 }
4733
4734 my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
4735
4736 if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && dst < de)
4737 {
4738 memset(dst, 0x00, de - dst);
4739 dst= de;
4740 }
4741 return dst - dst0;
4742 }
4743
4744
4745 size_t
my_strnxfrmlen_unicode_full_bin(CHARSET_INFO * cs,size_t len)4746 my_strnxfrmlen_unicode_full_bin(CHARSET_INFO *cs, size_t len)
4747 {
4748 return ((len + 3) / cs->mbmaxlen) * 3;
4749 }
4750 #endif /* HAVE_UNIDATA */
4751
4752
4753 #ifdef HAVE_CHARSET_utf8
4754
4755 /*
4756 We consider bytes with code more than 127 as a letter.
4757 This guarantees that word boundaries work fine with regular
4758 expressions. Note, there is no need to mark byte 255 as a
4759 letter, it is illegal byte in UTF8.
4760 */
4761 static const uchar ctype_utf8[] = {
4762 0,
4763 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
4764 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
4765 72, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
4766 132,132,132,132,132,132,132,132,132,132, 16, 16, 16, 16, 16, 16,
4767 16,129,129,129,129,129,129, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4768 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 16, 16, 16, 16,
4769 16,130,130,130,130,130,130, 2, 2, 2, 2, 2, 2, 2, 2, 2,
4770 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 16, 16, 16, 32,
4771 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4772 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4773 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4774 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4775 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4776 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4777 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4778 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0
4779 };
4780
4781 /* The below are taken from usa7 implementation */
4782
4783 static const uchar to_lower_utf8[] = {
4784 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
4785 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
4786 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
4787 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
4788 64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
4789 112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95,
4790 96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
4791 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
4792 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
4793 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
4794 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
4795 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
4796 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
4797 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
4798 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
4799 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
4800 };
4801
4802 static const uchar to_upper_utf8[] = {
4803 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
4804 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
4805 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
4806 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
4807 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
4808 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
4809 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
4810 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
4811 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
4812 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
4813 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
4814 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
4815 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
4816 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
4817 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
4818 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
4819 };
4820
my_utf8_uni(CHARSET_INFO * cs,my_wc_t * pwc,const uchar * s,const uchar * e)4821 static int my_utf8_uni(CHARSET_INFO *cs __attribute__((unused)),
4822 my_wc_t * pwc, const uchar *s, const uchar *e)
4823 {
4824 return my_mb_wc_utf8mb3_quick(pwc, s, e);
4825 }
4826
4827
4828 /*
4829 The same as above, but without range check
4830 for example, for a null-terminated string
4831 */
my_utf8_uni_no_range(CHARSET_INFO * cs,my_wc_t * pwc,const uchar * s)4832 static int my_utf8_uni_no_range(CHARSET_INFO *cs __attribute__((unused)),
4833 my_wc_t * pwc, const uchar *s)
4834 {
4835 uchar c;
4836
4837 c= s[0];
4838 if (c < 0x80)
4839 {
4840 *pwc = c;
4841 return 1;
4842 }
4843
4844 if (c < 0xc2)
4845 return MY_CS_ILSEQ;
4846
4847 if (c < 0xe0)
4848 {
4849 if (!((s[1] ^ 0x80) < 0x40))
4850 return MY_CS_ILSEQ;
4851
4852 *pwc= UTF8MB2_CODE(c, s[1]);
4853 return 2;
4854 }
4855
4856 if (c < 0xf0)
4857 {
4858 if (!IS_UTF8MB3_STEP2(c, s[1], s[2]))
4859 return MY_CS_ILSEQ;
4860
4861 *pwc= UTF8MB3_CODE(c, s[1], s[2]);
4862 return 3;
4863 }
4864 return MY_CS_ILSEQ;
4865 }
4866
4867
my_uni_utf8(CHARSET_INFO * cs,my_wc_t wc,uchar * r,uchar * e)4868 static int my_uni_utf8 (CHARSET_INFO *cs __attribute__((unused)),
4869 my_wc_t wc, uchar *r, uchar *e)
4870 {
4871 if (wc < 0x80)
4872 {
4873 if (r >= e)
4874 return MY_CS_TOOSMALL;
4875 *r= (uchar) wc;
4876 return 1;
4877 }
4878 if (wc < 0x800)
4879 {
4880 if (r + 2 > e)
4881 return MY_CS_TOOSMALLN(2);
4882 /* U+0080..U+07FF: 00000xxx.xxyyyyyy -> 110xxxxx 10yyyyyy */
4883 *r++= (uchar) (0xC0 | (wc >> 6));
4884 *r= (uchar) (0x80 | (wc & 0x3F));
4885 return 2;
4886 }
4887 if (wc < 0x10000)
4888 {
4889 if (r + 3 > e)
4890 return MY_CS_TOOSMALLN(3);
4891 /* U+0800..U+FFFF: xxxxyyyy.yyzzzzzz -> 1110xxxx 10yyyyyy 10zzzzzz */
4892 *r++= (uchar) (0xE0 | (wc >> 12));
4893 *r++= (uchar) (0x80 | ((wc >> 6) & 0x3f));
4894 *r= (uchar) (0x80 | (wc & 0x3f));
4895 return 3;
4896 }
4897 return MY_CS_ILUNI;
4898 }
4899
4900
4901 /*
4902 The same as above, but without range check.
4903 */
my_uni_utf8_no_range(CHARSET_INFO * cs,my_wc_t wc,uchar * r)4904 static int my_uni_utf8_no_range(CHARSET_INFO *cs __attribute__((unused)),
4905 my_wc_t wc, uchar *r)
4906 {
4907 int count;
4908
4909 if (wc < 0x80)
4910 count= 1;
4911 else if (wc < 0x800)
4912 count= 2;
4913 else if (wc < 0x10000)
4914 count= 3;
4915 else
4916 return MY_CS_ILUNI;
4917
4918 switch (count)
4919 {
4920 case 3: r[2]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x800;
4921 /* fall through */
4922 case 2: r[1]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0xc0;
4923 /* fall through */
4924 case 1: r[0]= (uchar) wc;
4925 }
4926 return count;
4927 }
4928
4929
4930 static inline void
my_tolower_utf8mb3(MY_UNICASE_INFO * uni_plane,my_wc_t * wc)4931 my_tolower_utf8mb3(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
4932 {
4933 MY_UNICASE_CHARACTER *page;
4934 if ((page= uni_plane->page[(*wc >> 8) & 0xFF]))
4935 *wc= page[*wc & 0xFF].tolower;
4936 }
4937
4938
4939 static inline void
my_toupper_utf8mb3(MY_UNICASE_INFO * uni_plane,my_wc_t * wc)4940 my_toupper_utf8mb3(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
4941 {
4942 MY_UNICASE_CHARACTER *page;
4943 if ((page= uni_plane->page[(*wc >> 8) & 0xFF]))
4944 *wc= page[*wc & 0xFF].toupper;
4945 }
4946
4947
my_caseup_utf8(CHARSET_INFO * cs,const char * src,size_t srclen,char * dst,size_t dstlen)4948 static size_t my_caseup_utf8(CHARSET_INFO *cs, const char *src, size_t srclen,
4949 char *dst, size_t dstlen)
4950 {
4951 my_wc_t wc;
4952 int srcres, dstres;
4953 const char *srcend= src + srclen;
4954 char *dstend= dst + dstlen, *dst0= dst;
4955 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
4956 DBUG_ASSERT(src != dst || cs->caseup_multiply == 1);
4957
4958 while ((src < srcend) &&
4959 (srcres= my_utf8_uni(cs, &wc, (uchar *) src, (uchar*) srcend)) > 0)
4960 {
4961 my_toupper_utf8mb3(uni_plane, &wc);
4962 if ((dstres= my_uni_utf8(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
4963 break;
4964 src+= srcres;
4965 dst+= dstres;
4966 }
4967 return (size_t) (dst - dst0);
4968 }
4969
4970
my_hash_sort_utf8mb3_nopad(CHARSET_INFO * cs,const uchar * s,size_t slen,ulong * nr1,ulong * nr2)4971 static void my_hash_sort_utf8mb3_nopad(CHARSET_INFO *cs, const uchar *s, size_t slen,
4972 ulong *nr1, ulong *nr2)
4973 {
4974 my_wc_t wc;
4975 int res;
4976 const uchar *e= s+slen;
4977 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
4978 register ulong m1= *nr1, m2= *nr2;
4979
4980 while ((s < e) && (res=my_utf8_uni(cs,&wc, (uchar *)s, (uchar*)e))>0 )
4981 {
4982 my_tosort_unicode(uni_plane, &wc, cs->state);
4983 MY_HASH_ADD_16(m1, m2, wc);
4984 s+= res;
4985 }
4986 *nr1= m1;
4987 *nr2= m2;
4988 }
4989
4990
my_hash_sort_utf8mb3(CHARSET_INFO * cs,const uchar * s,size_t slen,ulong * nr1,ulong * nr2)4991 static void my_hash_sort_utf8mb3(CHARSET_INFO *cs, const uchar *s, size_t slen,
4992 ulong *nr1, ulong *nr2)
4993 {
4994 /*
4995 Remove end space. We have to do this to be able to compare
4996 'A ' and 'A' as identical
4997 */
4998 const uchar *e= skip_trailing_space(s, slen);
4999 my_hash_sort_utf8mb3_nopad(cs, s, e - s, nr1, nr2);
5000 }
5001
5002
my_caseup_str_utf8(CHARSET_INFO * cs,char * src)5003 static size_t my_caseup_str_utf8(CHARSET_INFO *cs, char *src)
5004 {
5005 my_wc_t wc;
5006 int srcres, dstres;
5007 char *dst= src, *dst0= src;
5008 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5009 DBUG_ASSERT(cs->caseup_multiply == 1);
5010
5011 while (*src &&
5012 (srcres= my_utf8_uni_no_range(cs, &wc, (uchar *) src)) > 0)
5013 {
5014 my_toupper_utf8mb3(uni_plane, &wc);
5015 if ((dstres= my_uni_utf8_no_range(cs, wc, (uchar*) dst)) <= 0)
5016 break;
5017 src+= srcres;
5018 dst+= dstres;
5019 }
5020 *dst= '\0';
5021 return (size_t) (dst - dst0);
5022 }
5023
5024
my_casedn_utf8(CHARSET_INFO * cs,const char * src,size_t srclen,char * dst,size_t dstlen)5025 static size_t my_casedn_utf8(CHARSET_INFO *cs, const char *src, size_t srclen,
5026 char *dst, size_t dstlen)
5027 {
5028 my_wc_t wc;
5029 int srcres, dstres;
5030 const char *srcend= src + srclen;
5031 char *dstend= dst + dstlen, *dst0= dst;
5032 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5033 DBUG_ASSERT(src != dst || cs->casedn_multiply == 1);
5034
5035 while ((src < srcend) &&
5036 (srcres= my_utf8_uni(cs, &wc, (uchar*) src, (uchar*)srcend)) > 0)
5037 {
5038 my_tolower_utf8mb3(uni_plane, &wc);
5039 if ((dstres= my_uni_utf8(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
5040 break;
5041 src+= srcres;
5042 dst+= dstres;
5043 }
5044 return (size_t) (dst - dst0);
5045 }
5046
5047
my_casedn_str_utf8(CHARSET_INFO * cs,char * src)5048 static size_t my_casedn_str_utf8(CHARSET_INFO *cs, char *src)
5049 {
5050 my_wc_t wc;
5051 int srcres, dstres;
5052 char *dst= src, *dst0= src;
5053 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5054 DBUG_ASSERT(cs->casedn_multiply == 1);
5055
5056 while (*src &&
5057 (srcres= my_utf8_uni_no_range(cs, &wc, (uchar *) src)) > 0)
5058 {
5059 my_tolower_utf8mb3(uni_plane, &wc);
5060 if ((dstres= my_uni_utf8_no_range(cs, wc, (uchar*) dst)) <= 0)
5061 break;
5062 src+= srcres;
5063 dst+= dstres;
5064 }
5065
5066 /*
5067 In rare cases lower string can be shorter than
5068 the original string, for example:
5069
5070 "U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE"
5071 (which is 0xC4B0 in utf8, i.e. two bytes)
5072
5073 is converted into
5074
5075 "U+0069 LATIN SMALL LETTER I"
5076 (which is 0x69 in utf8, i.e. one byte)
5077
5078 So, we need to put '\0' terminator after converting.
5079 */
5080
5081 *dst= '\0';
5082 return (size_t) (dst - dst0);
5083 }
5084
5085
5086 /*
5087 Compare 0-terminated UTF8 strings.
5088
5089 SYNOPSIS
5090 my_strcasecmp_utf8()
5091 cs character set handler
5092 s First 0-terminated string to compare
5093 t Second 0-terminated string to compare
5094
5095 IMPLEMENTATION
5096
5097 RETURN
5098 - negative number if s < t
5099 - positive number if s > t
5100 - 0 is the strings are equal
5101 */
5102
5103 static
my_strcasecmp_utf8(CHARSET_INFO * cs,const char * s,const char * t)5104 int my_strcasecmp_utf8(CHARSET_INFO *cs, const char *s, const char *t)
5105 {
5106 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5107 while (s[0] && t[0])
5108 {
5109 my_wc_t s_wc,t_wc;
5110
5111 if ((uchar) s[0] < 128)
5112 {
5113 /*
5114 s[0] is between 0 and 127.
5115 It represents a single byte character.
5116 Convert it into weight according to collation.
5117 */
5118 s_wc= my_unicase_default_page00[(uchar) s[0]].tolower;
5119 s++;
5120 }
5121 else
5122 {
5123 int res;
5124
5125 /*
5126 Scan a multibyte character.
5127
5128 In the future it is worth to write a special version of my_utf8_uni()
5129 for 0-terminated strings which will not take in account length. Now
5130 we call the regular version of my_utf8_uni() with s+3 in the
5131 last argument. s+3 is enough to scan any multibyte sequence.
5132
5133 Calling the regular version of my_utf8_uni is safe for 0-terminated
5134 strings: we will never lose the end of the string:
5135 If we have 0 character in the middle of a multibyte sequence,
5136 then my_utf8_uni will always return a negative number, so the
5137 loop with finish.
5138 */
5139
5140 res= my_utf8_uni(cs,&s_wc, (const uchar*)s, (const uchar*) s + 3);
5141
5142 /*
5143 In the case of wrong multibyte sequence we will
5144 call strcmp() for byte-to-byte comparison.
5145 */
5146 if (res <= 0)
5147 return strcmp(s, t);
5148 s+= res;
5149
5150 /* Convert Unicode code into weight according to collation */
5151 my_tolower_utf8mb3(uni_plane, &s_wc);
5152 }
5153
5154
5155 /* Do the same for the second string */
5156
5157 if ((uchar) t[0] < 128)
5158 {
5159 /* Convert single byte character into weight */
5160 t_wc= my_unicase_default_page00[(uchar) t[0]].tolower;
5161 t++;
5162 }
5163 else
5164 {
5165 int res=my_utf8_uni(cs,&t_wc, (const uchar*)t, (const uchar*) t + 3);
5166 if (res <= 0)
5167 return strcmp(s, t);
5168 t+= res;
5169
5170 /* Convert code into weight */
5171 my_tolower_utf8mb3(uni_plane, &t_wc);
5172 }
5173
5174 /* Now we have two weights, let's compare them */
5175 if ( s_wc != t_wc )
5176 return ((int) s_wc) - ((int) t_wc);
5177 }
5178 return ((int)(uchar)s[0]) - ((int) (uchar) t[0]);
5179 }
5180
5181
5182 static
my_wildcmp_utf8(CHARSET_INFO * cs,const char * str,const char * str_end,const char * wildstr,const char * wildend,int escape,int w_one,int w_many)5183 int my_wildcmp_utf8(CHARSET_INFO *cs,
5184 const char *str,const char *str_end,
5185 const char *wildstr,const char *wildend,
5186 int escape, int w_one, int w_many)
5187 {
5188 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5189 return my_wildcmp_unicode(cs,str,str_end,wildstr,wildend,
5190 escape,w_one,w_many,uni_plane);
5191 }
5192
5193
5194 static
my_charlen_utf8(CHARSET_INFO * cs,const uchar * s,const uchar * e)5195 int my_charlen_utf8(CHARSET_INFO *cs __attribute__((unused)),
5196 const uchar *s, const uchar *e)
5197 {
5198 uchar c;
5199
5200 if (s >= e)
5201 return MY_CS_TOOSMALL;
5202
5203 c= s[0];
5204 if (c < 0xf0)
5205 return my_valid_mbcharlen_utf8mb3(s, e);
5206
5207 return MY_CS_ILSEQ;
5208 }
5209
5210
5211 #define MY_FUNCTION_NAME(x) my_ ## x ## _utf8
5212 #define CHARLEN(cs,str,end) my_charlen_utf8(cs,str,end)
5213 #define DEFINE_WELL_FORMED_CHAR_LENGTH_USING_CHARLEN
5214 #include "ctype-mb.inl"
5215 #undef MY_FUNCTION_NAME
5216 #undef CHARLEN
5217 #undef DEFINE_WELL_FORMED_CHAR_LENGTH_USING_CHARLEN
5218 /* my_well_formed_char_length_utf8 */
5219
5220
my_weight_mb1_utf8_general_ci(uchar b)5221 static inline int my_weight_mb1_utf8_general_ci(uchar b)
5222 {
5223 return (int) my_unicase_default_page00[b & 0xFF].sort;
5224 }
5225
5226
my_weight_mb2_utf8_general_ci(uchar b0,uchar b1)5227 static inline int my_weight_mb2_utf8_general_ci(uchar b0, uchar b1)
5228 {
5229 my_wc_t wc= UTF8MB2_CODE(b0, b1);
5230 MY_UNICASE_CHARACTER *page= my_unicase_default_pages[wc >> 8];
5231 return (int) (page ? page[wc & 0xFF].sort : wc);
5232 }
5233
5234
my_weight_mb3_utf8_general_ci(uchar b0,uchar b1,uchar b2)5235 static inline int my_weight_mb3_utf8_general_ci(uchar b0, uchar b1, uchar b2)
5236 {
5237 my_wc_t wc= UTF8MB3_CODE(b0, b1, b2);
5238 MY_UNICASE_CHARACTER *page= my_unicase_default_pages[wc >> 8];
5239 return (int) (page ? page[wc & 0xFF].sort : wc);
5240 }
5241
5242
5243 #define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_general_ci
5244 #define DEFINE_STRNXFRM_UNICODE
5245 #define DEFINE_STRNXFRM_UNICODE_NOPAD
5246 #define MY_MB_WC(cs, pwc, s, e) my_mb_wc_utf8mb3_quick(pwc, s, e)
5247 #define OPTIMIZE_ASCII 1
5248 #define UNICASE_MAXCHAR MY_UNICASE_INFO_DEFAULT_MAXCHAR
5249 #define UNICASE_PAGE0 my_unicase_default_page00
5250 #define UNICASE_PAGES my_unicase_default_pages
5251 #define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
5252 #define WEIGHT_MB1(x) my_weight_mb1_utf8_general_ci(x)
5253 #define WEIGHT_MB2(x,y) my_weight_mb2_utf8_general_ci(x,y)
5254 #define WEIGHT_MB3(x,y,z) my_weight_mb3_utf8_general_ci(x,y,z)
5255 #include "strcoll.inl"
5256
5257
5258 #define DEFINE_STRNNCOLLSP_NOPAD
5259 #define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_general_nopad_ci
5260 #define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
5261 #define WEIGHT_MB1(x) my_weight_mb1_utf8_general_ci(x)
5262 #define WEIGHT_MB2(x,y) my_weight_mb2_utf8_general_ci(x,y)
5263 #define WEIGHT_MB3(x,y,z) my_weight_mb3_utf8_general_ci(x,y,z)
5264 #include "strcoll.inl"
5265
5266
my_weight_mb1_utf8_general_mysql500_ci(uchar b)5267 static inline int my_weight_mb1_utf8_general_mysql500_ci(uchar b)
5268 {
5269 return (int) plane00_mysql500[b & 0xFF].sort;
5270 }
5271
5272
my_weight_mb2_utf8_general_mysql500_ci(uchar b0,uchar b1)5273 static inline int my_weight_mb2_utf8_general_mysql500_ci(uchar b0, uchar b1)
5274 {
5275 my_wc_t wc= UTF8MB2_CODE(b0, b1);
5276 MY_UNICASE_CHARACTER *page= my_unicase_pages_mysql500[wc >> 8];
5277 return (int) (page ? page[wc & 0xFF].sort : wc);
5278 }
5279
5280
5281 static inline int
my_weight_mb3_utf8_general_mysql500_ci(uchar b0,uchar b1,uchar b2)5282 my_weight_mb3_utf8_general_mysql500_ci(uchar b0, uchar b1, uchar b2)
5283 {
5284 my_wc_t wc= UTF8MB3_CODE(b0, b1, b2);
5285 MY_UNICASE_CHARACTER *page= my_unicase_pages_mysql500[wc >> 8];
5286 return (int) (page ? page[wc & 0xFF].sort : wc);
5287 }
5288
5289
5290 #define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_general_mysql500_ci
5291 #define DEFINE_STRNXFRM_UNICODE
5292 #define MY_MB_WC(cs, pwc, s, e) my_mb_wc_utf8mb3_quick(pwc, s, e)
5293 #define OPTIMIZE_ASCII 1
5294 #define UNICASE_MAXCHAR MY_UNICASE_INFO_DEFAULT_MAXCHAR
5295 #define UNICASE_PAGE0 plane00_mysql500
5296 #define UNICASE_PAGES my_unicase_pages_mysql500
5297 #define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
5298 #define WEIGHT_MB1(x) my_weight_mb1_utf8_general_mysql500_ci(x)
5299 #define WEIGHT_MB2(x,y) my_weight_mb2_utf8_general_mysql500_ci(x,y)
5300 #define WEIGHT_MB3(x,y,z) my_weight_mb3_utf8_general_mysql500_ci(x,y,z)
5301 #include "strcoll.inl"
5302
5303
5304 #define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_bin
5305 #define DEFINE_STRNXFRM_UNICODE_BIN2
5306 #define MY_MB_WC(cs, pwc, s, e) my_mb_wc_utf8mb3_quick(pwc, s, e)
5307 #define OPTIMIZE_ASCII 1
5308 #define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
5309 #define WEIGHT_MB1(x) ((int) (uchar) (x))
5310 #define WEIGHT_MB2(x,y) ((int) UTF8MB2_CODE(x,y))
5311 #define WEIGHT_MB3(x,y,z) ((int) UTF8MB3_CODE(x,y,z))
5312 #include "strcoll.inl"
5313
5314
5315 #define DEFINE_STRNNCOLLSP_NOPAD
5316 #define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_nopad_bin
5317 #define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
5318 #define WEIGHT_MB1(x) ((int) (uchar) (x))
5319 #define WEIGHT_MB2(x,y) ((int) UTF8MB2_CODE(x,y))
5320 #define WEIGHT_MB3(x,y,z) ((int) UTF8MB3_CODE(x,y,z))
5321 #include "strcoll.inl"
5322
5323 /*
5324 TODO-10.2: join this with pad_max_char() in ctype-mb.c
5325 */
5326 static void
my_fill_utf8_mb(CHARSET_INFO * cs,char * str,size_t length,int fill)5327 my_fill_utf8_mb(CHARSET_INFO *cs, char *str, size_t length, int fill)
5328 {
5329 char *end= str + length;
5330 char buf[10];
5331 char buflen= cs->cset->native_to_mb(cs, (my_wc_t) fill, (uchar*) buf,
5332 (uchar*) buf + sizeof(buf));
5333 DBUG_ASSERT(buflen > 0);
5334 for ( ; str + buflen <= end ; )
5335 {
5336 memcpy(str, buf, buflen);
5337 str+= buflen;
5338 }
5339
5340 for ( ; str < end; )
5341 *str++= ' ';
5342 }
5343
5344
5345 static void
my_fill_utf8(CHARSET_INFO * cs,char * str,size_t length,int fill)5346 my_fill_utf8(CHARSET_INFO *cs, char *str, size_t length, int fill)
5347 {
5348 if (fill < 0x80)
5349 my_fill_8bit(cs, str, length, fill);
5350 else
5351 my_fill_utf8_mb(cs, str, length, fill);
5352 }
5353
5354
5355 static MY_COLLATION_HANDLER my_collation_utf8_general_ci_handler =
5356 {
5357 NULL, /* init */
5358 my_strnncoll_utf8_general_ci,
5359 my_strnncollsp_utf8_general_ci,
5360 my_strnncollsp_nchars_utf8_general_ci,
5361 my_strnxfrm_utf8_general_ci,
5362 my_strnxfrmlen_unicode,
5363 my_like_range_mb,
5364 my_wildcmp_utf8,
5365 my_strcasecmp_utf8,
5366 my_instr_mb,
5367 my_hash_sort_utf8mb3,
5368 my_propagate_complex
5369 };
5370
5371
5372 static MY_COLLATION_HANDLER my_collation_utf8_general_mysql500_ci_handler =
5373 {
5374 NULL, /* init */
5375 my_strnncoll_utf8_general_mysql500_ci,
5376 my_strnncollsp_utf8_general_mysql500_ci,
5377 my_strnncollsp_nchars_utf8_general_mysql500_ci,
5378 my_strnxfrm_utf8_general_mysql500_ci,
5379 my_strnxfrmlen_unicode,
5380 my_like_range_mb,
5381 my_wildcmp_utf8,
5382 my_strcasecmp_utf8,
5383 my_instr_mb,
5384 my_hash_sort_utf8mb3,
5385 my_propagate_complex
5386 };
5387
5388
5389 static MY_COLLATION_HANDLER my_collation_utf8_bin_handler =
5390 {
5391 NULL, /* init */
5392 my_strnncoll_utf8_bin,
5393 my_strnncollsp_utf8_bin,
5394 my_strnncollsp_nchars_utf8_bin,
5395 my_strnxfrm_utf8_bin,
5396 my_strnxfrmlen_unicode,
5397 my_like_range_mb,
5398 my_wildcmp_mb_bin,
5399 my_strcasecmp_mb_bin,
5400 my_instr_mb,
5401 my_hash_sort_mb_bin,
5402 my_propagate_simple
5403 };
5404
5405
5406 static MY_COLLATION_HANDLER my_collation_utf8_general_nopad_ci_handler =
5407 {
5408 NULL, /* init */
5409 my_strnncoll_utf8_general_ci,
5410 my_strnncollsp_utf8_general_nopad_ci,
5411 my_strnncollsp_nchars_utf8_general_nopad_ci,
5412 my_strnxfrm_nopad_utf8_general_ci,
5413 my_strnxfrmlen_unicode,
5414 my_like_range_mb,
5415 my_wildcmp_utf8,
5416 my_strcasecmp_utf8,
5417 my_instr_mb,
5418 my_hash_sort_utf8mb3_nopad,
5419 my_propagate_complex
5420 };
5421
5422
5423 static MY_COLLATION_HANDLER my_collation_utf8_nopad_bin_handler =
5424 {
5425 NULL, /* init */
5426 my_strnncoll_utf8_bin,
5427 my_strnncollsp_utf8_nopad_bin,
5428 my_strnncollsp_nchars_utf8_nopad_bin,
5429 my_strnxfrm_nopad_utf8_bin,
5430 my_strnxfrmlen_unicode,
5431 my_like_range_mb,
5432 my_wildcmp_mb_bin,
5433 my_strcasecmp_mb_bin,
5434 my_instr_mb,
5435 my_hash_sort_mb_nopad_bin,
5436 my_propagate_simple
5437 };
5438
5439
5440 MY_CHARSET_HANDLER my_charset_utf8_handler=
5441 {
5442 NULL, /* init */
5443 my_numchars_mb,
5444 my_charpos_mb,
5445 my_lengthsp_8bit,
5446 my_numcells_mb,
5447 my_utf8_uni,
5448 my_uni_utf8,
5449 my_mb_ctype_mb,
5450 my_caseup_str_utf8,
5451 my_casedn_str_utf8,
5452 my_caseup_utf8,
5453 my_casedn_utf8,
5454 my_snprintf_8bit,
5455 my_long10_to_str_8bit,
5456 my_longlong10_to_str_8bit,
5457 my_fill_utf8,
5458 my_strntol_8bit,
5459 my_strntoul_8bit,
5460 my_strntoll_8bit,
5461 my_strntoull_8bit,
5462 my_strntod_8bit,
5463 my_strtoll10_8bit,
5464 my_strntoull10rnd_8bit,
5465 my_scan_8bit,
5466 my_charlen_utf8,
5467 my_well_formed_char_length_utf8,
5468 my_copy_fix_mb,
5469 my_uni_utf8,
5470 };
5471
5472
5473
5474 struct charset_info_st my_charset_utf8_general_ci=
5475 {
5476 33,0,0, /* number */
5477 MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */
5478 "utf8", /* cs name */
5479 "utf8_general_ci", /* name */
5480 "", /* comment */
5481 NULL, /* tailoring */
5482 ctype_utf8, /* ctype */
5483 to_lower_utf8, /* to_lower */
5484 to_upper_utf8, /* to_upper */
5485 to_upper_utf8, /* sort_order */
5486 NULL, /* uca */
5487 NULL, /* tab_to_uni */
5488 NULL, /* tab_from_uni */
5489 &my_unicase_default,/* caseinfo */
5490 NULL, /* state_map */
5491 NULL, /* ident_map */
5492 1, /* strxfrm_multiply */
5493 1, /* caseup_multiply */
5494 1, /* casedn_multiply */
5495 1, /* mbminlen */
5496 3, /* mbmaxlen */
5497 0, /* min_sort_char */
5498 0xFFFF, /* max_sort_char */
5499 ' ', /* pad char */
5500 0, /* escape_with_backslash_is_dangerous */
5501 1, /* levels_for_order */
5502 &my_charset_utf8_handler,
5503 &my_collation_utf8_general_ci_handler
5504 };
5505
5506
5507 struct charset_info_st my_charset_utf8_general_mysql500_ci=
5508 {
5509 223,0,0, /* number */
5510 MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */
5511 "utf8", /* cs name */
5512 "utf8_general_mysql500_ci", /* name */
5513 "", /* comment */
5514 NULL, /* tailoring */
5515 ctype_utf8, /* ctype */
5516 to_lower_utf8, /* to_lower */
5517 to_upper_utf8, /* to_upper */
5518 to_upper_utf8, /* sort_order */
5519 NULL, /* uca */
5520 NULL, /* tab_to_uni */
5521 NULL, /* tab_from_uni */
5522 &my_unicase_mysql500, /* caseinfo */
5523 NULL, /* state_map */
5524 NULL, /* ident_map */
5525 1, /* strxfrm_multiply */
5526 1, /* caseup_multiply */
5527 1, /* casedn_multiply */
5528 1, /* mbminlen */
5529 3, /* mbmaxlen */
5530 0, /* min_sort_char */
5531 0xFFFF, /* max_sort_char */
5532 ' ', /* pad char */
5533 0, /* escape_with_backslash_is_dangerous */
5534 1, /* levels_for_order */
5535 &my_charset_utf8_handler,
5536 &my_collation_utf8_general_mysql500_ci_handler
5537 };
5538
5539
5540 struct charset_info_st my_charset_utf8_bin=
5541 {
5542 83,0,0, /* number */
5543 MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_BINSORT|MY_CS_UNICODE, /* state */
5544 "utf8", /* cs name */
5545 "utf8_bin", /* name */
5546 "", /* comment */
5547 NULL, /* tailoring */
5548 ctype_utf8, /* ctype */
5549 to_lower_utf8, /* to_lower */
5550 to_upper_utf8, /* to_upper */
5551 NULL, /* sort_order */
5552 NULL, /* uca */
5553 NULL, /* tab_to_uni */
5554 NULL, /* tab_from_uni */
5555 &my_unicase_default,/* caseinfo */
5556 NULL, /* state_map */
5557 NULL, /* ident_map */
5558 1, /* strxfrm_multiply */
5559 1, /* caseup_multiply */
5560 1, /* casedn_multiply */
5561 1, /* mbminlen */
5562 3, /* mbmaxlen */
5563 0, /* min_sort_char */
5564 0xFFFF, /* max_sort_char */
5565 ' ', /* pad char */
5566 0, /* escape_with_backslash_is_dangerous */
5567 1, /* levels_for_order */
5568 &my_charset_utf8_handler,
5569 &my_collation_utf8_bin_handler
5570 };
5571
5572
5573 struct charset_info_st my_charset_utf8_general_nopad_ci=
5574 {
5575 MY_NOPAD_ID(33),0,0, /* number */
5576 MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NOPAD, /* state */
5577 "utf8", /* cs name */
5578 "utf8_general_nopad_ci", /* name */
5579 "", /* comment */
5580 NULL, /* tailoring */
5581 ctype_utf8, /* ctype */
5582 to_lower_utf8, /* to_lower */
5583 to_upper_utf8, /* to_upper */
5584 to_upper_utf8, /* sort_order */
5585 NULL, /* uca */
5586 NULL, /* tab_to_uni */
5587 NULL, /* tab_from_uni */
5588 &my_unicase_default, /* caseinfo */
5589 NULL, /* state_map */
5590 NULL, /* ident_map */
5591 1, /* strxfrm_multiply */
5592 1, /* caseup_multiply */
5593 1, /* casedn_multiply */
5594 1, /* mbminlen */
5595 3, /* mbmaxlen */
5596 0, /* min_sort_char */
5597 0xFFFF, /* max_sort_char */
5598 ' ', /* pad char */
5599 0, /* escape_with_backslash_is_dangerous */
5600 1, /* levels_for_order */
5601 &my_charset_utf8_handler,
5602 &my_collation_utf8_general_nopad_ci_handler
5603 };
5604
5605
5606 struct charset_info_st my_charset_utf8_nopad_bin=
5607 {
5608 MY_NOPAD_ID(83),0,0,/* number */
5609 MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_BINSORT|MY_CS_UNICODE|MY_CS_NOPAD,
5610 "utf8", /* cs name */
5611 "utf8_nopad_bin", /* name */
5612 "", /* comment */
5613 NULL, /* tailoring */
5614 ctype_utf8, /* ctype */
5615 to_lower_utf8, /* to_lower */
5616 to_upper_utf8, /* to_upper */
5617 NULL, /* sort_order */
5618 NULL, /* uca */
5619 NULL, /* tab_to_uni */
5620 NULL, /* tab_from_uni */
5621 &my_unicase_default,/* caseinfo */
5622 NULL, /* state_map */
5623 NULL, /* ident_map */
5624 1, /* strxfrm_multiply */
5625 1, /* caseup_multiply */
5626 1, /* casedn_multiply */
5627 1, /* mbminlen */
5628 3, /* mbmaxlen */
5629 0, /* min_sort_char */
5630 0xFFFF, /* max_sort_char */
5631 ' ', /* pad char */
5632 0, /* escape_with_backslash_is_dangerous */
5633 1, /* levels_for_order */
5634 &my_charset_utf8_handler,
5635 &my_collation_utf8_nopad_bin_handler
5636 };
5637
5638
5639 #ifdef HAVE_UTF8_GENERAL_CS
5640
5641 /*
5642 * These functions bacically do the same as their original, except
5643 * that they return 0 only when two comparing unicode strings are
5644 * strictly the same in case-sensitive way. See "save_diff" local
5645 * variable to what they actually do.
5646 */
5647
my_strnncoll_utf8_cs(CHARSET_INFO * cs,const uchar * s,size_t slen,const uchar * t,size_t tlen,my_bool t_is_prefix)5648 static int my_strnncoll_utf8_cs(CHARSET_INFO *cs,
5649 const uchar *s, size_t slen,
5650 const uchar *t, size_t tlen,
5651 my_bool t_is_prefix)
5652 {
5653 int s_res,t_res;
5654 my_wc_t s_wc,t_wc;
5655 const uchar *se=s+slen;
5656 const uchar *te=t+tlen;
5657 int save_diff = 0;
5658 int diff;
5659 MY_UNICASE_INFO *const *uni_plane= cs->caseinfo;
5660
5661 while ( s < se && t < te )
5662 {
5663 s_res=my_utf8_uni(cs,&s_wc, s, se);
5664 t_res=my_utf8_uni(cs,&t_wc, t, te);
5665
5666 if ( s_res <= 0 || t_res <= 0 )
5667
5668 {
5669 /* Incorrect string, compare by char value */
5670 return ((int)s[0]-(int)t[0]);
5671 }
5672
5673 if ( save_diff == 0 )
5674 {
5675 save_diff = ((int)s_wc) - ((int)t_wc);
5676 }
5677
5678 my_tosort_unicode(uni_plane, &s_wc, cs->state);
5679 my_tosort_unicode(uni_plane, &t_wc, cs->state);
5680
5681 if ( s_wc != t_wc )
5682 {
5683 return ((int) s_wc) - ((int) t_wc);
5684 }
5685
5686 s+=s_res;
5687 t+=t_res;
5688 }
5689 diff = ( (se-s) - (te-t) );
5690 return t_is_prefix ? t-te : ((diff == 0) ? save_diff : diff);
5691 }
5692
my_strnncollsp_utf8_cs(CHARSET_INFO * cs,const uchar * s,size_t slen,const uchar * t,size_t tlen)5693 static int my_strnncollsp_utf8_cs(CHARSET_INFO *cs,
5694 const uchar *s, size_t slen,
5695 const uchar *t, size_t tlen)
5696 {
5697 int s_res, t_res, res;
5698 my_wc_t s_wc, t_wc;
5699 const uchar *se= s + slen;
5700 const uchar *te= t + tlen;
5701 int save_diff= 0;
5702 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5703
5704 while ( s < se && t < te )
5705 {
5706 s_res=my_utf8_uni(cs,&s_wc, s, se);
5707 t_res=my_utf8_uni(cs,&t_wc, t, te);
5708
5709 if ( s_res <= 0 || t_res <= 0 )
5710 {
5711 /* Incorrect string, compare by char value */
5712 return ((int)s[0]-(int)t[0]);
5713 }
5714
5715 if ( save_diff == 0 )
5716 {
5717 save_diff = ((int)s_wc) - ((int)t_wc);
5718 }
5719
5720 my_tosort_unicode(uni_plane, &s_wc, cs->state);
5721 my_tosort_unicode(uni_plane, &t_wc, cs->state);
5722
5723 if ( s_wc != t_wc )
5724 {
5725 return ((int) s_wc) - ((int) t_wc);
5726 }
5727
5728 s+=s_res;
5729 t+=t_res;
5730 }
5731
5732 slen= se-s;
5733 tlen= te-t;
5734
5735 /*
5736 The following code uses the fact that in UTF-8
5737 all multibyte characters are greater than space,
5738 and all multibyte head characters are greater than
5739 space. It means if we meet a character greater
5740 than space, it always means that the longer string
5741 is greater. So we can reuse the same loop from the
5742 8bit version, without having to process full multibute
5743 sequences.
5744 */
5745 if ((res= slen == tlen ? 0 :
5746 slen < tlen ?
5747 -my_strnncollsp_padspace_bin(t, tlen) :
5748 my_strnncollsp_padspace_bin(s, slen)))
5749 return res;
5750 return save_diff;
5751 }
5752
5753 static MY_COLLATION_HANDLER my_collation_cs_handler =
5754 {
5755 NULL, /* init */
5756 my_strnncoll_utf8_cs,
5757 my_strnncollsp_utf8_cs,
5758 my_strnncollsp_nchars_generic,
5759 my_strnxfrm_utf8_general_ci,
5760 my_strnxfrmlen_unicode,
5761 my_like_range_simple,
5762 my_wildcmp_mb,
5763 my_strcasecmp_utf8,
5764 my_instr_mb,
5765 my_hash_sort_utf8,
5766 my_propagate_simple
5767 };
5768
5769 struct charset_info_st my_charset_utf8_general_cs=
5770 {
5771 254,0,0, /* number */
5772 MY_CS_COMPILED|MY_CS_UNICODE, /* state */
5773 "utf8", /* cs name */
5774 "utf8_general_cs", /* name */
5775 "", /* comment */
5776 NULL, /* tailoring */
5777 ctype_utf8, /* ctype */
5778 to_lower_utf8, /* to_lower */
5779 to_upper_utf8, /* to_upper */
5780 to_upper_utf8, /* sort_order */
5781 NULL, /* uca */
5782 NULL, /* tab_to_uni */
5783 NULL, /* tab_from_uni */
5784 &my_unicase_default,/* caseinfo */
5785 NULL, /* state_map */
5786 NULL, /* ident_map */
5787 1, /* strxfrm_multiply */
5788 1, /* caseup_multiply */
5789 1, /* casedn_multiply */
5790 1, /* mbminlen */
5791 3, /* mbmaxlen */
5792 0, /* min_sort_char */
5793 255, /* max_sort_char */
5794 ' ', /* pad char */
5795 0, /* escape_with_backslash_is_dangerous */
5796 1, /* levels_for_order */
5797 &my_charset_utf8_handler,
5798 &my_collation_cs_handler
5799 };
5800 #endif /* Cybozu Hack */
5801
5802
5803 /*
5804 File system encoding components:
5805
5806 Code range Pattern Number Used Unused Blocks
5807 -----------------------------------------------------------------------------
5808 00C0..017F [.][0..4][g..z] 5*20= 100 97 3 Latin1 Supplement + Ext A
5809 0370..03FF [.][5..9][g..z] 5*20= 100 88 12 Greek + Coptic
5810 0400..052F [.][g..z][0..6] 20*7= 140 140 137 Cyrillic
5811 0530..058F [.][g..z][7..8] 20*2= 40 38 2 Armenian
5812 2160..217F [.][g..z][9] 20*1= 20 16 4 Number Forms
5813 0180..02AF [.][g..z][a..k] 28*11=220 203 17 Latin Ext B + IPA
5814 1E00..0EFF [.][g..z][l..r] 20*7= 140 136 4 Latin Additional Extended
5815 1F00..1FFF [.][g..z][s..z] 20*8= 160 144 16 Greek Extended
5816 .... .... [.][a..f][g..z] 6*20= 120 0 120 RESERVED
5817 24B6..24E9 [.][@][a..z] 26 26 0 Enclosed Alphanumerics
5818 FF21..FF5A [.][a..z][@] 26 26 0 Full Width forms
5819
5820 All other characters are encoded using five bytes:
5821
5822 [.][0..9a..z][0..9a..z][0..9a..z][0..9a..z]
5823
5824 */
5825
5826
5827 static const uint16 touni[5994]=
5828 {
5829 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5830 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5831 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00C0,
5832 0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,0x00C8,
5833 0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,0x00D0,
5834 0x00D1,0x00D2,0x00D3,0x0000,0x0000,0x0000,0x0000,0x0000,
5835 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00E0,
5836 0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,0x00E8,
5837 0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,0x00F0,
5838 0x00F1,0x00F2,0x00F3,0x0000,0x0000,0x0000,0x0000,0x0000,
5839 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5840 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5841 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00D4,
5842 0x00D5,0x00D6,0x0000,0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,
5843 0x00DD,0x00DE,0x0178,0x0100,0x0102,0x0104,0x0106,0x0108,
5844 0x010A,0x010C,0x010E,0x0000,0x0000,0x0000,0x0000,0x0000,
5845 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00F4,
5846 0x00F5,0x00F6,0x00DF,0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,
5847 0x00FD,0x00FE,0x00FF,0x0101,0x0103,0x0105,0x0107,0x0109,
5848 0x010B,0x010D,0x010F,0x0000,0x0000,0x0000,0x0000,0x0000,
5849 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5850 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5851 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0110,
5852 0x0112,0x0114,0x0116,0x0118,0x011A,0x011C,0x011E,0x0120,
5853 0x0122,0x0124,0x0126,0x0128,0x012A,0x012C,0x012E,0x0000,
5854 0x0132,0x0134,0x0136,0x0000,0x0000,0x0000,0x0000,0x0000,
5855 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0111,
5856 0x0113,0x0115,0x0117,0x0119,0x011B,0x011D,0x011F,0x0121,
5857 0x0123,0x0125,0x0127,0x0129,0x012B,0x012D,0x012F,0x0131,
5858 0x0133,0x0135,0x0137,0x0000,0x0000,0x0000,0x0000,0x0000,
5859 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5860 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5861 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5862 0x0139,0x013B,0x013D,0x013F,0x0141,0x0143,0x0145,0x0147,
5863 0x0000,0x014A,0x014C,0x014E,0x0150,0x0152,0x0154,0x0156,
5864 0x0158,0x015A,0x015C,0x0000,0x0000,0x0000,0x0000,0x0000,
5865 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0138,
5866 0x013A,0x013C,0x013E,0x0140,0x0142,0x0144,0x0146,0x0148,
5867 0x0149,0x014B,0x014D,0x014F,0x0151,0x0153,0x0155,0x0157,
5868 0x0159,0x015B,0x015D,0x0000,0x0000,0x0000,0x0000,0x0000,
5869 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5870 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5871 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x015E,
5872 0x0160,0x0162,0x0164,0x0166,0x0168,0x016A,0x016C,0x016E,
5873 0x0170,0x0172,0x0174,0x0176,0x0179,0x017B,0x017D,0x0000,
5874 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5875 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x015F,
5876 0x0161,0x0163,0x0165,0x0167,0x0169,0x016B,0x016D,0x016F,
5877 0x0171,0x0173,0x0175,0x0177,0x017A,0x017C,0x017E,0x017F,
5878 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5879 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5880 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5881 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5882 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5883 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5884 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5885 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5886 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5887 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5888 0x0000,0x0390,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5889 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5890 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5891 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0386,
5892 0x0388,0x0389,0x038A,0x0000,0x0391,0x0000,0x0393,0x0394,
5893 0x0395,0x0396,0x0397,0x0000,0x0399,0x0000,0x039B,0x039C,
5894 0x039D,0x039E,0x039F,0x0000,0x0000,0x0000,0x0000,0x0000,
5895 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03AC,
5896 0x03AD,0x03AE,0x03AF,0x03B0,0x03B1,0x03B2,0x03B3,0x03B4,
5897 0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,
5898 0x03BD,0x03BE,0x03BF,0x0000,0x0000,0x0000,0x0000,0x0000,
5899 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5900 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5901 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5902 0x03A1,0x0000,0x0000,0x03A4,0x03A5,0x0000,0x03A7,0x03A8,
5903 0x03A9,0x03AA,0x03AB,0x038C,0x038E,0x038F,0x0000,0x0392,
5904 0x0398,0x03D2,0x03D3,0x0000,0x0000,0x0000,0x0000,0x0000,
5905 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03C0,
5906 0x03C1,0x03C2,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,
5907 0x03C9,0x03CA,0x03CB,0x03CC,0x03CD,0x03CE,0x0000,0x03D0,
5908 0x03D1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5909 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5910 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5911 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03D4,
5912 0x03A6,0x03A0,0x0000,0x0000,0x03DA,0x03DC,0x03DE,0x03E0,
5913 0x03E2,0x03E4,0x03E6,0x03E8,0x03EA,0x03EC,0x03EE,0x039A,
5914 0x0000,0x03A3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5915 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5916 0x03D5,0x03D6,0x03D7,0x03D9,0x03DB,0x03DD,0x03DF,0x03E1,
5917 0x03E3,0x03E5,0x03E7,0x03E9,0x03EB,0x03ED,0x03EF,0x03F0,
5918 0x03F1,0x03F2,0x03F3,0x0000,0x0000,0x0000,0x0000,0x0000,
5919 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5920 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5921 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5922 0x0000,0x0000,0x0000,0x0000,0x03FD,0x03FE,0x03FF,0x0000,
5923 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5924 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5925 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03F5,
5926 0x03F6,0x03F8,0x03FB,0x03FC,0x0000,0x0000,0x0000,0x0000,
5927 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5928 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5929 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5930 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5931 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5932 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5933 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5934 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5935 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5936 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5937 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5938 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5939 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5940 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5941 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5942 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5943 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5944 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5945 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5946 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5947 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5948 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5949 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5950 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5951 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5952 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5953 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5954 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5955 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5956 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5957 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5958 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5959 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5960 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5961 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5962 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5963 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5964 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5965 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5966 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5967 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5968 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5969 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5970 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5971 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5972 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5973 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5974 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5975 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5976 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5977 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5978 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5979 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5980 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5981 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5982 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5983 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5984 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5985 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5986 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5987 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5988 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5989 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5990 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
5991 0x0000,0x24B6,0x24B7,0x24B8,0x24B9,0x24BA,0x24BB,0x24BC,
5992 0x24BD,0x24BE,0x24BF,0x24C0,0x24C1,0x24C2,0x24C3,0x24C4,
5993 0x24C5,0x24C6,0x24C7,0x24C8,0x24C9,0x24CA,0x24CB,0x24CC,
5994 0x24CD,0x24CE,0x24CF,0x0000,0x0000,0x0000,0x0000,0x0000,
5995 0x0000,0x24D0,0x24D1,0x24D2,0x24D3,0x24D4,0x24D5,0x24D6,
5996 0x24D7,0x24D8,0x24D9,0x24DA,0x24DB,0x24DC,0x24DD,0x24DE,
5997 0x24DF,0x24E0,0x24E1,0x24E2,0x24E3,0x24E4,0x24E5,0x24E6,
5998 0x24E7,0x24E8,0x24E9,0x0000,0x0000,0x0000,0x0000,0x0000,
5999 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6000 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6001 0xFF21,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6002 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6003 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6004 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6005 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6006 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6007 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6008 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6009 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6010 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6011 0xFF22,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6012 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6013 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6014 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6015 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6016 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6017 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6018 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6019 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6020 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6021 0xFF23,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6022 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6023 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6024 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6025 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6026 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6027 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6028 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6029 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6030 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6031 0xFF24,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6032 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6033 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6034 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6035 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6036 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6037 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6038 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6039 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6040 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6041 0xFF25,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6042 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6043 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6044 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6045 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6046 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6047 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6048 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6049 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6050 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6051 0xFF26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6052 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6053 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6054 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6055 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6056 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6057 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6058 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6059 0x0410,0x0424,0x0408,0x0478,0x04A6,0x04CD,0x04F4,0x0000,
6060 0x0544,0x2160,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6061 0xFF27,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6062 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6063 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6064 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6065 0x0000,0x0000,0x01B3,0x01DE,0x0208,0x0230,0x0000,0x0000,
6066 0x0000,0x0000,0x0000,0x0000,0x1E00,0x1E28,0x1E50,0x1E78,
6067 0x1E60,0x1EBE,0x1EE6,0x1F08,0x1F2A,0x0000,0x1F6C,0x1F88,
6068 0x1FAC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6069 0x0411,0x0425,0x0409,0x047A,0x04A8,0x0000,0x04F6,0x0531,
6070 0x0545,0x2161,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6071 0xFF28,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6072 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6073 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6074 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6075 0x0000,0x0182,0x01B5,0x01E0,0x020A,0x0232,0x0000,0x0000,
6076 0x019D,0x0000,0x0000,0x0000,0x1E02,0x1E2A,0x1E52,0x1E7A,
6077 0x0000,0x1EC0,0x1EE8,0x1F09,0x1F2B,0x0000,0x1F6D,0x1F89,
6078 0x1FAD,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6079 0x0412,0x0426,0x040A,0x047C,0x04AA,0x04D0,0x04F8,0x0532,
6080 0x0546,0x2162,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6081 0xFF29,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6082 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6083 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6084 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6085 0x0000,0x0184,0x01B8,0x01E2,0x020C,0x0000,0x0000,0x0000,
6086 0x0000,0x0000,0x0000,0x0000,0x1E04,0x1E2C,0x1E54,0x1E7C,
6087 0x0000,0x1EC2,0x1EEA,0x1F0A,0x1F2C,0x0000,0x1F6E,0x1F8A,
6088 0x1FAE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6089 0x0413,0x0427,0x040B,0x047E,0x04AC,0x04D2,0x0000,0x0533,
6090 0x0547,0x2163,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6091 0xFF2A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6092 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6093 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6094 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6095 0x0000,0x0187,0x0000,0x01E4,0x020E,0x0000,0x0000,0x0193,
6096 0x0000,0x01AE,0x0000,0x0000,0x1E06,0x1E2E,0x1E56,0x1E7E,
6097 0x0000,0x1EC4,0x1EEC,0x1F0B,0x1F2D,0x0000,0x1F6F,0x1F8B,
6098 0x1FAF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6099 0x0414,0x0428,0x040C,0x0480,0x04AE,0x04D4,0x0000,0x0534,
6100 0x0548,0x2164,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6101 0xFF2B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6102 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6103 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6104 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6105 0x0000,0x018B,0x0000,0x01E6,0x0210,0x0000,0x0000,0x0000,
6106 0x019F,0x0000,0x0000,0x0000,0x1E08,0x1E30,0x1E58,0x1E80,
6107 0x0000,0x1EC6,0x1EEE,0x1F0C,0x1F2E,0x0000,0x1FBA,0x1F8C,
6108 0x1FB8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6109 0x0415,0x0429,0x040D,0x0000,0x04B0,0x04D6,0x0000,0x0535,
6110 0x0549,0x2165,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6111 0xFF2C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6112 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6113 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6114 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6115 0x0000,0x0000,0x0000,0x01E8,0x0212,0x0000,0x0000,0x0000,
6116 0x0000,0x01B1,0x0000,0x0000,0x1E0A,0x1E32,0x1E5A,0x1E82,
6117 0x1EA0,0x1EC8,0x1EF0,0x1F0D,0x1F2F,0x1F59,0x1FBB,0x1F8D,
6118 0x1FB9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6119 0x0416,0x042A,0x040E,0x048A,0x04B2,0x04D8,0x0000,0x0536,
6120 0x054A,0x2166,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6121 0xFF2D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6122 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6123 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6124 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6125 0x0000,0x0191,0x0000,0x01EA,0x0214,0x0000,0x0000,0x0194,
6126 0x0000,0x01B2,0x0000,0x0000,0x1E0C,0x1E34,0x1E5C,0x1E84,
6127 0x1EA2,0x1ECA,0x1EF2,0x1F0E,0x1F38,0x0000,0x1FC8,0x1F8E,
6128 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6129 0x0417,0x042B,0x040F,0x048C,0x04B4,0x04DA,0x0000,0x0537,
6130 0x054B,0x2167,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6131 0xFF2E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6132 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6133 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6134 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6135 0x0000,0x01F6,0x01BC,0x01EC,0x0216,0x0000,0x0000,0x0000,
6136 0x0000,0x0000,0x0000,0x0000,0x1E0E,0x1E36,0x1E5E,0x1E86,
6137 0x1EA4,0x1ECC,0x1EF4,0x1F0F,0x1F39,0x1F5B,0x1FC9,0x1F8F,
6138 0x1FBC,0x1FE8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6139 0x0418,0x042C,0x0460,0x048E,0x04B6,0x04DC,0x0000,0x0538,
6140 0x054C,0x2168,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6141 0xFF2F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6142 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6143 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6144 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6145 0x0000,0x0198,0x01C4,0x01EE,0x0218,0x023A,0x0000,0x0000,
6146 0x0000,0x0000,0x0000,0x0000,0x1E10,0x1E38,0x0000,0x1E88,
6147 0x1EA6,0x1ECE,0x1EF6,0x1F18,0x1F3A,0x0000,0x1FCA,0x1F98,
6148 0x0000,0x1FE9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6149 0x0419,0x042D,0x0462,0x0490,0x04B8,0x04DE,0x0500,0x0539,
6150 0x054D,0x2169,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6151 0xFF30,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6152 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6153 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6154 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6155 0x0000,0x023D,0x01C7,0x0000,0x021A,0x023B,0x0000,0x0000,
6156 0x0000,0x0000,0x0000,0x0000,0x1E12,0x1E3A,0x1E62,0x1E8A,
6157 0x1EA8,0x1ED0,0x1EF8,0x1F19,0x1F3B,0x1F5D,0x1FCB,0x1F99,
6158 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6159 0x041A,0x042E,0x0464,0x0492,0x04BA,0x04E0,0x0502,0x053A,
6160 0x054E,0x216A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6161 0xFF31,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6162 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6163 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6164 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6165 0x0000,0x0000,0x01CA,0x01F1,0x021C,0x023E,0x0181,0x0000,
6166 0x0000,0x0000,0x0000,0x0000,0x1E14,0x1E3C,0x1E64,0x1E8C,
6167 0x1EAA,0x1ED2,0x0000,0x1F1A,0x1F3C,0x0000,0x1FDA,0x1F9A,
6168 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6169 0x041B,0x042F,0x0466,0x0494,0x04BC,0x04E2,0x0504,0x053B,
6170 0x054F,0x216B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6171 0xFF32,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6172 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6173 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6174 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6175 0x0000,0x0220,0x01CD,0x01F4,0x021E,0x0000,0x0186,0x0197,
6176 0x0000,0x0000,0x0000,0x0000,0x1E16,0x1E3E,0x1E66,0x1E8E,
6177 0x1EAC,0x1ED4,0x0000,0x1F1B,0x1F3D,0x1F5F,0x1FDB,0x1F9B,
6178 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6179 0x041C,0x0400,0x0468,0x0496,0x04BE,0x04E4,0x0506,0x053C,
6180 0x0550,0x216C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6181 0xFF33,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6182 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6183 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6184 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6185 0x0000,0x01A0,0x01CF,0x01F8,0x0000,0x0000,0x0000,0x0196,
6186 0x0000,0x0000,0x0000,0x0000,0x1E18,0x1E40,0x1E68,0x1E90,
6187 0x1EAE,0x1ED6,0x0000,0x1F1C,0x1F3E,0x0000,0x1FF8,0x1F9C,
6188 0x0000,0x1FEC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6189 0x041D,0x0401,0x046A,0x0498,0x04C0,0x04E6,0x0508,0x053D,
6190 0x0551,0x216D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6191 0xFF34,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6192 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6193 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6194 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6195 0x0000,0x01A2,0x01D1,0x01FA,0x0222,0x0000,0x0189,0x0000,
6196 0x0000,0x01B7,0x0000,0x0000,0x1E1A,0x1E42,0x1E6A,0x1E92,
6197 0x1EB0,0x1ED8,0x0000,0x1F1D,0x1F3F,0x0000,0x1FF9,0x1F9D,
6198 0x1FCC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6199 0x041E,0x0402,0x046C,0x049A,0x04C1,0x04E8,0x050A,0x053E,
6200 0x0552,0x216E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6201 0xFF35,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6202 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6203 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6204 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6205 0x0000,0x01A4,0x01D3,0x01FC,0x0224,0x0000,0x018A,0x0000,
6206 0x0000,0x0000,0x0000,0x0000,0x1E1C,0x1E44,0x1E6C,0x1E94,
6207 0x1EB2,0x1EDA,0x0000,0x0000,0x1F48,0x0000,0x1FEA,0x1F9E,
6208 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6209 0x041F,0x0403,0x046E,0x049C,0x04C3,0x04EA,0x050C,0x053F,
6210 0x0553,0x216F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6211 0xFF36,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6212 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6213 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6214 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6215 0x0000,0x01A7,0x01D5,0x01FE,0x0226,0x0000,0x0000,0x0000,
6216 0x01A6,0x0241,0x0000,0x0000,0x1E1E,0x1E46,0x1E6E,0x0000,
6217 0x1EB4,0x1EDC,0x0000,0x0000,0x1F49,0x0000,0x1FEB,0x1F9F,
6218 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6219 0x0420,0x0404,0x0470,0x049E,0x04C5,0x04EC,0x050E,0x0540,
6220 0x0554,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6221 0xFF37,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6222 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6223 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6224 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6225 0x0000,0x0000,0x01D7,0x0200,0x0228,0x0000,0x018F,0x0000,
6226 0x0000,0x0000,0x0000,0x0000,0x1E20,0x1E48,0x1E70,0x0000,
6227 0x1EB6,0x1EDE,0x0000,0x0000,0x1F4A,0x1F68,0x1FFA,0x1FA8,
6228 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6229 0x0421,0x0405,0x0472,0x04A0,0x04C7,0x04EE,0x0000,0x0541,
6230 0x0555,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6231 0xFF38,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6232 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6233 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6234 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6235 0x0000,0x0000,0x01D9,0x0202,0x022A,0x0000,0x0000,0x0000,
6236 0x0000,0x0000,0x0000,0x0000,0x1E22,0x1E4A,0x1E72,0x0000,
6237 0x1EB8,0x1EE0,0x0000,0x0000,0x1F4B,0x1F69,0x1FFB,0x1FA9,
6238 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6239 0x0422,0x0406,0x0474,0x04A2,0x04C9,0x04F0,0x0000,0x0542,
6240 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6241 0xFF39,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6242 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6243 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6244 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6245 0x0000,0x01AC,0x01DB,0x0204,0x022C,0x0000,0x0190,0x019C,
6246 0x01A9,0x0000,0x0000,0x0000,0x1E24,0x1E4C,0x1E74,0x0000,
6247 0x1EBA,0x1EE2,0x0000,0x1F28,0x1F4C,0x1F6A,0x0000,0x1FAA,
6248 0x1FD8,0x1FFC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6249 0x0423,0x0407,0x0476,0x04A4,0x04CB,0x04F2,0x0000,0x0543,
6250 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6251 0xFF3A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6252 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6253 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6254 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6255 0x0000,0x01AF,0x018E,0x0206,0x022E,0x0000,0x0000,0x0000,
6256 0x0000,0x0000,0x0000,0x0000,0x1E26,0x1E4E,0x1E76,0x0000,
6257 0x1EBC,0x1EE4,0x0000,0x1F29,0x1F4D,0x1F6B,0x0000,0x1FAB,
6258 0x1FD9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6259 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6260 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6261 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6262 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6263 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6264 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6265 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6266 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6267 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6268 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6269 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6270 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6271 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6272 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6273 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6274 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6275 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6276 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6277 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6278 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6279 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6280 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6281 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6282 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6283 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6284 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6285 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6286 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6287 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6288 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6289 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6290 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6291 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6292 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6293 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6294 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6295 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6296 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6297 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6298 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6299 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6300 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6301 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6302 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6303 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6304 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6305 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6306 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6307 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6308 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6309 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6310 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6311 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6312 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6313 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6314 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6315 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6316 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6317 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6318 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6319 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6320 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6321 0xFF41,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6322 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6323 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6324 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6325 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6326 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6327 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6328 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6329 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6330 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6331 0xFF42,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6332 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6333 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6334 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6335 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6336 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6337 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6338 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6339 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6340 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6341 0xFF43,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6342 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6343 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6344 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6345 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6346 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6347 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6348 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6349 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6350 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6351 0xFF44,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6352 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6353 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6354 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6355 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6356 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6357 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6358 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6359 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6360 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6361 0xFF45,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6362 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6363 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6364 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6365 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6366 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6367 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6368 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6369 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6370 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6371 0xFF46,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6372 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6373 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6374 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6375 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6376 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6377 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6378 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6379 0x0430,0x0444,0x0458,0x0479,0x04A7,0x04CE,0x04F5,0x0000,
6380 0x0574,0x2170,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6381 0xFF47,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6382 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6383 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6384 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6385 0x0000,0x0180,0x01B4,0x01DF,0x0209,0x0231,0x0000,0x025D,
6386 0x0271,0x0285,0x0299,0x02AD,0x1E01,0x1E29,0x1E51,0x1E79,
6387 0x1E9B,0x1EBF,0x1EE7,0x1F00,0x1F22,0x0000,0x1F64,0x1F80,
6388 0x1FA4,0x1FD2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6389 0x0431,0x0445,0x0459,0x047B,0x04A9,0x0000,0x04F7,0x0561,
6390 0x0575,0x2171,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6391 0xFF48,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6392 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6393 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6394 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6395 0x0000,0x0183,0x01B6,0x01E1,0x020B,0x0233,0x0000,0x025E,
6396 0x0272,0x0286,0x029A,0x02AE,0x1E03,0x1E2B,0x1E53,0x1E7B,
6397 0x0000,0x1EC1,0x1EE9,0x1F01,0x1F23,0x0000,0x1F65,0x1F81,
6398 0x1FA5,0x1FD3,0x1FF6,0x0000,0x0000,0x0000,0x0000,0x0000,
6399 0x0432,0x0446,0x045A,0x047D,0x04AB,0x04D1,0x04F9,0x0562,
6400 0x0576,0x2172,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6401 0xFF49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6402 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6403 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6404 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6405 0x0000,0x0185,0x01B9,0x01E3,0x020D,0x0234,0x0000,0x025F,
6406 0x0273,0x0287,0x029B,0x02AF,0x1E05,0x1E2D,0x1E55,0x1E7D,
6407 0x0000,0x1EC3,0x1EEB,0x1F02,0x1F24,0x0000,0x1F66,0x1F82,
6408 0x1FA6,0x0000,0x1FF7,0x0000,0x0000,0x0000,0x0000,0x0000,
6409 0x0433,0x0447,0x045B,0x047F,0x04AD,0x04D3,0x0000,0x0563,
6410 0x0577,0x2173,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6411 0xFF4A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6412 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6413 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6414 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6415 0x0000,0x0188,0x01BA,0x01E5,0x020F,0x0235,0x0000,0x0260,
6416 0x0274,0x0288,0x029C,0x0000,0x1E07,0x1E2F,0x1E57,0x1E7F,
6417 0x0000,0x1EC5,0x1EED,0x1F03,0x1F25,0x0000,0x1F67,0x1F83,
6418 0x1FA7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6419 0x0434,0x0448,0x045C,0x0481,0x04AF,0x04D5,0x0000,0x0564,
6420 0x0578,0x2174,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6421 0xFF4B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6422 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6423 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6424 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6425 0x0000,0x018C,0x01BB,0x01E7,0x0211,0x0236,0x0000,0x0261,
6426 0x0275,0x0289,0x029D,0x0000,0x1E09,0x1E31,0x1E59,0x1E81,
6427 0x0000,0x1EC7,0x1EEF,0x1F04,0x1F26,0x1F50,0x1F70,0x1F84,
6428 0x1FB0,0x1FD6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6429 0x0435,0x0449,0x045D,0x0000,0x04B1,0x04D7,0x0000,0x0565,
6430 0x0579,0x2175,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6431 0xFF4C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6432 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6433 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6434 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6435 0x0000,0x018D,0x0000,0x01E9,0x0213,0x0237,0x0000,0x0262,
6436 0x0276,0x028A,0x029E,0x0000,0x1E0B,0x1E33,0x1E5B,0x1E83,
6437 0x1EA1,0x1EC9,0x1EF1,0x1F05,0x1F27,0x1F51,0x1F71,0x1F85,
6438 0x1FB1,0x1FD7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6439 0x0436,0x044A,0x045E,0x048B,0x04B3,0x04D9,0x0000,0x0566,
6440 0x057A,0x2176,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6441 0xFF4D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6442 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6443 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6444 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6445 0x0000,0x0192,0x01BE,0x01EB,0x0215,0x0238,0x0000,0x0263,
6446 0x0277,0x028B,0x029F,0x0000,0x1E0D,0x1E35,0x1E5D,0x1E85,
6447 0x1EA3,0x1ECB,0x1EF3,0x1F06,0x1F30,0x1F52,0x1F72,0x1F86,
6448 0x1FB2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6449 0x0437,0x044B,0x045F,0x048D,0x04B5,0x04DB,0x0000,0x0567,
6450 0x057B,0x2177,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6451 0xFF4E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6452 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6453 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6454 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6455 0x0000,0x0195,0x01BD,0x01ED,0x0217,0x0239,0x0250,0x0264,
6456 0x0278,0x028C,0x02A0,0x0000,0x1E0F,0x1E37,0x1E5F,0x1E87,
6457 0x1EA5,0x1ECD,0x1EF5,0x1F07,0x1F31,0x1F53,0x1F73,0x1F87,
6458 0x1FB3,0x1FE0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6459 0x0438,0x044C,0x0461,0x048F,0x04B7,0x04DD,0x0000,0x0568,
6460 0x057C,0x2178,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6461 0xFF4F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6462 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6463 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6464 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6465 0x0000,0x0199,0x01C6,0x01EF,0x0219,0x0000,0x0251,0x0265,
6466 0x0279,0x028D,0x02A1,0x0000,0x1E11,0x1E39,0x1E61,0x1E89,
6467 0x1EA7,0x1ECF,0x1EF7,0x1F10,0x1F32,0x1F54,0x1F74,0x1F90,
6468 0x1FB4,0x1FE1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6469 0x0439,0x044D,0x0463,0x0491,0x04B9,0x04DF,0x0501,0x0569,
6470 0x057D,0x2179,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6471 0xFF50,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6472 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6473 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6474 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6475 0x0000,0x019A,0x01C9,0x01F0,0x021B,0x023C,0x0252,0x0266,
6476 0x027A,0x028E,0x02A2,0x0000,0x1E13,0x1E3B,0x1E63,0x1E8B,
6477 0x1EA9,0x1ED1,0x1EF9,0x1F11,0x1F33,0x1F55,0x1F75,0x1F91,
6478 0x0000,0x1FE2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6479 0x043A,0x044E,0x0465,0x0493,0x04BB,0x04E1,0x0503,0x056A,
6480 0x057E,0x217A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6481 0xFF51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6482 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6483 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6484 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6485 0x0000,0x019B,0x01CC,0x01F3,0x021D,0x0000,0x0253,0x0267,
6486 0x027B,0x028F,0x02A3,0x0000,0x1E15,0x1E3D,0x1E65,0x1E8D,
6487 0x1EAB,0x1ED3,0x0000,0x1F12,0x1F34,0x1F56,0x1F76,0x1F92,
6488 0x1FB6,0x1FE3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6489 0x043B,0x044F,0x0467,0x0495,0x04BD,0x04E3,0x0505,0x056B,
6490 0x057F,0x217B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6491 0xFF52,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6492 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6493 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6494 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6495 0x0000,0x019E,0x01CE,0x01F5,0x021F,0x023F,0x0254,0x0268,
6496 0x027C,0x0290,0x02A4,0x0000,0x1E17,0x1E3F,0x1E67,0x1E8F,
6497 0x1EAD,0x1ED5,0x0000,0x1F13,0x1F35,0x1F57,0x1F77,0x1F93,
6498 0x1FB7,0x1FE4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6499 0x043C,0x0450,0x0469,0x0497,0x04BF,0x04E5,0x0507,0x056C,
6500 0x0580,0x217C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6501 0xFF53,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6502 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6503 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6504 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6505 0x0000,0x01A1,0x01D0,0x01F9,0x0221,0x0240,0x0255,0x0269,
6506 0x027D,0x0291,0x02A5,0x0000,0x1E19,0x1E41,0x1E69,0x1E91,
6507 0x1EAF,0x1ED7,0x0000,0x1F14,0x1F36,0x0000,0x1F78,0x1F94,
6508 0x1FC2,0x1FE5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6509 0x043D,0x0451,0x046B,0x0499,0x0000,0x04E7,0x0509,0x056D,
6510 0x0581,0x217D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6511 0xFF54,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6512 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6513 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6514 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6515 0x0000,0x01A3,0x01D2,0x01FB,0x0223,0x0000,0x0256,0x026A,
6516 0x027E,0x0292,0x02A6,0x0000,0x1E1B,0x1E43,0x1E6B,0x1E93,
6517 0x1EB1,0x1ED9,0x0000,0x1F15,0x1F37,0x0000,0x1F79,0x1F95,
6518 0x1FC3,0x1FE6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6519 0x043E,0x0452,0x046D,0x049B,0x04C2,0x04E9,0x050B,0x056E,
6520 0x0582,0x217E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6521 0xFF55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6522 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6523 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6524 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6525 0x0000,0x01A5,0x01D4,0x01FD,0x0225,0x0000,0x0257,0x026B,
6526 0x027F,0x0293,0x02A7,0x0000,0x1E1D,0x1E45,0x1E6D,0x1E95,
6527 0x1EB3,0x1EDB,0x0000,0x0000,0x1F40,0x0000,0x1F7A,0x1F96,
6528 0x1FC4,0x1FE7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6529 0x043F,0x0453,0x046F,0x049D,0x04C4,0x04EB,0x050D,0x056F,
6530 0x0583,0x217F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6531 0xFF56,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6532 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6533 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6534 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6535 0x0000,0x01A8,0x01D6,0x01FF,0x0227,0x0000,0x0258,0x026C,
6536 0x0280,0x0294,0x02A8,0x0000,0x1E1F,0x1E47,0x1E6F,0x1E96,
6537 0x1EB5,0x1EDD,0x0000,0x0000,0x1F41,0x0000,0x1F7B,0x1F97,
6538 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6539 0x0440,0x0454,0x0471,0x049F,0x04C6,0x04ED,0x050F,0x0570,
6540 0x0584,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6541 0xFF57,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6542 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6543 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6544 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6545 0x0000,0x01AA,0x01D8,0x0201,0x0229,0x0000,0x0259,0x026D,
6546 0x0281,0x0295,0x02A9,0x0000,0x1E21,0x1E49,0x1E71,0x1E97,
6547 0x1EB7,0x1EDF,0x0000,0x0000,0x1F42,0x1F60,0x1F7C,0x1FA0,
6548 0x1FC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6549 0x0441,0x0455,0x0473,0x04A1,0x04C8,0x04EF,0x0000,0x0571,
6550 0x0585,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6551 0xFF58,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6552 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6553 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6554 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6555 0x0000,0x01AB,0x01DA,0x0203,0x022B,0x0000,0x025A,0x026E,
6556 0x0282,0x0296,0x02AA,0x0000,0x1E23,0x1E4B,0x1E73,0x1E98,
6557 0x1EB9,0x1EE1,0x0000,0x0000,0x1F43,0x1F61,0x1F7D,0x1FA1,
6558 0x1FC7,0x1FF2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6559 0x0442,0x0456,0x0475,0x04A3,0x04CA,0x04F1,0x0000,0x0572,
6560 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6561 0xFF59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6562 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6563 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6564 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6565 0x0000,0x01AD,0x01DC,0x0205,0x022D,0x0000,0x025B,0x026F,
6566 0x0283,0x0297,0x02AB,0x0000,0x1E25,0x1E4D,0x1E75,0x1E99,
6567 0x1EBB,0x1EE3,0x0000,0x1F20,0x1F44,0x1F62,0x0000,0x1FA2,
6568 0x1FD0,0x1FF3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6569 0x0443,0x0457,0x0477,0x04A5,0x04CC,0x04F3,0x0000,0x0573,
6570 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6571 0xFF5A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6572 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6573 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6574 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6575 0x0000,0x01B0,0x01DD,0x0207,0x022F,0x0000,0x025C,0x0270,
6576 0x0284,0x0298,0x02AC,0x0000,0x1E27,0x1E4F,0x1E77,0x1E9A,
6577 0x1EBD,0x1EE5,0x0000,0x1F21,0x1F45,0x1F63,0x0000,0x1FA3,
6578 0x1FD1,0x1FF4
6579 };
6580
6581
6582 /* 00C0-05FF */
6583 static const uint16 uni_0C00_05FF[1344]=
6584 {
6585 0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
6586 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,
6587 0x0027,0x0028,0x0029,0x002A,0x0067,0x0068,0x0069,0x0000,
6588 0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x008A,
6589 0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,
6590 0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
6591 0x0047,0x0048,0x0049,0x004A,0x0087,0x0088,0x0089,0x0000,
6592 0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,
6593 0x0073,0x0093,0x0074,0x0094,0x0075,0x0095,0x0076,0x0096,
6594 0x0077,0x0097,0x0078,0x0098,0x0079,0x0099,0x007A,0x009A,
6595 0x00B7,0x00D7,0x00B8,0x00D8,0x00B9,0x00D9,0x00BA,0x00DA,
6596 0x00BB,0x00DB,0x00BC,0x00DC,0x00BD,0x00DD,0x00BE,0x00DE,
6597 0x00BF,0x00DF,0x00C0,0x00E0,0x00C1,0x00E1,0x00C2,0x00E2,
6598 0x00C3,0x00E3,0x00C4,0x00E4,0x00C5,0x00E5,0x00C6,0x00E6,
6599 0x0000,0x00E7,0x00C8,0x00E8,0x00C9,0x00E9,0x00CA,0x00EA,
6600 0x0127,0x0108,0x0128,0x0109,0x0129,0x010A,0x012A,0x010B,
6601 0x012B,0x010C,0x012C,0x010D,0x012D,0x010E,0x012E,0x010F,
6602 0x012F,0x0130,0x0111,0x0131,0x0112,0x0132,0x0113,0x0133,
6603 0x0114,0x0134,0x0115,0x0135,0x0116,0x0136,0x0117,0x0137,
6604 0x0118,0x0138,0x0119,0x0139,0x011A,0x013A,0x0157,0x0177,
6605 0x0158,0x0178,0x0159,0x0179,0x015A,0x017A,0x015B,0x017B,
6606 0x015C,0x017C,0x015D,0x017D,0x015E,0x017E,0x015F,0x017F,
6607 0x0160,0x0180,0x0161,0x0181,0x0162,0x0182,0x0163,0x0183,
6608 0x0072,0x0164,0x0184,0x0165,0x0185,0x0166,0x0186,0x0187,
6609 0x1161,0x0A86,0x07B1,0x11B1,0x0801,0x1201,0x0AD6,0x0851,
6610 0x1251,0x0B76,0x0BC6,0x08A1,0x12A1,0x12F1,0x0D52,0x0C66,
6611 0x0D06,0x0941,0x1341,0x0857,0x0947,0x1391,0x0B27,0x0AD7,
6612 0x09E1,0x13E1,0x1431,0x1481,0x0D07,0x07B8,0x14D1,0x08A8,
6613 0x0B21,0x1521,0x0B71,0x1571,0x0BC1,0x15C1,0x0C18,0x0C11,
6614 0x1611,0x0D08,0x1661,0x16B1,0x0D01,0x1701,0x0859,0x0D51,
6615 0x1751,0x08F9,0x0949,0x0762,0x1162,0x07B2,0x11B2,0x0B79,
6616 0x0802,0x1202,0x1252,0x12A2,0x0992,0x1392,0x1342,0x0000,
6617 0x0000,0x0000,0x0000,0x0000,0x09E2,0x0000,0x13E2,0x0A32,
6618 0x0000,0x1432,0x0A82,0x0000,0x1482,0x0AD2,0x14D2,0x0B22,
6619 0x1522,0x0B72,0x1572,0x0BC2,0x15C2,0x0C12,0x1612,0x0C62,
6620 0x1662,0x0CB2,0x16B2,0x0D02,0x1702,0x1752,0x0763,0x1163,
6621 0x07B3,0x11B3,0x0803,0x1203,0x0853,0x1253,0x08A3,0x12A3,
6622 0x08F3,0x12F3,0x0943,0x1343,0x0993,0x1393,0x09E3,0x13E3,
6623 0x1433,0x0A83,0x0000,0x1483,0x0AD3,0x14D3,0x0991,0x0000,
6624 0x0B23,0x1523,0x0B73,0x1573,0x0BC3,0x15C3,0x0C13,0x1613,
6625 0x0C63,0x1663,0x0CB3,0x16B3,0x0D03,0x1703,0x0D53,0x1753,
6626 0x0764,0x1164,0x07B4,0x11B4,0x0804,0x1204,0x0854,0x1254,
6627 0x08A4,0x12A4,0x08F4,0x12F4,0x0944,0x1344,0x0994,0x1394,
6628 0x09E4,0x13E4,0x0A34,0x1434,0x0A84,0x1484,0x0AD4,0x14D4,
6629 0x0AD1,0x1524,0x0B74,0x1574,0x0BC4,0x15C4,0x0C14,0x1614,
6630 0x0C64,0x1664,0x0CB4,0x16B4,0x0D04,0x1704,0x0D54,0x1754,
6631 0x0765,0x1165,0x07B5,0x11B5,0x1205,0x1255,0x12A5,0x12F5,
6632 0x1345,0x1395,0x09E5,0x0A35,0x1435,0x0A31,0x0A85,0x14D5,
6633 0x1525,0x0C19,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6634 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6635 0x1396,0x13E6,0x1436,0x1486,0x14D6,0x1526,0x1576,0x15C6,
6636 0x1616,0x1666,0x16B6,0x1706,0x1756,0x1167,0x11B7,0x1207,
6637 0x1257,0x12A7,0x12F7,0x1347,0x1397,0x13E7,0x1437,0x1487,
6638 0x14D7,0x1527,0x1577,0x15C7,0x1617,0x1667,0x16B7,0x1707,
6639 0x1757,0x1168,0x11B8,0x1208,0x1258,0x12A8,0x12F8,0x1348,
6640 0x1398,0x13E8,0x1438,0x1488,0x14D8,0x1528,0x1578,0x15C8,
6641 0x1618,0x1668,0x16B8,0x1708,0x1758,0x1169,0x11B9,0x1209,
6642 0x1259,0x12A9,0x12F9,0x1349,0x1399,0x13E9,0x1439,0x1489,
6643 0x14D9,0x1529,0x1579,0x15C9,0x1619,0x1669,0x16B9,0x1709,
6644 0x1759,0x116A,0x11BA,0x120A,0x125A,0x12AA,0x12FA,0x134A,
6645 0x139A,0x13EA,0x143A,0x148A,0x14DA,0x152A,0x157A,0x15CA,
6646 0x161A,0x166A,0x16BA,0x170A,0x175A,0x116B,0x11BB,0x120B,
6647 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6648 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6649 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6650 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6651 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6652 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6653 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6654 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6655 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6656 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6657 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6658 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6659 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6660 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6661 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6662 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6663 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6664 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6665 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6666 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6667 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6668 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6669 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6670 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6671 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6672 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6673 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x01F7,0x0000,
6674 0x01F8,0x01F9,0x01FA,0x0000,0x0253,0x0000,0x0254,0x0255,
6675 0x01D9,0x01FC,0x0257,0x01FE,0x01FF,0x0200,0x0201,0x0202,
6676 0x0258,0x0204,0x02A7,0x0206,0x0207,0x0208,0x0209,0x020A,
6677 0x0299,0x0248,0x0000,0x02A9,0x024B,0x024C,0x0298,0x024E,
6678 0x024F,0x0250,0x0251,0x0252,0x0217,0x0218,0x0219,0x021A,
6679 0x021B,0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222,
6680 0x0223,0x0224,0x0225,0x0226,0x0227,0x0228,0x0229,0x022A,
6681 0x0267,0x0268,0x0269,0x026A,0x026B,0x026C,0x026D,0x026E,
6682 0x026F,0x0270,0x0271,0x0272,0x0273,0x0274,0x0275,0x0000,
6683 0x0277,0x0278,0x0259,0x025A,0x0297,0x02B8,0x02B9,0x02BA,
6684 0x0000,0x02BB,0x029C,0x02BC,0x029D,0x02BD,0x029E,0x02BE,
6685 0x029F,0x02BF,0x02A0,0x02C0,0x02A1,0x02C1,0x02A2,0x02C2,
6686 0x02A3,0x02C3,0x02A4,0x02C4,0x02A5,0x02C5,0x02A6,0x02C6,
6687 0x02C7,0x02C8,0x02C9,0x02CA,0x0000,0x0307,0x0308,0x0000,
6688 0x0309,0x0000,0x0000,0x030A,0x030B,0x02EC,0x02ED,0x02EE,
6689 0x0AF1,0x0B41,0x0B91,0x0BE1,0x0C31,0x0C81,0x0CD1,0x0D21,
6690 0x0732,0x0782,0x07D2,0x0822,0x0872,0x08C2,0x0912,0x0962,
6691 0x0730,0x0780,0x07D0,0x0820,0x0870,0x08C0,0x0910,0x0960,
6692 0x09B0,0x0A00,0x0A50,0x0AA0,0x0AF0,0x0B40,0x0B90,0x0BE0,
6693 0x0C30,0x0C80,0x0CD0,0x0D20,0x0731,0x0781,0x07D1,0x0821,
6694 0x0871,0x08C1,0x0911,0x0961,0x09B1,0x0A01,0x0A51,0x0AA1,
6695 0x1130,0x1180,0x11D0,0x1220,0x1270,0x12C0,0x1310,0x1360,
6696 0x13B0,0x1400,0x1450,0x14A0,0x14F0,0x1540,0x1590,0x15E0,
6697 0x1630,0x1680,0x16D0,0x1720,0x1131,0x1181,0x11D1,0x1221,
6698 0x1271,0x12C1,0x1311,0x1361,0x13B1,0x1401,0x1451,0x14A1,
6699 0x14F1,0x1541,0x1591,0x15E1,0x1631,0x1681,0x16D1,0x1721,
6700 0x1132,0x1182,0x11D2,0x1222,0x1272,0x12C2,0x1312,0x1362,
6701 0x09B2,0x13B2,0x0A02,0x1402,0x0A52,0x1452,0x0AA2,0x14A2,
6702 0x0AF2,0x14F2,0x0B42,0x1542,0x0B92,0x1592,0x0BE2,0x15E2,
6703 0x0C32,0x1632,0x0C82,0x1682,0x0CD2,0x16D2,0x0D22,0x1722,
6704 0x0733,0x1133,0x0783,0x1183,0x07D3,0x11D3,0x0823,0x1223,
6705 0x0873,0x1273,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6706 0x0000,0x0000,0x0913,0x1313,0x0963,0x1363,0x09B3,0x13B3,
6707 0x0A03,0x1403,0x0A53,0x1453,0x0AA3,0x14A3,0x0AF3,0x14F3,
6708 0x0B43,0x1543,0x0B93,0x1593,0x0BE3,0x15E3,0x0C33,0x1633,
6709 0x0C83,0x1683,0x0CD3,0x16D3,0x0D23,0x1723,0x0734,0x1134,
6710 0x0784,0x1184,0x07D4,0x11D4,0x0824,0x1224,0x0874,0x1274,
6711 0x08C4,0x12C4,0x0914,0x1314,0x0964,0x1364,0x09B4,0x13B4,
6712 0x0A04,0x1404,0x0A54,0x1454,0x0AA4,0x14A4,0x0AF4,0x14F4,
6713 0x0B44,0x0B94,0x1594,0x0BE4,0x15E4,0x0C34,0x1634,0x0C84,
6714 0x1684,0x0CD4,0x16D4,0x0D24,0x1724,0x0735,0x1135,0x0000,
6715 0x07D5,0x11D5,0x0825,0x1225,0x0875,0x1275,0x08C5,0x12C5,
6716 0x0915,0x1315,0x0965,0x1365,0x09B5,0x13B5,0x0A05,0x1405,
6717 0x0A55,0x1455,0x0AA5,0x14A5,0x0AF5,0x14F5,0x0B45,0x1545,
6718 0x0B95,0x1595,0x0BE5,0x15E5,0x0C35,0x1635,0x0C85,0x1685,
6719 0x0CD5,0x16D5,0x0D25,0x1725,0x0736,0x1136,0x0786,0x1186,
6720 0x07D6,0x11D6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6721 0x0A06,0x1406,0x0A56,0x1456,0x0AA6,0x14A6,0x0AF6,0x14F6,
6722 0x0B46,0x1546,0x0B96,0x1596,0x0BE6,0x15E6,0x0C36,0x1636,
6723 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6724 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6725 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6726 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6727 0x0000,0x0787,0x07D7,0x0827,0x0877,0x08C7,0x0917,0x0967,
6728 0x09B7,0x0A07,0x0A57,0x0AA7,0x0AF7,0x0B47,0x0B97,0x0BE7,
6729 0x0C37,0x0C87,0x0CD7,0x0D27,0x0738,0x0788,0x07D8,0x0828,
6730 0x0878,0x08C8,0x0918,0x0968,0x09B8,0x0A08,0x0A58,0x0AA8,
6731 0x0AF8,0x0B48,0x0B98,0x0BE8,0x0C38,0x0C88,0x0000,0x0000,
6732 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6733 0x0000,0x1187,0x11D7,0x1227,0x1277,0x12C7,0x1317,0x1367,
6734 0x13B7,0x1407,0x1457,0x14A7,0x14F7,0x1547,0x1597,0x15E7,
6735 0x1637,0x1687,0x16D7,0x1727,0x1138,0x1188,0x11D8,0x1228,
6736 0x1278,0x12C8,0x1318,0x1368,0x13B8,0x1408,0x1458,0x14A8,
6737 0x14F8,0x1548,0x1598,0x15E8,0x1638,0x1688,0x0000,0x0000,
6738 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6739 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6740 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6741 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6742 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6743 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6744 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6745 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6746 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6747 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6748 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6749 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6750 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6751 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6752 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
6753 };
6754
6755
6756 /* 1E00-1FFF */
6757 static uint16 uni_1E00_1FFF[512]=
6758 {
6759 0x076C,0x116C,0x07BC,0x11BC,0x080C,0x120C,0x085C,0x125C,
6760 0x08AC,0x12AC,0x08FC,0x12FC,0x094C,0x134C,0x099C,0x139C,
6761 0x09EC,0x13EC,0x0A3C,0x143C,0x0A8C,0x148C,0x0ADC,0x14DC,
6762 0x0B2C,0x152C,0x0B7C,0x157C,0x0BCC,0x15CC,0x0C1C,0x161C,
6763 0x0C6C,0x166C,0x0CBC,0x16BC,0x0D0C,0x170C,0x0D5C,0x175C,
6764 0x076D,0x116D,0x07BD,0x11BD,0x080D,0x120D,0x085D,0x125D,
6765 0x08AD,0x12AD,0x08FD,0x12FD,0x094D,0x134D,0x099D,0x139D,
6766 0x09ED,0x13ED,0x0A3D,0x143D,0x0A8D,0x148D,0x0ADD,0x14DD,
6767 0x0B2D,0x152D,0x0B7D,0x157D,0x0BCD,0x15CD,0x0C1D,0x161D,
6768 0x0C6D,0x166D,0x0CBD,0x16BD,0x0D0D,0x170D,0x0D5D,0x175D,
6769 0x076E,0x116E,0x07BE,0x11BE,0x080E,0x120E,0x085E,0x125E,
6770 0x08AE,0x12AE,0x08FE,0x12FE,0x094E,0x134E,0x099E,0x139E,
6771 0x0770,0x13EE,0x0A3E,0x143E,0x0A8E,0x148E,0x0ADE,0x14DE,
6772 0x0B2E,0x152E,0x0B7E,0x157E,0x0BCE,0x15CE,0x0C1E,0x161E,
6773 0x0C6E,0x166E,0x0CBE,0x16BE,0x0D0E,0x170E,0x0D5E,0x175E,
6774 0x076F,0x116F,0x07BF,0x11BF,0x080F,0x120F,0x085F,0x125F,
6775 0x08AF,0x12AF,0x08FF,0x12FF,0x094F,0x134F,0x099F,0x139F,
6776 0x09EF,0x13EF,0x0A3F,0x143F,0x0A8F,0x148F,0x0ADF,0x14DF,
6777 0x0B2F,0x152F,0x0B7F,0x157F,0x0BCF,0x15CF,0x161F,0x166F,
6778 0x16BF,0x170F,0x175F,0x1170,0x0000,0x0000,0x0000,0x0000,
6779 0x0900,0x1300,0x0950,0x1350,0x09A0,0x13A0,0x09F0,0x13F0,
6780 0x0A40,0x1440,0x0A90,0x1490,0x0AE0,0x14E0,0x0B30,0x1530,
6781 0x0B80,0x1580,0x0BD0,0x15D0,0x0C20,0x1620,0x0C70,0x1670,
6782 0x0CC0,0x16C0,0x0D10,0x1710,0x0D60,0x1760,0x0771,0x1171,
6783 0x07C1,0x11C1,0x0811,0x1211,0x0861,0x1261,0x08B1,0x12B1,
6784 0x0901,0x1301,0x0951,0x1351,0x09A1,0x13A1,0x09F1,0x13F1,
6785 0x0A41,0x1441,0x0A91,0x1491,0x0AE1,0x14E1,0x0B31,0x1531,
6786 0x0B81,0x1581,0x0BD1,0x15D1,0x0C21,0x1621,0x0C71,0x1671,
6787 0x0CC1,0x16C1,0x0D11,0x1711,0x0D61,0x1761,0x0772,0x1172,
6788 0x07C2,0x11C2,0x0812,0x1212,0x0862,0x1262,0x08B2,0x12B2,
6789 0x0902,0x1302,0x0952,0x1352,0x09A2,0x13A2,0x09F2,0x13F2,
6790 0x0A42,0x1442,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6791 0x1173,0x11C3,0x1213,0x1263,0x12B3,0x1303,0x1353,0x13A3,
6792 0x0773,0x07C3,0x0813,0x0863,0x08B3,0x0903,0x0953,0x09A3,
6793 0x13F3,0x1443,0x1493,0x14E3,0x1533,0x1583,0x0000,0x0000,
6794 0x09F3,0x0A43,0x0A93,0x0AE3,0x0B33,0x0B83,0x0000,0x0000,
6795 0x1713,0x1763,0x1174,0x11C4,0x1214,0x1264,0x12B4,0x1304,
6796 0x0D13,0x0D63,0x0774,0x07C4,0x0814,0x0864,0x08B4,0x0904,
6797 0x1354,0x13A4,0x13F4,0x1444,0x1494,0x14E4,0x1534,0x1584,
6798 0x0954,0x09A4,0x09F4,0x0A44,0x0A94,0x0AE4,0x0B34,0x0B84,
6799 0x15D4,0x1624,0x1674,0x16C4,0x1714,0x1764,0x0000,0x0000,
6800 0x0BD4,0x0C24,0x0C74,0x0CC4,0x0D14,0x0D64,0x0000,0x0000,
6801 0x12B5,0x1305,0x1355,0x13A5,0x13F5,0x1445,0x1495,0x14E5,
6802 0x0000,0x0905,0x0000,0x09A5,0x0000,0x0A45,0x0000,0x0AE5,
6803 0x1675,0x16C5,0x1715,0x1765,0x1176,0x11C6,0x1216,0x1266,
6804 0x0C75,0x0CC5,0x0D15,0x0D65,0x0776,0x07C6,0x0816,0x0866,
6805 0x12B6,0x1306,0x1356,0x13A6,0x13F6,0x1446,0x1496,0x14E6,
6806 0x1536,0x1586,0x15D6,0x1626,0x1676,0x16C6,0x0000,0x0000,
6807 0x1177,0x11C7,0x1217,0x1267,0x12B7,0x1307,0x1357,0x13A7,
6808 0x0777,0x07C7,0x0817,0x0867,0x08B7,0x0907,0x0957,0x09A7,
6809 0x13F7,0x1447,0x1497,0x14E7,0x1537,0x1587,0x15D7,0x1627,
6810 0x09F7,0x0A47,0x0A97,0x0AE7,0x0B37,0x0B87,0x0BD7,0x0C27,
6811 0x1677,0x16C7,0x1717,0x1767,0x1178,0x11C8,0x1218,0x1268,
6812 0x0C77,0x0CC7,0x0D17,0x0D67,0x0778,0x07C8,0x0818,0x0868,
6813 0x12B8,0x1308,0x1358,0x13A8,0x13F8,0x0000,0x1498,0x14E8,
6814 0x08B8,0x0908,0x08B6,0x0906,0x09A8,0x0000,0x0000,0x0000,
6815 0x0000,0x0000,0x1538,0x1588,0x15D8,0x0000,0x1678,0x16C8,
6816 0x0956,0x09A6,0x09F6,0x0A46,0x0B88,0x0000,0x0000,0x0000,
6817 0x1718,0x1768,0x1179,0x11C9,0x0000,0x0000,0x12B9,0x1309,
6818 0x0D18,0x0D68,0x0A96,0x0AE6,0x0000,0x0000,0x0000,0x0000,
6819 0x13A9,0x13F9,0x1449,0x1499,0x14E9,0x1539,0x1589,0x15D9,
6820 0x09A9,0x09F9,0x0BD6,0x0C26,0x0B39,0x0000,0x0000,0x0000,
6821 0x0000,0x0000,0x16C9,0x1719,0x0000,0x0000,0x11CA,0x121A,
6822 0x0B36,0x0B86,0x0C76,0x0CC6,0x0D19,0x0000,0x0000,0x0000
6823 };
6824
6825
6826 /* 2160-217F */
6827 static const uint16 uni_2160_217F[32]=
6828 {
6829 0x0739,0x0789,0x07D9,0x0829,0x0879,0x08C9,0x0919,0x0969,
6830 0x09B9,0x0A09,0x0A59,0x0AA9,0x0AF9,0x0B49,0x0B99,0x0BE9,
6831 0x1139,0x1189,0x11D9,0x1229,0x1279,0x12C9,0x1319,0x1369,
6832 0x13B9,0x1409,0x1459,0x14A9,0x14F9,0x1549,0x1599,0x15E9
6833 };
6834
6835
6836 /* 24B0-24EF */
6837 static const uint16 uni_24B0_24EF[64]=
6838 {
6839 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0511,0x0512,
6840 0x0513,0x0514,0x0515,0x0516,0x0517,0x0518,0x0519,0x051A,
6841 0x051B,0x051C,0x051D,0x051E,0x051F,0x0520,0x0521,0x0522,
6842 0x0523,0x0524,0x0525,0x0526,0x0527,0x0528,0x0529,0x052A,
6843 0x0531,0x0532,0x0533,0x0534,0x0535,0x0536,0x0537,0x0538,
6844 0x0539,0x053A,0x053B,0x053C,0x053D,0x053E,0x053F,0x0540,
6845 0x0541,0x0542,0x0543,0x0544,0x0545,0x0546,0x0547,0x0548,
6846 0x0549,0x054A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
6847 };
6848
6849
6850 /* FF20-FF5F */
6851 static const uint16 uni_FF20_FF5F[64]=
6852 {
6853 0x0000,0x0560,0x05B0,0x0600,0x0650,0x06A0,0x06F0,0x0740,
6854 0x0790,0x07E0,0x0830,0x0880,0x08D0,0x0920,0x0970,0x09C0,
6855 0x0A10,0x0A60,0x0AB0,0x0B00,0x0B50,0x0BA0,0x0BF0,0x0C40,
6856 0x0C90,0x0CE0,0x0D30,0x0000,0x0000,0x0000,0x0000,0x0000,
6857 0x0000,0x0F60,0x0FB0,0x1000,0x1050,0x10A0,0x10F0,0x1140,
6858 0x1190,0x11E0,0x1230,0x1280,0x12D0,0x1320,0x1370,0x13C0,
6859 0x1410,0x1460,0x14B0,0x1500,0x1550,0x15A0,0x15F0,0x1640,
6860 0x1690,0x16E0,0x1730,0x0000,0x0000,0x0000,0x0000,0x0000
6861 };
6862
6863
6864
6865
6866
6867 /*
6868 Returns
6869 a number 0..15, if a valid HEX digit in lower case,
6870 -1 otherwise.
6871 */
6872
hexlo(int x)6873 static int hexlo(int x)
6874 {
6875 static const char hex_lo_digit[256]=
6876 {
6877 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
6878 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
6879 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* !"#$%&'()*+,-./ */
6880 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1, /* 0123456789:;<=>? */
6881 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* @ABCDEFGHIJKLMNO */
6882 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* PQRSTUVWXYZ[\]^_ */
6883 -1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* `abcdefghijklmno */
6884 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* pqrstuvwxyz{|}~. */
6885 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
6886 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
6887 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
6888 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
6889 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
6890 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
6891 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
6892 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
6893 };
6894 return hex_lo_digit[(unsigned int) x];
6895 }
6896
6897
6898 /*
6899 Safe characters:
6900 '\0' NULL
6901 A..Z capital letters,
6902 a..z small letters
6903 0..9 digits
6904 _ underscore
6905 */
6906 static const char filename_safe_char[128]=
6907 {
6908 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ................ */
6909 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ................ */
6910 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* !"#$%&'()*+,-./ */
6911 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, /* 0123456789:;<=>? */
6912 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* @ABCDEFGHIJKLMNO */
6913 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1, /* PQRSTUVWXYZ[\]^_ */
6914 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* `abcdefghijklmno */
6915 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* pqrstuvwxyz{|}~. */
6916 };
6917
6918 #define MY_FILENAME_ESCAPE '@'
6919
6920 /*
6921 note, that we cannot trust 'e' here, it's may be fake,
6922 see strconvert()
6923 */
6924 static int
my_mb_wc_filename(CHARSET_INFO * cs,my_wc_t * pwc,const uchar * s,const uchar * e)6925 my_mb_wc_filename(CHARSET_INFO *cs __attribute__((unused)),
6926 my_wc_t *pwc, const uchar *s, const uchar *e)
6927 {
6928 int byte1, byte2;
6929 if (s >= e)
6930 return MY_CS_TOOSMALL;
6931
6932 if (*s < 128 && filename_safe_char[*s])
6933 {
6934 *pwc= *s;
6935 return 1;
6936 }
6937
6938 if (*s != MY_FILENAME_ESCAPE)
6939 return MY_CS_ILSEQ;
6940
6941 if (s + 3 > e)
6942 return MY_CS_TOOSMALL3;
6943
6944 byte1= s[1];
6945 if (byte1 == 0)
6946 return MY_CS_ILSEQ; /* avoid possible out-of-bounds read */
6947 byte2= s[2];
6948
6949 if (byte1 >= 0x30 && byte1 <= 0x7F &&
6950 byte2 >= 0x30 && byte2 <= 0x7F)
6951 {
6952 int code= (byte1 - 0x30) * 80 + byte2 - 0x30;
6953 if (code < 5994 && touni[code])
6954 {
6955 *pwc= touni[code];
6956 return 3;
6957 }
6958 if (byte1 == '@' && byte2 == '@')
6959 {
6960 *pwc= 0;
6961 return 3;
6962 }
6963 }
6964
6965 if (s + 4 > e)
6966 return MY_CS_TOOSMALL4;
6967
6968 if ((byte1= hexlo(byte1)) >= 0 &&
6969 (byte2= hexlo(byte2)) >= 0)
6970 {
6971 int byte3= hexlo(s[3]);
6972 int byte4= hexlo(s[3] ? s[4] : 0);
6973 if (byte3 >=0 && byte4 >=0)
6974 {
6975 *pwc= (byte1 << 12) + (byte2 << 8) + (byte3 << 4) + byte4;
6976 return 5;
6977 }
6978 }
6979
6980 return MY_CS_ILSEQ;
6981 }
6982
6983
6984 static int
my_wc_mb_filename(CHARSET_INFO * cs,my_wc_t wc,uchar * s,uchar * e)6985 my_wc_mb_filename(CHARSET_INFO *cs __attribute__((unused)),
6986 my_wc_t wc, uchar *s, uchar *e)
6987 {
6988 int code;
6989 static const char hex[]= "0123456789abcdef";
6990
6991 if (s >= e)
6992 return MY_CS_TOOSMALL;
6993
6994 if (wc < 128 && filename_safe_char[wc])
6995 {
6996 *s= (uchar) wc;
6997 return 1;
6998 }
6999
7000 if (s + 3 > e)
7001 return MY_CS_TOOSMALL3;
7002
7003 *s++= MY_FILENAME_ESCAPE;
7004 if ((wc >= 0x00C0 && wc <= 0x05FF && (code= uni_0C00_05FF[wc - 0x00C0])) ||
7005 (wc >= 0x1E00 && wc <= 0x1FFF && (code= uni_1E00_1FFF[wc - 0x1E00])) ||
7006 (wc >= 0x2160 && wc <= 0x217F && (code= uni_2160_217F[wc - 0x2160])) ||
7007 (wc >= 0x24B0 && wc <= 0x24EF && (code= uni_24B0_24EF[wc - 0x24B0])) ||
7008 (wc >= 0xFF20 && wc <= 0xFF5F && (code= uni_FF20_FF5F[wc - 0xFF20])))
7009 {
7010 *s++= (code / 80) + 0x30;
7011 *s++= (code % 80) + 0x30;
7012 return 3;
7013 }
7014
7015 /* Non letter */
7016 if (s + 4 > e)
7017 return MY_CS_TOOSMALL5;
7018
7019 *s++= hex[(wc >> 12) & 15];
7020 *s++= hex[(wc >> 8) & 15];
7021 *s++= hex[(wc >> 4) & 15];
7022 *s++= hex[(wc) & 15];
7023 return 5;
7024 }
7025
7026
7027 static int
my_charlen_filename(CHARSET_INFO * cs,const uchar * str,const uchar * end)7028 my_charlen_filename(CHARSET_INFO *cs, const uchar *str, const uchar *end)
7029 {
7030 my_wc_t wc;
7031 return cs->cset->mb_wc(cs, &wc, str, end);
7032 }
7033
7034
7035 #define MY_FUNCTION_NAME(x) my_ ## x ## _filename
7036 #define CHARLEN(cs,str,end) my_charlen_filename(cs,str,end)
7037 #define DEFINE_WELL_FORMED_CHAR_LENGTH_USING_CHARLEN
7038 #include "ctype-mb.inl"
7039 #undef MY_FUNCTION_NAME
7040 #undef CHARLEN
7041 #undef DEFINE_WELL_FORMED_CHAR_LENGTH_USING_CHARLEN
7042 /* my_well_formed_char_length_filename */
7043
7044 #define MY_FUNCTION_NAME(x) my_ ## x ## _filename
7045 #define DEFINE_STRNNCOLL 0
7046 #define DEFINE_STRNXFRM_UNICODE
7047 #define MY_MB_WC(cs, pwc, s, e) my_mb_wc_filename(cs, pwc, s, e)
7048 #define OPTIMIZE_ASCII 0
7049 #define UNICASE_MAXCHAR MY_UNICASE_INFO_DEFAULT_MAXCHAR
7050 #define UNICASE_PAGE0 my_unicase_default_page00
7051 #define UNICASE_PAGES my_unicase_default_pages
7052
7053 /*
7054 #define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
7055 #define WEIGHT_MB1(x) my_weight_mb1_utf8_general_ci(x)
7056 #define WEIGHT_MB2(x,y) my_weight_mb2_utf8_general_ci(x,y)
7057 #define WEIGHT_MB3(x,y,z) my_weight_mb3_utf8_general_ci(x,y,z)
7058 */
7059 #include "strcoll.inl"
7060
7061
7062 static MY_COLLATION_HANDLER my_collation_filename_handler =
7063 {
7064 NULL, /* init */
7065 my_strnncoll_simple,
7066 my_strnncollsp_simple,
7067 my_strnncollsp_nchars_generic,
7068 my_strnxfrm_filename,
7069 my_strnxfrmlen_unicode,
7070 my_like_range_mb,
7071 my_wildcmp_utf8,
7072 my_strcasecmp_utf8,
7073 my_instr_mb,
7074 my_hash_sort_utf8mb3,
7075 my_propagate_complex
7076 };
7077
7078 static MY_CHARSET_HANDLER my_charset_filename_handler=
7079 {
7080 NULL, /* init */
7081 my_numchars_mb,
7082 my_charpos_mb,
7083 my_lengthsp_8bit,
7084 my_numcells_mb,
7085 my_mb_wc_filename,
7086 my_wc_mb_filename,
7087 my_mb_ctype_mb,
7088 my_caseup_str_utf8,
7089 my_casedn_str_utf8,
7090 my_caseup_utf8,
7091 my_casedn_utf8,
7092 my_snprintf_8bit,
7093 my_long10_to_str_8bit,
7094 my_longlong10_to_str_8bit,
7095 my_fill_8bit,
7096 my_strntol_8bit,
7097 my_strntoul_8bit,
7098 my_strntoll_8bit,
7099 my_strntoull_8bit,
7100 my_strntod_8bit,
7101 my_strtoll10_8bit,
7102 my_strntoull10rnd_8bit,
7103 my_scan_8bit,
7104 my_charlen_filename,
7105 my_well_formed_char_length_filename,
7106 my_copy_fix_mb,
7107 my_wc_mb_filename,
7108 };
7109
7110
7111
7112 struct charset_info_st my_charset_filename=
7113 {
7114 17,0,0, /* number */
7115 MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_HIDDEN|MY_CS_NONASCII,
7116 "filename", /* cs name */
7117 "filename", /* name */
7118 "", /* comment */
7119 NULL, /* tailoring */
7120 ctype_utf8, /* ctype */
7121 to_lower_utf8, /* to_lower */
7122 to_upper_utf8, /* to_upper */
7123 to_upper_utf8, /* sort_order */
7124 NULL, /* uca */
7125 NULL, /* tab_to_uni */
7126 NULL, /* tab_from_uni */
7127 &my_unicase_default,/* caseinfo */
7128 NULL, /* state_map */
7129 NULL, /* ident_map */
7130 1, /* strxfrm_multiply */
7131 1, /* caseup_multiply */
7132 1, /* casedn_multiply */
7133 1, /* mbminlen */
7134 5, /* mbmaxlen */
7135 0, /* min_sort_char */
7136 0xFFFF, /* max_sort_char */
7137 ' ', /* pad char */
7138 0, /* escape_with_backslash_is_dangerous */
7139 1, /* levels_for_order */
7140 &my_charset_filename_handler,
7141 &my_collation_filename_handler
7142 };
7143
7144
7145 #endif /* HAVE_CHARSET_UTF8 */
7146
7147
7148
7149 #ifdef HAVE_CHARSET_utf8mb4
7150
7151 /*
7152 We consider bytes with code more than 127 as a letter.
7153 This guarantees that word boundaries work fine with regular
7154 expressions. Note, there is no need to mark byte 255 as a
7155 letter, it is illegal byte in UTF8.
7156 */
7157 static uchar ctype_utf8mb4[]=
7158 {
7159 0,
7160 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
7161 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
7162 72, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
7163 132,132,132,132,132,132,132,132,132,132, 16, 16, 16, 16, 16, 16,
7164 16,129,129,129,129,129,129, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7165 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 16, 16, 16, 16,
7166 16,130,130,130,130,130,130, 2, 2, 2, 2, 2, 2, 2, 2, 2,
7167 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 16, 16, 16, 32,
7168 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7169 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7170 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7171 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7172 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7173 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7174 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7175 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0
7176 };
7177
7178
7179 static uchar to_lower_utf8mb4[]=
7180 {
7181 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
7182 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
7183 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
7184 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
7185 64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
7186 112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95,
7187 96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
7188 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
7189 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
7190 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
7191 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
7192 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
7193 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
7194 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
7195 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
7196 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
7197 };
7198
7199
7200 static uchar to_upper_utf8mb4[]=
7201 {
7202 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
7203 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
7204 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
7205 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
7206 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
7207 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
7208 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
7209 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
7210 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
7211 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
7212 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
7213 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
7214 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
7215 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
7216 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
7217 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
7218 };
7219
7220
7221 static int
my_mb_wc_utf8mb4(CHARSET_INFO * cs,my_wc_t * pwc,const uchar * s,const uchar * e)7222 my_mb_wc_utf8mb4(CHARSET_INFO *cs __attribute__((unused)),
7223 my_wc_t * pwc, const uchar *s, const uchar *e)
7224 {
7225 return my_mb_wc_utf8mb4_quick(pwc, s, e);
7226 }
7227
7228
7229 /*
7230 The same as above, but without range check
7231 for example, for a null-terminated string
7232 */
7233 static int
my_mb_wc_utf8mb4_no_range(CHARSET_INFO * cs,my_wc_t * pwc,const uchar * s)7234 my_mb_wc_utf8mb4_no_range(CHARSET_INFO *cs __attribute__((unused)),
7235 my_wc_t *pwc, const uchar *s)
7236 {
7237 uchar c;
7238
7239 c= s[0];
7240 if (c < 0x80)
7241 {
7242 *pwc = c;
7243 return 1;
7244 }
7245
7246 if (c < 0xc2)
7247 return MY_CS_ILSEQ;
7248
7249 if (c < 0xe0)
7250 {
7251 if (!IS_CONTINUATION_BYTE(s[1]))
7252 return MY_CS_ILSEQ;
7253
7254 *pwc= UTF8MB2_CODE(c, s[1]);
7255 return 2;
7256 }
7257
7258 if (c < 0xf0)
7259 {
7260 if (!IS_UTF8MB3_STEP2(c, s[1], s[2]))
7261 return MY_CS_ILSEQ;
7262 *pwc= UTF8MB3_CODE(c, s[1], s[2]);
7263 return 3;
7264 }
7265 else if (c < 0xf5)
7266 {
7267 if (!IS_UTF8MB4_STEP2(c, s[1], s[2], s[3]))
7268 return MY_CS_ILSEQ;
7269 *pwc= UTF8MB4_CODE(c, s[1], s[2], s[3]);
7270 return 4;
7271 }
7272 return MY_CS_ILSEQ;
7273 }
7274
7275
7276 static int
my_wc_mb_utf8mb4(CHARSET_INFO * cs,my_wc_t wc,uchar * r,uchar * e)7277 my_wc_mb_utf8mb4(CHARSET_INFO *cs __attribute__((unused)),
7278 my_wc_t wc, uchar *r, uchar *e)
7279 {
7280 int count;
7281
7282 if (r >= e)
7283 return MY_CS_TOOSMALL;
7284
7285 if (wc < 0x80)
7286 count= 1;
7287 else if (wc < 0x800)
7288 count= 2;
7289 else if (wc < 0x10000)
7290 count= 3;
7291 else if (wc < 0x200000)
7292 count= 4;
7293 else return MY_CS_ILUNI;
7294
7295 if (r + count > e)
7296 return MY_CS_TOOSMALLN(count);
7297
7298 switch (count) {
7299 case 4: r[3] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x10000;
7300 /* fall through */
7301 case 3: r[2] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x800;
7302 /* fall through */
7303 case 2: r[1] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0xc0;
7304 /* fall through */
7305 case 1: r[0] = (uchar) wc;
7306 }
7307 return count;
7308 }
7309
7310
7311 /*
7312 The same as above, but without range check.
7313 */
7314 static int
my_wc_mb_utf8mb4_no_range(CHARSET_INFO * cs,my_wc_t wc,uchar * r)7315 my_wc_mb_utf8mb4_no_range(CHARSET_INFO *cs __attribute__((unused)),
7316 my_wc_t wc, uchar *r)
7317 {
7318 int count;
7319
7320 if (wc < 0x80)
7321 count= 1;
7322 else if (wc < 0x800)
7323 count= 2;
7324 else if (wc < 0x10000)
7325 count= 3;
7326 else if (wc < 0x200000)
7327 count= 4;
7328 else
7329 return MY_CS_ILUNI;
7330
7331 switch (count)
7332 {
7333 case 4: r[3]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x10000;
7334 /* fall through */
7335 case 3: r[2]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x800;
7336 /* fall through */
7337 case 2: r[1]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0xc0;
7338 /* fall through */
7339 case 1: r[0]= (uchar) wc;
7340 }
7341 return count;
7342 }
7343
7344
7345 static inline void
my_tolower_utf8mb4(MY_UNICASE_INFO * uni_plane,my_wc_t * wc)7346 my_tolower_utf8mb4(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
7347 {
7348 if (*wc <= uni_plane->maxchar)
7349 {
7350 MY_UNICASE_CHARACTER *page;
7351 if ((page= uni_plane->page[(*wc >> 8)]))
7352 *wc= page[*wc & 0xFF].tolower;
7353 }
7354 }
7355
7356
7357 static inline void
my_toupper_utf8mb4(MY_UNICASE_INFO * uni_plane,my_wc_t * wc)7358 my_toupper_utf8mb4(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
7359 {
7360 if (*wc <= uni_plane->maxchar)
7361 {
7362 MY_UNICASE_CHARACTER *page;
7363 if ((page= uni_plane->page[(*wc >> 8)]))
7364 *wc= page[*wc & 0xFF].toupper;
7365 }
7366 }
7367
7368
7369 static size_t
my_caseup_utf8mb4(CHARSET_INFO * cs,const char * src,size_t srclen,char * dst,size_t dstlen)7370 my_caseup_utf8mb4(CHARSET_INFO *cs, const char *src, size_t srclen,
7371 char *dst, size_t dstlen)
7372 {
7373 my_wc_t wc;
7374 int srcres, dstres;
7375 const char *srcend= src + srclen;
7376 char *dstend= dst + dstlen, *dst0= dst;
7377 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
7378 DBUG_ASSERT(src != dst || cs->caseup_multiply == 1);
7379
7380 while ((src < srcend) &&
7381 (srcres= my_mb_wc_utf8mb4(cs, &wc,
7382 (uchar *) src, (uchar*) srcend)) > 0)
7383 {
7384 my_toupper_utf8mb4(uni_plane, &wc);
7385 if ((dstres= my_wc_mb_utf8mb4(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
7386 break;
7387 src+= srcres;
7388 dst+= dstres;
7389 }
7390 return (size_t) (dst - dst0);
7391 }
7392
7393
7394 static void
my_hash_sort_utf8mb4_nopad(CHARSET_INFO * cs,const uchar * s,size_t slen,ulong * nr1,ulong * nr2)7395 my_hash_sort_utf8mb4_nopad(CHARSET_INFO *cs, const uchar *s, size_t slen,
7396 ulong *nr1, ulong *nr2)
7397 {
7398 my_wc_t wc;
7399 int res;
7400 const uchar *e= s + slen;
7401 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
7402 register ulong m1= *nr1, m2= *nr2;
7403
7404 while ((res= my_mb_wc_utf8mb4(cs, &wc, (uchar*) s, (uchar*) e)) > 0)
7405 {
7406 my_tosort_unicode(uni_plane, &wc, cs->state);
7407 MY_HASH_ADD_16(m1, m2, (uint) (wc & 0xFFFF));
7408 if (wc > 0xFFFF)
7409 {
7410 /*
7411 Put the highest byte only if it is non-zero,
7412 to make hash functions for utf8mb3 and utf8mb4
7413 compatible for BMP characters.
7414 This is useful to keep order of records in
7415 test results, e.g. for "SHOW GRANTS".
7416 */
7417 MY_HASH_ADD(m1, m2, (uint) ((wc >> 16) & 0xFF));
7418 }
7419 s+= res;
7420 }
7421 *nr1= m1;
7422 *nr2= m2;
7423 }
7424
7425
7426 static void
my_hash_sort_utf8mb4(CHARSET_INFO * cs,const uchar * s,size_t slen,ulong * nr1,ulong * nr2)7427 my_hash_sort_utf8mb4(CHARSET_INFO *cs, const uchar *s, size_t slen,
7428 ulong *nr1, ulong *nr2)
7429 {
7430 /*
7431 Remove end space. We do this to be able to compare
7432 'A ' and 'A' as identical
7433 */
7434 const uchar *e= skip_trailing_space(s, slen);
7435 my_hash_sort_utf8mb4_nopad(cs, s, e - s, nr1, nr2);
7436 }
7437
7438
7439 static size_t
my_caseup_str_utf8mb4(CHARSET_INFO * cs,char * src)7440 my_caseup_str_utf8mb4(CHARSET_INFO *cs, char *src)
7441 {
7442 my_wc_t wc;
7443 int srcres, dstres;
7444 char *dst= src, *dst0= src;
7445 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
7446 DBUG_ASSERT(cs->caseup_multiply == 1);
7447
7448 while (*src &&
7449 (srcres= my_mb_wc_utf8mb4_no_range(cs, &wc, (uchar *) src)) > 0)
7450 {
7451 my_toupper_utf8mb4(uni_plane, &wc);
7452 if ((dstres= my_wc_mb_utf8mb4_no_range(cs, wc, (uchar*) dst)) <= 0)
7453 break;
7454 src+= srcres;
7455 dst+= dstres;
7456 }
7457 *dst= '\0';
7458 return (size_t) (dst - dst0);
7459 }
7460
7461
7462 static size_t
my_casedn_utf8mb4(CHARSET_INFO * cs,const char * src,size_t srclen,char * dst,size_t dstlen)7463 my_casedn_utf8mb4(CHARSET_INFO *cs,
7464 const char *src, size_t srclen,
7465 char *dst, size_t dstlen)
7466 {
7467 my_wc_t wc;
7468 int srcres, dstres;
7469 const char *srcend= src + srclen;
7470 char *dstend= dst + dstlen, *dst0= dst;
7471 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
7472 DBUG_ASSERT(src != dst || cs->casedn_multiply == 1);
7473
7474 while ((src < srcend) &&
7475 (srcres= my_mb_wc_utf8mb4(cs, &wc,
7476 (uchar*) src, (uchar*) srcend)) > 0)
7477 {
7478 my_tolower_utf8mb4(uni_plane, &wc);
7479 if ((dstres= my_wc_mb_utf8mb4(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
7480 break;
7481 src+= srcres;
7482 dst+= dstres;
7483 }
7484 return (size_t) (dst - dst0);
7485 }
7486
7487
7488 static size_t
my_casedn_str_utf8mb4(CHARSET_INFO * cs,char * src)7489 my_casedn_str_utf8mb4(CHARSET_INFO *cs, char *src)
7490 {
7491 my_wc_t wc;
7492 int srcres, dstres;
7493 char *dst= src, *dst0= src;
7494 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
7495 DBUG_ASSERT(cs->casedn_multiply == 1);
7496
7497 while (*src &&
7498 (srcres= my_mb_wc_utf8mb4_no_range(cs, &wc, (uchar *) src)) > 0)
7499 {
7500 my_tolower_utf8mb4(uni_plane, &wc);
7501 if ((dstres= my_wc_mb_utf8mb4_no_range(cs, wc, (uchar*) dst)) <= 0)
7502 break;
7503 src+= srcres;
7504 dst+= dstres;
7505 }
7506
7507 /*
7508 In rare cases lower string can be shorter than
7509 the original string, for example:
7510
7511 "U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE"
7512 (which is 0xC4B0 in utf8, i.e. two bytes)
7513
7514 is converted into
7515
7516 "U+0069 LATIN SMALL LETTER I"
7517 (which is 0x69 in utf8, i.e. one byte)
7518
7519 So, we need to put '\0' terminator after converting.
7520 */
7521
7522 *dst= '\0';
7523 return (size_t) (dst - dst0);
7524 }
7525
7526
7527 /**
7528 Compare 0-terminated UTF8 strings.
7529
7530 @param cs character set handler
7531 @param s First 0-terminated string to compare
7532 @param t Second 0-terminated string to compare
7533
7534 @return Comparison result.
7535 @retval negative number if s < t
7536 @retval positive number if s > t
7537 @retval 0 is the strings are equal
7538 */
7539
7540 static int
my_strcasecmp_utf8mb4(CHARSET_INFO * cs,const char * s,const char * t)7541 my_strcasecmp_utf8mb4(CHARSET_INFO *cs, const char *s, const char *t)
7542 {
7543 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
7544 while (s[0] && t[0])
7545 {
7546 my_wc_t s_wc,t_wc;
7547
7548 if ((uchar) s[0] < 128)
7549 {
7550 /*
7551 s[0] is between 0 and 127.
7552 It represents a single byte character.
7553 Convert it into weight according to collation.
7554 */
7555 s_wc= my_unicase_default_page00[(uchar) s[0]].tolower;
7556 s++;
7557 }
7558 else
7559 {
7560 int res= my_mb_wc_utf8mb4_no_range(cs, &s_wc, (const uchar*) s);
7561
7562 /*
7563 In the case of wrong multibyte sequence we will
7564 call strcmp() for byte-to-byte comparison.
7565 */
7566 if (res <= 0)
7567 return strcmp(s, t);
7568 s+= res;
7569
7570 my_tolower_utf8mb4(uni_plane, &s_wc);
7571 }
7572
7573
7574 /* Do the same for the second string */
7575
7576 if ((uchar) t[0] < 128)
7577 {
7578 /* Convert single byte character into weight */
7579 t_wc= my_unicase_default_page00[(uchar) t[0]].tolower;
7580 t++;
7581 }
7582 else
7583 {
7584 int res= my_mb_wc_utf8mb4_no_range(cs, &t_wc, (const uchar*) t);
7585 if (res <= 0)
7586 return strcmp(s, t);
7587 t+= res;
7588
7589 my_tolower_utf8mb4(uni_plane, &t_wc);
7590 }
7591
7592 /* Now we have two weights, let's compare them */
7593 if ( s_wc != t_wc )
7594 return ((int) s_wc) - ((int) t_wc);
7595 }
7596 return ((int) (uchar) s[0]) - ((int) (uchar) t[0]);
7597 }
7598
7599
7600 static int
my_wildcmp_utf8mb4(CHARSET_INFO * cs,const char * str,const char * strend,const char * wildstr,const char * wildend,int escape,int w_one,int w_many)7601 my_wildcmp_utf8mb4(CHARSET_INFO *cs,
7602 const char *str, const char *strend,
7603 const char *wildstr, const char *wildend,
7604 int escape, int w_one, int w_many)
7605 {
7606 return my_wildcmp_unicode(cs, str, strend, wildstr, wildend,
7607 escape, w_one, w_many, cs->caseinfo);
7608 }
7609
7610
7611 static int
my_charlen_utf8mb4(CHARSET_INFO * cs,const uchar * s,const uchar * e)7612 my_charlen_utf8mb4(CHARSET_INFO *cs __attribute__((unused)),
7613 const uchar *s, const uchar *e)
7614 {
7615 uchar c;
7616
7617 if (s >= e)
7618 return MY_CS_TOOSMALL;
7619
7620 c= s[0];
7621 if (c < 0xf0)
7622 return my_valid_mbcharlen_utf8mb3(s, e);
7623
7624 if (c < 0xf5)
7625 {
7626 if (s + 4 > e) /* We need 4 characters */
7627 return MY_CS_TOOSMALL4;
7628
7629 if (!IS_UTF8MB4_STEP2(c, s[1], s[2], s[3]))
7630 return MY_CS_ILSEQ;
7631
7632 return 4;
7633 }
7634
7635 return MY_CS_ILSEQ;
7636 }
7637
7638
7639 #define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb4
7640 #define CHARLEN(cs,str,end) my_charlen_utf8mb4(cs,str,end)
7641 #define DEFINE_WELL_FORMED_CHAR_LENGTH_USING_CHARLEN
7642 #include "ctype-mb.inl"
7643 #undef MY_FUNCTION_NAME
7644 #undef CHARLEN
7645 #undef DEFINE_WELL_FORMED_CHAR_LENGTH_USING_CHARLEN
7646 /* my_well_formed_char_length_utf8mb4 */
7647
7648
7649 #define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb4_general_ci
7650 #define DEFINE_STRNXFRM_UNICODE
7651 #define DEFINE_STRNXFRM_UNICODE_NOPAD
7652 #define MY_MB_WC(cs, pwc, s, e) my_mb_wc_utf8mb4_quick(pwc, s, e)
7653 #define OPTIMIZE_ASCII 1
7654 #define UNICASE_MAXCHAR MY_UNICASE_INFO_DEFAULT_MAXCHAR
7655 #define UNICASE_PAGE0 my_unicase_default_page00
7656 #define UNICASE_PAGES my_unicase_default_pages
7657 #define IS_MB4_CHAR(b0,b1,b2,b3) IS_UTF8MB4_STEP3(b0,b1,b2,b3)
7658 #define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
7659 #define WEIGHT_MB1(b0) my_weight_mb1_utf8_general_ci(b0)
7660 #define WEIGHT_MB2(b0,b1) my_weight_mb2_utf8_general_ci(b0,b1)
7661 #define WEIGHT_MB3(b0,b1,b2) my_weight_mb3_utf8_general_ci(b0,b1,b2)
7662 /*
7663 All non-BMP characters have the same weight.
7664 */
7665 #define WEIGHT_MB4(b0,b1,b2,b3) MY_CS_REPLACEMENT_CHARACTER
7666 #include "strcoll.inl"
7667
7668
7669 #define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb4_bin
7670 #define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
7671 #define WEIGHT_MB1(b0) ((int) (uchar) (b0))
7672 #define WEIGHT_MB2(b0,b1) ((int) UTF8MB2_CODE(b0,b1))
7673 #define WEIGHT_MB3(b0,b1,b2) ((int) UTF8MB3_CODE(b0,b1,b2))
7674 #define WEIGHT_MB4(b0,b1,b2,b3) ((int) UTF8MB4_CODE(b0,b1,b2,b3))
7675 #include "strcoll.inl"
7676
7677
7678 #define DEFINE_STRNNCOLLSP_NOPAD
7679 #define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb4_general_nopad_ci
7680 #define IS_MB4_CHAR(b0,b1,b2,b3) IS_UTF8MB4_STEP3(b0,b1,b2,b3)
7681 #define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
7682 #define WEIGHT_MB1(b0) my_weight_mb1_utf8_general_ci(b0)
7683 #define WEIGHT_MB2(b0,b1) my_weight_mb2_utf8_general_ci(b0,b1)
7684 #define WEIGHT_MB3(b0,b1,b2) my_weight_mb3_utf8_general_ci(b0,b1,b2)
7685 /*
7686 All non-BMP characters have the same weight.
7687 */
7688 #define WEIGHT_MB4(b0,b1,b2,b3) MY_CS_REPLACEMENT_CHARACTER
7689 #include "strcoll.inl"
7690
7691
7692 #define DEFINE_STRNNCOLLSP_NOPAD
7693 #define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb4_nopad_bin
7694 #define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
7695 #define WEIGHT_MB1(b0) ((int) (uchar) (b0))
7696 #define WEIGHT_MB2(b0,b1) ((int) UTF8MB2_CODE(b0,b1))
7697 #define WEIGHT_MB3(b0,b1,b2) ((int) UTF8MB3_CODE(b0,b1,b2))
7698 #define WEIGHT_MB4(b0,b1,b2,b3) ((int) UTF8MB4_CODE(b0,b1,b2,b3))
7699 #include "strcoll.inl"
7700
7701
7702 static MY_COLLATION_HANDLER my_collation_utf8mb4_general_ci_handler=
7703 {
7704 NULL, /* init */
7705 my_strnncoll_utf8mb4_general_ci,
7706 my_strnncollsp_utf8mb4_general_ci,
7707 my_strnncollsp_nchars_utf8mb4_general_ci,
7708 my_strnxfrm_utf8mb4_general_ci,
7709 my_strnxfrmlen_unicode,
7710 my_like_range_mb,
7711 my_wildcmp_utf8mb4,
7712 my_strcasecmp_utf8mb4,
7713 my_instr_mb,
7714 my_hash_sort_utf8mb4,
7715 my_propagate_complex
7716 };
7717
7718
7719 static MY_COLLATION_HANDLER my_collation_utf8mb4_bin_handler =
7720 {
7721 NULL, /* init */
7722 my_strnncoll_utf8mb4_bin,
7723 my_strnncollsp_utf8mb4_bin,
7724 my_strnncollsp_nchars_utf8mb4_bin,
7725 my_strnxfrm_unicode_full_bin,
7726 my_strnxfrmlen_unicode_full_bin,
7727 my_like_range_mb,
7728 my_wildcmp_mb_bin,
7729 my_strcasecmp_mb_bin,
7730 my_instr_mb,
7731 my_hash_sort_mb_bin,
7732 my_propagate_simple
7733 };
7734
7735
7736 static MY_COLLATION_HANDLER my_collation_utf8mb4_general_nopad_ci_handler=
7737 {
7738 NULL, /* init */
7739 my_strnncoll_utf8mb4_general_ci,
7740 my_strnncollsp_utf8mb4_general_nopad_ci,
7741 my_strnncollsp_nchars_utf8mb4_general_nopad_ci,
7742 my_strnxfrm_nopad_utf8mb4_general_ci,
7743 my_strnxfrmlen_unicode,
7744 my_like_range_mb,
7745 my_wildcmp_utf8mb4,
7746 my_strcasecmp_utf8mb4,
7747 my_instr_mb,
7748 my_hash_sort_utf8mb4_nopad,
7749 my_propagate_complex
7750 };
7751
7752
7753 static MY_COLLATION_HANDLER my_collation_utf8mb4_nopad_bin_handler =
7754 {
7755 NULL, /* init */
7756 my_strnncoll_utf8mb4_bin,
7757 my_strnncollsp_utf8mb4_nopad_bin,
7758 my_strnncollsp_nchars_utf8mb4_nopad_bin,
7759 my_strnxfrm_unicode_full_nopad_bin,
7760 my_strnxfrmlen_unicode_full_bin,
7761 my_like_range_mb,
7762 my_wildcmp_mb_bin,
7763 my_strcasecmp_mb_bin,
7764 my_instr_mb,
7765 my_hash_sort_mb_nopad_bin,
7766 my_propagate_simple
7767 };
7768
7769
7770 MY_CHARSET_HANDLER my_charset_utf8mb4_handler=
7771 {
7772 NULL, /* init */
7773 my_numchars_mb,
7774 my_charpos_mb,
7775 my_lengthsp_8bit,
7776 my_numcells_mb,
7777 my_mb_wc_utf8mb4,
7778 my_wc_mb_utf8mb4,
7779 my_mb_ctype_mb,
7780 my_caseup_str_utf8mb4,
7781 my_casedn_str_utf8mb4,
7782 my_caseup_utf8mb4,
7783 my_casedn_utf8mb4,
7784 my_snprintf_8bit,
7785 my_long10_to_str_8bit,
7786 my_longlong10_to_str_8bit,
7787 my_fill_utf8,
7788 my_strntol_8bit,
7789 my_strntoul_8bit,
7790 my_strntoll_8bit,
7791 my_strntoull_8bit,
7792 my_strntod_8bit,
7793 my_strtoll10_8bit,
7794 my_strntoull10rnd_8bit,
7795 my_scan_8bit,
7796 my_charlen_utf8mb4,
7797 my_well_formed_char_length_utf8mb4,
7798 my_copy_fix_mb,
7799 my_wc_mb_utf8mb4,
7800 };
7801
7802
7803
7804 struct charset_info_st my_charset_utf8mb4_general_ci=
7805 {
7806 45,0,0, /* number */
7807 MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_UNICODE_SUPPLEMENT, /* state */
7808 MY_UTF8MB4, /* cs name */
7809 MY_UTF8MB4_GENERAL_CI,/* name */
7810 "UTF-8 Unicode", /* comment */
7811 NULL, /* tailoring */
7812 ctype_utf8mb4, /* ctype */
7813 to_lower_utf8mb4, /* to_lower */
7814 to_upper_utf8mb4, /* to_upper */
7815 to_upper_utf8mb4, /* sort_order */
7816 NULL, /* uca */
7817 NULL, /* tab_to_uni */
7818 NULL, /* tab_from_uni */
7819 &my_unicase_default,/* caseinfo */
7820 NULL, /* state_map */
7821 NULL, /* ident_map */
7822 1, /* strxfrm_multiply */
7823 1, /* caseup_multiply */
7824 1, /* casedn_multiply */
7825 1, /* mbminlen */
7826 4, /* mbmaxlen */
7827 0, /* min_sort_char */
7828 0xFFFF, /* max_sort_char */
7829 ' ', /* pad char */
7830 0, /* escape_with_backslash_is_dangerous */
7831 1, /* levels_for_order */
7832 &my_charset_utf8mb4_handler,
7833 &my_collation_utf8mb4_general_ci_handler
7834 };
7835
7836
7837 struct charset_info_st my_charset_utf8mb4_bin=
7838 {
7839 46,0,0, /* number */
7840 MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|MY_CS_UNICODE|
7841 MY_CS_UNICODE_SUPPLEMENT, /* state */
7842 MY_UTF8MB4, /* cs name */
7843 MY_UTF8MB4_BIN, /* name */
7844 "UTF-8 Unicode", /* comment */
7845 NULL, /* tailoring */
7846 ctype_utf8mb4, /* ctype */
7847 to_lower_utf8mb4, /* to_lower */
7848 to_upper_utf8mb4, /* to_upper */
7849 NULL, /* sort_order */
7850 NULL, /* uca */
7851 NULL, /* tab_to_uni */
7852 NULL, /* tab_from_uni */
7853 &my_unicase_default,/* caseinfo */
7854 NULL, /* state_map */
7855 NULL, /* ident_map */
7856 1, /* strxfrm_multiply */
7857 1, /* caseup_multiply */
7858 1, /* casedn_multiply */
7859 1, /* mbminlen */
7860 4, /* mbmaxlen */
7861 0, /* min_sort_char */
7862 0xFFFF, /* max_sort_char */
7863 ' ', /* pad char */
7864 0, /* escape_with_backslash_is_dangerous */
7865 1, /* levels_for_order */
7866 &my_charset_utf8mb4_handler,
7867 &my_collation_utf8mb4_bin_handler
7868 };
7869
7870
7871 struct charset_info_st my_charset_utf8mb4_general_nopad_ci=
7872 {
7873 MY_NOPAD_ID(45),0,0,/* number */
7874 MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_UNICODE_SUPPLEMENT|
7875 MY_CS_NOPAD, /* state */
7876 MY_UTF8MB4, /* cs name */
7877 MY_UTF8MB4_GENERAL_NOPAD_CI,/* name */
7878 "UTF-8 Unicode", /* comment */
7879 NULL, /* tailoring */
7880 ctype_utf8mb4, /* ctype */
7881 to_lower_utf8mb4, /* to_lower */
7882 to_upper_utf8mb4, /* to_upper */
7883 to_upper_utf8mb4, /* sort_order */
7884 NULL, /* uca */
7885 NULL, /* tab_to_uni */
7886 NULL, /* tab_from_uni */
7887 &my_unicase_default,/* caseinfo */
7888 NULL, /* state_map */
7889 NULL, /* ident_map */
7890 1, /* strxfrm_multiply */
7891 1, /* caseup_multiply */
7892 1, /* casedn_multiply */
7893 1, /* mbminlen */
7894 4, /* mbmaxlen */
7895 0, /* min_sort_char */
7896 0xFFFF, /* max_sort_char */
7897 ' ', /* pad char */
7898 0, /* escape_with_backslash_is_dangerous */
7899 1, /* levels_for_order */
7900 &my_charset_utf8mb4_handler,
7901 &my_collation_utf8mb4_general_nopad_ci_handler
7902 };
7903
7904
7905 struct charset_info_st my_charset_utf8mb4_nopad_bin=
7906 {
7907 MY_NOPAD_ID(46),0,0, /* number */
7908 MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|MY_CS_UNICODE|
7909 MY_CS_UNICODE_SUPPLEMENT|MY_CS_NOPAD, /* state */
7910 MY_UTF8MB4, /* cs name */
7911 MY_UTF8MB4_NOPAD_BIN, /* name */
7912 "UTF-8 Unicode", /* comment */
7913 NULL, /* tailoring */
7914 ctype_utf8mb4, /* ctype */
7915 to_lower_utf8mb4, /* to_lower */
7916 to_upper_utf8mb4, /* to_upper */
7917 NULL, /* sort_order */
7918 NULL, /* uca */
7919 NULL, /* tab_to_uni */
7920 NULL, /* tab_from_uni */
7921 &my_unicase_default,/* caseinfo */
7922 NULL, /* state_map */
7923 NULL, /* ident_map */
7924 1, /* strxfrm_multiply */
7925 1, /* caseup_multiply */
7926 1, /* casedn_multiply */
7927 1, /* mbminlen */
7928 4, /* mbmaxlen */
7929 0, /* min_sort_char */
7930 0xFFFF, /* max_sort_char */
7931 ' ', /* pad char */
7932 0, /* escape_with_backslash_is_dangerous */
7933 1, /* levels_for_order */
7934 &my_charset_utf8mb4_handler,
7935 &my_collation_utf8mb4_nopad_bin_handler
7936 };
7937
7938 #endif /* HAVE_CHARSET_utf8mb4 */
7939