blob: 946be22e6e77807bd18e95e16d6523b526c4a433 [file] [log] [blame]
Guido van Rossum603484d2000-03-10 22:52:46 +00001/*
2 Unicode character type helpers.
3
4 The data contained in the function's switch tables was extracted
5 from the Unicode 3.0 data file.
6
7Written by Marc-Andre Lemburg (mal@lemburg.com).
8
9(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
10
11*/
12
13#include "Python.h"
14
15#include "unicodeobject.h"
16
17/* Returns 1 for Unicode characters having the category 'Zl' or type
18 'B', 0 otherwise. */
19
20int _PyUnicode_IsLinebreak(register const Py_UNICODE ch)
21{
22 switch (ch) {
23 case 0x000A: /* LINE FEED */
24 case 0x000D: /* CARRIAGE RETURN */
25 case 0x001C: /* FILE SEPARATOR */
26 case 0x001D: /* GROUP SEPARATOR */
27 case 0x001E: /* RECORD SEPARATOR */
28 case 0x0085: /* NEXT LINE */
29 case 0x2028: /* LINE SEPARATOR */
30 case 0x2029: /* PARAGRAPH SEPARATOR */
31 return 1;
32 default:
33 return 0;
34 }
35}
36
37/* Returns the titlecase Unicode characters corresponding to ch or just
38 ch if no titlecase mapping is known. */
39
40Py_UNICODE _PyUnicode_ToTitlecase(register const Py_UNICODE ch)
41{
42 switch (ch) {
43 case 0x01C4: /* LATIN CAPITAL LETTER DZ WITH CARON */
44 return (Py_UNICODE)0x01C5;
45 case 0x01C6: /* LATIN SMALL LETTER DZ WITH CARON */
46 return (Py_UNICODE)0x01C5;
47 case 0x01C7: /* LATIN CAPITAL LETTER LJ */
48 return (Py_UNICODE)0x01C8;
49 case 0x01C9: /* LATIN SMALL LETTER LJ */
50 return (Py_UNICODE)0x01C8;
51 case 0x01CA: /* LATIN CAPITAL LETTER NJ */
52 return (Py_UNICODE)0x01CB;
53 case 0x01CC: /* LATIN SMALL LETTER NJ */
54 return (Py_UNICODE)0x01CB;
55 case 0x01F1: /* LATIN CAPITAL LETTER DZ */
56 return (Py_UNICODE)0x01F2;
57 case 0x01F3: /* LATIN SMALL LETTER DZ */
58 return (Py_UNICODE)0x01F2;
59 default:
60 return Py_UNICODE_TOUPPER(ch);
61 }
62}
63
64/* Returns 1 for Unicode characters having the category 'Lt', 0
65 otherwise. */
66
67int _PyUnicode_IsTitlecase(register const Py_UNICODE ch)
68{
69 switch (ch) {
70 case 0x01C5: /* LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON */
71 case 0x01C8: /* LATIN CAPITAL LETTER L WITH SMALL LETTER J */
72 case 0x01CB: /* LATIN CAPITAL LETTER N WITH SMALL LETTER J */
73 case 0x01F2: /* LATIN CAPITAL LETTER D WITH SMALL LETTER Z */
74 case 0x1F88: /* GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI */
75 case 0x1F89: /* GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI */
76 case 0x1F8A: /* GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI */
77 case 0x1F8B: /* GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI */
78 case 0x1F8C: /* GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI */
79 case 0x1F8D: /* GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI */
80 case 0x1F8E: /* GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI */
81 case 0x1F8F: /* GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI */
82 case 0x1F98: /* GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI */
83 case 0x1F99: /* GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI */
84 case 0x1F9A: /* GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI */
85 case 0x1F9B: /* GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI */
86 case 0x1F9C: /* GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI */
87 case 0x1F9D: /* GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI */
88 case 0x1F9E: /* GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI */
89 case 0x1F9F: /* GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI */
90 case 0x1FA8: /* GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI */
91 case 0x1FA9: /* GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI */
92 case 0x1FAA: /* GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI */
93 case 0x1FAB: /* GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI */
94 case 0x1FAC: /* GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI */
95 case 0x1FAD: /* GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI */
96 case 0x1FAE: /* GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI */
97 case 0x1FAF: /* GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI */
98 case 0x1FBC: /* GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI */
99 case 0x1FCC: /* GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI */
100 case 0x1FFC: /* GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI */
101 return 1;
102 default:
103 return 0;
104 }
105}
106
107/* Returns the integer decimal (0-9) for Unicode characters having
108 this property, -1 otherwise. */
109
110int _PyUnicode_ToDecimalDigit(register const Py_UNICODE ch)
111{
112 switch (ch) {
113 case 0x0030:
114 case 0x0660:
115 case 0x06F0:
116 case 0x0966:
117 case 0x09E6:
118 case 0x0A66:
119 case 0x0AE6:
120 case 0x0B66:
121 case 0x0C66:
122 case 0x0CE6:
123 case 0x0D66:
124 case 0x0E50:
125 case 0x0ED0:
126 case 0x0F20:
127 case 0x1040:
128 case 0x17E0:
129 case 0x1810:
130 case 0x2070:
131 case 0x2080:
132 case 0xFF10:
133 return 0;
134 case 0x0031:
135 case 0x00B9:
136 case 0x0661:
137 case 0x06F1:
138 case 0x0967:
139 case 0x09E7:
140 case 0x0A67:
141 case 0x0AE7:
142 case 0x0B67:
143 case 0x0BE7:
144 case 0x0C67:
145 case 0x0CE7:
146 case 0x0D67:
147 case 0x0E51:
148 case 0x0ED1:
149 case 0x0F21:
150 case 0x1041:
151 case 0x1369:
152 case 0x17E1:
153 case 0x1811:
154 case 0x2081:
155 case 0xFF11:
156 return 1;
157 case 0x0032:
158 case 0x00B2:
159 case 0x0662:
160 case 0x06F2:
161 case 0x0968:
162 case 0x09E8:
163 case 0x0A68:
164 case 0x0AE8:
165 case 0x0B68:
166 case 0x0BE8:
167 case 0x0C68:
168 case 0x0CE8:
169 case 0x0D68:
170 case 0x0E52:
171 case 0x0ED2:
172 case 0x0F22:
173 case 0x1042:
174 case 0x136A:
175 case 0x17E2:
176 case 0x1812:
177 case 0x2082:
178 case 0xFF12:
179 return 2;
180 case 0x0033:
181 case 0x00B3:
182 case 0x0663:
183 case 0x06F3:
184 case 0x0969:
185 case 0x09E9:
186 case 0x0A69:
187 case 0x0AE9:
188 case 0x0B69:
189 case 0x0BE9:
190 case 0x0C69:
191 case 0x0CE9:
192 case 0x0D69:
193 case 0x0E53:
194 case 0x0ED3:
195 case 0x0F23:
196 case 0x1043:
197 case 0x136B:
198 case 0x17E3:
199 case 0x1813:
200 case 0x2083:
201 case 0xFF13:
202 return 3;
203 case 0x0034:
204 case 0x0664:
205 case 0x06F4:
206 case 0x096A:
207 case 0x09EA:
208 case 0x0A6A:
209 case 0x0AEA:
210 case 0x0B6A:
211 case 0x0BEA:
212 case 0x0C6A:
213 case 0x0CEA:
214 case 0x0D6A:
215 case 0x0E54:
216 case 0x0ED4:
217 case 0x0F24:
218 case 0x1044:
219 case 0x136C:
220 case 0x17E4:
221 case 0x1814:
222 case 0x2074:
223 case 0x2084:
224 case 0xFF14:
225 return 4;
226 case 0x0035:
227 case 0x0665:
228 case 0x06F5:
229 case 0x096B:
230 case 0x09EB:
231 case 0x0A6B:
232 case 0x0AEB:
233 case 0x0B6B:
234 case 0x0BEB:
235 case 0x0C6B:
236 case 0x0CEB:
237 case 0x0D6B:
238 case 0x0E55:
239 case 0x0ED5:
240 case 0x0F25:
241 case 0x1045:
242 case 0x136D:
243 case 0x17E5:
244 case 0x1815:
245 case 0x2075:
246 case 0x2085:
247 case 0xFF15:
248 return 5;
249 case 0x0036:
250 case 0x0666:
251 case 0x06F6:
252 case 0x096C:
253 case 0x09EC:
254 case 0x0A6C:
255 case 0x0AEC:
256 case 0x0B6C:
257 case 0x0BEC:
258 case 0x0C6C:
259 case 0x0CEC:
260 case 0x0D6C:
261 case 0x0E56:
262 case 0x0ED6:
263 case 0x0F26:
264 case 0x1046:
265 case 0x136E:
266 case 0x17E6:
267 case 0x1816:
268 case 0x2076:
269 case 0x2086:
270 case 0xFF16:
271 return 6;
272 case 0x0037:
273 case 0x0667:
274 case 0x06F7:
275 case 0x096D:
276 case 0x09ED:
277 case 0x0A6D:
278 case 0x0AED:
279 case 0x0B6D:
280 case 0x0BED:
281 case 0x0C6D:
282 case 0x0CED:
283 case 0x0D6D:
284 case 0x0E57:
285 case 0x0ED7:
286 case 0x0F27:
287 case 0x1047:
288 case 0x136F:
289 case 0x17E7:
290 case 0x1817:
291 case 0x2077:
292 case 0x2087:
293 case 0xFF17:
294 return 7;
295 case 0x0038:
296 case 0x0668:
297 case 0x06F8:
298 case 0x096E:
299 case 0x09EE:
300 case 0x0A6E:
301 case 0x0AEE:
302 case 0x0B6E:
303 case 0x0BEE:
304 case 0x0C6E:
305 case 0x0CEE:
306 case 0x0D6E:
307 case 0x0E58:
308 case 0x0ED8:
309 case 0x0F28:
310 case 0x1048:
311 case 0x1370:
312 case 0x17E8:
313 case 0x1818:
314 case 0x2078:
315 case 0x2088:
316 case 0xFF18:
317 return 8;
318 case 0x0039:
319 case 0x0669:
320 case 0x06F9:
321 case 0x096F:
322 case 0x09EF:
323 case 0x0A6F:
324 case 0x0AEF:
325 case 0x0B6F:
326 case 0x0BEF:
327 case 0x0C6F:
328 case 0x0CEF:
329 case 0x0D6F:
330 case 0x0E59:
331 case 0x0ED9:
332 case 0x0F29:
333 case 0x1049:
334 case 0x1371:
335 case 0x17E9:
336 case 0x1819:
337 case 0x2079:
338 case 0x2089:
339 case 0xFF19:
340 return 9;
341 default:
342 return -1;
343 }
344}
345
346int _PyUnicode_IsDecimalDigit(register const Py_UNICODE ch)
347{
348 if (_PyUnicode_ToDecimalDigit(ch) < 0)
349 return 0;
350 return 1;
351}
352
353/* Returns the integer digit (0-9) for Unicode characters having
354 this property, -1 otherwise. */
355
356int _PyUnicode_ToDigit(register const Py_UNICODE ch)
357{
358 switch (ch) {
359 case 0x24EA:
360 return 0;
361 case 0x2460:
362 case 0x2474:
363 case 0x2488:
364 case 0x2776:
365 case 0x2780:
366 case 0x278A:
367 return 1;
368 case 0x2461:
369 case 0x2475:
370 case 0x2489:
371 case 0x2777:
372 case 0x2781:
373 case 0x278B:
374 return 2;
375 case 0x2462:
376 case 0x2476:
377 case 0x248A:
378 case 0x2778:
379 case 0x2782:
380 case 0x278C:
381 return 3;
382 case 0x2463:
383 case 0x2477:
384 case 0x248B:
385 case 0x2779:
386 case 0x2783:
387 case 0x278D:
388 return 4;
389 case 0x2464:
390 case 0x2478:
391 case 0x248C:
392 case 0x277A:
393 case 0x2784:
394 case 0x278E:
395 return 5;
396 case 0x2465:
397 case 0x2479:
398 case 0x248D:
399 case 0x277B:
400 case 0x2785:
401 case 0x278F:
402 return 6;
403 case 0x2466:
404 case 0x247A:
405 case 0x248E:
406 case 0x277C:
407 case 0x2786:
408 case 0x2790:
409 return 7;
410 case 0x2467:
411 case 0x247B:
412 case 0x248F:
413 case 0x277D:
414 case 0x2787:
415 case 0x2791:
416 return 8;
417 case 0x2468:
418 case 0x247C:
419 case 0x2490:
420 case 0x277E:
421 case 0x2788:
422 case 0x2792:
423 return 9;
424 default:
425 return _PyUnicode_ToDecimalDigit(ch);
426 }
427}
428
429int _PyUnicode_IsDigit(register const Py_UNICODE ch)
430{
431 if (_PyUnicode_ToDigit(ch) < 0)
432 return 0;
433 return 1;
434}
435
436/* Returns the numeric value as double for Unicode characters having
437 this property, -1.0 otherwise. */
438
439double _PyUnicode_ToNumeric(register const Py_UNICODE ch)
440{
441 switch (ch) {
442 case 0x3007:
443 return (double) 0;
444 case 0x09F4:
445 case 0x215F:
446 case 0x2160:
447 case 0x2170:
448 case 0x3021:
449 case 0x3280:
450 return (double) 1;
451 case 0x00BD:
452 return (double) 1 / 2;
453 case 0x2153:
454 return (double) 1 / 3;
455 case 0x00BC:
456 return (double) 1 / 4;
457 case 0x2155:
458 return (double) 1 / 5;
459 case 0x2159:
460 return (double) 1 / 6;
461 case 0x215B:
462 return (double) 1 / 8;
463 case 0x0BF0:
464 case 0x1372:
465 case 0x2169:
466 case 0x2179:
467 case 0x2469:
468 case 0x247D:
469 case 0x2491:
470 case 0x277F:
471 case 0x2789:
472 case 0x2793:
473 case 0x3038:
474 case 0x3289:
475 return (double) 10;
476 case 0x0BF1:
477 case 0x137B:
478 case 0x216D:
479 case 0x217D:
480 return (double) 100;
481 case 0x0BF2:
482 case 0x216F:
483 case 0x217F:
484 case 0x2180:
485 return (double) 1000;
486 case 0x137C:
487 case 0x2182:
488 return (double) 10000;
489 case 0x216A:
490 case 0x217A:
491 case 0x246A:
492 case 0x247E:
493 case 0x2492:
494 return (double) 11;
495 case 0x216B:
496 case 0x217B:
497 case 0x246B:
498 case 0x247F:
499 case 0x2493:
500 return (double) 12;
501 case 0x246C:
502 case 0x2480:
503 case 0x2494:
504 return (double) 13;
505 case 0x246D:
506 case 0x2481:
507 case 0x2495:
508 return (double) 14;
509 case 0x246E:
510 case 0x2482:
511 case 0x2496:
512 return (double) 15;
513 case 0x09F9:
514 case 0x246F:
515 case 0x2483:
516 case 0x2497:
517 return (double) 16;
518 case 0x16EE:
519 case 0x2470:
520 case 0x2484:
521 case 0x2498:
522 return (double) 17;
523 case 0x16EF:
524 case 0x2471:
525 case 0x2485:
526 case 0x2499:
527 return (double) 18;
528 case 0x16F0:
529 case 0x2472:
530 case 0x2486:
531 case 0x249A:
532 return (double) 19;
533 case 0x09F5:
534 case 0x2161:
535 case 0x2171:
536 case 0x3022:
537 case 0x3281:
538 return (double) 2;
539 case 0x2154:
540 return (double) 2 / 3;
541 case 0x2156:
542 return (double) 2 / 5;
543 case 0x1373:
544 case 0x2473:
545 case 0x2487:
546 case 0x249B:
547 case 0x3039:
548 return (double) 20;
549 case 0x09F6:
550 case 0x2162:
551 case 0x2172:
552 case 0x3023:
553 case 0x3282:
554 return (double) 3;
555 case 0x00BE:
556 return (double) 3 / 4;
557 case 0x2157:
558 return (double) 3 / 5;
559 case 0x215C:
560 return (double) 3 / 8;
561 case 0x1374:
562 case 0x303A:
563 return (double) 30;
564 case 0x09F7:
565 case 0x2163:
566 case 0x2173:
567 case 0x3024:
568 case 0x3283:
569 return (double) 4;
570 case 0x2158:
571 return (double) 4 / 5;
572 case 0x1375:
573 return (double) 40;
574 case 0x2164:
575 case 0x2174:
576 case 0x3025:
577 case 0x3284:
578 return (double) 5;
579 case 0x215A:
580 return (double) 5 / 6;
581 case 0x215D:
582 return (double) 5 / 8;
583 case 0x1376:
584 case 0x216C:
585 case 0x217C:
586 return (double) 50;
587 case 0x216E:
588 case 0x217E:
589 return (double) 500;
590 case 0x2181:
591 return (double) 5000;
592 case 0x2165:
593 case 0x2175:
594 case 0x3026:
595 case 0x3285:
596 return (double) 6;
597 case 0x1377:
598 return (double) 60;
599 case 0x2166:
600 case 0x2176:
601 case 0x3027:
602 case 0x3286:
603 return (double) 7;
604 case 0x215E:
605 return (double) 7 / 8;
606 case 0x1378:
607 return (double) 70;
608 case 0x2167:
609 case 0x2177:
610 case 0x3028:
611 case 0x3287:
612 return (double) 8;
613 case 0x1379:
614 return (double) 80;
615 case 0x2168:
616 case 0x2178:
617 case 0x3029:
618 case 0x3288:
619 return (double) 9;
620 case 0x137A:
621 return (double) 90;
622 default:
623 return (double) _PyUnicode_ToDigit(ch);
624 }
625}
626
627int _PyUnicode_IsNumeric(register const Py_UNICODE ch)
628{
629 if (_PyUnicode_ToNumeric(ch) < 0.0)
630 return 0;
631 return 1;
632}
633
634#ifndef WANT_WCTYPE_FUNCTIONS
635
636/* Returns 1 for Unicode characters having the type 'WS', 'B' or 'S',
637 0 otherwise. */
638
639int _PyUnicode_IsWhitespace(register const Py_UNICODE ch)
640{
641 switch (ch) {
642 case 0x0009: /* HORIZONTAL TABULATION */
643 case 0x000A: /* LINE FEED */
644 case 0x000B: /* VERTICAL TABULATION */
645 case 0x000C: /* FORM FEED */
646 case 0x000D: /* CARRIAGE RETURN */
647 case 0x001C: /* FILE SEPARATOR */
648 case 0x001D: /* GROUP SEPARATOR */
649 case 0x001E: /* RECORD SEPARATOR */
650 case 0x001F: /* UNIT SEPARATOR */
651 case 0x0020: /* SPACE */
652 case 0x1680: /* OGHAM SPACE MARK */
653 case 0x2000: /* EN QUAD */
654 case 0x2001: /* EM QUAD */
655 case 0x2002: /* EN SPACE */
656 case 0x2003: /* EM SPACE */
657 case 0x2004: /* THREE-PER-EM SPACE */
658 case 0x2005: /* FOUR-PER-EM SPACE */
659 case 0x2006: /* SIX-PER-EM SPACE */
660 case 0x2007: /* FIGURE SPACE */
661 case 0x2008: /* PUNCTUATION SPACE */
662 case 0x2009: /* THIN SPACE */
663 case 0x200A: /* HAIR SPACE */
664 case 0x2028: /* LINE SEPARATOR */
665 case 0x202F: /* NARROW NO-BREAK SPACE */
666 case 0x3000: /* IDEOGRAPHIC SPACE */
667 return 1;
668 default:
669 return 0;
670 }
671}
672
673/* Returns 1 for Unicode characters having the category 'Ll', 0
674 otherwise. */
675
676int _PyUnicode_IsLowercase(register const Py_UNICODE ch)
677{
678 switch (ch) {
679 case 0x0061: /* LATIN SMALL LETTER A */
680 case 0x0062: /* LATIN SMALL LETTER B */
681 case 0x0063: /* LATIN SMALL LETTER C */
682 case 0x0064: /* LATIN SMALL LETTER D */
683 case 0x0065: /* LATIN SMALL LETTER E */
684 case 0x0066: /* LATIN SMALL LETTER F */
685 case 0x0067: /* LATIN SMALL LETTER G */
686 case 0x0068: /* LATIN SMALL LETTER H */
687 case 0x0069: /* LATIN SMALL LETTER I */
688 case 0x006A: /* LATIN SMALL LETTER J */
689 case 0x006B: /* LATIN SMALL LETTER K */
690 case 0x006C: /* LATIN SMALL LETTER L */
691 case 0x006D: /* LATIN SMALL LETTER M */
692 case 0x006E: /* LATIN SMALL LETTER N */
693 case 0x006F: /* LATIN SMALL LETTER O */
694 case 0x0070: /* LATIN SMALL LETTER P */
695 case 0x0071: /* LATIN SMALL LETTER Q */
696 case 0x0072: /* LATIN SMALL LETTER R */
697 case 0x0073: /* LATIN SMALL LETTER S */
698 case 0x0074: /* LATIN SMALL LETTER T */
699 case 0x0075: /* LATIN SMALL LETTER U */
700 case 0x0076: /* LATIN SMALL LETTER V */
701 case 0x0077: /* LATIN SMALL LETTER W */
702 case 0x0078: /* LATIN SMALL LETTER X */
703 case 0x0079: /* LATIN SMALL LETTER Y */
704 case 0x007A: /* LATIN SMALL LETTER Z */
705 case 0x00AA: /* FEMININE ORDINAL INDICATOR */
706 case 0x00B5: /* MICRO SIGN */
707 case 0x00BA: /* MASCULINE ORDINAL INDICATOR */
708 case 0x00DF: /* LATIN SMALL LETTER SHARP S */
709 case 0x00E0: /* LATIN SMALL LETTER A WITH GRAVE */
710 case 0x00E1: /* LATIN SMALL LETTER A WITH ACUTE */
711 case 0x00E2: /* LATIN SMALL LETTER A WITH CIRCUMFLEX */
712 case 0x00E3: /* LATIN SMALL LETTER A WITH TILDE */
713 case 0x00E4: /* LATIN SMALL LETTER A WITH DIAERESIS */
714 case 0x00E5: /* LATIN SMALL LETTER A WITH RING ABOVE */
715 case 0x00E6: /* LATIN SMALL LETTER AE */
716 case 0x00E7: /* LATIN SMALL LETTER C WITH CEDILLA */
717 case 0x00E8: /* LATIN SMALL LETTER E WITH GRAVE */
718 case 0x00E9: /* LATIN SMALL LETTER E WITH ACUTE */
719 case 0x00EA: /* LATIN SMALL LETTER E WITH CIRCUMFLEX */
720 case 0x00EB: /* LATIN SMALL LETTER E WITH DIAERESIS */
721 case 0x00EC: /* LATIN SMALL LETTER I WITH GRAVE */
722 case 0x00ED: /* LATIN SMALL LETTER I WITH ACUTE */
723 case 0x00EE: /* LATIN SMALL LETTER I WITH CIRCUMFLEX */
724 case 0x00EF: /* LATIN SMALL LETTER I WITH DIAERESIS */
725 case 0x00F0: /* LATIN SMALL LETTER ETH */
726 case 0x00F1: /* LATIN SMALL LETTER N WITH TILDE */
727 case 0x00F2: /* LATIN SMALL LETTER O WITH GRAVE */
728 case 0x00F3: /* LATIN SMALL LETTER O WITH ACUTE */
729 case 0x00F4: /* LATIN SMALL LETTER O WITH CIRCUMFLEX */
730 case 0x00F5: /* LATIN SMALL LETTER O WITH TILDE */
731 case 0x00F6: /* LATIN SMALL LETTER O WITH DIAERESIS */
732 case 0x00F8: /* LATIN SMALL LETTER O WITH STROKE */
733 case 0x00F9: /* LATIN SMALL LETTER U WITH GRAVE */
734 case 0x00FA: /* LATIN SMALL LETTER U WITH ACUTE */
735 case 0x00FB: /* LATIN SMALL LETTER U WITH CIRCUMFLEX */
736 case 0x00FC: /* LATIN SMALL LETTER U WITH DIAERESIS */
737 case 0x00FD: /* LATIN SMALL LETTER Y WITH ACUTE */
738 case 0x00FE: /* LATIN SMALL LETTER THORN */
739 case 0x00FF: /* LATIN SMALL LETTER Y WITH DIAERESIS */
740 case 0x0101: /* LATIN SMALL LETTER A WITH MACRON */
741 case 0x0103: /* LATIN SMALL LETTER A WITH BREVE */
742 case 0x0105: /* LATIN SMALL LETTER A WITH OGONEK */
743 case 0x0107: /* LATIN SMALL LETTER C WITH ACUTE */
744 case 0x0109: /* LATIN SMALL LETTER C WITH CIRCUMFLEX */
745 case 0x010B: /* LATIN SMALL LETTER C WITH DOT ABOVE */
746 case 0x010D: /* LATIN SMALL LETTER C WITH CARON */
747 case 0x010F: /* LATIN SMALL LETTER D WITH CARON */
748 case 0x0111: /* LATIN SMALL LETTER D WITH STROKE */
749 case 0x0113: /* LATIN SMALL LETTER E WITH MACRON */
750 case 0x0115: /* LATIN SMALL LETTER E WITH BREVE */
751 case 0x0117: /* LATIN SMALL LETTER E WITH DOT ABOVE */
752 case 0x0119: /* LATIN SMALL LETTER E WITH OGONEK */
753 case 0x011B: /* LATIN SMALL LETTER E WITH CARON */
754 case 0x011D: /* LATIN SMALL LETTER G WITH CIRCUMFLEX */
755 case 0x011F: /* LATIN SMALL LETTER G WITH BREVE */
756 case 0x0121: /* LATIN SMALL LETTER G WITH DOT ABOVE */
757 case 0x0123: /* LATIN SMALL LETTER G WITH CEDILLA */
758 case 0x0125: /* LATIN SMALL LETTER H WITH CIRCUMFLEX */
759 case 0x0127: /* LATIN SMALL LETTER H WITH STROKE */
760 case 0x0129: /* LATIN SMALL LETTER I WITH TILDE */
761 case 0x012B: /* LATIN SMALL LETTER I WITH MACRON */
762 case 0x012D: /* LATIN SMALL LETTER I WITH BREVE */
763 case 0x012F: /* LATIN SMALL LETTER I WITH OGONEK */
764 case 0x0131: /* LATIN SMALL LETTER DOTLESS I */
765 case 0x0133: /* LATIN SMALL LIGATURE IJ */
766 case 0x0135: /* LATIN SMALL LETTER J WITH CIRCUMFLEX */
767 case 0x0137: /* LATIN SMALL LETTER K WITH CEDILLA */
768 case 0x0138: /* LATIN SMALL LETTER KRA */
769 case 0x013A: /* LATIN SMALL LETTER L WITH ACUTE */
770 case 0x013C: /* LATIN SMALL LETTER L WITH CEDILLA */
771 case 0x013E: /* LATIN SMALL LETTER L WITH CARON */
772 case 0x0140: /* LATIN SMALL LETTER L WITH MIDDLE DOT */
773 case 0x0142: /* LATIN SMALL LETTER L WITH STROKE */
774 case 0x0144: /* LATIN SMALL LETTER N WITH ACUTE */
775 case 0x0146: /* LATIN SMALL LETTER N WITH CEDILLA */
776 case 0x0148: /* LATIN SMALL LETTER N WITH CARON */
777 case 0x0149: /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */
778 case 0x014B: /* LATIN SMALL LETTER ENG */
779 case 0x014D: /* LATIN SMALL LETTER O WITH MACRON */
780 case 0x014F: /* LATIN SMALL LETTER O WITH BREVE */
781 case 0x0151: /* LATIN SMALL LETTER O WITH DOUBLE ACUTE */
782 case 0x0153: /* LATIN SMALL LIGATURE OE */
783 case 0x0155: /* LATIN SMALL LETTER R WITH ACUTE */
784 case 0x0157: /* LATIN SMALL LETTER R WITH CEDILLA */
785 case 0x0159: /* LATIN SMALL LETTER R WITH CARON */
786 case 0x015B: /* LATIN SMALL LETTER S WITH ACUTE */
787 case 0x015D: /* LATIN SMALL LETTER S WITH CIRCUMFLEX */
788 case 0x015F: /* LATIN SMALL LETTER S WITH CEDILLA */
789 case 0x0161: /* LATIN SMALL LETTER S WITH CARON */
790 case 0x0163: /* LATIN SMALL LETTER T WITH CEDILLA */
791 case 0x0165: /* LATIN SMALL LETTER T WITH CARON */
792 case 0x0167: /* LATIN SMALL LETTER T WITH STROKE */
793 case 0x0169: /* LATIN SMALL LETTER U WITH TILDE */
794 case 0x016B: /* LATIN SMALL LETTER U WITH MACRON */
795 case 0x016D: /* LATIN SMALL LETTER U WITH BREVE */
796 case 0x016F: /* LATIN SMALL LETTER U WITH RING ABOVE */
797 case 0x0171: /* LATIN SMALL LETTER U WITH DOUBLE ACUTE */
798 case 0x0173: /* LATIN SMALL LETTER U WITH OGONEK */
799 case 0x0175: /* LATIN SMALL LETTER W WITH CIRCUMFLEX */
800 case 0x0177: /* LATIN SMALL LETTER Y WITH CIRCUMFLEX */
801 case 0x017A: /* LATIN SMALL LETTER Z WITH ACUTE */
802 case 0x017C: /* LATIN SMALL LETTER Z WITH DOT ABOVE */
803 case 0x017E: /* LATIN SMALL LETTER Z WITH CARON */
804 case 0x017F: /* LATIN SMALL LETTER LONG S */
805 case 0x0180: /* LATIN SMALL LETTER B WITH STROKE */
806 case 0x0183: /* LATIN SMALL LETTER B WITH TOPBAR */
807 case 0x0185: /* LATIN SMALL LETTER TONE SIX */
808 case 0x0188: /* LATIN SMALL LETTER C WITH HOOK */
809 case 0x018C: /* LATIN SMALL LETTER D WITH TOPBAR */
810 case 0x018D: /* LATIN SMALL LETTER TURNED DELTA */
811 case 0x0192: /* LATIN SMALL LETTER F WITH HOOK */
812 case 0x0195: /* LATIN SMALL LETTER HV */
813 case 0x0199: /* LATIN SMALL LETTER K WITH HOOK */
814 case 0x019A: /* LATIN SMALL LETTER L WITH BAR */
815 case 0x019B: /* LATIN SMALL LETTER LAMBDA WITH STROKE */
816 case 0x019E: /* LATIN SMALL LETTER N WITH LONG RIGHT LEG */
817 case 0x01A1: /* LATIN SMALL LETTER O WITH HORN */
818 case 0x01A3: /* LATIN SMALL LETTER OI */
819 case 0x01A5: /* LATIN SMALL LETTER P WITH HOOK */
820 case 0x01A8: /* LATIN SMALL LETTER TONE TWO */
821 case 0x01AA: /* LATIN LETTER REVERSED ESH LOOP */
822 case 0x01AB: /* LATIN SMALL LETTER T WITH PALATAL HOOK */
823 case 0x01AD: /* LATIN SMALL LETTER T WITH HOOK */
824 case 0x01B0: /* LATIN SMALL LETTER U WITH HORN */
825 case 0x01B4: /* LATIN SMALL LETTER Y WITH HOOK */
826 case 0x01B6: /* LATIN SMALL LETTER Z WITH STROKE */
827 case 0x01B9: /* LATIN SMALL LETTER EZH REVERSED */
828 case 0x01BA: /* LATIN SMALL LETTER EZH WITH TAIL */
829 case 0x01BD: /* LATIN SMALL LETTER TONE FIVE */
830 case 0x01BE: /* LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE */
831 case 0x01BF: /* LATIN LETTER WYNN */
832 case 0x01C6: /* LATIN SMALL LETTER DZ WITH CARON */
833 case 0x01C9: /* LATIN SMALL LETTER LJ */
834 case 0x01CC: /* LATIN SMALL LETTER NJ */
835 case 0x01CE: /* LATIN SMALL LETTER A WITH CARON */
836 case 0x01D0: /* LATIN SMALL LETTER I WITH CARON */
837 case 0x01D2: /* LATIN SMALL LETTER O WITH CARON */
838 case 0x01D4: /* LATIN SMALL LETTER U WITH CARON */
839 case 0x01D6: /* LATIN SMALL LETTER U WITH DIAERESIS AND MACRON */
840 case 0x01D8: /* LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE */
841 case 0x01DA: /* LATIN SMALL LETTER U WITH DIAERESIS AND CARON */
842 case 0x01DC: /* LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE */
843 case 0x01DD: /* LATIN SMALL LETTER TURNED E */
844 case 0x01DF: /* LATIN SMALL LETTER A WITH DIAERESIS AND MACRON */
845 case 0x01E1: /* LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON */
846 case 0x01E3: /* LATIN SMALL LETTER AE WITH MACRON */
847 case 0x01E5: /* LATIN SMALL LETTER G WITH STROKE */
848 case 0x01E7: /* LATIN SMALL LETTER G WITH CARON */
849 case 0x01E9: /* LATIN SMALL LETTER K WITH CARON */
850 case 0x01EB: /* LATIN SMALL LETTER O WITH OGONEK */
851 case 0x01ED: /* LATIN SMALL LETTER O WITH OGONEK AND MACRON */
852 case 0x01EF: /* LATIN SMALL LETTER EZH WITH CARON */
853 case 0x01F0: /* LATIN SMALL LETTER J WITH CARON */
854 case 0x01F3: /* LATIN SMALL LETTER DZ */
855 case 0x01F5: /* LATIN SMALL LETTER G WITH ACUTE */
856 case 0x01F9: /* LATIN SMALL LETTER N WITH GRAVE */
857 case 0x01FB: /* LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE */
858 case 0x01FD: /* LATIN SMALL LETTER AE WITH ACUTE */
859 case 0x01FF: /* LATIN SMALL LETTER O WITH STROKE AND ACUTE */
860 case 0x0201: /* LATIN SMALL LETTER A WITH DOUBLE GRAVE */
861 case 0x0203: /* LATIN SMALL LETTER A WITH INVERTED BREVE */
862 case 0x0205: /* LATIN SMALL LETTER E WITH DOUBLE GRAVE */
863 case 0x0207: /* LATIN SMALL LETTER E WITH INVERTED BREVE */
864 case 0x0209: /* LATIN SMALL LETTER I WITH DOUBLE GRAVE */
865 case 0x020B: /* LATIN SMALL LETTER I WITH INVERTED BREVE */
866 case 0x020D: /* LATIN SMALL LETTER O WITH DOUBLE GRAVE */
867 case 0x020F: /* LATIN SMALL LETTER O WITH INVERTED BREVE */
868 case 0x0211: /* LATIN SMALL LETTER R WITH DOUBLE GRAVE */
869 case 0x0213: /* LATIN SMALL LETTER R WITH INVERTED BREVE */
870 case 0x0215: /* LATIN SMALL LETTER U WITH DOUBLE GRAVE */
871 case 0x0217: /* LATIN SMALL LETTER U WITH INVERTED BREVE */
872 case 0x0219: /* LATIN SMALL LETTER S WITH COMMA BELOW */
873 case 0x021B: /* LATIN SMALL LETTER T WITH COMMA BELOW */
874 case 0x021D: /* LATIN SMALL LETTER YOGH */
875 case 0x021F: /* LATIN SMALL LETTER H WITH CARON */
876 case 0x0223: /* LATIN SMALL LETTER OU */
877 case 0x0225: /* LATIN SMALL LETTER Z WITH HOOK */
878 case 0x0227: /* LATIN SMALL LETTER A WITH DOT ABOVE */
879 case 0x0229: /* LATIN SMALL LETTER E WITH CEDILLA */
880 case 0x022B: /* LATIN SMALL LETTER O WITH DIAERESIS AND MACRON */
881 case 0x022D: /* LATIN SMALL LETTER O WITH TILDE AND MACRON */
882 case 0x022F: /* LATIN SMALL LETTER O WITH DOT ABOVE */
883 case 0x0231: /* LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON */
884 case 0x0233: /* LATIN SMALL LETTER Y WITH MACRON */
885 case 0x0250: /* LATIN SMALL LETTER TURNED A */
886 case 0x0251: /* LATIN SMALL LETTER ALPHA */
887 case 0x0252: /* LATIN SMALL LETTER TURNED ALPHA */
888 case 0x0253: /* LATIN SMALL LETTER B WITH HOOK */
889 case 0x0254: /* LATIN SMALL LETTER OPEN O */
890 case 0x0255: /* LATIN SMALL LETTER C WITH CURL */
891 case 0x0256: /* LATIN SMALL LETTER D WITH TAIL */
892 case 0x0257: /* LATIN SMALL LETTER D WITH HOOK */
893 case 0x0258: /* LATIN SMALL LETTER REVERSED E */
894 case 0x0259: /* LATIN SMALL LETTER SCHWA */
895 case 0x025A: /* LATIN SMALL LETTER SCHWA WITH HOOK */
896 case 0x025B: /* LATIN SMALL LETTER OPEN E */
897 case 0x025C: /* LATIN SMALL LETTER REVERSED OPEN E */
898 case 0x025D: /* LATIN SMALL LETTER REVERSED OPEN E WITH HOOK */
899 case 0x025E: /* LATIN SMALL LETTER CLOSED REVERSED OPEN E */
900 case 0x025F: /* LATIN SMALL LETTER DOTLESS J WITH STROKE */
901 case 0x0260: /* LATIN SMALL LETTER G WITH HOOK */
902 case 0x0261: /* LATIN SMALL LETTER SCRIPT G */
903 case 0x0262: /* LATIN LETTER SMALL CAPITAL G */
904 case 0x0263: /* LATIN SMALL LETTER GAMMA */
905 case 0x0264: /* LATIN SMALL LETTER RAMS HORN */
906 case 0x0265: /* LATIN SMALL LETTER TURNED H */
907 case 0x0266: /* LATIN SMALL LETTER H WITH HOOK */
908 case 0x0267: /* LATIN SMALL LETTER HENG WITH HOOK */
909 case 0x0268: /* LATIN SMALL LETTER I WITH STROKE */
910 case 0x0269: /* LATIN SMALL LETTER IOTA */
911 case 0x026A: /* LATIN LETTER SMALL CAPITAL I */
912 case 0x026B: /* LATIN SMALL LETTER L WITH MIDDLE TILDE */
913 case 0x026C: /* LATIN SMALL LETTER L WITH BELT */
914 case 0x026D: /* LATIN SMALL LETTER L WITH RETROFLEX HOOK */
915 case 0x026E: /* LATIN SMALL LETTER LEZH */
916 case 0x026F: /* LATIN SMALL LETTER TURNED M */
917 case 0x0270: /* LATIN SMALL LETTER TURNED M WITH LONG LEG */
918 case 0x0271: /* LATIN SMALL LETTER M WITH HOOK */
919 case 0x0272: /* LATIN SMALL LETTER N WITH LEFT HOOK */
920 case 0x0273: /* LATIN SMALL LETTER N WITH RETROFLEX HOOK */
921 case 0x0274: /* LATIN LETTER SMALL CAPITAL N */
922 case 0x0275: /* LATIN SMALL LETTER BARRED O */
923 case 0x0276: /* LATIN LETTER SMALL CAPITAL OE */
924 case 0x0277: /* LATIN SMALL LETTER CLOSED OMEGA */
925 case 0x0278: /* LATIN SMALL LETTER PHI */
926 case 0x0279: /* LATIN SMALL LETTER TURNED R */
927 case 0x027A: /* LATIN SMALL LETTER TURNED R WITH LONG LEG */
928 case 0x027B: /* LATIN SMALL LETTER TURNED R WITH HOOK */
929 case 0x027C: /* LATIN SMALL LETTER R WITH LONG LEG */
930 case 0x027D: /* LATIN SMALL LETTER R WITH TAIL */
931 case 0x027E: /* LATIN SMALL LETTER R WITH FISHHOOK */
932 case 0x027F: /* LATIN SMALL LETTER REVERSED R WITH FISHHOOK */
933 case 0x0280: /* LATIN LETTER SMALL CAPITAL R */
934 case 0x0281: /* LATIN LETTER SMALL CAPITAL INVERTED R */
935 case 0x0282: /* LATIN SMALL LETTER S WITH HOOK */
936 case 0x0283: /* LATIN SMALL LETTER ESH */
937 case 0x0284: /* LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK */
938 case 0x0285: /* LATIN SMALL LETTER SQUAT REVERSED ESH */
939 case 0x0286: /* LATIN SMALL LETTER ESH WITH CURL */
940 case 0x0287: /* LATIN SMALL LETTER TURNED T */
941 case 0x0288: /* LATIN SMALL LETTER T WITH RETROFLEX HOOK */
942 case 0x0289: /* LATIN SMALL LETTER U BAR */
943 case 0x028A: /* LATIN SMALL LETTER UPSILON */
944 case 0x028B: /* LATIN SMALL LETTER V WITH HOOK */
945 case 0x028C: /* LATIN SMALL LETTER TURNED V */
946 case 0x028D: /* LATIN SMALL LETTER TURNED W */
947 case 0x028E: /* LATIN SMALL LETTER TURNED Y */
948 case 0x028F: /* LATIN LETTER SMALL CAPITAL Y */
949 case 0x0290: /* LATIN SMALL LETTER Z WITH RETROFLEX HOOK */
950 case 0x0291: /* LATIN SMALL LETTER Z WITH CURL */
951 case 0x0292: /* LATIN SMALL LETTER EZH */
952 case 0x0293: /* LATIN SMALL LETTER EZH WITH CURL */
953 case 0x0294: /* LATIN LETTER GLOTTAL STOP */
954 case 0x0295: /* LATIN LETTER PHARYNGEAL VOICED FRICATIVE */
955 case 0x0296: /* LATIN LETTER INVERTED GLOTTAL STOP */
956 case 0x0297: /* LATIN LETTER STRETCHED C */
957 case 0x0298: /* LATIN LETTER BILABIAL CLICK */
958 case 0x0299: /* LATIN LETTER SMALL CAPITAL B */
959 case 0x029A: /* LATIN SMALL LETTER CLOSED OPEN E */
960 case 0x029B: /* LATIN LETTER SMALL CAPITAL G WITH HOOK */
961 case 0x029C: /* LATIN LETTER SMALL CAPITAL H */
962 case 0x029D: /* LATIN SMALL LETTER J WITH CROSSED-TAIL */
963 case 0x029E: /* LATIN SMALL LETTER TURNED K */
964 case 0x029F: /* LATIN LETTER SMALL CAPITAL L */
965 case 0x02A0: /* LATIN SMALL LETTER Q WITH HOOK */
966 case 0x02A1: /* LATIN LETTER GLOTTAL STOP WITH STROKE */
967 case 0x02A2: /* LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE */
968 case 0x02A3: /* LATIN SMALL LETTER DZ DIGRAPH */
969 case 0x02A4: /* LATIN SMALL LETTER DEZH DIGRAPH */
970 case 0x02A5: /* LATIN SMALL LETTER DZ DIGRAPH WITH CURL */
971 case 0x02A6: /* LATIN SMALL LETTER TS DIGRAPH */
972 case 0x02A7: /* LATIN SMALL LETTER TESH DIGRAPH */
973 case 0x02A8: /* LATIN SMALL LETTER TC DIGRAPH WITH CURL */
974 case 0x02A9: /* LATIN SMALL LETTER FENG DIGRAPH */
975 case 0x02AA: /* LATIN SMALL LETTER LS DIGRAPH */
976 case 0x02AB: /* LATIN SMALL LETTER LZ DIGRAPH */
977 case 0x02AC: /* LATIN LETTER BILABIAL PERCUSSIVE */
978 case 0x02AD: /* LATIN LETTER BIDENTAL PERCUSSIVE */
979 case 0x0390: /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
980 case 0x03AC: /* GREEK SMALL LETTER ALPHA WITH TONOS */
981 case 0x03AD: /* GREEK SMALL LETTER EPSILON WITH TONOS */
982 case 0x03AE: /* GREEK SMALL LETTER ETA WITH TONOS */
983 case 0x03AF: /* GREEK SMALL LETTER IOTA WITH TONOS */
984 case 0x03B0: /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */
985 case 0x03B1: /* GREEK SMALL LETTER ALPHA */
986 case 0x03B2: /* GREEK SMALL LETTER BETA */
987 case 0x03B3: /* GREEK SMALL LETTER GAMMA */
988 case 0x03B4: /* GREEK SMALL LETTER DELTA */
989 case 0x03B5: /* GREEK SMALL LETTER EPSILON */
990 case 0x03B6: /* GREEK SMALL LETTER ZETA */
991 case 0x03B7: /* GREEK SMALL LETTER ETA */
992 case 0x03B8: /* GREEK SMALL LETTER THETA */
993 case 0x03B9: /* GREEK SMALL LETTER IOTA */
994 case 0x03BA: /* GREEK SMALL LETTER KAPPA */
995 case 0x03BB: /* GREEK SMALL LETTER LAMDA */
996 case 0x03BC: /* GREEK SMALL LETTER MU */
997 case 0x03BD: /* GREEK SMALL LETTER NU */
998 case 0x03BE: /* GREEK SMALL LETTER XI */
999 case 0x03BF: /* GREEK SMALL LETTER OMICRON */
1000 case 0x03C0: /* GREEK SMALL LETTER PI */
1001 case 0x03C1: /* GREEK SMALL LETTER RHO */
1002 case 0x03C2: /* GREEK SMALL LETTER FINAL SIGMA */
1003 case 0x03C3: /* GREEK SMALL LETTER SIGMA */
1004 case 0x03C4: /* GREEK SMALL LETTER TAU */
1005 case 0x03C5: /* GREEK SMALL LETTER UPSILON */
1006 case 0x03C6: /* GREEK SMALL LETTER PHI */
1007 case 0x03C7: /* GREEK SMALL LETTER CHI */
1008 case 0x03C8: /* GREEK SMALL LETTER PSI */
1009 case 0x03C9: /* GREEK SMALL LETTER OMEGA */
1010 case 0x03CA: /* GREEK SMALL LETTER IOTA WITH DIALYTIKA */
1011 case 0x03CB: /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA */
1012 case 0x03CC: /* GREEK SMALL LETTER OMICRON WITH TONOS */
1013 case 0x03CD: /* GREEK SMALL LETTER UPSILON WITH TONOS */
1014 case 0x03CE: /* GREEK SMALL LETTER OMEGA WITH TONOS */
1015 case 0x03D0: /* GREEK BETA SYMBOL */
1016 case 0x03D1: /* GREEK THETA SYMBOL */
1017 case 0x03D5: /* GREEK PHI SYMBOL */
1018 case 0x03D6: /* GREEK PI SYMBOL */
1019 case 0x03D7: /* GREEK KAI SYMBOL */
1020 case 0x03DB: /* GREEK SMALL LETTER STIGMA */
1021 case 0x03DD: /* GREEK SMALL LETTER DIGAMMA */
1022 case 0x03DF: /* GREEK SMALL LETTER KOPPA */
1023 case 0x03E1: /* GREEK SMALL LETTER SAMPI */
1024 case 0x03E3: /* COPTIC SMALL LETTER SHEI */
1025 case 0x03E5: /* COPTIC SMALL LETTER FEI */
1026 case 0x03E7: /* COPTIC SMALL LETTER KHEI */
1027 case 0x03E9: /* COPTIC SMALL LETTER HORI */
1028 case 0x03EB: /* COPTIC SMALL LETTER GANGIA */
1029 case 0x03ED: /* COPTIC SMALL LETTER SHIMA */
1030 case 0x03EF: /* COPTIC SMALL LETTER DEI */
1031 case 0x03F0: /* GREEK KAPPA SYMBOL */
1032 case 0x03F1: /* GREEK RHO SYMBOL */
1033 case 0x03F2: /* GREEK LUNATE SIGMA SYMBOL */
1034 case 0x03F3: /* GREEK LETTER YOT */
1035 case 0x0430: /* CYRILLIC SMALL LETTER A */
1036 case 0x0431: /* CYRILLIC SMALL LETTER BE */
1037 case 0x0432: /* CYRILLIC SMALL LETTER VE */
1038 case 0x0433: /* CYRILLIC SMALL LETTER GHE */
1039 case 0x0434: /* CYRILLIC SMALL LETTER DE */
1040 case 0x0435: /* CYRILLIC SMALL LETTER IE */
1041 case 0x0436: /* CYRILLIC SMALL LETTER ZHE */
1042 case 0x0437: /* CYRILLIC SMALL LETTER ZE */
1043 case 0x0438: /* CYRILLIC SMALL LETTER I */
1044 case 0x0439: /* CYRILLIC SMALL LETTER SHORT I */
1045 case 0x043A: /* CYRILLIC SMALL LETTER KA */
1046 case 0x043B: /* CYRILLIC SMALL LETTER EL */
1047 case 0x043C: /* CYRILLIC SMALL LETTER EM */
1048 case 0x043D: /* CYRILLIC SMALL LETTER EN */
1049 case 0x043E: /* CYRILLIC SMALL LETTER O */
1050 case 0x043F: /* CYRILLIC SMALL LETTER PE */
1051 case 0x0440: /* CYRILLIC SMALL LETTER ER */
1052 case 0x0441: /* CYRILLIC SMALL LETTER ES */
1053 case 0x0442: /* CYRILLIC SMALL LETTER TE */
1054 case 0x0443: /* CYRILLIC SMALL LETTER U */
1055 case 0x0444: /* CYRILLIC SMALL LETTER EF */
1056 case 0x0445: /* CYRILLIC SMALL LETTER HA */
1057 case 0x0446: /* CYRILLIC SMALL LETTER TSE */
1058 case 0x0447: /* CYRILLIC SMALL LETTER CHE */
1059 case 0x0448: /* CYRILLIC SMALL LETTER SHA */
1060 case 0x0449: /* CYRILLIC SMALL LETTER SHCHA */
1061 case 0x044A: /* CYRILLIC SMALL LETTER HARD SIGN */
1062 case 0x044B: /* CYRILLIC SMALL LETTER YERU */
1063 case 0x044C: /* CYRILLIC SMALL LETTER SOFT SIGN */
1064 case 0x044D: /* CYRILLIC SMALL LETTER E */
1065 case 0x044E: /* CYRILLIC SMALL LETTER YU */
1066 case 0x044F: /* CYRILLIC SMALL LETTER YA */
1067 case 0x0450: /* CYRILLIC SMALL LETTER IE WITH GRAVE */
1068 case 0x0451: /* CYRILLIC SMALL LETTER IO */
1069 case 0x0452: /* CYRILLIC SMALL LETTER DJE */
1070 case 0x0453: /* CYRILLIC SMALL LETTER GJE */
1071 case 0x0454: /* CYRILLIC SMALL LETTER UKRAINIAN IE */
1072 case 0x0455: /* CYRILLIC SMALL LETTER DZE */
1073 case 0x0456: /* CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */
1074 case 0x0457: /* CYRILLIC SMALL LETTER YI */
1075 case 0x0458: /* CYRILLIC SMALL LETTER JE */
1076 case 0x0459: /* CYRILLIC SMALL LETTER LJE */
1077 case 0x045A: /* CYRILLIC SMALL LETTER NJE */
1078 case 0x045B: /* CYRILLIC SMALL LETTER TSHE */
1079 case 0x045C: /* CYRILLIC SMALL LETTER KJE */
1080 case 0x045D: /* CYRILLIC SMALL LETTER I WITH GRAVE */
1081 case 0x045E: /* CYRILLIC SMALL LETTER SHORT U */
1082 case 0x045F: /* CYRILLIC SMALL LETTER DZHE */
1083 case 0x0461: /* CYRILLIC SMALL LETTER OMEGA */
1084 case 0x0463: /* CYRILLIC SMALL LETTER YAT */
1085 case 0x0465: /* CYRILLIC SMALL LETTER IOTIFIED E */
1086 case 0x0467: /* CYRILLIC SMALL LETTER LITTLE YUS */
1087 case 0x0469: /* CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS */
1088 case 0x046B: /* CYRILLIC SMALL LETTER BIG YUS */
1089 case 0x046D: /* CYRILLIC SMALL LETTER IOTIFIED BIG YUS */
1090 case 0x046F: /* CYRILLIC SMALL LETTER KSI */
1091 case 0x0471: /* CYRILLIC SMALL LETTER PSI */
1092 case 0x0473: /* CYRILLIC SMALL LETTER FITA */
1093 case 0x0475: /* CYRILLIC SMALL LETTER IZHITSA */
1094 case 0x0477: /* CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT */
1095 case 0x0479: /* CYRILLIC SMALL LETTER UK */
1096 case 0x047B: /* CYRILLIC SMALL LETTER ROUND OMEGA */
1097 case 0x047D: /* CYRILLIC SMALL LETTER OMEGA WITH TITLO */
1098 case 0x047F: /* CYRILLIC SMALL LETTER OT */
1099 case 0x0481: /* CYRILLIC SMALL LETTER KOPPA */
1100 case 0x048D: /* CYRILLIC SMALL LETTER SEMISOFT SIGN */
1101 case 0x048F: /* CYRILLIC SMALL LETTER ER WITH TICK */
1102 case 0x0491: /* CYRILLIC SMALL LETTER GHE WITH UPTURN */
1103 case 0x0493: /* CYRILLIC SMALL LETTER GHE WITH STROKE */
1104 case 0x0495: /* CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK */
1105 case 0x0497: /* CYRILLIC SMALL LETTER ZHE WITH DESCENDER */
1106 case 0x0499: /* CYRILLIC SMALL LETTER ZE WITH DESCENDER */
1107 case 0x049B: /* CYRILLIC SMALL LETTER KA WITH DESCENDER */
1108 case 0x049D: /* CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE */
1109 case 0x049F: /* CYRILLIC SMALL LETTER KA WITH STROKE */
1110 case 0x04A1: /* CYRILLIC SMALL LETTER BASHKIR KA */
1111 case 0x04A3: /* CYRILLIC SMALL LETTER EN WITH DESCENDER */
1112 case 0x04A5: /* CYRILLIC SMALL LIGATURE EN GHE */
1113 case 0x04A7: /* CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK */
1114 case 0x04A9: /* CYRILLIC SMALL LETTER ABKHASIAN HA */
1115 case 0x04AB: /* CYRILLIC SMALL LETTER ES WITH DESCENDER */
1116 case 0x04AD: /* CYRILLIC SMALL LETTER TE WITH DESCENDER */
1117 case 0x04AF: /* CYRILLIC SMALL LETTER STRAIGHT U */
1118 case 0x04B1: /* CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE */
1119 case 0x04B3: /* CYRILLIC SMALL LETTER HA WITH DESCENDER */
1120 case 0x04B5: /* CYRILLIC SMALL LIGATURE TE TSE */
1121 case 0x04B7: /* CYRILLIC SMALL LETTER CHE WITH DESCENDER */
1122 case 0x04B9: /* CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE */
1123 case 0x04BB: /* CYRILLIC SMALL LETTER SHHA */
1124 case 0x04BD: /* CYRILLIC SMALL LETTER ABKHASIAN CHE */
1125 case 0x04BF: /* CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER */
1126 case 0x04C2: /* CYRILLIC SMALL LETTER ZHE WITH BREVE */
1127 case 0x04C4: /* CYRILLIC SMALL LETTER KA WITH HOOK */
1128 case 0x04C8: /* CYRILLIC SMALL LETTER EN WITH HOOK */
1129 case 0x04CC: /* CYRILLIC SMALL LETTER KHAKASSIAN CHE */
1130 case 0x04D1: /* CYRILLIC SMALL LETTER A WITH BREVE */
1131 case 0x04D3: /* CYRILLIC SMALL LETTER A WITH DIAERESIS */
1132 case 0x04D5: /* CYRILLIC SMALL LIGATURE A IE */
1133 case 0x04D7: /* CYRILLIC SMALL LETTER IE WITH BREVE */
1134 case 0x04D9: /* CYRILLIC SMALL LETTER SCHWA */
1135 case 0x04DB: /* CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS */
1136 case 0x04DD: /* CYRILLIC SMALL LETTER ZHE WITH DIAERESIS */
1137 case 0x04DF: /* CYRILLIC SMALL LETTER ZE WITH DIAERESIS */
1138 case 0x04E1: /* CYRILLIC SMALL LETTER ABKHASIAN DZE */
1139 case 0x04E3: /* CYRILLIC SMALL LETTER I WITH MACRON */
1140 case 0x04E5: /* CYRILLIC SMALL LETTER I WITH DIAERESIS */
1141 case 0x04E7: /* CYRILLIC SMALL LETTER O WITH DIAERESIS */
1142 case 0x04E9: /* CYRILLIC SMALL LETTER BARRED O */
1143 case 0x04EB: /* CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS */
1144 case 0x04ED: /* CYRILLIC SMALL LETTER E WITH DIAERESIS */
1145 case 0x04EF: /* CYRILLIC SMALL LETTER U WITH MACRON */
1146 case 0x04F1: /* CYRILLIC SMALL LETTER U WITH DIAERESIS */
1147 case 0x04F3: /* CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE */
1148 case 0x04F5: /* CYRILLIC SMALL LETTER CHE WITH DIAERESIS */
1149 case 0x04F9: /* CYRILLIC SMALL LETTER YERU WITH DIAERESIS */
1150 case 0x0561: /* ARMENIAN SMALL LETTER AYB */
1151 case 0x0562: /* ARMENIAN SMALL LETTER BEN */
1152 case 0x0563: /* ARMENIAN SMALL LETTER GIM */
1153 case 0x0564: /* ARMENIAN SMALL LETTER DA */
1154 case 0x0565: /* ARMENIAN SMALL LETTER ECH */
1155 case 0x0566: /* ARMENIAN SMALL LETTER ZA */
1156 case 0x0567: /* ARMENIAN SMALL LETTER EH */
1157 case 0x0568: /* ARMENIAN SMALL LETTER ET */
1158 case 0x0569: /* ARMENIAN SMALL LETTER TO */
1159 case 0x056A: /* ARMENIAN SMALL LETTER ZHE */
1160 case 0x056B: /* ARMENIAN SMALL LETTER INI */
1161 case 0x056C: /* ARMENIAN SMALL LETTER LIWN */
1162 case 0x056D: /* ARMENIAN SMALL LETTER XEH */
1163 case 0x056E: /* ARMENIAN SMALL LETTER CA */
1164 case 0x056F: /* ARMENIAN SMALL LETTER KEN */
1165 case 0x0570: /* ARMENIAN SMALL LETTER HO */
1166 case 0x0571: /* ARMENIAN SMALL LETTER JA */
1167 case 0x0572: /* ARMENIAN SMALL LETTER GHAD */
1168 case 0x0573: /* ARMENIAN SMALL LETTER CHEH */
1169 case 0x0574: /* ARMENIAN SMALL LETTER MEN */
1170 case 0x0575: /* ARMENIAN SMALL LETTER YI */
1171 case 0x0576: /* ARMENIAN SMALL LETTER NOW */
1172 case 0x0577: /* ARMENIAN SMALL LETTER SHA */
1173 case 0x0578: /* ARMENIAN SMALL LETTER VO */
1174 case 0x0579: /* ARMENIAN SMALL LETTER CHA */
1175 case 0x057A: /* ARMENIAN SMALL LETTER PEH */
1176 case 0x057B: /* ARMENIAN SMALL LETTER JHEH */
1177 case 0x057C: /* ARMENIAN SMALL LETTER RA */
1178 case 0x057D: /* ARMENIAN SMALL LETTER SEH */
1179 case 0x057E: /* ARMENIAN SMALL LETTER VEW */
1180 case 0x057F: /* ARMENIAN SMALL LETTER TIWN */
1181 case 0x0580: /* ARMENIAN SMALL LETTER REH */
1182 case 0x0581: /* ARMENIAN SMALL LETTER CO */
1183 case 0x0582: /* ARMENIAN SMALL LETTER YIWN */
1184 case 0x0583: /* ARMENIAN SMALL LETTER PIWR */
1185 case 0x0584: /* ARMENIAN SMALL LETTER KEH */
1186 case 0x0585: /* ARMENIAN SMALL LETTER OH */
1187 case 0x0586: /* ARMENIAN SMALL LETTER FEH */
1188 case 0x0587: /* ARMENIAN SMALL LIGATURE ECH YIWN */
1189 case 0x1E01: /* LATIN SMALL LETTER A WITH RING BELOW */
1190 case 0x1E03: /* LATIN SMALL LETTER B WITH DOT ABOVE */
1191 case 0x1E05: /* LATIN SMALL LETTER B WITH DOT BELOW */
1192 case 0x1E07: /* LATIN SMALL LETTER B WITH LINE BELOW */
1193 case 0x1E09: /* LATIN SMALL LETTER C WITH CEDILLA AND ACUTE */
1194 case 0x1E0B: /* LATIN SMALL LETTER D WITH DOT ABOVE */
1195 case 0x1E0D: /* LATIN SMALL LETTER D WITH DOT BELOW */
1196 case 0x1E0F: /* LATIN SMALL LETTER D WITH LINE BELOW */
1197 case 0x1E11: /* LATIN SMALL LETTER D WITH CEDILLA */
1198 case 0x1E13: /* LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW */
1199 case 0x1E15: /* LATIN SMALL LETTER E WITH MACRON AND GRAVE */
1200 case 0x1E17: /* LATIN SMALL LETTER E WITH MACRON AND ACUTE */
1201 case 0x1E19: /* LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW */
1202 case 0x1E1B: /* LATIN SMALL LETTER E WITH TILDE BELOW */
1203 case 0x1E1D: /* LATIN SMALL LETTER E WITH CEDILLA AND BREVE */
1204 case 0x1E1F: /* LATIN SMALL LETTER F WITH DOT ABOVE */
1205 case 0x1E21: /* LATIN SMALL LETTER G WITH MACRON */
1206 case 0x1E23: /* LATIN SMALL LETTER H WITH DOT ABOVE */
1207 case 0x1E25: /* LATIN SMALL LETTER H WITH DOT BELOW */
1208 case 0x1E27: /* LATIN SMALL LETTER H WITH DIAERESIS */
1209 case 0x1E29: /* LATIN SMALL LETTER H WITH CEDILLA */
1210 case 0x1E2B: /* LATIN SMALL LETTER H WITH BREVE BELOW */
1211 case 0x1E2D: /* LATIN SMALL LETTER I WITH TILDE BELOW */
1212 case 0x1E2F: /* LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE */
1213 case 0x1E31: /* LATIN SMALL LETTER K WITH ACUTE */
1214 case 0x1E33: /* LATIN SMALL LETTER K WITH DOT BELOW */
1215 case 0x1E35: /* LATIN SMALL LETTER K WITH LINE BELOW */
1216 case 0x1E37: /* LATIN SMALL LETTER L WITH DOT BELOW */
1217 case 0x1E39: /* LATIN SMALL LETTER L WITH DOT BELOW AND MACRON */
1218 case 0x1E3B: /* LATIN SMALL LETTER L WITH LINE BELOW */
1219 case 0x1E3D: /* LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW */
1220 case 0x1E3F: /* LATIN SMALL LETTER M WITH ACUTE */
1221 case 0x1E41: /* LATIN SMALL LETTER M WITH DOT ABOVE */
1222 case 0x1E43: /* LATIN SMALL LETTER M WITH DOT BELOW */
1223 case 0x1E45: /* LATIN SMALL LETTER N WITH DOT ABOVE */
1224 case 0x1E47: /* LATIN SMALL LETTER N WITH DOT BELOW */
1225 case 0x1E49: /* LATIN SMALL LETTER N WITH LINE BELOW */
1226 case 0x1E4B: /* LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW */
1227 case 0x1E4D: /* LATIN SMALL LETTER O WITH TILDE AND ACUTE */
1228 case 0x1E4F: /* LATIN SMALL LETTER O WITH TILDE AND DIAERESIS */
1229 case 0x1E51: /* LATIN SMALL LETTER O WITH MACRON AND GRAVE */
1230 case 0x1E53: /* LATIN SMALL LETTER O WITH MACRON AND ACUTE */
1231 case 0x1E55: /* LATIN SMALL LETTER P WITH ACUTE */
1232 case 0x1E57: /* LATIN SMALL LETTER P WITH DOT ABOVE */
1233 case 0x1E59: /* LATIN SMALL LETTER R WITH DOT ABOVE */
1234 case 0x1E5B: /* LATIN SMALL LETTER R WITH DOT BELOW */
1235 case 0x1E5D: /* LATIN SMALL LETTER R WITH DOT BELOW AND MACRON */
1236 case 0x1E5F: /* LATIN SMALL LETTER R WITH LINE BELOW */
1237 case 0x1E61: /* LATIN SMALL LETTER S WITH DOT ABOVE */
1238 case 0x1E63: /* LATIN SMALL LETTER S WITH DOT BELOW */
1239 case 0x1E65: /* LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE */
1240 case 0x1E67: /* LATIN SMALL LETTER S WITH CARON AND DOT ABOVE */
1241 case 0x1E69: /* LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE */
1242 case 0x1E6B: /* LATIN SMALL LETTER T WITH DOT ABOVE */
1243 case 0x1E6D: /* LATIN SMALL LETTER T WITH DOT BELOW */
1244 case 0x1E6F: /* LATIN SMALL LETTER T WITH LINE BELOW */
1245 case 0x1E71: /* LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW */
1246 case 0x1E73: /* LATIN SMALL LETTER U WITH DIAERESIS BELOW */
1247 case 0x1E75: /* LATIN SMALL LETTER U WITH TILDE BELOW */
1248 case 0x1E77: /* LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW */
1249 case 0x1E79: /* LATIN SMALL LETTER U WITH TILDE AND ACUTE */
1250 case 0x1E7B: /* LATIN SMALL LETTER U WITH MACRON AND DIAERESIS */
1251 case 0x1E7D: /* LATIN SMALL LETTER V WITH TILDE */
1252 case 0x1E7F: /* LATIN SMALL LETTER V WITH DOT BELOW */
1253 case 0x1E81: /* LATIN SMALL LETTER W WITH GRAVE */
1254 case 0x1E83: /* LATIN SMALL LETTER W WITH ACUTE */
1255 case 0x1E85: /* LATIN SMALL LETTER W WITH DIAERESIS */
1256 case 0x1E87: /* LATIN SMALL LETTER W WITH DOT ABOVE */
1257 case 0x1E89: /* LATIN SMALL LETTER W WITH DOT BELOW */
1258 case 0x1E8B: /* LATIN SMALL LETTER X WITH DOT ABOVE */
1259 case 0x1E8D: /* LATIN SMALL LETTER X WITH DIAERESIS */
1260 case 0x1E8F: /* LATIN SMALL LETTER Y WITH DOT ABOVE */
1261 case 0x1E91: /* LATIN SMALL LETTER Z WITH CIRCUMFLEX */
1262 case 0x1E93: /* LATIN SMALL LETTER Z WITH DOT BELOW */
1263 case 0x1E95: /* LATIN SMALL LETTER Z WITH LINE BELOW */
1264 case 0x1E96: /* LATIN SMALL LETTER H WITH LINE BELOW */
1265 case 0x1E97: /* LATIN SMALL LETTER T WITH DIAERESIS */
1266 case 0x1E98: /* LATIN SMALL LETTER W WITH RING ABOVE */
1267 case 0x1E99: /* LATIN SMALL LETTER Y WITH RING ABOVE */
1268 case 0x1E9A: /* LATIN SMALL LETTER A WITH RIGHT HALF RING */
1269 case 0x1E9B: /* LATIN SMALL LETTER LONG S WITH DOT ABOVE */
1270 case 0x1EA1: /* LATIN SMALL LETTER A WITH DOT BELOW */
1271 case 0x1EA3: /* LATIN SMALL LETTER A WITH HOOK ABOVE */
1272 case 0x1EA5: /* LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE */
1273 case 0x1EA7: /* LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE */
1274 case 0x1EA9: /* LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */
1275 case 0x1EAB: /* LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE */
1276 case 0x1EAD: /* LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW */
1277 case 0x1EAF: /* LATIN SMALL LETTER A WITH BREVE AND ACUTE */
1278 case 0x1EB1: /* LATIN SMALL LETTER A WITH BREVE AND GRAVE */
1279 case 0x1EB3: /* LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE */
1280 case 0x1EB5: /* LATIN SMALL LETTER A WITH BREVE AND TILDE */
1281 case 0x1EB7: /* LATIN SMALL LETTER A WITH BREVE AND DOT BELOW */
1282 case 0x1EB9: /* LATIN SMALL LETTER E WITH DOT BELOW */
1283 case 0x1EBB: /* LATIN SMALL LETTER E WITH HOOK ABOVE */
1284 case 0x1EBD: /* LATIN SMALL LETTER E WITH TILDE */
1285 case 0x1EBF: /* LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE */
1286 case 0x1EC1: /* LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE */
1287 case 0x1EC3: /* LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */
1288 case 0x1EC5: /* LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE */
1289 case 0x1EC7: /* LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW */
1290 case 0x1EC9: /* LATIN SMALL LETTER I WITH HOOK ABOVE */
1291 case 0x1ECB: /* LATIN SMALL LETTER I WITH DOT BELOW */
1292 case 0x1ECD: /* LATIN SMALL LETTER O WITH DOT BELOW */
1293 case 0x1ECF: /* LATIN SMALL LETTER O WITH HOOK ABOVE */
1294 case 0x1ED1: /* LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE */
1295 case 0x1ED3: /* LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE */
1296 case 0x1ED5: /* LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */
1297 case 0x1ED7: /* LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE */
1298 case 0x1ED9: /* LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW */
1299 case 0x1EDB: /* LATIN SMALL LETTER O WITH HORN AND ACUTE */
1300 case 0x1EDD: /* LATIN SMALL LETTER O WITH HORN AND GRAVE */
1301 case 0x1EDF: /* LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE */
1302 case 0x1EE1: /* LATIN SMALL LETTER O WITH HORN AND TILDE */
1303 case 0x1EE3: /* LATIN SMALL LETTER O WITH HORN AND DOT BELOW */
1304 case 0x1EE5: /* LATIN SMALL LETTER U WITH DOT BELOW */
1305 case 0x1EE7: /* LATIN SMALL LETTER U WITH HOOK ABOVE */
1306 case 0x1EE9: /* LATIN SMALL LETTER U WITH HORN AND ACUTE */
1307 case 0x1EEB: /* LATIN SMALL LETTER U WITH HORN AND GRAVE */
1308 case 0x1EED: /* LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE */
1309 case 0x1EEF: /* LATIN SMALL LETTER U WITH HORN AND TILDE */
1310 case 0x1EF1: /* LATIN SMALL LETTER U WITH HORN AND DOT BELOW */
1311 case 0x1EF3: /* LATIN SMALL LETTER Y WITH GRAVE */
1312 case 0x1EF5: /* LATIN SMALL LETTER Y WITH DOT BELOW */
1313 case 0x1EF7: /* LATIN SMALL LETTER Y WITH HOOK ABOVE */
1314 case 0x1EF9: /* LATIN SMALL LETTER Y WITH TILDE */
1315 case 0x1F00: /* GREEK SMALL LETTER ALPHA WITH PSILI */
1316 case 0x1F01: /* GREEK SMALL LETTER ALPHA WITH DASIA */
1317 case 0x1F02: /* GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA */
1318 case 0x1F03: /* GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA */
1319 case 0x1F04: /* GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA */
1320 case 0x1F05: /* GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA */
1321 case 0x1F06: /* GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI */
1322 case 0x1F07: /* GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI */
1323 case 0x1F10: /* GREEK SMALL LETTER EPSILON WITH PSILI */
1324 case 0x1F11: /* GREEK SMALL LETTER EPSILON WITH DASIA */
1325 case 0x1F12: /* GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA */
1326 case 0x1F13: /* GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA */
1327 case 0x1F14: /* GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA */
1328 case 0x1F15: /* GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA */
1329 case 0x1F20: /* GREEK SMALL LETTER ETA WITH PSILI */
1330 case 0x1F21: /* GREEK SMALL LETTER ETA WITH DASIA */
1331 case 0x1F22: /* GREEK SMALL LETTER ETA WITH PSILI AND VARIA */
1332 case 0x1F23: /* GREEK SMALL LETTER ETA WITH DASIA AND VARIA */
1333 case 0x1F24: /* GREEK SMALL LETTER ETA WITH PSILI AND OXIA */
1334 case 0x1F25: /* GREEK SMALL LETTER ETA WITH DASIA AND OXIA */
1335 case 0x1F26: /* GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI */
1336 case 0x1F27: /* GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI */
1337 case 0x1F30: /* GREEK SMALL LETTER IOTA WITH PSILI */
1338 case 0x1F31: /* GREEK SMALL LETTER IOTA WITH DASIA */
1339 case 0x1F32: /* GREEK SMALL LETTER IOTA WITH PSILI AND VARIA */
1340 case 0x1F33: /* GREEK SMALL LETTER IOTA WITH DASIA AND VARIA */
1341 case 0x1F34: /* GREEK SMALL LETTER IOTA WITH PSILI AND OXIA */
1342 case 0x1F35: /* GREEK SMALL LETTER IOTA WITH DASIA AND OXIA */
1343 case 0x1F36: /* GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI */
1344 case 0x1F37: /* GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI */
1345 case 0x1F40: /* GREEK SMALL LETTER OMICRON WITH PSILI */
1346 case 0x1F41: /* GREEK SMALL LETTER OMICRON WITH DASIA */
1347 case 0x1F42: /* GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA */
1348 case 0x1F43: /* GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA */
1349 case 0x1F44: /* GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA */
1350 case 0x1F45: /* GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA */
1351 case 0x1F50: /* GREEK SMALL LETTER UPSILON WITH PSILI */
1352 case 0x1F51: /* GREEK SMALL LETTER UPSILON WITH DASIA */
1353 case 0x1F52: /* GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA */
1354 case 0x1F53: /* GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA */
1355 case 0x1F54: /* GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA */
1356 case 0x1F55: /* GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA */
1357 case 0x1F56: /* GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI */
1358 case 0x1F57: /* GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI */
1359 case 0x1F60: /* GREEK SMALL LETTER OMEGA WITH PSILI */
1360 case 0x1F61: /* GREEK SMALL LETTER OMEGA WITH DASIA */
1361 case 0x1F62: /* GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA */
1362 case 0x1F63: /* GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA */
1363 case 0x1F64: /* GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA */
1364 case 0x1F65: /* GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA */
1365 case 0x1F66: /* GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI */
1366 case 0x1F67: /* GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI */
1367 case 0x1F70: /* GREEK SMALL LETTER ALPHA WITH VARIA */
1368 case 0x1F71: /* GREEK SMALL LETTER ALPHA WITH OXIA */
1369 case 0x1F72: /* GREEK SMALL LETTER EPSILON WITH VARIA */
1370 case 0x1F73: /* GREEK SMALL LETTER EPSILON WITH OXIA */
1371 case 0x1F74: /* GREEK SMALL LETTER ETA WITH VARIA */
1372 case 0x1F75: /* GREEK SMALL LETTER ETA WITH OXIA */
1373 case 0x1F76: /* GREEK SMALL LETTER IOTA WITH VARIA */
1374 case 0x1F77: /* GREEK SMALL LETTER IOTA WITH OXIA */
1375 case 0x1F78: /* GREEK SMALL LETTER OMICRON WITH VARIA */
1376 case 0x1F79: /* GREEK SMALL LETTER OMICRON WITH OXIA */
1377 case 0x1F7A: /* GREEK SMALL LETTER UPSILON WITH VARIA */
1378 case 0x1F7B: /* GREEK SMALL LETTER UPSILON WITH OXIA */
1379 case 0x1F7C: /* GREEK SMALL LETTER OMEGA WITH VARIA */
1380 case 0x1F7D: /* GREEK SMALL LETTER OMEGA WITH OXIA */
1381 case 0x1F80: /* GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI */
1382 case 0x1F81: /* GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI */
1383 case 0x1F82: /* GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI */
1384 case 0x1F83: /* GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI */
1385 case 0x1F84: /* GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI */
1386 case 0x1F85: /* GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI */
1387 case 0x1F86: /* GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */
1388 case 0x1F87: /* GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */
1389 case 0x1F90: /* GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI */
1390 case 0x1F91: /* GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI */
1391 case 0x1F92: /* GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI */
1392 case 0x1F93: /* GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI */
1393 case 0x1F94: /* GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI */
1394 case 0x1F95: /* GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI */
1395 case 0x1F96: /* GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */
1396 case 0x1F97: /* GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */
1397 case 0x1FA0: /* GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI */
1398 case 0x1FA1: /* GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI */
1399 case 0x1FA2: /* GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI */
1400 case 0x1FA3: /* GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI */
1401 case 0x1FA4: /* GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI */
1402 case 0x1FA5: /* GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI */
1403 case 0x1FA6: /* GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */
1404 case 0x1FA7: /* GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */
1405 case 0x1FB0: /* GREEK SMALL LETTER ALPHA WITH VRACHY */
1406 case 0x1FB1: /* GREEK SMALL LETTER ALPHA WITH MACRON */
1407 case 0x1FB2: /* GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI */
1408 case 0x1FB3: /* GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI */
1409 case 0x1FB4: /* GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI */
1410 case 0x1FB6: /* GREEK SMALL LETTER ALPHA WITH PERISPOMENI */
1411 case 0x1FB7: /* GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI */
1412 case 0x1FBE: /* GREEK PROSGEGRAMMENI */
1413 case 0x1FC2: /* GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI */
1414 case 0x1FC3: /* GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI */
1415 case 0x1FC4: /* GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI */
1416 case 0x1FC6: /* GREEK SMALL LETTER ETA WITH PERISPOMENI */
1417 case 0x1FC7: /* GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI */
1418 case 0x1FD0: /* GREEK SMALL LETTER IOTA WITH VRACHY */
1419 case 0x1FD1: /* GREEK SMALL LETTER IOTA WITH MACRON */
1420 case 0x1FD2: /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA */
1421 case 0x1FD3: /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA */
1422 case 0x1FD6: /* GREEK SMALL LETTER IOTA WITH PERISPOMENI */
1423 case 0x1FD7: /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI */
1424 case 0x1FE0: /* GREEK SMALL LETTER UPSILON WITH VRACHY */
1425 case 0x1FE1: /* GREEK SMALL LETTER UPSILON WITH MACRON */
1426 case 0x1FE2: /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA */
1427 case 0x1FE3: /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA */
1428 case 0x1FE4: /* GREEK SMALL LETTER RHO WITH PSILI */
1429 case 0x1FE5: /* GREEK SMALL LETTER RHO WITH DASIA */
1430 case 0x1FE6: /* GREEK SMALL LETTER UPSILON WITH PERISPOMENI */
1431 case 0x1FE7: /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI */
1432 case 0x1FF2: /* GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI */
1433 case 0x1FF3: /* GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI */
1434 case 0x1FF4: /* GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI */
1435 case 0x1FF6: /* GREEK SMALL LETTER OMEGA WITH PERISPOMENI */
1436 case 0x1FF7: /* GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI */
1437 case 0x207F: /* SUPERSCRIPT LATIN SMALL LETTER N */
1438 case 0x210A: /* SCRIPT SMALL G */
1439 case 0x210E: /* PLANCK CONSTANT */
1440 case 0x210F: /* PLANCK CONSTANT OVER TWO PI */
1441 case 0x2113: /* SCRIPT SMALL L */
1442 case 0x212F: /* SCRIPT SMALL E */
1443 case 0x2134: /* SCRIPT SMALL O */
1444 case 0x2139: /* INFORMATION SOURCE */
1445 case 0xFB00: /* LATIN SMALL LIGATURE FF */
1446 case 0xFB01: /* LATIN SMALL LIGATURE FI */
1447 case 0xFB02: /* LATIN SMALL LIGATURE FL */
1448 case 0xFB03: /* LATIN SMALL LIGATURE FFI */
1449 case 0xFB04: /* LATIN SMALL LIGATURE FFL */
1450 case 0xFB05: /* LATIN SMALL LIGATURE LONG S T */
1451 case 0xFB06: /* LATIN SMALL LIGATURE ST */
1452 case 0xFB13: /* ARMENIAN SMALL LIGATURE MEN NOW */
1453 case 0xFB14: /* ARMENIAN SMALL LIGATURE MEN ECH */
1454 case 0xFB15: /* ARMENIAN SMALL LIGATURE MEN INI */
1455 case 0xFB16: /* ARMENIAN SMALL LIGATURE VEW NOW */
1456 case 0xFB17: /* ARMENIAN SMALL LIGATURE MEN XEH */
1457 case 0xFF41: /* FULLWIDTH LATIN SMALL LETTER A */
1458 case 0xFF42: /* FULLWIDTH LATIN SMALL LETTER B */
1459 case 0xFF43: /* FULLWIDTH LATIN SMALL LETTER C */
1460 case 0xFF44: /* FULLWIDTH LATIN SMALL LETTER D */
1461 case 0xFF45: /* FULLWIDTH LATIN SMALL LETTER E */
1462 case 0xFF46: /* FULLWIDTH LATIN SMALL LETTER F */
1463 case 0xFF47: /* FULLWIDTH LATIN SMALL LETTER G */
1464 case 0xFF48: /* FULLWIDTH LATIN SMALL LETTER H */
1465 case 0xFF49: /* FULLWIDTH LATIN SMALL LETTER I */
1466 case 0xFF4A: /* FULLWIDTH LATIN SMALL LETTER J */
1467 case 0xFF4B: /* FULLWIDTH LATIN SMALL LETTER K */
1468 case 0xFF4C: /* FULLWIDTH LATIN SMALL LETTER L */
1469 case 0xFF4D: /* FULLWIDTH LATIN SMALL LETTER M */
1470 case 0xFF4E: /* FULLWIDTH LATIN SMALL LETTER N */
1471 case 0xFF4F: /* FULLWIDTH LATIN SMALL LETTER O */
1472 case 0xFF50: /* FULLWIDTH LATIN SMALL LETTER P */
1473 case 0xFF51: /* FULLWIDTH LATIN SMALL LETTER Q */
1474 case 0xFF52: /* FULLWIDTH LATIN SMALL LETTER R */
1475 case 0xFF53: /* FULLWIDTH LATIN SMALL LETTER S */
1476 case 0xFF54: /* FULLWIDTH LATIN SMALL LETTER T */
1477 case 0xFF55: /* FULLWIDTH LATIN SMALL LETTER U */
1478 case 0xFF56: /* FULLWIDTH LATIN SMALL LETTER V */
1479 case 0xFF57: /* FULLWIDTH LATIN SMALL LETTER W */
1480 case 0xFF58: /* FULLWIDTH LATIN SMALL LETTER X */
1481 case 0xFF59: /* FULLWIDTH LATIN SMALL LETTER Y */
1482 case 0xFF5A: /* FULLWIDTH LATIN SMALL LETTER Z */
1483 return 1;
1484 default:
1485 return 0;
1486 }
1487}
1488
1489/* Returns 1 for Unicode characters having the category 'Lu', 0
1490 otherwise. */
1491
1492int _PyUnicode_IsUppercase(register const Py_UNICODE ch)
1493{
1494 switch (ch) {
1495 case 0x0041: /* LATIN CAPITAL LETTER A */
1496 case 0x0042: /* LATIN CAPITAL LETTER B */
1497 case 0x0043: /* LATIN CAPITAL LETTER C */
1498 case 0x0044: /* LATIN CAPITAL LETTER D */
1499 case 0x0045: /* LATIN CAPITAL LETTER E */
1500 case 0x0046: /* LATIN CAPITAL LETTER F */
1501 case 0x0047: /* LATIN CAPITAL LETTER G */
1502 case 0x0048: /* LATIN CAPITAL LETTER H */
1503 case 0x0049: /* LATIN CAPITAL LETTER I */
1504 case 0x004A: /* LATIN CAPITAL LETTER J */
1505 case 0x004B: /* LATIN CAPITAL LETTER K */
1506 case 0x004C: /* LATIN CAPITAL LETTER L */
1507 case 0x004D: /* LATIN CAPITAL LETTER M */
1508 case 0x004E: /* LATIN CAPITAL LETTER N */
1509 case 0x004F: /* LATIN CAPITAL LETTER O */
1510 case 0x0050: /* LATIN CAPITAL LETTER P */
1511 case 0x0051: /* LATIN CAPITAL LETTER Q */
1512 case 0x0052: /* LATIN CAPITAL LETTER R */
1513 case 0x0053: /* LATIN CAPITAL LETTER S */
1514 case 0x0054: /* LATIN CAPITAL LETTER T */
1515 case 0x0055: /* LATIN CAPITAL LETTER U */
1516 case 0x0056: /* LATIN CAPITAL LETTER V */
1517 case 0x0057: /* LATIN CAPITAL LETTER W */
1518 case 0x0058: /* LATIN CAPITAL LETTER X */
1519 case 0x0059: /* LATIN CAPITAL LETTER Y */
1520 case 0x005A: /* LATIN CAPITAL LETTER Z */
1521 case 0x00C0: /* LATIN CAPITAL LETTER A WITH GRAVE */
1522 case 0x00C1: /* LATIN CAPITAL LETTER A WITH ACUTE */
1523 case 0x00C2: /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */
1524 case 0x00C3: /* LATIN CAPITAL LETTER A WITH TILDE */
1525 case 0x00C4: /* LATIN CAPITAL LETTER A WITH DIAERESIS */
1526 case 0x00C5: /* LATIN CAPITAL LETTER A WITH RING ABOVE */
1527 case 0x00C6: /* LATIN CAPITAL LETTER AE */
1528 case 0x00C7: /* LATIN CAPITAL LETTER C WITH CEDILLA */
1529 case 0x00C8: /* LATIN CAPITAL LETTER E WITH GRAVE */
1530 case 0x00C9: /* LATIN CAPITAL LETTER E WITH ACUTE */
1531 case 0x00CA: /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX */
1532 case 0x00CB: /* LATIN CAPITAL LETTER E WITH DIAERESIS */
1533 case 0x00CC: /* LATIN CAPITAL LETTER I WITH GRAVE */
1534 case 0x00CD: /* LATIN CAPITAL LETTER I WITH ACUTE */
1535 case 0x00CE: /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */
1536 case 0x00CF: /* LATIN CAPITAL LETTER I WITH DIAERESIS */
1537 case 0x00D0: /* LATIN CAPITAL LETTER ETH */
1538 case 0x00D1: /* LATIN CAPITAL LETTER N WITH TILDE */
1539 case 0x00D2: /* LATIN CAPITAL LETTER O WITH GRAVE */
1540 case 0x00D3: /* LATIN CAPITAL LETTER O WITH ACUTE */
1541 case 0x00D4: /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */
1542 case 0x00D5: /* LATIN CAPITAL LETTER O WITH TILDE */
1543 case 0x00D6: /* LATIN CAPITAL LETTER O WITH DIAERESIS */
1544 case 0x00D8: /* LATIN CAPITAL LETTER O WITH STROKE */
1545 case 0x00D9: /* LATIN CAPITAL LETTER U WITH GRAVE */
1546 case 0x00DA: /* LATIN CAPITAL LETTER U WITH ACUTE */
1547 case 0x00DB: /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX */
1548 case 0x00DC: /* LATIN CAPITAL LETTER U WITH DIAERESIS */
1549 case 0x00DD: /* LATIN CAPITAL LETTER Y WITH ACUTE */
1550 case 0x00DE: /* LATIN CAPITAL LETTER THORN */
1551 case 0x0100: /* LATIN CAPITAL LETTER A WITH MACRON */
1552 case 0x0102: /* LATIN CAPITAL LETTER A WITH BREVE */
1553 case 0x0104: /* LATIN CAPITAL LETTER A WITH OGONEK */
1554 case 0x0106: /* LATIN CAPITAL LETTER C WITH ACUTE */
1555 case 0x0108: /* LATIN CAPITAL LETTER C WITH CIRCUMFLEX */
1556 case 0x010A: /* LATIN CAPITAL LETTER C WITH DOT ABOVE */
1557 case 0x010C: /* LATIN CAPITAL LETTER C WITH CARON */
1558 case 0x010E: /* LATIN CAPITAL LETTER D WITH CARON */
1559 case 0x0110: /* LATIN CAPITAL LETTER D WITH STROKE */
1560 case 0x0112: /* LATIN CAPITAL LETTER E WITH MACRON */
1561 case 0x0114: /* LATIN CAPITAL LETTER E WITH BREVE */
1562 case 0x0116: /* LATIN CAPITAL LETTER E WITH DOT ABOVE */
1563 case 0x0118: /* LATIN CAPITAL LETTER E WITH OGONEK */
1564 case 0x011A: /* LATIN CAPITAL LETTER E WITH CARON */
1565 case 0x011C: /* LATIN CAPITAL LETTER G WITH CIRCUMFLEX */
1566 case 0x011E: /* LATIN CAPITAL LETTER G WITH BREVE */
1567 case 0x0120: /* LATIN CAPITAL LETTER G WITH DOT ABOVE */
1568 case 0x0122: /* LATIN CAPITAL LETTER G WITH CEDILLA */
1569 case 0x0124: /* LATIN CAPITAL LETTER H WITH CIRCUMFLEX */
1570 case 0x0126: /* LATIN CAPITAL LETTER H WITH STROKE */
1571 case 0x0128: /* LATIN CAPITAL LETTER I WITH TILDE */
1572 case 0x012A: /* LATIN CAPITAL LETTER I WITH MACRON */
1573 case 0x012C: /* LATIN CAPITAL LETTER I WITH BREVE */
1574 case 0x012E: /* LATIN CAPITAL LETTER I WITH OGONEK */
1575 case 0x0130: /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
1576 case 0x0132: /* LATIN CAPITAL LIGATURE IJ */
1577 case 0x0134: /* LATIN CAPITAL LETTER J WITH CIRCUMFLEX */
1578 case 0x0136: /* LATIN CAPITAL LETTER K WITH CEDILLA */
1579 case 0x0139: /* LATIN CAPITAL LETTER L WITH ACUTE */
1580 case 0x013B: /* LATIN CAPITAL LETTER L WITH CEDILLA */
1581 case 0x013D: /* LATIN CAPITAL LETTER L WITH CARON */
1582 case 0x013F: /* LATIN CAPITAL LETTER L WITH MIDDLE DOT */
1583 case 0x0141: /* LATIN CAPITAL LETTER L WITH STROKE */
1584 case 0x0143: /* LATIN CAPITAL LETTER N WITH ACUTE */
1585 case 0x0145: /* LATIN CAPITAL LETTER N WITH CEDILLA */
1586 case 0x0147: /* LATIN CAPITAL LETTER N WITH CARON */
1587 case 0x014A: /* LATIN CAPITAL LETTER ENG */
1588 case 0x014C: /* LATIN CAPITAL LETTER O WITH MACRON */
1589 case 0x014E: /* LATIN CAPITAL LETTER O WITH BREVE */
1590 case 0x0150: /* LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */
1591 case 0x0152: /* LATIN CAPITAL LIGATURE OE */
1592 case 0x0154: /* LATIN CAPITAL LETTER R WITH ACUTE */
1593 case 0x0156: /* LATIN CAPITAL LETTER R WITH CEDILLA */
1594 case 0x0158: /* LATIN CAPITAL LETTER R WITH CARON */
1595 case 0x015A: /* LATIN CAPITAL LETTER S WITH ACUTE */
1596 case 0x015C: /* LATIN CAPITAL LETTER S WITH CIRCUMFLEX */
1597 case 0x015E: /* LATIN CAPITAL LETTER S WITH CEDILLA */
1598 case 0x0160: /* LATIN CAPITAL LETTER S WITH CARON */
1599 case 0x0162: /* LATIN CAPITAL LETTER T WITH CEDILLA */
1600 case 0x0164: /* LATIN CAPITAL LETTER T WITH CARON */
1601 case 0x0166: /* LATIN CAPITAL LETTER T WITH STROKE */
1602 case 0x0168: /* LATIN CAPITAL LETTER U WITH TILDE */
1603 case 0x016A: /* LATIN CAPITAL LETTER U WITH MACRON */
1604 case 0x016C: /* LATIN CAPITAL LETTER U WITH BREVE */
1605 case 0x016E: /* LATIN CAPITAL LETTER U WITH RING ABOVE */
1606 case 0x0170: /* LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */
1607 case 0x0172: /* LATIN CAPITAL LETTER U WITH OGONEK */
1608 case 0x0174: /* LATIN CAPITAL LETTER W WITH CIRCUMFLEX */
1609 case 0x0176: /* LATIN CAPITAL LETTER Y WITH CIRCUMFLEX */
1610 case 0x0178: /* LATIN CAPITAL LETTER Y WITH DIAERESIS */
1611 case 0x0179: /* LATIN CAPITAL LETTER Z WITH ACUTE */
1612 case 0x017B: /* LATIN CAPITAL LETTER Z WITH DOT ABOVE */
1613 case 0x017D: /* LATIN CAPITAL LETTER Z WITH CARON */
1614 case 0x0181: /* LATIN CAPITAL LETTER B WITH HOOK */
1615 case 0x0182: /* LATIN CAPITAL LETTER B WITH TOPBAR */
1616 case 0x0184: /* LATIN CAPITAL LETTER TONE SIX */
1617 case 0x0186: /* LATIN CAPITAL LETTER OPEN O */
1618 case 0x0187: /* LATIN CAPITAL LETTER C WITH HOOK */
1619 case 0x0189: /* LATIN CAPITAL LETTER AFRICAN D */
1620 case 0x018A: /* LATIN CAPITAL LETTER D WITH HOOK */
1621 case 0x018B: /* LATIN CAPITAL LETTER D WITH TOPBAR */
1622 case 0x018E: /* LATIN CAPITAL LETTER REVERSED E */
1623 case 0x018F: /* LATIN CAPITAL LETTER SCHWA */
1624 case 0x0190: /* LATIN CAPITAL LETTER OPEN E */
1625 case 0x0191: /* LATIN CAPITAL LETTER F WITH HOOK */
1626 case 0x0193: /* LATIN CAPITAL LETTER G WITH HOOK */
1627 case 0x0194: /* LATIN CAPITAL LETTER GAMMA */
1628 case 0x0196: /* LATIN CAPITAL LETTER IOTA */
1629 case 0x0197: /* LATIN CAPITAL LETTER I WITH STROKE */
1630 case 0x0198: /* LATIN CAPITAL LETTER K WITH HOOK */
1631 case 0x019C: /* LATIN CAPITAL LETTER TURNED M */
1632 case 0x019D: /* LATIN CAPITAL LETTER N WITH LEFT HOOK */
1633 case 0x019F: /* LATIN CAPITAL LETTER O WITH MIDDLE TILDE */
1634 case 0x01A0: /* LATIN CAPITAL LETTER O WITH HORN */
1635 case 0x01A2: /* LATIN CAPITAL LETTER OI */
1636 case 0x01A4: /* LATIN CAPITAL LETTER P WITH HOOK */
1637 case 0x01A6: /* LATIN LETTER YR */
1638 case 0x01A7: /* LATIN CAPITAL LETTER TONE TWO */
1639 case 0x01A9: /* LATIN CAPITAL LETTER ESH */
1640 case 0x01AC: /* LATIN CAPITAL LETTER T WITH HOOK */
1641 case 0x01AE: /* LATIN CAPITAL LETTER T WITH RETROFLEX HOOK */
1642 case 0x01AF: /* LATIN CAPITAL LETTER U WITH HORN */
1643 case 0x01B1: /* LATIN CAPITAL LETTER UPSILON */
1644 case 0x01B2: /* LATIN CAPITAL LETTER V WITH HOOK */
1645 case 0x01B3: /* LATIN CAPITAL LETTER Y WITH HOOK */
1646 case 0x01B5: /* LATIN CAPITAL LETTER Z WITH STROKE */
1647 case 0x01B7: /* LATIN CAPITAL LETTER EZH */
1648 case 0x01B8: /* LATIN CAPITAL LETTER EZH REVERSED */
1649 case 0x01BC: /* LATIN CAPITAL LETTER TONE FIVE */
1650 case 0x01C4: /* LATIN CAPITAL LETTER DZ WITH CARON */
1651 case 0x01C7: /* LATIN CAPITAL LETTER LJ */
1652 case 0x01CA: /* LATIN CAPITAL LETTER NJ */
1653 case 0x01CD: /* LATIN CAPITAL LETTER A WITH CARON */
1654 case 0x01CF: /* LATIN CAPITAL LETTER I WITH CARON */
1655 case 0x01D1: /* LATIN CAPITAL LETTER O WITH CARON */
1656 case 0x01D3: /* LATIN CAPITAL LETTER U WITH CARON */
1657 case 0x01D5: /* LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON */
1658 case 0x01D7: /* LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE */
1659 case 0x01D9: /* LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON */
1660 case 0x01DB: /* LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE */
1661 case 0x01DE: /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
1662 case 0x01E0: /* LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON */
1663 case 0x01E2: /* LATIN CAPITAL LETTER AE WITH MACRON */
1664 case 0x01E4: /* LATIN CAPITAL LETTER G WITH STROKE */
1665 case 0x01E6: /* LATIN CAPITAL LETTER G WITH CARON */
1666 case 0x01E8: /* LATIN CAPITAL LETTER K WITH CARON */
1667 case 0x01EA: /* LATIN CAPITAL LETTER O WITH OGONEK */
1668 case 0x01EC: /* LATIN CAPITAL LETTER O WITH OGONEK AND MACRON */
1669 case 0x01EE: /* LATIN CAPITAL LETTER EZH WITH CARON */
1670 case 0x01F1: /* LATIN CAPITAL LETTER DZ */
1671 case 0x01F4: /* LATIN CAPITAL LETTER G WITH ACUTE */
1672 case 0x01F6: /* LATIN CAPITAL LETTER HWAIR */
1673 case 0x01F7: /* LATIN CAPITAL LETTER WYNN */
1674 case 0x01F8: /* LATIN CAPITAL LETTER N WITH GRAVE */
1675 case 0x01FA: /* LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE */
1676 case 0x01FC: /* LATIN CAPITAL LETTER AE WITH ACUTE */
1677 case 0x01FE: /* LATIN CAPITAL LETTER O WITH STROKE AND ACUTE */
1678 case 0x0200: /* LATIN CAPITAL LETTER A WITH DOUBLE GRAVE */
1679 case 0x0202: /* LATIN CAPITAL LETTER A WITH INVERTED BREVE */
1680 case 0x0204: /* LATIN CAPITAL LETTER E WITH DOUBLE GRAVE */
1681 case 0x0206: /* LATIN CAPITAL LETTER E WITH INVERTED BREVE */
1682 case 0x0208: /* LATIN CAPITAL LETTER I WITH DOUBLE GRAVE */
1683 case 0x020A: /* LATIN CAPITAL LETTER I WITH INVERTED BREVE */
1684 case 0x020C: /* LATIN CAPITAL LETTER O WITH DOUBLE GRAVE */
1685 case 0x020E: /* LATIN CAPITAL LETTER O WITH INVERTED BREVE */
1686 case 0x0210: /* LATIN CAPITAL LETTER R WITH DOUBLE GRAVE */
1687 case 0x0212: /* LATIN CAPITAL LETTER R WITH INVERTED BREVE */
1688 case 0x0214: /* LATIN CAPITAL LETTER U WITH DOUBLE GRAVE */
1689 case 0x0216: /* LATIN CAPITAL LETTER U WITH INVERTED BREVE */
1690 case 0x0218: /* LATIN CAPITAL LETTER S WITH COMMA BELOW */
1691 case 0x021A: /* LATIN CAPITAL LETTER T WITH COMMA BELOW */
1692 case 0x021C: /* LATIN CAPITAL LETTER YOGH */
1693 case 0x021E: /* LATIN CAPITAL LETTER H WITH CARON */
1694 case 0x0222: /* LATIN CAPITAL LETTER OU */
1695 case 0x0224: /* LATIN CAPITAL LETTER Z WITH HOOK */
1696 case 0x0226: /* LATIN CAPITAL LETTER A WITH DOT ABOVE */
1697 case 0x0228: /* LATIN CAPITAL LETTER E WITH CEDILLA */
1698 case 0x022A: /* LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON */
1699 case 0x022C: /* LATIN CAPITAL LETTER O WITH TILDE AND MACRON */
1700 case 0x022E: /* LATIN CAPITAL LETTER O WITH DOT ABOVE */
1701 case 0x0230: /* LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON */
1702 case 0x0232: /* LATIN CAPITAL LETTER Y WITH MACRON */
1703 case 0x0386: /* GREEK CAPITAL LETTER ALPHA WITH TONOS */
1704 case 0x0388: /* GREEK CAPITAL LETTER EPSILON WITH TONOS */
1705 case 0x0389: /* GREEK CAPITAL LETTER ETA WITH TONOS */
1706 case 0x038A: /* GREEK CAPITAL LETTER IOTA WITH TONOS */
1707 case 0x038C: /* GREEK CAPITAL LETTER OMICRON WITH TONOS */
1708 case 0x038E: /* GREEK CAPITAL LETTER UPSILON WITH TONOS */
1709 case 0x038F: /* GREEK CAPITAL LETTER OMEGA WITH TONOS */
1710 case 0x0391: /* GREEK CAPITAL LETTER ALPHA */
1711 case 0x0392: /* GREEK CAPITAL LETTER BETA */
1712 case 0x0393: /* GREEK CAPITAL LETTER GAMMA */
1713 case 0x0394: /* GREEK CAPITAL LETTER DELTA */
1714 case 0x0395: /* GREEK CAPITAL LETTER EPSILON */
1715 case 0x0396: /* GREEK CAPITAL LETTER ZETA */
1716 case 0x0397: /* GREEK CAPITAL LETTER ETA */
1717 case 0x0398: /* GREEK CAPITAL LETTER THETA */
1718 case 0x0399: /* GREEK CAPITAL LETTER IOTA */
1719 case 0x039A: /* GREEK CAPITAL LETTER KAPPA */
1720 case 0x039B: /* GREEK CAPITAL LETTER LAMDA */
1721 case 0x039C: /* GREEK CAPITAL LETTER MU */
1722 case 0x039D: /* GREEK CAPITAL LETTER NU */
1723 case 0x039E: /* GREEK CAPITAL LETTER XI */
1724 case 0x039F: /* GREEK CAPITAL LETTER OMICRON */
1725 case 0x03A0: /* GREEK CAPITAL LETTER PI */
1726 case 0x03A1: /* GREEK CAPITAL LETTER RHO */
1727 case 0x03A3: /* GREEK CAPITAL LETTER SIGMA */
1728 case 0x03A4: /* GREEK CAPITAL LETTER TAU */
1729 case 0x03A5: /* GREEK CAPITAL LETTER UPSILON */
1730 case 0x03A6: /* GREEK CAPITAL LETTER PHI */
1731 case 0x03A7: /* GREEK CAPITAL LETTER CHI */
1732 case 0x03A8: /* GREEK CAPITAL LETTER PSI */
1733 case 0x03A9: /* GREEK CAPITAL LETTER OMEGA */
1734 case 0x03AA: /* GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */
1735 case 0x03AB: /* GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */
1736 case 0x03D2: /* GREEK UPSILON WITH HOOK SYMBOL */
1737 case 0x03D3: /* GREEK UPSILON WITH ACUTE AND HOOK SYMBOL */
1738 case 0x03D4: /* GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL */
1739 case 0x03DA: /* GREEK LETTER STIGMA */
1740 case 0x03DC: /* GREEK LETTER DIGAMMA */
1741 case 0x03DE: /* GREEK LETTER KOPPA */
1742 case 0x03E0: /* GREEK LETTER SAMPI */
1743 case 0x03E2: /* COPTIC CAPITAL LETTER SHEI */
1744 case 0x03E4: /* COPTIC CAPITAL LETTER FEI */
1745 case 0x03E6: /* COPTIC CAPITAL LETTER KHEI */
1746 case 0x03E8: /* COPTIC CAPITAL LETTER HORI */
1747 case 0x03EA: /* COPTIC CAPITAL LETTER GANGIA */
1748 case 0x03EC: /* COPTIC CAPITAL LETTER SHIMA */
1749 case 0x03EE: /* COPTIC CAPITAL LETTER DEI */
1750 case 0x0400: /* CYRILLIC CAPITAL LETTER IE WITH GRAVE */
1751 case 0x0401: /* CYRILLIC CAPITAL LETTER IO */
1752 case 0x0402: /* CYRILLIC CAPITAL LETTER DJE */
1753 case 0x0403: /* CYRILLIC CAPITAL LETTER GJE */
1754 case 0x0404: /* CYRILLIC CAPITAL LETTER UKRAINIAN IE */
1755 case 0x0405: /* CYRILLIC CAPITAL LETTER DZE */
1756 case 0x0406: /* CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */
1757 case 0x0407: /* CYRILLIC CAPITAL LETTER YI */
1758 case 0x0408: /* CYRILLIC CAPITAL LETTER JE */
1759 case 0x0409: /* CYRILLIC CAPITAL LETTER LJE */
1760 case 0x040A: /* CYRILLIC CAPITAL LETTER NJE */
1761 case 0x040B: /* CYRILLIC CAPITAL LETTER TSHE */
1762 case 0x040C: /* CYRILLIC CAPITAL LETTER KJE */
1763 case 0x040D: /* CYRILLIC CAPITAL LETTER I WITH GRAVE */
1764 case 0x040E: /* CYRILLIC CAPITAL LETTER SHORT U */
1765 case 0x040F: /* CYRILLIC CAPITAL LETTER DZHE */
1766 case 0x0410: /* CYRILLIC CAPITAL LETTER A */
1767 case 0x0411: /* CYRILLIC CAPITAL LETTER BE */
1768 case 0x0412: /* CYRILLIC CAPITAL LETTER VE */
1769 case 0x0413: /* CYRILLIC CAPITAL LETTER GHE */
1770 case 0x0414: /* CYRILLIC CAPITAL LETTER DE */
1771 case 0x0415: /* CYRILLIC CAPITAL LETTER IE */
1772 case 0x0416: /* CYRILLIC CAPITAL LETTER ZHE */
1773 case 0x0417: /* CYRILLIC CAPITAL LETTER ZE */
1774 case 0x0418: /* CYRILLIC CAPITAL LETTER I */
1775 case 0x0419: /* CYRILLIC CAPITAL LETTER SHORT I */
1776 case 0x041A: /* CYRILLIC CAPITAL LETTER KA */
1777 case 0x041B: /* CYRILLIC CAPITAL LETTER EL */
1778 case 0x041C: /* CYRILLIC CAPITAL LETTER EM */
1779 case 0x041D: /* CYRILLIC CAPITAL LETTER EN */
1780 case 0x041E: /* CYRILLIC CAPITAL LETTER O */
1781 case 0x041F: /* CYRILLIC CAPITAL LETTER PE */
1782 case 0x0420: /* CYRILLIC CAPITAL LETTER ER */
1783 case 0x0421: /* CYRILLIC CAPITAL LETTER ES */
1784 case 0x0422: /* CYRILLIC CAPITAL LETTER TE */
1785 case 0x0423: /* CYRILLIC CAPITAL LETTER U */
1786 case 0x0424: /* CYRILLIC CAPITAL LETTER EF */
1787 case 0x0425: /* CYRILLIC CAPITAL LETTER HA */
1788 case 0x0426: /* CYRILLIC CAPITAL LETTER TSE */
1789 case 0x0427: /* CYRILLIC CAPITAL LETTER CHE */
1790 case 0x0428: /* CYRILLIC CAPITAL LETTER SHA */
1791 case 0x0429: /* CYRILLIC CAPITAL LETTER SHCHA */
1792 case 0x042A: /* CYRILLIC CAPITAL LETTER HARD SIGN */
1793 case 0x042B: /* CYRILLIC CAPITAL LETTER YERU */
1794 case 0x042C: /* CYRILLIC CAPITAL LETTER SOFT SIGN */
1795 case 0x042D: /* CYRILLIC CAPITAL LETTER E */
1796 case 0x042E: /* CYRILLIC CAPITAL LETTER YU */
1797 case 0x042F: /* CYRILLIC CAPITAL LETTER YA */
1798 case 0x0460: /* CYRILLIC CAPITAL LETTER OMEGA */
1799 case 0x0462: /* CYRILLIC CAPITAL LETTER YAT */
1800 case 0x0464: /* CYRILLIC CAPITAL LETTER IOTIFIED E */
1801 case 0x0466: /* CYRILLIC CAPITAL LETTER LITTLE YUS */
1802 case 0x0468: /* CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS */
1803 case 0x046A: /* CYRILLIC CAPITAL LETTER BIG YUS */
1804 case 0x046C: /* CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS */
1805 case 0x046E: /* CYRILLIC CAPITAL LETTER KSI */
1806 case 0x0470: /* CYRILLIC CAPITAL LETTER PSI */
1807 case 0x0472: /* CYRILLIC CAPITAL LETTER FITA */
1808 case 0x0474: /* CYRILLIC CAPITAL LETTER IZHITSA */
1809 case 0x0476: /* CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT */
1810 case 0x0478: /* CYRILLIC CAPITAL LETTER UK */
1811 case 0x047A: /* CYRILLIC CAPITAL LETTER ROUND OMEGA */
1812 case 0x047C: /* CYRILLIC CAPITAL LETTER OMEGA WITH TITLO */
1813 case 0x047E: /* CYRILLIC CAPITAL LETTER OT */
1814 case 0x0480: /* CYRILLIC CAPITAL LETTER KOPPA */
1815 case 0x048C: /* CYRILLIC CAPITAL LETTER SEMISOFT SIGN */
1816 case 0x048E: /* CYRILLIC CAPITAL LETTER ER WITH TICK */
1817 case 0x0490: /* CYRILLIC CAPITAL LETTER GHE WITH UPTURN */
1818 case 0x0492: /* CYRILLIC CAPITAL LETTER GHE WITH STROKE */
1819 case 0x0494: /* CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK */
1820 case 0x0496: /* CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER */
1821 case 0x0498: /* CYRILLIC CAPITAL LETTER ZE WITH DESCENDER */
1822 case 0x049A: /* CYRILLIC CAPITAL LETTER KA WITH DESCENDER */
1823 case 0x049C: /* CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE */
1824 case 0x049E: /* CYRILLIC CAPITAL LETTER KA WITH STROKE */
1825 case 0x04A0: /* CYRILLIC CAPITAL LETTER BASHKIR KA */
1826 case 0x04A2: /* CYRILLIC CAPITAL LETTER EN WITH DESCENDER */
1827 case 0x04A4: /* CYRILLIC CAPITAL LIGATURE EN GHE */
1828 case 0x04A6: /* CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK */
1829 case 0x04A8: /* CYRILLIC CAPITAL LETTER ABKHASIAN HA */
1830 case 0x04AA: /* CYRILLIC CAPITAL LETTER ES WITH DESCENDER */
1831 case 0x04AC: /* CYRILLIC CAPITAL LETTER TE WITH DESCENDER */
1832 case 0x04AE: /* CYRILLIC CAPITAL LETTER STRAIGHT U */
1833 case 0x04B0: /* CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE */
1834 case 0x04B2: /* CYRILLIC CAPITAL LETTER HA WITH DESCENDER */
1835 case 0x04B4: /* CYRILLIC CAPITAL LIGATURE TE TSE */
1836 case 0x04B6: /* CYRILLIC CAPITAL LETTER CHE WITH DESCENDER */
1837 case 0x04B8: /* CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE */
1838 case 0x04BA: /* CYRILLIC CAPITAL LETTER SHHA */
1839 case 0x04BC: /* CYRILLIC CAPITAL LETTER ABKHASIAN CHE */
1840 case 0x04BE: /* CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER */
1841 case 0x04C0: /* CYRILLIC LETTER PALOCHKA */
1842 case 0x04C1: /* CYRILLIC CAPITAL LETTER ZHE WITH BREVE */
1843 case 0x04C3: /* CYRILLIC CAPITAL LETTER KA WITH HOOK */
1844 case 0x04C7: /* CYRILLIC CAPITAL LETTER EN WITH HOOK */
1845 case 0x04CB: /* CYRILLIC CAPITAL LETTER KHAKASSIAN CHE */
1846 case 0x04D0: /* CYRILLIC CAPITAL LETTER A WITH BREVE */
1847 case 0x04D2: /* CYRILLIC CAPITAL LETTER A WITH DIAERESIS */
1848 case 0x04D4: /* CYRILLIC CAPITAL LIGATURE A IE */
1849 case 0x04D6: /* CYRILLIC CAPITAL LETTER IE WITH BREVE */
1850 case 0x04D8: /* CYRILLIC CAPITAL LETTER SCHWA */
1851 case 0x04DA: /* CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS */
1852 case 0x04DC: /* CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS */
1853 case 0x04DE: /* CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS */
1854 case 0x04E0: /* CYRILLIC CAPITAL LETTER ABKHASIAN DZE */
1855 case 0x04E2: /* CYRILLIC CAPITAL LETTER I WITH MACRON */
1856 case 0x04E4: /* CYRILLIC CAPITAL LETTER I WITH DIAERESIS */
1857 case 0x04E6: /* CYRILLIC CAPITAL LETTER O WITH DIAERESIS */
1858 case 0x04E8: /* CYRILLIC CAPITAL LETTER BARRED O */
1859 case 0x04EA: /* CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS */
1860 case 0x04EC: /* CYRILLIC CAPITAL LETTER E WITH DIAERESIS */
1861 case 0x04EE: /* CYRILLIC CAPITAL LETTER U WITH MACRON */
1862 case 0x04F0: /* CYRILLIC CAPITAL LETTER U WITH DIAERESIS */
1863 case 0x04F2: /* CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE */
1864 case 0x04F4: /* CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS */
1865 case 0x04F8: /* CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS */
1866 case 0x0531: /* ARMENIAN CAPITAL LETTER AYB */
1867 case 0x0532: /* ARMENIAN CAPITAL LETTER BEN */
1868 case 0x0533: /* ARMENIAN CAPITAL LETTER GIM */
1869 case 0x0534: /* ARMENIAN CAPITAL LETTER DA */
1870 case 0x0535: /* ARMENIAN CAPITAL LETTER ECH */
1871 case 0x0536: /* ARMENIAN CAPITAL LETTER ZA */
1872 case 0x0537: /* ARMENIAN CAPITAL LETTER EH */
1873 case 0x0538: /* ARMENIAN CAPITAL LETTER ET */
1874 case 0x0539: /* ARMENIAN CAPITAL LETTER TO */
1875 case 0x053A: /* ARMENIAN CAPITAL LETTER ZHE */
1876 case 0x053B: /* ARMENIAN CAPITAL LETTER INI */
1877 case 0x053C: /* ARMENIAN CAPITAL LETTER LIWN */
1878 case 0x053D: /* ARMENIAN CAPITAL LETTER XEH */
1879 case 0x053E: /* ARMENIAN CAPITAL LETTER CA */
1880 case 0x053F: /* ARMENIAN CAPITAL LETTER KEN */
1881 case 0x0540: /* ARMENIAN CAPITAL LETTER HO */
1882 case 0x0541: /* ARMENIAN CAPITAL LETTER JA */
1883 case 0x0542: /* ARMENIAN CAPITAL LETTER GHAD */
1884 case 0x0543: /* ARMENIAN CAPITAL LETTER CHEH */
1885 case 0x0544: /* ARMENIAN CAPITAL LETTER MEN */
1886 case 0x0545: /* ARMENIAN CAPITAL LETTER YI */
1887 case 0x0546: /* ARMENIAN CAPITAL LETTER NOW */
1888 case 0x0547: /* ARMENIAN CAPITAL LETTER SHA */
1889 case 0x0548: /* ARMENIAN CAPITAL LETTER VO */
1890 case 0x0549: /* ARMENIAN CAPITAL LETTER CHA */
1891 case 0x054A: /* ARMENIAN CAPITAL LETTER PEH */
1892 case 0x054B: /* ARMENIAN CAPITAL LETTER JHEH */
1893 case 0x054C: /* ARMENIAN CAPITAL LETTER RA */
1894 case 0x054D: /* ARMENIAN CAPITAL LETTER SEH */
1895 case 0x054E: /* ARMENIAN CAPITAL LETTER VEW */
1896 case 0x054F: /* ARMENIAN CAPITAL LETTER TIWN */
1897 case 0x0550: /* ARMENIAN CAPITAL LETTER REH */
1898 case 0x0551: /* ARMENIAN CAPITAL LETTER CO */
1899 case 0x0552: /* ARMENIAN CAPITAL LETTER YIWN */
1900 case 0x0553: /* ARMENIAN CAPITAL LETTER PIWR */
1901 case 0x0554: /* ARMENIAN CAPITAL LETTER KEH */
1902 case 0x0555: /* ARMENIAN CAPITAL LETTER OH */
1903 case 0x0556: /* ARMENIAN CAPITAL LETTER FEH */
1904 case 0x10A0: /* GEORGIAN CAPITAL LETTER AN */
1905 case 0x10A1: /* GEORGIAN CAPITAL LETTER BAN */
1906 case 0x10A2: /* GEORGIAN CAPITAL LETTER GAN */
1907 case 0x10A3: /* GEORGIAN CAPITAL LETTER DON */
1908 case 0x10A4: /* GEORGIAN CAPITAL LETTER EN */
1909 case 0x10A5: /* GEORGIAN CAPITAL LETTER VIN */
1910 case 0x10A6: /* GEORGIAN CAPITAL LETTER ZEN */
1911 case 0x10A7: /* GEORGIAN CAPITAL LETTER TAN */
1912 case 0x10A8: /* GEORGIAN CAPITAL LETTER IN */
1913 case 0x10A9: /* GEORGIAN CAPITAL LETTER KAN */
1914 case 0x10AA: /* GEORGIAN CAPITAL LETTER LAS */
1915 case 0x10AB: /* GEORGIAN CAPITAL LETTER MAN */
1916 case 0x10AC: /* GEORGIAN CAPITAL LETTER NAR */
1917 case 0x10AD: /* GEORGIAN CAPITAL LETTER ON */
1918 case 0x10AE: /* GEORGIAN CAPITAL LETTER PAR */
1919 case 0x10AF: /* GEORGIAN CAPITAL LETTER ZHAR */
1920 case 0x10B0: /* GEORGIAN CAPITAL LETTER RAE */
1921 case 0x10B1: /* GEORGIAN CAPITAL LETTER SAN */
1922 case 0x10B2: /* GEORGIAN CAPITAL LETTER TAR */
1923 case 0x10B3: /* GEORGIAN CAPITAL LETTER UN */
1924 case 0x10B4: /* GEORGIAN CAPITAL LETTER PHAR */
1925 case 0x10B5: /* GEORGIAN CAPITAL LETTER KHAR */
1926 case 0x10B6: /* GEORGIAN CAPITAL LETTER GHAN */
1927 case 0x10B7: /* GEORGIAN CAPITAL LETTER QAR */
1928 case 0x10B8: /* GEORGIAN CAPITAL LETTER SHIN */
1929 case 0x10B9: /* GEORGIAN CAPITAL LETTER CHIN */
1930 case 0x10BA: /* GEORGIAN CAPITAL LETTER CAN */
1931 case 0x10BB: /* GEORGIAN CAPITAL LETTER JIL */
1932 case 0x10BC: /* GEORGIAN CAPITAL LETTER CIL */
1933 case 0x10BD: /* GEORGIAN CAPITAL LETTER CHAR */
1934 case 0x10BE: /* GEORGIAN CAPITAL LETTER XAN */
1935 case 0x10BF: /* GEORGIAN CAPITAL LETTER JHAN */
1936 case 0x10C0: /* GEORGIAN CAPITAL LETTER HAE */
1937 case 0x10C1: /* GEORGIAN CAPITAL LETTER HE */
1938 case 0x10C2: /* GEORGIAN CAPITAL LETTER HIE */
1939 case 0x10C3: /* GEORGIAN CAPITAL LETTER WE */
1940 case 0x10C4: /* GEORGIAN CAPITAL LETTER HAR */
1941 case 0x10C5: /* GEORGIAN CAPITAL LETTER HOE */
1942 case 0x1E00: /* LATIN CAPITAL LETTER A WITH RING BELOW */
1943 case 0x1E02: /* LATIN CAPITAL LETTER B WITH DOT ABOVE */
1944 case 0x1E04: /* LATIN CAPITAL LETTER B WITH DOT BELOW */
1945 case 0x1E06: /* LATIN CAPITAL LETTER B WITH LINE BELOW */
1946 case 0x1E08: /* LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE */
1947 case 0x1E0A: /* LATIN CAPITAL LETTER D WITH DOT ABOVE */
1948 case 0x1E0C: /* LATIN CAPITAL LETTER D WITH DOT BELOW */
1949 case 0x1E0E: /* LATIN CAPITAL LETTER D WITH LINE BELOW */
1950 case 0x1E10: /* LATIN CAPITAL LETTER D WITH CEDILLA */
1951 case 0x1E12: /* LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW */
1952 case 0x1E14: /* LATIN CAPITAL LETTER E WITH MACRON AND GRAVE */
1953 case 0x1E16: /* LATIN CAPITAL LETTER E WITH MACRON AND ACUTE */
1954 case 0x1E18: /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW */
1955 case 0x1E1A: /* LATIN CAPITAL LETTER E WITH TILDE BELOW */
1956 case 0x1E1C: /* LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE */
1957 case 0x1E1E: /* LATIN CAPITAL LETTER F WITH DOT ABOVE */
1958 case 0x1E20: /* LATIN CAPITAL LETTER G WITH MACRON */
1959 case 0x1E22: /* LATIN CAPITAL LETTER H WITH DOT ABOVE */
1960 case 0x1E24: /* LATIN CAPITAL LETTER H WITH DOT BELOW */
1961 case 0x1E26: /* LATIN CAPITAL LETTER H WITH DIAERESIS */
1962 case 0x1E28: /* LATIN CAPITAL LETTER H WITH CEDILLA */
1963 case 0x1E2A: /* LATIN CAPITAL LETTER H WITH BREVE BELOW */
1964 case 0x1E2C: /* LATIN CAPITAL LETTER I WITH TILDE BELOW */
1965 case 0x1E2E: /* LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE */
1966 case 0x1E30: /* LATIN CAPITAL LETTER K WITH ACUTE */
1967 case 0x1E32: /* LATIN CAPITAL LETTER K WITH DOT BELOW */
1968 case 0x1E34: /* LATIN CAPITAL LETTER K WITH LINE BELOW */
1969 case 0x1E36: /* LATIN CAPITAL LETTER L WITH DOT BELOW */
1970 case 0x1E38: /* LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON */
1971 case 0x1E3A: /* LATIN CAPITAL LETTER L WITH LINE BELOW */
1972 case 0x1E3C: /* LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW */
1973 case 0x1E3E: /* LATIN CAPITAL LETTER M WITH ACUTE */
1974 case 0x1E40: /* LATIN CAPITAL LETTER M WITH DOT ABOVE */
1975 case 0x1E42: /* LATIN CAPITAL LETTER M WITH DOT BELOW */
1976 case 0x1E44: /* LATIN CAPITAL LETTER N WITH DOT ABOVE */
1977 case 0x1E46: /* LATIN CAPITAL LETTER N WITH DOT BELOW */
1978 case 0x1E48: /* LATIN CAPITAL LETTER N WITH LINE BELOW */
1979 case 0x1E4A: /* LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW */
1980 case 0x1E4C: /* LATIN CAPITAL LETTER O WITH TILDE AND ACUTE */
1981 case 0x1E4E: /* LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS */
1982 case 0x1E50: /* LATIN CAPITAL LETTER O WITH MACRON AND GRAVE */
1983 case 0x1E52: /* LATIN CAPITAL LETTER O WITH MACRON AND ACUTE */
1984 case 0x1E54: /* LATIN CAPITAL LETTER P WITH ACUTE */
1985 case 0x1E56: /* LATIN CAPITAL LETTER P WITH DOT ABOVE */
1986 case 0x1E58: /* LATIN CAPITAL LETTER R WITH DOT ABOVE */
1987 case 0x1E5A: /* LATIN CAPITAL LETTER R WITH DOT BELOW */
1988 case 0x1E5C: /* LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON */
1989 case 0x1E5E: /* LATIN CAPITAL LETTER R WITH LINE BELOW */
1990 case 0x1E60: /* LATIN CAPITAL LETTER S WITH DOT ABOVE */
1991 case 0x1E62: /* LATIN CAPITAL LETTER S WITH DOT BELOW */
1992 case 0x1E64: /* LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE */
1993 case 0x1E66: /* LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE */
1994 case 0x1E68: /* LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE */
1995 case 0x1E6A: /* LATIN CAPITAL LETTER T WITH DOT ABOVE */
1996 case 0x1E6C: /* LATIN CAPITAL LETTER T WITH DOT BELOW */
1997 case 0x1E6E: /* LATIN CAPITAL LETTER T WITH LINE BELOW */
1998 case 0x1E70: /* LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW */
1999 case 0x1E72: /* LATIN CAPITAL LETTER U WITH DIAERESIS BELOW */
2000 case 0x1E74: /* LATIN CAPITAL LETTER U WITH TILDE BELOW */
2001 case 0x1E76: /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW */
2002 case 0x1E78: /* LATIN CAPITAL LETTER U WITH TILDE AND ACUTE */
2003 case 0x1E7A: /* LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS */
2004 case 0x1E7C: /* LATIN CAPITAL LETTER V WITH TILDE */
2005 case 0x1E7E: /* LATIN CAPITAL LETTER V WITH DOT BELOW */
2006 case 0x1E80: /* LATIN CAPITAL LETTER W WITH GRAVE */
2007 case 0x1E82: /* LATIN CAPITAL LETTER W WITH ACUTE */
2008 case 0x1E84: /* LATIN CAPITAL LETTER W WITH DIAERESIS */
2009 case 0x1E86: /* LATIN CAPITAL LETTER W WITH DOT ABOVE */
2010 case 0x1E88: /* LATIN CAPITAL LETTER W WITH DOT BELOW */
2011 case 0x1E8A: /* LATIN CAPITAL LETTER X WITH DOT ABOVE */
2012 case 0x1E8C: /* LATIN CAPITAL LETTER X WITH DIAERESIS */
2013 case 0x1E8E: /* LATIN CAPITAL LETTER Y WITH DOT ABOVE */
2014 case 0x1E90: /* LATIN CAPITAL LETTER Z WITH CIRCUMFLEX */
2015 case 0x1E92: /* LATIN CAPITAL LETTER Z WITH DOT BELOW */
2016 case 0x1E94: /* LATIN CAPITAL LETTER Z WITH LINE BELOW */
2017 case 0x1EA0: /* LATIN CAPITAL LETTER A WITH DOT BELOW */
2018 case 0x1EA2: /* LATIN CAPITAL LETTER A WITH HOOK ABOVE */
2019 case 0x1EA4: /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE */
2020 case 0x1EA6: /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE */
2021 case 0x1EA8: /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */
2022 case 0x1EAA: /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE */
2023 case 0x1EAC: /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW */
2024 case 0x1EAE: /* LATIN CAPITAL LETTER A WITH BREVE AND ACUTE */
2025 case 0x1EB0: /* LATIN CAPITAL LETTER A WITH BREVE AND GRAVE */
2026 case 0x1EB2: /* LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE */
2027 case 0x1EB4: /* LATIN CAPITAL LETTER A WITH BREVE AND TILDE */
2028 case 0x1EB6: /* LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW */
2029 case 0x1EB8: /* LATIN CAPITAL LETTER E WITH DOT BELOW */
2030 case 0x1EBA: /* LATIN CAPITAL LETTER E WITH HOOK ABOVE */
2031 case 0x1EBC: /* LATIN CAPITAL LETTER E WITH TILDE */
2032 case 0x1EBE: /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE */
2033 case 0x1EC0: /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE */
2034 case 0x1EC2: /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */
2035 case 0x1EC4: /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE */
2036 case 0x1EC6: /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW */
2037 case 0x1EC8: /* LATIN CAPITAL LETTER I WITH HOOK ABOVE */
2038 case 0x1ECA: /* LATIN CAPITAL LETTER I WITH DOT BELOW */
2039 case 0x1ECC: /* LATIN CAPITAL LETTER O WITH DOT BELOW */
2040 case 0x1ECE: /* LATIN CAPITAL LETTER O WITH HOOK ABOVE */
2041 case 0x1ED0: /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE */
2042 case 0x1ED2: /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE */
2043 case 0x1ED4: /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */
2044 case 0x1ED6: /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE */
2045 case 0x1ED8: /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW */
2046 case 0x1EDA: /* LATIN CAPITAL LETTER O WITH HORN AND ACUTE */
2047 case 0x1EDC: /* LATIN CAPITAL LETTER O WITH HORN AND GRAVE */
2048 case 0x1EDE: /* LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE */
2049 case 0x1EE0: /* LATIN CAPITAL LETTER O WITH HORN AND TILDE */
2050 case 0x1EE2: /* LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW */
2051 case 0x1EE4: /* LATIN CAPITAL LETTER U WITH DOT BELOW */
2052 case 0x1EE6: /* LATIN CAPITAL LETTER U WITH HOOK ABOVE */
2053 case 0x1EE8: /* LATIN CAPITAL LETTER U WITH HORN AND ACUTE */
2054 case 0x1EEA: /* LATIN CAPITAL LETTER U WITH HORN AND GRAVE */
2055 case 0x1EEC: /* LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE */
2056 case 0x1EEE: /* LATIN CAPITAL LETTER U WITH HORN AND TILDE */
2057 case 0x1EF0: /* LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW */
2058 case 0x1EF2: /* LATIN CAPITAL LETTER Y WITH GRAVE */
2059 case 0x1EF4: /* LATIN CAPITAL LETTER Y WITH DOT BELOW */
2060 case 0x1EF6: /* LATIN CAPITAL LETTER Y WITH HOOK ABOVE */
2061 case 0x1EF8: /* LATIN CAPITAL LETTER Y WITH TILDE */
2062 case 0x1F08: /* GREEK CAPITAL LETTER ALPHA WITH PSILI */
2063 case 0x1F09: /* GREEK CAPITAL LETTER ALPHA WITH DASIA */
2064 case 0x1F0A: /* GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA */
2065 case 0x1F0B: /* GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA */
2066 case 0x1F0C: /* GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA */
2067 case 0x1F0D: /* GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA */
2068 case 0x1F0E: /* GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI */
2069 case 0x1F0F: /* GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI */
2070 case 0x1F18: /* GREEK CAPITAL LETTER EPSILON WITH PSILI */
2071 case 0x1F19: /* GREEK CAPITAL LETTER EPSILON WITH DASIA */
2072 case 0x1F1A: /* GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA */
2073 case 0x1F1B: /* GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA */
2074 case 0x1F1C: /* GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA */
2075 case 0x1F1D: /* GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA */
2076 case 0x1F28: /* GREEK CAPITAL LETTER ETA WITH PSILI */
2077 case 0x1F29: /* GREEK CAPITAL LETTER ETA WITH DASIA */
2078 case 0x1F2A: /* GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA */
2079 case 0x1F2B: /* GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA */
2080 case 0x1F2C: /* GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA */
2081 case 0x1F2D: /* GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA */
2082 case 0x1F2E: /* GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI */
2083 case 0x1F2F: /* GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI */
2084 case 0x1F38: /* GREEK CAPITAL LETTER IOTA WITH PSILI */
2085 case 0x1F39: /* GREEK CAPITAL LETTER IOTA WITH DASIA */
2086 case 0x1F3A: /* GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA */
2087 case 0x1F3B: /* GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA */
2088 case 0x1F3C: /* GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA */
2089 case 0x1F3D: /* GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA */
2090 case 0x1F3E: /* GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI */
2091 case 0x1F3F: /* GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI */
2092 case 0x1F48: /* GREEK CAPITAL LETTER OMICRON WITH PSILI */
2093 case 0x1F49: /* GREEK CAPITAL LETTER OMICRON WITH DASIA */
2094 case 0x1F4A: /* GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA */
2095 case 0x1F4B: /* GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA */
2096 case 0x1F4C: /* GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA */
2097 case 0x1F4D: /* GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA */
2098 case 0x1F59: /* GREEK CAPITAL LETTER UPSILON WITH DASIA */
2099 case 0x1F5B: /* GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA */
2100 case 0x1F5D: /* GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA */
2101 case 0x1F5F: /* GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI */
2102 case 0x1F68: /* GREEK CAPITAL LETTER OMEGA WITH PSILI */
2103 case 0x1F69: /* GREEK CAPITAL LETTER OMEGA WITH DASIA */
2104 case 0x1F6A: /* GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA */
2105 case 0x1F6B: /* GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA */
2106 case 0x1F6C: /* GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA */
2107 case 0x1F6D: /* GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA */
2108 case 0x1F6E: /* GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI */
2109 case 0x1F6F: /* GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI */
2110 case 0x1FB8: /* GREEK CAPITAL LETTER ALPHA WITH VRACHY */
2111 case 0x1FB9: /* GREEK CAPITAL LETTER ALPHA WITH MACRON */
2112 case 0x1FBA: /* GREEK CAPITAL LETTER ALPHA WITH VARIA */
2113 case 0x1FBB: /* GREEK CAPITAL LETTER ALPHA WITH OXIA */
2114 case 0x1FC8: /* GREEK CAPITAL LETTER EPSILON WITH VARIA */
2115 case 0x1FC9: /* GREEK CAPITAL LETTER EPSILON WITH OXIA */
2116 case 0x1FCA: /* GREEK CAPITAL LETTER ETA WITH VARIA */
2117 case 0x1FCB: /* GREEK CAPITAL LETTER ETA WITH OXIA */
2118 case 0x1FD8: /* GREEK CAPITAL LETTER IOTA WITH VRACHY */
2119 case 0x1FD9: /* GREEK CAPITAL LETTER IOTA WITH MACRON */
2120 case 0x1FDA: /* GREEK CAPITAL LETTER IOTA WITH VARIA */
2121 case 0x1FDB: /* GREEK CAPITAL LETTER IOTA WITH OXIA */
2122 case 0x1FE8: /* GREEK CAPITAL LETTER UPSILON WITH VRACHY */
2123 case 0x1FE9: /* GREEK CAPITAL LETTER UPSILON WITH MACRON */
2124 case 0x1FEA: /* GREEK CAPITAL LETTER UPSILON WITH VARIA */
2125 case 0x1FEB: /* GREEK CAPITAL LETTER UPSILON WITH OXIA */
2126 case 0x1FEC: /* GREEK CAPITAL LETTER RHO WITH DASIA */
2127 case 0x1FF8: /* GREEK CAPITAL LETTER OMICRON WITH VARIA */
2128 case 0x1FF9: /* GREEK CAPITAL LETTER OMICRON WITH OXIA */
2129 case 0x1FFA: /* GREEK CAPITAL LETTER OMEGA WITH VARIA */
2130 case 0x1FFB: /* GREEK CAPITAL LETTER OMEGA WITH OXIA */
2131 case 0x2102: /* DOUBLE-STRUCK CAPITAL C */
2132 case 0x2107: /* EULER CONSTANT */
2133 case 0x210B: /* SCRIPT CAPITAL H */
2134 case 0x210C: /* BLACK-LETTER CAPITAL H */
2135 case 0x210D: /* DOUBLE-STRUCK CAPITAL H */
2136 case 0x2110: /* SCRIPT CAPITAL I */
2137 case 0x2111: /* BLACK-LETTER CAPITAL I */
2138 case 0x2112: /* SCRIPT CAPITAL L */
2139 case 0x2115: /* DOUBLE-STRUCK CAPITAL N */
2140 case 0x2119: /* DOUBLE-STRUCK CAPITAL P */
2141 case 0x211A: /* DOUBLE-STRUCK CAPITAL Q */
2142 case 0x211B: /* SCRIPT CAPITAL R */
2143 case 0x211C: /* BLACK-LETTER CAPITAL R */
2144 case 0x211D: /* DOUBLE-STRUCK CAPITAL R */
2145 case 0x2124: /* DOUBLE-STRUCK CAPITAL Z */
2146 case 0x2126: /* OHM SIGN */
2147 case 0x2128: /* BLACK-LETTER CAPITAL Z */
2148 case 0x212A: /* KELVIN SIGN */
2149 case 0x212B: /* ANGSTROM SIGN */
2150 case 0x212C: /* SCRIPT CAPITAL B */
2151 case 0x212D: /* BLACK-LETTER CAPITAL C */
2152 case 0x2130: /* SCRIPT CAPITAL E */
2153 case 0x2131: /* SCRIPT CAPITAL F */
2154 case 0x2133: /* SCRIPT CAPITAL M */
2155 case 0xFF21: /* FULLWIDTH LATIN CAPITAL LETTER A */
2156 case 0xFF22: /* FULLWIDTH LATIN CAPITAL LETTER B */
2157 case 0xFF23: /* FULLWIDTH LATIN CAPITAL LETTER C */
2158 case 0xFF24: /* FULLWIDTH LATIN CAPITAL LETTER D */
2159 case 0xFF25: /* FULLWIDTH LATIN CAPITAL LETTER E */
2160 case 0xFF26: /* FULLWIDTH LATIN CAPITAL LETTER F */
2161 case 0xFF27: /* FULLWIDTH LATIN CAPITAL LETTER G */
2162 case 0xFF28: /* FULLWIDTH LATIN CAPITAL LETTER H */
2163 case 0xFF29: /* FULLWIDTH LATIN CAPITAL LETTER I */
2164 case 0xFF2A: /* FULLWIDTH LATIN CAPITAL LETTER J */
2165 case 0xFF2B: /* FULLWIDTH LATIN CAPITAL LETTER K */
2166 case 0xFF2C: /* FULLWIDTH LATIN CAPITAL LETTER L */
2167 case 0xFF2D: /* FULLWIDTH LATIN CAPITAL LETTER M */
2168 case 0xFF2E: /* FULLWIDTH LATIN CAPITAL LETTER N */
2169 case 0xFF2F: /* FULLWIDTH LATIN CAPITAL LETTER O */
2170 case 0xFF30: /* FULLWIDTH LATIN CAPITAL LETTER P */
2171 case 0xFF31: /* FULLWIDTH LATIN CAPITAL LETTER Q */
2172 case 0xFF32: /* FULLWIDTH LATIN CAPITAL LETTER R */
2173 case 0xFF33: /* FULLWIDTH LATIN CAPITAL LETTER S */
2174 case 0xFF34: /* FULLWIDTH LATIN CAPITAL LETTER T */
2175 case 0xFF35: /* FULLWIDTH LATIN CAPITAL LETTER U */
2176 case 0xFF36: /* FULLWIDTH LATIN CAPITAL LETTER V */
2177 case 0xFF37: /* FULLWIDTH LATIN CAPITAL LETTER W */
2178 case 0xFF38: /* FULLWIDTH LATIN CAPITAL LETTER X */
2179 case 0xFF39: /* FULLWIDTH LATIN CAPITAL LETTER Y */
2180 case 0xFF3A: /* FULLWIDTH LATIN CAPITAL LETTER Z */
2181 return 1;
2182 default:
2183 return 0;
2184 }
2185}
2186
2187/* Returns the uppercase Unicode characters corresponding to ch or just
2188 ch if no uppercase mapping is known. */
2189
2190Py_UNICODE _PyUnicode_ToUppercase(register const Py_UNICODE ch)
2191{
2192 switch (ch) {
2193 case 0x0061: /* LATIN SMALL LETTER A */
2194 return (Py_UNICODE)0x0041;
2195 case 0x0062: /* LATIN SMALL LETTER B */
2196 return (Py_UNICODE)0x0042;
2197 case 0x0063: /* LATIN SMALL LETTER C */
2198 return (Py_UNICODE)0x0043;
2199 case 0x0064: /* LATIN SMALL LETTER D */
2200 return (Py_UNICODE)0x0044;
2201 case 0x0065: /* LATIN SMALL LETTER E */
2202 return (Py_UNICODE)0x0045;
2203 case 0x0066: /* LATIN SMALL LETTER F */
2204 return (Py_UNICODE)0x0046;
2205 case 0x0067: /* LATIN SMALL LETTER G */
2206 return (Py_UNICODE)0x0047;
2207 case 0x0068: /* LATIN SMALL LETTER H */
2208 return (Py_UNICODE)0x0048;
2209 case 0x0069: /* LATIN SMALL LETTER I */
2210 return (Py_UNICODE)0x0049;
2211 case 0x006A: /* LATIN SMALL LETTER J */
2212 return (Py_UNICODE)0x004A;
2213 case 0x006B: /* LATIN SMALL LETTER K */
2214 return (Py_UNICODE)0x004B;
2215 case 0x006C: /* LATIN SMALL LETTER L */
2216 return (Py_UNICODE)0x004C;
2217 case 0x006D: /* LATIN SMALL LETTER M */
2218 return (Py_UNICODE)0x004D;
2219 case 0x006E: /* LATIN SMALL LETTER N */
2220 return (Py_UNICODE)0x004E;
2221 case 0x006F: /* LATIN SMALL LETTER O */
2222 return (Py_UNICODE)0x004F;
2223 case 0x0070: /* LATIN SMALL LETTER P */
2224 return (Py_UNICODE)0x0050;
2225 case 0x0071: /* LATIN SMALL LETTER Q */
2226 return (Py_UNICODE)0x0051;
2227 case 0x0072: /* LATIN SMALL LETTER R */
2228 return (Py_UNICODE)0x0052;
2229 case 0x0073: /* LATIN SMALL LETTER S */
2230 return (Py_UNICODE)0x0053;
2231 case 0x0074: /* LATIN SMALL LETTER T */
2232 return (Py_UNICODE)0x0054;
2233 case 0x0075: /* LATIN SMALL LETTER U */
2234 return (Py_UNICODE)0x0055;
2235 case 0x0076: /* LATIN SMALL LETTER V */
2236 return (Py_UNICODE)0x0056;
2237 case 0x0077: /* LATIN SMALL LETTER W */
2238 return (Py_UNICODE)0x0057;
2239 case 0x0078: /* LATIN SMALL LETTER X */
2240 return (Py_UNICODE)0x0058;
2241 case 0x0079: /* LATIN SMALL LETTER Y */
2242 return (Py_UNICODE)0x0059;
2243 case 0x007A: /* LATIN SMALL LETTER Z */
2244 return (Py_UNICODE)0x005A;
2245 case 0x00B5: /* MICRO SIGN */
2246 return (Py_UNICODE)0x039C;
2247 case 0x00E0: /* LATIN SMALL LETTER A WITH GRAVE */
2248 return (Py_UNICODE)0x00C0;
2249 case 0x00E1: /* LATIN SMALL LETTER A WITH ACUTE */
2250 return (Py_UNICODE)0x00C1;
2251 case 0x00E2: /* LATIN SMALL LETTER A WITH CIRCUMFLEX */
2252 return (Py_UNICODE)0x00C2;
2253 case 0x00E3: /* LATIN SMALL LETTER A WITH TILDE */
2254 return (Py_UNICODE)0x00C3;
2255 case 0x00E4: /* LATIN SMALL LETTER A WITH DIAERESIS */
2256 return (Py_UNICODE)0x00C4;
2257 case 0x00E5: /* LATIN SMALL LETTER A WITH RING ABOVE */
2258 return (Py_UNICODE)0x00C5;
2259 case 0x00E6: /* LATIN SMALL LETTER AE */
2260 return (Py_UNICODE)0x00C6;
2261 case 0x00E7: /* LATIN SMALL LETTER C WITH CEDILLA */
2262 return (Py_UNICODE)0x00C7;
2263 case 0x00E8: /* LATIN SMALL LETTER E WITH GRAVE */
2264 return (Py_UNICODE)0x00C8;
2265 case 0x00E9: /* LATIN SMALL LETTER E WITH ACUTE */
2266 return (Py_UNICODE)0x00C9;
2267 case 0x00EA: /* LATIN SMALL LETTER E WITH CIRCUMFLEX */
2268 return (Py_UNICODE)0x00CA;
2269 case 0x00EB: /* LATIN SMALL LETTER E WITH DIAERESIS */
2270 return (Py_UNICODE)0x00CB;
2271 case 0x00EC: /* LATIN SMALL LETTER I WITH GRAVE */
2272 return (Py_UNICODE)0x00CC;
2273 case 0x00ED: /* LATIN SMALL LETTER I WITH ACUTE */
2274 return (Py_UNICODE)0x00CD;
2275 case 0x00EE: /* LATIN SMALL LETTER I WITH CIRCUMFLEX */
2276 return (Py_UNICODE)0x00CE;
2277 case 0x00EF: /* LATIN SMALL LETTER I WITH DIAERESIS */
2278 return (Py_UNICODE)0x00CF;
2279 case 0x00F0: /* LATIN SMALL LETTER ETH */
2280 return (Py_UNICODE)0x00D0;
2281 case 0x00F1: /* LATIN SMALL LETTER N WITH TILDE */
2282 return (Py_UNICODE)0x00D1;
2283 case 0x00F2: /* LATIN SMALL LETTER O WITH GRAVE */
2284 return (Py_UNICODE)0x00D2;
2285 case 0x00F3: /* LATIN SMALL LETTER O WITH ACUTE */
2286 return (Py_UNICODE)0x00D3;
2287 case 0x00F4: /* LATIN SMALL LETTER O WITH CIRCUMFLEX */
2288 return (Py_UNICODE)0x00D4;
2289 case 0x00F5: /* LATIN SMALL LETTER O WITH TILDE */
2290 return (Py_UNICODE)0x00D5;
2291 case 0x00F6: /* LATIN SMALL LETTER O WITH DIAERESIS */
2292 return (Py_UNICODE)0x00D6;
2293 case 0x00F8: /* LATIN SMALL LETTER O WITH STROKE */
2294 return (Py_UNICODE)0x00D8;
2295 case 0x00F9: /* LATIN SMALL LETTER U WITH GRAVE */
2296 return (Py_UNICODE)0x00D9;
2297 case 0x00FA: /* LATIN SMALL LETTER U WITH ACUTE */
2298 return (Py_UNICODE)0x00DA;
2299 case 0x00FB: /* LATIN SMALL LETTER U WITH CIRCUMFLEX */
2300 return (Py_UNICODE)0x00DB;
2301 case 0x00FC: /* LATIN SMALL LETTER U WITH DIAERESIS */
2302 return (Py_UNICODE)0x00DC;
2303 case 0x00FD: /* LATIN SMALL LETTER Y WITH ACUTE */
2304 return (Py_UNICODE)0x00DD;
2305 case 0x00FE: /* LATIN SMALL LETTER THORN */
2306 return (Py_UNICODE)0x00DE;
2307 case 0x00FF: /* LATIN SMALL LETTER Y WITH DIAERESIS */
2308 return (Py_UNICODE)0x0178;
2309 case 0x0101: /* LATIN SMALL LETTER A WITH MACRON */
2310 return (Py_UNICODE)0x0100;
2311 case 0x0103: /* LATIN SMALL LETTER A WITH BREVE */
2312 return (Py_UNICODE)0x0102;
2313 case 0x0105: /* LATIN SMALL LETTER A WITH OGONEK */
2314 return (Py_UNICODE)0x0104;
2315 case 0x0107: /* LATIN SMALL LETTER C WITH ACUTE */
2316 return (Py_UNICODE)0x0106;
2317 case 0x0109: /* LATIN SMALL LETTER C WITH CIRCUMFLEX */
2318 return (Py_UNICODE)0x0108;
2319 case 0x010B: /* LATIN SMALL LETTER C WITH DOT ABOVE */
2320 return (Py_UNICODE)0x010A;
2321 case 0x010D: /* LATIN SMALL LETTER C WITH CARON */
2322 return (Py_UNICODE)0x010C;
2323 case 0x010F: /* LATIN SMALL LETTER D WITH CARON */
2324 return (Py_UNICODE)0x010E;
2325 case 0x0111: /* LATIN SMALL LETTER D WITH STROKE */
2326 return (Py_UNICODE)0x0110;
2327 case 0x0113: /* LATIN SMALL LETTER E WITH MACRON */
2328 return (Py_UNICODE)0x0112;
2329 case 0x0115: /* LATIN SMALL LETTER E WITH BREVE */
2330 return (Py_UNICODE)0x0114;
2331 case 0x0117: /* LATIN SMALL LETTER E WITH DOT ABOVE */
2332 return (Py_UNICODE)0x0116;
2333 case 0x0119: /* LATIN SMALL LETTER E WITH OGONEK */
2334 return (Py_UNICODE)0x0118;
2335 case 0x011B: /* LATIN SMALL LETTER E WITH CARON */
2336 return (Py_UNICODE)0x011A;
2337 case 0x011D: /* LATIN SMALL LETTER G WITH CIRCUMFLEX */
2338 return (Py_UNICODE)0x011C;
2339 case 0x011F: /* LATIN SMALL LETTER G WITH BREVE */
2340 return (Py_UNICODE)0x011E;
2341 case 0x0121: /* LATIN SMALL LETTER G WITH DOT ABOVE */
2342 return (Py_UNICODE)0x0120;
2343 case 0x0123: /* LATIN SMALL LETTER G WITH CEDILLA */
2344 return (Py_UNICODE)0x0122;
2345 case 0x0125: /* LATIN SMALL LETTER H WITH CIRCUMFLEX */
2346 return (Py_UNICODE)0x0124;
2347 case 0x0127: /* LATIN SMALL LETTER H WITH STROKE */
2348 return (Py_UNICODE)0x0126;
2349 case 0x0129: /* LATIN SMALL LETTER I WITH TILDE */
2350 return (Py_UNICODE)0x0128;
2351 case 0x012B: /* LATIN SMALL LETTER I WITH MACRON */
2352 return (Py_UNICODE)0x012A;
2353 case 0x012D: /* LATIN SMALL LETTER I WITH BREVE */
2354 return (Py_UNICODE)0x012C;
2355 case 0x012F: /* LATIN SMALL LETTER I WITH OGONEK */
2356 return (Py_UNICODE)0x012E;
2357 case 0x0131: /* LATIN SMALL LETTER DOTLESS I */
2358 return (Py_UNICODE)0x0049;
2359 case 0x0133: /* LATIN SMALL LIGATURE IJ */
2360 return (Py_UNICODE)0x0132;
2361 case 0x0135: /* LATIN SMALL LETTER J WITH CIRCUMFLEX */
2362 return (Py_UNICODE)0x0134;
2363 case 0x0137: /* LATIN SMALL LETTER K WITH CEDILLA */
2364 return (Py_UNICODE)0x0136;
2365 case 0x013A: /* LATIN SMALL LETTER L WITH ACUTE */
2366 return (Py_UNICODE)0x0139;
2367 case 0x013C: /* LATIN SMALL LETTER L WITH CEDILLA */
2368 return (Py_UNICODE)0x013B;
2369 case 0x013E: /* LATIN SMALL LETTER L WITH CARON */
2370 return (Py_UNICODE)0x013D;
2371 case 0x0140: /* LATIN SMALL LETTER L WITH MIDDLE DOT */
2372 return (Py_UNICODE)0x013F;
2373 case 0x0142: /* LATIN SMALL LETTER L WITH STROKE */
2374 return (Py_UNICODE)0x0141;
2375 case 0x0144: /* LATIN SMALL LETTER N WITH ACUTE */
2376 return (Py_UNICODE)0x0143;
2377 case 0x0146: /* LATIN SMALL LETTER N WITH CEDILLA */
2378 return (Py_UNICODE)0x0145;
2379 case 0x0148: /* LATIN SMALL LETTER N WITH CARON */
2380 return (Py_UNICODE)0x0147;
2381 case 0x014B: /* LATIN SMALL LETTER ENG */
2382 return (Py_UNICODE)0x014A;
2383 case 0x014D: /* LATIN SMALL LETTER O WITH MACRON */
2384 return (Py_UNICODE)0x014C;
2385 case 0x014F: /* LATIN SMALL LETTER O WITH BREVE */
2386 return (Py_UNICODE)0x014E;
2387 case 0x0151: /* LATIN SMALL LETTER O WITH DOUBLE ACUTE */
2388 return (Py_UNICODE)0x0150;
2389 case 0x0153: /* LATIN SMALL LIGATURE OE */
2390 return (Py_UNICODE)0x0152;
2391 case 0x0155: /* LATIN SMALL LETTER R WITH ACUTE */
2392 return (Py_UNICODE)0x0154;
2393 case 0x0157: /* LATIN SMALL LETTER R WITH CEDILLA */
2394 return (Py_UNICODE)0x0156;
2395 case 0x0159: /* LATIN SMALL LETTER R WITH CARON */
2396 return (Py_UNICODE)0x0158;
2397 case 0x015B: /* LATIN SMALL LETTER S WITH ACUTE */
2398 return (Py_UNICODE)0x015A;
2399 case 0x015D: /* LATIN SMALL LETTER S WITH CIRCUMFLEX */
2400 return (Py_UNICODE)0x015C;
2401 case 0x015F: /* LATIN SMALL LETTER S WITH CEDILLA */
2402 return (Py_UNICODE)0x015E;
2403 case 0x0161: /* LATIN SMALL LETTER S WITH CARON */
2404 return (Py_UNICODE)0x0160;
2405 case 0x0163: /* LATIN SMALL LETTER T WITH CEDILLA */
2406 return (Py_UNICODE)0x0162;
2407 case 0x0165: /* LATIN SMALL LETTER T WITH CARON */
2408 return (Py_UNICODE)0x0164;
2409 case 0x0167: /* LATIN SMALL LETTER T WITH STROKE */
2410 return (Py_UNICODE)0x0166;
2411 case 0x0169: /* LATIN SMALL LETTER U WITH TILDE */
2412 return (Py_UNICODE)0x0168;
2413 case 0x016B: /* LATIN SMALL LETTER U WITH MACRON */
2414 return (Py_UNICODE)0x016A;
2415 case 0x016D: /* LATIN SMALL LETTER U WITH BREVE */
2416 return (Py_UNICODE)0x016C;
2417 case 0x016F: /* LATIN SMALL LETTER U WITH RING ABOVE */
2418 return (Py_UNICODE)0x016E;
2419 case 0x0171: /* LATIN SMALL LETTER U WITH DOUBLE ACUTE */
2420 return (Py_UNICODE)0x0170;
2421 case 0x0173: /* LATIN SMALL LETTER U WITH OGONEK */
2422 return (Py_UNICODE)0x0172;
2423 case 0x0175: /* LATIN SMALL LETTER W WITH CIRCUMFLEX */
2424 return (Py_UNICODE)0x0174;
2425 case 0x0177: /* LATIN SMALL LETTER Y WITH CIRCUMFLEX */
2426 return (Py_UNICODE)0x0176;
2427 case 0x017A: /* LATIN SMALL LETTER Z WITH ACUTE */
2428 return (Py_UNICODE)0x0179;
2429 case 0x017C: /* LATIN SMALL LETTER Z WITH DOT ABOVE */
2430 return (Py_UNICODE)0x017B;
2431 case 0x017E: /* LATIN SMALL LETTER Z WITH CARON */
2432 return (Py_UNICODE)0x017D;
2433 case 0x017F: /* LATIN SMALL LETTER LONG S */
2434 return (Py_UNICODE)0x0053;
2435 case 0x0183: /* LATIN SMALL LETTER B WITH TOPBAR */
2436 return (Py_UNICODE)0x0182;
2437 case 0x0185: /* LATIN SMALL LETTER TONE SIX */
2438 return (Py_UNICODE)0x0184;
2439 case 0x0188: /* LATIN SMALL LETTER C WITH HOOK */
2440 return (Py_UNICODE)0x0187;
2441 case 0x018C: /* LATIN SMALL LETTER D WITH TOPBAR */
2442 return (Py_UNICODE)0x018B;
2443 case 0x0192: /* LATIN SMALL LETTER F WITH HOOK */
2444 return (Py_UNICODE)0x0191;
2445 case 0x0195: /* LATIN SMALL LETTER HV */
2446 return (Py_UNICODE)0x01F6;
2447 case 0x0199: /* LATIN SMALL LETTER K WITH HOOK */
2448 return (Py_UNICODE)0x0198;
2449 case 0x01A1: /* LATIN SMALL LETTER O WITH HORN */
2450 return (Py_UNICODE)0x01A0;
2451 case 0x01A3: /* LATIN SMALL LETTER OI */
2452 return (Py_UNICODE)0x01A2;
2453 case 0x01A5: /* LATIN SMALL LETTER P WITH HOOK */
2454 return (Py_UNICODE)0x01A4;
2455 case 0x01A8: /* LATIN SMALL LETTER TONE TWO */
2456 return (Py_UNICODE)0x01A7;
2457 case 0x01AD: /* LATIN SMALL LETTER T WITH HOOK */
2458 return (Py_UNICODE)0x01AC;
2459 case 0x01B0: /* LATIN SMALL LETTER U WITH HORN */
2460 return (Py_UNICODE)0x01AF;
2461 case 0x01B4: /* LATIN SMALL LETTER Y WITH HOOK */
2462 return (Py_UNICODE)0x01B3;
2463 case 0x01B6: /* LATIN SMALL LETTER Z WITH STROKE */
2464 return (Py_UNICODE)0x01B5;
2465 case 0x01B9: /* LATIN SMALL LETTER EZH REVERSED */
2466 return (Py_UNICODE)0x01B8;
2467 case 0x01BD: /* LATIN SMALL LETTER TONE FIVE */
2468 return (Py_UNICODE)0x01BC;
2469 case 0x01BF: /* LATIN LETTER WYNN */
2470 return (Py_UNICODE)0x01F7;
2471 case 0x01C5: /* LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON */
2472 return (Py_UNICODE)0x01C4;
2473 case 0x01C6: /* LATIN SMALL LETTER DZ WITH CARON */
2474 return (Py_UNICODE)0x01C4;
2475 case 0x01C8: /* LATIN CAPITAL LETTER L WITH SMALL LETTER J */
2476 return (Py_UNICODE)0x01C7;
2477 case 0x01C9: /* LATIN SMALL LETTER LJ */
2478 return (Py_UNICODE)0x01C7;
2479 case 0x01CB: /* LATIN CAPITAL LETTER N WITH SMALL LETTER J */
2480 return (Py_UNICODE)0x01CA;
2481 case 0x01CC: /* LATIN SMALL LETTER NJ */
2482 return (Py_UNICODE)0x01CA;
2483 case 0x01CE: /* LATIN SMALL LETTER A WITH CARON */
2484 return (Py_UNICODE)0x01CD;
2485 case 0x01D0: /* LATIN SMALL LETTER I WITH CARON */
2486 return (Py_UNICODE)0x01CF;
2487 case 0x01D2: /* LATIN SMALL LETTER O WITH CARON */
2488 return (Py_UNICODE)0x01D1;
2489 case 0x01D4: /* LATIN SMALL LETTER U WITH CARON */
2490 return (Py_UNICODE)0x01D3;
2491 case 0x01D6: /* LATIN SMALL LETTER U WITH DIAERESIS AND MACRON */
2492 return (Py_UNICODE)0x01D5;
2493 case 0x01D8: /* LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE */
2494 return (Py_UNICODE)0x01D7;
2495 case 0x01DA: /* LATIN SMALL LETTER U WITH DIAERESIS AND CARON */
2496 return (Py_UNICODE)0x01D9;
2497 case 0x01DC: /* LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE */
2498 return (Py_UNICODE)0x01DB;
2499 case 0x01DD: /* LATIN SMALL LETTER TURNED E */
2500 return (Py_UNICODE)0x018E;
2501 case 0x01DF: /* LATIN SMALL LETTER A WITH DIAERESIS AND MACRON */
2502 return (Py_UNICODE)0x01DE;
2503 case 0x01E1: /* LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON */
2504 return (Py_UNICODE)0x01E0;
2505 case 0x01E3: /* LATIN SMALL LETTER AE WITH MACRON */
2506 return (Py_UNICODE)0x01E2;
2507 case 0x01E5: /* LATIN SMALL LETTER G WITH STROKE */
2508 return (Py_UNICODE)0x01E4;
2509 case 0x01E7: /* LATIN SMALL LETTER G WITH CARON */
2510 return (Py_UNICODE)0x01E6;
2511 case 0x01E9: /* LATIN SMALL LETTER K WITH CARON */
2512 return (Py_UNICODE)0x01E8;
2513 case 0x01EB: /* LATIN SMALL LETTER O WITH OGONEK */
2514 return (Py_UNICODE)0x01EA;
2515 case 0x01ED: /* LATIN SMALL LETTER O WITH OGONEK AND MACRON */
2516 return (Py_UNICODE)0x01EC;
2517 case 0x01EF: /* LATIN SMALL LETTER EZH WITH CARON */
2518 return (Py_UNICODE)0x01EE;
2519 case 0x01F2: /* LATIN CAPITAL LETTER D WITH SMALL LETTER Z */
2520 return (Py_UNICODE)0x01F1;
2521 case 0x01F3: /* LATIN SMALL LETTER DZ */
2522 return (Py_UNICODE)0x01F1;
2523 case 0x01F5: /* LATIN SMALL LETTER G WITH ACUTE */
2524 return (Py_UNICODE)0x01F4;
2525 case 0x01F9: /* LATIN SMALL LETTER N WITH GRAVE */
2526 return (Py_UNICODE)0x01F8;
2527 case 0x01FB: /* LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE */
2528 return (Py_UNICODE)0x01FA;
2529 case 0x01FD: /* LATIN SMALL LETTER AE WITH ACUTE */
2530 return (Py_UNICODE)0x01FC;
2531 case 0x01FF: /* LATIN SMALL LETTER O WITH STROKE AND ACUTE */
2532 return (Py_UNICODE)0x01FE;
2533 case 0x0201: /* LATIN SMALL LETTER A WITH DOUBLE GRAVE */
2534 return (Py_UNICODE)0x0200;
2535 case 0x0203: /* LATIN SMALL LETTER A WITH INVERTED BREVE */
2536 return (Py_UNICODE)0x0202;
2537 case 0x0205: /* LATIN SMALL LETTER E WITH DOUBLE GRAVE */
2538 return (Py_UNICODE)0x0204;
2539 case 0x0207: /* LATIN SMALL LETTER E WITH INVERTED BREVE */
2540 return (Py_UNICODE)0x0206;
2541 case 0x0209: /* LATIN SMALL LETTER I WITH DOUBLE GRAVE */
2542 return (Py_UNICODE)0x0208;
2543 case 0x020B: /* LATIN SMALL LETTER I WITH INVERTED BREVE */
2544 return (Py_UNICODE)0x020A;
2545 case 0x020D: /* LATIN SMALL LETTER O WITH DOUBLE GRAVE */
2546 return (Py_UNICODE)0x020C;
2547 case 0x020F: /* LATIN SMALL LETTER O WITH INVERTED BREVE */
2548 return (Py_UNICODE)0x020E;
2549 case 0x0211: /* LATIN SMALL LETTER R WITH DOUBLE GRAVE */
2550 return (Py_UNICODE)0x0210;
2551 case 0x0213: /* LATIN SMALL LETTER R WITH INVERTED BREVE */
2552 return (Py_UNICODE)0x0212;
2553 case 0x0215: /* LATIN SMALL LETTER U WITH DOUBLE GRAVE */
2554 return (Py_UNICODE)0x0214;
2555 case 0x0217: /* LATIN SMALL LETTER U WITH INVERTED BREVE */
2556 return (Py_UNICODE)0x0216;
2557 case 0x0219: /* LATIN SMALL LETTER S WITH COMMA BELOW */
2558 return (Py_UNICODE)0x0218;
2559 case 0x021B: /* LATIN SMALL LETTER T WITH COMMA BELOW */
2560 return (Py_UNICODE)0x021A;
2561 case 0x021D: /* LATIN SMALL LETTER YOGH */
2562 return (Py_UNICODE)0x021C;
2563 case 0x021F: /* LATIN SMALL LETTER H WITH CARON */
2564 return (Py_UNICODE)0x021E;
2565 case 0x0223: /* LATIN SMALL LETTER OU */
2566 return (Py_UNICODE)0x0222;
2567 case 0x0225: /* LATIN SMALL LETTER Z WITH HOOK */
2568 return (Py_UNICODE)0x0224;
2569 case 0x0227: /* LATIN SMALL LETTER A WITH DOT ABOVE */
2570 return (Py_UNICODE)0x0226;
2571 case 0x0229: /* LATIN SMALL LETTER E WITH CEDILLA */
2572 return (Py_UNICODE)0x0228;
2573 case 0x022B: /* LATIN SMALL LETTER O WITH DIAERESIS AND MACRON */
2574 return (Py_UNICODE)0x022A;
2575 case 0x022D: /* LATIN SMALL LETTER O WITH TILDE AND MACRON */
2576 return (Py_UNICODE)0x022C;
2577 case 0x022F: /* LATIN SMALL LETTER O WITH DOT ABOVE */
2578 return (Py_UNICODE)0x022E;
2579 case 0x0231: /* LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON */
2580 return (Py_UNICODE)0x0230;
2581 case 0x0233: /* LATIN SMALL LETTER Y WITH MACRON */
2582 return (Py_UNICODE)0x0232;
2583 case 0x0253: /* LATIN SMALL LETTER B WITH HOOK */
2584 return (Py_UNICODE)0x0181;
2585 case 0x0254: /* LATIN SMALL LETTER OPEN O */
2586 return (Py_UNICODE)0x0186;
2587 case 0x0256: /* LATIN SMALL LETTER D WITH TAIL */
2588 return (Py_UNICODE)0x0189;
2589 case 0x0257: /* LATIN SMALL LETTER D WITH HOOK */
2590 return (Py_UNICODE)0x018A;
2591 case 0x0259: /* LATIN SMALL LETTER SCHWA */
2592 return (Py_UNICODE)0x018F;
2593 case 0x025B: /* LATIN SMALL LETTER OPEN E */
2594 return (Py_UNICODE)0x0190;
2595 case 0x0260: /* LATIN SMALL LETTER G WITH HOOK */
2596 return (Py_UNICODE)0x0193;
2597 case 0x0263: /* LATIN SMALL LETTER GAMMA */
2598 return (Py_UNICODE)0x0194;
2599 case 0x0268: /* LATIN SMALL LETTER I WITH STROKE */
2600 return (Py_UNICODE)0x0197;
2601 case 0x0269: /* LATIN SMALL LETTER IOTA */
2602 return (Py_UNICODE)0x0196;
2603 case 0x026F: /* LATIN SMALL LETTER TURNED M */
2604 return (Py_UNICODE)0x019C;
2605 case 0x0272: /* LATIN SMALL LETTER N WITH LEFT HOOK */
2606 return (Py_UNICODE)0x019D;
2607 case 0x0275: /* LATIN SMALL LETTER BARRED O */
2608 return (Py_UNICODE)0x019F;
2609 case 0x0280: /* LATIN LETTER SMALL CAPITAL R */
2610 return (Py_UNICODE)0x01A6;
2611 case 0x0283: /* LATIN SMALL LETTER ESH */
2612 return (Py_UNICODE)0x01A9;
2613 case 0x0288: /* LATIN SMALL LETTER T WITH RETROFLEX HOOK */
2614 return (Py_UNICODE)0x01AE;
2615 case 0x028A: /* LATIN SMALL LETTER UPSILON */
2616 return (Py_UNICODE)0x01B1;
2617 case 0x028B: /* LATIN SMALL LETTER V WITH HOOK */
2618 return (Py_UNICODE)0x01B2;
2619 case 0x0292: /* LATIN SMALL LETTER EZH */
2620 return (Py_UNICODE)0x01B7;
2621 case 0x0345: /* COMBINING GREEK YPOGEGRAMMENI */
2622 return (Py_UNICODE)0x0399;
2623 case 0x03AC: /* GREEK SMALL LETTER ALPHA WITH TONOS */
2624 return (Py_UNICODE)0x0386;
2625 case 0x03AD: /* GREEK SMALL LETTER EPSILON WITH TONOS */
2626 return (Py_UNICODE)0x0388;
2627 case 0x03AE: /* GREEK SMALL LETTER ETA WITH TONOS */
2628 return (Py_UNICODE)0x0389;
2629 case 0x03AF: /* GREEK SMALL LETTER IOTA WITH TONOS */
2630 return (Py_UNICODE)0x038A;
2631 case 0x03B1: /* GREEK SMALL LETTER ALPHA */
2632 return (Py_UNICODE)0x0391;
2633 case 0x03B2: /* GREEK SMALL LETTER BETA */
2634 return (Py_UNICODE)0x0392;
2635 case 0x03B3: /* GREEK SMALL LETTER GAMMA */
2636 return (Py_UNICODE)0x0393;
2637 case 0x03B4: /* GREEK SMALL LETTER DELTA */
2638 return (Py_UNICODE)0x0394;
2639 case 0x03B5: /* GREEK SMALL LETTER EPSILON */
2640 return (Py_UNICODE)0x0395;
2641 case 0x03B6: /* GREEK SMALL LETTER ZETA */
2642 return (Py_UNICODE)0x0396;
2643 case 0x03B7: /* GREEK SMALL LETTER ETA */
2644 return (Py_UNICODE)0x0397;
2645 case 0x03B8: /* GREEK SMALL LETTER THETA */
2646 return (Py_UNICODE)0x0398;
2647 case 0x03B9: /* GREEK SMALL LETTER IOTA */
2648 return (Py_UNICODE)0x0399;
2649 case 0x03BA: /* GREEK SMALL LETTER KAPPA */
2650 return (Py_UNICODE)0x039A;
2651 case 0x03BB: /* GREEK SMALL LETTER LAMDA */
2652 return (Py_UNICODE)0x039B;
2653 case 0x03BC: /* GREEK SMALL LETTER MU */
2654 return (Py_UNICODE)0x039C;
2655 case 0x03BD: /* GREEK SMALL LETTER NU */
2656 return (Py_UNICODE)0x039D;
2657 case 0x03BE: /* GREEK SMALL LETTER XI */
2658 return (Py_UNICODE)0x039E;
2659 case 0x03BF: /* GREEK SMALL LETTER OMICRON */
2660 return (Py_UNICODE)0x039F;
2661 case 0x03C0: /* GREEK SMALL LETTER PI */
2662 return (Py_UNICODE)0x03A0;
2663 case 0x03C1: /* GREEK SMALL LETTER RHO */
2664 return (Py_UNICODE)0x03A1;
2665 case 0x03C2: /* GREEK SMALL LETTER FINAL SIGMA */
2666 return (Py_UNICODE)0x03A3;
2667 case 0x03C3: /* GREEK SMALL LETTER SIGMA */
2668 return (Py_UNICODE)0x03A3;
2669 case 0x03C4: /* GREEK SMALL LETTER TAU */
2670 return (Py_UNICODE)0x03A4;
2671 case 0x03C5: /* GREEK SMALL LETTER UPSILON */
2672 return (Py_UNICODE)0x03A5;
2673 case 0x03C6: /* GREEK SMALL LETTER PHI */
2674 return (Py_UNICODE)0x03A6;
2675 case 0x03C7: /* GREEK SMALL LETTER CHI */
2676 return (Py_UNICODE)0x03A7;
2677 case 0x03C8: /* GREEK SMALL LETTER PSI */
2678 return (Py_UNICODE)0x03A8;
2679 case 0x03C9: /* GREEK SMALL LETTER OMEGA */
2680 return (Py_UNICODE)0x03A9;
2681 case 0x03CA: /* GREEK SMALL LETTER IOTA WITH DIALYTIKA */
2682 return (Py_UNICODE)0x03AA;
2683 case 0x03CB: /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA */
2684 return (Py_UNICODE)0x03AB;
2685 case 0x03CC: /* GREEK SMALL LETTER OMICRON WITH TONOS */
2686 return (Py_UNICODE)0x038C;
2687 case 0x03CD: /* GREEK SMALL LETTER UPSILON WITH TONOS */
2688 return (Py_UNICODE)0x038E;
2689 case 0x03CE: /* GREEK SMALL LETTER OMEGA WITH TONOS */
2690 return (Py_UNICODE)0x038F;
2691 case 0x03D0: /* GREEK BETA SYMBOL */
2692 return (Py_UNICODE)0x0392;
2693 case 0x03D1: /* GREEK THETA SYMBOL */
2694 return (Py_UNICODE)0x0398;
2695 case 0x03D5: /* GREEK PHI SYMBOL */
2696 return (Py_UNICODE)0x03A6;
2697 case 0x03D6: /* GREEK PI SYMBOL */
2698 return (Py_UNICODE)0x03A0;
2699 case 0x03DB: /* GREEK SMALL LETTER STIGMA */
2700 return (Py_UNICODE)0x03DA;
2701 case 0x03DD: /* GREEK SMALL LETTER DIGAMMA */
2702 return (Py_UNICODE)0x03DC;
2703 case 0x03DF: /* GREEK SMALL LETTER KOPPA */
2704 return (Py_UNICODE)0x03DE;
2705 case 0x03E1: /* GREEK SMALL LETTER SAMPI */
2706 return (Py_UNICODE)0x03E0;
2707 case 0x03E3: /* COPTIC SMALL LETTER SHEI */
2708 return (Py_UNICODE)0x03E2;
2709 case 0x03E5: /* COPTIC SMALL LETTER FEI */
2710 return (Py_UNICODE)0x03E4;
2711 case 0x03E7: /* COPTIC SMALL LETTER KHEI */
2712 return (Py_UNICODE)0x03E6;
2713 case 0x03E9: /* COPTIC SMALL LETTER HORI */
2714 return (Py_UNICODE)0x03E8;
2715 case 0x03EB: /* COPTIC SMALL LETTER GANGIA */
2716 return (Py_UNICODE)0x03EA;
2717 case 0x03ED: /* COPTIC SMALL LETTER SHIMA */
2718 return (Py_UNICODE)0x03EC;
2719 case 0x03EF: /* COPTIC SMALL LETTER DEI */
2720 return (Py_UNICODE)0x03EE;
2721 case 0x03F0: /* GREEK KAPPA SYMBOL */
2722 return (Py_UNICODE)0x039A;
2723 case 0x03F1: /* GREEK RHO SYMBOL */
2724 return (Py_UNICODE)0x03A1;
2725 case 0x03F2: /* GREEK LUNATE SIGMA SYMBOL */
2726 return (Py_UNICODE)0x03A3;
2727 case 0x0430: /* CYRILLIC SMALL LETTER A */
2728 return (Py_UNICODE)0x0410;
2729 case 0x0431: /* CYRILLIC SMALL LETTER BE */
2730 return (Py_UNICODE)0x0411;
2731 case 0x0432: /* CYRILLIC SMALL LETTER VE */
2732 return (Py_UNICODE)0x0412;
2733 case 0x0433: /* CYRILLIC SMALL LETTER GHE */
2734 return (Py_UNICODE)0x0413;
2735 case 0x0434: /* CYRILLIC SMALL LETTER DE */
2736 return (Py_UNICODE)0x0414;
2737 case 0x0435: /* CYRILLIC SMALL LETTER IE */
2738 return (Py_UNICODE)0x0415;
2739 case 0x0436: /* CYRILLIC SMALL LETTER ZHE */
2740 return (Py_UNICODE)0x0416;
2741 case 0x0437: /* CYRILLIC SMALL LETTER ZE */
2742 return (Py_UNICODE)0x0417;
2743 case 0x0438: /* CYRILLIC SMALL LETTER I */
2744 return (Py_UNICODE)0x0418;
2745 case 0x0439: /* CYRILLIC SMALL LETTER SHORT I */
2746 return (Py_UNICODE)0x0419;
2747 case 0x043A: /* CYRILLIC SMALL LETTER KA */
2748 return (Py_UNICODE)0x041A;
2749 case 0x043B: /* CYRILLIC SMALL LETTER EL */
2750 return (Py_UNICODE)0x041B;
2751 case 0x043C: /* CYRILLIC SMALL LETTER EM */
2752 return (Py_UNICODE)0x041C;
2753 case 0x043D: /* CYRILLIC SMALL LETTER EN */
2754 return (Py_UNICODE)0x041D;
2755 case 0x043E: /* CYRILLIC SMALL LETTER O */
2756 return (Py_UNICODE)0x041E;
2757 case 0x043F: /* CYRILLIC SMALL LETTER PE */
2758 return (Py_UNICODE)0x041F;
2759 case 0x0440: /* CYRILLIC SMALL LETTER ER */
2760 return (Py_UNICODE)0x0420;
2761 case 0x0441: /* CYRILLIC SMALL LETTER ES */
2762 return (Py_UNICODE)0x0421;
2763 case 0x0442: /* CYRILLIC SMALL LETTER TE */
2764 return (Py_UNICODE)0x0422;
2765 case 0x0443: /* CYRILLIC SMALL LETTER U */
2766 return (Py_UNICODE)0x0423;
2767 case 0x0444: /* CYRILLIC SMALL LETTER EF */
2768 return (Py_UNICODE)0x0424;
2769 case 0x0445: /* CYRILLIC SMALL LETTER HA */
2770 return (Py_UNICODE)0x0425;
2771 case 0x0446: /* CYRILLIC SMALL LETTER TSE */
2772 return (Py_UNICODE)0x0426;
2773 case 0x0447: /* CYRILLIC SMALL LETTER CHE */
2774 return (Py_UNICODE)0x0427;
2775 case 0x0448: /* CYRILLIC SMALL LETTER SHA */
2776 return (Py_UNICODE)0x0428;
2777 case 0x0449: /* CYRILLIC SMALL LETTER SHCHA */
2778 return (Py_UNICODE)0x0429;
2779 case 0x044A: /* CYRILLIC SMALL LETTER HARD SIGN */
2780 return (Py_UNICODE)0x042A;
2781 case 0x044B: /* CYRILLIC SMALL LETTER YERU */
2782 return (Py_UNICODE)0x042B;
2783 case 0x044C: /* CYRILLIC SMALL LETTER SOFT SIGN */
2784 return (Py_UNICODE)0x042C;
2785 case 0x044D: /* CYRILLIC SMALL LETTER E */
2786 return (Py_UNICODE)0x042D;
2787 case 0x044E: /* CYRILLIC SMALL LETTER YU */
2788 return (Py_UNICODE)0x042E;
2789 case 0x044F: /* CYRILLIC SMALL LETTER YA */
2790 return (Py_UNICODE)0x042F;
2791 case 0x0450: /* CYRILLIC SMALL LETTER IE WITH GRAVE */
2792 return (Py_UNICODE)0x0400;
2793 case 0x0451: /* CYRILLIC SMALL LETTER IO */
2794 return (Py_UNICODE)0x0401;
2795 case 0x0452: /* CYRILLIC SMALL LETTER DJE */
2796 return (Py_UNICODE)0x0402;
2797 case 0x0453: /* CYRILLIC SMALL LETTER GJE */
2798 return (Py_UNICODE)0x0403;
2799 case 0x0454: /* CYRILLIC SMALL LETTER UKRAINIAN IE */
2800 return (Py_UNICODE)0x0404;
2801 case 0x0455: /* CYRILLIC SMALL LETTER DZE */
2802 return (Py_UNICODE)0x0405;
2803 case 0x0456: /* CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */
2804 return (Py_UNICODE)0x0406;
2805 case 0x0457: /* CYRILLIC SMALL LETTER YI */
2806 return (Py_UNICODE)0x0407;
2807 case 0x0458: /* CYRILLIC SMALL LETTER JE */
2808 return (Py_UNICODE)0x0408;
2809 case 0x0459: /* CYRILLIC SMALL LETTER LJE */
2810 return (Py_UNICODE)0x0409;
2811 case 0x045A: /* CYRILLIC SMALL LETTER NJE */
2812 return (Py_UNICODE)0x040A;
2813 case 0x045B: /* CYRILLIC SMALL LETTER TSHE */
2814 return (Py_UNICODE)0x040B;
2815 case 0x045C: /* CYRILLIC SMALL LETTER KJE */
2816 return (Py_UNICODE)0x040C;
2817 case 0x045D: /* CYRILLIC SMALL LETTER I WITH GRAVE */
2818 return (Py_UNICODE)0x040D;
2819 case 0x045E: /* CYRILLIC SMALL LETTER SHORT U */
2820 return (Py_UNICODE)0x040E;
2821 case 0x045F: /* CYRILLIC SMALL LETTER DZHE */
2822 return (Py_UNICODE)0x040F;
2823 case 0x0461: /* CYRILLIC SMALL LETTER OMEGA */
2824 return (Py_UNICODE)0x0460;
2825 case 0x0463: /* CYRILLIC SMALL LETTER YAT */
2826 return (Py_UNICODE)0x0462;
2827 case 0x0465: /* CYRILLIC SMALL LETTER IOTIFIED E */
2828 return (Py_UNICODE)0x0464;
2829 case 0x0467: /* CYRILLIC SMALL LETTER LITTLE YUS */
2830 return (Py_UNICODE)0x0466;
2831 case 0x0469: /* CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS */
2832 return (Py_UNICODE)0x0468;
2833 case 0x046B: /* CYRILLIC SMALL LETTER BIG YUS */
2834 return (Py_UNICODE)0x046A;
2835 case 0x046D: /* CYRILLIC SMALL LETTER IOTIFIED BIG YUS */
2836 return (Py_UNICODE)0x046C;
2837 case 0x046F: /* CYRILLIC SMALL LETTER KSI */
2838 return (Py_UNICODE)0x046E;
2839 case 0x0471: /* CYRILLIC SMALL LETTER PSI */
2840 return (Py_UNICODE)0x0470;
2841 case 0x0473: /* CYRILLIC SMALL LETTER FITA */
2842 return (Py_UNICODE)0x0472;
2843 case 0x0475: /* CYRILLIC SMALL LETTER IZHITSA */
2844 return (Py_UNICODE)0x0474;
2845 case 0x0477: /* CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT */
2846 return (Py_UNICODE)0x0476;
2847 case 0x0479: /* CYRILLIC SMALL LETTER UK */
2848 return (Py_UNICODE)0x0478;
2849 case 0x047B: /* CYRILLIC SMALL LETTER ROUND OMEGA */
2850 return (Py_UNICODE)0x047A;
2851 case 0x047D: /* CYRILLIC SMALL LETTER OMEGA WITH TITLO */
2852 return (Py_UNICODE)0x047C;
2853 case 0x047F: /* CYRILLIC SMALL LETTER OT */
2854 return (Py_UNICODE)0x047E;
2855 case 0x0481: /* CYRILLIC SMALL LETTER KOPPA */
2856 return (Py_UNICODE)0x0480;
2857 case 0x048D: /* CYRILLIC SMALL LETTER SEMISOFT SIGN */
2858 return (Py_UNICODE)0x048C;
2859 case 0x048F: /* CYRILLIC SMALL LETTER ER WITH TICK */
2860 return (Py_UNICODE)0x048E;
2861 case 0x0491: /* CYRILLIC SMALL LETTER GHE WITH UPTURN */
2862 return (Py_UNICODE)0x0490;
2863 case 0x0493: /* CYRILLIC SMALL LETTER GHE WITH STROKE */
2864 return (Py_UNICODE)0x0492;
2865 case 0x0495: /* CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK */
2866 return (Py_UNICODE)0x0494;
2867 case 0x0497: /* CYRILLIC SMALL LETTER ZHE WITH DESCENDER */
2868 return (Py_UNICODE)0x0496;
2869 case 0x0499: /* CYRILLIC SMALL LETTER ZE WITH DESCENDER */
2870 return (Py_UNICODE)0x0498;
2871 case 0x049B: /* CYRILLIC SMALL LETTER KA WITH DESCENDER */
2872 return (Py_UNICODE)0x049A;
2873 case 0x049D: /* CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE */
2874 return (Py_UNICODE)0x049C;
2875 case 0x049F: /* CYRILLIC SMALL LETTER KA WITH STROKE */
2876 return (Py_UNICODE)0x049E;
2877 case 0x04A1: /* CYRILLIC SMALL LETTER BASHKIR KA */
2878 return (Py_UNICODE)0x04A0;
2879 case 0x04A3: /* CYRILLIC SMALL LETTER EN WITH DESCENDER */
2880 return (Py_UNICODE)0x04A2;
2881 case 0x04A5: /* CYRILLIC SMALL LIGATURE EN GHE */
2882 return (Py_UNICODE)0x04A4;
2883 case 0x04A7: /* CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK */
2884 return (Py_UNICODE)0x04A6;
2885 case 0x04A9: /* CYRILLIC SMALL LETTER ABKHASIAN HA */
2886 return (Py_UNICODE)0x04A8;
2887 case 0x04AB: /* CYRILLIC SMALL LETTER ES WITH DESCENDER */
2888 return (Py_UNICODE)0x04AA;
2889 case 0x04AD: /* CYRILLIC SMALL LETTER TE WITH DESCENDER */
2890 return (Py_UNICODE)0x04AC;
2891 case 0x04AF: /* CYRILLIC SMALL LETTER STRAIGHT U */
2892 return (Py_UNICODE)0x04AE;
2893 case 0x04B1: /* CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE */
2894 return (Py_UNICODE)0x04B0;
2895 case 0x04B3: /* CYRILLIC SMALL LETTER HA WITH DESCENDER */
2896 return (Py_UNICODE)0x04B2;
2897 case 0x04B5: /* CYRILLIC SMALL LIGATURE TE TSE */
2898 return (Py_UNICODE)0x04B4;
2899 case 0x04B7: /* CYRILLIC SMALL LETTER CHE WITH DESCENDER */
2900 return (Py_UNICODE)0x04B6;
2901 case 0x04B9: /* CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE */
2902 return (Py_UNICODE)0x04B8;
2903 case 0x04BB: /* CYRILLIC SMALL LETTER SHHA */
2904 return (Py_UNICODE)0x04BA;
2905 case 0x04BD: /* CYRILLIC SMALL LETTER ABKHASIAN CHE */
2906 return (Py_UNICODE)0x04BC;
2907 case 0x04BF: /* CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER */
2908 return (Py_UNICODE)0x04BE;
2909 case 0x04C2: /* CYRILLIC SMALL LETTER ZHE WITH BREVE */
2910 return (Py_UNICODE)0x04C1;
2911 case 0x04C4: /* CYRILLIC SMALL LETTER KA WITH HOOK */
2912 return (Py_UNICODE)0x04C3;
2913 case 0x04C8: /* CYRILLIC SMALL LETTER EN WITH HOOK */
2914 return (Py_UNICODE)0x04C7;
2915 case 0x04CC: /* CYRILLIC SMALL LETTER KHAKASSIAN CHE */
2916 return (Py_UNICODE)0x04CB;
2917 case 0x04D1: /* CYRILLIC SMALL LETTER A WITH BREVE */
2918 return (Py_UNICODE)0x04D0;
2919 case 0x04D3: /* CYRILLIC SMALL LETTER A WITH DIAERESIS */
2920 return (Py_UNICODE)0x04D2;
2921 case 0x04D5: /* CYRILLIC SMALL LIGATURE A IE */
2922 return (Py_UNICODE)0x04D4;
2923 case 0x04D7: /* CYRILLIC SMALL LETTER IE WITH BREVE */
2924 return (Py_UNICODE)0x04D6;
2925 case 0x04D9: /* CYRILLIC SMALL LETTER SCHWA */
2926 return (Py_UNICODE)0x04D8;
2927 case 0x04DB: /* CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS */
2928 return (Py_UNICODE)0x04DA;
2929 case 0x04DD: /* CYRILLIC SMALL LETTER ZHE WITH DIAERESIS */
2930 return (Py_UNICODE)0x04DC;
2931 case 0x04DF: /* CYRILLIC SMALL LETTER ZE WITH DIAERESIS */
2932 return (Py_UNICODE)0x04DE;
2933 case 0x04E1: /* CYRILLIC SMALL LETTER ABKHASIAN DZE */
2934 return (Py_UNICODE)0x04E0;
2935 case 0x04E3: /* CYRILLIC SMALL LETTER I WITH MACRON */
2936 return (Py_UNICODE)0x04E2;
2937 case 0x04E5: /* CYRILLIC SMALL LETTER I WITH DIAERESIS */
2938 return (Py_UNICODE)0x04E4;
2939 case 0x04E7: /* CYRILLIC SMALL LETTER O WITH DIAERESIS */
2940 return (Py_UNICODE)0x04E6;
2941 case 0x04E9: /* CYRILLIC SMALL LETTER BARRED O */
2942 return (Py_UNICODE)0x04E8;
2943 case 0x04EB: /* CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS */
2944 return (Py_UNICODE)0x04EA;
2945 case 0x04ED: /* CYRILLIC SMALL LETTER E WITH DIAERESIS */
2946 return (Py_UNICODE)0x04EC;
2947 case 0x04EF: /* CYRILLIC SMALL LETTER U WITH MACRON */
2948 return (Py_UNICODE)0x04EE;
2949 case 0x04F1: /* CYRILLIC SMALL LETTER U WITH DIAERESIS */
2950 return (Py_UNICODE)0x04F0;
2951 case 0x04F3: /* CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE */
2952 return (Py_UNICODE)0x04F2;
2953 case 0x04F5: /* CYRILLIC SMALL LETTER CHE WITH DIAERESIS */
2954 return (Py_UNICODE)0x04F4;
2955 case 0x04F9: /* CYRILLIC SMALL LETTER YERU WITH DIAERESIS */
2956 return (Py_UNICODE)0x04F8;
2957 case 0x0561: /* ARMENIAN SMALL LETTER AYB */
2958 return (Py_UNICODE)0x0531;
2959 case 0x0562: /* ARMENIAN SMALL LETTER BEN */
2960 return (Py_UNICODE)0x0532;
2961 case 0x0563: /* ARMENIAN SMALL LETTER GIM */
2962 return (Py_UNICODE)0x0533;
2963 case 0x0564: /* ARMENIAN SMALL LETTER DA */
2964 return (Py_UNICODE)0x0534;
2965 case 0x0565: /* ARMENIAN SMALL LETTER ECH */
2966 return (Py_UNICODE)0x0535;
2967 case 0x0566: /* ARMENIAN SMALL LETTER ZA */
2968 return (Py_UNICODE)0x0536;
2969 case 0x0567: /* ARMENIAN SMALL LETTER EH */
2970 return (Py_UNICODE)0x0537;
2971 case 0x0568: /* ARMENIAN SMALL LETTER ET */
2972 return (Py_UNICODE)0x0538;
2973 case 0x0569: /* ARMENIAN SMALL LETTER TO */
2974 return (Py_UNICODE)0x0539;
2975 case 0x056A: /* ARMENIAN SMALL LETTER ZHE */
2976 return (Py_UNICODE)0x053A;
2977 case 0x056B: /* ARMENIAN SMALL LETTER INI */
2978 return (Py_UNICODE)0x053B;
2979 case 0x056C: /* ARMENIAN SMALL LETTER LIWN */
2980 return (Py_UNICODE)0x053C;
2981 case 0x056D: /* ARMENIAN SMALL LETTER XEH */
2982 return (Py_UNICODE)0x053D;
2983 case 0x056E: /* ARMENIAN SMALL LETTER CA */
2984 return (Py_UNICODE)0x053E;
2985 case 0x056F: /* ARMENIAN SMALL LETTER KEN */
2986 return (Py_UNICODE)0x053F;
2987 case 0x0570: /* ARMENIAN SMALL LETTER HO */
2988 return (Py_UNICODE)0x0540;
2989 case 0x0571: /* ARMENIAN SMALL LETTER JA */
2990 return (Py_UNICODE)0x0541;
2991 case 0x0572: /* ARMENIAN SMALL LETTER GHAD */
2992 return (Py_UNICODE)0x0542;
2993 case 0x0573: /* ARMENIAN SMALL LETTER CHEH */
2994 return (Py_UNICODE)0x0543;
2995 case 0x0574: /* ARMENIAN SMALL LETTER MEN */
2996 return (Py_UNICODE)0x0544;
2997 case 0x0575: /* ARMENIAN SMALL LETTER YI */
2998 return (Py_UNICODE)0x0545;
2999 case 0x0576: /* ARMENIAN SMALL LETTER NOW */
3000 return (Py_UNICODE)0x0546;
3001 case 0x0577: /* ARMENIAN SMALL LETTER SHA */
3002 return (Py_UNICODE)0x0547;
3003 case 0x0578: /* ARMENIAN SMALL LETTER VO */
3004 return (Py_UNICODE)0x0548;
3005 case 0x0579: /* ARMENIAN SMALL LETTER CHA */
3006 return (Py_UNICODE)0x0549;
3007 case 0x057A: /* ARMENIAN SMALL LETTER PEH */
3008 return (Py_UNICODE)0x054A;
3009 case 0x057B: /* ARMENIAN SMALL LETTER JHEH */
3010 return (Py_UNICODE)0x054B;
3011 case 0x057C: /* ARMENIAN SMALL LETTER RA */
3012 return (Py_UNICODE)0x054C;
3013 case 0x057D: /* ARMENIAN SMALL LETTER SEH */
3014 return (Py_UNICODE)0x054D;
3015 case 0x057E: /* ARMENIAN SMALL LETTER VEW */
3016 return (Py_UNICODE)0x054E;
3017 case 0x057F: /* ARMENIAN SMALL LETTER TIWN */
3018 return (Py_UNICODE)0x054F;
3019 case 0x0580: /* ARMENIAN SMALL LETTER REH */
3020 return (Py_UNICODE)0x0550;
3021 case 0x0581: /* ARMENIAN SMALL LETTER CO */
3022 return (Py_UNICODE)0x0551;
3023 case 0x0582: /* ARMENIAN SMALL LETTER YIWN */
3024 return (Py_UNICODE)0x0552;
3025 case 0x0583: /* ARMENIAN SMALL LETTER PIWR */
3026 return (Py_UNICODE)0x0553;
3027 case 0x0584: /* ARMENIAN SMALL LETTER KEH */
3028 return (Py_UNICODE)0x0554;
3029 case 0x0585: /* ARMENIAN SMALL LETTER OH */
3030 return (Py_UNICODE)0x0555;
3031 case 0x0586: /* ARMENIAN SMALL LETTER FEH */
3032 return (Py_UNICODE)0x0556;
3033 case 0x1E01: /* LATIN SMALL LETTER A WITH RING BELOW */
3034 return (Py_UNICODE)0x1E00;
3035 case 0x1E03: /* LATIN SMALL LETTER B WITH DOT ABOVE */
3036 return (Py_UNICODE)0x1E02;
3037 case 0x1E05: /* LATIN SMALL LETTER B WITH DOT BELOW */
3038 return (Py_UNICODE)0x1E04;
3039 case 0x1E07: /* LATIN SMALL LETTER B WITH LINE BELOW */
3040 return (Py_UNICODE)0x1E06;
3041 case 0x1E09: /* LATIN SMALL LETTER C WITH CEDILLA AND ACUTE */
3042 return (Py_UNICODE)0x1E08;
3043 case 0x1E0B: /* LATIN SMALL LETTER D WITH DOT ABOVE */
3044 return (Py_UNICODE)0x1E0A;
3045 case 0x1E0D: /* LATIN SMALL LETTER D WITH DOT BELOW */
3046 return (Py_UNICODE)0x1E0C;
3047 case 0x1E0F: /* LATIN SMALL LETTER D WITH LINE BELOW */
3048 return (Py_UNICODE)0x1E0E;
3049 case 0x1E11: /* LATIN SMALL LETTER D WITH CEDILLA */
3050 return (Py_UNICODE)0x1E10;
3051 case 0x1E13: /* LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW */
3052 return (Py_UNICODE)0x1E12;
3053 case 0x1E15: /* LATIN SMALL LETTER E WITH MACRON AND GRAVE */
3054 return (Py_UNICODE)0x1E14;
3055 case 0x1E17: /* LATIN SMALL LETTER E WITH MACRON AND ACUTE */
3056 return (Py_UNICODE)0x1E16;
3057 case 0x1E19: /* LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW */
3058 return (Py_UNICODE)0x1E18;
3059 case 0x1E1B: /* LATIN SMALL LETTER E WITH TILDE BELOW */
3060 return (Py_UNICODE)0x1E1A;
3061 case 0x1E1D: /* LATIN SMALL LETTER E WITH CEDILLA AND BREVE */
3062 return (Py_UNICODE)0x1E1C;
3063 case 0x1E1F: /* LATIN SMALL LETTER F WITH DOT ABOVE */
3064 return (Py_UNICODE)0x1E1E;
3065 case 0x1E21: /* LATIN SMALL LETTER G WITH MACRON */
3066 return (Py_UNICODE)0x1E20;
3067 case 0x1E23: /* LATIN SMALL LETTER H WITH DOT ABOVE */
3068 return (Py_UNICODE)0x1E22;
3069 case 0x1E25: /* LATIN SMALL LETTER H WITH DOT BELOW */
3070 return (Py_UNICODE)0x1E24;
3071 case 0x1E27: /* LATIN SMALL LETTER H WITH DIAERESIS */
3072 return (Py_UNICODE)0x1E26;
3073 case 0x1E29: /* LATIN SMALL LETTER H WITH CEDILLA */
3074 return (Py_UNICODE)0x1E28;
3075 case 0x1E2B: /* LATIN SMALL LETTER H WITH BREVE BELOW */
3076 return (Py_UNICODE)0x1E2A;
3077 case 0x1E2D: /* LATIN SMALL LETTER I WITH TILDE BELOW */
3078 return (Py_UNICODE)0x1E2C;
3079 case 0x1E2F: /* LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE */
3080 return (Py_UNICODE)0x1E2E;
3081 case 0x1E31: /* LATIN SMALL LETTER K WITH ACUTE */
3082 return (Py_UNICODE)0x1E30;
3083 case 0x1E33: /* LATIN SMALL LETTER K WITH DOT BELOW */
3084 return (Py_UNICODE)0x1E32;
3085 case 0x1E35: /* LATIN SMALL LETTER K WITH LINE BELOW */
3086 return (Py_UNICODE)0x1E34;
3087 case 0x1E37: /* LATIN SMALL LETTER L WITH DOT BELOW */
3088 return (Py_UNICODE)0x1E36;
3089 case 0x1E39: /* LATIN SMALL LETTER L WITH DOT BELOW AND MACRON */
3090 return (Py_UNICODE)0x1E38;
3091 case 0x1E3B: /* LATIN SMALL LETTER L WITH LINE BELOW */
3092 return (Py_UNICODE)0x1E3A;
3093 case 0x1E3D: /* LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW */
3094 return (Py_UNICODE)0x1E3C;
3095 case 0x1E3F: /* LATIN SMALL LETTER M WITH ACUTE */
3096 return (Py_UNICODE)0x1E3E;
3097 case 0x1E41: /* LATIN SMALL LETTER M WITH DOT ABOVE */
3098 return (Py_UNICODE)0x1E40;
3099 case 0x1E43: /* LATIN SMALL LETTER M WITH DOT BELOW */
3100 return (Py_UNICODE)0x1E42;
3101 case 0x1E45: /* LATIN SMALL LETTER N WITH DOT ABOVE */
3102 return (Py_UNICODE)0x1E44;
3103 case 0x1E47: /* LATIN SMALL LETTER N WITH DOT BELOW */
3104 return (Py_UNICODE)0x1E46;
3105 case 0x1E49: /* LATIN SMALL LETTER N WITH LINE BELOW */
3106 return (Py_UNICODE)0x1E48;
3107 case 0x1E4B: /* LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW */
3108 return (Py_UNICODE)0x1E4A;
3109 case 0x1E4D: /* LATIN SMALL LETTER O WITH TILDE AND ACUTE */
3110 return (Py_UNICODE)0x1E4C;
3111 case 0x1E4F: /* LATIN SMALL LETTER O WITH TILDE AND DIAERESIS */
3112 return (Py_UNICODE)0x1E4E;
3113 case 0x1E51: /* LATIN SMALL LETTER O WITH MACRON AND GRAVE */
3114 return (Py_UNICODE)0x1E50;
3115 case 0x1E53: /* LATIN SMALL LETTER O WITH MACRON AND ACUTE */
3116 return (Py_UNICODE)0x1E52;
3117 case 0x1E55: /* LATIN SMALL LETTER P WITH ACUTE */
3118 return (Py_UNICODE)0x1E54;
3119 case 0x1E57: /* LATIN SMALL LETTER P WITH DOT ABOVE */
3120 return (Py_UNICODE)0x1E56;
3121 case 0x1E59: /* LATIN SMALL LETTER R WITH DOT ABOVE */
3122 return (Py_UNICODE)0x1E58;
3123 case 0x1E5B: /* LATIN SMALL LETTER R WITH DOT BELOW */
3124 return (Py_UNICODE)0x1E5A;
3125 case 0x1E5D: /* LATIN SMALL LETTER R WITH DOT BELOW AND MACRON */
3126 return (Py_UNICODE)0x1E5C;
3127 case 0x1E5F: /* LATIN SMALL LETTER R WITH LINE BELOW */
3128 return (Py_UNICODE)0x1E5E;
3129 case 0x1E61: /* LATIN SMALL LETTER S WITH DOT ABOVE */
3130 return (Py_UNICODE)0x1E60;
3131 case 0x1E63: /* LATIN SMALL LETTER S WITH DOT BELOW */
3132 return (Py_UNICODE)0x1E62;
3133 case 0x1E65: /* LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE */
3134 return (Py_UNICODE)0x1E64;
3135 case 0x1E67: /* LATIN SMALL LETTER S WITH CARON AND DOT ABOVE */
3136 return (Py_UNICODE)0x1E66;
3137 case 0x1E69: /* LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE */
3138 return (Py_UNICODE)0x1E68;
3139 case 0x1E6B: /* LATIN SMALL LETTER T WITH DOT ABOVE */
3140 return (Py_UNICODE)0x1E6A;
3141 case 0x1E6D: /* LATIN SMALL LETTER T WITH DOT BELOW */
3142 return (Py_UNICODE)0x1E6C;
3143 case 0x1E6F: /* LATIN SMALL LETTER T WITH LINE BELOW */
3144 return (Py_UNICODE)0x1E6E;
3145 case 0x1E71: /* LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW */
3146 return (Py_UNICODE)0x1E70;
3147 case 0x1E73: /* LATIN SMALL LETTER U WITH DIAERESIS BELOW */
3148 return (Py_UNICODE)0x1E72;
3149 case 0x1E75: /* LATIN SMALL LETTER U WITH TILDE BELOW */
3150 return (Py_UNICODE)0x1E74;
3151 case 0x1E77: /* LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW */
3152 return (Py_UNICODE)0x1E76;
3153 case 0x1E79: /* LATIN SMALL LETTER U WITH TILDE AND ACUTE */
3154 return (Py_UNICODE)0x1E78;
3155 case 0x1E7B: /* LATIN SMALL LETTER U WITH MACRON AND DIAERESIS */
3156 return (Py_UNICODE)0x1E7A;
3157 case 0x1E7D: /* LATIN SMALL LETTER V WITH TILDE */
3158 return (Py_UNICODE)0x1E7C;
3159 case 0x1E7F: /* LATIN SMALL LETTER V WITH DOT BELOW */
3160 return (Py_UNICODE)0x1E7E;
3161 case 0x1E81: /* LATIN SMALL LETTER W WITH GRAVE */
3162 return (Py_UNICODE)0x1E80;
3163 case 0x1E83: /* LATIN SMALL LETTER W WITH ACUTE */
3164 return (Py_UNICODE)0x1E82;
3165 case 0x1E85: /* LATIN SMALL LETTER W WITH DIAERESIS */
3166 return (Py_UNICODE)0x1E84;
3167 case 0x1E87: /* LATIN SMALL LETTER W WITH DOT ABOVE */
3168 return (Py_UNICODE)0x1E86;
3169 case 0x1E89: /* LATIN SMALL LETTER W WITH DOT BELOW */
3170 return (Py_UNICODE)0x1E88;
3171 case 0x1E8B: /* LATIN SMALL LETTER X WITH DOT ABOVE */
3172 return (Py_UNICODE)0x1E8A;
3173 case 0x1E8D: /* LATIN SMALL LETTER X WITH DIAERESIS */
3174 return (Py_UNICODE)0x1E8C;
3175 case 0x1E8F: /* LATIN SMALL LETTER Y WITH DOT ABOVE */
3176 return (Py_UNICODE)0x1E8E;
3177 case 0x1E91: /* LATIN SMALL LETTER Z WITH CIRCUMFLEX */
3178 return (Py_UNICODE)0x1E90;
3179 case 0x1E93: /* LATIN SMALL LETTER Z WITH DOT BELOW */
3180 return (Py_UNICODE)0x1E92;
3181 case 0x1E95: /* LATIN SMALL LETTER Z WITH LINE BELOW */
3182 return (Py_UNICODE)0x1E94;
3183 case 0x1E9B: /* LATIN SMALL LETTER LONG S WITH DOT ABOVE */
3184 return (Py_UNICODE)0x1E60;
3185 case 0x1EA1: /* LATIN SMALL LETTER A WITH DOT BELOW */
3186 return (Py_UNICODE)0x1EA0;
3187 case 0x1EA3: /* LATIN SMALL LETTER A WITH HOOK ABOVE */
3188 return (Py_UNICODE)0x1EA2;
3189 case 0x1EA5: /* LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE */
3190 return (Py_UNICODE)0x1EA4;
3191 case 0x1EA7: /* LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE */
3192 return (Py_UNICODE)0x1EA6;
3193 case 0x1EA9: /* LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */
3194 return (Py_UNICODE)0x1EA8;
3195 case 0x1EAB: /* LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE */
3196 return (Py_UNICODE)0x1EAA;
3197 case 0x1EAD: /* LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW */
3198 return (Py_UNICODE)0x1EAC;
3199 case 0x1EAF: /* LATIN SMALL LETTER A WITH BREVE AND ACUTE */
3200 return (Py_UNICODE)0x1EAE;
3201 case 0x1EB1: /* LATIN SMALL LETTER A WITH BREVE AND GRAVE */
3202 return (Py_UNICODE)0x1EB0;
3203 case 0x1EB3: /* LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE */
3204 return (Py_UNICODE)0x1EB2;
3205 case 0x1EB5: /* LATIN SMALL LETTER A WITH BREVE AND TILDE */
3206 return (Py_UNICODE)0x1EB4;
3207 case 0x1EB7: /* LATIN SMALL LETTER A WITH BREVE AND DOT BELOW */
3208 return (Py_UNICODE)0x1EB6;
3209 case 0x1EB9: /* LATIN SMALL LETTER E WITH DOT BELOW */
3210 return (Py_UNICODE)0x1EB8;
3211 case 0x1EBB: /* LATIN SMALL LETTER E WITH HOOK ABOVE */
3212 return (Py_UNICODE)0x1EBA;
3213 case 0x1EBD: /* LATIN SMALL LETTER E WITH TILDE */
3214 return (Py_UNICODE)0x1EBC;
3215 case 0x1EBF: /* LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE */
3216 return (Py_UNICODE)0x1EBE;
3217 case 0x1EC1: /* LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE */
3218 return (Py_UNICODE)0x1EC0;
3219 case 0x1EC3: /* LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */
3220 return (Py_UNICODE)0x1EC2;
3221 case 0x1EC5: /* LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE */
3222 return (Py_UNICODE)0x1EC4;
3223 case 0x1EC7: /* LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW */
3224 return (Py_UNICODE)0x1EC6;
3225 case 0x1EC9: /* LATIN SMALL LETTER I WITH HOOK ABOVE */
3226 return (Py_UNICODE)0x1EC8;
3227 case 0x1ECB: /* LATIN SMALL LETTER I WITH DOT BELOW */
3228 return (Py_UNICODE)0x1ECA;
3229 case 0x1ECD: /* LATIN SMALL LETTER O WITH DOT BELOW */
3230 return (Py_UNICODE)0x1ECC;
3231 case 0x1ECF: /* LATIN SMALL LETTER O WITH HOOK ABOVE */
3232 return (Py_UNICODE)0x1ECE;
3233 case 0x1ED1: /* LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE */
3234 return (Py_UNICODE)0x1ED0;
3235 case 0x1ED3: /* LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE */
3236 return (Py_UNICODE)0x1ED2;
3237 case 0x1ED5: /* LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */
3238 return (Py_UNICODE)0x1ED4;
3239 case 0x1ED7: /* LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE */
3240 return (Py_UNICODE)0x1ED6;
3241 case 0x1ED9: /* LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW */
3242 return (Py_UNICODE)0x1ED8;
3243 case 0x1EDB: /* LATIN SMALL LETTER O WITH HORN AND ACUTE */
3244 return (Py_UNICODE)0x1EDA;
3245 case 0x1EDD: /* LATIN SMALL LETTER O WITH HORN AND GRAVE */
3246 return (Py_UNICODE)0x1EDC;
3247 case 0x1EDF: /* LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE */
3248 return (Py_UNICODE)0x1EDE;
3249 case 0x1EE1: /* LATIN SMALL LETTER O WITH HORN AND TILDE */
3250 return (Py_UNICODE)0x1EE0;
3251 case 0x1EE3: /* LATIN SMALL LETTER O WITH HORN AND DOT BELOW */
3252 return (Py_UNICODE)0x1EE2;
3253 case 0x1EE5: /* LATIN SMALL LETTER U WITH DOT BELOW */
3254 return (Py_UNICODE)0x1EE4;
3255 case 0x1EE7: /* LATIN SMALL LETTER U WITH HOOK ABOVE */
3256 return (Py_UNICODE)0x1EE6;
3257 case 0x1EE9: /* LATIN SMALL LETTER U WITH HORN AND ACUTE */
3258 return (Py_UNICODE)0x1EE8;
3259 case 0x1EEB: /* LATIN SMALL LETTER U WITH HORN AND GRAVE */
3260 return (Py_UNICODE)0x1EEA;
3261 case 0x1EED: /* LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE */
3262 return (Py_UNICODE)0x1EEC;
3263 case 0x1EEF: /* LATIN SMALL LETTER U WITH HORN AND TILDE */
3264 return (Py_UNICODE)0x1EEE;
3265 case 0x1EF1: /* LATIN SMALL LETTER U WITH HORN AND DOT BELOW */
3266 return (Py_UNICODE)0x1EF0;
3267 case 0x1EF3: /* LATIN SMALL LETTER Y WITH GRAVE */
3268 return (Py_UNICODE)0x1EF2;
3269 case 0x1EF5: /* LATIN SMALL LETTER Y WITH DOT BELOW */
3270 return (Py_UNICODE)0x1EF4;
3271 case 0x1EF7: /* LATIN SMALL LETTER Y WITH HOOK ABOVE */
3272 return (Py_UNICODE)0x1EF6;
3273 case 0x1EF9: /* LATIN SMALL LETTER Y WITH TILDE */
3274 return (Py_UNICODE)0x1EF8;
3275 case 0x1F00: /* GREEK SMALL LETTER ALPHA WITH PSILI */
3276 return (Py_UNICODE)0x1F08;
3277 case 0x1F01: /* GREEK SMALL LETTER ALPHA WITH DASIA */
3278 return (Py_UNICODE)0x1F09;
3279 case 0x1F02: /* GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA */
3280 return (Py_UNICODE)0x1F0A;
3281 case 0x1F03: /* GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA */
3282 return (Py_UNICODE)0x1F0B;
3283 case 0x1F04: /* GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA */
3284 return (Py_UNICODE)0x1F0C;
3285 case 0x1F05: /* GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA */
3286 return (Py_UNICODE)0x1F0D;
3287 case 0x1F06: /* GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI */
3288 return (Py_UNICODE)0x1F0E;
3289 case 0x1F07: /* GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI */
3290 return (Py_UNICODE)0x1F0F;
3291 case 0x1F10: /* GREEK SMALL LETTER EPSILON WITH PSILI */
3292 return (Py_UNICODE)0x1F18;
3293 case 0x1F11: /* GREEK SMALL LETTER EPSILON WITH DASIA */
3294 return (Py_UNICODE)0x1F19;
3295 case 0x1F12: /* GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA */
3296 return (Py_UNICODE)0x1F1A;
3297 case 0x1F13: /* GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA */
3298 return (Py_UNICODE)0x1F1B;
3299 case 0x1F14: /* GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA */
3300 return (Py_UNICODE)0x1F1C;
3301 case 0x1F15: /* GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA */
3302 return (Py_UNICODE)0x1F1D;
3303 case 0x1F20: /* GREEK SMALL LETTER ETA WITH PSILI */
3304 return (Py_UNICODE)0x1F28;
3305 case 0x1F21: /* GREEK SMALL LETTER ETA WITH DASIA */
3306 return (Py_UNICODE)0x1F29;
3307 case 0x1F22: /* GREEK SMALL LETTER ETA WITH PSILI AND VARIA */
3308 return (Py_UNICODE)0x1F2A;
3309 case 0x1F23: /* GREEK SMALL LETTER ETA WITH DASIA AND VARIA */
3310 return (Py_UNICODE)0x1F2B;
3311 case 0x1F24: /* GREEK SMALL LETTER ETA WITH PSILI AND OXIA */
3312 return (Py_UNICODE)0x1F2C;
3313 case 0x1F25: /* GREEK SMALL LETTER ETA WITH DASIA AND OXIA */
3314 return (Py_UNICODE)0x1F2D;
3315 case 0x1F26: /* GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI */
3316 return (Py_UNICODE)0x1F2E;
3317 case 0x1F27: /* GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI */
3318 return (Py_UNICODE)0x1F2F;
3319 case 0x1F30: /* GREEK SMALL LETTER IOTA WITH PSILI */
3320 return (Py_UNICODE)0x1F38;
3321 case 0x1F31: /* GREEK SMALL LETTER IOTA WITH DASIA */
3322 return (Py_UNICODE)0x1F39;
3323 case 0x1F32: /* GREEK SMALL LETTER IOTA WITH PSILI AND VARIA */
3324 return (Py_UNICODE)0x1F3A;
3325 case 0x1F33: /* GREEK SMALL LETTER IOTA WITH DASIA AND VARIA */
3326 return (Py_UNICODE)0x1F3B;
3327 case 0x1F34: /* GREEK SMALL LETTER IOTA WITH PSILI AND OXIA */
3328 return (Py_UNICODE)0x1F3C;
3329 case 0x1F35: /* GREEK SMALL LETTER IOTA WITH DASIA AND OXIA */
3330 return (Py_UNICODE)0x1F3D;
3331 case 0x1F36: /* GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI */
3332 return (Py_UNICODE)0x1F3E;
3333 case 0x1F37: /* GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI */
3334 return (Py_UNICODE)0x1F3F;
3335 case 0x1F40: /* GREEK SMALL LETTER OMICRON WITH PSILI */
3336 return (Py_UNICODE)0x1F48;
3337 case 0x1F41: /* GREEK SMALL LETTER OMICRON WITH DASIA */
3338 return (Py_UNICODE)0x1F49;
3339 case 0x1F42: /* GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA */
3340 return (Py_UNICODE)0x1F4A;
3341 case 0x1F43: /* GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA */
3342 return (Py_UNICODE)0x1F4B;
3343 case 0x1F44: /* GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA */
3344 return (Py_UNICODE)0x1F4C;
3345 case 0x1F45: /* GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA */
3346 return (Py_UNICODE)0x1F4D;
3347 case 0x1F51: /* GREEK SMALL LETTER UPSILON WITH DASIA */
3348 return (Py_UNICODE)0x1F59;
3349 case 0x1F53: /* GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA */
3350 return (Py_UNICODE)0x1F5B;
3351 case 0x1F55: /* GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA */
3352 return (Py_UNICODE)0x1F5D;
3353 case 0x1F57: /* GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI */
3354 return (Py_UNICODE)0x1F5F;
3355 case 0x1F60: /* GREEK SMALL LETTER OMEGA WITH PSILI */
3356 return (Py_UNICODE)0x1F68;
3357 case 0x1F61: /* GREEK SMALL LETTER OMEGA WITH DASIA */
3358 return (Py_UNICODE)0x1F69;
3359 case 0x1F62: /* GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA */
3360 return (Py_UNICODE)0x1F6A;
3361 case 0x1F63: /* GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA */
3362 return (Py_UNICODE)0x1F6B;
3363 case 0x1F64: /* GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA */
3364 return (Py_UNICODE)0x1F6C;
3365 case 0x1F65: /* GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA */
3366 return (Py_UNICODE)0x1F6D;
3367 case 0x1F66: /* GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI */
3368 return (Py_UNICODE)0x1F6E;
3369 case 0x1F67: /* GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI */
3370 return (Py_UNICODE)0x1F6F;
3371 case 0x1F70: /* GREEK SMALL LETTER ALPHA WITH VARIA */
3372 return (Py_UNICODE)0x1FBA;
3373 case 0x1F71: /* GREEK SMALL LETTER ALPHA WITH OXIA */
3374 return (Py_UNICODE)0x1FBB;
3375 case 0x1F72: /* GREEK SMALL LETTER EPSILON WITH VARIA */
3376 return (Py_UNICODE)0x1FC8;
3377 case 0x1F73: /* GREEK SMALL LETTER EPSILON WITH OXIA */
3378 return (Py_UNICODE)0x1FC9;
3379 case 0x1F74: /* GREEK SMALL LETTER ETA WITH VARIA */
3380 return (Py_UNICODE)0x1FCA;
3381 case 0x1F75: /* GREEK SMALL LETTER ETA WITH OXIA */
3382 return (Py_UNICODE)0x1FCB;
3383 case 0x1F76: /* GREEK SMALL LETTER IOTA WITH VARIA */
3384 return (Py_UNICODE)0x1FDA;
3385 case 0x1F77: /* GREEK SMALL LETTER IOTA WITH OXIA */
3386 return (Py_UNICODE)0x1FDB;
3387 case 0x1F78: /* GREEK SMALL LETTER OMICRON WITH VARIA */
3388 return (Py_UNICODE)0x1FF8;
3389 case 0x1F79: /* GREEK SMALL LETTER OMICRON WITH OXIA */
3390 return (Py_UNICODE)0x1FF9;
3391 case 0x1F7A: /* GREEK SMALL LETTER UPSILON WITH VARIA */
3392 return (Py_UNICODE)0x1FEA;
3393 case 0x1F7B: /* GREEK SMALL LETTER UPSILON WITH OXIA */
3394 return (Py_UNICODE)0x1FEB;
3395 case 0x1F7C: /* GREEK SMALL LETTER OMEGA WITH VARIA */
3396 return (Py_UNICODE)0x1FFA;
3397 case 0x1F7D: /* GREEK SMALL LETTER OMEGA WITH OXIA */
3398 return (Py_UNICODE)0x1FFB;
3399 case 0x1F80: /* GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI */
3400 return (Py_UNICODE)0x1F88;
3401 case 0x1F81: /* GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI */
3402 return (Py_UNICODE)0x1F89;
3403 case 0x1F82: /* GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI */
3404 return (Py_UNICODE)0x1F8A;
3405 case 0x1F83: /* GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI */
3406 return (Py_UNICODE)0x1F8B;
3407 case 0x1F84: /* GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI */
3408 return (Py_UNICODE)0x1F8C;
3409 case 0x1F85: /* GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI */
3410 return (Py_UNICODE)0x1F8D;
3411 case 0x1F86: /* GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */
3412 return (Py_UNICODE)0x1F8E;
3413 case 0x1F87: /* GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */
3414 return (Py_UNICODE)0x1F8F;
3415 case 0x1F90: /* GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI */
3416 return (Py_UNICODE)0x1F98;
3417 case 0x1F91: /* GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI */
3418 return (Py_UNICODE)0x1F99;
3419 case 0x1F92: /* GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI */
3420 return (Py_UNICODE)0x1F9A;
3421 case 0x1F93: /* GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI */
3422 return (Py_UNICODE)0x1F9B;
3423 case 0x1F94: /* GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI */
3424 return (Py_UNICODE)0x1F9C;
3425 case 0x1F95: /* GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI */
3426 return (Py_UNICODE)0x1F9D;
3427 case 0x1F96: /* GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */
3428 return (Py_UNICODE)0x1F9E;
3429 case 0x1F97: /* GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */
3430 return (Py_UNICODE)0x1F9F;
3431 case 0x1FA0: /* GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI */
3432 return (Py_UNICODE)0x1FA8;
3433 case 0x1FA1: /* GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI */
3434 return (Py_UNICODE)0x1FA9;
3435 case 0x1FA2: /* GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI */
3436 return (Py_UNICODE)0x1FAA;
3437 case 0x1FA3: /* GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI */
3438 return (Py_UNICODE)0x1FAB;
3439 case 0x1FA4: /* GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI */
3440 return (Py_UNICODE)0x1FAC;
3441 case 0x1FA5: /* GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI */
3442 return (Py_UNICODE)0x1FAD;
3443 case 0x1FA6: /* GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */
3444 return (Py_UNICODE)0x1FAE;
3445 case 0x1FA7: /* GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */
3446 return (Py_UNICODE)0x1FAF;
3447 case 0x1FB0: /* GREEK SMALL LETTER ALPHA WITH VRACHY */
3448 return (Py_UNICODE)0x1FB8;
3449 case 0x1FB1: /* GREEK SMALL LETTER ALPHA WITH MACRON */
3450 return (Py_UNICODE)0x1FB9;
3451 case 0x1FB3: /* GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI */
3452 return (Py_UNICODE)0x1FBC;
3453 case 0x1FBE: /* GREEK PROSGEGRAMMENI */
3454 return (Py_UNICODE)0x0399;
3455 case 0x1FC3: /* GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI */
3456 return (Py_UNICODE)0x1FCC;
3457 case 0x1FD0: /* GREEK SMALL LETTER IOTA WITH VRACHY */
3458 return (Py_UNICODE)0x1FD8;
3459 case 0x1FD1: /* GREEK SMALL LETTER IOTA WITH MACRON */
3460 return (Py_UNICODE)0x1FD9;
3461 case 0x1FE0: /* GREEK SMALL LETTER UPSILON WITH VRACHY */
3462 return (Py_UNICODE)0x1FE8;
3463 case 0x1FE1: /* GREEK SMALL LETTER UPSILON WITH MACRON */
3464 return (Py_UNICODE)0x1FE9;
3465 case 0x1FE5: /* GREEK SMALL LETTER RHO WITH DASIA */
3466 return (Py_UNICODE)0x1FEC;
3467 case 0x1FF3: /* GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI */
3468 return (Py_UNICODE)0x1FFC;
3469 case 0x2170: /* SMALL ROMAN NUMERAL ONE */
3470 return (Py_UNICODE)0x2160;
3471 case 0x2171: /* SMALL ROMAN NUMERAL TWO */
3472 return (Py_UNICODE)0x2161;
3473 case 0x2172: /* SMALL ROMAN NUMERAL THREE */
3474 return (Py_UNICODE)0x2162;
3475 case 0x2173: /* SMALL ROMAN NUMERAL FOUR */
3476 return (Py_UNICODE)0x2163;
3477 case 0x2174: /* SMALL ROMAN NUMERAL FIVE */
3478 return (Py_UNICODE)0x2164;
3479 case 0x2175: /* SMALL ROMAN NUMERAL SIX */
3480 return (Py_UNICODE)0x2165;
3481 case 0x2176: /* SMALL ROMAN NUMERAL SEVEN */
3482 return (Py_UNICODE)0x2166;
3483 case 0x2177: /* SMALL ROMAN NUMERAL EIGHT */
3484 return (Py_UNICODE)0x2167;
3485 case 0x2178: /* SMALL ROMAN NUMERAL NINE */
3486 return (Py_UNICODE)0x2168;
3487 case 0x2179: /* SMALL ROMAN NUMERAL TEN */
3488 return (Py_UNICODE)0x2169;
3489 case 0x217A: /* SMALL ROMAN NUMERAL ELEVEN */
3490 return (Py_UNICODE)0x216A;
3491 case 0x217B: /* SMALL ROMAN NUMERAL TWELVE */
3492 return (Py_UNICODE)0x216B;
3493 case 0x217C: /* SMALL ROMAN NUMERAL FIFTY */
3494 return (Py_UNICODE)0x216C;
3495 case 0x217D: /* SMALL ROMAN NUMERAL ONE HUNDRED */
3496 return (Py_UNICODE)0x216D;
3497 case 0x217E: /* SMALL ROMAN NUMERAL FIVE HUNDRED */
3498 return (Py_UNICODE)0x216E;
3499 case 0x217F: /* SMALL ROMAN NUMERAL ONE THOUSAND */
3500 return (Py_UNICODE)0x216F;
3501 case 0x24D0: /* CIRCLED LATIN SMALL LETTER A */
3502 return (Py_UNICODE)0x24B6;
3503 case 0x24D1: /* CIRCLED LATIN SMALL LETTER B */
3504 return (Py_UNICODE)0x24B7;
3505 case 0x24D2: /* CIRCLED LATIN SMALL LETTER C */
3506 return (Py_UNICODE)0x24B8;
3507 case 0x24D3: /* CIRCLED LATIN SMALL LETTER D */
3508 return (Py_UNICODE)0x24B9;
3509 case 0x24D4: /* CIRCLED LATIN SMALL LETTER E */
3510 return (Py_UNICODE)0x24BA;
3511 case 0x24D5: /* CIRCLED LATIN SMALL LETTER F */
3512 return (Py_UNICODE)0x24BB;
3513 case 0x24D6: /* CIRCLED LATIN SMALL LETTER G */
3514 return (Py_UNICODE)0x24BC;
3515 case 0x24D7: /* CIRCLED LATIN SMALL LETTER H */
3516 return (Py_UNICODE)0x24BD;
3517 case 0x24D8: /* CIRCLED LATIN SMALL LETTER I */
3518 return (Py_UNICODE)0x24BE;
3519 case 0x24D9: /* CIRCLED LATIN SMALL LETTER J */
3520 return (Py_UNICODE)0x24BF;
3521 case 0x24DA: /* CIRCLED LATIN SMALL LETTER K */
3522 return (Py_UNICODE)0x24C0;
3523 case 0x24DB: /* CIRCLED LATIN SMALL LETTER L */
3524 return (Py_UNICODE)0x24C1;
3525 case 0x24DC: /* CIRCLED LATIN SMALL LETTER M */
3526 return (Py_UNICODE)0x24C2;
3527 case 0x24DD: /* CIRCLED LATIN SMALL LETTER N */
3528 return (Py_UNICODE)0x24C3;
3529 case 0x24DE: /* CIRCLED LATIN SMALL LETTER O */
3530 return (Py_UNICODE)0x24C4;
3531 case 0x24DF: /* CIRCLED LATIN SMALL LETTER P */
3532 return (Py_UNICODE)0x24C5;
3533 case 0x24E0: /* CIRCLED LATIN SMALL LETTER Q */
3534 return (Py_UNICODE)0x24C6;
3535 case 0x24E1: /* CIRCLED LATIN SMALL LETTER R */
3536 return (Py_UNICODE)0x24C7;
3537 case 0x24E2: /* CIRCLED LATIN SMALL LETTER S */
3538 return (Py_UNICODE)0x24C8;
3539 case 0x24E3: /* CIRCLED LATIN SMALL LETTER T */
3540 return (Py_UNICODE)0x24C9;
3541 case 0x24E4: /* CIRCLED LATIN SMALL LETTER U */
3542 return (Py_UNICODE)0x24CA;
3543 case 0x24E5: /* CIRCLED LATIN SMALL LETTER V */
3544 return (Py_UNICODE)0x24CB;
3545 case 0x24E6: /* CIRCLED LATIN SMALL LETTER W */
3546 return (Py_UNICODE)0x24CC;
3547 case 0x24E7: /* CIRCLED LATIN SMALL LETTER X */
3548 return (Py_UNICODE)0x24CD;
3549 case 0x24E8: /* CIRCLED LATIN SMALL LETTER Y */
3550 return (Py_UNICODE)0x24CE;
3551 case 0x24E9: /* CIRCLED LATIN SMALL LETTER Z */
3552 return (Py_UNICODE)0x24CF;
3553 case 0xFF41: /* FULLWIDTH LATIN SMALL LETTER A */
3554 return (Py_UNICODE)0xFF21;
3555 case 0xFF42: /* FULLWIDTH LATIN SMALL LETTER B */
3556 return (Py_UNICODE)0xFF22;
3557 case 0xFF43: /* FULLWIDTH LATIN SMALL LETTER C */
3558 return (Py_UNICODE)0xFF23;
3559 case 0xFF44: /* FULLWIDTH LATIN SMALL LETTER D */
3560 return (Py_UNICODE)0xFF24;
3561 case 0xFF45: /* FULLWIDTH LATIN SMALL LETTER E */
3562 return (Py_UNICODE)0xFF25;
3563 case 0xFF46: /* FULLWIDTH LATIN SMALL LETTER F */
3564 return (Py_UNICODE)0xFF26;
3565 case 0xFF47: /* FULLWIDTH LATIN SMALL LETTER G */
3566 return (Py_UNICODE)0xFF27;
3567 case 0xFF48: /* FULLWIDTH LATIN SMALL LETTER H */
3568 return (Py_UNICODE)0xFF28;
3569 case 0xFF49: /* FULLWIDTH LATIN SMALL LETTER I */
3570 return (Py_UNICODE)0xFF29;
3571 case 0xFF4A: /* FULLWIDTH LATIN SMALL LETTER J */
3572 return (Py_UNICODE)0xFF2A;
3573 case 0xFF4B: /* FULLWIDTH LATIN SMALL LETTER K */
3574 return (Py_UNICODE)0xFF2B;
3575 case 0xFF4C: /* FULLWIDTH LATIN SMALL LETTER L */
3576 return (Py_UNICODE)0xFF2C;
3577 case 0xFF4D: /* FULLWIDTH LATIN SMALL LETTER M */
3578 return (Py_UNICODE)0xFF2D;
3579 case 0xFF4E: /* FULLWIDTH LATIN SMALL LETTER N */
3580 return (Py_UNICODE)0xFF2E;
3581 case 0xFF4F: /* FULLWIDTH LATIN SMALL LETTER O */
3582 return (Py_UNICODE)0xFF2F;
3583 case 0xFF50: /* FULLWIDTH LATIN SMALL LETTER P */
3584 return (Py_UNICODE)0xFF30;
3585 case 0xFF51: /* FULLWIDTH LATIN SMALL LETTER Q */
3586 return (Py_UNICODE)0xFF31;
3587 case 0xFF52: /* FULLWIDTH LATIN SMALL LETTER R */
3588 return (Py_UNICODE)0xFF32;
3589 case 0xFF53: /* FULLWIDTH LATIN SMALL LETTER S */
3590 return (Py_UNICODE)0xFF33;
3591 case 0xFF54: /* FULLWIDTH LATIN SMALL LETTER T */
3592 return (Py_UNICODE)0xFF34;
3593 case 0xFF55: /* FULLWIDTH LATIN SMALL LETTER U */
3594 return (Py_UNICODE)0xFF35;
3595 case 0xFF56: /* FULLWIDTH LATIN SMALL LETTER V */
3596 return (Py_UNICODE)0xFF36;
3597 case 0xFF57: /* FULLWIDTH LATIN SMALL LETTER W */
3598 return (Py_UNICODE)0xFF37;
3599 case 0xFF58: /* FULLWIDTH LATIN SMALL LETTER X */
3600 return (Py_UNICODE)0xFF38;
3601 case 0xFF59: /* FULLWIDTH LATIN SMALL LETTER Y */
3602 return (Py_UNICODE)0xFF39;
3603 case 0xFF5A: /* FULLWIDTH LATIN SMALL LETTER Z */
3604 return (Py_UNICODE)0xFF3A;
3605 default:
3606 return ch;
3607 }
3608}
3609
3610/* Returns the lowercase Unicode characters corresponding to ch or just
3611 ch if no lowercase mapping is known. */
3612
3613Py_UNICODE _PyUnicode_ToLowercase(register const Py_UNICODE ch)
3614{
3615 switch (ch) {
3616 case 0x0041: /* LATIN CAPITAL LETTER A */
3617 return (Py_UNICODE)0x0061;
3618 case 0x0042: /* LATIN CAPITAL LETTER B */
3619 return (Py_UNICODE)0x0062;
3620 case 0x0043: /* LATIN CAPITAL LETTER C */
3621 return (Py_UNICODE)0x0063;
3622 case 0x0044: /* LATIN CAPITAL LETTER D */
3623 return (Py_UNICODE)0x0064;
3624 case 0x0045: /* LATIN CAPITAL LETTER E */
3625 return (Py_UNICODE)0x0065;
3626 case 0x0046: /* LATIN CAPITAL LETTER F */
3627 return (Py_UNICODE)0x0066;
3628 case 0x0047: /* LATIN CAPITAL LETTER G */
3629 return (Py_UNICODE)0x0067;
3630 case 0x0048: /* LATIN CAPITAL LETTER H */
3631 return (Py_UNICODE)0x0068;
3632 case 0x0049: /* LATIN CAPITAL LETTER I */
3633 return (Py_UNICODE)0x0069;
3634 case 0x004A: /* LATIN CAPITAL LETTER J */
3635 return (Py_UNICODE)0x006A;
3636 case 0x004B: /* LATIN CAPITAL LETTER K */
3637 return (Py_UNICODE)0x006B;
3638 case 0x004C: /* LATIN CAPITAL LETTER L */
3639 return (Py_UNICODE)0x006C;
3640 case 0x004D: /* LATIN CAPITAL LETTER M */
3641 return (Py_UNICODE)0x006D;
3642 case 0x004E: /* LATIN CAPITAL LETTER N */
3643 return (Py_UNICODE)0x006E;
3644 case 0x004F: /* LATIN CAPITAL LETTER O */
3645 return (Py_UNICODE)0x006F;
3646 case 0x0050: /* LATIN CAPITAL LETTER P */
3647 return (Py_UNICODE)0x0070;
3648 case 0x0051: /* LATIN CAPITAL LETTER Q */
3649 return (Py_UNICODE)0x0071;
3650 case 0x0052: /* LATIN CAPITAL LETTER R */
3651 return (Py_UNICODE)0x0072;
3652 case 0x0053: /* LATIN CAPITAL LETTER S */
3653 return (Py_UNICODE)0x0073;
3654 case 0x0054: /* LATIN CAPITAL LETTER T */
3655 return (Py_UNICODE)0x0074;
3656 case 0x0055: /* LATIN CAPITAL LETTER U */
3657 return (Py_UNICODE)0x0075;
3658 case 0x0056: /* LATIN CAPITAL LETTER V */
3659 return (Py_UNICODE)0x0076;
3660 case 0x0057: /* LATIN CAPITAL LETTER W */
3661 return (Py_UNICODE)0x0077;
3662 case 0x0058: /* LATIN CAPITAL LETTER X */
3663 return (Py_UNICODE)0x0078;
3664 case 0x0059: /* LATIN CAPITAL LETTER Y */
3665 return (Py_UNICODE)0x0079;
3666 case 0x005A: /* LATIN CAPITAL LETTER Z */
3667 return (Py_UNICODE)0x007A;
3668 case 0x00C0: /* LATIN CAPITAL LETTER A WITH GRAVE */
3669 return (Py_UNICODE)0x00E0;
3670 case 0x00C1: /* LATIN CAPITAL LETTER A WITH ACUTE */
3671 return (Py_UNICODE)0x00E1;
3672 case 0x00C2: /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */
3673 return (Py_UNICODE)0x00E2;
3674 case 0x00C3: /* LATIN CAPITAL LETTER A WITH TILDE */
3675 return (Py_UNICODE)0x00E3;
3676 case 0x00C4: /* LATIN CAPITAL LETTER A WITH DIAERESIS */
3677 return (Py_UNICODE)0x00E4;
3678 case 0x00C5: /* LATIN CAPITAL LETTER A WITH RING ABOVE */
3679 return (Py_UNICODE)0x00E5;
3680 case 0x00C6: /* LATIN CAPITAL LETTER AE */
3681 return (Py_UNICODE)0x00E6;
3682 case 0x00C7: /* LATIN CAPITAL LETTER C WITH CEDILLA */
3683 return (Py_UNICODE)0x00E7;
3684 case 0x00C8: /* LATIN CAPITAL LETTER E WITH GRAVE */
3685 return (Py_UNICODE)0x00E8;
3686 case 0x00C9: /* LATIN CAPITAL LETTER E WITH ACUTE */
3687 return (Py_UNICODE)0x00E9;
3688 case 0x00CA: /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX */
3689 return (Py_UNICODE)0x00EA;
3690 case 0x00CB: /* LATIN CAPITAL LETTER E WITH DIAERESIS */
3691 return (Py_UNICODE)0x00EB;
3692 case 0x00CC: /* LATIN CAPITAL LETTER I WITH GRAVE */
3693 return (Py_UNICODE)0x00EC;
3694 case 0x00CD: /* LATIN CAPITAL LETTER I WITH ACUTE */
3695 return (Py_UNICODE)0x00ED;
3696 case 0x00CE: /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */
3697 return (Py_UNICODE)0x00EE;
3698 case 0x00CF: /* LATIN CAPITAL LETTER I WITH DIAERESIS */
3699 return (Py_UNICODE)0x00EF;
3700 case 0x00D0: /* LATIN CAPITAL LETTER ETH */
3701 return (Py_UNICODE)0x00F0;
3702 case 0x00D1: /* LATIN CAPITAL LETTER N WITH TILDE */
3703 return (Py_UNICODE)0x00F1;
3704 case 0x00D2: /* LATIN CAPITAL LETTER O WITH GRAVE */
3705 return (Py_UNICODE)0x00F2;
3706 case 0x00D3: /* LATIN CAPITAL LETTER O WITH ACUTE */
3707 return (Py_UNICODE)0x00F3;
3708 case 0x00D4: /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */
3709 return (Py_UNICODE)0x00F4;
3710 case 0x00D5: /* LATIN CAPITAL LETTER O WITH TILDE */
3711 return (Py_UNICODE)0x00F5;
3712 case 0x00D6: /* LATIN CAPITAL LETTER O WITH DIAERESIS */
3713 return (Py_UNICODE)0x00F6;
3714 case 0x00D8: /* LATIN CAPITAL LETTER O WITH STROKE */
3715 return (Py_UNICODE)0x00F8;
3716 case 0x00D9: /* LATIN CAPITAL LETTER U WITH GRAVE */
3717 return (Py_UNICODE)0x00F9;
3718 case 0x00DA: /* LATIN CAPITAL LETTER U WITH ACUTE */
3719 return (Py_UNICODE)0x00FA;
3720 case 0x00DB: /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX */
3721 return (Py_UNICODE)0x00FB;
3722 case 0x00DC: /* LATIN CAPITAL LETTER U WITH DIAERESIS */
3723 return (Py_UNICODE)0x00FC;
3724 case 0x00DD: /* LATIN CAPITAL LETTER Y WITH ACUTE */
3725 return (Py_UNICODE)0x00FD;
3726 case 0x00DE: /* LATIN CAPITAL LETTER THORN */
3727 return (Py_UNICODE)0x00FE;
3728 case 0x0100: /* LATIN CAPITAL LETTER A WITH MACRON */
3729 return (Py_UNICODE)0x0101;
3730 case 0x0102: /* LATIN CAPITAL LETTER A WITH BREVE */
3731 return (Py_UNICODE)0x0103;
3732 case 0x0104: /* LATIN CAPITAL LETTER A WITH OGONEK */
3733 return (Py_UNICODE)0x0105;
3734 case 0x0106: /* LATIN CAPITAL LETTER C WITH ACUTE */
3735 return (Py_UNICODE)0x0107;
3736 case 0x0108: /* LATIN CAPITAL LETTER C WITH CIRCUMFLEX */
3737 return (Py_UNICODE)0x0109;
3738 case 0x010A: /* LATIN CAPITAL LETTER C WITH DOT ABOVE */
3739 return (Py_UNICODE)0x010B;
3740 case 0x010C: /* LATIN CAPITAL LETTER C WITH CARON */
3741 return (Py_UNICODE)0x010D;
3742 case 0x010E: /* LATIN CAPITAL LETTER D WITH CARON */
3743 return (Py_UNICODE)0x010F;
3744 case 0x0110: /* LATIN CAPITAL LETTER D WITH STROKE */
3745 return (Py_UNICODE)0x0111;
3746 case 0x0112: /* LATIN CAPITAL LETTER E WITH MACRON */
3747 return (Py_UNICODE)0x0113;
3748 case 0x0114: /* LATIN CAPITAL LETTER E WITH BREVE */
3749 return (Py_UNICODE)0x0115;
3750 case 0x0116: /* LATIN CAPITAL LETTER E WITH DOT ABOVE */
3751 return (Py_UNICODE)0x0117;
3752 case 0x0118: /* LATIN CAPITAL LETTER E WITH OGONEK */
3753 return (Py_UNICODE)0x0119;
3754 case 0x011A: /* LATIN CAPITAL LETTER E WITH CARON */
3755 return (Py_UNICODE)0x011B;
3756 case 0x011C: /* LATIN CAPITAL LETTER G WITH CIRCUMFLEX */
3757 return (Py_UNICODE)0x011D;
3758 case 0x011E: /* LATIN CAPITAL LETTER G WITH BREVE */
3759 return (Py_UNICODE)0x011F;
3760 case 0x0120: /* LATIN CAPITAL LETTER G WITH DOT ABOVE */
3761 return (Py_UNICODE)0x0121;
3762 case 0x0122: /* LATIN CAPITAL LETTER G WITH CEDILLA */
3763 return (Py_UNICODE)0x0123;
3764 case 0x0124: /* LATIN CAPITAL LETTER H WITH CIRCUMFLEX */
3765 return (Py_UNICODE)0x0125;
3766 case 0x0126: /* LATIN CAPITAL LETTER H WITH STROKE */
3767 return (Py_UNICODE)0x0127;
3768 case 0x0128: /* LATIN CAPITAL LETTER I WITH TILDE */
3769 return (Py_UNICODE)0x0129;
3770 case 0x012A: /* LATIN CAPITAL LETTER I WITH MACRON */
3771 return (Py_UNICODE)0x012B;
3772 case 0x012C: /* LATIN CAPITAL LETTER I WITH BREVE */
3773 return (Py_UNICODE)0x012D;
3774 case 0x012E: /* LATIN CAPITAL LETTER I WITH OGONEK */
3775 return (Py_UNICODE)0x012F;
3776 case 0x0130: /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
3777 return (Py_UNICODE)0x0069;
3778 case 0x0132: /* LATIN CAPITAL LIGATURE IJ */
3779 return (Py_UNICODE)0x0133;
3780 case 0x0134: /* LATIN CAPITAL LETTER J WITH CIRCUMFLEX */
3781 return (Py_UNICODE)0x0135;
3782 case 0x0136: /* LATIN CAPITAL LETTER K WITH CEDILLA */
3783 return (Py_UNICODE)0x0137;
3784 case 0x0139: /* LATIN CAPITAL LETTER L WITH ACUTE */
3785 return (Py_UNICODE)0x013A;
3786 case 0x013B: /* LATIN CAPITAL LETTER L WITH CEDILLA */
3787 return (Py_UNICODE)0x013C;
3788 case 0x013D: /* LATIN CAPITAL LETTER L WITH CARON */
3789 return (Py_UNICODE)0x013E;
3790 case 0x013F: /* LATIN CAPITAL LETTER L WITH MIDDLE DOT */
3791 return (Py_UNICODE)0x0140;
3792 case 0x0141: /* LATIN CAPITAL LETTER L WITH STROKE */
3793 return (Py_UNICODE)0x0142;
3794 case 0x0143: /* LATIN CAPITAL LETTER N WITH ACUTE */
3795 return (Py_UNICODE)0x0144;
3796 case 0x0145: /* LATIN CAPITAL LETTER N WITH CEDILLA */
3797 return (Py_UNICODE)0x0146;
3798 case 0x0147: /* LATIN CAPITAL LETTER N WITH CARON */
3799 return (Py_UNICODE)0x0148;
3800 case 0x014A: /* LATIN CAPITAL LETTER ENG */
3801 return (Py_UNICODE)0x014B;
3802 case 0x014C: /* LATIN CAPITAL LETTER O WITH MACRON */
3803 return (Py_UNICODE)0x014D;
3804 case 0x014E: /* LATIN CAPITAL LETTER O WITH BREVE */
3805 return (Py_UNICODE)0x014F;
3806 case 0x0150: /* LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */
3807 return (Py_UNICODE)0x0151;
3808 case 0x0152: /* LATIN CAPITAL LIGATURE OE */
3809 return (Py_UNICODE)0x0153;
3810 case 0x0154: /* LATIN CAPITAL LETTER R WITH ACUTE */
3811 return (Py_UNICODE)0x0155;
3812 case 0x0156: /* LATIN CAPITAL LETTER R WITH CEDILLA */
3813 return (Py_UNICODE)0x0157;
3814 case 0x0158: /* LATIN CAPITAL LETTER R WITH CARON */
3815 return (Py_UNICODE)0x0159;
3816 case 0x015A: /* LATIN CAPITAL LETTER S WITH ACUTE */
3817 return (Py_UNICODE)0x015B;
3818 case 0x015C: /* LATIN CAPITAL LETTER S WITH CIRCUMFLEX */
3819 return (Py_UNICODE)0x015D;
3820 case 0x015E: /* LATIN CAPITAL LETTER S WITH CEDILLA */
3821 return (Py_UNICODE)0x015F;
3822 case 0x0160: /* LATIN CAPITAL LETTER S WITH CARON */
3823 return (Py_UNICODE)0x0161;
3824 case 0x0162: /* LATIN CAPITAL LETTER T WITH CEDILLA */
3825 return (Py_UNICODE)0x0163;
3826 case 0x0164: /* LATIN CAPITAL LETTER T WITH CARON */
3827 return (Py_UNICODE)0x0165;
3828 case 0x0166: /* LATIN CAPITAL LETTER T WITH STROKE */
3829 return (Py_UNICODE)0x0167;
3830 case 0x0168: /* LATIN CAPITAL LETTER U WITH TILDE */
3831 return (Py_UNICODE)0x0169;
3832 case 0x016A: /* LATIN CAPITAL LETTER U WITH MACRON */
3833 return (Py_UNICODE)0x016B;
3834 case 0x016C: /* LATIN CAPITAL LETTER U WITH BREVE */
3835 return (Py_UNICODE)0x016D;
3836 case 0x016E: /* LATIN CAPITAL LETTER U WITH RING ABOVE */
3837 return (Py_UNICODE)0x016F;
3838 case 0x0170: /* LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */
3839 return (Py_UNICODE)0x0171;
3840 case 0x0172: /* LATIN CAPITAL LETTER U WITH OGONEK */
3841 return (Py_UNICODE)0x0173;
3842 case 0x0174: /* LATIN CAPITAL LETTER W WITH CIRCUMFLEX */
3843 return (Py_UNICODE)0x0175;
3844 case 0x0176: /* LATIN CAPITAL LETTER Y WITH CIRCUMFLEX */
3845 return (Py_UNICODE)0x0177;
3846 case 0x0178: /* LATIN CAPITAL LETTER Y WITH DIAERESIS */
3847 return (Py_UNICODE)0x00FF;
3848 case 0x0179: /* LATIN CAPITAL LETTER Z WITH ACUTE */
3849 return (Py_UNICODE)0x017A;
3850 case 0x017B: /* LATIN CAPITAL LETTER Z WITH DOT ABOVE */
3851 return (Py_UNICODE)0x017C;
3852 case 0x017D: /* LATIN CAPITAL LETTER Z WITH CARON */
3853 return (Py_UNICODE)0x017E;
3854 case 0x0181: /* LATIN CAPITAL LETTER B WITH HOOK */
3855 return (Py_UNICODE)0x0253;
3856 case 0x0182: /* LATIN CAPITAL LETTER B WITH TOPBAR */
3857 return (Py_UNICODE)0x0183;
3858 case 0x0184: /* LATIN CAPITAL LETTER TONE SIX */
3859 return (Py_UNICODE)0x0185;
3860 case 0x0186: /* LATIN CAPITAL LETTER OPEN O */
3861 return (Py_UNICODE)0x0254;
3862 case 0x0187: /* LATIN CAPITAL LETTER C WITH HOOK */
3863 return (Py_UNICODE)0x0188;
3864 case 0x0189: /* LATIN CAPITAL LETTER AFRICAN D */
3865 return (Py_UNICODE)0x0256;
3866 case 0x018A: /* LATIN CAPITAL LETTER D WITH HOOK */
3867 return (Py_UNICODE)0x0257;
3868 case 0x018B: /* LATIN CAPITAL LETTER D WITH TOPBAR */
3869 return (Py_UNICODE)0x018C;
3870 case 0x018E: /* LATIN CAPITAL LETTER REVERSED E */
3871 return (Py_UNICODE)0x01DD;
3872 case 0x018F: /* LATIN CAPITAL LETTER SCHWA */
3873 return (Py_UNICODE)0x0259;
3874 case 0x0190: /* LATIN CAPITAL LETTER OPEN E */
3875 return (Py_UNICODE)0x025B;
3876 case 0x0191: /* LATIN CAPITAL LETTER F WITH HOOK */
3877 return (Py_UNICODE)0x0192;
3878 case 0x0193: /* LATIN CAPITAL LETTER G WITH HOOK */
3879 return (Py_UNICODE)0x0260;
3880 case 0x0194: /* LATIN CAPITAL LETTER GAMMA */
3881 return (Py_UNICODE)0x0263;
3882 case 0x0196: /* LATIN CAPITAL LETTER IOTA */
3883 return (Py_UNICODE)0x0269;
3884 case 0x0197: /* LATIN CAPITAL LETTER I WITH STROKE */
3885 return (Py_UNICODE)0x0268;
3886 case 0x0198: /* LATIN CAPITAL LETTER K WITH HOOK */
3887 return (Py_UNICODE)0x0199;
3888 case 0x019C: /* LATIN CAPITAL LETTER TURNED M */
3889 return (Py_UNICODE)0x026F;
3890 case 0x019D: /* LATIN CAPITAL LETTER N WITH LEFT HOOK */
3891 return (Py_UNICODE)0x0272;
3892 case 0x019F: /* LATIN CAPITAL LETTER O WITH MIDDLE TILDE */
3893 return (Py_UNICODE)0x0275;
3894 case 0x01A0: /* LATIN CAPITAL LETTER O WITH HORN */
3895 return (Py_UNICODE)0x01A1;
3896 case 0x01A2: /* LATIN CAPITAL LETTER OI */
3897 return (Py_UNICODE)0x01A3;
3898 case 0x01A4: /* LATIN CAPITAL LETTER P WITH HOOK */
3899 return (Py_UNICODE)0x01A5;
3900 case 0x01A6: /* LATIN LETTER YR */
3901 return (Py_UNICODE)0x0280;
3902 case 0x01A7: /* LATIN CAPITAL LETTER TONE TWO */
3903 return (Py_UNICODE)0x01A8;
3904 case 0x01A9: /* LATIN CAPITAL LETTER ESH */
3905 return (Py_UNICODE)0x0283;
3906 case 0x01AC: /* LATIN CAPITAL LETTER T WITH HOOK */
3907 return (Py_UNICODE)0x01AD;
3908 case 0x01AE: /* LATIN CAPITAL LETTER T WITH RETROFLEX HOOK */
3909 return (Py_UNICODE)0x0288;
3910 case 0x01AF: /* LATIN CAPITAL LETTER U WITH HORN */
3911 return (Py_UNICODE)0x01B0;
3912 case 0x01B1: /* LATIN CAPITAL LETTER UPSILON */
3913 return (Py_UNICODE)0x028A;
3914 case 0x01B2: /* LATIN CAPITAL LETTER V WITH HOOK */
3915 return (Py_UNICODE)0x028B;
3916 case 0x01B3: /* LATIN CAPITAL LETTER Y WITH HOOK */
3917 return (Py_UNICODE)0x01B4;
3918 case 0x01B5: /* LATIN CAPITAL LETTER Z WITH STROKE */
3919 return (Py_UNICODE)0x01B6;
3920 case 0x01B7: /* LATIN CAPITAL LETTER EZH */
3921 return (Py_UNICODE)0x0292;
3922 case 0x01B8: /* LATIN CAPITAL LETTER EZH REVERSED */
3923 return (Py_UNICODE)0x01B9;
3924 case 0x01BC: /* LATIN CAPITAL LETTER TONE FIVE */
3925 return (Py_UNICODE)0x01BD;
3926 case 0x01C4: /* LATIN CAPITAL LETTER DZ WITH CARON */
3927 return (Py_UNICODE)0x01C6;
3928 case 0x01C5: /* LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON */
3929 return (Py_UNICODE)0x01C6;
3930 case 0x01C7: /* LATIN CAPITAL LETTER LJ */
3931 return (Py_UNICODE)0x01C9;
3932 case 0x01C8: /* LATIN CAPITAL LETTER L WITH SMALL LETTER J */
3933 return (Py_UNICODE)0x01C9;
3934 case 0x01CA: /* LATIN CAPITAL LETTER NJ */
3935 return (Py_UNICODE)0x01CC;
3936 case 0x01CB: /* LATIN CAPITAL LETTER N WITH SMALL LETTER J */
3937 return (Py_UNICODE)0x01CC;
3938 case 0x01CD: /* LATIN CAPITAL LETTER A WITH CARON */
3939 return (Py_UNICODE)0x01CE;
3940 case 0x01CF: /* LATIN CAPITAL LETTER I WITH CARON */
3941 return (Py_UNICODE)0x01D0;
3942 case 0x01D1: /* LATIN CAPITAL LETTER O WITH CARON */
3943 return (Py_UNICODE)0x01D2;
3944 case 0x01D3: /* LATIN CAPITAL LETTER U WITH CARON */
3945 return (Py_UNICODE)0x01D4;
3946 case 0x01D5: /* LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON */
3947 return (Py_UNICODE)0x01D6;
3948 case 0x01D7: /* LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE */
3949 return (Py_UNICODE)0x01D8;
3950 case 0x01D9: /* LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON */
3951 return (Py_UNICODE)0x01DA;
3952 case 0x01DB: /* LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE */
3953 return (Py_UNICODE)0x01DC;
3954 case 0x01DE: /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
3955 return (Py_UNICODE)0x01DF;
3956 case 0x01E0: /* LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON */
3957 return (Py_UNICODE)0x01E1;
3958 case 0x01E2: /* LATIN CAPITAL LETTER AE WITH MACRON */
3959 return (Py_UNICODE)0x01E3;
3960 case 0x01E4: /* LATIN CAPITAL LETTER G WITH STROKE */
3961 return (Py_UNICODE)0x01E5;
3962 case 0x01E6: /* LATIN CAPITAL LETTER G WITH CARON */
3963 return (Py_UNICODE)0x01E7;
3964 case 0x01E8: /* LATIN CAPITAL LETTER K WITH CARON */
3965 return (Py_UNICODE)0x01E9;
3966 case 0x01EA: /* LATIN CAPITAL LETTER O WITH OGONEK */
3967 return (Py_UNICODE)0x01EB;
3968 case 0x01EC: /* LATIN CAPITAL LETTER O WITH OGONEK AND MACRON */
3969 return (Py_UNICODE)0x01ED;
3970 case 0x01EE: /* LATIN CAPITAL LETTER EZH WITH CARON */
3971 return (Py_UNICODE)0x01EF;
3972 case 0x01F1: /* LATIN CAPITAL LETTER DZ */
3973 return (Py_UNICODE)0x01F3;
3974 case 0x01F2: /* LATIN CAPITAL LETTER D WITH SMALL LETTER Z */
3975 return (Py_UNICODE)0x01F3;
3976 case 0x01F4: /* LATIN CAPITAL LETTER G WITH ACUTE */
3977 return (Py_UNICODE)0x01F5;
3978 case 0x01F6: /* LATIN CAPITAL LETTER HWAIR */
3979 return (Py_UNICODE)0x0195;
3980 case 0x01F7: /* LATIN CAPITAL LETTER WYNN */
3981 return (Py_UNICODE)0x01BF;
3982 case 0x01F8: /* LATIN CAPITAL LETTER N WITH GRAVE */
3983 return (Py_UNICODE)0x01F9;
3984 case 0x01FA: /* LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE */
3985 return (Py_UNICODE)0x01FB;
3986 case 0x01FC: /* LATIN CAPITAL LETTER AE WITH ACUTE */
3987 return (Py_UNICODE)0x01FD;
3988 case 0x01FE: /* LATIN CAPITAL LETTER O WITH STROKE AND ACUTE */
3989 return (Py_UNICODE)0x01FF;
3990 case 0x0200: /* LATIN CAPITAL LETTER A WITH DOUBLE GRAVE */
3991 return (Py_UNICODE)0x0201;
3992 case 0x0202: /* LATIN CAPITAL LETTER A WITH INVERTED BREVE */
3993 return (Py_UNICODE)0x0203;
3994 case 0x0204: /* LATIN CAPITAL LETTER E WITH DOUBLE GRAVE */
3995 return (Py_UNICODE)0x0205;
3996 case 0x0206: /* LATIN CAPITAL LETTER E WITH INVERTED BREVE */
3997 return (Py_UNICODE)0x0207;
3998 case 0x0208: /* LATIN CAPITAL LETTER I WITH DOUBLE GRAVE */
3999 return (Py_UNICODE)0x0209;
4000 case 0x020A: /* LATIN CAPITAL LETTER I WITH INVERTED BREVE */
4001 return (Py_UNICODE)0x020B;
4002 case 0x020C: /* LATIN CAPITAL LETTER O WITH DOUBLE GRAVE */
4003 return (Py_UNICODE)0x020D;
4004 case 0x020E: /* LATIN CAPITAL LETTER O WITH INVERTED BREVE */
4005 return (Py_UNICODE)0x020F;
4006 case 0x0210: /* LATIN CAPITAL LETTER R WITH DOUBLE GRAVE */
4007 return (Py_UNICODE)0x0211;
4008 case 0x0212: /* LATIN CAPITAL LETTER R WITH INVERTED BREVE */
4009 return (Py_UNICODE)0x0213;
4010 case 0x0214: /* LATIN CAPITAL LETTER U WITH DOUBLE GRAVE */
4011 return (Py_UNICODE)0x0215;
4012 case 0x0216: /* LATIN CAPITAL LETTER U WITH INVERTED BREVE */
4013 return (Py_UNICODE)0x0217;
4014 case 0x0218: /* LATIN CAPITAL LETTER S WITH COMMA BELOW */
4015 return (Py_UNICODE)0x0219;
4016 case 0x021A: /* LATIN CAPITAL LETTER T WITH COMMA BELOW */
4017 return (Py_UNICODE)0x021B;
4018 case 0x021C: /* LATIN CAPITAL LETTER YOGH */
4019 return (Py_UNICODE)0x021D;
4020 case 0x021E: /* LATIN CAPITAL LETTER H WITH CARON */
4021 return (Py_UNICODE)0x021F;
4022 case 0x0222: /* LATIN CAPITAL LETTER OU */
4023 return (Py_UNICODE)0x0223;
4024 case 0x0224: /* LATIN CAPITAL LETTER Z WITH HOOK */
4025 return (Py_UNICODE)0x0225;
4026 case 0x0226: /* LATIN CAPITAL LETTER A WITH DOT ABOVE */
4027 return (Py_UNICODE)0x0227;
4028 case 0x0228: /* LATIN CAPITAL LETTER E WITH CEDILLA */
4029 return (Py_UNICODE)0x0229;
4030 case 0x022A: /* LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON */
4031 return (Py_UNICODE)0x022B;
4032 case 0x022C: /* LATIN CAPITAL LETTER O WITH TILDE AND MACRON */
4033 return (Py_UNICODE)0x022D;
4034 case 0x022E: /* LATIN CAPITAL LETTER O WITH DOT ABOVE */
4035 return (Py_UNICODE)0x022F;
4036 case 0x0230: /* LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON */
4037 return (Py_UNICODE)0x0231;
4038 case 0x0232: /* LATIN CAPITAL LETTER Y WITH MACRON */
4039 return (Py_UNICODE)0x0233;
4040 case 0x0386: /* GREEK CAPITAL LETTER ALPHA WITH TONOS */
4041 return (Py_UNICODE)0x03AC;
4042 case 0x0388: /* GREEK CAPITAL LETTER EPSILON WITH TONOS */
4043 return (Py_UNICODE)0x03AD;
4044 case 0x0389: /* GREEK CAPITAL LETTER ETA WITH TONOS */
4045 return (Py_UNICODE)0x03AE;
4046 case 0x038A: /* GREEK CAPITAL LETTER IOTA WITH TONOS */
4047 return (Py_UNICODE)0x03AF;
4048 case 0x038C: /* GREEK CAPITAL LETTER OMICRON WITH TONOS */
4049 return (Py_UNICODE)0x03CC;
4050 case 0x038E: /* GREEK CAPITAL LETTER UPSILON WITH TONOS */
4051 return (Py_UNICODE)0x03CD;
4052 case 0x038F: /* GREEK CAPITAL LETTER OMEGA WITH TONOS */
4053 return (Py_UNICODE)0x03CE;
4054 case 0x0391: /* GREEK CAPITAL LETTER ALPHA */
4055 return (Py_UNICODE)0x03B1;
4056 case 0x0392: /* GREEK CAPITAL LETTER BETA */
4057 return (Py_UNICODE)0x03B2;
4058 case 0x0393: /* GREEK CAPITAL LETTER GAMMA */
4059 return (Py_UNICODE)0x03B3;
4060 case 0x0394: /* GREEK CAPITAL LETTER DELTA */
4061 return (Py_UNICODE)0x03B4;
4062 case 0x0395: /* GREEK CAPITAL LETTER EPSILON */
4063 return (Py_UNICODE)0x03B5;
4064 case 0x0396: /* GREEK CAPITAL LETTER ZETA */
4065 return (Py_UNICODE)0x03B6;
4066 case 0x0397: /* GREEK CAPITAL LETTER ETA */
4067 return (Py_UNICODE)0x03B7;
4068 case 0x0398: /* GREEK CAPITAL LETTER THETA */
4069 return (Py_UNICODE)0x03B8;
4070 case 0x0399: /* GREEK CAPITAL LETTER IOTA */
4071 return (Py_UNICODE)0x03B9;
4072 case 0x039A: /* GREEK CAPITAL LETTER KAPPA */
4073 return (Py_UNICODE)0x03BA;
4074 case 0x039B: /* GREEK CAPITAL LETTER LAMDA */
4075 return (Py_UNICODE)0x03BB;
4076 case 0x039C: /* GREEK CAPITAL LETTER MU */
4077 return (Py_UNICODE)0x03BC;
4078 case 0x039D: /* GREEK CAPITAL LETTER NU */
4079 return (Py_UNICODE)0x03BD;
4080 case 0x039E: /* GREEK CAPITAL LETTER XI */
4081 return (Py_UNICODE)0x03BE;
4082 case 0x039F: /* GREEK CAPITAL LETTER OMICRON */
4083 return (Py_UNICODE)0x03BF;
4084 case 0x03A0: /* GREEK CAPITAL LETTER PI */
4085 return (Py_UNICODE)0x03C0;
4086 case 0x03A1: /* GREEK CAPITAL LETTER RHO */
4087 return (Py_UNICODE)0x03C1;
4088 case 0x03A3: /* GREEK CAPITAL LETTER SIGMA */
4089 return (Py_UNICODE)0x03C3;
4090 case 0x03A4: /* GREEK CAPITAL LETTER TAU */
4091 return (Py_UNICODE)0x03C4;
4092 case 0x03A5: /* GREEK CAPITAL LETTER UPSILON */
4093 return (Py_UNICODE)0x03C5;
4094 case 0x03A6: /* GREEK CAPITAL LETTER PHI */
4095 return (Py_UNICODE)0x03C6;
4096 case 0x03A7: /* GREEK CAPITAL LETTER CHI */
4097 return (Py_UNICODE)0x03C7;
4098 case 0x03A8: /* GREEK CAPITAL LETTER PSI */
4099 return (Py_UNICODE)0x03C8;
4100 case 0x03A9: /* GREEK CAPITAL LETTER OMEGA */
4101 return (Py_UNICODE)0x03C9;
4102 case 0x03AA: /* GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */
4103 return (Py_UNICODE)0x03CA;
4104 case 0x03AB: /* GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */
4105 return (Py_UNICODE)0x03CB;
4106 case 0x03DA: /* GREEK LETTER STIGMA */
4107 return (Py_UNICODE)0x03DB;
4108 case 0x03DC: /* GREEK LETTER DIGAMMA */
4109 return (Py_UNICODE)0x03DD;
4110 case 0x03DE: /* GREEK LETTER KOPPA */
4111 return (Py_UNICODE)0x03DF;
4112 case 0x03E0: /* GREEK LETTER SAMPI */
4113 return (Py_UNICODE)0x03E1;
4114 case 0x03E2: /* COPTIC CAPITAL LETTER SHEI */
4115 return (Py_UNICODE)0x03E3;
4116 case 0x03E4: /* COPTIC CAPITAL LETTER FEI */
4117 return (Py_UNICODE)0x03E5;
4118 case 0x03E6: /* COPTIC CAPITAL LETTER KHEI */
4119 return (Py_UNICODE)0x03E7;
4120 case 0x03E8: /* COPTIC CAPITAL LETTER HORI */
4121 return (Py_UNICODE)0x03E9;
4122 case 0x03EA: /* COPTIC CAPITAL LETTER GANGIA */
4123 return (Py_UNICODE)0x03EB;
4124 case 0x03EC: /* COPTIC CAPITAL LETTER SHIMA */
4125 return (Py_UNICODE)0x03ED;
4126 case 0x03EE: /* COPTIC CAPITAL LETTER DEI */
4127 return (Py_UNICODE)0x03EF;
4128 case 0x0400: /* CYRILLIC CAPITAL LETTER IE WITH GRAVE */
4129 return (Py_UNICODE)0x0450;
4130 case 0x0401: /* CYRILLIC CAPITAL LETTER IO */
4131 return (Py_UNICODE)0x0451;
4132 case 0x0402: /* CYRILLIC CAPITAL LETTER DJE */
4133 return (Py_UNICODE)0x0452;
4134 case 0x0403: /* CYRILLIC CAPITAL LETTER GJE */
4135 return (Py_UNICODE)0x0453;
4136 case 0x0404: /* CYRILLIC CAPITAL LETTER UKRAINIAN IE */
4137 return (Py_UNICODE)0x0454;
4138 case 0x0405: /* CYRILLIC CAPITAL LETTER DZE */
4139 return (Py_UNICODE)0x0455;
4140 case 0x0406: /* CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */
4141 return (Py_UNICODE)0x0456;
4142 case 0x0407: /* CYRILLIC CAPITAL LETTER YI */
4143 return (Py_UNICODE)0x0457;
4144 case 0x0408: /* CYRILLIC CAPITAL LETTER JE */
4145 return (Py_UNICODE)0x0458;
4146 case 0x0409: /* CYRILLIC CAPITAL LETTER LJE */
4147 return (Py_UNICODE)0x0459;
4148 case 0x040A: /* CYRILLIC CAPITAL LETTER NJE */
4149 return (Py_UNICODE)0x045A;
4150 case 0x040B: /* CYRILLIC CAPITAL LETTER TSHE */
4151 return (Py_UNICODE)0x045B;
4152 case 0x040C: /* CYRILLIC CAPITAL LETTER KJE */
4153 return (Py_UNICODE)0x045C;
4154 case 0x040D: /* CYRILLIC CAPITAL LETTER I WITH GRAVE */
4155 return (Py_UNICODE)0x045D;
4156 case 0x040E: /* CYRILLIC CAPITAL LETTER SHORT U */
4157 return (Py_UNICODE)0x045E;
4158 case 0x040F: /* CYRILLIC CAPITAL LETTER DZHE */
4159 return (Py_UNICODE)0x045F;
4160 case 0x0410: /* CYRILLIC CAPITAL LETTER A */
4161 return (Py_UNICODE)0x0430;
4162 case 0x0411: /* CYRILLIC CAPITAL LETTER BE */
4163 return (Py_UNICODE)0x0431;
4164 case 0x0412: /* CYRILLIC CAPITAL LETTER VE */
4165 return (Py_UNICODE)0x0432;
4166 case 0x0413: /* CYRILLIC CAPITAL LETTER GHE */
4167 return (Py_UNICODE)0x0433;
4168 case 0x0414: /* CYRILLIC CAPITAL LETTER DE */
4169 return (Py_UNICODE)0x0434;
4170 case 0x0415: /* CYRILLIC CAPITAL LETTER IE */
4171 return (Py_UNICODE)0x0435;
4172 case 0x0416: /* CYRILLIC CAPITAL LETTER ZHE */
4173 return (Py_UNICODE)0x0436;
4174 case 0x0417: /* CYRILLIC CAPITAL LETTER ZE */
4175 return (Py_UNICODE)0x0437;
4176 case 0x0418: /* CYRILLIC CAPITAL LETTER I */
4177 return (Py_UNICODE)0x0438;
4178 case 0x0419: /* CYRILLIC CAPITAL LETTER SHORT I */
4179 return (Py_UNICODE)0x0439;
4180 case 0x041A: /* CYRILLIC CAPITAL LETTER KA */
4181 return (Py_UNICODE)0x043A;
4182 case 0x041B: /* CYRILLIC CAPITAL LETTER EL */
4183 return (Py_UNICODE)0x043B;
4184 case 0x041C: /* CYRILLIC CAPITAL LETTER EM */
4185 return (Py_UNICODE)0x043C;
4186 case 0x041D: /* CYRILLIC CAPITAL LETTER EN */
4187 return (Py_UNICODE)0x043D;
4188 case 0x041E: /* CYRILLIC CAPITAL LETTER O */
4189 return (Py_UNICODE)0x043E;
4190 case 0x041F: /* CYRILLIC CAPITAL LETTER PE */
4191 return (Py_UNICODE)0x043F;
4192 case 0x0420: /* CYRILLIC CAPITAL LETTER ER */
4193 return (Py_UNICODE)0x0440;
4194 case 0x0421: /* CYRILLIC CAPITAL LETTER ES */
4195 return (Py_UNICODE)0x0441;
4196 case 0x0422: /* CYRILLIC CAPITAL LETTER TE */
4197 return (Py_UNICODE)0x0442;
4198 case 0x0423: /* CYRILLIC CAPITAL LETTER U */
4199 return (Py_UNICODE)0x0443;
4200 case 0x0424: /* CYRILLIC CAPITAL LETTER EF */
4201 return (Py_UNICODE)0x0444;
4202 case 0x0425: /* CYRILLIC CAPITAL LETTER HA */
4203 return (Py_UNICODE)0x0445;
4204 case 0x0426: /* CYRILLIC CAPITAL LETTER TSE */
4205 return (Py_UNICODE)0x0446;
4206 case 0x0427: /* CYRILLIC CAPITAL LETTER CHE */
4207 return (Py_UNICODE)0x0447;
4208 case 0x0428: /* CYRILLIC CAPITAL LETTER SHA */
4209 return (Py_UNICODE)0x0448;
4210 case 0x0429: /* CYRILLIC CAPITAL LETTER SHCHA */
4211 return (Py_UNICODE)0x0449;
4212 case 0x042A: /* CYRILLIC CAPITAL LETTER HARD SIGN */
4213 return (Py_UNICODE)0x044A;
4214 case 0x042B: /* CYRILLIC CAPITAL LETTER YERU */
4215 return (Py_UNICODE)0x044B;
4216 case 0x042C: /* CYRILLIC CAPITAL LETTER SOFT SIGN */
4217 return (Py_UNICODE)0x044C;
4218 case 0x042D: /* CYRILLIC CAPITAL LETTER E */
4219 return (Py_UNICODE)0x044D;
4220 case 0x042E: /* CYRILLIC CAPITAL LETTER YU */
4221 return (Py_UNICODE)0x044E;
4222 case 0x042F: /* CYRILLIC CAPITAL LETTER YA */
4223 return (Py_UNICODE)0x044F;
4224 case 0x0460: /* CYRILLIC CAPITAL LETTER OMEGA */
4225 return (Py_UNICODE)0x0461;
4226 case 0x0462: /* CYRILLIC CAPITAL LETTER YAT */
4227 return (Py_UNICODE)0x0463;
4228 case 0x0464: /* CYRILLIC CAPITAL LETTER IOTIFIED E */
4229 return (Py_UNICODE)0x0465;
4230 case 0x0466: /* CYRILLIC CAPITAL LETTER LITTLE YUS */
4231 return (Py_UNICODE)0x0467;
4232 case 0x0468: /* CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS */
4233 return (Py_UNICODE)0x0469;
4234 case 0x046A: /* CYRILLIC CAPITAL LETTER BIG YUS */
4235 return (Py_UNICODE)0x046B;
4236 case 0x046C: /* CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS */
4237 return (Py_UNICODE)0x046D;
4238 case 0x046E: /* CYRILLIC CAPITAL LETTER KSI */
4239 return (Py_UNICODE)0x046F;
4240 case 0x0470: /* CYRILLIC CAPITAL LETTER PSI */
4241 return (Py_UNICODE)0x0471;
4242 case 0x0472: /* CYRILLIC CAPITAL LETTER FITA */
4243 return (Py_UNICODE)0x0473;
4244 case 0x0474: /* CYRILLIC CAPITAL LETTER IZHITSA */
4245 return (Py_UNICODE)0x0475;
4246 case 0x0476: /* CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT */
4247 return (Py_UNICODE)0x0477;
4248 case 0x0478: /* CYRILLIC CAPITAL LETTER UK */
4249 return (Py_UNICODE)0x0479;
4250 case 0x047A: /* CYRILLIC CAPITAL LETTER ROUND OMEGA */
4251 return (Py_UNICODE)0x047B;
4252 case 0x047C: /* CYRILLIC CAPITAL LETTER OMEGA WITH TITLO */
4253 return (Py_UNICODE)0x047D;
4254 case 0x047E: /* CYRILLIC CAPITAL LETTER OT */
4255 return (Py_UNICODE)0x047F;
4256 case 0x0480: /* CYRILLIC CAPITAL LETTER KOPPA */
4257 return (Py_UNICODE)0x0481;
4258 case 0x048C: /* CYRILLIC CAPITAL LETTER SEMISOFT SIGN */
4259 return (Py_UNICODE)0x048D;
4260 case 0x048E: /* CYRILLIC CAPITAL LETTER ER WITH TICK */
4261 return (Py_UNICODE)0x048F;
4262 case 0x0490: /* CYRILLIC CAPITAL LETTER GHE WITH UPTURN */
4263 return (Py_UNICODE)0x0491;
4264 case 0x0492: /* CYRILLIC CAPITAL LETTER GHE WITH STROKE */
4265 return (Py_UNICODE)0x0493;
4266 case 0x0494: /* CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK */
4267 return (Py_UNICODE)0x0495;
4268 case 0x0496: /* CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER */
4269 return (Py_UNICODE)0x0497;
4270 case 0x0498: /* CYRILLIC CAPITAL LETTER ZE WITH DESCENDER */
4271 return (Py_UNICODE)0x0499;
4272 case 0x049A: /* CYRILLIC CAPITAL LETTER KA WITH DESCENDER */
4273 return (Py_UNICODE)0x049B;
4274 case 0x049C: /* CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE */
4275 return (Py_UNICODE)0x049D;
4276 case 0x049E: /* CYRILLIC CAPITAL LETTER KA WITH STROKE */
4277 return (Py_UNICODE)0x049F;
4278 case 0x04A0: /* CYRILLIC CAPITAL LETTER BASHKIR KA */
4279 return (Py_UNICODE)0x04A1;
4280 case 0x04A2: /* CYRILLIC CAPITAL LETTER EN WITH DESCENDER */
4281 return (Py_UNICODE)0x04A3;
4282 case 0x04A4: /* CYRILLIC CAPITAL LIGATURE EN GHE */
4283 return (Py_UNICODE)0x04A5;
4284 case 0x04A6: /* CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK */
4285 return (Py_UNICODE)0x04A7;
4286 case 0x04A8: /* CYRILLIC CAPITAL LETTER ABKHASIAN HA */
4287 return (Py_UNICODE)0x04A9;
4288 case 0x04AA: /* CYRILLIC CAPITAL LETTER ES WITH DESCENDER */
4289 return (Py_UNICODE)0x04AB;
4290 case 0x04AC: /* CYRILLIC CAPITAL LETTER TE WITH DESCENDER */
4291 return (Py_UNICODE)0x04AD;
4292 case 0x04AE: /* CYRILLIC CAPITAL LETTER STRAIGHT U */
4293 return (Py_UNICODE)0x04AF;
4294 case 0x04B0: /* CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE */
4295 return (Py_UNICODE)0x04B1;
4296 case 0x04B2: /* CYRILLIC CAPITAL LETTER HA WITH DESCENDER */
4297 return (Py_UNICODE)0x04B3;
4298 case 0x04B4: /* CYRILLIC CAPITAL LIGATURE TE TSE */
4299 return (Py_UNICODE)0x04B5;
4300 case 0x04B6: /* CYRILLIC CAPITAL LETTER CHE WITH DESCENDER */
4301 return (Py_UNICODE)0x04B7;
4302 case 0x04B8: /* CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE */
4303 return (Py_UNICODE)0x04B9;
4304 case 0x04BA: /* CYRILLIC CAPITAL LETTER SHHA */
4305 return (Py_UNICODE)0x04BB;
4306 case 0x04BC: /* CYRILLIC CAPITAL LETTER ABKHASIAN CHE */
4307 return (Py_UNICODE)0x04BD;
4308 case 0x04BE: /* CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER */
4309 return (Py_UNICODE)0x04BF;
4310 case 0x04C1: /* CYRILLIC CAPITAL LETTER ZHE WITH BREVE */
4311 return (Py_UNICODE)0x04C2;
4312 case 0x04C3: /* CYRILLIC CAPITAL LETTER KA WITH HOOK */
4313 return (Py_UNICODE)0x04C4;
4314 case 0x04C7: /* CYRILLIC CAPITAL LETTER EN WITH HOOK */
4315 return (Py_UNICODE)0x04C8;
4316 case 0x04CB: /* CYRILLIC CAPITAL LETTER KHAKASSIAN CHE */
4317 return (Py_UNICODE)0x04CC;
4318 case 0x04D0: /* CYRILLIC CAPITAL LETTER A WITH BREVE */
4319 return (Py_UNICODE)0x04D1;
4320 case 0x04D2: /* CYRILLIC CAPITAL LETTER A WITH DIAERESIS */
4321 return (Py_UNICODE)0x04D3;
4322 case 0x04D4: /* CYRILLIC CAPITAL LIGATURE A IE */
4323 return (Py_UNICODE)0x04D5;
4324 case 0x04D6: /* CYRILLIC CAPITAL LETTER IE WITH BREVE */
4325 return (Py_UNICODE)0x04D7;
4326 case 0x04D8: /* CYRILLIC CAPITAL LETTER SCHWA */
4327 return (Py_UNICODE)0x04D9;
4328 case 0x04DA: /* CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS */
4329 return (Py_UNICODE)0x04DB;
4330 case 0x04DC: /* CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS */
4331 return (Py_UNICODE)0x04DD;
4332 case 0x04DE: /* CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS */
4333 return (Py_UNICODE)0x04DF;
4334 case 0x04E0: /* CYRILLIC CAPITAL LETTER ABKHASIAN DZE */
4335 return (Py_UNICODE)0x04E1;
4336 case 0x04E2: /* CYRILLIC CAPITAL LETTER I WITH MACRON */
4337 return (Py_UNICODE)0x04E3;
4338 case 0x04E4: /* CYRILLIC CAPITAL LETTER I WITH DIAERESIS */
4339 return (Py_UNICODE)0x04E5;
4340 case 0x04E6: /* CYRILLIC CAPITAL LETTER O WITH DIAERESIS */
4341 return (Py_UNICODE)0x04E7;
4342 case 0x04E8: /* CYRILLIC CAPITAL LETTER BARRED O */
4343 return (Py_UNICODE)0x04E9;
4344 case 0x04EA: /* CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS */
4345 return (Py_UNICODE)0x04EB;
4346 case 0x04EC: /* CYRILLIC CAPITAL LETTER E WITH DIAERESIS */
4347 return (Py_UNICODE)0x04ED;
4348 case 0x04EE: /* CYRILLIC CAPITAL LETTER U WITH MACRON */
4349 return (Py_UNICODE)0x04EF;
4350 case 0x04F0: /* CYRILLIC CAPITAL LETTER U WITH DIAERESIS */
4351 return (Py_UNICODE)0x04F1;
4352 case 0x04F2: /* CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE */
4353 return (Py_UNICODE)0x04F3;
4354 case 0x04F4: /* CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS */
4355 return (Py_UNICODE)0x04F5;
4356 case 0x04F8: /* CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS */
4357 return (Py_UNICODE)0x04F9;
4358 case 0x0531: /* ARMENIAN CAPITAL LETTER AYB */
4359 return (Py_UNICODE)0x0561;
4360 case 0x0532: /* ARMENIAN CAPITAL LETTER BEN */
4361 return (Py_UNICODE)0x0562;
4362 case 0x0533: /* ARMENIAN CAPITAL LETTER GIM */
4363 return (Py_UNICODE)0x0563;
4364 case 0x0534: /* ARMENIAN CAPITAL LETTER DA */
4365 return (Py_UNICODE)0x0564;
4366 case 0x0535: /* ARMENIAN CAPITAL LETTER ECH */
4367 return (Py_UNICODE)0x0565;
4368 case 0x0536: /* ARMENIAN CAPITAL LETTER ZA */
4369 return (Py_UNICODE)0x0566;
4370 case 0x0537: /* ARMENIAN CAPITAL LETTER EH */
4371 return (Py_UNICODE)0x0567;
4372 case 0x0538: /* ARMENIAN CAPITAL LETTER ET */
4373 return (Py_UNICODE)0x0568;
4374 case 0x0539: /* ARMENIAN CAPITAL LETTER TO */
4375 return (Py_UNICODE)0x0569;
4376 case 0x053A: /* ARMENIAN CAPITAL LETTER ZHE */
4377 return (Py_UNICODE)0x056A;
4378 case 0x053B: /* ARMENIAN CAPITAL LETTER INI */
4379 return (Py_UNICODE)0x056B;
4380 case 0x053C: /* ARMENIAN CAPITAL LETTER LIWN */
4381 return (Py_UNICODE)0x056C;
4382 case 0x053D: /* ARMENIAN CAPITAL LETTER XEH */
4383 return (Py_UNICODE)0x056D;
4384 case 0x053E: /* ARMENIAN CAPITAL LETTER CA */
4385 return (Py_UNICODE)0x056E;
4386 case 0x053F: /* ARMENIAN CAPITAL LETTER KEN */
4387 return (Py_UNICODE)0x056F;
4388 case 0x0540: /* ARMENIAN CAPITAL LETTER HO */
4389 return (Py_UNICODE)0x0570;
4390 case 0x0541: /* ARMENIAN CAPITAL LETTER JA */
4391 return (Py_UNICODE)0x0571;
4392 case 0x0542: /* ARMENIAN CAPITAL LETTER GHAD */
4393 return (Py_UNICODE)0x0572;
4394 case 0x0543: /* ARMENIAN CAPITAL LETTER CHEH */
4395 return (Py_UNICODE)0x0573;
4396 case 0x0544: /* ARMENIAN CAPITAL LETTER MEN */
4397 return (Py_UNICODE)0x0574;
4398 case 0x0545: /* ARMENIAN CAPITAL LETTER YI */
4399 return (Py_UNICODE)0x0575;
4400 case 0x0546: /* ARMENIAN CAPITAL LETTER NOW */
4401 return (Py_UNICODE)0x0576;
4402 case 0x0547: /* ARMENIAN CAPITAL LETTER SHA */
4403 return (Py_UNICODE)0x0577;
4404 case 0x0548: /* ARMENIAN CAPITAL LETTER VO */
4405 return (Py_UNICODE)0x0578;
4406 case 0x0549: /* ARMENIAN CAPITAL LETTER CHA */
4407 return (Py_UNICODE)0x0579;
4408 case 0x054A: /* ARMENIAN CAPITAL LETTER PEH */
4409 return (Py_UNICODE)0x057A;
4410 case 0x054B: /* ARMENIAN CAPITAL LETTER JHEH */
4411 return (Py_UNICODE)0x057B;
4412 case 0x054C: /* ARMENIAN CAPITAL LETTER RA */
4413 return (Py_UNICODE)0x057C;
4414 case 0x054D: /* ARMENIAN CAPITAL LETTER SEH */
4415 return (Py_UNICODE)0x057D;
4416 case 0x054E: /* ARMENIAN CAPITAL LETTER VEW */
4417 return (Py_UNICODE)0x057E;
4418 case 0x054F: /* ARMENIAN CAPITAL LETTER TIWN */
4419 return (Py_UNICODE)0x057F;
4420 case 0x0550: /* ARMENIAN CAPITAL LETTER REH */
4421 return (Py_UNICODE)0x0580;
4422 case 0x0551: /* ARMENIAN CAPITAL LETTER CO */
4423 return (Py_UNICODE)0x0581;
4424 case 0x0552: /* ARMENIAN CAPITAL LETTER YIWN */
4425 return (Py_UNICODE)0x0582;
4426 case 0x0553: /* ARMENIAN CAPITAL LETTER PIWR */
4427 return (Py_UNICODE)0x0583;
4428 case 0x0554: /* ARMENIAN CAPITAL LETTER KEH */
4429 return (Py_UNICODE)0x0584;
4430 case 0x0555: /* ARMENIAN CAPITAL LETTER OH */
4431 return (Py_UNICODE)0x0585;
4432 case 0x0556: /* ARMENIAN CAPITAL LETTER FEH */
4433 return (Py_UNICODE)0x0586;
4434 case 0x1E00: /* LATIN CAPITAL LETTER A WITH RING BELOW */
4435 return (Py_UNICODE)0x1E01;
4436 case 0x1E02: /* LATIN CAPITAL LETTER B WITH DOT ABOVE */
4437 return (Py_UNICODE)0x1E03;
4438 case 0x1E04: /* LATIN CAPITAL LETTER B WITH DOT BELOW */
4439 return (Py_UNICODE)0x1E05;
4440 case 0x1E06: /* LATIN CAPITAL LETTER B WITH LINE BELOW */
4441 return (Py_UNICODE)0x1E07;
4442 case 0x1E08: /* LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE */
4443 return (Py_UNICODE)0x1E09;
4444 case 0x1E0A: /* LATIN CAPITAL LETTER D WITH DOT ABOVE */
4445 return (Py_UNICODE)0x1E0B;
4446 case 0x1E0C: /* LATIN CAPITAL LETTER D WITH DOT BELOW */
4447 return (Py_UNICODE)0x1E0D;
4448 case 0x1E0E: /* LATIN CAPITAL LETTER D WITH LINE BELOW */
4449 return (Py_UNICODE)0x1E0F;
4450 case 0x1E10: /* LATIN CAPITAL LETTER D WITH CEDILLA */
4451 return (Py_UNICODE)0x1E11;
4452 case 0x1E12: /* LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW */
4453 return (Py_UNICODE)0x1E13;
4454 case 0x1E14: /* LATIN CAPITAL LETTER E WITH MACRON AND GRAVE */
4455 return (Py_UNICODE)0x1E15;
4456 case 0x1E16: /* LATIN CAPITAL LETTER E WITH MACRON AND ACUTE */
4457 return (Py_UNICODE)0x1E17;
4458 case 0x1E18: /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW */
4459 return (Py_UNICODE)0x1E19;
4460 case 0x1E1A: /* LATIN CAPITAL LETTER E WITH TILDE BELOW */
4461 return (Py_UNICODE)0x1E1B;
4462 case 0x1E1C: /* LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE */
4463 return (Py_UNICODE)0x1E1D;
4464 case 0x1E1E: /* LATIN CAPITAL LETTER F WITH DOT ABOVE */
4465 return (Py_UNICODE)0x1E1F;
4466 case 0x1E20: /* LATIN CAPITAL LETTER G WITH MACRON */
4467 return (Py_UNICODE)0x1E21;
4468 case 0x1E22: /* LATIN CAPITAL LETTER H WITH DOT ABOVE */
4469 return (Py_UNICODE)0x1E23;
4470 case 0x1E24: /* LATIN CAPITAL LETTER H WITH DOT BELOW */
4471 return (Py_UNICODE)0x1E25;
4472 case 0x1E26: /* LATIN CAPITAL LETTER H WITH DIAERESIS */
4473 return (Py_UNICODE)0x1E27;
4474 case 0x1E28: /* LATIN CAPITAL LETTER H WITH CEDILLA */
4475 return (Py_UNICODE)0x1E29;
4476 case 0x1E2A: /* LATIN CAPITAL LETTER H WITH BREVE BELOW */
4477 return (Py_UNICODE)0x1E2B;
4478 case 0x1E2C: /* LATIN CAPITAL LETTER I WITH TILDE BELOW */
4479 return (Py_UNICODE)0x1E2D;
4480 case 0x1E2E: /* LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE */
4481 return (Py_UNICODE)0x1E2F;
4482 case 0x1E30: /* LATIN CAPITAL LETTER K WITH ACUTE */
4483 return (Py_UNICODE)0x1E31;
4484 case 0x1E32: /* LATIN CAPITAL LETTER K WITH DOT BELOW */
4485 return (Py_UNICODE)0x1E33;
4486 case 0x1E34: /* LATIN CAPITAL LETTER K WITH LINE BELOW */
4487 return (Py_UNICODE)0x1E35;
4488 case 0x1E36: /* LATIN CAPITAL LETTER L WITH DOT BELOW */
4489 return (Py_UNICODE)0x1E37;
4490 case 0x1E38: /* LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON */
4491 return (Py_UNICODE)0x1E39;
4492 case 0x1E3A: /* LATIN CAPITAL LETTER L WITH LINE BELOW */
4493 return (Py_UNICODE)0x1E3B;
4494 case 0x1E3C: /* LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW */
4495 return (Py_UNICODE)0x1E3D;
4496 case 0x1E3E: /* LATIN CAPITAL LETTER M WITH ACUTE */
4497 return (Py_UNICODE)0x1E3F;
4498 case 0x1E40: /* LATIN CAPITAL LETTER M WITH DOT ABOVE */
4499 return (Py_UNICODE)0x1E41;
4500 case 0x1E42: /* LATIN CAPITAL LETTER M WITH DOT BELOW */
4501 return (Py_UNICODE)0x1E43;
4502 case 0x1E44: /* LATIN CAPITAL LETTER N WITH DOT ABOVE */
4503 return (Py_UNICODE)0x1E45;
4504 case 0x1E46: /* LATIN CAPITAL LETTER N WITH DOT BELOW */
4505 return (Py_UNICODE)0x1E47;
4506 case 0x1E48: /* LATIN CAPITAL LETTER N WITH LINE BELOW */
4507 return (Py_UNICODE)0x1E49;
4508 case 0x1E4A: /* LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW */
4509 return (Py_UNICODE)0x1E4B;
4510 case 0x1E4C: /* LATIN CAPITAL LETTER O WITH TILDE AND ACUTE */
4511 return (Py_UNICODE)0x1E4D;
4512 case 0x1E4E: /* LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS */
4513 return (Py_UNICODE)0x1E4F;
4514 case 0x1E50: /* LATIN CAPITAL LETTER O WITH MACRON AND GRAVE */
4515 return (Py_UNICODE)0x1E51;
4516 case 0x1E52: /* LATIN CAPITAL LETTER O WITH MACRON AND ACUTE */
4517 return (Py_UNICODE)0x1E53;
4518 case 0x1E54: /* LATIN CAPITAL LETTER P WITH ACUTE */
4519 return (Py_UNICODE)0x1E55;
4520 case 0x1E56: /* LATIN CAPITAL LETTER P WITH DOT ABOVE */
4521 return (Py_UNICODE)0x1E57;
4522 case 0x1E58: /* LATIN CAPITAL LETTER R WITH DOT ABOVE */
4523 return (Py_UNICODE)0x1E59;
4524 case 0x1E5A: /* LATIN CAPITAL LETTER R WITH DOT BELOW */
4525 return (Py_UNICODE)0x1E5B;
4526 case 0x1E5C: /* LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON */
4527 return (Py_UNICODE)0x1E5D;
4528 case 0x1E5E: /* LATIN CAPITAL LETTER R WITH LINE BELOW */
4529 return (Py_UNICODE)0x1E5F;
4530 case 0x1E60: /* LATIN CAPITAL LETTER S WITH DOT ABOVE */
4531 return (Py_UNICODE)0x1E61;
4532 case 0x1E62: /* LATIN CAPITAL LETTER S WITH DOT BELOW */
4533 return (Py_UNICODE)0x1E63;
4534 case 0x1E64: /* LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE */
4535 return (Py_UNICODE)0x1E65;
4536 case 0x1E66: /* LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE */
4537 return (Py_UNICODE)0x1E67;
4538 case 0x1E68: /* LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE */
4539 return (Py_UNICODE)0x1E69;
4540 case 0x1E6A: /* LATIN CAPITAL LETTER T WITH DOT ABOVE */
4541 return (Py_UNICODE)0x1E6B;
4542 case 0x1E6C: /* LATIN CAPITAL LETTER T WITH DOT BELOW */
4543 return (Py_UNICODE)0x1E6D;
4544 case 0x1E6E: /* LATIN CAPITAL LETTER T WITH LINE BELOW */
4545 return (Py_UNICODE)0x1E6F;
4546 case 0x1E70: /* LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW */
4547 return (Py_UNICODE)0x1E71;
4548 case 0x1E72: /* LATIN CAPITAL LETTER U WITH DIAERESIS BELOW */
4549 return (Py_UNICODE)0x1E73;
4550 case 0x1E74: /* LATIN CAPITAL LETTER U WITH TILDE BELOW */
4551 return (Py_UNICODE)0x1E75;
4552 case 0x1E76: /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW */
4553 return (Py_UNICODE)0x1E77;
4554 case 0x1E78: /* LATIN CAPITAL LETTER U WITH TILDE AND ACUTE */
4555 return (Py_UNICODE)0x1E79;
4556 case 0x1E7A: /* LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS */
4557 return (Py_UNICODE)0x1E7B;
4558 case 0x1E7C: /* LATIN CAPITAL LETTER V WITH TILDE */
4559 return (Py_UNICODE)0x1E7D;
4560 case 0x1E7E: /* LATIN CAPITAL LETTER V WITH DOT BELOW */
4561 return (Py_UNICODE)0x1E7F;
4562 case 0x1E80: /* LATIN CAPITAL LETTER W WITH GRAVE */
4563 return (Py_UNICODE)0x1E81;
4564 case 0x1E82: /* LATIN CAPITAL LETTER W WITH ACUTE */
4565 return (Py_UNICODE)0x1E83;
4566 case 0x1E84: /* LATIN CAPITAL LETTER W WITH DIAERESIS */
4567 return (Py_UNICODE)0x1E85;
4568 case 0x1E86: /* LATIN CAPITAL LETTER W WITH DOT ABOVE */
4569 return (Py_UNICODE)0x1E87;
4570 case 0x1E88: /* LATIN CAPITAL LETTER W WITH DOT BELOW */
4571 return (Py_UNICODE)0x1E89;
4572 case 0x1E8A: /* LATIN CAPITAL LETTER X WITH DOT ABOVE */
4573 return (Py_UNICODE)0x1E8B;
4574 case 0x1E8C: /* LATIN CAPITAL LETTER X WITH DIAERESIS */
4575 return (Py_UNICODE)0x1E8D;
4576 case 0x1E8E: /* LATIN CAPITAL LETTER Y WITH DOT ABOVE */
4577 return (Py_UNICODE)0x1E8F;
4578 case 0x1E90: /* LATIN CAPITAL LETTER Z WITH CIRCUMFLEX */
4579 return (Py_UNICODE)0x1E91;
4580 case 0x1E92: /* LATIN CAPITAL LETTER Z WITH DOT BELOW */
4581 return (Py_UNICODE)0x1E93;
4582 case 0x1E94: /* LATIN CAPITAL LETTER Z WITH LINE BELOW */
4583 return (Py_UNICODE)0x1E95;
4584 case 0x1EA0: /* LATIN CAPITAL LETTER A WITH DOT BELOW */
4585 return (Py_UNICODE)0x1EA1;
4586 case 0x1EA2: /* LATIN CAPITAL LETTER A WITH HOOK ABOVE */
4587 return (Py_UNICODE)0x1EA3;
4588 case 0x1EA4: /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE */
4589 return (Py_UNICODE)0x1EA5;
4590 case 0x1EA6: /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE */
4591 return (Py_UNICODE)0x1EA7;
4592 case 0x1EA8: /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */
4593 return (Py_UNICODE)0x1EA9;
4594 case 0x1EAA: /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE */
4595 return (Py_UNICODE)0x1EAB;
4596 case 0x1EAC: /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW */
4597 return (Py_UNICODE)0x1EAD;
4598 case 0x1EAE: /* LATIN CAPITAL LETTER A WITH BREVE AND ACUTE */
4599 return (Py_UNICODE)0x1EAF;
4600 case 0x1EB0: /* LATIN CAPITAL LETTER A WITH BREVE AND GRAVE */
4601 return (Py_UNICODE)0x1EB1;
4602 case 0x1EB2: /* LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE */
4603 return (Py_UNICODE)0x1EB3;
4604 case 0x1EB4: /* LATIN CAPITAL LETTER A WITH BREVE AND TILDE */
4605 return (Py_UNICODE)0x1EB5;
4606 case 0x1EB6: /* LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW */
4607 return (Py_UNICODE)0x1EB7;
4608 case 0x1EB8: /* LATIN CAPITAL LETTER E WITH DOT BELOW */
4609 return (Py_UNICODE)0x1EB9;
4610 case 0x1EBA: /* LATIN CAPITAL LETTER E WITH HOOK ABOVE */
4611 return (Py_UNICODE)0x1EBB;
4612 case 0x1EBC: /* LATIN CAPITAL LETTER E WITH TILDE */
4613 return (Py_UNICODE)0x1EBD;
4614 case 0x1EBE: /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE */
4615 return (Py_UNICODE)0x1EBF;
4616 case 0x1EC0: /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE */
4617 return (Py_UNICODE)0x1EC1;
4618 case 0x1EC2: /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */
4619 return (Py_UNICODE)0x1EC3;
4620 case 0x1EC4: /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE */
4621 return (Py_UNICODE)0x1EC5;
4622 case 0x1EC6: /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW */
4623 return (Py_UNICODE)0x1EC7;
4624 case 0x1EC8: /* LATIN CAPITAL LETTER I WITH HOOK ABOVE */
4625 return (Py_UNICODE)0x1EC9;
4626 case 0x1ECA: /* LATIN CAPITAL LETTER I WITH DOT BELOW */
4627 return (Py_UNICODE)0x1ECB;
4628 case 0x1ECC: /* LATIN CAPITAL LETTER O WITH DOT BELOW */
4629 return (Py_UNICODE)0x1ECD;
4630 case 0x1ECE: /* LATIN CAPITAL LETTER O WITH HOOK ABOVE */
4631 return (Py_UNICODE)0x1ECF;
4632 case 0x1ED0: /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE */
4633 return (Py_UNICODE)0x1ED1;
4634 case 0x1ED2: /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE */
4635 return (Py_UNICODE)0x1ED3;
4636 case 0x1ED4: /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */
4637 return (Py_UNICODE)0x1ED5;
4638 case 0x1ED6: /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE */
4639 return (Py_UNICODE)0x1ED7;
4640 case 0x1ED8: /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW */
4641 return (Py_UNICODE)0x1ED9;
4642 case 0x1EDA: /* LATIN CAPITAL LETTER O WITH HORN AND ACUTE */
4643 return (Py_UNICODE)0x1EDB;
4644 case 0x1EDC: /* LATIN CAPITAL LETTER O WITH HORN AND GRAVE */
4645 return (Py_UNICODE)0x1EDD;
4646 case 0x1EDE: /* LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE */
4647 return (Py_UNICODE)0x1EDF;
4648 case 0x1EE0: /* LATIN CAPITAL LETTER O WITH HORN AND TILDE */
4649 return (Py_UNICODE)0x1EE1;
4650 case 0x1EE2: /* LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW */
4651 return (Py_UNICODE)0x1EE3;
4652 case 0x1EE4: /* LATIN CAPITAL LETTER U WITH DOT BELOW */
4653 return (Py_UNICODE)0x1EE5;
4654 case 0x1EE6: /* LATIN CAPITAL LETTER U WITH HOOK ABOVE */
4655 return (Py_UNICODE)0x1EE7;
4656 case 0x1EE8: /* LATIN CAPITAL LETTER U WITH HORN AND ACUTE */
4657 return (Py_UNICODE)0x1EE9;
4658 case 0x1EEA: /* LATIN CAPITAL LETTER U WITH HORN AND GRAVE */
4659 return (Py_UNICODE)0x1EEB;
4660 case 0x1EEC: /* LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE */
4661 return (Py_UNICODE)0x1EED;
4662 case 0x1EEE: /* LATIN CAPITAL LETTER U WITH HORN AND TILDE */
4663 return (Py_UNICODE)0x1EEF;
4664 case 0x1EF0: /* LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW */
4665 return (Py_UNICODE)0x1EF1;
4666 case 0x1EF2: /* LATIN CAPITAL LETTER Y WITH GRAVE */
4667 return (Py_UNICODE)0x1EF3;
4668 case 0x1EF4: /* LATIN CAPITAL LETTER Y WITH DOT BELOW */
4669 return (Py_UNICODE)0x1EF5;
4670 case 0x1EF6: /* LATIN CAPITAL LETTER Y WITH HOOK ABOVE */
4671 return (Py_UNICODE)0x1EF7;
4672 case 0x1EF8: /* LATIN CAPITAL LETTER Y WITH TILDE */
4673 return (Py_UNICODE)0x1EF9;
4674 case 0x1F08: /* GREEK CAPITAL LETTER ALPHA WITH PSILI */
4675 return (Py_UNICODE)0x1F00;
4676 case 0x1F09: /* GREEK CAPITAL LETTER ALPHA WITH DASIA */
4677 return (Py_UNICODE)0x1F01;
4678 case 0x1F0A: /* GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA */
4679 return (Py_UNICODE)0x1F02;
4680 case 0x1F0B: /* GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA */
4681 return (Py_UNICODE)0x1F03;
4682 case 0x1F0C: /* GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA */
4683 return (Py_UNICODE)0x1F04;
4684 case 0x1F0D: /* GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA */
4685 return (Py_UNICODE)0x1F05;
4686 case 0x1F0E: /* GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI */
4687 return (Py_UNICODE)0x1F06;
4688 case 0x1F0F: /* GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI */
4689 return (Py_UNICODE)0x1F07;
4690 case 0x1F18: /* GREEK CAPITAL LETTER EPSILON WITH PSILI */
4691 return (Py_UNICODE)0x1F10;
4692 case 0x1F19: /* GREEK CAPITAL LETTER EPSILON WITH DASIA */
4693 return (Py_UNICODE)0x1F11;
4694 case 0x1F1A: /* GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA */
4695 return (Py_UNICODE)0x1F12;
4696 case 0x1F1B: /* GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA */
4697 return (Py_UNICODE)0x1F13;
4698 case 0x1F1C: /* GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA */
4699 return (Py_UNICODE)0x1F14;
4700 case 0x1F1D: /* GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA */
4701 return (Py_UNICODE)0x1F15;
4702 case 0x1F28: /* GREEK CAPITAL LETTER ETA WITH PSILI */
4703 return (Py_UNICODE)0x1F20;
4704 case 0x1F29: /* GREEK CAPITAL LETTER ETA WITH DASIA */
4705 return (Py_UNICODE)0x1F21;
4706 case 0x1F2A: /* GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA */
4707 return (Py_UNICODE)0x1F22;
4708 case 0x1F2B: /* GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA */
4709 return (Py_UNICODE)0x1F23;
4710 case 0x1F2C: /* GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA */
4711 return (Py_UNICODE)0x1F24;
4712 case 0x1F2D: /* GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA */
4713 return (Py_UNICODE)0x1F25;
4714 case 0x1F2E: /* GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI */
4715 return (Py_UNICODE)0x1F26;
4716 case 0x1F2F: /* GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI */
4717 return (Py_UNICODE)0x1F27;
4718 case 0x1F38: /* GREEK CAPITAL LETTER IOTA WITH PSILI */
4719 return (Py_UNICODE)0x1F30;
4720 case 0x1F39: /* GREEK CAPITAL LETTER IOTA WITH DASIA */
4721 return (Py_UNICODE)0x1F31;
4722 case 0x1F3A: /* GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA */
4723 return (Py_UNICODE)0x1F32;
4724 case 0x1F3B: /* GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA */
4725 return (Py_UNICODE)0x1F33;
4726 case 0x1F3C: /* GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA */
4727 return (Py_UNICODE)0x1F34;
4728 case 0x1F3D: /* GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA */
4729 return (Py_UNICODE)0x1F35;
4730 case 0x1F3E: /* GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI */
4731 return (Py_UNICODE)0x1F36;
4732 case 0x1F3F: /* GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI */
4733 return (Py_UNICODE)0x1F37;
4734 case 0x1F48: /* GREEK CAPITAL LETTER OMICRON WITH PSILI */
4735 return (Py_UNICODE)0x1F40;
4736 case 0x1F49: /* GREEK CAPITAL LETTER OMICRON WITH DASIA */
4737 return (Py_UNICODE)0x1F41;
4738 case 0x1F4A: /* GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA */
4739 return (Py_UNICODE)0x1F42;
4740 case 0x1F4B: /* GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA */
4741 return (Py_UNICODE)0x1F43;
4742 case 0x1F4C: /* GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA */
4743 return (Py_UNICODE)0x1F44;
4744 case 0x1F4D: /* GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA */
4745 return (Py_UNICODE)0x1F45;
4746 case 0x1F59: /* GREEK CAPITAL LETTER UPSILON WITH DASIA */
4747 return (Py_UNICODE)0x1F51;
4748 case 0x1F5B: /* GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA */
4749 return (Py_UNICODE)0x1F53;
4750 case 0x1F5D: /* GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA */
4751 return (Py_UNICODE)0x1F55;
4752 case 0x1F5F: /* GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI */
4753 return (Py_UNICODE)0x1F57;
4754 case 0x1F68: /* GREEK CAPITAL LETTER OMEGA WITH PSILI */
4755 return (Py_UNICODE)0x1F60;
4756 case 0x1F69: /* GREEK CAPITAL LETTER OMEGA WITH DASIA */
4757 return (Py_UNICODE)0x1F61;
4758 case 0x1F6A: /* GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA */
4759 return (Py_UNICODE)0x1F62;
4760 case 0x1F6B: /* GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA */
4761 return (Py_UNICODE)0x1F63;
4762 case 0x1F6C: /* GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA */
4763 return (Py_UNICODE)0x1F64;
4764 case 0x1F6D: /* GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA */
4765 return (Py_UNICODE)0x1F65;
4766 case 0x1F6E: /* GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI */
4767 return (Py_UNICODE)0x1F66;
4768 case 0x1F6F: /* GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI */
4769 return (Py_UNICODE)0x1F67;
4770 case 0x1F88: /* GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI */
4771 return (Py_UNICODE)0x1F80;
4772 case 0x1F89: /* GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI */
4773 return (Py_UNICODE)0x1F81;
4774 case 0x1F8A: /* GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI */
4775 return (Py_UNICODE)0x1F82;
4776 case 0x1F8B: /* GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI */
4777 return (Py_UNICODE)0x1F83;
4778 case 0x1F8C: /* GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI */
4779 return (Py_UNICODE)0x1F84;
4780 case 0x1F8D: /* GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI */
4781 return (Py_UNICODE)0x1F85;
4782 case 0x1F8E: /* GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI */
4783 return (Py_UNICODE)0x1F86;
4784 case 0x1F8F: /* GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI */
4785 return (Py_UNICODE)0x1F87;
4786 case 0x1F98: /* GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI */
4787 return (Py_UNICODE)0x1F90;
4788 case 0x1F99: /* GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI */
4789 return (Py_UNICODE)0x1F91;
4790 case 0x1F9A: /* GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI */
4791 return (Py_UNICODE)0x1F92;
4792 case 0x1F9B: /* GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI */
4793 return (Py_UNICODE)0x1F93;
4794 case 0x1F9C: /* GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI */
4795 return (Py_UNICODE)0x1F94;
4796 case 0x1F9D: /* GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI */
4797 return (Py_UNICODE)0x1F95;
4798 case 0x1F9E: /* GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI */
4799 return (Py_UNICODE)0x1F96;
4800 case 0x1F9F: /* GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI */
4801 return (Py_UNICODE)0x1F97;
4802 case 0x1FA8: /* GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI */
4803 return (Py_UNICODE)0x1FA0;
4804 case 0x1FA9: /* GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI */
4805 return (Py_UNICODE)0x1FA1;
4806 case 0x1FAA: /* GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI */
4807 return (Py_UNICODE)0x1FA2;
4808 case 0x1FAB: /* GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI */
4809 return (Py_UNICODE)0x1FA3;
4810 case 0x1FAC: /* GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI */
4811 return (Py_UNICODE)0x1FA4;
4812 case 0x1FAD: /* GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI */
4813 return (Py_UNICODE)0x1FA5;
4814 case 0x1FAE: /* GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI */
4815 return (Py_UNICODE)0x1FA6;
4816 case 0x1FAF: /* GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI */
4817 return (Py_UNICODE)0x1FA7;
4818 case 0x1FB8: /* GREEK CAPITAL LETTER ALPHA WITH VRACHY */
4819 return (Py_UNICODE)0x1FB0;
4820 case 0x1FB9: /* GREEK CAPITAL LETTER ALPHA WITH MACRON */
4821 return (Py_UNICODE)0x1FB1;
4822 case 0x1FBA: /* GREEK CAPITAL LETTER ALPHA WITH VARIA */
4823 return (Py_UNICODE)0x1F70;
4824 case 0x1FBB: /* GREEK CAPITAL LETTER ALPHA WITH OXIA */
4825 return (Py_UNICODE)0x1F71;
4826 case 0x1FBC: /* GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI */
4827 return (Py_UNICODE)0x1FB3;
4828 case 0x1FC8: /* GREEK CAPITAL LETTER EPSILON WITH VARIA */
4829 return (Py_UNICODE)0x1F72;
4830 case 0x1FC9: /* GREEK CAPITAL LETTER EPSILON WITH OXIA */
4831 return (Py_UNICODE)0x1F73;
4832 case 0x1FCA: /* GREEK CAPITAL LETTER ETA WITH VARIA */
4833 return (Py_UNICODE)0x1F74;
4834 case 0x1FCB: /* GREEK CAPITAL LETTER ETA WITH OXIA */
4835 return (Py_UNICODE)0x1F75;
4836 case 0x1FCC: /* GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI */
4837 return (Py_UNICODE)0x1FC3;
4838 case 0x1FD8: /* GREEK CAPITAL LETTER IOTA WITH VRACHY */
4839 return (Py_UNICODE)0x1FD0;
4840 case 0x1FD9: /* GREEK CAPITAL LETTER IOTA WITH MACRON */
4841 return (Py_UNICODE)0x1FD1;
4842 case 0x1FDA: /* GREEK CAPITAL LETTER IOTA WITH VARIA */
4843 return (Py_UNICODE)0x1F76;
4844 case 0x1FDB: /* GREEK CAPITAL LETTER IOTA WITH OXIA */
4845 return (Py_UNICODE)0x1F77;
4846 case 0x1FE8: /* GREEK CAPITAL LETTER UPSILON WITH VRACHY */
4847 return (Py_UNICODE)0x1FE0;
4848 case 0x1FE9: /* GREEK CAPITAL LETTER UPSILON WITH MACRON */
4849 return (Py_UNICODE)0x1FE1;
4850 case 0x1FEA: /* GREEK CAPITAL LETTER UPSILON WITH VARIA */
4851 return (Py_UNICODE)0x1F7A;
4852 case 0x1FEB: /* GREEK CAPITAL LETTER UPSILON WITH OXIA */
4853 return (Py_UNICODE)0x1F7B;
4854 case 0x1FEC: /* GREEK CAPITAL LETTER RHO WITH DASIA */
4855 return (Py_UNICODE)0x1FE5;
4856 case 0x1FF8: /* GREEK CAPITAL LETTER OMICRON WITH VARIA */
4857 return (Py_UNICODE)0x1F78;
4858 case 0x1FF9: /* GREEK CAPITAL LETTER OMICRON WITH OXIA */
4859 return (Py_UNICODE)0x1F79;
4860 case 0x1FFA: /* GREEK CAPITAL LETTER OMEGA WITH VARIA */
4861 return (Py_UNICODE)0x1F7C;
4862 case 0x1FFB: /* GREEK CAPITAL LETTER OMEGA WITH OXIA */
4863 return (Py_UNICODE)0x1F7D;
4864 case 0x1FFC: /* GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI */
4865 return (Py_UNICODE)0x1FF3;
4866 case 0x2126: /* OHM SIGN */
4867 return (Py_UNICODE)0x03C9;
4868 case 0x212A: /* KELVIN SIGN */
4869 return (Py_UNICODE)0x006B;
4870 case 0x212B: /* ANGSTROM SIGN */
4871 return (Py_UNICODE)0x00E5;
4872 case 0x2160: /* ROMAN NUMERAL ONE */
4873 return (Py_UNICODE)0x2170;
4874 case 0x2161: /* ROMAN NUMERAL TWO */
4875 return (Py_UNICODE)0x2171;
4876 case 0x2162: /* ROMAN NUMERAL THREE */
4877 return (Py_UNICODE)0x2172;
4878 case 0x2163: /* ROMAN NUMERAL FOUR */
4879 return (Py_UNICODE)0x2173;
4880 case 0x2164: /* ROMAN NUMERAL FIVE */
4881 return (Py_UNICODE)0x2174;
4882 case 0x2165: /* ROMAN NUMERAL SIX */
4883 return (Py_UNICODE)0x2175;
4884 case 0x2166: /* ROMAN NUMERAL SEVEN */
4885 return (Py_UNICODE)0x2176;
4886 case 0x2167: /* ROMAN NUMERAL EIGHT */
4887 return (Py_UNICODE)0x2177;
4888 case 0x2168: /* ROMAN NUMERAL NINE */
4889 return (Py_UNICODE)0x2178;
4890 case 0x2169: /* ROMAN NUMERAL TEN */
4891 return (Py_UNICODE)0x2179;
4892 case 0x216A: /* ROMAN NUMERAL ELEVEN */
4893 return (Py_UNICODE)0x217A;
4894 case 0x216B: /* ROMAN NUMERAL TWELVE */
4895 return (Py_UNICODE)0x217B;
4896 case 0x216C: /* ROMAN NUMERAL FIFTY */
4897 return (Py_UNICODE)0x217C;
4898 case 0x216D: /* ROMAN NUMERAL ONE HUNDRED */
4899 return (Py_UNICODE)0x217D;
4900 case 0x216E: /* ROMAN NUMERAL FIVE HUNDRED */
4901 return (Py_UNICODE)0x217E;
4902 case 0x216F: /* ROMAN NUMERAL ONE THOUSAND */
4903 return (Py_UNICODE)0x217F;
4904 case 0x24B6: /* CIRCLED LATIN CAPITAL LETTER A */
4905 return (Py_UNICODE)0x24D0;
4906 case 0x24B7: /* CIRCLED LATIN CAPITAL LETTER B */
4907 return (Py_UNICODE)0x24D1;
4908 case 0x24B8: /* CIRCLED LATIN CAPITAL LETTER C */
4909 return (Py_UNICODE)0x24D2;
4910 case 0x24B9: /* CIRCLED LATIN CAPITAL LETTER D */
4911 return (Py_UNICODE)0x24D3;
4912 case 0x24BA: /* CIRCLED LATIN CAPITAL LETTER E */
4913 return (Py_UNICODE)0x24D4;
4914 case 0x24BB: /* CIRCLED LATIN CAPITAL LETTER F */
4915 return (Py_UNICODE)0x24D5;
4916 case 0x24BC: /* CIRCLED LATIN CAPITAL LETTER G */
4917 return (Py_UNICODE)0x24D6;
4918 case 0x24BD: /* CIRCLED LATIN CAPITAL LETTER H */
4919 return (Py_UNICODE)0x24D7;
4920 case 0x24BE: /* CIRCLED LATIN CAPITAL LETTER I */
4921 return (Py_UNICODE)0x24D8;
4922 case 0x24BF: /* CIRCLED LATIN CAPITAL LETTER J */
4923 return (Py_UNICODE)0x24D9;
4924 case 0x24C0: /* CIRCLED LATIN CAPITAL LETTER K */
4925 return (Py_UNICODE)0x24DA;
4926 case 0x24C1: /* CIRCLED LATIN CAPITAL LETTER L */
4927 return (Py_UNICODE)0x24DB;
4928 case 0x24C2: /* CIRCLED LATIN CAPITAL LETTER M */
4929 return (Py_UNICODE)0x24DC;
4930 case 0x24C3: /* CIRCLED LATIN CAPITAL LETTER N */
4931 return (Py_UNICODE)0x24DD;
4932 case 0x24C4: /* CIRCLED LATIN CAPITAL LETTER O */
4933 return (Py_UNICODE)0x24DE;
4934 case 0x24C5: /* CIRCLED LATIN CAPITAL LETTER P */
4935 return (Py_UNICODE)0x24DF;
4936 case 0x24C6: /* CIRCLED LATIN CAPITAL LETTER Q */
4937 return (Py_UNICODE)0x24E0;
4938 case 0x24C7: /* CIRCLED LATIN CAPITAL LETTER R */
4939 return (Py_UNICODE)0x24E1;
4940 case 0x24C8: /* CIRCLED LATIN CAPITAL LETTER S */
4941 return (Py_UNICODE)0x24E2;
4942 case 0x24C9: /* CIRCLED LATIN CAPITAL LETTER T */
4943 return (Py_UNICODE)0x24E3;
4944 case 0x24CA: /* CIRCLED LATIN CAPITAL LETTER U */
4945 return (Py_UNICODE)0x24E4;
4946 case 0x24CB: /* CIRCLED LATIN CAPITAL LETTER V */
4947 return (Py_UNICODE)0x24E5;
4948 case 0x24CC: /* CIRCLED LATIN CAPITAL LETTER W */
4949 return (Py_UNICODE)0x24E6;
4950 case 0x24CD: /* CIRCLED LATIN CAPITAL LETTER X */
4951 return (Py_UNICODE)0x24E7;
4952 case 0x24CE: /* CIRCLED LATIN CAPITAL LETTER Y */
4953 return (Py_UNICODE)0x24E8;
4954 case 0x24CF: /* CIRCLED LATIN CAPITAL LETTER Z */
4955 return (Py_UNICODE)0x24E9;
4956 case 0xFF21: /* FULLWIDTH LATIN CAPITAL LETTER A */
4957 return (Py_UNICODE)0xFF41;
4958 case 0xFF22: /* FULLWIDTH LATIN CAPITAL LETTER B */
4959 return (Py_UNICODE)0xFF42;
4960 case 0xFF23: /* FULLWIDTH LATIN CAPITAL LETTER C */
4961 return (Py_UNICODE)0xFF43;
4962 case 0xFF24: /* FULLWIDTH LATIN CAPITAL LETTER D */
4963 return (Py_UNICODE)0xFF44;
4964 case 0xFF25: /* FULLWIDTH LATIN CAPITAL LETTER E */
4965 return (Py_UNICODE)0xFF45;
4966 case 0xFF26: /* FULLWIDTH LATIN CAPITAL LETTER F */
4967 return (Py_UNICODE)0xFF46;
4968 case 0xFF27: /* FULLWIDTH LATIN CAPITAL LETTER G */
4969 return (Py_UNICODE)0xFF47;
4970 case 0xFF28: /* FULLWIDTH LATIN CAPITAL LETTER H */
4971 return (Py_UNICODE)0xFF48;
4972 case 0xFF29: /* FULLWIDTH LATIN CAPITAL LETTER I */
4973 return (Py_UNICODE)0xFF49;
4974 case 0xFF2A: /* FULLWIDTH LATIN CAPITAL LETTER J */
4975 return (Py_UNICODE)0xFF4A;
4976 case 0xFF2B: /* FULLWIDTH LATIN CAPITAL LETTER K */
4977 return (Py_UNICODE)0xFF4B;
4978 case 0xFF2C: /* FULLWIDTH LATIN CAPITAL LETTER L */
4979 return (Py_UNICODE)0xFF4C;
4980 case 0xFF2D: /* FULLWIDTH LATIN CAPITAL LETTER M */
4981 return (Py_UNICODE)0xFF4D;
4982 case 0xFF2E: /* FULLWIDTH LATIN CAPITAL LETTER N */
4983 return (Py_UNICODE)0xFF4E;
4984 case 0xFF2F: /* FULLWIDTH LATIN CAPITAL LETTER O */
4985 return (Py_UNICODE)0xFF4F;
4986 case 0xFF30: /* FULLWIDTH LATIN CAPITAL LETTER P */
4987 return (Py_UNICODE)0xFF50;
4988 case 0xFF31: /* FULLWIDTH LATIN CAPITAL LETTER Q */
4989 return (Py_UNICODE)0xFF51;
4990 case 0xFF32: /* FULLWIDTH LATIN CAPITAL LETTER R */
4991 return (Py_UNICODE)0xFF52;
4992 case 0xFF33: /* FULLWIDTH LATIN CAPITAL LETTER S */
4993 return (Py_UNICODE)0xFF53;
4994 case 0xFF34: /* FULLWIDTH LATIN CAPITAL LETTER T */
4995 return (Py_UNICODE)0xFF54;
4996 case 0xFF35: /* FULLWIDTH LATIN CAPITAL LETTER U */
4997 return (Py_UNICODE)0xFF55;
4998 case 0xFF36: /* FULLWIDTH LATIN CAPITAL LETTER V */
4999 return (Py_UNICODE)0xFF56;
5000 case 0xFF37: /* FULLWIDTH LATIN CAPITAL LETTER W */
5001 return (Py_UNICODE)0xFF57;
5002 case 0xFF38: /* FULLWIDTH LATIN CAPITAL LETTER X */
5003 return (Py_UNICODE)0xFF58;
5004 case 0xFF39: /* FULLWIDTH LATIN CAPITAL LETTER Y */
5005 return (Py_UNICODE)0xFF59;
5006 case 0xFF3A: /* FULLWIDTH LATIN CAPITAL LETTER Z */
5007 return (Py_UNICODE)0xFF5A;
5008 default:
5009 return ch;
5010 }
5011}
5012
5013#else
5014
5015/* Export the interfaces using the wchar_t type for portability
5016 reasons: */
5017
5018int _PyUnicode_IsWhitespace(register const Py_UNICODE ch)
5019{
5020 return iswspace(ch);
5021}
5022
5023int _PyUnicode_IsLowercase(register const Py_UNICODE ch)
5024{
5025 return iswlower(ch);
5026}
5027
5028int _PyUnicode_IsUppercase(register const Py_UNICODE ch)
5029{
5030 return iswupper(ch);
5031}
5032
5033Py_UNICODE _PyUnicode_ToLowercase(register const Py_UNICODE ch)
5034{
5035 return towlower(ch);
5036}
5037
5038Py_UNICODE _PyUnicode_ToUppercase(register const Py_UNICODE ch)
5039{
5040 return towupper(ch);
5041}
5042
5043#endif