//
// This software is now distributed according to
// the Lesser Gnu Public License.  Please see
// http://www.gnu.org/copyleft/lesser.txt for
// the details.
//    -- Happy Computing!
//
package com.stevesoft.pat;

/**
 * Encapsulates the Unicode definitions of Upper, Lower, and Title case as
 * defined by <a href="http://www.unicode.org"> unicode.org</a>.
 * <p>
 * The performance of the methods found in String and Character is better, but
 * these methods work both in java 1.0 and 1.1. If it is desirable, either to
 * gain a slight performance increase or to accomodate application specific
 * modifications to the definitions of upper, lower, and title case then it
 * should be a straightforward task to substitute your own methods for these.
 */
final public class CaseMgr
{
  final static boolean java_1_0 = false;

  /** Convert a character to upper case . */
  public static char toUpperCase(char c)
  {
    if (java_1_0)
    {
      int ret = (int) c;
      switch (c)
      {
      case 97:
        ret = 65;
        break;
      case 98:
        ret = 66;
        break;
      case 99:
        ret = 67;
        break;
      case 100:
        ret = 68;
        break;
      case 101:
        ret = 69;
        break;
      case 102:
        ret = 70;
        break;
      case 103:
        ret = 71;
        break;
      case 104:
        ret = 72;
        break;
      case 105:
        ret = 73;
        break;
      case 106:
        ret = 74;
        break;
      case 107:
        ret = 75;
        break;
      case 108:
        ret = 76;
        break;
      case 109:
        ret = 77;
        break;
      case 110:
        ret = 78;
        break;
      case 111:
        ret = 79;
        break;
      case 112:
        ret = 80;
        break;
      case 113:
        ret = 81;
        break;
      case 114:
        ret = 82;
        break;
      case 115:
        ret = 83;
        break;
      case 116:
        ret = 84;
        break;
      case 117:
        ret = 85;
        break;
      case 118:
        ret = 86;
        break;
      case 119:
        ret = 87;
        break;
      case 120:
        ret = 88;
        break;
      case 121:
        ret = 89;
        break;
      case 122:
        ret = 90;
        break;
      case 224:
        ret = 192;
        break;
      case 225:
        ret = 193;
        break;
      case 226:
        ret = 194;
        break;
      case 227:
        ret = 195;
        break;
      case 228:
        ret = 196;
        break;
      case 229:
        ret = 197;
        break;
      case 230:
        ret = 198;
        break;
      case 231:
        ret = 199;
        break;
      case 232:
        ret = 200;
        break;
      case 233:
        ret = 201;
        break;
      case 234:
        ret = 202;
        break;
      case 235:
        ret = 203;
        break;
      case 236:
        ret = 204;
        break;
      case 237:
        ret = 205;
        break;
      case 238:
        ret = 206;
        break;
      case 239:
        ret = 207;
        break;
      case 240:
        ret = 208;
        break;
      case 241:
        ret = 209;
        break;
      case 242:
        ret = 210;
        break;
      case 243:
        ret = 211;
        break;
      case 244:
        ret = 212;
        break;
      case 245:
        ret = 213;
        break;
      case 246:
        ret = 214;
        break;
      case 248:
        ret = 216;
        break;
      case 249:
        ret = 217;
        break;
      case 250:
        ret = 218;
        break;
      case 251:
        ret = 219;
        break;
      case 252:
        ret = 220;
        break;
      case 253:
        ret = 221;
        break;
      case 254:
        ret = 222;
        break;
      case 255:
        ret = 376;
        break;
      case 257:
        ret = 256;
        break;
      case 259:
        ret = 258;
        break;
      case 261:
        ret = 260;
        break;
      case 263:
        ret = 262;
        break;
      case 265:
        ret = 264;
        break;
      case 267:
        ret = 266;
        break;
      case 269:
        ret = 268;
        break;
      case 271:
        ret = 270;
        break;
      case 273:
        ret = 272;
        break;
      case 275:
        ret = 274;
        break;
      case 277:
        ret = 276;
        break;
      case 279:
        ret = 278;
        break;
      case 281:
        ret = 280;
        break;
      case 283:
        ret = 282;
        break;
      case 285:
        ret = 284;
        break;
      case 287:
        ret = 286;
        break;
      case 289:
        ret = 288;
        break;
      case 291:
        ret = 290;
        break;
      case 293:
        ret = 292;
        break;
      case 295:
        ret = 294;
        break;
      case 297:
        ret = 296;
        break;
      case 299:
        ret = 298;
        break;
      case 301:
        ret = 300;
        break;
      case 303:
        ret = 302;
        break;
      case 305:
        ret = 73;
        break;
      case 307:
        ret = 306;
        break;
      case 309:
        ret = 308;
        break;
      case 311:
        ret = 310;
        break;
      case 314:
        ret = 313;
        break;
      case 316:
        ret = 315;
        break;
      case 318:
        ret = 317;
        break;
      case 320:
        ret = 319;
        break;
      case 322:
        ret = 321;
        break;
      case 324:
        ret = 323;
        break;
      case 326:
        ret = 325;
        break;
      case 328:
        ret = 327;
        break;
      case 331:
        ret = 330;
        break;
      case 333:
        ret = 332;
        break;
      case 335:
        ret = 334;
        break;
      case 337:
        ret = 336;
        break;
      case 339:
        ret = 338;
        break;
      case 341:
        ret = 340;
        break;
      case 343:
        ret = 342;
        break;
      case 345:
        ret = 344;
        break;
      case 347:
        ret = 346;
        break;
      case 349:
        ret = 348;
        break;
      case 351:
        ret = 350;
        break;
      case 353:
        ret = 352;
        break;
      case 355:
        ret = 354;
        break;
      case 357:
        ret = 356;
        break;
      case 359:
        ret = 358;
        break;
      case 361:
        ret = 360;
        break;
      case 363:
        ret = 362;
        break;
      case 365:
        ret = 364;
        break;
      case 367:
        ret = 366;
        break;
      case 369:
        ret = 368;
        break;
      case 371:
        ret = 370;
        break;
      case 373:
        ret = 372;
        break;
      case 375:
        ret = 374;
        break;
      case 378:
        ret = 377;
        break;
      case 380:
        ret = 379;
        break;
      case 382:
        ret = 381;
        break;
      case 383:
        ret = 83;
        break;
      case 387:
        ret = 386;
        break;
      case 389:
        ret = 388;
        break;
      case 392:
        ret = 391;
        break;
      case 396:
        ret = 395;
        break;
      case 402:
        ret = 401;
        break;
      case 409:
        ret = 408;
        break;
      case 417:
        ret = 416;
        break;
      case 419:
        ret = 418;
        break;
      case 421:
        ret = 420;
        break;
      case 424:
        ret = 423;
        break;
      case 429:
        ret = 428;
        break;
      case 432:
        ret = 431;
        break;
      case 436:
        ret = 435;
        break;
      case 438:
        ret = 437;
        break;
      case 441:
        ret = 440;
        break;
      case 445:
        ret = 444;
        break;
      case 453:
        ret = 452;
        break;
      case 454:
        ret = 452;
        break;
      case 456:
        ret = 455;
        break;
      case 457:
        ret = 455;
        break;
      case 459:
        ret = 458;
        break;
      case 460:
        ret = 458;
        break;
      case 462:
        ret = 461;
        break;
      case 464:
        ret = 463;
        break;
      case 466:
        ret = 465;
        break;
      case 468:
        ret = 467;
        break;
      case 470:
        ret = 469;
        break;
      case 472:
        ret = 471;
        break;
      case 474:
        ret = 473;
        break;
      case 476:
        ret = 475;
        break;
      case 479:
        ret = 478;
        break;
      case 481:
        ret = 480;
        break;
      case 483:
        ret = 482;
        break;
      case 485:
        ret = 484;
        break;
      case 487:
        ret = 486;
        break;
      case 489:
        ret = 488;
        break;
      case 491:
        ret = 490;
        break;
      case 493:
        ret = 492;
        break;
      case 495:
        ret = 494;
        break;
      case 498:
        ret = 497;
        break;
      case 499:
        ret = 497;
        break;
      case 501:
        ret = 500;
        break;
      case 507:
        ret = 506;
        break;
      case 509:
        ret = 508;
        break;
      case 511:
        ret = 510;
        break;
      case 513:
        ret = 512;
        break;
      case 515:
        ret = 514;
        break;
      case 517:
        ret = 516;
        break;
      case 519:
        ret = 518;
        break;
      case 521:
        ret = 520;
        break;
      case 523:
        ret = 522;
        break;
      case 525:
        ret = 524;
        break;
      case 527:
        ret = 526;
        break;
      case 529:
        ret = 528;
        break;
      case 531:
        ret = 530;
        break;
      case 533:
        ret = 532;
        break;
      case 535:
        ret = 534;
        break;
      case 595:
        ret = 385;
        break;
      case 596:
        ret = 390;
        break;
      case 598:
        ret = 393;
        break;
      case 599:
        ret = 394;
        break;
      case 600:
        ret = 398;
        break;
      case 601:
        ret = 399;
        break;
      case 603:
        ret = 400;
        break;
      case 608:
        ret = 403;
        break;
      case 611:
        ret = 404;
        break;
      case 616:
        ret = 407;
        break;
      case 617:
        ret = 406;
        break;
      case 623:
        ret = 412;
        break;
      case 626:
        ret = 413;
        break;
      case 643:
        ret = 425;
        break;
      case 648:
        ret = 430;
        break;
      case 650:
        ret = 433;
        break;
      case 651:
        ret = 434;
        break;
      case 658:
        ret = 439;
        break;
      case 940:
        ret = 902;
        break;
      case 941:
        ret = 904;
        break;
      case 942:
        ret = 905;
        break;
      case 943:
        ret = 906;
        break;
      case 945:
        ret = 913;
        break;
      case 946:
        ret = 914;
        break;
      case 947:
        ret = 915;
        break;
      case 948:
        ret = 916;
        break;
      case 949:
        ret = 917;
        break;
      case 950:
        ret = 918;
        break;
      case 951:
        ret = 919;
        break;
      case 952:
        ret = 920;
        break;
      case 953:
        ret = 921;
        break;
      case 954:
        ret = 922;
        break;
      case 955:
        ret = 923;
        break;
      case 956:
        ret = 924;
        break;
      case 957:
        ret = 925;
        break;
      case 958:
        ret = 926;
        break;
      case 959:
        ret = 927;
        break;
      case 960:
        ret = 928;
        break;
      case 961:
        ret = 929;
        break;
      case 963:
        ret = 931;
        break;
      case 964:
        ret = 932;
        break;
      case 965:
        ret = 933;
        break;
      case 966:
        ret = 934;
        break;
      case 967:
        ret = 935;
        break;
      case 968:
        ret = 936;
        break;
      case 969:
        ret = 937;
        break;
      case 970:
        ret = 938;
        break;
      case 971:
        ret = 939;
        break;
      case 972:
        ret = 908;
        break;
      case 973:
        ret = 910;
        break;
      case 974:
        ret = 911;
        break;
      case 976:
        ret = 914;
        break;
      case 977:
        ret = 920;
        break;
      case 981:
        ret = 934;
        break;
      case 982:
        ret = 928;
        break;
      case 995:
        ret = 994;
        break;
      case 997:
        ret = 996;
        break;
      case 999:
        ret = 998;
        break;
      case 1001:
        ret = 1000;
        break;
      case 1003:
        ret = 1002;
        break;
      case 1005:
        ret = 1004;
        break;
      case 1007:
        ret = 1006;
        break;
      case 1008:
        ret = 922;
        break;
      case 1009:
        ret = 929;
        break;
      case 1072:
        ret = 1040;
        break;
      case 1073:
        ret = 1041;
        break;
      case 1074:
        ret = 1042;
        break;
      case 1075:
        ret = 1043;
        break;
      case 1076:
        ret = 1044;
        break;
      case 1077:
        ret = 1045;
        break;
      case 1078:
        ret = 1046;
        break;
      case 1079:
        ret = 1047;
        break;
      case 1080:
        ret = 1048;
        break;
      case 1081:
        ret = 1049;
        break;
      case 1082:
        ret = 1050;
        break;
      case 1083:
        ret = 1051;
        break;
      case 1084:
        ret = 1052;
        break;
      case 1085:
        ret = 1053;
        break;
      case 1086:
        ret = 1054;
        break;
      case 1087:
        ret = 1055;
        break;
      case 1088:
        ret = 1056;
        break;
      case 1089:
        ret = 1057;
        break;
      case 1090:
        ret = 1058;
        break;
      case 1091:
        ret = 1059;
        break;
      case 1092:
        ret = 1060;
        break;
      case 1093:
        ret = 1061;
        break;
      case 1094:
        ret = 1062;
        break;
      case 1095:
        ret = 1063;
        break;
      case 1096:
        ret = 1064;
        break;
      case 1097:
        ret = 1065;
        break;
      case 1098:
        ret = 1066;
        break;
      case 1099:
        ret = 1067;
        break;
      case 1100:
        ret = 1068;
        break;
      case 1101:
        ret = 1069;
        break;
      case 1102:
        ret = 1070;
        break;
      case 1103:
        ret = 1071;
        break;
      case 1105:
        ret = 1025;
        break;
      case 1106:
        ret = 1026;
        break;
      case 1107:
        ret = 1027;
        break;
      case 1108:
        ret = 1028;
        break;
      case 1109:
        ret = 1029;
        break;
      case 1110:
        ret = 1030;
        break;
      case 1111:
        ret = 1031;
        break;
      case 1112:
        ret = 1032;
        break;
      case 1113:
        ret = 1033;
        break;
      case 1114:
        ret = 1034;
        break;
      case 1115:
        ret = 1035;
        break;
      case 1116:
        ret = 1036;
        break;
      case 1118:
        ret = 1038;
        break;
      case 1119:
        ret = 1039;
        break;
      case 1121:
        ret = 1120;
        break;
      case 1123:
        ret = 1122;
        break;
      case 1125:
        ret = 1124;
        break;
      case 1127:
        ret = 1126;
        break;
      case 1129:
        ret = 1128;
        break;
      case 1131:
        ret = 1130;
        break;
      case 1133:
        ret = 1132;
        break;
      case 1135:
        ret = 1134;
        break;
      case 1137:
        ret = 1136;
        break;
      case 1139:
        ret = 1138;
        break;
      case 1141:
        ret = 1140;
        break;
      case 1143:
        ret = 1142;
        break;
      case 1145:
        ret = 1144;
        break;
      case 1147:
        ret = 1146;
        break;
      case 1149:
        ret = 1148;
        break;
      case 1151:
        ret = 1150;
        break;
      case 1153:
        ret = 1152;
        break;
      case 1169:
        ret = 1168;
        break;
      case 1171:
        ret = 1170;
        break;
      case 1173:
        ret = 1172;
        break;
      case 1175:
        ret = 1174;
        break;
      case 1177:
        ret = 1176;
        break;
      case 1179:
        ret = 1178;
        break;
      case 1181:
        ret = 1180;
        break;
      case 1183:
        ret = 1182;
        break;
      case 1185:
        ret = 1184;
        break;
      case 1187:
        ret = 1186;
        break;
      case 1189:
        ret = 1188;
        break;
      case 1191:
        ret = 1190;
        break;
      case 1193:
        ret = 1192;
        break;
      case 1195:
        ret = 1194;
        break;
      case 1197:
        ret = 1196;
        break;
      case 1199:
        ret = 1198;
        break;
      case 1201:
        ret = 1200;
        break;
      case 1203:
        ret = 1202;
        break;
      case 1205:
        ret = 1204;
        break;
      case 1207:
        ret = 1206;
        break;
      case 1209:
        ret = 1208;
        break;
      case 1211:
        ret = 1210;
        break;
      case 1213:
        ret = 1212;
        break;
      case 1215:
        ret = 1214;
        break;
      case 1218:
        ret = 1217;
        break;
      case 1220:
        ret = 1219;
        break;
      case 1224:
        ret = 1223;
        break;
      case 1228:
        ret = 1227;
        break;
      case 1233:
        ret = 1232;
        break;
      case 1235:
        ret = 1234;
        break;
      case 1237:
        ret = 1236;
        break;
      case 1239:
        ret = 1238;
        break;
      case 1241:
        ret = 1240;
        break;
      case 1243:
        ret = 1242;
        break;
      case 1245:
        ret = 1244;
        break;
      case 1247:
        ret = 1246;
        break;
      case 1249:
        ret = 1248;
        break;
      case 1251:
        ret = 1250;
        break;
      case 1253:
        ret = 1252;
        break;
      case 1255:
        ret = 1254;
        break;
      case 1257:
        ret = 1256;
        break;
      case 1259:
        ret = 1258;
        break;
      case 1263:
        ret = 1262;
        break;
      case 1265:
        ret = 1264;
        break;
      case 1267:
        ret = 1266;
        break;
      case 1269:
        ret = 1268;
        break;
      case 1273:
        ret = 1272;
        break;
      case 1377:
        ret = 1329;
        break;
      case 1378:
        ret = 1330;
        break;
      case 1379:
        ret = 1331;
        break;
      case 1380:
        ret = 1332;
        break;
      case 1381:
        ret = 1333;
        break;
      case 1382:
        ret = 1334;
        break;
      case 1383:
        ret = 1335;
        break;
      case 1384:
        ret = 1336;
        break;
      case 1385:
        ret = 1337;
        break;
      case 1386:
        ret = 1338;
        break;
      case 1387:
        ret = 1339;
        break;
      case 1388:
        ret = 1340;
        break;
      case 1389:
        ret = 1341;
        break;
      case 1390:
        ret = 1342;
        break;
      case 1391:
        ret = 1343;
        break;
      case 1392:
        ret = 1344;
        break;
      case 1393:
        ret = 1345;
        break;
      case 1394:
        ret = 1346;
        break;
      case 1395:
        ret = 1347;
        break;
      case 1396:
        ret = 1348;
        break;
      case 1397:
        ret = 1349;
        break;
      case 1398:
        ret = 1350;
        break;
      case 1399:
        ret = 1351;
        break;
      case 1400:
        ret = 1352;
        break;
      case 1401:
        ret = 1353;
        break;
      case 1402:
        ret = 1354;
        break;
      case 1403:
        ret = 1355;
        break;
      case 1404:
        ret = 1356;
        break;
      case 1405:
        ret = 1357;
        break;
      case 1406:
        ret = 1358;
        break;
      case 1407:
        ret = 1359;
        break;
      case 1408:
        ret = 1360;
        break;
      case 1409:
        ret = 1361;
        break;
      case 1410:
        ret = 1362;
        break;
      case 1411:
        ret = 1363;
        break;
      case 1412:
        ret = 1364;
        break;
      case 1413:
        ret = 1365;
        break;
      case 1414:
        ret = 1366;
        break;
      case 7681:
        ret = 7680;
        break;
      case 7683:
        ret = 7682;
        break;
      case 7685:
        ret = 7684;
        break;
      case 7687:
        ret = 7686;
        break;
      case 7689:
        ret = 7688;
        break;
      case 7691:
        ret = 7690;
        break;
      case 7693:
        ret = 7692;
        break;
      case 7695:
        ret = 7694;
        break;
      case 7697:
        ret = 7696;
        break;
      case 7699:
        ret = 7698;
        break;
      case 7701:
        ret = 7700;
        break;
      case 7703:
        ret = 7702;
        break;
      case 7705:
        ret = 7704;
        break;
      case 7707:
        ret = 7706;
        break;
      case 7709:
        ret = 7708;
        break;
      case 7711:
        ret = 7710;
        break;
      case 7713:
        ret = 7712;
        break;
      case 7715:
        ret = 7714;
        break;
      case 7717:
        ret = 7716;
        break;
      case 7719:
        ret = 7718;
        break;
      case 7721:
        ret = 7720;
        break;
      case 7723:
        ret = 7722;
        break;
      case 7725:
        ret = 7724;
        break;
      case 7727:
        ret = 7726;
        break;
      case 7729:
        ret = 7728;
        break;
      case 7731:
        ret = 7730;
        break;
      case 7733:
        ret = 7732;
        break;
      case 7735:
        ret = 7734;
        break;
      case 7737:
        ret = 7736;
        break;
      case 7739:
        ret = 7738;
        break;
      case 7741:
        ret = 7740;
        break;
      case 7743:
        ret = 7742;
        break;
      case 7745:
        ret = 7744;
        break;
      case 7747:
        ret = 7746;
        break;
      case 7749:
        ret = 7748;
        break;
      case 7751:
        ret = 7750;
        break;
      case 7753:
        ret = 7752;
        break;
      case 7755:
        ret = 7754;
        break;
      case 7757:
        ret = 7756;
        break;
      case 7759:
        ret = 7758;
        break;
      case 7761:
        ret = 7760;
        break;
      case 7763:
        ret = 7762;
        break;
      case 7765:
        ret = 7764;
        break;
      case 7767:
        ret = 7766;
        break;
      case 7769:
        ret = 7768;
        break;
      case 7771:
        ret = 7770;
        break;
      case 7773:
        ret = 7772;
        break;
      case 7775:
        ret = 7774;
        break;
      case 7777:
        ret = 7776;
        break;
      case 7779:
        ret = 7778;
        break;
      case 7781:
        ret = 7780;
        break;
      case 7783:
        ret = 7782;
        break;
      case 7785:
        ret = 7784;
        break;
      case 7787:
        ret = 7786;
        break;
      case 7789:
        ret = 7788;
        break;
      case 7791:
        ret = 7790;
        break;
      case 7793:
        ret = 7792;
        break;
      case 7795:
        ret = 7794;
        break;
      case 7797:
        ret = 7796;
        break;
      case 7799:
        ret = 7798;
        break;
      case 7801:
        ret = 7800;
        break;
      case 7803:
        ret = 7802;
        break;
      case 7805:
        ret = 7804;
        break;
      case 7807:
        ret = 7806;
        break;
      case 7809:
        ret = 7808;
        break;
      case 7811:
        ret = 7810;
        break;
      case 7813:
        ret = 7812;
        break;
      case 7815:
        ret = 7814;
        break;
      case 7817:
        ret = 7816;
        break;
      case 7819:
        ret = 7818;
        break;
      case 7821:
        ret = 7820;
        break;
      case 7823:
        ret = 7822;
        break;
      case 7825:
        ret = 7824;
        break;
      case 7827:
        ret = 7826;
        break;
      case 7829:
        ret = 7828;
        break;
      case 7841:
        ret = 7840;
        break;
      case 7843:
        ret = 7842;
        break;
      case 7845:
        ret = 7844;
        break;
      case 7847:
        ret = 7846;
        break;
      case 7849:
        ret = 7848;
        break;
      case 7851:
        ret = 7850;
        break;
      case 7853:
        ret = 7852;
        break;
      case 7855:
        ret = 7854;
        break;
      case 7857:
        ret = 7856;
        break;
      case 7859:
        ret = 7858;
        break;
      case 7861:
        ret = 7860;
        break;
      case 7863:
        ret = 7862;
        break;
      case 7865:
        ret = 7864;
        break;
      case 7867:
        ret = 7866;
        break;
      case 7869:
        ret = 7868;
        break;
      case 7871:
        ret = 7870;
        break;
      case 7873:
        ret = 7872;
        break;
      case 7875:
        ret = 7874;
        break;
      case 7877:
        ret = 7876;
        break;
      case 7879:
        ret = 7878;
        break;
      case 7881:
        ret = 7880;
        break;
      case 7883:
        ret = 7882;
        break;
      case 7885:
        ret = 7884;
        break;
      case 7887:
        ret = 7886;
        break;
      case 7889:
        ret = 7888;
        break;
      case 7891:
        ret = 7890;
        break;
      case 7893:
        ret = 7892;
        break;
      case 7895:
        ret = 7894;
        break;
      case 7897:
        ret = 7896;
        break;
      case 7899:
        ret = 7898;
        break;
      case 7901:
        ret = 7900;
        break;
      case 7903:
        ret = 7902;
        break;
      case 7905:
        ret = 7904;
        break;
      case 7907:
        ret = 7906;
        break;
      case 7909:
        ret = 7908;
        break;
      case 7911:
        ret = 7910;
        break;
      case 7913:
        ret = 7912;
        break;
      case 7915:
        ret = 7914;
        break;
      case 7917:
        ret = 7916;
        break;
      case 7919:
        ret = 7918;
        break;
      case 7921:
        ret = 7920;
        break;
      case 7923:
        ret = 7922;
        break;
      case 7925:
        ret = 7924;
        break;
      case 7927:
        ret = 7926;
        break;
      case 7929:
        ret = 7928;
        break;
      case 7936:
        ret = 7944;
        break;
      case 7937:
        ret = 7945;
        break;
      case 7938:
        ret = 7946;
        break;
      case 7939:
        ret = 7947;
        break;
      case 7940:
        ret = 7948;
        break;
      case 7941:
        ret = 7949;
        break;
      case 7942:
        ret = 7950;
        break;
      case 7943:
        ret = 7951;
        break;
      case 7952:
        ret = 7960;
        break;
      case 7953:
        ret = 7961;
        break;
      case 7954:
        ret = 7962;
        break;
      case 7955:
        ret = 7963;
        break;
      case 7956:
        ret = 7964;
        break;
      case 7957:
        ret = 7965;
        break;
      case 7968:
        ret = 7976;
        break;
      case 7969:
        ret = 7977;
        break;
      case 7970:
        ret = 7978;
        break;
      case 7971:
        ret = 7979;
        break;
      case 7972:
        ret = 7980;
        break;
      case 7973:
        ret = 7981;
        break;
      case 7974:
        ret = 7982;
        break;
      case 7975:
        ret = 7983;
        break;
      case 7984:
        ret = 7992;
        break;
      case 7985:
        ret = 7993;
        break;
      case 7986:
        ret = 7994;
        break;
      case 7987:
        ret = 7995;
        break;
      case 7988:
        ret = 7996;
        break;
      case 7989:
        ret = 7997;
        break;
      case 7990:
        ret = 7998;
        break;
      case 7991:
        ret = 7999;
        break;
      case 8000:
        ret = 8008;
        break;
      case 8001:
        ret = 8009;
        break;
      case 8002:
        ret = 8010;
        break;
      case 8003:
        ret = 8011;
        break;
      case 8004:
        ret = 8012;
        break;
      case 8005:
        ret = 8013;
        break;
      case 8017:
        ret = 8025;
        break;
      case 8019:
        ret = 8027;
        break;
      case 8021:
        ret = 8029;
        break;
      case 8023:
        ret = 8031;
        break;
      case 8032:
        ret = 8040;
        break;
      case 8033:
        ret = 8041;
        break;
      case 8034:
        ret = 8042;
        break;
      case 8035:
        ret = 8043;
        break;
      case 8036:
        ret = 8044;
        break;
      case 8037:
        ret = 8045;
        break;
      case 8038:
        ret = 8046;
        break;
      case 8039:
        ret = 8047;
        break;
      case 8048:
        ret = 8122;
        break;
      case 8049:
        ret = 8123;
        break;
      case 8050:
        ret = 8136;
        break;
      case 8051:
        ret = 8137;
        break;
      case 8052:
        ret = 8138;
        break;
      case 8053:
        ret = 8139;
        break;
      case 8054:
        ret = 8154;
        break;
      case 8055:
        ret = 8155;
        break;
      case 8056:
        ret = 8184;
        break;
      case 8057:
        ret = 8185;
        break;
      case 8058:
        ret = 8170;
        break;
      case 8059:
        ret = 8171;
        break;
      case 8060:
        ret = 8186;
        break;
      case 8061:
        ret = 8187;
        break;
      case 8064:
        ret = 8072;
        break;
      case 8065:
        ret = 8073;
        break;
      case 8066:
        ret = 8074;
        break;
      case 8067:
        ret = 8075;
        break;
      case 8068:
        ret = 8076;
        break;
      case 8069:
        ret = 8077;
        break;
      case 8070:
        ret = 8078;
        break;
      case 8071:
        ret = 8079;
        break;
      case 8080:
        ret = 8088;
        break;
      case 8081:
        ret = 8089;
        break;
      case 8082:
        ret = 8090;
        break;
      case 8083:
        ret = 8091;
        break;
      case 8084:
        ret = 8092;
        break;
      case 8085:
        ret = 8093;
        break;
      case 8086:
        ret = 8094;
        break;
      case 8087:
        ret = 8095;
        break;
      case 8096:
        ret = 8104;
        break;
      case 8097:
        ret = 8105;
        break;
      case 8098:
        ret = 8106;
        break;
      case 8099:
        ret = 8107;
        break;
      case 8100:
        ret = 8108;
        break;
      case 8101:
        ret = 8109;
        break;
      case 8102:
        ret = 8110;
        break;
      case 8103:
        ret = 8111;
        break;
      case 8112:
        ret = 8120;
        break;
      case 8113:
        ret = 8121;
        break;
      case 8115:
        ret = 8124;
        break;
      case 8131:
        ret = 8140;
        break;
      case 8144:
        ret = 8152;
        break;
      case 8145:
        ret = 8153;
        break;
      case 8160:
        ret = 8168;
        break;
      case 8161:
        ret = 8169;
        break;
      case 8165:
        ret = 8172;
        break;
      case 8179:
        ret = 8188;
        break;
      case 8560:
        ret = 8544;
        break;
      case 8561:
        ret = 8545;
        break;
      case 8562:
        ret = 8546;
        break;
      case 8563:
        ret = 8547;
        break;
      case 8564:
        ret = 8548;
        break;
      case 8565:
        ret = 8549;
        break;
      case 8566:
        ret = 8550;
        break;
      case 8567:
        ret = 8551;
        break;
      case 8568:
        ret = 8552;
        break;
      case 8569:
        ret = 8553;
        break;
      case 8570:
        ret = 8554;
        break;
      case 8571:
        ret = 8555;
        break;
      case 8572:
        ret = 8556;
        break;
      case 8573:
        ret = 8557;
        break;
      case 8574:
        ret = 8558;
        break;
      case 8575:
        ret = 8559;
        break;
      case 9424:
        ret = 9398;
        break;
      case 9425:
        ret = 9399;
        break;
      case 9426:
        ret = 9400;
        break;
      case 9427:
        ret = 9401;
        break;
      case 9428:
        ret = 9402;
        break;
      case 9429:
        ret = 9403;
        break;
      case 9430:
        ret = 9404;
        break;
      case 9431:
        ret = 9405;
        break;
      case 9432:
        ret = 9406;
        break;
      case 9433:
        ret = 9407;
        break;
      case 9434:
        ret = 9408;
        break;
      case 9435:
        ret = 9409;
        break;
      case 9436:
        ret = 9410;
        break;
      case 9437:
        ret = 9411;
        break;
      case 9438:
        ret = 9412;
        break;
      case 9439:
        ret = 9413;
        break;
      case 9440:
        ret = 9414;
        break;
      case 9441:
        ret = 9415;
        break;
      case 9442:
        ret = 9416;
        break;
      case 9443:
        ret = 9417;
        break;
      case 9444:
        ret = 9418;
        break;
      case 9445:
        ret = 9419;
        break;
      case 9446:
        ret = 9420;
        break;
      case 9447:
        ret = 9421;
        break;
      case 9448:
        ret = 9422;
        break;
      case 9449:
        ret = 9423;
        break;
      case 65345:
        ret = 65313;
        break;
      case 65346:
        ret = 65314;
        break;
      case 65347:
        ret = 65315;
        break;
      case 65348:
        ret = 65316;
        break;
      case 65349:
        ret = 65317;
        break;
      case 65350:
        ret = 65318;
        break;
      case 65351:
        ret = 65319;
        break;
      case 65352:
        ret = 65320;
        break;
      case 65353:
        ret = 65321;
        break;
      case 65354:
        ret = 65322;
        break;
      case 65355:
        ret = 65323;
        break;
      case 65356:
        ret = 65324;
        break;
      case 65357:
        ret = 65325;
        break;
      case 65358:
        ret = 65326;
        break;
      case 65359:
        ret = 65327;
        break;
      case 65360:
        ret = 65328;
        break;
      case 65361:
        ret = 65329;
        break;
      case 65362:
        ret = 65330;
        break;
      case 65363:
        ret = 65331;
        break;
      case 65364:
        ret = 65332;
        break;
      case 65365:
        ret = 65333;
        break;
      case 65366:
        ret = 65334;
        break;
      case 65367:
        ret = 65335;
        break;
      case 65368:
        ret = 65336;
        break;
      case 65369:
        ret = 65337;
        break;
      case 65370:
        ret = 65338;
        break;
      }
      return (char) ret;
    }
    return Character.toUpperCase(c);
  }

  /** Convert a character to lower case. */
  public static char toLowerCase(char c)
  {
    if (java_1_0)
    {
      int ret = (int) c;
      switch (c)
      {
      case 65:
        ret = 97;
        break;
      case 66:
        ret = 98;
        break;
      case 67:
        ret = 99;
        break;
      case 68:
        ret = 100;
        break;
      case 69:
        ret = 101;
        break;
      case 70:
        ret = 102;
        break;
      case 71:
        ret = 103;
        break;
      case 72:
        ret = 104;
        break;
      case 73:
        ret = 105;
        break;
      case 74:
        ret = 106;
        break;
      case 75:
        ret = 107;
        break;
      case 76:
        ret = 108;
        break;
      case 77:
        ret = 109;
        break;
      case 78:
        ret = 110;
        break;
      case 79:
        ret = 111;
        break;
      case 80:
        ret = 112;
        break;
      case 81:
        ret = 113;
        break;
      case 82:
        ret = 114;
        break;
      case 83:
        ret = 115;
        break;
      case 84:
        ret = 116;
        break;
      case 85:
        ret = 117;
        break;
      case 86:
        ret = 118;
        break;
      case 87:
        ret = 119;
        break;
      case 88:
        ret = 120;
        break;
      case 89:
        ret = 121;
        break;
      case 90:
        ret = 122;
        break;
      case 192:
        ret = 224;
        break;
      case 193:
        ret = 225;
        break;
      case 194:
        ret = 226;
        break;
      case 195:
        ret = 227;
        break;
      case 196:
        ret = 228;
        break;
      case 197:
        ret = 229;
        break;
      case 198:
        ret = 230;
        break;
      case 199:
        ret = 231;
        break;
      case 200:
        ret = 232;
        break;
      case 201:
        ret = 233;
        break;
      case 202:
        ret = 234;
        break;
      case 203:
        ret = 235;
        break;
      case 204:
        ret = 236;
        break;
      case 205:
        ret = 237;
        break;
      case 206:
        ret = 238;
        break;
      case 207:
        ret = 239;
        break;
      case 208:
        ret = 240;
        break;
      case 209:
        ret = 241;
        break;
      case 210:
        ret = 242;
        break;
      case 211:
        ret = 243;
        break;
      case 212:
        ret = 244;
        break;
      case 213:
        ret = 245;
        break;
      case 214:
        ret = 246;
        break;
      case 216:
        ret = 248;
        break;
      case 217:
        ret = 249;
        break;
      case 218:
        ret = 250;
        break;
      case 219:
        ret = 251;
        break;
      case 220:
        ret = 252;
        break;
      case 221:
        ret = 253;
        break;
      case 222:
        ret = 254;
        break;
      case 256:
        ret = 257;
        break;
      case 258:
        ret = 259;
        break;
      case 260:
        ret = 261;
        break;
      case 262:
        ret = 263;
        break;
      case 264:
        ret = 265;
        break;
      case 266:
        ret = 267;
        break;
      case 268:
        ret = 269;
        break;
      case 270:
        ret = 271;
        break;
      case 272:
        ret = 273;
        break;
      case 274:
        ret = 275;
        break;
      case 276:
        ret = 277;
        break;
      case 278:
        ret = 279;
        break;
      case 280:
        ret = 281;
        break;
      case 282:
        ret = 283;
        break;
      case 284:
        ret = 285;
        break;
      case 286:
        ret = 287;
        break;
      case 288:
        ret = 289;
        break;
      case 290:
        ret = 291;
        break;
      case 292:
        ret = 293;
        break;
      case 294:
        ret = 295;
        break;
      case 296:
        ret = 297;
        break;
      case 298:
        ret = 299;
        break;
      case 300:
        ret = 301;
        break;
      case 302:
        ret = 303;
        break;
      case 304:
        ret = 105;
        break;
      case 306:
        ret = 307;
        break;
      case 308:
        ret = 309;
        break;
      case 310:
        ret = 311;
        break;
      case 313:
        ret = 314;
        break;
      case 315:
        ret = 316;
        break;
      case 317:
        ret = 318;
        break;
      case 319:
        ret = 320;
        break;
      case 321:
        ret = 322;
        break;
      case 323:
        ret = 324;
        break;
      case 325:
        ret = 326;
        break;
      case 327:
        ret = 328;
        break;
      case 330:
        ret = 331;
        break;
      case 332:
        ret = 333;
        break;
      case 334:
        ret = 335;
        break;
      case 336:
        ret = 337;
        break;
      case 338:
        ret = 339;
        break;
      case 340:
        ret = 341;
        break;
      case 342:
        ret = 343;
        break;
      case 344:
        ret = 345;
        break;
      case 346:
        ret = 347;
        break;
      case 348:
        ret = 349;
        break;
      case 350:
        ret = 351;
        break;
      case 352:
        ret = 353;
        break;
      case 354:
        ret = 355;
        break;
      case 356:
        ret = 357;
        break;
      case 358:
        ret = 359;
        break;
      case 360:
        ret = 361;
        break;
      case 362:
        ret = 363;
        break;
      case 364:
        ret = 365;
        break;
      case 366:
        ret = 367;
        break;
      case 368:
        ret = 369;
        break;
      case 370:
        ret = 371;
        break;
      case 372:
        ret = 373;
        break;
      case 374:
        ret = 375;
        break;
      case 376:
        ret = 255;
        break;
      case 377:
        ret = 378;
        break;
      case 379:
        ret = 380;
        break;
      case 381:
        ret = 382;
        break;
      case 385:
        ret = 595;
        break;
      case 386:
        ret = 387;
        break;
      case 388:
        ret = 389;
        break;
      case 390:
        ret = 596;
        break;
      case 391:
        ret = 392;
        break;
      case 393:
        ret = 598;
        break;
      case 394:
        ret = 599;
        break;
      case 395:
        ret = 396;
        break;
      case 398:
        ret = 600;
        break;
      case 399:
        ret = 601;
        break;
      case 400:
        ret = 603;
        break;
      case 401:
        ret = 402;
        break;
      case 403:
        ret = 608;
        break;
      case 404:
        ret = 611;
        break;
      case 406:
        ret = 617;
        break;
      case 407:
        ret = 616;
        break;
      case 408:
        ret = 409;
        break;
      case 412:
        ret = 623;
        break;
      case 413:
        ret = 626;
        break;
      case 416:
        ret = 417;
        break;
      case 418:
        ret = 419;
        break;
      case 420:
        ret = 421;
        break;
      case 423:
        ret = 424;
        break;
      case 425:
        ret = 643;
        break;
      case 428:
        ret = 429;
        break;
      case 430:
        ret = 648;
        break;
      case 431:
        ret = 432;
        break;
      case 433:
        ret = 650;
        break;
      case 434:
        ret = 651;
        break;
      case 435:
        ret = 436;
        break;
      case 437:
        ret = 438;
        break;
      case 439:
        ret = 658;
        break;
      case 440:
        ret = 441;
        break;
      case 444:
        ret = 445;
        break;
      case 452:
        ret = 454;
        break;
      case 453:
        ret = 454;
        break;
      case 455:
        ret = 457;
        break;
      case 456:
        ret = 457;
        break;
      case 458:
        ret = 460;
        break;
      case 459:
        ret = 460;
        break;
      case 461:
        ret = 462;
        break;
      case 463:
        ret = 464;
        break;
      case 465:
        ret = 466;
        break;
      case 467:
        ret = 468;
        break;
      case 469:
        ret = 470;
        break;
      case 471:
        ret = 472;
        break;
      case 473:
        ret = 474;
        break;
      case 475:
        ret = 476;
        break;
      case 478:
        ret = 479;
        break;
      case 480:
        ret = 481;
        break;
      case 482:
        ret = 483;
        break;
      case 484:
        ret = 485;
        break;
      case 486:
        ret = 487;
        break;
      case 488:
        ret = 489;
        break;
      case 490:
        ret = 491;
        break;
      case 492:
        ret = 493;
        break;
      case 494:
        ret = 495;
        break;
      case 497:
        ret = 499;
        break;
      case 498:
        ret = 499;
        break;
      case 500:
        ret = 501;
        break;
      case 506:
        ret = 507;
        break;
      case 508:
        ret = 509;
        break;
      case 510:
        ret = 511;
        break;
      case 512:
        ret = 513;
        break;
      case 514:
        ret = 515;
        break;
      case 516:
        ret = 517;
        break;
      case 518:
        ret = 519;
        break;
      case 520:
        ret = 521;
        break;
      case 522:
        ret = 523;
        break;
      case 524:
        ret = 525;
        break;
      case 526:
        ret = 527;
        break;
      case 528:
        ret = 529;
        break;
      case 530:
        ret = 531;
        break;
      case 532:
        ret = 533;
        break;
      case 534:
        ret = 535;
        break;
      case 902:
        ret = 940;
        break;
      case 904:
        ret = 941;
        break;
      case 905:
        ret = 942;
        break;
      case 906:
        ret = 943;
        break;
      case 908:
        ret = 972;
        break;
      case 910:
        ret = 973;
        break;
      case 911:
        ret = 974;
        break;
      case 913:
        ret = 945;
        break;
      case 914:
        ret = 946;
        break;
      case 915:
        ret = 947;
        break;
      case 916:
        ret = 948;
        break;
      case 917:
        ret = 949;
        break;
      case 918:
        ret = 950;
        break;
      case 919:
        ret = 951;
        break;
      case 920:
        ret = 952;
        break;
      case 921:
        ret = 953;
        break;
      case 922:
        ret = 954;
        break;
      case 923:
        ret = 955;
        break;
      case 924:
        ret = 956;
        break;
      case 925:
        ret = 957;
        break;
      case 926:
        ret = 958;
        break;
      case 927:
        ret = 959;
        break;
      case 928:
        ret = 960;
        break;
      case 929:
        ret = 961;
        break;
      case 931:
        ret = 963;
        break;
      case 932:
        ret = 964;
        break;
      case 933:
        ret = 965;
        break;
      case 934:
        ret = 966;
        break;
      case 935:
        ret = 967;
        break;
      case 936:
        ret = 968;
        break;
      case 937:
        ret = 969;
        break;
      case 938:
        ret = 970;
        break;
      case 939:
        ret = 971;
        break;
      case 994:
        ret = 995;
        break;
      case 996:
        ret = 997;
        break;
      case 998:
        ret = 999;
        break;
      case 1000:
        ret = 1001;
        break;
      case 1002:
        ret = 1003;
        break;
      case 1004:
        ret = 1005;
        break;
      case 1006:
        ret = 1007;
        break;
      case 1025:
        ret = 1105;
        break;
      case 1026:
        ret = 1106;
        break;
      case 1027:
        ret = 1107;
        break;
      case 1028:
        ret = 1108;
        break;
      case 1029:
        ret = 1109;
        break;
      case 1030:
        ret = 1110;
        break;
      case 1031:
        ret = 1111;
        break;
      case 1032:
        ret = 1112;
        break;
      case 1033:
        ret = 1113;
        break;
      case 1034:
        ret = 1114;
        break;
      case 1035:
        ret = 1115;
        break;
      case 1036:
        ret = 1116;
        break;
      case 1038:
        ret = 1118;
        break;
      case 1039:
        ret = 1119;
        break;
      case 1040:
        ret = 1072;
        break;
      case 1041:
        ret = 1073;
        break;
      case 1042:
        ret = 1074;
        break;
      case 1043:
        ret = 1075;
        break;
      case 1044:
        ret = 1076;
        break;
      case 1045:
        ret = 1077;
        break;
      case 1046:
        ret = 1078;
        break;
      case 1047:
        ret = 1079;
        break;
      case 1048:
        ret = 1080;
        break;
      case 1049:
        ret = 1081;
        break;
      case 1050:
        ret = 1082;
        break;
      case 1051:
        ret = 1083;
        break;
      case 1052:
        ret = 1084;
        break;
      case 1053:
        ret = 1085;
        break;
      case 1054:
        ret = 1086;
        break;
      case 1055:
        ret = 1087;
        break;
      case 1056:
        ret = 1088;
        break;
      case 1057:
        ret = 1089;
        break;
      case 1058:
        ret = 1090;
        break;
      case 1059:
        ret = 1091;
        break;
      case 1060:
        ret = 1092;
        break;
      case 1061:
        ret = 1093;
        break;
      case 1062:
        ret = 1094;
        break;
      case 1063:
        ret = 1095;
        break;
      case 1064:
        ret = 1096;
        break;
      case 1065:
        ret = 1097;
        break;
      case 1066:
        ret = 1098;
        break;
      case 1067:
        ret = 1099;
        break;
      case 1068:
        ret = 1100;
        break;
      case 1069:
        ret = 1101;
        break;
      case 1070:
        ret = 1102;
        break;
      case 1071:
        ret = 1103;
        break;
      case 1120:
        ret = 1121;
        break;
      case 1122:
        ret = 1123;
        break;
      case 1124:
        ret = 1125;
        break;
      case 1126:
        ret = 1127;
        break;
      case 1128:
        ret = 1129;
        break;
      case 1130:
        ret = 1131;
        break;
      case 1132:
        ret = 1133;
        break;
      case 1134:
        ret = 1135;
        break;
      case 1136:
        ret = 1137;
        break;
      case 1138:
        ret = 1139;
        break;
      case 1140:
        ret = 1141;
        break;
      case 1142:
        ret = 1143;
        break;
      case 1144:
        ret = 1145;
        break;
      case 1146:
        ret = 1147;
        break;
      case 1148:
        ret = 1149;
        break;
      case 1150:
        ret = 1151;
        break;
      case 1152:
        ret = 1153;
        break;
      case 1168:
        ret = 1169;
        break;
      case 1170:
        ret = 1171;
        break;
      case 1172:
        ret = 1173;
        break;
      case 1174:
        ret = 1175;
        break;
      case 1176:
        ret = 1177;
        break;
      case 1178:
        ret = 1179;
        break;
      case 1180:
        ret = 1181;
        break;
      case 1182:
        ret = 1183;
        break;
      case 1184:
        ret = 1185;
        break;
      case 1186:
        ret = 1187;
        break;
      case 1188:
        ret = 1189;
        break;
      case 1190:
        ret = 1191;
        break;
      case 1192:
        ret = 1193;
        break;
      case 1194:
        ret = 1195;
        break;
      case 1196:
        ret = 1197;
        break;
      case 1198:
        ret = 1199;
        break;
      case 1200:
        ret = 1201;
        break;
      case 1202:
        ret = 1203;
        break;
      case 1204:
        ret = 1205;
        break;
      case 1206:
        ret = 1207;
        break;
      case 1208:
        ret = 1209;
        break;
      case 1210:
        ret = 1211;
        break;
      case 1212:
        ret = 1213;
        break;
      case 1214:
        ret = 1215;
        break;
      case 1217:
        ret = 1218;
        break;
      case 1219:
        ret = 1220;
        break;
      case 1223:
        ret = 1224;
        break;
      case 1227:
        ret = 1228;
        break;
      case 1232:
        ret = 1233;
        break;
      case 1234:
        ret = 1235;
        break;
      case 1236:
        ret = 1237;
        break;
      case 1238:
        ret = 1239;
        break;
      case 1240:
        ret = 1241;
        break;
      case 1242:
        ret = 1243;
        break;
      case 1244:
        ret = 1245;
        break;
      case 1246:
        ret = 1247;
        break;
      case 1248:
        ret = 1249;
        break;
      case 1250:
        ret = 1251;
        break;
      case 1252:
        ret = 1253;
        break;
      case 1254:
        ret = 1255;
        break;
      case 1256:
        ret = 1257;
        break;
      case 1258:
        ret = 1259;
        break;
      case 1262:
        ret = 1263;
        break;
      case 1264:
        ret = 1265;
        break;
      case 1266:
        ret = 1267;
        break;
      case 1268:
        ret = 1269;
        break;
      case 1272:
        ret = 1273;
        break;
      case 1329:
        ret = 1377;
        break;
      case 1330:
        ret = 1378;
        break;
      case 1331:
        ret = 1379;
        break;
      case 1332:
        ret = 1380;
        break;
      case 1333:
        ret = 1381;
        break;
      case 1334:
        ret = 1382;
        break;
      case 1335:
        ret = 1383;
        break;
      case 1336:
        ret = 1384;
        break;
      case 1337:
        ret = 1385;
        break;
      case 1338:
        ret = 1386;
        break;
      case 1339:
        ret = 1387;
        break;
      case 1340:
        ret = 1388;
        break;
      case 1341:
        ret = 1389;
        break;
      case 1342:
        ret = 1390;
        break;
      case 1343:
        ret = 1391;
        break;
      case 1344:
        ret = 1392;
        break;
      case 1345:
        ret = 1393;
        break;
      case 1346:
        ret = 1394;
        break;
      case 1347:
        ret = 1395;
        break;
      case 1348:
        ret = 1396;
        break;
      case 1349:
        ret = 1397;
        break;
      case 1350:
        ret = 1398;
        break;
      case 1351:
        ret = 1399;
        break;
      case 1352:
        ret = 1400;
        break;
      case 1353:
        ret = 1401;
        break;
      case 1354:
        ret = 1402;
        break;
      case 1355:
        ret = 1403;
        break;
      case 1356:
        ret = 1404;
        break;
      case 1357:
        ret = 1405;
        break;
      case 1358:
        ret = 1406;
        break;
      case 1359:
        ret = 1407;
        break;
      case 1360:
        ret = 1408;
        break;
      case 1361:
        ret = 1409;
        break;
      case 1362:
        ret = 1410;
        break;
      case 1363:
        ret = 1411;
        break;
      case 1364:
        ret = 1412;
        break;
      case 1365:
        ret = 1413;
        break;
      case 1366:
        ret = 1414;
        break;
      case 4256:
        ret = 4304;
        break;
      case 4257:
        ret = 4305;
        break;
      case 4258:
        ret = 4306;
        break;
      case 4259:
        ret = 4307;
        break;
      case 4260:
        ret = 4308;
        break;
      case 4261:
        ret = 4309;
        break;
      case 4262:
        ret = 4310;
        break;
      case 4263:
        ret = 4311;
        break;
      case 4264:
        ret = 4312;
        break;
      case 4265:
        ret = 4313;
        break;
      case 4266:
        ret = 4314;
        break;
      case 4267:
        ret = 4315;
        break;
      case 4268:
        ret = 4316;
        break;
      case 4269:
        ret = 4317;
        break;
      case 4270:
        ret = 4318;
        break;
      case 4271:
        ret = 4319;
        break;
      case 4272:
        ret = 4320;
        break;
      case 4273:
        ret = 4321;
        break;
      case 4274:
        ret = 4322;
        break;
      case 4275:
        ret = 4323;
        break;
      case 4276:
        ret = 4324;
        break;
      case 4277:
        ret = 4325;
        break;
      case 4278:
        ret = 4326;
        break;
      case 4279:
        ret = 4327;
        break;
      case 4280:
        ret = 4328;
        break;
      case 4281:
        ret = 4329;
        break;
      case 4282:
        ret = 4330;
        break;
      case 4283:
        ret = 4331;
        break;
      case 4284:
        ret = 4332;
        break;
      case 4285:
        ret = 4333;
        break;
      case 4286:
        ret = 4334;
        break;
      case 4287:
        ret = 4335;
        break;
      case 4288:
        ret = 4336;
        break;
      case 4289:
        ret = 4337;
        break;
      case 4290:
        ret = 4338;
        break;
      case 4291:
        ret = 4339;
        break;
      case 4292:
        ret = 4340;
        break;
      case 4293:
        ret = 4341;
        break;
      case 7680:
        ret = 7681;
        break;
      case 7682:
        ret = 7683;
        break;
      case 7684:
        ret = 7685;
        break;
      case 7686:
        ret = 7687;
        break;
      case 7688:
        ret = 7689;
        break;
      case 7690:
        ret = 7691;
        break;
      case 7692:
        ret = 7693;
        break;
      case 7694:
        ret = 7695;
        break;
      case 7696:
        ret = 7697;
        break;
      case 7698:
        ret = 7699;
        break;
      case 7700:
        ret = 7701;
        break;
      case 7702:
        ret = 7703;
        break;
      case 7704:
        ret = 7705;
        break;
      case 7706:
        ret = 7707;
        break;
      case 7708:
        ret = 7709;
        break;
      case 7710:
        ret = 7711;
        break;
      case 7712:
        ret = 7713;
        break;
      case 7714:
        ret = 7715;
        break;
      case 7716:
        ret = 7717;
        break;
      case 7718:
        ret = 7719;
        break;
      case 7720:
        ret = 7721;
        break;
      case 7722:
        ret = 7723;
        break;
      case 7724:
        ret = 7725;
        break;
      case 7726:
        ret = 7727;
        break;
      case 7728:
        ret = 7729;
        break;
      case 7730:
        ret = 7731;
        break;
      case 7732:
        ret = 7733;
        break;
      case 7734:
        ret = 7735;
        break;
      case 7736:
        ret = 7737;
        break;
      case 7738:
        ret = 7739;
        break;
      case 7740:
        ret = 7741;
        break;
      case 7742:
        ret = 7743;
        break;
      case 7744:
        ret = 7745;
        break;
      case 7746:
        ret = 7747;
        break;
      case 7748:
        ret = 7749;
        break;
      case 7750:
        ret = 7751;
        break;
      case 7752:
        ret = 7753;
        break;
      case 7754:
        ret = 7755;
        break;
      case 7756:
        ret = 7757;
        break;
      case 7758:
        ret = 7759;
        break;
      case 7760:
        ret = 7761;
        break;
      case 7762:
        ret = 7763;
        break;
      case 7764:
        ret = 7765;
        break;
      case 7766:
        ret = 7767;
        break;
      case 7768:
        ret = 7769;
        break;
      case 7770:
        ret = 7771;
        break;
      case 7772:
        ret = 7773;
        break;
      case 7774:
        ret = 7775;
        break;
      case 7776:
        ret = 7777;
        break;
      case 7778:
        ret = 7779;
        break;
      case 7780:
        ret = 7781;
        break;
      case 7782:
        ret = 7783;
        break;
      case 7784:
        ret = 7785;
        break;
      case 7786:
        ret = 7787;
        break;
      case 7788:
        ret = 7789;
        break;
      case 7790:
        ret = 7791;
        break;
      case 7792:
        ret = 7793;
        break;
      case 7794:
        ret = 7795;
        break;
      case 7796:
        ret = 7797;
        break;
      case 7798:
        ret = 7799;
        break;
      case 7800:
        ret = 7801;
        break;
      case 7802:
        ret = 7803;
        break;
      case 7804:
        ret = 7805;
        break;
      case 7806:
        ret = 7807;
        break;
      case 7808:
        ret = 7809;
        break;
      case 7810:
        ret = 7811;
        break;
      case 7812:
        ret = 7813;
        break;
      case 7814:
        ret = 7815;
        break;
      case 7816:
        ret = 7817;
        break;
      case 7818:
        ret = 7819;
        break;
      case 7820:
        ret = 7821;
        break;
      case 7822:
        ret = 7823;
        break;
      case 7824:
        ret = 7825;
        break;
      case 7826:
        ret = 7827;
        break;
      case 7828:
        ret = 7829;
        break;
      case 7840:
        ret = 7841;
        break;
      case 7842:
        ret = 7843;
        break;
      case 7844:
        ret = 7845;
        break;
      case 7846:
        ret = 7847;
        break;
      case 7848:
        ret = 7849;
        break;
      case 7850:
        ret = 7851;
        break;
      case 7852:
        ret = 7853;
        break;
      case 7854:
        ret = 7855;
        break;
      case 7856:
        ret = 7857;
        break;
      case 7858:
        ret = 7859;
        break;
      case 7860:
        ret = 7861;
        break;
      case 7862:
        ret = 7863;
        break;
      case 7864:
        ret = 7865;
        break;
      case 7866:
        ret = 7867;
        break;
      case 7868:
        ret = 7869;
        break;
      case 7870:
        ret = 7871;
        break;
      case 7872:
        ret = 7873;
        break;
      case 7874:
        ret = 7875;
        break;
      case 7876:
        ret = 7877;
        break;
      case 7878:
        ret = 7879;
        break;
      case 7880:
        ret = 7881;
        break;
      case 7882:
        ret = 7883;
        break;
      case 7884:
        ret = 7885;
        break;
      case 7886:
        ret = 7887;
        break;
      case 7888:
        ret = 7889;
        break;
      case 7890:
        ret = 7891;
        break;
      case 7892:
        ret = 7893;
        break;
      case 7894:
        ret = 7895;
        break;
      case 7896:
        ret = 7897;
        break;
      case 7898:
        ret = 7899;
        break;
      case 7900:
        ret = 7901;
        break;
      case 7902:
        ret = 7903;
        break;
      case 7904:
        ret = 7905;
        break;
      case 7906:
        ret = 7907;
        break;
      case 7908:
        ret = 7909;
        break;
      case 7910:
        ret = 7911;
        break;
      case 7912:
        ret = 7913;
        break;
      case 7914:
        ret = 7915;
        break;
      case 7916:
        ret = 7917;
        break;
      case 7918:
        ret = 7919;
        break;
      case 7920:
        ret = 7921;
        break;
      case 7922:
        ret = 7923;
        break;
      case 7924:
        ret = 7925;
        break;
      case 7926:
        ret = 7927;
        break;
      case 7928:
        ret = 7929;
        break;
      case 7944:
        ret = 7936;
        break;
      case 7945:
        ret = 7937;
        break;
      case 7946:
        ret = 7938;
        break;
      case 7947:
        ret = 7939;
        break;
      case 7948:
        ret = 7940;
        break;
      case 7949:
        ret = 7941;
        break;
      case 7950:
        ret = 7942;
        break;
      case 7951:
        ret = 7943;
        break;
      case 7960:
        ret = 7952;
        break;
      case 7961:
        ret = 7953;
        break;
      case 7962:
        ret = 7954;
        break;
      case 7963:
        ret = 7955;
        break;
      case 7964:
        ret = 7956;
        break;
      case 7965:
        ret = 7957;
        break;
      case 7976:
        ret = 7968;
        break;
      case 7977:
        ret = 7969;
        break;
      case 7978:
        ret = 7970;
        break;
      case 7979:
        ret = 7971;
        break;
      case 7980:
        ret = 7972;
        break;
      case 7981:
        ret = 7973;
        break;
      case 7982:
        ret = 7974;
        break;
      case 7983:
        ret = 7975;
        break;
      case 7992:
        ret = 7984;
        break;
      case 7993:
        ret = 7985;
        break;
      case 7994:
        ret = 7986;
        break;
      case 7995:
        ret = 7987;
        break;
      case 7996:
        ret = 7988;
        break;
      case 7997:
        ret = 7989;
        break;
      case 7998:
        ret = 7990;
        break;
      case 7999:
        ret = 7991;
        break;
      case 8008:
        ret = 8000;
        break;
      case 8009:
        ret = 8001;
        break;
      case 8010:
        ret = 8002;
        break;
      case 8011:
        ret = 8003;
        break;
      case 8012:
        ret = 8004;
        break;
      case 8013:
        ret = 8005;
        break;
      case 8025:
        ret = 8017;
        break;
      case 8027:
        ret = 8019;
        break;
      case 8029:
        ret = 8021;
        break;
      case 8031:
        ret = 8023;
        break;
      case 8040:
        ret = 8032;
        break;
      case 8041:
        ret = 8033;
        break;
      case 8042:
        ret = 8034;
        break;
      case 8043:
        ret = 8035;
        break;
      case 8044:
        ret = 8036;
        break;
      case 8045:
        ret = 8037;
        break;
      case 8046:
        ret = 8038;
        break;
      case 8047:
        ret = 8039;
        break;
      case 8072:
        ret = 8064;
        break;
      case 8073:
        ret = 8065;
        break;
      case 8074:
        ret = 8066;
        break;
      case 8075:
        ret = 8067;
        break;
      case 8076:
        ret = 8068;
        break;
      case 8077:
        ret = 8069;
        break;
      case 8078:
        ret = 8070;
        break;
      case 8079:
        ret = 8071;
        break;
      case 8088:
        ret = 8080;
        break;
      case 8089:
        ret = 8081;
        break;
      case 8090:
        ret = 8082;
        break;
      case 8091:
        ret = 8083;
        break;
      case 8092:
        ret = 8084;
        break;
      case 8093:
        ret = 8085;
        break;
      case 8094:
        ret = 8086;
        break;
      case 8095:
        ret = 8087;
        break;
      case 8104:
        ret = 8096;
        break;
      case 8105:
        ret = 8097;
        break;
      case 8106:
        ret = 8098;
        break;
      case 8107:
        ret = 8099;
        break;
      case 8108:
        ret = 8100;
        break;
      case 8109:
        ret = 8101;
        break;
      case 8110:
        ret = 8102;
        break;
      case 8111:
        ret = 8103;
        break;
      case 8120:
        ret = 8112;
        break;
      case 8121:
        ret = 8113;
        break;
      case 8122:
        ret = 8048;
        break;
      case 8123:
        ret = 8049;
        break;
      case 8124:
        ret = 8115;
        break;
      case 8136:
        ret = 8050;
        break;
      case 8137:
        ret = 8051;
        break;
      case 8138:
        ret = 8052;
        break;
      case 8139:
        ret = 8053;
        break;
      case 8140:
        ret = 8131;
        break;
      case 8152:
        ret = 8144;
        break;
      case 8153:
        ret = 8145;
        break;
      case 8154:
        ret = 8054;
        break;
      case 8155:
        ret = 8055;
        break;
      case 8168:
        ret = 8160;
        break;
      case 8169:
        ret = 8161;
        break;
      case 8170:
        ret = 8058;
        break;
      case 8171:
        ret = 8059;
        break;
      case 8172:
        ret = 8165;
        break;
      case 8184:
        ret = 8056;
        break;
      case 8185:
        ret = 8057;
        break;
      case 8186:
        ret = 8060;
        break;
      case 8187:
        ret = 8061;
        break;
      case 8188:
        ret = 8179;
        break;
      case 8544:
        ret = 8560;
        break;
      case 8545:
        ret = 8561;
        break;
      case 8546:
        ret = 8562;
        break;
      case 8547:
        ret = 8563;
        break;
      case 8548:
        ret = 8564;
        break;
      case 8549:
        ret = 8565;
        break;
      case 8550:
        ret = 8566;
        break;
      case 8551:
        ret = 8567;
        break;
      case 8552:
        ret = 8568;
        break;
      case 8553:
        ret = 8569;
        break;
      case 8554:
        ret = 8570;
        break;
      case 8555:
        ret = 8571;
        break;
      case 8556:
        ret = 8572;
        break;
      case 8557:
        ret = 8573;
        break;
      case 8558:
        ret = 8574;
        break;
      case 8559:
        ret = 8575;
        break;
      case 9398:
        ret = 9424;
        break;
      case 9399:
        ret = 9425;
        break;
      case 9400:
        ret = 9426;
        break;
      case 9401:
        ret = 9427;
        break;
      case 9402:
        ret = 9428;
        break;
      case 9403:
        ret = 9429;
        break;
      case 9404:
        ret = 9430;
        break;
      case 9405:
        ret = 9431;
        break;
      case 9406:
        ret = 9432;
        break;
      case 9407:
        ret = 9433;
        break;
      case 9408:
        ret = 9434;
        break;
      case 9409:
        ret = 9435;
        break;
      case 9410:
        ret = 9436;
        break;
      case 9411:
        ret = 9437;
        break;
      case 9412:
        ret = 9438;
        break;
      case 9413:
        ret = 9439;
        break;
      case 9414:
        ret = 9440;
        break;
      case 9415:
        ret = 9441;
        break;
      case 9416:
        ret = 9442;
        break;
      case 9417:
        ret = 9443;
        break;
      case 9418:
        ret = 9444;
        break;
      case 9419:
        ret = 9445;
        break;
      case 9420:
        ret = 9446;
        break;
      case 9421:
        ret = 9447;
        break;
      case 9422:
        ret = 9448;
        break;
      case 9423:
        ret = 9449;
        break;
      case 65313:
        ret = 65345;
        break;
      case 65314:
        ret = 65346;
        break;
      case 65315:
        ret = 65347;
        break;
      case 65316:
        ret = 65348;
        break;
      case 65317:
        ret = 65349;
        break;
      case 65318:
        ret = 65350;
        break;
      case 65319:
        ret = 65351;
        break;
      case 65320:
        ret = 65352;
        break;
      case 65321:
        ret = 65353;
        break;
      case 65322:
        ret = 65354;
        break;
      case 65323:
        ret = 65355;
        break;
      case 65324:
        ret = 65356;
        break;
      case 65325:
        ret = 65357;
        break;
      case 65326:
        ret = 65358;
        break;
      case 65327:
        ret = 65359;
        break;
      case 65328:
        ret = 65360;
        break;
      case 65329:
        ret = 65361;
        break;
      case 65330:
        ret = 65362;
        break;
      case 65331:
        ret = 65363;
        break;
      case 65332:
        ret = 65364;
        break;
      case 65333:
        ret = 65365;
        break;
      case 65334:
        ret = 65366;
        break;
      case 65335:
        ret = 65367;
        break;
      case 65336:
        ret = 65368;
        break;
      case 65337:
        ret = 65369;
        break;
      case 65338:
        ret = 65370;
        break;
      }
      return (char) ret;
    }
    return Character.toLowerCase(c);
  }

  /** Convert a String to title case. */
  public static String toTitleCase(String s)
  {
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < s.length(); i++)
    {
      sb.append(CaseMgr.toTitleCase(s.charAt(i)));
    }
    return sb.toString();
  }

  /** Convert a String to upper case. */
  public static String toUpperCase(String s)
  {
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < s.length(); i++)
    {
      sb.append(CaseMgr.toUpperCase(s.charAt(i)));
    }
    return sb.toString();
  }

  /** Convert a String to lower case. */
  public static String toLowerCase(String s)
  {
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < s.length(); i++)
    {
      sb.append(CaseMgr.toLowerCase(s.charAt(i)));
    }
    return sb.toString();
  }

  /** Convert a character to title case. */
  public static char toTitleCase(char c)
  {
    if (java_1_0)
    {
      int ret = (int) toUpperCase(c);
      switch (c)
      {
      case 452:
        ret = 453;
        break;
      case 453:
        ret = 453;
        break;
      case 454:
        ret = 453;
        break;
      case 455:
        ret = 456;
        break;
      case 456:
        ret = 456;
        break;
      case 457:
        ret = 456;
        break;
      case 458:
        ret = 459;
        break;
      case 459:
        ret = 459;
        break;
      case 460:
        ret = 459;
        break;
      case 497:
        ret = 498;
        break;
      case 498:
        ret = 498;
        break;
      case 499:
        ret = 498;
        break;
      }
      return (char) ret;
    }
    return Character.toTitleCase(c);
  }

  /**
   * Duplicates the regionMatches routine of String -- but makes use of the
   * definitions of upper, lower, and title case in this class when ignoreCase
   * is set.
   */
  public static boolean regionMatches(StringLike s1, boolean ign, int i1,
          StringLike s2, int i2, int i3)
  {
    int itot = i2 + i3;
    if (itot > s2.length() || i1 + i3 > s1.length())
    {
      return false;
    }
    if (!ign)
    {
      for (int i = i2; i < itot; i++)
      {
        if (s2.charAt(i) != s1.charAt(i1++))
        {
          return false;
        }
      }
    }
    else
    {
      for (int i = i2; i < itot; i++)
      {
        if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))
        {
          return false;
        }
      }
    }
    return true;
  }

  /**
   * Duplicates the regionMatches routine of String -- but makes use of the
   * definitions of upper, lower, and title case in this class when ignoreCase
   * is set.
   */
  public static boolean regionMatches(String s1, boolean ign, int i1,
          StringLike s2, int i2, int i3)
  {
    int itot = i2 + i3;
    if (itot > s2.length() || i1 + i3 > s1.length())
    {
      return false;
    }
    if (!ign)
    {
      for (int i = i2; i < itot; i++)
      {
        if (s2.charAt(i) != s1.charAt(i1++))
        {
          return false;
        }
      }
    }
    else
    {
      for (int i = i2; i < itot; i++)
      {
        if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))
        {
          return false;
        }
      }
    }
    return true;
  }

  /**
   * Duplicates the regionMatches routine of String -- but makes use of the
   * definitions of upper, lower, and title case in this class when ignoreCase
   * is set.
   */
  public static boolean regionMatches(StringLike s1, boolean ign, int i1,
          String s2, int i2, int i3)
  {
    int itot = i2 + i3;
    if (itot > s2.length() || i1 + i3 > s1.length())
    {
      return false;
    }
    if (!ign)
    {
      for (int i = i2; i < itot; i++)
      {
        if (s2.charAt(i) != s1.charAt(i1++))
        {
          return false;
        }
      }
    }
    else
    {
      for (int i = i2; i < itot; i++)
      {
        if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))
        {
          return false;
        }
      }
    }
    return true;
  }

  /**
   * Duplicates the regionMatches routine of String -- but makes use of the
   * definitions of upper, lower, and title case in this class when ignoreCase
   * is set.
   */
  public static boolean regionMatches(String s1, boolean ign, int i1,
          String s2, int i2, int i3)
  {
    int itot = i2 + i3;
    if (itot > s2.length() || i1 + i3 > s1.length())
    {
      return false;
    }
    if (!ign)
    {
      for (int i = i2; i < itot; i++)
      {
        if (s2.charAt(i) != s1.charAt(i1++))
        {
          return false;
        }
      }
    }
    else
    {
      for (int i = i2; i < itot; i++)
      {
        if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))
        {
          return false;
        }
      }
    }
    return true;
  }
}
