(icu4c jitterbug 776): Add ISO 3166 country code index to time zone data and new API to TimeZone

X-SVN-Rev: 3535
This commit is contained in:
Alan Liu 2001-02-02 19:30:16 +00:00
parent a38c004603
commit 7176442ac0
6 changed files with 992 additions and 502 deletions

View File

@ -724,6 +724,44 @@ public class TimeZoneTest extends TestFmwk
}
}
}
public void TestCountries() {
// Make sure America/Los_Angeles is in the "US" group, and
// Asia/Tokyo isn't. Vice versa for the "JP" group.
String[] s = TimeZone.getAvailableIDs("US");
boolean la = false, tokyo = false;
String laZone = "America/Los_Angeles", tokyoZone = "Asia/Tokyo";
for (int i=0; i<s.length; ++i) {
if (s[i].equals(laZone)) {
la = true;
}
if (s[i].equals(tokyoZone)) {
tokyo = true;
}
}
if (!la || tokyo) {
errln("FAIL: " + laZone + " in US = " + la);
errln("FAIL: " + tokyoZone + " in US = " + tokyo);
}
s = TimeZone.getAvailableIDs("JP");
la = false; tokyo = false;
for (int i=0; i<s.length; ++i) {
if (s[i].equals(laZone)) {
la = true;
}
if (s[i].equals(tokyoZone)) {
tokyo = true;
}
}
if (la || !tokyo) {
errln("FAIL: " + laZone + " in JP = " + la);
errln("FAIL: " + tokyoZone + " in JP = " + tokyo);
}
}
}
//eof

View File

@ -377,6 +377,20 @@ abstract public class TimeZone implements Serializable, Cloneable {
return TimeZoneData.getAvailableIDs(rawOffset);
}
/**
* Return a new String array containing all system TimeZone IDs
* associated with the given country. These IDs may be passed to
* <code>get()</code> to construct the corresponding TimeZone
* object.
* @param a two-letter ISO 3166 country code, or <code>null</code>
* to return zones not associated with any country
* @return an array of IDs for system TimeZones with the given
* raw offset. If there are none, return a zero-length array.
*/
public static String[] getAvailableIDs(String country) {
return TimeZoneData.getAvailableIDs(country);
}
/**
* Return a new String array containing all system TimeZone IDs.
* These IDs (and only these IDs) may be passed to

View File

@ -3,8 +3,8 @@
* others. All Rights Reserved.
*********************************************************************
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/Attic/TimeZoneData.java,v $
* $Date: 2001/01/09 22:48:25 $
* $Revision: 1.2 $
* $Date: 2001/02/02 19:30:02 $
* $Revision: 1.3 $
*/
package com.ibm.util;
import java.util.Hashtable;
@ -86,6 +86,44 @@ class TimeZoneData {
// Failed to find any; return empty array
return new String[0];
}
/**
* Return a new String array containing all system TimeZone IDs
* associated with the given country. These IDs may be passed to
* <code>get()</code> to construct the corresponding TimeZone
* object.
* @param a two-letter ISO 3166 country code, or <code>null</code>
* to return zones not associated with any country
* @return an array of IDs for system TimeZones with the given
* raw offset. If there are none, return a zero-length array.
*/
public static String[] getAvailableIDs(String countryCode) {
// Construct our key; this is an integer of the form
// 32*n1 + n0, where 0<=n<=25.
int countryHash = 0;
if (countryCode != null) {
countryHash =
((Character.toUpperCase(countryCode.charAt(0)) - 'A') << 5) |
(Character.toUpperCase(countryCode.charAt(1)) - 'A');
}
// Do a linear search; there are ~ 250 entries
for (int i=0; i<INDEX_BY_COUNTRY.length; ) {
if (countryHash == INDEX_BY_COUNTRY[i]) {
// Found the desired country
int n = INDEX_BY_COUNTRY[i+1];
String[] result = new String[n];
for (int j=0; j<n; ++j) {
result[j] = IDS[INDEX_BY_COUNTRY[i+2+j]];
}
return result;
} else {
i += INDEX_BY_COUNTRY[i+1] + 2;
}
}
// Failed to find any; return empty array
return new String[0];
}
/**
* Returns the number of IDs in the equivalency group that
@ -206,9 +244,31 @@ class TimeZoneData {
*/
static int[] INDEX_BY_OFFSET;
/**
* Index by country to list of zones. Entries are in order of
* ascending country code. Format:
*
* Offset Data Notes
* i+0 country as an integer 32n1 + n0; see below
* i+1 count number of IDs to follow
* i+2..j IDs indices into IDS[]
*
* If the number of zones is n, then j=n+1.
*
* The first integer in each entry is the country code as an integer
* from 0..(26-1)*32+(26-1). This is computed as follows: A two
* letter country code XY is converted to ((X-'A')<<5) | (Y-'A').
* The special value 0 indicates no assigned country. This also
* maps to the country code 'AA' but currently this is not a valid
* country code.
*
* Zone ID values are indices into IDS[].
*/
static int[] INDEX_BY_COUNTRY;
//----------------------------------------------------------------
// BEGIN GENERATED SOURCE CODE
// Date: Tue Jan 09 10:51:18 PST 2001
// Date: Fri Feb 02 10:36:32 PST 2001
// Version: tzdata2000h from ftp://elsie.nci.nih.gov/pub
// Tool: icu/source/tools/gentz
// See: icu/source/tools/gentz/readme.txt
@ -399,6 +459,7 @@ class TimeZoneData {
"Antarctica/McMurdo",
"Antarctica/Palmer",
"Antarctica/Syowa",
"Arctic/Longyearbyen",
"Asia/Aden",
"Asia/Almaty",
"Asia/Amman",
@ -539,6 +600,7 @@ class TimeZoneData {
"Europe/Belfast",
"Europe/Belgrade",
"Europe/Berlin",
"Europe/Bratislava",
"Europe/Brussels",
"Europe/Bucharest",
"Europe/Budapest",
@ -551,6 +613,7 @@ class TimeZoneData {
"Europe/Kaliningrad",
"Europe/Kiev",
"Europe/Lisbon",
"Europe/Ljubljana",
"Europe/London",
"Europe/Luxembourg",
"Europe/Madrid",
@ -564,7 +627,10 @@ class TimeZoneData {
"Europe/Riga",
"Europe/Rome",
"Europe/Samara",
"Europe/San_Marino",
"Europe/Sarajevo",
"Europe/Simferopol",
"Europe/Skopje",
"Europe/Sofia",
"Europe/Stockholm",
"Europe/Tallinn",
@ -572,9 +638,11 @@ class TimeZoneData {
"Europe/Tiraspol",
"Europe/Uzhgorod",
"Europe/Vaduz",
"Europe/Vatican",
"Europe/Vienna",
"Europe/Vilnius",
"Europe/Warsaw",
"Europe/Zagreb",
"Europe/Zaporozhye",
"Europe/Zurich",
"GMT",
@ -653,26 +721,26 @@ class TimeZoneData {
* >> GENERATED DATA: DO NOT EDIT <<
*/
static final String DATA_RLE =
"\000\u0698\000\000\uFFFF\u5740\000\001\000\u011F\000\000\uFFFF\u6550\000"+
"\006\000\u011E\000\u0175\000\u017D\000\u0191\000\u0193\000\u0196\000\000"+
"\uFFFF\u7360\000\006\000\u011D\000\u0165\000\u0183\000\u018A\000\u018B"+
"\000\u019D\000\001\uFFFF\u7360\000\003\000\001\uFFFF\uFFFF\000x\000\000"+
"\000\u06A0\000\000\uFFFF\u5740\000\001\000\u0120\000\000\uFFFF\u6550\000"+
"\006\000\u011F\000\u017D\000\u0185\000\u0199\000\u019B\000\u019E\000\000"+
"\uFFFF\u7360\000\006\000\u011E\000\u016D\000\u018B\000\u0192\000\u0193"+
"\000\u01A5\000\001\uFFFF\u7360\000\003\000\001\uFFFF\uFFFF\000x\000\000"+
"\000\011\uFFFF\uFFFF\000\001\000x\000\000\000<\000\001\0009\000\001\uFFFF"+
"\u7360\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000\002\000\001\uFFFF"+
"\uFFFF\000\000\000\000\000\036\000\001\000\u019B\000\000\uFFFF\u7A68\000"+
"\001\000\u0190\000\000\uFFFF\u8170\000\002\000\u0127\000\u0187\000\001"+
"\uFFFF\000\000\000\000\000\036\000\001\000\u01A3\000\000\uFFFF\u7A68\000"+
"\001\000\u0198\000\000\uFFFF\u8170\000\002\000\u0128\000\u018F\000\001"+
"\uFFFF\u8170\000\003\000\001\uFFFF\uFFFF\000x\000\000\000\011\uFFFF\uFFFF"+
"\000\001\000x\000\000\000<\000\005\000\004\000:\000p\000\u0087\000\u00A9"+
"\000\000\uFFFF\u8F80\000\002\000\u0126\000\u0198\000\001\uFFFF\u8F80\000"+
"\000\000\uFFFF\u8F80\000\002\000\u0127\000\u01A0\000\001\uFFFF\u8F80\000"+
"\003\000\001\uFFFF\uFFFF\000x\000\000\000\011\uFFFF\uFFFF\000\001\000"+
"x\000\000\000<\000\006\000S\000t\000\u00A4\000\u00A6\000\u00A7\000\u017C"+
"\000\000\uFFFF\u9D90\000\005\000T\000g\000\u008C\000\u0125\000\u017A\000"+
"x\000\000\000<\000\006\000S\000t\000\u00A4\000\u00A6\000\u00A7\000\u0184"+
"\000\000\uFFFF\u9D90\000\005\000T\000g\000\u008C\000\u0126\000\u0182\000"+
"\001\uFFFF\u9D90\000\003\000\001\uFFFF\uFFFF\000x\000\000\000\011\uFFFF"+
"\uFFFF\000\001\000x\000\000\000<\000\010\000E\000N\000U\000X\000l\000"+
"z\000\u00AA\000\u0176\000\000\uFFFF\uABA0\000\005\000w\000\u0095\000\u00A0"+
"\000\u0124\000\u0186\000\001\uFFFF\uABA0\000\003\000\001\uFFFF\uFFFF\000"+
"z\000\u00AA\000\u017E\000\000\uFFFF\uABA0\000\005\000w\000\u0095\000\u00A0"+
"\000\u0125\000\u018E\000\001\uFFFF\uABA0\000\003\000\001\uFFFF\uFFFF\000"+
"x\000\000\000\011\uFFFF\uFFFF\000\001\000x\000\000\000<\000\011\000G\000"+
"H\000M\000|\000}\000~\000\u0080\000\u0092\000\u0115\000\001\uFFFF\uABA0"+
"H\000M\000|\000}\000~\000\u0080\000\u0092\000\u0116\000\001\uFFFF\uABA0"+
"\000\003\000\001\uFFFF\uFFFF\000x\000\000\000\011\uFFFF\uFFFF\000\001"+
"\000x\000\001\000<\000\001\000\u00A8\000\001\uFFFF\uABA0\000\013\000\022"+
"\000\000\000\000\000\000\000\001\000\014\000\000\000\000\000\000\000<"+
@ -683,9 +751,9 @@ class TimeZoneData {
"\000\001\uFFFF\uFFFF\000\000\000\000\000\010\uFFFF\uFFFF\000\001\000\000"+
"\000\000\000<\000\002\000Z\000\u00A1\000\001\uFFFF\uABA0\000\011\000\011"+
"\uFFFF\uFFFF\000\000\000\000\000\002\000\011\uFFFF\uFFFF\000\000\000\000"+
"\000<\000\001\000\u0180\000\000\uFFFF\uB9B0\000\017\000L\000Y\000c\000"+
"\000<\000\001\000\u0188\000\000\uFFFF\uB9B0\000\017\000L\000Y\000c\000"+
"h\000i\000j\000k\000m\000n\000\u0089\000\u008A\000\u008F\000\u0093\000"+
"\u0123\000\u0166\000\001\uFFFF\uB9B0\000\003\000\001\uFFFF\uFFFF\000\000"+
"\u0124\000\u016E\000\001\uFFFF\uB9B0\000\003\000\001\uFFFF\uFFFF\000\000"+
"\000\000\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\001\000"+
"_\000\001\uFFFF\uB9B0\000\003\000\001\uFFFF\uFFFF\000\000\000\001\000"+
"\011\uFFFF\uFFFF\000\001\000\000\000\001\000<\000\001\000f\000\001\uFFFF"+
@ -693,17 +761,17 @@ class TimeZoneData {
"\001\000<\000\001\000<\000\001\000\u008D\000\001\uFFFF\uB9B0\000\003\000"+
"\001\uFFFF\uFFFF\000x\000\000\000\011\uFFFF\uFFFF\000\001\000x\000\000"+
"\000<\000\011\000V\000q\000u\000\u0082\000\u0084\000\u0085\000\u0086\000"+
"\u00A3\000\u011A\000\001\uFFFF\uB9B0\000\000\000\001\000\000\000\000\000"+
"\u00A3\000\u011B\000\001\uFFFF\uB9B0\000\000\000\001\000\000\000\000\000"+
"\000\000\003\000\001\000\000\000\000\000\000\000<\000\001\000s\000\001"+
"\uFFFF\uB9B0\000\004\000\002\000\000\000\000\000\000\000\013\000\037\000"+
"\000\000\000\000\000\000<\000\001\000D\000\000\uFFFF\uC7C0\000\031\000"+
";\000<\000>\000C\000I\000R\000W\000`\000a\000d\000r\000x\000y\000\u0083"+
"\000\u008E\000\u0090\000\u0091\000\u0098\000\u009C\000\u009D\000\u009E"+
"\000\u009F\000\u00A5\000\u0122\000\u017B\000\001\uFFFF\uC7C0\000\003\000"+
"\000\u009F\000\u00A5\000\u0123\000\u0183\000\001\uFFFF\uC7C0\000\003\000"+
"\001\uFFFF\uFFFF\000\001\000\000\000\011\uFFFF\uFFFF\000\001\000\001\000"+
"\000\000<\000\001\000^\000\001\uFFFF\uC7C0\000\003\000\001\uFFFF\uFFFF"+
"\000x\000\000\000\011\uFFFF\uFFFF\000\001\000x\000\000\000<\000\004\000"+
"\134\000e\000\u00A2\000\u00FC\000\001\uFFFF\uC7C0\000\003\000\017\uFFFF"+
"\134\000e\000\u00A2\000\u00FD\000\001\uFFFF\uC7C0\000\003\000\017\uFFFF"+
"\uFFFF\000x\000\000\000\010\000\031\000\000\000x\000\000\000<\000\001"+
"\000@\000\001\uFFFF\uC7C0\000\011\000\001\uFFFF\uFFFF\000\000\000\000"+
"\000\001\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\001\000?\000\001"+
@ -712,148 +780,149 @@ class TimeZoneData {
"\011\000\011\uFFFF\uFFFF\000\000\000\000\000\002\000\011\uFFFF\uFFFF\000"+
"\000\000\000\000<\000\002\000\u0097\000\u00B0\000\001\uFFFF\uC7C0\000"+
"\010\000\010\uFFFF\uFFFF\000\000\000\000\000\003\000\020\uFFFF\uFFFF\000"+
"\000\000\000\000<\000\001\000\u0105\000\001\uFFFF\uCEC8\000\003\000\001"+
"\000\000\000\000<\000\001\000\u0106\000\001\uFFFF\uCEC8\000\003\000\001"+
"\uFFFF\uFFFF\000\001\000\000\000\011\uFFFF\uFFFF\000\001\000\001\000\000"+
"\000<\000\002\000\u009B\000\u0114\000\000\uFFFF\uD5D0\000\016\000\002"+
"\000<\000\002\000\u009B\000\u0115\000\000\uFFFF\uD5D0\000\016\000\002"+
"\000A\000F\000J\000K\000O\000[\000o\000v\000{\000\u008B\000\u0094\000"+
"\u0096\000\u0121\000\001\uFFFF\uD5D0\000\003\000\001\uFFFF\uFFFF\000x"+
"\u0096\000\u0122\000\001\uFFFF\uD5D0\000\003\000\001\uFFFF\uFFFF\000x"+
"\000\000\000\011\uFFFF\uFFFF\000\001\000x\000\000\000<\000\001\000\u007F"+
"\000\001\uFFFF\uD5D0\000\002\uFFFF\uFFFF\000\001\000<\000\002\000\011"+
"\uFFFF\uFFFF\000\001\000<\000\002\000<\000\001\000]\000\001\uFFFF\uD5D0"+
"\000\011\000\022\000\000\000\000\000\000\000\001\000\034\000\000\000\000"+
"\000\000\000<\000\001\000\u0081\000\001\uFFFF\uD5D0\000\011\000\010\uFFFF"+
"\uFFFF\000\000\000\000\000\001\000\017\uFFFF\uFFFF\000\000\000\000\000"+
"<\000\003\000=\000\u0099\000\u0110\000\000\uFFFF\uE3E0\000\003\000\u0088"+
"\000\u0103\000\u0120\000\000\uFFFF\uF1F0\000\003\000\u00FE\000\u0100\000"+
"\u011C\000\001\uFFFF\uF1F0\000\002\uFFFF\uFFFF\000\001\000<\000\002\000"+
"\011\uFFFF\uFFFF\000\001\000<\000\002\000<\000\002\000\u009A\000\u00FB"+
"<\000\003\000=\000\u0099\000\u0111\000\000\uFFFF\uE3E0\000\003\000\u0088"+
"\000\u0104\000\u0121\000\000\uFFFF\uF1F0\000\003\000\u00FF\000\u0101\000"+
"\u011D\000\001\uFFFF\uF1F0\000\002\uFFFF\uFFFF\000\001\000<\000\002\000"+
"\011\uFFFF\uFFFF\000\001\000<\000\002\000<\000\002\000\u009A\000\u00FC"+
"\000\000\000\000\000\025\000\005\000\012\000\014\000\015\000\022\000\024"+
"\000\025\000\031\000$\000-\0001\0002\0004\0005\000\u0102\000\u0104\000"+
"\u011B\000\u0136\000\u0137\000\u0164\000\u01A5\000\001\000\000\000\005"+
"\000\025\000\031\000$\000-\0001\0002\0004\0005\000\u0103\000\u0105\000"+
"\u011C\000\u0137\000\u0138\000\u016C\000\u01AD\000\001\000\000\000\005"+
"\000\001\000\000\000\000\000\000\000\010\000\001\000\000\000\000\000\000"+
"\000<\000\001\000\032\000\001\000\000\000\002\uFFFF\uFFFF\000\001\000"+
"<\000\002\000\011\uFFFF\uFFFF\000\001\000<\000\002\000<\000\010\000\u00FD"+
"\000\u00FF\000\u0101\000\u013B\000\u0143\000\u0149\000\u014A\000\u01A7"+
"<\000\002\000\011\uFFFF\uFFFF\000\001\000<\000\002\000<\000\010\000\u00FE"+
"\000\u0100\000\u0102\000\u013C\000\u0145\000\u014B\000\u014D\000\u01AF"+
"\000\001\000\000\000\010\000\001\000\000\000\000\000\000\000\013\000\037"+
"\000\000\000\000\000\000\000\024\000\001\000\006\000\000\000\u0E10\000"+
"\015\000\010\000\013\000\017\000\030\000!\000\042\000#\000%\000(\000/"+
"\0000\0003\000\u0128\000\001\000\u0E10\000\002\uFFFF\uFFFF\000\001\000"+
"<\000\002\000\011\uFFFF\uFFFF\000\001\000<\000\002\000<\000\030\000\023"+
"\000\u0118\000\u0138\000\u0139\000\u013C\000\u013D\000\u013E\000\u0140"+
"\000\u0142\000\u0144\000\u014B\000\u014C\000\u014D\000\u014F\000\u0151"+
"\000\u0152\000\u0153\000\u0155\000\u0159\000\u015B\000\u015E\000\u015F"+
"\000\u0161\000\u0163\000\001\000\u0E10\000\002\uFFFF\uFFFF\000\001\000"+
"x\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\002\000\u0113"+
"\000\u0174\000\001\000\u0E10\000\004\000\001\000\000\000\000\000\001\000"+
"\010\uFFFF\uFFFF\000\001\000\000\000\001\000<\000\001\0007\000\001\000"+
"\u0E10\000\010\000\001\uFFFF\uFFFF\000x\000\000\000\003\000\001\uFFFF"+
"\uFFFF\000x\000\000\000<\000\001\0008\000\000\000\u1C20\000\020\000\016"+
"\000\020\000\033\000\034\000 \000&\000'\000)\000*\000+\0006\000\u0112"+
"\000\u012E\000\u0154\000\u015A\000\u0160\000\001\000\u1C20\000\003\000"+
"\001\000\000\000\000\000\000\000\011\000\001\000\000\000\000\000\000\000"+
"<\000\001\000\u00C3\000\001\000\u1C20\000\003\000\001\000\000\000<\000"+
"\000\000\010\000\030\000\000\000<\000\000\000<\000\001\000\u00CF\000\001"+
"\000\u1C20\000\003\000\017\uFFFF\uFFFA\000\000\000\000\000\011\000\017"+
"\uFFFF\uFFFA\000\000\000\000\000<\000\001\000\u00C8\000\001\000\u1C20"+
"\000\003\uFFFF\uFFFF\000\006\000\000\000\001\000\010\uFFFF\uFFFF\000\005"+
"\000\u0564\000\001\000<\000\002\000\003\000\021\000\001\000\u1C20\000"+
"\002\uFFFF\uFFFF\000\001\000\000\000\000\000\011\uFFFF\uFFFF\000\001\000"+
"\000\000\000\000<\000\001\000\u00BD\000\001\000\u1C20\000\002\uFFFF\uFFFF"+
"\000\001\000<\000\002\000\011\uFFFF\uFFFF\000\001\000<\000\002\000<\000"+
"\014\000\u00DD\000\u0119\000\u013A\000\u013F\000\u0141\000\u0145\000\u0146"+
"\000\u0148\000\u0157\000\u0158\000\u015D\000\u0162\000\001\000\u1C20\000"+
"\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000\001\000"+
"x\000\001\000<\000\002\000\u0147\000\u014E\000\001\000\u1C20\000\002\uFFFF"+
"\uFFFF\000\005\000\000\000\001\000\010\uFFFF\uFFFF\000\005\000\000\000"+
"\001\000<\000\001\000\u00B4\000\001\000\u1C20\000\010\000\017\uFFFF\uFFFF"+
"\000x\000\000\000\002\000\017\uFFFF\uFFFF\000x\000\000\000<\000\001\000"+
"\035\000\000\000\u2A30\000\023\000\007\000\011\000\026\000\027\000\036"+
"\000\037\000,\000.\000\u00B1\000\u00B2\000\u00BA\000\u00D8\000\u00E2\000"+
"\u00E4\000\u0117\000\u012F\000\u0168\000\u016C\000\u0171\000\001\000\u2A30"+
"\000\003\000\001\000\000\000\u00B4\000\001\000\011\000\001\000\000\000"+
"\u00B4\000\001\000<\000\001\000\u00B9\000\001\000\u2A30\000\002\uFFFF"+
"\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000"+
"<\000\002\000\u0150\000\u015C\000\000\000\u2BD8\000\003\000\u00E5\000"+
"\u00E6\000\u00E7\000\001\000\u3138\000\002\000\024\000\000\000\000\000"+
"\000\000\010\000\027\000\000\000\000\000\000\000<\000\001\000\u00F0\000"+
"\000\000\u3840\000\006\000\u00C6\000\u00DC\000\u0130\000\u016E\000\u0170"+
"\000\u0172\000\001\000\u3840\000\002\uFFFF\uFFFF\000\001\000\000\000\000"+
"\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\002\000\u00B6\000"+
"\u00EF\000\001\000\u3840\000\002\uFFFF\uFFFF\000\001\000<\000\000\000"+
"\011\uFFFF\uFFFF\000\001\000<\000\000\000<\000\001\000\u00BB\000\001\000"+
"\u3840\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000"+
"\001\000x\000\001\000<\000\003\000\u00FA\000\u0156\000\u0177\000\000\000"+
"\u3F48\000\001\000\u00D0\000\000\000\u4650\000\012\000\u00B8\000\u00C7"+
"\000\u00D2\000\u00E9\000\u00EE\000\u0131\000\u0169\000\u016D\000\u016F"+
"\000\u0179\000\001\000\u4650\000\002\uFFFF\uFFFF\000\001\000\000\000\000"+
"\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\001\000\u00B7\000"+
"\001\000\u4650\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF"+
"\uFFFF\000\001\000x\000\001\000<\000\001\000\u00F9\000\001\000\u4650\000"+
"\002\uFFFF\uFFFF\000\001\000\u0096\000\000\000\011\uFFFF\uFFFF\000\001"+
"\000\u0096\000\000\000<\000\001\000\u00BE\000\000\000\u4D58\000\002\000"+
"\u00C0\000\u0167\000\000\000\u50DC\000\001\000\u00D4\000\000\000\u5460"+
"\000\006\000\u00AE\000\u00C2\000\u00C4\000\u00F1\000\u0111\000\u0132\000"+
"\001\000\u5460\000\002\uFFFF\uFFFF\000\001\000\000\000\000\000\011\uFFFF"+
"\uFFFF\000\001\000\000\000\000\000<\000\001\000\u00B3\000\001\000\u5460"+
"\0000\0003\000\u0129\000\001\000\u0E10\000\002\uFFFF\uFFFF\000\001\000"+
"<\000\002\000\011\uFFFF\uFFFF\000\001\000<\000\002\000<\000 \000\023\000"+
"\u00B2\000\u0119\000\u0139\000\u013A\000\u013D\000\u013E\000\u013F\000"+
"\u0140\000\u0142\000\u0144\000\u0146\000\u014C\000\u014E\000\u014F\000"+
"\u0150\000\u0152\000\u0154\000\u0155\000\u0156\000\u0158\000\u015A\000"+
"\u015B\000\u015D\000\u015F\000\u0161\000\u0164\000\u0165\000\u0166\000"+
"\u0168\000\u0169\000\u016B\000\001\000\u0E10\000\002\uFFFF\uFFFF\000\001"+
"\000x\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\002\000"+
"\u0114\000\u017C\000\001\000\u0E10\000\004\000\001\000\000\000\000\000"+
"\001\000\010\uFFFF\uFFFF\000\001\000\000\000\001\000<\000\001\0007\000"+
"\001\000\u0E10\000\010\000\001\uFFFF\uFFFF\000x\000\000\000\003\000\001"+
"\uFFFF\uFFFF\000x\000\000\000<\000\001\0008\000\000\000\u1C20\000\020"+
"\000\016\000\020\000\033\000\034\000 \000&\000'\000)\000*\000+\0006\000"+
"\u0113\000\u012F\000\u0157\000\u0160\000\u0167\000\001\000\u1C20\000\003"+
"\000\001\000\000\000\000\000\000\000\011\000\001\000\000\000\000\000\000"+
"\000<\000\001\000\u00C4\000\001\000\u1C20\000\003\000\001\000\000\000"+
"<\000\000\000\010\000\030\000\000\000<\000\000\000<\000\001\000\u00D0"+
"\000\001\000\u1C20\000\003\000\017\uFFFF\uFFFA\000\000\000\000\000\011"+
"\000\017\uFFFF\uFFFA\000\000\000\000\000<\000\001\000\u00C9\000\001\000"+
"\u1C20\000\003\uFFFF\uFFFF\000\006\000\000\000\001\000\010\uFFFF\uFFFF"+
"\000\005\000\u0564\000\001\000<\000\002\000\003\000\021\000\001\000\u1C20"+
"\000\002\uFFFF\uFFFF\000\001\000\000\000\000\000\011\uFFFF\uFFFF\000\001"+
"\000\000\000\000\000<\000\001\000\u00BE\000\001\000\u1C20\000\002\uFFFF"+
"\uFFFF\000\001\000<\000\002\000\011\uFFFF\uFFFF\000\001\000<\000\002\000"+
"<\000\014\000\u00DE\000\u011A\000\u013B\000\u0141\000\u0143\000\u0147"+
"\000\u0148\000\u014A\000\u015C\000\u015E\000\u0163\000\u016A\000\001\000"+
"\u1C20\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000"+
"\001\000x\000\001\000<\000\002\000\u0149\000\u0151\000\001\000\u1C20\000"+
"\002\uFFFF\uFFFF\000\005\000\000\000\001\000\010\uFFFF\uFFFF\000\005\000"+
"\000\000\001\000<\000\001\000\u00B5\000\001\000\u1C20\000\010\000\017"+
"\uFFFF\uFFFF\000x\000\000\000\002\000\017\uFFFF\uFFFF\000x\000\000\000"+
"<\000\001\000\035\000\000\000\u2A30\000\023\000\007\000\011\000\026\000"+
"\027\000\036\000\037\000,\000.\000\u00B1\000\u00B3\000\u00BB\000\u00D9"+
"\000\u00E3\000\u00E5\000\u0118\000\u0130\000\u0170\000\u0174\000\u0179"+
"\000\001\000\u2A30\000\003\000\001\000\000\000\u00B4\000\001\000\011\000"+
"\001\000\000\000\u00B4\000\001\000<\000\001\000\u00BA\000\001\000\u2A30"+
"\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000\001"+
"\000x\000\001\000<\000\002\000\u00DE\000\u00DF\000\000\000\u5B68\000\002"+
"\000\u00E3\000\u016B\000\000\000\u6270\000\011\000\u00AC\000\u00BC\000"+
"\u00CD\000\u00E0\000\u00E8\000\u00F6\000\u0133\000\u016A\000\u01A6\000"+
"\001\000\u6270\000\002\uFFFF\uFFFF\000\001\000\000\000\000\000\010\uFFFF"+
"\uFFFF\000\001\000\000\000\000\000<\000\001\000\u00CB\000\001\000\u6270"+
"\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000\001"+
"\000x\000\001\000<\000\001\000\u00D5\000\000\000\u7080\000\010\000\u00AB"+
"\000\u00BF\000\u00D6\000\u00D7\000\u00EC\000\u00F3\000\u010E\000\u0134"+
"\000\001\000\u7080\000\003\000\012\uFFFF\uFFFF\000\000\000\000\000\010"+
"\000\013\uFFFF\uFFFF\000\000\000\000\000<\000\007\000\u00C1\000\u00C9"+
"\000\u00D3\000\u00D9\000\u00EB\000\u00F5\000\u0116\000\001\000\u7080\000"+
"\005\000\036\000\000\000\000\000\000\000\010\000\036\000\000\000\000\000"+
"\000\000<\000\001\000\u00ED\000\001\000\u7080\000\002\000\026\000\000"+
"\000\000\000\000\000\010\000\025\000\000\000\000\000\000\000<\000\001"+
"\000\u00DB\000\001\000\u7080\000\002\uFFFF\uFFFF\000\001\000\000\000\000"+
"\000\010\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\001\000\u00F4\000"+
"\001\000\u7080\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF"+
"\uFFFF\000\001\000x\000\001\000<\000\001\000\u00CC\000\001\000\u7080\000"+
"\004\000\010\uFFFF\uFFFF\000\u00D2\000\000\000\011\000\020\uFFFF\uFFFF"+
"\000\u00D2\000\000\000<\000\001\000\u00CA\000\000\000\u7E90\000\007\000"+
"\u00C5\000\u00CE\000\u00E1\000\u00F2\000\u0135\000\u0173\000\u0197\000"+
"\001\000\u7E90\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF"+
"\uFFFF\000\001\000x\000\001\000<\000\001\000\u00F8\000\001\000\u7E90\000"+
"\004\uFFFF\uFFF2\uFFFF\uFFFF\000\000\000\000\000\011\uFFFF\uFFF2\uFFFF"+
"\uFFFF\000\000\000\000\000<\000\001\000\u00EA\000\001\000\u8598\000\011"+
"\000\003\000\000\000x\000\000\000\002\uFFFF\uFFFF\000\001\000x\000\000"+
"\000<\000\002\000\000\000\u0109\000\001\000\u8598\000\011\uFFFF\uFFFF"+
"\000\001\000x\000\001\000\002\uFFFF\uFFFF\000\001\000x\000\001\000<\000"+
"\002\000\u0106\000\u0108\000\000\000\u8CA0\000\007\000\u00AD\000\u0129"+
"\000\u0189\000\u019A\000\u019C\000\u01A0\000\u01A3\000\001\000\u8CA0\000"+
"\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000\001\000"+
"x\000\001\000<\000\001\000\u00F7\000\001\000\u8CA0\000\011\uFFFF\uFFFF"+
"\000\001\000x\000\001\000\002\uFFFF\uFFFF\000\001\000x\000\001\000<\000"+
"\003\000\001\000\u010D\000\u010F\000\001\000\u8CA0\000\011\uFFFF\uFFFF"+
"\000\001\000x\000\001\000\002\000\001\uFFFF\uFFFF\000x\000\001\000<\000"+
"\002\000\u0107\000\u010B\000\001\000\u8CA0\000\011\000\001\uFFFF\uFFFF"+
"\000x\000\001\000\002\uFFFF\uFFFF\000\001\000x\000\001\000<\000\001\000"+
"\u010A\000\001\000\u93A8\000\011\uFFFF\uFFFF\000\001\000x\000\001\000"+
"\002\uFFFF\uFFFF\000\001\000x\000\001\000\036\000\001\000\u010C\000\000"+
"\000\u9AB0\000\005\000\u012A\000\u0188\000\u018D\000\u0199\000\u01A4\000"+
"\001\000\u9AB0\000\013\000\001\000\000\000x\000\001\000\002\000\002\000"+
"\000\000x\000\001\000<\000\001\000\u0195\000\001\000\u9AB0\000\002\uFFFF"+
"\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000"+
"<\000\001\000\u00DA\000\001\000\u9AB0\000\011\000\027\uFFFF\uFFFF\000"+
"\000\000\000\000\000\000\027\uFFFF\uFFFF\000\000\000\000\000<\000\001"+
"\000\u0181\000\000\000\uA1B8\000\001\000\u0194\000\000\000\uA8C0\000\010"+
"\000\u012B\000\u0185\000\u018E\000\u018F\000\u0192\000\u019E\000\u01A1"+
"\000\u01A2\000\001\000\uA8C0\000\002\uFFFF\uFFFF\000\001\000x\000\001"+
"\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\002\000\u00B5\000\u00D1"+
"\000\001\000\uA8C0\000\012\000\001\uFFFF\uFFFF\000x\000\000\000\001\uFFFF"+
"\uFFFF\000\001\000\u00B4\000\000\000<\000\001\000\u0184\000\001\000\uA8C0"+
"\000\011\000\001\uFFFF\uFFFF\000x\000\001\000\002\000\017\uFFFF\uFFFF"+
"\000x\000\001\000<\000\003\000\u00AF\000\u0178\000\u017E\000\001\000\uB34C"+
"\000\011\000\001\uFFFF\uFFFF\000\u00A5\000\001\000\002\000\017\uFFFF\uFFFF"+
"\000\u00A5\000\001\000<\000\001\000\u017F\000\000\000\uB6D0\000\002\000"+
"\u012C\000\u0182\000\001\000\uB6D0\000\012\000\004\000\000\000x\000\001"+
"\000\000\000\033\000\000\000x\000\001\000<\000\001\000\u019F\000\000\000"+
"\uC4E0\000\002\000\u012D\000\u018C"
"\000x\000\001\000<\000\002\000\u0153\000\u0162\000\000\000\u2BD8\000\003"+
"\000\u00E6\000\u00E7\000\u00E8\000\001\000\u3138\000\002\000\024\000\000"+
"\000\000\000\000\000\010\000\027\000\000\000\000\000\000\000<\000\001"+
"\000\u00F1\000\000\000\u3840\000\006\000\u00C7\000\u00DD\000\u0131\000"+
"\u0176\000\u0178\000\u017A\000\001\000\u3840\000\002\uFFFF\uFFFF\000\001"+
"\000\000\000\000\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000<\000"+
"\002\000\u00B7\000\u00F0\000\001\000\u3840\000\002\uFFFF\uFFFF\000\001"+
"\000<\000\000\000\011\uFFFF\uFFFF\000\001\000<\000\000\000<\000\001\000"+
"\u00BC\000\001\000\u3840\000\002\uFFFF\uFFFF\000\001\000x\000\001\000"+
"\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\003\000\u00FB\000\u0159"+
"\000\u017F\000\000\000\u3F48\000\001\000\u00D1\000\000\000\u4650\000\012"+
"\000\u00B9\000\u00C8\000\u00D3\000\u00EA\000\u00EF\000\u0132\000\u0171"+
"\000\u0175\000\u0177\000\u0181\000\001\000\u4650\000\002\uFFFF\uFFFF\000"+
"\001\000\000\000\000\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000<"+
"\000\001\000\u00B8\000\001\000\u4650\000\002\uFFFF\uFFFF\000\001\000x"+
"\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\001\000\u00FA"+
"\000\001\000\u4650\000\002\uFFFF\uFFFF\000\001\000\u0096\000\000\000\011"+
"\uFFFF\uFFFF\000\001\000\u0096\000\000\000<\000\001\000\u00BF\000\000"+
"\000\u4D58\000\002\000\u00C1\000\u016F\000\000\000\u50DC\000\001\000\u00D5"+
"\000\000\000\u5460\000\006\000\u00AE\000\u00C3\000\u00C5\000\u00F2\000"+
"\u0112\000\u0133\000\001\000\u5460\000\002\uFFFF\uFFFF\000\001\000\000"+
"\000\000\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\001\000"+
"\u00B4\000\001\000\u5460\000\002\uFFFF\uFFFF\000\001\000x\000\001\000"+
"\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\002\000\u00DF\000\u00E0"+
"\000\000\000\u5B68\000\002\000\u00E4\000\u0173\000\000\000\u6270\000\011"+
"\000\u00AC\000\u00BD\000\u00CE\000\u00E1\000\u00E9\000\u00F7\000\u0134"+
"\000\u0172\000\u01AE\000\001\000\u6270\000\002\uFFFF\uFFFF\000\001\000"+
"\000\000\000\000\010\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\001"+
"\000\u00CC\000\001\000\u6270\000\002\uFFFF\uFFFF\000\001\000x\000\001"+
"\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\001\000\u00D6\000\000"+
"\000\u7080\000\010\000\u00AB\000\u00C0\000\u00D7\000\u00D8\000\u00ED\000"+
"\u00F4\000\u010F\000\u0135\000\001\000\u7080\000\003\000\012\uFFFF\uFFFF"+
"\000\000\000\000\000\010\000\013\uFFFF\uFFFF\000\000\000\000\000<\000"+
"\007\000\u00C2\000\u00CA\000\u00D4\000\u00DA\000\u00EC\000\u00F6\000\u0117"+
"\000\001\000\u7080\000\005\000\036\000\000\000\000\000\000\000\010\000"+
"\036\000\000\000\000\000\000\000<\000\001\000\u00EE\000\001\000\u7080"+
"\000\002\000\026\000\000\000\000\000\000\000\010\000\025\000\000\000\000"+
"\000\000\000<\000\001\000\u00DC\000\001\000\u7080\000\002\uFFFF\uFFFF"+
"\000\001\000\000\000\000\000\010\uFFFF\uFFFF\000\001\000\000\000\000\000"+
"<\000\001\000\u00F5\000\001\000\u7080\000\002\uFFFF\uFFFF\000\001\000"+
"x\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\001\000\u00CD"+
"\000\001\000\u7080\000\004\000\010\uFFFF\uFFFF\000\u00D2\000\000\000\011"+
"\000\020\uFFFF\uFFFF\000\u00D2\000\000\000<\000\001\000\u00CB\000\000"+
"\000\u7E90\000\007\000\u00C6\000\u00CF\000\u00E2\000\u00F3\000\u0136\000"+
"\u017B\000\u019F\000\001\000\u7E90\000\002\uFFFF\uFFFF\000\001\000x\000"+
"\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\001\000\u00F9\000"+
"\001\000\u7E90\000\004\uFFFF\uFFF2\uFFFF\uFFFF\000\000\000\000\000\011"+
"\uFFFF\uFFF2\uFFFF\uFFFF\000\000\000\000\000<\000\001\000\u00EB\000\001"+
"\000\u8598\000\011\000\003\000\000\000x\000\000\000\002\uFFFF\uFFFF\000"+
"\001\000x\000\000\000<\000\002\000\000\000\u010A\000\001\000\u8598\000"+
"\011\uFFFF\uFFFF\000\001\000x\000\001\000\002\uFFFF\uFFFF\000\001\000"+
"x\000\001\000<\000\002\000\u0107\000\u0109\000\000\000\u8CA0\000\007\000"+
"\u00AD\000\u012A\000\u0191\000\u01A2\000\u01A4\000\u01A8\000\u01AB\000"+
"\001\000\u8CA0\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF"+
"\uFFFF\000\001\000x\000\001\000<\000\001\000\u00F8\000\001\000\u8CA0\000"+
"\011\uFFFF\uFFFF\000\001\000x\000\001\000\002\uFFFF\uFFFF\000\001\000"+
"x\000\001\000<\000\003\000\001\000\u010E\000\u0110\000\001\000\u8CA0\000"+
"\011\uFFFF\uFFFF\000\001\000x\000\001\000\002\000\001\uFFFF\uFFFF\000"+
"x\000\001\000<\000\002\000\u0108\000\u010C\000\001\000\u8CA0\000\011\000"+
"\001\uFFFF\uFFFF\000x\000\001\000\002\uFFFF\uFFFF\000\001\000x\000\001"+
"\000<\000\001\000\u010B\000\001\000\u93A8\000\011\uFFFF\uFFFF\000\001"+
"\000x\000\001\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\036\000\001"+
"\000\u010D\000\000\000\u9AB0\000\005\000\u012B\000\u0190\000\u0195\000"+
"\u01A1\000\u01AC\000\001\000\u9AB0\000\013\000\001\000\000\000x\000\001"+
"\000\002\000\002\000\000\000x\000\001\000<\000\001\000\u019D\000\001\000"+
"\u9AB0\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000"+
"\001\000x\000\001\000<\000\001\000\u00DB\000\001\000\u9AB0\000\011\000"+
"\027\uFFFF\uFFFF\000\000\000\000\000\000\000\027\uFFFF\uFFFF\000\000\000"+
"\000\000<\000\001\000\u0189\000\000\000\uA1B8\000\001\000\u019C\000\000"+
"\000\uA8C0\000\010\000\u012C\000\u018D\000\u0196\000\u0197\000\u019A\000"+
"\u01A6\000\u01A9\000\u01AA\000\001\000\uA8C0\000\002\uFFFF\uFFFF\000\001"+
"\000x\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\002\000"+
"\u00B6\000\u00D2\000\001\000\uA8C0\000\012\000\001\uFFFF\uFFFF\000x\000"+
"\000\000\001\uFFFF\uFFFF\000\001\000\u00B4\000\000\000<\000\001\000\u018C"+
"\000\001\000\uA8C0\000\011\000\001\uFFFF\uFFFF\000x\000\001\000\002\000"+
"\017\uFFFF\uFFFF\000x\000\001\000<\000\003\000\u00AF\000\u0180\000\u0186"+
"\000\001\000\uB34C\000\011\000\001\uFFFF\uFFFF\000\u00A5\000\001\000\002"+
"\000\017\uFFFF\uFFFF\000\u00A5\000\001\000<\000\001\000\u0187\000\000"+
"\000\uB6D0\000\002\000\u012D\000\u018A\000\001\000\uB6D0\000\012\000\004"+
"\000\000\000x\000\001\000\000\000\033\000\000\000x\000\001\000<\000\001"+
"\000\u01A7\000\000\000\uC4E0\000\002\000\u012E\000\u0194"
;
/**
@ -862,15 +931,15 @@ class TimeZoneData {
* >> GENERATED DATA: DO NOT EDIT <<
*/
static final String INDEX_BY_NAME_ARRAY_RLE =
"\000\u01A8\000\u0584\000\u05BD\000\u020E\000\u0369\000=\000\u0279\000"+
"\u02B6\000\u03D0\000\u02C5\000\u03D0\000\u0279\000\u02C5\000\u0279\000"+
"\u0279\000\u0329\000\u02C5\000\u0329\000\u0369\000\u0279\000\u02D5\000"+
"\u0279\000\u0279\000\u03D0\000\u03D0\000\u02C5\000\u0279\000\u0291\000"+
"\u0329\000\u0329\000\u03C1\000\u03D0\000\u03D0\000\u0329\000\u02C5\000"+
"\u02C5\000\u02C5\000\u0279\000\u02C5\000\u0329\000\u0329\000\u02C5\000"+
"\u0329\000\u0329\000\u0329\000\u03D0\000\u0279\000\u03D0\000\u02C5\000"+
"\u02C5\000\u0279\000\u0279\000\u02C5\000\u0279\000\u0279\000\u0329\000"+
"\u030B\000\u031A\000\026\000=\000\u0175\000\u0175\000\u024C\000\u0175"+
"\000\u01B0\000\u058C\000\u05C5\000\u020E\000\u0371\000=\000\u0279\000"+
"\u02B6\000\u03D8\000\u02C5\000\u03D8\000\u0279\000\u02C5\000\u0279\000"+
"\u0279\000\u0331\000\u02C5\000\u0331\000\u0371\000\u0279\000\u02D5\000"+
"\u0279\000\u0279\000\u03D8\000\u03D8\000\u02C5\000\u0279\000\u0291\000"+
"\u0331\000\u0331\000\u03C9\000\u03D8\000\u03D8\000\u0331\000\u02C5\000"+
"\u02C5\000\u02C5\000\u0279\000\u02C5\000\u0331\000\u0331\000\u02C5\000"+
"\u0331\000\u0331\000\u0331\000\u03D8\000\u0279\000\u03D8\000\u02C5\000"+
"\u02C5\000\u0279\000\u0279\000\u02C5\000\u0279\000\u0279\000\u0331\000"+
"\u0313\000\u0322\000\026\000=\000\u0175\000\u0175\000\u024C\000\u0175"+
"\000\u01C1\000\u01B2\000\u020E\000\u00B5\000\u0175\000\u0166\000q\000"+
"\u020E\000\u008F\000\u008F\000\u0175\000\u020E\000\u020E\000\u0101\000"+
"\u008F\000q\000\u020E\000\u00C4\000\u01D0\000\u0175\000U\000i\000q\000"+
@ -884,42 +953,43 @@ class TimeZoneData {
"i\000\u0131\000\u0175\000\u0101\000\u0175\000\u0175\000\u008F\000\u0101"+
"\000\u020E\000\u0087\000\u020E\000\u01DF\000\u0175\000\u024C\000\u0269"+
"\000\u01FE\000\uA5A5\000\004\000\u0175\000\u0087\000\u00E2\000\u01A0\000"+
"\u0140\000U\000\u0175\000U\000U\000\u00A6\000=\000q\000\u04F1\000\u04C7"+
"\000\u05A4\000\u049A\000\u065F\000\u01DF\000\u03D0\000\u03D0\000\u04A3"+
"\000\u03B2\000\u0640\000\u0423\000\u0464\000\u0457\000\u03E6\000\u03D0"+
"\000\u0433\000\u04C7\000\u0379\000\u0482\000\u04F1\000\u0491\000\u04FC"+
"\000\u049A\000\u033C\000\u049A\000\u055C\000\u041A\000\u0457\000\u035A"+
"\000\u04FC\000\u054D\000\u04D3\000\u053E\000\u04C7\000\u055C\000\u034B"+
"\000\u0453\000\u0640\000\u0457\000\u04FC\000\u0496\000\u04E2\000\u04F1"+
"\000\u04F1\000\u03D0\000\u04FC\000\u0613\000\u0520\000\u041A\000\u0388"+
"\000\u04B2\000\u04B2\000\u04C7\000\u055C\000\u03D0\000\u04C2\000\u03D0"+
"\000\u0405\000\u0405\000\u0405\000\u04C7\000\u0457\000\u0575\000\u04FC"+
"\000\u04F1\000\u0511\000\u0457\000\u0423\000\u040B\000\u049A\000\u055C"+
"\000\u04F1\000\u052F\000\u04FC\000\u04C7\000\u05AE\000\u0566\000\u0473"+
"\000\u0442\000\u0269\000\u01A0\000\u02A0\000\u0263\000\u02A0\000\u0263"+
"\000\u02A0\000\u0279\000\u025D\000\u0279\000\u01EF\000\u0594\000\u05CE"+
"\000\u0594\000\u0584\000\u05DE\000\u05CE\000\u05ED\000\u05BD\000\u04F1"+
"\000\u05BD\000\u024C\000\u049A\000\u0329\000\u02FB\000\u01FE\000\u008F"+
"\000\u04FC\000\u03D0\000\u02D5\000\u0388\000\u0140\000\u0279\000\u0263"+
"\000\015\000\004\000\000\000\u025D\000\u020E\000\u0175\000\u0101\000\u0087"+
"\000i\000P\0008\000\u02C5\000\u05A4\000\u05FC\000\u0635\000\u067F\000"+
"\u0693\000\u0329\000\u03D0\000\u041A\000\u0457\000\u049A\000\u04C7\000"+
"\u04F1\000\u055C\000\u0279\000\u0279\000\u02D5\000\u02D5\000\u0388\000"+
"\u02A0\000\u02D5\000\u02D5\000\u02D5\000\u0388\000\u02D5\000\u0388\000"+
"\u02D5\000\u02A0\000\u02D5\000\u0388\000\u0388\000\u03A2\000\u0388\000"+
"\u02A0\000\u02A0\000\u02D5\000\u02D5\000\u02D5\000\u03A2\000\u02D5\000"+
"\u03F5\000\u02D5\000\u02D5\000\u02D5\000\u0329\000\u02D5\000\u0442\000"+
"\u0388\000\u0388\000\u02D5\000\u0329\000\u02D5\000\u03F5\000\u0388\000"+
"\u02D5\000\u02D5\000\u0329\000\u02D5\000\u0388\000\u02D5\000\u0279\000"+
"\015\000\u0101\000\u0491\000\u03D0\000\u0457\000\u04C7\000\u04C2\000\u03D0"+
"\000\u0457\000\u041A\000\u0457\000\u041A\000\u03D0\000\u041A\000\u055C"+
"\000\u02FB\000\004\000q\000\u0442\000\u065F\000\u0457\000i\000\u0175\000"+
"U\000\004\000\u065F\000\u0670\000\u00F2\000\u0622\000\u067F\000\015\000"+
"\u0650\000\u0635\000\u0087\0008\000\u05FC\000\u05A4\000\015\000\015\000"+
"\u0693\000\u05FC\000\u0635\000\u0635\0004\000\004\000\u0635\000\004\000"+
"\u0631\000\u0604\000\004\000\u055C\000P\000\u05FC\000\u05A4\000%\000\u05A4"+
"\000\015\000\u0635\000\u0684\000\u05A4\000\u0635\000\u0635\000\u05A4\000"+
"\u05FC\000\u0279\000\u04C7\000\u02A0"
"\u0140\000U\000\u0175\000U\000U\000\u00A6\000=\000q\000\u04F9\000\u04CF"+
"\000\u05AC\000\u04A2\000\u0667\000\u01DF\000\u03D8\000\u02D5\000\u03D8"+
"\000\u04AB\000\u03BA\000\u0648\000\u042B\000\u046C\000\u045F\000\u03EE"+
"\000\u03D8\000\u043B\000\u04CF\000\u0381\000\u048A\000\u04F9\000\u0499"+
"\000\u0504\000\u04A2\000\u0344\000\u04A2\000\u0564\000\u0422\000\u045F"+
"\000\u0362\000\u0504\000\u0555\000\u04DB\000\u0546\000\u04CF\000\u0564"+
"\000\u0353\000\u045B\000\u0648\000\u045F\000\u0504\000\u049E\000\u04EA"+
"\000\u04F9\000\u04F9\000\u03D8\000\u0504\000\u061B\000\u0528\000\u0422"+
"\000\u0390\000\u04BA\000\u04BA\000\u04CF\000\u0564\000\u03D8\000\u04CA"+
"\000\u03D8\000\u040D\000\u040D\000\u040D\000\u04CF\000\u045F\000\u057D"+
"\000\u0504\000\u04F9\000\u0519\000\u045F\000\u042B\000\u0413\000\u04A2"+
"\000\u0564\000\u04F9\000\u0537\000\u0504\000\u04CF\000\u05B6\000\u056E"+
"\000\u047B\000\u044A\000\u0269\000\u01A0\000\u02A0\000\u0263\000\u02A0"+
"\000\u0263\000\u02A0\000\u0279\000\u025D\000\u0279\000\u01EF\000\u059C"+
"\000\u05D6\000\u059C\000\u058C\000\u05E6\000\u05D6\000\u05F5\000\u05C5"+
"\000\u04F9\000\u05C5\000\u024C\000\u04A2\000\u0331\000\u0303\000\u01FE"+
"\000\u008F\000\u0504\000\u03D8\000\u02D5\000\u0390\000\u0140\000\u0279"+
"\000\u0263\000\015\000\004\000\000\000\u025D\000\u020E\000\u0175\000\u0101"+
"\000\u0087\000i\000P\0008\000\u02C5\000\u05AC\000\u0604\000\u063D\000"+
"\u0687\000\u069B\000\u0331\000\u03D8\000\u0422\000\u045F\000\u04A2\000"+
"\u04CF\000\u04F9\000\u0564\000\u0279\000\u0279\000\u02D5\000\u02D5\000"+
"\u0390\000\u02A0\000\uA5A5\000\004\000\u02D5\000\u0390\000\u02D5\000\u0390"+
"\000\u02D5\000\u02A0\000\u02D5\000\u0390\000\u0390\000\u03AA\000\u0390"+
"\000\u02A0\000\u02D5\000\u02A0\000\u02D5\000\u02D5\000\u02D5\000\u03AA"+
"\000\u02D5\000\u03FD\000\u02D5\000\u02D5\000\u02D5\000\u0331\000\u02D5"+
"\000\u044A\000\u02D5\000\u02D5\000\u0390\000\u02D5\000\u0390\000\u02D5"+
"\000\u0331\000\u02D5\000\u03FD\000\u0390\000\u02D5\000\u02D5\000\u02D5"+
"\000\u0331\000\u02D5\000\u02D5\000\u0390\000\u02D5\000\u0279\000\015\000"+
"\u0101\000\u0499\000\u03D8\000\u045F\000\u04CF\000\u04CA\000\u03D8\000"+
"\u045F\000\u0422\000\u045F\000\u0422\000\u03D8\000\u0422\000\u0564\000"+
"\u0303\000\004\000q\000\u044A\000\u0667\000\u045F\000i\000\u0175\000U"+
"\000\004\000\u0667\000\u0678\000\u00F2\000\u062A\000\u0687\000\015\000"+
"\u0658\000\u063D\000\u0087\0008\000\u0604\000\u05AC\000\015\000\015\000"+
"\u069B\000\u0604\000\u063D\000\u063D\0004\000\004\000\u063D\000\004\000"+
"\u0639\000\u060C\000\004\000\u0564\000P\000\u0604\000\u05AC\000%\000\u05AC"+
"\000\015\000\u063D\000\u068C\000\u05AC\000\u063D\000\u063D\000\u05AC\000"+
"\u0604\000\u0279\000\u04CF\000\u02A0"
;
/**
@ -928,74 +998,194 @@ class TimeZoneData {
* >> GENERATED DATA: DO NOT EDIT <<
*/
static final String INDEX_BY_OFFSET_RLE =
"\000\u021D\uFFFF\u5740\000\u011F\000\001\000\u011F\uFFFF\u6550\000\u017D"+
"\000\006\000\u011E\000\u0175\000\u017D\000\u0191\000\u0193\000\u0196\uFFFF"+
"\u7360\000\u018A\000\010\0009\000\u011D\000\u0165\000\u0183\000\u018A"+
"\000\u018B\000\u019B\000\u019D\uFFFF\u7A68\000\u0190\000\001\000\u0190"+
"\uFFFF\u8170\000:\000\007\000\004\000:\000p\000\u0087\000\u00A9\000\u0127"+
"\000\u0187\uFFFF\u8F80\000t\000\010\000S\000t\000\u00A4\000\u00A6\000"+
"\u00A7\000\u0126\000\u017C\000\u0198\uFFFF\u9D90\000U\000\015\000E\000"+
"N\000T\000U\000X\000g\000l\000z\000\u008C\000\u00AA\000\u0125\000\u0176"+
"\000\u017A\uFFFF\uABA0\000M\000\025\000B\000G\000H\000M\000P\000Z\000"+
"\000\u0225\uFFFF\u5740\000\u0120\000\001\000\u0120\uFFFF\u6550\000\u0185"+
"\000\006\000\u011F\000\u017D\000\u0185\000\u0199\000\u019B\000\u019E\uFFFF"+
"\u7360\000\u0192\000\010\0009\000\u011E\000\u016D\000\u018B\000\u0192"+
"\000\u0193\000\u01A3\000\u01A5\uFFFF\u7A68\000\u0198\000\001\000\u0198"+
"\uFFFF\u8170\000:\000\007\000\004\000:\000p\000\u0087\000\u00A9\000\u0128"+
"\000\u018F\uFFFF\u8F80\000t\000\010\000S\000t\000\u00A4\000\u00A6\000"+
"\u00A7\000\u0127\000\u0184\000\u01A0\uFFFF\u9D90\000U\000\015\000E\000"+
"N\000T\000U\000X\000g\000l\000z\000\u008C\000\u00AA\000\u0126\000\u017E"+
"\000\u0182\uFFFF\uABA0\000M\000\025\000B\000G\000H\000M\000P\000Z\000"+
"b\000w\000|\000}\000~\000\u0080\000\u0092\000\u0095\000\u00A0\000\u00A1"+
"\000\u00A8\000\u0115\000\u0124\000\u0180\000\u0186\uFFFF\uB9B0\000k\000"+
"\000\u00A8\000\u0116\000\u0125\000\u0188\000\u018E\uFFFF\uB9B0\000k\000"+
"\035\000D\000L\000V\000Y\000_\000c\000f\000h\000i\000j\000k\000m\000n"+
"\000q\000s\000u\000\u0082\000\u0084\000\u0085\000\u0086\000\u0089\000"+
"\u008A\000\u008D\000\u008F\000\u0093\000\u00A3\000\u011A\000\u0123\000"+
"\u0166\uFFFF\uC7C0\000\u0091\000$\000;\000<\000>\000?\000@\000C\000I\000"+
"\u008A\000\u008D\000\u008F\000\u0093\000\u00A3\000\u011B\000\u0124\000"+
"\u016E\uFFFF\uC7C0\000\u0091\000$\000;\000<\000>\000?\000@\000C\000I\000"+
"Q\000R\000W\000\134\000^\000`\000a\000d\000e\000r\000x\000y\000\u0083"+
"\000\u008E\000\u0090\000\u0091\000\u0097\000\u0098\000\u009C\000\u009D"+
"\000\u009E\000\u009F\000\u00A2\000\u00A5\000\u00B0\000\u00FC\000\u0105"+
"\000\u0122\000\u017B\uFFFF\uCEC8\000\u009B\000\002\000\u009B\000\u0114"+
"\000\u009E\000\u009F\000\u00A2\000\u00A5\000\u00B0\000\u00FD\000\u0106"+
"\000\u0123\000\u0183\uFFFF\uCEC8\000\u009B\000\002\000\u009B\000\u0115"+
"\uFFFF\uD5D0\000F\000\024\000\002\000=\000A\000F\000J\000K\000O\000[\000"+
"]\000o\000v\000{\000\u007F\000\u0081\000\u008B\000\u0094\000\u0096\000"+
"\u0099\000\u0110\000\u0121\uFFFF\uE3E0\000\u0088\000\003\000\u0088\000"+
"\u0103\000\u0120\uFFFF\uF1F0\000\u00FB\000\005\000\u009A\000\u00FB\000"+
"\u00FE\000\u0100\000\u011C\000\000\000\u0164\000\037\000\005\000\006\000"+
"\u0099\000\u0111\000\u0122\uFFFF\uE3E0\000\u0088\000\003\000\u0088\000"+
"\u0104\000\u0121\uFFFF\uF1F0\000\u00FC\000\005\000\u009A\000\u00FC\000"+
"\u00FF\000\u0101\000\u011D\000\000\000\u016C\000\037\000\005\000\006\000"+
"\012\000\014\000\015\000\022\000\024\000\025\000\031\000\032\000$\000"+
"-\0001\0002\0004\0005\000\u00FD\000\u00FF\000\u0101\000\u0102\000\u0104"+
"\000\u011B\000\u0136\000\u0137\000\u013B\000\u0143\000\u0149\000\u014A"+
"\000\u0164\000\u01A5\000\u01A7\000\u0E10\000\u0152\000)\000\010\000\013"+
"-\0001\0002\0004\0005\000\u00FE\000\u0100\000\u0102\000\u0103\000\u0105"+
"\000\u011C\000\u0137\000\u0138\000\u013C\000\u0145\000\u014B\000\u014D"+
"\000\u016C\000\u01AD\000\u01AF\000\u0E10\000\u0155\0001\000\010\000\013"+
"\000\017\000\023\000\030\000!\000\042\000#\000%\000(\000/\0000\0003\000"+
"7\0008\000\u0113\000\u0118\000\u0128\000\u0138\000\u0139\000\u013C\000"+
"\u013D\000\u013E\000\u0140\000\u0142\000\u0144\000\u014B\000\u014C\000"+
"\u014D\000\u014F\000\u0151\000\u0152\000\u0153\000\u0155\000\u0159\000"+
"\u015B\000\u015E\000\u015F\000\u0161\000\u0163\000\u0174\000\u1C20\000"+
"\021\000&\000\003\000\016\000\020\000\021\000\033\000\034\000\035\000"+
" \000&\000'\000)\000*\000+\0006\000\u00B4\000\u00BD\000\u00C3\000\u00C8"+
"\000\u00CF\000\u00DD\000\u0112\000\u0119\000\u012E\000\u013A\000\u013F"+
"\000\u0141\000\u0145\000\u0146\000\u0147\000\u0148\000\u014E\000\u0154"+
"\000\u0157\000\u0158\000\u015A\000\u015D\000\u0160\000\u0162\000\u2A30"+
"\000\007\000\026\000\007\000\011\000\026\000\027\000\036\000\037\000,"+
"\000.\000\u00B1\000\u00B2\000\u00B9\000\u00BA\000\u00D8\000\u00E2\000"+
"\u00E4\000\u0117\000\u012F\000\u0150\000\u015C\000\u0168\000\u016C\000"+
"\u0171\000\u2BD8\000\u00E7\000\003\000\u00E5\000\u00E6\000\u00E7\000\u3138"+
"\000\u00F0\000\001\000\u00F0\000\u3840\000\u00FA\000\014\000\u00B6\000"+
"\u00BB\000\u00C6\000\u00DC\000\u00EF\000\u00FA\000\u0130\000\u0156\000"+
"\u016E\000\u0170\000\u0172\000\u0177\000\u3F48\000\u00D0\000\001\000\u00D0"+
"\000\u4650\000\u00D2\000\015\000\u00B7\000\u00B8\000\u00BE\000\u00C7\000"+
"\u00D2\000\u00E9\000\u00EE\000\u00F9\000\u0131\000\u0169\000\u016D\000"+
"\u016F\000\u0179\000\u4D58\000\u00C0\000\002\000\u00C0\000\u0167\000\u50DC"+
"\000\u00D4\000\001\000\u00D4\000\u5460\000\u00C4\000\011\000\u00AE\000"+
"\u00B3\000\u00C2\000\u00C4\000\u00DE\000\u00DF\000\u00F1\000\u0111\000"+
"\u0132\000\u5B68\000\u00E3\000\002\000\u00E3\000\u016B\000\u6270\000\u00E8"+
"\000\013\000\u00AC\000\u00BC\000\u00CB\000\u00CD\000\u00D5\000\u00E0\000"+
"\u00E8\000\u00F6\000\u0133\000\u016A\000\u01A6\000\u7080\000\u00EB\000"+
"\024\000\u00AB\000\u00BF\000\u00C1\000\u00C9\000\u00CA\000\u00CC\000\u00D3"+
"\000\u00D6\000\u00D7\000\u00D9\000\u00DB\000\u00EB\000\u00EC\000\u00ED"+
"\000\u00F3\000\u00F4\000\u00F5\000\u010E\000\u0116\000\u0134\000\u7E90"+
"\000\u00F2\000\011\000\u00C5\000\u00CE\000\u00E1\000\u00EA\000\u00F2\000"+
"\u00F8\000\u0135\000\u0173\000\u0197\000\u8598\000\u0109\000\004\000\000"+
"\000\u0106\000\u0108\000\u0109\000\u8CA0\000\u010F\000\016\000\001\000"+
"\u00AD\000\u00F7\000\u0107\000\u010A\000\u010B\000\u010D\000\u010F\000"+
"\u0129\000\u0189\000\u019A\000\u019C\000\u01A0\000\u01A3\000\u93A8\000"+
"\u010C\000\001\000\u010C\000\u9AB0\000\u0188\000\010\000\u00DA\000\u012A"+
"\000\u0181\000\u0188\000\u018D\000\u0195\000\u0199\000\u01A4\000\uA1B8"+
"\000\u0194\000\001\000\u0194\000\uA8C0\000\u017E\000\016\000\u00AF\000"+
"\u00B5\000\u00D1\000\u012B\000\u0178\000\u017E\000\u0184\000\u0185\000"+
"\u018E\000\u018F\000\u0192\000\u019E\000\u01A1\000\u01A2\000\uB34C\000"+
"\u017F\000\001\000\u017F\000\uB6D0\000\u0182\000\003\000\u012C\000\u0182"+
"\000\u019F\000\uC4E0\000\u018C\000\002\000\u012D\000\u018C"
"7\0008\000\u00B2\000\u0114\000\u0119\000\u0129\000\u0139\000\u013A\000"+
"\u013D\000\u013E\000\u013F\000\u0140\000\u0142\000\u0144\000\u0146\000"+
"\u014C\000\u014E\000\u014F\000\u0150\000\u0152\000\u0154\000\u0155\000"+
"\u0156\000\u0158\000\u015A\000\u015B\000\u015D\000\u015F\000\u0161\000"+
"\u0164\000\u0165\000\u0166\000\u0168\000\u0169\000\u016B\000\u017C\000"+
"\u1C20\000\021\000&\000\003\000\016\000\020\000\021\000\033\000\034\000"+
"\035\000 \000&\000'\000)\000*\000+\0006\000\u00B5\000\u00BE\000\u00C4"+
"\000\u00C9\000\u00D0\000\u00DE\000\u0113\000\u011A\000\u012F\000\u013B"+
"\000\u0141\000\u0143\000\u0147\000\u0148\000\u0149\000\u014A\000\u0151"+
"\000\u0157\000\u015C\000\u015E\000\u0160\000\u0163\000\u0167\000\u016A"+
"\000\u2A30\000\007\000\026\000\007\000\011\000\026\000\027\000\036\000"+
"\037\000,\000.\000\u00B1\000\u00B3\000\u00BA\000\u00BB\000\u00D9\000\u00E3"+
"\000\u00E5\000\u0118\000\u0130\000\u0153\000\u0162\000\u0170\000\u0174"+
"\000\u0179\000\u2BD8\000\u00E8\000\003\000\u00E6\000\u00E7\000\u00E8\000"+
"\u3138\000\u00F1\000\001\000\u00F1\000\u3840\000\u00FB\000\014\000\u00B7"+
"\000\u00BC\000\u00C7\000\u00DD\000\u00F0\000\u00FB\000\u0131\000\u0159"+
"\000\u0176\000\u0178\000\u017A\000\u017F\000\u3F48\000\u00D1\000\001\000"+
"\u00D1\000\u4650\000\u00D3\000\015\000\u00B8\000\u00B9\000\u00BF\000\u00C8"+
"\000\u00D3\000\u00EA\000\u00EF\000\u00FA\000\u0132\000\u0171\000\u0175"+
"\000\u0177\000\u0181\000\u4D58\000\u00C1\000\002\000\u00C1\000\u016F\000"+
"\u50DC\000\u00D5\000\001\000\u00D5\000\u5460\000\u00C5\000\011\000\u00AE"+
"\000\u00B4\000\u00C3\000\u00C5\000\u00DF\000\u00E0\000\u00F2\000\u0112"+
"\000\u0133\000\u5B68\000\u00E4\000\002\000\u00E4\000\u0173\000\u6270\000"+
"\u00E9\000\013\000\u00AC\000\u00BD\000\u00CC\000\u00CE\000\u00D6\000\u00E1"+
"\000\u00E9\000\u00F7\000\u0134\000\u0172\000\u01AE\000\u7080\000\u00EC"+
"\000\024\000\u00AB\000\u00C0\000\u00C2\000\u00CA\000\u00CB\000\u00CD\000"+
"\u00D4\000\u00D7\000\u00D8\000\u00DA\000\u00DC\000\u00EC\000\u00ED\000"+
"\u00EE\000\u00F4\000\u00F5\000\u00F6\000\u010F\000\u0117\000\u0135\000"+
"\u7E90\000\u00F3\000\011\000\u00C6\000\u00CF\000\u00E2\000\u00EB\000\u00F3"+
"\000\u00F9\000\u0136\000\u017B\000\u019F\000\u8598\000\u010A\000\004\000"+
"\000\000\u0107\000\u0109\000\u010A\000\u8CA0\000\u0110\000\016\000\001"+
"\000\u00AD\000\u00F8\000\u0108\000\u010B\000\u010C\000\u010E\000\u0110"+
"\000\u012A\000\u0191\000\u01A2\000\u01A4\000\u01A8\000\u01AB\000\u93A8"+
"\000\u010D\000\001\000\u010D\000\u9AB0\000\u0190\000\010\000\u00DB\000"+
"\u012B\000\u0189\000\u0190\000\u0195\000\u019D\000\u01A1\000\u01AC\000"+
"\uA1B8\000\u019C\000\001\000\u019C\000\uA8C0\000\u0186\000\016\000\u00AF"+
"\000\u00B6\000\u00D2\000\u012C\000\u0180\000\u0186\000\u018C\000\u018D"+
"\000\u0196\000\u0197\000\u019A\000\u01A6\000\u01A9\000\u01AA\000\uB34C"+
"\000\u0187\000\001\000\u0187\000\uB6D0\000\u018A\000\003\000\u012D\000"+
"\u018A\000\u01A7\000\uC4E0\000\u0194\000\002\000\u012E\000\u0194"
;
/**
* RLE encoded form of INDEX_BY_COUNTRY.
* @see com.ibm.util.Utility.RLEStringToIntArray
* >> GENERATED DATA: DO NOT EDIT <<
*/
static final String INDEX_BY_COUNTRY_RLE =
"\000\u038C\000\000\000&\000\u00E6\000\u00E7\000\u00E8\000\u0114\000\u011A"+
"\000\u011C\000\u011D\000\u011E\000\u011F\000\u0120\000\u0121\000\u0122"+
"\000\u0123\000\u0124\000\u0125\000\u0126\000\u0127\000\u0128\000\u0129"+
"\000\u012A\000\u012B\000\u012C\000\u012D\000\u012E\000\u012F\000\u0130"+
"\000\u0131\000\u0132\000\u0133\000\u0134\000\u0135\000\u0136\000\u0137"+
"\000\u0138\000\u016C\000\u017C\000\u01AD\000\u01AF\000\003\000\001\000"+
"\u013A\000\004\000\001\000\u00C7\000\005\000\001\000\u00D1\000\006\000"+
"\001\000<\000\010\000\001\000;\000\013\000\001\000\u0161\000\014\000\002"+
"\000\u00FB\000\u017F\000\015\000\001\000R\000\016\000\001\000%\000\020"+
"\000\007\000\u00AB\000\u00AC\000\u00AD\000\u00AE\000\u00AF\000\u00B0\000"+
"\u00B1\000\021\000\007\000\002\000F\000J\000O\000o\000{\000\u0096\000"+
"\022\000\001\000\u019E\000\023\000\001\000\u0166\000\024\000\014\000\000"+
"\000\001\000\u0107\000\u0108\000\u0109\000\u010A\000\u010B\000\u010C\000"+
"\u010D\000\u010E\000\u010F\000\u0110\000\026\000\001\000>\000\031\000"+
"\001\000\u00BC\000 \000\001\000\u015B\000!\000\001\000@\000#\000\002\000"+
"\u00C5\000\u0112\000$\000\001\000\u0140\000%\000\001\0002\000&\000\001"+
"\000\u015E\000'\000\001\000\u00BB\000(\000\001\000\020\000)\000\001\000"+
"3\000,\000\001\000\u00FD\000-\000\001\000\u00C0\000.\000\001\000r\000"+
"1\000\016\000=\000A\000C\000Q\000Y\000[\000v\000x\000\u0088\000\u008F"+
"\000\u0090\000\u0094\000\u0099\000\u0111\0002\000\001\000\u0084\0003\000"+
"\001\000\u00F2\0006\000\001\000\033\0008\000\001\000\u0151\0009\000\001"+
"\000B\000@\000\027\000G\000S\000T\000X\000\134\000^\000e\000l\000m\000"+
"\u0082\000\u0086\000\u008A\000\u0092\000\u0093\000\u0095\000\u009B\000"+
"\u00A0\000\u00A3\000\u00A6\000\u00A7\000\u00A8\000\u00AA\000\u0115\000"+
"B\000\001\000\u0173\000C\000\002\000!\000&\000E\000\001\000\013\000F\000"+
"\001\000\017\000G\000\001\000\u016B\000H\000\001\000\005\000J\000\001"+
"\000\u01A3\000K\000\002\000\u0097\000\u0188\000L\000\001\000\030\000M"+
"\000\006\000\u00C2\000\u00CA\000\u00D4\000\u00EC\000\u00F6\000\u0117\000"+
"N\000\001\000D\000Q\000\001\000P\000T\000\001\000f\000U\000\001\000\u00FF"+
"\000W\000\001\000\u0172\000X\000\001\000\u00DE\000Y\000\001\000\u0156"+
"\000d\000\001\000\u013E\000i\000\001\000\027\000j\000\001\000\u0144\000"+
"l\000\001\000W\000n\000\001\000\u0098\000y\000\001\000\010\000\u0082\000"+
"\002\000c\000\u018E\000\u0084\000\001\000\u0160\000\u0086\000\002\000"+
"\003\000\021\000\u0087\000\001\000\031\000\u0091\000\001\000\011\000\u0092"+
"\000\003\000\023\000\u00FE\000\u014F\000\u0093\000\002\000\007\000\u0118"+
"\000\u00A8\000\001\000\u0147\000\u00A9\000\001\000\u018C\000\u00AA\000"+
"\001\000\u0106\000\u00AC\000\004\000\u0195\000\u01A1\000\u01A8\000\u01AB"+
"\000\u00AE\000\001\000\u0100\000\u00B1\000\002\000\u0119\000\u0155\000"+
"\u00C0\000\001\000#\000\u00C1\000\002\000\u013C\000\u014D\000\u00C3\000"+
"\001\000`\000\u00C4\000\001\000\u00F0\000\u00C5\000\001\000K\000\u00C7"+
"\000\001\000\006\000\u00C8\000\001\000\u0146\000\u00CB\000\003\000]\000"+
"\u009A\000\u00A2\000\u00CC\000\001\000\014\000\u00CD\000\001\000\024\000"+
"\u00CF\000\001\000a\000\u00D0\000\001\000(\000\u00D1\000\001\000\u013B"+
"\000\u00D2\000\001\000\u0104\000\u00D3\000\001\000b\000\u00D4\000\001"+
"\000\u0191\000\u00D6\000\001\000\015\000\u00D8\000\001\000d\000\u00EA"+
"\000\001\000\u00CB\000\u00ED\000\001\000\u00A1\000\u00F1\000\001\000\u0169"+
"\000\u00F3\000\001\000\u008D\000\u00F4\000\001\000\u0142\000\u0103\000"+
"\003\000\u00CE\000\u00CF\000\u00F4\000\u0104\000\001\000\u0145\000\u010B"+
"\000\001\000\u00D0\000\u010D\000\002\000\u00C1\000\u016F\000\u010E\000"+
"\001\000\u0171\000\u0110\000\001\000\u00BA\000\u0111\000\001\000\u00F1"+
"\000\u0112\000\001\000\u0103\000\u0113\000\001\000\u0158\000\u012C\000"+
"\001\000n\000\u012E\000\001\000\u00B5\000\u012F\000\002\000\u00F3\000"+
"\u017B\000\u0144\000\001\000.\000\u0146\000\001\000\u00BF\000\u0147\000"+
"\001\000\u00E1\000\u0148\000\003\000\u018A\000\u0194\000\u01A6\000\u014C"+
"\000\001\000\u0174\000\u014D\000\001\000\u009C\000\u014F\000\001\000\u00E2"+
"\000\u0151\000\001\000\u00EB\000\u0156\000\001\000\u00D9\000\u0158\000"+
"\001\000L\000\u0159\000\003\000\u00B4\000\u00B7\000\u00B8\000\u0160\000"+
"\001\000\u00F7\000\u0161\000\001\000\u00BE\000\u0162\000\001\000\u009D"+
"\000\u0168\000\001\000\u0164\000\u016A\000\001\000\u00C3\000\u0171\000"+
"\001\000-\000\u0172\000\001\000*\000\u0173\000\001\000\u0167\000\u0174"+
"\000\001\000\u014E\000\u0175\000\001\000\u0157\000\u0178\000\001\0006"+
"\000\u0180\000\001\000\022\000\u0182\000\001\000\u0152\000\u0183\000\002"+
"\000\u0143\000\u0162\000\u0186\000\001\000\u0170\000\u0187\000\002\000"+
"\u0196\000\u0197\000\u018A\000\001\000\u015D\000\u018B\000\002\000\012"+
"\0005\000\u018C\000\001\000\u00E4\000\u018D\000\002\000\u00CC\000\u00F5"+
"\000\u018E\000\001\000\u00DA\000\u018F\000\001\000\u01A4\000\u0190\000"+
"\001\000y\000\u0191\000\001\0001\000\u0192\000\001\000\u0083\000\u0193"+
"\000\001\000\u0150\000\u0194\000\001\000\u0178\000\u0195\000\001\000\u0177"+
"\000\u0196\000\001\000\016\000\u0197\000\010\000H\000N\000g\000z\000}"+
"\000~\000\u0080\000\u00A4\000\u0198\000\002\000\u00D7\000\u00D8\000\u0199"+
"\000\001\000)\000\u01A0\000\001\0008\000\u01A2\000\001\000\u019D\000\u01A4"+
"\000\001\0000\000\u01A5\000\001\000\u019C\000\u01A6\000\001\000\042\000"+
"\u01A8\000\001\000w\000\u01AB\000\001\000\u0139\000\u01AE\000\001\000"+
"\u0154\000\u01AF\000\001\000\u00D5\000\u01B1\000\001\000\u019A\000\u01B4"+
"\000\001\000\u019B\000\u01B9\000\003\000\u0180\000\u0186\000\u0187\000"+
"\u01CC\000\001\000\u00DD\000\u01E0\000\001\000\u0089\000\u01E4\000\001"+
"\000s\000\u01E5\000\003\000\u018F\000\u0198\000\u01A5\000\u01E6\000\001"+
"\000\u01A2\000\u01E7\000\001\000\u00DC\000\u01EA\000\002\000\u00D3\000"+
"\u0181\000\u01EB\000\001\000\u0168\000\u01EC\000\001\000\u007F\000\u01ED"+
"\000\001\000\u01A0\000\u01F1\000\002\000\u0091\000\u0183\000\u01F2\000"+
"\001\000\u00C9\000\u01F3\000\003\000\u00FC\000\u0102\000\u014B\000\u01F6"+
"\000\001\000\u019F\000\u01F8\000\001\000?\000\u0200\000\001\000\u00E3"+
"\000\u0224\000\001\000\u017A\000\u022E\000\001\000\u0141\000\u0234\000"+
"\015\000\u00B6\000\u00CD\000\u00D2\000\u00D6\000\u00DB\000\u00DF\000\u00E0"+
"\000\u00F8\000\u00F9\000\u00FA\000\u0149\000\u0153\000\u0159\000\u0236"+
"\000\001\000 \000\u0240\000\001\000\u00E5\000\u0241\000\002\000\u0190"+
"\000\u01AC\000\u0242\000\001\000\u0176\000\u0243\000\001\000\037\000\u0244"+
"\000\001\000\u015F\000\u0246\000\001\000\u00ED\000\u0247\000\001\000\u0105"+
"\000\u0248\000\001\000\u014C\000\u0249\000\002\000\u00B2\000\u0101\000"+
"\u024A\000\001\000\u013F\000\u024B\000\001\000\032\000\u024C\000\001\000"+
"\u015A\000\u024D\000\001\000\025\000\u024E\000\001\000,\000\u0251\000"+
"\001\000\u008B\000\u0253\000\001\0004\000\u0255\000\001\000Z\000\u0258"+
"\000\001\000\u00C4\000\u0259\000\001\000+\000\u0262\000\001\000_\000\u0263"+
"\000\001\000/\000\u0265\000\001\000\u0175\000\u0266\000\001\000$\000\u0267"+
"\000\001\000\u00BD\000\u0269\000\001\000\u00C8\000\u026A\000\001\000\u018B"+
"\000\u026C\000\001\000\u00B9\000\u026D\000\001\0007\000\u026E\000\001"+
"\000\u01A7\000\u026F\000\001\000\u00C6\000\u0271\000\001\000\u0148\000"+
"\u0273\000\001\000\u008E\000\u0275\000\001\000\u018D\000\u0276\000\001"+
"\000\u00EE\000\u0279\000\001\000\026\000\u0280\000\004\000\u014A\000\u015C"+
"\000\u0163\000\u016A\000\u0286\000\001\000\036\000\u028C\000\003\000\u0193"+
"\000\u0199\000\u01A9\000\u0292\000\034\000\004\0009\000:\000E\000M\000"+
"U\000V\000h\000i\000j\000k\000p\000q\000t\000u\000|\000\u0085\000\u0087"+
"\000\u008C\000\u00A9\000\u0116\000\u011B\000\u016D\000\u016E\000\u017E"+
"\000\u0182\000\u0184\000\u0192\000\u0298\000\001\000\u0081\000\u0299\000"+
"\002\000\u00EA\000\u00EF\000\u02A0\000\001\000\u0165\000\u02A2\000\001"+
"\000\u009F\000\u02A4\000\001\000I\000\u02A6\000\001\000\u00A5\000\u02A8"+
"\000\001\000\u009E\000\u02AD\000\002\000\u00E9\000\u01AE\000\u02B4\000"+
"\001\000\u0189\000\u02C5\000\001\000\u01AA\000\u02D2\000\002\000\u017D"+
"\000\u0185\000\u0304\000\001\000\u00B3\000\u0313\000\001\000\u0179\000"+
"\u0314\000\001\000\u013D\000\u0320\000\001\000\035\000\u032C\000\001\000"+
"'\000\u0336\000\002\000\034\000\u0113"
;
// END GENERATED SOURCE CODE
@ -1008,6 +1198,9 @@ class TimeZoneData {
// Unpack the int[] INDEX_BY_OFFSET array
INDEX_BY_OFFSET = Utility.RLEStringToIntArray(INDEX_BY_OFFSET_RLE);
// Unpack the int[] INDEX_BY_COUNTRY array
INDEX_BY_COUNTRY = Utility.RLEStringToIntArray(INDEX_BY_COUNTRY_RLE);
// Construct the index by name. We unpack this array and then
// discard it after we're done with it.
int[] index_by_name_array = Utility.RLEStringToIntArray(INDEX_BY_NAME_ARRAY_RLE);

View File

@ -724,6 +724,44 @@ public class TimeZoneTest extends TestFmwk
}
}
}
public void TestCountries() {
// Make sure America/Los_Angeles is in the "US" group, and
// Asia/Tokyo isn't. Vice versa for the "JP" group.
String[] s = TimeZone.getAvailableIDs("US");
boolean la = false, tokyo = false;
String laZone = "America/Los_Angeles", tokyoZone = "Asia/Tokyo";
for (int i=0; i<s.length; ++i) {
if (s[i].equals(laZone)) {
la = true;
}
if (s[i].equals(tokyoZone)) {
tokyo = true;
}
}
if (!la || tokyo) {
errln("FAIL: " + laZone + " in US = " + la);
errln("FAIL: " + tokyoZone + " in US = " + tokyo);
}
s = TimeZone.getAvailableIDs("JP");
la = false; tokyo = false;
for (int i=0; i<s.length; ++i) {
if (s[i].equals(laZone)) {
la = true;
}
if (s[i].equals(tokyoZone)) {
tokyo = true;
}
}
if (la || !tokyo) {
errln("FAIL: " + laZone + " in JP = " + la);
errln("FAIL: " + tokyoZone + " in JP = " + tokyo);
}
}
}
//eof

View File

@ -377,6 +377,20 @@ abstract public class TimeZone implements Serializable, Cloneable {
return TimeZoneData.getAvailableIDs(rawOffset);
}
/**
* Return a new String array containing all system TimeZone IDs
* associated with the given country. These IDs may be passed to
* <code>get()</code> to construct the corresponding TimeZone
* object.
* @param a two-letter ISO 3166 country code, or <code>null</code>
* to return zones not associated with any country
* @return an array of IDs for system TimeZones with the given
* raw offset. If there are none, return a zero-length array.
*/
public static String[] getAvailableIDs(String country) {
return TimeZoneData.getAvailableIDs(country);
}
/**
* Return a new String array containing all system TimeZone IDs.
* These IDs (and only these IDs) may be passed to

View File

@ -3,8 +3,8 @@
* others. All Rights Reserved.
*********************************************************************
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/TimeZoneData.java,v $
* $Date: 2001/01/09 22:48:25 $
* $Revision: 1.2 $
* $Date: 2001/02/02 19:30:02 $
* $Revision: 1.3 $
*/
package com.ibm.util;
import java.util.Hashtable;
@ -86,6 +86,44 @@ class TimeZoneData {
// Failed to find any; return empty array
return new String[0];
}
/**
* Return a new String array containing all system TimeZone IDs
* associated with the given country. These IDs may be passed to
* <code>get()</code> to construct the corresponding TimeZone
* object.
* @param a two-letter ISO 3166 country code, or <code>null</code>
* to return zones not associated with any country
* @return an array of IDs for system TimeZones with the given
* raw offset. If there are none, return a zero-length array.
*/
public static String[] getAvailableIDs(String countryCode) {
// Construct our key; this is an integer of the form
// 32*n1 + n0, where 0<=n<=25.
int countryHash = 0;
if (countryCode != null) {
countryHash =
((Character.toUpperCase(countryCode.charAt(0)) - 'A') << 5) |
(Character.toUpperCase(countryCode.charAt(1)) - 'A');
}
// Do a linear search; there are ~ 250 entries
for (int i=0; i<INDEX_BY_COUNTRY.length; ) {
if (countryHash == INDEX_BY_COUNTRY[i]) {
// Found the desired country
int n = INDEX_BY_COUNTRY[i+1];
String[] result = new String[n];
for (int j=0; j<n; ++j) {
result[j] = IDS[INDEX_BY_COUNTRY[i+2+j]];
}
return result;
} else {
i += INDEX_BY_COUNTRY[i+1] + 2;
}
}
// Failed to find any; return empty array
return new String[0];
}
/**
* Returns the number of IDs in the equivalency group that
@ -206,9 +244,31 @@ class TimeZoneData {
*/
static int[] INDEX_BY_OFFSET;
/**
* Index by country to list of zones. Entries are in order of
* ascending country code. Format:
*
* Offset Data Notes
* i+0 country as an integer 32n1 + n0; see below
* i+1 count number of IDs to follow
* i+2..j IDs indices into IDS[]
*
* If the number of zones is n, then j=n+1.
*
* The first integer in each entry is the country code as an integer
* from 0..(26-1)*32+(26-1). This is computed as follows: A two
* letter country code XY is converted to ((X-'A')<<5) | (Y-'A').
* The special value 0 indicates no assigned country. This also
* maps to the country code 'AA' but currently this is not a valid
* country code.
*
* Zone ID values are indices into IDS[].
*/
static int[] INDEX_BY_COUNTRY;
//----------------------------------------------------------------
// BEGIN GENERATED SOURCE CODE
// Date: Tue Jan 09 10:51:18 PST 2001
// Date: Fri Feb 02 10:36:32 PST 2001
// Version: tzdata2000h from ftp://elsie.nci.nih.gov/pub
// Tool: icu/source/tools/gentz
// See: icu/source/tools/gentz/readme.txt
@ -399,6 +459,7 @@ class TimeZoneData {
"Antarctica/McMurdo",
"Antarctica/Palmer",
"Antarctica/Syowa",
"Arctic/Longyearbyen",
"Asia/Aden",
"Asia/Almaty",
"Asia/Amman",
@ -539,6 +600,7 @@ class TimeZoneData {
"Europe/Belfast",
"Europe/Belgrade",
"Europe/Berlin",
"Europe/Bratislava",
"Europe/Brussels",
"Europe/Bucharest",
"Europe/Budapest",
@ -551,6 +613,7 @@ class TimeZoneData {
"Europe/Kaliningrad",
"Europe/Kiev",
"Europe/Lisbon",
"Europe/Ljubljana",
"Europe/London",
"Europe/Luxembourg",
"Europe/Madrid",
@ -564,7 +627,10 @@ class TimeZoneData {
"Europe/Riga",
"Europe/Rome",
"Europe/Samara",
"Europe/San_Marino",
"Europe/Sarajevo",
"Europe/Simferopol",
"Europe/Skopje",
"Europe/Sofia",
"Europe/Stockholm",
"Europe/Tallinn",
@ -572,9 +638,11 @@ class TimeZoneData {
"Europe/Tiraspol",
"Europe/Uzhgorod",
"Europe/Vaduz",
"Europe/Vatican",
"Europe/Vienna",
"Europe/Vilnius",
"Europe/Warsaw",
"Europe/Zagreb",
"Europe/Zaporozhye",
"Europe/Zurich",
"GMT",
@ -653,26 +721,26 @@ class TimeZoneData {
* >> GENERATED DATA: DO NOT EDIT <<
*/
static final String DATA_RLE =
"\000\u0698\000\000\uFFFF\u5740\000\001\000\u011F\000\000\uFFFF\u6550\000"+
"\006\000\u011E\000\u0175\000\u017D\000\u0191\000\u0193\000\u0196\000\000"+
"\uFFFF\u7360\000\006\000\u011D\000\u0165\000\u0183\000\u018A\000\u018B"+
"\000\u019D\000\001\uFFFF\u7360\000\003\000\001\uFFFF\uFFFF\000x\000\000"+
"\000\u06A0\000\000\uFFFF\u5740\000\001\000\u0120\000\000\uFFFF\u6550\000"+
"\006\000\u011F\000\u017D\000\u0185\000\u0199\000\u019B\000\u019E\000\000"+
"\uFFFF\u7360\000\006\000\u011E\000\u016D\000\u018B\000\u0192\000\u0193"+
"\000\u01A5\000\001\uFFFF\u7360\000\003\000\001\uFFFF\uFFFF\000x\000\000"+
"\000\011\uFFFF\uFFFF\000\001\000x\000\000\000<\000\001\0009\000\001\uFFFF"+
"\u7360\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000\002\000\001\uFFFF"+
"\uFFFF\000\000\000\000\000\036\000\001\000\u019B\000\000\uFFFF\u7A68\000"+
"\001\000\u0190\000\000\uFFFF\u8170\000\002\000\u0127\000\u0187\000\001"+
"\uFFFF\000\000\000\000\000\036\000\001\000\u01A3\000\000\uFFFF\u7A68\000"+
"\001\000\u0198\000\000\uFFFF\u8170\000\002\000\u0128\000\u018F\000\001"+
"\uFFFF\u8170\000\003\000\001\uFFFF\uFFFF\000x\000\000\000\011\uFFFF\uFFFF"+
"\000\001\000x\000\000\000<\000\005\000\004\000:\000p\000\u0087\000\u00A9"+
"\000\000\uFFFF\u8F80\000\002\000\u0126\000\u0198\000\001\uFFFF\u8F80\000"+
"\000\000\uFFFF\u8F80\000\002\000\u0127\000\u01A0\000\001\uFFFF\u8F80\000"+
"\003\000\001\uFFFF\uFFFF\000x\000\000\000\011\uFFFF\uFFFF\000\001\000"+
"x\000\000\000<\000\006\000S\000t\000\u00A4\000\u00A6\000\u00A7\000\u017C"+
"\000\000\uFFFF\u9D90\000\005\000T\000g\000\u008C\000\u0125\000\u017A\000"+
"x\000\000\000<\000\006\000S\000t\000\u00A4\000\u00A6\000\u00A7\000\u0184"+
"\000\000\uFFFF\u9D90\000\005\000T\000g\000\u008C\000\u0126\000\u0182\000"+
"\001\uFFFF\u9D90\000\003\000\001\uFFFF\uFFFF\000x\000\000\000\011\uFFFF"+
"\uFFFF\000\001\000x\000\000\000<\000\010\000E\000N\000U\000X\000l\000"+
"z\000\u00AA\000\u0176\000\000\uFFFF\uABA0\000\005\000w\000\u0095\000\u00A0"+
"\000\u0124\000\u0186\000\001\uFFFF\uABA0\000\003\000\001\uFFFF\uFFFF\000"+
"z\000\u00AA\000\u017E\000\000\uFFFF\uABA0\000\005\000w\000\u0095\000\u00A0"+
"\000\u0125\000\u018E\000\001\uFFFF\uABA0\000\003\000\001\uFFFF\uFFFF\000"+
"x\000\000\000\011\uFFFF\uFFFF\000\001\000x\000\000\000<\000\011\000G\000"+
"H\000M\000|\000}\000~\000\u0080\000\u0092\000\u0115\000\001\uFFFF\uABA0"+
"H\000M\000|\000}\000~\000\u0080\000\u0092\000\u0116\000\001\uFFFF\uABA0"+
"\000\003\000\001\uFFFF\uFFFF\000x\000\000\000\011\uFFFF\uFFFF\000\001"+
"\000x\000\001\000<\000\001\000\u00A8\000\001\uFFFF\uABA0\000\013\000\022"+
"\000\000\000\000\000\000\000\001\000\014\000\000\000\000\000\000\000<"+
@ -683,9 +751,9 @@ class TimeZoneData {
"\000\001\uFFFF\uFFFF\000\000\000\000\000\010\uFFFF\uFFFF\000\001\000\000"+
"\000\000\000<\000\002\000Z\000\u00A1\000\001\uFFFF\uABA0\000\011\000\011"+
"\uFFFF\uFFFF\000\000\000\000\000\002\000\011\uFFFF\uFFFF\000\000\000\000"+
"\000<\000\001\000\u0180\000\000\uFFFF\uB9B0\000\017\000L\000Y\000c\000"+
"\000<\000\001\000\u0188\000\000\uFFFF\uB9B0\000\017\000L\000Y\000c\000"+
"h\000i\000j\000k\000m\000n\000\u0089\000\u008A\000\u008F\000\u0093\000"+
"\u0123\000\u0166\000\001\uFFFF\uB9B0\000\003\000\001\uFFFF\uFFFF\000\000"+
"\u0124\000\u016E\000\001\uFFFF\uB9B0\000\003\000\001\uFFFF\uFFFF\000\000"+
"\000\000\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\001\000"+
"_\000\001\uFFFF\uB9B0\000\003\000\001\uFFFF\uFFFF\000\000\000\001\000"+
"\011\uFFFF\uFFFF\000\001\000\000\000\001\000<\000\001\000f\000\001\uFFFF"+
@ -693,17 +761,17 @@ class TimeZoneData {
"\001\000<\000\001\000<\000\001\000\u008D\000\001\uFFFF\uB9B0\000\003\000"+
"\001\uFFFF\uFFFF\000x\000\000\000\011\uFFFF\uFFFF\000\001\000x\000\000"+
"\000<\000\011\000V\000q\000u\000\u0082\000\u0084\000\u0085\000\u0086\000"+
"\u00A3\000\u011A\000\001\uFFFF\uB9B0\000\000\000\001\000\000\000\000\000"+
"\u00A3\000\u011B\000\001\uFFFF\uB9B0\000\000\000\001\000\000\000\000\000"+
"\000\000\003\000\001\000\000\000\000\000\000\000<\000\001\000s\000\001"+
"\uFFFF\uB9B0\000\004\000\002\000\000\000\000\000\000\000\013\000\037\000"+
"\000\000\000\000\000\000<\000\001\000D\000\000\uFFFF\uC7C0\000\031\000"+
";\000<\000>\000C\000I\000R\000W\000`\000a\000d\000r\000x\000y\000\u0083"+
"\000\u008E\000\u0090\000\u0091\000\u0098\000\u009C\000\u009D\000\u009E"+
"\000\u009F\000\u00A5\000\u0122\000\u017B\000\001\uFFFF\uC7C0\000\003\000"+
"\000\u009F\000\u00A5\000\u0123\000\u0183\000\001\uFFFF\uC7C0\000\003\000"+
"\001\uFFFF\uFFFF\000\001\000\000\000\011\uFFFF\uFFFF\000\001\000\001\000"+
"\000\000<\000\001\000^\000\001\uFFFF\uC7C0\000\003\000\001\uFFFF\uFFFF"+
"\000x\000\000\000\011\uFFFF\uFFFF\000\001\000x\000\000\000<\000\004\000"+
"\134\000e\000\u00A2\000\u00FC\000\001\uFFFF\uC7C0\000\003\000\017\uFFFF"+
"\134\000e\000\u00A2\000\u00FD\000\001\uFFFF\uC7C0\000\003\000\017\uFFFF"+
"\uFFFF\000x\000\000\000\010\000\031\000\000\000x\000\000\000<\000\001"+
"\000@\000\001\uFFFF\uC7C0\000\011\000\001\uFFFF\uFFFF\000\000\000\000"+
"\000\001\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\001\000?\000\001"+
@ -712,148 +780,149 @@ class TimeZoneData {
"\011\000\011\uFFFF\uFFFF\000\000\000\000\000\002\000\011\uFFFF\uFFFF\000"+
"\000\000\000\000<\000\002\000\u0097\000\u00B0\000\001\uFFFF\uC7C0\000"+
"\010\000\010\uFFFF\uFFFF\000\000\000\000\000\003\000\020\uFFFF\uFFFF\000"+
"\000\000\000\000<\000\001\000\u0105\000\001\uFFFF\uCEC8\000\003\000\001"+
"\000\000\000\000<\000\001\000\u0106\000\001\uFFFF\uCEC8\000\003\000\001"+
"\uFFFF\uFFFF\000\001\000\000\000\011\uFFFF\uFFFF\000\001\000\001\000\000"+
"\000<\000\002\000\u009B\000\u0114\000\000\uFFFF\uD5D0\000\016\000\002"+
"\000<\000\002\000\u009B\000\u0115\000\000\uFFFF\uD5D0\000\016\000\002"+
"\000A\000F\000J\000K\000O\000[\000o\000v\000{\000\u008B\000\u0094\000"+
"\u0096\000\u0121\000\001\uFFFF\uD5D0\000\003\000\001\uFFFF\uFFFF\000x"+
"\u0096\000\u0122\000\001\uFFFF\uD5D0\000\003\000\001\uFFFF\uFFFF\000x"+
"\000\000\000\011\uFFFF\uFFFF\000\001\000x\000\000\000<\000\001\000\u007F"+
"\000\001\uFFFF\uD5D0\000\002\uFFFF\uFFFF\000\001\000<\000\002\000\011"+
"\uFFFF\uFFFF\000\001\000<\000\002\000<\000\001\000]\000\001\uFFFF\uD5D0"+
"\000\011\000\022\000\000\000\000\000\000\000\001\000\034\000\000\000\000"+
"\000\000\000<\000\001\000\u0081\000\001\uFFFF\uD5D0\000\011\000\010\uFFFF"+
"\uFFFF\000\000\000\000\000\001\000\017\uFFFF\uFFFF\000\000\000\000\000"+
"<\000\003\000=\000\u0099\000\u0110\000\000\uFFFF\uE3E0\000\003\000\u0088"+
"\000\u0103\000\u0120\000\000\uFFFF\uF1F0\000\003\000\u00FE\000\u0100\000"+
"\u011C\000\001\uFFFF\uF1F0\000\002\uFFFF\uFFFF\000\001\000<\000\002\000"+
"\011\uFFFF\uFFFF\000\001\000<\000\002\000<\000\002\000\u009A\000\u00FB"+
"<\000\003\000=\000\u0099\000\u0111\000\000\uFFFF\uE3E0\000\003\000\u0088"+
"\000\u0104\000\u0121\000\000\uFFFF\uF1F0\000\003\000\u00FF\000\u0101\000"+
"\u011D\000\001\uFFFF\uF1F0\000\002\uFFFF\uFFFF\000\001\000<\000\002\000"+
"\011\uFFFF\uFFFF\000\001\000<\000\002\000<\000\002\000\u009A\000\u00FC"+
"\000\000\000\000\000\025\000\005\000\012\000\014\000\015\000\022\000\024"+
"\000\025\000\031\000$\000-\0001\0002\0004\0005\000\u0102\000\u0104\000"+
"\u011B\000\u0136\000\u0137\000\u0164\000\u01A5\000\001\000\000\000\005"+
"\000\025\000\031\000$\000-\0001\0002\0004\0005\000\u0103\000\u0105\000"+
"\u011C\000\u0137\000\u0138\000\u016C\000\u01AD\000\001\000\000\000\005"+
"\000\001\000\000\000\000\000\000\000\010\000\001\000\000\000\000\000\000"+
"\000<\000\001\000\032\000\001\000\000\000\002\uFFFF\uFFFF\000\001\000"+
"<\000\002\000\011\uFFFF\uFFFF\000\001\000<\000\002\000<\000\010\000\u00FD"+
"\000\u00FF\000\u0101\000\u013B\000\u0143\000\u0149\000\u014A\000\u01A7"+
"<\000\002\000\011\uFFFF\uFFFF\000\001\000<\000\002\000<\000\010\000\u00FE"+
"\000\u0100\000\u0102\000\u013C\000\u0145\000\u014B\000\u014D\000\u01AF"+
"\000\001\000\000\000\010\000\001\000\000\000\000\000\000\000\013\000\037"+
"\000\000\000\000\000\000\000\024\000\001\000\006\000\000\000\u0E10\000"+
"\015\000\010\000\013\000\017\000\030\000!\000\042\000#\000%\000(\000/"+
"\0000\0003\000\u0128\000\001\000\u0E10\000\002\uFFFF\uFFFF\000\001\000"+
"<\000\002\000\011\uFFFF\uFFFF\000\001\000<\000\002\000<\000\030\000\023"+
"\000\u0118\000\u0138\000\u0139\000\u013C\000\u013D\000\u013E\000\u0140"+
"\000\u0142\000\u0144\000\u014B\000\u014C\000\u014D\000\u014F\000\u0151"+
"\000\u0152\000\u0153\000\u0155\000\u0159\000\u015B\000\u015E\000\u015F"+
"\000\u0161\000\u0163\000\001\000\u0E10\000\002\uFFFF\uFFFF\000\001\000"+
"x\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\002\000\u0113"+
"\000\u0174\000\001\000\u0E10\000\004\000\001\000\000\000\000\000\001\000"+
"\010\uFFFF\uFFFF\000\001\000\000\000\001\000<\000\001\0007\000\001\000"+
"\u0E10\000\010\000\001\uFFFF\uFFFF\000x\000\000\000\003\000\001\uFFFF"+
"\uFFFF\000x\000\000\000<\000\001\0008\000\000\000\u1C20\000\020\000\016"+
"\000\020\000\033\000\034\000 \000&\000'\000)\000*\000+\0006\000\u0112"+
"\000\u012E\000\u0154\000\u015A\000\u0160\000\001\000\u1C20\000\003\000"+
"\001\000\000\000\000\000\000\000\011\000\001\000\000\000\000\000\000\000"+
"<\000\001\000\u00C3\000\001\000\u1C20\000\003\000\001\000\000\000<\000"+
"\000\000\010\000\030\000\000\000<\000\000\000<\000\001\000\u00CF\000\001"+
"\000\u1C20\000\003\000\017\uFFFF\uFFFA\000\000\000\000\000\011\000\017"+
"\uFFFF\uFFFA\000\000\000\000\000<\000\001\000\u00C8\000\001\000\u1C20"+
"\000\003\uFFFF\uFFFF\000\006\000\000\000\001\000\010\uFFFF\uFFFF\000\005"+
"\000\u0564\000\001\000<\000\002\000\003\000\021\000\001\000\u1C20\000"+
"\002\uFFFF\uFFFF\000\001\000\000\000\000\000\011\uFFFF\uFFFF\000\001\000"+
"\000\000\000\000<\000\001\000\u00BD\000\001\000\u1C20\000\002\uFFFF\uFFFF"+
"\000\001\000<\000\002\000\011\uFFFF\uFFFF\000\001\000<\000\002\000<\000"+
"\014\000\u00DD\000\u0119\000\u013A\000\u013F\000\u0141\000\u0145\000\u0146"+
"\000\u0148\000\u0157\000\u0158\000\u015D\000\u0162\000\001\000\u1C20\000"+
"\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000\001\000"+
"x\000\001\000<\000\002\000\u0147\000\u014E\000\001\000\u1C20\000\002\uFFFF"+
"\uFFFF\000\005\000\000\000\001\000\010\uFFFF\uFFFF\000\005\000\000\000"+
"\001\000<\000\001\000\u00B4\000\001\000\u1C20\000\010\000\017\uFFFF\uFFFF"+
"\000x\000\000\000\002\000\017\uFFFF\uFFFF\000x\000\000\000<\000\001\000"+
"\035\000\000\000\u2A30\000\023\000\007\000\011\000\026\000\027\000\036"+
"\000\037\000,\000.\000\u00B1\000\u00B2\000\u00BA\000\u00D8\000\u00E2\000"+
"\u00E4\000\u0117\000\u012F\000\u0168\000\u016C\000\u0171\000\001\000\u2A30"+
"\000\003\000\001\000\000\000\u00B4\000\001\000\011\000\001\000\000\000"+
"\u00B4\000\001\000<\000\001\000\u00B9\000\001\000\u2A30\000\002\uFFFF"+
"\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000"+
"<\000\002\000\u0150\000\u015C\000\000\000\u2BD8\000\003\000\u00E5\000"+
"\u00E6\000\u00E7\000\001\000\u3138\000\002\000\024\000\000\000\000\000"+
"\000\000\010\000\027\000\000\000\000\000\000\000<\000\001\000\u00F0\000"+
"\000\000\u3840\000\006\000\u00C6\000\u00DC\000\u0130\000\u016E\000\u0170"+
"\000\u0172\000\001\000\u3840\000\002\uFFFF\uFFFF\000\001\000\000\000\000"+
"\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\002\000\u00B6\000"+
"\u00EF\000\001\000\u3840\000\002\uFFFF\uFFFF\000\001\000<\000\000\000"+
"\011\uFFFF\uFFFF\000\001\000<\000\000\000<\000\001\000\u00BB\000\001\000"+
"\u3840\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000"+
"\001\000x\000\001\000<\000\003\000\u00FA\000\u0156\000\u0177\000\000\000"+
"\u3F48\000\001\000\u00D0\000\000\000\u4650\000\012\000\u00B8\000\u00C7"+
"\000\u00D2\000\u00E9\000\u00EE\000\u0131\000\u0169\000\u016D\000\u016F"+
"\000\u0179\000\001\000\u4650\000\002\uFFFF\uFFFF\000\001\000\000\000\000"+
"\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\001\000\u00B7\000"+
"\001\000\u4650\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF"+
"\uFFFF\000\001\000x\000\001\000<\000\001\000\u00F9\000\001\000\u4650\000"+
"\002\uFFFF\uFFFF\000\001\000\u0096\000\000\000\011\uFFFF\uFFFF\000\001"+
"\000\u0096\000\000\000<\000\001\000\u00BE\000\000\000\u4D58\000\002\000"+
"\u00C0\000\u0167\000\000\000\u50DC\000\001\000\u00D4\000\000\000\u5460"+
"\000\006\000\u00AE\000\u00C2\000\u00C4\000\u00F1\000\u0111\000\u0132\000"+
"\001\000\u5460\000\002\uFFFF\uFFFF\000\001\000\000\000\000\000\011\uFFFF"+
"\uFFFF\000\001\000\000\000\000\000<\000\001\000\u00B3\000\001\000\u5460"+
"\0000\0003\000\u0129\000\001\000\u0E10\000\002\uFFFF\uFFFF\000\001\000"+
"<\000\002\000\011\uFFFF\uFFFF\000\001\000<\000\002\000<\000 \000\023\000"+
"\u00B2\000\u0119\000\u0139\000\u013A\000\u013D\000\u013E\000\u013F\000"+
"\u0140\000\u0142\000\u0144\000\u0146\000\u014C\000\u014E\000\u014F\000"+
"\u0150\000\u0152\000\u0154\000\u0155\000\u0156\000\u0158\000\u015A\000"+
"\u015B\000\u015D\000\u015F\000\u0161\000\u0164\000\u0165\000\u0166\000"+
"\u0168\000\u0169\000\u016B\000\001\000\u0E10\000\002\uFFFF\uFFFF\000\001"+
"\000x\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\002\000"+
"\u0114\000\u017C\000\001\000\u0E10\000\004\000\001\000\000\000\000\000"+
"\001\000\010\uFFFF\uFFFF\000\001\000\000\000\001\000<\000\001\0007\000"+
"\001\000\u0E10\000\010\000\001\uFFFF\uFFFF\000x\000\000\000\003\000\001"+
"\uFFFF\uFFFF\000x\000\000\000<\000\001\0008\000\000\000\u1C20\000\020"+
"\000\016\000\020\000\033\000\034\000 \000&\000'\000)\000*\000+\0006\000"+
"\u0113\000\u012F\000\u0157\000\u0160\000\u0167\000\001\000\u1C20\000\003"+
"\000\001\000\000\000\000\000\000\000\011\000\001\000\000\000\000\000\000"+
"\000<\000\001\000\u00C4\000\001\000\u1C20\000\003\000\001\000\000\000"+
"<\000\000\000\010\000\030\000\000\000<\000\000\000<\000\001\000\u00D0"+
"\000\001\000\u1C20\000\003\000\017\uFFFF\uFFFA\000\000\000\000\000\011"+
"\000\017\uFFFF\uFFFA\000\000\000\000\000<\000\001\000\u00C9\000\001\000"+
"\u1C20\000\003\uFFFF\uFFFF\000\006\000\000\000\001\000\010\uFFFF\uFFFF"+
"\000\005\000\u0564\000\001\000<\000\002\000\003\000\021\000\001\000\u1C20"+
"\000\002\uFFFF\uFFFF\000\001\000\000\000\000\000\011\uFFFF\uFFFF\000\001"+
"\000\000\000\000\000<\000\001\000\u00BE\000\001\000\u1C20\000\002\uFFFF"+
"\uFFFF\000\001\000<\000\002\000\011\uFFFF\uFFFF\000\001\000<\000\002\000"+
"<\000\014\000\u00DE\000\u011A\000\u013B\000\u0141\000\u0143\000\u0147"+
"\000\u0148\000\u014A\000\u015C\000\u015E\000\u0163\000\u016A\000\001\000"+
"\u1C20\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000"+
"\001\000x\000\001\000<\000\002\000\u0149\000\u0151\000\001\000\u1C20\000"+
"\002\uFFFF\uFFFF\000\005\000\000\000\001\000\010\uFFFF\uFFFF\000\005\000"+
"\000\000\001\000<\000\001\000\u00B5\000\001\000\u1C20\000\010\000\017"+
"\uFFFF\uFFFF\000x\000\000\000\002\000\017\uFFFF\uFFFF\000x\000\000\000"+
"<\000\001\000\035\000\000\000\u2A30\000\023\000\007\000\011\000\026\000"+
"\027\000\036\000\037\000,\000.\000\u00B1\000\u00B3\000\u00BB\000\u00D9"+
"\000\u00E3\000\u00E5\000\u0118\000\u0130\000\u0170\000\u0174\000\u0179"+
"\000\001\000\u2A30\000\003\000\001\000\000\000\u00B4\000\001\000\011\000"+
"\001\000\000\000\u00B4\000\001\000<\000\001\000\u00BA\000\001\000\u2A30"+
"\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000\001"+
"\000x\000\001\000<\000\002\000\u00DE\000\u00DF\000\000\000\u5B68\000\002"+
"\000\u00E3\000\u016B\000\000\000\u6270\000\011\000\u00AC\000\u00BC\000"+
"\u00CD\000\u00E0\000\u00E8\000\u00F6\000\u0133\000\u016A\000\u01A6\000"+
"\001\000\u6270\000\002\uFFFF\uFFFF\000\001\000\000\000\000\000\010\uFFFF"+
"\uFFFF\000\001\000\000\000\000\000<\000\001\000\u00CB\000\001\000\u6270"+
"\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000\001"+
"\000x\000\001\000<\000\001\000\u00D5\000\000\000\u7080\000\010\000\u00AB"+
"\000\u00BF\000\u00D6\000\u00D7\000\u00EC\000\u00F3\000\u010E\000\u0134"+
"\000\001\000\u7080\000\003\000\012\uFFFF\uFFFF\000\000\000\000\000\010"+
"\000\013\uFFFF\uFFFF\000\000\000\000\000<\000\007\000\u00C1\000\u00C9"+
"\000\u00D3\000\u00D9\000\u00EB\000\u00F5\000\u0116\000\001\000\u7080\000"+
"\005\000\036\000\000\000\000\000\000\000\010\000\036\000\000\000\000\000"+
"\000\000<\000\001\000\u00ED\000\001\000\u7080\000\002\000\026\000\000"+
"\000\000\000\000\000\010\000\025\000\000\000\000\000\000\000<\000\001"+
"\000\u00DB\000\001\000\u7080\000\002\uFFFF\uFFFF\000\001\000\000\000\000"+
"\000\010\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\001\000\u00F4\000"+
"\001\000\u7080\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF"+
"\uFFFF\000\001\000x\000\001\000<\000\001\000\u00CC\000\001\000\u7080\000"+
"\004\000\010\uFFFF\uFFFF\000\u00D2\000\000\000\011\000\020\uFFFF\uFFFF"+
"\000\u00D2\000\000\000<\000\001\000\u00CA\000\000\000\u7E90\000\007\000"+
"\u00C5\000\u00CE\000\u00E1\000\u00F2\000\u0135\000\u0173\000\u0197\000"+
"\001\000\u7E90\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF"+
"\uFFFF\000\001\000x\000\001\000<\000\001\000\u00F8\000\001\000\u7E90\000"+
"\004\uFFFF\uFFF2\uFFFF\uFFFF\000\000\000\000\000\011\uFFFF\uFFF2\uFFFF"+
"\uFFFF\000\000\000\000\000<\000\001\000\u00EA\000\001\000\u8598\000\011"+
"\000\003\000\000\000x\000\000\000\002\uFFFF\uFFFF\000\001\000x\000\000"+
"\000<\000\002\000\000\000\u0109\000\001\000\u8598\000\011\uFFFF\uFFFF"+
"\000\001\000x\000\001\000\002\uFFFF\uFFFF\000\001\000x\000\001\000<\000"+
"\002\000\u0106\000\u0108\000\000\000\u8CA0\000\007\000\u00AD\000\u0129"+
"\000\u0189\000\u019A\000\u019C\000\u01A0\000\u01A3\000\001\000\u8CA0\000"+
"\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000\001\000"+
"x\000\001\000<\000\001\000\u00F7\000\001\000\u8CA0\000\011\uFFFF\uFFFF"+
"\000\001\000x\000\001\000\002\uFFFF\uFFFF\000\001\000x\000\001\000<\000"+
"\003\000\001\000\u010D\000\u010F\000\001\000\u8CA0\000\011\uFFFF\uFFFF"+
"\000\001\000x\000\001\000\002\000\001\uFFFF\uFFFF\000x\000\001\000<\000"+
"\002\000\u0107\000\u010B\000\001\000\u8CA0\000\011\000\001\uFFFF\uFFFF"+
"\000x\000\001\000\002\uFFFF\uFFFF\000\001\000x\000\001\000<\000\001\000"+
"\u010A\000\001\000\u93A8\000\011\uFFFF\uFFFF\000\001\000x\000\001\000"+
"\002\uFFFF\uFFFF\000\001\000x\000\001\000\036\000\001\000\u010C\000\000"+
"\000\u9AB0\000\005\000\u012A\000\u0188\000\u018D\000\u0199\000\u01A4\000"+
"\001\000\u9AB0\000\013\000\001\000\000\000x\000\001\000\002\000\002\000"+
"\000\000x\000\001\000<\000\001\000\u0195\000\001\000\u9AB0\000\002\uFFFF"+
"\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000"+
"<\000\001\000\u00DA\000\001\000\u9AB0\000\011\000\027\uFFFF\uFFFF\000"+
"\000\000\000\000\000\000\027\uFFFF\uFFFF\000\000\000\000\000<\000\001"+
"\000\u0181\000\000\000\uA1B8\000\001\000\u0194\000\000\000\uA8C0\000\010"+
"\000\u012B\000\u0185\000\u018E\000\u018F\000\u0192\000\u019E\000\u01A1"+
"\000\u01A2\000\001\000\uA8C0\000\002\uFFFF\uFFFF\000\001\000x\000\001"+
"\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\002\000\u00B5\000\u00D1"+
"\000\001\000\uA8C0\000\012\000\001\uFFFF\uFFFF\000x\000\000\000\001\uFFFF"+
"\uFFFF\000\001\000\u00B4\000\000\000<\000\001\000\u0184\000\001\000\uA8C0"+
"\000\011\000\001\uFFFF\uFFFF\000x\000\001\000\002\000\017\uFFFF\uFFFF"+
"\000x\000\001\000<\000\003\000\u00AF\000\u0178\000\u017E\000\001\000\uB34C"+
"\000\011\000\001\uFFFF\uFFFF\000\u00A5\000\001\000\002\000\017\uFFFF\uFFFF"+
"\000\u00A5\000\001\000<\000\001\000\u017F\000\000\000\uB6D0\000\002\000"+
"\u012C\000\u0182\000\001\000\uB6D0\000\012\000\004\000\000\000x\000\001"+
"\000\000\000\033\000\000\000x\000\001\000<\000\001\000\u019F\000\000\000"+
"\uC4E0\000\002\000\u012D\000\u018C"
"\000x\000\001\000<\000\002\000\u0153\000\u0162\000\000\000\u2BD8\000\003"+
"\000\u00E6\000\u00E7\000\u00E8\000\001\000\u3138\000\002\000\024\000\000"+
"\000\000\000\000\000\010\000\027\000\000\000\000\000\000\000<\000\001"+
"\000\u00F1\000\000\000\u3840\000\006\000\u00C7\000\u00DD\000\u0131\000"+
"\u0176\000\u0178\000\u017A\000\001\000\u3840\000\002\uFFFF\uFFFF\000\001"+
"\000\000\000\000\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000<\000"+
"\002\000\u00B7\000\u00F0\000\001\000\u3840\000\002\uFFFF\uFFFF\000\001"+
"\000<\000\000\000\011\uFFFF\uFFFF\000\001\000<\000\000\000<\000\001\000"+
"\u00BC\000\001\000\u3840\000\002\uFFFF\uFFFF\000\001\000x\000\001\000"+
"\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\003\000\u00FB\000\u0159"+
"\000\u017F\000\000\000\u3F48\000\001\000\u00D1\000\000\000\u4650\000\012"+
"\000\u00B9\000\u00C8\000\u00D3\000\u00EA\000\u00EF\000\u0132\000\u0171"+
"\000\u0175\000\u0177\000\u0181\000\001\000\u4650\000\002\uFFFF\uFFFF\000"+
"\001\000\000\000\000\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000<"+
"\000\001\000\u00B8\000\001\000\u4650\000\002\uFFFF\uFFFF\000\001\000x"+
"\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\001\000\u00FA"+
"\000\001\000\u4650\000\002\uFFFF\uFFFF\000\001\000\u0096\000\000\000\011"+
"\uFFFF\uFFFF\000\001\000\u0096\000\000\000<\000\001\000\u00BF\000\000"+
"\000\u4D58\000\002\000\u00C1\000\u016F\000\000\000\u50DC\000\001\000\u00D5"+
"\000\000\000\u5460\000\006\000\u00AE\000\u00C3\000\u00C5\000\u00F2\000"+
"\u0112\000\u0133\000\001\000\u5460\000\002\uFFFF\uFFFF\000\001\000\000"+
"\000\000\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\001\000"+
"\u00B4\000\001\000\u5460\000\002\uFFFF\uFFFF\000\001\000x\000\001\000"+
"\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\002\000\u00DF\000\u00E0"+
"\000\000\000\u5B68\000\002\000\u00E4\000\u0173\000\000\000\u6270\000\011"+
"\000\u00AC\000\u00BD\000\u00CE\000\u00E1\000\u00E9\000\u00F7\000\u0134"+
"\000\u0172\000\u01AE\000\001\000\u6270\000\002\uFFFF\uFFFF\000\001\000"+
"\000\000\000\000\010\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\001"+
"\000\u00CC\000\001\000\u6270\000\002\uFFFF\uFFFF\000\001\000x\000\001"+
"\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\001\000\u00D6\000\000"+
"\000\u7080\000\010\000\u00AB\000\u00C0\000\u00D7\000\u00D8\000\u00ED\000"+
"\u00F4\000\u010F\000\u0135\000\001\000\u7080\000\003\000\012\uFFFF\uFFFF"+
"\000\000\000\000\000\010\000\013\uFFFF\uFFFF\000\000\000\000\000<\000"+
"\007\000\u00C2\000\u00CA\000\u00D4\000\u00DA\000\u00EC\000\u00F6\000\u0117"+
"\000\001\000\u7080\000\005\000\036\000\000\000\000\000\000\000\010\000"+
"\036\000\000\000\000\000\000\000<\000\001\000\u00EE\000\001\000\u7080"+
"\000\002\000\026\000\000\000\000\000\000\000\010\000\025\000\000\000\000"+
"\000\000\000<\000\001\000\u00DC\000\001\000\u7080\000\002\uFFFF\uFFFF"+
"\000\001\000\000\000\000\000\010\uFFFF\uFFFF\000\001\000\000\000\000\000"+
"<\000\001\000\u00F5\000\001\000\u7080\000\002\uFFFF\uFFFF\000\001\000"+
"x\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\001\000\u00CD"+
"\000\001\000\u7080\000\004\000\010\uFFFF\uFFFF\000\u00D2\000\000\000\011"+
"\000\020\uFFFF\uFFFF\000\u00D2\000\000\000<\000\001\000\u00CB\000\000"+
"\000\u7E90\000\007\000\u00C6\000\u00CF\000\u00E2\000\u00F3\000\u0136\000"+
"\u017B\000\u019F\000\001\000\u7E90\000\002\uFFFF\uFFFF\000\001\000x\000"+
"\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\001\000\u00F9\000"+
"\001\000\u7E90\000\004\uFFFF\uFFF2\uFFFF\uFFFF\000\000\000\000\000\011"+
"\uFFFF\uFFF2\uFFFF\uFFFF\000\000\000\000\000<\000\001\000\u00EB\000\001"+
"\000\u8598\000\011\000\003\000\000\000x\000\000\000\002\uFFFF\uFFFF\000"+
"\001\000x\000\000\000<\000\002\000\000\000\u010A\000\001\000\u8598\000"+
"\011\uFFFF\uFFFF\000\001\000x\000\001\000\002\uFFFF\uFFFF\000\001\000"+
"x\000\001\000<\000\002\000\u0107\000\u0109\000\000\000\u8CA0\000\007\000"+
"\u00AD\000\u012A\000\u0191\000\u01A2\000\u01A4\000\u01A8\000\u01AB\000"+
"\001\000\u8CA0\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF"+
"\uFFFF\000\001\000x\000\001\000<\000\001\000\u00F8\000\001\000\u8CA0\000"+
"\011\uFFFF\uFFFF\000\001\000x\000\001\000\002\uFFFF\uFFFF\000\001\000"+
"x\000\001\000<\000\003\000\001\000\u010E\000\u0110\000\001\000\u8CA0\000"+
"\011\uFFFF\uFFFF\000\001\000x\000\001\000\002\000\001\uFFFF\uFFFF\000"+
"x\000\001\000<\000\002\000\u0108\000\u010C\000\001\000\u8CA0\000\011\000"+
"\001\uFFFF\uFFFF\000x\000\001\000\002\uFFFF\uFFFF\000\001\000x\000\001"+
"\000<\000\001\000\u010B\000\001\000\u93A8\000\011\uFFFF\uFFFF\000\001"+
"\000x\000\001\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\036\000\001"+
"\000\u010D\000\000\000\u9AB0\000\005\000\u012B\000\u0190\000\u0195\000"+
"\u01A1\000\u01AC\000\001\000\u9AB0\000\013\000\001\000\000\000x\000\001"+
"\000\002\000\002\000\000\000x\000\001\000<\000\001\000\u019D\000\001\000"+
"\u9AB0\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000"+
"\001\000x\000\001\000<\000\001\000\u00DB\000\001\000\u9AB0\000\011\000"+
"\027\uFFFF\uFFFF\000\000\000\000\000\000\000\027\uFFFF\uFFFF\000\000\000"+
"\000\000<\000\001\000\u0189\000\000\000\uA1B8\000\001\000\u019C\000\000"+
"\000\uA8C0\000\010\000\u012C\000\u018D\000\u0196\000\u0197\000\u019A\000"+
"\u01A6\000\u01A9\000\u01AA\000\001\000\uA8C0\000\002\uFFFF\uFFFF\000\001"+
"\000x\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\002\000"+
"\u00B6\000\u00D2\000\001\000\uA8C0\000\012\000\001\uFFFF\uFFFF\000x\000"+
"\000\000\001\uFFFF\uFFFF\000\001\000\u00B4\000\000\000<\000\001\000\u018C"+
"\000\001\000\uA8C0\000\011\000\001\uFFFF\uFFFF\000x\000\001\000\002\000"+
"\017\uFFFF\uFFFF\000x\000\001\000<\000\003\000\u00AF\000\u0180\000\u0186"+
"\000\001\000\uB34C\000\011\000\001\uFFFF\uFFFF\000\u00A5\000\001\000\002"+
"\000\017\uFFFF\uFFFF\000\u00A5\000\001\000<\000\001\000\u0187\000\000"+
"\000\uB6D0\000\002\000\u012D\000\u018A\000\001\000\uB6D0\000\012\000\004"+
"\000\000\000x\000\001\000\000\000\033\000\000\000x\000\001\000<\000\001"+
"\000\u01A7\000\000\000\uC4E0\000\002\000\u012E\000\u0194"
;
/**
@ -862,15 +931,15 @@ class TimeZoneData {
* >> GENERATED DATA: DO NOT EDIT <<
*/
static final String INDEX_BY_NAME_ARRAY_RLE =
"\000\u01A8\000\u0584\000\u05BD\000\u020E\000\u0369\000=\000\u0279\000"+
"\u02B6\000\u03D0\000\u02C5\000\u03D0\000\u0279\000\u02C5\000\u0279\000"+
"\u0279\000\u0329\000\u02C5\000\u0329\000\u0369\000\u0279\000\u02D5\000"+
"\u0279\000\u0279\000\u03D0\000\u03D0\000\u02C5\000\u0279\000\u0291\000"+
"\u0329\000\u0329\000\u03C1\000\u03D0\000\u03D0\000\u0329\000\u02C5\000"+
"\u02C5\000\u02C5\000\u0279\000\u02C5\000\u0329\000\u0329\000\u02C5\000"+
"\u0329\000\u0329\000\u0329\000\u03D0\000\u0279\000\u03D0\000\u02C5\000"+
"\u02C5\000\u0279\000\u0279\000\u02C5\000\u0279\000\u0279\000\u0329\000"+
"\u030B\000\u031A\000\026\000=\000\u0175\000\u0175\000\u024C\000\u0175"+
"\000\u01B0\000\u058C\000\u05C5\000\u020E\000\u0371\000=\000\u0279\000"+
"\u02B6\000\u03D8\000\u02C5\000\u03D8\000\u0279\000\u02C5\000\u0279\000"+
"\u0279\000\u0331\000\u02C5\000\u0331\000\u0371\000\u0279\000\u02D5\000"+
"\u0279\000\u0279\000\u03D8\000\u03D8\000\u02C5\000\u0279\000\u0291\000"+
"\u0331\000\u0331\000\u03C9\000\u03D8\000\u03D8\000\u0331\000\u02C5\000"+
"\u02C5\000\u02C5\000\u0279\000\u02C5\000\u0331\000\u0331\000\u02C5\000"+
"\u0331\000\u0331\000\u0331\000\u03D8\000\u0279\000\u03D8\000\u02C5\000"+
"\u02C5\000\u0279\000\u0279\000\u02C5\000\u0279\000\u0279\000\u0331\000"+
"\u0313\000\u0322\000\026\000=\000\u0175\000\u0175\000\u024C\000\u0175"+
"\000\u01C1\000\u01B2\000\u020E\000\u00B5\000\u0175\000\u0166\000q\000"+
"\u020E\000\u008F\000\u008F\000\u0175\000\u020E\000\u020E\000\u0101\000"+
"\u008F\000q\000\u020E\000\u00C4\000\u01D0\000\u0175\000U\000i\000q\000"+
@ -884,42 +953,43 @@ class TimeZoneData {
"i\000\u0131\000\u0175\000\u0101\000\u0175\000\u0175\000\u008F\000\u0101"+
"\000\u020E\000\u0087\000\u020E\000\u01DF\000\u0175\000\u024C\000\u0269"+
"\000\u01FE\000\uA5A5\000\004\000\u0175\000\u0087\000\u00E2\000\u01A0\000"+
"\u0140\000U\000\u0175\000U\000U\000\u00A6\000=\000q\000\u04F1\000\u04C7"+
"\000\u05A4\000\u049A\000\u065F\000\u01DF\000\u03D0\000\u03D0\000\u04A3"+
"\000\u03B2\000\u0640\000\u0423\000\u0464\000\u0457\000\u03E6\000\u03D0"+
"\000\u0433\000\u04C7\000\u0379\000\u0482\000\u04F1\000\u0491\000\u04FC"+
"\000\u049A\000\u033C\000\u049A\000\u055C\000\u041A\000\u0457\000\u035A"+
"\000\u04FC\000\u054D\000\u04D3\000\u053E\000\u04C7\000\u055C\000\u034B"+
"\000\u0453\000\u0640\000\u0457\000\u04FC\000\u0496\000\u04E2\000\u04F1"+
"\000\u04F1\000\u03D0\000\u04FC\000\u0613\000\u0520\000\u041A\000\u0388"+
"\000\u04B2\000\u04B2\000\u04C7\000\u055C\000\u03D0\000\u04C2\000\u03D0"+
"\000\u0405\000\u0405\000\u0405\000\u04C7\000\u0457\000\u0575\000\u04FC"+
"\000\u04F1\000\u0511\000\u0457\000\u0423\000\u040B\000\u049A\000\u055C"+
"\000\u04F1\000\u052F\000\u04FC\000\u04C7\000\u05AE\000\u0566\000\u0473"+
"\000\u0442\000\u0269\000\u01A0\000\u02A0\000\u0263\000\u02A0\000\u0263"+
"\000\u02A0\000\u0279\000\u025D\000\u0279\000\u01EF\000\u0594\000\u05CE"+
"\000\u0594\000\u0584\000\u05DE\000\u05CE\000\u05ED\000\u05BD\000\u04F1"+
"\000\u05BD\000\u024C\000\u049A\000\u0329\000\u02FB\000\u01FE\000\u008F"+
"\000\u04FC\000\u03D0\000\u02D5\000\u0388\000\u0140\000\u0279\000\u0263"+
"\000\015\000\004\000\000\000\u025D\000\u020E\000\u0175\000\u0101\000\u0087"+
"\000i\000P\0008\000\u02C5\000\u05A4\000\u05FC\000\u0635\000\u067F\000"+
"\u0693\000\u0329\000\u03D0\000\u041A\000\u0457\000\u049A\000\u04C7\000"+
"\u04F1\000\u055C\000\u0279\000\u0279\000\u02D5\000\u02D5\000\u0388\000"+
"\u02A0\000\u02D5\000\u02D5\000\u02D5\000\u0388\000\u02D5\000\u0388\000"+
"\u02D5\000\u02A0\000\u02D5\000\u0388\000\u0388\000\u03A2\000\u0388\000"+
"\u02A0\000\u02A0\000\u02D5\000\u02D5\000\u02D5\000\u03A2\000\u02D5\000"+
"\u03F5\000\u02D5\000\u02D5\000\u02D5\000\u0329\000\u02D5\000\u0442\000"+
"\u0388\000\u0388\000\u02D5\000\u0329\000\u02D5\000\u03F5\000\u0388\000"+
"\u02D5\000\u02D5\000\u0329\000\u02D5\000\u0388\000\u02D5\000\u0279\000"+
"\015\000\u0101\000\u0491\000\u03D0\000\u0457\000\u04C7\000\u04C2\000\u03D0"+
"\000\u0457\000\u041A\000\u0457\000\u041A\000\u03D0\000\u041A\000\u055C"+
"\000\u02FB\000\004\000q\000\u0442\000\u065F\000\u0457\000i\000\u0175\000"+
"U\000\004\000\u065F\000\u0670\000\u00F2\000\u0622\000\u067F\000\015\000"+
"\u0650\000\u0635\000\u0087\0008\000\u05FC\000\u05A4\000\015\000\015\000"+
"\u0693\000\u05FC\000\u0635\000\u0635\0004\000\004\000\u0635\000\004\000"+
"\u0631\000\u0604\000\004\000\u055C\000P\000\u05FC\000\u05A4\000%\000\u05A4"+
"\000\015\000\u0635\000\u0684\000\u05A4\000\u0635\000\u0635\000\u05A4\000"+
"\u05FC\000\u0279\000\u04C7\000\u02A0"
"\u0140\000U\000\u0175\000U\000U\000\u00A6\000=\000q\000\u04F9\000\u04CF"+
"\000\u05AC\000\u04A2\000\u0667\000\u01DF\000\u03D8\000\u02D5\000\u03D8"+
"\000\u04AB\000\u03BA\000\u0648\000\u042B\000\u046C\000\u045F\000\u03EE"+
"\000\u03D8\000\u043B\000\u04CF\000\u0381\000\u048A\000\u04F9\000\u0499"+
"\000\u0504\000\u04A2\000\u0344\000\u04A2\000\u0564\000\u0422\000\u045F"+
"\000\u0362\000\u0504\000\u0555\000\u04DB\000\u0546\000\u04CF\000\u0564"+
"\000\u0353\000\u045B\000\u0648\000\u045F\000\u0504\000\u049E\000\u04EA"+
"\000\u04F9\000\u04F9\000\u03D8\000\u0504\000\u061B\000\u0528\000\u0422"+
"\000\u0390\000\u04BA\000\u04BA\000\u04CF\000\u0564\000\u03D8\000\u04CA"+
"\000\u03D8\000\u040D\000\u040D\000\u040D\000\u04CF\000\u045F\000\u057D"+
"\000\u0504\000\u04F9\000\u0519\000\u045F\000\u042B\000\u0413\000\u04A2"+
"\000\u0564\000\u04F9\000\u0537\000\u0504\000\u04CF\000\u05B6\000\u056E"+
"\000\u047B\000\u044A\000\u0269\000\u01A0\000\u02A0\000\u0263\000\u02A0"+
"\000\u0263\000\u02A0\000\u0279\000\u025D\000\u0279\000\u01EF\000\u059C"+
"\000\u05D6\000\u059C\000\u058C\000\u05E6\000\u05D6\000\u05F5\000\u05C5"+
"\000\u04F9\000\u05C5\000\u024C\000\u04A2\000\u0331\000\u0303\000\u01FE"+
"\000\u008F\000\u0504\000\u03D8\000\u02D5\000\u0390\000\u0140\000\u0279"+
"\000\u0263\000\015\000\004\000\000\000\u025D\000\u020E\000\u0175\000\u0101"+
"\000\u0087\000i\000P\0008\000\u02C5\000\u05AC\000\u0604\000\u063D\000"+
"\u0687\000\u069B\000\u0331\000\u03D8\000\u0422\000\u045F\000\u04A2\000"+
"\u04CF\000\u04F9\000\u0564\000\u0279\000\u0279\000\u02D5\000\u02D5\000"+
"\u0390\000\u02A0\000\uA5A5\000\004\000\u02D5\000\u0390\000\u02D5\000\u0390"+
"\000\u02D5\000\u02A0\000\u02D5\000\u0390\000\u0390\000\u03AA\000\u0390"+
"\000\u02A0\000\u02D5\000\u02A0\000\u02D5\000\u02D5\000\u02D5\000\u03AA"+
"\000\u02D5\000\u03FD\000\u02D5\000\u02D5\000\u02D5\000\u0331\000\u02D5"+
"\000\u044A\000\u02D5\000\u02D5\000\u0390\000\u02D5\000\u0390\000\u02D5"+
"\000\u0331\000\u02D5\000\u03FD\000\u0390\000\u02D5\000\u02D5\000\u02D5"+
"\000\u0331\000\u02D5\000\u02D5\000\u0390\000\u02D5\000\u0279\000\015\000"+
"\u0101\000\u0499\000\u03D8\000\u045F\000\u04CF\000\u04CA\000\u03D8\000"+
"\u045F\000\u0422\000\u045F\000\u0422\000\u03D8\000\u0422\000\u0564\000"+
"\u0303\000\004\000q\000\u044A\000\u0667\000\u045F\000i\000\u0175\000U"+
"\000\004\000\u0667\000\u0678\000\u00F2\000\u062A\000\u0687\000\015\000"+
"\u0658\000\u063D\000\u0087\0008\000\u0604\000\u05AC\000\015\000\015\000"+
"\u069B\000\u0604\000\u063D\000\u063D\0004\000\004\000\u063D\000\004\000"+
"\u0639\000\u060C\000\004\000\u0564\000P\000\u0604\000\u05AC\000%\000\u05AC"+
"\000\015\000\u063D\000\u068C\000\u05AC\000\u063D\000\u063D\000\u05AC\000"+
"\u0604\000\u0279\000\u04CF\000\u02A0"
;
/**
@ -928,74 +998,194 @@ class TimeZoneData {
* >> GENERATED DATA: DO NOT EDIT <<
*/
static final String INDEX_BY_OFFSET_RLE =
"\000\u021D\uFFFF\u5740\000\u011F\000\001\000\u011F\uFFFF\u6550\000\u017D"+
"\000\006\000\u011E\000\u0175\000\u017D\000\u0191\000\u0193\000\u0196\uFFFF"+
"\u7360\000\u018A\000\010\0009\000\u011D\000\u0165\000\u0183\000\u018A"+
"\000\u018B\000\u019B\000\u019D\uFFFF\u7A68\000\u0190\000\001\000\u0190"+
"\uFFFF\u8170\000:\000\007\000\004\000:\000p\000\u0087\000\u00A9\000\u0127"+
"\000\u0187\uFFFF\u8F80\000t\000\010\000S\000t\000\u00A4\000\u00A6\000"+
"\u00A7\000\u0126\000\u017C\000\u0198\uFFFF\u9D90\000U\000\015\000E\000"+
"N\000T\000U\000X\000g\000l\000z\000\u008C\000\u00AA\000\u0125\000\u0176"+
"\000\u017A\uFFFF\uABA0\000M\000\025\000B\000G\000H\000M\000P\000Z\000"+
"\000\u0225\uFFFF\u5740\000\u0120\000\001\000\u0120\uFFFF\u6550\000\u0185"+
"\000\006\000\u011F\000\u017D\000\u0185\000\u0199\000\u019B\000\u019E\uFFFF"+
"\u7360\000\u0192\000\010\0009\000\u011E\000\u016D\000\u018B\000\u0192"+
"\000\u0193\000\u01A3\000\u01A5\uFFFF\u7A68\000\u0198\000\001\000\u0198"+
"\uFFFF\u8170\000:\000\007\000\004\000:\000p\000\u0087\000\u00A9\000\u0128"+
"\000\u018F\uFFFF\u8F80\000t\000\010\000S\000t\000\u00A4\000\u00A6\000"+
"\u00A7\000\u0127\000\u0184\000\u01A0\uFFFF\u9D90\000U\000\015\000E\000"+
"N\000T\000U\000X\000g\000l\000z\000\u008C\000\u00AA\000\u0126\000\u017E"+
"\000\u0182\uFFFF\uABA0\000M\000\025\000B\000G\000H\000M\000P\000Z\000"+
"b\000w\000|\000}\000~\000\u0080\000\u0092\000\u0095\000\u00A0\000\u00A1"+
"\000\u00A8\000\u0115\000\u0124\000\u0180\000\u0186\uFFFF\uB9B0\000k\000"+
"\000\u00A8\000\u0116\000\u0125\000\u0188\000\u018E\uFFFF\uB9B0\000k\000"+
"\035\000D\000L\000V\000Y\000_\000c\000f\000h\000i\000j\000k\000m\000n"+
"\000q\000s\000u\000\u0082\000\u0084\000\u0085\000\u0086\000\u0089\000"+
"\u008A\000\u008D\000\u008F\000\u0093\000\u00A3\000\u011A\000\u0123\000"+
"\u0166\uFFFF\uC7C0\000\u0091\000$\000;\000<\000>\000?\000@\000C\000I\000"+
"\u008A\000\u008D\000\u008F\000\u0093\000\u00A3\000\u011B\000\u0124\000"+
"\u016E\uFFFF\uC7C0\000\u0091\000$\000;\000<\000>\000?\000@\000C\000I\000"+
"Q\000R\000W\000\134\000^\000`\000a\000d\000e\000r\000x\000y\000\u0083"+
"\000\u008E\000\u0090\000\u0091\000\u0097\000\u0098\000\u009C\000\u009D"+
"\000\u009E\000\u009F\000\u00A2\000\u00A5\000\u00B0\000\u00FC\000\u0105"+
"\000\u0122\000\u017B\uFFFF\uCEC8\000\u009B\000\002\000\u009B\000\u0114"+
"\000\u009E\000\u009F\000\u00A2\000\u00A5\000\u00B0\000\u00FD\000\u0106"+
"\000\u0123\000\u0183\uFFFF\uCEC8\000\u009B\000\002\000\u009B\000\u0115"+
"\uFFFF\uD5D0\000F\000\024\000\002\000=\000A\000F\000J\000K\000O\000[\000"+
"]\000o\000v\000{\000\u007F\000\u0081\000\u008B\000\u0094\000\u0096\000"+
"\u0099\000\u0110\000\u0121\uFFFF\uE3E0\000\u0088\000\003\000\u0088\000"+
"\u0103\000\u0120\uFFFF\uF1F0\000\u00FB\000\005\000\u009A\000\u00FB\000"+
"\u00FE\000\u0100\000\u011C\000\000\000\u0164\000\037\000\005\000\006\000"+
"\u0099\000\u0111\000\u0122\uFFFF\uE3E0\000\u0088\000\003\000\u0088\000"+
"\u0104\000\u0121\uFFFF\uF1F0\000\u00FC\000\005\000\u009A\000\u00FC\000"+
"\u00FF\000\u0101\000\u011D\000\000\000\u016C\000\037\000\005\000\006\000"+
"\012\000\014\000\015\000\022\000\024\000\025\000\031\000\032\000$\000"+
"-\0001\0002\0004\0005\000\u00FD\000\u00FF\000\u0101\000\u0102\000\u0104"+
"\000\u011B\000\u0136\000\u0137\000\u013B\000\u0143\000\u0149\000\u014A"+
"\000\u0164\000\u01A5\000\u01A7\000\u0E10\000\u0152\000)\000\010\000\013"+
"-\0001\0002\0004\0005\000\u00FE\000\u0100\000\u0102\000\u0103\000\u0105"+
"\000\u011C\000\u0137\000\u0138\000\u013C\000\u0145\000\u014B\000\u014D"+
"\000\u016C\000\u01AD\000\u01AF\000\u0E10\000\u0155\0001\000\010\000\013"+
"\000\017\000\023\000\030\000!\000\042\000#\000%\000(\000/\0000\0003\000"+
"7\0008\000\u0113\000\u0118\000\u0128\000\u0138\000\u0139\000\u013C\000"+
"\u013D\000\u013E\000\u0140\000\u0142\000\u0144\000\u014B\000\u014C\000"+
"\u014D\000\u014F\000\u0151\000\u0152\000\u0153\000\u0155\000\u0159\000"+
"\u015B\000\u015E\000\u015F\000\u0161\000\u0163\000\u0174\000\u1C20\000"+
"\021\000&\000\003\000\016\000\020\000\021\000\033\000\034\000\035\000"+
" \000&\000'\000)\000*\000+\0006\000\u00B4\000\u00BD\000\u00C3\000\u00C8"+
"\000\u00CF\000\u00DD\000\u0112\000\u0119\000\u012E\000\u013A\000\u013F"+
"\000\u0141\000\u0145\000\u0146\000\u0147\000\u0148\000\u014E\000\u0154"+
"\000\u0157\000\u0158\000\u015A\000\u015D\000\u0160\000\u0162\000\u2A30"+
"\000\007\000\026\000\007\000\011\000\026\000\027\000\036\000\037\000,"+
"\000.\000\u00B1\000\u00B2\000\u00B9\000\u00BA\000\u00D8\000\u00E2\000"+
"\u00E4\000\u0117\000\u012F\000\u0150\000\u015C\000\u0168\000\u016C\000"+
"\u0171\000\u2BD8\000\u00E7\000\003\000\u00E5\000\u00E6\000\u00E7\000\u3138"+
"\000\u00F0\000\001\000\u00F0\000\u3840\000\u00FA\000\014\000\u00B6\000"+
"\u00BB\000\u00C6\000\u00DC\000\u00EF\000\u00FA\000\u0130\000\u0156\000"+
"\u016E\000\u0170\000\u0172\000\u0177\000\u3F48\000\u00D0\000\001\000\u00D0"+
"\000\u4650\000\u00D2\000\015\000\u00B7\000\u00B8\000\u00BE\000\u00C7\000"+
"\u00D2\000\u00E9\000\u00EE\000\u00F9\000\u0131\000\u0169\000\u016D\000"+
"\u016F\000\u0179\000\u4D58\000\u00C0\000\002\000\u00C0\000\u0167\000\u50DC"+
"\000\u00D4\000\001\000\u00D4\000\u5460\000\u00C4\000\011\000\u00AE\000"+
"\u00B3\000\u00C2\000\u00C4\000\u00DE\000\u00DF\000\u00F1\000\u0111\000"+
"\u0132\000\u5B68\000\u00E3\000\002\000\u00E3\000\u016B\000\u6270\000\u00E8"+
"\000\013\000\u00AC\000\u00BC\000\u00CB\000\u00CD\000\u00D5\000\u00E0\000"+
"\u00E8\000\u00F6\000\u0133\000\u016A\000\u01A6\000\u7080\000\u00EB\000"+
"\024\000\u00AB\000\u00BF\000\u00C1\000\u00C9\000\u00CA\000\u00CC\000\u00D3"+
"\000\u00D6\000\u00D7\000\u00D9\000\u00DB\000\u00EB\000\u00EC\000\u00ED"+
"\000\u00F3\000\u00F4\000\u00F5\000\u010E\000\u0116\000\u0134\000\u7E90"+
"\000\u00F2\000\011\000\u00C5\000\u00CE\000\u00E1\000\u00EA\000\u00F2\000"+
"\u00F8\000\u0135\000\u0173\000\u0197\000\u8598\000\u0109\000\004\000\000"+
"\000\u0106\000\u0108\000\u0109\000\u8CA0\000\u010F\000\016\000\001\000"+
"\u00AD\000\u00F7\000\u0107\000\u010A\000\u010B\000\u010D\000\u010F\000"+
"\u0129\000\u0189\000\u019A\000\u019C\000\u01A0\000\u01A3\000\u93A8\000"+
"\u010C\000\001\000\u010C\000\u9AB0\000\u0188\000\010\000\u00DA\000\u012A"+
"\000\u0181\000\u0188\000\u018D\000\u0195\000\u0199\000\u01A4\000\uA1B8"+
"\000\u0194\000\001\000\u0194\000\uA8C0\000\u017E\000\016\000\u00AF\000"+
"\u00B5\000\u00D1\000\u012B\000\u0178\000\u017E\000\u0184\000\u0185\000"+
"\u018E\000\u018F\000\u0192\000\u019E\000\u01A1\000\u01A2\000\uB34C\000"+
"\u017F\000\001\000\u017F\000\uB6D0\000\u0182\000\003\000\u012C\000\u0182"+
"\000\u019F\000\uC4E0\000\u018C\000\002\000\u012D\000\u018C"
"7\0008\000\u00B2\000\u0114\000\u0119\000\u0129\000\u0139\000\u013A\000"+
"\u013D\000\u013E\000\u013F\000\u0140\000\u0142\000\u0144\000\u0146\000"+
"\u014C\000\u014E\000\u014F\000\u0150\000\u0152\000\u0154\000\u0155\000"+
"\u0156\000\u0158\000\u015A\000\u015B\000\u015D\000\u015F\000\u0161\000"+
"\u0164\000\u0165\000\u0166\000\u0168\000\u0169\000\u016B\000\u017C\000"+
"\u1C20\000\021\000&\000\003\000\016\000\020\000\021\000\033\000\034\000"+
"\035\000 \000&\000'\000)\000*\000+\0006\000\u00B5\000\u00BE\000\u00C4"+
"\000\u00C9\000\u00D0\000\u00DE\000\u0113\000\u011A\000\u012F\000\u013B"+
"\000\u0141\000\u0143\000\u0147\000\u0148\000\u0149\000\u014A\000\u0151"+
"\000\u0157\000\u015C\000\u015E\000\u0160\000\u0163\000\u0167\000\u016A"+
"\000\u2A30\000\007\000\026\000\007\000\011\000\026\000\027\000\036\000"+
"\037\000,\000.\000\u00B1\000\u00B3\000\u00BA\000\u00BB\000\u00D9\000\u00E3"+
"\000\u00E5\000\u0118\000\u0130\000\u0153\000\u0162\000\u0170\000\u0174"+
"\000\u0179\000\u2BD8\000\u00E8\000\003\000\u00E6\000\u00E7\000\u00E8\000"+
"\u3138\000\u00F1\000\001\000\u00F1\000\u3840\000\u00FB\000\014\000\u00B7"+
"\000\u00BC\000\u00C7\000\u00DD\000\u00F0\000\u00FB\000\u0131\000\u0159"+
"\000\u0176\000\u0178\000\u017A\000\u017F\000\u3F48\000\u00D1\000\001\000"+
"\u00D1\000\u4650\000\u00D3\000\015\000\u00B8\000\u00B9\000\u00BF\000\u00C8"+
"\000\u00D3\000\u00EA\000\u00EF\000\u00FA\000\u0132\000\u0171\000\u0175"+
"\000\u0177\000\u0181\000\u4D58\000\u00C1\000\002\000\u00C1\000\u016F\000"+
"\u50DC\000\u00D5\000\001\000\u00D5\000\u5460\000\u00C5\000\011\000\u00AE"+
"\000\u00B4\000\u00C3\000\u00C5\000\u00DF\000\u00E0\000\u00F2\000\u0112"+
"\000\u0133\000\u5B68\000\u00E4\000\002\000\u00E4\000\u0173\000\u6270\000"+
"\u00E9\000\013\000\u00AC\000\u00BD\000\u00CC\000\u00CE\000\u00D6\000\u00E1"+
"\000\u00E9\000\u00F7\000\u0134\000\u0172\000\u01AE\000\u7080\000\u00EC"+
"\000\024\000\u00AB\000\u00C0\000\u00C2\000\u00CA\000\u00CB\000\u00CD\000"+
"\u00D4\000\u00D7\000\u00D8\000\u00DA\000\u00DC\000\u00EC\000\u00ED\000"+
"\u00EE\000\u00F4\000\u00F5\000\u00F6\000\u010F\000\u0117\000\u0135\000"+
"\u7E90\000\u00F3\000\011\000\u00C6\000\u00CF\000\u00E2\000\u00EB\000\u00F3"+
"\000\u00F9\000\u0136\000\u017B\000\u019F\000\u8598\000\u010A\000\004\000"+
"\000\000\u0107\000\u0109\000\u010A\000\u8CA0\000\u0110\000\016\000\001"+
"\000\u00AD\000\u00F8\000\u0108\000\u010B\000\u010C\000\u010E\000\u0110"+
"\000\u012A\000\u0191\000\u01A2\000\u01A4\000\u01A8\000\u01AB\000\u93A8"+
"\000\u010D\000\001\000\u010D\000\u9AB0\000\u0190\000\010\000\u00DB\000"+
"\u012B\000\u0189\000\u0190\000\u0195\000\u019D\000\u01A1\000\u01AC\000"+
"\uA1B8\000\u019C\000\001\000\u019C\000\uA8C0\000\u0186\000\016\000\u00AF"+
"\000\u00B6\000\u00D2\000\u012C\000\u0180\000\u0186\000\u018C\000\u018D"+
"\000\u0196\000\u0197\000\u019A\000\u01A6\000\u01A9\000\u01AA\000\uB34C"+
"\000\u0187\000\001\000\u0187\000\uB6D0\000\u018A\000\003\000\u012D\000"+
"\u018A\000\u01A7\000\uC4E0\000\u0194\000\002\000\u012E\000\u0194"
;
/**
* RLE encoded form of INDEX_BY_COUNTRY.
* @see com.ibm.util.Utility.RLEStringToIntArray
* >> GENERATED DATA: DO NOT EDIT <<
*/
static final String INDEX_BY_COUNTRY_RLE =
"\000\u038C\000\000\000&\000\u00E6\000\u00E7\000\u00E8\000\u0114\000\u011A"+
"\000\u011C\000\u011D\000\u011E\000\u011F\000\u0120\000\u0121\000\u0122"+
"\000\u0123\000\u0124\000\u0125\000\u0126\000\u0127\000\u0128\000\u0129"+
"\000\u012A\000\u012B\000\u012C\000\u012D\000\u012E\000\u012F\000\u0130"+
"\000\u0131\000\u0132\000\u0133\000\u0134\000\u0135\000\u0136\000\u0137"+
"\000\u0138\000\u016C\000\u017C\000\u01AD\000\u01AF\000\003\000\001\000"+
"\u013A\000\004\000\001\000\u00C7\000\005\000\001\000\u00D1\000\006\000"+
"\001\000<\000\010\000\001\000;\000\013\000\001\000\u0161\000\014\000\002"+
"\000\u00FB\000\u017F\000\015\000\001\000R\000\016\000\001\000%\000\020"+
"\000\007\000\u00AB\000\u00AC\000\u00AD\000\u00AE\000\u00AF\000\u00B0\000"+
"\u00B1\000\021\000\007\000\002\000F\000J\000O\000o\000{\000\u0096\000"+
"\022\000\001\000\u019E\000\023\000\001\000\u0166\000\024\000\014\000\000"+
"\000\001\000\u0107\000\u0108\000\u0109\000\u010A\000\u010B\000\u010C\000"+
"\u010D\000\u010E\000\u010F\000\u0110\000\026\000\001\000>\000\031\000"+
"\001\000\u00BC\000 \000\001\000\u015B\000!\000\001\000@\000#\000\002\000"+
"\u00C5\000\u0112\000$\000\001\000\u0140\000%\000\001\0002\000&\000\001"+
"\000\u015E\000'\000\001\000\u00BB\000(\000\001\000\020\000)\000\001\000"+
"3\000,\000\001\000\u00FD\000-\000\001\000\u00C0\000.\000\001\000r\000"+
"1\000\016\000=\000A\000C\000Q\000Y\000[\000v\000x\000\u0088\000\u008F"+
"\000\u0090\000\u0094\000\u0099\000\u0111\0002\000\001\000\u0084\0003\000"+
"\001\000\u00F2\0006\000\001\000\033\0008\000\001\000\u0151\0009\000\001"+
"\000B\000@\000\027\000G\000S\000T\000X\000\134\000^\000e\000l\000m\000"+
"\u0082\000\u0086\000\u008A\000\u0092\000\u0093\000\u0095\000\u009B\000"+
"\u00A0\000\u00A3\000\u00A6\000\u00A7\000\u00A8\000\u00AA\000\u0115\000"+
"B\000\001\000\u0173\000C\000\002\000!\000&\000E\000\001\000\013\000F\000"+
"\001\000\017\000G\000\001\000\u016B\000H\000\001\000\005\000J\000\001"+
"\000\u01A3\000K\000\002\000\u0097\000\u0188\000L\000\001\000\030\000M"+
"\000\006\000\u00C2\000\u00CA\000\u00D4\000\u00EC\000\u00F6\000\u0117\000"+
"N\000\001\000D\000Q\000\001\000P\000T\000\001\000f\000U\000\001\000\u00FF"+
"\000W\000\001\000\u0172\000X\000\001\000\u00DE\000Y\000\001\000\u0156"+
"\000d\000\001\000\u013E\000i\000\001\000\027\000j\000\001\000\u0144\000"+
"l\000\001\000W\000n\000\001\000\u0098\000y\000\001\000\010\000\u0082\000"+
"\002\000c\000\u018E\000\u0084\000\001\000\u0160\000\u0086\000\002\000"+
"\003\000\021\000\u0087\000\001\000\031\000\u0091\000\001\000\011\000\u0092"+
"\000\003\000\023\000\u00FE\000\u014F\000\u0093\000\002\000\007\000\u0118"+
"\000\u00A8\000\001\000\u0147\000\u00A9\000\001\000\u018C\000\u00AA\000"+
"\001\000\u0106\000\u00AC\000\004\000\u0195\000\u01A1\000\u01A8\000\u01AB"+
"\000\u00AE\000\001\000\u0100\000\u00B1\000\002\000\u0119\000\u0155\000"+
"\u00C0\000\001\000#\000\u00C1\000\002\000\u013C\000\u014D\000\u00C3\000"+
"\001\000`\000\u00C4\000\001\000\u00F0\000\u00C5\000\001\000K\000\u00C7"+
"\000\001\000\006\000\u00C8\000\001\000\u0146\000\u00CB\000\003\000]\000"+
"\u009A\000\u00A2\000\u00CC\000\001\000\014\000\u00CD\000\001\000\024\000"+
"\u00CF\000\001\000a\000\u00D0\000\001\000(\000\u00D1\000\001\000\u013B"+
"\000\u00D2\000\001\000\u0104\000\u00D3\000\001\000b\000\u00D4\000\001"+
"\000\u0191\000\u00D6\000\001\000\015\000\u00D8\000\001\000d\000\u00EA"+
"\000\001\000\u00CB\000\u00ED\000\001\000\u00A1\000\u00F1\000\001\000\u0169"+
"\000\u00F3\000\001\000\u008D\000\u00F4\000\001\000\u0142\000\u0103\000"+
"\003\000\u00CE\000\u00CF\000\u00F4\000\u0104\000\001\000\u0145\000\u010B"+
"\000\001\000\u00D0\000\u010D\000\002\000\u00C1\000\u016F\000\u010E\000"+
"\001\000\u0171\000\u0110\000\001\000\u00BA\000\u0111\000\001\000\u00F1"+
"\000\u0112\000\001\000\u0103\000\u0113\000\001\000\u0158\000\u012C\000"+
"\001\000n\000\u012E\000\001\000\u00B5\000\u012F\000\002\000\u00F3\000"+
"\u017B\000\u0144\000\001\000.\000\u0146\000\001\000\u00BF\000\u0147\000"+
"\001\000\u00E1\000\u0148\000\003\000\u018A\000\u0194\000\u01A6\000\u014C"+
"\000\001\000\u0174\000\u014D\000\001\000\u009C\000\u014F\000\001\000\u00E2"+
"\000\u0151\000\001\000\u00EB\000\u0156\000\001\000\u00D9\000\u0158\000"+
"\001\000L\000\u0159\000\003\000\u00B4\000\u00B7\000\u00B8\000\u0160\000"+
"\001\000\u00F7\000\u0161\000\001\000\u00BE\000\u0162\000\001\000\u009D"+
"\000\u0168\000\001\000\u0164\000\u016A\000\001\000\u00C3\000\u0171\000"+
"\001\000-\000\u0172\000\001\000*\000\u0173\000\001\000\u0167\000\u0174"+
"\000\001\000\u014E\000\u0175\000\001\000\u0157\000\u0178\000\001\0006"+
"\000\u0180\000\001\000\022\000\u0182\000\001\000\u0152\000\u0183\000\002"+
"\000\u0143\000\u0162\000\u0186\000\001\000\u0170\000\u0187\000\002\000"+
"\u0196\000\u0197\000\u018A\000\001\000\u015D\000\u018B\000\002\000\012"+
"\0005\000\u018C\000\001\000\u00E4\000\u018D\000\002\000\u00CC\000\u00F5"+
"\000\u018E\000\001\000\u00DA\000\u018F\000\001\000\u01A4\000\u0190\000"+
"\001\000y\000\u0191\000\001\0001\000\u0192\000\001\000\u0083\000\u0193"+
"\000\001\000\u0150\000\u0194\000\001\000\u0178\000\u0195\000\001\000\u0177"+
"\000\u0196\000\001\000\016\000\u0197\000\010\000H\000N\000g\000z\000}"+
"\000~\000\u0080\000\u00A4\000\u0198\000\002\000\u00D7\000\u00D8\000\u0199"+
"\000\001\000)\000\u01A0\000\001\0008\000\u01A2\000\001\000\u019D\000\u01A4"+
"\000\001\0000\000\u01A5\000\001\000\u019C\000\u01A6\000\001\000\042\000"+
"\u01A8\000\001\000w\000\u01AB\000\001\000\u0139\000\u01AE\000\001\000"+
"\u0154\000\u01AF\000\001\000\u00D5\000\u01B1\000\001\000\u019A\000\u01B4"+
"\000\001\000\u019B\000\u01B9\000\003\000\u0180\000\u0186\000\u0187\000"+
"\u01CC\000\001\000\u00DD\000\u01E0\000\001\000\u0089\000\u01E4\000\001"+
"\000s\000\u01E5\000\003\000\u018F\000\u0198\000\u01A5\000\u01E6\000\001"+
"\000\u01A2\000\u01E7\000\001\000\u00DC\000\u01EA\000\002\000\u00D3\000"+
"\u0181\000\u01EB\000\001\000\u0168\000\u01EC\000\001\000\u007F\000\u01ED"+
"\000\001\000\u01A0\000\u01F1\000\002\000\u0091\000\u0183\000\u01F2\000"+
"\001\000\u00C9\000\u01F3\000\003\000\u00FC\000\u0102\000\u014B\000\u01F6"+
"\000\001\000\u019F\000\u01F8\000\001\000?\000\u0200\000\001\000\u00E3"+
"\000\u0224\000\001\000\u017A\000\u022E\000\001\000\u0141\000\u0234\000"+
"\015\000\u00B6\000\u00CD\000\u00D2\000\u00D6\000\u00DB\000\u00DF\000\u00E0"+
"\000\u00F8\000\u00F9\000\u00FA\000\u0149\000\u0153\000\u0159\000\u0236"+
"\000\001\000 \000\u0240\000\001\000\u00E5\000\u0241\000\002\000\u0190"+
"\000\u01AC\000\u0242\000\001\000\u0176\000\u0243\000\001\000\037\000\u0244"+
"\000\001\000\u015F\000\u0246\000\001\000\u00ED\000\u0247\000\001\000\u0105"+
"\000\u0248\000\001\000\u014C\000\u0249\000\002\000\u00B2\000\u0101\000"+
"\u024A\000\001\000\u013F\000\u024B\000\001\000\032\000\u024C\000\001\000"+
"\u015A\000\u024D\000\001\000\025\000\u024E\000\001\000,\000\u0251\000"+
"\001\000\u008B\000\u0253\000\001\0004\000\u0255\000\001\000Z\000\u0258"+
"\000\001\000\u00C4\000\u0259\000\001\000+\000\u0262\000\001\000_\000\u0263"+
"\000\001\000/\000\u0265\000\001\000\u0175\000\u0266\000\001\000$\000\u0267"+
"\000\001\000\u00BD\000\u0269\000\001\000\u00C8\000\u026A\000\001\000\u018B"+
"\000\u026C\000\001\000\u00B9\000\u026D\000\001\0007\000\u026E\000\001"+
"\000\u01A7\000\u026F\000\001\000\u00C6\000\u0271\000\001\000\u0148\000"+
"\u0273\000\001\000\u008E\000\u0275\000\001\000\u018D\000\u0276\000\001"+
"\000\u00EE\000\u0279\000\001\000\026\000\u0280\000\004\000\u014A\000\u015C"+
"\000\u0163\000\u016A\000\u0286\000\001\000\036\000\u028C\000\003\000\u0193"+
"\000\u0199\000\u01A9\000\u0292\000\034\000\004\0009\000:\000E\000M\000"+
"U\000V\000h\000i\000j\000k\000p\000q\000t\000u\000|\000\u0085\000\u0087"+
"\000\u008C\000\u00A9\000\u0116\000\u011B\000\u016D\000\u016E\000\u017E"+
"\000\u0182\000\u0184\000\u0192\000\u0298\000\001\000\u0081\000\u0299\000"+
"\002\000\u00EA\000\u00EF\000\u02A0\000\001\000\u0165\000\u02A2\000\001"+
"\000\u009F\000\u02A4\000\001\000I\000\u02A6\000\001\000\u00A5\000\u02A8"+
"\000\001\000\u009E\000\u02AD\000\002\000\u00E9\000\u01AE\000\u02B4\000"+
"\001\000\u0189\000\u02C5\000\001\000\u01AA\000\u02D2\000\002\000\u017D"+
"\000\u0185\000\u0304\000\001\000\u00B3\000\u0313\000\001\000\u0179\000"+
"\u0314\000\001\000\u013D\000\u0320\000\001\000\035\000\u032C\000\001\000"+
"'\000\u0336\000\002\000\034\000\u0113"
;
// END GENERATED SOURCE CODE
@ -1008,6 +1198,9 @@ class TimeZoneData {
// Unpack the int[] INDEX_BY_OFFSET array
INDEX_BY_OFFSET = Utility.RLEStringToIntArray(INDEX_BY_OFFSET_RLE);
// Unpack the int[] INDEX_BY_COUNTRY array
INDEX_BY_COUNTRY = Utility.RLEStringToIntArray(INDEX_BY_COUNTRY_RLE);
// Construct the index by name. We unpack this array and then
// discard it after we're done with it.
int[] index_by_name_array = Utility.RLEStringToIntArray(INDEX_BY_NAME_ARRAY_RLE);